highcharts 13.0.0 → 13.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bower.json +1 -1
- package/css/highcharts.css +2 -1
- package/es-modules/Accessibility/A11yI18n.js +4 -4
- package/es-modules/Accessibility/Accessibility.js +38 -1
- package/es-modules/Accessibility/Components/InfoRegionsComponent.js +6 -4
- package/es-modules/Accessibility/Components/LegendComponent.js +3 -4
- package/es-modules/Accessibility/Components/NavigatorComponent.js +3 -4
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +13 -10
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +8 -4
- package/es-modules/Accessibility/Components/ZoomComponent.js +2 -2
- package/es-modules/Accessibility/FocusBorder.js +2 -2
- package/es-modules/Accessibility/Options/A11yDefaults.js +12 -3
- package/es-modules/Accessibility/Options/DeprecatedOptions.js +1 -2
- package/es-modules/Accessibility/ProxyElement.js +1 -0
- package/es-modules/Core/Animation/AnimationUtilities.js +34 -43
- package/es-modules/Core/Animation/Fx.js +16 -19
- package/es-modules/Core/Axis/Axis.js +49 -59
- package/es-modules/Core/Axis/Axis3DComposition.js +8 -6
- package/es-modules/Core/Axis/AxisDefaults.js +12 -2
- package/es-modules/Core/Axis/BrokenAxis.js +6 -5
- package/es-modules/Core/Axis/Color/ColorAxis.js +24 -12
- package/es-modules/Core/Axis/Color/ColorAxisComposition.js +3 -3
- package/es-modules/Core/Axis/GridAxis.js +12 -5
- package/es-modules/Core/Axis/LogarithmicAxis.js +5 -3
- package/es-modules/Core/Axis/NavigatorAxisComposition.js +2 -2
- package/es-modules/Core/Axis/OrdinalAxis.js +21 -11
- package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +3 -2
- package/es-modules/Core/Axis/RadialAxis.js +23 -22
- package/es-modules/Core/Axis/ScrollbarAxis.js +3 -3
- package/es-modules/Core/Axis/Stacking/StackItem.js +5 -5
- package/es-modules/Core/Axis/Stacking/StackingAxis.js +5 -6
- package/es-modules/Core/Axis/Tick.js +10 -11
- package/es-modules/Core/Axis/TreeGrid/TreeGridAxis.js +1 -1
- package/es-modules/Core/Axis/TreeGrid/TreeGridTick.js +3 -3
- package/es-modules/Core/Chart/Chart.js +58 -53
- package/es-modules/Core/Chart/Chart3D.js +3 -3
- package/es-modules/Core/Chart/ChartDefaults.js +24 -1
- package/es-modules/Core/Chart/MapChart.js +7 -10
- package/es-modules/Core/Chart/StockChart.js +15 -11
- package/es-modules/Core/Color/Color.js +3 -1
- package/es-modules/Core/Defaults.js +44 -2
- package/es-modules/Core/Globals.js +1 -1
- package/es-modules/Core/Legend/Legend.js +20 -17
- package/es-modules/Core/Legend/LegendSymbol.js +2 -2
- package/es-modules/Core/MSPointer.js +2 -2
- package/es-modules/Core/Math3D.js +6 -7
- package/es-modules/Core/Pointer.js +20 -10
- package/es-modules/Core/Renderer/HTML/AST.js +5 -1
- package/es-modules/Core/Renderer/HTML/HTMLElement.js +23 -16
- package/es-modules/Core/Renderer/RendererUtilities.js +2 -2
- package/es-modules/Core/Renderer/SVG/SVGElement.js +12 -11
- package/es-modules/Core/Renderer/SVG/SVGElement3D.js +2 -2
- package/es-modules/Core/Renderer/SVG/SVGLabel.js +5 -5
- package/es-modules/Core/Renderer/SVG/SVGRenderer.js +6 -6
- package/es-modules/Core/Renderer/SVG/SVGRenderer3D.js +13 -12
- package/es-modules/Core/Renderer/SVG/Symbols.js +6 -5
- package/es-modules/Core/Renderer/SVG/TextBuilder.js +2 -2
- package/es-modules/Core/Responsive.js +7 -5
- package/es-modules/Core/Series/DataLabel.js +9 -8
- package/es-modules/Core/Series/OverlappingDataLabels.js +5 -2
- package/es-modules/Core/Series/Point.js +31 -24
- package/es-modules/Core/Series/Series.js +125 -82
- package/es-modules/Core/Series/Series3D.js +2 -2
- package/es-modules/Core/Series/SeriesDefaults.js +33 -0
- package/es-modules/Core/Templating.js +18 -15
- package/es-modules/Core/Tooltip.js +12 -9
- package/es-modules/Core/Utilities.js +4 -3
- package/es-modules/Data/Connectors/DataConnector.js +2 -2
- package/es-modules/Data/Connectors/GoogleSheetsConnector.js +2 -2
- package/es-modules/Data/DataTable.js +17 -0
- package/es-modules/Data/DataTableCore.js +1 -1
- package/es-modules/Extensions/Annotations/Annotation.js +5 -6
- package/es-modules/Extensions/Annotations/AnnotationChart.js +2 -2
- package/es-modules/Extensions/Annotations/AnnotationDefaults.js +4 -4
- package/es-modules/Extensions/Annotations/ControlPoint.js +2 -2
- package/es-modules/Extensions/Annotations/Controllables/ControllableLabel.js +2 -2
- package/es-modules/Extensions/Annotations/EventEmitter.js +4 -4
- package/es-modules/Extensions/Annotations/MockPoint.js +7 -9
- package/es-modules/Extensions/Annotations/NavigationBindings.js +6 -3
- package/es-modules/Extensions/Annotations/NavigationBindingsUtilities.js +31 -4
- package/es-modules/Extensions/Annotations/Popup/Popup.js +3 -2
- package/es-modules/Extensions/Annotations/Popup/PopupAnnotations.js +6 -8
- package/es-modules/Extensions/Annotations/Types/CrookedLine.js +4 -4
- package/es-modules/Extensions/Annotations/Types/Measure.js +28 -10
- package/es-modules/Extensions/Annotations/Types/TimeCycles.js +4 -2
- package/es-modules/Extensions/Annotations/Types/Tunnel.js +3 -1
- package/es-modules/Extensions/Annotations/Types/VerticalLine.js +3 -3
- package/es-modules/Extensions/Boost/Boost.js +13 -0
- package/es-modules/Extensions/Boost/BoostChart.js +11 -4
- package/es-modules/Extensions/Boost/BoostSeries.js +17 -11
- package/es-modules/Extensions/Boost/WGLRenderer.js +9 -6
- package/es-modules/Extensions/Boost/WGLShader.js +3 -3
- package/es-modules/Extensions/BoostCanvas.js +2 -2
- package/es-modules/Extensions/BorderRadius.js +12 -10
- package/es-modules/Extensions/Breadcrumbs/Breadcrumbs.js +6 -5
- package/es-modules/Extensions/DataGrouping/DataGrouping.js +2 -2
- package/es-modules/Extensions/DataGrouping/DataGroupingAxisComposition.js +4 -3
- package/es-modules/Extensions/DataGrouping/DataGroupingSeriesComposition.js +2 -2
- package/es-modules/Extensions/DraggablePoints/DragDropProps.js +2 -3
- package/es-modules/Extensions/DraggablePoints/DraggableChart.js +1 -2
- package/es-modules/Extensions/Drilldown/Drilldown.js +1 -2
- package/es-modules/Extensions/Drilldown/DrilldownSeries.js +1 -2
- package/es-modules/Extensions/ExportData/ExportData.js +21 -16
- package/es-modules/Extensions/Exporting/Exporting.js +28 -28
- package/es-modules/Extensions/Exporting/ExportingDefaults.js +32 -0
- package/es-modules/Extensions/MarkerClusters/MarkerClusterScatter.js +1 -2
- package/es-modules/Extensions/MarkerClusters/MarkerClusters.js +1 -2
- package/es-modules/Extensions/MouseWheelZoom/MouseWheelZoom.js +2 -2
- package/es-modules/Extensions/OfflineExporting/OfflineExporting.js +31 -4
- package/es-modules/Extensions/Pane/PaneComposition.js +2 -2
- package/es-modules/Extensions/Pane/PaneDefaults.js +1 -1
- package/es-modules/Extensions/ParallelCoordinates/ParallelAxis.js +2 -2
- package/es-modules/Extensions/ParallelCoordinates/ParallelCoordinates.js +3 -0
- package/es-modules/Extensions/PatternFill.js +7 -5
- package/es-modules/Extensions/PriceIndication.js +5 -4
- package/es-modules/Extensions/ScrollablePlotArea.js +8 -2
- package/es-modules/Extensions/SeriesLabel/SeriesLabel.js +8 -9
- package/es-modules/Extensions/Sonification/MIDI.js +2 -3
- package/es-modules/Extensions/Sonification/Sonification.js +2 -2
- package/es-modules/Extensions/Sonification/SonificationSpeaker.js +3 -2
- package/es-modules/Extensions/Sonification/SynthPatch.js +4 -4
- package/es-modules/Extensions/Sonification/TimelineFromChart.js +11 -11
- package/es-modules/Gantt/Legacy.js +2 -2
- package/es-modules/Gantt/Pathfinder.js +3 -3
- package/es-modules/Gantt/PathfinderAlgorithms.js +4 -3
- package/es-modules/Gantt/Tree.js +1 -1
- package/es-modules/Maps/GeoJSONComposition.js +14 -1
- package/es-modules/Maps/MapNavigation.js +4 -4
- package/es-modules/Maps/MapPointer.js +2 -2
- package/es-modules/Maps/MapView.js +3 -3
- package/es-modules/Series/ArcDiagram/ArcDiagramSeries.js +8 -6
- package/es-modules/Series/Area/AreaSeries.js +4 -5
- package/es-modules/Series/AreaRange/AreaRangeSeries.js +87 -147
- package/es-modules/Series/AreaRange/AreaRangeSeriesDefaults.js +42 -4
- package/es-modules/Series/Bellcurve/BellcurveSeries.js +10 -6
- package/es-modules/Series/BoxPlot/BoxPlotSeries.js +40 -32
- package/es-modules/Series/BoxPlot/BoxPlotSeriesDefaults.js +33 -1
- package/es-modules/Series/Bubble/BubbleLegendItem.js +10 -6
- package/es-modules/Series/Bubble/BubbleSeries.js +25 -9
- package/es-modules/Series/Bullet/BulletSeries.js +17 -10
- package/es-modules/Series/Candlestick/CandlestickSeries.js +3 -3
- package/es-modules/Series/CenteredUtilities.js +12 -9
- package/es-modules/Series/ColorMapComposition.js +7 -4
- package/es-modules/Series/Column/ColumnPoint.js +2 -0
- package/es-modules/Series/Column/ColumnSeries.js +14 -14
- package/es-modules/Series/Column/ColumnSeriesDefaults.js +4 -2
- package/es-modules/Series/Column3D/Column3DComposition.js +22 -19
- package/es-modules/Series/ColumnPyramid/ColumnPyramidPoint.js +18 -0
- package/es-modules/Series/ColumnPyramid/ColumnPyramidPointOptions.js +12 -0
- package/es-modules/Series/ColumnPyramid/ColumnPyramidSeries.js +7 -6
- package/es-modules/Series/ColumnPyramid/ColumnPyramidSeriesOptions.js +12 -0
- package/es-modules/Series/ColumnRange/ColumnRangePoint.js +2 -0
- package/es-modules/Series/ColumnRange/ColumnRangePointOptions.js +12 -0
- package/es-modules/Series/ColumnRange/ColumnRangeSeries.js +13 -144
- package/es-modules/Series/ColumnRange/ColumnRangeSeriesDefaults.js +148 -0
- package/es-modules/Series/ColumnRange/ColumnRangeSeriesOptions.js +12 -0
- package/es-modules/Series/Contour/ContourPoint.js +2 -0
- package/es-modules/Series/Contour/ContourSeries.js +1 -0
- package/es-modules/Series/Contour/ContourSeriesDefaults.js +7 -0
- package/es-modules/Series/Contour/ContourShader.js +9 -1
- package/es-modules/Series/CrossSymbol.js +3 -2
- package/es-modules/Series/Cylinder/CylinderComposition.js +12 -12
- package/es-modules/Series/Cylinder/CylinderPoint.js +2 -0
- package/es-modules/Series/Cylinder/CylinderPointOptions.js +15 -0
- package/es-modules/Series/Cylinder/CylinderSeries.js +2 -1
- package/es-modules/Series/Cylinder/CylinderSeriesOptions.js +15 -0
- package/es-modules/Series/Cylinder/SVGElement3DCylinder.js +2 -0
- package/es-modules/Series/DataModifyComposition.js +9 -7
- package/es-modules/Series/DependencyWheel/DependencyWheelPoint.js +3 -1
- package/es-modules/Series/DependencyWheel/DependencyWheelPointOptions.js +14 -0
- package/es-modules/Series/DependencyWheel/DependencyWheelSeries.js +8 -8
- package/es-modules/Series/DependencyWheel/DependencyWheelSeriesOptions.js +14 -0
- package/es-modules/Series/DerivedComposition.js +9 -8
- package/es-modules/Series/DotPlot/DotPlotPoint.js +18 -0
- package/es-modules/Series/DotPlot/DotPlotPointOptions.js +12 -0
- package/es-modules/Series/DotPlot/DotPlotSeries.js +6 -4
- package/es-modules/Series/DotPlot/DotPlotSeriesOptions.js +12 -0
- package/es-modules/Series/DragNodesComposition.js +11 -8
- package/es-modules/Series/DrawPointUtilities.js +3 -1
- package/es-modules/Series/Dumbbell/DumbbellPoint.js +19 -6
- package/es-modules/Series/Dumbbell/DumbbellPointOptions.js +12 -0
- package/es-modules/Series/Dumbbell/DumbbellSeries.js +33 -15
- package/es-modules/Series/Dumbbell/DumbbellSeriesOptions.js +12 -0
- package/es-modules/Series/ErrorBar/ErrorBarPoint.js +18 -0
- package/es-modules/Series/ErrorBar/ErrorBarPointOptions.js +12 -0
- package/es-modules/Series/ErrorBar/ErrorBarSeries.js +6 -9
- package/es-modules/Series/ErrorBar/ErrorBarSeriesDefaults.js +15 -1
- package/es-modules/Series/ErrorBar/ErrorBarSeriesOptions.js +12 -0
- package/es-modules/Series/Flags/FlagsSeries.js +5 -14
- package/es-modules/Series/Flags/FlagsSeriesDefaults.js +2 -1
- package/es-modules/Series/FlowMap/FlowMapPoint.js +5 -3
- package/es-modules/Series/FlowMap/FlowMapSeries.js +17 -9
- package/es-modules/Series/Funnel/FunnelSeries.js +25 -26
- package/es-modules/Series/Funnel/FunnelSeriesDefaults.js +12 -0
- package/es-modules/Series/Funnel3D/Funnel3DSeries.js +7 -5
- package/es-modules/Series/Gantt/GanttSeries.js +2 -1
- package/es-modules/Series/Gauge/GaugeSeries.js +2 -2
- package/es-modules/Series/GeoHeatmap/GeoHeatmapSeries.js +9 -9
- package/es-modules/Series/GraphLayoutComposition.js +3 -3
- package/es-modules/Series/Heatmap/HeatmapPoint.js +6 -6
- package/es-modules/Series/Heatmap/HeatmapPointOptions.js +12 -0
- package/es-modules/Series/Heatmap/HeatmapSeries.js +13 -13
- package/es-modules/Series/Heatmap/HeatmapSeriesOptions.js +12 -0
- package/es-modules/Series/Histogram/HistogramPoint.js +17 -0
- package/es-modules/Series/Histogram/HistogramPointOptions.js +12 -0
- package/es-modules/Series/Histogram/HistogramSeries.js +15 -3
- package/es-modules/Series/Histogram/HistogramSeriesOptions.js +12 -0
- package/es-modules/Series/HollowCandlestick/HollowCandlestickSeries.js +9 -9
- package/es-modules/Series/InterpolationUtilities.js +5 -5
- package/es-modules/Series/Item/ItemPointOptions.js +14 -0
- package/es-modules/Series/Item/ItemSeries.js +18 -6
- package/es-modules/Series/Item/ItemSeriesOptions.js +14 -0
- package/es-modules/Series/Map/MapPoint.js +5 -3
- package/es-modules/Series/Map/MapSeries.js +6 -10
- package/es-modules/Series/Map/MapSeriesDefaults.js +11 -1
- package/es-modules/Series/Networkgraph/NetworkgraphPoint.js +3 -3
- package/es-modules/Series/Networkgraph/NetworkgraphSeries.js +14 -9
- package/es-modules/Series/Networkgraph/NetworkgraphSeriesDefaults.js +12 -0
- package/es-modules/Series/Networkgraph/ReingoldFruchtermanLayout.js +18 -9
- package/es-modules/Series/NodesComposition.js +9 -10
- package/es-modules/Series/OHLC/OHLCPoint.js +2 -2
- package/es-modules/Series/OHLC/OHLCSeries.js +1 -0
- package/es-modules/Series/Organization/OrganizationPoint.js +3 -2
- package/es-modules/Series/Organization/OrganizationSeries.js +29 -7
- package/es-modules/Series/Organization/OrganizationSeriesDefaults.js +11 -4
- package/es-modules/Series/PackedBubble/PackedBubbleLayout.js +3 -3
- package/es-modules/Series/PackedBubble/PackedBubbleSeries.js +5 -5
- package/es-modules/Series/Pictorial/PictorialSeries.js +4 -2
- package/es-modules/Series/Pie/PieDataLabel.js +2 -2
- package/es-modules/Series/Pie/PiePoint.js +3 -4
- package/es-modules/Series/Pie/PieSeries.js +3 -2
- package/es-modules/Series/Pie3D/Pie3DSeries.js +8 -4
- package/es-modules/Series/PolarComposition.js +13 -14
- package/es-modules/Series/Polygon/PolygonSeries.js +2 -2
- package/es-modules/Series/Polygon/PolygonSeriesDefaults.js +20 -0
- package/es-modules/Series/RangeDataLabel.js +128 -0
- package/es-modules/Series/Sankey/SankeySeries.js +13 -7
- package/es-modules/Series/Sankey/SankeySeriesDefaults.js +2 -2
- package/es-modules/Series/Scatter/ScatterSeries.js +6 -5
- package/es-modules/Series/Scatter/ScatterSeriesDefaults.js +2 -0
- package/es-modules/Series/SimulationSeriesUtilities.js +1 -2
- package/es-modules/Series/SolidGauge/SolidGaugeSeries.js +4 -4
- package/es-modules/Series/Spline/SplineSeries.js +5 -5
- package/es-modules/Series/Sunburst/SunburstSeriesDefaults.js +8 -0
- package/es-modules/Series/TiledWebMap/TiledWebMapSeries.js +20 -12
- package/es-modules/Series/Tilemap/TilemapSeriesDefaults.js +2 -1
- package/es-modules/Series/Tilemap/TilemapShapes.js +2 -2
- package/es-modules/Series/Timeline/TimelinePoint.js +2 -2
- package/es-modules/Series/Timeline/TimelineSeries.js +13 -6
- package/es-modules/Series/TreeUtilities.js +16 -7
- package/es-modules/Series/Treegraph/TreegraphLink.js +2 -2
- package/es-modules/Series/Treegraph/TreegraphSeries.js +22 -13
- package/es-modules/Series/Treemap/TreemapPoint.js +2 -2
- package/es-modules/Series/Treemap/TreemapSeries.js +14 -11
- package/es-modules/Series/Treemap/TreemapSeriesDefaults.js +22 -1
- package/es-modules/Series/VariablePie/VariablePieSeries.js +6 -4
- package/es-modules/Series/VariablePie/VariablePieSeriesDefaults.js +3 -2
- package/es-modules/Series/Variwide/VariwideSeries.js +2 -2
- package/es-modules/Series/Vector/VectorSeries.js +7 -9
- package/es-modules/Series/Venn/VennSeries.js +3 -4
- package/es-modules/Series/Waterfall/WaterfallSeries.js +3 -3
- package/es-modules/Series/Windbarb/WindbarbSeries.js +8 -10
- package/es-modules/Series/XRange/XRangeSeries.js +8 -8
- package/es-modules/Shared/TimeBase.js +13 -8
- package/es-modules/Shared/Utilities.js +9 -7
- package/es-modules/Stock/Indicators/Aroon/AroonIndicator.js +3 -3
- package/es-modules/Stock/Indicators/DPO/DPOIndicator.js +4 -3
- package/es-modules/Stock/Indicators/RSI/RSIIndicator.js +1 -1
- package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +2 -2
- package/es-modules/Stock/Indicators/VBP/VBPIndicator.js +1 -2
- package/es-modules/Stock/Navigator/ChartNavigatorComposition.js +4 -4
- package/es-modules/Stock/Navigator/Navigator.js +26 -26
- package/es-modules/Stock/Navigator/NavigatorDefaults.js +9 -2
- package/es-modules/Stock/Navigator/NavigatorSymbols.js +2 -1
- package/es-modules/Stock/Navigator/StandaloneNavigator.js +55 -14
- package/es-modules/Stock/RangeSelector/RangeSelector.js +15 -11
- package/es-modules/Stock/RangeSelector/RangeSelectorComposition.js +3 -3
- package/es-modules/Stock/Scrollbar/Scrollbar.js +8 -7
- package/es-modules/Stock/StockTools/StockToolbar.js +6 -6
- package/es-modules/Stock/StockTools/StockTools.js +2 -2
- package/es-modules/Stock/StockTools/StockToolsBindings.js +7 -7
- package/es-modules/Stock/StockTools/StockToolsGui.js +6 -4
- package/es-modules/masters/highcharts-3d.src.js +1 -1
- package/es-modules/masters/highcharts-autoload.src.js +1 -1
- package/es-modules/masters/highcharts-gantt.src.js +1 -1
- package/es-modules/masters/highcharts-more.src.js +1 -1
- package/es-modules/masters/highcharts.src.js +13 -8
- package/es-modules/masters/highmaps.src.js +1 -1
- package/es-modules/masters/highstock.src.js +1 -1
- package/es-modules/masters/i18n/fr-FR.src.d.ts +1 -1
- package/es-modules/masters/i18n/fr-FR.src.js +1 -1
- package/es-modules/masters/i18n/nb-NO.src.d.ts +1 -1
- package/es-modules/masters/i18n/nb-NO.src.js +1 -1
- package/es-modules/masters/i18n/zh-CN.src.d.ts +1 -1
- package/es-modules/masters/i18n/zh-CN.src.js +1 -1
- package/es-modules/masters/indicators/acceleration-bands.src.js +1 -1
- package/es-modules/masters/indicators/accumulation-distribution.src.js +1 -1
- package/es-modules/masters/indicators/ao.src.js +1 -1
- package/es-modules/masters/indicators/apo.src.js +1 -1
- package/es-modules/masters/indicators/aroon-oscillator.src.js +1 -1
- package/es-modules/masters/indicators/aroon.src.js +1 -1
- package/es-modules/masters/indicators/atr.src.js +1 -1
- package/es-modules/masters/indicators/bollinger-bands.src.js +1 -1
- package/es-modules/masters/indicators/cci.src.js +1 -1
- package/es-modules/masters/indicators/chaikin.src.js +1 -1
- package/es-modules/masters/indicators/cmf.src.js +1 -1
- package/es-modules/masters/indicators/cmo.src.js +1 -1
- package/es-modules/masters/indicators/dema.src.js +1 -1
- package/es-modules/masters/indicators/disparity-index.src.js +1 -1
- package/es-modules/masters/indicators/dmi.src.js +1 -1
- package/es-modules/masters/indicators/dpo.src.js +1 -1
- package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
- package/es-modules/masters/indicators/indicators-all.src.js +1 -1
- package/es-modules/masters/indicators/indicators.src.js +1 -1
- package/es-modules/masters/indicators/keltner-channels.src.js +1 -1
- package/es-modules/masters/indicators/klinger.src.js +1 -1
- package/es-modules/masters/indicators/macd.src.js +1 -1
- package/es-modules/masters/indicators/mfi.src.js +1 -1
- package/es-modules/masters/indicators/momentum.src.js +1 -1
- package/es-modules/masters/indicators/natr.src.js +1 -1
- package/es-modules/masters/indicators/obv.src.js +1 -1
- package/es-modules/masters/indicators/pivot-points.src.js +1 -1
- package/es-modules/masters/indicators/ppo.src.js +1 -1
- package/es-modules/masters/indicators/price-channel.src.js +1 -1
- package/es-modules/masters/indicators/price-envelopes.src.js +1 -1
- package/es-modules/masters/indicators/psar.src.js +1 -1
- package/es-modules/masters/indicators/regressions.src.js +1 -1
- package/es-modules/masters/indicators/roc.src.js +1 -1
- package/es-modules/masters/indicators/rsi.src.js +1 -1
- package/es-modules/masters/indicators/slow-stochastic.src.js +1 -1
- package/es-modules/masters/indicators/stochastic.src.js +1 -1
- package/es-modules/masters/indicators/supertrend.src.js +1 -1
- package/es-modules/masters/indicators/tema.src.js +1 -1
- package/es-modules/masters/indicators/trendline.src.js +1 -1
- package/es-modules/masters/indicators/trix.src.js +1 -1
- package/es-modules/masters/indicators/volume-by-price.src.js +1 -1
- package/es-modules/masters/indicators/vwap.src.js +1 -1
- package/es-modules/masters/indicators/williams-r.src.js +1 -1
- package/es-modules/masters/indicators/wma.src.js +1 -1
- package/es-modules/masters/indicators/zigzag.src.js +1 -1
- package/es-modules/masters/modules/accessibility.src.js +1 -1
- package/es-modules/masters/modules/annotations-advanced.src.js +1 -1
- package/es-modules/masters/modules/annotations.src.js +1 -1
- package/es-modules/masters/modules/arc-diagram.src.js +1 -1
- package/es-modules/masters/modules/arrow-symbols.src.js +1 -1
- package/es-modules/masters/modules/boost-canvas.src.js +1 -1
- package/es-modules/masters/modules/boost.src.js +1 -1
- package/es-modules/masters/modules/broken-axis.src.js +1 -1
- package/es-modules/masters/modules/bullet.src.js +1 -1
- package/es-modules/masters/modules/coloraxis.src.js +1 -1
- package/es-modules/masters/modules/contour.src.js +1 -1
- package/es-modules/masters/modules/current-date-indicator.src.js +1 -1
- package/es-modules/masters/modules/cylinder.src.js +1 -1
- package/es-modules/masters/modules/data-sorting.src.js +1 -1
- package/es-modules/masters/modules/data-tools.src.js +1 -1
- package/es-modules/masters/modules/data.src.js +1 -1
- package/es-modules/masters/modules/datagrouping.src.js +1 -1
- package/es-modules/masters/modules/debugger.src.js +1 -1
- package/es-modules/masters/modules/dependency-wheel.src.js +1 -1
- package/es-modules/masters/modules/dotplot.src.js +1 -1
- package/es-modules/masters/modules/drag-panes.src.js +1 -1
- package/es-modules/masters/modules/draggable-points.src.js +1 -1
- package/es-modules/masters/modules/drilldown.src.js +1 -1
- package/es-modules/masters/modules/dumbbell.src.js +1 -1
- package/es-modules/masters/modules/export-data.src.js +1 -1
- package/es-modules/masters/modules/exporting.src.js +1 -1
- package/es-modules/masters/modules/flowmap.src.js +2 -1
- package/es-modules/masters/modules/full-screen.src.js +1 -1
- package/es-modules/masters/modules/funnel.src.js +1 -1
- package/es-modules/masters/modules/funnel3d.src.js +1 -1
- package/es-modules/masters/modules/gantt.src.js +1 -1
- package/es-modules/masters/modules/geoheatmap.src.js +1 -1
- package/es-modules/masters/modules/grid-axis.src.js +1 -1
- package/es-modules/masters/modules/heatmap.src.js +1 -1
- package/es-modules/masters/modules/heikinashi.src.js +1 -1
- package/es-modules/masters/modules/histogram-bellcurve.src.js +1 -1
- package/es-modules/masters/modules/hollowcandlestick.src.js +1 -1
- package/es-modules/masters/modules/item-series.src.js +1 -1
- package/es-modules/masters/modules/lollipop.src.js +1 -1
- package/es-modules/masters/modules/map.src.js +1 -1
- package/es-modules/masters/modules/marker-clusters.src.js +1 -1
- package/es-modules/masters/modules/mouse-wheel-zoom.src.js +1 -1
- package/es-modules/masters/modules/navigator.src.js +1 -1
- package/es-modules/masters/modules/networkgraph.src.js +1 -1
- package/es-modules/masters/modules/no-data-to-display.src.js +1 -1
- package/es-modules/masters/modules/non-cartesian-zoom.src.js +1 -1
- package/es-modules/masters/modules/offline-exporting.src.js +1 -1
- package/es-modules/masters/modules/organization.src.js +1 -1
- package/es-modules/masters/modules/parallel-coordinates.src.js +1 -1
- package/es-modules/masters/modules/pareto.src.js +1 -1
- package/es-modules/masters/modules/pathfinder.src.js +1 -1
- package/es-modules/masters/modules/pattern-fill.src.js +1 -1
- package/es-modules/masters/modules/pictorial.src.js +1 -1
- package/es-modules/masters/modules/pointandfigure.src.js +1 -1
- package/es-modules/masters/modules/price-indicator.src.js +1 -1
- package/es-modules/masters/modules/pyramid3d.src.js +1 -1
- package/es-modules/masters/modules/renko.src.js +1 -1
- package/es-modules/masters/modules/sankey.src.js +1 -1
- package/es-modules/masters/modules/series-label.src.js +1 -1
- package/es-modules/masters/modules/series-on-point.src.js +1 -1
- package/es-modules/masters/modules/solid-gauge.src.js +1 -1
- package/es-modules/masters/modules/sonification.src.js +1 -1
- package/es-modules/masters/modules/static-scale.src.js +1 -1
- package/es-modules/masters/modules/stock-tools.src.js +1 -1
- package/es-modules/masters/modules/stock.src.js +1 -1
- package/es-modules/masters/modules/streamgraph.src.js +1 -1
- package/es-modules/masters/modules/sunburst.src.js +3 -2
- package/es-modules/masters/modules/textpath.src.js +1 -1
- package/es-modules/masters/modules/tiledwebmap.src.js +1 -1
- package/es-modules/masters/modules/tilemap.src.js +1 -1
- package/es-modules/masters/modules/timeline.src.js +1 -1
- package/es-modules/masters/modules/treegraph.src.js +1 -1
- package/es-modules/masters/modules/treegrid.src.js +1 -1
- package/es-modules/masters/modules/treemap.src.js +1 -1
- package/es-modules/masters/modules/variable-pie.src.js +1 -1
- package/es-modules/masters/modules/variwide.src.js +1 -1
- package/es-modules/masters/modules/vector.src.js +1 -1
- package/es-modules/masters/modules/venn.src.js +1 -1
- package/es-modules/masters/modules/windbarb.src.js +1 -1
- package/es-modules/masters/modules/wordcloud.src.js +1 -1
- package/es-modules/masters/modules/xrange.src.js +1 -1
- package/es-modules/masters/standalone-navigator.src.js +1 -1
- package/es-modules/masters/themes/adaptive.src.js +1 -1
- package/es-modules/masters/themes/avocado.src.js +1 -1
- package/es-modules/masters/themes/dark-unica.src.js +1 -1
- package/es-modules/masters/themes/grid-light.src.js +1 -1
- package/es-modules/masters/themes/high-contrast.src.js +1 -1
- package/es-modules/masters/themes/sand-signika.src.js +1 -1
- package/es-modules/masters/themes/sunset.src.js +1 -1
- package/es-modules/tsconfig.tsbuildinfo +1 -1
- package/esm/highcharts-3d.js +2 -2
- package/esm/highcharts-3d.src.js +78 -55
- package/esm/highcharts-autoload.js +2 -2
- package/esm/highcharts-autoload.src.js +22 -8
- package/esm/highcharts-gantt.js +2 -2
- package/esm/highcharts-gantt.src.js +1 -24
- package/esm/highcharts-more.js +2 -2
- package/esm/highcharts-more.src.js +1198 -981
- package/esm/highcharts.js +5 -5
- package/esm/highcharts.src.js +702 -515
- package/esm/highmaps.js +2 -2
- package/esm/highmaps.src.js +1 -24
- package/esm/highstock.js +2 -2
- package/esm/highstock.src.js +1 -24
- package/esm/i18n/fr-FR.js +2 -2
- package/esm/i18n/fr-FR.src.js +22 -8
- package/esm/i18n/nb-NO.js +2 -2
- package/esm/i18n/nb-NO.src.js +22 -8
- package/esm/i18n/zh-CN.js +2 -2
- package/esm/i18n/zh-CN.src.js +22 -8
- package/esm/indicators/acceleration-bands.js +2 -2
- package/esm/indicators/acceleration-bands.src.js +22 -8
- package/esm/indicators/accumulation-distribution.js +2 -2
- package/esm/indicators/accumulation-distribution.src.js +22 -8
- package/esm/indicators/ao.js +2 -2
- package/esm/indicators/ao.src.js +22 -8
- package/esm/indicators/apo.js +2 -2
- package/esm/indicators/apo.src.js +22 -8
- package/esm/indicators/aroon-oscillator.js +2 -2
- package/esm/indicators/aroon-oscillator.src.js +22 -8
- package/esm/indicators/aroon.js +2 -2
- package/esm/indicators/aroon.src.js +24 -10
- package/esm/indicators/atr.js +2 -2
- package/esm/indicators/atr.src.js +22 -8
- package/esm/indicators/bollinger-bands.js +2 -2
- package/esm/indicators/bollinger-bands.src.js +22 -8
- package/esm/indicators/cci.js +2 -2
- package/esm/indicators/cci.src.js +22 -8
- package/esm/indicators/chaikin.js +2 -2
- package/esm/indicators/chaikin.src.js +22 -8
- package/esm/indicators/cmf.js +2 -2
- package/esm/indicators/cmf.src.js +22 -8
- package/esm/indicators/cmo.js +2 -2
- package/esm/indicators/cmo.src.js +22 -8
- package/esm/indicators/dema.js +2 -2
- package/esm/indicators/dema.src.js +22 -8
- package/esm/indicators/disparity-index.js +2 -2
- package/esm/indicators/disparity-index.src.js +22 -8
- package/esm/indicators/dmi.js +2 -2
- package/esm/indicators/dmi.src.js +22 -8
- package/esm/indicators/dpo.js +2 -2
- package/esm/indicators/dpo.src.js +25 -10
- package/esm/indicators/ichimoku-kinko-hyo.js +2 -2
- package/esm/indicators/ichimoku-kinko-hyo.src.js +22 -8
- package/esm/indicators/indicators-all.js +2 -2
- package/esm/indicators/indicators-all.src.js +31 -17
- package/esm/indicators/indicators.js +2 -2
- package/esm/indicators/indicators.src.js +24 -10
- package/esm/indicators/keltner-channels.js +2 -2
- package/esm/indicators/keltner-channels.src.js +22 -8
- package/esm/indicators/klinger.js +2 -2
- package/esm/indicators/klinger.src.js +22 -8
- package/esm/indicators/macd.js +2 -2
- package/esm/indicators/macd.src.js +22 -8
- package/esm/indicators/mfi.js +2 -2
- package/esm/indicators/mfi.src.js +22 -8
- package/esm/indicators/momentum.js +2 -2
- package/esm/indicators/momentum.src.js +22 -8
- package/esm/indicators/natr.js +2 -2
- package/esm/indicators/natr.src.js +22 -8
- package/esm/indicators/obv.js +2 -2
- package/esm/indicators/obv.src.js +22 -8
- package/esm/indicators/pivot-points.js +2 -2
- package/esm/indicators/pivot-points.src.js +22 -8
- package/esm/indicators/ppo.js +2 -2
- package/esm/indicators/ppo.src.js +22 -8
- package/esm/indicators/price-channel.js +2 -2
- package/esm/indicators/price-channel.src.js +22 -8
- package/esm/indicators/price-envelopes.js +2 -2
- package/esm/indicators/price-envelopes.src.js +22 -8
- package/esm/indicators/psar.js +2 -2
- package/esm/indicators/psar.src.js +22 -8
- package/esm/indicators/regressions.js +2 -2
- package/esm/indicators/regressions.src.js +22 -8
- package/esm/indicators/roc.js +2 -2
- package/esm/indicators/roc.src.js +22 -8
- package/esm/indicators/rsi.js +2 -2
- package/esm/indicators/rsi.src.js +23 -9
- package/esm/indicators/slow-stochastic.js +2 -2
- package/esm/indicators/slow-stochastic.src.js +22 -8
- package/esm/indicators/stochastic.js +2 -2
- package/esm/indicators/stochastic.src.js +22 -8
- package/esm/indicators/supertrend.js +2 -2
- package/esm/indicators/supertrend.src.js +22 -8
- package/esm/indicators/tema.js +2 -2
- package/esm/indicators/tema.src.js +22 -8
- package/esm/indicators/trendline.js +2 -2
- package/esm/indicators/trendline.src.js +22 -8
- package/esm/indicators/trix.js +2 -2
- package/esm/indicators/trix.src.js +22 -8
- package/esm/indicators/volume-by-price.js +2 -2
- package/esm/indicators/volume-by-price.src.js +23 -10
- package/esm/indicators/vwap.js +2 -2
- package/esm/indicators/vwap.src.js +22 -8
- package/esm/indicators/williams-r.js +2 -2
- package/esm/indicators/williams-r.src.js +22 -8
- package/esm/indicators/wma.js +2 -2
- package/esm/indicators/wma.src.js +22 -8
- package/esm/indicators/zigzag.js +2 -2
- package/esm/indicators/zigzag.src.js +22 -8
- package/esm/modules/accessibility.js +2 -2
- package/esm/modules/accessibility.src.js +564 -92
- package/esm/modules/annotations-advanced.js +11 -11
- package/esm/modules/annotations-advanced.src.js +224 -162
- package/esm/modules/annotations.js +11 -11
- package/esm/modules/annotations.src.js +184 -144
- package/esm/modules/arc-diagram.js +2 -2
- package/esm/modules/arc-diagram.src.js +37 -22
- package/esm/modules/arrow-symbols.js +3 -3
- package/esm/modules/arrow-symbols.src.js +22 -8
- package/esm/modules/boost-canvas.js +2 -2
- package/esm/modules/boost-canvas.src.js +60 -30
- package/esm/modules/boost.js +2 -2
- package/esm/modules/boost.src.js +72 -29
- package/esm/modules/broken-axis.js +2 -2
- package/esm/modules/broken-axis.src.js +27 -12
- package/esm/modules/bullet.js +2 -2
- package/esm/modules/bullet.src.js +38 -17
- package/esm/modules/coloraxis.js +2 -2
- package/esm/modules/coloraxis.src.js +47 -21
- package/esm/modules/contour.js +3 -3
- package/esm/modules/contour.src.js +46 -13
- package/esm/modules/current-date-indicator.js +2 -2
- package/esm/modules/current-date-indicator.src.js +22 -8
- package/esm/modules/cylinder.js +2 -2
- package/esm/modules/cylinder.src.js +46 -28
- package/esm/modules/data-sorting.js +2 -2
- package/esm/modules/data-sorting.src.js +22 -8
- package/esm/modules/data-tools.js +2 -2
- package/esm/modules/data-tools.src.js +44 -13
- package/esm/modules/data.js +4 -4
- package/esm/modules/data.src.js +23 -9
- package/esm/modules/datagrouping.js +2 -2
- package/esm/modules/datagrouping.src.js +28 -13
- package/esm/modules/debugger.js +2 -2
- package/esm/modules/debugger.src.js +22 -8
- package/esm/modules/dependency-wheel.js +2 -2
- package/esm/modules/dependency-wheel.src.js +428 -17
- package/esm/modules/dotplot.js +2 -2
- package/esm/modules/dotplot.src.js +27 -11
- package/esm/modules/drag-panes.js +2 -2
- package/esm/modules/drag-panes.src.js +22 -8
- package/esm/modules/draggable-points.js +2 -2
- package/esm/modules/draggable-points.src.js +24 -12
- package/esm/modules/drilldown.js +2 -2
- package/esm/modules/drilldown.src.js +38 -25
- package/esm/modules/dumbbell.js +2 -2
- package/esm/modules/dumbbell.src.js +72 -27
- package/esm/modules/export-data.js +2 -2
- package/esm/modules/export-data.src.js +42 -23
- package/esm/modules/exporting.js +2 -2
- package/esm/modules/exporting.src.js +83 -37
- package/esm/modules/flowmap.js +3 -2
- package/esm/modules/flowmap.src.js +43 -18
- package/esm/modules/full-screen.js +2 -2
- package/esm/modules/full-screen.src.js +22 -8
- package/esm/modules/funnel.js +2 -2
- package/esm/modules/funnel.src.js +73 -42
- package/esm/modules/funnel3d.js +2 -2
- package/esm/modules/funnel3d.src.js +35 -20
- package/esm/modules/gantt.js +2 -2
- package/esm/modules/gantt.src.js +542 -100
- package/esm/modules/geoheatmap.js +2 -2
- package/esm/modules/geoheatmap.src.js +35 -21
- package/esm/modules/grid-axis.js +2 -2
- package/esm/modules/grid-axis.src.js +33 -12
- package/esm/modules/heatmap.js +2 -2
- package/esm/modules/heatmap.src.js +50 -33
- package/esm/modules/heikinashi.js +2 -2
- package/esm/modules/heikinashi.src.js +22 -8
- package/esm/modules/histogram-bellcurve.js +2 -2
- package/esm/modules/histogram-bellcurve.src.js +56 -25
- package/esm/modules/hollowcandlestick.js +2 -2
- package/esm/modules/hollowcandlestick.src.js +31 -17
- package/esm/modules/item-series.js +2 -2
- package/esm/modules/item-series.src.js +72 -13
- package/esm/modules/lollipop.js +2 -2
- package/esm/modules/lollipop.src.js +22 -8
- package/esm/modules/map.js +2 -2
- package/esm/modules/map.src.js +148 -91
- package/esm/modules/marker-clusters.js +2 -2
- package/esm/modules/marker-clusters.src.js +25 -13
- package/esm/modules/mouse-wheel-zoom.js +2 -2
- package/esm/modules/mouse-wheel-zoom.src.js +54 -13
- package/esm/modules/navigator.js +2 -2
- package/esm/modules/navigator.src.js +534 -74
- package/esm/modules/networkgraph.js +2 -2
- package/esm/modules/networkgraph.src.js +87 -46
- package/esm/modules/no-data-to-display.js +2 -2
- package/esm/modules/no-data-to-display.src.js +22 -8
- package/esm/modules/non-cartesian-zoom.js +2 -2
- package/esm/modules/non-cartesian-zoom.src.js +22 -8
- package/esm/modules/offline-exporting.js +2 -2
- package/esm/modules/offline-exporting.src.js +53 -12
- package/esm/modules/organization.js +4 -2
- package/esm/modules/organization.src.js +63 -19
- package/esm/modules/parallel-coordinates.js +2 -2
- package/esm/modules/parallel-coordinates.src.js +26 -9
- package/esm/modules/pareto.js +2 -2
- package/esm/modules/pareto.src.js +31 -16
- package/esm/modules/pathfinder.js +2 -2
- package/esm/modules/pathfinder.src.js +28 -13
- package/esm/modules/pattern-fill.js +2 -2
- package/esm/modules/pattern-fill.src.js +28 -12
- package/esm/modules/pictorial.js +2 -2
- package/esm/modules/pictorial.src.js +36 -19
- package/esm/modules/pointandfigure.js +2 -2
- package/esm/modules/pointandfigure.src.js +26 -11
- package/esm/modules/price-indicator.js +2 -2
- package/esm/modules/price-indicator.src.js +26 -11
- package/esm/modules/pyramid3d.js +2 -2
- package/esm/modules/pyramid3d.src.js +22 -8
- package/esm/modules/renko.js +2 -2
- package/esm/modules/renko.src.js +22 -8
- package/esm/modules/sankey.js +2 -2
- package/esm/modules/sankey.src.js +59 -31
- package/esm/modules/series-label.js +2 -2
- package/esm/modules/series-label.src.js +31 -18
- package/esm/modules/series-on-point.js +2 -2
- package/esm/modules/series-on-point.src.js +23 -9
- package/esm/modules/solid-gauge.js +2 -2
- package/esm/modules/solid-gauge.src.js +40 -20
- package/esm/modules/sonification.js +2 -2
- package/esm/modules/sonification.src.js +45 -30
- package/esm/modules/static-scale.js +2 -2
- package/esm/modules/static-scale.src.js +22 -8
- package/esm/modules/stock-tools.js +3 -3
- package/esm/modules/stock-tools.src.js +73 -27
- package/esm/modules/stock.js +2 -2
- package/esm/modules/stock.src.js +554 -122
- package/esm/modules/streamgraph.js +2 -2
- package/esm/modules/streamgraph.src.js +22 -8
- package/esm/modules/sunburst.js +2 -2
- package/esm/modules/sunburst.src.js +110 -45
- package/esm/modules/textpath.js +2 -2
- package/esm/modules/textpath.src.js +22 -8
- package/esm/modules/tiledwebmap.js +3 -3
- package/esm/modules/tiledwebmap.src.js +44 -19
- package/esm/modules/tilemap.js +2 -2
- package/esm/modules/tilemap.src.js +27 -12
- package/esm/modules/timeline.js +2 -2
- package/esm/modules/timeline.src.js +35 -14
- package/esm/modules/treegraph.js +2 -2
- package/esm/modules/treegraph.src.js +59 -27
- package/esm/modules/treegrid.js +2 -2
- package/esm/modules/treegrid.src.js +58 -27
- package/esm/modules/treemap.js +2 -2
- package/esm/modules/treemap.src.js +89 -36
- package/esm/modules/variable-pie.js +2 -2
- package/esm/modules/variable-pie.src.js +30 -13
- package/esm/modules/variwide.js +2 -2
- package/esm/modules/variwide.src.js +23 -9
- package/esm/modules/vector.js +2 -2
- package/esm/modules/vector.src.js +28 -16
- package/esm/modules/venn.js +2 -2
- package/esm/modules/venn.src.js +28 -13
- package/esm/modules/windbarb.js +2 -2
- package/esm/modules/windbarb.src.js +29 -17
- package/esm/modules/wordcloud.js +2 -2
- package/esm/modules/wordcloud.src.js +25 -9
- package/esm/modules/xrange.js +2 -2
- package/esm/modules/xrange.src.js +29 -15
- package/esm/standalone-navigator.js +5 -5
- package/esm/standalone-navigator.src.js +808 -570
- package/esm/themes/adaptive.js +3 -3
- package/esm/themes/adaptive.src.js +22 -8
- package/esm/themes/avocado.js +2 -2
- package/esm/themes/avocado.src.js +22 -8
- package/esm/themes/dark-unica.js +2 -2
- package/esm/themes/dark-unica.src.js +22 -8
- package/esm/themes/grid-light.js +2 -2
- package/esm/themes/grid-light.src.js +22 -8
- package/esm/themes/high-contrast.js +2 -2
- package/esm/themes/high-contrast.src.js +22 -8
- package/esm/themes/sand-signika.js +2 -2
- package/esm/themes/sand-signika.src.js +22 -8
- package/esm/themes/sunset.js +2 -2
- package/esm/themes/sunset.src.js +22 -8
- package/highcharts-3d.js +2 -2
- package/highcharts-3d.src.js +116 -92
- package/highcharts-autoload.d.ts +15 -5
- package/highcharts-autoload.js +4 -4
- package/highcharts-autoload.src.d.ts +15 -5
- package/highcharts-autoload.src.js +724 -499
- package/highcharts-gantt.js +4 -4
- package/highcharts-gantt.src.js +851 -590
- package/highcharts-more.d.ts +7 -3
- package/highcharts-more.js +2 -2
- package/highcharts-more.src.d.ts +7 -3
- package/highcharts-more.src.js +1313 -1095
- package/highcharts.d.ts +34795 -25647
- package/highcharts.js +4 -4
- package/highcharts.src.d.ts +34795 -25647
- package/highcharts.src.js +723 -498
- package/highmaps.js +4 -4
- package/highmaps.src.js +863 -583
- package/highstock.js +4 -4
- package/highstock.src.js +899 -619
- package/i18n/fr-FR.js +2 -2
- package/i18n/fr-FR.src.js +32 -16
- package/i18n/nb-NO.js +2 -2
- package/i18n/nb-NO.src.js +32 -16
- package/i18n/zh-CN.js +2 -2
- package/i18n/zh-CN.src.js +32 -16
- package/indicators/acceleration-bands.js +2 -2
- package/indicators/acceleration-bands.src.js +31 -16
- package/indicators/accumulation-distribution.js +2 -2
- package/indicators/accumulation-distribution.src.js +31 -16
- package/indicators/ao.js +2 -2
- package/indicators/ao.src.js +31 -16
- package/indicators/apo.js +2 -2
- package/indicators/apo.src.js +31 -16
- package/indicators/aroon-oscillator.js +2 -2
- package/indicators/aroon-oscillator.src.js +31 -16
- package/indicators/aroon.js +2 -2
- package/indicators/aroon.src.js +33 -18
- package/indicators/atr.js +2 -2
- package/indicators/atr.src.js +31 -16
- package/indicators/bollinger-bands.js +2 -2
- package/indicators/bollinger-bands.src.js +31 -16
- package/indicators/cci.js +2 -2
- package/indicators/cci.src.js +31 -16
- package/indicators/chaikin.js +2 -2
- package/indicators/chaikin.src.js +31 -16
- package/indicators/cmf.js +2 -2
- package/indicators/cmf.src.js +31 -16
- package/indicators/cmo.js +2 -2
- package/indicators/cmo.src.js +31 -16
- package/indicators/dema.js +2 -2
- package/indicators/dema.src.js +31 -16
- package/indicators/disparity-index.js +2 -2
- package/indicators/disparity-index.src.js +31 -16
- package/indicators/dmi.js +2 -2
- package/indicators/dmi.src.js +31 -16
- package/indicators/dpo.js +2 -2
- package/indicators/dpo.src.js +34 -18
- package/indicators/ichimoku-kinko-hyo.js +2 -2
- package/indicators/ichimoku-kinko-hyo.src.js +41 -26
- package/indicators/indicators-all.js +2 -2
- package/indicators/indicators-all.src.js +52 -37
- package/indicators/indicators.js +2 -2
- package/indicators/indicators.src.js +39 -24
- package/indicators/keltner-channels.js +2 -2
- package/indicators/keltner-channels.src.js +31 -16
- package/indicators/klinger.js +2 -2
- package/indicators/klinger.src.js +31 -16
- package/indicators/macd.js +2 -2
- package/indicators/macd.src.js +31 -16
- package/indicators/mfi.js +2 -2
- package/indicators/mfi.src.js +31 -16
- package/indicators/momentum.js +2 -2
- package/indicators/momentum.src.js +31 -16
- package/indicators/natr.js +2 -2
- package/indicators/natr.src.js +31 -16
- package/indicators/obv.js +2 -2
- package/indicators/obv.src.js +31 -16
- package/indicators/pivot-points.js +2 -2
- package/indicators/pivot-points.src.js +31 -16
- package/indicators/ppo.js +2 -2
- package/indicators/ppo.src.js +31 -16
- package/indicators/price-channel.js +2 -2
- package/indicators/price-channel.src.js +31 -16
- package/indicators/price-envelopes.js +2 -2
- package/indicators/price-envelopes.src.js +31 -16
- package/indicators/psar.js +2 -2
- package/indicators/psar.src.js +31 -16
- package/indicators/regressions.js +2 -2
- package/indicators/regressions.src.js +31 -16
- package/indicators/roc.js +2 -2
- package/indicators/roc.src.js +31 -16
- package/indicators/rsi.js +2 -2
- package/indicators/rsi.src.js +32 -17
- package/indicators/slow-stochastic.js +2 -2
- package/indicators/slow-stochastic.src.js +31 -16
- package/indicators/stochastic.js +2 -2
- package/indicators/stochastic.src.js +31 -16
- package/indicators/supertrend.js +2 -2
- package/indicators/supertrend.src.js +31 -16
- package/indicators/tema.js +2 -2
- package/indicators/tema.src.js +31 -16
- package/indicators/trendline.js +2 -2
- package/indicators/trendline.src.js +31 -16
- package/indicators/trix.js +2 -2
- package/indicators/trix.src.js +31 -16
- package/indicators/volume-by-price.js +2 -2
- package/indicators/volume-by-price.src.js +32 -18
- package/indicators/vwap.js +2 -2
- package/indicators/vwap.src.js +31 -16
- package/indicators/williams-r.js +2 -2
- package/indicators/williams-r.src.js +31 -16
- package/indicators/wma.js +2 -2
- package/indicators/wma.src.js +31 -16
- package/indicators/zigzag.js +2 -2
- package/indicators/zigzag.src.js +31 -16
- package/modules/accessibility.d.ts +47 -0
- package/modules/accessibility.js +2 -2
- package/modules/accessibility.src.d.ts +47 -0
- package/modules/accessibility.src.js +603 -130
- package/modules/annotations-advanced.js +11 -11
- package/modules/annotations-advanced.src.js +246 -183
- package/modules/annotations.js +11 -11
- package/modules/annotations.src.js +206 -165
- package/modules/arc-diagram.js +2 -2
- package/modules/arc-diagram.src.js +58 -42
- package/modules/arrow-symbols.js +2 -2
- package/modules/arrow-symbols.src.js +28 -13
- package/modules/boost-canvas.js +2 -2
- package/modules/boost-canvas.src.js +69 -38
- package/modules/boost.js +2 -2
- package/modules/boost.src.js +81 -37
- package/modules/broken-axis.js +2 -2
- package/modules/broken-axis.src.js +36 -20
- package/modules/bullet.js +2 -2
- package/modules/bullet.src.js +50 -28
- package/modules/coloraxis.js +2 -2
- package/modules/coloraxis.src.js +65 -38
- package/modules/contour.js +5 -5
- package/modules/contour.src.js +91 -44
- package/modules/current-date-indicator.js +2 -2
- package/modules/current-date-indicator.src.js +28 -13
- package/modules/cylinder.js +2 -2
- package/modules/cylinder.src.js +67 -48
- package/modules/data-sorting.js +2 -2
- package/modules/data-sorting.src.js +28 -13
- package/modules/data-tools.js +2 -2
- package/modules/data-tools.src.js +50 -18
- package/modules/data.js +2 -2
- package/modules/data.src.js +50 -35
- package/modules/datagrouping.js +2 -2
- package/modules/datagrouping.src.js +42 -26
- package/modules/debugger.js +2 -2
- package/modules/debugger.src.js +28 -13
- package/modules/dependency-wheel.d.ts +7 -1
- package/modules/dependency-wheel.js +2 -2
- package/modules/dependency-wheel.src.d.ts +7 -1
- package/modules/dependency-wheel.src.js +440 -28
- package/modules/dotplot.js +2 -2
- package/modules/dotplot.src.js +36 -19
- package/modules/drag-panes.js +2 -2
- package/modules/drag-panes.src.js +28 -13
- package/modules/draggable-points.js +2 -2
- package/modules/draggable-points.src.js +30 -17
- package/modules/drilldown.js +2 -2
- package/modules/drilldown.src.js +49 -35
- package/modules/dumbbell.js +2 -2
- package/modules/dumbbell.src.js +86 -40
- package/modules/export-data.d.ts +66 -1
- package/modules/export-data.js +2 -2
- package/modules/export-data.src.d.ts +66 -1
- package/modules/export-data.src.js +56 -36
- package/modules/exporting.d.ts +0 -103
- package/modules/exporting.js +2 -2
- package/modules/exporting.src.d.ts +0 -103
- package/modules/exporting.src.js +97 -50
- package/modules/flowmap.js +3 -2
- package/modules/flowmap.src.js +52 -26
- package/modules/full-screen.js +2 -2
- package/modules/full-screen.src.js +31 -16
- package/modules/funnel.d.ts +3 -3
- package/modules/funnel.js +2 -2
- package/modules/funnel.src.d.ts +3 -3
- package/modules/funnel.src.js +82 -50
- package/modules/funnel3d.js +2 -2
- package/modules/funnel3d.src.js +56 -40
- package/modules/gantt.d.ts +47 -0
- package/modules/gantt.js +8 -8
- package/modules/gantt.src.d.ts +47 -0
- package/modules/gantt.src.js +602 -156
- package/modules/geoheatmap.d.ts +13 -12
- package/modules/geoheatmap.js +2 -2
- package/modules/geoheatmap.src.d.ts +13 -12
- package/modules/geoheatmap.src.js +44 -29
- package/modules/grid-axis.js +2 -2
- package/modules/grid-axis.src.js +42 -20
- package/modules/heatmap.d.ts +0 -12
- package/modules/heatmap.js +4 -4
- package/modules/heatmap.src.d.ts +0 -12
- package/modules/heatmap.src.js +102 -71
- package/modules/heikinashi.js +2 -2
- package/modules/heikinashi.src.js +31 -16
- package/modules/histogram-bellcurve.js +2 -2
- package/modules/histogram-bellcurve.src.js +70 -38
- package/modules/hollowcandlestick.js +2 -2
- package/modules/hollowcandlestick.src.js +45 -30
- package/modules/item-series.js +2 -2
- package/modules/item-series.src.js +81 -21
- package/modules/lollipop.js +2 -2
- package/modules/lollipop.src.js +36 -21
- package/modules/map.d.ts +0 -20
- package/modules/map.js +4 -4
- package/modules/map.src.d.ts +0 -20
- package/modules/map.src.js +212 -140
- package/modules/marker-clusters.js +2 -2
- package/modules/marker-clusters.src.js +31 -18
- package/modules/mouse-wheel-zoom.js +2 -2
- package/modules/mouse-wheel-zoom.src.js +60 -18
- package/modules/navigator.d.ts +47 -0
- package/modules/navigator.js +2 -2
- package/modules/navigator.src.d.ts +47 -0
- package/modules/navigator.src.js +556 -95
- package/modules/networkgraph.js +2 -2
- package/modules/networkgraph.src.js +99 -57
- package/modules/no-data-to-display.js +2 -2
- package/modules/no-data-to-display.src.js +31 -16
- package/modules/non-cartesian-zoom.js +2 -2
- package/modules/non-cartesian-zoom.src.js +28 -13
- package/modules/offline-exporting.js +2 -2
- package/modules/offline-exporting.src.js +67 -25
- package/modules/organization.js +4 -2
- package/modules/organization.src.js +75 -30
- package/modules/parallel-coordinates.js +2 -2
- package/modules/parallel-coordinates.src.js +37 -19
- package/modules/pareto.js +2 -2
- package/modules/pareto.src.js +45 -29
- package/modules/pathfinder.js +2 -2
- package/modules/pathfinder.src.js +37 -21
- package/modules/pattern-fill.js +2 -2
- package/modules/pattern-fill.src.js +34 -17
- package/modules/pictorial.js +2 -2
- package/modules/pictorial.src.js +62 -43
- package/modules/pointandfigure.js +2 -2
- package/modules/pointandfigure.src.js +35 -19
- package/modules/price-indicator.js +2 -2
- package/modules/price-indicator.src.js +32 -16
- package/modules/pyramid3d.js +2 -2
- package/modules/pyramid3d.src.js +31 -16
- package/modules/renko.js +2 -2
- package/modules/renko.src.js +34 -19
- package/modules/sankey.js +2 -2
- package/modules/sankey.src.js +80 -51
- package/modules/series-label.js +2 -2
- package/modules/series-label.src.js +42 -28
- package/modules/series-on-point.js +2 -2
- package/modules/series-on-point.src.js +40 -25
- package/modules/solid-gauge.d.ts +3 -3
- package/modules/solid-gauge.js +2 -2
- package/modules/solid-gauge.src.d.ts +3 -3
- package/modules/solid-gauge.src.js +54 -33
- package/modules/sonification.js +2 -2
- package/modules/sonification.src.js +56 -40
- package/modules/static-scale.js +2 -2
- package/modules/static-scale.src.js +28 -13
- package/modules/stock-tools.js +3 -3
- package/modules/stock-tools.src.js +90 -43
- package/modules/stock.d.ts +47 -0
- package/modules/stock.js +6 -6
- package/modules/stock.src.d.ts +47 -0
- package/modules/stock.src.js +650 -185
- package/modules/streamgraph.js +2 -2
- package/modules/streamgraph.src.js +31 -16
- package/modules/sunburst.js +2 -2
- package/modules/sunburst.src.js +137 -71
- package/modules/textpath.js +2 -2
- package/modules/textpath.src.js +28 -13
- package/modules/tiledwebmap.js +3 -3
- package/modules/tiledwebmap.src.js +65 -32
- package/modules/tilemap.js +2 -2
- package/modules/tilemap.src.js +41 -25
- package/modules/timeline.js +2 -2
- package/modules/timeline.src.js +47 -25
- package/modules/treegraph.js +2 -2
- package/modules/treegraph.src.js +83 -50
- package/modules/treegrid.js +2 -2
- package/modules/treegrid.src.js +76 -44
- package/modules/treemap.js +2 -2
- package/modules/treemap.src.js +116 -62
- package/modules/variable-pie.js +2 -2
- package/modules/variable-pie.src.js +39 -21
- package/modules/variwide.js +2 -2
- package/modules/variwide.src.js +32 -17
- package/modules/vector.js +2 -2
- package/modules/vector.src.js +37 -24
- package/modules/venn.js +2 -2
- package/modules/venn.src.js +42 -26
- package/modules/windbarb.js +2 -2
- package/modules/windbarb.src.js +51 -38
- package/modules/wordcloud.js +2 -2
- package/modules/wordcloud.src.js +34 -17
- package/modules/xrange.js +2 -2
- package/modules/xrange.src.js +43 -28
- package/options/abands.d.ts +722 -83
- package/options/abands.src.d.ts +722 -83
- package/options/ad.d.ts +381 -26
- package/options/ad.src.d.ts +381 -26
- package/options/ao.d.ts +744 -70
- package/options/ao.src.d.ts +744 -70
- package/options/apo.d.ts +381 -26
- package/options/apo.src.d.ts +381 -26
- package/options/arcdiagram.d.ts +80 -534
- package/options/arcdiagram.src.d.ts +80 -534
- package/options/area.d.ts +432 -129
- package/options/area.src.d.ts +432 -129
- package/options/arearange.d.ts +46 -4
- package/options/arearange.src.d.ts +46 -4
- package/options/areaspline.d.ts +141 -866
- package/options/areaspline.src.d.ts +141 -866
- package/options/areasplinerange.d.ts +221 -871
- package/options/areasplinerange.src.d.ts +221 -871
- package/options/aroon.d.ts +432 -124
- package/options/aroon.src.d.ts +432 -124
- package/options/aroonoscillator.d.ts +127 -689
- package/options/aroonoscillator.src.d.ts +127 -689
- package/options/atr.d.ts +381 -71
- package/options/atr.src.d.ts +381 -71
- package/options/bar.d.ts +103 -12
- package/options/bar.src.d.ts +103 -12
- package/options/bb.d.ts +87 -762
- package/options/bb.src.d.ts +87 -762
- package/options/bellcurve.d.ts +87 -364
- package/options/bellcurve.src.d.ts +87 -364
- package/options/boxplot.d.ts +82 -13
- package/options/boxplot.src.d.ts +82 -13
- package/options/bubble.d.ts +83 -874
- package/options/bubble.src.d.ts +83 -874
- package/options/bullet.d.ts +354 -717
- package/options/bullet.src.d.ts +354 -717
- package/options/candlestick.d.ts +99 -1214
- package/options/candlestick.src.d.ts +99 -1214
- package/options/cci.d.ts +381 -26
- package/options/cci.src.d.ts +381 -26
- package/options/chaikin.d.ts +728 -83
- package/options/chaikin.src.d.ts +728 -83
- package/options/cmf.d.ts +381 -26
- package/options/cmf.src.d.ts +381 -26
- package/options/cmo.d.ts +730 -79
- package/options/cmo.src.d.ts +730 -79
- package/options/column.d.ts +1265 -99
- package/options/column.src.d.ts +1265 -99
- package/options/columnpyramid.d.ts +102 -1158
- package/options/columnpyramid.src.d.ts +102 -1158
- package/options/columnrange.d.ts +952 -95
- package/options/columnrange.src.d.ts +952 -95
- package/options/contour.d.ts +31 -443
- package/options/contour.src.d.ts +31 -443
- package/options/cylinder.d.ts +100 -12
- package/options/cylinder.src.d.ts +100 -12
- package/options/dema.d.ts +80 -736
- package/options/dema.src.d.ts +80 -736
- package/options/dependencywheel.d.ts +599 -218
- package/options/dependencywheel.src.d.ts +599 -218
- package/options/disparityindex.d.ts +84 -365
- package/options/disparityindex.src.d.ts +84 -365
- package/options/dmi.d.ts +86 -775
- package/options/dmi.src.d.ts +86 -775
- package/options/dpo.d.ts +83 -365
- package/options/dpo.src.d.ts +83 -365
- package/options/dumbbell.d.ts +27 -4
- package/options/dumbbell.src.d.ts +27 -4
- package/options/ema.d.ts +81 -703
- package/options/ema.src.d.ts +81 -703
- package/options/errorbar.d.ts +91 -1161
- package/options/errorbar.src.d.ts +91 -1161
- package/options/flags.d.ts +98 -1192
- package/options/flags.src.d.ts +98 -1192
- package/options/flowmap.d.ts +48 -373
- package/options/flowmap.src.d.ts +48 -373
- package/options/funnel.d.ts +40 -3
- package/options/funnel.src.d.ts +40 -3
- package/options/gantt.d.ts +37 -40
- package/options/gantt.src.d.ts +37 -40
- package/options/gauge.d.ts +398 -472
- package/options/gauge.src.d.ts +398 -472
- package/options/geoheatmap.d.ts +462 -63
- package/options/geoheatmap.src.d.ts +462 -63
- package/options/heatmap.d.ts +31 -380
- package/options/heatmap.src.d.ts +31 -380
- package/options/heikinashi.d.ts +20 -2
- package/options/heikinashi.src.d.ts +20 -2
- package/options/hlc.d.ts +20 -2
- package/options/hlc.src.d.ts +20 -2
- package/options/ikh.d.ts +750 -103
- package/options/ikh.src.d.ts +750 -103
- package/options/item.d.ts +34 -74
- package/options/item.src.d.ts +34 -74
- package/options/keltnerchannels.d.ts +87 -708
- package/options/keltnerchannels.src.d.ts +87 -708
- package/options/klinger.d.ts +34 -365
- package/options/klinger.src.d.ts +34 -365
- package/options/line.d.ts +151 -851
- package/options/line.src.d.ts +151 -851
- package/options/linearregression.d.ts +960 -85
- package/options/linearregression.src.d.ts +960 -85
- package/options/linearregressionangle.d.ts +96 -699
- package/options/linearregressionangle.src.d.ts +96 -699
- package/options/linearregressionintercept.d.ts +381 -26
- package/options/linearregressionintercept.src.d.ts +381 -26
- package/options/linearregressionslope.d.ts +381 -26
- package/options/linearregressionslope.src.d.ts +381 -26
- package/options/lollipop.d.ts +214 -851
- package/options/lollipop.src.d.ts +214 -851
- package/options/macd.d.ts +386 -83
- package/options/macd.src.d.ts +386 -83
- package/options/map.d.ts +470 -36
- package/options/map.src.d.ts +470 -36
- package/options/mapbubble.d.ts +43 -532
- package/options/mapbubble.src.d.ts +43 -532
- package/options/mapline.d.ts +135 -58
- package/options/mapline.src.d.ts +135 -58
- package/options/mappoint.d.ts +205 -283
- package/options/mappoint.src.d.ts +205 -283
- package/options/mfi.d.ts +772 -82
- package/options/mfi.src.d.ts +772 -82
- package/options/momentum.d.ts +381 -71
- package/options/momentum.src.d.ts +381 -71
- package/options/natr.d.ts +776 -75
- package/options/natr.src.d.ts +776 -75
- package/options/networkgraph.d.ts +184 -207
- package/options/networkgraph.src.d.ts +184 -207
- package/options/obv.d.ts +426 -26
- package/options/obv.src.d.ts +426 -26
- package/options/ohlc.d.ts +77 -14
- package/options/ohlc.src.d.ts +77 -14
- package/options/packedbubble.d.ts +76 -696
- package/options/packedbubble.src.d.ts +76 -696
- package/options/pareto.d.ts +28 -364
- package/options/pareto.src.d.ts +28 -364
- package/options/pc.d.ts +724 -85
- package/options/pc.src.d.ts +724 -85
- package/options/pictorial.d.ts +1093 -58
- package/options/pictorial.src.d.ts +1093 -58
- package/options/pie.d.ts +595 -129
- package/options/pie.src.d.ts +595 -129
- package/options/pivotpoints.d.ts +34 -365
- package/options/pivotpoints.src.d.ts +34 -365
- package/options/pointandfigure.d.ts +10 -50
- package/options/pointandfigure.src.d.ts +10 -50
- package/options/polygon.d.ts +803 -74
- package/options/polygon.src.d.ts +803 -74
- package/options/ppo.d.ts +34 -365
- package/options/ppo.src.d.ts +34 -365
- package/options/priceenvelopes.d.ts +93 -719
- package/options/priceenvelopes.src.d.ts +93 -719
- package/options/psar.d.ts +34 -365
- package/options/psar.src.d.ts +34 -365
- package/options/pyramid.d.ts +35 -3
- package/options/pyramid.src.d.ts +35 -3
- package/options/renko.d.ts +25 -2
- package/options/renko.src.d.ts +25 -2
- package/options/roc.d.ts +78 -712
- package/options/roc.src.d.ts +78 -712
- package/options/rsi.d.ts +34 -365
- package/options/rsi.src.d.ts +34 -365
- package/options/sankey.d.ts +27 -5
- package/options/sankey.src.d.ts +27 -5
- package/options/scatter.d.ts +896 -290
- package/options/scatter.src.d.ts +896 -290
- package/options/series.d.ts +938 -83
- package/options/series.src.d.ts +938 -83
- package/options/slowstochastic.d.ts +381 -26
- package/options/slowstochastic.src.d.ts +381 -26
- package/options/sma.d.ts +729 -79
- package/options/sma.src.d.ts +729 -79
- package/options/solidgauge.d.ts +882 -105
- package/options/solidgauge.src.d.ts +882 -105
- package/options/spline.d.ts +389 -90
- package/options/spline.src.d.ts +389 -90
- package/options/stochastic.d.ts +83 -716
- package/options/stochastic.src.d.ts +83 -716
- package/options/streamgraph.d.ts +97 -364
- package/options/streamgraph.src.d.ts +97 -364
- package/options/sunburst.d.ts +87 -19
- package/options/sunburst.src.d.ts +87 -19
- package/options/supertrend.d.ts +77 -749
- package/options/supertrend.src.d.ts +77 -749
- package/options/tema.d.ts +83 -365
- package/options/tema.src.d.ts +83 -365
- package/options/tiledwebmap.d.ts +13 -72
- package/options/tiledwebmap.src.d.ts +13 -72
- package/options/tilemap.d.ts +372 -533
- package/options/tilemap.src.d.ts +372 -533
- package/options/timeline.d.ts +49 -154
- package/options/timeline.src.d.ts +49 -154
- package/options/treegraph.d.ts +174 -696
- package/options/treegraph.src.d.ts +174 -696
- package/options/treemap.d.ts +468 -1079
- package/options/treemap.src.d.ts +468 -1079
- package/options/trendline.d.ts +381 -26
- package/options/trendline.src.d.ts +381 -26
- package/options/trix.d.ts +712 -82
- package/options/trix.src.d.ts +712 -82
- package/options/variablepie.d.ts +130 -587
- package/options/variablepie.src.d.ts +130 -587
- package/options/variwide.d.ts +1123 -94
- package/options/variwide.src.d.ts +1123 -94
- package/options/vbp.d.ts +57 -383
- package/options/vbp.src.d.ts +57 -383
- package/options/vector.d.ts +22 -58
- package/options/vector.src.d.ts +22 -58
- package/options/venn.d.ts +32 -78
- package/options/venn.src.d.ts +32 -78
- package/options/vwap.d.ts +122 -703
- package/options/vwap.src.d.ts +122 -703
- package/options/waterfall.d.ts +139 -1150
- package/options/waterfall.src.d.ts +139 -1150
- package/options/williamsr.d.ts +381 -76
- package/options/williamsr.src.d.ts +381 -76
- package/options/windbarb.d.ts +39 -2
- package/options/windbarb.src.d.ts +39 -2
- package/options/wma.d.ts +78 -704
- package/options/wma.src.d.ts +78 -704
- package/options/wordcloud.d.ts +98 -595
- package/options/wordcloud.src.d.ts +98 -595
- package/options/xrange.d.ts +166 -1056
- package/options/xrange.src.d.ts +166 -1056
- package/options/zigzag.d.ts +34 -410
- package/options/zigzag.src.d.ts +34 -410
- package/package.json +1 -1
- package/standalone-navigator.js +4 -4
- package/standalone-navigator.src.js +829 -553
- package/themes/adaptive.js +2 -2
- package/themes/adaptive.src.js +33 -18
- package/themes/avocado.js +2 -2
- package/themes/avocado.src.js +28 -13
- package/themes/dark-unica.js +2 -2
- package/themes/dark-unica.src.js +28 -13
- package/themes/grid-light.js +2 -2
- package/themes/grid-light.src.js +28 -13
- package/themes/high-contrast.js +2 -2
- package/themes/high-contrast.src.js +28 -13
- package/themes/sand-signika.js +2 -2
- package/themes/sand-signika.src.js +28 -13
- package/themes/sunset.js +2 -2
- package/themes/sunset.src.js +28 -13
- package/css/.stylelintrc.json +0 -8
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Highcharts JS v13.0.
|
|
2
|
+
* @license Highcharts JS v13.0.2 (2026-08-27)
|
|
3
3
|
* @module highcharts/highcharts-autoload
|
|
4
4
|
*
|
|
5
5
|
* (c) 2009-2024 Torstein Honsi
|
|
@@ -19,16 +19,31 @@
|
|
|
19
19
|
return /******/ (() => { // webpackBootstrap
|
|
20
20
|
/******/ "use strict";
|
|
21
21
|
/******/ // The require scope
|
|
22
|
-
/******/
|
|
22
|
+
/******/ const __webpack_require__ = {};
|
|
23
23
|
/******/
|
|
24
24
|
/************************************************************************/
|
|
25
25
|
/******/ /* webpack/runtime/define property getters */
|
|
26
26
|
/******/ (() => {
|
|
27
|
-
/******/ // define getter functions for harmony exports
|
|
27
|
+
/******/ // define getter/value functions for harmony exports
|
|
28
28
|
/******/ __webpack_require__.d = (exports, definition) => {
|
|
29
|
-
/******/
|
|
30
|
-
/******/
|
|
31
|
-
/******/
|
|
29
|
+
/******/ if(Array.isArray(definition)) {
|
|
30
|
+
/******/ var i = 0;
|
|
31
|
+
/******/ while(i < definition.length) {
|
|
32
|
+
/******/ var key = definition[i++];
|
|
33
|
+
/******/ var binding = definition[i++];
|
|
34
|
+
/******/ if(!__webpack_require__.o(exports, key)) {
|
|
35
|
+
/******/ if(binding === 0) {
|
|
36
|
+
/******/ Object.defineProperty(exports, key, { enumerable: true, value: definition[i++] });
|
|
37
|
+
/******/ } else {
|
|
38
|
+
/******/ Object.defineProperty(exports, key, { enumerable: true, get: binding });
|
|
39
|
+
/******/ }
|
|
40
|
+
/******/ } else if(binding === 0) { i++; }
|
|
41
|
+
/******/ }
|
|
42
|
+
/******/ } else {
|
|
43
|
+
/******/ for(var key in definition) {
|
|
44
|
+
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|
45
|
+
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
46
|
+
/******/ }
|
|
32
47
|
/******/ }
|
|
33
48
|
/******/ }
|
|
34
49
|
/******/ };
|
|
@@ -40,7 +55,7 @@ return /******/ (() => { // webpackBootstrap
|
|
|
40
55
|
/******/ })();
|
|
41
56
|
/******/
|
|
42
57
|
/************************************************************************/
|
|
43
|
-
|
|
58
|
+
let __webpack_exports__ = {};
|
|
44
59
|
|
|
45
60
|
// EXPORTS
|
|
46
61
|
__webpack_require__.d(__webpack_exports__, {
|
|
@@ -76,7 +91,7 @@ var Globals;
|
|
|
76
91
|
* Constants
|
|
77
92
|
*
|
|
78
93
|
* */
|
|
79
|
-
Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '13.0.
|
|
94
|
+
Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '13.0.2', Globals.win = (typeof window !== 'undefined' ?
|
|
80
95
|
window :
|
|
81
96
|
{}), // eslint-disable-line node/no-unsupported-features/es-builtins
|
|
82
97
|
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 = [
|
|
@@ -403,6 +418,29 @@ const ChartDefaults = {
|
|
|
403
418
|
* @context Highcharts.Chart
|
|
404
419
|
* @apioption chart.events.load
|
|
405
420
|
*/
|
|
421
|
+
/**
|
|
422
|
+
* Fires while the chart is panned by mouse drag. Panning must be
|
|
423
|
+
* enabled through [chart.panning](#chart.panning). One parameter,
|
|
424
|
+
* `event`, is passed to the function, containing common event
|
|
425
|
+
* information as well as `event.originalEvent`, the underlying pointer
|
|
426
|
+
* event. Note that the event fires for every mouse move during the
|
|
427
|
+
* drag, not once per gesture.
|
|
428
|
+
*
|
|
429
|
+
* Calling `event.preventDefault()` or returning false prevents the
|
|
430
|
+
* default panning of the axes. In Highcharts Maps, and on ordinal axes
|
|
431
|
+
* in Highcharts Stock, the panning is applied outside the default
|
|
432
|
+
* action and is not prevented.
|
|
433
|
+
*
|
|
434
|
+
* Panning by touch does not fire this event, unless
|
|
435
|
+
* [chart.zooming.singleTouch](#chart.zooming.singleTouch) is enabled and
|
|
436
|
+
* no zoom type is set. Single-finger drags are then handled as mouse
|
|
437
|
+
* drags and fire this event.
|
|
438
|
+
*
|
|
439
|
+
* @type {Highcharts.ChartPanCallbackFunction}
|
|
440
|
+
* @since 7.0.2
|
|
441
|
+
* @context Highcharts.Chart
|
|
442
|
+
* @apioption chart.events.pan
|
|
443
|
+
*/
|
|
406
444
|
/**
|
|
407
445
|
* Fires when the chart is redrawn, either after a call to
|
|
408
446
|
* `chart.redraw()` or after an axis, series or point is modified with
|
|
@@ -991,7 +1029,7 @@ const ChartDefaults = {
|
|
|
991
1029
|
* @type {Highcharts.ColorType}
|
|
992
1030
|
* @since 2.1.7
|
|
993
1031
|
*/
|
|
994
|
-
selectionMarkerFill: 'color-mix(var(--highcharts-highlight-color-80) 25%, transparent)', // eslint-disable-line max-len
|
|
1032
|
+
selectionMarkerFill: 'color-mix(in srgb, var(--highcharts-highlight-color-80) 25%, transparent)', // eslint-disable-line max-len
|
|
995
1033
|
/**
|
|
996
1034
|
* Whether to apply a drop shadow to the global series group. This causes
|
|
997
1035
|
* all the series to have the same shadow. Contrary to the `series.shadow`
|
|
@@ -2417,7 +2455,7 @@ function getStyle(el, prop, toInt) {
|
|
|
2417
2455
|
const css = win.getComputedStyle(el, void 0); // eslint-disable-line no-undefined
|
|
2418
2456
|
if (css) {
|
|
2419
2457
|
style = css.getPropertyValue(prop);
|
|
2420
|
-
if (
|
|
2458
|
+
if (toInt ?? prop !== 'opacity') {
|
|
2421
2459
|
style = pInt(style);
|
|
2422
2460
|
}
|
|
2423
2461
|
}
|
|
@@ -2667,7 +2705,7 @@ function merge(extendOrSource, ...sources) {
|
|
|
2667
2705
|
function normalizeTickInterval(interval, multiples, magnitude, allowDecimals, hasTickAmount) {
|
|
2668
2706
|
let i, retInterval = interval;
|
|
2669
2707
|
// Round to a tenfold of 1, 2, 2.5 or 5
|
|
2670
|
-
magnitude =
|
|
2708
|
+
magnitude = (magnitude ?? getMagnitude(interval));
|
|
2671
2709
|
const normalized = interval / magnitude;
|
|
2672
2710
|
// Multiples for a linear scale
|
|
2673
2711
|
if (!multiples) {
|
|
@@ -2780,20 +2818,22 @@ function pad(number, length, padder) {
|
|
|
2780
2818
|
.replace('-', '')
|
|
2781
2819
|
.length).join(padder || '0') + number;
|
|
2782
2820
|
}
|
|
2783
|
-
/* eslint-disable jsdoc
|
|
2821
|
+
/* eslint-disable valid-jsdoc */
|
|
2784
2822
|
/**
|
|
2785
2823
|
* Return the first value that is not null or undefined.
|
|
2786
2824
|
*
|
|
2825
|
+
* @deprecated 13.0.2
|
|
2826
|
+
* Use nullish coalescing (`??`) or explicit fallback logic instead.
|
|
2827
|
+
*
|
|
2787
2828
|
* @function Highcharts.pick<T>
|
|
2788
2829
|
*
|
|
2789
|
-
* @param {...
|
|
2830
|
+
* @param {...(T|null|undefined)} args
|
|
2790
2831
|
* Variable number of arguments to inspect.
|
|
2791
2832
|
*
|
|
2792
2833
|
* @return {T}
|
|
2793
2834
|
* The value of the first argument that is not null or undefined.
|
|
2794
2835
|
*/
|
|
2795
|
-
function pick() {
|
|
2796
|
-
const args = arguments;
|
|
2836
|
+
function pick(...args) {
|
|
2797
2837
|
const length = args.length;
|
|
2798
2838
|
for (let i = 0; i < length; i++) {
|
|
2799
2839
|
const arg = args[i];
|
|
@@ -2802,7 +2842,7 @@ function pick() {
|
|
|
2802
2842
|
}
|
|
2803
2843
|
}
|
|
2804
2844
|
}
|
|
2805
|
-
/* eslint-enable jsdoc
|
|
2845
|
+
/* eslint-enable valid-jsdoc */
|
|
2806
2846
|
/**
|
|
2807
2847
|
* Shortcut for parseInt
|
|
2808
2848
|
*
|
|
@@ -3185,7 +3225,8 @@ function insertItem(item, collection) {
|
|
|
3185
3225
|
!collection[i] ||
|
|
3186
3226
|
// Handle index option, the element to insert has lower index
|
|
3187
3227
|
(isNumber(indexOption) &&
|
|
3188
|
-
indexOption <
|
|
3228
|
+
indexOption < (collection[i].options.index ??
|
|
3229
|
+
collection[i]._i)) ||
|
|
3189
3230
|
// Insert the new item before other internal items
|
|
3190
3231
|
// (navigator)
|
|
3191
3232
|
collection[i].options.isInternal) {
|
|
@@ -3271,7 +3312,7 @@ const uniqueKey = (function () {
|
|
|
3271
3312
|
* State of the serial mode.
|
|
3272
3313
|
*/
|
|
3273
3314
|
function useSerialIds(mode) {
|
|
3274
|
-
return (serialMode =
|
|
3315
|
+
return (serialMode = (mode ?? serialMode));
|
|
3275
3316
|
}
|
|
3276
3317
|
/* *
|
|
3277
3318
|
*
|
|
@@ -3737,6 +3778,10 @@ const isDateTimeFormatOptions = (obj) => obj.main === void 0;
|
|
|
3737
3778
|
*
|
|
3738
3779
|
* @param {Highcharts.TimeOptions} [options] Time options as defined in
|
|
3739
3780
|
* [chart.options.time](/highcharts/time).
|
|
3781
|
+
*
|
|
3782
|
+
* @param {Highcharts.LangOptions} [lang]
|
|
3783
|
+
* Language options. When `options.locale` is not set, `lang.locale` is used as
|
|
3784
|
+
* the locale fallback for locale-aware date formatting.
|
|
3740
3785
|
*/
|
|
3741
3786
|
class TimeBase {
|
|
3742
3787
|
/* *
|
|
@@ -3755,8 +3800,8 @@ class TimeBase {
|
|
|
3755
3800
|
};
|
|
3756
3801
|
this.variableTimezone = false;
|
|
3757
3802
|
this.Date = TimeBase_win.Date;
|
|
3758
|
-
this.update(options);
|
|
3759
3803
|
this.lang = lang;
|
|
3804
|
+
this.update(options);
|
|
3760
3805
|
}
|
|
3761
3806
|
/* *
|
|
3762
3807
|
*
|
|
@@ -3868,7 +3913,9 @@ class TimeBase {
|
|
|
3868
3913
|
/**
|
|
3869
3914
|
* Shorthand to get a cached `Intl.DateTimeFormat` instance.
|
|
3870
3915
|
*/
|
|
3871
|
-
dateTimeFormat(options, timestamp, locale = this.options.locale ||
|
|
3916
|
+
dateTimeFormat(options, timestamp, locale = (this.options.locale ||
|
|
3917
|
+
this.lang?.locale ||
|
|
3918
|
+
pageLang)) {
|
|
3872
3919
|
const cacheKey = JSON.stringify(options) + locale;
|
|
3873
3920
|
if (isString(options)) {
|
|
3874
3921
|
options = this.str2dtf(options);
|
|
@@ -3954,17 +4001,16 @@ class TimeBase {
|
|
|
3954
4001
|
// eslint-disable-next-line new-cap
|
|
3955
4002
|
let d = this.Date.UTC(year, month, date, hours, minutes || 0, seconds || 0, milliseconds || 0);
|
|
3956
4003
|
if (this.timezone !== 'UTC') {
|
|
3957
|
-
const offset = this.getTimezoneOffset(d);
|
|
4004
|
+
const offset = this.getTimezoneOffset(d), localHours = (hours - offset / timeUnits.hour + 24) % 24;
|
|
3958
4005
|
d += offset;
|
|
3959
|
-
// Adjustments close to DST transitions
|
|
3960
4006
|
if (
|
|
3961
|
-
//
|
|
3962
|
-
//
|
|
4007
|
+
// Limit the number of calls to `getTimezoneOffset` to months
|
|
4008
|
+
// where DST changes may occur. According to
|
|
3963
4009
|
// https://en.wikipedia.org/wiki/Daylight_saving_time_by_country,
|
|
3964
4010
|
// DST change may only occur in these months.
|
|
3965
4011
|
[2, 3, 8, 9, 10, 11].indexOf(month) !== -1 &&
|
|
3966
|
-
// DST
|
|
3967
|
-
(
|
|
4012
|
+
// DST changes only occur at night (#24420)
|
|
4013
|
+
(localHours < 5 || localHours > 20)) {
|
|
3968
4014
|
const newOffset = this.getTimezoneOffset(d);
|
|
3969
4015
|
if (offset !== newOffset) {
|
|
3970
4016
|
d += newOffset - offset;
|
|
@@ -6701,6 +6747,9 @@ const defaultOptions = {
|
|
|
6701
6747
|
* below the column, but as `followTouchMove` is true, the tooltip will
|
|
6702
6748
|
* jump from column to column as the user swipes across the plot area.
|
|
6703
6749
|
*
|
|
6750
|
+
* @sample {highcharts} highcharts/tooltip/followtouchmove/
|
|
6751
|
+
* Tooltip follows touch move
|
|
6752
|
+
*
|
|
6704
6753
|
* @type {boolean}
|
|
6705
6754
|
* @default {highcharts} true
|
|
6706
6755
|
* @default {highstock} true
|
|
@@ -7483,10 +7532,14 @@ const defaultOptions = {
|
|
|
7483
7532
|
* @type {Highcharts.CSSObject}
|
|
7484
7533
|
*/
|
|
7485
7534
|
style: {
|
|
7486
|
-
/**
|
|
7535
|
+
/**
|
|
7536
|
+
* @type {Highcharts.ColorType}
|
|
7537
|
+
*/
|
|
7487
7538
|
color: 'var(--highcharts-neutral-color-80)',
|
|
7488
7539
|
cursor: 'default',
|
|
7489
|
-
/**
|
|
7540
|
+
/**
|
|
7541
|
+
* @type {number|string}
|
|
7542
|
+
*/
|
|
7490
7543
|
fontSize: '0.8em'
|
|
7491
7544
|
},
|
|
7492
7545
|
/**
|
|
@@ -7802,6 +7855,41 @@ const DefaultOptions = {
|
|
|
7802
7855
|
* @param {global.Event} event
|
|
7803
7856
|
* The event that occurred.
|
|
7804
7857
|
*/
|
|
7858
|
+
/**
|
|
7859
|
+
* Gets fired while the chart is panned by mouse drag. Calling
|
|
7860
|
+
* `event.preventDefault()` or returning `false` prevents the default panning
|
|
7861
|
+
* of the axes.
|
|
7862
|
+
*
|
|
7863
|
+
* @callback Highcharts.ChartPanCallbackFunction
|
|
7864
|
+
*
|
|
7865
|
+
* @param {Highcharts.Chart} this
|
|
7866
|
+
* The chart on which the event occurred.
|
|
7867
|
+
*
|
|
7868
|
+
* @param {Highcharts.ChartPanEventObject} event
|
|
7869
|
+
* The event that occurred.
|
|
7870
|
+
*/
|
|
7871
|
+
/**
|
|
7872
|
+
* Contains common event information. Through the `originalEvent` property you
|
|
7873
|
+
* can access the pointer event that triggered the panning.
|
|
7874
|
+
*
|
|
7875
|
+
* @interface Highcharts.ChartPanEventObject
|
|
7876
|
+
*/ /**
|
|
7877
|
+
* The pointer event that triggered the panning.
|
|
7878
|
+
* @name Highcharts.ChartPanEventObject#originalEvent
|
|
7879
|
+
* @type {Highcharts.PointerEventObject}
|
|
7880
|
+
*/ /**
|
|
7881
|
+
* Prevents the default behavior of the event.
|
|
7882
|
+
* @name Highcharts.ChartPanEventObject#preventDefault
|
|
7883
|
+
* @type {Function}
|
|
7884
|
+
*/ /**
|
|
7885
|
+
* The event target.
|
|
7886
|
+
* @name Highcharts.ChartPanEventObject#target
|
|
7887
|
+
* @type {Highcharts.Chart}
|
|
7888
|
+
*/ /**
|
|
7889
|
+
* The event type.
|
|
7890
|
+
* @name Highcharts.ChartPanEventObject#type
|
|
7891
|
+
* @type {"pan"}
|
|
7892
|
+
*/
|
|
7805
7893
|
/**
|
|
7806
7894
|
* Fires when the chart is redrawn, either after a call to `chart.redraw()` or
|
|
7807
7895
|
* after an axis, series or point is modified with the `redraw` option set to
|
|
@@ -8177,7 +8265,9 @@ Color.None = new Color(''); // Must be last static for init
|
|
|
8177
8265
|
*/
|
|
8178
8266
|
/**
|
|
8179
8267
|
* A valid color type than can be parsed and handled by Highcharts. It can be a
|
|
8180
|
-
* color string, a gradient object, or a pattern
|
|
8268
|
+
* color string (including CSS expressions), a gradient object, or a pattern
|
|
8269
|
+
* object. Read more about colors in the [Highcharts
|
|
8270
|
+
* documentation](https://www.highcharts.com/docs/chart-design-and-style/colors).
|
|
8181
8271
|
*
|
|
8182
8272
|
* @typedef {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject} Highcharts.ColorType
|
|
8183
8273
|
*/
|
|
@@ -8409,24 +8499,22 @@ class Fx {
|
|
|
8409
8499
|
*/
|
|
8410
8500
|
update() {
|
|
8411
8501
|
const elem = this.elem, prop = this.prop, // If destroyed, it is null
|
|
8412
|
-
now = this.now, step = this.options.step;
|
|
8502
|
+
now = this.now ?? 1, step = this.options.step;
|
|
8413
8503
|
// Animation setter defined from outside
|
|
8414
8504
|
if (this[prop + 'Setter']) {
|
|
8415
8505
|
this[prop + 'Setter']();
|
|
8416
8506
|
// Other animations on SVGElement
|
|
8417
8507
|
}
|
|
8418
|
-
else if (elem.attr) {
|
|
8508
|
+
else if (elem && elem.attr) {
|
|
8419
8509
|
if (elem.element) {
|
|
8420
|
-
elem.attr(prop, now,
|
|
8510
|
+
elem.attr(prop, now, void 0, true);
|
|
8421
8511
|
}
|
|
8422
8512
|
// HTML styles, raw HTML content like container size
|
|
8423
8513
|
}
|
|
8424
|
-
else {
|
|
8425
|
-
elem.style[prop] = now + this.unit;
|
|
8426
|
-
}
|
|
8427
|
-
if (step) {
|
|
8428
|
-
step.call(elem, now, this);
|
|
8514
|
+
else if (elem) {
|
|
8515
|
+
elem.style[prop] = now + (this.unit || '');
|
|
8429
8516
|
}
|
|
8517
|
+
step?.call(elem, now, this);
|
|
8430
8518
|
}
|
|
8431
8519
|
/**
|
|
8432
8520
|
* Run an animation.
|
|
@@ -8444,12 +8532,10 @@ class Fx {
|
|
|
8444
8532
|
*
|
|
8445
8533
|
*/
|
|
8446
8534
|
run(from, to, unit) {
|
|
8447
|
-
const
|
|
8448
|
-
return timer.stopped ? false : self.step(gotoEnd);
|
|
8449
|
-
}, requestAnimationFrame = Fx_win.requestAnimationFrame ||
|
|
8535
|
+
const { elem, options } = this, { complete, curAnim = {} } = options, timer = (gotoEnd) => (timer.stopped ? false : this.step(gotoEnd)), requestAnimationFrame = Fx_win.requestAnimationFrame ||
|
|
8450
8536
|
function (step) {
|
|
8451
8537
|
setTimeout(step, 13);
|
|
8452
|
-
}, step =
|
|
8538
|
+
}, step = () => {
|
|
8453
8539
|
for (let i = 0; i < Fx.timers.length; i++) {
|
|
8454
8540
|
if (!Fx.timers[i]()) {
|
|
8455
8541
|
Fx.timers.splice(i--, 1);
|
|
@@ -8459,11 +8545,11 @@ class Fx {
|
|
|
8459
8545
|
requestAnimationFrame(step);
|
|
8460
8546
|
}
|
|
8461
8547
|
};
|
|
8462
|
-
if (from === to && !
|
|
8463
|
-
delete
|
|
8464
|
-
if (
|
|
8465
|
-
Object.keys(
|
|
8466
|
-
|
|
8548
|
+
if (from === to && !elem['forceAnimate:' + this.prop]) {
|
|
8549
|
+
delete curAnim[this.prop];
|
|
8550
|
+
if (complete &&
|
|
8551
|
+
Object.keys(curAnim).length === 0) {
|
|
8552
|
+
complete.call(elem);
|
|
8467
8553
|
}
|
|
8468
8554
|
}
|
|
8469
8555
|
else { // #7166
|
|
@@ -8473,7 +8559,7 @@ class Fx {
|
|
|
8473
8559
|
this.unit = unit;
|
|
8474
8560
|
this.now = this.start;
|
|
8475
8561
|
this.pos = 0;
|
|
8476
|
-
timer.elem =
|
|
8562
|
+
timer.elem = elem;
|
|
8477
8563
|
timer.prop = this.prop;
|
|
8478
8564
|
if (timer() && Fx.timers.push(timer) === 1) {
|
|
8479
8565
|
requestAnimationFrame(step);
|
|
@@ -8494,7 +8580,8 @@ class Fx {
|
|
|
8494
8580
|
step(gotoEnd) {
|
|
8495
8581
|
const t = +new Date(), options = this.options, elem = this.elem, complete = options.complete, duration = options.duration, curAnim = options.curAnim;
|
|
8496
8582
|
let ret, done;
|
|
8497
|
-
|
|
8583
|
+
// #2616, element is destroyed
|
|
8584
|
+
if (elem?.attr && !elem.element) {
|
|
8498
8585
|
ret = false;
|
|
8499
8586
|
}
|
|
8500
8587
|
else if (gotoEnd || t >= duration + this.startTime) {
|
|
@@ -8723,7 +8810,8 @@ Fx.timers = [];
|
|
|
8723
8810
|
* so it should be moved to the SVGRenderer.
|
|
8724
8811
|
*/
|
|
8725
8812
|
function setAnimation(animation, chart) {
|
|
8726
|
-
chart.renderer.globalAnimation =
|
|
8813
|
+
chart.renderer.globalAnimation =
|
|
8814
|
+
animation ?? chart.options.chart.animation ?? true;
|
|
8727
8815
|
}
|
|
8728
8816
|
/**
|
|
8729
8817
|
* Get the animation in object form, where a disabled animation is always
|
|
@@ -8784,6 +8872,11 @@ function getDeferredAnimation(chart, animation, series) {
|
|
|
8784
8872
|
/**
|
|
8785
8873
|
* The global animate method, which uses Fx to create individual animators.
|
|
8786
8874
|
*
|
|
8875
|
+
* @sample highcharts/members/renderer-basic
|
|
8876
|
+
* SVG elements with animation
|
|
8877
|
+
* @sample highcharts/members/animate
|
|
8878
|
+
* Animation without an owner element
|
|
8879
|
+
*
|
|
8787
8880
|
* @function Highcharts.animate
|
|
8788
8881
|
*
|
|
8789
8882
|
* @param {Highcharts.HTMLDOMElement|Highcharts.SVGElement} el
|
|
@@ -8799,14 +8892,12 @@ function getDeferredAnimation(chart, animation, series) {
|
|
|
8799
8892
|
*
|
|
8800
8893
|
* @return {void}
|
|
8801
8894
|
*/
|
|
8802
|
-
function animate(el, params, opt) {
|
|
8803
|
-
let start, unit = '', end, fx, args;
|
|
8895
|
+
function animate(el, params = { pos: 1 }, opt) {
|
|
8804
8896
|
if (!isObject(opt)) { // Number or undefined/null
|
|
8805
|
-
args = arguments;
|
|
8806
8897
|
opt = {
|
|
8807
|
-
duration:
|
|
8808
|
-
easing:
|
|
8809
|
-
complete:
|
|
8898
|
+
duration: arguments[2],
|
|
8899
|
+
easing: arguments[3],
|
|
8900
|
+
complete: arguments[4]
|
|
8810
8901
|
};
|
|
8811
8902
|
}
|
|
8812
8903
|
if (!isNumber(opt.duration)) {
|
|
@@ -8816,22 +8907,23 @@ function animate(el, params, opt) {
|
|
|
8816
8907
|
opt.easing :
|
|
8817
8908
|
(Math[opt.easing] || Math.easeInOutSine);
|
|
8818
8909
|
opt.curAnim = merge(params);
|
|
8819
|
-
objectEach(params,
|
|
8910
|
+
objectEach(params, (val, prop) => {
|
|
8820
8911
|
// Stop current running animation of this property
|
|
8821
|
-
|
|
8822
|
-
|
|
8823
|
-
|
|
8824
|
-
|
|
8825
|
-
|
|
8826
|
-
|
|
8827
|
-
|
|
8912
|
+
if (el) {
|
|
8913
|
+
stop(el, prop);
|
|
8914
|
+
}
|
|
8915
|
+
const fx = new Animation_Fx(el, opt, prop), d = params.d;
|
|
8916
|
+
let start = 0, end = void 0, unit = '';
|
|
8917
|
+
if (prop === 'd' && isArray(d)) {
|
|
8918
|
+
fx.paths = fx.initPath(el, el.pathArray, d);
|
|
8919
|
+
fx.toD = d;
|
|
8828
8920
|
end = 1;
|
|
8829
8921
|
}
|
|
8830
|
-
else if (el
|
|
8922
|
+
else if (el?.attr) {
|
|
8831
8923
|
start = el.attr(prop);
|
|
8832
8924
|
}
|
|
8833
|
-
else {
|
|
8834
|
-
start =
|
|
8925
|
+
else if (el) {
|
|
8926
|
+
start = +(getStyle(el, prop) || 0);
|
|
8835
8927
|
if (prop !== 'opacity') {
|
|
8836
8928
|
unit = 'px';
|
|
8837
8929
|
}
|
|
@@ -8842,7 +8934,10 @@ function animate(el, params, opt) {
|
|
|
8842
8934
|
if (typeof end === 'string' && end.match('px')) {
|
|
8843
8935
|
end = end.replace(/px/g, ''); // #4351
|
|
8844
8936
|
}
|
|
8845
|
-
|
|
8937
|
+
// Empty dashstyle animation crashes treemap on hover
|
|
8938
|
+
if (defined(end)) {
|
|
8939
|
+
fx.run(start, end, unit);
|
|
8940
|
+
}
|
|
8846
8941
|
});
|
|
8847
8942
|
}
|
|
8848
8943
|
/**
|
|
@@ -8866,28 +8961,11 @@ function animate(el, params, opt) {
|
|
|
8866
8961
|
* improvement in all cases where we stop the animation from .attr. Instead of
|
|
8867
8962
|
* stopping everything, we can just stop the actual attributes we're setting.
|
|
8868
8963
|
*/
|
|
8869
|
-
|
|
8870
|
-
|
|
8871
|
-
|
|
8872
|
-
while (i--) {
|
|
8873
|
-
if (Animation_Fx.timers[i].elem === el && (!prop || prop === Animation_Fx.timers[i].prop)) {
|
|
8874
|
-
Animation_Fx.timers[i].stopped = true; // #4667
|
|
8875
|
-
}
|
|
8964
|
+
const stop = (el, prop) => Animation_Fx.timers.forEach((timer) => {
|
|
8965
|
+
if (timer.elem === el && (!prop || prop === timer.prop)) {
|
|
8966
|
+
timer.stopped = true; // #4667
|
|
8876
8967
|
}
|
|
8877
|
-
}
|
|
8878
|
-
const animationExports = {
|
|
8879
|
-
animate,
|
|
8880
|
-
animObject,
|
|
8881
|
-
getDeferredAnimation,
|
|
8882
|
-
setAnimation,
|
|
8883
|
-
stop
|
|
8884
|
-
};
|
|
8885
|
-
/* *
|
|
8886
|
-
*
|
|
8887
|
-
* Default Export
|
|
8888
|
-
*
|
|
8889
|
-
* */
|
|
8890
|
-
/* harmony default export */ const AnimationUtilities = (animationExports);
|
|
8968
|
+
});
|
|
8891
8969
|
/* *
|
|
8892
8970
|
*
|
|
8893
8971
|
* API Options
|
|
@@ -9192,7 +9270,9 @@ class AST {
|
|
|
9192
9270
|
doc = { body };
|
|
9193
9271
|
}
|
|
9194
9272
|
const appendChildNodes = (node, addTo) => {
|
|
9195
|
-
|
|
9273
|
+
// Preserve the camelCase of SVG tags via localName (#24702).
|
|
9274
|
+
const tagName = node.localName ||
|
|
9275
|
+
node.nodeName.toLowerCase();
|
|
9196
9276
|
// Add allowed tags
|
|
9197
9277
|
const astNode = {
|
|
9198
9278
|
tagName
|
|
@@ -9306,6 +9386,8 @@ AST.allowedAttributes = [
|
|
|
9306
9386
|
'src',
|
|
9307
9387
|
'startOffset',
|
|
9308
9388
|
'stdDeviation',
|
|
9389
|
+
'stop-color',
|
|
9390
|
+
'stop-opacity',
|
|
9309
9391
|
'stroke-linecap',
|
|
9310
9392
|
'stroke-width',
|
|
9311
9393
|
'stroke',
|
|
@@ -9792,7 +9874,7 @@ function format(str = '', ctx, owner) {
|
|
|
9792
9874
|
replacement = `"${replacement}"`;
|
|
9793
9875
|
}
|
|
9794
9876
|
}
|
|
9795
|
-
str = str.replace(match.find,
|
|
9877
|
+
str = str.replace(match.find, (replacement ?? ''));
|
|
9796
9878
|
});
|
|
9797
9879
|
return hasSub ? format(str, ctx, owner) : str;
|
|
9798
9880
|
}
|
|
@@ -9909,9 +9991,7 @@ const Templating = {
|
|
|
9909
9991
|
* API Declarations
|
|
9910
9992
|
* */
|
|
9911
9993
|
/**
|
|
9912
|
-
*
|
|
9913
|
-
*
|
|
9914
|
-
* The Highcharts.Templating interface provides a structure for defining
|
|
9994
|
+
* The Highcharts.TemplatingObject interface provides a structure for defining
|
|
9915
9995
|
* helpers. Helpers can be used as conditional blocks or functions within
|
|
9916
9996
|
* expressions. Highcharts includes several built-in helpers and supports
|
|
9917
9997
|
* the addition of custom helpers.
|
|
@@ -9919,16 +9999,21 @@ const Templating = {
|
|
|
9919
9999
|
* @see [More information](
|
|
9920
10000
|
* https://www.highcharts.com/docs/chart-concepts/templating#helpers)
|
|
9921
10001
|
*
|
|
9922
|
-
* @
|
|
9923
|
-
|
|
9924
|
-
|
|
9925
|
-
|
|
9926
|
-
|
|
9927
|
-
|
|
9928
|
-
|
|
9929
|
-
|
|
9930
|
-
|
|
9931
|
-
|
|
10002
|
+
* @interface Highcharts.TemplatingObject
|
|
10003
|
+
*/ /**
|
|
10004
|
+
* @example
|
|
10005
|
+
* // Define a custom helper to return the absolute value of a number
|
|
10006
|
+
* Highcharts.Templating.helpers.abs = value => Math.abs(value);
|
|
10007
|
+
*
|
|
10008
|
+
* // Usage in a format string
|
|
10009
|
+
* format: 'Absolute value: {abs point.y}'
|
|
10010
|
+
*
|
|
10011
|
+
* @name Highcharts.TemplatingObject#helpers
|
|
10012
|
+
* @type {Record<string, Function>}
|
|
10013
|
+
*/ /**
|
|
10014
|
+
* @name Highcharts.Templating
|
|
10015
|
+
* @type {Highcharts.TemplatingObject}
|
|
10016
|
+
*/
|
|
9932
10017
|
(''); // Keeps doclets above in file
|
|
9933
10018
|
|
|
9934
10019
|
;// ./code/es-modules/Core/Renderer/RendererUtilities.js
|
|
@@ -10038,7 +10123,7 @@ var RendererUtilities;
|
|
|
10038
10123
|
boxes = boxes.map((box) => ({
|
|
10039
10124
|
size: box.size,
|
|
10040
10125
|
targets: [box.target],
|
|
10041
|
-
align:
|
|
10126
|
+
align: (box.align ?? 0.5)
|
|
10042
10127
|
}));
|
|
10043
10128
|
while (overlapping) {
|
|
10044
10129
|
// Initial positions: target centered in box
|
|
@@ -10137,7 +10222,6 @@ var RendererUtilities;
|
|
|
10137
10222
|
* */
|
|
10138
10223
|
|
|
10139
10224
|
|
|
10140
|
-
const { animate: SVGElement_animate, animObject: SVGElement_animObject, stop: SVGElement_stop } = AnimationUtilities;
|
|
10141
10225
|
|
|
10142
10226
|
|
|
10143
10227
|
const { deg2rad, doc: SVGElement_doc, svg, SVG_NS: SVGElement_SVG_NS, win: SVGElement_win, isFirefox } = Core_Globals;
|
|
@@ -10197,8 +10281,10 @@ class SVGElement {
|
|
|
10197
10281
|
* Property value.
|
|
10198
10282
|
*/
|
|
10199
10283
|
_defaultGetter(key) {
|
|
10200
|
-
let ret =
|
|
10201
|
-
|
|
10284
|
+
let ret = (this[key + 'Value'] ??
|
|
10285
|
+
this[key] ??
|
|
10286
|
+
(this.element ? this.element.getAttribute(key) : null) ??
|
|
10287
|
+
0);
|
|
10202
10288
|
if (/^-?[\d\.]+$/.test(ret)) { // Is numerical
|
|
10203
10289
|
ret = parseFloat(ret);
|
|
10204
10290
|
}
|
|
@@ -10361,7 +10447,7 @@ class SVGElement {
|
|
|
10361
10447
|
}
|
|
10362
10448
|
alignTo = void 0; // Do not use the box
|
|
10363
10449
|
}
|
|
10364
|
-
const alignToBox =
|
|
10450
|
+
const alignToBox = alignTo ?? renderer[alignToKey] ?? renderer,
|
|
10365
10451
|
// Default: left align
|
|
10366
10452
|
x = (alignToBox.x || 0) + (alignOptions.x || 0) +
|
|
10367
10453
|
((alignToBox.width || 0) - (alignOptions.width || 0)) *
|
|
@@ -10421,7 +10507,7 @@ class SVGElement {
|
|
|
10421
10507
|
* Returns the SVGElement for chaining.
|
|
10422
10508
|
*/
|
|
10423
10509
|
animate(params, options, complete) {
|
|
10424
|
-
const animOptions =
|
|
10510
|
+
const animOptions = animObject((options ?? this.renderer.globalAnimation ?? true)), deferTime = animOptions.defer;
|
|
10425
10511
|
// When the page is hidden save resources in the background by not
|
|
10426
10512
|
// running animation at all (#9749).
|
|
10427
10513
|
if (SVGElement_doc.hidden) {
|
|
@@ -10436,7 +10522,7 @@ class SVGElement {
|
|
|
10436
10522
|
// If defer option is defined delay the animation #12901
|
|
10437
10523
|
syncTimeout(() => {
|
|
10438
10524
|
if (this.element) {
|
|
10439
|
-
|
|
10525
|
+
animate(this, params, animOptions);
|
|
10440
10526
|
}
|
|
10441
10527
|
}, deferTime);
|
|
10442
10528
|
}
|
|
@@ -10610,7 +10696,7 @@ class SVGElement {
|
|
|
10610
10696
|
// Unless .attr is from the animator update, stop current
|
|
10611
10697
|
// running animation of this property
|
|
10612
10698
|
if (!continueAnimation) {
|
|
10613
|
-
|
|
10699
|
+
stop(this, key);
|
|
10614
10700
|
}
|
|
10615
10701
|
// Special handling of symbol attributes
|
|
10616
10702
|
if (this.symbolName &&
|
|
@@ -10913,7 +10999,7 @@ class SVGElement {
|
|
|
10913
10999
|
.split(','); // Ending comma
|
|
10914
11000
|
i = v.length;
|
|
10915
11001
|
while (i--) {
|
|
10916
|
-
v[i] = '' + (pInt(v[i]) *
|
|
11002
|
+
v[i] = '' + (pInt(v[i]) * (strokeWidth ?? NaN));
|
|
10917
11003
|
}
|
|
10918
11004
|
value = v.join(',').replace(/NaN/g, 'none'); // #3226
|
|
10919
11005
|
this.element.setAttribute('stroke-dasharray', value);
|
|
@@ -10930,7 +11016,7 @@ class SVGElement {
|
|
|
10930
11016
|
// Remove events
|
|
10931
11017
|
element.onclick = element.onmouseout = element.onmouseover =
|
|
10932
11018
|
element.onmousemove = element.point = null;
|
|
10933
|
-
|
|
11019
|
+
stop(wrapper); // Stop running animations
|
|
10934
11020
|
if (wrapper.clipPath && ownerSVGElement) {
|
|
10935
11021
|
const clipPath = wrapper.clipPath;
|
|
10936
11022
|
// Look for existing references to this clipPath and remove them
|
|
@@ -11053,7 +11139,7 @@ class SVGElement {
|
|
|
11053
11139
|
* The bounding box with `x`, `y`, `width` and `height` properties.
|
|
11054
11140
|
*/
|
|
11055
11141
|
getBBox(reload, rot) {
|
|
11056
|
-
const wrapper = this, { element, renderer, styles, textStr } = wrapper, { cache, cacheKeys } = renderer, isSVG = element.namespaceURI === wrapper.SVG_NS, rotation =
|
|
11142
|
+
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 &&
|
|
11057
11143
|
SVGElement.prototype.getStyle.call(element, 'font-size')) : (styles.fontSize), cacheKey = this.getBBoxCacheKey([
|
|
11058
11144
|
renderer.rootFontSize,
|
|
11059
11145
|
this.textWidth, // #7874, also useHTML
|
|
@@ -11579,7 +11665,7 @@ class SVGElement {
|
|
|
11579
11665
|
symbolAttr(hash) {
|
|
11580
11666
|
const wrapper = this;
|
|
11581
11667
|
SVGElement.symbolCustomAttribs.forEach(function (key) {
|
|
11582
|
-
wrapper[key] =
|
|
11668
|
+
wrapper[key] = (hash[key] ?? wrapper[key]);
|
|
11583
11669
|
});
|
|
11584
11670
|
wrapper.attr({
|
|
11585
11671
|
d: wrapper.renderer.symbols[wrapper.symbolName](wrapper.x, wrapper.y, wrapper.width, wrapper.height, wrapper)
|
|
@@ -11619,7 +11705,7 @@ class SVGElement {
|
|
|
11619
11705
|
}
|
|
11620
11706
|
// Replace text content and escape markup
|
|
11621
11707
|
titleNode.textContent = replaceNested(// Scan #[73]
|
|
11622
|
-
|
|
11708
|
+
(value ?? ''), // #3276, #3895
|
|
11623
11709
|
[/<[^>]*>/g, '']).replace(/</g, '<').replace(/>/g, '>');
|
|
11624
11710
|
}
|
|
11625
11711
|
/**
|
|
@@ -12397,7 +12483,7 @@ class SVGLabel extends SVG_SVGElement {
|
|
|
12397
12483
|
if ((this.textStr && this.bBox.width === 0 && this.bBox.height === 0) || this.rotation) {
|
|
12398
12484
|
this.updateBoxSize();
|
|
12399
12485
|
}
|
|
12400
|
-
const { padding, height = 0, translateX = 0, translateY = 0, width = 0 } = this, paddingLeft =
|
|
12486
|
+
const { padding, height = 0, translateX = 0, translateY = 0, width = 0 } = this, paddingLeft = (this.paddingLeft ?? padding), rotation = rot ?? (this.rotation || 0);
|
|
12401
12487
|
let bBox = {
|
|
12402
12488
|
width,
|
|
12403
12489
|
height,
|
|
@@ -12450,7 +12536,7 @@ class SVGLabel extends SVG_SVGElement {
|
|
|
12450
12536
|
this.attr({
|
|
12451
12537
|
// Alignment is available now (#3295, 0 not rendered if given
|
|
12452
12538
|
// as a value)
|
|
12453
|
-
text:
|
|
12539
|
+
text: (this.textStr ?? ''),
|
|
12454
12540
|
x: this.x || 0,
|
|
12455
12541
|
y: this.y || 0
|
|
12456
12542
|
});
|
|
@@ -12606,8 +12692,8 @@ class SVGLabel extends SVG_SVGElement {
|
|
|
12606
12692
|
/** @internal */
|
|
12607
12693
|
getPaddedWidth() {
|
|
12608
12694
|
const padding = this.padding;
|
|
12609
|
-
const paddingLeft =
|
|
12610
|
-
const paddingRight =
|
|
12695
|
+
const paddingLeft = (this.paddingLeft ?? padding);
|
|
12696
|
+
const paddingRight = (this.paddingRight ?? padding);
|
|
12611
12697
|
return ((this.widthSetting || this.bBox.width || 0) +
|
|
12612
12698
|
paddingLeft +
|
|
12613
12699
|
paddingRight);
|
|
@@ -12708,7 +12794,7 @@ function arc(cx, cy, w, h, options) {
|
|
|
12708
12794
|
const arc = [];
|
|
12709
12795
|
if (options) {
|
|
12710
12796
|
let start = options.start || 0, end = options.end || 0;
|
|
12711
|
-
const rx =
|
|
12797
|
+
const rx = (options.r ?? w), ry = (options.r ?? (h || w)),
|
|
12712
12798
|
// Subtract a small number to prevent cos and sin of start and end
|
|
12713
12799
|
// from becoming equal on 360 arcs (#1561). See "Arc proximity"
|
|
12714
12800
|
// tests at samples/unit-tests/svgrenderer/symbol/demo.js
|
|
@@ -12718,16 +12804,17 @@ function arc(cx, cy, w, h, options) {
|
|
|
12718
12804
|
start = Math.PI / 2;
|
|
12719
12805
|
end = Math.PI * 2.5 - proximity;
|
|
12720
12806
|
}
|
|
12721
|
-
const innerRadius = options.innerR, open =
|
|
12807
|
+
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),
|
|
12722
12808
|
// Proximity takes care of rounding errors around PI (#6971)
|
|
12723
|
-
longArc =
|
|
12809
|
+
longArc = options.longArc ??
|
|
12810
|
+
(end - start - Math.PI < proximity ? 0 : 1);
|
|
12724
12811
|
let arcSegment = [
|
|
12725
12812
|
'A', // ArcTo
|
|
12726
12813
|
rx, // X radius
|
|
12727
12814
|
ry, // Y radius
|
|
12728
12815
|
0, // Slanting
|
|
12729
12816
|
longArc, // Long or short arc
|
|
12730
|
-
|
|
12817
|
+
(options.clockwise ?? 1), // Clockwise
|
|
12731
12818
|
// Use a static pixel offset for full circle (#21701)
|
|
12732
12819
|
cx + (fullCircle ? 0.001 : rx * cosEnd),
|
|
12733
12820
|
cy + ry * sinEnd
|
|
@@ -13258,7 +13345,7 @@ class TextBuilder {
|
|
|
13258
13345
|
* @internal
|
|
13259
13346
|
*/
|
|
13260
13347
|
buildSVG() {
|
|
13261
|
-
const wrapper = this.svgElement, textNode = wrapper.element, renderer = wrapper.renderer, textStr =
|
|
13348
|
+
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,
|
|
13262
13349
|
// The buildText code is quite heavy, so if we're not changing
|
|
13263
13350
|
// something that affects the text, skip it (#6113).
|
|
13264
13351
|
textCache = [
|
|
@@ -13842,7 +13929,7 @@ class SVGRenderer {
|
|
|
13842
13929
|
this.url = this.getReferenceURL();
|
|
13843
13930
|
// Add description
|
|
13844
13931
|
const desc = this.createElement('desc').add();
|
|
13845
|
-
desc.element.appendChild(SVGRenderer_doc.createTextNode('Created with Highcharts 13.0.
|
|
13932
|
+
desc.element.appendChild(SVGRenderer_doc.createTextNode('Created with Highcharts 13.0.2'));
|
|
13846
13933
|
this.defs = this.createElement('defs').add();
|
|
13847
13934
|
this.allowHTML = allowHTML;
|
|
13848
13935
|
this.forExport = forExport;
|
|
@@ -14628,7 +14715,7 @@ class SVGRenderer {
|
|
|
14628
14715
|
this.attr('height')
|
|
14629
14716
|
});
|
|
14630
14717
|
},
|
|
14631
|
-
duration:
|
|
14718
|
+
duration: (animate ?? true) ? void 0 : 0
|
|
14632
14719
|
});
|
|
14633
14720
|
renderer.alignElements();
|
|
14634
14721
|
}
|
|
@@ -14786,8 +14873,8 @@ class SVGRenderer {
|
|
|
14786
14873
|
// The image width is not always the same as the symbol width. The
|
|
14787
14874
|
// image may be centered within the symbol, as is the case when
|
|
14788
14875
|
// image shapes are used as label backgrounds, for example in flags.
|
|
14789
|
-
img.imgwidth =
|
|
14790
|
-
img.imgheight =
|
|
14876
|
+
img.imgwidth = (options?.width ?? symbolSizes[imageSrc]?.width);
|
|
14877
|
+
img.imgheight = (options?.height ?? symbolSizes[imageSrc]?.height);
|
|
14791
14878
|
/**
|
|
14792
14879
|
* Set the size and position
|
|
14793
14880
|
*/
|
|
@@ -15633,7 +15720,11 @@ class HTMLElement extends SVG_SVGElement {
|
|
|
15633
15720
|
.attr({
|
|
15634
15721
|
text: str,
|
|
15635
15722
|
x: Math.round(x),
|
|
15636
|
-
y: Math.round(y)
|
|
15723
|
+
y: Math.round(y),
|
|
15724
|
+
// The namespace attribute is required for serialization
|
|
15725
|
+
// (export and side-by-side comparison), otherwise it
|
|
15726
|
+
// inherits the SVG namespace from foreignObject.
|
|
15727
|
+
xmlns: 'http://www.w3.org/1999/xhtml'
|
|
15637
15728
|
});
|
|
15638
15729
|
};
|
|
15639
15730
|
}
|
|
@@ -15813,8 +15904,10 @@ class HTMLElement extends SVG_SVGElement {
|
|
|
15813
15904
|
foreignObject.attr({
|
|
15814
15905
|
x: x + (this.xCorr || 0),
|
|
15815
15906
|
y: y + (this.yCorr || 0),
|
|
15816
|
-
// Add 4px to avoid ellipsis
|
|
15817
|
-
//
|
|
15907
|
+
// Add 4px to avoid ellipsis. In v13.0.0 we had a body inside
|
|
15908
|
+
// the foreignObject with a 3px right margin. This was later
|
|
15909
|
+
// removed, but we still need to add a few pixels to avoid
|
|
15910
|
+
// ellipsis.
|
|
15818
15911
|
width: element.offsetWidth + 4,
|
|
15819
15912
|
// Add 1px to account for subpixel bounding boxes
|
|
15820
15913
|
height: element.offsetHeight + 1,
|
|
@@ -15834,25 +15927,16 @@ class HTMLElement extends SVG_SVGElement {
|
|
|
15834
15927
|
this.cTT = currentTextTransform;
|
|
15835
15928
|
}
|
|
15836
15929
|
/**
|
|
15837
|
-
* Add the element to
|
|
15838
|
-
* will be created for each ancestor SVG `g` element.
|
|
15930
|
+
* Add the element to the foreign object
|
|
15839
15931
|
*
|
|
15840
15932
|
* @internal
|
|
15841
15933
|
*/
|
|
15842
15934
|
add(parentGroup) {
|
|
15843
|
-
const { foreignObject
|
|
15935
|
+
const { foreignObject } = this;
|
|
15844
15936
|
// Foreign object
|
|
15845
15937
|
foreignObject.add(parentGroup);
|
|
15846
|
-
|
|
15847
|
-
|
|
15848
|
-
renderer.createElement('body')
|
|
15849
|
-
.attr({ xmlns: 'http://www.w3.org/1999/xhtml' })
|
|
15850
|
-
.css({
|
|
15851
|
-
background: 'transparent',
|
|
15852
|
-
// 3px is to avoid clipping on the right
|
|
15853
|
-
margin: '0 3px 0 0'
|
|
15854
|
-
})
|
|
15855
|
-
.add(foreignObject));
|
|
15938
|
+
// Add this.element to the foreign objct
|
|
15939
|
+
super.add(foreignObject);
|
|
15856
15940
|
if (this.alignOnAdd) {
|
|
15857
15941
|
this.updateTransform();
|
|
15858
15942
|
}
|
|
@@ -15887,10 +15971,20 @@ class HTMLElement extends SVG_SVGElement {
|
|
|
15887
15971
|
this[key] = value;
|
|
15888
15972
|
this.doTransform = true;
|
|
15889
15973
|
}
|
|
15974
|
+
/**
|
|
15975
|
+
* Apply visibility/opacity to the foreignObject; the HTML element
|
|
15976
|
+
* ignores them.
|
|
15977
|
+
* @internal
|
|
15978
|
+
*/
|
|
15979
|
+
visibilitySetter(value, key) {
|
|
15980
|
+
this.foreignObject.attr({ [key]: value });
|
|
15981
|
+
this[key] = value;
|
|
15982
|
+
}
|
|
15890
15983
|
}
|
|
15891
15984
|
// Some shared setters
|
|
15892
15985
|
const proto = HTMLElement.prototype;
|
|
15893
15986
|
proto.ySetter = proto.xSetter;
|
|
15987
|
+
proto.opacitySetter = proto.visibilitySetter;
|
|
15894
15988
|
/* *
|
|
15895
15989
|
*
|
|
15896
15990
|
* Default Export
|
|
@@ -16431,6 +16525,7 @@ var AxisDefaults;
|
|
|
16431
16525
|
*/
|
|
16432
16526
|
dateTimeLabelFormats: {
|
|
16433
16527
|
/**
|
|
16528
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16434
16529
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16435
16530
|
*/
|
|
16436
16531
|
millisecond: {
|
|
@@ -16456,6 +16551,7 @@ var AxisDefaults;
|
|
|
16456
16551
|
range: false
|
|
16457
16552
|
},
|
|
16458
16553
|
/**
|
|
16554
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16459
16555
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16460
16556
|
*/
|
|
16461
16557
|
second: {
|
|
@@ -16481,6 +16577,7 @@ var AxisDefaults;
|
|
|
16481
16577
|
range: false
|
|
16482
16578
|
},
|
|
16483
16579
|
/**
|
|
16580
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16484
16581
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16485
16582
|
*/
|
|
16486
16583
|
minute: {
|
|
@@ -16506,6 +16603,7 @@ var AxisDefaults;
|
|
|
16506
16603
|
range: false
|
|
16507
16604
|
},
|
|
16508
16605
|
/**
|
|
16606
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16509
16607
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16510
16608
|
*/
|
|
16511
16609
|
hour: {
|
|
@@ -16538,6 +16636,7 @@ var AxisDefaults;
|
|
|
16538
16636
|
range: false
|
|
16539
16637
|
},
|
|
16540
16638
|
/**
|
|
16639
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16541
16640
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16542
16641
|
*/
|
|
16543
16642
|
day: {
|
|
@@ -16560,6 +16659,7 @@ var AxisDefaults;
|
|
|
16560
16659
|
boundary: '%[eb]'
|
|
16561
16660
|
},
|
|
16562
16661
|
/**
|
|
16662
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16563
16663
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16564
16664
|
*/
|
|
16565
16665
|
week: {
|
|
@@ -16575,6 +16675,7 @@ var AxisDefaults;
|
|
|
16575
16675
|
main: '%[eb]'
|
|
16576
16676
|
},
|
|
16577
16677
|
/**
|
|
16678
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16578
16679
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16579
16680
|
*/
|
|
16580
16681
|
month: {
|
|
@@ -16597,6 +16698,7 @@ var AxisDefaults;
|
|
|
16597
16698
|
boundary: void 0
|
|
16598
16699
|
},
|
|
16599
16700
|
/**
|
|
16701
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16600
16702
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16601
16703
|
*/
|
|
16602
16704
|
year: {
|
|
@@ -17412,7 +17514,7 @@ var AxisDefaults;
|
|
|
17412
17514
|
* @sample {highstock} stock/xaxis/offset/
|
|
17413
17515
|
* Y axis offset by 70 px
|
|
17414
17516
|
*
|
|
17415
|
-
* @type {number}
|
|
17517
|
+
* @type {number|string}
|
|
17416
17518
|
*/
|
|
17417
17519
|
offset: void 0,
|
|
17418
17520
|
/**
|
|
@@ -19062,7 +19164,9 @@ var AxisDefaults;
|
|
|
19062
19164
|
* @product highcharts
|
|
19063
19165
|
*/
|
|
19064
19166
|
style: {
|
|
19065
|
-
/**
|
|
19167
|
+
/**
|
|
19168
|
+
* @type {Highcharts.ColorType}
|
|
19169
|
+
*/
|
|
19066
19170
|
color: 'var(--highcharts-neutral-color-100)',
|
|
19067
19171
|
/**
|
|
19068
19172
|
* @type {number|string}
|
|
@@ -19249,11 +19353,11 @@ class Tick {
|
|
|
19249
19353
|
* @function Highcharts.Tick#addLabel
|
|
19250
19354
|
*/
|
|
19251
19355
|
addLabel() {
|
|
19252
|
-
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 =
|
|
19356
|
+
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;
|
|
19253
19357
|
let label = tick.label, dateTimeLabelFormat, dateTimeLabelFormats, i;
|
|
19254
19358
|
// The context value
|
|
19255
19359
|
let value = this.parameters.category || (categories ?
|
|
19256
|
-
|
|
19360
|
+
(categories[pos] ?? names[pos] ?? pos) :
|
|
19257
19361
|
pos);
|
|
19258
19362
|
if (log && isNumber(value)) {
|
|
19259
19363
|
value = correctFloat(log.lin2log(value));
|
|
@@ -19500,7 +19604,7 @@ class Tick {
|
|
|
19500
19604
|
labelOptions.y;
|
|
19501
19605
|
}
|
|
19502
19606
|
x = x +
|
|
19503
|
-
|
|
19607
|
+
(labelOptions.x ?? [0, 1, 0, -1][axis.side] * distance) +
|
|
19504
19608
|
labelOffsetCorrection +
|
|
19505
19609
|
rotCorr.x -
|
|
19506
19610
|
(tickmarkOffset && horiz ?
|
|
@@ -19555,7 +19659,7 @@ class Tick {
|
|
|
19555
19659
|
* @function Highcharts.Tick#handleOverflow
|
|
19556
19660
|
*/
|
|
19557
19661
|
handleOverflow(xy) {
|
|
19558
|
-
const tick = this, axis = this.axis, labelOptions = axis.options.labels, pxPos = xy.x, chartWidth = axis.chart.chartWidth, spacing = axis.chart.spacing, leftBound =
|
|
19662
|
+
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 = {};
|
|
19559
19663
|
let modifiedSlotWidth = slotWidth, goRight = 1, leftPos, rightPos, textWidth;
|
|
19560
19664
|
// Check if the label overshoots the chart spacing box. If it does, move
|
|
19561
19665
|
// it. If it now overshoots the slotWidth, add ellipsis.
|
|
@@ -19622,9 +19726,8 @@ class Tick {
|
|
|
19622
19726
|
* @param {number} [opacity]
|
|
19623
19727
|
*/
|
|
19624
19728
|
render(index, old, opacity) {
|
|
19625
|
-
const tick = this, axis = tick.axis, horiz = axis.horiz, pos = tick.pos, tickmarkOffset =
|
|
19626
|
-
const labelOpacity =
|
|
19627
|
-
1);
|
|
19729
|
+
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;
|
|
19730
|
+
const labelOpacity = (opacity ?? tick.label?.newOpacity ?? 1);
|
|
19628
19731
|
// Anything that is not between `axis.pos` and `axis.pos + axis.length`
|
|
19629
19732
|
// should not be visible (#20166). The `correctFloat` is for reversed
|
|
19630
19733
|
// axes in Safari.
|
|
@@ -19652,7 +19755,7 @@ class Tick {
|
|
|
19652
19755
|
* @param {number} opacity The opacity of the grid line
|
|
19653
19756
|
*/
|
|
19654
19757
|
renderGridLine(old, opacity) {
|
|
19655
|
-
const tick = this, axis = tick.axis, options = axis.options, attribs = {}, pos = tick.pos, type = tick.type, tickmarkOffset =
|
|
19758
|
+
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;
|
|
19656
19759
|
let gridLine = tick.gridLine, gridLinePath, gridLineWidth = options.gridLineWidth, gridLineColor = options.gridLineColor, dashStyle = options.gridLineDashStyle;
|
|
19657
19760
|
if (tick.type === 'minor') {
|
|
19658
19761
|
gridLineWidth = options.minorGridLineWidth;
|
|
@@ -19708,7 +19811,7 @@ class Tick {
|
|
|
19708
19811
|
* @param {number} opacity The opacity of the mark
|
|
19709
19812
|
*/
|
|
19710
19813
|
renderMark(xy, opacity) {
|
|
19711
|
-
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 =
|
|
19814
|
+
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
|
|
19712
19815
|
tickColor = options[type !== 'minor' ? 'tickColor' : 'minorTickColor'];
|
|
19713
19816
|
let mark = tick.mark;
|
|
19714
19817
|
const isNewMark = !mark;
|
|
@@ -19753,7 +19856,7 @@ class Tick {
|
|
|
19753
19856
|
* @param {number} index The index of the tick
|
|
19754
19857
|
*/
|
|
19755
19858
|
renderLabel(xy, old, opacity, index) {
|
|
19756
|
-
const tick = this, axis = tick.axis, horiz = axis.horiz, options = axis.options, label = tick.label, labelOptions = options.labels, step = labelOptions.step, tickmarkOffset =
|
|
19859
|
+
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;
|
|
19757
19860
|
let show = true;
|
|
19758
19861
|
if (label && isNumber(x)) {
|
|
19759
19862
|
label.xy = xy = tick.getLabelPosition(x, y, label, horiz, labelOptions, tickmarkOffset, index, step);
|
|
@@ -19845,7 +19948,6 @@ class Tick {
|
|
|
19845
19948
|
* */
|
|
19846
19949
|
|
|
19847
19950
|
|
|
19848
|
-
const { animObject: Axis_animObject } = AnimationUtilities;
|
|
19849
19951
|
|
|
19850
19952
|
const { xAxis, yAxis } = Axis_AxisDefaults;
|
|
19851
19953
|
|
|
@@ -19859,12 +19961,7 @@ const { deg2rad: Axis_deg2rad } = Core_Globals;
|
|
|
19859
19961
|
|
|
19860
19962
|
|
|
19861
19963
|
|
|
19862
|
-
const getNormalizedTickInterval = (axis, tickInterval) => normalizeTickInterval(tickInterval, void 0, void 0,
|
|
19863
|
-
// If the tick interval is greater than 0.5, avoid decimals, as
|
|
19864
|
-
// linear axes are often used to render discrete values (#3363). If
|
|
19865
|
-
// a tick amount is set, allow decimals by default, as it increases
|
|
19866
|
-
// the chances for a good fit.
|
|
19867
|
-
tickInterval < 0.5 || axis.tickAmount !== void 0), !!axis.tickAmount);
|
|
19964
|
+
const getNormalizedTickInterval = (axis, tickInterval) => normalizeTickInterval(tickInterval, void 0, void 0, (axis.options.allowDecimals ?? (tickInterval < 0.5 || axis.tickAmount !== void 0)), !!axis.tickAmount);
|
|
19868
19965
|
extend(Axis_defaultOptions, { xAxis, yAxis: merge(xAxis, yAxis) });
|
|
19869
19966
|
/* *
|
|
19870
19967
|
*
|
|
@@ -19972,7 +20069,7 @@ class Axis {
|
|
|
19972
20069
|
axis.coll = coll;
|
|
19973
20070
|
fireEvent(this, 'init', { userOptions: userOptions });
|
|
19974
20071
|
// Needed in setOptions
|
|
19975
|
-
axis.opposite =
|
|
20072
|
+
axis.opposite = (userOptions.opposite ?? axis.opposite);
|
|
19976
20073
|
/**
|
|
19977
20074
|
* The side on which the axis is rendered. 0 is top, 1 is right, 2
|
|
19978
20075
|
* is bottom and 3 is left.
|
|
@@ -19980,10 +20077,9 @@ class Axis {
|
|
|
19980
20077
|
* @name Highcharts.Axis#side
|
|
19981
20078
|
* @type {number}
|
|
19982
20079
|
*/
|
|
19983
|
-
axis.side =
|
|
20080
|
+
axis.side = (userOptions.side ?? axis.side ?? (horiz ?
|
|
19984
20081
|
(axis.opposite ? 0 : 2) : // Top : bottom
|
|
19985
|
-
(axis.opposite ? 1 : 3))
|
|
19986
|
-
);
|
|
20082
|
+
(axis.opposite ? 1 : 3)));
|
|
19987
20083
|
/**
|
|
19988
20084
|
* Current options for the axis after merge of defaults and user's
|
|
19989
20085
|
* options.
|
|
@@ -20012,7 +20108,7 @@ class Axis {
|
|
|
20012
20108
|
* @name Highcharts.Axis#reversed
|
|
20013
20109
|
* @type {boolean}
|
|
20014
20110
|
*/
|
|
20015
|
-
axis.reversed =
|
|
20111
|
+
axis.reversed = (options.reversed ?? axis.reversed);
|
|
20016
20112
|
axis.visible = options.visible;
|
|
20017
20113
|
axis.zoomEnabled = options.zoomEnabled;
|
|
20018
20114
|
// Initial categories
|
|
@@ -20100,7 +20196,7 @@ class Axis {
|
|
|
20100
20196
|
* @name Highcharts.Axis#crosshair
|
|
20101
20197
|
* @type {boolean|Highcharts.AxisCrosshairOptions}
|
|
20102
20198
|
*/
|
|
20103
|
-
const crosshair =
|
|
20199
|
+
const crosshair = options.crosshair ?? splat(chart.options.tooltip.crosshairs)[isXAxis ? 0 : 1];
|
|
20104
20200
|
axis.crosshair = crosshair === true ? {} : crosshair;
|
|
20105
20201
|
// Register. Don't add it again on Axis.update().
|
|
20106
20202
|
if (chart.axes.indexOf(axis) === -1) { //
|
|
@@ -20284,8 +20380,8 @@ class Axis {
|
|
|
20284
20380
|
seriesDataMax = xExtremes.max;
|
|
20285
20381
|
}
|
|
20286
20382
|
if (xData.length) {
|
|
20287
|
-
axis.dataMin = Math.min(
|
|
20288
|
-
axis.dataMax = Math.max(
|
|
20383
|
+
axis.dataMin = Math.min((axis.dataMin ?? seriesDataMin), seriesDataMin);
|
|
20384
|
+
axis.dataMax = Math.max((axis.dataMax ?? seriesDataMax), seriesDataMax);
|
|
20289
20385
|
}
|
|
20290
20386
|
}
|
|
20291
20387
|
// Get dataMin and dataMax for Y axes, as well as handle
|
|
@@ -20300,11 +20396,11 @@ class Axis {
|
|
|
20300
20396
|
// doesn't have active y data, we continue with nulls
|
|
20301
20397
|
if (isNumber(dataExtremes.dataMin)) {
|
|
20302
20398
|
seriesDataMin = dataExtremes.dataMin;
|
|
20303
|
-
axis.dataMin = Math.min(
|
|
20399
|
+
axis.dataMin = Math.min((axis.dataMin ?? seriesDataMin), seriesDataMin);
|
|
20304
20400
|
}
|
|
20305
20401
|
if (isNumber(dataExtremes.dataMax)) {
|
|
20306
20402
|
seriesDataMax = dataExtremes.dataMax;
|
|
20307
|
-
axis.dataMax = Math.max(
|
|
20403
|
+
axis.dataMax = Math.max((axis.dataMax ?? seriesDataMax), seriesDataMax);
|
|
20308
20404
|
}
|
|
20309
20405
|
// Adjust to threshold
|
|
20310
20406
|
if (defined(threshold)) {
|
|
@@ -20459,7 +20555,7 @@ class Axis {
|
|
|
20459
20555
|
translatedValue
|
|
20460
20556
|
};
|
|
20461
20557
|
fireEvent(this, 'getPlotLinePath', evt, function (e) {
|
|
20462
|
-
translatedValue =
|
|
20558
|
+
translatedValue = translatedValue ?? axis.translate(value, void 0, void 0, old);
|
|
20463
20559
|
// Keep the translated value within sane bounds, and avoid Infinity
|
|
20464
20560
|
// to fail the isNumber test (#7709).
|
|
20465
20561
|
translatedValue = clamp(translatedValue, -1e9, 1e9);
|
|
@@ -20548,7 +20644,7 @@ class Axis {
|
|
|
20548
20644
|
getMinorTickInterval() {
|
|
20549
20645
|
const { minorTicks, minorTickInterval } = this.options;
|
|
20550
20646
|
if (minorTicks === true) {
|
|
20551
|
-
return
|
|
20647
|
+
return (minorTickInterval ?? 'auto');
|
|
20552
20648
|
}
|
|
20553
20649
|
if (minorTicks === false) {
|
|
20554
20650
|
return;
|
|
@@ -20831,7 +20927,9 @@ class Axis {
|
|
|
20831
20927
|
const seriesPointRange = hasCategories ?
|
|
20832
20928
|
1 :
|
|
20833
20929
|
(isXAxis ?
|
|
20834
|
-
|
|
20930
|
+
(series.options.pointRange ??
|
|
20931
|
+
closestPointRange ??
|
|
20932
|
+
0) :
|
|
20835
20933
|
(axis.axisPointRange || 0)), // #2806
|
|
20836
20934
|
pointPlacement = series.options.pointPlacement;
|
|
20837
20935
|
pointRange = Math.max(pointRange, seriesPointRange);
|
|
@@ -20915,14 +21013,16 @@ class Axis {
|
|
|
20915
21013
|
this.getTickAmount();
|
|
20916
21014
|
}
|
|
20917
21015
|
// Min or max set either by zooming/setExtremes or initial options
|
|
20918
|
-
hardMin =
|
|
20919
|
-
hardMax =
|
|
21016
|
+
hardMin = (axis.userMin ?? time.parse(options.min));
|
|
21017
|
+
hardMax = (axis.userMax ?? time.parse(options.max));
|
|
20920
21018
|
// Linked axis gets the extremes from the parent axis
|
|
20921
21019
|
if (linkedParent) {
|
|
20922
21020
|
axis.linkedParent = linkedParent;
|
|
20923
21021
|
linkedParentExtremes = linkedParent.getExtremes();
|
|
20924
|
-
axis.min =
|
|
20925
|
-
|
|
21022
|
+
axis.min =
|
|
21023
|
+
linkedParentExtremes.min ?? linkedParentExtremes.dataMin;
|
|
21024
|
+
axis.max =
|
|
21025
|
+
linkedParentExtremes.max ?? linkedParentExtremes.dataMax;
|
|
20926
21026
|
if (this.type !== linkedParent.type) {
|
|
20927
21027
|
// Can't link axes of different type
|
|
20928
21028
|
error(11, true, chart);
|
|
@@ -20944,14 +21044,14 @@ class Axis {
|
|
|
20944
21044
|
maxPadding = 0;
|
|
20945
21045
|
}
|
|
20946
21046
|
}
|
|
20947
|
-
axis.min =
|
|
20948
|
-
axis.max =
|
|
21047
|
+
axis.min = (hardMin ?? thresholdMin ?? dataMin);
|
|
21048
|
+
axis.max = (hardMax ?? thresholdMax ?? dataMax);
|
|
20949
21049
|
}
|
|
20950
21050
|
if (isNumber(axis.max) && isNumber(axis.min)) {
|
|
20951
21051
|
if (logarithmic) {
|
|
20952
21052
|
if (axis.positiveValuesOnly &&
|
|
20953
21053
|
!secondPass &&
|
|
20954
|
-
Math.min(axis.min,
|
|
21054
|
+
Math.min(axis.min, (dataMin ?? axis.min)) <= 0) { // #978
|
|
20955
21055
|
// Can't plot negative values on log axis
|
|
20956
21056
|
error(10, true, chart);
|
|
20957
21057
|
}
|
|
@@ -21057,16 +21157,13 @@ class Axis {
|
|
|
21057
21157
|
axis.tickInterval = tickIntervalOption = linkedParent.tickInterval;
|
|
21058
21158
|
}
|
|
21059
21159
|
else {
|
|
21060
|
-
axis.tickInterval =
|
|
21160
|
+
axis.tickInterval = tickIntervalOption ?? (this.tickAmount ?
|
|
21061
21161
|
range / Math.max(this.tickAmount - 1, 1) :
|
|
21062
|
-
|
|
21063
|
-
|
|
21064
|
-
|
|
21065
|
-
|
|
21066
|
-
|
|
21067
|
-
// Don't let it be more than the data range
|
|
21068
|
-
range * tickPixelIntervalOption /
|
|
21069
|
-
Math.max(axis.len, tickPixelIntervalOption));
|
|
21162
|
+
categories ?
|
|
21163
|
+
1 :
|
|
21164
|
+
// Don't let it be more than the data range
|
|
21165
|
+
range * tickPixelIntervalOption /
|
|
21166
|
+
Math.max(axis.len, tickPixelIntervalOption));
|
|
21070
21167
|
}
|
|
21071
21168
|
// Now we're finished detecting min and max, crop and group series data.
|
|
21072
21169
|
// This is in turn needed in order to find tick positions in ordinal
|
|
@@ -21096,12 +21193,9 @@ class Axis {
|
|
|
21096
21193
|
}
|
|
21097
21194
|
// Before normalizing the tick interval, handle minimum tick interval.
|
|
21098
21195
|
// This applies only if tickInterval is not defined.
|
|
21099
|
-
const minTickInterval =
|
|
21100
|
-
|
|
21101
|
-
|
|
21102
|
-
dateTime &&
|
|
21103
|
-
!axis.series.some((s) => !s.sorted) ?
|
|
21104
|
-
axis.closestPointRange : 0);
|
|
21196
|
+
const minTickInterval = options.minTickInterval ?? (dateTime && !axis.series.some((s) => !s.sorted) ?
|
|
21197
|
+
axis.closestPointRange :
|
|
21198
|
+
0);
|
|
21105
21199
|
if (!tickIntervalOption &&
|
|
21106
21200
|
minTickInterval &&
|
|
21107
21201
|
axis.tickInterval < minTickInterval) {
|
|
@@ -21431,7 +21525,7 @@ class Axis {
|
|
|
21431
21525
|
* @function Highcharts.Axis#adjustTickAmount
|
|
21432
21526
|
*/
|
|
21433
21527
|
adjustTickAmount() {
|
|
21434
|
-
const axis = this, { finalTickAmt, max, min, options, tickPositions, tickAmount, thresholdAlignment } = axis, currentTickAmount = tickPositions?.length, threshold =
|
|
21528
|
+
const axis = this, { finalTickAmt, max, min, options, tickPositions, tickAmount, thresholdAlignment } = axis, currentTickAmount = tickPositions?.length, threshold = axis.threshold ?? (axis.softThreshold ? 0 : null);
|
|
21435
21529
|
let len, i, tickInterval = axis.tickInterval, thresholdTickIndex;
|
|
21436
21530
|
const
|
|
21437
21531
|
// Extend the tickPositions by appending a position
|
|
@@ -21667,7 +21761,8 @@ class Axis {
|
|
|
21667
21761
|
offsets = options.offsets || [0, 0, 0, 0], horiz = this.horiz,
|
|
21668
21762
|
// Check for percentage based input values. Rounding fixes problems
|
|
21669
21763
|
// with column overflow and plot line filtering (#4898, #4899)
|
|
21670
|
-
width = this.width = Math.round(relativeLength(
|
|
21764
|
+
width = this.width = Math.round(relativeLength((options.width ?? chart.plotWidth - offsets[3] + offsets[1]), chart.plotWidth)), height = this.height = Math.round(relativeLength((options.height ??
|
|
21765
|
+
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));
|
|
21671
21766
|
// Expose basic values to use in Series object and navigator
|
|
21672
21767
|
this.bottom = chart.chartHeight - height - top;
|
|
21673
21768
|
this.right = chart.chartWidth - width - left;
|
|
@@ -21778,9 +21873,7 @@ class Axis {
|
|
|
21778
21873
|
* An array of tickLength and tickWidth
|
|
21779
21874
|
*/
|
|
21780
21875
|
tickSize(prefix) {
|
|
21781
|
-
const options = this.options, tickWidth =
|
|
21782
|
-
// Default to 1 on linear and datetime X axes
|
|
21783
|
-
prefix === 'tick' && this.isXAxis && !this.categories ? 1 : 0);
|
|
21876
|
+
const options = this.options, tickWidth = options[prefix === 'tick' ? 'tickWidth' : 'minorTickWidth'] ?? (prefix === 'tick' && this.isXAxis && !this.categories ? 1 : 0);
|
|
21784
21877
|
let tickLength = options[prefix === 'tick' ? 'tickLength' : 'minorTickLength'], tickSize;
|
|
21785
21878
|
if (tickWidth && tickLength) {
|
|
21786
21879
|
// Negate the length
|
|
@@ -21867,7 +21960,7 @@ class Axis {
|
|
|
21867
21960
|
newTickInterval = getStep(lineHeight * 0.75);
|
|
21868
21961
|
}
|
|
21869
21962
|
this.autoRotation = autoRotation;
|
|
21870
|
-
this.labelRotation =
|
|
21963
|
+
this.labelRotation = rotation ?? (isNumber(rotationOption) ? rotationOption : 0);
|
|
21871
21964
|
return labelOptions.step ? tickInterval : newTickInterval;
|
|
21872
21965
|
}
|
|
21873
21966
|
/**
|
|
@@ -22219,7 +22312,7 @@ class Axis {
|
|
|
22219
22312
|
titleOffsetOption = axisTitleOptions.offset;
|
|
22220
22313
|
titleMargin = defined(titleOffsetOption) ?
|
|
22221
22314
|
0 :
|
|
22222
|
-
|
|
22315
|
+
axisTitleOptions.margin ?? (horiz ? 5 : 10);
|
|
22223
22316
|
}
|
|
22224
22317
|
}
|
|
22225
22318
|
// Render the axis line
|
|
@@ -22451,7 +22544,7 @@ class Axis {
|
|
|
22451
22544
|
* @emits Highcharts.Axis#event:afterRender
|
|
22452
22545
|
*/
|
|
22453
22546
|
render() {
|
|
22454
|
-
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 =
|
|
22547
|
+
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);
|
|
22455
22548
|
let from, to;
|
|
22456
22549
|
// Reset
|
|
22457
22550
|
axis.labelEdge.length = 0;
|
|
@@ -22730,9 +22823,9 @@ class Axis {
|
|
|
22730
22823
|
}
|
|
22731
22824
|
else if (defined(point)) {
|
|
22732
22825
|
// #3834
|
|
22733
|
-
pos =
|
|
22734
|
-
point.crosshairPos :
|
|
22735
|
-
null
|
|
22826
|
+
pos = (this.coll !== 'colorAxis' ?
|
|
22827
|
+
point.crosshairPos :
|
|
22828
|
+
null) ?? (this.isXAxis ?
|
|
22736
22829
|
point.plotX :
|
|
22737
22830
|
this.len - point.plotY);
|
|
22738
22831
|
}
|
|
@@ -22741,7 +22834,7 @@ class Axis {
|
|
|
22741
22834
|
// Value, only used on radial
|
|
22742
22835
|
value: point && (this.isXAxis ?
|
|
22743
22836
|
point.x :
|
|
22744
|
-
|
|
22837
|
+
(point.stackY ?? point.y ?? void 0)),
|
|
22745
22838
|
translatedValue: pos
|
|
22746
22839
|
};
|
|
22747
22840
|
if (chart.polar) {
|
|
@@ -22774,7 +22867,7 @@ class Axis {
|
|
|
22774
22867
|
(categorized ? 'category ' : 'thin ') +
|
|
22775
22868
|
(options.className || ''))
|
|
22776
22869
|
.attr({
|
|
22777
|
-
zIndex:
|
|
22870
|
+
zIndex: (options.zIndex ?? 2)
|
|
22778
22871
|
})
|
|
22779
22872
|
.clip(options.clip === false ?
|
|
22780
22873
|
void 0 :
|
|
@@ -22789,7 +22882,7 @@ class Axis {
|
|
|
22789
22882
|
// eslint-disable-next-line max-len
|
|
22790
22883
|
'var(--highcharts-highlight-color-20)').setOpacity(0.25).get() :
|
|
22791
22884
|
'var(--highcharts-neutral-color-20)'),
|
|
22792
|
-
'stroke-width':
|
|
22885
|
+
'stroke-width': (options.width ?? 1)
|
|
22793
22886
|
}).css({
|
|
22794
22887
|
'pointer-events': 'none'
|
|
22795
22888
|
});
|
|
@@ -22802,7 +22895,7 @@ class Axis {
|
|
|
22802
22895
|
}
|
|
22803
22896
|
cross
|
|
22804
22897
|
.show()
|
|
22805
|
-
.animate({ d: path },
|
|
22898
|
+
.animate({ d: path }, animObject(options?.animation));
|
|
22806
22899
|
if (categorized && !options.width) {
|
|
22807
22900
|
cross.attr({
|
|
22808
22901
|
'stroke-width': this.transA
|
|
@@ -22855,7 +22948,7 @@ class Axis {
|
|
|
22855
22948
|
this.destroy(true);
|
|
22856
22949
|
this.init(chart, options);
|
|
22857
22950
|
chart.isDirtyBox = true;
|
|
22858
|
-
if (
|
|
22951
|
+
if (redraw ?? true) {
|
|
22859
22952
|
chart.redraw();
|
|
22860
22953
|
}
|
|
22861
22954
|
}
|
|
@@ -22885,7 +22978,7 @@ class Axis {
|
|
|
22885
22978
|
chart.orderItems(coll);
|
|
22886
22979
|
this.destroy();
|
|
22887
22980
|
chart.isDirtyBox = true;
|
|
22888
|
-
if (
|
|
22981
|
+
if (redraw ?? true) {
|
|
22889
22982
|
chart.redraw();
|
|
22890
22983
|
}
|
|
22891
22984
|
}
|
|
@@ -23541,8 +23634,10 @@ var LogarithmicAxis;
|
|
|
23541
23634
|
tickIntervalOption, tickPixelIntervalOption = options.tickPixelInterval / (minor ? 5 : 1), totalPixelLength = minor ?
|
|
23542
23635
|
axisLength / axis.tickPositions.length :
|
|
23543
23636
|
axisLength;
|
|
23544
|
-
interval =
|
|
23545
|
-
|
|
23637
|
+
interval = filteredTickIntervalOption ??
|
|
23638
|
+
log.minorAutoInterval ??
|
|
23639
|
+
(realMax - realMin) * tickPixelIntervalOption /
|
|
23640
|
+
(totalPixelLength || 1);
|
|
23546
23641
|
interval = normalizeTickInterval(interval);
|
|
23547
23642
|
positions = axis.getLinearTickPositions(interval, realMin, realMax).map(log.log2lin);
|
|
23548
23643
|
if (!minor) {
|
|
@@ -23971,7 +24066,8 @@ class PlotLineOrBand {
|
|
|
23971
24066
|
if (!chart.styledMode) {
|
|
23972
24067
|
if (isLine) {
|
|
23973
24068
|
attribs.stroke = color || 'var(--highcharts-neutral-color-40)';
|
|
23974
|
-
attribs['stroke-width'] =
|
|
24069
|
+
attribs['stroke-width'] =
|
|
24070
|
+
options.width ?? 1;
|
|
23975
24071
|
if (options.dashStyle) {
|
|
23976
24072
|
attribs.dashstyle = options.dashStyle;
|
|
23977
24073
|
}
|
|
@@ -24840,7 +24936,6 @@ class PlotLineOrBand {
|
|
|
24840
24936
|
* */
|
|
24841
24937
|
|
|
24842
24938
|
|
|
24843
|
-
const { animObject: Tooltip_animObject } = AnimationUtilities;
|
|
24844
24939
|
|
|
24845
24940
|
const { format: Tooltip_format } = Core_Templating;
|
|
24846
24941
|
|
|
@@ -25104,7 +25199,8 @@ class Tooltip {
|
|
|
25104
25199
|
'highcharts-label',
|
|
25105
25200
|
isHeader && 'highcharts-tooltip-header',
|
|
25106
25201
|
isSplit ? 'highcharts-tooltip-box' : 'highcharts-tooltip',
|
|
25107
|
-
!isHeader &&
|
|
25202
|
+
!isHeader &&
|
|
25203
|
+
'highcharts-color-' + (point.colorIndex ?? series.colorIndex),
|
|
25108
25204
|
seriesOptions?.className
|
|
25109
25205
|
].filter(isString).join(' ');
|
|
25110
25206
|
}
|
|
@@ -25289,7 +25385,8 @@ class Tooltip {
|
|
|
25289
25385
|
}
|
|
25290
25386
|
// The far side is right or bottom
|
|
25291
25387
|
const preferFarSide = !this.followPointer &&
|
|
25292
|
-
|
|
25388
|
+
(point.ttBelow ??
|
|
25389
|
+
(polar ? false : !inverted === flipped)), // #4984
|
|
25293
25390
|
/*
|
|
25294
25391
|
* Handle the preferred dimension. When the preferred dimension is
|
|
25295
25392
|
* tooltip on top or bottom of the point, it will look for space
|
|
@@ -25416,7 +25513,7 @@ class Tooltip {
|
|
|
25416
25513
|
const tooltip = this;
|
|
25417
25514
|
// Disallow duplicate timers (#1728, #1766)
|
|
25418
25515
|
clearTimeouts(this);
|
|
25419
|
-
delay =
|
|
25516
|
+
delay = (delay ?? this.options.hideDelay);
|
|
25420
25517
|
if (!this.isHidden) {
|
|
25421
25518
|
this.hideTimer = syncTimeout(function () {
|
|
25422
25519
|
const label = tooltip.getLabel();
|
|
@@ -25519,7 +25616,9 @@ class Tooltip {
|
|
|
25519
25616
|
* Split tooltip does not support outside in the first iteration. Should
|
|
25520
25617
|
* not be too complicated to implement.
|
|
25521
25618
|
*/
|
|
25522
|
-
this.outside =
|
|
25619
|
+
this.outside =
|
|
25620
|
+
options.outside ??
|
|
25621
|
+
Boolean(chart.scrollablePixelsX || chart.scrollablePixelsY);
|
|
25523
25622
|
}
|
|
25524
25623
|
shouldStickOnContact(pointerEvent) {
|
|
25525
25624
|
return !!(!this.followPointer &&
|
|
@@ -25541,7 +25640,7 @@ class Tooltip {
|
|
|
25541
25640
|
* @param {number} anchorY
|
|
25542
25641
|
*/
|
|
25543
25642
|
move(x, y, anchorX, anchorY) {
|
|
25544
|
-
const { followPointer, options } = this, animation =
|
|
25643
|
+
const { followPointer, options } = this, animation = animObject(!followPointer &&
|
|
25545
25644
|
!this.isHidden &&
|
|
25546
25645
|
!options.fixed &&
|
|
25547
25646
|
options.animation), skipAnchor = followPointer || (this.len || 0) > 1, attr = { x, y };
|
|
@@ -25599,7 +25698,7 @@ class Tooltip {
|
|
|
25599
25698
|
point.points = void 0;
|
|
25600
25699
|
// Register the current series
|
|
25601
25700
|
const currentSeries = point.series;
|
|
25602
|
-
this.distance =
|
|
25701
|
+
this.distance = (currentSeries.tooltipOptions.distance ?? 16);
|
|
25603
25702
|
// Update the inner HTML
|
|
25604
25703
|
if (text === false) {
|
|
25605
25704
|
this.hide();
|
|
@@ -25872,7 +25971,7 @@ class Tooltip {
|
|
|
25872
25971
|
anchorY,
|
|
25873
25972
|
boxWidth,
|
|
25874
25973
|
point,
|
|
25875
|
-
rank:
|
|
25974
|
+
rank: boxPosition.rank ?? (isHeader ? 1 : 0),
|
|
25876
25975
|
size,
|
|
25877
25976
|
target: boxPosition.y,
|
|
25878
25977
|
tt,
|
|
@@ -26289,7 +26388,6 @@ class Tooltip {
|
|
|
26289
26388
|
|
|
26290
26389
|
|
|
26291
26390
|
|
|
26292
|
-
const { animObject: Point_animObject } = AnimationUtilities;
|
|
26293
26391
|
|
|
26294
26392
|
const { defaultOptions: Point_defaultOptions } = Defaults;
|
|
26295
26393
|
|
|
@@ -26629,10 +26727,15 @@ class Point {
|
|
|
26629
26727
|
*
|
|
26630
26728
|
* @internal
|
|
26631
26729
|
* @function Highcharts.Point#destroy
|
|
26730
|
+
*
|
|
26731
|
+
* @param {boolean} [sync]
|
|
26732
|
+
* Whether to destroy the point synchronously. Used internally from
|
|
26733
|
+
* series.destroy, where condemned points may cause animation errors
|
|
26734
|
+
* (#24976).
|
|
26632
26735
|
*/
|
|
26633
|
-
destroy() {
|
|
26634
|
-
if (!this.condemned) {
|
|
26635
|
-
const point = this, series = point.series, chart = series.chart, hoverPoints = chart.hoverPoints, globalAnimation = point.series.chart.renderer.globalAnimation, { duration } =
|
|
26736
|
+
destroy(sync) {
|
|
26737
|
+
if (!this.destroyed && !this.condemned) {
|
|
26738
|
+
const point = this, series = point.series, chart = series.chart, hoverPoints = chart.hoverPoints, globalAnimation = point.series.chart.renderer.globalAnimation, { duration } = animObject(globalAnimation);
|
|
26636
26739
|
/**
|
|
26637
26740
|
* Allow to call after animation.
|
|
26638
26741
|
* @internal
|
|
@@ -26649,6 +26752,7 @@ class Point {
|
|
|
26649
26752
|
for (const prop in point) { // eslint-disable-line guard-for-in
|
|
26650
26753
|
delete point[prop];
|
|
26651
26754
|
}
|
|
26755
|
+
this.destroyed = true;
|
|
26652
26756
|
};
|
|
26653
26757
|
if (point.legendItem) {
|
|
26654
26758
|
// Pies have legend items
|
|
@@ -26665,7 +26769,7 @@ class Point {
|
|
|
26665
26769
|
point.onMouseOut();
|
|
26666
26770
|
}
|
|
26667
26771
|
// Remove properties after animation
|
|
26668
|
-
if (duration && series.condemnedPoints) {
|
|
26772
|
+
if (duration && !sync && series.condemnedPoints) {
|
|
26669
26773
|
series.condemnedPoints.push(this);
|
|
26670
26774
|
this.graphic?.addClass('highcharts-point-condemned');
|
|
26671
26775
|
setTimeout(destroyPoint, duration);
|
|
@@ -26788,14 +26892,15 @@ class Point {
|
|
|
26788
26892
|
*
|
|
26789
26893
|
* @function Highcharts.Point#getZone
|
|
26790
26894
|
*
|
|
26791
|
-
* @return {Highcharts.SeriesZonesOptionsObject}
|
|
26792
|
-
* The zone item.
|
|
26895
|
+
* @return {Highcharts.SeriesZonesOptionsObject|undefined}
|
|
26896
|
+
* The zone item, or `undefined` if the series has no zones.
|
|
26793
26897
|
*/
|
|
26794
26898
|
getZone() {
|
|
26795
26899
|
const series = this.series, zones = series.zones, zoneAxis = series.zoneAxis || 'y';
|
|
26796
26900
|
let zone, i = 0;
|
|
26797
26901
|
zone = zones[i];
|
|
26798
|
-
while (
|
|
26902
|
+
while (i < zones.length &&
|
|
26903
|
+
this[zoneAxis] >= zone.value) {
|
|
26799
26904
|
zone = zones[++i];
|
|
26800
26905
|
}
|
|
26801
26906
|
// For resetting or reusing the point (#8100)
|
|
@@ -27211,7 +27316,7 @@ class Point {
|
|
|
27211
27316
|
*/
|
|
27212
27317
|
select(selected, accumulate) {
|
|
27213
27318
|
const point = this, series = point.series, chart = series.chart;
|
|
27214
|
-
selected =
|
|
27319
|
+
selected = (selected ?? !point.selected);
|
|
27215
27320
|
this.selectedStaging = selected;
|
|
27216
27321
|
// Fire the event with the default handler
|
|
27217
27322
|
point.firePointEvent(selected ? 'select' : 'unselect', { accumulate: accumulate }, function () {
|
|
@@ -27335,9 +27440,8 @@ class Point {
|
|
|
27335
27440
|
* @emits Highcharts.Point#event:afterSetState
|
|
27336
27441
|
*/
|
|
27337
27442
|
setState(state, move) {
|
|
27338
|
-
const point = this, series = point.series, previousState = point.state, stateOptions =
|
|
27339
|
-
|
|
27340
|
-
series.options.marker), normalDisabled = (markerOptions && markerOptions.enabled === false), markerStateOptions = markerOptions?.states?.[state || 'normal'] ||
|
|
27443
|
+
const point = this, series = point.series, previousState = point.state, stateOptions = series.options.states?.[state || 'normal'] || {}, markerOptions = (Point_defaultOptions.plotOptions?.[series.type]?.marker &&
|
|
27444
|
+
series.options.marker), normalDisabled = markerOptions?.enabled === false, markerStateOptions = markerOptions?.states?.[state || 'normal'] ||
|
|
27341
27445
|
{}, stateDisabled = markerStateOptions.enabled === false, pointMarker = point.marker || {}, chart = series.chart, hasMarkers = (markerOptions && series.markerAttribs);
|
|
27342
27446
|
let halo = series.halo, markerAttribs, pointAttribs, pointAttribsAnimation, stateMarkerGraphic = series.stateMarkerGraphic, newSymbol;
|
|
27343
27447
|
state = state || ''; // Empty string
|
|
@@ -27350,13 +27454,10 @@ class Point {
|
|
|
27350
27454
|
(stateOptions.enabled === false) ||
|
|
27351
27455
|
// General point marker's state options is disabled
|
|
27352
27456
|
(state && (stateDisabled ||
|
|
27353
|
-
(normalDisabled &&
|
|
27354
|
-
markerStateOptions.enabled === false))) ||
|
|
27457
|
+
(normalDisabled && markerStateOptions.enabled === false))) ||
|
|
27355
27458
|
// Individual point marker's state options is disabled
|
|
27356
27459
|
(state &&
|
|
27357
|
-
pointMarker.states
|
|
27358
|
-
pointMarker.states[state] &&
|
|
27359
|
-
pointMarker.states[state].enabled === false) // #1610
|
|
27460
|
+
pointMarker.states?.[state]?.enabled === false) // #1610
|
|
27360
27461
|
) {
|
|
27361
27462
|
return;
|
|
27362
27463
|
}
|
|
@@ -27375,7 +27476,8 @@ class Point {
|
|
|
27375
27476
|
}
|
|
27376
27477
|
if (!chart.styledMode) {
|
|
27377
27478
|
pointAttribs = series.pointAttribs(point, state);
|
|
27378
|
-
pointAttribsAnimation =
|
|
27479
|
+
pointAttribsAnimation = (chart.options.chart.animation ??
|
|
27480
|
+
stateOptions.animation);
|
|
27379
27481
|
const opacity = pointAttribs.opacity;
|
|
27380
27482
|
// Some inactive points (e.g. slices in pie) should apply
|
|
27381
27483
|
// opacity also for their labels
|
|
@@ -27393,9 +27495,11 @@ class Point {
|
|
|
27393
27495
|
point.graphic.animate(pointAttribs, pointAttribsAnimation);
|
|
27394
27496
|
}
|
|
27395
27497
|
if (markerAttribs) {
|
|
27396
|
-
point.graphic.animate(markerAttribs,
|
|
27498
|
+
point.graphic.animate(markerAttribs, (
|
|
27397
27499
|
// Turn off globally:
|
|
27398
|
-
chart.options.chart.animation
|
|
27500
|
+
chart.options.chart.animation ??
|
|
27501
|
+
markerStateOptions.animation ??
|
|
27502
|
+
markerOptions.animation));
|
|
27399
27503
|
}
|
|
27400
27504
|
// Zooming in from a range with no markers to a range with markers
|
|
27401
27505
|
if (stateMarkerGraphic) {
|
|
@@ -27444,10 +27548,12 @@ class Point {
|
|
|
27444
27548
|
}
|
|
27445
27549
|
}
|
|
27446
27550
|
// Show me your halo
|
|
27447
|
-
const haloOptions = stateOptions.halo
|
|
27551
|
+
const haloOptions = isObject(stateOptions.halo) ?
|
|
27552
|
+
stateOptions.halo :
|
|
27553
|
+
{};
|
|
27448
27554
|
const markerGraphic = (point.graphic || stateMarkerGraphic);
|
|
27449
27555
|
const markerVisibility = markerGraphic?.visibility || 'inherit';
|
|
27450
|
-
if (haloOptions
|
|
27556
|
+
if (haloOptions.size &&
|
|
27451
27557
|
markerGraphic &&
|
|
27452
27558
|
markerVisibility !== 'hidden' &&
|
|
27453
27559
|
!point.isCluster) {
|
|
@@ -27461,7 +27567,7 @@ class Point {
|
|
|
27461
27567
|
});
|
|
27462
27568
|
halo.attr({
|
|
27463
27569
|
'class': 'highcharts-halo highcharts-color-' +
|
|
27464
|
-
|
|
27570
|
+
(point.colorIndex ?? series.colorIndex) +
|
|
27465
27571
|
(point.className ? ' ' + point.className : ''),
|
|
27466
27572
|
'visibility': markerVisibility,
|
|
27467
27573
|
'zIndex': -1 // #4929, #8276
|
|
@@ -27977,6 +28083,11 @@ class Pointer {
|
|
|
27977
28083
|
}
|
|
27978
28084
|
}
|
|
27979
28085
|
}
|
|
28086
|
+
// Run a final transform with a drop trigger to display the reset
|
|
28087
|
+
// zoom button after a pinch gesture (#22128)
|
|
28088
|
+
if (e?.type === 'touchend' && this.hasDragged) {
|
|
28089
|
+
chart.transform({ trigger: 'drop' });
|
|
28090
|
+
}
|
|
27980
28091
|
if (redraw) {
|
|
27981
28092
|
chart.redraw();
|
|
27982
28093
|
}
|
|
@@ -28189,7 +28300,7 @@ class Pointer {
|
|
|
28189
28300
|
const hoverPoints = [], useExisting = !!(isDirectTouch && existingHoverPoint), filter = function (s) {
|
|
28190
28301
|
return (s.visible &&
|
|
28191
28302
|
!(!shared && s.directTouch) && // #3821
|
|
28192
|
-
|
|
28303
|
+
(s.options.enableMouseTracking ?? true));
|
|
28193
28304
|
};
|
|
28194
28305
|
let hoverSeries = existingHoverSeries,
|
|
28195
28306
|
// Which series to look in for the hover point
|
|
@@ -28375,8 +28486,8 @@ class Pointer {
|
|
|
28375
28486
|
const ePos = (touches ?
|
|
28376
28487
|
touches.length ?
|
|
28377
28488
|
touches.item(0) :
|
|
28378
|
-
(
|
|
28379
|
-
|
|
28489
|
+
(touches.changedTouches ??
|
|
28490
|
+
e.changedTouches)[0] :
|
|
28380
28491
|
e);
|
|
28381
28492
|
// Get mouse position
|
|
28382
28493
|
if (!chartPosition) {
|
|
@@ -28450,7 +28561,7 @@ class Pointer {
|
|
|
28450
28561
|
* @function Highcharts.Pointer#onContainerMouseLeave
|
|
28451
28562
|
*/
|
|
28452
28563
|
onContainerMouseLeave(e) {
|
|
28453
|
-
const { pointer } = Pointer_charts[
|
|
28564
|
+
const { pointer } = Pointer_charts[(Pointer.hoverChartIndex ?? -1)] || {};
|
|
28454
28565
|
e = this.normalize(e);
|
|
28455
28566
|
this.onContainerMouseMove(e);
|
|
28456
28567
|
// #4886, MS Touch end fires mouseleave but with no related target
|
|
@@ -28550,7 +28661,7 @@ class Pointer {
|
|
|
28550
28661
|
if (e?.touches && this.hasPinchMoved) {
|
|
28551
28662
|
e?.preventDefault?.();
|
|
28552
28663
|
}
|
|
28553
|
-
Pointer_charts[
|
|
28664
|
+
Pointer_charts[(Pointer.hoverChartIndex ?? -1)]
|
|
28554
28665
|
?.pointer
|
|
28555
28666
|
?.drop(e);
|
|
28556
28667
|
}
|
|
@@ -28620,6 +28731,9 @@ class Pointer {
|
|
|
28620
28731
|
from: boxFromTouches(lastTouches),
|
|
28621
28732
|
trigger: e.type
|
|
28622
28733
|
});
|
|
28734
|
+
// Record a truthy value in order to trigger the final transform
|
|
28735
|
+
// in the drop function
|
|
28736
|
+
pointer.hasDragged = 1;
|
|
28623
28737
|
});
|
|
28624
28738
|
if (pointer.res) {
|
|
28625
28739
|
pointer.res = false;
|
|
@@ -29054,7 +29168,7 @@ class Pointer {
|
|
|
29054
29168
|
*/
|
|
29055
29169
|
setHoverChartIndex(e) {
|
|
29056
29170
|
const chart = this.chart;
|
|
29057
|
-
const hoverChart = Core_Globals.charts[
|
|
29171
|
+
const hoverChart = Core_Globals.charts[(Pointer.hoverChartIndex ?? -1)];
|
|
29058
29172
|
if (hoverChart &&
|
|
29059
29173
|
hoverChart !== chart) {
|
|
29060
29174
|
const relatedTargetObj = { relatedTarget: chart.container };
|
|
@@ -29100,7 +29214,7 @@ class Pointer {
|
|
|
29100
29214
|
Math.pow(pinchDown[0].chartY - e.chartY, 2)) >= 16 :
|
|
29101
29215
|
false;
|
|
29102
29216
|
}
|
|
29103
|
-
if (
|
|
29217
|
+
if (hasMoved ?? true) {
|
|
29104
29218
|
this.pinch(e);
|
|
29105
29219
|
}
|
|
29106
29220
|
}
|
|
@@ -29111,7 +29225,9 @@ class Pointer {
|
|
|
29111
29225
|
// If inside, capture touch-drag and display tooltip. If not inside,
|
|
29112
29226
|
// allow dragging the finger to scroll the page
|
|
29113
29227
|
if ((chart.tooltip?.options.followTouchMove ?? true) &&
|
|
29114
|
-
isInside
|
|
29228
|
+
isInside &&
|
|
29229
|
+
e.type === 'touchmove' &&
|
|
29230
|
+
!(chart.scrollablePixelsX || chart.scrollablePixelsY)) {
|
|
29115
29231
|
e.preventDefault();
|
|
29116
29232
|
}
|
|
29117
29233
|
}
|
|
@@ -29141,7 +29257,7 @@ class Pointer {
|
|
|
29141
29257
|
let zoomType = chart.zooming.type || '', zoomX, zoomY;
|
|
29142
29258
|
// Look for the pinchType option
|
|
29143
29259
|
if (/touch/.test(e.type)) {
|
|
29144
|
-
zoomType =
|
|
29260
|
+
zoomType = (chart.zooming.pinchType ?? zoomType);
|
|
29145
29261
|
}
|
|
29146
29262
|
this.zoomX = zoomX = /x/.test(zoomType);
|
|
29147
29263
|
this.zoomY = zoomY = /y/.test(zoomType);
|
|
@@ -29583,7 +29699,7 @@ class DataTableCore {
|
|
|
29583
29699
|
* Fetches the given column by the canonical column ID. Simplified version
|
|
29584
29700
|
* of the full `DataTable.getRow` method, always returning by reference.
|
|
29585
29701
|
*
|
|
29586
|
-
* @function Highcharts.DataTable#
|
|
29702
|
+
* @function Highcharts.DataTable#getColumn
|
|
29587
29703
|
*
|
|
29588
29704
|
* @param {string} columnId
|
|
29589
29705
|
* ID of the column to get.
|
|
@@ -29915,7 +30031,7 @@ var LegendSymbol;
|
|
|
29915
30031
|
// Draw the marker
|
|
29916
30032
|
if (markerOptions && markerOptions.enabled !== false && symbolWidth) {
|
|
29917
30033
|
// Do not allow the marker to be larger than the symbolHeight
|
|
29918
|
-
let radius = Math.min(
|
|
30034
|
+
let radius = Math.min((markerOptions.radius ?? generalRadius), generalRadius);
|
|
29919
30035
|
// Restrict symbol markers size
|
|
29920
30036
|
if (symbol.indexOf('url') === 0) {
|
|
29921
30037
|
markerOptions = merge(markerOptions, {
|
|
@@ -30319,6 +30435,10 @@ const seriesDefaults = {
|
|
|
30319
30435
|
* ```
|
|
30320
30436
|
*
|
|
30321
30437
|
* @type {Highcharts.DataMappingOptionsObject}
|
|
30438
|
+
* @sample highcharts/datatable/datamapping
|
|
30439
|
+
* Basic data mapping
|
|
30440
|
+
* @sample highcharts/datatable/datamapping-dynamic
|
|
30441
|
+
* Data mapping with dynamic updates
|
|
30322
30442
|
* @sample {highcharts} highcharts/datatable/series-datatable-multiple
|
|
30323
30443
|
* Series with two data tables
|
|
30324
30444
|
* @sample {highcharts} highcharts/datatable/nested-keys
|
|
@@ -30329,6 +30449,29 @@ const seriesDefaults = {
|
|
|
30329
30449
|
* @since 13.0.0
|
|
30330
30450
|
* @apioption plotOptions.series.dataMapping
|
|
30331
30451
|
*/
|
|
30452
|
+
/**
|
|
30453
|
+
* Options for a specific series-level data table or an array of data
|
|
30454
|
+
* tables. The `dataTable` option can be either a configuration object or an
|
|
30455
|
+
* instance of the `DataTable` class. If a `DataTable` instance is passed,
|
|
30456
|
+
* it will be used directly. If a configuration object or an array is
|
|
30457
|
+
* passed, a new `DataTable` instance will be created based on the provided
|
|
30458
|
+
* configuration.
|
|
30459
|
+
*
|
|
30460
|
+
* @type {Highcharts.DataTable|Highcharts.DataTableOptionsObject|Array<Highcharts.DataTable|Highcharts.DataTableOptionsObject>}
|
|
30461
|
+
* @sample {highcharts} highcharts/datatable/series-datatable/
|
|
30462
|
+
* Series with one data table each
|
|
30463
|
+
* @sample {highcharts} highcharts/datatable/series-datatable-multiple/
|
|
30464
|
+
* Series with two data tables
|
|
30465
|
+
* @sample {highstock} stock/datatable/series-datatable/
|
|
30466
|
+
* Series with one data table each
|
|
30467
|
+
* @sample {highstock} stock/datatable/series-datatable-multiple/
|
|
30468
|
+
* Series with two data tables
|
|
30469
|
+
* @sample {highmaps} maps/datatable/series-datatable
|
|
30470
|
+
* Series-level data table
|
|
30471
|
+
*
|
|
30472
|
+
* @since 13.0.0
|
|
30473
|
+
* @apioption plotOptions.series.dataTable
|
|
30474
|
+
*/
|
|
30332
30475
|
/**
|
|
30333
30476
|
* Enable or disable the mouse tracking for a specific series. This
|
|
30334
30477
|
* includes point tooltips and click events on graphs and points. For
|
|
@@ -31212,6 +31355,7 @@ const seriesDefaults = {
|
|
|
31212
31355
|
* `series.allowPointSelect` option to true.
|
|
31213
31356
|
*
|
|
31214
31357
|
* @declare Highcharts.PointStatesSelectOptionsObject
|
|
31358
|
+
* @extends plotOptions.series.marker.states.hover
|
|
31215
31359
|
*/
|
|
31216
31360
|
select: {
|
|
31217
31361
|
/**
|
|
@@ -31788,6 +31932,7 @@ const seriesDefaults = {
|
|
|
31788
31932
|
* @sample {highmaps} maps/plotoptions/series-datalabels-box/
|
|
31789
31933
|
* Data labels box options
|
|
31790
31934
|
*
|
|
31935
|
+
* @type {number|Array<number>}
|
|
31791
31936
|
* @since 2.2.1
|
|
31792
31937
|
*/
|
|
31793
31938
|
padding: [1, 3],
|
|
@@ -31989,6 +32134,9 @@ const seriesDefaults = {
|
|
|
31989
32134
|
/**
|
|
31990
32135
|
* A collection of options for different series states.
|
|
31991
32136
|
*
|
|
32137
|
+
* In addition to the options documented under each state, any option from
|
|
32138
|
+
* the parent series type can be set, with exception of `data` and `states`.
|
|
32139
|
+
*
|
|
31992
32140
|
* @declare Highcharts.SeriesStatesOptionsObject
|
|
31993
32141
|
*/
|
|
31994
32142
|
states: {
|
|
@@ -32162,6 +32310,7 @@ const seriesDefaults = {
|
|
|
32162
32310
|
* Disabled inactive state
|
|
32163
32311
|
*
|
|
32164
32312
|
* @declare Highcharts.SeriesStatesInactiveOptionsObject
|
|
32313
|
+
* @extends plotOptions.series.states.hover
|
|
32165
32314
|
*/
|
|
32166
32315
|
inactive: {
|
|
32167
32316
|
/**
|
|
@@ -32562,7 +32711,6 @@ var SeriesRegistry;
|
|
|
32562
32711
|
* */
|
|
32563
32712
|
|
|
32564
32713
|
|
|
32565
|
-
const { animObject: Series_animObject, setAnimation: Series_setAnimation } = AnimationUtilities;
|
|
32566
32714
|
|
|
32567
32715
|
|
|
32568
32716
|
const { defaultOptions: Series_defaultOptions } = Defaults;
|
|
@@ -32700,6 +32848,13 @@ class Series {
|
|
|
32700
32848
|
* @type {number|undefined}
|
|
32701
32849
|
* @readonly
|
|
32702
32850
|
*/
|
|
32851
|
+
/**
|
|
32852
|
+
* The main group for the series' graphics.
|
|
32853
|
+
*
|
|
32854
|
+
* @name Highcharts.Series#group
|
|
32855
|
+
* @type {Highcharts.SVGElement}
|
|
32856
|
+
* @readonly
|
|
32857
|
+
*/
|
|
32703
32858
|
/**
|
|
32704
32859
|
* Contains the series' index in the `Chart.series` array.
|
|
32705
32860
|
*
|
|
@@ -32832,10 +32987,12 @@ class Series {
|
|
|
32832
32987
|
*/
|
|
32833
32988
|
series.options = series.setOptions(userOptions);
|
|
32834
32989
|
const options = series.options, visible = options.visible !== false;
|
|
32835
|
-
// Create the data table
|
|
32836
|
-
this.dataTable ?? (this.dataTable = options.dataTable
|
|
32837
|
-
|
|
32838
|
-
|
|
32990
|
+
// Create the data table or use the one passed as option
|
|
32991
|
+
this.dataTable ?? (this.dataTable = isArray(options.dataTable) ?
|
|
32992
|
+
new Data_DataTableCore() :
|
|
32993
|
+
options.dataTable?.isDataTable ?
|
|
32994
|
+
options.dataTable :
|
|
32995
|
+
new Data_DataTableCore(options.dataTable));
|
|
32839
32996
|
/**
|
|
32840
32997
|
* All child series that are linked to the current series through the
|
|
32841
32998
|
* [linkedTo](https://api.highcharts.com/highcharts/series.line.linkedTo)
|
|
@@ -32895,7 +33052,7 @@ class Series {
|
|
|
32895
33052
|
if (chartSeries.length) {
|
|
32896
33053
|
lastSeries = chartSeries[chartSeries.length - 1];
|
|
32897
33054
|
}
|
|
32898
|
-
series._i =
|
|
33055
|
+
series._i = (lastSeries?._i ?? -1) + 1;
|
|
32899
33056
|
series.opacity = series.options.opacity;
|
|
32900
33057
|
// Insert the series and re-order all series above the insertion
|
|
32901
33058
|
// point.
|
|
@@ -32942,7 +33099,7 @@ class Series {
|
|
|
32942
33099
|
// Apply if the series xAxis or yAxis option matches
|
|
32943
33100
|
// the number of the axis, or if undefined, use the
|
|
32944
33101
|
// first axis
|
|
32945
|
-
if (
|
|
33102
|
+
if ((seriesOptions[coll] ?? 0) === axis.index ||
|
|
32946
33103
|
(typeof seriesOptions[coll] !==
|
|
32947
33104
|
'undefined' &&
|
|
32948
33105
|
seriesOptions[coll] === axisOptions.id)) {
|
|
@@ -32985,8 +33142,12 @@ class Series {
|
|
|
32985
33142
|
* @function Highcharts.Series#hasMarkerChanged
|
|
32986
33143
|
*/
|
|
32987
33144
|
hasMarkerChanged(options, oldOptions) {
|
|
32988
|
-
const marker = options.marker, oldMarker = oldOptions.marker
|
|
32989
|
-
|
|
33145
|
+
const marker = options.marker, oldMarker = oldOptions.marker;
|
|
33146
|
+
// Note that `marker` holds the full, merged object including
|
|
33147
|
+
// `plotOptions`, while `oldMarker` is the user-defined series-level
|
|
33148
|
+
// options only. We may need to refactor that in the future if more
|
|
33149
|
+
// issues like #24057 arise.
|
|
33150
|
+
return marker && oldMarker && ((oldMarker.enabled && !marker.enabled) ||
|
|
32990
33151
|
oldMarker.symbol !== marker.symbol || // #10870, #15946
|
|
32991
33152
|
oldMarker.height !== marker.height || // #16274
|
|
32992
33153
|
oldMarker.width !== marker.width // #16274
|
|
@@ -33005,7 +33166,8 @@ class Series {
|
|
|
33005
33166
|
time.parse(options.pointStart) ??
|
|
33006
33167
|
0;
|
|
33007
33168
|
let pointInterval;
|
|
33008
|
-
this.pointInterval = pointInterval =
|
|
33169
|
+
this.pointInterval = pointInterval =
|
|
33170
|
+
this.pointInterval ?? options.pointInterval ?? 1;
|
|
33009
33171
|
if (relativeXValue && isNumber(x)) {
|
|
33010
33172
|
pointInterval *= x;
|
|
33011
33173
|
}
|
|
@@ -33077,9 +33239,13 @@ class Series {
|
|
|
33077
33239
|
);
|
|
33078
33240
|
// When shared tooltip, stickyTracking is true by default,
|
|
33079
33241
|
// unless user says otherwise.
|
|
33080
|
-
this.stickyTracking =
|
|
33081
|
-
|
|
33082
|
-
|
|
33242
|
+
this.stickyTracking =
|
|
33243
|
+
seriesUserOptions.stickyTracking ??
|
|
33244
|
+
userPlotOptionsType.stickyTracking ??
|
|
33245
|
+
userPlotOptionsSeries.stickyTracking ??
|
|
33246
|
+
(this.tooltipOptions.shared && !this.noSharedTooltip ?
|
|
33247
|
+
true :
|
|
33248
|
+
options.stickyTracking);
|
|
33083
33249
|
// Delete marker object if not allowed (#1125)
|
|
33084
33250
|
if (typeOptions.marker === null) {
|
|
33085
33251
|
delete options.marker;
|
|
@@ -33157,7 +33323,9 @@ class Series {
|
|
|
33157
33323
|
if (!value) {
|
|
33158
33324
|
// Pick up either the colorIndex option, or the series.colorIndex
|
|
33159
33325
|
// after Series.update()
|
|
33160
|
-
setting =
|
|
33326
|
+
setting = prop === 'color' ?
|
|
33327
|
+
(this.options.colorIndex ?? this[indexName]) :
|
|
33328
|
+
this[indexName];
|
|
33161
33329
|
if (defined(setting)) { // After Series.update()
|
|
33162
33330
|
i = setting;
|
|
33163
33331
|
}
|
|
@@ -33217,7 +33385,7 @@ class Series {
|
|
|
33217
33385
|
*/
|
|
33218
33386
|
getSymbol() {
|
|
33219
33387
|
const seriesMarkerOption = this.options.marker;
|
|
33220
|
-
this.getCyclic('symbol', seriesMarkerOption
|
|
33388
|
+
this.getCyclic('symbol', seriesMarkerOption?.symbol, this.chart.options.symbols);
|
|
33221
33389
|
}
|
|
33222
33390
|
/**
|
|
33223
33391
|
* Shorthand to get one of the series' data columns from `Series.dataTable`.
|
|
@@ -33413,9 +33581,10 @@ class Series {
|
|
|
33413
33581
|
if (!oldData[i].destroyed && !oldData[i].condemned) {
|
|
33414
33582
|
const pOptions = dataTable.getRowObject(i);
|
|
33415
33583
|
if (pOptions) {
|
|
33584
|
+
// Remove undefined properties, but preserve explicit
|
|
33585
|
+
// nulls (#24872)
|
|
33416
33586
|
Object.keys(pOptions).forEach((key) => {
|
|
33417
|
-
if (
|
|
33418
|
-
pOptions[key] === oldData[i].options[key]*/) {
|
|
33587
|
+
if (pOptions[key] === void 0) {
|
|
33419
33588
|
delete pOptions[key];
|
|
33420
33589
|
}
|
|
33421
33590
|
});
|
|
@@ -33820,8 +33989,12 @@ class Series {
|
|
|
33820
33989
|
}
|
|
33821
33990
|
}
|
|
33822
33991
|
}
|
|
33823
|
-
// Find the closest distance between processed points
|
|
33824
|
-
|
|
33992
|
+
// Find the closest distance between processed points. When the data was
|
|
33993
|
+
// cropped (or set out of range), read x from the freshly cropped local
|
|
33994
|
+
// `modified` table, #24858.
|
|
33995
|
+
if (modified !== table) {
|
|
33996
|
+
xData = modified.getColumn('x', true) || [];
|
|
33997
|
+
}
|
|
33825
33998
|
const closestPointRange = getClosestDistance([
|
|
33826
33999
|
logarithmic ?
|
|
33827
34000
|
xData.map(logarithmic.log2lin) :
|
|
@@ -34026,9 +34199,9 @@ class Series {
|
|
|
34026
34199
|
* Force getting extremes of a total series data range.
|
|
34027
34200
|
*/
|
|
34028
34201
|
getExtremes(yData, forceExtremesFromAll) {
|
|
34029
|
-
const { xAxis, yAxis } = this, getExtremesFromAll = forceExtremesFromAll ||
|
|
34202
|
+
const { options, xAxis, yAxis } = this, getExtremesFromAll = forceExtremesFromAll ||
|
|
34030
34203
|
this.getExtremesFromAll ||
|
|
34031
|
-
|
|
34204
|
+
options.getExtremesFromAll, // #4599, #21003
|
|
34032
34205
|
table = getExtremesFromAll && this.cropped ?
|
|
34033
34206
|
this.dataTable :
|
|
34034
34207
|
this.dataTable.getModified(), rowCount = table.rowCount, customData = yData || this.stackedYData, yAxisData = customData ?
|
|
@@ -34038,7 +34211,12 @@ class Series {
|
|
|
34038
34211
|
// non-sorted data like scatter (#7639).
|
|
34039
34212
|
shoulder = this.requireSorting && !this.is('column') ?
|
|
34040
34213
|
1 : 0,
|
|
34041
|
-
//
|
|
34214
|
+
// Used only for `cumulativeStart` (#24608)
|
|
34215
|
+
excludeShoulder = options.cumulative &&
|
|
34216
|
+
options.cumulativeStart &&
|
|
34217
|
+
shoulder &&
|
|
34218
|
+
!getExtremesFromAll,
|
|
34219
|
+
// Compensate for log X axis (#2117)
|
|
34042
34220
|
positiveValuesOnly = yAxis ? yAxis.positiveValuesOnly : false, doAll = getExtremesFromAll ||
|
|
34043
34221
|
this.cropped ||
|
|
34044
34222
|
!xAxis; // For colorAxis support
|
|
@@ -34050,10 +34228,10 @@ class Series {
|
|
|
34050
34228
|
}
|
|
34051
34229
|
for (i = 0; i < rowCount; i++) {
|
|
34052
34230
|
x = xData[i];
|
|
34053
|
-
// Check if it is within the selected x
|
|
34054
|
-
if (doAll ||
|
|
34231
|
+
// Check if it is within the selected x-axis range
|
|
34232
|
+
if ((doAll ||
|
|
34055
34233
|
((xData[i + shoulder] || x) >= xMin &&
|
|
34056
|
-
(xData[i - shoulder] || x) <= xMax)) {
|
|
34234
|
+
(xData[i - shoulder] || x) <= xMax)) && (!excludeShoulder || x >= xMin)) {
|
|
34057
34235
|
for (const values of yAxisData) {
|
|
34058
34236
|
const val = values[i];
|
|
34059
34237
|
// For points within the visible range, including the
|
|
@@ -34122,7 +34300,7 @@ class Series {
|
|
|
34122
34300
|
*/
|
|
34123
34301
|
translate() {
|
|
34124
34302
|
this.generatePoints();
|
|
34125
|
-
const series = this, { options, xAxis, yAxis } = series, { stacking, threshold } = options, {
|
|
34303
|
+
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
|
|
34126
34304
|
dynamicallyPlaced = Boolean(pointPlacement), stackThreshold = options.startFromThreshold ? threshold : 0, nullYSubstitute = (options?.nullInteraction &&
|
|
34127
34305
|
yAxis.len);
|
|
34128
34306
|
let i, plotX, lastPlotX, stackIndicator, closestPointRangePx = Number.MAX_VALUE;
|
|
@@ -34174,7 +34352,9 @@ class Series {
|
|
|
34174
34352
|
yValue = stackValues[1];
|
|
34175
34353
|
if (lowValue === stackThreshold &&
|
|
34176
34354
|
stackIndicator.key === stacks[xValue].base) {
|
|
34177
|
-
lowValue =
|
|
34355
|
+
lowValue = isNumber(threshold) ?
|
|
34356
|
+
threshold :
|
|
34357
|
+
yAxis.min;
|
|
34178
34358
|
}
|
|
34179
34359
|
// #1200, #1232
|
|
34180
34360
|
if (yAxis.positiveValuesOnly &&
|
|
@@ -34182,7 +34362,7 @@ class Series {
|
|
|
34182
34362
|
lowValue <= 0) {
|
|
34183
34363
|
lowValue = void 0;
|
|
34184
34364
|
}
|
|
34185
|
-
point.total = point.stackTotal =
|
|
34365
|
+
point.total = point.stackTotal = stackItem.total ?? void 0;
|
|
34186
34366
|
point.percentage = defined(point.y) && stackItem.total ?
|
|
34187
34367
|
(point.y / stackItem.total * 100) : void 0;
|
|
34188
34368
|
point.stackY = yValue;
|
|
@@ -34315,7 +34495,7 @@ class Series {
|
|
|
34315
34495
|
* Initialize the animation.
|
|
34316
34496
|
*/
|
|
34317
34497
|
animate(init) {
|
|
34318
|
-
const { chart, group, markerGroup } = this, inverted = chart.inverted, animation =
|
|
34498
|
+
const { chart, group, markerGroup } = this, inverted = chart.inverted, animation = animObject(this.options.animation),
|
|
34319
34499
|
// The key for temporary animation clips
|
|
34320
34500
|
animationClipKey = [
|
|
34321
34501
|
this.getSharedClipKey(),
|
|
@@ -34411,10 +34591,11 @@ class Series {
|
|
|
34411
34591
|
*/
|
|
34412
34592
|
drawPoints(points) {
|
|
34413
34593
|
points || (points = this.points.concat(this.condemnedPoints));
|
|
34414
|
-
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 =
|
|
34415
|
-
|
|
34416
|
-
|
|
34417
|
-
seriesMarkerOptions.
|
|
34594
|
+
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 ??
|
|
34595
|
+
(!xAxis || xAxis.isRadial ? true : null) ??
|
|
34596
|
+
// Use larger or equal as radius is null in bubbles (#6321)
|
|
34597
|
+
((series.closestPointRangePx ?? -Infinity) >= ((seriesMarkerOptions.enabledThreshold ?? 2) *
|
|
34598
|
+
seriesMarkerOptions.radius));
|
|
34418
34599
|
let i, point, graphic, verb, pointMarkerOptions, hasPointMarker, markerAttribs;
|
|
34419
34600
|
if (seriesMarkerOptions.enabled !== false ||
|
|
34420
34601
|
series._hasPointMarkers) {
|
|
@@ -34431,8 +34612,10 @@ class Series {
|
|
|
34431
34612
|
// Only draw the point if y is defined
|
|
34432
34613
|
if (shouldDrawMarker) {
|
|
34433
34614
|
// Shortcuts
|
|
34434
|
-
const symbol =
|
|
34435
|
-
|
|
34615
|
+
const symbol = pointMarkerOptions.symbol ??
|
|
34616
|
+
series.symbol ??
|
|
34617
|
+
'rect';
|
|
34618
|
+
markerAttribs = series.markerAttribs(point, point.selected ? 'select' : '');
|
|
34436
34619
|
const isInside = point.isInside !== false;
|
|
34437
34620
|
if (!graphic &&
|
|
34438
34621
|
isInside &&
|
|
@@ -34497,15 +34680,17 @@ class Series {
|
|
|
34497
34680
|
* A hash containing those attributes that are not settable from CSS.
|
|
34498
34681
|
*/
|
|
34499
34682
|
markerAttribs(point, state) {
|
|
34500
|
-
const seriesOptions = this.options, seriesMarkerOptions = seriesOptions.marker, pointMarkerOptions = point.marker || {}, symbol = (pointMarkerOptions.symbol ||
|
|
34683
|
+
const seriesOptions = this.options, seriesMarkerOptions = seriesOptions.marker ?? {}, pointMarkerOptions = point.marker || {}, symbol = (pointMarkerOptions.symbol ||
|
|
34501
34684
|
seriesMarkerOptions.symbol), attribs = {};
|
|
34502
|
-
let seriesStateOptions, pointStateOptions, radius =
|
|
34685
|
+
let seriesStateOptions, pointStateOptions, radius = pointMarkerOptions.radius ??
|
|
34686
|
+
seriesMarkerOptions.radius;
|
|
34503
34687
|
// Handle hover and select states
|
|
34504
34688
|
if (state) {
|
|
34505
|
-
seriesStateOptions = seriesMarkerOptions
|
|
34689
|
+
seriesStateOptions = seriesMarkerOptions.states?.[state];
|
|
34506
34690
|
pointStateOptions = pointMarkerOptions.states?.[state];
|
|
34507
|
-
radius =
|
|
34508
|
-
|
|
34691
|
+
radius = pointStateOptions?.radius ??
|
|
34692
|
+
seriesStateOptions?.radius ??
|
|
34693
|
+
(radius && radius + (seriesStateOptions?.radiusPlus || 0));
|
|
34509
34694
|
}
|
|
34510
34695
|
point.hasImage = symbol && symbol.indexOf('url') === 0;
|
|
34511
34696
|
if (point.hasImage) {
|
|
@@ -34518,7 +34703,7 @@ class Series {
|
|
|
34518
34703
|
0 :
|
|
34519
34704
|
symbol === 'rect' ?
|
|
34520
34705
|
// Rectangle symbols need crisp edges, others don't
|
|
34521
|
-
seriesMarkerOptions
|
|
34706
|
+
seriesMarkerOptions.lineWidth || 0 :
|
|
34522
34707
|
1);
|
|
34523
34708
|
}
|
|
34524
34709
|
attribs.x = pos[0] - radius;
|
|
@@ -34549,8 +34734,9 @@ class Series {
|
|
|
34549
34734
|
* The presentational attributes to be set on the point.
|
|
34550
34735
|
*/
|
|
34551
34736
|
pointAttribs(point, state) {
|
|
34552
|
-
const options = this.options, seriesMarkerOptions = options.marker, pointOptions = point?.options, pointMarkerOptions = pointOptions?.marker || {}, pointColorOption = pointOptions?.color, pointColor = point?.color, zoneColor = point?.zone?.color;
|
|
34553
|
-
let
|
|
34737
|
+
const options = this.options, seriesMarkerOptions = options.marker ?? {}, pointOptions = point?.options, pointMarkerOptions = pointOptions?.marker || {}, pointColorOption = pointOptions?.color, pointColor = point?.color, zoneColor = point?.zone?.color;
|
|
34738
|
+
let color = this.color, fill, stroke, strokeWidth = pointMarkerOptions.lineWidth ??
|
|
34739
|
+
seriesMarkerOptions.lineWidth, opacity = (point?.isNull && options.nullInteraction) ? 0 : 1;
|
|
34554
34740
|
color = (pointColorOption ||
|
|
34555
34741
|
zoneColor ||
|
|
34556
34742
|
pointColor ||
|
|
@@ -34563,19 +34749,22 @@ class Series {
|
|
|
34563
34749
|
color);
|
|
34564
34750
|
// Handle hover and select states
|
|
34565
34751
|
state = state || 'normal';
|
|
34566
|
-
|
|
34567
|
-
|
|
34568
|
-
|
|
34569
|
-
|
|
34570
|
-
strokeWidth
|
|
34571
|
-
|
|
34572
|
-
|
|
34573
|
-
|
|
34574
|
-
|
|
34575
|
-
|
|
34576
|
-
|
|
34577
|
-
|
|
34578
|
-
|
|
34752
|
+
const seriesStateOptions = seriesMarkerOptions.states?.[state] || {};
|
|
34753
|
+
const pointStateOptions = pointMarkerOptions.states?.[state] || {};
|
|
34754
|
+
strokeWidth = pointStateOptions.lineWidth ??
|
|
34755
|
+
seriesStateOptions.lineWidth ??
|
|
34756
|
+
(strokeWidth || 0) + (pointStateOptions.lineWidthPlus ??
|
|
34757
|
+
seriesStateOptions.lineWidthPlus ??
|
|
34758
|
+
0);
|
|
34759
|
+
fill = (pointStateOptions.fillColor ||
|
|
34760
|
+
seriesStateOptions.fillColor ||
|
|
34761
|
+
fill);
|
|
34762
|
+
stroke = (pointStateOptions.lineColor ||
|
|
34763
|
+
seriesStateOptions.lineColor ||
|
|
34764
|
+
stroke);
|
|
34765
|
+
opacity = (pointStateOptions.opacity ??
|
|
34766
|
+
seriesStateOptions.opacity ??
|
|
34767
|
+
opacity);
|
|
34579
34768
|
return {
|
|
34580
34769
|
'stroke': stroke,
|
|
34581
34770
|
'stroke-width': strokeWidth,
|
|
@@ -34614,7 +34803,7 @@ class Series {
|
|
|
34614
34803
|
// Destroy all points with their elements
|
|
34615
34804
|
i = data.length;
|
|
34616
34805
|
while (i--) {
|
|
34617
|
-
data[i]?.destroy?.();
|
|
34806
|
+
data[i]?.destroy?.(true);
|
|
34618
34807
|
}
|
|
34619
34808
|
for (const zone of series.zones || []) {
|
|
34620
34809
|
// Destroy SVGElement's but preserve primitive props (#20426)
|
|
@@ -34641,7 +34830,7 @@ class Series {
|
|
|
34641
34830
|
erase(chart.series, series);
|
|
34642
34831
|
chart.orderItems('series');
|
|
34643
34832
|
// Clear all members
|
|
34644
|
-
objectEach(series, function (
|
|
34833
|
+
objectEach(series, function (_val, prop) {
|
|
34645
34834
|
if (!keepEventsForUpdate || prop !== 'hcEvents') {
|
|
34646
34835
|
delete series[prop];
|
|
34647
34836
|
}
|
|
@@ -34693,7 +34882,7 @@ class Series {
|
|
|
34693
34882
|
// Reset
|
|
34694
34883
|
zones.forEach((zone) => {
|
|
34695
34884
|
zone.lineClip = [];
|
|
34696
|
-
zone.translated = clamp(axis.toPixels(
|
|
34885
|
+
zone.translated = clamp(axis.toPixels((zone.value ?? axisMax), true) || 0, 0, len);
|
|
34697
34886
|
});
|
|
34698
34887
|
// The use of the Color Threshold assumes there are no gaps so it is
|
|
34699
34888
|
// safe to hide the original graph and area unless it is not
|
|
@@ -34917,7 +35106,7 @@ class Series {
|
|
|
34917
35106
|
* @emits Highcharts.Series#event:afterRender
|
|
34918
35107
|
*/
|
|
34919
35108
|
render() {
|
|
34920
|
-
const series = this, { chart, options, hasRendered } = series, animOptions =
|
|
35109
|
+
const series = this, { chart, options, hasRendered } = series, animOptions = animObject(options.animation), visibility = series.visible ?
|
|
34921
35110
|
'inherit' : 'hidden', // #2597
|
|
34922
35111
|
zIndex = options.zIndex, chartSeriesGroup = chart.seriesGroup;
|
|
34923
35112
|
let animDuration = series.finishedAnimating ?
|
|
@@ -35019,7 +35208,7 @@ class Series {
|
|
|
35019
35208
|
*
|
|
35020
35209
|
* @function Highcharts.Series#searchPoint
|
|
35021
35210
|
*
|
|
35022
|
-
* @param {
|
|
35211
|
+
* @param {PointerEvent} e
|
|
35023
35212
|
* The normalized pointer event
|
|
35024
35213
|
* @param {boolean} [compareX=false]
|
|
35025
35214
|
* Search only by the X value, not Y
|
|
@@ -35051,7 +35240,7 @@ class Series {
|
|
|
35051
35240
|
// Prevent multiple k-d-trees from being built simultaneously
|
|
35052
35241
|
// (#6235)
|
|
35053
35242
|
this.buildingKdTree = true;
|
|
35054
|
-
const series = this, seriesOptions = series.options, dimensions = seriesOptions.findNearestPointBy
|
|
35243
|
+
const series = this, seriesOptions = series.options, dimensions = (seriesOptions.findNearestPointBy ?? '')
|
|
35055
35244
|
.indexOf('y') > -1 ? 2 : 1;
|
|
35056
35245
|
/**
|
|
35057
35246
|
* Internal function
|
|
@@ -35101,7 +35290,7 @@ class Series {
|
|
|
35101
35290
|
* The point to search for.
|
|
35102
35291
|
* @param {boolean} [compareX=false]
|
|
35103
35292
|
* Search only by the X value, not Y.
|
|
35104
|
-
* @param {
|
|
35293
|
+
* @param {PointerEvent} [e]
|
|
35105
35294
|
* The normalized pointer event.
|
|
35106
35295
|
* @param {Function} [suppliedPointEvaluator]
|
|
35107
35296
|
* A custom point evaluator function.
|
|
@@ -35307,11 +35496,13 @@ class Series {
|
|
|
35307
35496
|
* Both X and Y values given
|
|
35308
35497
|
* @sample highcharts/members/series-addpoint-pie/
|
|
35309
35498
|
* Append pie slice
|
|
35310
|
-
* @sample
|
|
35499
|
+
* @sample highcharts/datatable/datamapping-dynamic
|
|
35500
|
+
* Alternative approach with data table
|
|
35501
|
+
* @sample {highstock} stock/members/series-addpoint/
|
|
35311
35502
|
* Append 100 points in Highcharts Stock
|
|
35312
|
-
* @sample stock/members/series-addpoint-shift/
|
|
35503
|
+
* @sample {highstock} stock/members/series-addpoint-shift/
|
|
35313
35504
|
* Append and shift in Highcharts Stock
|
|
35314
|
-
* @sample maps/members/series-addpoint/
|
|
35505
|
+
* @sample {highmaps} maps/members/series-addpoint/
|
|
35315
35506
|
* Add a point in Highmaps
|
|
35316
35507
|
*
|
|
35317
35508
|
* @function Highcharts.Series#addPoint
|
|
@@ -35347,7 +35538,7 @@ class Series {
|
|
|
35347
35538
|
const series = this, seriesOptions = series.options, { chart, data, dataTable: table, xAxis } = series, names = xAxis?.hasNames && xAxis.names, dataOptions = seriesOptions.data, xData = series.getColumn('x');
|
|
35348
35539
|
let isInTheMiddle, i;
|
|
35349
35540
|
// Optional redraw, defaults to true
|
|
35350
|
-
redraw =
|
|
35541
|
+
redraw = (redraw ?? true);
|
|
35351
35542
|
// Get options and push the point to xData, yData and series.options. In
|
|
35352
35543
|
// series.generatePoints the Point instance will be created on demand
|
|
35353
35544
|
// and pushed to the series.data array.
|
|
@@ -35457,8 +35648,8 @@ class Series {
|
|
|
35457
35648
|
chart.redraw();
|
|
35458
35649
|
}
|
|
35459
35650
|
};
|
|
35460
|
-
|
|
35461
|
-
redraw =
|
|
35651
|
+
setAnimation(animation, chart);
|
|
35652
|
+
redraw = (redraw ?? true);
|
|
35462
35653
|
// Fire the event with a default handler of removing the point
|
|
35463
35654
|
if (point) {
|
|
35464
35655
|
point.firePointEvent('remove', null, remove);
|
|
@@ -35501,7 +35692,7 @@ class Series {
|
|
|
35501
35692
|
// Redraw
|
|
35502
35693
|
chart.isDirtyLegend = chart.isDirtyBox = true;
|
|
35503
35694
|
chart.linkSeries(keepEvents);
|
|
35504
|
-
if (
|
|
35695
|
+
if (redraw ?? true) {
|
|
35505
35696
|
chart.redraw(animation);
|
|
35506
35697
|
}
|
|
35507
35698
|
}
|
|
@@ -35718,7 +35909,7 @@ class Series {
|
|
|
35718
35909
|
series.isDirtyData = true;
|
|
35719
35910
|
}
|
|
35720
35911
|
fireEvent(this, 'afterUpdate');
|
|
35721
|
-
if (
|
|
35912
|
+
if (redraw ?? true) {
|
|
35722
35913
|
chart.redraw(keepPoints ? void 0 : false);
|
|
35723
35914
|
}
|
|
35724
35915
|
}
|
|
@@ -35735,12 +35926,12 @@ class Series {
|
|
|
35735
35926
|
* @internal
|
|
35736
35927
|
*/
|
|
35737
35928
|
hasOptionChanged(optionName) {
|
|
35738
|
-
const chart = this.chart, option = this.options[optionName], plotOptions = chart.options.plotOptions, oldOption = this.userOptions[optionName], plotOptionsOption =
|
|
35929
|
+
const chart = this.chart, option = this.options[optionName], plotOptions = chart.options.plotOptions, oldOption = this.userOptions[optionName], plotOptionsOption = (plotOptions?.[this.type]?.[optionName] ?? plotOptions?.series?.[optionName]);
|
|
35739
35930
|
// Check if `plotOptions` are defined already, #19203
|
|
35740
35931
|
if (oldOption && !defined(plotOptionsOption)) {
|
|
35741
35932
|
return option !== oldOption;
|
|
35742
35933
|
}
|
|
35743
|
-
return option !==
|
|
35934
|
+
return option !== (plotOptionsOption ?? option);
|
|
35744
35935
|
}
|
|
35745
35936
|
/**
|
|
35746
35937
|
* Runs on mouse over the series graphical items.
|
|
@@ -35811,10 +36002,11 @@ class Series {
|
|
|
35811
36002
|
* Determines if state should be inherited by points too.
|
|
35812
36003
|
*/
|
|
35813
36004
|
setState(state, inherit) {
|
|
35814
|
-
const series = this, { graph, options } = series, { inactiveOtherPoints, states: stateOptions } = options,
|
|
36005
|
+
const series = this, { graph, options } = series, { inactiveOtherPoints, states: stateOptions = {} } = options,
|
|
35815
36006
|
// By default a quick animation to hover/inactive,
|
|
35816
36007
|
// slower to un-hover
|
|
35817
|
-
stateAnimation =
|
|
36008
|
+
stateAnimation = stateOptions[state || 'normal']?.animation ??
|
|
36009
|
+
series.chart.options.chart.animation;
|
|
35818
36010
|
let { lineWidth, opacity } = options;
|
|
35819
36011
|
state = state || '';
|
|
35820
36012
|
if (series.state !== state) {
|
|
@@ -35841,9 +36033,13 @@ class Series {
|
|
|
35841
36033
|
return;
|
|
35842
36034
|
}
|
|
35843
36035
|
if (state) {
|
|
35844
|
-
lineWidth =
|
|
35845
|
-
|
|
35846
|
-
|
|
36036
|
+
lineWidth = stateOptions[state]?.lineWidth ?? (!isNumber(lineWidth) ?
|
|
36037
|
+
void 0 :
|
|
36038
|
+
// Increase by lineWidthPlus only when lineWidth
|
|
36039
|
+
// is a number.
|
|
36040
|
+
(lineWidth +
|
|
36041
|
+
(stateOptions?.[state]?.lineWidthPlus || 0))); // #4035
|
|
36042
|
+
opacity = stateOptions[state]?.opacity ?? opacity;
|
|
35847
36043
|
}
|
|
35848
36044
|
if (graph && !graph.dashstyle && isNumber(lineWidth)) {
|
|
35849
36045
|
// Animate the graph stroke-width
|
|
@@ -35887,11 +36083,7 @@ class Series {
|
|
|
35887
36083
|
* Can be either `hover` or undefined to set to normal state.
|
|
35888
36084
|
*/
|
|
35889
36085
|
setAllPointsToState(state) {
|
|
35890
|
-
this.points.forEach(
|
|
35891
|
-
if (point.setState) {
|
|
35892
|
-
point.setState(state);
|
|
35893
|
-
}
|
|
35894
|
-
});
|
|
36086
|
+
this.points.forEach((point) => point.setState?.(state));
|
|
35895
36087
|
}
|
|
35896
36088
|
/**
|
|
35897
36089
|
* Show or hide the series.
|
|
@@ -36572,7 +36764,6 @@ Series_SeriesRegistry.series = Series;
|
|
|
36572
36764
|
* */
|
|
36573
36765
|
|
|
36574
36766
|
|
|
36575
|
-
const { animObject: Legend_animObject, setAnimation: Legend_setAnimation } = AnimationUtilities;
|
|
36576
36767
|
|
|
36577
36768
|
const { registerEventOptions: Legend_registerEventOptions } = Core_Foundation;
|
|
36578
36769
|
|
|
@@ -36701,7 +36892,7 @@ class Legend {
|
|
|
36701
36892
|
* @param {Highcharts.LegendOptions} options
|
|
36702
36893
|
*/
|
|
36703
36894
|
setOptions(options) {
|
|
36704
|
-
const padding =
|
|
36895
|
+
const padding = (options.padding ?? 8);
|
|
36705
36896
|
/**
|
|
36706
36897
|
* Legend options.
|
|
36707
36898
|
*
|
|
@@ -36718,7 +36909,7 @@ class Legend {
|
|
|
36718
36909
|
this.itemMarginBottom = options.itemMarginBottom;
|
|
36719
36910
|
this.padding = padding;
|
|
36720
36911
|
this.initialItemY = padding - 5; // 5 is pixels above the text
|
|
36721
|
-
this.symbolWidth =
|
|
36912
|
+
this.symbolWidth = (options.symbolWidth ?? 16);
|
|
36722
36913
|
this.pages = [];
|
|
36723
36914
|
this.proximate = options.layout === 'proximate' && !this.chart.inverted;
|
|
36724
36915
|
// #12705: baseline has to be reset on every update
|
|
@@ -36752,7 +36943,7 @@ class Legend {
|
|
|
36752
36943
|
}
|
|
36753
36944
|
this.destroy();
|
|
36754
36945
|
chart.isDirtyLegend = chart.isDirtyBox = true;
|
|
36755
|
-
if (
|
|
36946
|
+
if (redraw ?? true) {
|
|
36756
36947
|
chart.redraw();
|
|
36757
36948
|
}
|
|
36758
36949
|
fireEvent(this, 'afterUpdate', { redraw });
|
|
@@ -36990,7 +37181,7 @@ class Legend {
|
|
|
36990
37181
|
* The item to render.
|
|
36991
37182
|
*/
|
|
36992
37183
|
renderItem(item) {
|
|
36993
|
-
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 ?
|
|
37184
|
+
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 ?
|
|
36994
37185
|
item.series :
|
|
36995
37186
|
item, seriesOptions = series.options, showCheckbox = (!!legend.createCheckboxForItem &&
|
|
36996
37187
|
seriesOptions &&
|
|
@@ -37036,9 +37227,11 @@ class Legend {
|
|
|
37036
37227
|
legend.fontMetrics.f + 3 + legend.itemMarginTop;
|
|
37037
37228
|
label.attr('y', legend.baseline);
|
|
37038
37229
|
legend.symbolHeight =
|
|
37039
|
-
|
|
37230
|
+
(options.symbolHeight ?? legend.fontMetrics.f);
|
|
37040
37231
|
if (options.squareSymbol) {
|
|
37041
|
-
legend.symbolWidth =
|
|
37232
|
+
legend.symbolWidth =
|
|
37233
|
+
options.symbolWidth ??
|
|
37234
|
+
Math.max(legend.symbolHeight, 16);
|
|
37042
37235
|
itemExtraWidth = legend.symbolWidth + symbolPadding +
|
|
37043
37236
|
itemDistance + (showCheckbox ? 20 : 0);
|
|
37044
37237
|
if (ltr) {
|
|
@@ -37090,7 +37283,7 @@ class Legend {
|
|
|
37090
37283
|
* @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item
|
|
37091
37284
|
*/
|
|
37092
37285
|
layoutItem(item) {
|
|
37093
|
-
const options = this.options, padding = this.padding, horizontal = options.layout === 'horizontal', itemHeight = item.itemHeight, itemMarginBottom = this.itemMarginBottom, itemMarginTop = this.itemMarginTop, itemDistance = horizontal ?
|
|
37286
|
+
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 &&
|
|
37094
37287
|
this.totalItemWidth > maxLegendWidth) ?
|
|
37095
37288
|
this.maxItemWidth :
|
|
37096
37289
|
item.itemWidth, legendItem = item.legendItem || {};
|
|
@@ -37144,7 +37337,9 @@ class Legend {
|
|
|
37144
37337
|
const seriesOptions = series?.options;
|
|
37145
37338
|
// Handle showInLegend. If the series is linked to another series,
|
|
37146
37339
|
// defaults to false.
|
|
37147
|
-
if (series &&
|
|
37340
|
+
if (series &&
|
|
37341
|
+
(seriesOptions.showInLegend ??
|
|
37342
|
+
(!defined(seriesOptions.linkedTo)))) {
|
|
37148
37343
|
// Use points or series for the legend item depending on
|
|
37149
37344
|
// legendType
|
|
37150
37345
|
allItems = allItems.concat(series.legendItem?.labels ||
|
|
@@ -37426,7 +37621,7 @@ class Legend {
|
|
|
37426
37621
|
* @function Highcharts.Legend#handleOverflow
|
|
37427
37622
|
*/
|
|
37428
37623
|
handleOverflow(legendHeight) {
|
|
37429
|
-
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 =
|
|
37624
|
+
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) {
|
|
37430
37625
|
if (typeof height === 'number') {
|
|
37431
37626
|
clipRect.attr({
|
|
37432
37627
|
height: height
|
|
@@ -37472,7 +37667,7 @@ class Legend {
|
|
|
37472
37667
|
navOptions.enabled !== false) {
|
|
37473
37668
|
this.clipHeight = clipHeight =
|
|
37474
37669
|
Math.max(spaceHeight - 20 - this.titleHeight - padding, 0);
|
|
37475
|
-
this.currentPage =
|
|
37670
|
+
this.currentPage = (this.currentPage ?? 1);
|
|
37476
37671
|
this.fullHeight = legendHeight;
|
|
37477
37672
|
// Fill pages with Y positions so that the top of each a legend item
|
|
37478
37673
|
// defines the scroll top for each page (#2098)
|
|
@@ -37575,7 +37770,7 @@ class Legend {
|
|
|
37575
37770
|
}
|
|
37576
37771
|
if (currentPage > 0) {
|
|
37577
37772
|
if (typeof animation !== 'undefined') {
|
|
37578
|
-
|
|
37773
|
+
setAnimation(animation, chart);
|
|
37579
37774
|
}
|
|
37580
37775
|
this.nav.attr({
|
|
37581
37776
|
translateX: padding,
|
|
@@ -37632,7 +37827,7 @@ class Legend {
|
|
|
37632
37827
|
this.currentPage = currentPage;
|
|
37633
37828
|
this.positionCheckboxes();
|
|
37634
37829
|
// Fire event after scroll animation is complete
|
|
37635
|
-
const animOptions =
|
|
37830
|
+
const animOptions = animObject((animation ?? chart.renderer.globalAnimation ?? true));
|
|
37636
37831
|
syncTimeout(() => {
|
|
37637
37832
|
fireEvent(this, 'afterScroll', { currentPage });
|
|
37638
37833
|
}, animOptions.duration);
|
|
@@ -37842,7 +38037,7 @@ class Legend {
|
|
|
37842
38037
|
*/ /**
|
|
37843
38038
|
* Related browser event.
|
|
37844
38039
|
* @name Highcharts.LegendItemClickEventObject#browserEvent
|
|
37845
|
-
* @type {
|
|
38040
|
+
* @type {PointerEvent}
|
|
37846
38041
|
*/ /**
|
|
37847
38042
|
* Prevent the default action of toggle the visibility of the series or point.
|
|
37848
38043
|
* @name Highcharts.LegendItemClickEventObject#preventDefault
|
|
@@ -37893,7 +38088,7 @@ class Legend {
|
|
|
37893
38088
|
*/ /**
|
|
37894
38089
|
* Related browser event.
|
|
37895
38090
|
* @name Highcharts.PointLegendItemClickEventObject#browserEvent
|
|
37896
|
-
* @type {
|
|
38091
|
+
* @type {PointerEvent}
|
|
37897
38092
|
*/ /**
|
|
37898
38093
|
* Whether the default action has been prevented (`true`) or not.
|
|
37899
38094
|
* @name Highcharts.PointLegendItemClickEventObject#defaultPrevented
|
|
@@ -37949,7 +38144,7 @@ class Legend {
|
|
|
37949
38144
|
*/ /**
|
|
37950
38145
|
* Related browser event.
|
|
37951
38146
|
* @name Highcharts.SeriesLegendItemClickEventObject#browserEvent
|
|
37952
|
-
* @type {
|
|
38147
|
+
* @type {PointerEvent}
|
|
37953
38148
|
*/ /**
|
|
37954
38149
|
* Whether the default action has been prevented (`true`) or not.
|
|
37955
38150
|
* @name Highcharts.SeriesLegendItemClickEventObject#defaultPrevented
|
|
@@ -37983,7 +38178,6 @@ class Legend {
|
|
|
37983
38178
|
* */
|
|
37984
38179
|
|
|
37985
38180
|
|
|
37986
|
-
const { animate: Chart_animate, animObject: Chart_animObject, setAnimation: Chart_setAnimation } = AnimationUtilities;
|
|
37987
38181
|
|
|
37988
38182
|
|
|
37989
38183
|
const { defaultOptions: Chart_defaultOptions } = Defaults;
|
|
@@ -38074,7 +38268,7 @@ class Chart {
|
|
|
38074
38268
|
*/
|
|
38075
38269
|
static chart(a, b, c) {
|
|
38076
38270
|
const chart = new Chart(a, b, c);
|
|
38077
|
-
return chart.promise
|
|
38271
|
+
return chart.promise ?? chart;
|
|
38078
38272
|
}
|
|
38079
38273
|
// Implementation
|
|
38080
38274
|
constructor(a,
|
|
@@ -38115,10 +38309,10 @@ class Chart {
|
|
|
38115
38309
|
const chart = this, options = chart.options.chart, zooming = options.zooming;
|
|
38116
38310
|
chart.zooming = {
|
|
38117
38311
|
...zooming,
|
|
38118
|
-
type:
|
|
38119
|
-
key:
|
|
38120
|
-
pinchType:
|
|
38121
|
-
singleTouch:
|
|
38312
|
+
type: (options.zoomType ?? zooming.type),
|
|
38313
|
+
key: (options.zoomKey ?? zooming.key),
|
|
38314
|
+
pinchType: (options.pinchType ?? zooming.pinchType),
|
|
38315
|
+
singleTouch: options.zoomBySingleTouch ?? zooming.singleTouch ?? false,
|
|
38122
38316
|
resetButton: merge(zooming.resetButton, options.resetZoomButton)
|
|
38123
38317
|
};
|
|
38124
38318
|
}
|
|
@@ -38461,7 +38655,7 @@ class Chart {
|
|
|
38461
38655
|
redraw(animation) {
|
|
38462
38656
|
fireEvent(this, 'beforeRedraw');
|
|
38463
38657
|
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 = [];
|
|
38464
|
-
let hasDirtyStacks, hasStackedSeries, i,
|
|
38658
|
+
let hasDirtyStacks, hasStackedSeries, i, redrawLegend = chart.isDirtyLegend, serie;
|
|
38465
38659
|
renderer.rootFontSize = renderer.boxWrapper.getStyle('font-size');
|
|
38466
38660
|
// Handle responsive rules, not only on resize (#6130)
|
|
38467
38661
|
if (chart.setResponsive) {
|
|
@@ -38470,7 +38664,7 @@ class Chart {
|
|
|
38470
38664
|
// Set the global animation. When chart.hasRendered is not true, the
|
|
38471
38665
|
// redraw call comes from a responsive rule and animation should not
|
|
38472
38666
|
// occur.
|
|
38473
|
-
|
|
38667
|
+
setAnimation(chart.hasRendered ? animation : false, chart);
|
|
38474
38668
|
if (isHiddenChart) {
|
|
38475
38669
|
chart.temporaryDisplay();
|
|
38476
38670
|
}
|
|
@@ -38533,6 +38727,7 @@ class Chart {
|
|
|
38533
38727
|
});
|
|
38534
38728
|
chart.getMargins(); // #3098
|
|
38535
38729
|
// If one axis is dirty, all axes must be redrawn (#792, #2169)
|
|
38730
|
+
let isDirtyBox = chart.isDirtyBox;
|
|
38536
38731
|
axes.forEach(function (axis) {
|
|
38537
38732
|
if (axis.isDirty) {
|
|
38538
38733
|
isDirtyBox = true;
|
|
@@ -38669,7 +38864,7 @@ class Chart {
|
|
|
38669
38864
|
// inspect the generated series.points.
|
|
38670
38865
|
series.getPointsCollection()
|
|
38671
38866
|
.forEach((point) => {
|
|
38672
|
-
if (
|
|
38867
|
+
if (point.selectedStaging ?? point.selected) {
|
|
38673
38868
|
acc.push(point);
|
|
38674
38869
|
}
|
|
38675
38870
|
});
|
|
@@ -39068,11 +39263,8 @@ class Chart {
|
|
|
39068
39263
|
const chartHeight = chart.chartHeight;
|
|
39069
39264
|
let chartWidth = chart.chartWidth;
|
|
39070
39265
|
// Allow table cells and flex-boxes to shrink without the chart
|
|
39071
|
-
// blocking them out (#6427)
|
|
39072
|
-
|
|
39073
|
-
if (!chart.styledMode) {
|
|
39074
|
-
css(renderTo, { overflow: 'hidden' });
|
|
39075
|
-
}
|
|
39266
|
+
// blocking them out (#6427)
|
|
39267
|
+
css(renderTo, { overflow: 'hidden' });
|
|
39076
39268
|
// Create the inner container
|
|
39077
39269
|
if (!chart.styledMode) {
|
|
39078
39270
|
containerStyle = extend({
|
|
@@ -39110,7 +39302,7 @@ class Chart {
|
|
|
39110
39302
|
chartWidth = chart.chartWidth;
|
|
39111
39303
|
if (!chart.styledMode) {
|
|
39112
39304
|
css(container, {
|
|
39113
|
-
width:
|
|
39305
|
+
width: (optionsChart.style?.width ?? chartWidth + 'px')
|
|
39114
39306
|
});
|
|
39115
39307
|
}
|
|
39116
39308
|
}
|
|
@@ -39129,7 +39321,7 @@ class Chart {
|
|
|
39129
39321
|
// first ResizeObserver reflow
|
|
39130
39322
|
chart.containerBox = chart.getContainerBox();
|
|
39131
39323
|
// Set the initial animation from the options
|
|
39132
|
-
|
|
39324
|
+
setAnimation(void 0, chart);
|
|
39133
39325
|
chart.setClassName(optionsChart.className);
|
|
39134
39326
|
if (!chart.styledMode) {
|
|
39135
39327
|
chart.renderer.setStyle(optionsChart.style);
|
|
@@ -39324,7 +39516,7 @@ class Chart {
|
|
|
39324
39516
|
// Handle the isResizing counter
|
|
39325
39517
|
chart.isResizing += 1;
|
|
39326
39518
|
// Set the animation for the current process
|
|
39327
|
-
|
|
39519
|
+
setAnimation(animation, chart);
|
|
39328
39520
|
const globalAnimation = renderer.globalAnimation;
|
|
39329
39521
|
chart.oldChartHeight = chart.chartHeight;
|
|
39330
39522
|
chart.oldChartWidth = chart.chartWidth;
|
|
@@ -39343,7 +39535,7 @@ class Chart {
|
|
|
39343
39535
|
// Resize the container with the global animation applied if enabled
|
|
39344
39536
|
// (#2503)
|
|
39345
39537
|
if (!chart.styledMode) {
|
|
39346
|
-
(globalAnimation ?
|
|
39538
|
+
(globalAnimation ? animate : css)(chart.container, {
|
|
39347
39539
|
width: `${chartWidth + scrollablePixelsX}px`,
|
|
39348
39540
|
height: `${chartHeight + scrollablePixelsY}px`
|
|
39349
39541
|
}, globalAnimation);
|
|
@@ -39369,7 +39561,7 @@ class Chart {
|
|
|
39369
39561
|
if (chart) {
|
|
39370
39562
|
fireEvent(chart, 'endResize');
|
|
39371
39563
|
}
|
|
39372
|
-
},
|
|
39564
|
+
}, animObject(globalAnimation).duration);
|
|
39373
39565
|
}
|
|
39374
39566
|
// Handle resizing counter even if we've re-rendered or not (#20548).
|
|
39375
39567
|
chart.isResizing -= 1;
|
|
@@ -39753,7 +39945,7 @@ class Chart {
|
|
|
39753
39945
|
const mockTick = new Axis_Tick(axis, 0, '', true), label = mockTick.createLabel('x', labels);
|
|
39754
39946
|
mockTick.destroy();
|
|
39755
39947
|
if (label &&
|
|
39756
|
-
|
|
39948
|
+
(labels.reserveSpace ?? !isNumber(options.crossing))) {
|
|
39757
39949
|
expectedSpace = label.getBBox().height +
|
|
39758
39950
|
labels.distance +
|
|
39759
39951
|
Math.max(isNumber(offset) ? offset : 0, 0);
|
|
@@ -40088,7 +40280,7 @@ class Chart {
|
|
|
40088
40280
|
const chart = this;
|
|
40089
40281
|
let series;
|
|
40090
40282
|
if (options) { // <- not necessary
|
|
40091
|
-
redraw =
|
|
40283
|
+
redraw = (redraw ?? true); // Defaults to true
|
|
40092
40284
|
fireEvent(chart, 'addSeries', { options: options }, function () {
|
|
40093
40285
|
series = chart.initSeries(options);
|
|
40094
40286
|
chart.isDirtyLegend = true;
|
|
@@ -40179,7 +40371,7 @@ class Chart {
|
|
|
40179
40371
|
*/
|
|
40180
40372
|
createAxis(coll, options) {
|
|
40181
40373
|
const axis = new Axis_Axis(this, options.axis, coll);
|
|
40182
|
-
if (
|
|
40374
|
+
if (options.redraw ?? true) {
|
|
40183
40375
|
this.redraw(options.animation);
|
|
40184
40376
|
}
|
|
40185
40377
|
return axis;
|
|
@@ -40227,7 +40419,7 @@ class Chart {
|
|
|
40227
40419
|
}
|
|
40228
40420
|
loadingDiv.className = 'highcharts-loading';
|
|
40229
40421
|
// Update text
|
|
40230
|
-
HTML_AST.setElementHTML(loadingSpan,
|
|
40422
|
+
HTML_AST.setElementHTML(loadingSpan, (str ?? options.lang.loading ?? ''));
|
|
40231
40423
|
if (!chart.styledMode) {
|
|
40232
40424
|
// Update visuals
|
|
40233
40425
|
css(loadingDiv, extend(loadingStyle, { zIndex: 10 }));
|
|
@@ -40238,7 +40430,7 @@ class Chart {
|
|
|
40238
40430
|
opacity: 0,
|
|
40239
40431
|
display: ''
|
|
40240
40432
|
});
|
|
40241
|
-
|
|
40433
|
+
animate(loadingDiv, {
|
|
40242
40434
|
opacity: loadingStyle.opacity ?? 0.5
|
|
40243
40435
|
}, {
|
|
40244
40436
|
duration: loadingOptions?.showDuration ?? 0
|
|
@@ -40266,7 +40458,7 @@ class Chart {
|
|
|
40266
40458
|
loadingDiv.className =
|
|
40267
40459
|
'highcharts-loading highcharts-loading-hidden';
|
|
40268
40460
|
if (!this.styledMode) {
|
|
40269
|
-
|
|
40461
|
+
animate(loadingDiv, {
|
|
40270
40462
|
opacity: 0
|
|
40271
40463
|
}, {
|
|
40272
40464
|
duration: options.loading?.hideDuration ?? 100,
|
|
@@ -40298,6 +40490,9 @@ class Chart {
|
|
|
40298
40490
|
* Note that when changing series data, `chart.update` may mutate the passed
|
|
40299
40491
|
* data options.
|
|
40300
40492
|
*
|
|
40493
|
+
* If the given options don't differ from the current chart options, the
|
|
40494
|
+
* update is skipped and the `afterUpdate` event is not emitted.
|
|
40495
|
+
*
|
|
40301
40496
|
* See also the
|
|
40302
40497
|
* [responsive option set](https://api.highcharts.com/highcharts/responsive).
|
|
40303
40498
|
* Switching between `responsive.rules` basically runs `chart.update` under
|
|
@@ -40342,14 +40537,24 @@ class Chart {
|
|
|
40342
40537
|
caption: 'setCaption'
|
|
40343
40538
|
}, isResponsiveOptions = options.isResponsiveOptions, itemsForRemoval = [];
|
|
40344
40539
|
let updateAllAxes, updateAllSeries, runSetSize;
|
|
40345
|
-
|
|
40540
|
+
options = diffObjects(options, chart.options);
|
|
40541
|
+
const e = {
|
|
40542
|
+
options,
|
|
40543
|
+
// Event handlers can turn this on or off to control further
|
|
40544
|
+
// processing
|
|
40545
|
+
hasChanged: !!Object.keys(options).length
|
|
40546
|
+
};
|
|
40547
|
+
fireEvent(chart, 'update', e);
|
|
40548
|
+
// If no changes are detected, stop further processing (#24805).
|
|
40549
|
+
if (!e.hasChanged) {
|
|
40550
|
+
return;
|
|
40551
|
+
}
|
|
40346
40552
|
// If there are responsive rules in action, undo the responsive rules
|
|
40347
40553
|
// before we apply the updated options and replay the responsive rules
|
|
40348
40554
|
// on top from the chart.redraw function (#9617).
|
|
40349
40555
|
if (!isResponsiveOptions) {
|
|
40350
40556
|
chart.setResponsive(false, true);
|
|
40351
40557
|
}
|
|
40352
|
-
options = diffObjects(options, chart.options);
|
|
40353
40558
|
chart.userOptions = merge(chart.userOptions, options);
|
|
40354
40559
|
// If the top-level chart option is present, some special updates are
|
|
40355
40560
|
// required
|
|
@@ -40452,7 +40657,7 @@ class Chart {
|
|
|
40452
40657
|
}
|
|
40453
40658
|
// No match by id found, match by index instead
|
|
40454
40659
|
if (!item && chart[coll]) {
|
|
40455
|
-
item = chart[coll][
|
|
40660
|
+
item = chart[coll][(newOptions.index ?? i)];
|
|
40456
40661
|
// Check if we grabbed an item with an existing but
|
|
40457
40662
|
// different id (#13541). Check that the item in this
|
|
40458
40663
|
// position is not internal (navigator).
|
|
@@ -40528,7 +40733,7 @@ class Chart {
|
|
|
40528
40733
|
(isNumber(newHeight) && newHeight !== chart.chartHeight)) {
|
|
40529
40734
|
chart.setSize(newWidth, newHeight, animation);
|
|
40530
40735
|
}
|
|
40531
|
-
else if (
|
|
40736
|
+
else if (redraw ?? true) {
|
|
40532
40737
|
chart.redraw(animation);
|
|
40533
40738
|
}
|
|
40534
40739
|
fireEvent(chart, 'afterUpdate', {
|
|
@@ -40577,15 +40782,11 @@ class Chart {
|
|
|
40577
40782
|
showResetZoom() {
|
|
40578
40783
|
const chart = this, lang = chart.options.lang, btnOptions = chart.zooming.resetButton, theme = btnOptions.theme, alignTo = (btnOptions.relativeTo === 'chart' ||
|
|
40579
40784
|
btnOptions.relativeTo === 'spacingBox' ?
|
|
40580
|
-
|
|
40785
|
+
void 0 :
|
|
40581
40786
|
'plotBox');
|
|
40582
|
-
|
|
40583
|
-
function zoomOut() {
|
|
40584
|
-
chart.zoomOut();
|
|
40585
|
-
}
|
|
40586
|
-
fireEvent(this, 'beforeShowResetZoom', null, function () {
|
|
40787
|
+
fireEvent(this, 'beforeShowResetZoom', void 0, () => {
|
|
40587
40788
|
chart.resetZoomButton = chart.renderer
|
|
40588
|
-
.button(lang.resetZoom,
|
|
40789
|
+
.button(lang.resetZoom, 0, 0, () => chart.zoomOut(), theme)
|
|
40589
40790
|
.attr({
|
|
40590
40791
|
align: btnOptions.position.align,
|
|
40591
40792
|
title: lang.resetZoomTitle
|
|
@@ -40663,21 +40864,21 @@ class Chart {
|
|
|
40663
40864
|
* @function Highcharts.Chart#transform
|
|
40664
40865
|
*/
|
|
40665
40866
|
transform(params) {
|
|
40666
|
-
const { axes = this.axes, event, from = {}, reset, selection, to = {}, trigger, allowResetButton = true } = params, {
|
|
40867
|
+
const { axes = this.axes, event, from = {}, reset, selection, to = {}, trigger, allowResetButton = true } = params, { time } = this;
|
|
40667
40868
|
// Remove active points for shared tooltip
|
|
40668
40869
|
this.hoverPoints?.forEach((point) => point.setState());
|
|
40669
40870
|
fireEvent(this, 'transform', params);
|
|
40670
40871
|
let hasZoomed = params.hasZoomed || false, displayButton, isAnyAxisPanning;
|
|
40671
40872
|
for (const axis of axes) {
|
|
40672
|
-
const { horiz, len, minPointOffset = 0, options, reversed } = axis, wh = horiz ? 'width' : 'height', xy = horiz ? 'x' : 'y', toLength =
|
|
40873
|
+
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),
|
|
40673
40874
|
// If fingers pinched very close on this axis, treat as pan
|
|
40674
40875
|
scale = Math.abs(toLength) < 10 ?
|
|
40675
40876
|
1 :
|
|
40676
40877
|
toLength / fromLength, fromCenter = (from[xy] || 0) + fromLength / 2 - axis.pos, toCenter = (to[xy] ?? axis.pos) +
|
|
40677
|
-
toLength / 2 - axis.pos, move = fromCenter - toCenter / scale, pointRangeDirection = (
|
|
40678
|
-
(!
|
|
40679
|
-
|
|
40680
|
-
1, minPx = move;
|
|
40878
|
+
toLength / 2 - axis.pos, move = fromCenter - toCenter / scale, pointRangeDirection = ((horiz && !reversed) ||
|
|
40879
|
+
(!horiz && reversed)) ?
|
|
40880
|
+
1 :
|
|
40881
|
+
-1, minPx = move;
|
|
40681
40882
|
// Zooming in multiple panes, zoom only in the pane that receives
|
|
40682
40883
|
// the input
|
|
40683
40884
|
if (!reset && (fromCenter < 0 || fromCenter > axis.len)) {
|
|
@@ -40686,17 +40887,11 @@ class Chart {
|
|
|
40686
40887
|
// Adjust offset to ensure selection zoom triggers correctly
|
|
40687
40888
|
// (#22945)
|
|
40688
40889
|
// Set offset to 0 for ordinal axis only when zooming out, (#24545).
|
|
40689
|
-
const offset = (axis.chart.polar ||
|
|
40890
|
+
const offset = (selection || axis.chart.polar ||
|
|
40891
|
+
(axis.isOrdinal && scale <= 1)) ?
|
|
40690
40892
|
0 :
|
|
40691
40893
|
(minPointOffset * pointRangeDirection || 0), eventMin = axis.toValue(minPx, true), eventMax = axis.toValue(minPx + len / scale, true);
|
|
40692
40894
|
let newMin = eventMin + offset, newMax = eventMax - offset, allExtremes = axis.allExtremes;
|
|
40693
|
-
if (selection) {
|
|
40694
|
-
selection[axis.coll].push({
|
|
40695
|
-
axis,
|
|
40696
|
-
min: Math.min(eventMin, eventMax),
|
|
40697
|
-
max: Math.max(eventMin, eventMax)
|
|
40698
|
-
});
|
|
40699
|
-
}
|
|
40700
40895
|
if (newMin > newMax) {
|
|
40701
40896
|
[newMin, newMax] = [newMax, newMin];
|
|
40702
40897
|
}
|
|
@@ -40753,14 +40948,15 @@ class Chart {
|
|
|
40753
40948
|
}
|
|
40754
40949
|
// Set new extremes if they are actually new
|
|
40755
40950
|
if (reset || (axis.series.length &&
|
|
40756
|
-
(
|
|
40757
|
-
|
|
40758
|
-
|
|
40951
|
+
(selection ||
|
|
40952
|
+
((newMin !== min || newMax !== max) &&
|
|
40953
|
+
newMin >= floor &&
|
|
40954
|
+
newMax <= ceiling)))) {
|
|
40759
40955
|
if (selection) {
|
|
40760
40956
|
selection[axis.coll].push({
|
|
40761
40957
|
axis,
|
|
40762
|
-
min:
|
|
40763
|
-
max:
|
|
40958
|
+
min: Math.min(eventMin, eventMax),
|
|
40959
|
+
max: Math.max(eventMin, eventMax)
|
|
40764
40960
|
});
|
|
40765
40961
|
}
|
|
40766
40962
|
else {
|
|
@@ -40768,11 +40964,14 @@ class Chart {
|
|
|
40768
40964
|
// disallow certain axis padding options that would make
|
|
40769
40965
|
// panning/zooming hard. Reset and redraw after the
|
|
40770
40966
|
// operation has finished.
|
|
40771
|
-
axis.isPanning = trigger !== 'zoom'
|
|
40967
|
+
axis.isPanning = trigger !== 'zoom' &&
|
|
40968
|
+
trigger !== 'drop';
|
|
40772
40969
|
if (axis.isPanning && trigger !== 'mousewheel') {
|
|
40773
40970
|
isAnyAxisPanning = true; // #21319
|
|
40774
40971
|
}
|
|
40775
|
-
|
|
40972
|
+
if (trigger !== 'drop') {
|
|
40973
|
+
axis.setExtremes(reset ? void 0 : newMin, reset ? void 0 : newMax, false, false, { move, trigger, scale });
|
|
40974
|
+
}
|
|
40776
40975
|
if (!reset &&
|
|
40777
40976
|
(newMin > floor || newMax < ceiling)) {
|
|
40778
40977
|
displayButton = allowResetButton;
|
|
@@ -40803,7 +41002,8 @@ class Chart {
|
|
|
40803
41002
|
});
|
|
40804
41003
|
}
|
|
40805
41004
|
else {
|
|
40806
|
-
// Show or hide the Reset zoom button, but not while
|
|
41005
|
+
// Show or hide the Reset zoom button, but not while
|
|
41006
|
+
// panning.
|
|
40807
41007
|
if (displayButton &&
|
|
40808
41008
|
!isAnyAxisPanning &&
|
|
40809
41009
|
!this.resetZoomButton) {
|
|
@@ -41045,7 +41245,6 @@ extend(Chart.prototype, {
|
|
|
41045
41245
|
*/
|
|
41046
41246
|
|
|
41047
41247
|
|
|
41048
|
-
const { stop: ScrollablePlotArea_stop } = AnimationUtilities;
|
|
41049
41248
|
|
|
41050
41249
|
const { composed: ScrollablePlotArea_composed } = Core_Globals;
|
|
41051
41250
|
|
|
@@ -41211,7 +41410,7 @@ class ScrollablePlotArea {
|
|
|
41211
41410
|
this.moveFixedElements();
|
|
41212
41411
|
}
|
|
41213
41412
|
// Increase the size of the scrollable renderer and background
|
|
41214
|
-
|
|
41413
|
+
stop(chart.container);
|
|
41215
41414
|
css(container, {
|
|
41216
41415
|
width: `${scrollableWidth}px`,
|
|
41217
41416
|
height: `${scrollableHeight}px`
|
|
@@ -41368,6 +41567,13 @@ ScrollablePlotArea.fixedSelectors = [
|
|
|
41368
41567
|
* vertical scrolling, depending on whether the `minWidth` or `minHeight`
|
|
41369
41568
|
* option is set.
|
|
41370
41569
|
*
|
|
41570
|
+
* **Note:** Because native browser scrollbars are used, they may
|
|
41571
|
+
* overlap with fixed chart elements such as credits or the chart
|
|
41572
|
+
* border. To avoid this collision, it is recommended to manually add
|
|
41573
|
+
* extra space to the corresponding side using `chart.spacingBottom`
|
|
41574
|
+
* (for horizontal scrollbars) or `chart.spacingRight` (for vertical
|
|
41575
|
+
* scrollbars).
|
|
41576
|
+
*
|
|
41371
41577
|
* @sample highcharts/chart/scrollable-plotarea
|
|
41372
41578
|
* Scrollable plot area
|
|
41373
41579
|
* @sample highcharts/chart/scrollable-plotarea-vertical
|
|
@@ -41528,7 +41734,7 @@ class StackItem {
|
|
|
41528
41734
|
r: options.borderRadius || 0,
|
|
41529
41735
|
text: str,
|
|
41530
41736
|
// Set default padding to 5 as it is in dataLabels #12308
|
|
41531
|
-
padding:
|
|
41737
|
+
padding: (options.padding ?? 5),
|
|
41532
41738
|
visibility: 'hidden' // Hidden until setOffset is called
|
|
41533
41739
|
};
|
|
41534
41740
|
if (!chart.styledMode) {
|
|
@@ -41562,7 +41768,7 @@ class StackItem {
|
|
|
41562
41768
|
}), { verticalAlign } = alignOptions;
|
|
41563
41769
|
if (label && stackBox) {
|
|
41564
41770
|
const labelBox = label.getBBox(void 0, 0), padding = label.padding;
|
|
41565
|
-
let isJustify =
|
|
41771
|
+
let isJustify = (options.overflow ?? 'justify') === 'justify', visible;
|
|
41566
41772
|
// Reset alignOptions property after justify #12337
|
|
41567
41773
|
alignOptions.x = options.x || 0;
|
|
41568
41774
|
alignOptions.y = options.y || 0;
|
|
@@ -41599,7 +41805,7 @@ class StackItem {
|
|
|
41599
41805
|
rotationOriginY: labelBox.height / 2
|
|
41600
41806
|
});
|
|
41601
41807
|
// Check if the dataLabel should be visible.
|
|
41602
|
-
if (
|
|
41808
|
+
if (((!isJustify && options.crop) ?? true)) {
|
|
41603
41809
|
visible =
|
|
41604
41810
|
isNumber(label.x) &&
|
|
41605
41811
|
isNumber(label.y) &&
|
|
@@ -41633,7 +41839,7 @@ class StackItem {
|
|
|
41633
41839
|
getStackBox(stackBoxProps) {
|
|
41634
41840
|
const stackItem = this, axis = this.axis, chart = axis.chart, { boxTop, defaultX, xOffset, width, boxBottom } = stackBoxProps, totalStackValue = axis.stacking.usePercentage ?
|
|
41635
41841
|
100 :
|
|
41636
|
-
|
|
41842
|
+
(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 ||
|
|
41637
41843
|
(isNumber(axis.min) &&
|
|
41638
41844
|
axis.logarithmic &&
|
|
41639
41845
|
axis.logarithmic.lin2log(axis.min)) ||
|
|
@@ -41718,7 +41924,6 @@ class StackItem {
|
|
|
41718
41924
|
* */
|
|
41719
41925
|
|
|
41720
41926
|
|
|
41721
|
-
const { getDeferredAnimation: StackingAxis_getDeferredAnimation } = AnimationUtilities;
|
|
41722
41927
|
|
|
41723
41928
|
const { series: { prototype: seriesProto } } = Series_SeriesRegistry;
|
|
41724
41929
|
|
|
@@ -41747,7 +41952,7 @@ function chartGetStacks() {
|
|
|
41747
41952
|
if (series.options.stacking && series.reserveSpace()) {
|
|
41748
41953
|
series.stackKey = [
|
|
41749
41954
|
series.type,
|
|
41750
|
-
|
|
41955
|
+
(series.options.stack ?? ''),
|
|
41751
41956
|
inverted ? xAxisOptions.top : xAxisOptions.left,
|
|
41752
41957
|
inverted ? xAxisOptions.height : xAxisOptions.width
|
|
41753
41958
|
].join(',');
|
|
@@ -41910,7 +42115,7 @@ function seriesSetStackedPoints(axis, stackingParam) {
|
|
|
41910
42115
|
stack = stacks[key][x];
|
|
41911
42116
|
if (y !== null) {
|
|
41912
42117
|
stack.points[pointKey] = stack.points[series.index] = [
|
|
41913
|
-
|
|
42118
|
+
(stack.cumulative ?? stackThreshold)
|
|
41914
42119
|
];
|
|
41915
42120
|
// Record the base of the stack
|
|
41916
42121
|
if (!defined(stack.cumulative)) {
|
|
@@ -41958,7 +42163,7 @@ function seriesSetStackedPoints(axis, stackingParam) {
|
|
|
41958
42163
|
stack.cumulative = (total || 1) - 1;
|
|
41959
42164
|
}
|
|
41960
42165
|
else {
|
|
41961
|
-
stack.cumulative = correctFloat(
|
|
42166
|
+
stack.cumulative = correctFloat((stack.cumulative ?? stackThreshold) + yNumber);
|
|
41962
42167
|
}
|
|
41963
42168
|
stack.total = total;
|
|
41964
42169
|
if (y !== null) {
|
|
@@ -42062,7 +42267,7 @@ class AxisAdditions {
|
|
|
42062
42267
|
}
|
|
42063
42268
|
/** @internal */
|
|
42064
42269
|
renderStackTotals() {
|
|
42065
|
-
const stacking = this, axis = stacking.axis, chart = axis.chart, renderer = chart.renderer, stacks = stacking.stacks, stackLabelsAnim = axis.options.stackLabels?.animation, animationConfig =
|
|
42270
|
+
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 ||
|
|
42066
42271
|
renderer
|
|
42067
42272
|
.g('stack-labels')
|
|
42068
42273
|
.attr({
|
|
@@ -42973,8 +43178,7 @@ class AreaSeries extends AreaSeries_LineSeries {
|
|
|
42973
43178
|
*/
|
|
42974
43179
|
getGraphPath(points) {
|
|
42975
43180
|
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
|
|
42976
|
-
yAxis.getThreshold(options.threshold)), connectNulls =
|
|
42977
|
-
options.connectNulls, stacking === 'percent'),
|
|
43181
|
+
yAxis.getThreshold(options.threshold)), connectNulls = (options.connectNulls ?? stacking === 'percent'),
|
|
42978
43182
|
// To display null points in underlying stacked series, this
|
|
42979
43183
|
// series graph must be broken, and the area also fall down to
|
|
42980
43184
|
// fill the gap left by the null point. #2069
|
|
@@ -43027,9 +43231,9 @@ class AreaSeries extends AreaSeries_LineSeries {
|
|
|
43027
43231
|
// Treat points with undefined plotY as null (e.g. non-positive
|
|
43028
43232
|
// values on logarithmic axis, #18422)
|
|
43029
43233
|
isNull = points[i].isNull || !defined(points[i].plotY);
|
|
43030
|
-
plotX =
|
|
43234
|
+
plotX = (points[i].rectPlotX ?? points[i].plotX);
|
|
43031
43235
|
yBottom = stacking ?
|
|
43032
|
-
|
|
43236
|
+
(points[i].yBottom ?? translatedThreshold) :
|
|
43033
43237
|
translatedThreshold;
|
|
43034
43238
|
if (!isNull || connectNulls) {
|
|
43035
43239
|
if (!connectNulls) {
|
|
@@ -43367,10 +43571,10 @@ class SplineSeries extends SplineSeries_LineSeries {
|
|
|
43367
43571
|
}
|
|
43368
43572
|
const ret = [
|
|
43369
43573
|
'C',
|
|
43370
|
-
|
|
43371
|
-
|
|
43372
|
-
|
|
43373
|
-
|
|
43574
|
+
(lastPoint.rightContX ?? lastPoint.plotX ?? 0),
|
|
43575
|
+
(lastPoint.rightContY ?? lastPoint.plotY ?? 0),
|
|
43576
|
+
(leftContX ?? plotX ?? 0),
|
|
43577
|
+
(leftContY ?? plotY ?? 0),
|
|
43374
43578
|
plotX,
|
|
43375
43579
|
plotY
|
|
43376
43580
|
];
|
|
@@ -43815,6 +44019,8 @@ const ColumnSeriesDefaults = {
|
|
|
43815
44019
|
* 0.25
|
|
43816
44020
|
* @sample {highcharts} highcharts/plotoptions/column-pointpadding-none/
|
|
43817
44021
|
* 0 for tightly packed columns
|
|
44022
|
+
* @sample {highcharts} highcharts/plotoptions/pie-pointpadding/
|
|
44023
|
+
* Pie point padding plugin
|
|
43818
44024
|
*
|
|
43819
44025
|
* @product highcharts highstock gantt
|
|
43820
44026
|
*/
|
|
@@ -44146,12 +44352,12 @@ const ColumnSeriesDefaults = {
|
|
|
44146
44352
|
*/
|
|
44147
44353
|
/**
|
|
44148
44354
|
* @excluding halo, lineWidth, lineWidthPlus, marker
|
|
44149
|
-
* @product highcharts highstock
|
|
44355
|
+
* @product highcharts highstock gantt
|
|
44150
44356
|
* @apioption series.column.states.hover
|
|
44151
44357
|
*/
|
|
44152
44358
|
/**
|
|
44153
44359
|
* @excluding halo, lineWidth, lineWidthPlus, marker
|
|
44154
|
-
* @product highcharts highstock
|
|
44360
|
+
* @product highcharts highstock gantt
|
|
44155
44361
|
* @apioption series.column.states.select
|
|
44156
44362
|
*/
|
|
44157
44363
|
/**
|
|
@@ -44181,7 +44387,6 @@ const ColumnSeriesDefaults = {
|
|
|
44181
44387
|
* */
|
|
44182
44388
|
|
|
44183
44389
|
|
|
44184
|
-
const { animObject: ColumnSeries_animObject } = AnimationUtilities;
|
|
44185
44390
|
|
|
44186
44391
|
const { parse: ColumnSeries_color } = Color_Color;
|
|
44187
44392
|
|
|
@@ -44252,7 +44457,7 @@ class ColumnSeries extends Series_Series {
|
|
|
44252
44457
|
}
|
|
44253
44458
|
else { // Run the animation
|
|
44254
44459
|
translateStart = Number(series.group.attr(translateProp));
|
|
44255
|
-
series.group.animate({ scaleY: 1 }, extend(
|
|
44460
|
+
series.group.animate({ scaleY: 1 }, extend(animObject(series.options.animation), {
|
|
44256
44461
|
// Do the scale synchronously to ensure smooth
|
|
44257
44462
|
// updating (#5030, #7228)
|
|
44258
44463
|
step: function (val, fx) {
|
|
@@ -44338,7 +44543,7 @@ class ColumnSeries extends Series_Series {
|
|
|
44338
44543
|
xAxis.tickInterval ||
|
|
44339
44544
|
1), // #2610
|
|
44340
44545
|
xAxis.len // #1535
|
|
44341
|
-
), groupPadding = categoryWidth * options.groupPadding, groupWidth = categoryWidth - 2 * groupPadding, pointOffsetWidth = groupWidth / (columnCount || 1), pointWidth = Math.min(options.maxPointWidth || xAxis.len,
|
|
44546
|
+
), 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,
|
|
44342
44547
|
// #1251, #3737
|
|
44343
44548
|
colIndex = (series.columnIndex || 0) + (reverseStacks ? 1 : 0), pointXOffset = pointPadding +
|
|
44344
44549
|
(groupPadding +
|
|
@@ -44588,11 +44793,11 @@ class ColumnSeries extends Series_Series {
|
|
|
44588
44793
|
*/
|
|
44589
44794
|
pointAttribs(point, state) {
|
|
44590
44795
|
const options = this.options, p2o = this.pointAttrToOptions || {}, strokeOption = p2o.stroke || 'borderColor', strokeWidthOption = p2o['stroke-width'] || 'borderWidth';
|
|
44591
|
-
let stateOptions, zone, brightness, fill =
|
|
44796
|
+
let stateOptions, zone, brightness, fill = point?.color || this.color,
|
|
44592
44797
|
// Set to fill when borderColor null:
|
|
44593
|
-
stroke = (
|
|
44798
|
+
stroke = (point?.[strokeOption] ||
|
|
44594
44799
|
options[strokeOption] ||
|
|
44595
|
-
fill), dashstyle =
|
|
44800
|
+
fill), dashstyle = point?.options.dashStyle || options.dashStyle, strokeWidth = point?.[strokeWidthOption] ??
|
|
44596
44801
|
options[strokeWidthOption] ??
|
|
44597
44802
|
this[strokeWidthOption] ?? 1, opacity = (point?.isNull && options.nullInteraction) ?
|
|
44598
44803
|
0 :
|
|
@@ -44613,7 +44818,7 @@ class ColumnSeries extends Series_Series {
|
|
|
44613
44818
|
}
|
|
44614
44819
|
// Select or hover states
|
|
44615
44820
|
if (state && point) {
|
|
44616
|
-
stateOptions = merge(options.states[state],
|
|
44821
|
+
stateOptions = merge(options.states?.[state],
|
|
44617
44822
|
// #6401
|
|
44618
44823
|
point.options.states?.[state] || {});
|
|
44619
44824
|
brightness = stateOptions.brightness;
|
|
@@ -44623,14 +44828,13 @@ class ColumnSeries extends Series_Series {
|
|
|
44623
44828
|
.brighten(stateOptions.brightness)
|
|
44624
44829
|
.get()) || fill;
|
|
44625
44830
|
stroke = stateOptions[strokeOption] || stroke;
|
|
44626
|
-
strokeWidth =
|
|
44627
|
-
stateOptions[strokeWidthOption] || strokeWidth;
|
|
44831
|
+
strokeWidth = stateOptions[strokeWidthOption] || strokeWidth;
|
|
44628
44832
|
dashstyle = stateOptions.dashStyle || dashstyle;
|
|
44629
|
-
opacity =
|
|
44833
|
+
opacity = stateOptions.opacity ?? opacity;
|
|
44630
44834
|
}
|
|
44631
44835
|
const ret = {
|
|
44632
|
-
fill
|
|
44633
|
-
stroke
|
|
44836
|
+
fill,
|
|
44837
|
+
stroke,
|
|
44634
44838
|
'stroke-width': strokeWidth,
|
|
44635
44839
|
opacity: point?.condemned ? 0 : opacity
|
|
44636
44840
|
};
|
|
@@ -44671,6 +44875,7 @@ class ColumnSeries extends Series_Series {
|
|
|
44671
44875
|
initialAttr = merge(shapeArgs, point.getOrigin(point.origin, shapeArgs));
|
|
44672
44876
|
if (!styledMode) {
|
|
44673
44877
|
initialAttr.opacity = 0;
|
|
44878
|
+
initialAttr['stroke-width'] = 0;
|
|
44674
44879
|
}
|
|
44675
44880
|
shouldUpdate = true;
|
|
44676
44881
|
verb = 'animate';
|
|
@@ -44686,7 +44891,7 @@ class ColumnSeries extends Series_Series {
|
|
|
44686
44891
|
}
|
|
44687
44892
|
// Presentational
|
|
44688
44893
|
if (!styledMode) {
|
|
44689
|
-
graphic[verb](series.pointAttribs(point,
|
|
44894
|
+
graphic[verb](series.pointAttribs(point, point.selected ? 'select' : ''))
|
|
44690
44895
|
.shadow(point.allowShadow !== false && options.shadow);
|
|
44691
44896
|
}
|
|
44692
44897
|
graphic
|
|
@@ -44810,6 +45015,7 @@ Series_SeriesRegistry.registerSeriesType('column', ColumnSeries);
|
|
|
44810
45015
|
* Default Export
|
|
44811
45016
|
*
|
|
44812
45017
|
* */
|
|
45018
|
+
/** @internal */
|
|
44813
45019
|
/* harmony default export */ const Column_ColumnSeries = (ColumnSeries);
|
|
44814
45020
|
/* *
|
|
44815
45021
|
*
|
|
@@ -44846,7 +45052,6 @@ Series_SeriesRegistry.registerSeriesType('column', ColumnSeries);
|
|
|
44846
45052
|
* */
|
|
44847
45053
|
|
|
44848
45054
|
|
|
44849
|
-
const { getDeferredAnimation: DataLabel_getDeferredAnimation } = AnimationUtilities;
|
|
44850
45055
|
|
|
44851
45056
|
const { format: DataLabel_format } = Core_Templating;
|
|
44852
45057
|
|
|
@@ -44902,7 +45107,7 @@ var DataLabel;
|
|
|
44902
45107
|
// that parts of the align box is inside the plot area
|
|
44903
45108
|
// (#12370). When stacking, it is always inside regardless
|
|
44904
45109
|
// of the option (#15148).
|
|
44905
|
-
|
|
45110
|
+
(options.inside ?? !!this.options.stacking) &&
|
|
44906
45111
|
alignTo &&
|
|
44907
45112
|
chart.isInsidePlot(plotX, inverted ?
|
|
44908
45113
|
alignTo.x + 1 :
|
|
@@ -45005,8 +45210,8 @@ var DataLabel;
|
|
|
45005
45210
|
// zIndex: 20
|
|
45006
45211
|
// }).add();
|
|
45007
45212
|
// chart.renderer.circle(
|
|
45008
|
-
// chart.plotLeft +
|
|
45009
|
-
// chart.plotTop +
|
|
45213
|
+
// chart.plotLeft + (dataLabel.alignAttr.x ?? 0),
|
|
45214
|
+
// chart.plotTop + (dataLabel.alignAttr.y ?? 0),
|
|
45010
45215
|
// 2
|
|
45011
45216
|
// ).attr({
|
|
45012
45217
|
// fill: 'red',
|
|
@@ -45163,7 +45368,7 @@ var DataLabel;
|
|
|
45163
45368
|
'var(--highcharts-background-color)'), groupByIndex = [], seriesDlOptions = mergedDataLabelOptions(series);
|
|
45164
45369
|
// Resolve the animation
|
|
45165
45370
|
const { animation, defer } = seriesDlOptions[0], animationConfig = defer ?
|
|
45166
|
-
|
|
45371
|
+
getDeferredAnimation(chart, animation, series) :
|
|
45167
45372
|
{ defer: 0, duration: 0 };
|
|
45168
45373
|
fireEvent(this, 'drawDataLabels');
|
|
45169
45374
|
if (series.hasDataLabels?.()) {
|
|
@@ -45189,7 +45394,7 @@ var DataLabel;
|
|
|
45189
45394
|
if (labelEnabled) {
|
|
45190
45395
|
// Create individual options structure that can be
|
|
45191
45396
|
// extended without affecting others
|
|
45192
|
-
formatString =
|
|
45397
|
+
formatString = (labelOptions[point.formatPrefix + 'Format'] ?? labelOptions.format);
|
|
45193
45398
|
labelText = defined(formatString) ?
|
|
45194
45399
|
DataLabel_format(formatString, point, chart) :
|
|
45195
45400
|
(labelOptions[point.formatPrefix + 'Formatter'] ||
|
|
@@ -45197,7 +45402,9 @@ var DataLabel;
|
|
|
45197
45402
|
rotation = labelOptions.rotation;
|
|
45198
45403
|
if (!chart.styledMode) {
|
|
45199
45404
|
// Determine the color
|
|
45200
|
-
style.color =
|
|
45405
|
+
style.color = (isString(labelOptions.color) ?
|
|
45406
|
+
labelOptions.color :
|
|
45407
|
+
void 0) ?? style.color ?? (isString(series.color) ? series.color : void 0) ?? 'var(--highcharts-neutral-color-100)';
|
|
45201
45408
|
// Get automated contrast color
|
|
45202
45409
|
if (style.color === 'contrast') {
|
|
45203
45410
|
if (backgroundColor !== 'none') {
|
|
@@ -45929,6 +46136,8 @@ const ScatterSeriesDefaults = {
|
|
|
45929
46136
|
* Arrays of datetime x and y
|
|
45930
46137
|
* @sample {highcharts} highcharts/series/data-array-of-name-value/
|
|
45931
46138
|
* Arrays of point.name and y
|
|
46139
|
+
* @sample {highcharts} highcharts/series-scatter/scatter-cluster/
|
|
46140
|
+
* Computed clusters
|
|
45932
46141
|
* @sample {highcharts} highcharts/series/data-array-of-objects/
|
|
45933
46142
|
* Config objects
|
|
45934
46143
|
*
|
|
@@ -45996,14 +46205,15 @@ class ScatterSeries extends ScatterSeries_LineSeries {
|
|
|
45996
46205
|
return rand - Math.floor(rand);
|
|
45997
46206
|
}
|
|
45998
46207
|
if (jitter) {
|
|
45999
|
-
this.points.forEach(
|
|
46000
|
-
['x', 'y'].forEach(
|
|
46208
|
+
this.points.forEach((point, i) => {
|
|
46209
|
+
['x', 'y'].forEach((dim, j) => {
|
|
46001
46210
|
if (jitter[dim] && !point.isNull) {
|
|
46002
|
-
const plotProp = `plot${dim.toUpperCase()}`, axis = series[`${dim}Axis`]
|
|
46003
|
-
axis.transA;
|
|
46211
|
+
const plotProp = `plot${dim.toUpperCase()}`, axis = series[`${dim}Axis`];
|
|
46004
46212
|
if (axis && !axis.logarithmic) {
|
|
46005
46213
|
// Identify the outer bounds of the jitter range
|
|
46006
|
-
|
|
46214
|
+
// (#25054)
|
|
46215
|
+
const translatedJitter = jitter[dim] * axis.transA *
|
|
46216
|
+
(axis.reversed ? -1 : 1), min = (point[plotProp] || 0) - translatedJitter, max = (point[plotProp] || 0) + translatedJitter;
|
|
46007
46217
|
// Find a random position within this range
|
|
46008
46218
|
point[plotProp] = min +
|
|
46009
46219
|
(max - min) * unrandom(i + j * len);
|
|
@@ -46077,7 +46287,7 @@ Series_SeriesRegistry.registerSeriesType('scatter', ScatterSeries);
|
|
|
46077
46287
|
const { deg2rad: CenteredUtilities_deg2rad } = Core_Globals;
|
|
46078
46288
|
|
|
46079
46289
|
/**
|
|
46080
|
-
* @
|
|
46290
|
+
* @internal
|
|
46081
46291
|
*/
|
|
46082
46292
|
var CenteredUtilities;
|
|
46083
46293
|
(function (CenteredUtilities) {
|
|
@@ -46095,7 +46305,7 @@ var CenteredUtilities;
|
|
|
46095
46305
|
* Get the center of the pie based on the size and center options relative
|
|
46096
46306
|
* to the plot area. Borrowed by the polar and gauge series types.
|
|
46097
46307
|
*
|
|
46098
|
-
* @
|
|
46308
|
+
* @internal
|
|
46099
46309
|
* @function Highcharts.CenteredSeriesMixin.getCenter
|
|
46100
46310
|
*/
|
|
46101
46311
|
function getCenter() {
|
|
@@ -46108,11 +46318,13 @@ var CenteredUtilities;
|
|
|
46108
46318
|
innerSize = parseFloat(innerSize);
|
|
46109
46319
|
}
|
|
46110
46320
|
const positions = [
|
|
46111
|
-
|
|
46112
|
-
|
|
46321
|
+
(centerOption?.[0] ?? '50%'),
|
|
46322
|
+
(centerOption?.[1] ?? '50%'),
|
|
46113
46323
|
// Prevent from negative values
|
|
46114
|
-
|
|
46115
|
-
|
|
46324
|
+
((size && size < 0 ? void 0 : options.size) ?? '100%'),
|
|
46325
|
+
((innerSize && innerSize < 0 ?
|
|
46326
|
+
void 0 :
|
|
46327
|
+
options.innerSize || 0) ?? '0%')
|
|
46116
46328
|
];
|
|
46117
46329
|
for (i = 0; i < 4; ++i) {
|
|
46118
46330
|
value = positions[i];
|
|
@@ -46140,7 +46352,7 @@ var CenteredUtilities;
|
|
|
46140
46352
|
* GetStartAndEndRadians - Calculates start and end angles in radians.
|
|
46141
46353
|
* Used in series types such as pie and sunburst.
|
|
46142
46354
|
*
|
|
46143
|
-
* @
|
|
46355
|
+
* @internal
|
|
46144
46356
|
* @function Highcharts.CenteredSeriesMixin.getStartAndEndRadians
|
|
46145
46357
|
*
|
|
46146
46358
|
* @param {number} [start]
|
|
@@ -46172,6 +46384,7 @@ var CenteredUtilities;
|
|
|
46172
46384
|
* Default Export
|
|
46173
46385
|
*
|
|
46174
46386
|
* */
|
|
46387
|
+
/** @internal */
|
|
46175
46388
|
/* harmony default export */ const Series_CenteredUtilities = (CenteredUtilities);
|
|
46176
46389
|
/* *
|
|
46177
46390
|
*
|
|
@@ -46179,7 +46392,7 @@ var CenteredUtilities;
|
|
|
46179
46392
|
*
|
|
46180
46393
|
* */
|
|
46181
46394
|
/**
|
|
46182
|
-
* @
|
|
46395
|
+
* @internal
|
|
46183
46396
|
* @interface Highcharts.RadianAngles
|
|
46184
46397
|
*/ /**
|
|
46185
46398
|
* @name Highcharts.RadianAngles#end
|
|
@@ -46204,7 +46417,6 @@ var CenteredUtilities;
|
|
|
46204
46417
|
* */
|
|
46205
46418
|
|
|
46206
46419
|
|
|
46207
|
-
const { setAnimation: PiePoint_setAnimation } = AnimationUtilities;
|
|
46208
46420
|
|
|
46209
46421
|
|
|
46210
46422
|
/* *
|
|
@@ -46312,9 +46524,9 @@ class PiePoint extends Series_Point {
|
|
|
46312
46524
|
*/
|
|
46313
46525
|
slice(sliced, redraw, animation) {
|
|
46314
46526
|
const series = this.series, chart = series.chart;
|
|
46315
|
-
|
|
46527
|
+
setAnimation(animation, chart);
|
|
46316
46528
|
// Redraw is true by default
|
|
46317
|
-
redraw =
|
|
46529
|
+
redraw = (redraw ?? true);
|
|
46318
46530
|
this.sliced = this.options.sliced = sliced ?? !this.sliced;
|
|
46319
46531
|
// Update options.data
|
|
46320
46532
|
if (series.options.data) {
|
|
@@ -47119,7 +47331,8 @@ class PieSeries extends Series_Series {
|
|
|
47119
47331
|
// Start values
|
|
47120
47332
|
graphic.attr({
|
|
47121
47333
|
// Animate from inner radius (#779)
|
|
47122
|
-
r:
|
|
47334
|
+
r: point.startR ??
|
|
47335
|
+
(series.center && series.center[3] / 2),
|
|
47123
47336
|
start: startAngleRad,
|
|
47124
47337
|
end: startAngleRad
|
|
47125
47338
|
});
|
|
@@ -47760,7 +47973,7 @@ var PieDataLabel_ColumnDataLabel;
|
|
|
47760
47973
|
labelPosition.computed.x = x;
|
|
47761
47974
|
labelPosition.computed.y = y - topOffset;
|
|
47762
47975
|
// Detect overflowing data labels
|
|
47763
|
-
if (
|
|
47976
|
+
if (dataLabelOptions.crop ?? true) {
|
|
47764
47977
|
dataLabelWidth = dataLabel.getBBox().width;
|
|
47765
47978
|
let sideOverflow;
|
|
47766
47979
|
// Overflow left
|
|
@@ -48276,7 +48489,10 @@ function OverlappingDataLabels_onChartRender() {
|
|
|
48276
48489
|
if (point.visible) {
|
|
48277
48490
|
(point.dataLabels || []).forEach((label) => {
|
|
48278
48491
|
const options = label.options || {};
|
|
48279
|
-
label.labelrank =
|
|
48492
|
+
label.labelrank =
|
|
48493
|
+
options.labelrank ??
|
|
48494
|
+
point.labelrank ??
|
|
48495
|
+
point.shapeArgs?.height; // #4118
|
|
48280
48496
|
// #21725: Sync target positions for generic overlap
|
|
48281
48497
|
// checking. During animations (e.g., toggling a
|
|
48282
48498
|
// point), DOM positions may overlap. We force
|
|
@@ -48450,7 +48666,7 @@ function BorderRadius_arc(x, y, w, h, options = {}) {
|
|
|
48450
48666
|
if (options.open || !options.borderRadius) {
|
|
48451
48667
|
return path;
|
|
48452
48668
|
}
|
|
48453
|
-
const alpha = end - start, sinHalfAlpha = Math.sin(alpha / 2), borderRadius = Math.max(Math.min(relativeLength(options.borderRadius
|
|
48669
|
+
const alpha = end - start, sinHalfAlpha = Math.sin(alpha / 2), borderRadius = Math.max(Math.min(relativeLength(borderRadiusObject(options.borderRadius).radius, r - innerR),
|
|
48454
48670
|
// Cap to half the sector radius
|
|
48455
48671
|
(r - innerR) / 2,
|
|
48456
48672
|
// For smaller pie slices, cap to the largest small circle that
|
|
@@ -48476,7 +48692,7 @@ function seriesOnAfterColumnTranslate() {
|
|
|
48476
48692
|
if (this.options.borderRadius &&
|
|
48477
48693
|
!(this.chart.is3d && this.chart.is3d())) {
|
|
48478
48694
|
const { options, yAxis } = this, percent = options.stacking === 'percent', seriesDefault = BorderRadius_defaultOptions.plotOptions?.[this.type]
|
|
48479
|
-
?.borderRadius, borderRadius =
|
|
48695
|
+
?.borderRadius, borderRadius = borderRadiusObject(options.borderRadius, isObject(seriesDefault) ? seriesDefault : {}), reversed = yAxis.options.reversed;
|
|
48480
48696
|
for (const point of this.points) {
|
|
48481
48697
|
const { shapeArgs } = point;
|
|
48482
48698
|
if (point.shapeType === 'roundedRect' && shapeArgs) {
|
|
@@ -48548,8 +48764,12 @@ function composeBorderRadius(SeriesClass, SVGElementClass, SVGRendererClass) {
|
|
|
48548
48764
|
symbols.roundedRect = BorderRadius_roundedRect;
|
|
48549
48765
|
}
|
|
48550
48766
|
}
|
|
48551
|
-
/**
|
|
48552
|
-
function
|
|
48767
|
+
/**
|
|
48768
|
+
* Utility function to get the full border radius options object, from a simple
|
|
48769
|
+
* number or a partial options object.
|
|
48770
|
+
* @internal
|
|
48771
|
+
*/
|
|
48772
|
+
function borderRadiusObject(options, seriesBROptions) {
|
|
48553
48773
|
if (!isObject(options)) {
|
|
48554
48774
|
options = { radius: options || 0 };
|
|
48555
48775
|
}
|
|
@@ -48557,7 +48777,7 @@ function optionsToObject(options, seriesBROptions) {
|
|
|
48557
48777
|
}
|
|
48558
48778
|
/** @internal */
|
|
48559
48779
|
function pieSeriesOnAfterTranslate() {
|
|
48560
|
-
const borderRadius =
|
|
48780
|
+
const borderRadius = borderRadiusObject(this.options.borderRadius);
|
|
48561
48781
|
for (const point of this.points) {
|
|
48562
48782
|
const shapeArgs = point.shapeArgs;
|
|
48563
48783
|
if (shapeArgs) {
|
|
@@ -48676,7 +48896,7 @@ function BorderRadius_roundedRect(x, y, width, height, options = {}) {
|
|
|
48676
48896
|
* Column and pie with rounded border
|
|
48677
48897
|
*
|
|
48678
48898
|
* @name Highcharts.BorderRadiusOptionsObject#radius
|
|
48679
|
-
* @type {string|number}
|
|
48899
|
+
* @type {string|number|undefined}
|
|
48680
48900
|
*/ /**
|
|
48681
48901
|
* The scope of the rounding for column charts or plot bands. In a stacked
|
|
48682
48902
|
* column chart, the value `point` means each single point will get rounded
|
|
@@ -48691,8 +48911,7 @@ function BorderRadius_roundedRect(x, y, width, height, options = {}) {
|
|
|
48691
48911
|
* Rounded columns
|
|
48692
48912
|
*
|
|
48693
48913
|
* @name Highcharts.BorderRadiusOptionsObject#scope
|
|
48694
|
-
* @
|
|
48695
|
-
* @type {string}
|
|
48914
|
+
* @type {"individual"|"point"|"stack"|undefined}
|
|
48696
48915
|
*/ /**
|
|
48697
48916
|
* For column charts, where in the point or stack to apply rounding. The `end`
|
|
48698
48917
|
* value means only those corners at the point value will be rounded, leaving
|
|
@@ -48703,8 +48922,7 @@ function BorderRadius_roundedRect(x, y, width, height, options = {}) {
|
|
|
48703
48922
|
* Rounding on all corners
|
|
48704
48923
|
*
|
|
48705
48924
|
* @name Highcharts.BorderRadiusOptionsObject#where
|
|
48706
|
-
* @
|
|
48707
|
-
* @type {string}
|
|
48925
|
+
* @type {"all"|"end"|undefined}
|
|
48708
48926
|
* @default end
|
|
48709
48927
|
*/
|
|
48710
48928
|
(''); // Keeps doclets above in JS file
|
|
@@ -48763,10 +48981,12 @@ var Responsive;
|
|
|
48763
48981
|
*/
|
|
48764
48982
|
function matchResponsiveRule(rule, matches) {
|
|
48765
48983
|
const condition = rule.condition, fn = condition.callback || function () {
|
|
48766
|
-
return (this.chartWidth <=
|
|
48767
|
-
|
|
48768
|
-
this.
|
|
48769
|
-
|
|
48984
|
+
return (this.chartWidth <=
|
|
48985
|
+
(condition.maxWidth ?? Number.MAX_VALUE) &&
|
|
48986
|
+
this.chartHeight <=
|
|
48987
|
+
(condition.maxHeight ?? Number.MAX_VALUE) &&
|
|
48988
|
+
this.chartWidth >= (condition.minWidth ?? 0) &&
|
|
48989
|
+
this.chartHeight >= (condition.minHeight ?? 0));
|
|
48770
48990
|
};
|
|
48771
48991
|
if (fn.call(this, this)) {
|
|
48772
48992
|
matches.push(rule._id);
|
|
@@ -48980,7 +49200,7 @@ var Responsive;
|
|
|
48980
49200
|
;// ./code/es-modules/masters/highcharts.src.js
|
|
48981
49201
|
// SPDX-License-Identifier: LicenseRef-Highcharts
|
|
48982
49202
|
/**
|
|
48983
|
-
* @license Highcharts JS v13.0.
|
|
49203
|
+
* @license Highcharts JS v13.0.2 (2026-08-27)
|
|
48984
49204
|
* @module highcharts/highcharts
|
|
48985
49205
|
*
|
|
48986
49206
|
* (c) 2009-2026 Highsoft AS
|
|
@@ -49057,12 +49277,17 @@ G.SVGElement = SVG_SVGElement;
|
|
|
49057
49277
|
G.SVGRenderer = SVG_SVGRenderer;
|
|
49058
49278
|
G.Templating = Core_Templating;
|
|
49059
49279
|
G.Tick = Axis_Tick;
|
|
49060
|
-
G.Time = Core_Time
|
|
49280
|
+
G.Time = class extends Core_Time {
|
|
49281
|
+
constructor(options, lang) {
|
|
49282
|
+
const defaultOptions = Defaults.getOptions();
|
|
49283
|
+
super(options ?? defaultOptions.time, lang ?? defaultOptions.lang);
|
|
49284
|
+
}
|
|
49285
|
+
};
|
|
49061
49286
|
G.Tooltip = Core_Tooltip;
|
|
49062
49287
|
// Utilities
|
|
49063
49288
|
G.addEvent = addEvent;
|
|
49064
|
-
G.animObject =
|
|
49065
|
-
G.animate =
|
|
49289
|
+
G.animObject = animObject;
|
|
49290
|
+
G.animate = animate;
|
|
49066
49291
|
G.arrayMax = arrayMax;
|
|
49067
49292
|
G.arrayMin = arrayMin;
|
|
49068
49293
|
G.attr = attr;
|
|
@@ -49089,7 +49314,7 @@ G.fireEvent = fireEvent;
|
|
|
49089
49314
|
G.format = Core_Templating.format;
|
|
49090
49315
|
G.getAlignFactor = getAlignFactor;
|
|
49091
49316
|
G.getClosestDistance = getClosestDistance;
|
|
49092
|
-
G.getDeferredAnimation =
|
|
49317
|
+
G.getDeferredAnimation = getDeferredAnimation;
|
|
49093
49318
|
G.getMagnitude = getMagnitude;
|
|
49094
49319
|
G.getNestedProperty = getNestedProperty;
|
|
49095
49320
|
G.getOptions = Defaults.getOptions;
|
|
@@ -49116,11 +49341,11 @@ G.relativeLength = relativeLength;
|
|
|
49116
49341
|
G.removeEvent = removeEvent;
|
|
49117
49342
|
G.replaceNested = replaceNested;
|
|
49118
49343
|
G.seriesType = Series_SeriesRegistry.seriesType;
|
|
49119
|
-
G.setAnimation =
|
|
49344
|
+
G.setAnimation = setAnimation;
|
|
49120
49345
|
G.setOptions = Defaults.setOptions;
|
|
49121
49346
|
G.splat = splat;
|
|
49122
49347
|
G.stableSort = stableSort;
|
|
49123
|
-
G.stop =
|
|
49348
|
+
G.stop = stop;
|
|
49124
49349
|
G.syncTimeout = syncTimeout;
|
|
49125
49350
|
G.time = Defaults.defaultTime;
|
|
49126
49351
|
G.ucfirst = ucfirst;
|