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/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
|
|
@@ -21,16 +21,31 @@
|
|
|
21
21
|
return /******/ (() => { // webpackBootstrap
|
|
22
22
|
/******/ "use strict";
|
|
23
23
|
/******/ // The require scope
|
|
24
|
-
/******/
|
|
24
|
+
/******/ const __webpack_require__ = {};
|
|
25
25
|
/******/
|
|
26
26
|
/************************************************************************/
|
|
27
27
|
/******/ /* webpack/runtime/define property getters */
|
|
28
28
|
/******/ (() => {
|
|
29
|
-
/******/ // define getter functions for harmony exports
|
|
29
|
+
/******/ // define getter/value functions for harmony exports
|
|
30
30
|
/******/ __webpack_require__.d = (exports, definition) => {
|
|
31
|
-
/******/
|
|
32
|
-
/******/
|
|
33
|
-
/******/
|
|
31
|
+
/******/ if(Array.isArray(definition)) {
|
|
32
|
+
/******/ var i = 0;
|
|
33
|
+
/******/ while(i < definition.length) {
|
|
34
|
+
/******/ var key = definition[i++];
|
|
35
|
+
/******/ var binding = definition[i++];
|
|
36
|
+
/******/ if(!__webpack_require__.o(exports, key)) {
|
|
37
|
+
/******/ if(binding === 0) {
|
|
38
|
+
/******/ Object.defineProperty(exports, key, { enumerable: true, value: definition[i++] });
|
|
39
|
+
/******/ } else {
|
|
40
|
+
/******/ Object.defineProperty(exports, key, { enumerable: true, get: binding });
|
|
41
|
+
/******/ }
|
|
42
|
+
/******/ } else if(binding === 0) { i++; }
|
|
43
|
+
/******/ }
|
|
44
|
+
/******/ } else {
|
|
45
|
+
/******/ for(var key in definition) {
|
|
46
|
+
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|
47
|
+
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
48
|
+
/******/ }
|
|
34
49
|
/******/ }
|
|
35
50
|
/******/ }
|
|
36
51
|
/******/ };
|
|
@@ -42,7 +57,7 @@ return /******/ (() => { // webpackBootstrap
|
|
|
42
57
|
/******/ })();
|
|
43
58
|
/******/
|
|
44
59
|
/************************************************************************/
|
|
45
|
-
|
|
60
|
+
let __webpack_exports__ = {};
|
|
46
61
|
|
|
47
62
|
// EXPORTS
|
|
48
63
|
__webpack_require__.d(__webpack_exports__, {
|
|
@@ -78,7 +93,7 @@ var Globals;
|
|
|
78
93
|
* Constants
|
|
79
94
|
*
|
|
80
95
|
* */
|
|
81
|
-
Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '13.0.
|
|
96
|
+
Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '13.0.2', Globals.win = (typeof window !== 'undefined' ?
|
|
82
97
|
window :
|
|
83
98
|
{}), // eslint-disable-line node/no-unsupported-features/es-builtins
|
|
84
99
|
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 = [
|
|
@@ -405,6 +420,29 @@ const ChartDefaults = {
|
|
|
405
420
|
* @context Highcharts.Chart
|
|
406
421
|
* @apioption chart.events.load
|
|
407
422
|
*/
|
|
423
|
+
/**
|
|
424
|
+
* Fires while the chart is panned by mouse drag. Panning must be
|
|
425
|
+
* enabled through [chart.panning](#chart.panning). One parameter,
|
|
426
|
+
* `event`, is passed to the function, containing common event
|
|
427
|
+
* information as well as `event.originalEvent`, the underlying pointer
|
|
428
|
+
* event. Note that the event fires for every mouse move during the
|
|
429
|
+
* drag, not once per gesture.
|
|
430
|
+
*
|
|
431
|
+
* Calling `event.preventDefault()` or returning false prevents the
|
|
432
|
+
* default panning of the axes. In Highcharts Maps, and on ordinal axes
|
|
433
|
+
* in Highcharts Stock, the panning is applied outside the default
|
|
434
|
+
* action and is not prevented.
|
|
435
|
+
*
|
|
436
|
+
* Panning by touch does not fire this event, unless
|
|
437
|
+
* [chart.zooming.singleTouch](#chart.zooming.singleTouch) is enabled and
|
|
438
|
+
* no zoom type is set. Single-finger drags are then handled as mouse
|
|
439
|
+
* drags and fire this event.
|
|
440
|
+
*
|
|
441
|
+
* @type {Highcharts.ChartPanCallbackFunction}
|
|
442
|
+
* @since 7.0.2
|
|
443
|
+
* @context Highcharts.Chart
|
|
444
|
+
* @apioption chart.events.pan
|
|
445
|
+
*/
|
|
408
446
|
/**
|
|
409
447
|
* Fires when the chart is redrawn, either after a call to
|
|
410
448
|
* `chart.redraw()` or after an axis, series or point is modified with
|
|
@@ -993,7 +1031,7 @@ const ChartDefaults = {
|
|
|
993
1031
|
* @type {Highcharts.ColorType}
|
|
994
1032
|
* @since 2.1.7
|
|
995
1033
|
*/
|
|
996
|
-
selectionMarkerFill: 'color-mix(var(--highcharts-highlight-color-80) 25%, transparent)', // eslint-disable-line max-len
|
|
1034
|
+
selectionMarkerFill: 'color-mix(in srgb, var(--highcharts-highlight-color-80) 25%, transparent)', // eslint-disable-line max-len
|
|
997
1035
|
/**
|
|
998
1036
|
* Whether to apply a drop shadow to the global series group. This causes
|
|
999
1037
|
* all the series to have the same shadow. Contrary to the `series.shadow`
|
|
@@ -2419,7 +2457,7 @@ function getStyle(el, prop, toInt) {
|
|
|
2419
2457
|
const css = win.getComputedStyle(el, void 0); // eslint-disable-line no-undefined
|
|
2420
2458
|
if (css) {
|
|
2421
2459
|
style = css.getPropertyValue(prop);
|
|
2422
|
-
if (
|
|
2460
|
+
if (toInt ?? prop !== 'opacity') {
|
|
2423
2461
|
style = pInt(style);
|
|
2424
2462
|
}
|
|
2425
2463
|
}
|
|
@@ -2669,7 +2707,7 @@ function merge(extendOrSource, ...sources) {
|
|
|
2669
2707
|
function normalizeTickInterval(interval, multiples, magnitude, allowDecimals, hasTickAmount) {
|
|
2670
2708
|
let i, retInterval = interval;
|
|
2671
2709
|
// Round to a tenfold of 1, 2, 2.5 or 5
|
|
2672
|
-
magnitude =
|
|
2710
|
+
magnitude = (magnitude ?? getMagnitude(interval));
|
|
2673
2711
|
const normalized = interval / magnitude;
|
|
2674
2712
|
// Multiples for a linear scale
|
|
2675
2713
|
if (!multiples) {
|
|
@@ -2782,20 +2820,22 @@ function pad(number, length, padder) {
|
|
|
2782
2820
|
.replace('-', '')
|
|
2783
2821
|
.length).join(padder || '0') + number;
|
|
2784
2822
|
}
|
|
2785
|
-
/* eslint-disable jsdoc
|
|
2823
|
+
/* eslint-disable valid-jsdoc */
|
|
2786
2824
|
/**
|
|
2787
2825
|
* Return the first value that is not null or undefined.
|
|
2788
2826
|
*
|
|
2827
|
+
* @deprecated 13.0.2
|
|
2828
|
+
* Use nullish coalescing (`??`) or explicit fallback logic instead.
|
|
2829
|
+
*
|
|
2789
2830
|
* @function Highcharts.pick<T>
|
|
2790
2831
|
*
|
|
2791
|
-
* @param {...
|
|
2832
|
+
* @param {...(T|null|undefined)} args
|
|
2792
2833
|
* Variable number of arguments to inspect.
|
|
2793
2834
|
*
|
|
2794
2835
|
* @return {T}
|
|
2795
2836
|
* The value of the first argument that is not null or undefined.
|
|
2796
2837
|
*/
|
|
2797
|
-
function pick() {
|
|
2798
|
-
const args = arguments;
|
|
2838
|
+
function pick(...args) {
|
|
2799
2839
|
const length = args.length;
|
|
2800
2840
|
for (let i = 0; i < length; i++) {
|
|
2801
2841
|
const arg = args[i];
|
|
@@ -2804,7 +2844,7 @@ function pick() {
|
|
|
2804
2844
|
}
|
|
2805
2845
|
}
|
|
2806
2846
|
}
|
|
2807
|
-
/* eslint-enable jsdoc
|
|
2847
|
+
/* eslint-enable valid-jsdoc */
|
|
2808
2848
|
/**
|
|
2809
2849
|
* Shortcut for parseInt
|
|
2810
2850
|
*
|
|
@@ -3187,7 +3227,8 @@ function insertItem(item, collection) {
|
|
|
3187
3227
|
!collection[i] ||
|
|
3188
3228
|
// Handle index option, the element to insert has lower index
|
|
3189
3229
|
(isNumber(indexOption) &&
|
|
3190
|
-
indexOption <
|
|
3230
|
+
indexOption < (collection[i].options.index ??
|
|
3231
|
+
collection[i]._i)) ||
|
|
3191
3232
|
// Insert the new item before other internal items
|
|
3192
3233
|
// (navigator)
|
|
3193
3234
|
collection[i].options.isInternal) {
|
|
@@ -3273,7 +3314,7 @@ const uniqueKey = (function () {
|
|
|
3273
3314
|
* State of the serial mode.
|
|
3274
3315
|
*/
|
|
3275
3316
|
function useSerialIds(mode) {
|
|
3276
|
-
return (serialMode =
|
|
3317
|
+
return (serialMode = (mode ?? serialMode));
|
|
3277
3318
|
}
|
|
3278
3319
|
/* *
|
|
3279
3320
|
*
|
|
@@ -3739,6 +3780,10 @@ const isDateTimeFormatOptions = (obj) => obj.main === void 0;
|
|
|
3739
3780
|
*
|
|
3740
3781
|
* @param {Highcharts.TimeOptions} [options] Time options as defined in
|
|
3741
3782
|
* [chart.options.time](/highcharts/time).
|
|
3783
|
+
*
|
|
3784
|
+
* @param {Highcharts.LangOptions} [lang]
|
|
3785
|
+
* Language options. When `options.locale` is not set, `lang.locale` is used as
|
|
3786
|
+
* the locale fallback for locale-aware date formatting.
|
|
3742
3787
|
*/
|
|
3743
3788
|
class TimeBase {
|
|
3744
3789
|
/* *
|
|
@@ -3757,8 +3802,8 @@ class TimeBase {
|
|
|
3757
3802
|
};
|
|
3758
3803
|
this.variableTimezone = false;
|
|
3759
3804
|
this.Date = TimeBase_win.Date;
|
|
3760
|
-
this.update(options);
|
|
3761
3805
|
this.lang = lang;
|
|
3806
|
+
this.update(options);
|
|
3762
3807
|
}
|
|
3763
3808
|
/* *
|
|
3764
3809
|
*
|
|
@@ -3870,7 +3915,9 @@ class TimeBase {
|
|
|
3870
3915
|
/**
|
|
3871
3916
|
* Shorthand to get a cached `Intl.DateTimeFormat` instance.
|
|
3872
3917
|
*/
|
|
3873
|
-
dateTimeFormat(options, timestamp, locale = this.options.locale ||
|
|
3918
|
+
dateTimeFormat(options, timestamp, locale = (this.options.locale ||
|
|
3919
|
+
this.lang?.locale ||
|
|
3920
|
+
pageLang)) {
|
|
3874
3921
|
const cacheKey = JSON.stringify(options) + locale;
|
|
3875
3922
|
if (isString(options)) {
|
|
3876
3923
|
options = this.str2dtf(options);
|
|
@@ -3956,17 +4003,16 @@ class TimeBase {
|
|
|
3956
4003
|
// eslint-disable-next-line new-cap
|
|
3957
4004
|
let d = this.Date.UTC(year, month, date, hours, minutes || 0, seconds || 0, milliseconds || 0);
|
|
3958
4005
|
if (this.timezone !== 'UTC') {
|
|
3959
|
-
const offset = this.getTimezoneOffset(d);
|
|
4006
|
+
const offset = this.getTimezoneOffset(d), localHours = (hours - offset / timeUnits.hour + 24) % 24;
|
|
3960
4007
|
d += offset;
|
|
3961
|
-
// Adjustments close to DST transitions
|
|
3962
4008
|
if (
|
|
3963
|
-
//
|
|
3964
|
-
//
|
|
4009
|
+
// Limit the number of calls to `getTimezoneOffset` to months
|
|
4010
|
+
// where DST changes may occur. According to
|
|
3965
4011
|
// https://en.wikipedia.org/wiki/Daylight_saving_time_by_country,
|
|
3966
4012
|
// DST change may only occur in these months.
|
|
3967
4013
|
[2, 3, 8, 9, 10, 11].indexOf(month) !== -1 &&
|
|
3968
|
-
// DST
|
|
3969
|
-
(
|
|
4014
|
+
// DST changes only occur at night (#24420)
|
|
4015
|
+
(localHours < 5 || localHours > 20)) {
|
|
3970
4016
|
const newOffset = this.getTimezoneOffset(d);
|
|
3971
4017
|
if (offset !== newOffset) {
|
|
3972
4018
|
d += newOffset - offset;
|
|
@@ -6703,6 +6749,9 @@ const defaultOptions = {
|
|
|
6703
6749
|
* below the column, but as `followTouchMove` is true, the tooltip will
|
|
6704
6750
|
* jump from column to column as the user swipes across the plot area.
|
|
6705
6751
|
*
|
|
6752
|
+
* @sample {highcharts} highcharts/tooltip/followtouchmove/
|
|
6753
|
+
* Tooltip follows touch move
|
|
6754
|
+
*
|
|
6706
6755
|
* @type {boolean}
|
|
6707
6756
|
* @default {highcharts} true
|
|
6708
6757
|
* @default {highstock} true
|
|
@@ -7485,10 +7534,14 @@ const defaultOptions = {
|
|
|
7485
7534
|
* @type {Highcharts.CSSObject}
|
|
7486
7535
|
*/
|
|
7487
7536
|
style: {
|
|
7488
|
-
/**
|
|
7537
|
+
/**
|
|
7538
|
+
* @type {Highcharts.ColorType}
|
|
7539
|
+
*/
|
|
7489
7540
|
color: 'var(--highcharts-neutral-color-80)',
|
|
7490
7541
|
cursor: 'default',
|
|
7491
|
-
/**
|
|
7542
|
+
/**
|
|
7543
|
+
* @type {number|string}
|
|
7544
|
+
*/
|
|
7492
7545
|
fontSize: '0.8em'
|
|
7493
7546
|
},
|
|
7494
7547
|
/**
|
|
@@ -7804,6 +7857,41 @@ const DefaultOptions = {
|
|
|
7804
7857
|
* @param {global.Event} event
|
|
7805
7858
|
* The event that occurred.
|
|
7806
7859
|
*/
|
|
7860
|
+
/**
|
|
7861
|
+
* Gets fired while the chart is panned by mouse drag. Calling
|
|
7862
|
+
* `event.preventDefault()` or returning `false` prevents the default panning
|
|
7863
|
+
* of the axes.
|
|
7864
|
+
*
|
|
7865
|
+
* @callback Highcharts.ChartPanCallbackFunction
|
|
7866
|
+
*
|
|
7867
|
+
* @param {Highcharts.Chart} this
|
|
7868
|
+
* The chart on which the event occurred.
|
|
7869
|
+
*
|
|
7870
|
+
* @param {Highcharts.ChartPanEventObject} event
|
|
7871
|
+
* The event that occurred.
|
|
7872
|
+
*/
|
|
7873
|
+
/**
|
|
7874
|
+
* Contains common event information. Through the `originalEvent` property you
|
|
7875
|
+
* can access the pointer event that triggered the panning.
|
|
7876
|
+
*
|
|
7877
|
+
* @interface Highcharts.ChartPanEventObject
|
|
7878
|
+
*/ /**
|
|
7879
|
+
* The pointer event that triggered the panning.
|
|
7880
|
+
* @name Highcharts.ChartPanEventObject#originalEvent
|
|
7881
|
+
* @type {Highcharts.PointerEventObject}
|
|
7882
|
+
*/ /**
|
|
7883
|
+
* Prevents the default behavior of the event.
|
|
7884
|
+
* @name Highcharts.ChartPanEventObject#preventDefault
|
|
7885
|
+
* @type {Function}
|
|
7886
|
+
*/ /**
|
|
7887
|
+
* The event target.
|
|
7888
|
+
* @name Highcharts.ChartPanEventObject#target
|
|
7889
|
+
* @type {Highcharts.Chart}
|
|
7890
|
+
*/ /**
|
|
7891
|
+
* The event type.
|
|
7892
|
+
* @name Highcharts.ChartPanEventObject#type
|
|
7893
|
+
* @type {"pan"}
|
|
7894
|
+
*/
|
|
7807
7895
|
/**
|
|
7808
7896
|
* Fires when the chart is redrawn, either after a call to `chart.redraw()` or
|
|
7809
7897
|
* after an axis, series or point is modified with the `redraw` option set to
|
|
@@ -8179,7 +8267,9 @@ Color.None = new Color(''); // Must be last static for init
|
|
|
8179
8267
|
*/
|
|
8180
8268
|
/**
|
|
8181
8269
|
* A valid color type than can be parsed and handled by Highcharts. It can be a
|
|
8182
|
-
* color string, a gradient object, or a pattern
|
|
8270
|
+
* color string (including CSS expressions), a gradient object, or a pattern
|
|
8271
|
+
* object. Read more about colors in the [Highcharts
|
|
8272
|
+
* documentation](https://www.highcharts.com/docs/chart-design-and-style/colors).
|
|
8183
8273
|
*
|
|
8184
8274
|
* @typedef {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject} Highcharts.ColorType
|
|
8185
8275
|
*/
|
|
@@ -8411,24 +8501,22 @@ class Fx {
|
|
|
8411
8501
|
*/
|
|
8412
8502
|
update() {
|
|
8413
8503
|
const elem = this.elem, prop = this.prop, // If destroyed, it is null
|
|
8414
|
-
now = this.now, step = this.options.step;
|
|
8504
|
+
now = this.now ?? 1, step = this.options.step;
|
|
8415
8505
|
// Animation setter defined from outside
|
|
8416
8506
|
if (this[prop + 'Setter']) {
|
|
8417
8507
|
this[prop + 'Setter']();
|
|
8418
8508
|
// Other animations on SVGElement
|
|
8419
8509
|
}
|
|
8420
|
-
else if (elem.attr) {
|
|
8510
|
+
else if (elem && elem.attr) {
|
|
8421
8511
|
if (elem.element) {
|
|
8422
|
-
elem.attr(prop, now,
|
|
8512
|
+
elem.attr(prop, now, void 0, true);
|
|
8423
8513
|
}
|
|
8424
8514
|
// HTML styles, raw HTML content like container size
|
|
8425
8515
|
}
|
|
8426
|
-
else {
|
|
8427
|
-
elem.style[prop] = now + this.unit;
|
|
8428
|
-
}
|
|
8429
|
-
if (step) {
|
|
8430
|
-
step.call(elem, now, this);
|
|
8516
|
+
else if (elem) {
|
|
8517
|
+
elem.style[prop] = now + (this.unit || '');
|
|
8431
8518
|
}
|
|
8519
|
+
step?.call(elem, now, this);
|
|
8432
8520
|
}
|
|
8433
8521
|
/**
|
|
8434
8522
|
* Run an animation.
|
|
@@ -8446,12 +8534,10 @@ class Fx {
|
|
|
8446
8534
|
*
|
|
8447
8535
|
*/
|
|
8448
8536
|
run(from, to, unit) {
|
|
8449
|
-
const
|
|
8450
|
-
return timer.stopped ? false : self.step(gotoEnd);
|
|
8451
|
-
}, requestAnimationFrame = Fx_win.requestAnimationFrame ||
|
|
8537
|
+
const { elem, options } = this, { complete, curAnim = {} } = options, timer = (gotoEnd) => (timer.stopped ? false : this.step(gotoEnd)), requestAnimationFrame = Fx_win.requestAnimationFrame ||
|
|
8452
8538
|
function (step) {
|
|
8453
8539
|
setTimeout(step, 13);
|
|
8454
|
-
}, step =
|
|
8540
|
+
}, step = () => {
|
|
8455
8541
|
for (let i = 0; i < Fx.timers.length; i++) {
|
|
8456
8542
|
if (!Fx.timers[i]()) {
|
|
8457
8543
|
Fx.timers.splice(i--, 1);
|
|
@@ -8461,11 +8547,11 @@ class Fx {
|
|
|
8461
8547
|
requestAnimationFrame(step);
|
|
8462
8548
|
}
|
|
8463
8549
|
};
|
|
8464
|
-
if (from === to && !
|
|
8465
|
-
delete
|
|
8466
|
-
if (
|
|
8467
|
-
Object.keys(
|
|
8468
|
-
|
|
8550
|
+
if (from === to && !elem['forceAnimate:' + this.prop]) {
|
|
8551
|
+
delete curAnim[this.prop];
|
|
8552
|
+
if (complete &&
|
|
8553
|
+
Object.keys(curAnim).length === 0) {
|
|
8554
|
+
complete.call(elem);
|
|
8469
8555
|
}
|
|
8470
8556
|
}
|
|
8471
8557
|
else { // #7166
|
|
@@ -8475,7 +8561,7 @@ class Fx {
|
|
|
8475
8561
|
this.unit = unit;
|
|
8476
8562
|
this.now = this.start;
|
|
8477
8563
|
this.pos = 0;
|
|
8478
|
-
timer.elem =
|
|
8564
|
+
timer.elem = elem;
|
|
8479
8565
|
timer.prop = this.prop;
|
|
8480
8566
|
if (timer() && Fx.timers.push(timer) === 1) {
|
|
8481
8567
|
requestAnimationFrame(step);
|
|
@@ -8496,7 +8582,8 @@ class Fx {
|
|
|
8496
8582
|
step(gotoEnd) {
|
|
8497
8583
|
const t = +new Date(), options = this.options, elem = this.elem, complete = options.complete, duration = options.duration, curAnim = options.curAnim;
|
|
8498
8584
|
let ret, done;
|
|
8499
|
-
|
|
8585
|
+
// #2616, element is destroyed
|
|
8586
|
+
if (elem?.attr && !elem.element) {
|
|
8500
8587
|
ret = false;
|
|
8501
8588
|
}
|
|
8502
8589
|
else if (gotoEnd || t >= duration + this.startTime) {
|
|
@@ -8725,7 +8812,8 @@ Fx.timers = [];
|
|
|
8725
8812
|
* so it should be moved to the SVGRenderer.
|
|
8726
8813
|
*/
|
|
8727
8814
|
function setAnimation(animation, chart) {
|
|
8728
|
-
chart.renderer.globalAnimation =
|
|
8815
|
+
chart.renderer.globalAnimation =
|
|
8816
|
+
animation ?? chart.options.chart.animation ?? true;
|
|
8729
8817
|
}
|
|
8730
8818
|
/**
|
|
8731
8819
|
* Get the animation in object form, where a disabled animation is always
|
|
@@ -8786,6 +8874,11 @@ function getDeferredAnimation(chart, animation, series) {
|
|
|
8786
8874
|
/**
|
|
8787
8875
|
* The global animate method, which uses Fx to create individual animators.
|
|
8788
8876
|
*
|
|
8877
|
+
* @sample highcharts/members/renderer-basic
|
|
8878
|
+
* SVG elements with animation
|
|
8879
|
+
* @sample highcharts/members/animate
|
|
8880
|
+
* Animation without an owner element
|
|
8881
|
+
*
|
|
8789
8882
|
* @function Highcharts.animate
|
|
8790
8883
|
*
|
|
8791
8884
|
* @param {Highcharts.HTMLDOMElement|Highcharts.SVGElement} el
|
|
@@ -8801,14 +8894,12 @@ function getDeferredAnimation(chart, animation, series) {
|
|
|
8801
8894
|
*
|
|
8802
8895
|
* @return {void}
|
|
8803
8896
|
*/
|
|
8804
|
-
function animate(el, params, opt) {
|
|
8805
|
-
let start, unit = '', end, fx, args;
|
|
8897
|
+
function animate(el, params = { pos: 1 }, opt) {
|
|
8806
8898
|
if (!isObject(opt)) { // Number or undefined/null
|
|
8807
|
-
args = arguments;
|
|
8808
8899
|
opt = {
|
|
8809
|
-
duration:
|
|
8810
|
-
easing:
|
|
8811
|
-
complete:
|
|
8900
|
+
duration: arguments[2],
|
|
8901
|
+
easing: arguments[3],
|
|
8902
|
+
complete: arguments[4]
|
|
8812
8903
|
};
|
|
8813
8904
|
}
|
|
8814
8905
|
if (!isNumber(opt.duration)) {
|
|
@@ -8818,22 +8909,23 @@ function animate(el, params, opt) {
|
|
|
8818
8909
|
opt.easing :
|
|
8819
8910
|
(Math[opt.easing] || Math.easeInOutSine);
|
|
8820
8911
|
opt.curAnim = merge(params);
|
|
8821
|
-
objectEach(params,
|
|
8912
|
+
objectEach(params, (val, prop) => {
|
|
8822
8913
|
// Stop current running animation of this property
|
|
8823
|
-
|
|
8824
|
-
|
|
8825
|
-
|
|
8826
|
-
|
|
8827
|
-
|
|
8828
|
-
|
|
8829
|
-
|
|
8914
|
+
if (el) {
|
|
8915
|
+
stop(el, prop);
|
|
8916
|
+
}
|
|
8917
|
+
const fx = new Animation_Fx(el, opt, prop), d = params.d;
|
|
8918
|
+
let start = 0, end = void 0, unit = '';
|
|
8919
|
+
if (prop === 'd' && isArray(d)) {
|
|
8920
|
+
fx.paths = fx.initPath(el, el.pathArray, d);
|
|
8921
|
+
fx.toD = d;
|
|
8830
8922
|
end = 1;
|
|
8831
8923
|
}
|
|
8832
|
-
else if (el
|
|
8924
|
+
else if (el?.attr) {
|
|
8833
8925
|
start = el.attr(prop);
|
|
8834
8926
|
}
|
|
8835
|
-
else {
|
|
8836
|
-
start =
|
|
8927
|
+
else if (el) {
|
|
8928
|
+
start = +(getStyle(el, prop) || 0);
|
|
8837
8929
|
if (prop !== 'opacity') {
|
|
8838
8930
|
unit = 'px';
|
|
8839
8931
|
}
|
|
@@ -8844,7 +8936,10 @@ function animate(el, params, opt) {
|
|
|
8844
8936
|
if (typeof end === 'string' && end.match('px')) {
|
|
8845
8937
|
end = end.replace(/px/g, ''); // #4351
|
|
8846
8938
|
}
|
|
8847
|
-
|
|
8939
|
+
// Empty dashstyle animation crashes treemap on hover
|
|
8940
|
+
if (defined(end)) {
|
|
8941
|
+
fx.run(start, end, unit);
|
|
8942
|
+
}
|
|
8848
8943
|
});
|
|
8849
8944
|
}
|
|
8850
8945
|
/**
|
|
@@ -8868,28 +8963,11 @@ function animate(el, params, opt) {
|
|
|
8868
8963
|
* improvement in all cases where we stop the animation from .attr. Instead of
|
|
8869
8964
|
* stopping everything, we can just stop the actual attributes we're setting.
|
|
8870
8965
|
*/
|
|
8871
|
-
|
|
8872
|
-
|
|
8873
|
-
|
|
8874
|
-
while (i--) {
|
|
8875
|
-
if (Animation_Fx.timers[i].elem === el && (!prop || prop === Animation_Fx.timers[i].prop)) {
|
|
8876
|
-
Animation_Fx.timers[i].stopped = true; // #4667
|
|
8877
|
-
}
|
|
8966
|
+
const stop = (el, prop) => Animation_Fx.timers.forEach((timer) => {
|
|
8967
|
+
if (timer.elem === el && (!prop || prop === timer.prop)) {
|
|
8968
|
+
timer.stopped = true; // #4667
|
|
8878
8969
|
}
|
|
8879
|
-
}
|
|
8880
|
-
const animationExports = {
|
|
8881
|
-
animate,
|
|
8882
|
-
animObject,
|
|
8883
|
-
getDeferredAnimation,
|
|
8884
|
-
setAnimation,
|
|
8885
|
-
stop
|
|
8886
|
-
};
|
|
8887
|
-
/* *
|
|
8888
|
-
*
|
|
8889
|
-
* Default Export
|
|
8890
|
-
*
|
|
8891
|
-
* */
|
|
8892
|
-
/* harmony default export */ const AnimationUtilities = (animationExports);
|
|
8970
|
+
});
|
|
8893
8971
|
/* *
|
|
8894
8972
|
*
|
|
8895
8973
|
* API Options
|
|
@@ -9194,7 +9272,9 @@ class AST {
|
|
|
9194
9272
|
doc = { body };
|
|
9195
9273
|
}
|
|
9196
9274
|
const appendChildNodes = (node, addTo) => {
|
|
9197
|
-
|
|
9275
|
+
// Preserve the camelCase of SVG tags via localName (#24702).
|
|
9276
|
+
const tagName = node.localName ||
|
|
9277
|
+
node.nodeName.toLowerCase();
|
|
9198
9278
|
// Add allowed tags
|
|
9199
9279
|
const astNode = {
|
|
9200
9280
|
tagName
|
|
@@ -9308,6 +9388,8 @@ AST.allowedAttributes = [
|
|
|
9308
9388
|
'src',
|
|
9309
9389
|
'startOffset',
|
|
9310
9390
|
'stdDeviation',
|
|
9391
|
+
'stop-color',
|
|
9392
|
+
'stop-opacity',
|
|
9311
9393
|
'stroke-linecap',
|
|
9312
9394
|
'stroke-width',
|
|
9313
9395
|
'stroke',
|
|
@@ -9794,7 +9876,7 @@ function format(str = '', ctx, owner) {
|
|
|
9794
9876
|
replacement = `"${replacement}"`;
|
|
9795
9877
|
}
|
|
9796
9878
|
}
|
|
9797
|
-
str = str.replace(match.find,
|
|
9879
|
+
str = str.replace(match.find, (replacement ?? ''));
|
|
9798
9880
|
});
|
|
9799
9881
|
return hasSub ? format(str, ctx, owner) : str;
|
|
9800
9882
|
}
|
|
@@ -9911,9 +9993,7 @@ const Templating = {
|
|
|
9911
9993
|
* API Declarations
|
|
9912
9994
|
* */
|
|
9913
9995
|
/**
|
|
9914
|
-
*
|
|
9915
|
-
*
|
|
9916
|
-
* The Highcharts.Templating interface provides a structure for defining
|
|
9996
|
+
* The Highcharts.TemplatingObject interface provides a structure for defining
|
|
9917
9997
|
* helpers. Helpers can be used as conditional blocks or functions within
|
|
9918
9998
|
* expressions. Highcharts includes several built-in helpers and supports
|
|
9919
9999
|
* the addition of custom helpers.
|
|
@@ -9921,16 +10001,21 @@ const Templating = {
|
|
|
9921
10001
|
* @see [More information](
|
|
9922
10002
|
* https://www.highcharts.com/docs/chart-concepts/templating#helpers)
|
|
9923
10003
|
*
|
|
9924
|
-
* @
|
|
9925
|
-
|
|
9926
|
-
|
|
9927
|
-
|
|
9928
|
-
|
|
9929
|
-
|
|
9930
|
-
|
|
9931
|
-
|
|
9932
|
-
|
|
9933
|
-
|
|
10004
|
+
* @interface Highcharts.TemplatingObject
|
|
10005
|
+
*/ /**
|
|
10006
|
+
* @example
|
|
10007
|
+
* // Define a custom helper to return the absolute value of a number
|
|
10008
|
+
* Highcharts.Templating.helpers.abs = value => Math.abs(value);
|
|
10009
|
+
*
|
|
10010
|
+
* // Usage in a format string
|
|
10011
|
+
* format: 'Absolute value: {abs point.y}'
|
|
10012
|
+
*
|
|
10013
|
+
* @name Highcharts.TemplatingObject#helpers
|
|
10014
|
+
* @type {Record<string, Function>}
|
|
10015
|
+
*/ /**
|
|
10016
|
+
* @name Highcharts.Templating
|
|
10017
|
+
* @type {Highcharts.TemplatingObject}
|
|
10018
|
+
*/
|
|
9934
10019
|
(''); // Keeps doclets above in file
|
|
9935
10020
|
|
|
9936
10021
|
;// ./code/es-modules/Core/Renderer/RendererUtilities.js
|
|
@@ -10040,7 +10125,7 @@ var RendererUtilities;
|
|
|
10040
10125
|
boxes = boxes.map((box) => ({
|
|
10041
10126
|
size: box.size,
|
|
10042
10127
|
targets: [box.target],
|
|
10043
|
-
align:
|
|
10128
|
+
align: (box.align ?? 0.5)
|
|
10044
10129
|
}));
|
|
10045
10130
|
while (overlapping) {
|
|
10046
10131
|
// Initial positions: target centered in box
|
|
@@ -10139,7 +10224,6 @@ var RendererUtilities;
|
|
|
10139
10224
|
* */
|
|
10140
10225
|
|
|
10141
10226
|
|
|
10142
|
-
const { animate: SVGElement_animate, animObject: SVGElement_animObject, stop: SVGElement_stop } = AnimationUtilities;
|
|
10143
10227
|
|
|
10144
10228
|
|
|
10145
10229
|
const { deg2rad, doc: SVGElement_doc, svg, SVG_NS: SVGElement_SVG_NS, win: SVGElement_win, isFirefox } = Core_Globals;
|
|
@@ -10199,8 +10283,10 @@ class SVGElement {
|
|
|
10199
10283
|
* Property value.
|
|
10200
10284
|
*/
|
|
10201
10285
|
_defaultGetter(key) {
|
|
10202
|
-
let ret =
|
|
10203
|
-
|
|
10286
|
+
let ret = (this[key + 'Value'] ??
|
|
10287
|
+
this[key] ??
|
|
10288
|
+
(this.element ? this.element.getAttribute(key) : null) ??
|
|
10289
|
+
0);
|
|
10204
10290
|
if (/^-?[\d\.]+$/.test(ret)) { // Is numerical
|
|
10205
10291
|
ret = parseFloat(ret);
|
|
10206
10292
|
}
|
|
@@ -10363,7 +10449,7 @@ class SVGElement {
|
|
|
10363
10449
|
}
|
|
10364
10450
|
alignTo = void 0; // Do not use the box
|
|
10365
10451
|
}
|
|
10366
|
-
const alignToBox =
|
|
10452
|
+
const alignToBox = alignTo ?? renderer[alignToKey] ?? renderer,
|
|
10367
10453
|
// Default: left align
|
|
10368
10454
|
x = (alignToBox.x || 0) + (alignOptions.x || 0) +
|
|
10369
10455
|
((alignToBox.width || 0) - (alignOptions.width || 0)) *
|
|
@@ -10423,7 +10509,7 @@ class SVGElement {
|
|
|
10423
10509
|
* Returns the SVGElement for chaining.
|
|
10424
10510
|
*/
|
|
10425
10511
|
animate(params, options, complete) {
|
|
10426
|
-
const animOptions =
|
|
10512
|
+
const animOptions = animObject((options ?? this.renderer.globalAnimation ?? true)), deferTime = animOptions.defer;
|
|
10427
10513
|
// When the page is hidden save resources in the background by not
|
|
10428
10514
|
// running animation at all (#9749).
|
|
10429
10515
|
if (SVGElement_doc.hidden) {
|
|
@@ -10438,7 +10524,7 @@ class SVGElement {
|
|
|
10438
10524
|
// If defer option is defined delay the animation #12901
|
|
10439
10525
|
syncTimeout(() => {
|
|
10440
10526
|
if (this.element) {
|
|
10441
|
-
|
|
10527
|
+
animate(this, params, animOptions);
|
|
10442
10528
|
}
|
|
10443
10529
|
}, deferTime);
|
|
10444
10530
|
}
|
|
@@ -10612,7 +10698,7 @@ class SVGElement {
|
|
|
10612
10698
|
// Unless .attr is from the animator update, stop current
|
|
10613
10699
|
// running animation of this property
|
|
10614
10700
|
if (!continueAnimation) {
|
|
10615
|
-
|
|
10701
|
+
stop(this, key);
|
|
10616
10702
|
}
|
|
10617
10703
|
// Special handling of symbol attributes
|
|
10618
10704
|
if (this.symbolName &&
|
|
@@ -10915,7 +11001,7 @@ class SVGElement {
|
|
|
10915
11001
|
.split(','); // Ending comma
|
|
10916
11002
|
i = v.length;
|
|
10917
11003
|
while (i--) {
|
|
10918
|
-
v[i] = '' + (pInt(v[i]) *
|
|
11004
|
+
v[i] = '' + (pInt(v[i]) * (strokeWidth ?? NaN));
|
|
10919
11005
|
}
|
|
10920
11006
|
value = v.join(',').replace(/NaN/g, 'none'); // #3226
|
|
10921
11007
|
this.element.setAttribute('stroke-dasharray', value);
|
|
@@ -10932,7 +11018,7 @@ class SVGElement {
|
|
|
10932
11018
|
// Remove events
|
|
10933
11019
|
element.onclick = element.onmouseout = element.onmouseover =
|
|
10934
11020
|
element.onmousemove = element.point = null;
|
|
10935
|
-
|
|
11021
|
+
stop(wrapper); // Stop running animations
|
|
10936
11022
|
if (wrapper.clipPath && ownerSVGElement) {
|
|
10937
11023
|
const clipPath = wrapper.clipPath;
|
|
10938
11024
|
// Look for existing references to this clipPath and remove them
|
|
@@ -11055,7 +11141,7 @@ class SVGElement {
|
|
|
11055
11141
|
* The bounding box with `x`, `y`, `width` and `height` properties.
|
|
11056
11142
|
*/
|
|
11057
11143
|
getBBox(reload, rot) {
|
|
11058
|
-
const wrapper = this, { element, renderer, styles, textStr } = wrapper, { cache, cacheKeys } = renderer, isSVG = element.namespaceURI === wrapper.SVG_NS, rotation =
|
|
11144
|
+
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 &&
|
|
11059
11145
|
SVGElement.prototype.getStyle.call(element, 'font-size')) : (styles.fontSize), cacheKey = this.getBBoxCacheKey([
|
|
11060
11146
|
renderer.rootFontSize,
|
|
11061
11147
|
this.textWidth, // #7874, also useHTML
|
|
@@ -11581,7 +11667,7 @@ class SVGElement {
|
|
|
11581
11667
|
symbolAttr(hash) {
|
|
11582
11668
|
const wrapper = this;
|
|
11583
11669
|
SVGElement.symbolCustomAttribs.forEach(function (key) {
|
|
11584
|
-
wrapper[key] =
|
|
11670
|
+
wrapper[key] = (hash[key] ?? wrapper[key]);
|
|
11585
11671
|
});
|
|
11586
11672
|
wrapper.attr({
|
|
11587
11673
|
d: wrapper.renderer.symbols[wrapper.symbolName](wrapper.x, wrapper.y, wrapper.width, wrapper.height, wrapper)
|
|
@@ -11621,7 +11707,7 @@ class SVGElement {
|
|
|
11621
11707
|
}
|
|
11622
11708
|
// Replace text content and escape markup
|
|
11623
11709
|
titleNode.textContent = replaceNested(// Scan #[73]
|
|
11624
|
-
|
|
11710
|
+
(value ?? ''), // #3276, #3895
|
|
11625
11711
|
[/<[^>]*>/g, '']).replace(/</g, '<').replace(/>/g, '>');
|
|
11626
11712
|
}
|
|
11627
11713
|
/**
|
|
@@ -12399,7 +12485,7 @@ class SVGLabel extends SVG_SVGElement {
|
|
|
12399
12485
|
if ((this.textStr && this.bBox.width === 0 && this.bBox.height === 0) || this.rotation) {
|
|
12400
12486
|
this.updateBoxSize();
|
|
12401
12487
|
}
|
|
12402
|
-
const { padding, height = 0, translateX = 0, translateY = 0, width = 0 } = this, paddingLeft =
|
|
12488
|
+
const { padding, height = 0, translateX = 0, translateY = 0, width = 0 } = this, paddingLeft = (this.paddingLeft ?? padding), rotation = rot ?? (this.rotation || 0);
|
|
12403
12489
|
let bBox = {
|
|
12404
12490
|
width,
|
|
12405
12491
|
height,
|
|
@@ -12452,7 +12538,7 @@ class SVGLabel extends SVG_SVGElement {
|
|
|
12452
12538
|
this.attr({
|
|
12453
12539
|
// Alignment is available now (#3295, 0 not rendered if given
|
|
12454
12540
|
// as a value)
|
|
12455
|
-
text:
|
|
12541
|
+
text: (this.textStr ?? ''),
|
|
12456
12542
|
x: this.x || 0,
|
|
12457
12543
|
y: this.y || 0
|
|
12458
12544
|
});
|
|
@@ -12608,8 +12694,8 @@ class SVGLabel extends SVG_SVGElement {
|
|
|
12608
12694
|
/** @internal */
|
|
12609
12695
|
getPaddedWidth() {
|
|
12610
12696
|
const padding = this.padding;
|
|
12611
|
-
const paddingLeft =
|
|
12612
|
-
const paddingRight =
|
|
12697
|
+
const paddingLeft = (this.paddingLeft ?? padding);
|
|
12698
|
+
const paddingRight = (this.paddingRight ?? padding);
|
|
12613
12699
|
return ((this.widthSetting || this.bBox.width || 0) +
|
|
12614
12700
|
paddingLeft +
|
|
12615
12701
|
paddingRight);
|
|
@@ -12710,7 +12796,7 @@ function arc(cx, cy, w, h, options) {
|
|
|
12710
12796
|
const arc = [];
|
|
12711
12797
|
if (options) {
|
|
12712
12798
|
let start = options.start || 0, end = options.end || 0;
|
|
12713
|
-
const rx =
|
|
12799
|
+
const rx = (options.r ?? w), ry = (options.r ?? (h || w)),
|
|
12714
12800
|
// Subtract a small number to prevent cos and sin of start and end
|
|
12715
12801
|
// from becoming equal on 360 arcs (#1561). See "Arc proximity"
|
|
12716
12802
|
// tests at samples/unit-tests/svgrenderer/symbol/demo.js
|
|
@@ -12720,16 +12806,17 @@ function arc(cx, cy, w, h, options) {
|
|
|
12720
12806
|
start = Math.PI / 2;
|
|
12721
12807
|
end = Math.PI * 2.5 - proximity;
|
|
12722
12808
|
}
|
|
12723
|
-
const innerRadius = options.innerR, open =
|
|
12809
|
+
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),
|
|
12724
12810
|
// Proximity takes care of rounding errors around PI (#6971)
|
|
12725
|
-
longArc =
|
|
12811
|
+
longArc = options.longArc ??
|
|
12812
|
+
(end - start - Math.PI < proximity ? 0 : 1);
|
|
12726
12813
|
let arcSegment = [
|
|
12727
12814
|
'A', // ArcTo
|
|
12728
12815
|
rx, // X radius
|
|
12729
12816
|
ry, // Y radius
|
|
12730
12817
|
0, // Slanting
|
|
12731
12818
|
longArc, // Long or short arc
|
|
12732
|
-
|
|
12819
|
+
(options.clockwise ?? 1), // Clockwise
|
|
12733
12820
|
// Use a static pixel offset for full circle (#21701)
|
|
12734
12821
|
cx + (fullCircle ? 0.001 : rx * cosEnd),
|
|
12735
12822
|
cy + ry * sinEnd
|
|
@@ -13260,7 +13347,7 @@ class TextBuilder {
|
|
|
13260
13347
|
* @internal
|
|
13261
13348
|
*/
|
|
13262
13349
|
buildSVG() {
|
|
13263
|
-
const wrapper = this.svgElement, textNode = wrapper.element, renderer = wrapper.renderer, textStr =
|
|
13350
|
+
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,
|
|
13264
13351
|
// The buildText code is quite heavy, so if we're not changing
|
|
13265
13352
|
// something that affects the text, skip it (#6113).
|
|
13266
13353
|
textCache = [
|
|
@@ -13844,7 +13931,7 @@ class SVGRenderer {
|
|
|
13844
13931
|
this.url = this.getReferenceURL();
|
|
13845
13932
|
// Add description
|
|
13846
13933
|
const desc = this.createElement('desc').add();
|
|
13847
|
-
desc.element.appendChild(SVGRenderer_doc.createTextNode('Created with Highcharts 13.0.
|
|
13934
|
+
desc.element.appendChild(SVGRenderer_doc.createTextNode('Created with Highcharts 13.0.2'));
|
|
13848
13935
|
this.defs = this.createElement('defs').add();
|
|
13849
13936
|
this.allowHTML = allowHTML;
|
|
13850
13937
|
this.forExport = forExport;
|
|
@@ -14630,7 +14717,7 @@ class SVGRenderer {
|
|
|
14630
14717
|
this.attr('height')
|
|
14631
14718
|
});
|
|
14632
14719
|
},
|
|
14633
|
-
duration:
|
|
14720
|
+
duration: (animate ?? true) ? void 0 : 0
|
|
14634
14721
|
});
|
|
14635
14722
|
renderer.alignElements();
|
|
14636
14723
|
}
|
|
@@ -14788,8 +14875,8 @@ class SVGRenderer {
|
|
|
14788
14875
|
// The image width is not always the same as the symbol width. The
|
|
14789
14876
|
// image may be centered within the symbol, as is the case when
|
|
14790
14877
|
// image shapes are used as label backgrounds, for example in flags.
|
|
14791
|
-
img.imgwidth =
|
|
14792
|
-
img.imgheight =
|
|
14878
|
+
img.imgwidth = (options?.width ?? symbolSizes[imageSrc]?.width);
|
|
14879
|
+
img.imgheight = (options?.height ?? symbolSizes[imageSrc]?.height);
|
|
14793
14880
|
/**
|
|
14794
14881
|
* Set the size and position
|
|
14795
14882
|
*/
|
|
@@ -15635,7 +15722,11 @@ class HTMLElement extends SVG_SVGElement {
|
|
|
15635
15722
|
.attr({
|
|
15636
15723
|
text: str,
|
|
15637
15724
|
x: Math.round(x),
|
|
15638
|
-
y: Math.round(y)
|
|
15725
|
+
y: Math.round(y),
|
|
15726
|
+
// The namespace attribute is required for serialization
|
|
15727
|
+
// (export and side-by-side comparison), otherwise it
|
|
15728
|
+
// inherits the SVG namespace from foreignObject.
|
|
15729
|
+
xmlns: 'http://www.w3.org/1999/xhtml'
|
|
15639
15730
|
});
|
|
15640
15731
|
};
|
|
15641
15732
|
}
|
|
@@ -15815,8 +15906,10 @@ class HTMLElement extends SVG_SVGElement {
|
|
|
15815
15906
|
foreignObject.attr({
|
|
15816
15907
|
x: x + (this.xCorr || 0),
|
|
15817
15908
|
y: y + (this.yCorr || 0),
|
|
15818
|
-
// Add 4px to avoid ellipsis
|
|
15819
|
-
//
|
|
15909
|
+
// Add 4px to avoid ellipsis. In v13.0.0 we had a body inside
|
|
15910
|
+
// the foreignObject with a 3px right margin. This was later
|
|
15911
|
+
// removed, but we still need to add a few pixels to avoid
|
|
15912
|
+
// ellipsis.
|
|
15820
15913
|
width: element.offsetWidth + 4,
|
|
15821
15914
|
// Add 1px to account for subpixel bounding boxes
|
|
15822
15915
|
height: element.offsetHeight + 1,
|
|
@@ -15836,25 +15929,16 @@ class HTMLElement extends SVG_SVGElement {
|
|
|
15836
15929
|
this.cTT = currentTextTransform;
|
|
15837
15930
|
}
|
|
15838
15931
|
/**
|
|
15839
|
-
* Add the element to
|
|
15840
|
-
* will be created for each ancestor SVG `g` element.
|
|
15932
|
+
* Add the element to the foreign object
|
|
15841
15933
|
*
|
|
15842
15934
|
* @internal
|
|
15843
15935
|
*/
|
|
15844
15936
|
add(parentGroup) {
|
|
15845
|
-
const { foreignObject
|
|
15937
|
+
const { foreignObject } = this;
|
|
15846
15938
|
// Foreign object
|
|
15847
15939
|
foreignObject.add(parentGroup);
|
|
15848
|
-
|
|
15849
|
-
|
|
15850
|
-
renderer.createElement('body')
|
|
15851
|
-
.attr({ xmlns: 'http://www.w3.org/1999/xhtml' })
|
|
15852
|
-
.css({
|
|
15853
|
-
background: 'transparent',
|
|
15854
|
-
// 3px is to avoid clipping on the right
|
|
15855
|
-
margin: '0 3px 0 0'
|
|
15856
|
-
})
|
|
15857
|
-
.add(foreignObject));
|
|
15940
|
+
// Add this.element to the foreign objct
|
|
15941
|
+
super.add(foreignObject);
|
|
15858
15942
|
if (this.alignOnAdd) {
|
|
15859
15943
|
this.updateTransform();
|
|
15860
15944
|
}
|
|
@@ -15889,10 +15973,20 @@ class HTMLElement extends SVG_SVGElement {
|
|
|
15889
15973
|
this[key] = value;
|
|
15890
15974
|
this.doTransform = true;
|
|
15891
15975
|
}
|
|
15976
|
+
/**
|
|
15977
|
+
* Apply visibility/opacity to the foreignObject; the HTML element
|
|
15978
|
+
* ignores them.
|
|
15979
|
+
* @internal
|
|
15980
|
+
*/
|
|
15981
|
+
visibilitySetter(value, key) {
|
|
15982
|
+
this.foreignObject.attr({ [key]: value });
|
|
15983
|
+
this[key] = value;
|
|
15984
|
+
}
|
|
15892
15985
|
}
|
|
15893
15986
|
// Some shared setters
|
|
15894
15987
|
const proto = HTMLElement.prototype;
|
|
15895
15988
|
proto.ySetter = proto.xSetter;
|
|
15989
|
+
proto.opacitySetter = proto.visibilitySetter;
|
|
15896
15990
|
/* *
|
|
15897
15991
|
*
|
|
15898
15992
|
* Default Export
|
|
@@ -16433,6 +16527,7 @@ var AxisDefaults;
|
|
|
16433
16527
|
*/
|
|
16434
16528
|
dateTimeLabelFormats: {
|
|
16435
16529
|
/**
|
|
16530
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16436
16531
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16437
16532
|
*/
|
|
16438
16533
|
millisecond: {
|
|
@@ -16458,6 +16553,7 @@ var AxisDefaults;
|
|
|
16458
16553
|
range: false
|
|
16459
16554
|
},
|
|
16460
16555
|
/**
|
|
16556
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16461
16557
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16462
16558
|
*/
|
|
16463
16559
|
second: {
|
|
@@ -16483,6 +16579,7 @@ var AxisDefaults;
|
|
|
16483
16579
|
range: false
|
|
16484
16580
|
},
|
|
16485
16581
|
/**
|
|
16582
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16486
16583
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16487
16584
|
*/
|
|
16488
16585
|
minute: {
|
|
@@ -16508,6 +16605,7 @@ var AxisDefaults;
|
|
|
16508
16605
|
range: false
|
|
16509
16606
|
},
|
|
16510
16607
|
/**
|
|
16608
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16511
16609
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16512
16610
|
*/
|
|
16513
16611
|
hour: {
|
|
@@ -16540,6 +16638,7 @@ var AxisDefaults;
|
|
|
16540
16638
|
range: false
|
|
16541
16639
|
},
|
|
16542
16640
|
/**
|
|
16641
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16543
16642
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16544
16643
|
*/
|
|
16545
16644
|
day: {
|
|
@@ -16562,6 +16661,7 @@ var AxisDefaults;
|
|
|
16562
16661
|
boundary: '%[eb]'
|
|
16563
16662
|
},
|
|
16564
16663
|
/**
|
|
16664
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16565
16665
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16566
16666
|
*/
|
|
16567
16667
|
week: {
|
|
@@ -16577,6 +16677,7 @@ var AxisDefaults;
|
|
|
16577
16677
|
main: '%[eb]'
|
|
16578
16678
|
},
|
|
16579
16679
|
/**
|
|
16680
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16580
16681
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16581
16682
|
*/
|
|
16582
16683
|
month: {
|
|
@@ -16599,6 +16700,7 @@ var AxisDefaults;
|
|
|
16599
16700
|
boundary: void 0
|
|
16600
16701
|
},
|
|
16601
16702
|
/**
|
|
16703
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16602
16704
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16603
16705
|
*/
|
|
16604
16706
|
year: {
|
|
@@ -17414,7 +17516,7 @@ var AxisDefaults;
|
|
|
17414
17516
|
* @sample {highstock} stock/xaxis/offset/
|
|
17415
17517
|
* Y axis offset by 70 px
|
|
17416
17518
|
*
|
|
17417
|
-
* @type {number}
|
|
17519
|
+
* @type {number|string}
|
|
17418
17520
|
*/
|
|
17419
17521
|
offset: void 0,
|
|
17420
17522
|
/**
|
|
@@ -19064,7 +19166,9 @@ var AxisDefaults;
|
|
|
19064
19166
|
* @product highcharts
|
|
19065
19167
|
*/
|
|
19066
19168
|
style: {
|
|
19067
|
-
/**
|
|
19169
|
+
/**
|
|
19170
|
+
* @type {Highcharts.ColorType}
|
|
19171
|
+
*/
|
|
19068
19172
|
color: 'var(--highcharts-neutral-color-100)',
|
|
19069
19173
|
/**
|
|
19070
19174
|
* @type {number|string}
|
|
@@ -19251,11 +19355,11 @@ class Tick {
|
|
|
19251
19355
|
* @function Highcharts.Tick#addLabel
|
|
19252
19356
|
*/
|
|
19253
19357
|
addLabel() {
|
|
19254
|
-
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 =
|
|
19358
|
+
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;
|
|
19255
19359
|
let label = tick.label, dateTimeLabelFormat, dateTimeLabelFormats, i;
|
|
19256
19360
|
// The context value
|
|
19257
19361
|
let value = this.parameters.category || (categories ?
|
|
19258
|
-
|
|
19362
|
+
(categories[pos] ?? names[pos] ?? pos) :
|
|
19259
19363
|
pos);
|
|
19260
19364
|
if (log && isNumber(value)) {
|
|
19261
19365
|
value = correctFloat(log.lin2log(value));
|
|
@@ -19502,7 +19606,7 @@ class Tick {
|
|
|
19502
19606
|
labelOptions.y;
|
|
19503
19607
|
}
|
|
19504
19608
|
x = x +
|
|
19505
|
-
|
|
19609
|
+
(labelOptions.x ?? [0, 1, 0, -1][axis.side] * distance) +
|
|
19506
19610
|
labelOffsetCorrection +
|
|
19507
19611
|
rotCorr.x -
|
|
19508
19612
|
(tickmarkOffset && horiz ?
|
|
@@ -19557,7 +19661,7 @@ class Tick {
|
|
|
19557
19661
|
* @function Highcharts.Tick#handleOverflow
|
|
19558
19662
|
*/
|
|
19559
19663
|
handleOverflow(xy) {
|
|
19560
|
-
const tick = this, axis = this.axis, labelOptions = axis.options.labels, pxPos = xy.x, chartWidth = axis.chart.chartWidth, spacing = axis.chart.spacing, leftBound =
|
|
19664
|
+
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 = {};
|
|
19561
19665
|
let modifiedSlotWidth = slotWidth, goRight = 1, leftPos, rightPos, textWidth;
|
|
19562
19666
|
// Check if the label overshoots the chart spacing box. If it does, move
|
|
19563
19667
|
// it. If it now overshoots the slotWidth, add ellipsis.
|
|
@@ -19624,9 +19728,8 @@ class Tick {
|
|
|
19624
19728
|
* @param {number} [opacity]
|
|
19625
19729
|
*/
|
|
19626
19730
|
render(index, old, opacity) {
|
|
19627
|
-
const tick = this, axis = tick.axis, horiz = axis.horiz, pos = tick.pos, tickmarkOffset =
|
|
19628
|
-
const labelOpacity =
|
|
19629
|
-
1);
|
|
19731
|
+
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;
|
|
19732
|
+
const labelOpacity = (opacity ?? tick.label?.newOpacity ?? 1);
|
|
19630
19733
|
// Anything that is not between `axis.pos` and `axis.pos + axis.length`
|
|
19631
19734
|
// should not be visible (#20166). The `correctFloat` is for reversed
|
|
19632
19735
|
// axes in Safari.
|
|
@@ -19654,7 +19757,7 @@ class Tick {
|
|
|
19654
19757
|
* @param {number} opacity The opacity of the grid line
|
|
19655
19758
|
*/
|
|
19656
19759
|
renderGridLine(old, opacity) {
|
|
19657
|
-
const tick = this, axis = tick.axis, options = axis.options, attribs = {}, pos = tick.pos, type = tick.type, tickmarkOffset =
|
|
19760
|
+
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;
|
|
19658
19761
|
let gridLine = tick.gridLine, gridLinePath, gridLineWidth = options.gridLineWidth, gridLineColor = options.gridLineColor, dashStyle = options.gridLineDashStyle;
|
|
19659
19762
|
if (tick.type === 'minor') {
|
|
19660
19763
|
gridLineWidth = options.minorGridLineWidth;
|
|
@@ -19710,7 +19813,7 @@ class Tick {
|
|
|
19710
19813
|
* @param {number} opacity The opacity of the mark
|
|
19711
19814
|
*/
|
|
19712
19815
|
renderMark(xy, opacity) {
|
|
19713
|
-
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 =
|
|
19816
|
+
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
|
|
19714
19817
|
tickColor = options[type !== 'minor' ? 'tickColor' : 'minorTickColor'];
|
|
19715
19818
|
let mark = tick.mark;
|
|
19716
19819
|
const isNewMark = !mark;
|
|
@@ -19755,7 +19858,7 @@ class Tick {
|
|
|
19755
19858
|
* @param {number} index The index of the tick
|
|
19756
19859
|
*/
|
|
19757
19860
|
renderLabel(xy, old, opacity, index) {
|
|
19758
|
-
const tick = this, axis = tick.axis, horiz = axis.horiz, options = axis.options, label = tick.label, labelOptions = options.labels, step = labelOptions.step, tickmarkOffset =
|
|
19861
|
+
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;
|
|
19759
19862
|
let show = true;
|
|
19760
19863
|
if (label && isNumber(x)) {
|
|
19761
19864
|
label.xy = xy = tick.getLabelPosition(x, y, label, horiz, labelOptions, tickmarkOffset, index, step);
|
|
@@ -19847,7 +19950,6 @@ class Tick {
|
|
|
19847
19950
|
* */
|
|
19848
19951
|
|
|
19849
19952
|
|
|
19850
|
-
const { animObject: Axis_animObject } = AnimationUtilities;
|
|
19851
19953
|
|
|
19852
19954
|
const { xAxis, yAxis } = Axis_AxisDefaults;
|
|
19853
19955
|
|
|
@@ -19861,12 +19963,7 @@ const { deg2rad: Axis_deg2rad } = Core_Globals;
|
|
|
19861
19963
|
|
|
19862
19964
|
|
|
19863
19965
|
|
|
19864
|
-
const getNormalizedTickInterval = (axis, tickInterval) => normalizeTickInterval(tickInterval, void 0, void 0,
|
|
19865
|
-
// If the tick interval is greater than 0.5, avoid decimals, as
|
|
19866
|
-
// linear axes are often used to render discrete values (#3363). If
|
|
19867
|
-
// a tick amount is set, allow decimals by default, as it increases
|
|
19868
|
-
// the chances for a good fit.
|
|
19869
|
-
tickInterval < 0.5 || axis.tickAmount !== void 0), !!axis.tickAmount);
|
|
19966
|
+
const getNormalizedTickInterval = (axis, tickInterval) => normalizeTickInterval(tickInterval, void 0, void 0, (axis.options.allowDecimals ?? (tickInterval < 0.5 || axis.tickAmount !== void 0)), !!axis.tickAmount);
|
|
19870
19967
|
extend(Axis_defaultOptions, { xAxis, yAxis: merge(xAxis, yAxis) });
|
|
19871
19968
|
/* *
|
|
19872
19969
|
*
|
|
@@ -19974,7 +20071,7 @@ class Axis {
|
|
|
19974
20071
|
axis.coll = coll;
|
|
19975
20072
|
fireEvent(this, 'init', { userOptions: userOptions });
|
|
19976
20073
|
// Needed in setOptions
|
|
19977
|
-
axis.opposite =
|
|
20074
|
+
axis.opposite = (userOptions.opposite ?? axis.opposite);
|
|
19978
20075
|
/**
|
|
19979
20076
|
* The side on which the axis is rendered. 0 is top, 1 is right, 2
|
|
19980
20077
|
* is bottom and 3 is left.
|
|
@@ -19982,10 +20079,9 @@ class Axis {
|
|
|
19982
20079
|
* @name Highcharts.Axis#side
|
|
19983
20080
|
* @type {number}
|
|
19984
20081
|
*/
|
|
19985
|
-
axis.side =
|
|
20082
|
+
axis.side = (userOptions.side ?? axis.side ?? (horiz ?
|
|
19986
20083
|
(axis.opposite ? 0 : 2) : // Top : bottom
|
|
19987
|
-
(axis.opposite ? 1 : 3))
|
|
19988
|
-
);
|
|
20084
|
+
(axis.opposite ? 1 : 3)));
|
|
19989
20085
|
/**
|
|
19990
20086
|
* Current options for the axis after merge of defaults and user's
|
|
19991
20087
|
* options.
|
|
@@ -20014,7 +20110,7 @@ class Axis {
|
|
|
20014
20110
|
* @name Highcharts.Axis#reversed
|
|
20015
20111
|
* @type {boolean}
|
|
20016
20112
|
*/
|
|
20017
|
-
axis.reversed =
|
|
20113
|
+
axis.reversed = (options.reversed ?? axis.reversed);
|
|
20018
20114
|
axis.visible = options.visible;
|
|
20019
20115
|
axis.zoomEnabled = options.zoomEnabled;
|
|
20020
20116
|
// Initial categories
|
|
@@ -20102,7 +20198,7 @@ class Axis {
|
|
|
20102
20198
|
* @name Highcharts.Axis#crosshair
|
|
20103
20199
|
* @type {boolean|Highcharts.AxisCrosshairOptions}
|
|
20104
20200
|
*/
|
|
20105
|
-
const crosshair =
|
|
20201
|
+
const crosshair = options.crosshair ?? splat(chart.options.tooltip.crosshairs)[isXAxis ? 0 : 1];
|
|
20106
20202
|
axis.crosshair = crosshair === true ? {} : crosshair;
|
|
20107
20203
|
// Register. Don't add it again on Axis.update().
|
|
20108
20204
|
if (chart.axes.indexOf(axis) === -1) { //
|
|
@@ -20286,8 +20382,8 @@ class Axis {
|
|
|
20286
20382
|
seriesDataMax = xExtremes.max;
|
|
20287
20383
|
}
|
|
20288
20384
|
if (xData.length) {
|
|
20289
|
-
axis.dataMin = Math.min(
|
|
20290
|
-
axis.dataMax = Math.max(
|
|
20385
|
+
axis.dataMin = Math.min((axis.dataMin ?? seriesDataMin), seriesDataMin);
|
|
20386
|
+
axis.dataMax = Math.max((axis.dataMax ?? seriesDataMax), seriesDataMax);
|
|
20291
20387
|
}
|
|
20292
20388
|
}
|
|
20293
20389
|
// Get dataMin and dataMax for Y axes, as well as handle
|
|
@@ -20302,11 +20398,11 @@ class Axis {
|
|
|
20302
20398
|
// doesn't have active y data, we continue with nulls
|
|
20303
20399
|
if (isNumber(dataExtremes.dataMin)) {
|
|
20304
20400
|
seriesDataMin = dataExtremes.dataMin;
|
|
20305
|
-
axis.dataMin = Math.min(
|
|
20401
|
+
axis.dataMin = Math.min((axis.dataMin ?? seriesDataMin), seriesDataMin);
|
|
20306
20402
|
}
|
|
20307
20403
|
if (isNumber(dataExtremes.dataMax)) {
|
|
20308
20404
|
seriesDataMax = dataExtremes.dataMax;
|
|
20309
|
-
axis.dataMax = Math.max(
|
|
20405
|
+
axis.dataMax = Math.max((axis.dataMax ?? seriesDataMax), seriesDataMax);
|
|
20310
20406
|
}
|
|
20311
20407
|
// Adjust to threshold
|
|
20312
20408
|
if (defined(threshold)) {
|
|
@@ -20461,7 +20557,7 @@ class Axis {
|
|
|
20461
20557
|
translatedValue
|
|
20462
20558
|
};
|
|
20463
20559
|
fireEvent(this, 'getPlotLinePath', evt, function (e) {
|
|
20464
|
-
translatedValue =
|
|
20560
|
+
translatedValue = translatedValue ?? axis.translate(value, void 0, void 0, old);
|
|
20465
20561
|
// Keep the translated value within sane bounds, and avoid Infinity
|
|
20466
20562
|
// to fail the isNumber test (#7709).
|
|
20467
20563
|
translatedValue = clamp(translatedValue, -1e9, 1e9);
|
|
@@ -20550,7 +20646,7 @@ class Axis {
|
|
|
20550
20646
|
getMinorTickInterval() {
|
|
20551
20647
|
const { minorTicks, minorTickInterval } = this.options;
|
|
20552
20648
|
if (minorTicks === true) {
|
|
20553
|
-
return
|
|
20649
|
+
return (minorTickInterval ?? 'auto');
|
|
20554
20650
|
}
|
|
20555
20651
|
if (minorTicks === false) {
|
|
20556
20652
|
return;
|
|
@@ -20833,7 +20929,9 @@ class Axis {
|
|
|
20833
20929
|
const seriesPointRange = hasCategories ?
|
|
20834
20930
|
1 :
|
|
20835
20931
|
(isXAxis ?
|
|
20836
|
-
|
|
20932
|
+
(series.options.pointRange ??
|
|
20933
|
+
closestPointRange ??
|
|
20934
|
+
0) :
|
|
20837
20935
|
(axis.axisPointRange || 0)), // #2806
|
|
20838
20936
|
pointPlacement = series.options.pointPlacement;
|
|
20839
20937
|
pointRange = Math.max(pointRange, seriesPointRange);
|
|
@@ -20917,14 +21015,16 @@ class Axis {
|
|
|
20917
21015
|
this.getTickAmount();
|
|
20918
21016
|
}
|
|
20919
21017
|
// Min or max set either by zooming/setExtremes or initial options
|
|
20920
|
-
hardMin =
|
|
20921
|
-
hardMax =
|
|
21018
|
+
hardMin = (axis.userMin ?? time.parse(options.min));
|
|
21019
|
+
hardMax = (axis.userMax ?? time.parse(options.max));
|
|
20922
21020
|
// Linked axis gets the extremes from the parent axis
|
|
20923
21021
|
if (linkedParent) {
|
|
20924
21022
|
axis.linkedParent = linkedParent;
|
|
20925
21023
|
linkedParentExtremes = linkedParent.getExtremes();
|
|
20926
|
-
axis.min =
|
|
20927
|
-
|
|
21024
|
+
axis.min =
|
|
21025
|
+
linkedParentExtremes.min ?? linkedParentExtremes.dataMin;
|
|
21026
|
+
axis.max =
|
|
21027
|
+
linkedParentExtremes.max ?? linkedParentExtremes.dataMax;
|
|
20928
21028
|
if (this.type !== linkedParent.type) {
|
|
20929
21029
|
// Can't link axes of different type
|
|
20930
21030
|
error(11, true, chart);
|
|
@@ -20946,14 +21046,14 @@ class Axis {
|
|
|
20946
21046
|
maxPadding = 0;
|
|
20947
21047
|
}
|
|
20948
21048
|
}
|
|
20949
|
-
axis.min =
|
|
20950
|
-
axis.max =
|
|
21049
|
+
axis.min = (hardMin ?? thresholdMin ?? dataMin);
|
|
21050
|
+
axis.max = (hardMax ?? thresholdMax ?? dataMax);
|
|
20951
21051
|
}
|
|
20952
21052
|
if (isNumber(axis.max) && isNumber(axis.min)) {
|
|
20953
21053
|
if (logarithmic) {
|
|
20954
21054
|
if (axis.positiveValuesOnly &&
|
|
20955
21055
|
!secondPass &&
|
|
20956
|
-
Math.min(axis.min,
|
|
21056
|
+
Math.min(axis.min, (dataMin ?? axis.min)) <= 0) { // #978
|
|
20957
21057
|
// Can't plot negative values on log axis
|
|
20958
21058
|
error(10, true, chart);
|
|
20959
21059
|
}
|
|
@@ -21059,16 +21159,13 @@ class Axis {
|
|
|
21059
21159
|
axis.tickInterval = tickIntervalOption = linkedParent.tickInterval;
|
|
21060
21160
|
}
|
|
21061
21161
|
else {
|
|
21062
|
-
axis.tickInterval =
|
|
21162
|
+
axis.tickInterval = tickIntervalOption ?? (this.tickAmount ?
|
|
21063
21163
|
range / Math.max(this.tickAmount - 1, 1) :
|
|
21064
|
-
|
|
21065
|
-
|
|
21066
|
-
|
|
21067
|
-
|
|
21068
|
-
|
|
21069
|
-
// Don't let it be more than the data range
|
|
21070
|
-
range * tickPixelIntervalOption /
|
|
21071
|
-
Math.max(axis.len, tickPixelIntervalOption));
|
|
21164
|
+
categories ?
|
|
21165
|
+
1 :
|
|
21166
|
+
// Don't let it be more than the data range
|
|
21167
|
+
range * tickPixelIntervalOption /
|
|
21168
|
+
Math.max(axis.len, tickPixelIntervalOption));
|
|
21072
21169
|
}
|
|
21073
21170
|
// Now we're finished detecting min and max, crop and group series data.
|
|
21074
21171
|
// This is in turn needed in order to find tick positions in ordinal
|
|
@@ -21098,12 +21195,9 @@ class Axis {
|
|
|
21098
21195
|
}
|
|
21099
21196
|
// Before normalizing the tick interval, handle minimum tick interval.
|
|
21100
21197
|
// This applies only if tickInterval is not defined.
|
|
21101
|
-
const minTickInterval =
|
|
21102
|
-
|
|
21103
|
-
|
|
21104
|
-
dateTime &&
|
|
21105
|
-
!axis.series.some((s) => !s.sorted) ?
|
|
21106
|
-
axis.closestPointRange : 0);
|
|
21198
|
+
const minTickInterval = options.minTickInterval ?? (dateTime && !axis.series.some((s) => !s.sorted) ?
|
|
21199
|
+
axis.closestPointRange :
|
|
21200
|
+
0);
|
|
21107
21201
|
if (!tickIntervalOption &&
|
|
21108
21202
|
minTickInterval &&
|
|
21109
21203
|
axis.tickInterval < minTickInterval) {
|
|
@@ -21433,7 +21527,7 @@ class Axis {
|
|
|
21433
21527
|
* @function Highcharts.Axis#adjustTickAmount
|
|
21434
21528
|
*/
|
|
21435
21529
|
adjustTickAmount() {
|
|
21436
|
-
const axis = this, { finalTickAmt, max, min, options, tickPositions, tickAmount, thresholdAlignment } = axis, currentTickAmount = tickPositions?.length, threshold =
|
|
21530
|
+
const axis = this, { finalTickAmt, max, min, options, tickPositions, tickAmount, thresholdAlignment } = axis, currentTickAmount = tickPositions?.length, threshold = axis.threshold ?? (axis.softThreshold ? 0 : null);
|
|
21437
21531
|
let len, i, tickInterval = axis.tickInterval, thresholdTickIndex;
|
|
21438
21532
|
const
|
|
21439
21533
|
// Extend the tickPositions by appending a position
|
|
@@ -21669,7 +21763,8 @@ class Axis {
|
|
|
21669
21763
|
offsets = options.offsets || [0, 0, 0, 0], horiz = this.horiz,
|
|
21670
21764
|
// Check for percentage based input values. Rounding fixes problems
|
|
21671
21765
|
// with column overflow and plot line filtering (#4898, #4899)
|
|
21672
|
-
width = this.width = Math.round(relativeLength(
|
|
21766
|
+
width = this.width = Math.round(relativeLength((options.width ?? chart.plotWidth - offsets[3] + offsets[1]), chart.plotWidth)), height = this.height = Math.round(relativeLength((options.height ??
|
|
21767
|
+
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));
|
|
21673
21768
|
// Expose basic values to use in Series object and navigator
|
|
21674
21769
|
this.bottom = chart.chartHeight - height - top;
|
|
21675
21770
|
this.right = chart.chartWidth - width - left;
|
|
@@ -21780,9 +21875,7 @@ class Axis {
|
|
|
21780
21875
|
* An array of tickLength and tickWidth
|
|
21781
21876
|
*/
|
|
21782
21877
|
tickSize(prefix) {
|
|
21783
|
-
const options = this.options, tickWidth =
|
|
21784
|
-
// Default to 1 on linear and datetime X axes
|
|
21785
|
-
prefix === 'tick' && this.isXAxis && !this.categories ? 1 : 0);
|
|
21878
|
+
const options = this.options, tickWidth = options[prefix === 'tick' ? 'tickWidth' : 'minorTickWidth'] ?? (prefix === 'tick' && this.isXAxis && !this.categories ? 1 : 0);
|
|
21786
21879
|
let tickLength = options[prefix === 'tick' ? 'tickLength' : 'minorTickLength'], tickSize;
|
|
21787
21880
|
if (tickWidth && tickLength) {
|
|
21788
21881
|
// Negate the length
|
|
@@ -21869,7 +21962,7 @@ class Axis {
|
|
|
21869
21962
|
newTickInterval = getStep(lineHeight * 0.75);
|
|
21870
21963
|
}
|
|
21871
21964
|
this.autoRotation = autoRotation;
|
|
21872
|
-
this.labelRotation =
|
|
21965
|
+
this.labelRotation = rotation ?? (isNumber(rotationOption) ? rotationOption : 0);
|
|
21873
21966
|
return labelOptions.step ? tickInterval : newTickInterval;
|
|
21874
21967
|
}
|
|
21875
21968
|
/**
|
|
@@ -22221,7 +22314,7 @@ class Axis {
|
|
|
22221
22314
|
titleOffsetOption = axisTitleOptions.offset;
|
|
22222
22315
|
titleMargin = defined(titleOffsetOption) ?
|
|
22223
22316
|
0 :
|
|
22224
|
-
|
|
22317
|
+
axisTitleOptions.margin ?? (horiz ? 5 : 10);
|
|
22225
22318
|
}
|
|
22226
22319
|
}
|
|
22227
22320
|
// Render the axis line
|
|
@@ -22453,7 +22546,7 @@ class Axis {
|
|
|
22453
22546
|
* @emits Highcharts.Axis#event:afterRender
|
|
22454
22547
|
*/
|
|
22455
22548
|
render() {
|
|
22456
|
-
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 =
|
|
22549
|
+
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);
|
|
22457
22550
|
let from, to;
|
|
22458
22551
|
// Reset
|
|
22459
22552
|
axis.labelEdge.length = 0;
|
|
@@ -22732,9 +22825,9 @@ class Axis {
|
|
|
22732
22825
|
}
|
|
22733
22826
|
else if (defined(point)) {
|
|
22734
22827
|
// #3834
|
|
22735
|
-
pos =
|
|
22736
|
-
point.crosshairPos :
|
|
22737
|
-
null
|
|
22828
|
+
pos = (this.coll !== 'colorAxis' ?
|
|
22829
|
+
point.crosshairPos :
|
|
22830
|
+
null) ?? (this.isXAxis ?
|
|
22738
22831
|
point.plotX :
|
|
22739
22832
|
this.len - point.plotY);
|
|
22740
22833
|
}
|
|
@@ -22743,7 +22836,7 @@ class Axis {
|
|
|
22743
22836
|
// Value, only used on radial
|
|
22744
22837
|
value: point && (this.isXAxis ?
|
|
22745
22838
|
point.x :
|
|
22746
|
-
|
|
22839
|
+
(point.stackY ?? point.y ?? void 0)),
|
|
22747
22840
|
translatedValue: pos
|
|
22748
22841
|
};
|
|
22749
22842
|
if (chart.polar) {
|
|
@@ -22776,7 +22869,7 @@ class Axis {
|
|
|
22776
22869
|
(categorized ? 'category ' : 'thin ') +
|
|
22777
22870
|
(options.className || ''))
|
|
22778
22871
|
.attr({
|
|
22779
|
-
zIndex:
|
|
22872
|
+
zIndex: (options.zIndex ?? 2)
|
|
22780
22873
|
})
|
|
22781
22874
|
.clip(options.clip === false ?
|
|
22782
22875
|
void 0 :
|
|
@@ -22791,7 +22884,7 @@ class Axis {
|
|
|
22791
22884
|
// eslint-disable-next-line max-len
|
|
22792
22885
|
'var(--highcharts-highlight-color-20)').setOpacity(0.25).get() :
|
|
22793
22886
|
'var(--highcharts-neutral-color-20)'),
|
|
22794
|
-
'stroke-width':
|
|
22887
|
+
'stroke-width': (options.width ?? 1)
|
|
22795
22888
|
}).css({
|
|
22796
22889
|
'pointer-events': 'none'
|
|
22797
22890
|
});
|
|
@@ -22804,7 +22897,7 @@ class Axis {
|
|
|
22804
22897
|
}
|
|
22805
22898
|
cross
|
|
22806
22899
|
.show()
|
|
22807
|
-
.animate({ d: path },
|
|
22900
|
+
.animate({ d: path }, animObject(options?.animation));
|
|
22808
22901
|
if (categorized && !options.width) {
|
|
22809
22902
|
cross.attr({
|
|
22810
22903
|
'stroke-width': this.transA
|
|
@@ -22857,7 +22950,7 @@ class Axis {
|
|
|
22857
22950
|
this.destroy(true);
|
|
22858
22951
|
this.init(chart, options);
|
|
22859
22952
|
chart.isDirtyBox = true;
|
|
22860
|
-
if (
|
|
22953
|
+
if (redraw ?? true) {
|
|
22861
22954
|
chart.redraw();
|
|
22862
22955
|
}
|
|
22863
22956
|
}
|
|
@@ -22887,7 +22980,7 @@ class Axis {
|
|
|
22887
22980
|
chart.orderItems(coll);
|
|
22888
22981
|
this.destroy();
|
|
22889
22982
|
chart.isDirtyBox = true;
|
|
22890
|
-
if (
|
|
22983
|
+
if (redraw ?? true) {
|
|
22891
22984
|
chart.redraw();
|
|
22892
22985
|
}
|
|
22893
22986
|
}
|
|
@@ -23543,8 +23636,10 @@ var LogarithmicAxis;
|
|
|
23543
23636
|
tickIntervalOption, tickPixelIntervalOption = options.tickPixelInterval / (minor ? 5 : 1), totalPixelLength = minor ?
|
|
23544
23637
|
axisLength / axis.tickPositions.length :
|
|
23545
23638
|
axisLength;
|
|
23546
|
-
interval =
|
|
23547
|
-
|
|
23639
|
+
interval = filteredTickIntervalOption ??
|
|
23640
|
+
log.minorAutoInterval ??
|
|
23641
|
+
(realMax - realMin) * tickPixelIntervalOption /
|
|
23642
|
+
(totalPixelLength || 1);
|
|
23548
23643
|
interval = normalizeTickInterval(interval);
|
|
23549
23644
|
positions = axis.getLinearTickPositions(interval, realMin, realMax).map(log.log2lin);
|
|
23550
23645
|
if (!minor) {
|
|
@@ -23973,7 +24068,8 @@ class PlotLineOrBand {
|
|
|
23973
24068
|
if (!chart.styledMode) {
|
|
23974
24069
|
if (isLine) {
|
|
23975
24070
|
attribs.stroke = color || 'var(--highcharts-neutral-color-40)';
|
|
23976
|
-
attribs['stroke-width'] =
|
|
24071
|
+
attribs['stroke-width'] =
|
|
24072
|
+
options.width ?? 1;
|
|
23977
24073
|
if (options.dashStyle) {
|
|
23978
24074
|
attribs.dashstyle = options.dashStyle;
|
|
23979
24075
|
}
|
|
@@ -24842,7 +24938,6 @@ class PlotLineOrBand {
|
|
|
24842
24938
|
* */
|
|
24843
24939
|
|
|
24844
24940
|
|
|
24845
|
-
const { animObject: Tooltip_animObject } = AnimationUtilities;
|
|
24846
24941
|
|
|
24847
24942
|
const { format: Tooltip_format } = Core_Templating;
|
|
24848
24943
|
|
|
@@ -25106,7 +25201,8 @@ class Tooltip {
|
|
|
25106
25201
|
'highcharts-label',
|
|
25107
25202
|
isHeader && 'highcharts-tooltip-header',
|
|
25108
25203
|
isSplit ? 'highcharts-tooltip-box' : 'highcharts-tooltip',
|
|
25109
|
-
!isHeader &&
|
|
25204
|
+
!isHeader &&
|
|
25205
|
+
'highcharts-color-' + (point.colorIndex ?? series.colorIndex),
|
|
25110
25206
|
seriesOptions?.className
|
|
25111
25207
|
].filter(isString).join(' ');
|
|
25112
25208
|
}
|
|
@@ -25291,7 +25387,8 @@ class Tooltip {
|
|
|
25291
25387
|
}
|
|
25292
25388
|
// The far side is right or bottom
|
|
25293
25389
|
const preferFarSide = !this.followPointer &&
|
|
25294
|
-
|
|
25390
|
+
(point.ttBelow ??
|
|
25391
|
+
(polar ? false : !inverted === flipped)), // #4984
|
|
25295
25392
|
/*
|
|
25296
25393
|
* Handle the preferred dimension. When the preferred dimension is
|
|
25297
25394
|
* tooltip on top or bottom of the point, it will look for space
|
|
@@ -25418,7 +25515,7 @@ class Tooltip {
|
|
|
25418
25515
|
const tooltip = this;
|
|
25419
25516
|
// Disallow duplicate timers (#1728, #1766)
|
|
25420
25517
|
clearTimeouts(this);
|
|
25421
|
-
delay =
|
|
25518
|
+
delay = (delay ?? this.options.hideDelay);
|
|
25422
25519
|
if (!this.isHidden) {
|
|
25423
25520
|
this.hideTimer = syncTimeout(function () {
|
|
25424
25521
|
const label = tooltip.getLabel();
|
|
@@ -25521,7 +25618,9 @@ class Tooltip {
|
|
|
25521
25618
|
* Split tooltip does not support outside in the first iteration. Should
|
|
25522
25619
|
* not be too complicated to implement.
|
|
25523
25620
|
*/
|
|
25524
|
-
this.outside =
|
|
25621
|
+
this.outside =
|
|
25622
|
+
options.outside ??
|
|
25623
|
+
Boolean(chart.scrollablePixelsX || chart.scrollablePixelsY);
|
|
25525
25624
|
}
|
|
25526
25625
|
shouldStickOnContact(pointerEvent) {
|
|
25527
25626
|
return !!(!this.followPointer &&
|
|
@@ -25543,7 +25642,7 @@ class Tooltip {
|
|
|
25543
25642
|
* @param {number} anchorY
|
|
25544
25643
|
*/
|
|
25545
25644
|
move(x, y, anchorX, anchorY) {
|
|
25546
|
-
const { followPointer, options } = this, animation =
|
|
25645
|
+
const { followPointer, options } = this, animation = animObject(!followPointer &&
|
|
25547
25646
|
!this.isHidden &&
|
|
25548
25647
|
!options.fixed &&
|
|
25549
25648
|
options.animation), skipAnchor = followPointer || (this.len || 0) > 1, attr = { x, y };
|
|
@@ -25601,7 +25700,7 @@ class Tooltip {
|
|
|
25601
25700
|
point.points = void 0;
|
|
25602
25701
|
// Register the current series
|
|
25603
25702
|
const currentSeries = point.series;
|
|
25604
|
-
this.distance =
|
|
25703
|
+
this.distance = (currentSeries.tooltipOptions.distance ?? 16);
|
|
25605
25704
|
// Update the inner HTML
|
|
25606
25705
|
if (text === false) {
|
|
25607
25706
|
this.hide();
|
|
@@ -25874,7 +25973,7 @@ class Tooltip {
|
|
|
25874
25973
|
anchorY,
|
|
25875
25974
|
boxWidth,
|
|
25876
25975
|
point,
|
|
25877
|
-
rank:
|
|
25976
|
+
rank: boxPosition.rank ?? (isHeader ? 1 : 0),
|
|
25878
25977
|
size,
|
|
25879
25978
|
target: boxPosition.y,
|
|
25880
25979
|
tt,
|
|
@@ -26291,7 +26390,6 @@ class Tooltip {
|
|
|
26291
26390
|
|
|
26292
26391
|
|
|
26293
26392
|
|
|
26294
|
-
const { animObject: Point_animObject } = AnimationUtilities;
|
|
26295
26393
|
|
|
26296
26394
|
const { defaultOptions: Point_defaultOptions } = Defaults;
|
|
26297
26395
|
|
|
@@ -26631,10 +26729,15 @@ class Point {
|
|
|
26631
26729
|
*
|
|
26632
26730
|
* @internal
|
|
26633
26731
|
* @function Highcharts.Point#destroy
|
|
26732
|
+
*
|
|
26733
|
+
* @param {boolean} [sync]
|
|
26734
|
+
* Whether to destroy the point synchronously. Used internally from
|
|
26735
|
+
* series.destroy, where condemned points may cause animation errors
|
|
26736
|
+
* (#24976).
|
|
26634
26737
|
*/
|
|
26635
|
-
destroy() {
|
|
26636
|
-
if (!this.condemned) {
|
|
26637
|
-
const point = this, series = point.series, chart = series.chart, hoverPoints = chart.hoverPoints, globalAnimation = point.series.chart.renderer.globalAnimation, { duration } =
|
|
26738
|
+
destroy(sync) {
|
|
26739
|
+
if (!this.destroyed && !this.condemned) {
|
|
26740
|
+
const point = this, series = point.series, chart = series.chart, hoverPoints = chart.hoverPoints, globalAnimation = point.series.chart.renderer.globalAnimation, { duration } = animObject(globalAnimation);
|
|
26638
26741
|
/**
|
|
26639
26742
|
* Allow to call after animation.
|
|
26640
26743
|
* @internal
|
|
@@ -26651,6 +26754,7 @@ class Point {
|
|
|
26651
26754
|
for (const prop in point) { // eslint-disable-line guard-for-in
|
|
26652
26755
|
delete point[prop];
|
|
26653
26756
|
}
|
|
26757
|
+
this.destroyed = true;
|
|
26654
26758
|
};
|
|
26655
26759
|
if (point.legendItem) {
|
|
26656
26760
|
// Pies have legend items
|
|
@@ -26667,7 +26771,7 @@ class Point {
|
|
|
26667
26771
|
point.onMouseOut();
|
|
26668
26772
|
}
|
|
26669
26773
|
// Remove properties after animation
|
|
26670
|
-
if (duration && series.condemnedPoints) {
|
|
26774
|
+
if (duration && !sync && series.condemnedPoints) {
|
|
26671
26775
|
series.condemnedPoints.push(this);
|
|
26672
26776
|
this.graphic?.addClass('highcharts-point-condemned');
|
|
26673
26777
|
setTimeout(destroyPoint, duration);
|
|
@@ -26790,14 +26894,15 @@ class Point {
|
|
|
26790
26894
|
*
|
|
26791
26895
|
* @function Highcharts.Point#getZone
|
|
26792
26896
|
*
|
|
26793
|
-
* @return {Highcharts.SeriesZonesOptionsObject}
|
|
26794
|
-
* The zone item.
|
|
26897
|
+
* @return {Highcharts.SeriesZonesOptionsObject|undefined}
|
|
26898
|
+
* The zone item, or `undefined` if the series has no zones.
|
|
26795
26899
|
*/
|
|
26796
26900
|
getZone() {
|
|
26797
26901
|
const series = this.series, zones = series.zones, zoneAxis = series.zoneAxis || 'y';
|
|
26798
26902
|
let zone, i = 0;
|
|
26799
26903
|
zone = zones[i];
|
|
26800
|
-
while (
|
|
26904
|
+
while (i < zones.length &&
|
|
26905
|
+
this[zoneAxis] >= zone.value) {
|
|
26801
26906
|
zone = zones[++i];
|
|
26802
26907
|
}
|
|
26803
26908
|
// For resetting or reusing the point (#8100)
|
|
@@ -27213,7 +27318,7 @@ class Point {
|
|
|
27213
27318
|
*/
|
|
27214
27319
|
select(selected, accumulate) {
|
|
27215
27320
|
const point = this, series = point.series, chart = series.chart;
|
|
27216
|
-
selected =
|
|
27321
|
+
selected = (selected ?? !point.selected);
|
|
27217
27322
|
this.selectedStaging = selected;
|
|
27218
27323
|
// Fire the event with the default handler
|
|
27219
27324
|
point.firePointEvent(selected ? 'select' : 'unselect', { accumulate: accumulate }, function () {
|
|
@@ -27337,9 +27442,8 @@ class Point {
|
|
|
27337
27442
|
* @emits Highcharts.Point#event:afterSetState
|
|
27338
27443
|
*/
|
|
27339
27444
|
setState(state, move) {
|
|
27340
|
-
const point = this, series = point.series, previousState = point.state, stateOptions =
|
|
27341
|
-
|
|
27342
|
-
series.options.marker), normalDisabled = (markerOptions && markerOptions.enabled === false), markerStateOptions = markerOptions?.states?.[state || 'normal'] ||
|
|
27445
|
+
const point = this, series = point.series, previousState = point.state, stateOptions = series.options.states?.[state || 'normal'] || {}, markerOptions = (Point_defaultOptions.plotOptions?.[series.type]?.marker &&
|
|
27446
|
+
series.options.marker), normalDisabled = markerOptions?.enabled === false, markerStateOptions = markerOptions?.states?.[state || 'normal'] ||
|
|
27343
27447
|
{}, stateDisabled = markerStateOptions.enabled === false, pointMarker = point.marker || {}, chart = series.chart, hasMarkers = (markerOptions && series.markerAttribs);
|
|
27344
27448
|
let halo = series.halo, markerAttribs, pointAttribs, pointAttribsAnimation, stateMarkerGraphic = series.stateMarkerGraphic, newSymbol;
|
|
27345
27449
|
state = state || ''; // Empty string
|
|
@@ -27352,13 +27456,10 @@ class Point {
|
|
|
27352
27456
|
(stateOptions.enabled === false) ||
|
|
27353
27457
|
// General point marker's state options is disabled
|
|
27354
27458
|
(state && (stateDisabled ||
|
|
27355
|
-
(normalDisabled &&
|
|
27356
|
-
markerStateOptions.enabled === false))) ||
|
|
27459
|
+
(normalDisabled && markerStateOptions.enabled === false))) ||
|
|
27357
27460
|
// Individual point marker's state options is disabled
|
|
27358
27461
|
(state &&
|
|
27359
|
-
pointMarker.states
|
|
27360
|
-
pointMarker.states[state] &&
|
|
27361
|
-
pointMarker.states[state].enabled === false) // #1610
|
|
27462
|
+
pointMarker.states?.[state]?.enabled === false) // #1610
|
|
27362
27463
|
) {
|
|
27363
27464
|
return;
|
|
27364
27465
|
}
|
|
@@ -27377,7 +27478,8 @@ class Point {
|
|
|
27377
27478
|
}
|
|
27378
27479
|
if (!chart.styledMode) {
|
|
27379
27480
|
pointAttribs = series.pointAttribs(point, state);
|
|
27380
|
-
pointAttribsAnimation =
|
|
27481
|
+
pointAttribsAnimation = (chart.options.chart.animation ??
|
|
27482
|
+
stateOptions.animation);
|
|
27381
27483
|
const opacity = pointAttribs.opacity;
|
|
27382
27484
|
// Some inactive points (e.g. slices in pie) should apply
|
|
27383
27485
|
// opacity also for their labels
|
|
@@ -27395,9 +27497,11 @@ class Point {
|
|
|
27395
27497
|
point.graphic.animate(pointAttribs, pointAttribsAnimation);
|
|
27396
27498
|
}
|
|
27397
27499
|
if (markerAttribs) {
|
|
27398
|
-
point.graphic.animate(markerAttribs,
|
|
27500
|
+
point.graphic.animate(markerAttribs, (
|
|
27399
27501
|
// Turn off globally:
|
|
27400
|
-
chart.options.chart.animation
|
|
27502
|
+
chart.options.chart.animation ??
|
|
27503
|
+
markerStateOptions.animation ??
|
|
27504
|
+
markerOptions.animation));
|
|
27401
27505
|
}
|
|
27402
27506
|
// Zooming in from a range with no markers to a range with markers
|
|
27403
27507
|
if (stateMarkerGraphic) {
|
|
@@ -27446,10 +27550,12 @@ class Point {
|
|
|
27446
27550
|
}
|
|
27447
27551
|
}
|
|
27448
27552
|
// Show me your halo
|
|
27449
|
-
const haloOptions = stateOptions.halo
|
|
27553
|
+
const haloOptions = isObject(stateOptions.halo) ?
|
|
27554
|
+
stateOptions.halo :
|
|
27555
|
+
{};
|
|
27450
27556
|
const markerGraphic = (point.graphic || stateMarkerGraphic);
|
|
27451
27557
|
const markerVisibility = markerGraphic?.visibility || 'inherit';
|
|
27452
|
-
if (haloOptions
|
|
27558
|
+
if (haloOptions.size &&
|
|
27453
27559
|
markerGraphic &&
|
|
27454
27560
|
markerVisibility !== 'hidden' &&
|
|
27455
27561
|
!point.isCluster) {
|
|
@@ -27463,7 +27569,7 @@ class Point {
|
|
|
27463
27569
|
});
|
|
27464
27570
|
halo.attr({
|
|
27465
27571
|
'class': 'highcharts-halo highcharts-color-' +
|
|
27466
|
-
|
|
27572
|
+
(point.colorIndex ?? series.colorIndex) +
|
|
27467
27573
|
(point.className ? ' ' + point.className : ''),
|
|
27468
27574
|
'visibility': markerVisibility,
|
|
27469
27575
|
'zIndex': -1 // #4929, #8276
|
|
@@ -27979,6 +28085,11 @@ class Pointer {
|
|
|
27979
28085
|
}
|
|
27980
28086
|
}
|
|
27981
28087
|
}
|
|
28088
|
+
// Run a final transform with a drop trigger to display the reset
|
|
28089
|
+
// zoom button after a pinch gesture (#22128)
|
|
28090
|
+
if (e?.type === 'touchend' && this.hasDragged) {
|
|
28091
|
+
chart.transform({ trigger: 'drop' });
|
|
28092
|
+
}
|
|
27982
28093
|
if (redraw) {
|
|
27983
28094
|
chart.redraw();
|
|
27984
28095
|
}
|
|
@@ -28191,7 +28302,7 @@ class Pointer {
|
|
|
28191
28302
|
const hoverPoints = [], useExisting = !!(isDirectTouch && existingHoverPoint), filter = function (s) {
|
|
28192
28303
|
return (s.visible &&
|
|
28193
28304
|
!(!shared && s.directTouch) && // #3821
|
|
28194
|
-
|
|
28305
|
+
(s.options.enableMouseTracking ?? true));
|
|
28195
28306
|
};
|
|
28196
28307
|
let hoverSeries = existingHoverSeries,
|
|
28197
28308
|
// Which series to look in for the hover point
|
|
@@ -28377,8 +28488,8 @@ class Pointer {
|
|
|
28377
28488
|
const ePos = (touches ?
|
|
28378
28489
|
touches.length ?
|
|
28379
28490
|
touches.item(0) :
|
|
28380
|
-
(
|
|
28381
|
-
|
|
28491
|
+
(touches.changedTouches ??
|
|
28492
|
+
e.changedTouches)[0] :
|
|
28382
28493
|
e);
|
|
28383
28494
|
// Get mouse position
|
|
28384
28495
|
if (!chartPosition) {
|
|
@@ -28452,7 +28563,7 @@ class Pointer {
|
|
|
28452
28563
|
* @function Highcharts.Pointer#onContainerMouseLeave
|
|
28453
28564
|
*/
|
|
28454
28565
|
onContainerMouseLeave(e) {
|
|
28455
|
-
const { pointer } = Pointer_charts[
|
|
28566
|
+
const { pointer } = Pointer_charts[(Pointer.hoverChartIndex ?? -1)] || {};
|
|
28456
28567
|
e = this.normalize(e);
|
|
28457
28568
|
this.onContainerMouseMove(e);
|
|
28458
28569
|
// #4886, MS Touch end fires mouseleave but with no related target
|
|
@@ -28552,7 +28663,7 @@ class Pointer {
|
|
|
28552
28663
|
if (e?.touches && this.hasPinchMoved) {
|
|
28553
28664
|
e?.preventDefault?.();
|
|
28554
28665
|
}
|
|
28555
|
-
Pointer_charts[
|
|
28666
|
+
Pointer_charts[(Pointer.hoverChartIndex ?? -1)]
|
|
28556
28667
|
?.pointer
|
|
28557
28668
|
?.drop(e);
|
|
28558
28669
|
}
|
|
@@ -28622,6 +28733,9 @@ class Pointer {
|
|
|
28622
28733
|
from: boxFromTouches(lastTouches),
|
|
28623
28734
|
trigger: e.type
|
|
28624
28735
|
});
|
|
28736
|
+
// Record a truthy value in order to trigger the final transform
|
|
28737
|
+
// in the drop function
|
|
28738
|
+
pointer.hasDragged = 1;
|
|
28625
28739
|
});
|
|
28626
28740
|
if (pointer.res) {
|
|
28627
28741
|
pointer.res = false;
|
|
@@ -29056,7 +29170,7 @@ class Pointer {
|
|
|
29056
29170
|
*/
|
|
29057
29171
|
setHoverChartIndex(e) {
|
|
29058
29172
|
const chart = this.chart;
|
|
29059
|
-
const hoverChart = Core_Globals.charts[
|
|
29173
|
+
const hoverChart = Core_Globals.charts[(Pointer.hoverChartIndex ?? -1)];
|
|
29060
29174
|
if (hoverChart &&
|
|
29061
29175
|
hoverChart !== chart) {
|
|
29062
29176
|
const relatedTargetObj = { relatedTarget: chart.container };
|
|
@@ -29102,7 +29216,7 @@ class Pointer {
|
|
|
29102
29216
|
Math.pow(pinchDown[0].chartY - e.chartY, 2)) >= 16 :
|
|
29103
29217
|
false;
|
|
29104
29218
|
}
|
|
29105
|
-
if (
|
|
29219
|
+
if (hasMoved ?? true) {
|
|
29106
29220
|
this.pinch(e);
|
|
29107
29221
|
}
|
|
29108
29222
|
}
|
|
@@ -29113,7 +29227,9 @@ class Pointer {
|
|
|
29113
29227
|
// If inside, capture touch-drag and display tooltip. If not inside,
|
|
29114
29228
|
// allow dragging the finger to scroll the page
|
|
29115
29229
|
if ((chart.tooltip?.options.followTouchMove ?? true) &&
|
|
29116
|
-
isInside
|
|
29230
|
+
isInside &&
|
|
29231
|
+
e.type === 'touchmove' &&
|
|
29232
|
+
!(chart.scrollablePixelsX || chart.scrollablePixelsY)) {
|
|
29117
29233
|
e.preventDefault();
|
|
29118
29234
|
}
|
|
29119
29235
|
}
|
|
@@ -29143,7 +29259,7 @@ class Pointer {
|
|
|
29143
29259
|
let zoomType = chart.zooming.type || '', zoomX, zoomY;
|
|
29144
29260
|
// Look for the pinchType option
|
|
29145
29261
|
if (/touch/.test(e.type)) {
|
|
29146
|
-
zoomType =
|
|
29262
|
+
zoomType = (chart.zooming.pinchType ?? zoomType);
|
|
29147
29263
|
}
|
|
29148
29264
|
this.zoomX = zoomX = /x/.test(zoomType);
|
|
29149
29265
|
this.zoomY = zoomY = /y/.test(zoomType);
|
|
@@ -29585,7 +29701,7 @@ class DataTableCore {
|
|
|
29585
29701
|
* Fetches the given column by the canonical column ID. Simplified version
|
|
29586
29702
|
* of the full `DataTable.getRow` method, always returning by reference.
|
|
29587
29703
|
*
|
|
29588
|
-
* @function Highcharts.DataTable#
|
|
29704
|
+
* @function Highcharts.DataTable#getColumn
|
|
29589
29705
|
*
|
|
29590
29706
|
* @param {string} columnId
|
|
29591
29707
|
* ID of the column to get.
|
|
@@ -29917,7 +30033,7 @@ var LegendSymbol;
|
|
|
29917
30033
|
// Draw the marker
|
|
29918
30034
|
if (markerOptions && markerOptions.enabled !== false && symbolWidth) {
|
|
29919
30035
|
// Do not allow the marker to be larger than the symbolHeight
|
|
29920
|
-
let radius = Math.min(
|
|
30036
|
+
let radius = Math.min((markerOptions.radius ?? generalRadius), generalRadius);
|
|
29921
30037
|
// Restrict symbol markers size
|
|
29922
30038
|
if (symbol.indexOf('url') === 0) {
|
|
29923
30039
|
markerOptions = merge(markerOptions, {
|
|
@@ -30321,6 +30437,10 @@ const seriesDefaults = {
|
|
|
30321
30437
|
* ```
|
|
30322
30438
|
*
|
|
30323
30439
|
* @type {Highcharts.DataMappingOptionsObject}
|
|
30440
|
+
* @sample highcharts/datatable/datamapping
|
|
30441
|
+
* Basic data mapping
|
|
30442
|
+
* @sample highcharts/datatable/datamapping-dynamic
|
|
30443
|
+
* Data mapping with dynamic updates
|
|
30324
30444
|
* @sample {highcharts} highcharts/datatable/series-datatable-multiple
|
|
30325
30445
|
* Series with two data tables
|
|
30326
30446
|
* @sample {highcharts} highcharts/datatable/nested-keys
|
|
@@ -30331,6 +30451,29 @@ const seriesDefaults = {
|
|
|
30331
30451
|
* @since 13.0.0
|
|
30332
30452
|
* @apioption plotOptions.series.dataMapping
|
|
30333
30453
|
*/
|
|
30454
|
+
/**
|
|
30455
|
+
* Options for a specific series-level data table or an array of data
|
|
30456
|
+
* tables. The `dataTable` option can be either a configuration object or an
|
|
30457
|
+
* instance of the `DataTable` class. If a `DataTable` instance is passed,
|
|
30458
|
+
* it will be used directly. If a configuration object or an array is
|
|
30459
|
+
* passed, a new `DataTable` instance will be created based on the provided
|
|
30460
|
+
* configuration.
|
|
30461
|
+
*
|
|
30462
|
+
* @type {Highcharts.DataTable|Highcharts.DataTableOptionsObject|Array<Highcharts.DataTable|Highcharts.DataTableOptionsObject>}
|
|
30463
|
+
* @sample {highcharts} highcharts/datatable/series-datatable/
|
|
30464
|
+
* Series with one data table each
|
|
30465
|
+
* @sample {highcharts} highcharts/datatable/series-datatable-multiple/
|
|
30466
|
+
* Series with two data tables
|
|
30467
|
+
* @sample {highstock} stock/datatable/series-datatable/
|
|
30468
|
+
* Series with one data table each
|
|
30469
|
+
* @sample {highstock} stock/datatable/series-datatable-multiple/
|
|
30470
|
+
* Series with two data tables
|
|
30471
|
+
* @sample {highmaps} maps/datatable/series-datatable
|
|
30472
|
+
* Series-level data table
|
|
30473
|
+
*
|
|
30474
|
+
* @since 13.0.0
|
|
30475
|
+
* @apioption plotOptions.series.dataTable
|
|
30476
|
+
*/
|
|
30334
30477
|
/**
|
|
30335
30478
|
* Enable or disable the mouse tracking for a specific series. This
|
|
30336
30479
|
* includes point tooltips and click events on graphs and points. For
|
|
@@ -31214,6 +31357,7 @@ const seriesDefaults = {
|
|
|
31214
31357
|
* `series.allowPointSelect` option to true.
|
|
31215
31358
|
*
|
|
31216
31359
|
* @declare Highcharts.PointStatesSelectOptionsObject
|
|
31360
|
+
* @extends plotOptions.series.marker.states.hover
|
|
31217
31361
|
*/
|
|
31218
31362
|
select: {
|
|
31219
31363
|
/**
|
|
@@ -31790,6 +31934,7 @@ const seriesDefaults = {
|
|
|
31790
31934
|
* @sample {highmaps} maps/plotoptions/series-datalabels-box/
|
|
31791
31935
|
* Data labels box options
|
|
31792
31936
|
*
|
|
31937
|
+
* @type {number|Array<number>}
|
|
31793
31938
|
* @since 2.2.1
|
|
31794
31939
|
*/
|
|
31795
31940
|
padding: [1, 3],
|
|
@@ -31991,6 +32136,9 @@ const seriesDefaults = {
|
|
|
31991
32136
|
/**
|
|
31992
32137
|
* A collection of options for different series states.
|
|
31993
32138
|
*
|
|
32139
|
+
* In addition to the options documented under each state, any option from
|
|
32140
|
+
* the parent series type can be set, with exception of `data` and `states`.
|
|
32141
|
+
*
|
|
31994
32142
|
* @declare Highcharts.SeriesStatesOptionsObject
|
|
31995
32143
|
*/
|
|
31996
32144
|
states: {
|
|
@@ -32164,6 +32312,7 @@ const seriesDefaults = {
|
|
|
32164
32312
|
* Disabled inactive state
|
|
32165
32313
|
*
|
|
32166
32314
|
* @declare Highcharts.SeriesStatesInactiveOptionsObject
|
|
32315
|
+
* @extends plotOptions.series.states.hover
|
|
32167
32316
|
*/
|
|
32168
32317
|
inactive: {
|
|
32169
32318
|
/**
|
|
@@ -32564,7 +32713,6 @@ var SeriesRegistry;
|
|
|
32564
32713
|
* */
|
|
32565
32714
|
|
|
32566
32715
|
|
|
32567
|
-
const { animObject: Series_animObject, setAnimation: Series_setAnimation } = AnimationUtilities;
|
|
32568
32716
|
|
|
32569
32717
|
|
|
32570
32718
|
const { defaultOptions: Series_defaultOptions } = Defaults;
|
|
@@ -32702,6 +32850,13 @@ class Series {
|
|
|
32702
32850
|
* @type {number|undefined}
|
|
32703
32851
|
* @readonly
|
|
32704
32852
|
*/
|
|
32853
|
+
/**
|
|
32854
|
+
* The main group for the series' graphics.
|
|
32855
|
+
*
|
|
32856
|
+
* @name Highcharts.Series#group
|
|
32857
|
+
* @type {Highcharts.SVGElement}
|
|
32858
|
+
* @readonly
|
|
32859
|
+
*/
|
|
32705
32860
|
/**
|
|
32706
32861
|
* Contains the series' index in the `Chart.series` array.
|
|
32707
32862
|
*
|
|
@@ -32834,10 +32989,12 @@ class Series {
|
|
|
32834
32989
|
*/
|
|
32835
32990
|
series.options = series.setOptions(userOptions);
|
|
32836
32991
|
const options = series.options, visible = options.visible !== false;
|
|
32837
|
-
// Create the data table
|
|
32838
|
-
this.dataTable ?? (this.dataTable = options.dataTable
|
|
32839
|
-
|
|
32840
|
-
|
|
32992
|
+
// Create the data table or use the one passed as option
|
|
32993
|
+
this.dataTable ?? (this.dataTable = isArray(options.dataTable) ?
|
|
32994
|
+
new Data_DataTableCore() :
|
|
32995
|
+
options.dataTable?.isDataTable ?
|
|
32996
|
+
options.dataTable :
|
|
32997
|
+
new Data_DataTableCore(options.dataTable));
|
|
32841
32998
|
/**
|
|
32842
32999
|
* All child series that are linked to the current series through the
|
|
32843
33000
|
* [linkedTo](https://api.highcharts.com/highcharts/series.line.linkedTo)
|
|
@@ -32897,7 +33054,7 @@ class Series {
|
|
|
32897
33054
|
if (chartSeries.length) {
|
|
32898
33055
|
lastSeries = chartSeries[chartSeries.length - 1];
|
|
32899
33056
|
}
|
|
32900
|
-
series._i =
|
|
33057
|
+
series._i = (lastSeries?._i ?? -1) + 1;
|
|
32901
33058
|
series.opacity = series.options.opacity;
|
|
32902
33059
|
// Insert the series and re-order all series above the insertion
|
|
32903
33060
|
// point.
|
|
@@ -32944,7 +33101,7 @@ class Series {
|
|
|
32944
33101
|
// Apply if the series xAxis or yAxis option matches
|
|
32945
33102
|
// the number of the axis, or if undefined, use the
|
|
32946
33103
|
// first axis
|
|
32947
|
-
if (
|
|
33104
|
+
if ((seriesOptions[coll] ?? 0) === axis.index ||
|
|
32948
33105
|
(typeof seriesOptions[coll] !==
|
|
32949
33106
|
'undefined' &&
|
|
32950
33107
|
seriesOptions[coll] === axisOptions.id)) {
|
|
@@ -32987,8 +33144,12 @@ class Series {
|
|
|
32987
33144
|
* @function Highcharts.Series#hasMarkerChanged
|
|
32988
33145
|
*/
|
|
32989
33146
|
hasMarkerChanged(options, oldOptions) {
|
|
32990
|
-
const marker = options.marker, oldMarker = oldOptions.marker
|
|
32991
|
-
|
|
33147
|
+
const marker = options.marker, oldMarker = oldOptions.marker;
|
|
33148
|
+
// Note that `marker` holds the full, merged object including
|
|
33149
|
+
// `plotOptions`, while `oldMarker` is the user-defined series-level
|
|
33150
|
+
// options only. We may need to refactor that in the future if more
|
|
33151
|
+
// issues like #24057 arise.
|
|
33152
|
+
return marker && oldMarker && ((oldMarker.enabled && !marker.enabled) ||
|
|
32992
33153
|
oldMarker.symbol !== marker.symbol || // #10870, #15946
|
|
32993
33154
|
oldMarker.height !== marker.height || // #16274
|
|
32994
33155
|
oldMarker.width !== marker.width // #16274
|
|
@@ -33007,7 +33168,8 @@ class Series {
|
|
|
33007
33168
|
time.parse(options.pointStart) ??
|
|
33008
33169
|
0;
|
|
33009
33170
|
let pointInterval;
|
|
33010
|
-
this.pointInterval = pointInterval =
|
|
33171
|
+
this.pointInterval = pointInterval =
|
|
33172
|
+
this.pointInterval ?? options.pointInterval ?? 1;
|
|
33011
33173
|
if (relativeXValue && isNumber(x)) {
|
|
33012
33174
|
pointInterval *= x;
|
|
33013
33175
|
}
|
|
@@ -33079,9 +33241,13 @@ class Series {
|
|
|
33079
33241
|
);
|
|
33080
33242
|
// When shared tooltip, stickyTracking is true by default,
|
|
33081
33243
|
// unless user says otherwise.
|
|
33082
|
-
this.stickyTracking =
|
|
33083
|
-
|
|
33084
|
-
|
|
33244
|
+
this.stickyTracking =
|
|
33245
|
+
seriesUserOptions.stickyTracking ??
|
|
33246
|
+
userPlotOptionsType.stickyTracking ??
|
|
33247
|
+
userPlotOptionsSeries.stickyTracking ??
|
|
33248
|
+
(this.tooltipOptions.shared && !this.noSharedTooltip ?
|
|
33249
|
+
true :
|
|
33250
|
+
options.stickyTracking);
|
|
33085
33251
|
// Delete marker object if not allowed (#1125)
|
|
33086
33252
|
if (typeOptions.marker === null) {
|
|
33087
33253
|
delete options.marker;
|
|
@@ -33159,7 +33325,9 @@ class Series {
|
|
|
33159
33325
|
if (!value) {
|
|
33160
33326
|
// Pick up either the colorIndex option, or the series.colorIndex
|
|
33161
33327
|
// after Series.update()
|
|
33162
|
-
setting =
|
|
33328
|
+
setting = prop === 'color' ?
|
|
33329
|
+
(this.options.colorIndex ?? this[indexName]) :
|
|
33330
|
+
this[indexName];
|
|
33163
33331
|
if (defined(setting)) { // After Series.update()
|
|
33164
33332
|
i = setting;
|
|
33165
33333
|
}
|
|
@@ -33219,7 +33387,7 @@ class Series {
|
|
|
33219
33387
|
*/
|
|
33220
33388
|
getSymbol() {
|
|
33221
33389
|
const seriesMarkerOption = this.options.marker;
|
|
33222
|
-
this.getCyclic('symbol', seriesMarkerOption
|
|
33390
|
+
this.getCyclic('symbol', seriesMarkerOption?.symbol, this.chart.options.symbols);
|
|
33223
33391
|
}
|
|
33224
33392
|
/**
|
|
33225
33393
|
* Shorthand to get one of the series' data columns from `Series.dataTable`.
|
|
@@ -33415,9 +33583,10 @@ class Series {
|
|
|
33415
33583
|
if (!oldData[i].destroyed && !oldData[i].condemned) {
|
|
33416
33584
|
const pOptions = dataTable.getRowObject(i);
|
|
33417
33585
|
if (pOptions) {
|
|
33586
|
+
// Remove undefined properties, but preserve explicit
|
|
33587
|
+
// nulls (#24872)
|
|
33418
33588
|
Object.keys(pOptions).forEach((key) => {
|
|
33419
|
-
if (
|
|
33420
|
-
pOptions[key] === oldData[i].options[key]*/) {
|
|
33589
|
+
if (pOptions[key] === void 0) {
|
|
33421
33590
|
delete pOptions[key];
|
|
33422
33591
|
}
|
|
33423
33592
|
});
|
|
@@ -33822,8 +33991,12 @@ class Series {
|
|
|
33822
33991
|
}
|
|
33823
33992
|
}
|
|
33824
33993
|
}
|
|
33825
|
-
// Find the closest distance between processed points
|
|
33826
|
-
|
|
33994
|
+
// Find the closest distance between processed points. When the data was
|
|
33995
|
+
// cropped (or set out of range), read x from the freshly cropped local
|
|
33996
|
+
// `modified` table, #24858.
|
|
33997
|
+
if (modified !== table) {
|
|
33998
|
+
xData = modified.getColumn('x', true) || [];
|
|
33999
|
+
}
|
|
33827
34000
|
const closestPointRange = getClosestDistance([
|
|
33828
34001
|
logarithmic ?
|
|
33829
34002
|
xData.map(logarithmic.log2lin) :
|
|
@@ -34028,9 +34201,9 @@ class Series {
|
|
|
34028
34201
|
* Force getting extremes of a total series data range.
|
|
34029
34202
|
*/
|
|
34030
34203
|
getExtremes(yData, forceExtremesFromAll) {
|
|
34031
|
-
const { xAxis, yAxis } = this, getExtremesFromAll = forceExtremesFromAll ||
|
|
34204
|
+
const { options, xAxis, yAxis } = this, getExtremesFromAll = forceExtremesFromAll ||
|
|
34032
34205
|
this.getExtremesFromAll ||
|
|
34033
|
-
|
|
34206
|
+
options.getExtremesFromAll, // #4599, #21003
|
|
34034
34207
|
table = getExtremesFromAll && this.cropped ?
|
|
34035
34208
|
this.dataTable :
|
|
34036
34209
|
this.dataTable.getModified(), rowCount = table.rowCount, customData = yData || this.stackedYData, yAxisData = customData ?
|
|
@@ -34040,7 +34213,12 @@ class Series {
|
|
|
34040
34213
|
// non-sorted data like scatter (#7639).
|
|
34041
34214
|
shoulder = this.requireSorting && !this.is('column') ?
|
|
34042
34215
|
1 : 0,
|
|
34043
|
-
//
|
|
34216
|
+
// Used only for `cumulativeStart` (#24608)
|
|
34217
|
+
excludeShoulder = options.cumulative &&
|
|
34218
|
+
options.cumulativeStart &&
|
|
34219
|
+
shoulder &&
|
|
34220
|
+
!getExtremesFromAll,
|
|
34221
|
+
// Compensate for log X axis (#2117)
|
|
34044
34222
|
positiveValuesOnly = yAxis ? yAxis.positiveValuesOnly : false, doAll = getExtremesFromAll ||
|
|
34045
34223
|
this.cropped ||
|
|
34046
34224
|
!xAxis; // For colorAxis support
|
|
@@ -34052,10 +34230,10 @@ class Series {
|
|
|
34052
34230
|
}
|
|
34053
34231
|
for (i = 0; i < rowCount; i++) {
|
|
34054
34232
|
x = xData[i];
|
|
34055
|
-
// Check if it is within the selected x
|
|
34056
|
-
if (doAll ||
|
|
34233
|
+
// Check if it is within the selected x-axis range
|
|
34234
|
+
if ((doAll ||
|
|
34057
34235
|
((xData[i + shoulder] || x) >= xMin &&
|
|
34058
|
-
(xData[i - shoulder] || x) <= xMax)) {
|
|
34236
|
+
(xData[i - shoulder] || x) <= xMax)) && (!excludeShoulder || x >= xMin)) {
|
|
34059
34237
|
for (const values of yAxisData) {
|
|
34060
34238
|
const val = values[i];
|
|
34061
34239
|
// For points within the visible range, including the
|
|
@@ -34124,7 +34302,7 @@ class Series {
|
|
|
34124
34302
|
*/
|
|
34125
34303
|
translate() {
|
|
34126
34304
|
this.generatePoints();
|
|
34127
|
-
const series = this, { options, xAxis, yAxis } = series, { stacking, threshold } = options, {
|
|
34305
|
+
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
|
|
34128
34306
|
dynamicallyPlaced = Boolean(pointPlacement), stackThreshold = options.startFromThreshold ? threshold : 0, nullYSubstitute = (options?.nullInteraction &&
|
|
34129
34307
|
yAxis.len);
|
|
34130
34308
|
let i, plotX, lastPlotX, stackIndicator, closestPointRangePx = Number.MAX_VALUE;
|
|
@@ -34176,7 +34354,9 @@ class Series {
|
|
|
34176
34354
|
yValue = stackValues[1];
|
|
34177
34355
|
if (lowValue === stackThreshold &&
|
|
34178
34356
|
stackIndicator.key === stacks[xValue].base) {
|
|
34179
|
-
lowValue =
|
|
34357
|
+
lowValue = isNumber(threshold) ?
|
|
34358
|
+
threshold :
|
|
34359
|
+
yAxis.min;
|
|
34180
34360
|
}
|
|
34181
34361
|
// #1200, #1232
|
|
34182
34362
|
if (yAxis.positiveValuesOnly &&
|
|
@@ -34184,7 +34364,7 @@ class Series {
|
|
|
34184
34364
|
lowValue <= 0) {
|
|
34185
34365
|
lowValue = void 0;
|
|
34186
34366
|
}
|
|
34187
|
-
point.total = point.stackTotal =
|
|
34367
|
+
point.total = point.stackTotal = stackItem.total ?? void 0;
|
|
34188
34368
|
point.percentage = defined(point.y) && stackItem.total ?
|
|
34189
34369
|
(point.y / stackItem.total * 100) : void 0;
|
|
34190
34370
|
point.stackY = yValue;
|
|
@@ -34317,7 +34497,7 @@ class Series {
|
|
|
34317
34497
|
* Initialize the animation.
|
|
34318
34498
|
*/
|
|
34319
34499
|
animate(init) {
|
|
34320
|
-
const { chart, group, markerGroup } = this, inverted = chart.inverted, animation =
|
|
34500
|
+
const { chart, group, markerGroup } = this, inverted = chart.inverted, animation = animObject(this.options.animation),
|
|
34321
34501
|
// The key for temporary animation clips
|
|
34322
34502
|
animationClipKey = [
|
|
34323
34503
|
this.getSharedClipKey(),
|
|
@@ -34413,10 +34593,11 @@ class Series {
|
|
|
34413
34593
|
*/
|
|
34414
34594
|
drawPoints(points) {
|
|
34415
34595
|
points || (points = this.points.concat(this.condemnedPoints));
|
|
34416
|
-
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 =
|
|
34417
|
-
|
|
34418
|
-
|
|
34419
|
-
seriesMarkerOptions.
|
|
34596
|
+
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 ??
|
|
34597
|
+
(!xAxis || xAxis.isRadial ? true : null) ??
|
|
34598
|
+
// Use larger or equal as radius is null in bubbles (#6321)
|
|
34599
|
+
((series.closestPointRangePx ?? -Infinity) >= ((seriesMarkerOptions.enabledThreshold ?? 2) *
|
|
34600
|
+
seriesMarkerOptions.radius));
|
|
34420
34601
|
let i, point, graphic, verb, pointMarkerOptions, hasPointMarker, markerAttribs;
|
|
34421
34602
|
if (seriesMarkerOptions.enabled !== false ||
|
|
34422
34603
|
series._hasPointMarkers) {
|
|
@@ -34433,8 +34614,10 @@ class Series {
|
|
|
34433
34614
|
// Only draw the point if y is defined
|
|
34434
34615
|
if (shouldDrawMarker) {
|
|
34435
34616
|
// Shortcuts
|
|
34436
|
-
const symbol =
|
|
34437
|
-
|
|
34617
|
+
const symbol = pointMarkerOptions.symbol ??
|
|
34618
|
+
series.symbol ??
|
|
34619
|
+
'rect';
|
|
34620
|
+
markerAttribs = series.markerAttribs(point, point.selected ? 'select' : '');
|
|
34438
34621
|
const isInside = point.isInside !== false;
|
|
34439
34622
|
if (!graphic &&
|
|
34440
34623
|
isInside &&
|
|
@@ -34499,15 +34682,17 @@ class Series {
|
|
|
34499
34682
|
* A hash containing those attributes that are not settable from CSS.
|
|
34500
34683
|
*/
|
|
34501
34684
|
markerAttribs(point, state) {
|
|
34502
|
-
const seriesOptions = this.options, seriesMarkerOptions = seriesOptions.marker, pointMarkerOptions = point.marker || {}, symbol = (pointMarkerOptions.symbol ||
|
|
34685
|
+
const seriesOptions = this.options, seriesMarkerOptions = seriesOptions.marker ?? {}, pointMarkerOptions = point.marker || {}, symbol = (pointMarkerOptions.symbol ||
|
|
34503
34686
|
seriesMarkerOptions.symbol), attribs = {};
|
|
34504
|
-
let seriesStateOptions, pointStateOptions, radius =
|
|
34687
|
+
let seriesStateOptions, pointStateOptions, radius = pointMarkerOptions.radius ??
|
|
34688
|
+
seriesMarkerOptions.radius;
|
|
34505
34689
|
// Handle hover and select states
|
|
34506
34690
|
if (state) {
|
|
34507
|
-
seriesStateOptions = seriesMarkerOptions
|
|
34691
|
+
seriesStateOptions = seriesMarkerOptions.states?.[state];
|
|
34508
34692
|
pointStateOptions = pointMarkerOptions.states?.[state];
|
|
34509
|
-
radius =
|
|
34510
|
-
|
|
34693
|
+
radius = pointStateOptions?.radius ??
|
|
34694
|
+
seriesStateOptions?.radius ??
|
|
34695
|
+
(radius && radius + (seriesStateOptions?.radiusPlus || 0));
|
|
34511
34696
|
}
|
|
34512
34697
|
point.hasImage = symbol && symbol.indexOf('url') === 0;
|
|
34513
34698
|
if (point.hasImage) {
|
|
@@ -34520,7 +34705,7 @@ class Series {
|
|
|
34520
34705
|
0 :
|
|
34521
34706
|
symbol === 'rect' ?
|
|
34522
34707
|
// Rectangle symbols need crisp edges, others don't
|
|
34523
|
-
seriesMarkerOptions
|
|
34708
|
+
seriesMarkerOptions.lineWidth || 0 :
|
|
34524
34709
|
1);
|
|
34525
34710
|
}
|
|
34526
34711
|
attribs.x = pos[0] - radius;
|
|
@@ -34551,8 +34736,9 @@ class Series {
|
|
|
34551
34736
|
* The presentational attributes to be set on the point.
|
|
34552
34737
|
*/
|
|
34553
34738
|
pointAttribs(point, state) {
|
|
34554
|
-
const options = this.options, seriesMarkerOptions = options.marker, pointOptions = point?.options, pointMarkerOptions = pointOptions?.marker || {}, pointColorOption = pointOptions?.color, pointColor = point?.color, zoneColor = point?.zone?.color;
|
|
34555
|
-
let
|
|
34739
|
+
const options = this.options, seriesMarkerOptions = options.marker ?? {}, pointOptions = point?.options, pointMarkerOptions = pointOptions?.marker || {}, pointColorOption = pointOptions?.color, pointColor = point?.color, zoneColor = point?.zone?.color;
|
|
34740
|
+
let color = this.color, fill, stroke, strokeWidth = pointMarkerOptions.lineWidth ??
|
|
34741
|
+
seriesMarkerOptions.lineWidth, opacity = (point?.isNull && options.nullInteraction) ? 0 : 1;
|
|
34556
34742
|
color = (pointColorOption ||
|
|
34557
34743
|
zoneColor ||
|
|
34558
34744
|
pointColor ||
|
|
@@ -34565,19 +34751,22 @@ class Series {
|
|
|
34565
34751
|
color);
|
|
34566
34752
|
// Handle hover and select states
|
|
34567
34753
|
state = state || 'normal';
|
|
34568
|
-
|
|
34569
|
-
|
|
34570
|
-
|
|
34571
|
-
|
|
34572
|
-
strokeWidth
|
|
34573
|
-
|
|
34574
|
-
|
|
34575
|
-
|
|
34576
|
-
|
|
34577
|
-
|
|
34578
|
-
|
|
34579
|
-
|
|
34580
|
-
|
|
34754
|
+
const seriesStateOptions = seriesMarkerOptions.states?.[state] || {};
|
|
34755
|
+
const pointStateOptions = pointMarkerOptions.states?.[state] || {};
|
|
34756
|
+
strokeWidth = pointStateOptions.lineWidth ??
|
|
34757
|
+
seriesStateOptions.lineWidth ??
|
|
34758
|
+
(strokeWidth || 0) + (pointStateOptions.lineWidthPlus ??
|
|
34759
|
+
seriesStateOptions.lineWidthPlus ??
|
|
34760
|
+
0);
|
|
34761
|
+
fill = (pointStateOptions.fillColor ||
|
|
34762
|
+
seriesStateOptions.fillColor ||
|
|
34763
|
+
fill);
|
|
34764
|
+
stroke = (pointStateOptions.lineColor ||
|
|
34765
|
+
seriesStateOptions.lineColor ||
|
|
34766
|
+
stroke);
|
|
34767
|
+
opacity = (pointStateOptions.opacity ??
|
|
34768
|
+
seriesStateOptions.opacity ??
|
|
34769
|
+
opacity);
|
|
34581
34770
|
return {
|
|
34582
34771
|
'stroke': stroke,
|
|
34583
34772
|
'stroke-width': strokeWidth,
|
|
@@ -34616,7 +34805,7 @@ class Series {
|
|
|
34616
34805
|
// Destroy all points with their elements
|
|
34617
34806
|
i = data.length;
|
|
34618
34807
|
while (i--) {
|
|
34619
|
-
data[i]?.destroy?.();
|
|
34808
|
+
data[i]?.destroy?.(true);
|
|
34620
34809
|
}
|
|
34621
34810
|
for (const zone of series.zones || []) {
|
|
34622
34811
|
// Destroy SVGElement's but preserve primitive props (#20426)
|
|
@@ -34643,7 +34832,7 @@ class Series {
|
|
|
34643
34832
|
erase(chart.series, series);
|
|
34644
34833
|
chart.orderItems('series');
|
|
34645
34834
|
// Clear all members
|
|
34646
|
-
objectEach(series, function (
|
|
34835
|
+
objectEach(series, function (_val, prop) {
|
|
34647
34836
|
if (!keepEventsForUpdate || prop !== 'hcEvents') {
|
|
34648
34837
|
delete series[prop];
|
|
34649
34838
|
}
|
|
@@ -34695,7 +34884,7 @@ class Series {
|
|
|
34695
34884
|
// Reset
|
|
34696
34885
|
zones.forEach((zone) => {
|
|
34697
34886
|
zone.lineClip = [];
|
|
34698
|
-
zone.translated = clamp(axis.toPixels(
|
|
34887
|
+
zone.translated = clamp(axis.toPixels((zone.value ?? axisMax), true) || 0, 0, len);
|
|
34699
34888
|
});
|
|
34700
34889
|
// The use of the Color Threshold assumes there are no gaps so it is
|
|
34701
34890
|
// safe to hide the original graph and area unless it is not
|
|
@@ -34919,7 +35108,7 @@ class Series {
|
|
|
34919
35108
|
* @emits Highcharts.Series#event:afterRender
|
|
34920
35109
|
*/
|
|
34921
35110
|
render() {
|
|
34922
|
-
const series = this, { chart, options, hasRendered } = series, animOptions =
|
|
35111
|
+
const series = this, { chart, options, hasRendered } = series, animOptions = animObject(options.animation), visibility = series.visible ?
|
|
34923
35112
|
'inherit' : 'hidden', // #2597
|
|
34924
35113
|
zIndex = options.zIndex, chartSeriesGroup = chart.seriesGroup;
|
|
34925
35114
|
let animDuration = series.finishedAnimating ?
|
|
@@ -35021,7 +35210,7 @@ class Series {
|
|
|
35021
35210
|
*
|
|
35022
35211
|
* @function Highcharts.Series#searchPoint
|
|
35023
35212
|
*
|
|
35024
|
-
* @param {
|
|
35213
|
+
* @param {PointerEvent} e
|
|
35025
35214
|
* The normalized pointer event
|
|
35026
35215
|
* @param {boolean} [compareX=false]
|
|
35027
35216
|
* Search only by the X value, not Y
|
|
@@ -35053,7 +35242,7 @@ class Series {
|
|
|
35053
35242
|
// Prevent multiple k-d-trees from being built simultaneously
|
|
35054
35243
|
// (#6235)
|
|
35055
35244
|
this.buildingKdTree = true;
|
|
35056
|
-
const series = this, seriesOptions = series.options, dimensions = seriesOptions.findNearestPointBy
|
|
35245
|
+
const series = this, seriesOptions = series.options, dimensions = (seriesOptions.findNearestPointBy ?? '')
|
|
35057
35246
|
.indexOf('y') > -1 ? 2 : 1;
|
|
35058
35247
|
/**
|
|
35059
35248
|
* Internal function
|
|
@@ -35103,7 +35292,7 @@ class Series {
|
|
|
35103
35292
|
* The point to search for.
|
|
35104
35293
|
* @param {boolean} [compareX=false]
|
|
35105
35294
|
* Search only by the X value, not Y.
|
|
35106
|
-
* @param {
|
|
35295
|
+
* @param {PointerEvent} [e]
|
|
35107
35296
|
* The normalized pointer event.
|
|
35108
35297
|
* @param {Function} [suppliedPointEvaluator]
|
|
35109
35298
|
* A custom point evaluator function.
|
|
@@ -35309,11 +35498,13 @@ class Series {
|
|
|
35309
35498
|
* Both X and Y values given
|
|
35310
35499
|
* @sample highcharts/members/series-addpoint-pie/
|
|
35311
35500
|
* Append pie slice
|
|
35312
|
-
* @sample
|
|
35501
|
+
* @sample highcharts/datatable/datamapping-dynamic
|
|
35502
|
+
* Alternative approach with data table
|
|
35503
|
+
* @sample {highstock} stock/members/series-addpoint/
|
|
35313
35504
|
* Append 100 points in Highcharts Stock
|
|
35314
|
-
* @sample stock/members/series-addpoint-shift/
|
|
35505
|
+
* @sample {highstock} stock/members/series-addpoint-shift/
|
|
35315
35506
|
* Append and shift in Highcharts Stock
|
|
35316
|
-
* @sample maps/members/series-addpoint/
|
|
35507
|
+
* @sample {highmaps} maps/members/series-addpoint/
|
|
35317
35508
|
* Add a point in Highmaps
|
|
35318
35509
|
*
|
|
35319
35510
|
* @function Highcharts.Series#addPoint
|
|
@@ -35349,7 +35540,7 @@ class Series {
|
|
|
35349
35540
|
const series = this, seriesOptions = series.options, { chart, data, dataTable: table, xAxis } = series, names = xAxis?.hasNames && xAxis.names, dataOptions = seriesOptions.data, xData = series.getColumn('x');
|
|
35350
35541
|
let isInTheMiddle, i;
|
|
35351
35542
|
// Optional redraw, defaults to true
|
|
35352
|
-
redraw =
|
|
35543
|
+
redraw = (redraw ?? true);
|
|
35353
35544
|
// Get options and push the point to xData, yData and series.options. In
|
|
35354
35545
|
// series.generatePoints the Point instance will be created on demand
|
|
35355
35546
|
// and pushed to the series.data array.
|
|
@@ -35459,8 +35650,8 @@ class Series {
|
|
|
35459
35650
|
chart.redraw();
|
|
35460
35651
|
}
|
|
35461
35652
|
};
|
|
35462
|
-
|
|
35463
|
-
redraw =
|
|
35653
|
+
setAnimation(animation, chart);
|
|
35654
|
+
redraw = (redraw ?? true);
|
|
35464
35655
|
// Fire the event with a default handler of removing the point
|
|
35465
35656
|
if (point) {
|
|
35466
35657
|
point.firePointEvent('remove', null, remove);
|
|
@@ -35503,7 +35694,7 @@ class Series {
|
|
|
35503
35694
|
// Redraw
|
|
35504
35695
|
chart.isDirtyLegend = chart.isDirtyBox = true;
|
|
35505
35696
|
chart.linkSeries(keepEvents);
|
|
35506
|
-
if (
|
|
35697
|
+
if (redraw ?? true) {
|
|
35507
35698
|
chart.redraw(animation);
|
|
35508
35699
|
}
|
|
35509
35700
|
}
|
|
@@ -35720,7 +35911,7 @@ class Series {
|
|
|
35720
35911
|
series.isDirtyData = true;
|
|
35721
35912
|
}
|
|
35722
35913
|
fireEvent(this, 'afterUpdate');
|
|
35723
|
-
if (
|
|
35914
|
+
if (redraw ?? true) {
|
|
35724
35915
|
chart.redraw(keepPoints ? void 0 : false);
|
|
35725
35916
|
}
|
|
35726
35917
|
}
|
|
@@ -35737,12 +35928,12 @@ class Series {
|
|
|
35737
35928
|
* @internal
|
|
35738
35929
|
*/
|
|
35739
35930
|
hasOptionChanged(optionName) {
|
|
35740
|
-
const chart = this.chart, option = this.options[optionName], plotOptions = chart.options.plotOptions, oldOption = this.userOptions[optionName], plotOptionsOption =
|
|
35931
|
+
const chart = this.chart, option = this.options[optionName], plotOptions = chart.options.plotOptions, oldOption = this.userOptions[optionName], plotOptionsOption = (plotOptions?.[this.type]?.[optionName] ?? plotOptions?.series?.[optionName]);
|
|
35741
35932
|
// Check if `plotOptions` are defined already, #19203
|
|
35742
35933
|
if (oldOption && !defined(plotOptionsOption)) {
|
|
35743
35934
|
return option !== oldOption;
|
|
35744
35935
|
}
|
|
35745
|
-
return option !==
|
|
35936
|
+
return option !== (plotOptionsOption ?? option);
|
|
35746
35937
|
}
|
|
35747
35938
|
/**
|
|
35748
35939
|
* Runs on mouse over the series graphical items.
|
|
@@ -35813,10 +36004,11 @@ class Series {
|
|
|
35813
36004
|
* Determines if state should be inherited by points too.
|
|
35814
36005
|
*/
|
|
35815
36006
|
setState(state, inherit) {
|
|
35816
|
-
const series = this, { graph, options } = series, { inactiveOtherPoints, states: stateOptions } = options,
|
|
36007
|
+
const series = this, { graph, options } = series, { inactiveOtherPoints, states: stateOptions = {} } = options,
|
|
35817
36008
|
// By default a quick animation to hover/inactive,
|
|
35818
36009
|
// slower to un-hover
|
|
35819
|
-
stateAnimation =
|
|
36010
|
+
stateAnimation = stateOptions[state || 'normal']?.animation ??
|
|
36011
|
+
series.chart.options.chart.animation;
|
|
35820
36012
|
let { lineWidth, opacity } = options;
|
|
35821
36013
|
state = state || '';
|
|
35822
36014
|
if (series.state !== state) {
|
|
@@ -35843,9 +36035,13 @@ class Series {
|
|
|
35843
36035
|
return;
|
|
35844
36036
|
}
|
|
35845
36037
|
if (state) {
|
|
35846
|
-
lineWidth =
|
|
35847
|
-
|
|
35848
|
-
|
|
36038
|
+
lineWidth = stateOptions[state]?.lineWidth ?? (!isNumber(lineWidth) ?
|
|
36039
|
+
void 0 :
|
|
36040
|
+
// Increase by lineWidthPlus only when lineWidth
|
|
36041
|
+
// is a number.
|
|
36042
|
+
(lineWidth +
|
|
36043
|
+
(stateOptions?.[state]?.lineWidthPlus || 0))); // #4035
|
|
36044
|
+
opacity = stateOptions[state]?.opacity ?? opacity;
|
|
35849
36045
|
}
|
|
35850
36046
|
if (graph && !graph.dashstyle && isNumber(lineWidth)) {
|
|
35851
36047
|
// Animate the graph stroke-width
|
|
@@ -35889,11 +36085,7 @@ class Series {
|
|
|
35889
36085
|
* Can be either `hover` or undefined to set to normal state.
|
|
35890
36086
|
*/
|
|
35891
36087
|
setAllPointsToState(state) {
|
|
35892
|
-
this.points.forEach(
|
|
35893
|
-
if (point.setState) {
|
|
35894
|
-
point.setState(state);
|
|
35895
|
-
}
|
|
35896
|
-
});
|
|
36088
|
+
this.points.forEach((point) => point.setState?.(state));
|
|
35897
36089
|
}
|
|
35898
36090
|
/**
|
|
35899
36091
|
* Show or hide the series.
|
|
@@ -36574,7 +36766,6 @@ Series_SeriesRegistry.series = Series;
|
|
|
36574
36766
|
* */
|
|
36575
36767
|
|
|
36576
36768
|
|
|
36577
|
-
const { animObject: Legend_animObject, setAnimation: Legend_setAnimation } = AnimationUtilities;
|
|
36578
36769
|
|
|
36579
36770
|
const { registerEventOptions: Legend_registerEventOptions } = Core_Foundation;
|
|
36580
36771
|
|
|
@@ -36703,7 +36894,7 @@ class Legend {
|
|
|
36703
36894
|
* @param {Highcharts.LegendOptions} options
|
|
36704
36895
|
*/
|
|
36705
36896
|
setOptions(options) {
|
|
36706
|
-
const padding =
|
|
36897
|
+
const padding = (options.padding ?? 8);
|
|
36707
36898
|
/**
|
|
36708
36899
|
* Legend options.
|
|
36709
36900
|
*
|
|
@@ -36720,7 +36911,7 @@ class Legend {
|
|
|
36720
36911
|
this.itemMarginBottom = options.itemMarginBottom;
|
|
36721
36912
|
this.padding = padding;
|
|
36722
36913
|
this.initialItemY = padding - 5; // 5 is pixels above the text
|
|
36723
|
-
this.symbolWidth =
|
|
36914
|
+
this.symbolWidth = (options.symbolWidth ?? 16);
|
|
36724
36915
|
this.pages = [];
|
|
36725
36916
|
this.proximate = options.layout === 'proximate' && !this.chart.inverted;
|
|
36726
36917
|
// #12705: baseline has to be reset on every update
|
|
@@ -36754,7 +36945,7 @@ class Legend {
|
|
|
36754
36945
|
}
|
|
36755
36946
|
this.destroy();
|
|
36756
36947
|
chart.isDirtyLegend = chart.isDirtyBox = true;
|
|
36757
|
-
if (
|
|
36948
|
+
if (redraw ?? true) {
|
|
36758
36949
|
chart.redraw();
|
|
36759
36950
|
}
|
|
36760
36951
|
fireEvent(this, 'afterUpdate', { redraw });
|
|
@@ -36992,7 +37183,7 @@ class Legend {
|
|
|
36992
37183
|
* The item to render.
|
|
36993
37184
|
*/
|
|
36994
37185
|
renderItem(item) {
|
|
36995
|
-
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 ?
|
|
37186
|
+
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 ?
|
|
36996
37187
|
item.series :
|
|
36997
37188
|
item, seriesOptions = series.options, showCheckbox = (!!legend.createCheckboxForItem &&
|
|
36998
37189
|
seriesOptions &&
|
|
@@ -37038,9 +37229,11 @@ class Legend {
|
|
|
37038
37229
|
legend.fontMetrics.f + 3 + legend.itemMarginTop;
|
|
37039
37230
|
label.attr('y', legend.baseline);
|
|
37040
37231
|
legend.symbolHeight =
|
|
37041
|
-
|
|
37232
|
+
(options.symbolHeight ?? legend.fontMetrics.f);
|
|
37042
37233
|
if (options.squareSymbol) {
|
|
37043
|
-
legend.symbolWidth =
|
|
37234
|
+
legend.symbolWidth =
|
|
37235
|
+
options.symbolWidth ??
|
|
37236
|
+
Math.max(legend.symbolHeight, 16);
|
|
37044
37237
|
itemExtraWidth = legend.symbolWidth + symbolPadding +
|
|
37045
37238
|
itemDistance + (showCheckbox ? 20 : 0);
|
|
37046
37239
|
if (ltr) {
|
|
@@ -37092,7 +37285,7 @@ class Legend {
|
|
|
37092
37285
|
* @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item
|
|
37093
37286
|
*/
|
|
37094
37287
|
layoutItem(item) {
|
|
37095
|
-
const options = this.options, padding = this.padding, horizontal = options.layout === 'horizontal', itemHeight = item.itemHeight, itemMarginBottom = this.itemMarginBottom, itemMarginTop = this.itemMarginTop, itemDistance = horizontal ?
|
|
37288
|
+
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 &&
|
|
37096
37289
|
this.totalItemWidth > maxLegendWidth) ?
|
|
37097
37290
|
this.maxItemWidth :
|
|
37098
37291
|
item.itemWidth, legendItem = item.legendItem || {};
|
|
@@ -37146,7 +37339,9 @@ class Legend {
|
|
|
37146
37339
|
const seriesOptions = series?.options;
|
|
37147
37340
|
// Handle showInLegend. If the series is linked to another series,
|
|
37148
37341
|
// defaults to false.
|
|
37149
|
-
if (series &&
|
|
37342
|
+
if (series &&
|
|
37343
|
+
(seriesOptions.showInLegend ??
|
|
37344
|
+
(!defined(seriesOptions.linkedTo)))) {
|
|
37150
37345
|
// Use points or series for the legend item depending on
|
|
37151
37346
|
// legendType
|
|
37152
37347
|
allItems = allItems.concat(series.legendItem?.labels ||
|
|
@@ -37428,7 +37623,7 @@ class Legend {
|
|
|
37428
37623
|
* @function Highcharts.Legend#handleOverflow
|
|
37429
37624
|
*/
|
|
37430
37625
|
handleOverflow(legendHeight) {
|
|
37431
|
-
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 =
|
|
37626
|
+
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) {
|
|
37432
37627
|
if (typeof height === 'number') {
|
|
37433
37628
|
clipRect.attr({
|
|
37434
37629
|
height: height
|
|
@@ -37474,7 +37669,7 @@ class Legend {
|
|
|
37474
37669
|
navOptions.enabled !== false) {
|
|
37475
37670
|
this.clipHeight = clipHeight =
|
|
37476
37671
|
Math.max(spaceHeight - 20 - this.titleHeight - padding, 0);
|
|
37477
|
-
this.currentPage =
|
|
37672
|
+
this.currentPage = (this.currentPage ?? 1);
|
|
37478
37673
|
this.fullHeight = legendHeight;
|
|
37479
37674
|
// Fill pages with Y positions so that the top of each a legend item
|
|
37480
37675
|
// defines the scroll top for each page (#2098)
|
|
@@ -37577,7 +37772,7 @@ class Legend {
|
|
|
37577
37772
|
}
|
|
37578
37773
|
if (currentPage > 0) {
|
|
37579
37774
|
if (typeof animation !== 'undefined') {
|
|
37580
|
-
|
|
37775
|
+
setAnimation(animation, chart);
|
|
37581
37776
|
}
|
|
37582
37777
|
this.nav.attr({
|
|
37583
37778
|
translateX: padding,
|
|
@@ -37634,7 +37829,7 @@ class Legend {
|
|
|
37634
37829
|
this.currentPage = currentPage;
|
|
37635
37830
|
this.positionCheckboxes();
|
|
37636
37831
|
// Fire event after scroll animation is complete
|
|
37637
|
-
const animOptions =
|
|
37832
|
+
const animOptions = animObject((animation ?? chart.renderer.globalAnimation ?? true));
|
|
37638
37833
|
syncTimeout(() => {
|
|
37639
37834
|
fireEvent(this, 'afterScroll', { currentPage });
|
|
37640
37835
|
}, animOptions.duration);
|
|
@@ -37844,7 +38039,7 @@ class Legend {
|
|
|
37844
38039
|
*/ /**
|
|
37845
38040
|
* Related browser event.
|
|
37846
38041
|
* @name Highcharts.LegendItemClickEventObject#browserEvent
|
|
37847
|
-
* @type {
|
|
38042
|
+
* @type {PointerEvent}
|
|
37848
38043
|
*/ /**
|
|
37849
38044
|
* Prevent the default action of toggle the visibility of the series or point.
|
|
37850
38045
|
* @name Highcharts.LegendItemClickEventObject#preventDefault
|
|
@@ -37895,7 +38090,7 @@ class Legend {
|
|
|
37895
38090
|
*/ /**
|
|
37896
38091
|
* Related browser event.
|
|
37897
38092
|
* @name Highcharts.PointLegendItemClickEventObject#browserEvent
|
|
37898
|
-
* @type {
|
|
38093
|
+
* @type {PointerEvent}
|
|
37899
38094
|
*/ /**
|
|
37900
38095
|
* Whether the default action has been prevented (`true`) or not.
|
|
37901
38096
|
* @name Highcharts.PointLegendItemClickEventObject#defaultPrevented
|
|
@@ -37951,7 +38146,7 @@ class Legend {
|
|
|
37951
38146
|
*/ /**
|
|
37952
38147
|
* Related browser event.
|
|
37953
38148
|
* @name Highcharts.SeriesLegendItemClickEventObject#browserEvent
|
|
37954
|
-
* @type {
|
|
38149
|
+
* @type {PointerEvent}
|
|
37955
38150
|
*/ /**
|
|
37956
38151
|
* Whether the default action has been prevented (`true`) or not.
|
|
37957
38152
|
* @name Highcharts.SeriesLegendItemClickEventObject#defaultPrevented
|
|
@@ -37985,7 +38180,6 @@ class Legend {
|
|
|
37985
38180
|
* */
|
|
37986
38181
|
|
|
37987
38182
|
|
|
37988
|
-
const { animate: Chart_animate, animObject: Chart_animObject, setAnimation: Chart_setAnimation } = AnimationUtilities;
|
|
37989
38183
|
|
|
37990
38184
|
|
|
37991
38185
|
const { defaultOptions: Chart_defaultOptions } = Defaults;
|
|
@@ -38076,7 +38270,7 @@ class Chart {
|
|
|
38076
38270
|
*/
|
|
38077
38271
|
static chart(a, b, c) {
|
|
38078
38272
|
const chart = new Chart(a, b, c);
|
|
38079
|
-
return chart.promise
|
|
38273
|
+
return chart.promise ?? chart;
|
|
38080
38274
|
}
|
|
38081
38275
|
// Implementation
|
|
38082
38276
|
constructor(a,
|
|
@@ -38117,10 +38311,10 @@ class Chart {
|
|
|
38117
38311
|
const chart = this, options = chart.options.chart, zooming = options.zooming;
|
|
38118
38312
|
chart.zooming = {
|
|
38119
38313
|
...zooming,
|
|
38120
|
-
type:
|
|
38121
|
-
key:
|
|
38122
|
-
pinchType:
|
|
38123
|
-
singleTouch:
|
|
38314
|
+
type: (options.zoomType ?? zooming.type),
|
|
38315
|
+
key: (options.zoomKey ?? zooming.key),
|
|
38316
|
+
pinchType: (options.pinchType ?? zooming.pinchType),
|
|
38317
|
+
singleTouch: options.zoomBySingleTouch ?? zooming.singleTouch ?? false,
|
|
38124
38318
|
resetButton: merge(zooming.resetButton, options.resetZoomButton)
|
|
38125
38319
|
};
|
|
38126
38320
|
}
|
|
@@ -38463,7 +38657,7 @@ class Chart {
|
|
|
38463
38657
|
redraw(animation) {
|
|
38464
38658
|
fireEvent(this, 'beforeRedraw');
|
|
38465
38659
|
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 = [];
|
|
38466
|
-
let hasDirtyStacks, hasStackedSeries, i,
|
|
38660
|
+
let hasDirtyStacks, hasStackedSeries, i, redrawLegend = chart.isDirtyLegend, serie;
|
|
38467
38661
|
renderer.rootFontSize = renderer.boxWrapper.getStyle('font-size');
|
|
38468
38662
|
// Handle responsive rules, not only on resize (#6130)
|
|
38469
38663
|
if (chart.setResponsive) {
|
|
@@ -38472,7 +38666,7 @@ class Chart {
|
|
|
38472
38666
|
// Set the global animation. When chart.hasRendered is not true, the
|
|
38473
38667
|
// redraw call comes from a responsive rule and animation should not
|
|
38474
38668
|
// occur.
|
|
38475
|
-
|
|
38669
|
+
setAnimation(chart.hasRendered ? animation : false, chart);
|
|
38476
38670
|
if (isHiddenChart) {
|
|
38477
38671
|
chart.temporaryDisplay();
|
|
38478
38672
|
}
|
|
@@ -38535,6 +38729,7 @@ class Chart {
|
|
|
38535
38729
|
});
|
|
38536
38730
|
chart.getMargins(); // #3098
|
|
38537
38731
|
// If one axis is dirty, all axes must be redrawn (#792, #2169)
|
|
38732
|
+
let isDirtyBox = chart.isDirtyBox;
|
|
38538
38733
|
axes.forEach(function (axis) {
|
|
38539
38734
|
if (axis.isDirty) {
|
|
38540
38735
|
isDirtyBox = true;
|
|
@@ -38671,7 +38866,7 @@ class Chart {
|
|
|
38671
38866
|
// inspect the generated series.points.
|
|
38672
38867
|
series.getPointsCollection()
|
|
38673
38868
|
.forEach((point) => {
|
|
38674
|
-
if (
|
|
38869
|
+
if (point.selectedStaging ?? point.selected) {
|
|
38675
38870
|
acc.push(point);
|
|
38676
38871
|
}
|
|
38677
38872
|
});
|
|
@@ -39070,11 +39265,8 @@ class Chart {
|
|
|
39070
39265
|
const chartHeight = chart.chartHeight;
|
|
39071
39266
|
let chartWidth = chart.chartWidth;
|
|
39072
39267
|
// Allow table cells and flex-boxes to shrink without the chart
|
|
39073
|
-
// blocking them out (#6427)
|
|
39074
|
-
|
|
39075
|
-
if (!chart.styledMode) {
|
|
39076
|
-
css(renderTo, { overflow: 'hidden' });
|
|
39077
|
-
}
|
|
39268
|
+
// blocking them out (#6427)
|
|
39269
|
+
css(renderTo, { overflow: 'hidden' });
|
|
39078
39270
|
// Create the inner container
|
|
39079
39271
|
if (!chart.styledMode) {
|
|
39080
39272
|
containerStyle = extend({
|
|
@@ -39112,7 +39304,7 @@ class Chart {
|
|
|
39112
39304
|
chartWidth = chart.chartWidth;
|
|
39113
39305
|
if (!chart.styledMode) {
|
|
39114
39306
|
css(container, {
|
|
39115
|
-
width:
|
|
39307
|
+
width: (optionsChart.style?.width ?? chartWidth + 'px')
|
|
39116
39308
|
});
|
|
39117
39309
|
}
|
|
39118
39310
|
}
|
|
@@ -39131,7 +39323,7 @@ class Chart {
|
|
|
39131
39323
|
// first ResizeObserver reflow
|
|
39132
39324
|
chart.containerBox = chart.getContainerBox();
|
|
39133
39325
|
// Set the initial animation from the options
|
|
39134
|
-
|
|
39326
|
+
setAnimation(void 0, chart);
|
|
39135
39327
|
chart.setClassName(optionsChart.className);
|
|
39136
39328
|
if (!chart.styledMode) {
|
|
39137
39329
|
chart.renderer.setStyle(optionsChart.style);
|
|
@@ -39326,7 +39518,7 @@ class Chart {
|
|
|
39326
39518
|
// Handle the isResizing counter
|
|
39327
39519
|
chart.isResizing += 1;
|
|
39328
39520
|
// Set the animation for the current process
|
|
39329
|
-
|
|
39521
|
+
setAnimation(animation, chart);
|
|
39330
39522
|
const globalAnimation = renderer.globalAnimation;
|
|
39331
39523
|
chart.oldChartHeight = chart.chartHeight;
|
|
39332
39524
|
chart.oldChartWidth = chart.chartWidth;
|
|
@@ -39345,7 +39537,7 @@ class Chart {
|
|
|
39345
39537
|
// Resize the container with the global animation applied if enabled
|
|
39346
39538
|
// (#2503)
|
|
39347
39539
|
if (!chart.styledMode) {
|
|
39348
|
-
(globalAnimation ?
|
|
39540
|
+
(globalAnimation ? animate : css)(chart.container, {
|
|
39349
39541
|
width: `${chartWidth + scrollablePixelsX}px`,
|
|
39350
39542
|
height: `${chartHeight + scrollablePixelsY}px`
|
|
39351
39543
|
}, globalAnimation);
|
|
@@ -39371,7 +39563,7 @@ class Chart {
|
|
|
39371
39563
|
if (chart) {
|
|
39372
39564
|
fireEvent(chart, 'endResize');
|
|
39373
39565
|
}
|
|
39374
|
-
},
|
|
39566
|
+
}, animObject(globalAnimation).duration);
|
|
39375
39567
|
}
|
|
39376
39568
|
// Handle resizing counter even if we've re-rendered or not (#20548).
|
|
39377
39569
|
chart.isResizing -= 1;
|
|
@@ -39755,7 +39947,7 @@ class Chart {
|
|
|
39755
39947
|
const mockTick = new Axis_Tick(axis, 0, '', true), label = mockTick.createLabel('x', labels);
|
|
39756
39948
|
mockTick.destroy();
|
|
39757
39949
|
if (label &&
|
|
39758
|
-
|
|
39950
|
+
(labels.reserveSpace ?? !isNumber(options.crossing))) {
|
|
39759
39951
|
expectedSpace = label.getBBox().height +
|
|
39760
39952
|
labels.distance +
|
|
39761
39953
|
Math.max(isNumber(offset) ? offset : 0, 0);
|
|
@@ -40090,7 +40282,7 @@ class Chart {
|
|
|
40090
40282
|
const chart = this;
|
|
40091
40283
|
let series;
|
|
40092
40284
|
if (options) { // <- not necessary
|
|
40093
|
-
redraw =
|
|
40285
|
+
redraw = (redraw ?? true); // Defaults to true
|
|
40094
40286
|
fireEvent(chart, 'addSeries', { options: options }, function () {
|
|
40095
40287
|
series = chart.initSeries(options);
|
|
40096
40288
|
chart.isDirtyLegend = true;
|
|
@@ -40181,7 +40373,7 @@ class Chart {
|
|
|
40181
40373
|
*/
|
|
40182
40374
|
createAxis(coll, options) {
|
|
40183
40375
|
const axis = new Axis_Axis(this, options.axis, coll);
|
|
40184
|
-
if (
|
|
40376
|
+
if (options.redraw ?? true) {
|
|
40185
40377
|
this.redraw(options.animation);
|
|
40186
40378
|
}
|
|
40187
40379
|
return axis;
|
|
@@ -40229,7 +40421,7 @@ class Chart {
|
|
|
40229
40421
|
}
|
|
40230
40422
|
loadingDiv.className = 'highcharts-loading';
|
|
40231
40423
|
// Update text
|
|
40232
|
-
HTML_AST.setElementHTML(loadingSpan,
|
|
40424
|
+
HTML_AST.setElementHTML(loadingSpan, (str ?? options.lang.loading ?? ''));
|
|
40233
40425
|
if (!chart.styledMode) {
|
|
40234
40426
|
// Update visuals
|
|
40235
40427
|
css(loadingDiv, extend(loadingStyle, { zIndex: 10 }));
|
|
@@ -40240,7 +40432,7 @@ class Chart {
|
|
|
40240
40432
|
opacity: 0,
|
|
40241
40433
|
display: ''
|
|
40242
40434
|
});
|
|
40243
|
-
|
|
40435
|
+
animate(loadingDiv, {
|
|
40244
40436
|
opacity: loadingStyle.opacity ?? 0.5
|
|
40245
40437
|
}, {
|
|
40246
40438
|
duration: loadingOptions?.showDuration ?? 0
|
|
@@ -40268,7 +40460,7 @@ class Chart {
|
|
|
40268
40460
|
loadingDiv.className =
|
|
40269
40461
|
'highcharts-loading highcharts-loading-hidden';
|
|
40270
40462
|
if (!this.styledMode) {
|
|
40271
|
-
|
|
40463
|
+
animate(loadingDiv, {
|
|
40272
40464
|
opacity: 0
|
|
40273
40465
|
}, {
|
|
40274
40466
|
duration: options.loading?.hideDuration ?? 100,
|
|
@@ -40300,6 +40492,9 @@ class Chart {
|
|
|
40300
40492
|
* Note that when changing series data, `chart.update` may mutate the passed
|
|
40301
40493
|
* data options.
|
|
40302
40494
|
*
|
|
40495
|
+
* If the given options don't differ from the current chart options, the
|
|
40496
|
+
* update is skipped and the `afterUpdate` event is not emitted.
|
|
40497
|
+
*
|
|
40303
40498
|
* See also the
|
|
40304
40499
|
* [responsive option set](https://api.highcharts.com/highcharts/responsive).
|
|
40305
40500
|
* Switching between `responsive.rules` basically runs `chart.update` under
|
|
@@ -40344,14 +40539,24 @@ class Chart {
|
|
|
40344
40539
|
caption: 'setCaption'
|
|
40345
40540
|
}, isResponsiveOptions = options.isResponsiveOptions, itemsForRemoval = [];
|
|
40346
40541
|
let updateAllAxes, updateAllSeries, runSetSize;
|
|
40347
|
-
|
|
40542
|
+
options = diffObjects(options, chart.options);
|
|
40543
|
+
const e = {
|
|
40544
|
+
options,
|
|
40545
|
+
// Event handlers can turn this on or off to control further
|
|
40546
|
+
// processing
|
|
40547
|
+
hasChanged: !!Object.keys(options).length
|
|
40548
|
+
};
|
|
40549
|
+
fireEvent(chart, 'update', e);
|
|
40550
|
+
// If no changes are detected, stop further processing (#24805).
|
|
40551
|
+
if (!e.hasChanged) {
|
|
40552
|
+
return;
|
|
40553
|
+
}
|
|
40348
40554
|
// If there are responsive rules in action, undo the responsive rules
|
|
40349
40555
|
// before we apply the updated options and replay the responsive rules
|
|
40350
40556
|
// on top from the chart.redraw function (#9617).
|
|
40351
40557
|
if (!isResponsiveOptions) {
|
|
40352
40558
|
chart.setResponsive(false, true);
|
|
40353
40559
|
}
|
|
40354
|
-
options = diffObjects(options, chart.options);
|
|
40355
40560
|
chart.userOptions = merge(chart.userOptions, options);
|
|
40356
40561
|
// If the top-level chart option is present, some special updates are
|
|
40357
40562
|
// required
|
|
@@ -40454,7 +40659,7 @@ class Chart {
|
|
|
40454
40659
|
}
|
|
40455
40660
|
// No match by id found, match by index instead
|
|
40456
40661
|
if (!item && chart[coll]) {
|
|
40457
|
-
item = chart[coll][
|
|
40662
|
+
item = chart[coll][(newOptions.index ?? i)];
|
|
40458
40663
|
// Check if we grabbed an item with an existing but
|
|
40459
40664
|
// different id (#13541). Check that the item in this
|
|
40460
40665
|
// position is not internal (navigator).
|
|
@@ -40530,7 +40735,7 @@ class Chart {
|
|
|
40530
40735
|
(isNumber(newHeight) && newHeight !== chart.chartHeight)) {
|
|
40531
40736
|
chart.setSize(newWidth, newHeight, animation);
|
|
40532
40737
|
}
|
|
40533
|
-
else if (
|
|
40738
|
+
else if (redraw ?? true) {
|
|
40534
40739
|
chart.redraw(animation);
|
|
40535
40740
|
}
|
|
40536
40741
|
fireEvent(chart, 'afterUpdate', {
|
|
@@ -40579,15 +40784,11 @@ class Chart {
|
|
|
40579
40784
|
showResetZoom() {
|
|
40580
40785
|
const chart = this, lang = chart.options.lang, btnOptions = chart.zooming.resetButton, theme = btnOptions.theme, alignTo = (btnOptions.relativeTo === 'chart' ||
|
|
40581
40786
|
btnOptions.relativeTo === 'spacingBox' ?
|
|
40582
|
-
|
|
40787
|
+
void 0 :
|
|
40583
40788
|
'plotBox');
|
|
40584
|
-
|
|
40585
|
-
function zoomOut() {
|
|
40586
|
-
chart.zoomOut();
|
|
40587
|
-
}
|
|
40588
|
-
fireEvent(this, 'beforeShowResetZoom', null, function () {
|
|
40789
|
+
fireEvent(this, 'beforeShowResetZoom', void 0, () => {
|
|
40589
40790
|
chart.resetZoomButton = chart.renderer
|
|
40590
|
-
.button(lang.resetZoom,
|
|
40791
|
+
.button(lang.resetZoom, 0, 0, () => chart.zoomOut(), theme)
|
|
40591
40792
|
.attr({
|
|
40592
40793
|
align: btnOptions.position.align,
|
|
40593
40794
|
title: lang.resetZoomTitle
|
|
@@ -40665,21 +40866,21 @@ class Chart {
|
|
|
40665
40866
|
* @function Highcharts.Chart#transform
|
|
40666
40867
|
*/
|
|
40667
40868
|
transform(params) {
|
|
40668
|
-
const { axes = this.axes, event, from = {}, reset, selection, to = {}, trigger, allowResetButton = true } = params, {
|
|
40869
|
+
const { axes = this.axes, event, from = {}, reset, selection, to = {}, trigger, allowResetButton = true } = params, { time } = this;
|
|
40669
40870
|
// Remove active points for shared tooltip
|
|
40670
40871
|
this.hoverPoints?.forEach((point) => point.setState());
|
|
40671
40872
|
fireEvent(this, 'transform', params);
|
|
40672
40873
|
let hasZoomed = params.hasZoomed || false, displayButton, isAnyAxisPanning;
|
|
40673
40874
|
for (const axis of axes) {
|
|
40674
|
-
const { horiz, len, minPointOffset = 0, options, reversed } = axis, wh = horiz ? 'width' : 'height', xy = horiz ? 'x' : 'y', toLength =
|
|
40875
|
+
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),
|
|
40675
40876
|
// If fingers pinched very close on this axis, treat as pan
|
|
40676
40877
|
scale = Math.abs(toLength) < 10 ?
|
|
40677
40878
|
1 :
|
|
40678
40879
|
toLength / fromLength, fromCenter = (from[xy] || 0) + fromLength / 2 - axis.pos, toCenter = (to[xy] ?? axis.pos) +
|
|
40679
|
-
toLength / 2 - axis.pos, move = fromCenter - toCenter / scale, pointRangeDirection = (
|
|
40680
|
-
(!
|
|
40681
|
-
|
|
40682
|
-
1, minPx = move;
|
|
40880
|
+
toLength / 2 - axis.pos, move = fromCenter - toCenter / scale, pointRangeDirection = ((horiz && !reversed) ||
|
|
40881
|
+
(!horiz && reversed)) ?
|
|
40882
|
+
1 :
|
|
40883
|
+
-1, minPx = move;
|
|
40683
40884
|
// Zooming in multiple panes, zoom only in the pane that receives
|
|
40684
40885
|
// the input
|
|
40685
40886
|
if (!reset && (fromCenter < 0 || fromCenter > axis.len)) {
|
|
@@ -40688,17 +40889,11 @@ class Chart {
|
|
|
40688
40889
|
// Adjust offset to ensure selection zoom triggers correctly
|
|
40689
40890
|
// (#22945)
|
|
40690
40891
|
// Set offset to 0 for ordinal axis only when zooming out, (#24545).
|
|
40691
|
-
const offset = (axis.chart.polar ||
|
|
40892
|
+
const offset = (selection || axis.chart.polar ||
|
|
40893
|
+
(axis.isOrdinal && scale <= 1)) ?
|
|
40692
40894
|
0 :
|
|
40693
40895
|
(minPointOffset * pointRangeDirection || 0), eventMin = axis.toValue(minPx, true), eventMax = axis.toValue(minPx + len / scale, true);
|
|
40694
40896
|
let newMin = eventMin + offset, newMax = eventMax - offset, allExtremes = axis.allExtremes;
|
|
40695
|
-
if (selection) {
|
|
40696
|
-
selection[axis.coll].push({
|
|
40697
|
-
axis,
|
|
40698
|
-
min: Math.min(eventMin, eventMax),
|
|
40699
|
-
max: Math.max(eventMin, eventMax)
|
|
40700
|
-
});
|
|
40701
|
-
}
|
|
40702
40897
|
if (newMin > newMax) {
|
|
40703
40898
|
[newMin, newMax] = [newMax, newMin];
|
|
40704
40899
|
}
|
|
@@ -40755,14 +40950,15 @@ class Chart {
|
|
|
40755
40950
|
}
|
|
40756
40951
|
// Set new extremes if they are actually new
|
|
40757
40952
|
if (reset || (axis.series.length &&
|
|
40758
|
-
(
|
|
40759
|
-
|
|
40760
|
-
|
|
40953
|
+
(selection ||
|
|
40954
|
+
((newMin !== min || newMax !== max) &&
|
|
40955
|
+
newMin >= floor &&
|
|
40956
|
+
newMax <= ceiling)))) {
|
|
40761
40957
|
if (selection) {
|
|
40762
40958
|
selection[axis.coll].push({
|
|
40763
40959
|
axis,
|
|
40764
|
-
min:
|
|
40765
|
-
max:
|
|
40960
|
+
min: Math.min(eventMin, eventMax),
|
|
40961
|
+
max: Math.max(eventMin, eventMax)
|
|
40766
40962
|
});
|
|
40767
40963
|
}
|
|
40768
40964
|
else {
|
|
@@ -40770,11 +40966,14 @@ class Chart {
|
|
|
40770
40966
|
// disallow certain axis padding options that would make
|
|
40771
40967
|
// panning/zooming hard. Reset and redraw after the
|
|
40772
40968
|
// operation has finished.
|
|
40773
|
-
axis.isPanning = trigger !== 'zoom'
|
|
40969
|
+
axis.isPanning = trigger !== 'zoom' &&
|
|
40970
|
+
trigger !== 'drop';
|
|
40774
40971
|
if (axis.isPanning && trigger !== 'mousewheel') {
|
|
40775
40972
|
isAnyAxisPanning = true; // #21319
|
|
40776
40973
|
}
|
|
40777
|
-
|
|
40974
|
+
if (trigger !== 'drop') {
|
|
40975
|
+
axis.setExtremes(reset ? void 0 : newMin, reset ? void 0 : newMax, false, false, { move, trigger, scale });
|
|
40976
|
+
}
|
|
40778
40977
|
if (!reset &&
|
|
40779
40978
|
(newMin > floor || newMax < ceiling)) {
|
|
40780
40979
|
displayButton = allowResetButton;
|
|
@@ -40805,7 +41004,8 @@ class Chart {
|
|
|
40805
41004
|
});
|
|
40806
41005
|
}
|
|
40807
41006
|
else {
|
|
40808
|
-
// Show or hide the Reset zoom button, but not while
|
|
41007
|
+
// Show or hide the Reset zoom button, but not while
|
|
41008
|
+
// panning.
|
|
40809
41009
|
if (displayButton &&
|
|
40810
41010
|
!isAnyAxisPanning &&
|
|
40811
41011
|
!this.resetZoomButton) {
|
|
@@ -41047,7 +41247,6 @@ extend(Chart.prototype, {
|
|
|
41047
41247
|
*/
|
|
41048
41248
|
|
|
41049
41249
|
|
|
41050
|
-
const { stop: ScrollablePlotArea_stop } = AnimationUtilities;
|
|
41051
41250
|
|
|
41052
41251
|
const { composed: ScrollablePlotArea_composed } = Core_Globals;
|
|
41053
41252
|
|
|
@@ -41213,7 +41412,7 @@ class ScrollablePlotArea {
|
|
|
41213
41412
|
this.moveFixedElements();
|
|
41214
41413
|
}
|
|
41215
41414
|
// Increase the size of the scrollable renderer and background
|
|
41216
|
-
|
|
41415
|
+
stop(chart.container);
|
|
41217
41416
|
css(container, {
|
|
41218
41417
|
width: `${scrollableWidth}px`,
|
|
41219
41418
|
height: `${scrollableHeight}px`
|
|
@@ -41370,6 +41569,13 @@ ScrollablePlotArea.fixedSelectors = [
|
|
|
41370
41569
|
* vertical scrolling, depending on whether the `minWidth` or `minHeight`
|
|
41371
41570
|
* option is set.
|
|
41372
41571
|
*
|
|
41572
|
+
* **Note:** Because native browser scrollbars are used, they may
|
|
41573
|
+
* overlap with fixed chart elements such as credits or the chart
|
|
41574
|
+
* border. To avoid this collision, it is recommended to manually add
|
|
41575
|
+
* extra space to the corresponding side using `chart.spacingBottom`
|
|
41576
|
+
* (for horizontal scrollbars) or `chart.spacingRight` (for vertical
|
|
41577
|
+
* scrollbars).
|
|
41578
|
+
*
|
|
41373
41579
|
* @sample highcharts/chart/scrollable-plotarea
|
|
41374
41580
|
* Scrollable plot area
|
|
41375
41581
|
* @sample highcharts/chart/scrollable-plotarea-vertical
|
|
@@ -41530,7 +41736,7 @@ class StackItem {
|
|
|
41530
41736
|
r: options.borderRadius || 0,
|
|
41531
41737
|
text: str,
|
|
41532
41738
|
// Set default padding to 5 as it is in dataLabels #12308
|
|
41533
|
-
padding:
|
|
41739
|
+
padding: (options.padding ?? 5),
|
|
41534
41740
|
visibility: 'hidden' // Hidden until setOffset is called
|
|
41535
41741
|
};
|
|
41536
41742
|
if (!chart.styledMode) {
|
|
@@ -41564,7 +41770,7 @@ class StackItem {
|
|
|
41564
41770
|
}), { verticalAlign } = alignOptions;
|
|
41565
41771
|
if (label && stackBox) {
|
|
41566
41772
|
const labelBox = label.getBBox(void 0, 0), padding = label.padding;
|
|
41567
|
-
let isJustify =
|
|
41773
|
+
let isJustify = (options.overflow ?? 'justify') === 'justify', visible;
|
|
41568
41774
|
// Reset alignOptions property after justify #12337
|
|
41569
41775
|
alignOptions.x = options.x || 0;
|
|
41570
41776
|
alignOptions.y = options.y || 0;
|
|
@@ -41601,7 +41807,7 @@ class StackItem {
|
|
|
41601
41807
|
rotationOriginY: labelBox.height / 2
|
|
41602
41808
|
});
|
|
41603
41809
|
// Check if the dataLabel should be visible.
|
|
41604
|
-
if (
|
|
41810
|
+
if (((!isJustify && options.crop) ?? true)) {
|
|
41605
41811
|
visible =
|
|
41606
41812
|
isNumber(label.x) &&
|
|
41607
41813
|
isNumber(label.y) &&
|
|
@@ -41635,7 +41841,7 @@ class StackItem {
|
|
|
41635
41841
|
getStackBox(stackBoxProps) {
|
|
41636
41842
|
const stackItem = this, axis = this.axis, chart = axis.chart, { boxTop, defaultX, xOffset, width, boxBottom } = stackBoxProps, totalStackValue = axis.stacking.usePercentage ?
|
|
41637
41843
|
100 :
|
|
41638
|
-
|
|
41844
|
+
(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 ||
|
|
41639
41845
|
(isNumber(axis.min) &&
|
|
41640
41846
|
axis.logarithmic &&
|
|
41641
41847
|
axis.logarithmic.lin2log(axis.min)) ||
|
|
@@ -41720,7 +41926,6 @@ class StackItem {
|
|
|
41720
41926
|
* */
|
|
41721
41927
|
|
|
41722
41928
|
|
|
41723
|
-
const { getDeferredAnimation: StackingAxis_getDeferredAnimation } = AnimationUtilities;
|
|
41724
41929
|
|
|
41725
41930
|
const { series: { prototype: seriesProto } } = Series_SeriesRegistry;
|
|
41726
41931
|
|
|
@@ -41749,7 +41954,7 @@ function chartGetStacks() {
|
|
|
41749
41954
|
if (series.options.stacking && series.reserveSpace()) {
|
|
41750
41955
|
series.stackKey = [
|
|
41751
41956
|
series.type,
|
|
41752
|
-
|
|
41957
|
+
(series.options.stack ?? ''),
|
|
41753
41958
|
inverted ? xAxisOptions.top : xAxisOptions.left,
|
|
41754
41959
|
inverted ? xAxisOptions.height : xAxisOptions.width
|
|
41755
41960
|
].join(',');
|
|
@@ -41912,7 +42117,7 @@ function seriesSetStackedPoints(axis, stackingParam) {
|
|
|
41912
42117
|
stack = stacks[key][x];
|
|
41913
42118
|
if (y !== null) {
|
|
41914
42119
|
stack.points[pointKey] = stack.points[series.index] = [
|
|
41915
|
-
|
|
42120
|
+
(stack.cumulative ?? stackThreshold)
|
|
41916
42121
|
];
|
|
41917
42122
|
// Record the base of the stack
|
|
41918
42123
|
if (!defined(stack.cumulative)) {
|
|
@@ -41960,7 +42165,7 @@ function seriesSetStackedPoints(axis, stackingParam) {
|
|
|
41960
42165
|
stack.cumulative = (total || 1) - 1;
|
|
41961
42166
|
}
|
|
41962
42167
|
else {
|
|
41963
|
-
stack.cumulative = correctFloat(
|
|
42168
|
+
stack.cumulative = correctFloat((stack.cumulative ?? stackThreshold) + yNumber);
|
|
41964
42169
|
}
|
|
41965
42170
|
stack.total = total;
|
|
41966
42171
|
if (y !== null) {
|
|
@@ -42064,7 +42269,7 @@ class AxisAdditions {
|
|
|
42064
42269
|
}
|
|
42065
42270
|
/** @internal */
|
|
42066
42271
|
renderStackTotals() {
|
|
42067
|
-
const stacking = this, axis = stacking.axis, chart = axis.chart, renderer = chart.renderer, stacks = stacking.stacks, stackLabelsAnim = axis.options.stackLabels?.animation, animationConfig =
|
|
42272
|
+
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 ||
|
|
42068
42273
|
renderer
|
|
42069
42274
|
.g('stack-labels')
|
|
42070
42275
|
.attr({
|
|
@@ -42975,8 +43180,7 @@ class AreaSeries extends AreaSeries_LineSeries {
|
|
|
42975
43180
|
*/
|
|
42976
43181
|
getGraphPath(points) {
|
|
42977
43182
|
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
|
|
42978
|
-
yAxis.getThreshold(options.threshold)), connectNulls =
|
|
42979
|
-
options.connectNulls, stacking === 'percent'),
|
|
43183
|
+
yAxis.getThreshold(options.threshold)), connectNulls = (options.connectNulls ?? stacking === 'percent'),
|
|
42980
43184
|
// To display null points in underlying stacked series, this
|
|
42981
43185
|
// series graph must be broken, and the area also fall down to
|
|
42982
43186
|
// fill the gap left by the null point. #2069
|
|
@@ -43029,9 +43233,9 @@ class AreaSeries extends AreaSeries_LineSeries {
|
|
|
43029
43233
|
// Treat points with undefined plotY as null (e.g. non-positive
|
|
43030
43234
|
// values on logarithmic axis, #18422)
|
|
43031
43235
|
isNull = points[i].isNull || !defined(points[i].plotY);
|
|
43032
|
-
plotX =
|
|
43236
|
+
plotX = (points[i].rectPlotX ?? points[i].plotX);
|
|
43033
43237
|
yBottom = stacking ?
|
|
43034
|
-
|
|
43238
|
+
(points[i].yBottom ?? translatedThreshold) :
|
|
43035
43239
|
translatedThreshold;
|
|
43036
43240
|
if (!isNull || connectNulls) {
|
|
43037
43241
|
if (!connectNulls) {
|
|
@@ -43369,10 +43573,10 @@ class SplineSeries extends SplineSeries_LineSeries {
|
|
|
43369
43573
|
}
|
|
43370
43574
|
const ret = [
|
|
43371
43575
|
'C',
|
|
43372
|
-
|
|
43373
|
-
|
|
43374
|
-
|
|
43375
|
-
|
|
43576
|
+
(lastPoint.rightContX ?? lastPoint.plotX ?? 0),
|
|
43577
|
+
(lastPoint.rightContY ?? lastPoint.plotY ?? 0),
|
|
43578
|
+
(leftContX ?? plotX ?? 0),
|
|
43579
|
+
(leftContY ?? plotY ?? 0),
|
|
43376
43580
|
plotX,
|
|
43377
43581
|
plotY
|
|
43378
43582
|
];
|
|
@@ -43817,6 +44021,8 @@ const ColumnSeriesDefaults = {
|
|
|
43817
44021
|
* 0.25
|
|
43818
44022
|
* @sample {highcharts} highcharts/plotoptions/column-pointpadding-none/
|
|
43819
44023
|
* 0 for tightly packed columns
|
|
44024
|
+
* @sample {highcharts} highcharts/plotoptions/pie-pointpadding/
|
|
44025
|
+
* Pie point padding plugin
|
|
43820
44026
|
*
|
|
43821
44027
|
* @product highcharts highstock gantt
|
|
43822
44028
|
*/
|
|
@@ -44148,12 +44354,12 @@ const ColumnSeriesDefaults = {
|
|
|
44148
44354
|
*/
|
|
44149
44355
|
/**
|
|
44150
44356
|
* @excluding halo, lineWidth, lineWidthPlus, marker
|
|
44151
|
-
* @product highcharts highstock
|
|
44357
|
+
* @product highcharts highstock gantt
|
|
44152
44358
|
* @apioption series.column.states.hover
|
|
44153
44359
|
*/
|
|
44154
44360
|
/**
|
|
44155
44361
|
* @excluding halo, lineWidth, lineWidthPlus, marker
|
|
44156
|
-
* @product highcharts highstock
|
|
44362
|
+
* @product highcharts highstock gantt
|
|
44157
44363
|
* @apioption series.column.states.select
|
|
44158
44364
|
*/
|
|
44159
44365
|
/**
|
|
@@ -44183,7 +44389,6 @@ const ColumnSeriesDefaults = {
|
|
|
44183
44389
|
* */
|
|
44184
44390
|
|
|
44185
44391
|
|
|
44186
|
-
const { animObject: ColumnSeries_animObject } = AnimationUtilities;
|
|
44187
44392
|
|
|
44188
44393
|
const { parse: ColumnSeries_color } = Color_Color;
|
|
44189
44394
|
|
|
@@ -44254,7 +44459,7 @@ class ColumnSeries extends Series_Series {
|
|
|
44254
44459
|
}
|
|
44255
44460
|
else { // Run the animation
|
|
44256
44461
|
translateStart = Number(series.group.attr(translateProp));
|
|
44257
|
-
series.group.animate({ scaleY: 1 }, extend(
|
|
44462
|
+
series.group.animate({ scaleY: 1 }, extend(animObject(series.options.animation), {
|
|
44258
44463
|
// Do the scale synchronously to ensure smooth
|
|
44259
44464
|
// updating (#5030, #7228)
|
|
44260
44465
|
step: function (val, fx) {
|
|
@@ -44340,7 +44545,7 @@ class ColumnSeries extends Series_Series {
|
|
|
44340
44545
|
xAxis.tickInterval ||
|
|
44341
44546
|
1), // #2610
|
|
44342
44547
|
xAxis.len // #1535
|
|
44343
|
-
), groupPadding = categoryWidth * options.groupPadding, groupWidth = categoryWidth - 2 * groupPadding, pointOffsetWidth = groupWidth / (columnCount || 1), pointWidth = Math.min(options.maxPointWidth || xAxis.len,
|
|
44548
|
+
), 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,
|
|
44344
44549
|
// #1251, #3737
|
|
44345
44550
|
colIndex = (series.columnIndex || 0) + (reverseStacks ? 1 : 0), pointXOffset = pointPadding +
|
|
44346
44551
|
(groupPadding +
|
|
@@ -44590,11 +44795,11 @@ class ColumnSeries extends Series_Series {
|
|
|
44590
44795
|
*/
|
|
44591
44796
|
pointAttribs(point, state) {
|
|
44592
44797
|
const options = this.options, p2o = this.pointAttrToOptions || {}, strokeOption = p2o.stroke || 'borderColor', strokeWidthOption = p2o['stroke-width'] || 'borderWidth';
|
|
44593
|
-
let stateOptions, zone, brightness, fill =
|
|
44798
|
+
let stateOptions, zone, brightness, fill = point?.color || this.color,
|
|
44594
44799
|
// Set to fill when borderColor null:
|
|
44595
|
-
stroke = (
|
|
44800
|
+
stroke = (point?.[strokeOption] ||
|
|
44596
44801
|
options[strokeOption] ||
|
|
44597
|
-
fill), dashstyle =
|
|
44802
|
+
fill), dashstyle = point?.options.dashStyle || options.dashStyle, strokeWidth = point?.[strokeWidthOption] ??
|
|
44598
44803
|
options[strokeWidthOption] ??
|
|
44599
44804
|
this[strokeWidthOption] ?? 1, opacity = (point?.isNull && options.nullInteraction) ?
|
|
44600
44805
|
0 :
|
|
@@ -44615,7 +44820,7 @@ class ColumnSeries extends Series_Series {
|
|
|
44615
44820
|
}
|
|
44616
44821
|
// Select or hover states
|
|
44617
44822
|
if (state && point) {
|
|
44618
|
-
stateOptions = merge(options.states[state],
|
|
44823
|
+
stateOptions = merge(options.states?.[state],
|
|
44619
44824
|
// #6401
|
|
44620
44825
|
point.options.states?.[state] || {});
|
|
44621
44826
|
brightness = stateOptions.brightness;
|
|
@@ -44625,14 +44830,13 @@ class ColumnSeries extends Series_Series {
|
|
|
44625
44830
|
.brighten(stateOptions.brightness)
|
|
44626
44831
|
.get()) || fill;
|
|
44627
44832
|
stroke = stateOptions[strokeOption] || stroke;
|
|
44628
|
-
strokeWidth =
|
|
44629
|
-
stateOptions[strokeWidthOption] || strokeWidth;
|
|
44833
|
+
strokeWidth = stateOptions[strokeWidthOption] || strokeWidth;
|
|
44630
44834
|
dashstyle = stateOptions.dashStyle || dashstyle;
|
|
44631
|
-
opacity =
|
|
44835
|
+
opacity = stateOptions.opacity ?? opacity;
|
|
44632
44836
|
}
|
|
44633
44837
|
const ret = {
|
|
44634
|
-
fill
|
|
44635
|
-
stroke
|
|
44838
|
+
fill,
|
|
44839
|
+
stroke,
|
|
44636
44840
|
'stroke-width': strokeWidth,
|
|
44637
44841
|
opacity: point?.condemned ? 0 : opacity
|
|
44638
44842
|
};
|
|
@@ -44673,6 +44877,7 @@ class ColumnSeries extends Series_Series {
|
|
|
44673
44877
|
initialAttr = merge(shapeArgs, point.getOrigin(point.origin, shapeArgs));
|
|
44674
44878
|
if (!styledMode) {
|
|
44675
44879
|
initialAttr.opacity = 0;
|
|
44880
|
+
initialAttr['stroke-width'] = 0;
|
|
44676
44881
|
}
|
|
44677
44882
|
shouldUpdate = true;
|
|
44678
44883
|
verb = 'animate';
|
|
@@ -44688,7 +44893,7 @@ class ColumnSeries extends Series_Series {
|
|
|
44688
44893
|
}
|
|
44689
44894
|
// Presentational
|
|
44690
44895
|
if (!styledMode) {
|
|
44691
|
-
graphic[verb](series.pointAttribs(point,
|
|
44896
|
+
graphic[verb](series.pointAttribs(point, point.selected ? 'select' : ''))
|
|
44692
44897
|
.shadow(point.allowShadow !== false && options.shadow);
|
|
44693
44898
|
}
|
|
44694
44899
|
graphic
|
|
@@ -44812,6 +45017,7 @@ Series_SeriesRegistry.registerSeriesType('column', ColumnSeries);
|
|
|
44812
45017
|
* Default Export
|
|
44813
45018
|
*
|
|
44814
45019
|
* */
|
|
45020
|
+
/** @internal */
|
|
44815
45021
|
/* harmony default export */ const Column_ColumnSeries = (ColumnSeries);
|
|
44816
45022
|
/* *
|
|
44817
45023
|
*
|
|
@@ -44848,7 +45054,6 @@ Series_SeriesRegistry.registerSeriesType('column', ColumnSeries);
|
|
|
44848
45054
|
* */
|
|
44849
45055
|
|
|
44850
45056
|
|
|
44851
|
-
const { getDeferredAnimation: DataLabel_getDeferredAnimation } = AnimationUtilities;
|
|
44852
45057
|
|
|
44853
45058
|
const { format: DataLabel_format } = Core_Templating;
|
|
44854
45059
|
|
|
@@ -44904,7 +45109,7 @@ var DataLabel;
|
|
|
44904
45109
|
// that parts of the align box is inside the plot area
|
|
44905
45110
|
// (#12370). When stacking, it is always inside regardless
|
|
44906
45111
|
// of the option (#15148).
|
|
44907
|
-
|
|
45112
|
+
(options.inside ?? !!this.options.stacking) &&
|
|
44908
45113
|
alignTo &&
|
|
44909
45114
|
chart.isInsidePlot(plotX, inverted ?
|
|
44910
45115
|
alignTo.x + 1 :
|
|
@@ -45007,8 +45212,8 @@ var DataLabel;
|
|
|
45007
45212
|
// zIndex: 20
|
|
45008
45213
|
// }).add();
|
|
45009
45214
|
// chart.renderer.circle(
|
|
45010
|
-
// chart.plotLeft +
|
|
45011
|
-
// chart.plotTop +
|
|
45215
|
+
// chart.plotLeft + (dataLabel.alignAttr.x ?? 0),
|
|
45216
|
+
// chart.plotTop + (dataLabel.alignAttr.y ?? 0),
|
|
45012
45217
|
// 2
|
|
45013
45218
|
// ).attr({
|
|
45014
45219
|
// fill: 'red',
|
|
@@ -45165,7 +45370,7 @@ var DataLabel;
|
|
|
45165
45370
|
'var(--highcharts-background-color)'), groupByIndex = [], seriesDlOptions = mergedDataLabelOptions(series);
|
|
45166
45371
|
// Resolve the animation
|
|
45167
45372
|
const { animation, defer } = seriesDlOptions[0], animationConfig = defer ?
|
|
45168
|
-
|
|
45373
|
+
getDeferredAnimation(chart, animation, series) :
|
|
45169
45374
|
{ defer: 0, duration: 0 };
|
|
45170
45375
|
fireEvent(this, 'drawDataLabels');
|
|
45171
45376
|
if (series.hasDataLabels?.()) {
|
|
@@ -45191,7 +45396,7 @@ var DataLabel;
|
|
|
45191
45396
|
if (labelEnabled) {
|
|
45192
45397
|
// Create individual options structure that can be
|
|
45193
45398
|
// extended without affecting others
|
|
45194
|
-
formatString =
|
|
45399
|
+
formatString = (labelOptions[point.formatPrefix + 'Format'] ?? labelOptions.format);
|
|
45195
45400
|
labelText = defined(formatString) ?
|
|
45196
45401
|
DataLabel_format(formatString, point, chart) :
|
|
45197
45402
|
(labelOptions[point.formatPrefix + 'Formatter'] ||
|
|
@@ -45199,7 +45404,9 @@ var DataLabel;
|
|
|
45199
45404
|
rotation = labelOptions.rotation;
|
|
45200
45405
|
if (!chart.styledMode) {
|
|
45201
45406
|
// Determine the color
|
|
45202
|
-
style.color =
|
|
45407
|
+
style.color = (isString(labelOptions.color) ?
|
|
45408
|
+
labelOptions.color :
|
|
45409
|
+
void 0) ?? style.color ?? (isString(series.color) ? series.color : void 0) ?? 'var(--highcharts-neutral-color-100)';
|
|
45203
45410
|
// Get automated contrast color
|
|
45204
45411
|
if (style.color === 'contrast') {
|
|
45205
45412
|
if (backgroundColor !== 'none') {
|
|
@@ -45931,6 +46138,8 @@ const ScatterSeriesDefaults = {
|
|
|
45931
46138
|
* Arrays of datetime x and y
|
|
45932
46139
|
* @sample {highcharts} highcharts/series/data-array-of-name-value/
|
|
45933
46140
|
* Arrays of point.name and y
|
|
46141
|
+
* @sample {highcharts} highcharts/series-scatter/scatter-cluster/
|
|
46142
|
+
* Computed clusters
|
|
45934
46143
|
* @sample {highcharts} highcharts/series/data-array-of-objects/
|
|
45935
46144
|
* Config objects
|
|
45936
46145
|
*
|
|
@@ -45998,14 +46207,15 @@ class ScatterSeries extends ScatterSeries_LineSeries {
|
|
|
45998
46207
|
return rand - Math.floor(rand);
|
|
45999
46208
|
}
|
|
46000
46209
|
if (jitter) {
|
|
46001
|
-
this.points.forEach(
|
|
46002
|
-
['x', 'y'].forEach(
|
|
46210
|
+
this.points.forEach((point, i) => {
|
|
46211
|
+
['x', 'y'].forEach((dim, j) => {
|
|
46003
46212
|
if (jitter[dim] && !point.isNull) {
|
|
46004
|
-
const plotProp = `plot${dim.toUpperCase()}`, axis = series[`${dim}Axis`]
|
|
46005
|
-
axis.transA;
|
|
46213
|
+
const plotProp = `plot${dim.toUpperCase()}`, axis = series[`${dim}Axis`];
|
|
46006
46214
|
if (axis && !axis.logarithmic) {
|
|
46007
46215
|
// Identify the outer bounds of the jitter range
|
|
46008
|
-
|
|
46216
|
+
// (#25054)
|
|
46217
|
+
const translatedJitter = jitter[dim] * axis.transA *
|
|
46218
|
+
(axis.reversed ? -1 : 1), min = (point[plotProp] || 0) - translatedJitter, max = (point[plotProp] || 0) + translatedJitter;
|
|
46009
46219
|
// Find a random position within this range
|
|
46010
46220
|
point[plotProp] = min +
|
|
46011
46221
|
(max - min) * unrandom(i + j * len);
|
|
@@ -46079,7 +46289,7 @@ Series_SeriesRegistry.registerSeriesType('scatter', ScatterSeries);
|
|
|
46079
46289
|
const { deg2rad: CenteredUtilities_deg2rad } = Core_Globals;
|
|
46080
46290
|
|
|
46081
46291
|
/**
|
|
46082
|
-
* @
|
|
46292
|
+
* @internal
|
|
46083
46293
|
*/
|
|
46084
46294
|
var CenteredUtilities;
|
|
46085
46295
|
(function (CenteredUtilities) {
|
|
@@ -46097,7 +46307,7 @@ var CenteredUtilities;
|
|
|
46097
46307
|
* Get the center of the pie based on the size and center options relative
|
|
46098
46308
|
* to the plot area. Borrowed by the polar and gauge series types.
|
|
46099
46309
|
*
|
|
46100
|
-
* @
|
|
46310
|
+
* @internal
|
|
46101
46311
|
* @function Highcharts.CenteredSeriesMixin.getCenter
|
|
46102
46312
|
*/
|
|
46103
46313
|
function getCenter() {
|
|
@@ -46110,11 +46320,13 @@ var CenteredUtilities;
|
|
|
46110
46320
|
innerSize = parseFloat(innerSize);
|
|
46111
46321
|
}
|
|
46112
46322
|
const positions = [
|
|
46113
|
-
|
|
46114
|
-
|
|
46323
|
+
(centerOption?.[0] ?? '50%'),
|
|
46324
|
+
(centerOption?.[1] ?? '50%'),
|
|
46115
46325
|
// Prevent from negative values
|
|
46116
|
-
|
|
46117
|
-
|
|
46326
|
+
((size && size < 0 ? void 0 : options.size) ?? '100%'),
|
|
46327
|
+
((innerSize && innerSize < 0 ?
|
|
46328
|
+
void 0 :
|
|
46329
|
+
options.innerSize || 0) ?? '0%')
|
|
46118
46330
|
];
|
|
46119
46331
|
for (i = 0; i < 4; ++i) {
|
|
46120
46332
|
value = positions[i];
|
|
@@ -46142,7 +46354,7 @@ var CenteredUtilities;
|
|
|
46142
46354
|
* GetStartAndEndRadians - Calculates start and end angles in radians.
|
|
46143
46355
|
* Used in series types such as pie and sunburst.
|
|
46144
46356
|
*
|
|
46145
|
-
* @
|
|
46357
|
+
* @internal
|
|
46146
46358
|
* @function Highcharts.CenteredSeriesMixin.getStartAndEndRadians
|
|
46147
46359
|
*
|
|
46148
46360
|
* @param {number} [start]
|
|
@@ -46174,6 +46386,7 @@ var CenteredUtilities;
|
|
|
46174
46386
|
* Default Export
|
|
46175
46387
|
*
|
|
46176
46388
|
* */
|
|
46389
|
+
/** @internal */
|
|
46177
46390
|
/* harmony default export */ const Series_CenteredUtilities = (CenteredUtilities);
|
|
46178
46391
|
/* *
|
|
46179
46392
|
*
|
|
@@ -46181,7 +46394,7 @@ var CenteredUtilities;
|
|
|
46181
46394
|
*
|
|
46182
46395
|
* */
|
|
46183
46396
|
/**
|
|
46184
|
-
* @
|
|
46397
|
+
* @internal
|
|
46185
46398
|
* @interface Highcharts.RadianAngles
|
|
46186
46399
|
*/ /**
|
|
46187
46400
|
* @name Highcharts.RadianAngles#end
|
|
@@ -46206,7 +46419,6 @@ var CenteredUtilities;
|
|
|
46206
46419
|
* */
|
|
46207
46420
|
|
|
46208
46421
|
|
|
46209
|
-
const { setAnimation: PiePoint_setAnimation } = AnimationUtilities;
|
|
46210
46422
|
|
|
46211
46423
|
|
|
46212
46424
|
/* *
|
|
@@ -46314,9 +46526,9 @@ class PiePoint extends Series_Point {
|
|
|
46314
46526
|
*/
|
|
46315
46527
|
slice(sliced, redraw, animation) {
|
|
46316
46528
|
const series = this.series, chart = series.chart;
|
|
46317
|
-
|
|
46529
|
+
setAnimation(animation, chart);
|
|
46318
46530
|
// Redraw is true by default
|
|
46319
|
-
redraw =
|
|
46531
|
+
redraw = (redraw ?? true);
|
|
46320
46532
|
this.sliced = this.options.sliced = sliced ?? !this.sliced;
|
|
46321
46533
|
// Update options.data
|
|
46322
46534
|
if (series.options.data) {
|
|
@@ -47121,7 +47333,8 @@ class PieSeries extends Series_Series {
|
|
|
47121
47333
|
// Start values
|
|
47122
47334
|
graphic.attr({
|
|
47123
47335
|
// Animate from inner radius (#779)
|
|
47124
|
-
r:
|
|
47336
|
+
r: point.startR ??
|
|
47337
|
+
(series.center && series.center[3] / 2),
|
|
47125
47338
|
start: startAngleRad,
|
|
47126
47339
|
end: startAngleRad
|
|
47127
47340
|
});
|
|
@@ -47762,7 +47975,7 @@ var PieDataLabel_ColumnDataLabel;
|
|
|
47762
47975
|
labelPosition.computed.x = x;
|
|
47763
47976
|
labelPosition.computed.y = y - topOffset;
|
|
47764
47977
|
// Detect overflowing data labels
|
|
47765
|
-
if (
|
|
47978
|
+
if (dataLabelOptions.crop ?? true) {
|
|
47766
47979
|
dataLabelWidth = dataLabel.getBBox().width;
|
|
47767
47980
|
let sideOverflow;
|
|
47768
47981
|
// Overflow left
|
|
@@ -48278,7 +48491,10 @@ function OverlappingDataLabels_onChartRender() {
|
|
|
48278
48491
|
if (point.visible) {
|
|
48279
48492
|
(point.dataLabels || []).forEach((label) => {
|
|
48280
48493
|
const options = label.options || {};
|
|
48281
|
-
label.labelrank =
|
|
48494
|
+
label.labelrank =
|
|
48495
|
+
options.labelrank ??
|
|
48496
|
+
point.labelrank ??
|
|
48497
|
+
point.shapeArgs?.height; // #4118
|
|
48282
48498
|
// #21725: Sync target positions for generic overlap
|
|
48283
48499
|
// checking. During animations (e.g., toggling a
|
|
48284
48500
|
// point), DOM positions may overlap. We force
|
|
@@ -48452,7 +48668,7 @@ function BorderRadius_arc(x, y, w, h, options = {}) {
|
|
|
48452
48668
|
if (options.open || !options.borderRadius) {
|
|
48453
48669
|
return path;
|
|
48454
48670
|
}
|
|
48455
|
-
const alpha = end - start, sinHalfAlpha = Math.sin(alpha / 2), borderRadius = Math.max(Math.min(relativeLength(options.borderRadius
|
|
48671
|
+
const alpha = end - start, sinHalfAlpha = Math.sin(alpha / 2), borderRadius = Math.max(Math.min(relativeLength(borderRadiusObject(options.borderRadius).radius, r - innerR),
|
|
48456
48672
|
// Cap to half the sector radius
|
|
48457
48673
|
(r - innerR) / 2,
|
|
48458
48674
|
// For smaller pie slices, cap to the largest small circle that
|
|
@@ -48478,7 +48694,7 @@ function seriesOnAfterColumnTranslate() {
|
|
|
48478
48694
|
if (this.options.borderRadius &&
|
|
48479
48695
|
!(this.chart.is3d && this.chart.is3d())) {
|
|
48480
48696
|
const { options, yAxis } = this, percent = options.stacking === 'percent', seriesDefault = BorderRadius_defaultOptions.plotOptions?.[this.type]
|
|
48481
|
-
?.borderRadius, borderRadius =
|
|
48697
|
+
?.borderRadius, borderRadius = borderRadiusObject(options.borderRadius, isObject(seriesDefault) ? seriesDefault : {}), reversed = yAxis.options.reversed;
|
|
48482
48698
|
for (const point of this.points) {
|
|
48483
48699
|
const { shapeArgs } = point;
|
|
48484
48700
|
if (point.shapeType === 'roundedRect' && shapeArgs) {
|
|
@@ -48550,8 +48766,12 @@ function composeBorderRadius(SeriesClass, SVGElementClass, SVGRendererClass) {
|
|
|
48550
48766
|
symbols.roundedRect = BorderRadius_roundedRect;
|
|
48551
48767
|
}
|
|
48552
48768
|
}
|
|
48553
|
-
/**
|
|
48554
|
-
function
|
|
48769
|
+
/**
|
|
48770
|
+
* Utility function to get the full border radius options object, from a simple
|
|
48771
|
+
* number or a partial options object.
|
|
48772
|
+
* @internal
|
|
48773
|
+
*/
|
|
48774
|
+
function borderRadiusObject(options, seriesBROptions) {
|
|
48555
48775
|
if (!isObject(options)) {
|
|
48556
48776
|
options = { radius: options || 0 };
|
|
48557
48777
|
}
|
|
@@ -48559,7 +48779,7 @@ function optionsToObject(options, seriesBROptions) {
|
|
|
48559
48779
|
}
|
|
48560
48780
|
/** @internal */
|
|
48561
48781
|
function pieSeriesOnAfterTranslate() {
|
|
48562
|
-
const borderRadius =
|
|
48782
|
+
const borderRadius = borderRadiusObject(this.options.borderRadius);
|
|
48563
48783
|
for (const point of this.points) {
|
|
48564
48784
|
const shapeArgs = point.shapeArgs;
|
|
48565
48785
|
if (shapeArgs) {
|
|
@@ -48678,7 +48898,7 @@ function BorderRadius_roundedRect(x, y, width, height, options = {}) {
|
|
|
48678
48898
|
* Column and pie with rounded border
|
|
48679
48899
|
*
|
|
48680
48900
|
* @name Highcharts.BorderRadiusOptionsObject#radius
|
|
48681
|
-
* @type {string|number}
|
|
48901
|
+
* @type {string|number|undefined}
|
|
48682
48902
|
*/ /**
|
|
48683
48903
|
* The scope of the rounding for column charts or plot bands. In a stacked
|
|
48684
48904
|
* column chart, the value `point` means each single point will get rounded
|
|
@@ -48693,8 +48913,7 @@ function BorderRadius_roundedRect(x, y, width, height, options = {}) {
|
|
|
48693
48913
|
* Rounded columns
|
|
48694
48914
|
*
|
|
48695
48915
|
* @name Highcharts.BorderRadiusOptionsObject#scope
|
|
48696
|
-
* @
|
|
48697
|
-
* @type {string}
|
|
48916
|
+
* @type {"individual"|"point"|"stack"|undefined}
|
|
48698
48917
|
*/ /**
|
|
48699
48918
|
* For column charts, where in the point or stack to apply rounding. The `end`
|
|
48700
48919
|
* value means only those corners at the point value will be rounded, leaving
|
|
@@ -48705,8 +48924,7 @@ function BorderRadius_roundedRect(x, y, width, height, options = {}) {
|
|
|
48705
48924
|
* Rounding on all corners
|
|
48706
48925
|
*
|
|
48707
48926
|
* @name Highcharts.BorderRadiusOptionsObject#where
|
|
48708
|
-
* @
|
|
48709
|
-
* @type {string}
|
|
48927
|
+
* @type {"all"|"end"|undefined}
|
|
48710
48928
|
* @default end
|
|
48711
48929
|
*/
|
|
48712
48930
|
(''); // Keeps doclets above in JS file
|
|
@@ -48765,10 +48983,12 @@ var Responsive;
|
|
|
48765
48983
|
*/
|
|
48766
48984
|
function matchResponsiveRule(rule, matches) {
|
|
48767
48985
|
const condition = rule.condition, fn = condition.callback || function () {
|
|
48768
|
-
return (this.chartWidth <=
|
|
48769
|
-
|
|
48770
|
-
this.
|
|
48771
|
-
|
|
48986
|
+
return (this.chartWidth <=
|
|
48987
|
+
(condition.maxWidth ?? Number.MAX_VALUE) &&
|
|
48988
|
+
this.chartHeight <=
|
|
48989
|
+
(condition.maxHeight ?? Number.MAX_VALUE) &&
|
|
48990
|
+
this.chartWidth >= (condition.minWidth ?? 0) &&
|
|
48991
|
+
this.chartHeight >= (condition.minHeight ?? 0));
|
|
48772
48992
|
};
|
|
48773
48993
|
if (fn.call(this, this)) {
|
|
48774
48994
|
matches.push(rule._id);
|
|
@@ -49050,12 +49270,17 @@ G.SVGElement = SVG_SVGElement;
|
|
|
49050
49270
|
G.SVGRenderer = SVG_SVGRenderer;
|
|
49051
49271
|
G.Templating = Core_Templating;
|
|
49052
49272
|
G.Tick = Axis_Tick;
|
|
49053
|
-
G.Time = Core_Time
|
|
49273
|
+
G.Time = class extends Core_Time {
|
|
49274
|
+
constructor(options, lang) {
|
|
49275
|
+
const defaultOptions = Defaults.getOptions();
|
|
49276
|
+
super(options ?? defaultOptions.time, lang ?? defaultOptions.lang);
|
|
49277
|
+
}
|
|
49278
|
+
};
|
|
49054
49279
|
G.Tooltip = Core_Tooltip;
|
|
49055
49280
|
// Utilities
|
|
49056
49281
|
G.addEvent = addEvent;
|
|
49057
|
-
G.animObject =
|
|
49058
|
-
G.animate =
|
|
49282
|
+
G.animObject = animObject;
|
|
49283
|
+
G.animate = animate;
|
|
49059
49284
|
G.arrayMax = arrayMax;
|
|
49060
49285
|
G.arrayMin = arrayMin;
|
|
49061
49286
|
G.attr = attr;
|
|
@@ -49082,7 +49307,7 @@ G.fireEvent = fireEvent;
|
|
|
49082
49307
|
G.format = Core_Templating.format;
|
|
49083
49308
|
G.getAlignFactor = getAlignFactor;
|
|
49084
49309
|
G.getClosestDistance = getClosestDistance;
|
|
49085
|
-
G.getDeferredAnimation =
|
|
49310
|
+
G.getDeferredAnimation = getDeferredAnimation;
|
|
49086
49311
|
G.getMagnitude = getMagnitude;
|
|
49087
49312
|
G.getNestedProperty = getNestedProperty;
|
|
49088
49313
|
G.getOptions = Defaults.getOptions;
|
|
@@ -49109,11 +49334,11 @@ G.relativeLength = relativeLength;
|
|
|
49109
49334
|
G.removeEvent = removeEvent;
|
|
49110
49335
|
G.replaceNested = replaceNested;
|
|
49111
49336
|
G.seriesType = Series_SeriesRegistry.seriesType;
|
|
49112
|
-
G.setAnimation =
|
|
49337
|
+
G.setAnimation = setAnimation;
|
|
49113
49338
|
G.setOptions = Defaults.setOptions;
|
|
49114
49339
|
G.splat = splat;
|
|
49115
49340
|
G.stableSort = stableSort;
|
|
49116
|
-
G.stop =
|
|
49341
|
+
G.stop = stop;
|
|
49117
49342
|
G.syncTimeout = syncTimeout;
|
|
49118
49343
|
G.time = Defaults.defaultTime;
|
|
49119
49344
|
G.ucfirst = ucfirst;
|