highcharts 13.0.0 → 13.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bower.json +1 -1
- package/css/highcharts.css +2 -1
- package/es-modules/Accessibility/A11yI18n.js +4 -4
- package/es-modules/Accessibility/Accessibility.js +38 -1
- package/es-modules/Accessibility/Components/InfoRegionsComponent.js +6 -4
- package/es-modules/Accessibility/Components/LegendComponent.js +3 -4
- package/es-modules/Accessibility/Components/NavigatorComponent.js +3 -4
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +13 -10
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +8 -4
- package/es-modules/Accessibility/Components/ZoomComponent.js +2 -2
- package/es-modules/Accessibility/FocusBorder.js +2 -2
- package/es-modules/Accessibility/Options/A11yDefaults.js +12 -3
- package/es-modules/Accessibility/Options/DeprecatedOptions.js +1 -2
- package/es-modules/Accessibility/ProxyElement.js +1 -0
- package/es-modules/Core/Animation/AnimationUtilities.js +34 -43
- package/es-modules/Core/Animation/Fx.js +16 -19
- package/es-modules/Core/Axis/Axis.js +49 -59
- package/es-modules/Core/Axis/Axis3DComposition.js +8 -6
- package/es-modules/Core/Axis/AxisDefaults.js +12 -2
- package/es-modules/Core/Axis/BrokenAxis.js +6 -5
- package/es-modules/Core/Axis/Color/ColorAxis.js +24 -12
- package/es-modules/Core/Axis/Color/ColorAxisComposition.js +3 -3
- package/es-modules/Core/Axis/GridAxis.js +12 -5
- package/es-modules/Core/Axis/LogarithmicAxis.js +5 -3
- package/es-modules/Core/Axis/NavigatorAxisComposition.js +2 -2
- package/es-modules/Core/Axis/OrdinalAxis.js +21 -11
- package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +3 -2
- package/es-modules/Core/Axis/RadialAxis.js +23 -22
- package/es-modules/Core/Axis/ScrollbarAxis.js +3 -3
- package/es-modules/Core/Axis/Stacking/StackItem.js +5 -5
- package/es-modules/Core/Axis/Stacking/StackingAxis.js +5 -6
- package/es-modules/Core/Axis/Tick.js +10 -11
- package/es-modules/Core/Axis/TreeGrid/TreeGridAxis.js +1 -1
- package/es-modules/Core/Axis/TreeGrid/TreeGridTick.js +3 -3
- package/es-modules/Core/Chart/Chart.js +58 -53
- package/es-modules/Core/Chart/Chart3D.js +3 -3
- package/es-modules/Core/Chart/ChartDefaults.js +24 -1
- package/es-modules/Core/Chart/MapChart.js +7 -10
- package/es-modules/Core/Chart/StockChart.js +15 -11
- package/es-modules/Core/Color/Color.js +3 -1
- package/es-modules/Core/Defaults.js +44 -2
- package/es-modules/Core/Globals.js +1 -1
- package/es-modules/Core/Legend/Legend.js +20 -17
- package/es-modules/Core/Legend/LegendSymbol.js +2 -2
- package/es-modules/Core/MSPointer.js +2 -2
- package/es-modules/Core/Math3D.js +6 -7
- package/es-modules/Core/Pointer.js +20 -10
- package/es-modules/Core/Renderer/HTML/AST.js +5 -1
- package/es-modules/Core/Renderer/HTML/HTMLElement.js +23 -16
- package/es-modules/Core/Renderer/RendererUtilities.js +2 -2
- package/es-modules/Core/Renderer/SVG/SVGElement.js +12 -11
- package/es-modules/Core/Renderer/SVG/SVGElement3D.js +2 -2
- package/es-modules/Core/Renderer/SVG/SVGLabel.js +5 -5
- package/es-modules/Core/Renderer/SVG/SVGRenderer.js +6 -6
- package/es-modules/Core/Renderer/SVG/SVGRenderer3D.js +13 -12
- package/es-modules/Core/Renderer/SVG/Symbols.js +6 -5
- package/es-modules/Core/Renderer/SVG/TextBuilder.js +2 -2
- package/es-modules/Core/Responsive.js +7 -5
- package/es-modules/Core/Series/DataLabel.js +9 -8
- package/es-modules/Core/Series/OverlappingDataLabels.js +5 -2
- package/es-modules/Core/Series/Point.js +31 -24
- package/es-modules/Core/Series/Series.js +125 -82
- package/es-modules/Core/Series/Series3D.js +2 -2
- package/es-modules/Core/Series/SeriesDefaults.js +33 -0
- package/es-modules/Core/Templating.js +18 -15
- package/es-modules/Core/Tooltip.js +12 -9
- package/es-modules/Core/Utilities.js +4 -3
- package/es-modules/Data/Connectors/DataConnector.js +2 -2
- package/es-modules/Data/Connectors/GoogleSheetsConnector.js +2 -2
- package/es-modules/Data/DataTable.js +17 -0
- package/es-modules/Data/DataTableCore.js +1 -1
- package/es-modules/Extensions/Annotations/Annotation.js +5 -6
- package/es-modules/Extensions/Annotations/AnnotationChart.js +2 -2
- package/es-modules/Extensions/Annotations/AnnotationDefaults.js +4 -4
- package/es-modules/Extensions/Annotations/ControlPoint.js +2 -2
- package/es-modules/Extensions/Annotations/Controllables/ControllableLabel.js +2 -2
- package/es-modules/Extensions/Annotations/EventEmitter.js +4 -4
- package/es-modules/Extensions/Annotations/MockPoint.js +7 -9
- package/es-modules/Extensions/Annotations/NavigationBindings.js +6 -3
- package/es-modules/Extensions/Annotations/NavigationBindingsUtilities.js +31 -4
- package/es-modules/Extensions/Annotations/Popup/Popup.js +3 -2
- package/es-modules/Extensions/Annotations/Popup/PopupAnnotations.js +6 -8
- package/es-modules/Extensions/Annotations/Types/CrookedLine.js +4 -4
- package/es-modules/Extensions/Annotations/Types/Measure.js +28 -10
- package/es-modules/Extensions/Annotations/Types/TimeCycles.js +4 -2
- package/es-modules/Extensions/Annotations/Types/Tunnel.js +3 -1
- package/es-modules/Extensions/Annotations/Types/VerticalLine.js +3 -3
- package/es-modules/Extensions/Boost/Boost.js +13 -0
- package/es-modules/Extensions/Boost/BoostChart.js +11 -4
- package/es-modules/Extensions/Boost/BoostSeries.js +17 -11
- package/es-modules/Extensions/Boost/WGLRenderer.js +9 -6
- package/es-modules/Extensions/Boost/WGLShader.js +3 -3
- package/es-modules/Extensions/BoostCanvas.js +2 -2
- package/es-modules/Extensions/BorderRadius.js +12 -10
- package/es-modules/Extensions/Breadcrumbs/Breadcrumbs.js +6 -5
- package/es-modules/Extensions/DataGrouping/DataGrouping.js +2 -2
- package/es-modules/Extensions/DataGrouping/DataGroupingAxisComposition.js +4 -3
- package/es-modules/Extensions/DataGrouping/DataGroupingSeriesComposition.js +2 -2
- package/es-modules/Extensions/DraggablePoints/DragDropProps.js +2 -3
- package/es-modules/Extensions/DraggablePoints/DraggableChart.js +1 -2
- package/es-modules/Extensions/Drilldown/Drilldown.js +1 -2
- package/es-modules/Extensions/Drilldown/DrilldownSeries.js +1 -2
- package/es-modules/Extensions/ExportData/ExportData.js +21 -16
- package/es-modules/Extensions/Exporting/Exporting.js +28 -28
- package/es-modules/Extensions/Exporting/ExportingDefaults.js +32 -0
- package/es-modules/Extensions/MarkerClusters/MarkerClusterScatter.js +1 -2
- package/es-modules/Extensions/MarkerClusters/MarkerClusters.js +1 -2
- package/es-modules/Extensions/MouseWheelZoom/MouseWheelZoom.js +2 -2
- package/es-modules/Extensions/OfflineExporting/OfflineExporting.js +31 -4
- package/es-modules/Extensions/Pane/PaneComposition.js +2 -2
- package/es-modules/Extensions/Pane/PaneDefaults.js +1 -1
- package/es-modules/Extensions/ParallelCoordinates/ParallelAxis.js +2 -2
- package/es-modules/Extensions/ParallelCoordinates/ParallelCoordinates.js +3 -0
- package/es-modules/Extensions/PatternFill.js +7 -5
- package/es-modules/Extensions/PriceIndication.js +5 -4
- package/es-modules/Extensions/ScrollablePlotArea.js +8 -2
- package/es-modules/Extensions/SeriesLabel/SeriesLabel.js +8 -9
- package/es-modules/Extensions/Sonification/MIDI.js +2 -3
- package/es-modules/Extensions/Sonification/Sonification.js +2 -2
- package/es-modules/Extensions/Sonification/SonificationSpeaker.js +3 -2
- package/es-modules/Extensions/Sonification/SynthPatch.js +4 -4
- package/es-modules/Extensions/Sonification/TimelineFromChart.js +11 -11
- package/es-modules/Gantt/Legacy.js +2 -2
- package/es-modules/Gantt/Pathfinder.js +3 -3
- package/es-modules/Gantt/PathfinderAlgorithms.js +4 -3
- package/es-modules/Gantt/Tree.js +1 -1
- package/es-modules/Maps/GeoJSONComposition.js +14 -1
- package/es-modules/Maps/MapNavigation.js +4 -4
- package/es-modules/Maps/MapPointer.js +2 -2
- package/es-modules/Maps/MapView.js +3 -3
- package/es-modules/Series/ArcDiagram/ArcDiagramSeries.js +8 -6
- package/es-modules/Series/Area/AreaSeries.js +4 -5
- package/es-modules/Series/AreaRange/AreaRangeSeries.js +87 -147
- package/es-modules/Series/AreaRange/AreaRangeSeriesDefaults.js +42 -4
- package/es-modules/Series/Bellcurve/BellcurveSeries.js +10 -6
- package/es-modules/Series/BoxPlot/BoxPlotSeries.js +40 -32
- package/es-modules/Series/BoxPlot/BoxPlotSeriesDefaults.js +33 -1
- package/es-modules/Series/Bubble/BubbleLegendItem.js +10 -6
- package/es-modules/Series/Bubble/BubbleSeries.js +25 -9
- package/es-modules/Series/Bullet/BulletSeries.js +17 -10
- package/es-modules/Series/Candlestick/CandlestickSeries.js +3 -3
- package/es-modules/Series/CenteredUtilities.js +12 -9
- package/es-modules/Series/ColorMapComposition.js +7 -4
- package/es-modules/Series/Column/ColumnPoint.js +2 -0
- package/es-modules/Series/Column/ColumnSeries.js +14 -14
- package/es-modules/Series/Column/ColumnSeriesDefaults.js +4 -2
- package/es-modules/Series/Column3D/Column3DComposition.js +22 -19
- package/es-modules/Series/ColumnPyramid/ColumnPyramidPoint.js +18 -0
- package/es-modules/Series/ColumnPyramid/ColumnPyramidPointOptions.js +12 -0
- package/es-modules/Series/ColumnPyramid/ColumnPyramidSeries.js +7 -6
- package/es-modules/Series/ColumnPyramid/ColumnPyramidSeriesOptions.js +12 -0
- package/es-modules/Series/ColumnRange/ColumnRangePoint.js +2 -0
- package/es-modules/Series/ColumnRange/ColumnRangePointOptions.js +12 -0
- package/es-modules/Series/ColumnRange/ColumnRangeSeries.js +13 -144
- package/es-modules/Series/ColumnRange/ColumnRangeSeriesDefaults.js +148 -0
- package/es-modules/Series/ColumnRange/ColumnRangeSeriesOptions.js +12 -0
- package/es-modules/Series/Contour/ContourPoint.js +2 -0
- package/es-modules/Series/Contour/ContourSeries.js +1 -0
- package/es-modules/Series/Contour/ContourSeriesDefaults.js +7 -0
- package/es-modules/Series/Contour/ContourShader.js +9 -1
- package/es-modules/Series/CrossSymbol.js +3 -2
- package/es-modules/Series/Cylinder/CylinderComposition.js +12 -12
- package/es-modules/Series/Cylinder/CylinderPoint.js +2 -0
- package/es-modules/Series/Cylinder/CylinderPointOptions.js +15 -0
- package/es-modules/Series/Cylinder/CylinderSeries.js +2 -1
- package/es-modules/Series/Cylinder/CylinderSeriesOptions.js +15 -0
- package/es-modules/Series/Cylinder/SVGElement3DCylinder.js +2 -0
- package/es-modules/Series/DataModifyComposition.js +9 -7
- package/es-modules/Series/DependencyWheel/DependencyWheelPoint.js +3 -1
- package/es-modules/Series/DependencyWheel/DependencyWheelPointOptions.js +14 -0
- package/es-modules/Series/DependencyWheel/DependencyWheelSeries.js +8 -8
- package/es-modules/Series/DependencyWheel/DependencyWheelSeriesOptions.js +14 -0
- package/es-modules/Series/DerivedComposition.js +9 -8
- package/es-modules/Series/DotPlot/DotPlotPoint.js +18 -0
- package/es-modules/Series/DotPlot/DotPlotPointOptions.js +12 -0
- package/es-modules/Series/DotPlot/DotPlotSeries.js +6 -4
- package/es-modules/Series/DotPlot/DotPlotSeriesOptions.js +12 -0
- package/es-modules/Series/DragNodesComposition.js +11 -8
- package/es-modules/Series/DrawPointUtilities.js +3 -1
- package/es-modules/Series/Dumbbell/DumbbellPoint.js +19 -6
- package/es-modules/Series/Dumbbell/DumbbellPointOptions.js +12 -0
- package/es-modules/Series/Dumbbell/DumbbellSeries.js +33 -15
- package/es-modules/Series/Dumbbell/DumbbellSeriesOptions.js +12 -0
- package/es-modules/Series/ErrorBar/ErrorBarPoint.js +18 -0
- package/es-modules/Series/ErrorBar/ErrorBarPointOptions.js +12 -0
- package/es-modules/Series/ErrorBar/ErrorBarSeries.js +6 -9
- package/es-modules/Series/ErrorBar/ErrorBarSeriesDefaults.js +15 -1
- package/es-modules/Series/ErrorBar/ErrorBarSeriesOptions.js +12 -0
- package/es-modules/Series/Flags/FlagsSeries.js +5 -14
- package/es-modules/Series/Flags/FlagsSeriesDefaults.js +2 -1
- package/es-modules/Series/FlowMap/FlowMapPoint.js +5 -3
- package/es-modules/Series/FlowMap/FlowMapSeries.js +17 -9
- package/es-modules/Series/Funnel/FunnelSeries.js +25 -26
- package/es-modules/Series/Funnel/FunnelSeriesDefaults.js +12 -0
- package/es-modules/Series/Funnel3D/Funnel3DSeries.js +7 -5
- package/es-modules/Series/Gantt/GanttSeries.js +2 -1
- package/es-modules/Series/Gauge/GaugeSeries.js +2 -2
- package/es-modules/Series/GeoHeatmap/GeoHeatmapSeries.js +9 -9
- package/es-modules/Series/GraphLayoutComposition.js +3 -3
- package/es-modules/Series/Heatmap/HeatmapPoint.js +6 -6
- package/es-modules/Series/Heatmap/HeatmapPointOptions.js +12 -0
- package/es-modules/Series/Heatmap/HeatmapSeries.js +13 -13
- package/es-modules/Series/Heatmap/HeatmapSeriesOptions.js +12 -0
- package/es-modules/Series/Histogram/HistogramPoint.js +17 -0
- package/es-modules/Series/Histogram/HistogramPointOptions.js +12 -0
- package/es-modules/Series/Histogram/HistogramSeries.js +15 -3
- package/es-modules/Series/Histogram/HistogramSeriesOptions.js +12 -0
- package/es-modules/Series/HollowCandlestick/HollowCandlestickSeries.js +9 -9
- package/es-modules/Series/InterpolationUtilities.js +5 -5
- package/es-modules/Series/Item/ItemPointOptions.js +14 -0
- package/es-modules/Series/Item/ItemSeries.js +18 -6
- package/es-modules/Series/Item/ItemSeriesOptions.js +14 -0
- package/es-modules/Series/Map/MapPoint.js +5 -3
- package/es-modules/Series/Map/MapSeries.js +6 -10
- package/es-modules/Series/Map/MapSeriesDefaults.js +11 -1
- package/es-modules/Series/Networkgraph/NetworkgraphPoint.js +3 -3
- package/es-modules/Series/Networkgraph/NetworkgraphSeries.js +14 -9
- package/es-modules/Series/Networkgraph/NetworkgraphSeriesDefaults.js +12 -0
- package/es-modules/Series/Networkgraph/ReingoldFruchtermanLayout.js +18 -9
- package/es-modules/Series/NodesComposition.js +9 -10
- package/es-modules/Series/OHLC/OHLCPoint.js +2 -2
- package/es-modules/Series/OHLC/OHLCSeries.js +1 -0
- package/es-modules/Series/Organization/OrganizationPoint.js +3 -2
- package/es-modules/Series/Organization/OrganizationSeries.js +29 -7
- package/es-modules/Series/Organization/OrganizationSeriesDefaults.js +11 -4
- package/es-modules/Series/PackedBubble/PackedBubbleLayout.js +3 -3
- package/es-modules/Series/PackedBubble/PackedBubbleSeries.js +5 -5
- package/es-modules/Series/Pictorial/PictorialSeries.js +4 -2
- package/es-modules/Series/Pie/PieDataLabel.js +2 -2
- package/es-modules/Series/Pie/PiePoint.js +3 -4
- package/es-modules/Series/Pie/PieSeries.js +3 -2
- package/es-modules/Series/Pie3D/Pie3DSeries.js +8 -4
- package/es-modules/Series/PolarComposition.js +13 -14
- package/es-modules/Series/Polygon/PolygonSeries.js +2 -2
- package/es-modules/Series/Polygon/PolygonSeriesDefaults.js +20 -0
- package/es-modules/Series/RangeDataLabel.js +128 -0
- package/es-modules/Series/Sankey/SankeySeries.js +13 -7
- package/es-modules/Series/Sankey/SankeySeriesDefaults.js +2 -2
- package/es-modules/Series/Scatter/ScatterSeries.js +6 -5
- package/es-modules/Series/Scatter/ScatterSeriesDefaults.js +2 -0
- package/es-modules/Series/SimulationSeriesUtilities.js +1 -2
- package/es-modules/Series/SolidGauge/SolidGaugeSeries.js +4 -4
- package/es-modules/Series/Spline/SplineSeries.js +5 -5
- package/es-modules/Series/Sunburst/SunburstSeriesDefaults.js +8 -0
- package/es-modules/Series/TiledWebMap/TiledWebMapSeries.js +20 -12
- package/es-modules/Series/Tilemap/TilemapSeriesDefaults.js +2 -1
- package/es-modules/Series/Tilemap/TilemapShapes.js +2 -2
- package/es-modules/Series/Timeline/TimelinePoint.js +2 -2
- package/es-modules/Series/Timeline/TimelineSeries.js +13 -6
- package/es-modules/Series/TreeUtilities.js +16 -7
- package/es-modules/Series/Treegraph/TreegraphLink.js +2 -2
- package/es-modules/Series/Treegraph/TreegraphSeries.js +22 -13
- package/es-modules/Series/Treemap/TreemapPoint.js +2 -2
- package/es-modules/Series/Treemap/TreemapSeries.js +14 -11
- package/es-modules/Series/Treemap/TreemapSeriesDefaults.js +22 -1
- package/es-modules/Series/VariablePie/VariablePieSeries.js +6 -4
- package/es-modules/Series/VariablePie/VariablePieSeriesDefaults.js +3 -2
- package/es-modules/Series/Variwide/VariwideSeries.js +2 -2
- package/es-modules/Series/Vector/VectorSeries.js +7 -9
- package/es-modules/Series/Venn/VennSeries.js +3 -4
- package/es-modules/Series/Waterfall/WaterfallSeries.js +3 -3
- package/es-modules/Series/Windbarb/WindbarbSeries.js +8 -10
- package/es-modules/Series/XRange/XRangeSeries.js +8 -8
- package/es-modules/Shared/TimeBase.js +13 -8
- package/es-modules/Shared/Utilities.js +9 -7
- package/es-modules/Stock/Indicators/Aroon/AroonIndicator.js +3 -3
- package/es-modules/Stock/Indicators/DPO/DPOIndicator.js +4 -3
- package/es-modules/Stock/Indicators/RSI/RSIIndicator.js +1 -1
- package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +2 -2
- package/es-modules/Stock/Indicators/VBP/VBPIndicator.js +1 -2
- package/es-modules/Stock/Navigator/ChartNavigatorComposition.js +4 -4
- package/es-modules/Stock/Navigator/Navigator.js +26 -26
- package/es-modules/Stock/Navigator/NavigatorDefaults.js +9 -2
- package/es-modules/Stock/Navigator/NavigatorSymbols.js +2 -1
- package/es-modules/Stock/Navigator/StandaloneNavigator.js +55 -14
- package/es-modules/Stock/RangeSelector/RangeSelector.js +15 -11
- package/es-modules/Stock/RangeSelector/RangeSelectorComposition.js +3 -3
- package/es-modules/Stock/Scrollbar/Scrollbar.js +8 -7
- package/es-modules/Stock/StockTools/StockToolbar.js +6 -6
- package/es-modules/Stock/StockTools/StockTools.js +2 -2
- package/es-modules/Stock/StockTools/StockToolsBindings.js +7 -7
- package/es-modules/Stock/StockTools/StockToolsGui.js +6 -4
- package/es-modules/masters/highcharts-3d.src.js +1 -1
- package/es-modules/masters/highcharts-autoload.src.js +1 -1
- package/es-modules/masters/highcharts-gantt.src.js +1 -1
- package/es-modules/masters/highcharts-more.src.js +1 -1
- package/es-modules/masters/highcharts.src.js +13 -8
- package/es-modules/masters/highmaps.src.js +1 -1
- package/es-modules/masters/highstock.src.js +1 -1
- package/es-modules/masters/i18n/fr-FR.src.d.ts +1 -1
- package/es-modules/masters/i18n/fr-FR.src.js +1 -1
- package/es-modules/masters/i18n/nb-NO.src.d.ts +1 -1
- package/es-modules/masters/i18n/nb-NO.src.js +1 -1
- package/es-modules/masters/i18n/zh-CN.src.d.ts +1 -1
- package/es-modules/masters/i18n/zh-CN.src.js +1 -1
- package/es-modules/masters/indicators/acceleration-bands.src.js +1 -1
- package/es-modules/masters/indicators/accumulation-distribution.src.js +1 -1
- package/es-modules/masters/indicators/ao.src.js +1 -1
- package/es-modules/masters/indicators/apo.src.js +1 -1
- package/es-modules/masters/indicators/aroon-oscillator.src.js +1 -1
- package/es-modules/masters/indicators/aroon.src.js +1 -1
- package/es-modules/masters/indicators/atr.src.js +1 -1
- package/es-modules/masters/indicators/bollinger-bands.src.js +1 -1
- package/es-modules/masters/indicators/cci.src.js +1 -1
- package/es-modules/masters/indicators/chaikin.src.js +1 -1
- package/es-modules/masters/indicators/cmf.src.js +1 -1
- package/es-modules/masters/indicators/cmo.src.js +1 -1
- package/es-modules/masters/indicators/dema.src.js +1 -1
- package/es-modules/masters/indicators/disparity-index.src.js +1 -1
- package/es-modules/masters/indicators/dmi.src.js +1 -1
- package/es-modules/masters/indicators/dpo.src.js +1 -1
- package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
- package/es-modules/masters/indicators/indicators-all.src.js +1 -1
- package/es-modules/masters/indicators/indicators.src.js +1 -1
- package/es-modules/masters/indicators/keltner-channels.src.js +1 -1
- package/es-modules/masters/indicators/klinger.src.js +1 -1
- package/es-modules/masters/indicators/macd.src.js +1 -1
- package/es-modules/masters/indicators/mfi.src.js +1 -1
- package/es-modules/masters/indicators/momentum.src.js +1 -1
- package/es-modules/masters/indicators/natr.src.js +1 -1
- package/es-modules/masters/indicators/obv.src.js +1 -1
- package/es-modules/masters/indicators/pivot-points.src.js +1 -1
- package/es-modules/masters/indicators/ppo.src.js +1 -1
- package/es-modules/masters/indicators/price-channel.src.js +1 -1
- package/es-modules/masters/indicators/price-envelopes.src.js +1 -1
- package/es-modules/masters/indicators/psar.src.js +1 -1
- package/es-modules/masters/indicators/regressions.src.js +1 -1
- package/es-modules/masters/indicators/roc.src.js +1 -1
- package/es-modules/masters/indicators/rsi.src.js +1 -1
- package/es-modules/masters/indicators/slow-stochastic.src.js +1 -1
- package/es-modules/masters/indicators/stochastic.src.js +1 -1
- package/es-modules/masters/indicators/supertrend.src.js +1 -1
- package/es-modules/masters/indicators/tema.src.js +1 -1
- package/es-modules/masters/indicators/trendline.src.js +1 -1
- package/es-modules/masters/indicators/trix.src.js +1 -1
- package/es-modules/masters/indicators/volume-by-price.src.js +1 -1
- package/es-modules/masters/indicators/vwap.src.js +1 -1
- package/es-modules/masters/indicators/williams-r.src.js +1 -1
- package/es-modules/masters/indicators/wma.src.js +1 -1
- package/es-modules/masters/indicators/zigzag.src.js +1 -1
- package/es-modules/masters/modules/accessibility.src.js +1 -1
- package/es-modules/masters/modules/annotations-advanced.src.js +1 -1
- package/es-modules/masters/modules/annotations.src.js +1 -1
- package/es-modules/masters/modules/arc-diagram.src.js +1 -1
- package/es-modules/masters/modules/arrow-symbols.src.js +1 -1
- package/es-modules/masters/modules/boost-canvas.src.js +1 -1
- package/es-modules/masters/modules/boost.src.js +1 -1
- package/es-modules/masters/modules/broken-axis.src.js +1 -1
- package/es-modules/masters/modules/bullet.src.js +1 -1
- package/es-modules/masters/modules/coloraxis.src.js +1 -1
- package/es-modules/masters/modules/contour.src.js +1 -1
- package/es-modules/masters/modules/current-date-indicator.src.js +1 -1
- package/es-modules/masters/modules/cylinder.src.js +1 -1
- package/es-modules/masters/modules/data-sorting.src.js +1 -1
- package/es-modules/masters/modules/data-tools.src.js +1 -1
- package/es-modules/masters/modules/data.src.js +1 -1
- package/es-modules/masters/modules/datagrouping.src.js +1 -1
- package/es-modules/masters/modules/debugger.src.js +1 -1
- package/es-modules/masters/modules/dependency-wheel.src.js +1 -1
- package/es-modules/masters/modules/dotplot.src.js +1 -1
- package/es-modules/masters/modules/drag-panes.src.js +1 -1
- package/es-modules/masters/modules/draggable-points.src.js +1 -1
- package/es-modules/masters/modules/drilldown.src.js +1 -1
- package/es-modules/masters/modules/dumbbell.src.js +1 -1
- package/es-modules/masters/modules/export-data.src.js +1 -1
- package/es-modules/masters/modules/exporting.src.js +1 -1
- package/es-modules/masters/modules/flowmap.src.js +2 -1
- package/es-modules/masters/modules/full-screen.src.js +1 -1
- package/es-modules/masters/modules/funnel.src.js +1 -1
- package/es-modules/masters/modules/funnel3d.src.js +1 -1
- package/es-modules/masters/modules/gantt.src.js +1 -1
- package/es-modules/masters/modules/geoheatmap.src.js +1 -1
- package/es-modules/masters/modules/grid-axis.src.js +1 -1
- package/es-modules/masters/modules/heatmap.src.js +1 -1
- package/es-modules/masters/modules/heikinashi.src.js +1 -1
- package/es-modules/masters/modules/histogram-bellcurve.src.js +1 -1
- package/es-modules/masters/modules/hollowcandlestick.src.js +1 -1
- package/es-modules/masters/modules/item-series.src.js +1 -1
- package/es-modules/masters/modules/lollipop.src.js +1 -1
- package/es-modules/masters/modules/map.src.js +1 -1
- package/es-modules/masters/modules/marker-clusters.src.js +1 -1
- package/es-modules/masters/modules/mouse-wheel-zoom.src.js +1 -1
- package/es-modules/masters/modules/navigator.src.js +1 -1
- package/es-modules/masters/modules/networkgraph.src.js +1 -1
- package/es-modules/masters/modules/no-data-to-display.src.js +1 -1
- package/es-modules/masters/modules/non-cartesian-zoom.src.js +1 -1
- package/es-modules/masters/modules/offline-exporting.src.js +1 -1
- package/es-modules/masters/modules/organization.src.js +1 -1
- package/es-modules/masters/modules/parallel-coordinates.src.js +1 -1
- package/es-modules/masters/modules/pareto.src.js +1 -1
- package/es-modules/masters/modules/pathfinder.src.js +1 -1
- package/es-modules/masters/modules/pattern-fill.src.js +1 -1
- package/es-modules/masters/modules/pictorial.src.js +1 -1
- package/es-modules/masters/modules/pointandfigure.src.js +1 -1
- package/es-modules/masters/modules/price-indicator.src.js +1 -1
- package/es-modules/masters/modules/pyramid3d.src.js +1 -1
- package/es-modules/masters/modules/renko.src.js +1 -1
- package/es-modules/masters/modules/sankey.src.js +1 -1
- package/es-modules/masters/modules/series-label.src.js +1 -1
- package/es-modules/masters/modules/series-on-point.src.js +1 -1
- package/es-modules/masters/modules/solid-gauge.src.js +1 -1
- package/es-modules/masters/modules/sonification.src.js +1 -1
- package/es-modules/masters/modules/static-scale.src.js +1 -1
- package/es-modules/masters/modules/stock-tools.src.js +1 -1
- package/es-modules/masters/modules/stock.src.js +1 -1
- package/es-modules/masters/modules/streamgraph.src.js +1 -1
- package/es-modules/masters/modules/sunburst.src.js +3 -2
- package/es-modules/masters/modules/textpath.src.js +1 -1
- package/es-modules/masters/modules/tiledwebmap.src.js +1 -1
- package/es-modules/masters/modules/tilemap.src.js +1 -1
- package/es-modules/masters/modules/timeline.src.js +1 -1
- package/es-modules/masters/modules/treegraph.src.js +1 -1
- package/es-modules/masters/modules/treegrid.src.js +1 -1
- package/es-modules/masters/modules/treemap.src.js +1 -1
- package/es-modules/masters/modules/variable-pie.src.js +1 -1
- package/es-modules/masters/modules/variwide.src.js +1 -1
- package/es-modules/masters/modules/vector.src.js +1 -1
- package/es-modules/masters/modules/venn.src.js +1 -1
- package/es-modules/masters/modules/windbarb.src.js +1 -1
- package/es-modules/masters/modules/wordcloud.src.js +1 -1
- package/es-modules/masters/modules/xrange.src.js +1 -1
- package/es-modules/masters/standalone-navigator.src.js +1 -1
- package/es-modules/masters/themes/adaptive.src.js +1 -1
- package/es-modules/masters/themes/avocado.src.js +1 -1
- package/es-modules/masters/themes/dark-unica.src.js +1 -1
- package/es-modules/masters/themes/grid-light.src.js +1 -1
- package/es-modules/masters/themes/high-contrast.src.js +1 -1
- package/es-modules/masters/themes/sand-signika.src.js +1 -1
- package/es-modules/masters/themes/sunset.src.js +1 -1
- package/es-modules/tsconfig.tsbuildinfo +1 -1
- package/esm/highcharts-3d.js +2 -2
- package/esm/highcharts-3d.src.js +78 -55
- package/esm/highcharts-autoload.js +2 -2
- package/esm/highcharts-autoload.src.js +22 -8
- package/esm/highcharts-gantt.js +2 -2
- package/esm/highcharts-gantt.src.js +1 -24
- package/esm/highcharts-more.js +2 -2
- package/esm/highcharts-more.src.js +1198 -981
- package/esm/highcharts.js +5 -5
- package/esm/highcharts.src.js +702 -515
- package/esm/highmaps.js +2 -2
- package/esm/highmaps.src.js +1 -24
- package/esm/highstock.js +2 -2
- package/esm/highstock.src.js +1 -24
- package/esm/i18n/fr-FR.js +2 -2
- package/esm/i18n/fr-FR.src.js +22 -8
- package/esm/i18n/nb-NO.js +2 -2
- package/esm/i18n/nb-NO.src.js +22 -8
- package/esm/i18n/zh-CN.js +2 -2
- package/esm/i18n/zh-CN.src.js +22 -8
- package/esm/indicators/acceleration-bands.js +2 -2
- package/esm/indicators/acceleration-bands.src.js +22 -8
- package/esm/indicators/accumulation-distribution.js +2 -2
- package/esm/indicators/accumulation-distribution.src.js +22 -8
- package/esm/indicators/ao.js +2 -2
- package/esm/indicators/ao.src.js +22 -8
- package/esm/indicators/apo.js +2 -2
- package/esm/indicators/apo.src.js +22 -8
- package/esm/indicators/aroon-oscillator.js +2 -2
- package/esm/indicators/aroon-oscillator.src.js +22 -8
- package/esm/indicators/aroon.js +2 -2
- package/esm/indicators/aroon.src.js +24 -10
- package/esm/indicators/atr.js +2 -2
- package/esm/indicators/atr.src.js +22 -8
- package/esm/indicators/bollinger-bands.js +2 -2
- package/esm/indicators/bollinger-bands.src.js +22 -8
- package/esm/indicators/cci.js +2 -2
- package/esm/indicators/cci.src.js +22 -8
- package/esm/indicators/chaikin.js +2 -2
- package/esm/indicators/chaikin.src.js +22 -8
- package/esm/indicators/cmf.js +2 -2
- package/esm/indicators/cmf.src.js +22 -8
- package/esm/indicators/cmo.js +2 -2
- package/esm/indicators/cmo.src.js +22 -8
- package/esm/indicators/dema.js +2 -2
- package/esm/indicators/dema.src.js +22 -8
- package/esm/indicators/disparity-index.js +2 -2
- package/esm/indicators/disparity-index.src.js +22 -8
- package/esm/indicators/dmi.js +2 -2
- package/esm/indicators/dmi.src.js +22 -8
- package/esm/indicators/dpo.js +2 -2
- package/esm/indicators/dpo.src.js +25 -10
- package/esm/indicators/ichimoku-kinko-hyo.js +2 -2
- package/esm/indicators/ichimoku-kinko-hyo.src.js +22 -8
- package/esm/indicators/indicators-all.js +2 -2
- package/esm/indicators/indicators-all.src.js +31 -17
- package/esm/indicators/indicators.js +2 -2
- package/esm/indicators/indicators.src.js +24 -10
- package/esm/indicators/keltner-channels.js +2 -2
- package/esm/indicators/keltner-channels.src.js +22 -8
- package/esm/indicators/klinger.js +2 -2
- package/esm/indicators/klinger.src.js +22 -8
- package/esm/indicators/macd.js +2 -2
- package/esm/indicators/macd.src.js +22 -8
- package/esm/indicators/mfi.js +2 -2
- package/esm/indicators/mfi.src.js +22 -8
- package/esm/indicators/momentum.js +2 -2
- package/esm/indicators/momentum.src.js +22 -8
- package/esm/indicators/natr.js +2 -2
- package/esm/indicators/natr.src.js +22 -8
- package/esm/indicators/obv.js +2 -2
- package/esm/indicators/obv.src.js +22 -8
- package/esm/indicators/pivot-points.js +2 -2
- package/esm/indicators/pivot-points.src.js +22 -8
- package/esm/indicators/ppo.js +2 -2
- package/esm/indicators/ppo.src.js +22 -8
- package/esm/indicators/price-channel.js +2 -2
- package/esm/indicators/price-channel.src.js +22 -8
- package/esm/indicators/price-envelopes.js +2 -2
- package/esm/indicators/price-envelopes.src.js +22 -8
- package/esm/indicators/psar.js +2 -2
- package/esm/indicators/psar.src.js +22 -8
- package/esm/indicators/regressions.js +2 -2
- package/esm/indicators/regressions.src.js +22 -8
- package/esm/indicators/roc.js +2 -2
- package/esm/indicators/roc.src.js +22 -8
- package/esm/indicators/rsi.js +2 -2
- package/esm/indicators/rsi.src.js +23 -9
- package/esm/indicators/slow-stochastic.js +2 -2
- package/esm/indicators/slow-stochastic.src.js +22 -8
- package/esm/indicators/stochastic.js +2 -2
- package/esm/indicators/stochastic.src.js +22 -8
- package/esm/indicators/supertrend.js +2 -2
- package/esm/indicators/supertrend.src.js +22 -8
- package/esm/indicators/tema.js +2 -2
- package/esm/indicators/tema.src.js +22 -8
- package/esm/indicators/trendline.js +2 -2
- package/esm/indicators/trendline.src.js +22 -8
- package/esm/indicators/trix.js +2 -2
- package/esm/indicators/trix.src.js +22 -8
- package/esm/indicators/volume-by-price.js +2 -2
- package/esm/indicators/volume-by-price.src.js +23 -10
- package/esm/indicators/vwap.js +2 -2
- package/esm/indicators/vwap.src.js +22 -8
- package/esm/indicators/williams-r.js +2 -2
- package/esm/indicators/williams-r.src.js +22 -8
- package/esm/indicators/wma.js +2 -2
- package/esm/indicators/wma.src.js +22 -8
- package/esm/indicators/zigzag.js +2 -2
- package/esm/indicators/zigzag.src.js +22 -8
- package/esm/modules/accessibility.js +2 -2
- package/esm/modules/accessibility.src.js +564 -92
- package/esm/modules/annotations-advanced.js +11 -11
- package/esm/modules/annotations-advanced.src.js +224 -162
- package/esm/modules/annotations.js +11 -11
- package/esm/modules/annotations.src.js +184 -144
- package/esm/modules/arc-diagram.js +2 -2
- package/esm/modules/arc-diagram.src.js +37 -22
- package/esm/modules/arrow-symbols.js +3 -3
- package/esm/modules/arrow-symbols.src.js +22 -8
- package/esm/modules/boost-canvas.js +2 -2
- package/esm/modules/boost-canvas.src.js +60 -30
- package/esm/modules/boost.js +2 -2
- package/esm/modules/boost.src.js +72 -29
- package/esm/modules/broken-axis.js +2 -2
- package/esm/modules/broken-axis.src.js +27 -12
- package/esm/modules/bullet.js +2 -2
- package/esm/modules/bullet.src.js +38 -17
- package/esm/modules/coloraxis.js +2 -2
- package/esm/modules/coloraxis.src.js +47 -21
- package/esm/modules/contour.js +3 -3
- package/esm/modules/contour.src.js +46 -13
- package/esm/modules/current-date-indicator.js +2 -2
- package/esm/modules/current-date-indicator.src.js +22 -8
- package/esm/modules/cylinder.js +2 -2
- package/esm/modules/cylinder.src.js +46 -28
- package/esm/modules/data-sorting.js +2 -2
- package/esm/modules/data-sorting.src.js +22 -8
- package/esm/modules/data-tools.js +2 -2
- package/esm/modules/data-tools.src.js +44 -13
- package/esm/modules/data.js +4 -4
- package/esm/modules/data.src.js +23 -9
- package/esm/modules/datagrouping.js +2 -2
- package/esm/modules/datagrouping.src.js +28 -13
- package/esm/modules/debugger.js +2 -2
- package/esm/modules/debugger.src.js +22 -8
- package/esm/modules/dependency-wheel.js +2 -2
- package/esm/modules/dependency-wheel.src.js +428 -17
- package/esm/modules/dotplot.js +2 -2
- package/esm/modules/dotplot.src.js +27 -11
- package/esm/modules/drag-panes.js +2 -2
- package/esm/modules/drag-panes.src.js +22 -8
- package/esm/modules/draggable-points.js +2 -2
- package/esm/modules/draggable-points.src.js +24 -12
- package/esm/modules/drilldown.js +2 -2
- package/esm/modules/drilldown.src.js +38 -25
- package/esm/modules/dumbbell.js +2 -2
- package/esm/modules/dumbbell.src.js +72 -27
- package/esm/modules/export-data.js +2 -2
- package/esm/modules/export-data.src.js +42 -23
- package/esm/modules/exporting.js +2 -2
- package/esm/modules/exporting.src.js +83 -37
- package/esm/modules/flowmap.js +3 -2
- package/esm/modules/flowmap.src.js +43 -18
- package/esm/modules/full-screen.js +2 -2
- package/esm/modules/full-screen.src.js +22 -8
- package/esm/modules/funnel.js +2 -2
- package/esm/modules/funnel.src.js +73 -42
- package/esm/modules/funnel3d.js +2 -2
- package/esm/modules/funnel3d.src.js +35 -20
- package/esm/modules/gantt.js +2 -2
- package/esm/modules/gantt.src.js +542 -100
- package/esm/modules/geoheatmap.js +2 -2
- package/esm/modules/geoheatmap.src.js +35 -21
- package/esm/modules/grid-axis.js +2 -2
- package/esm/modules/grid-axis.src.js +33 -12
- package/esm/modules/heatmap.js +2 -2
- package/esm/modules/heatmap.src.js +50 -33
- package/esm/modules/heikinashi.js +2 -2
- package/esm/modules/heikinashi.src.js +22 -8
- package/esm/modules/histogram-bellcurve.js +2 -2
- package/esm/modules/histogram-bellcurve.src.js +56 -25
- package/esm/modules/hollowcandlestick.js +2 -2
- package/esm/modules/hollowcandlestick.src.js +31 -17
- package/esm/modules/item-series.js +2 -2
- package/esm/modules/item-series.src.js +72 -13
- package/esm/modules/lollipop.js +2 -2
- package/esm/modules/lollipop.src.js +22 -8
- package/esm/modules/map.js +2 -2
- package/esm/modules/map.src.js +148 -91
- package/esm/modules/marker-clusters.js +2 -2
- package/esm/modules/marker-clusters.src.js +25 -13
- package/esm/modules/mouse-wheel-zoom.js +2 -2
- package/esm/modules/mouse-wheel-zoom.src.js +54 -13
- package/esm/modules/navigator.js +2 -2
- package/esm/modules/navigator.src.js +534 -74
- package/esm/modules/networkgraph.js +2 -2
- package/esm/modules/networkgraph.src.js +87 -46
- package/esm/modules/no-data-to-display.js +2 -2
- package/esm/modules/no-data-to-display.src.js +22 -8
- package/esm/modules/non-cartesian-zoom.js +2 -2
- package/esm/modules/non-cartesian-zoom.src.js +22 -8
- package/esm/modules/offline-exporting.js +2 -2
- package/esm/modules/offline-exporting.src.js +53 -12
- package/esm/modules/organization.js +4 -2
- package/esm/modules/organization.src.js +63 -19
- package/esm/modules/parallel-coordinates.js +2 -2
- package/esm/modules/parallel-coordinates.src.js +26 -9
- package/esm/modules/pareto.js +2 -2
- package/esm/modules/pareto.src.js +31 -16
- package/esm/modules/pathfinder.js +2 -2
- package/esm/modules/pathfinder.src.js +28 -13
- package/esm/modules/pattern-fill.js +2 -2
- package/esm/modules/pattern-fill.src.js +28 -12
- package/esm/modules/pictorial.js +2 -2
- package/esm/modules/pictorial.src.js +36 -19
- package/esm/modules/pointandfigure.js +2 -2
- package/esm/modules/pointandfigure.src.js +26 -11
- package/esm/modules/price-indicator.js +2 -2
- package/esm/modules/price-indicator.src.js +26 -11
- package/esm/modules/pyramid3d.js +2 -2
- package/esm/modules/pyramid3d.src.js +22 -8
- package/esm/modules/renko.js +2 -2
- package/esm/modules/renko.src.js +22 -8
- package/esm/modules/sankey.js +2 -2
- package/esm/modules/sankey.src.js +59 -31
- package/esm/modules/series-label.js +2 -2
- package/esm/modules/series-label.src.js +31 -18
- package/esm/modules/series-on-point.js +2 -2
- package/esm/modules/series-on-point.src.js +23 -9
- package/esm/modules/solid-gauge.js +2 -2
- package/esm/modules/solid-gauge.src.js +40 -20
- package/esm/modules/sonification.js +2 -2
- package/esm/modules/sonification.src.js +45 -30
- package/esm/modules/static-scale.js +2 -2
- package/esm/modules/static-scale.src.js +22 -8
- package/esm/modules/stock-tools.js +3 -3
- package/esm/modules/stock-tools.src.js +73 -27
- package/esm/modules/stock.js +2 -2
- package/esm/modules/stock.src.js +554 -122
- package/esm/modules/streamgraph.js +2 -2
- package/esm/modules/streamgraph.src.js +22 -8
- package/esm/modules/sunburst.js +2 -2
- package/esm/modules/sunburst.src.js +110 -45
- package/esm/modules/textpath.js +2 -2
- package/esm/modules/textpath.src.js +22 -8
- package/esm/modules/tiledwebmap.js +3 -3
- package/esm/modules/tiledwebmap.src.js +44 -19
- package/esm/modules/tilemap.js +2 -2
- package/esm/modules/tilemap.src.js +27 -12
- package/esm/modules/timeline.js +2 -2
- package/esm/modules/timeline.src.js +35 -14
- package/esm/modules/treegraph.js +2 -2
- package/esm/modules/treegraph.src.js +59 -27
- package/esm/modules/treegrid.js +2 -2
- package/esm/modules/treegrid.src.js +58 -27
- package/esm/modules/treemap.js +2 -2
- package/esm/modules/treemap.src.js +89 -36
- package/esm/modules/variable-pie.js +2 -2
- package/esm/modules/variable-pie.src.js +30 -13
- package/esm/modules/variwide.js +2 -2
- package/esm/modules/variwide.src.js +23 -9
- package/esm/modules/vector.js +2 -2
- package/esm/modules/vector.src.js +28 -16
- package/esm/modules/venn.js +2 -2
- package/esm/modules/venn.src.js +28 -13
- package/esm/modules/windbarb.js +2 -2
- package/esm/modules/windbarb.src.js +29 -17
- package/esm/modules/wordcloud.js +2 -2
- package/esm/modules/wordcloud.src.js +25 -9
- package/esm/modules/xrange.js +2 -2
- package/esm/modules/xrange.src.js +29 -15
- package/esm/standalone-navigator.js +5 -5
- package/esm/standalone-navigator.src.js +808 -570
- package/esm/themes/adaptive.js +3 -3
- package/esm/themes/adaptive.src.js +22 -8
- package/esm/themes/avocado.js +2 -2
- package/esm/themes/avocado.src.js +22 -8
- package/esm/themes/dark-unica.js +2 -2
- package/esm/themes/dark-unica.src.js +22 -8
- package/esm/themes/grid-light.js +2 -2
- package/esm/themes/grid-light.src.js +22 -8
- package/esm/themes/high-contrast.js +2 -2
- package/esm/themes/high-contrast.src.js +22 -8
- package/esm/themes/sand-signika.js +2 -2
- package/esm/themes/sand-signika.src.js +22 -8
- package/esm/themes/sunset.js +2 -2
- package/esm/themes/sunset.src.js +22 -8
- package/highcharts-3d.js +2 -2
- package/highcharts-3d.src.js +116 -92
- package/highcharts-autoload.d.ts +15 -5
- package/highcharts-autoload.js +4 -4
- package/highcharts-autoload.src.d.ts +15 -5
- package/highcharts-autoload.src.js +724 -499
- package/highcharts-gantt.js +4 -4
- package/highcharts-gantt.src.js +851 -590
- package/highcharts-more.d.ts +7 -3
- package/highcharts-more.js +2 -2
- package/highcharts-more.src.d.ts +7 -3
- package/highcharts-more.src.js +1313 -1095
- package/highcharts.d.ts +34795 -25647
- package/highcharts.js +4 -4
- package/highcharts.src.d.ts +34795 -25647
- package/highcharts.src.js +723 -498
- package/highmaps.js +4 -4
- package/highmaps.src.js +863 -583
- package/highstock.js +4 -4
- package/highstock.src.js +899 -619
- package/i18n/fr-FR.js +2 -2
- package/i18n/fr-FR.src.js +32 -16
- package/i18n/nb-NO.js +2 -2
- package/i18n/nb-NO.src.js +32 -16
- package/i18n/zh-CN.js +2 -2
- package/i18n/zh-CN.src.js +32 -16
- package/indicators/acceleration-bands.js +2 -2
- package/indicators/acceleration-bands.src.js +31 -16
- package/indicators/accumulation-distribution.js +2 -2
- package/indicators/accumulation-distribution.src.js +31 -16
- package/indicators/ao.js +2 -2
- package/indicators/ao.src.js +31 -16
- package/indicators/apo.js +2 -2
- package/indicators/apo.src.js +31 -16
- package/indicators/aroon-oscillator.js +2 -2
- package/indicators/aroon-oscillator.src.js +31 -16
- package/indicators/aroon.js +2 -2
- package/indicators/aroon.src.js +33 -18
- package/indicators/atr.js +2 -2
- package/indicators/atr.src.js +31 -16
- package/indicators/bollinger-bands.js +2 -2
- package/indicators/bollinger-bands.src.js +31 -16
- package/indicators/cci.js +2 -2
- package/indicators/cci.src.js +31 -16
- package/indicators/chaikin.js +2 -2
- package/indicators/chaikin.src.js +31 -16
- package/indicators/cmf.js +2 -2
- package/indicators/cmf.src.js +31 -16
- package/indicators/cmo.js +2 -2
- package/indicators/cmo.src.js +31 -16
- package/indicators/dema.js +2 -2
- package/indicators/dema.src.js +31 -16
- package/indicators/disparity-index.js +2 -2
- package/indicators/disparity-index.src.js +31 -16
- package/indicators/dmi.js +2 -2
- package/indicators/dmi.src.js +31 -16
- package/indicators/dpo.js +2 -2
- package/indicators/dpo.src.js +34 -18
- package/indicators/ichimoku-kinko-hyo.js +2 -2
- package/indicators/ichimoku-kinko-hyo.src.js +41 -26
- package/indicators/indicators-all.js +2 -2
- package/indicators/indicators-all.src.js +52 -37
- package/indicators/indicators.js +2 -2
- package/indicators/indicators.src.js +39 -24
- package/indicators/keltner-channels.js +2 -2
- package/indicators/keltner-channels.src.js +31 -16
- package/indicators/klinger.js +2 -2
- package/indicators/klinger.src.js +31 -16
- package/indicators/macd.js +2 -2
- package/indicators/macd.src.js +31 -16
- package/indicators/mfi.js +2 -2
- package/indicators/mfi.src.js +31 -16
- package/indicators/momentum.js +2 -2
- package/indicators/momentum.src.js +31 -16
- package/indicators/natr.js +2 -2
- package/indicators/natr.src.js +31 -16
- package/indicators/obv.js +2 -2
- package/indicators/obv.src.js +31 -16
- package/indicators/pivot-points.js +2 -2
- package/indicators/pivot-points.src.js +31 -16
- package/indicators/ppo.js +2 -2
- package/indicators/ppo.src.js +31 -16
- package/indicators/price-channel.js +2 -2
- package/indicators/price-channel.src.js +31 -16
- package/indicators/price-envelopes.js +2 -2
- package/indicators/price-envelopes.src.js +31 -16
- package/indicators/psar.js +2 -2
- package/indicators/psar.src.js +31 -16
- package/indicators/regressions.js +2 -2
- package/indicators/regressions.src.js +31 -16
- package/indicators/roc.js +2 -2
- package/indicators/roc.src.js +31 -16
- package/indicators/rsi.js +2 -2
- package/indicators/rsi.src.js +32 -17
- package/indicators/slow-stochastic.js +2 -2
- package/indicators/slow-stochastic.src.js +31 -16
- package/indicators/stochastic.js +2 -2
- package/indicators/stochastic.src.js +31 -16
- package/indicators/supertrend.js +2 -2
- package/indicators/supertrend.src.js +31 -16
- package/indicators/tema.js +2 -2
- package/indicators/tema.src.js +31 -16
- package/indicators/trendline.js +2 -2
- package/indicators/trendline.src.js +31 -16
- package/indicators/trix.js +2 -2
- package/indicators/trix.src.js +31 -16
- package/indicators/volume-by-price.js +2 -2
- package/indicators/volume-by-price.src.js +32 -18
- package/indicators/vwap.js +2 -2
- package/indicators/vwap.src.js +31 -16
- package/indicators/williams-r.js +2 -2
- package/indicators/williams-r.src.js +31 -16
- package/indicators/wma.js +2 -2
- package/indicators/wma.src.js +31 -16
- package/indicators/zigzag.js +2 -2
- package/indicators/zigzag.src.js +31 -16
- package/modules/accessibility.d.ts +47 -0
- package/modules/accessibility.js +2 -2
- package/modules/accessibility.src.d.ts +47 -0
- package/modules/accessibility.src.js +603 -130
- package/modules/annotations-advanced.js +11 -11
- package/modules/annotations-advanced.src.js +246 -183
- package/modules/annotations.js +11 -11
- package/modules/annotations.src.js +206 -165
- package/modules/arc-diagram.js +2 -2
- package/modules/arc-diagram.src.js +58 -42
- package/modules/arrow-symbols.js +2 -2
- package/modules/arrow-symbols.src.js +28 -13
- package/modules/boost-canvas.js +2 -2
- package/modules/boost-canvas.src.js +69 -38
- package/modules/boost.js +2 -2
- package/modules/boost.src.js +81 -37
- package/modules/broken-axis.js +2 -2
- package/modules/broken-axis.src.js +36 -20
- package/modules/bullet.js +2 -2
- package/modules/bullet.src.js +50 -28
- package/modules/coloraxis.js +2 -2
- package/modules/coloraxis.src.js +65 -38
- package/modules/contour.js +5 -5
- package/modules/contour.src.js +91 -44
- package/modules/current-date-indicator.js +2 -2
- package/modules/current-date-indicator.src.js +28 -13
- package/modules/cylinder.js +2 -2
- package/modules/cylinder.src.js +67 -48
- package/modules/data-sorting.js +2 -2
- package/modules/data-sorting.src.js +28 -13
- package/modules/data-tools.js +2 -2
- package/modules/data-tools.src.js +50 -18
- package/modules/data.js +2 -2
- package/modules/data.src.js +50 -35
- package/modules/datagrouping.js +2 -2
- package/modules/datagrouping.src.js +42 -26
- package/modules/debugger.js +2 -2
- package/modules/debugger.src.js +28 -13
- package/modules/dependency-wheel.d.ts +7 -1
- package/modules/dependency-wheel.js +2 -2
- package/modules/dependency-wheel.src.d.ts +7 -1
- package/modules/dependency-wheel.src.js +440 -28
- package/modules/dotplot.js +2 -2
- package/modules/dotplot.src.js +36 -19
- package/modules/drag-panes.js +2 -2
- package/modules/drag-panes.src.js +28 -13
- package/modules/draggable-points.js +2 -2
- package/modules/draggable-points.src.js +30 -17
- package/modules/drilldown.js +2 -2
- package/modules/drilldown.src.js +49 -35
- package/modules/dumbbell.js +2 -2
- package/modules/dumbbell.src.js +86 -40
- package/modules/export-data.d.ts +66 -1
- package/modules/export-data.js +2 -2
- package/modules/export-data.src.d.ts +66 -1
- package/modules/export-data.src.js +56 -36
- package/modules/exporting.d.ts +0 -103
- package/modules/exporting.js +2 -2
- package/modules/exporting.src.d.ts +0 -103
- package/modules/exporting.src.js +97 -50
- package/modules/flowmap.js +3 -2
- package/modules/flowmap.src.js +52 -26
- package/modules/full-screen.js +2 -2
- package/modules/full-screen.src.js +31 -16
- package/modules/funnel.d.ts +3 -3
- package/modules/funnel.js +2 -2
- package/modules/funnel.src.d.ts +3 -3
- package/modules/funnel.src.js +82 -50
- package/modules/funnel3d.js +2 -2
- package/modules/funnel3d.src.js +56 -40
- package/modules/gantt.d.ts +47 -0
- package/modules/gantt.js +8 -8
- package/modules/gantt.src.d.ts +47 -0
- package/modules/gantt.src.js +602 -156
- package/modules/geoheatmap.d.ts +13 -12
- package/modules/geoheatmap.js +2 -2
- package/modules/geoheatmap.src.d.ts +13 -12
- package/modules/geoheatmap.src.js +44 -29
- package/modules/grid-axis.js +2 -2
- package/modules/grid-axis.src.js +42 -20
- package/modules/heatmap.d.ts +0 -12
- package/modules/heatmap.js +4 -4
- package/modules/heatmap.src.d.ts +0 -12
- package/modules/heatmap.src.js +102 -71
- package/modules/heikinashi.js +2 -2
- package/modules/heikinashi.src.js +31 -16
- package/modules/histogram-bellcurve.js +2 -2
- package/modules/histogram-bellcurve.src.js +70 -38
- package/modules/hollowcandlestick.js +2 -2
- package/modules/hollowcandlestick.src.js +45 -30
- package/modules/item-series.js +2 -2
- package/modules/item-series.src.js +81 -21
- package/modules/lollipop.js +2 -2
- package/modules/lollipop.src.js +36 -21
- package/modules/map.d.ts +0 -20
- package/modules/map.js +4 -4
- package/modules/map.src.d.ts +0 -20
- package/modules/map.src.js +212 -140
- package/modules/marker-clusters.js +2 -2
- package/modules/marker-clusters.src.js +31 -18
- package/modules/mouse-wheel-zoom.js +2 -2
- package/modules/mouse-wheel-zoom.src.js +60 -18
- package/modules/navigator.d.ts +47 -0
- package/modules/navigator.js +2 -2
- package/modules/navigator.src.d.ts +47 -0
- package/modules/navigator.src.js +556 -95
- package/modules/networkgraph.js +2 -2
- package/modules/networkgraph.src.js +99 -57
- package/modules/no-data-to-display.js +2 -2
- package/modules/no-data-to-display.src.js +31 -16
- package/modules/non-cartesian-zoom.js +2 -2
- package/modules/non-cartesian-zoom.src.js +28 -13
- package/modules/offline-exporting.js +2 -2
- package/modules/offline-exporting.src.js +67 -25
- package/modules/organization.js +4 -2
- package/modules/organization.src.js +75 -30
- package/modules/parallel-coordinates.js +2 -2
- package/modules/parallel-coordinates.src.js +37 -19
- package/modules/pareto.js +2 -2
- package/modules/pareto.src.js +45 -29
- package/modules/pathfinder.js +2 -2
- package/modules/pathfinder.src.js +37 -21
- package/modules/pattern-fill.js +2 -2
- package/modules/pattern-fill.src.js +34 -17
- package/modules/pictorial.js +2 -2
- package/modules/pictorial.src.js +62 -43
- package/modules/pointandfigure.js +2 -2
- package/modules/pointandfigure.src.js +35 -19
- package/modules/price-indicator.js +2 -2
- package/modules/price-indicator.src.js +32 -16
- package/modules/pyramid3d.js +2 -2
- package/modules/pyramid3d.src.js +31 -16
- package/modules/renko.js +2 -2
- package/modules/renko.src.js +34 -19
- package/modules/sankey.js +2 -2
- package/modules/sankey.src.js +80 -51
- package/modules/series-label.js +2 -2
- package/modules/series-label.src.js +42 -28
- package/modules/series-on-point.js +2 -2
- package/modules/series-on-point.src.js +40 -25
- package/modules/solid-gauge.d.ts +3 -3
- package/modules/solid-gauge.js +2 -2
- package/modules/solid-gauge.src.d.ts +3 -3
- package/modules/solid-gauge.src.js +54 -33
- package/modules/sonification.js +2 -2
- package/modules/sonification.src.js +56 -40
- package/modules/static-scale.js +2 -2
- package/modules/static-scale.src.js +28 -13
- package/modules/stock-tools.js +3 -3
- package/modules/stock-tools.src.js +90 -43
- package/modules/stock.d.ts +47 -0
- package/modules/stock.js +6 -6
- package/modules/stock.src.d.ts +47 -0
- package/modules/stock.src.js +650 -185
- package/modules/streamgraph.js +2 -2
- package/modules/streamgraph.src.js +31 -16
- package/modules/sunburst.js +2 -2
- package/modules/sunburst.src.js +137 -71
- package/modules/textpath.js +2 -2
- package/modules/textpath.src.js +28 -13
- package/modules/tiledwebmap.js +3 -3
- package/modules/tiledwebmap.src.js +65 -32
- package/modules/tilemap.js +2 -2
- package/modules/tilemap.src.js +41 -25
- package/modules/timeline.js +2 -2
- package/modules/timeline.src.js +47 -25
- package/modules/treegraph.js +2 -2
- package/modules/treegraph.src.js +83 -50
- package/modules/treegrid.js +2 -2
- package/modules/treegrid.src.js +76 -44
- package/modules/treemap.js +2 -2
- package/modules/treemap.src.js +116 -62
- package/modules/variable-pie.js +2 -2
- package/modules/variable-pie.src.js +39 -21
- package/modules/variwide.js +2 -2
- package/modules/variwide.src.js +32 -17
- package/modules/vector.js +2 -2
- package/modules/vector.src.js +37 -24
- package/modules/venn.js +2 -2
- package/modules/venn.src.js +42 -26
- package/modules/windbarb.js +2 -2
- package/modules/windbarb.src.js +51 -38
- package/modules/wordcloud.js +2 -2
- package/modules/wordcloud.src.js +34 -17
- package/modules/xrange.js +2 -2
- package/modules/xrange.src.js +43 -28
- package/options/abands.d.ts +722 -83
- package/options/abands.src.d.ts +722 -83
- package/options/ad.d.ts +381 -26
- package/options/ad.src.d.ts +381 -26
- package/options/ao.d.ts +744 -70
- package/options/ao.src.d.ts +744 -70
- package/options/apo.d.ts +381 -26
- package/options/apo.src.d.ts +381 -26
- package/options/arcdiagram.d.ts +80 -534
- package/options/arcdiagram.src.d.ts +80 -534
- package/options/area.d.ts +432 -129
- package/options/area.src.d.ts +432 -129
- package/options/arearange.d.ts +46 -4
- package/options/arearange.src.d.ts +46 -4
- package/options/areaspline.d.ts +141 -866
- package/options/areaspline.src.d.ts +141 -866
- package/options/areasplinerange.d.ts +221 -871
- package/options/areasplinerange.src.d.ts +221 -871
- package/options/aroon.d.ts +432 -124
- package/options/aroon.src.d.ts +432 -124
- package/options/aroonoscillator.d.ts +127 -689
- package/options/aroonoscillator.src.d.ts +127 -689
- package/options/atr.d.ts +381 -71
- package/options/atr.src.d.ts +381 -71
- package/options/bar.d.ts +103 -12
- package/options/bar.src.d.ts +103 -12
- package/options/bb.d.ts +87 -762
- package/options/bb.src.d.ts +87 -762
- package/options/bellcurve.d.ts +87 -364
- package/options/bellcurve.src.d.ts +87 -364
- package/options/boxplot.d.ts +82 -13
- package/options/boxplot.src.d.ts +82 -13
- package/options/bubble.d.ts +83 -874
- package/options/bubble.src.d.ts +83 -874
- package/options/bullet.d.ts +354 -717
- package/options/bullet.src.d.ts +354 -717
- package/options/candlestick.d.ts +99 -1214
- package/options/candlestick.src.d.ts +99 -1214
- package/options/cci.d.ts +381 -26
- package/options/cci.src.d.ts +381 -26
- package/options/chaikin.d.ts +728 -83
- package/options/chaikin.src.d.ts +728 -83
- package/options/cmf.d.ts +381 -26
- package/options/cmf.src.d.ts +381 -26
- package/options/cmo.d.ts +730 -79
- package/options/cmo.src.d.ts +730 -79
- package/options/column.d.ts +1265 -99
- package/options/column.src.d.ts +1265 -99
- package/options/columnpyramid.d.ts +102 -1158
- package/options/columnpyramid.src.d.ts +102 -1158
- package/options/columnrange.d.ts +952 -95
- package/options/columnrange.src.d.ts +952 -95
- package/options/contour.d.ts +31 -443
- package/options/contour.src.d.ts +31 -443
- package/options/cylinder.d.ts +100 -12
- package/options/cylinder.src.d.ts +100 -12
- package/options/dema.d.ts +80 -736
- package/options/dema.src.d.ts +80 -736
- package/options/dependencywheel.d.ts +599 -218
- package/options/dependencywheel.src.d.ts +599 -218
- package/options/disparityindex.d.ts +84 -365
- package/options/disparityindex.src.d.ts +84 -365
- package/options/dmi.d.ts +86 -775
- package/options/dmi.src.d.ts +86 -775
- package/options/dpo.d.ts +83 -365
- package/options/dpo.src.d.ts +83 -365
- package/options/dumbbell.d.ts +27 -4
- package/options/dumbbell.src.d.ts +27 -4
- package/options/ema.d.ts +81 -703
- package/options/ema.src.d.ts +81 -703
- package/options/errorbar.d.ts +91 -1161
- package/options/errorbar.src.d.ts +91 -1161
- package/options/flags.d.ts +98 -1192
- package/options/flags.src.d.ts +98 -1192
- package/options/flowmap.d.ts +48 -373
- package/options/flowmap.src.d.ts +48 -373
- package/options/funnel.d.ts +40 -3
- package/options/funnel.src.d.ts +40 -3
- package/options/gantt.d.ts +37 -40
- package/options/gantt.src.d.ts +37 -40
- package/options/gauge.d.ts +398 -472
- package/options/gauge.src.d.ts +398 -472
- package/options/geoheatmap.d.ts +462 -63
- package/options/geoheatmap.src.d.ts +462 -63
- package/options/heatmap.d.ts +31 -380
- package/options/heatmap.src.d.ts +31 -380
- package/options/heikinashi.d.ts +20 -2
- package/options/heikinashi.src.d.ts +20 -2
- package/options/hlc.d.ts +20 -2
- package/options/hlc.src.d.ts +20 -2
- package/options/ikh.d.ts +750 -103
- package/options/ikh.src.d.ts +750 -103
- package/options/item.d.ts +34 -74
- package/options/item.src.d.ts +34 -74
- package/options/keltnerchannels.d.ts +87 -708
- package/options/keltnerchannels.src.d.ts +87 -708
- package/options/klinger.d.ts +34 -365
- package/options/klinger.src.d.ts +34 -365
- package/options/line.d.ts +151 -851
- package/options/line.src.d.ts +151 -851
- package/options/linearregression.d.ts +960 -85
- package/options/linearregression.src.d.ts +960 -85
- package/options/linearregressionangle.d.ts +96 -699
- package/options/linearregressionangle.src.d.ts +96 -699
- package/options/linearregressionintercept.d.ts +381 -26
- package/options/linearregressionintercept.src.d.ts +381 -26
- package/options/linearregressionslope.d.ts +381 -26
- package/options/linearregressionslope.src.d.ts +381 -26
- package/options/lollipop.d.ts +214 -851
- package/options/lollipop.src.d.ts +214 -851
- package/options/macd.d.ts +386 -83
- package/options/macd.src.d.ts +386 -83
- package/options/map.d.ts +470 -36
- package/options/map.src.d.ts +470 -36
- package/options/mapbubble.d.ts +43 -532
- package/options/mapbubble.src.d.ts +43 -532
- package/options/mapline.d.ts +135 -58
- package/options/mapline.src.d.ts +135 -58
- package/options/mappoint.d.ts +205 -283
- package/options/mappoint.src.d.ts +205 -283
- package/options/mfi.d.ts +772 -82
- package/options/mfi.src.d.ts +772 -82
- package/options/momentum.d.ts +381 -71
- package/options/momentum.src.d.ts +381 -71
- package/options/natr.d.ts +776 -75
- package/options/natr.src.d.ts +776 -75
- package/options/networkgraph.d.ts +184 -207
- package/options/networkgraph.src.d.ts +184 -207
- package/options/obv.d.ts +426 -26
- package/options/obv.src.d.ts +426 -26
- package/options/ohlc.d.ts +77 -14
- package/options/ohlc.src.d.ts +77 -14
- package/options/packedbubble.d.ts +76 -696
- package/options/packedbubble.src.d.ts +76 -696
- package/options/pareto.d.ts +28 -364
- package/options/pareto.src.d.ts +28 -364
- package/options/pc.d.ts +724 -85
- package/options/pc.src.d.ts +724 -85
- package/options/pictorial.d.ts +1093 -58
- package/options/pictorial.src.d.ts +1093 -58
- package/options/pie.d.ts +595 -129
- package/options/pie.src.d.ts +595 -129
- package/options/pivotpoints.d.ts +34 -365
- package/options/pivotpoints.src.d.ts +34 -365
- package/options/pointandfigure.d.ts +10 -50
- package/options/pointandfigure.src.d.ts +10 -50
- package/options/polygon.d.ts +803 -74
- package/options/polygon.src.d.ts +803 -74
- package/options/ppo.d.ts +34 -365
- package/options/ppo.src.d.ts +34 -365
- package/options/priceenvelopes.d.ts +93 -719
- package/options/priceenvelopes.src.d.ts +93 -719
- package/options/psar.d.ts +34 -365
- package/options/psar.src.d.ts +34 -365
- package/options/pyramid.d.ts +35 -3
- package/options/pyramid.src.d.ts +35 -3
- package/options/renko.d.ts +25 -2
- package/options/renko.src.d.ts +25 -2
- package/options/roc.d.ts +78 -712
- package/options/roc.src.d.ts +78 -712
- package/options/rsi.d.ts +34 -365
- package/options/rsi.src.d.ts +34 -365
- package/options/sankey.d.ts +27 -5
- package/options/sankey.src.d.ts +27 -5
- package/options/scatter.d.ts +896 -290
- package/options/scatter.src.d.ts +896 -290
- package/options/series.d.ts +938 -83
- package/options/series.src.d.ts +938 -83
- package/options/slowstochastic.d.ts +381 -26
- package/options/slowstochastic.src.d.ts +381 -26
- package/options/sma.d.ts +729 -79
- package/options/sma.src.d.ts +729 -79
- package/options/solidgauge.d.ts +882 -105
- package/options/solidgauge.src.d.ts +882 -105
- package/options/spline.d.ts +389 -90
- package/options/spline.src.d.ts +389 -90
- package/options/stochastic.d.ts +83 -716
- package/options/stochastic.src.d.ts +83 -716
- package/options/streamgraph.d.ts +97 -364
- package/options/streamgraph.src.d.ts +97 -364
- package/options/sunburst.d.ts +87 -19
- package/options/sunburst.src.d.ts +87 -19
- package/options/supertrend.d.ts +77 -749
- package/options/supertrend.src.d.ts +77 -749
- package/options/tema.d.ts +83 -365
- package/options/tema.src.d.ts +83 -365
- package/options/tiledwebmap.d.ts +13 -72
- package/options/tiledwebmap.src.d.ts +13 -72
- package/options/tilemap.d.ts +372 -533
- package/options/tilemap.src.d.ts +372 -533
- package/options/timeline.d.ts +49 -154
- package/options/timeline.src.d.ts +49 -154
- package/options/treegraph.d.ts +174 -696
- package/options/treegraph.src.d.ts +174 -696
- package/options/treemap.d.ts +468 -1079
- package/options/treemap.src.d.ts +468 -1079
- package/options/trendline.d.ts +381 -26
- package/options/trendline.src.d.ts +381 -26
- package/options/trix.d.ts +712 -82
- package/options/trix.src.d.ts +712 -82
- package/options/variablepie.d.ts +130 -587
- package/options/variablepie.src.d.ts +130 -587
- package/options/variwide.d.ts +1123 -94
- package/options/variwide.src.d.ts +1123 -94
- package/options/vbp.d.ts +57 -383
- package/options/vbp.src.d.ts +57 -383
- package/options/vector.d.ts +22 -58
- package/options/vector.src.d.ts +22 -58
- package/options/venn.d.ts +32 -78
- package/options/venn.src.d.ts +32 -78
- package/options/vwap.d.ts +122 -703
- package/options/vwap.src.d.ts +122 -703
- package/options/waterfall.d.ts +139 -1150
- package/options/waterfall.src.d.ts +139 -1150
- package/options/williamsr.d.ts +381 -76
- package/options/williamsr.src.d.ts +381 -76
- package/options/windbarb.d.ts +39 -2
- package/options/windbarb.src.d.ts +39 -2
- package/options/wma.d.ts +78 -704
- package/options/wma.src.d.ts +78 -704
- package/options/wordcloud.d.ts +98 -595
- package/options/wordcloud.src.d.ts +98 -595
- package/options/xrange.d.ts +166 -1056
- package/options/xrange.src.d.ts +166 -1056
- package/options/zigzag.d.ts +34 -410
- package/options/zigzag.src.d.ts +34 -410
- package/package.json +1 -1
- package/standalone-navigator.js +4 -4
- package/standalone-navigator.src.js +829 -553
- package/themes/adaptive.js +2 -2
- package/themes/adaptive.src.js +33 -18
- package/themes/avocado.js +2 -2
- package/themes/avocado.src.js +28 -13
- package/themes/dark-unica.js +2 -2
- package/themes/dark-unica.src.js +28 -13
- package/themes/grid-light.js +2 -2
- package/themes/grid-light.src.js +28 -13
- package/themes/high-contrast.js +2 -2
- package/themes/high-contrast.src.js +28 -13
- package/themes/sand-signika.js +2 -2
- package/themes/sand-signika.src.js +28 -13
- package/themes/sunset.js +2 -2
- package/themes/sunset.src.js +28 -13
- package/css/.stylelintrc.json +0 -8
package/highcharts-gantt.src.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// SPDX-License-Identifier: LicenseRef-Highcharts
|
|
2
2
|
/**
|
|
3
|
-
* @license Highcharts Gantt JS v13.0.
|
|
3
|
+
* @license Highcharts Gantt JS v13.0.2 (2026-08-27)
|
|
4
4
|
* @module highcharts/highcharts-gantt
|
|
5
5
|
*
|
|
6
6
|
* (c) 2017-2026 Highsoft AS
|
|
@@ -27,16 +27,31 @@
|
|
|
27
27
|
return /******/ (() => { // webpackBootstrap
|
|
28
28
|
/******/ "use strict";
|
|
29
29
|
/******/ // The require scope
|
|
30
|
-
/******/
|
|
30
|
+
/******/ const __webpack_require__ = {};
|
|
31
31
|
/******/
|
|
32
32
|
/************************************************************************/
|
|
33
33
|
/******/ /* webpack/runtime/define property getters */
|
|
34
34
|
/******/ (() => {
|
|
35
|
-
/******/ // define getter functions for harmony exports
|
|
35
|
+
/******/ // define getter/value functions for harmony exports
|
|
36
36
|
/******/ __webpack_require__.d = (exports, definition) => {
|
|
37
|
-
/******/
|
|
38
|
-
/******/
|
|
39
|
-
/******/
|
|
37
|
+
/******/ if(Array.isArray(definition)) {
|
|
38
|
+
/******/ var i = 0;
|
|
39
|
+
/******/ while(i < definition.length) {
|
|
40
|
+
/******/ var key = definition[i++];
|
|
41
|
+
/******/ var binding = definition[i++];
|
|
42
|
+
/******/ if(!__webpack_require__.o(exports, key)) {
|
|
43
|
+
/******/ if(binding === 0) {
|
|
44
|
+
/******/ Object.defineProperty(exports, key, { enumerable: true, value: definition[i++] });
|
|
45
|
+
/******/ } else {
|
|
46
|
+
/******/ Object.defineProperty(exports, key, { enumerable: true, get: binding });
|
|
47
|
+
/******/ }
|
|
48
|
+
/******/ } else if(binding === 0) { i++; }
|
|
49
|
+
/******/ }
|
|
50
|
+
/******/ } else {
|
|
51
|
+
/******/ for(var key in definition) {
|
|
52
|
+
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|
53
|
+
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
54
|
+
/******/ }
|
|
40
55
|
/******/ }
|
|
41
56
|
/******/ }
|
|
42
57
|
/******/ };
|
|
@@ -48,7 +63,7 @@ return /******/ (() => { // webpackBootstrap
|
|
|
48
63
|
/******/ })();
|
|
49
64
|
/******/
|
|
50
65
|
/************************************************************************/
|
|
51
|
-
|
|
66
|
+
let __webpack_exports__ = {};
|
|
52
67
|
|
|
53
68
|
// EXPORTS
|
|
54
69
|
__webpack_require__.d(__webpack_exports__, {
|
|
@@ -84,7 +99,7 @@ var Globals;
|
|
|
84
99
|
* Constants
|
|
85
100
|
*
|
|
86
101
|
* */
|
|
87
|
-
Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '13.0.
|
|
102
|
+
Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '13.0.2', Globals.win = (typeof window !== 'undefined' ?
|
|
88
103
|
window :
|
|
89
104
|
{}), // eslint-disable-line node/no-unsupported-features/es-builtins
|
|
90
105
|
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 = [
|
|
@@ -411,6 +426,29 @@ const ChartDefaults = {
|
|
|
411
426
|
* @context Highcharts.Chart
|
|
412
427
|
* @apioption chart.events.load
|
|
413
428
|
*/
|
|
429
|
+
/**
|
|
430
|
+
* Fires while the chart is panned by mouse drag. Panning must be
|
|
431
|
+
* enabled through [chart.panning](#chart.panning). One parameter,
|
|
432
|
+
* `event`, is passed to the function, containing common event
|
|
433
|
+
* information as well as `event.originalEvent`, the underlying pointer
|
|
434
|
+
* event. Note that the event fires for every mouse move during the
|
|
435
|
+
* drag, not once per gesture.
|
|
436
|
+
*
|
|
437
|
+
* Calling `event.preventDefault()` or returning false prevents the
|
|
438
|
+
* default panning of the axes. In Highcharts Maps, and on ordinal axes
|
|
439
|
+
* in Highcharts Stock, the panning is applied outside the default
|
|
440
|
+
* action and is not prevented.
|
|
441
|
+
*
|
|
442
|
+
* Panning by touch does not fire this event, unless
|
|
443
|
+
* [chart.zooming.singleTouch](#chart.zooming.singleTouch) is enabled and
|
|
444
|
+
* no zoom type is set. Single-finger drags are then handled as mouse
|
|
445
|
+
* drags and fire this event.
|
|
446
|
+
*
|
|
447
|
+
* @type {Highcharts.ChartPanCallbackFunction}
|
|
448
|
+
* @since 7.0.2
|
|
449
|
+
* @context Highcharts.Chart
|
|
450
|
+
* @apioption chart.events.pan
|
|
451
|
+
*/
|
|
414
452
|
/**
|
|
415
453
|
* Fires when the chart is redrawn, either after a call to
|
|
416
454
|
* `chart.redraw()` or after an axis, series or point is modified with
|
|
@@ -999,7 +1037,7 @@ const ChartDefaults = {
|
|
|
999
1037
|
* @type {Highcharts.ColorType}
|
|
1000
1038
|
* @since 2.1.7
|
|
1001
1039
|
*/
|
|
1002
|
-
selectionMarkerFill: 'color-mix(var(--highcharts-highlight-color-80) 25%, transparent)', // eslint-disable-line max-len
|
|
1040
|
+
selectionMarkerFill: 'color-mix(in srgb, var(--highcharts-highlight-color-80) 25%, transparent)', // eslint-disable-line max-len
|
|
1003
1041
|
/**
|
|
1004
1042
|
* Whether to apply a drop shadow to the global series group. This causes
|
|
1005
1043
|
* all the series to have the same shadow. Contrary to the `series.shadow`
|
|
@@ -2425,7 +2463,7 @@ function getStyle(el, prop, toInt) {
|
|
|
2425
2463
|
const css = win.getComputedStyle(el, void 0); // eslint-disable-line no-undefined
|
|
2426
2464
|
if (css) {
|
|
2427
2465
|
style = css.getPropertyValue(prop);
|
|
2428
|
-
if (
|
|
2466
|
+
if (toInt ?? prop !== 'opacity') {
|
|
2429
2467
|
style = pInt(style);
|
|
2430
2468
|
}
|
|
2431
2469
|
}
|
|
@@ -2675,7 +2713,7 @@ function merge(extendOrSource, ...sources) {
|
|
|
2675
2713
|
function normalizeTickInterval(interval, multiples, magnitude, allowDecimals, hasTickAmount) {
|
|
2676
2714
|
let i, retInterval = interval;
|
|
2677
2715
|
// Round to a tenfold of 1, 2, 2.5 or 5
|
|
2678
|
-
magnitude =
|
|
2716
|
+
magnitude = (magnitude ?? getMagnitude(interval));
|
|
2679
2717
|
const normalized = interval / magnitude;
|
|
2680
2718
|
// Multiples for a linear scale
|
|
2681
2719
|
if (!multiples) {
|
|
@@ -2788,20 +2826,22 @@ function pad(number, length, padder) {
|
|
|
2788
2826
|
.replace('-', '')
|
|
2789
2827
|
.length).join(padder || '0') + number;
|
|
2790
2828
|
}
|
|
2791
|
-
/* eslint-disable jsdoc
|
|
2829
|
+
/* eslint-disable valid-jsdoc */
|
|
2792
2830
|
/**
|
|
2793
2831
|
* Return the first value that is not null or undefined.
|
|
2794
2832
|
*
|
|
2833
|
+
* @deprecated 13.0.2
|
|
2834
|
+
* Use nullish coalescing (`??`) or explicit fallback logic instead.
|
|
2835
|
+
*
|
|
2795
2836
|
* @function Highcharts.pick<T>
|
|
2796
2837
|
*
|
|
2797
|
-
* @param {...
|
|
2838
|
+
* @param {...(T|null|undefined)} args
|
|
2798
2839
|
* Variable number of arguments to inspect.
|
|
2799
2840
|
*
|
|
2800
2841
|
* @return {T}
|
|
2801
2842
|
* The value of the first argument that is not null or undefined.
|
|
2802
2843
|
*/
|
|
2803
|
-
function pick() {
|
|
2804
|
-
const args = arguments;
|
|
2844
|
+
function pick(...args) {
|
|
2805
2845
|
const length = args.length;
|
|
2806
2846
|
for (let i = 0; i < length; i++) {
|
|
2807
2847
|
const arg = args[i];
|
|
@@ -2810,7 +2850,7 @@ function pick() {
|
|
|
2810
2850
|
}
|
|
2811
2851
|
}
|
|
2812
2852
|
}
|
|
2813
|
-
/* eslint-enable jsdoc
|
|
2853
|
+
/* eslint-enable valid-jsdoc */
|
|
2814
2854
|
/**
|
|
2815
2855
|
* Shortcut for parseInt
|
|
2816
2856
|
*
|
|
@@ -3193,7 +3233,8 @@ function insertItem(item, collection) {
|
|
|
3193
3233
|
!collection[i] ||
|
|
3194
3234
|
// Handle index option, the element to insert has lower index
|
|
3195
3235
|
(isNumber(indexOption) &&
|
|
3196
|
-
indexOption <
|
|
3236
|
+
indexOption < (collection[i].options.index ??
|
|
3237
|
+
collection[i]._i)) ||
|
|
3197
3238
|
// Insert the new item before other internal items
|
|
3198
3239
|
// (navigator)
|
|
3199
3240
|
collection[i].options.isInternal) {
|
|
@@ -3279,7 +3320,7 @@ const uniqueKey = (function () {
|
|
|
3279
3320
|
* State of the serial mode.
|
|
3280
3321
|
*/
|
|
3281
3322
|
function useSerialIds(mode) {
|
|
3282
|
-
return (serialMode =
|
|
3323
|
+
return (serialMode = (mode ?? serialMode));
|
|
3283
3324
|
}
|
|
3284
3325
|
/* *
|
|
3285
3326
|
*
|
|
@@ -3745,6 +3786,10 @@ const isDateTimeFormatOptions = (obj) => obj.main === void 0;
|
|
|
3745
3786
|
*
|
|
3746
3787
|
* @param {Highcharts.TimeOptions} [options] Time options as defined in
|
|
3747
3788
|
* [chart.options.time](/highcharts/time).
|
|
3789
|
+
*
|
|
3790
|
+
* @param {Highcharts.LangOptions} [lang]
|
|
3791
|
+
* Language options. When `options.locale` is not set, `lang.locale` is used as
|
|
3792
|
+
* the locale fallback for locale-aware date formatting.
|
|
3748
3793
|
*/
|
|
3749
3794
|
class TimeBase {
|
|
3750
3795
|
/* *
|
|
@@ -3763,8 +3808,8 @@ class TimeBase {
|
|
|
3763
3808
|
};
|
|
3764
3809
|
this.variableTimezone = false;
|
|
3765
3810
|
this.Date = TimeBase_win.Date;
|
|
3766
|
-
this.update(options);
|
|
3767
3811
|
this.lang = lang;
|
|
3812
|
+
this.update(options);
|
|
3768
3813
|
}
|
|
3769
3814
|
/* *
|
|
3770
3815
|
*
|
|
@@ -3876,7 +3921,9 @@ class TimeBase {
|
|
|
3876
3921
|
/**
|
|
3877
3922
|
* Shorthand to get a cached `Intl.DateTimeFormat` instance.
|
|
3878
3923
|
*/
|
|
3879
|
-
dateTimeFormat(options, timestamp, locale = this.options.locale ||
|
|
3924
|
+
dateTimeFormat(options, timestamp, locale = (this.options.locale ||
|
|
3925
|
+
this.lang?.locale ||
|
|
3926
|
+
pageLang)) {
|
|
3880
3927
|
const cacheKey = JSON.stringify(options) + locale;
|
|
3881
3928
|
if (isString(options)) {
|
|
3882
3929
|
options = this.str2dtf(options);
|
|
@@ -3962,17 +4009,16 @@ class TimeBase {
|
|
|
3962
4009
|
// eslint-disable-next-line new-cap
|
|
3963
4010
|
let d = this.Date.UTC(year, month, date, hours, minutes || 0, seconds || 0, milliseconds || 0);
|
|
3964
4011
|
if (this.timezone !== 'UTC') {
|
|
3965
|
-
const offset = this.getTimezoneOffset(d);
|
|
4012
|
+
const offset = this.getTimezoneOffset(d), localHours = (hours - offset / timeUnits.hour + 24) % 24;
|
|
3966
4013
|
d += offset;
|
|
3967
|
-
// Adjustments close to DST transitions
|
|
3968
4014
|
if (
|
|
3969
|
-
//
|
|
3970
|
-
//
|
|
4015
|
+
// Limit the number of calls to `getTimezoneOffset` to months
|
|
4016
|
+
// where DST changes may occur. According to
|
|
3971
4017
|
// https://en.wikipedia.org/wiki/Daylight_saving_time_by_country,
|
|
3972
4018
|
// DST change may only occur in these months.
|
|
3973
4019
|
[2, 3, 8, 9, 10, 11].indexOf(month) !== -1 &&
|
|
3974
|
-
// DST
|
|
3975
|
-
(
|
|
4020
|
+
// DST changes only occur at night (#24420)
|
|
4021
|
+
(localHours < 5 || localHours > 20)) {
|
|
3976
4022
|
const newOffset = this.getTimezoneOffset(d);
|
|
3977
4023
|
if (offset !== newOffset) {
|
|
3978
4024
|
d += newOffset - offset;
|
|
@@ -6709,6 +6755,9 @@ const defaultOptions = {
|
|
|
6709
6755
|
* below the column, but as `followTouchMove` is true, the tooltip will
|
|
6710
6756
|
* jump from column to column as the user swipes across the plot area.
|
|
6711
6757
|
*
|
|
6758
|
+
* @sample {highcharts} highcharts/tooltip/followtouchmove/
|
|
6759
|
+
* Tooltip follows touch move
|
|
6760
|
+
*
|
|
6712
6761
|
* @type {boolean}
|
|
6713
6762
|
* @default {highcharts} true
|
|
6714
6763
|
* @default {highstock} true
|
|
@@ -7491,10 +7540,14 @@ const defaultOptions = {
|
|
|
7491
7540
|
* @type {Highcharts.CSSObject}
|
|
7492
7541
|
*/
|
|
7493
7542
|
style: {
|
|
7494
|
-
/**
|
|
7543
|
+
/**
|
|
7544
|
+
* @type {Highcharts.ColorType}
|
|
7545
|
+
*/
|
|
7495
7546
|
color: 'var(--highcharts-neutral-color-80)',
|
|
7496
7547
|
cursor: 'default',
|
|
7497
|
-
/**
|
|
7548
|
+
/**
|
|
7549
|
+
* @type {number|string}
|
|
7550
|
+
*/
|
|
7498
7551
|
fontSize: '0.8em'
|
|
7499
7552
|
},
|
|
7500
7553
|
/**
|
|
@@ -7810,6 +7863,41 @@ const DefaultOptions = {
|
|
|
7810
7863
|
* @param {global.Event} event
|
|
7811
7864
|
* The event that occurred.
|
|
7812
7865
|
*/
|
|
7866
|
+
/**
|
|
7867
|
+
* Gets fired while the chart is panned by mouse drag. Calling
|
|
7868
|
+
* `event.preventDefault()` or returning `false` prevents the default panning
|
|
7869
|
+
* of the axes.
|
|
7870
|
+
*
|
|
7871
|
+
* @callback Highcharts.ChartPanCallbackFunction
|
|
7872
|
+
*
|
|
7873
|
+
* @param {Highcharts.Chart} this
|
|
7874
|
+
* The chart on which the event occurred.
|
|
7875
|
+
*
|
|
7876
|
+
* @param {Highcharts.ChartPanEventObject} event
|
|
7877
|
+
* The event that occurred.
|
|
7878
|
+
*/
|
|
7879
|
+
/**
|
|
7880
|
+
* Contains common event information. Through the `originalEvent` property you
|
|
7881
|
+
* can access the pointer event that triggered the panning.
|
|
7882
|
+
*
|
|
7883
|
+
* @interface Highcharts.ChartPanEventObject
|
|
7884
|
+
*/ /**
|
|
7885
|
+
* The pointer event that triggered the panning.
|
|
7886
|
+
* @name Highcharts.ChartPanEventObject#originalEvent
|
|
7887
|
+
* @type {Highcharts.PointerEventObject}
|
|
7888
|
+
*/ /**
|
|
7889
|
+
* Prevents the default behavior of the event.
|
|
7890
|
+
* @name Highcharts.ChartPanEventObject#preventDefault
|
|
7891
|
+
* @type {Function}
|
|
7892
|
+
*/ /**
|
|
7893
|
+
* The event target.
|
|
7894
|
+
* @name Highcharts.ChartPanEventObject#target
|
|
7895
|
+
* @type {Highcharts.Chart}
|
|
7896
|
+
*/ /**
|
|
7897
|
+
* The event type.
|
|
7898
|
+
* @name Highcharts.ChartPanEventObject#type
|
|
7899
|
+
* @type {"pan"}
|
|
7900
|
+
*/
|
|
7813
7901
|
/**
|
|
7814
7902
|
* Fires when the chart is redrawn, either after a call to `chart.redraw()` or
|
|
7815
7903
|
* after an axis, series or point is modified with the `redraw` option set to
|
|
@@ -8185,7 +8273,9 @@ Color.None = new Color(''); // Must be last static for init
|
|
|
8185
8273
|
*/
|
|
8186
8274
|
/**
|
|
8187
8275
|
* A valid color type than can be parsed and handled by Highcharts. It can be a
|
|
8188
|
-
* color string, a gradient object, or a pattern
|
|
8276
|
+
* color string (including CSS expressions), a gradient object, or a pattern
|
|
8277
|
+
* object. Read more about colors in the [Highcharts
|
|
8278
|
+
* documentation](https://www.highcharts.com/docs/chart-design-and-style/colors).
|
|
8189
8279
|
*
|
|
8190
8280
|
* @typedef {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject} Highcharts.ColorType
|
|
8191
8281
|
*/
|
|
@@ -8417,24 +8507,22 @@ class Fx {
|
|
|
8417
8507
|
*/
|
|
8418
8508
|
update() {
|
|
8419
8509
|
const elem = this.elem, prop = this.prop, // If destroyed, it is null
|
|
8420
|
-
now = this.now, step = this.options.step;
|
|
8510
|
+
now = this.now ?? 1, step = this.options.step;
|
|
8421
8511
|
// Animation setter defined from outside
|
|
8422
8512
|
if (this[prop + 'Setter']) {
|
|
8423
8513
|
this[prop + 'Setter']();
|
|
8424
8514
|
// Other animations on SVGElement
|
|
8425
8515
|
}
|
|
8426
|
-
else if (elem.attr) {
|
|
8516
|
+
else if (elem && elem.attr) {
|
|
8427
8517
|
if (elem.element) {
|
|
8428
|
-
elem.attr(prop, now,
|
|
8518
|
+
elem.attr(prop, now, void 0, true);
|
|
8429
8519
|
}
|
|
8430
8520
|
// HTML styles, raw HTML content like container size
|
|
8431
8521
|
}
|
|
8432
|
-
else {
|
|
8433
|
-
elem.style[prop] = now + this.unit;
|
|
8434
|
-
}
|
|
8435
|
-
if (step) {
|
|
8436
|
-
step.call(elem, now, this);
|
|
8522
|
+
else if (elem) {
|
|
8523
|
+
elem.style[prop] = now + (this.unit || '');
|
|
8437
8524
|
}
|
|
8525
|
+
step?.call(elem, now, this);
|
|
8438
8526
|
}
|
|
8439
8527
|
/**
|
|
8440
8528
|
* Run an animation.
|
|
@@ -8452,12 +8540,10 @@ class Fx {
|
|
|
8452
8540
|
*
|
|
8453
8541
|
*/
|
|
8454
8542
|
run(from, to, unit) {
|
|
8455
|
-
const
|
|
8456
|
-
return timer.stopped ? false : self.step(gotoEnd);
|
|
8457
|
-
}, requestAnimationFrame = Fx_win.requestAnimationFrame ||
|
|
8543
|
+
const { elem, options } = this, { complete, curAnim = {} } = options, timer = (gotoEnd) => (timer.stopped ? false : this.step(gotoEnd)), requestAnimationFrame = Fx_win.requestAnimationFrame ||
|
|
8458
8544
|
function (step) {
|
|
8459
8545
|
setTimeout(step, 13);
|
|
8460
|
-
}, step =
|
|
8546
|
+
}, step = () => {
|
|
8461
8547
|
for (let i = 0; i < Fx.timers.length; i++) {
|
|
8462
8548
|
if (!Fx.timers[i]()) {
|
|
8463
8549
|
Fx.timers.splice(i--, 1);
|
|
@@ -8467,11 +8553,11 @@ class Fx {
|
|
|
8467
8553
|
requestAnimationFrame(step);
|
|
8468
8554
|
}
|
|
8469
8555
|
};
|
|
8470
|
-
if (from === to && !
|
|
8471
|
-
delete
|
|
8472
|
-
if (
|
|
8473
|
-
Object.keys(
|
|
8474
|
-
|
|
8556
|
+
if (from === to && !elem['forceAnimate:' + this.prop]) {
|
|
8557
|
+
delete curAnim[this.prop];
|
|
8558
|
+
if (complete &&
|
|
8559
|
+
Object.keys(curAnim).length === 0) {
|
|
8560
|
+
complete.call(elem);
|
|
8475
8561
|
}
|
|
8476
8562
|
}
|
|
8477
8563
|
else { // #7166
|
|
@@ -8481,7 +8567,7 @@ class Fx {
|
|
|
8481
8567
|
this.unit = unit;
|
|
8482
8568
|
this.now = this.start;
|
|
8483
8569
|
this.pos = 0;
|
|
8484
|
-
timer.elem =
|
|
8570
|
+
timer.elem = elem;
|
|
8485
8571
|
timer.prop = this.prop;
|
|
8486
8572
|
if (timer() && Fx.timers.push(timer) === 1) {
|
|
8487
8573
|
requestAnimationFrame(step);
|
|
@@ -8502,7 +8588,8 @@ class Fx {
|
|
|
8502
8588
|
step(gotoEnd) {
|
|
8503
8589
|
const t = +new Date(), options = this.options, elem = this.elem, complete = options.complete, duration = options.duration, curAnim = options.curAnim;
|
|
8504
8590
|
let ret, done;
|
|
8505
|
-
|
|
8591
|
+
// #2616, element is destroyed
|
|
8592
|
+
if (elem?.attr && !elem.element) {
|
|
8506
8593
|
ret = false;
|
|
8507
8594
|
}
|
|
8508
8595
|
else if (gotoEnd || t >= duration + this.startTime) {
|
|
@@ -8731,7 +8818,8 @@ Fx.timers = [];
|
|
|
8731
8818
|
* so it should be moved to the SVGRenderer.
|
|
8732
8819
|
*/
|
|
8733
8820
|
function setAnimation(animation, chart) {
|
|
8734
|
-
chart.renderer.globalAnimation =
|
|
8821
|
+
chart.renderer.globalAnimation =
|
|
8822
|
+
animation ?? chart.options.chart.animation ?? true;
|
|
8735
8823
|
}
|
|
8736
8824
|
/**
|
|
8737
8825
|
* Get the animation in object form, where a disabled animation is always
|
|
@@ -8792,6 +8880,11 @@ function getDeferredAnimation(chart, animation, series) {
|
|
|
8792
8880
|
/**
|
|
8793
8881
|
* The global animate method, which uses Fx to create individual animators.
|
|
8794
8882
|
*
|
|
8883
|
+
* @sample highcharts/members/renderer-basic
|
|
8884
|
+
* SVG elements with animation
|
|
8885
|
+
* @sample highcharts/members/animate
|
|
8886
|
+
* Animation without an owner element
|
|
8887
|
+
*
|
|
8795
8888
|
* @function Highcharts.animate
|
|
8796
8889
|
*
|
|
8797
8890
|
* @param {Highcharts.HTMLDOMElement|Highcharts.SVGElement} el
|
|
@@ -8807,14 +8900,12 @@ function getDeferredAnimation(chart, animation, series) {
|
|
|
8807
8900
|
*
|
|
8808
8901
|
* @return {void}
|
|
8809
8902
|
*/
|
|
8810
|
-
function animate(el, params, opt) {
|
|
8811
|
-
let start, unit = '', end, fx, args;
|
|
8903
|
+
function animate(el, params = { pos: 1 }, opt) {
|
|
8812
8904
|
if (!isObject(opt)) { // Number or undefined/null
|
|
8813
|
-
args = arguments;
|
|
8814
8905
|
opt = {
|
|
8815
|
-
duration:
|
|
8816
|
-
easing:
|
|
8817
|
-
complete:
|
|
8906
|
+
duration: arguments[2],
|
|
8907
|
+
easing: arguments[3],
|
|
8908
|
+
complete: arguments[4]
|
|
8818
8909
|
};
|
|
8819
8910
|
}
|
|
8820
8911
|
if (!isNumber(opt.duration)) {
|
|
@@ -8824,22 +8915,23 @@ function animate(el, params, opt) {
|
|
|
8824
8915
|
opt.easing :
|
|
8825
8916
|
(Math[opt.easing] || Math.easeInOutSine);
|
|
8826
8917
|
opt.curAnim = merge(params);
|
|
8827
|
-
objectEach(params,
|
|
8918
|
+
objectEach(params, (val, prop) => {
|
|
8828
8919
|
// Stop current running animation of this property
|
|
8829
|
-
|
|
8830
|
-
|
|
8831
|
-
|
|
8832
|
-
|
|
8833
|
-
|
|
8834
|
-
|
|
8835
|
-
|
|
8920
|
+
if (el) {
|
|
8921
|
+
stop(el, prop);
|
|
8922
|
+
}
|
|
8923
|
+
const fx = new Animation_Fx(el, opt, prop), d = params.d;
|
|
8924
|
+
let start = 0, end = void 0, unit = '';
|
|
8925
|
+
if (prop === 'd' && isArray(d)) {
|
|
8926
|
+
fx.paths = fx.initPath(el, el.pathArray, d);
|
|
8927
|
+
fx.toD = d;
|
|
8836
8928
|
end = 1;
|
|
8837
8929
|
}
|
|
8838
|
-
else if (el
|
|
8930
|
+
else if (el?.attr) {
|
|
8839
8931
|
start = el.attr(prop);
|
|
8840
8932
|
}
|
|
8841
|
-
else {
|
|
8842
|
-
start =
|
|
8933
|
+
else if (el) {
|
|
8934
|
+
start = +(getStyle(el, prop) || 0);
|
|
8843
8935
|
if (prop !== 'opacity') {
|
|
8844
8936
|
unit = 'px';
|
|
8845
8937
|
}
|
|
@@ -8850,7 +8942,10 @@ function animate(el, params, opt) {
|
|
|
8850
8942
|
if (typeof end === 'string' && end.match('px')) {
|
|
8851
8943
|
end = end.replace(/px/g, ''); // #4351
|
|
8852
8944
|
}
|
|
8853
|
-
|
|
8945
|
+
// Empty dashstyle animation crashes treemap on hover
|
|
8946
|
+
if (defined(end)) {
|
|
8947
|
+
fx.run(start, end, unit);
|
|
8948
|
+
}
|
|
8854
8949
|
});
|
|
8855
8950
|
}
|
|
8856
8951
|
/**
|
|
@@ -8874,28 +8969,11 @@ function animate(el, params, opt) {
|
|
|
8874
8969
|
* improvement in all cases where we stop the animation from .attr. Instead of
|
|
8875
8970
|
* stopping everything, we can just stop the actual attributes we're setting.
|
|
8876
8971
|
*/
|
|
8877
|
-
|
|
8878
|
-
|
|
8879
|
-
|
|
8880
|
-
while (i--) {
|
|
8881
|
-
if (Animation_Fx.timers[i].elem === el && (!prop || prop === Animation_Fx.timers[i].prop)) {
|
|
8882
|
-
Animation_Fx.timers[i].stopped = true; // #4667
|
|
8883
|
-
}
|
|
8972
|
+
const stop = (el, prop) => Animation_Fx.timers.forEach((timer) => {
|
|
8973
|
+
if (timer.elem === el && (!prop || prop === timer.prop)) {
|
|
8974
|
+
timer.stopped = true; // #4667
|
|
8884
8975
|
}
|
|
8885
|
-
}
|
|
8886
|
-
const animationExports = {
|
|
8887
|
-
animate,
|
|
8888
|
-
animObject,
|
|
8889
|
-
getDeferredAnimation,
|
|
8890
|
-
setAnimation,
|
|
8891
|
-
stop
|
|
8892
|
-
};
|
|
8893
|
-
/* *
|
|
8894
|
-
*
|
|
8895
|
-
* Default Export
|
|
8896
|
-
*
|
|
8897
|
-
* */
|
|
8898
|
-
/* harmony default export */ const AnimationUtilities = (animationExports);
|
|
8976
|
+
});
|
|
8899
8977
|
/* *
|
|
8900
8978
|
*
|
|
8901
8979
|
* API Options
|
|
@@ -9200,7 +9278,9 @@ class AST {
|
|
|
9200
9278
|
doc = { body };
|
|
9201
9279
|
}
|
|
9202
9280
|
const appendChildNodes = (node, addTo) => {
|
|
9203
|
-
|
|
9281
|
+
// Preserve the camelCase of SVG tags via localName (#24702).
|
|
9282
|
+
const tagName = node.localName ||
|
|
9283
|
+
node.nodeName.toLowerCase();
|
|
9204
9284
|
// Add allowed tags
|
|
9205
9285
|
const astNode = {
|
|
9206
9286
|
tagName
|
|
@@ -9314,6 +9394,8 @@ AST.allowedAttributes = [
|
|
|
9314
9394
|
'src',
|
|
9315
9395
|
'startOffset',
|
|
9316
9396
|
'stdDeviation',
|
|
9397
|
+
'stop-color',
|
|
9398
|
+
'stop-opacity',
|
|
9317
9399
|
'stroke-linecap',
|
|
9318
9400
|
'stroke-width',
|
|
9319
9401
|
'stroke',
|
|
@@ -9800,7 +9882,7 @@ function format(str = '', ctx, owner) {
|
|
|
9800
9882
|
replacement = `"${replacement}"`;
|
|
9801
9883
|
}
|
|
9802
9884
|
}
|
|
9803
|
-
str = str.replace(match.find,
|
|
9885
|
+
str = str.replace(match.find, (replacement ?? ''));
|
|
9804
9886
|
});
|
|
9805
9887
|
return hasSub ? format(str, ctx, owner) : str;
|
|
9806
9888
|
}
|
|
@@ -9917,9 +9999,7 @@ const Templating = {
|
|
|
9917
9999
|
* API Declarations
|
|
9918
10000
|
* */
|
|
9919
10001
|
/**
|
|
9920
|
-
*
|
|
9921
|
-
*
|
|
9922
|
-
* The Highcharts.Templating interface provides a structure for defining
|
|
10002
|
+
* The Highcharts.TemplatingObject interface provides a structure for defining
|
|
9923
10003
|
* helpers. Helpers can be used as conditional blocks or functions within
|
|
9924
10004
|
* expressions. Highcharts includes several built-in helpers and supports
|
|
9925
10005
|
* the addition of custom helpers.
|
|
@@ -9927,16 +10007,21 @@ const Templating = {
|
|
|
9927
10007
|
* @see [More information](
|
|
9928
10008
|
* https://www.highcharts.com/docs/chart-concepts/templating#helpers)
|
|
9929
10009
|
*
|
|
9930
|
-
* @
|
|
9931
|
-
|
|
9932
|
-
|
|
9933
|
-
|
|
9934
|
-
|
|
9935
|
-
|
|
9936
|
-
|
|
9937
|
-
|
|
9938
|
-
|
|
9939
|
-
|
|
10010
|
+
* @interface Highcharts.TemplatingObject
|
|
10011
|
+
*/ /**
|
|
10012
|
+
* @example
|
|
10013
|
+
* // Define a custom helper to return the absolute value of a number
|
|
10014
|
+
* Highcharts.Templating.helpers.abs = value => Math.abs(value);
|
|
10015
|
+
*
|
|
10016
|
+
* // Usage in a format string
|
|
10017
|
+
* format: 'Absolute value: {abs point.y}'
|
|
10018
|
+
*
|
|
10019
|
+
* @name Highcharts.TemplatingObject#helpers
|
|
10020
|
+
* @type {Record<string, Function>}
|
|
10021
|
+
*/ /**
|
|
10022
|
+
* @name Highcharts.Templating
|
|
10023
|
+
* @type {Highcharts.TemplatingObject}
|
|
10024
|
+
*/
|
|
9940
10025
|
(''); // Keeps doclets above in file
|
|
9941
10026
|
|
|
9942
10027
|
;// ./code/es-modules/Core/Renderer/RendererUtilities.js
|
|
@@ -10046,7 +10131,7 @@ var RendererUtilities;
|
|
|
10046
10131
|
boxes = boxes.map((box) => ({
|
|
10047
10132
|
size: box.size,
|
|
10048
10133
|
targets: [box.target],
|
|
10049
|
-
align:
|
|
10134
|
+
align: (box.align ?? 0.5)
|
|
10050
10135
|
}));
|
|
10051
10136
|
while (overlapping) {
|
|
10052
10137
|
// Initial positions: target centered in box
|
|
@@ -10145,7 +10230,6 @@ var RendererUtilities;
|
|
|
10145
10230
|
* */
|
|
10146
10231
|
|
|
10147
10232
|
|
|
10148
|
-
const { animate: SVGElement_animate, animObject: SVGElement_animObject, stop: SVGElement_stop } = AnimationUtilities;
|
|
10149
10233
|
|
|
10150
10234
|
|
|
10151
10235
|
const { deg2rad, doc: SVGElement_doc, svg, SVG_NS: SVGElement_SVG_NS, win: SVGElement_win, isFirefox } = Core_Globals;
|
|
@@ -10205,8 +10289,10 @@ class SVGElement {
|
|
|
10205
10289
|
* Property value.
|
|
10206
10290
|
*/
|
|
10207
10291
|
_defaultGetter(key) {
|
|
10208
|
-
let ret =
|
|
10209
|
-
|
|
10292
|
+
let ret = (this[key + 'Value'] ??
|
|
10293
|
+
this[key] ??
|
|
10294
|
+
(this.element ? this.element.getAttribute(key) : null) ??
|
|
10295
|
+
0);
|
|
10210
10296
|
if (/^-?[\d\.]+$/.test(ret)) { // Is numerical
|
|
10211
10297
|
ret = parseFloat(ret);
|
|
10212
10298
|
}
|
|
@@ -10369,7 +10455,7 @@ class SVGElement {
|
|
|
10369
10455
|
}
|
|
10370
10456
|
alignTo = void 0; // Do not use the box
|
|
10371
10457
|
}
|
|
10372
|
-
const alignToBox =
|
|
10458
|
+
const alignToBox = alignTo ?? renderer[alignToKey] ?? renderer,
|
|
10373
10459
|
// Default: left align
|
|
10374
10460
|
x = (alignToBox.x || 0) + (alignOptions.x || 0) +
|
|
10375
10461
|
((alignToBox.width || 0) - (alignOptions.width || 0)) *
|
|
@@ -10429,7 +10515,7 @@ class SVGElement {
|
|
|
10429
10515
|
* Returns the SVGElement for chaining.
|
|
10430
10516
|
*/
|
|
10431
10517
|
animate(params, options, complete) {
|
|
10432
|
-
const animOptions =
|
|
10518
|
+
const animOptions = animObject((options ?? this.renderer.globalAnimation ?? true)), deferTime = animOptions.defer;
|
|
10433
10519
|
// When the page is hidden save resources in the background by not
|
|
10434
10520
|
// running animation at all (#9749).
|
|
10435
10521
|
if (SVGElement_doc.hidden) {
|
|
@@ -10444,7 +10530,7 @@ class SVGElement {
|
|
|
10444
10530
|
// If defer option is defined delay the animation #12901
|
|
10445
10531
|
syncTimeout(() => {
|
|
10446
10532
|
if (this.element) {
|
|
10447
|
-
|
|
10533
|
+
animate(this, params, animOptions);
|
|
10448
10534
|
}
|
|
10449
10535
|
}, deferTime);
|
|
10450
10536
|
}
|
|
@@ -10618,7 +10704,7 @@ class SVGElement {
|
|
|
10618
10704
|
// Unless .attr is from the animator update, stop current
|
|
10619
10705
|
// running animation of this property
|
|
10620
10706
|
if (!continueAnimation) {
|
|
10621
|
-
|
|
10707
|
+
stop(this, key);
|
|
10622
10708
|
}
|
|
10623
10709
|
// Special handling of symbol attributes
|
|
10624
10710
|
if (this.symbolName &&
|
|
@@ -10921,7 +11007,7 @@ class SVGElement {
|
|
|
10921
11007
|
.split(','); // Ending comma
|
|
10922
11008
|
i = v.length;
|
|
10923
11009
|
while (i--) {
|
|
10924
|
-
v[i] = '' + (pInt(v[i]) *
|
|
11010
|
+
v[i] = '' + (pInt(v[i]) * (strokeWidth ?? NaN));
|
|
10925
11011
|
}
|
|
10926
11012
|
value = v.join(',').replace(/NaN/g, 'none'); // #3226
|
|
10927
11013
|
this.element.setAttribute('stroke-dasharray', value);
|
|
@@ -10938,7 +11024,7 @@ class SVGElement {
|
|
|
10938
11024
|
// Remove events
|
|
10939
11025
|
element.onclick = element.onmouseout = element.onmouseover =
|
|
10940
11026
|
element.onmousemove = element.point = null;
|
|
10941
|
-
|
|
11027
|
+
stop(wrapper); // Stop running animations
|
|
10942
11028
|
if (wrapper.clipPath && ownerSVGElement) {
|
|
10943
11029
|
const clipPath = wrapper.clipPath;
|
|
10944
11030
|
// Look for existing references to this clipPath and remove them
|
|
@@ -11061,7 +11147,7 @@ class SVGElement {
|
|
|
11061
11147
|
* The bounding box with `x`, `y`, `width` and `height` properties.
|
|
11062
11148
|
*/
|
|
11063
11149
|
getBBox(reload, rot) {
|
|
11064
|
-
const wrapper = this, { element, renderer, styles, textStr } = wrapper, { cache, cacheKeys } = renderer, isSVG = element.namespaceURI === wrapper.SVG_NS, rotation =
|
|
11150
|
+
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 &&
|
|
11065
11151
|
SVGElement.prototype.getStyle.call(element, 'font-size')) : (styles.fontSize), cacheKey = this.getBBoxCacheKey([
|
|
11066
11152
|
renderer.rootFontSize,
|
|
11067
11153
|
this.textWidth, // #7874, also useHTML
|
|
@@ -11587,7 +11673,7 @@ class SVGElement {
|
|
|
11587
11673
|
symbolAttr(hash) {
|
|
11588
11674
|
const wrapper = this;
|
|
11589
11675
|
SVGElement.symbolCustomAttribs.forEach(function (key) {
|
|
11590
|
-
wrapper[key] =
|
|
11676
|
+
wrapper[key] = (hash[key] ?? wrapper[key]);
|
|
11591
11677
|
});
|
|
11592
11678
|
wrapper.attr({
|
|
11593
11679
|
d: wrapper.renderer.symbols[wrapper.symbolName](wrapper.x, wrapper.y, wrapper.width, wrapper.height, wrapper)
|
|
@@ -11627,7 +11713,7 @@ class SVGElement {
|
|
|
11627
11713
|
}
|
|
11628
11714
|
// Replace text content and escape markup
|
|
11629
11715
|
titleNode.textContent = replaceNested(// Scan #[73]
|
|
11630
|
-
|
|
11716
|
+
(value ?? ''), // #3276, #3895
|
|
11631
11717
|
[/<[^>]*>/g, '']).replace(/</g, '<').replace(/>/g, '>');
|
|
11632
11718
|
}
|
|
11633
11719
|
/**
|
|
@@ -12405,7 +12491,7 @@ class SVGLabel extends SVG_SVGElement {
|
|
|
12405
12491
|
if ((this.textStr && this.bBox.width === 0 && this.bBox.height === 0) || this.rotation) {
|
|
12406
12492
|
this.updateBoxSize();
|
|
12407
12493
|
}
|
|
12408
|
-
const { padding, height = 0, translateX = 0, translateY = 0, width = 0 } = this, paddingLeft =
|
|
12494
|
+
const { padding, height = 0, translateX = 0, translateY = 0, width = 0 } = this, paddingLeft = (this.paddingLeft ?? padding), rotation = rot ?? (this.rotation || 0);
|
|
12409
12495
|
let bBox = {
|
|
12410
12496
|
width,
|
|
12411
12497
|
height,
|
|
@@ -12458,7 +12544,7 @@ class SVGLabel extends SVG_SVGElement {
|
|
|
12458
12544
|
this.attr({
|
|
12459
12545
|
// Alignment is available now (#3295, 0 not rendered if given
|
|
12460
12546
|
// as a value)
|
|
12461
|
-
text:
|
|
12547
|
+
text: (this.textStr ?? ''),
|
|
12462
12548
|
x: this.x || 0,
|
|
12463
12549
|
y: this.y || 0
|
|
12464
12550
|
});
|
|
@@ -12614,8 +12700,8 @@ class SVGLabel extends SVG_SVGElement {
|
|
|
12614
12700
|
/** @internal */
|
|
12615
12701
|
getPaddedWidth() {
|
|
12616
12702
|
const padding = this.padding;
|
|
12617
|
-
const paddingLeft =
|
|
12618
|
-
const paddingRight =
|
|
12703
|
+
const paddingLeft = (this.paddingLeft ?? padding);
|
|
12704
|
+
const paddingRight = (this.paddingRight ?? padding);
|
|
12619
12705
|
return ((this.widthSetting || this.bBox.width || 0) +
|
|
12620
12706
|
paddingLeft +
|
|
12621
12707
|
paddingRight);
|
|
@@ -12716,7 +12802,7 @@ function arc(cx, cy, w, h, options) {
|
|
|
12716
12802
|
const arc = [];
|
|
12717
12803
|
if (options) {
|
|
12718
12804
|
let start = options.start || 0, end = options.end || 0;
|
|
12719
|
-
const rx =
|
|
12805
|
+
const rx = (options.r ?? w), ry = (options.r ?? (h || w)),
|
|
12720
12806
|
// Subtract a small number to prevent cos and sin of start and end
|
|
12721
12807
|
// from becoming equal on 360 arcs (#1561). See "Arc proximity"
|
|
12722
12808
|
// tests at samples/unit-tests/svgrenderer/symbol/demo.js
|
|
@@ -12726,16 +12812,17 @@ function arc(cx, cy, w, h, options) {
|
|
|
12726
12812
|
start = Math.PI / 2;
|
|
12727
12813
|
end = Math.PI * 2.5 - proximity;
|
|
12728
12814
|
}
|
|
12729
|
-
const innerRadius = options.innerR, open =
|
|
12815
|
+
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),
|
|
12730
12816
|
// Proximity takes care of rounding errors around PI (#6971)
|
|
12731
|
-
longArc =
|
|
12817
|
+
longArc = options.longArc ??
|
|
12818
|
+
(end - start - Math.PI < proximity ? 0 : 1);
|
|
12732
12819
|
let arcSegment = [
|
|
12733
12820
|
'A', // ArcTo
|
|
12734
12821
|
rx, // X radius
|
|
12735
12822
|
ry, // Y radius
|
|
12736
12823
|
0, // Slanting
|
|
12737
12824
|
longArc, // Long or short arc
|
|
12738
|
-
|
|
12825
|
+
(options.clockwise ?? 1), // Clockwise
|
|
12739
12826
|
// Use a static pixel offset for full circle (#21701)
|
|
12740
12827
|
cx + (fullCircle ? 0.001 : rx * cosEnd),
|
|
12741
12828
|
cy + ry * sinEnd
|
|
@@ -13266,7 +13353,7 @@ class TextBuilder {
|
|
|
13266
13353
|
* @internal
|
|
13267
13354
|
*/
|
|
13268
13355
|
buildSVG() {
|
|
13269
|
-
const wrapper = this.svgElement, textNode = wrapper.element, renderer = wrapper.renderer, textStr =
|
|
13356
|
+
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,
|
|
13270
13357
|
// The buildText code is quite heavy, so if we're not changing
|
|
13271
13358
|
// something that affects the text, skip it (#6113).
|
|
13272
13359
|
textCache = [
|
|
@@ -13850,7 +13937,7 @@ class SVGRenderer {
|
|
|
13850
13937
|
this.url = this.getReferenceURL();
|
|
13851
13938
|
// Add description
|
|
13852
13939
|
const desc = this.createElement('desc').add();
|
|
13853
|
-
desc.element.appendChild(SVGRenderer_doc.createTextNode('Created with Highcharts 13.0.
|
|
13940
|
+
desc.element.appendChild(SVGRenderer_doc.createTextNode('Created with Highcharts 13.0.2'));
|
|
13854
13941
|
this.defs = this.createElement('defs').add();
|
|
13855
13942
|
this.allowHTML = allowHTML;
|
|
13856
13943
|
this.forExport = forExport;
|
|
@@ -14636,7 +14723,7 @@ class SVGRenderer {
|
|
|
14636
14723
|
this.attr('height')
|
|
14637
14724
|
});
|
|
14638
14725
|
},
|
|
14639
|
-
duration:
|
|
14726
|
+
duration: (animate ?? true) ? void 0 : 0
|
|
14640
14727
|
});
|
|
14641
14728
|
renderer.alignElements();
|
|
14642
14729
|
}
|
|
@@ -14794,8 +14881,8 @@ class SVGRenderer {
|
|
|
14794
14881
|
// The image width is not always the same as the symbol width. The
|
|
14795
14882
|
// image may be centered within the symbol, as is the case when
|
|
14796
14883
|
// image shapes are used as label backgrounds, for example in flags.
|
|
14797
|
-
img.imgwidth =
|
|
14798
|
-
img.imgheight =
|
|
14884
|
+
img.imgwidth = (options?.width ?? symbolSizes[imageSrc]?.width);
|
|
14885
|
+
img.imgheight = (options?.height ?? symbolSizes[imageSrc]?.height);
|
|
14799
14886
|
/**
|
|
14800
14887
|
* Set the size and position
|
|
14801
14888
|
*/
|
|
@@ -15641,7 +15728,11 @@ class HTMLElement extends SVG_SVGElement {
|
|
|
15641
15728
|
.attr({
|
|
15642
15729
|
text: str,
|
|
15643
15730
|
x: Math.round(x),
|
|
15644
|
-
y: Math.round(y)
|
|
15731
|
+
y: Math.round(y),
|
|
15732
|
+
// The namespace attribute is required for serialization
|
|
15733
|
+
// (export and side-by-side comparison), otherwise it
|
|
15734
|
+
// inherits the SVG namespace from foreignObject.
|
|
15735
|
+
xmlns: 'http://www.w3.org/1999/xhtml'
|
|
15645
15736
|
});
|
|
15646
15737
|
};
|
|
15647
15738
|
}
|
|
@@ -15821,8 +15912,10 @@ class HTMLElement extends SVG_SVGElement {
|
|
|
15821
15912
|
foreignObject.attr({
|
|
15822
15913
|
x: x + (this.xCorr || 0),
|
|
15823
15914
|
y: y + (this.yCorr || 0),
|
|
15824
|
-
// Add 4px to avoid ellipsis
|
|
15825
|
-
//
|
|
15915
|
+
// Add 4px to avoid ellipsis. In v13.0.0 we had a body inside
|
|
15916
|
+
// the foreignObject with a 3px right margin. This was later
|
|
15917
|
+
// removed, but we still need to add a few pixels to avoid
|
|
15918
|
+
// ellipsis.
|
|
15826
15919
|
width: element.offsetWidth + 4,
|
|
15827
15920
|
// Add 1px to account for subpixel bounding boxes
|
|
15828
15921
|
height: element.offsetHeight + 1,
|
|
@@ -15842,25 +15935,16 @@ class HTMLElement extends SVG_SVGElement {
|
|
|
15842
15935
|
this.cTT = currentTextTransform;
|
|
15843
15936
|
}
|
|
15844
15937
|
/**
|
|
15845
|
-
* Add the element to
|
|
15846
|
-
* will be created for each ancestor SVG `g` element.
|
|
15938
|
+
* Add the element to the foreign object
|
|
15847
15939
|
*
|
|
15848
15940
|
* @internal
|
|
15849
15941
|
*/
|
|
15850
15942
|
add(parentGroup) {
|
|
15851
|
-
const { foreignObject
|
|
15943
|
+
const { foreignObject } = this;
|
|
15852
15944
|
// Foreign object
|
|
15853
15945
|
foreignObject.add(parentGroup);
|
|
15854
|
-
|
|
15855
|
-
|
|
15856
|
-
renderer.createElement('body')
|
|
15857
|
-
.attr({ xmlns: 'http://www.w3.org/1999/xhtml' })
|
|
15858
|
-
.css({
|
|
15859
|
-
background: 'transparent',
|
|
15860
|
-
// 3px is to avoid clipping on the right
|
|
15861
|
-
margin: '0 3px 0 0'
|
|
15862
|
-
})
|
|
15863
|
-
.add(foreignObject));
|
|
15946
|
+
// Add this.element to the foreign objct
|
|
15947
|
+
super.add(foreignObject);
|
|
15864
15948
|
if (this.alignOnAdd) {
|
|
15865
15949
|
this.updateTransform();
|
|
15866
15950
|
}
|
|
@@ -15895,10 +15979,20 @@ class HTMLElement extends SVG_SVGElement {
|
|
|
15895
15979
|
this[key] = value;
|
|
15896
15980
|
this.doTransform = true;
|
|
15897
15981
|
}
|
|
15982
|
+
/**
|
|
15983
|
+
* Apply visibility/opacity to the foreignObject; the HTML element
|
|
15984
|
+
* ignores them.
|
|
15985
|
+
* @internal
|
|
15986
|
+
*/
|
|
15987
|
+
visibilitySetter(value, key) {
|
|
15988
|
+
this.foreignObject.attr({ [key]: value });
|
|
15989
|
+
this[key] = value;
|
|
15990
|
+
}
|
|
15898
15991
|
}
|
|
15899
15992
|
// Some shared setters
|
|
15900
15993
|
const proto = HTMLElement.prototype;
|
|
15901
15994
|
proto.ySetter = proto.xSetter;
|
|
15995
|
+
proto.opacitySetter = proto.visibilitySetter;
|
|
15902
15996
|
/* *
|
|
15903
15997
|
*
|
|
15904
15998
|
* Default Export
|
|
@@ -16439,6 +16533,7 @@ var AxisDefaults;
|
|
|
16439
16533
|
*/
|
|
16440
16534
|
dateTimeLabelFormats: {
|
|
16441
16535
|
/**
|
|
16536
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16442
16537
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16443
16538
|
*/
|
|
16444
16539
|
millisecond: {
|
|
@@ -16464,6 +16559,7 @@ var AxisDefaults;
|
|
|
16464
16559
|
range: false
|
|
16465
16560
|
},
|
|
16466
16561
|
/**
|
|
16562
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16467
16563
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16468
16564
|
*/
|
|
16469
16565
|
second: {
|
|
@@ -16489,6 +16585,7 @@ var AxisDefaults;
|
|
|
16489
16585
|
range: false
|
|
16490
16586
|
},
|
|
16491
16587
|
/**
|
|
16588
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16492
16589
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16493
16590
|
*/
|
|
16494
16591
|
minute: {
|
|
@@ -16514,6 +16611,7 @@ var AxisDefaults;
|
|
|
16514
16611
|
range: false
|
|
16515
16612
|
},
|
|
16516
16613
|
/**
|
|
16614
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16517
16615
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16518
16616
|
*/
|
|
16519
16617
|
hour: {
|
|
@@ -16546,6 +16644,7 @@ var AxisDefaults;
|
|
|
16546
16644
|
range: false
|
|
16547
16645
|
},
|
|
16548
16646
|
/**
|
|
16647
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16549
16648
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16550
16649
|
*/
|
|
16551
16650
|
day: {
|
|
@@ -16568,6 +16667,7 @@ var AxisDefaults;
|
|
|
16568
16667
|
boundary: '%[eb]'
|
|
16569
16668
|
},
|
|
16570
16669
|
/**
|
|
16670
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16571
16671
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16572
16672
|
*/
|
|
16573
16673
|
week: {
|
|
@@ -16583,6 +16683,7 @@ var AxisDefaults;
|
|
|
16583
16683
|
main: '%[eb]'
|
|
16584
16684
|
},
|
|
16585
16685
|
/**
|
|
16686
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16586
16687
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16587
16688
|
*/
|
|
16588
16689
|
month: {
|
|
@@ -16605,6 +16706,7 @@ var AxisDefaults;
|
|
|
16605
16706
|
boundary: void 0
|
|
16606
16707
|
},
|
|
16607
16708
|
/**
|
|
16709
|
+
* @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
|
|
16608
16710
|
* @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
|
|
16609
16711
|
*/
|
|
16610
16712
|
year: {
|
|
@@ -17420,7 +17522,7 @@ var AxisDefaults;
|
|
|
17420
17522
|
* @sample {highstock} stock/xaxis/offset/
|
|
17421
17523
|
* Y axis offset by 70 px
|
|
17422
17524
|
*
|
|
17423
|
-
* @type {number}
|
|
17525
|
+
* @type {number|string}
|
|
17424
17526
|
*/
|
|
17425
17527
|
offset: void 0,
|
|
17426
17528
|
/**
|
|
@@ -19070,7 +19172,9 @@ var AxisDefaults;
|
|
|
19070
19172
|
* @product highcharts
|
|
19071
19173
|
*/
|
|
19072
19174
|
style: {
|
|
19073
|
-
/**
|
|
19175
|
+
/**
|
|
19176
|
+
* @type {Highcharts.ColorType}
|
|
19177
|
+
*/
|
|
19074
19178
|
color: 'var(--highcharts-neutral-color-100)',
|
|
19075
19179
|
/**
|
|
19076
19180
|
* @type {number|string}
|
|
@@ -19257,11 +19361,11 @@ class Tick {
|
|
|
19257
19361
|
* @function Highcharts.Tick#addLabel
|
|
19258
19362
|
*/
|
|
19259
19363
|
addLabel() {
|
|
19260
|
-
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 =
|
|
19364
|
+
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;
|
|
19261
19365
|
let label = tick.label, dateTimeLabelFormat, dateTimeLabelFormats, i;
|
|
19262
19366
|
// The context value
|
|
19263
19367
|
let value = this.parameters.category || (categories ?
|
|
19264
|
-
|
|
19368
|
+
(categories[pos] ?? names[pos] ?? pos) :
|
|
19265
19369
|
pos);
|
|
19266
19370
|
if (log && isNumber(value)) {
|
|
19267
19371
|
value = correctFloat(log.lin2log(value));
|
|
@@ -19508,7 +19612,7 @@ class Tick {
|
|
|
19508
19612
|
labelOptions.y;
|
|
19509
19613
|
}
|
|
19510
19614
|
x = x +
|
|
19511
|
-
|
|
19615
|
+
(labelOptions.x ?? [0, 1, 0, -1][axis.side] * distance) +
|
|
19512
19616
|
labelOffsetCorrection +
|
|
19513
19617
|
rotCorr.x -
|
|
19514
19618
|
(tickmarkOffset && horiz ?
|
|
@@ -19563,7 +19667,7 @@ class Tick {
|
|
|
19563
19667
|
* @function Highcharts.Tick#handleOverflow
|
|
19564
19668
|
*/
|
|
19565
19669
|
handleOverflow(xy) {
|
|
19566
|
-
const tick = this, axis = this.axis, labelOptions = axis.options.labels, pxPos = xy.x, chartWidth = axis.chart.chartWidth, spacing = axis.chart.spacing, leftBound =
|
|
19670
|
+
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 = {};
|
|
19567
19671
|
let modifiedSlotWidth = slotWidth, goRight = 1, leftPos, rightPos, textWidth;
|
|
19568
19672
|
// Check if the label overshoots the chart spacing box. If it does, move
|
|
19569
19673
|
// it. If it now overshoots the slotWidth, add ellipsis.
|
|
@@ -19630,9 +19734,8 @@ class Tick {
|
|
|
19630
19734
|
* @param {number} [opacity]
|
|
19631
19735
|
*/
|
|
19632
19736
|
render(index, old, opacity) {
|
|
19633
|
-
const tick = this, axis = tick.axis, horiz = axis.horiz, pos = tick.pos, tickmarkOffset =
|
|
19634
|
-
const labelOpacity =
|
|
19635
|
-
1);
|
|
19737
|
+
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;
|
|
19738
|
+
const labelOpacity = (opacity ?? tick.label?.newOpacity ?? 1);
|
|
19636
19739
|
// Anything that is not between `axis.pos` and `axis.pos + axis.length`
|
|
19637
19740
|
// should not be visible (#20166). The `correctFloat` is for reversed
|
|
19638
19741
|
// axes in Safari.
|
|
@@ -19660,7 +19763,7 @@ class Tick {
|
|
|
19660
19763
|
* @param {number} opacity The opacity of the grid line
|
|
19661
19764
|
*/
|
|
19662
19765
|
renderGridLine(old, opacity) {
|
|
19663
|
-
const tick = this, axis = tick.axis, options = axis.options, attribs = {}, pos = tick.pos, type = tick.type, tickmarkOffset =
|
|
19766
|
+
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;
|
|
19664
19767
|
let gridLine = tick.gridLine, gridLinePath, gridLineWidth = options.gridLineWidth, gridLineColor = options.gridLineColor, dashStyle = options.gridLineDashStyle;
|
|
19665
19768
|
if (tick.type === 'minor') {
|
|
19666
19769
|
gridLineWidth = options.minorGridLineWidth;
|
|
@@ -19716,7 +19819,7 @@ class Tick {
|
|
|
19716
19819
|
* @param {number} opacity The opacity of the mark
|
|
19717
19820
|
*/
|
|
19718
19821
|
renderMark(xy, opacity) {
|
|
19719
|
-
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 =
|
|
19822
|
+
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
|
|
19720
19823
|
tickColor = options[type !== 'minor' ? 'tickColor' : 'minorTickColor'];
|
|
19721
19824
|
let mark = tick.mark;
|
|
19722
19825
|
const isNewMark = !mark;
|
|
@@ -19761,7 +19864,7 @@ class Tick {
|
|
|
19761
19864
|
* @param {number} index The index of the tick
|
|
19762
19865
|
*/
|
|
19763
19866
|
renderLabel(xy, old, opacity, index) {
|
|
19764
|
-
const tick = this, axis = tick.axis, horiz = axis.horiz, options = axis.options, label = tick.label, labelOptions = options.labels, step = labelOptions.step, tickmarkOffset =
|
|
19867
|
+
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;
|
|
19765
19868
|
let show = true;
|
|
19766
19869
|
if (label && isNumber(x)) {
|
|
19767
19870
|
label.xy = xy = tick.getLabelPosition(x, y, label, horiz, labelOptions, tickmarkOffset, index, step);
|
|
@@ -19853,7 +19956,6 @@ class Tick {
|
|
|
19853
19956
|
* */
|
|
19854
19957
|
|
|
19855
19958
|
|
|
19856
|
-
const { animObject: Axis_animObject } = AnimationUtilities;
|
|
19857
19959
|
|
|
19858
19960
|
const { xAxis, yAxis } = Axis_AxisDefaults;
|
|
19859
19961
|
|
|
@@ -19867,12 +19969,7 @@ const { deg2rad: Axis_deg2rad } = Core_Globals;
|
|
|
19867
19969
|
|
|
19868
19970
|
|
|
19869
19971
|
|
|
19870
|
-
const getNormalizedTickInterval = (axis, tickInterval) => normalizeTickInterval(tickInterval, void 0, void 0,
|
|
19871
|
-
// If the tick interval is greater than 0.5, avoid decimals, as
|
|
19872
|
-
// linear axes are often used to render discrete values (#3363). If
|
|
19873
|
-
// a tick amount is set, allow decimals by default, as it increases
|
|
19874
|
-
// the chances for a good fit.
|
|
19875
|
-
tickInterval < 0.5 || axis.tickAmount !== void 0), !!axis.tickAmount);
|
|
19972
|
+
const getNormalizedTickInterval = (axis, tickInterval) => normalizeTickInterval(tickInterval, void 0, void 0, (axis.options.allowDecimals ?? (tickInterval < 0.5 || axis.tickAmount !== void 0)), !!axis.tickAmount);
|
|
19876
19973
|
extend(Axis_defaultOptions, { xAxis, yAxis: merge(xAxis, yAxis) });
|
|
19877
19974
|
/* *
|
|
19878
19975
|
*
|
|
@@ -19980,7 +20077,7 @@ class Axis {
|
|
|
19980
20077
|
axis.coll = coll;
|
|
19981
20078
|
fireEvent(this, 'init', { userOptions: userOptions });
|
|
19982
20079
|
// Needed in setOptions
|
|
19983
|
-
axis.opposite =
|
|
20080
|
+
axis.opposite = (userOptions.opposite ?? axis.opposite);
|
|
19984
20081
|
/**
|
|
19985
20082
|
* The side on which the axis is rendered. 0 is top, 1 is right, 2
|
|
19986
20083
|
* is bottom and 3 is left.
|
|
@@ -19988,10 +20085,9 @@ class Axis {
|
|
|
19988
20085
|
* @name Highcharts.Axis#side
|
|
19989
20086
|
* @type {number}
|
|
19990
20087
|
*/
|
|
19991
|
-
axis.side =
|
|
20088
|
+
axis.side = (userOptions.side ?? axis.side ?? (horiz ?
|
|
19992
20089
|
(axis.opposite ? 0 : 2) : // Top : bottom
|
|
19993
|
-
(axis.opposite ? 1 : 3))
|
|
19994
|
-
);
|
|
20090
|
+
(axis.opposite ? 1 : 3)));
|
|
19995
20091
|
/**
|
|
19996
20092
|
* Current options for the axis after merge of defaults and user's
|
|
19997
20093
|
* options.
|
|
@@ -20020,7 +20116,7 @@ class Axis {
|
|
|
20020
20116
|
* @name Highcharts.Axis#reversed
|
|
20021
20117
|
* @type {boolean}
|
|
20022
20118
|
*/
|
|
20023
|
-
axis.reversed =
|
|
20119
|
+
axis.reversed = (options.reversed ?? axis.reversed);
|
|
20024
20120
|
axis.visible = options.visible;
|
|
20025
20121
|
axis.zoomEnabled = options.zoomEnabled;
|
|
20026
20122
|
// Initial categories
|
|
@@ -20108,7 +20204,7 @@ class Axis {
|
|
|
20108
20204
|
* @name Highcharts.Axis#crosshair
|
|
20109
20205
|
* @type {boolean|Highcharts.AxisCrosshairOptions}
|
|
20110
20206
|
*/
|
|
20111
|
-
const crosshair =
|
|
20207
|
+
const crosshair = options.crosshair ?? splat(chart.options.tooltip.crosshairs)[isXAxis ? 0 : 1];
|
|
20112
20208
|
axis.crosshair = crosshair === true ? {} : crosshair;
|
|
20113
20209
|
// Register. Don't add it again on Axis.update().
|
|
20114
20210
|
if (chart.axes.indexOf(axis) === -1) { //
|
|
@@ -20292,8 +20388,8 @@ class Axis {
|
|
|
20292
20388
|
seriesDataMax = xExtremes.max;
|
|
20293
20389
|
}
|
|
20294
20390
|
if (xData.length) {
|
|
20295
|
-
axis.dataMin = Math.min(
|
|
20296
|
-
axis.dataMax = Math.max(
|
|
20391
|
+
axis.dataMin = Math.min((axis.dataMin ?? seriesDataMin), seriesDataMin);
|
|
20392
|
+
axis.dataMax = Math.max((axis.dataMax ?? seriesDataMax), seriesDataMax);
|
|
20297
20393
|
}
|
|
20298
20394
|
}
|
|
20299
20395
|
// Get dataMin and dataMax for Y axes, as well as handle
|
|
@@ -20308,11 +20404,11 @@ class Axis {
|
|
|
20308
20404
|
// doesn't have active y data, we continue with nulls
|
|
20309
20405
|
if (isNumber(dataExtremes.dataMin)) {
|
|
20310
20406
|
seriesDataMin = dataExtremes.dataMin;
|
|
20311
|
-
axis.dataMin = Math.min(
|
|
20407
|
+
axis.dataMin = Math.min((axis.dataMin ?? seriesDataMin), seriesDataMin);
|
|
20312
20408
|
}
|
|
20313
20409
|
if (isNumber(dataExtremes.dataMax)) {
|
|
20314
20410
|
seriesDataMax = dataExtremes.dataMax;
|
|
20315
|
-
axis.dataMax = Math.max(
|
|
20411
|
+
axis.dataMax = Math.max((axis.dataMax ?? seriesDataMax), seriesDataMax);
|
|
20316
20412
|
}
|
|
20317
20413
|
// Adjust to threshold
|
|
20318
20414
|
if (defined(threshold)) {
|
|
@@ -20467,7 +20563,7 @@ class Axis {
|
|
|
20467
20563
|
translatedValue
|
|
20468
20564
|
};
|
|
20469
20565
|
fireEvent(this, 'getPlotLinePath', evt, function (e) {
|
|
20470
|
-
translatedValue =
|
|
20566
|
+
translatedValue = translatedValue ?? axis.translate(value, void 0, void 0, old);
|
|
20471
20567
|
// Keep the translated value within sane bounds, and avoid Infinity
|
|
20472
20568
|
// to fail the isNumber test (#7709).
|
|
20473
20569
|
translatedValue = clamp(translatedValue, -1e9, 1e9);
|
|
@@ -20556,7 +20652,7 @@ class Axis {
|
|
|
20556
20652
|
getMinorTickInterval() {
|
|
20557
20653
|
const { minorTicks, minorTickInterval } = this.options;
|
|
20558
20654
|
if (minorTicks === true) {
|
|
20559
|
-
return
|
|
20655
|
+
return (minorTickInterval ?? 'auto');
|
|
20560
20656
|
}
|
|
20561
20657
|
if (minorTicks === false) {
|
|
20562
20658
|
return;
|
|
@@ -20839,7 +20935,9 @@ class Axis {
|
|
|
20839
20935
|
const seriesPointRange = hasCategories ?
|
|
20840
20936
|
1 :
|
|
20841
20937
|
(isXAxis ?
|
|
20842
|
-
|
|
20938
|
+
(series.options.pointRange ??
|
|
20939
|
+
closestPointRange ??
|
|
20940
|
+
0) :
|
|
20843
20941
|
(axis.axisPointRange || 0)), // #2806
|
|
20844
20942
|
pointPlacement = series.options.pointPlacement;
|
|
20845
20943
|
pointRange = Math.max(pointRange, seriesPointRange);
|
|
@@ -20923,14 +21021,16 @@ class Axis {
|
|
|
20923
21021
|
this.getTickAmount();
|
|
20924
21022
|
}
|
|
20925
21023
|
// Min or max set either by zooming/setExtremes or initial options
|
|
20926
|
-
hardMin =
|
|
20927
|
-
hardMax =
|
|
21024
|
+
hardMin = (axis.userMin ?? time.parse(options.min));
|
|
21025
|
+
hardMax = (axis.userMax ?? time.parse(options.max));
|
|
20928
21026
|
// Linked axis gets the extremes from the parent axis
|
|
20929
21027
|
if (linkedParent) {
|
|
20930
21028
|
axis.linkedParent = linkedParent;
|
|
20931
21029
|
linkedParentExtremes = linkedParent.getExtremes();
|
|
20932
|
-
axis.min =
|
|
20933
|
-
|
|
21030
|
+
axis.min =
|
|
21031
|
+
linkedParentExtremes.min ?? linkedParentExtremes.dataMin;
|
|
21032
|
+
axis.max =
|
|
21033
|
+
linkedParentExtremes.max ?? linkedParentExtremes.dataMax;
|
|
20934
21034
|
if (this.type !== linkedParent.type) {
|
|
20935
21035
|
// Can't link axes of different type
|
|
20936
21036
|
error(11, true, chart);
|
|
@@ -20952,14 +21052,14 @@ class Axis {
|
|
|
20952
21052
|
maxPadding = 0;
|
|
20953
21053
|
}
|
|
20954
21054
|
}
|
|
20955
|
-
axis.min =
|
|
20956
|
-
axis.max =
|
|
21055
|
+
axis.min = (hardMin ?? thresholdMin ?? dataMin);
|
|
21056
|
+
axis.max = (hardMax ?? thresholdMax ?? dataMax);
|
|
20957
21057
|
}
|
|
20958
21058
|
if (isNumber(axis.max) && isNumber(axis.min)) {
|
|
20959
21059
|
if (logarithmic) {
|
|
20960
21060
|
if (axis.positiveValuesOnly &&
|
|
20961
21061
|
!secondPass &&
|
|
20962
|
-
Math.min(axis.min,
|
|
21062
|
+
Math.min(axis.min, (dataMin ?? axis.min)) <= 0) { // #978
|
|
20963
21063
|
// Can't plot negative values on log axis
|
|
20964
21064
|
error(10, true, chart);
|
|
20965
21065
|
}
|
|
@@ -21065,16 +21165,13 @@ class Axis {
|
|
|
21065
21165
|
axis.tickInterval = tickIntervalOption = linkedParent.tickInterval;
|
|
21066
21166
|
}
|
|
21067
21167
|
else {
|
|
21068
|
-
axis.tickInterval =
|
|
21168
|
+
axis.tickInterval = tickIntervalOption ?? (this.tickAmount ?
|
|
21069
21169
|
range / Math.max(this.tickAmount - 1, 1) :
|
|
21070
|
-
|
|
21071
|
-
|
|
21072
|
-
|
|
21073
|
-
|
|
21074
|
-
|
|
21075
|
-
// Don't let it be more than the data range
|
|
21076
|
-
range * tickPixelIntervalOption /
|
|
21077
|
-
Math.max(axis.len, tickPixelIntervalOption));
|
|
21170
|
+
categories ?
|
|
21171
|
+
1 :
|
|
21172
|
+
// Don't let it be more than the data range
|
|
21173
|
+
range * tickPixelIntervalOption /
|
|
21174
|
+
Math.max(axis.len, tickPixelIntervalOption));
|
|
21078
21175
|
}
|
|
21079
21176
|
// Now we're finished detecting min and max, crop and group series data.
|
|
21080
21177
|
// This is in turn needed in order to find tick positions in ordinal
|
|
@@ -21104,12 +21201,9 @@ class Axis {
|
|
|
21104
21201
|
}
|
|
21105
21202
|
// Before normalizing the tick interval, handle minimum tick interval.
|
|
21106
21203
|
// This applies only if tickInterval is not defined.
|
|
21107
|
-
const minTickInterval =
|
|
21108
|
-
|
|
21109
|
-
|
|
21110
|
-
dateTime &&
|
|
21111
|
-
!axis.series.some((s) => !s.sorted) ?
|
|
21112
|
-
axis.closestPointRange : 0);
|
|
21204
|
+
const minTickInterval = options.minTickInterval ?? (dateTime && !axis.series.some((s) => !s.sorted) ?
|
|
21205
|
+
axis.closestPointRange :
|
|
21206
|
+
0);
|
|
21113
21207
|
if (!tickIntervalOption &&
|
|
21114
21208
|
minTickInterval &&
|
|
21115
21209
|
axis.tickInterval < minTickInterval) {
|
|
@@ -21439,7 +21533,7 @@ class Axis {
|
|
|
21439
21533
|
* @function Highcharts.Axis#adjustTickAmount
|
|
21440
21534
|
*/
|
|
21441
21535
|
adjustTickAmount() {
|
|
21442
|
-
const axis = this, { finalTickAmt, max, min, options, tickPositions, tickAmount, thresholdAlignment } = axis, currentTickAmount = tickPositions?.length, threshold =
|
|
21536
|
+
const axis = this, { finalTickAmt, max, min, options, tickPositions, tickAmount, thresholdAlignment } = axis, currentTickAmount = tickPositions?.length, threshold = axis.threshold ?? (axis.softThreshold ? 0 : null);
|
|
21443
21537
|
let len, i, tickInterval = axis.tickInterval, thresholdTickIndex;
|
|
21444
21538
|
const
|
|
21445
21539
|
// Extend the tickPositions by appending a position
|
|
@@ -21675,7 +21769,8 @@ class Axis {
|
|
|
21675
21769
|
offsets = options.offsets || [0, 0, 0, 0], horiz = this.horiz,
|
|
21676
21770
|
// Check for percentage based input values. Rounding fixes problems
|
|
21677
21771
|
// with column overflow and plot line filtering (#4898, #4899)
|
|
21678
|
-
width = this.width = Math.round(relativeLength(
|
|
21772
|
+
width = this.width = Math.round(relativeLength((options.width ?? chart.plotWidth - offsets[3] + offsets[1]), chart.plotWidth)), height = this.height = Math.round(relativeLength((options.height ??
|
|
21773
|
+
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));
|
|
21679
21774
|
// Expose basic values to use in Series object and navigator
|
|
21680
21775
|
this.bottom = chart.chartHeight - height - top;
|
|
21681
21776
|
this.right = chart.chartWidth - width - left;
|
|
@@ -21786,9 +21881,7 @@ class Axis {
|
|
|
21786
21881
|
* An array of tickLength and tickWidth
|
|
21787
21882
|
*/
|
|
21788
21883
|
tickSize(prefix) {
|
|
21789
|
-
const options = this.options, tickWidth =
|
|
21790
|
-
// Default to 1 on linear and datetime X axes
|
|
21791
|
-
prefix === 'tick' && this.isXAxis && !this.categories ? 1 : 0);
|
|
21884
|
+
const options = this.options, tickWidth = options[prefix === 'tick' ? 'tickWidth' : 'minorTickWidth'] ?? (prefix === 'tick' && this.isXAxis && !this.categories ? 1 : 0);
|
|
21792
21885
|
let tickLength = options[prefix === 'tick' ? 'tickLength' : 'minorTickLength'], tickSize;
|
|
21793
21886
|
if (tickWidth && tickLength) {
|
|
21794
21887
|
// Negate the length
|
|
@@ -21875,7 +21968,7 @@ class Axis {
|
|
|
21875
21968
|
newTickInterval = getStep(lineHeight * 0.75);
|
|
21876
21969
|
}
|
|
21877
21970
|
this.autoRotation = autoRotation;
|
|
21878
|
-
this.labelRotation =
|
|
21971
|
+
this.labelRotation = rotation ?? (isNumber(rotationOption) ? rotationOption : 0);
|
|
21879
21972
|
return labelOptions.step ? tickInterval : newTickInterval;
|
|
21880
21973
|
}
|
|
21881
21974
|
/**
|
|
@@ -22227,7 +22320,7 @@ class Axis {
|
|
|
22227
22320
|
titleOffsetOption = axisTitleOptions.offset;
|
|
22228
22321
|
titleMargin = defined(titleOffsetOption) ?
|
|
22229
22322
|
0 :
|
|
22230
|
-
|
|
22323
|
+
axisTitleOptions.margin ?? (horiz ? 5 : 10);
|
|
22231
22324
|
}
|
|
22232
22325
|
}
|
|
22233
22326
|
// Render the axis line
|
|
@@ -22459,7 +22552,7 @@ class Axis {
|
|
|
22459
22552
|
* @emits Highcharts.Axis#event:afterRender
|
|
22460
22553
|
*/
|
|
22461
22554
|
render() {
|
|
22462
|
-
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 =
|
|
22555
|
+
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);
|
|
22463
22556
|
let from, to;
|
|
22464
22557
|
// Reset
|
|
22465
22558
|
axis.labelEdge.length = 0;
|
|
@@ -22738,9 +22831,9 @@ class Axis {
|
|
|
22738
22831
|
}
|
|
22739
22832
|
else if (defined(point)) {
|
|
22740
22833
|
// #3834
|
|
22741
|
-
pos =
|
|
22742
|
-
point.crosshairPos :
|
|
22743
|
-
null
|
|
22834
|
+
pos = (this.coll !== 'colorAxis' ?
|
|
22835
|
+
point.crosshairPos :
|
|
22836
|
+
null) ?? (this.isXAxis ?
|
|
22744
22837
|
point.plotX :
|
|
22745
22838
|
this.len - point.plotY);
|
|
22746
22839
|
}
|
|
@@ -22749,7 +22842,7 @@ class Axis {
|
|
|
22749
22842
|
// Value, only used on radial
|
|
22750
22843
|
value: point && (this.isXAxis ?
|
|
22751
22844
|
point.x :
|
|
22752
|
-
|
|
22845
|
+
(point.stackY ?? point.y ?? void 0)),
|
|
22753
22846
|
translatedValue: pos
|
|
22754
22847
|
};
|
|
22755
22848
|
if (chart.polar) {
|
|
@@ -22782,7 +22875,7 @@ class Axis {
|
|
|
22782
22875
|
(categorized ? 'category ' : 'thin ') +
|
|
22783
22876
|
(options.className || ''))
|
|
22784
22877
|
.attr({
|
|
22785
|
-
zIndex:
|
|
22878
|
+
zIndex: (options.zIndex ?? 2)
|
|
22786
22879
|
})
|
|
22787
22880
|
.clip(options.clip === false ?
|
|
22788
22881
|
void 0 :
|
|
@@ -22797,7 +22890,7 @@ class Axis {
|
|
|
22797
22890
|
// eslint-disable-next-line max-len
|
|
22798
22891
|
'var(--highcharts-highlight-color-20)').setOpacity(0.25).get() :
|
|
22799
22892
|
'var(--highcharts-neutral-color-20)'),
|
|
22800
|
-
'stroke-width':
|
|
22893
|
+
'stroke-width': (options.width ?? 1)
|
|
22801
22894
|
}).css({
|
|
22802
22895
|
'pointer-events': 'none'
|
|
22803
22896
|
});
|
|
@@ -22810,7 +22903,7 @@ class Axis {
|
|
|
22810
22903
|
}
|
|
22811
22904
|
cross
|
|
22812
22905
|
.show()
|
|
22813
|
-
.animate({ d: path },
|
|
22906
|
+
.animate({ d: path }, animObject(options?.animation));
|
|
22814
22907
|
if (categorized && !options.width) {
|
|
22815
22908
|
cross.attr({
|
|
22816
22909
|
'stroke-width': this.transA
|
|
@@ -22863,7 +22956,7 @@ class Axis {
|
|
|
22863
22956
|
this.destroy(true);
|
|
22864
22957
|
this.init(chart, options);
|
|
22865
22958
|
chart.isDirtyBox = true;
|
|
22866
|
-
if (
|
|
22959
|
+
if (redraw ?? true) {
|
|
22867
22960
|
chart.redraw();
|
|
22868
22961
|
}
|
|
22869
22962
|
}
|
|
@@ -22893,7 +22986,7 @@ class Axis {
|
|
|
22893
22986
|
chart.orderItems(coll);
|
|
22894
22987
|
this.destroy();
|
|
22895
22988
|
chart.isDirtyBox = true;
|
|
22896
|
-
if (
|
|
22989
|
+
if (redraw ?? true) {
|
|
22897
22990
|
chart.redraw();
|
|
22898
22991
|
}
|
|
22899
22992
|
}
|
|
@@ -23549,8 +23642,10 @@ var LogarithmicAxis;
|
|
|
23549
23642
|
tickIntervalOption, tickPixelIntervalOption = options.tickPixelInterval / (minor ? 5 : 1), totalPixelLength = minor ?
|
|
23550
23643
|
axisLength / axis.tickPositions.length :
|
|
23551
23644
|
axisLength;
|
|
23552
|
-
interval =
|
|
23553
|
-
|
|
23645
|
+
interval = filteredTickIntervalOption ??
|
|
23646
|
+
log.minorAutoInterval ??
|
|
23647
|
+
(realMax - realMin) * tickPixelIntervalOption /
|
|
23648
|
+
(totalPixelLength || 1);
|
|
23554
23649
|
interval = normalizeTickInterval(interval);
|
|
23555
23650
|
positions = axis.getLinearTickPositions(interval, realMin, realMax).map(log.log2lin);
|
|
23556
23651
|
if (!minor) {
|
|
@@ -23979,7 +24074,8 @@ class PlotLineOrBand {
|
|
|
23979
24074
|
if (!chart.styledMode) {
|
|
23980
24075
|
if (isLine) {
|
|
23981
24076
|
attribs.stroke = color || 'var(--highcharts-neutral-color-40)';
|
|
23982
|
-
attribs['stroke-width'] =
|
|
24077
|
+
attribs['stroke-width'] =
|
|
24078
|
+
options.width ?? 1;
|
|
23983
24079
|
if (options.dashStyle) {
|
|
23984
24080
|
attribs.dashstyle = options.dashStyle;
|
|
23985
24081
|
}
|
|
@@ -24848,7 +24944,6 @@ class PlotLineOrBand {
|
|
|
24848
24944
|
* */
|
|
24849
24945
|
|
|
24850
24946
|
|
|
24851
|
-
const { animObject: Tooltip_animObject } = AnimationUtilities;
|
|
24852
24947
|
|
|
24853
24948
|
const { format: Tooltip_format } = Core_Templating;
|
|
24854
24949
|
|
|
@@ -25112,7 +25207,8 @@ class Tooltip {
|
|
|
25112
25207
|
'highcharts-label',
|
|
25113
25208
|
isHeader && 'highcharts-tooltip-header',
|
|
25114
25209
|
isSplit ? 'highcharts-tooltip-box' : 'highcharts-tooltip',
|
|
25115
|
-
!isHeader &&
|
|
25210
|
+
!isHeader &&
|
|
25211
|
+
'highcharts-color-' + (point.colorIndex ?? series.colorIndex),
|
|
25116
25212
|
seriesOptions?.className
|
|
25117
25213
|
].filter(isString).join(' ');
|
|
25118
25214
|
}
|
|
@@ -25297,7 +25393,8 @@ class Tooltip {
|
|
|
25297
25393
|
}
|
|
25298
25394
|
// The far side is right or bottom
|
|
25299
25395
|
const preferFarSide = !this.followPointer &&
|
|
25300
|
-
|
|
25396
|
+
(point.ttBelow ??
|
|
25397
|
+
(polar ? false : !inverted === flipped)), // #4984
|
|
25301
25398
|
/*
|
|
25302
25399
|
* Handle the preferred dimension. When the preferred dimension is
|
|
25303
25400
|
* tooltip on top or bottom of the point, it will look for space
|
|
@@ -25424,7 +25521,7 @@ class Tooltip {
|
|
|
25424
25521
|
const tooltip = this;
|
|
25425
25522
|
// Disallow duplicate timers (#1728, #1766)
|
|
25426
25523
|
clearTimeouts(this);
|
|
25427
|
-
delay =
|
|
25524
|
+
delay = (delay ?? this.options.hideDelay);
|
|
25428
25525
|
if (!this.isHidden) {
|
|
25429
25526
|
this.hideTimer = syncTimeout(function () {
|
|
25430
25527
|
const label = tooltip.getLabel();
|
|
@@ -25527,7 +25624,9 @@ class Tooltip {
|
|
|
25527
25624
|
* Split tooltip does not support outside in the first iteration. Should
|
|
25528
25625
|
* not be too complicated to implement.
|
|
25529
25626
|
*/
|
|
25530
|
-
this.outside =
|
|
25627
|
+
this.outside =
|
|
25628
|
+
options.outside ??
|
|
25629
|
+
Boolean(chart.scrollablePixelsX || chart.scrollablePixelsY);
|
|
25531
25630
|
}
|
|
25532
25631
|
shouldStickOnContact(pointerEvent) {
|
|
25533
25632
|
return !!(!this.followPointer &&
|
|
@@ -25549,7 +25648,7 @@ class Tooltip {
|
|
|
25549
25648
|
* @param {number} anchorY
|
|
25550
25649
|
*/
|
|
25551
25650
|
move(x, y, anchorX, anchorY) {
|
|
25552
|
-
const { followPointer, options } = this, animation =
|
|
25651
|
+
const { followPointer, options } = this, animation = animObject(!followPointer &&
|
|
25553
25652
|
!this.isHidden &&
|
|
25554
25653
|
!options.fixed &&
|
|
25555
25654
|
options.animation), skipAnchor = followPointer || (this.len || 0) > 1, attr = { x, y };
|
|
@@ -25607,7 +25706,7 @@ class Tooltip {
|
|
|
25607
25706
|
point.points = void 0;
|
|
25608
25707
|
// Register the current series
|
|
25609
25708
|
const currentSeries = point.series;
|
|
25610
|
-
this.distance =
|
|
25709
|
+
this.distance = (currentSeries.tooltipOptions.distance ?? 16);
|
|
25611
25710
|
// Update the inner HTML
|
|
25612
25711
|
if (text === false) {
|
|
25613
25712
|
this.hide();
|
|
@@ -25880,7 +25979,7 @@ class Tooltip {
|
|
|
25880
25979
|
anchorY,
|
|
25881
25980
|
boxWidth,
|
|
25882
25981
|
point,
|
|
25883
|
-
rank:
|
|
25982
|
+
rank: boxPosition.rank ?? (isHeader ? 1 : 0),
|
|
25884
25983
|
size,
|
|
25885
25984
|
target: boxPosition.y,
|
|
25886
25985
|
tt,
|
|
@@ -26297,7 +26396,6 @@ class Tooltip {
|
|
|
26297
26396
|
|
|
26298
26397
|
|
|
26299
26398
|
|
|
26300
|
-
const { animObject: Point_animObject } = AnimationUtilities;
|
|
26301
26399
|
|
|
26302
26400
|
const { defaultOptions: Point_defaultOptions } = Defaults;
|
|
26303
26401
|
|
|
@@ -26637,10 +26735,15 @@ class Point {
|
|
|
26637
26735
|
*
|
|
26638
26736
|
* @internal
|
|
26639
26737
|
* @function Highcharts.Point#destroy
|
|
26738
|
+
*
|
|
26739
|
+
* @param {boolean} [sync]
|
|
26740
|
+
* Whether to destroy the point synchronously. Used internally from
|
|
26741
|
+
* series.destroy, where condemned points may cause animation errors
|
|
26742
|
+
* (#24976).
|
|
26640
26743
|
*/
|
|
26641
|
-
destroy() {
|
|
26642
|
-
if (!this.condemned) {
|
|
26643
|
-
const point = this, series = point.series, chart = series.chart, hoverPoints = chart.hoverPoints, globalAnimation = point.series.chart.renderer.globalAnimation, { duration } =
|
|
26744
|
+
destroy(sync) {
|
|
26745
|
+
if (!this.destroyed && !this.condemned) {
|
|
26746
|
+
const point = this, series = point.series, chart = series.chart, hoverPoints = chart.hoverPoints, globalAnimation = point.series.chart.renderer.globalAnimation, { duration } = animObject(globalAnimation);
|
|
26644
26747
|
/**
|
|
26645
26748
|
* Allow to call after animation.
|
|
26646
26749
|
* @internal
|
|
@@ -26657,6 +26760,7 @@ class Point {
|
|
|
26657
26760
|
for (const prop in point) { // eslint-disable-line guard-for-in
|
|
26658
26761
|
delete point[prop];
|
|
26659
26762
|
}
|
|
26763
|
+
this.destroyed = true;
|
|
26660
26764
|
};
|
|
26661
26765
|
if (point.legendItem) {
|
|
26662
26766
|
// Pies have legend items
|
|
@@ -26673,7 +26777,7 @@ class Point {
|
|
|
26673
26777
|
point.onMouseOut();
|
|
26674
26778
|
}
|
|
26675
26779
|
// Remove properties after animation
|
|
26676
|
-
if (duration && series.condemnedPoints) {
|
|
26780
|
+
if (duration && !sync && series.condemnedPoints) {
|
|
26677
26781
|
series.condemnedPoints.push(this);
|
|
26678
26782
|
this.graphic?.addClass('highcharts-point-condemned');
|
|
26679
26783
|
setTimeout(destroyPoint, duration);
|
|
@@ -26796,14 +26900,15 @@ class Point {
|
|
|
26796
26900
|
*
|
|
26797
26901
|
* @function Highcharts.Point#getZone
|
|
26798
26902
|
*
|
|
26799
|
-
* @return {Highcharts.SeriesZonesOptionsObject}
|
|
26800
|
-
* The zone item.
|
|
26903
|
+
* @return {Highcharts.SeriesZonesOptionsObject|undefined}
|
|
26904
|
+
* The zone item, or `undefined` if the series has no zones.
|
|
26801
26905
|
*/
|
|
26802
26906
|
getZone() {
|
|
26803
26907
|
const series = this.series, zones = series.zones, zoneAxis = series.zoneAxis || 'y';
|
|
26804
26908
|
let zone, i = 0;
|
|
26805
26909
|
zone = zones[i];
|
|
26806
|
-
while (
|
|
26910
|
+
while (i < zones.length &&
|
|
26911
|
+
this[zoneAxis] >= zone.value) {
|
|
26807
26912
|
zone = zones[++i];
|
|
26808
26913
|
}
|
|
26809
26914
|
// For resetting or reusing the point (#8100)
|
|
@@ -27219,7 +27324,7 @@ class Point {
|
|
|
27219
27324
|
*/
|
|
27220
27325
|
select(selected, accumulate) {
|
|
27221
27326
|
const point = this, series = point.series, chart = series.chart;
|
|
27222
|
-
selected =
|
|
27327
|
+
selected = (selected ?? !point.selected);
|
|
27223
27328
|
this.selectedStaging = selected;
|
|
27224
27329
|
// Fire the event with the default handler
|
|
27225
27330
|
point.firePointEvent(selected ? 'select' : 'unselect', { accumulate: accumulate }, function () {
|
|
@@ -27343,9 +27448,8 @@ class Point {
|
|
|
27343
27448
|
* @emits Highcharts.Point#event:afterSetState
|
|
27344
27449
|
*/
|
|
27345
27450
|
setState(state, move) {
|
|
27346
|
-
const point = this, series = point.series, previousState = point.state, stateOptions =
|
|
27347
|
-
|
|
27348
|
-
series.options.marker), normalDisabled = (markerOptions && markerOptions.enabled === false), markerStateOptions = markerOptions?.states?.[state || 'normal'] ||
|
|
27451
|
+
const point = this, series = point.series, previousState = point.state, stateOptions = series.options.states?.[state || 'normal'] || {}, markerOptions = (Point_defaultOptions.plotOptions?.[series.type]?.marker &&
|
|
27452
|
+
series.options.marker), normalDisabled = markerOptions?.enabled === false, markerStateOptions = markerOptions?.states?.[state || 'normal'] ||
|
|
27349
27453
|
{}, stateDisabled = markerStateOptions.enabled === false, pointMarker = point.marker || {}, chart = series.chart, hasMarkers = (markerOptions && series.markerAttribs);
|
|
27350
27454
|
let halo = series.halo, markerAttribs, pointAttribs, pointAttribsAnimation, stateMarkerGraphic = series.stateMarkerGraphic, newSymbol;
|
|
27351
27455
|
state = state || ''; // Empty string
|
|
@@ -27358,13 +27462,10 @@ class Point {
|
|
|
27358
27462
|
(stateOptions.enabled === false) ||
|
|
27359
27463
|
// General point marker's state options is disabled
|
|
27360
27464
|
(state && (stateDisabled ||
|
|
27361
|
-
(normalDisabled &&
|
|
27362
|
-
markerStateOptions.enabled === false))) ||
|
|
27465
|
+
(normalDisabled && markerStateOptions.enabled === false))) ||
|
|
27363
27466
|
// Individual point marker's state options is disabled
|
|
27364
27467
|
(state &&
|
|
27365
|
-
pointMarker.states
|
|
27366
|
-
pointMarker.states[state] &&
|
|
27367
|
-
pointMarker.states[state].enabled === false) // #1610
|
|
27468
|
+
pointMarker.states?.[state]?.enabled === false) // #1610
|
|
27368
27469
|
) {
|
|
27369
27470
|
return;
|
|
27370
27471
|
}
|
|
@@ -27383,7 +27484,8 @@ class Point {
|
|
|
27383
27484
|
}
|
|
27384
27485
|
if (!chart.styledMode) {
|
|
27385
27486
|
pointAttribs = series.pointAttribs(point, state);
|
|
27386
|
-
pointAttribsAnimation =
|
|
27487
|
+
pointAttribsAnimation = (chart.options.chart.animation ??
|
|
27488
|
+
stateOptions.animation);
|
|
27387
27489
|
const opacity = pointAttribs.opacity;
|
|
27388
27490
|
// Some inactive points (e.g. slices in pie) should apply
|
|
27389
27491
|
// opacity also for their labels
|
|
@@ -27401,9 +27503,11 @@ class Point {
|
|
|
27401
27503
|
point.graphic.animate(pointAttribs, pointAttribsAnimation);
|
|
27402
27504
|
}
|
|
27403
27505
|
if (markerAttribs) {
|
|
27404
|
-
point.graphic.animate(markerAttribs,
|
|
27506
|
+
point.graphic.animate(markerAttribs, (
|
|
27405
27507
|
// Turn off globally:
|
|
27406
|
-
chart.options.chart.animation
|
|
27508
|
+
chart.options.chart.animation ??
|
|
27509
|
+
markerStateOptions.animation ??
|
|
27510
|
+
markerOptions.animation));
|
|
27407
27511
|
}
|
|
27408
27512
|
// Zooming in from a range with no markers to a range with markers
|
|
27409
27513
|
if (stateMarkerGraphic) {
|
|
@@ -27452,10 +27556,12 @@ class Point {
|
|
|
27452
27556
|
}
|
|
27453
27557
|
}
|
|
27454
27558
|
// Show me your halo
|
|
27455
|
-
const haloOptions = stateOptions.halo
|
|
27559
|
+
const haloOptions = isObject(stateOptions.halo) ?
|
|
27560
|
+
stateOptions.halo :
|
|
27561
|
+
{};
|
|
27456
27562
|
const markerGraphic = (point.graphic || stateMarkerGraphic);
|
|
27457
27563
|
const markerVisibility = markerGraphic?.visibility || 'inherit';
|
|
27458
|
-
if (haloOptions
|
|
27564
|
+
if (haloOptions.size &&
|
|
27459
27565
|
markerGraphic &&
|
|
27460
27566
|
markerVisibility !== 'hidden' &&
|
|
27461
27567
|
!point.isCluster) {
|
|
@@ -27469,7 +27575,7 @@ class Point {
|
|
|
27469
27575
|
});
|
|
27470
27576
|
halo.attr({
|
|
27471
27577
|
'class': 'highcharts-halo highcharts-color-' +
|
|
27472
|
-
|
|
27578
|
+
(point.colorIndex ?? series.colorIndex) +
|
|
27473
27579
|
(point.className ? ' ' + point.className : ''),
|
|
27474
27580
|
'visibility': markerVisibility,
|
|
27475
27581
|
'zIndex': -1 // #4929, #8276
|
|
@@ -27985,6 +28091,11 @@ class Pointer {
|
|
|
27985
28091
|
}
|
|
27986
28092
|
}
|
|
27987
28093
|
}
|
|
28094
|
+
// Run a final transform with a drop trigger to display the reset
|
|
28095
|
+
// zoom button after a pinch gesture (#22128)
|
|
28096
|
+
if (e?.type === 'touchend' && this.hasDragged) {
|
|
28097
|
+
chart.transform({ trigger: 'drop' });
|
|
28098
|
+
}
|
|
27988
28099
|
if (redraw) {
|
|
27989
28100
|
chart.redraw();
|
|
27990
28101
|
}
|
|
@@ -28197,7 +28308,7 @@ class Pointer {
|
|
|
28197
28308
|
const hoverPoints = [], useExisting = !!(isDirectTouch && existingHoverPoint), filter = function (s) {
|
|
28198
28309
|
return (s.visible &&
|
|
28199
28310
|
!(!shared && s.directTouch) && // #3821
|
|
28200
|
-
|
|
28311
|
+
(s.options.enableMouseTracking ?? true));
|
|
28201
28312
|
};
|
|
28202
28313
|
let hoverSeries = existingHoverSeries,
|
|
28203
28314
|
// Which series to look in for the hover point
|
|
@@ -28383,8 +28494,8 @@ class Pointer {
|
|
|
28383
28494
|
const ePos = (touches ?
|
|
28384
28495
|
touches.length ?
|
|
28385
28496
|
touches.item(0) :
|
|
28386
|
-
(
|
|
28387
|
-
|
|
28497
|
+
(touches.changedTouches ??
|
|
28498
|
+
e.changedTouches)[0] :
|
|
28388
28499
|
e);
|
|
28389
28500
|
// Get mouse position
|
|
28390
28501
|
if (!chartPosition) {
|
|
@@ -28458,7 +28569,7 @@ class Pointer {
|
|
|
28458
28569
|
* @function Highcharts.Pointer#onContainerMouseLeave
|
|
28459
28570
|
*/
|
|
28460
28571
|
onContainerMouseLeave(e) {
|
|
28461
|
-
const { pointer } = Pointer_charts[
|
|
28572
|
+
const { pointer } = Pointer_charts[(Pointer.hoverChartIndex ?? -1)] || {};
|
|
28462
28573
|
e = this.normalize(e);
|
|
28463
28574
|
this.onContainerMouseMove(e);
|
|
28464
28575
|
// #4886, MS Touch end fires mouseleave but with no related target
|
|
@@ -28558,7 +28669,7 @@ class Pointer {
|
|
|
28558
28669
|
if (e?.touches && this.hasPinchMoved) {
|
|
28559
28670
|
e?.preventDefault?.();
|
|
28560
28671
|
}
|
|
28561
|
-
Pointer_charts[
|
|
28672
|
+
Pointer_charts[(Pointer.hoverChartIndex ?? -1)]
|
|
28562
28673
|
?.pointer
|
|
28563
28674
|
?.drop(e);
|
|
28564
28675
|
}
|
|
@@ -28628,6 +28739,9 @@ class Pointer {
|
|
|
28628
28739
|
from: boxFromTouches(lastTouches),
|
|
28629
28740
|
trigger: e.type
|
|
28630
28741
|
});
|
|
28742
|
+
// Record a truthy value in order to trigger the final transform
|
|
28743
|
+
// in the drop function
|
|
28744
|
+
pointer.hasDragged = 1;
|
|
28631
28745
|
});
|
|
28632
28746
|
if (pointer.res) {
|
|
28633
28747
|
pointer.res = false;
|
|
@@ -29062,7 +29176,7 @@ class Pointer {
|
|
|
29062
29176
|
*/
|
|
29063
29177
|
setHoverChartIndex(e) {
|
|
29064
29178
|
const chart = this.chart;
|
|
29065
|
-
const hoverChart = Core_Globals.charts[
|
|
29179
|
+
const hoverChart = Core_Globals.charts[(Pointer.hoverChartIndex ?? -1)];
|
|
29066
29180
|
if (hoverChart &&
|
|
29067
29181
|
hoverChart !== chart) {
|
|
29068
29182
|
const relatedTargetObj = { relatedTarget: chart.container };
|
|
@@ -29108,7 +29222,7 @@ class Pointer {
|
|
|
29108
29222
|
Math.pow(pinchDown[0].chartY - e.chartY, 2)) >= 16 :
|
|
29109
29223
|
false;
|
|
29110
29224
|
}
|
|
29111
|
-
if (
|
|
29225
|
+
if (hasMoved ?? true) {
|
|
29112
29226
|
this.pinch(e);
|
|
29113
29227
|
}
|
|
29114
29228
|
}
|
|
@@ -29119,7 +29233,9 @@ class Pointer {
|
|
|
29119
29233
|
// If inside, capture touch-drag and display tooltip. If not inside,
|
|
29120
29234
|
// allow dragging the finger to scroll the page
|
|
29121
29235
|
if ((chart.tooltip?.options.followTouchMove ?? true) &&
|
|
29122
|
-
isInside
|
|
29236
|
+
isInside &&
|
|
29237
|
+
e.type === 'touchmove' &&
|
|
29238
|
+
!(chart.scrollablePixelsX || chart.scrollablePixelsY)) {
|
|
29123
29239
|
e.preventDefault();
|
|
29124
29240
|
}
|
|
29125
29241
|
}
|
|
@@ -29149,7 +29265,7 @@ class Pointer {
|
|
|
29149
29265
|
let zoomType = chart.zooming.type || '', zoomX, zoomY;
|
|
29150
29266
|
// Look for the pinchType option
|
|
29151
29267
|
if (/touch/.test(e.type)) {
|
|
29152
|
-
zoomType =
|
|
29268
|
+
zoomType = (chart.zooming.pinchType ?? zoomType);
|
|
29153
29269
|
}
|
|
29154
29270
|
this.zoomX = zoomX = /x/.test(zoomType);
|
|
29155
29271
|
this.zoomY = zoomY = /y/.test(zoomType);
|
|
@@ -29591,7 +29707,7 @@ class DataTableCore {
|
|
|
29591
29707
|
* Fetches the given column by the canonical column ID. Simplified version
|
|
29592
29708
|
* of the full `DataTable.getRow` method, always returning by reference.
|
|
29593
29709
|
*
|
|
29594
|
-
* @function Highcharts.DataTable#
|
|
29710
|
+
* @function Highcharts.DataTable#getColumn
|
|
29595
29711
|
*
|
|
29596
29712
|
* @param {string} columnId
|
|
29597
29713
|
* ID of the column to get.
|
|
@@ -29923,7 +30039,7 @@ var LegendSymbol;
|
|
|
29923
30039
|
// Draw the marker
|
|
29924
30040
|
if (markerOptions && markerOptions.enabled !== false && symbolWidth) {
|
|
29925
30041
|
// Do not allow the marker to be larger than the symbolHeight
|
|
29926
|
-
let radius = Math.min(
|
|
30042
|
+
let radius = Math.min((markerOptions.radius ?? generalRadius), generalRadius);
|
|
29927
30043
|
// Restrict symbol markers size
|
|
29928
30044
|
if (symbol.indexOf('url') === 0) {
|
|
29929
30045
|
markerOptions = merge(markerOptions, {
|
|
@@ -30327,6 +30443,10 @@ const seriesDefaults = {
|
|
|
30327
30443
|
* ```
|
|
30328
30444
|
*
|
|
30329
30445
|
* @type {Highcharts.DataMappingOptionsObject}
|
|
30446
|
+
* @sample highcharts/datatable/datamapping
|
|
30447
|
+
* Basic data mapping
|
|
30448
|
+
* @sample highcharts/datatable/datamapping-dynamic
|
|
30449
|
+
* Data mapping with dynamic updates
|
|
30330
30450
|
* @sample {highcharts} highcharts/datatable/series-datatable-multiple
|
|
30331
30451
|
* Series with two data tables
|
|
30332
30452
|
* @sample {highcharts} highcharts/datatable/nested-keys
|
|
@@ -30337,6 +30457,29 @@ const seriesDefaults = {
|
|
|
30337
30457
|
* @since 13.0.0
|
|
30338
30458
|
* @apioption plotOptions.series.dataMapping
|
|
30339
30459
|
*/
|
|
30460
|
+
/**
|
|
30461
|
+
* Options for a specific series-level data table or an array of data
|
|
30462
|
+
* tables. The `dataTable` option can be either a configuration object or an
|
|
30463
|
+
* instance of the `DataTable` class. If a `DataTable` instance is passed,
|
|
30464
|
+
* it will be used directly. If a configuration object or an array is
|
|
30465
|
+
* passed, a new `DataTable` instance will be created based on the provided
|
|
30466
|
+
* configuration.
|
|
30467
|
+
*
|
|
30468
|
+
* @type {Highcharts.DataTable|Highcharts.DataTableOptionsObject|Array<Highcharts.DataTable|Highcharts.DataTableOptionsObject>}
|
|
30469
|
+
* @sample {highcharts} highcharts/datatable/series-datatable/
|
|
30470
|
+
* Series with one data table each
|
|
30471
|
+
* @sample {highcharts} highcharts/datatable/series-datatable-multiple/
|
|
30472
|
+
* Series with two data tables
|
|
30473
|
+
* @sample {highstock} stock/datatable/series-datatable/
|
|
30474
|
+
* Series with one data table each
|
|
30475
|
+
* @sample {highstock} stock/datatable/series-datatable-multiple/
|
|
30476
|
+
* Series with two data tables
|
|
30477
|
+
* @sample {highmaps} maps/datatable/series-datatable
|
|
30478
|
+
* Series-level data table
|
|
30479
|
+
*
|
|
30480
|
+
* @since 13.0.0
|
|
30481
|
+
* @apioption plotOptions.series.dataTable
|
|
30482
|
+
*/
|
|
30340
30483
|
/**
|
|
30341
30484
|
* Enable or disable the mouse tracking for a specific series. This
|
|
30342
30485
|
* includes point tooltips and click events on graphs and points. For
|
|
@@ -31220,6 +31363,7 @@ const seriesDefaults = {
|
|
|
31220
31363
|
* `series.allowPointSelect` option to true.
|
|
31221
31364
|
*
|
|
31222
31365
|
* @declare Highcharts.PointStatesSelectOptionsObject
|
|
31366
|
+
* @extends plotOptions.series.marker.states.hover
|
|
31223
31367
|
*/
|
|
31224
31368
|
select: {
|
|
31225
31369
|
/**
|
|
@@ -31796,6 +31940,7 @@ const seriesDefaults = {
|
|
|
31796
31940
|
* @sample {highmaps} maps/plotoptions/series-datalabels-box/
|
|
31797
31941
|
* Data labels box options
|
|
31798
31942
|
*
|
|
31943
|
+
* @type {number|Array<number>}
|
|
31799
31944
|
* @since 2.2.1
|
|
31800
31945
|
*/
|
|
31801
31946
|
padding: [1, 3],
|
|
@@ -31997,6 +32142,9 @@ const seriesDefaults = {
|
|
|
31997
32142
|
/**
|
|
31998
32143
|
* A collection of options for different series states.
|
|
31999
32144
|
*
|
|
32145
|
+
* In addition to the options documented under each state, any option from
|
|
32146
|
+
* the parent series type can be set, with exception of `data` and `states`.
|
|
32147
|
+
*
|
|
32000
32148
|
* @declare Highcharts.SeriesStatesOptionsObject
|
|
32001
32149
|
*/
|
|
32002
32150
|
states: {
|
|
@@ -32170,6 +32318,7 @@ const seriesDefaults = {
|
|
|
32170
32318
|
* Disabled inactive state
|
|
32171
32319
|
*
|
|
32172
32320
|
* @declare Highcharts.SeriesStatesInactiveOptionsObject
|
|
32321
|
+
* @extends plotOptions.series.states.hover
|
|
32173
32322
|
*/
|
|
32174
32323
|
inactive: {
|
|
32175
32324
|
/**
|
|
@@ -32570,7 +32719,6 @@ var SeriesRegistry;
|
|
|
32570
32719
|
* */
|
|
32571
32720
|
|
|
32572
32721
|
|
|
32573
|
-
const { animObject: Series_animObject, setAnimation: Series_setAnimation } = AnimationUtilities;
|
|
32574
32722
|
|
|
32575
32723
|
|
|
32576
32724
|
const { defaultOptions: Series_defaultOptions } = Defaults;
|
|
@@ -32708,6 +32856,13 @@ class Series {
|
|
|
32708
32856
|
* @type {number|undefined}
|
|
32709
32857
|
* @readonly
|
|
32710
32858
|
*/
|
|
32859
|
+
/**
|
|
32860
|
+
* The main group for the series' graphics.
|
|
32861
|
+
*
|
|
32862
|
+
* @name Highcharts.Series#group
|
|
32863
|
+
* @type {Highcharts.SVGElement}
|
|
32864
|
+
* @readonly
|
|
32865
|
+
*/
|
|
32711
32866
|
/**
|
|
32712
32867
|
* Contains the series' index in the `Chart.series` array.
|
|
32713
32868
|
*
|
|
@@ -32840,10 +32995,12 @@ class Series {
|
|
|
32840
32995
|
*/
|
|
32841
32996
|
series.options = series.setOptions(userOptions);
|
|
32842
32997
|
const options = series.options, visible = options.visible !== false;
|
|
32843
|
-
// Create the data table
|
|
32844
|
-
this.dataTable ?? (this.dataTable = options.dataTable
|
|
32845
|
-
|
|
32846
|
-
|
|
32998
|
+
// Create the data table or use the one passed as option
|
|
32999
|
+
this.dataTable ?? (this.dataTable = isArray(options.dataTable) ?
|
|
33000
|
+
new Data_DataTableCore() :
|
|
33001
|
+
options.dataTable?.isDataTable ?
|
|
33002
|
+
options.dataTable :
|
|
33003
|
+
new Data_DataTableCore(options.dataTable));
|
|
32847
33004
|
/**
|
|
32848
33005
|
* All child series that are linked to the current series through the
|
|
32849
33006
|
* [linkedTo](https://api.highcharts.com/highcharts/series.line.linkedTo)
|
|
@@ -32903,7 +33060,7 @@ class Series {
|
|
|
32903
33060
|
if (chartSeries.length) {
|
|
32904
33061
|
lastSeries = chartSeries[chartSeries.length - 1];
|
|
32905
33062
|
}
|
|
32906
|
-
series._i =
|
|
33063
|
+
series._i = (lastSeries?._i ?? -1) + 1;
|
|
32907
33064
|
series.opacity = series.options.opacity;
|
|
32908
33065
|
// Insert the series and re-order all series above the insertion
|
|
32909
33066
|
// point.
|
|
@@ -32950,7 +33107,7 @@ class Series {
|
|
|
32950
33107
|
// Apply if the series xAxis or yAxis option matches
|
|
32951
33108
|
// the number of the axis, or if undefined, use the
|
|
32952
33109
|
// first axis
|
|
32953
|
-
if (
|
|
33110
|
+
if ((seriesOptions[coll] ?? 0) === axis.index ||
|
|
32954
33111
|
(typeof seriesOptions[coll] !==
|
|
32955
33112
|
'undefined' &&
|
|
32956
33113
|
seriesOptions[coll] === axisOptions.id)) {
|
|
@@ -32993,8 +33150,12 @@ class Series {
|
|
|
32993
33150
|
* @function Highcharts.Series#hasMarkerChanged
|
|
32994
33151
|
*/
|
|
32995
33152
|
hasMarkerChanged(options, oldOptions) {
|
|
32996
|
-
const marker = options.marker, oldMarker = oldOptions.marker
|
|
32997
|
-
|
|
33153
|
+
const marker = options.marker, oldMarker = oldOptions.marker;
|
|
33154
|
+
// Note that `marker` holds the full, merged object including
|
|
33155
|
+
// `plotOptions`, while `oldMarker` is the user-defined series-level
|
|
33156
|
+
// options only. We may need to refactor that in the future if more
|
|
33157
|
+
// issues like #24057 arise.
|
|
33158
|
+
return marker && oldMarker && ((oldMarker.enabled && !marker.enabled) ||
|
|
32998
33159
|
oldMarker.symbol !== marker.symbol || // #10870, #15946
|
|
32999
33160
|
oldMarker.height !== marker.height || // #16274
|
|
33000
33161
|
oldMarker.width !== marker.width // #16274
|
|
@@ -33013,7 +33174,8 @@ class Series {
|
|
|
33013
33174
|
time.parse(options.pointStart) ??
|
|
33014
33175
|
0;
|
|
33015
33176
|
let pointInterval;
|
|
33016
|
-
this.pointInterval = pointInterval =
|
|
33177
|
+
this.pointInterval = pointInterval =
|
|
33178
|
+
this.pointInterval ?? options.pointInterval ?? 1;
|
|
33017
33179
|
if (relativeXValue && isNumber(x)) {
|
|
33018
33180
|
pointInterval *= x;
|
|
33019
33181
|
}
|
|
@@ -33085,9 +33247,13 @@ class Series {
|
|
|
33085
33247
|
);
|
|
33086
33248
|
// When shared tooltip, stickyTracking is true by default,
|
|
33087
33249
|
// unless user says otherwise.
|
|
33088
|
-
this.stickyTracking =
|
|
33089
|
-
|
|
33090
|
-
|
|
33250
|
+
this.stickyTracking =
|
|
33251
|
+
seriesUserOptions.stickyTracking ??
|
|
33252
|
+
userPlotOptionsType.stickyTracking ??
|
|
33253
|
+
userPlotOptionsSeries.stickyTracking ??
|
|
33254
|
+
(this.tooltipOptions.shared && !this.noSharedTooltip ?
|
|
33255
|
+
true :
|
|
33256
|
+
options.stickyTracking);
|
|
33091
33257
|
// Delete marker object if not allowed (#1125)
|
|
33092
33258
|
if (typeOptions.marker === null) {
|
|
33093
33259
|
delete options.marker;
|
|
@@ -33165,7 +33331,9 @@ class Series {
|
|
|
33165
33331
|
if (!value) {
|
|
33166
33332
|
// Pick up either the colorIndex option, or the series.colorIndex
|
|
33167
33333
|
// after Series.update()
|
|
33168
|
-
setting =
|
|
33334
|
+
setting = prop === 'color' ?
|
|
33335
|
+
(this.options.colorIndex ?? this[indexName]) :
|
|
33336
|
+
this[indexName];
|
|
33169
33337
|
if (defined(setting)) { // After Series.update()
|
|
33170
33338
|
i = setting;
|
|
33171
33339
|
}
|
|
@@ -33225,7 +33393,7 @@ class Series {
|
|
|
33225
33393
|
*/
|
|
33226
33394
|
getSymbol() {
|
|
33227
33395
|
const seriesMarkerOption = this.options.marker;
|
|
33228
|
-
this.getCyclic('symbol', seriesMarkerOption
|
|
33396
|
+
this.getCyclic('symbol', seriesMarkerOption?.symbol, this.chart.options.symbols);
|
|
33229
33397
|
}
|
|
33230
33398
|
/**
|
|
33231
33399
|
* Shorthand to get one of the series' data columns from `Series.dataTable`.
|
|
@@ -33421,9 +33589,10 @@ class Series {
|
|
|
33421
33589
|
if (!oldData[i].destroyed && !oldData[i].condemned) {
|
|
33422
33590
|
const pOptions = dataTable.getRowObject(i);
|
|
33423
33591
|
if (pOptions) {
|
|
33592
|
+
// Remove undefined properties, but preserve explicit
|
|
33593
|
+
// nulls (#24872)
|
|
33424
33594
|
Object.keys(pOptions).forEach((key) => {
|
|
33425
|
-
if (
|
|
33426
|
-
pOptions[key] === oldData[i].options[key]*/) {
|
|
33595
|
+
if (pOptions[key] === void 0) {
|
|
33427
33596
|
delete pOptions[key];
|
|
33428
33597
|
}
|
|
33429
33598
|
});
|
|
@@ -33828,8 +33997,12 @@ class Series {
|
|
|
33828
33997
|
}
|
|
33829
33998
|
}
|
|
33830
33999
|
}
|
|
33831
|
-
// Find the closest distance between processed points
|
|
33832
|
-
|
|
34000
|
+
// Find the closest distance between processed points. When the data was
|
|
34001
|
+
// cropped (or set out of range), read x from the freshly cropped local
|
|
34002
|
+
// `modified` table, #24858.
|
|
34003
|
+
if (modified !== table) {
|
|
34004
|
+
xData = modified.getColumn('x', true) || [];
|
|
34005
|
+
}
|
|
33833
34006
|
const closestPointRange = getClosestDistance([
|
|
33834
34007
|
logarithmic ?
|
|
33835
34008
|
xData.map(logarithmic.log2lin) :
|
|
@@ -34034,9 +34207,9 @@ class Series {
|
|
|
34034
34207
|
* Force getting extremes of a total series data range.
|
|
34035
34208
|
*/
|
|
34036
34209
|
getExtremes(yData, forceExtremesFromAll) {
|
|
34037
|
-
const { xAxis, yAxis } = this, getExtremesFromAll = forceExtremesFromAll ||
|
|
34210
|
+
const { options, xAxis, yAxis } = this, getExtremesFromAll = forceExtremesFromAll ||
|
|
34038
34211
|
this.getExtremesFromAll ||
|
|
34039
|
-
|
|
34212
|
+
options.getExtremesFromAll, // #4599, #21003
|
|
34040
34213
|
table = getExtremesFromAll && this.cropped ?
|
|
34041
34214
|
this.dataTable :
|
|
34042
34215
|
this.dataTable.getModified(), rowCount = table.rowCount, customData = yData || this.stackedYData, yAxisData = customData ?
|
|
@@ -34046,7 +34219,12 @@ class Series {
|
|
|
34046
34219
|
// non-sorted data like scatter (#7639).
|
|
34047
34220
|
shoulder = this.requireSorting && !this.is('column') ?
|
|
34048
34221
|
1 : 0,
|
|
34049
|
-
//
|
|
34222
|
+
// Used only for `cumulativeStart` (#24608)
|
|
34223
|
+
excludeShoulder = options.cumulative &&
|
|
34224
|
+
options.cumulativeStart &&
|
|
34225
|
+
shoulder &&
|
|
34226
|
+
!getExtremesFromAll,
|
|
34227
|
+
// Compensate for log X axis (#2117)
|
|
34050
34228
|
positiveValuesOnly = yAxis ? yAxis.positiveValuesOnly : false, doAll = getExtremesFromAll ||
|
|
34051
34229
|
this.cropped ||
|
|
34052
34230
|
!xAxis; // For colorAxis support
|
|
@@ -34058,10 +34236,10 @@ class Series {
|
|
|
34058
34236
|
}
|
|
34059
34237
|
for (i = 0; i < rowCount; i++) {
|
|
34060
34238
|
x = xData[i];
|
|
34061
|
-
// Check if it is within the selected x
|
|
34062
|
-
if (doAll ||
|
|
34239
|
+
// Check if it is within the selected x-axis range
|
|
34240
|
+
if ((doAll ||
|
|
34063
34241
|
((xData[i + shoulder] || x) >= xMin &&
|
|
34064
|
-
(xData[i - shoulder] || x) <= xMax)) {
|
|
34242
|
+
(xData[i - shoulder] || x) <= xMax)) && (!excludeShoulder || x >= xMin)) {
|
|
34065
34243
|
for (const values of yAxisData) {
|
|
34066
34244
|
const val = values[i];
|
|
34067
34245
|
// For points within the visible range, including the
|
|
@@ -34130,7 +34308,7 @@ class Series {
|
|
|
34130
34308
|
*/
|
|
34131
34309
|
translate() {
|
|
34132
34310
|
this.generatePoints();
|
|
34133
|
-
const series = this, { options, xAxis, yAxis } = series, { stacking, threshold } = options, {
|
|
34311
|
+
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
|
|
34134
34312
|
dynamicallyPlaced = Boolean(pointPlacement), stackThreshold = options.startFromThreshold ? threshold : 0, nullYSubstitute = (options?.nullInteraction &&
|
|
34135
34313
|
yAxis.len);
|
|
34136
34314
|
let i, plotX, lastPlotX, stackIndicator, closestPointRangePx = Number.MAX_VALUE;
|
|
@@ -34182,7 +34360,9 @@ class Series {
|
|
|
34182
34360
|
yValue = stackValues[1];
|
|
34183
34361
|
if (lowValue === stackThreshold &&
|
|
34184
34362
|
stackIndicator.key === stacks[xValue].base) {
|
|
34185
|
-
lowValue =
|
|
34363
|
+
lowValue = isNumber(threshold) ?
|
|
34364
|
+
threshold :
|
|
34365
|
+
yAxis.min;
|
|
34186
34366
|
}
|
|
34187
34367
|
// #1200, #1232
|
|
34188
34368
|
if (yAxis.positiveValuesOnly &&
|
|
@@ -34190,7 +34370,7 @@ class Series {
|
|
|
34190
34370
|
lowValue <= 0) {
|
|
34191
34371
|
lowValue = void 0;
|
|
34192
34372
|
}
|
|
34193
|
-
point.total = point.stackTotal =
|
|
34373
|
+
point.total = point.stackTotal = stackItem.total ?? void 0;
|
|
34194
34374
|
point.percentage = defined(point.y) && stackItem.total ?
|
|
34195
34375
|
(point.y / stackItem.total * 100) : void 0;
|
|
34196
34376
|
point.stackY = yValue;
|
|
@@ -34323,7 +34503,7 @@ class Series {
|
|
|
34323
34503
|
* Initialize the animation.
|
|
34324
34504
|
*/
|
|
34325
34505
|
animate(init) {
|
|
34326
|
-
const { chart, group, markerGroup } = this, inverted = chart.inverted, animation =
|
|
34506
|
+
const { chart, group, markerGroup } = this, inverted = chart.inverted, animation = animObject(this.options.animation),
|
|
34327
34507
|
// The key for temporary animation clips
|
|
34328
34508
|
animationClipKey = [
|
|
34329
34509
|
this.getSharedClipKey(),
|
|
@@ -34419,10 +34599,11 @@ class Series {
|
|
|
34419
34599
|
*/
|
|
34420
34600
|
drawPoints(points) {
|
|
34421
34601
|
points || (points = this.points.concat(this.condemnedPoints));
|
|
34422
|
-
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 =
|
|
34423
|
-
|
|
34424
|
-
|
|
34425
|
-
seriesMarkerOptions.
|
|
34602
|
+
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 ??
|
|
34603
|
+
(!xAxis || xAxis.isRadial ? true : null) ??
|
|
34604
|
+
// Use larger or equal as radius is null in bubbles (#6321)
|
|
34605
|
+
((series.closestPointRangePx ?? -Infinity) >= ((seriesMarkerOptions.enabledThreshold ?? 2) *
|
|
34606
|
+
seriesMarkerOptions.radius));
|
|
34426
34607
|
let i, point, graphic, verb, pointMarkerOptions, hasPointMarker, markerAttribs;
|
|
34427
34608
|
if (seriesMarkerOptions.enabled !== false ||
|
|
34428
34609
|
series._hasPointMarkers) {
|
|
@@ -34439,8 +34620,10 @@ class Series {
|
|
|
34439
34620
|
// Only draw the point if y is defined
|
|
34440
34621
|
if (shouldDrawMarker) {
|
|
34441
34622
|
// Shortcuts
|
|
34442
|
-
const symbol =
|
|
34443
|
-
|
|
34623
|
+
const symbol = pointMarkerOptions.symbol ??
|
|
34624
|
+
series.symbol ??
|
|
34625
|
+
'rect';
|
|
34626
|
+
markerAttribs = series.markerAttribs(point, point.selected ? 'select' : '');
|
|
34444
34627
|
const isInside = point.isInside !== false;
|
|
34445
34628
|
if (!graphic &&
|
|
34446
34629
|
isInside &&
|
|
@@ -34505,15 +34688,17 @@ class Series {
|
|
|
34505
34688
|
* A hash containing those attributes that are not settable from CSS.
|
|
34506
34689
|
*/
|
|
34507
34690
|
markerAttribs(point, state) {
|
|
34508
|
-
const seriesOptions = this.options, seriesMarkerOptions = seriesOptions.marker, pointMarkerOptions = point.marker || {}, symbol = (pointMarkerOptions.symbol ||
|
|
34691
|
+
const seriesOptions = this.options, seriesMarkerOptions = seriesOptions.marker ?? {}, pointMarkerOptions = point.marker || {}, symbol = (pointMarkerOptions.symbol ||
|
|
34509
34692
|
seriesMarkerOptions.symbol), attribs = {};
|
|
34510
|
-
let seriesStateOptions, pointStateOptions, radius =
|
|
34693
|
+
let seriesStateOptions, pointStateOptions, radius = pointMarkerOptions.radius ??
|
|
34694
|
+
seriesMarkerOptions.radius;
|
|
34511
34695
|
// Handle hover and select states
|
|
34512
34696
|
if (state) {
|
|
34513
|
-
seriesStateOptions = seriesMarkerOptions
|
|
34697
|
+
seriesStateOptions = seriesMarkerOptions.states?.[state];
|
|
34514
34698
|
pointStateOptions = pointMarkerOptions.states?.[state];
|
|
34515
|
-
radius =
|
|
34516
|
-
|
|
34699
|
+
radius = pointStateOptions?.radius ??
|
|
34700
|
+
seriesStateOptions?.radius ??
|
|
34701
|
+
(radius && radius + (seriesStateOptions?.radiusPlus || 0));
|
|
34517
34702
|
}
|
|
34518
34703
|
point.hasImage = symbol && symbol.indexOf('url') === 0;
|
|
34519
34704
|
if (point.hasImage) {
|
|
@@ -34526,7 +34711,7 @@ class Series {
|
|
|
34526
34711
|
0 :
|
|
34527
34712
|
symbol === 'rect' ?
|
|
34528
34713
|
// Rectangle symbols need crisp edges, others don't
|
|
34529
|
-
seriesMarkerOptions
|
|
34714
|
+
seriesMarkerOptions.lineWidth || 0 :
|
|
34530
34715
|
1);
|
|
34531
34716
|
}
|
|
34532
34717
|
attribs.x = pos[0] - radius;
|
|
@@ -34557,8 +34742,9 @@ class Series {
|
|
|
34557
34742
|
* The presentational attributes to be set on the point.
|
|
34558
34743
|
*/
|
|
34559
34744
|
pointAttribs(point, state) {
|
|
34560
|
-
const options = this.options, seriesMarkerOptions = options.marker, pointOptions = point?.options, pointMarkerOptions = pointOptions?.marker || {}, pointColorOption = pointOptions?.color, pointColor = point?.color, zoneColor = point?.zone?.color;
|
|
34561
|
-
let
|
|
34745
|
+
const options = this.options, seriesMarkerOptions = options.marker ?? {}, pointOptions = point?.options, pointMarkerOptions = pointOptions?.marker || {}, pointColorOption = pointOptions?.color, pointColor = point?.color, zoneColor = point?.zone?.color;
|
|
34746
|
+
let color = this.color, fill, stroke, strokeWidth = pointMarkerOptions.lineWidth ??
|
|
34747
|
+
seriesMarkerOptions.lineWidth, opacity = (point?.isNull && options.nullInteraction) ? 0 : 1;
|
|
34562
34748
|
color = (pointColorOption ||
|
|
34563
34749
|
zoneColor ||
|
|
34564
34750
|
pointColor ||
|
|
@@ -34571,19 +34757,22 @@ class Series {
|
|
|
34571
34757
|
color);
|
|
34572
34758
|
// Handle hover and select states
|
|
34573
34759
|
state = state || 'normal';
|
|
34574
|
-
|
|
34575
|
-
|
|
34576
|
-
|
|
34577
|
-
|
|
34578
|
-
strokeWidth
|
|
34579
|
-
|
|
34580
|
-
|
|
34581
|
-
|
|
34582
|
-
|
|
34583
|
-
|
|
34584
|
-
|
|
34585
|
-
|
|
34586
|
-
|
|
34760
|
+
const seriesStateOptions = seriesMarkerOptions.states?.[state] || {};
|
|
34761
|
+
const pointStateOptions = pointMarkerOptions.states?.[state] || {};
|
|
34762
|
+
strokeWidth = pointStateOptions.lineWidth ??
|
|
34763
|
+
seriesStateOptions.lineWidth ??
|
|
34764
|
+
(strokeWidth || 0) + (pointStateOptions.lineWidthPlus ??
|
|
34765
|
+
seriesStateOptions.lineWidthPlus ??
|
|
34766
|
+
0);
|
|
34767
|
+
fill = (pointStateOptions.fillColor ||
|
|
34768
|
+
seriesStateOptions.fillColor ||
|
|
34769
|
+
fill);
|
|
34770
|
+
stroke = (pointStateOptions.lineColor ||
|
|
34771
|
+
seriesStateOptions.lineColor ||
|
|
34772
|
+
stroke);
|
|
34773
|
+
opacity = (pointStateOptions.opacity ??
|
|
34774
|
+
seriesStateOptions.opacity ??
|
|
34775
|
+
opacity);
|
|
34587
34776
|
return {
|
|
34588
34777
|
'stroke': stroke,
|
|
34589
34778
|
'stroke-width': strokeWidth,
|
|
@@ -34622,7 +34811,7 @@ class Series {
|
|
|
34622
34811
|
// Destroy all points with their elements
|
|
34623
34812
|
i = data.length;
|
|
34624
34813
|
while (i--) {
|
|
34625
|
-
data[i]?.destroy?.();
|
|
34814
|
+
data[i]?.destroy?.(true);
|
|
34626
34815
|
}
|
|
34627
34816
|
for (const zone of series.zones || []) {
|
|
34628
34817
|
// Destroy SVGElement's but preserve primitive props (#20426)
|
|
@@ -34649,7 +34838,7 @@ class Series {
|
|
|
34649
34838
|
erase(chart.series, series);
|
|
34650
34839
|
chart.orderItems('series');
|
|
34651
34840
|
// Clear all members
|
|
34652
|
-
objectEach(series, function (
|
|
34841
|
+
objectEach(series, function (_val, prop) {
|
|
34653
34842
|
if (!keepEventsForUpdate || prop !== 'hcEvents') {
|
|
34654
34843
|
delete series[prop];
|
|
34655
34844
|
}
|
|
@@ -34701,7 +34890,7 @@ class Series {
|
|
|
34701
34890
|
// Reset
|
|
34702
34891
|
zones.forEach((zone) => {
|
|
34703
34892
|
zone.lineClip = [];
|
|
34704
|
-
zone.translated = clamp(axis.toPixels(
|
|
34893
|
+
zone.translated = clamp(axis.toPixels((zone.value ?? axisMax), true) || 0, 0, len);
|
|
34705
34894
|
});
|
|
34706
34895
|
// The use of the Color Threshold assumes there are no gaps so it is
|
|
34707
34896
|
// safe to hide the original graph and area unless it is not
|
|
@@ -34925,7 +35114,7 @@ class Series {
|
|
|
34925
35114
|
* @emits Highcharts.Series#event:afterRender
|
|
34926
35115
|
*/
|
|
34927
35116
|
render() {
|
|
34928
|
-
const series = this, { chart, options, hasRendered } = series, animOptions =
|
|
35117
|
+
const series = this, { chart, options, hasRendered } = series, animOptions = animObject(options.animation), visibility = series.visible ?
|
|
34929
35118
|
'inherit' : 'hidden', // #2597
|
|
34930
35119
|
zIndex = options.zIndex, chartSeriesGroup = chart.seriesGroup;
|
|
34931
35120
|
let animDuration = series.finishedAnimating ?
|
|
@@ -35027,7 +35216,7 @@ class Series {
|
|
|
35027
35216
|
*
|
|
35028
35217
|
* @function Highcharts.Series#searchPoint
|
|
35029
35218
|
*
|
|
35030
|
-
* @param {
|
|
35219
|
+
* @param {PointerEvent} e
|
|
35031
35220
|
* The normalized pointer event
|
|
35032
35221
|
* @param {boolean} [compareX=false]
|
|
35033
35222
|
* Search only by the X value, not Y
|
|
@@ -35059,7 +35248,7 @@ class Series {
|
|
|
35059
35248
|
// Prevent multiple k-d-trees from being built simultaneously
|
|
35060
35249
|
// (#6235)
|
|
35061
35250
|
this.buildingKdTree = true;
|
|
35062
|
-
const series = this, seriesOptions = series.options, dimensions = seriesOptions.findNearestPointBy
|
|
35251
|
+
const series = this, seriesOptions = series.options, dimensions = (seriesOptions.findNearestPointBy ?? '')
|
|
35063
35252
|
.indexOf('y') > -1 ? 2 : 1;
|
|
35064
35253
|
/**
|
|
35065
35254
|
* Internal function
|
|
@@ -35109,7 +35298,7 @@ class Series {
|
|
|
35109
35298
|
* The point to search for.
|
|
35110
35299
|
* @param {boolean} [compareX=false]
|
|
35111
35300
|
* Search only by the X value, not Y.
|
|
35112
|
-
* @param {
|
|
35301
|
+
* @param {PointerEvent} [e]
|
|
35113
35302
|
* The normalized pointer event.
|
|
35114
35303
|
* @param {Function} [suppliedPointEvaluator]
|
|
35115
35304
|
* A custom point evaluator function.
|
|
@@ -35315,11 +35504,13 @@ class Series {
|
|
|
35315
35504
|
* Both X and Y values given
|
|
35316
35505
|
* @sample highcharts/members/series-addpoint-pie/
|
|
35317
35506
|
* Append pie slice
|
|
35318
|
-
* @sample
|
|
35507
|
+
* @sample highcharts/datatable/datamapping-dynamic
|
|
35508
|
+
* Alternative approach with data table
|
|
35509
|
+
* @sample {highstock} stock/members/series-addpoint/
|
|
35319
35510
|
* Append 100 points in Highcharts Stock
|
|
35320
|
-
* @sample stock/members/series-addpoint-shift/
|
|
35511
|
+
* @sample {highstock} stock/members/series-addpoint-shift/
|
|
35321
35512
|
* Append and shift in Highcharts Stock
|
|
35322
|
-
* @sample maps/members/series-addpoint/
|
|
35513
|
+
* @sample {highmaps} maps/members/series-addpoint/
|
|
35323
35514
|
* Add a point in Highmaps
|
|
35324
35515
|
*
|
|
35325
35516
|
* @function Highcharts.Series#addPoint
|
|
@@ -35355,7 +35546,7 @@ class Series {
|
|
|
35355
35546
|
const series = this, seriesOptions = series.options, { chart, data, dataTable: table, xAxis } = series, names = xAxis?.hasNames && xAxis.names, dataOptions = seriesOptions.data, xData = series.getColumn('x');
|
|
35356
35547
|
let isInTheMiddle, i;
|
|
35357
35548
|
// Optional redraw, defaults to true
|
|
35358
|
-
redraw =
|
|
35549
|
+
redraw = (redraw ?? true);
|
|
35359
35550
|
// Get options and push the point to xData, yData and series.options. In
|
|
35360
35551
|
// series.generatePoints the Point instance will be created on demand
|
|
35361
35552
|
// and pushed to the series.data array.
|
|
@@ -35465,8 +35656,8 @@ class Series {
|
|
|
35465
35656
|
chart.redraw();
|
|
35466
35657
|
}
|
|
35467
35658
|
};
|
|
35468
|
-
|
|
35469
|
-
redraw =
|
|
35659
|
+
setAnimation(animation, chart);
|
|
35660
|
+
redraw = (redraw ?? true);
|
|
35470
35661
|
// Fire the event with a default handler of removing the point
|
|
35471
35662
|
if (point) {
|
|
35472
35663
|
point.firePointEvent('remove', null, remove);
|
|
@@ -35509,7 +35700,7 @@ class Series {
|
|
|
35509
35700
|
// Redraw
|
|
35510
35701
|
chart.isDirtyLegend = chart.isDirtyBox = true;
|
|
35511
35702
|
chart.linkSeries(keepEvents);
|
|
35512
|
-
if (
|
|
35703
|
+
if (redraw ?? true) {
|
|
35513
35704
|
chart.redraw(animation);
|
|
35514
35705
|
}
|
|
35515
35706
|
}
|
|
@@ -35726,7 +35917,7 @@ class Series {
|
|
|
35726
35917
|
series.isDirtyData = true;
|
|
35727
35918
|
}
|
|
35728
35919
|
fireEvent(this, 'afterUpdate');
|
|
35729
|
-
if (
|
|
35920
|
+
if (redraw ?? true) {
|
|
35730
35921
|
chart.redraw(keepPoints ? void 0 : false);
|
|
35731
35922
|
}
|
|
35732
35923
|
}
|
|
@@ -35743,12 +35934,12 @@ class Series {
|
|
|
35743
35934
|
* @internal
|
|
35744
35935
|
*/
|
|
35745
35936
|
hasOptionChanged(optionName) {
|
|
35746
|
-
const chart = this.chart, option = this.options[optionName], plotOptions = chart.options.plotOptions, oldOption = this.userOptions[optionName], plotOptionsOption =
|
|
35937
|
+
const chart = this.chart, option = this.options[optionName], plotOptions = chart.options.plotOptions, oldOption = this.userOptions[optionName], plotOptionsOption = (plotOptions?.[this.type]?.[optionName] ?? plotOptions?.series?.[optionName]);
|
|
35747
35938
|
// Check if `plotOptions` are defined already, #19203
|
|
35748
35939
|
if (oldOption && !defined(plotOptionsOption)) {
|
|
35749
35940
|
return option !== oldOption;
|
|
35750
35941
|
}
|
|
35751
|
-
return option !==
|
|
35942
|
+
return option !== (plotOptionsOption ?? option);
|
|
35752
35943
|
}
|
|
35753
35944
|
/**
|
|
35754
35945
|
* Runs on mouse over the series graphical items.
|
|
@@ -35819,10 +36010,11 @@ class Series {
|
|
|
35819
36010
|
* Determines if state should be inherited by points too.
|
|
35820
36011
|
*/
|
|
35821
36012
|
setState(state, inherit) {
|
|
35822
|
-
const series = this, { graph, options } = series, { inactiveOtherPoints, states: stateOptions } = options,
|
|
36013
|
+
const series = this, { graph, options } = series, { inactiveOtherPoints, states: stateOptions = {} } = options,
|
|
35823
36014
|
// By default a quick animation to hover/inactive,
|
|
35824
36015
|
// slower to un-hover
|
|
35825
|
-
stateAnimation =
|
|
36016
|
+
stateAnimation = stateOptions[state || 'normal']?.animation ??
|
|
36017
|
+
series.chart.options.chart.animation;
|
|
35826
36018
|
let { lineWidth, opacity } = options;
|
|
35827
36019
|
state = state || '';
|
|
35828
36020
|
if (series.state !== state) {
|
|
@@ -35849,9 +36041,13 @@ class Series {
|
|
|
35849
36041
|
return;
|
|
35850
36042
|
}
|
|
35851
36043
|
if (state) {
|
|
35852
|
-
lineWidth =
|
|
35853
|
-
|
|
35854
|
-
|
|
36044
|
+
lineWidth = stateOptions[state]?.lineWidth ?? (!isNumber(lineWidth) ?
|
|
36045
|
+
void 0 :
|
|
36046
|
+
// Increase by lineWidthPlus only when lineWidth
|
|
36047
|
+
// is a number.
|
|
36048
|
+
(lineWidth +
|
|
36049
|
+
(stateOptions?.[state]?.lineWidthPlus || 0))); // #4035
|
|
36050
|
+
opacity = stateOptions[state]?.opacity ?? opacity;
|
|
35855
36051
|
}
|
|
35856
36052
|
if (graph && !graph.dashstyle && isNumber(lineWidth)) {
|
|
35857
36053
|
// Animate the graph stroke-width
|
|
@@ -35895,11 +36091,7 @@ class Series {
|
|
|
35895
36091
|
* Can be either `hover` or undefined to set to normal state.
|
|
35896
36092
|
*/
|
|
35897
36093
|
setAllPointsToState(state) {
|
|
35898
|
-
this.points.forEach(
|
|
35899
|
-
if (point.setState) {
|
|
35900
|
-
point.setState(state);
|
|
35901
|
-
}
|
|
35902
|
-
});
|
|
36094
|
+
this.points.forEach((point) => point.setState?.(state));
|
|
35903
36095
|
}
|
|
35904
36096
|
/**
|
|
35905
36097
|
* Show or hide the series.
|
|
@@ -36580,7 +36772,6 @@ Series_SeriesRegistry.series = Series;
|
|
|
36580
36772
|
* */
|
|
36581
36773
|
|
|
36582
36774
|
|
|
36583
|
-
const { animObject: Legend_animObject, setAnimation: Legend_setAnimation } = AnimationUtilities;
|
|
36584
36775
|
|
|
36585
36776
|
const { registerEventOptions: Legend_registerEventOptions } = Core_Foundation;
|
|
36586
36777
|
|
|
@@ -36709,7 +36900,7 @@ class Legend {
|
|
|
36709
36900
|
* @param {Highcharts.LegendOptions} options
|
|
36710
36901
|
*/
|
|
36711
36902
|
setOptions(options) {
|
|
36712
|
-
const padding =
|
|
36903
|
+
const padding = (options.padding ?? 8);
|
|
36713
36904
|
/**
|
|
36714
36905
|
* Legend options.
|
|
36715
36906
|
*
|
|
@@ -36726,7 +36917,7 @@ class Legend {
|
|
|
36726
36917
|
this.itemMarginBottom = options.itemMarginBottom;
|
|
36727
36918
|
this.padding = padding;
|
|
36728
36919
|
this.initialItemY = padding - 5; // 5 is pixels above the text
|
|
36729
|
-
this.symbolWidth =
|
|
36920
|
+
this.symbolWidth = (options.symbolWidth ?? 16);
|
|
36730
36921
|
this.pages = [];
|
|
36731
36922
|
this.proximate = options.layout === 'proximate' && !this.chart.inverted;
|
|
36732
36923
|
// #12705: baseline has to be reset on every update
|
|
@@ -36760,7 +36951,7 @@ class Legend {
|
|
|
36760
36951
|
}
|
|
36761
36952
|
this.destroy();
|
|
36762
36953
|
chart.isDirtyLegend = chart.isDirtyBox = true;
|
|
36763
|
-
if (
|
|
36954
|
+
if (redraw ?? true) {
|
|
36764
36955
|
chart.redraw();
|
|
36765
36956
|
}
|
|
36766
36957
|
fireEvent(this, 'afterUpdate', { redraw });
|
|
@@ -36998,7 +37189,7 @@ class Legend {
|
|
|
36998
37189
|
* The item to render.
|
|
36999
37190
|
*/
|
|
37000
37191
|
renderItem(item) {
|
|
37001
|
-
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 ?
|
|
37192
|
+
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 ?
|
|
37002
37193
|
item.series :
|
|
37003
37194
|
item, seriesOptions = series.options, showCheckbox = (!!legend.createCheckboxForItem &&
|
|
37004
37195
|
seriesOptions &&
|
|
@@ -37044,9 +37235,11 @@ class Legend {
|
|
|
37044
37235
|
legend.fontMetrics.f + 3 + legend.itemMarginTop;
|
|
37045
37236
|
label.attr('y', legend.baseline);
|
|
37046
37237
|
legend.symbolHeight =
|
|
37047
|
-
|
|
37238
|
+
(options.symbolHeight ?? legend.fontMetrics.f);
|
|
37048
37239
|
if (options.squareSymbol) {
|
|
37049
|
-
legend.symbolWidth =
|
|
37240
|
+
legend.symbolWidth =
|
|
37241
|
+
options.symbolWidth ??
|
|
37242
|
+
Math.max(legend.symbolHeight, 16);
|
|
37050
37243
|
itemExtraWidth = legend.symbolWidth + symbolPadding +
|
|
37051
37244
|
itemDistance + (showCheckbox ? 20 : 0);
|
|
37052
37245
|
if (ltr) {
|
|
@@ -37098,7 +37291,7 @@ class Legend {
|
|
|
37098
37291
|
* @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item
|
|
37099
37292
|
*/
|
|
37100
37293
|
layoutItem(item) {
|
|
37101
|
-
const options = this.options, padding = this.padding, horizontal = options.layout === 'horizontal', itemHeight = item.itemHeight, itemMarginBottom = this.itemMarginBottom, itemMarginTop = this.itemMarginTop, itemDistance = horizontal ?
|
|
37294
|
+
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 &&
|
|
37102
37295
|
this.totalItemWidth > maxLegendWidth) ?
|
|
37103
37296
|
this.maxItemWidth :
|
|
37104
37297
|
item.itemWidth, legendItem = item.legendItem || {};
|
|
@@ -37152,7 +37345,9 @@ class Legend {
|
|
|
37152
37345
|
const seriesOptions = series?.options;
|
|
37153
37346
|
// Handle showInLegend. If the series is linked to another series,
|
|
37154
37347
|
// defaults to false.
|
|
37155
|
-
if (series &&
|
|
37348
|
+
if (series &&
|
|
37349
|
+
(seriesOptions.showInLegend ??
|
|
37350
|
+
(!defined(seriesOptions.linkedTo)))) {
|
|
37156
37351
|
// Use points or series for the legend item depending on
|
|
37157
37352
|
// legendType
|
|
37158
37353
|
allItems = allItems.concat(series.legendItem?.labels ||
|
|
@@ -37434,7 +37629,7 @@ class Legend {
|
|
|
37434
37629
|
* @function Highcharts.Legend#handleOverflow
|
|
37435
37630
|
*/
|
|
37436
37631
|
handleOverflow(legendHeight) {
|
|
37437
|
-
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 =
|
|
37632
|
+
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) {
|
|
37438
37633
|
if (typeof height === 'number') {
|
|
37439
37634
|
clipRect.attr({
|
|
37440
37635
|
height: height
|
|
@@ -37480,7 +37675,7 @@ class Legend {
|
|
|
37480
37675
|
navOptions.enabled !== false) {
|
|
37481
37676
|
this.clipHeight = clipHeight =
|
|
37482
37677
|
Math.max(spaceHeight - 20 - this.titleHeight - padding, 0);
|
|
37483
|
-
this.currentPage =
|
|
37678
|
+
this.currentPage = (this.currentPage ?? 1);
|
|
37484
37679
|
this.fullHeight = legendHeight;
|
|
37485
37680
|
// Fill pages with Y positions so that the top of each a legend item
|
|
37486
37681
|
// defines the scroll top for each page (#2098)
|
|
@@ -37583,7 +37778,7 @@ class Legend {
|
|
|
37583
37778
|
}
|
|
37584
37779
|
if (currentPage > 0) {
|
|
37585
37780
|
if (typeof animation !== 'undefined') {
|
|
37586
|
-
|
|
37781
|
+
setAnimation(animation, chart);
|
|
37587
37782
|
}
|
|
37588
37783
|
this.nav.attr({
|
|
37589
37784
|
translateX: padding,
|
|
@@ -37640,7 +37835,7 @@ class Legend {
|
|
|
37640
37835
|
this.currentPage = currentPage;
|
|
37641
37836
|
this.positionCheckboxes();
|
|
37642
37837
|
// Fire event after scroll animation is complete
|
|
37643
|
-
const animOptions =
|
|
37838
|
+
const animOptions = animObject((animation ?? chart.renderer.globalAnimation ?? true));
|
|
37644
37839
|
syncTimeout(() => {
|
|
37645
37840
|
fireEvent(this, 'afterScroll', { currentPage });
|
|
37646
37841
|
}, animOptions.duration);
|
|
@@ -37850,7 +38045,7 @@ class Legend {
|
|
|
37850
38045
|
*/ /**
|
|
37851
38046
|
* Related browser event.
|
|
37852
38047
|
* @name Highcharts.LegendItemClickEventObject#browserEvent
|
|
37853
|
-
* @type {
|
|
38048
|
+
* @type {PointerEvent}
|
|
37854
38049
|
*/ /**
|
|
37855
38050
|
* Prevent the default action of toggle the visibility of the series or point.
|
|
37856
38051
|
* @name Highcharts.LegendItemClickEventObject#preventDefault
|
|
@@ -37901,7 +38096,7 @@ class Legend {
|
|
|
37901
38096
|
*/ /**
|
|
37902
38097
|
* Related browser event.
|
|
37903
38098
|
* @name Highcharts.PointLegendItemClickEventObject#browserEvent
|
|
37904
|
-
* @type {
|
|
38099
|
+
* @type {PointerEvent}
|
|
37905
38100
|
*/ /**
|
|
37906
38101
|
* Whether the default action has been prevented (`true`) or not.
|
|
37907
38102
|
* @name Highcharts.PointLegendItemClickEventObject#defaultPrevented
|
|
@@ -37957,7 +38152,7 @@ class Legend {
|
|
|
37957
38152
|
*/ /**
|
|
37958
38153
|
* Related browser event.
|
|
37959
38154
|
* @name Highcharts.SeriesLegendItemClickEventObject#browserEvent
|
|
37960
|
-
* @type {
|
|
38155
|
+
* @type {PointerEvent}
|
|
37961
38156
|
*/ /**
|
|
37962
38157
|
* Whether the default action has been prevented (`true`) or not.
|
|
37963
38158
|
* @name Highcharts.SeriesLegendItemClickEventObject#defaultPrevented
|
|
@@ -37991,7 +38186,6 @@ class Legend {
|
|
|
37991
38186
|
* */
|
|
37992
38187
|
|
|
37993
38188
|
|
|
37994
|
-
const { animate: Chart_animate, animObject: Chart_animObject, setAnimation: Chart_setAnimation } = AnimationUtilities;
|
|
37995
38189
|
|
|
37996
38190
|
|
|
37997
38191
|
const { defaultOptions: Chart_defaultOptions } = Defaults;
|
|
@@ -38082,7 +38276,7 @@ class Chart {
|
|
|
38082
38276
|
*/
|
|
38083
38277
|
static chart(a, b, c) {
|
|
38084
38278
|
const chart = new Chart(a, b, c);
|
|
38085
|
-
return chart.promise
|
|
38279
|
+
return chart.promise ?? chart;
|
|
38086
38280
|
}
|
|
38087
38281
|
// Implementation
|
|
38088
38282
|
constructor(a,
|
|
@@ -38123,10 +38317,10 @@ class Chart {
|
|
|
38123
38317
|
const chart = this, options = chart.options.chart, zooming = options.zooming;
|
|
38124
38318
|
chart.zooming = {
|
|
38125
38319
|
...zooming,
|
|
38126
|
-
type:
|
|
38127
|
-
key:
|
|
38128
|
-
pinchType:
|
|
38129
|
-
singleTouch:
|
|
38320
|
+
type: (options.zoomType ?? zooming.type),
|
|
38321
|
+
key: (options.zoomKey ?? zooming.key),
|
|
38322
|
+
pinchType: (options.pinchType ?? zooming.pinchType),
|
|
38323
|
+
singleTouch: options.zoomBySingleTouch ?? zooming.singleTouch ?? false,
|
|
38130
38324
|
resetButton: merge(zooming.resetButton, options.resetZoomButton)
|
|
38131
38325
|
};
|
|
38132
38326
|
}
|
|
@@ -38469,7 +38663,7 @@ class Chart {
|
|
|
38469
38663
|
redraw(animation) {
|
|
38470
38664
|
fireEvent(this, 'beforeRedraw');
|
|
38471
38665
|
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 = [];
|
|
38472
|
-
let hasDirtyStacks, hasStackedSeries, i,
|
|
38666
|
+
let hasDirtyStacks, hasStackedSeries, i, redrawLegend = chart.isDirtyLegend, serie;
|
|
38473
38667
|
renderer.rootFontSize = renderer.boxWrapper.getStyle('font-size');
|
|
38474
38668
|
// Handle responsive rules, not only on resize (#6130)
|
|
38475
38669
|
if (chart.setResponsive) {
|
|
@@ -38478,7 +38672,7 @@ class Chart {
|
|
|
38478
38672
|
// Set the global animation. When chart.hasRendered is not true, the
|
|
38479
38673
|
// redraw call comes from a responsive rule and animation should not
|
|
38480
38674
|
// occur.
|
|
38481
|
-
|
|
38675
|
+
setAnimation(chart.hasRendered ? animation : false, chart);
|
|
38482
38676
|
if (isHiddenChart) {
|
|
38483
38677
|
chart.temporaryDisplay();
|
|
38484
38678
|
}
|
|
@@ -38541,6 +38735,7 @@ class Chart {
|
|
|
38541
38735
|
});
|
|
38542
38736
|
chart.getMargins(); // #3098
|
|
38543
38737
|
// If one axis is dirty, all axes must be redrawn (#792, #2169)
|
|
38738
|
+
let isDirtyBox = chart.isDirtyBox;
|
|
38544
38739
|
axes.forEach(function (axis) {
|
|
38545
38740
|
if (axis.isDirty) {
|
|
38546
38741
|
isDirtyBox = true;
|
|
@@ -38677,7 +38872,7 @@ class Chart {
|
|
|
38677
38872
|
// inspect the generated series.points.
|
|
38678
38873
|
series.getPointsCollection()
|
|
38679
38874
|
.forEach((point) => {
|
|
38680
|
-
if (
|
|
38875
|
+
if (point.selectedStaging ?? point.selected) {
|
|
38681
38876
|
acc.push(point);
|
|
38682
38877
|
}
|
|
38683
38878
|
});
|
|
@@ -39076,11 +39271,8 @@ class Chart {
|
|
|
39076
39271
|
const chartHeight = chart.chartHeight;
|
|
39077
39272
|
let chartWidth = chart.chartWidth;
|
|
39078
39273
|
// Allow table cells and flex-boxes to shrink without the chart
|
|
39079
|
-
// blocking them out (#6427)
|
|
39080
|
-
|
|
39081
|
-
if (!chart.styledMode) {
|
|
39082
|
-
css(renderTo, { overflow: 'hidden' });
|
|
39083
|
-
}
|
|
39274
|
+
// blocking them out (#6427)
|
|
39275
|
+
css(renderTo, { overflow: 'hidden' });
|
|
39084
39276
|
// Create the inner container
|
|
39085
39277
|
if (!chart.styledMode) {
|
|
39086
39278
|
containerStyle = extend({
|
|
@@ -39118,7 +39310,7 @@ class Chart {
|
|
|
39118
39310
|
chartWidth = chart.chartWidth;
|
|
39119
39311
|
if (!chart.styledMode) {
|
|
39120
39312
|
css(container, {
|
|
39121
|
-
width:
|
|
39313
|
+
width: (optionsChart.style?.width ?? chartWidth + 'px')
|
|
39122
39314
|
});
|
|
39123
39315
|
}
|
|
39124
39316
|
}
|
|
@@ -39137,7 +39329,7 @@ class Chart {
|
|
|
39137
39329
|
// first ResizeObserver reflow
|
|
39138
39330
|
chart.containerBox = chart.getContainerBox();
|
|
39139
39331
|
// Set the initial animation from the options
|
|
39140
|
-
|
|
39332
|
+
setAnimation(void 0, chart);
|
|
39141
39333
|
chart.setClassName(optionsChart.className);
|
|
39142
39334
|
if (!chart.styledMode) {
|
|
39143
39335
|
chart.renderer.setStyle(optionsChart.style);
|
|
@@ -39332,7 +39524,7 @@ class Chart {
|
|
|
39332
39524
|
// Handle the isResizing counter
|
|
39333
39525
|
chart.isResizing += 1;
|
|
39334
39526
|
// Set the animation for the current process
|
|
39335
|
-
|
|
39527
|
+
setAnimation(animation, chart);
|
|
39336
39528
|
const globalAnimation = renderer.globalAnimation;
|
|
39337
39529
|
chart.oldChartHeight = chart.chartHeight;
|
|
39338
39530
|
chart.oldChartWidth = chart.chartWidth;
|
|
@@ -39351,7 +39543,7 @@ class Chart {
|
|
|
39351
39543
|
// Resize the container with the global animation applied if enabled
|
|
39352
39544
|
// (#2503)
|
|
39353
39545
|
if (!chart.styledMode) {
|
|
39354
|
-
(globalAnimation ?
|
|
39546
|
+
(globalAnimation ? animate : css)(chart.container, {
|
|
39355
39547
|
width: `${chartWidth + scrollablePixelsX}px`,
|
|
39356
39548
|
height: `${chartHeight + scrollablePixelsY}px`
|
|
39357
39549
|
}, globalAnimation);
|
|
@@ -39377,7 +39569,7 @@ class Chart {
|
|
|
39377
39569
|
if (chart) {
|
|
39378
39570
|
fireEvent(chart, 'endResize');
|
|
39379
39571
|
}
|
|
39380
|
-
},
|
|
39572
|
+
}, animObject(globalAnimation).duration);
|
|
39381
39573
|
}
|
|
39382
39574
|
// Handle resizing counter even if we've re-rendered or not (#20548).
|
|
39383
39575
|
chart.isResizing -= 1;
|
|
@@ -39761,7 +39953,7 @@ class Chart {
|
|
|
39761
39953
|
const mockTick = new Axis_Tick(axis, 0, '', true), label = mockTick.createLabel('x', labels);
|
|
39762
39954
|
mockTick.destroy();
|
|
39763
39955
|
if (label &&
|
|
39764
|
-
|
|
39956
|
+
(labels.reserveSpace ?? !isNumber(options.crossing))) {
|
|
39765
39957
|
expectedSpace = label.getBBox().height +
|
|
39766
39958
|
labels.distance +
|
|
39767
39959
|
Math.max(isNumber(offset) ? offset : 0, 0);
|
|
@@ -40096,7 +40288,7 @@ class Chart {
|
|
|
40096
40288
|
const chart = this;
|
|
40097
40289
|
let series;
|
|
40098
40290
|
if (options) { // <- not necessary
|
|
40099
|
-
redraw =
|
|
40291
|
+
redraw = (redraw ?? true); // Defaults to true
|
|
40100
40292
|
fireEvent(chart, 'addSeries', { options: options }, function () {
|
|
40101
40293
|
series = chart.initSeries(options);
|
|
40102
40294
|
chart.isDirtyLegend = true;
|
|
@@ -40187,7 +40379,7 @@ class Chart {
|
|
|
40187
40379
|
*/
|
|
40188
40380
|
createAxis(coll, options) {
|
|
40189
40381
|
const axis = new Axis_Axis(this, options.axis, coll);
|
|
40190
|
-
if (
|
|
40382
|
+
if (options.redraw ?? true) {
|
|
40191
40383
|
this.redraw(options.animation);
|
|
40192
40384
|
}
|
|
40193
40385
|
return axis;
|
|
@@ -40235,7 +40427,7 @@ class Chart {
|
|
|
40235
40427
|
}
|
|
40236
40428
|
loadingDiv.className = 'highcharts-loading';
|
|
40237
40429
|
// Update text
|
|
40238
|
-
HTML_AST.setElementHTML(loadingSpan,
|
|
40430
|
+
HTML_AST.setElementHTML(loadingSpan, (str ?? options.lang.loading ?? ''));
|
|
40239
40431
|
if (!chart.styledMode) {
|
|
40240
40432
|
// Update visuals
|
|
40241
40433
|
css(loadingDiv, extend(loadingStyle, { zIndex: 10 }));
|
|
@@ -40246,7 +40438,7 @@ class Chart {
|
|
|
40246
40438
|
opacity: 0,
|
|
40247
40439
|
display: ''
|
|
40248
40440
|
});
|
|
40249
|
-
|
|
40441
|
+
animate(loadingDiv, {
|
|
40250
40442
|
opacity: loadingStyle.opacity ?? 0.5
|
|
40251
40443
|
}, {
|
|
40252
40444
|
duration: loadingOptions?.showDuration ?? 0
|
|
@@ -40274,7 +40466,7 @@ class Chart {
|
|
|
40274
40466
|
loadingDiv.className =
|
|
40275
40467
|
'highcharts-loading highcharts-loading-hidden';
|
|
40276
40468
|
if (!this.styledMode) {
|
|
40277
|
-
|
|
40469
|
+
animate(loadingDiv, {
|
|
40278
40470
|
opacity: 0
|
|
40279
40471
|
}, {
|
|
40280
40472
|
duration: options.loading?.hideDuration ?? 100,
|
|
@@ -40306,6 +40498,9 @@ class Chart {
|
|
|
40306
40498
|
* Note that when changing series data, `chart.update` may mutate the passed
|
|
40307
40499
|
* data options.
|
|
40308
40500
|
*
|
|
40501
|
+
* If the given options don't differ from the current chart options, the
|
|
40502
|
+
* update is skipped and the `afterUpdate` event is not emitted.
|
|
40503
|
+
*
|
|
40309
40504
|
* See also the
|
|
40310
40505
|
* [responsive option set](https://api.highcharts.com/highcharts/responsive).
|
|
40311
40506
|
* Switching between `responsive.rules` basically runs `chart.update` under
|
|
@@ -40350,14 +40545,24 @@ class Chart {
|
|
|
40350
40545
|
caption: 'setCaption'
|
|
40351
40546
|
}, isResponsiveOptions = options.isResponsiveOptions, itemsForRemoval = [];
|
|
40352
40547
|
let updateAllAxes, updateAllSeries, runSetSize;
|
|
40353
|
-
|
|
40548
|
+
options = diffObjects(options, chart.options);
|
|
40549
|
+
const e = {
|
|
40550
|
+
options,
|
|
40551
|
+
// Event handlers can turn this on or off to control further
|
|
40552
|
+
// processing
|
|
40553
|
+
hasChanged: !!Object.keys(options).length
|
|
40554
|
+
};
|
|
40555
|
+
fireEvent(chart, 'update', e);
|
|
40556
|
+
// If no changes are detected, stop further processing (#24805).
|
|
40557
|
+
if (!e.hasChanged) {
|
|
40558
|
+
return;
|
|
40559
|
+
}
|
|
40354
40560
|
// If there are responsive rules in action, undo the responsive rules
|
|
40355
40561
|
// before we apply the updated options and replay the responsive rules
|
|
40356
40562
|
// on top from the chart.redraw function (#9617).
|
|
40357
40563
|
if (!isResponsiveOptions) {
|
|
40358
40564
|
chart.setResponsive(false, true);
|
|
40359
40565
|
}
|
|
40360
|
-
options = diffObjects(options, chart.options);
|
|
40361
40566
|
chart.userOptions = merge(chart.userOptions, options);
|
|
40362
40567
|
// If the top-level chart option is present, some special updates are
|
|
40363
40568
|
// required
|
|
@@ -40460,7 +40665,7 @@ class Chart {
|
|
|
40460
40665
|
}
|
|
40461
40666
|
// No match by id found, match by index instead
|
|
40462
40667
|
if (!item && chart[coll]) {
|
|
40463
|
-
item = chart[coll][
|
|
40668
|
+
item = chart[coll][(newOptions.index ?? i)];
|
|
40464
40669
|
// Check if we grabbed an item with an existing but
|
|
40465
40670
|
// different id (#13541). Check that the item in this
|
|
40466
40671
|
// position is not internal (navigator).
|
|
@@ -40536,7 +40741,7 @@ class Chart {
|
|
|
40536
40741
|
(isNumber(newHeight) && newHeight !== chart.chartHeight)) {
|
|
40537
40742
|
chart.setSize(newWidth, newHeight, animation);
|
|
40538
40743
|
}
|
|
40539
|
-
else if (
|
|
40744
|
+
else if (redraw ?? true) {
|
|
40540
40745
|
chart.redraw(animation);
|
|
40541
40746
|
}
|
|
40542
40747
|
fireEvent(chart, 'afterUpdate', {
|
|
@@ -40585,15 +40790,11 @@ class Chart {
|
|
|
40585
40790
|
showResetZoom() {
|
|
40586
40791
|
const chart = this, lang = chart.options.lang, btnOptions = chart.zooming.resetButton, theme = btnOptions.theme, alignTo = (btnOptions.relativeTo === 'chart' ||
|
|
40587
40792
|
btnOptions.relativeTo === 'spacingBox' ?
|
|
40588
|
-
|
|
40793
|
+
void 0 :
|
|
40589
40794
|
'plotBox');
|
|
40590
|
-
|
|
40591
|
-
function zoomOut() {
|
|
40592
|
-
chart.zoomOut();
|
|
40593
|
-
}
|
|
40594
|
-
fireEvent(this, 'beforeShowResetZoom', null, function () {
|
|
40795
|
+
fireEvent(this, 'beforeShowResetZoom', void 0, () => {
|
|
40595
40796
|
chart.resetZoomButton = chart.renderer
|
|
40596
|
-
.button(lang.resetZoom,
|
|
40797
|
+
.button(lang.resetZoom, 0, 0, () => chart.zoomOut(), theme)
|
|
40597
40798
|
.attr({
|
|
40598
40799
|
align: btnOptions.position.align,
|
|
40599
40800
|
title: lang.resetZoomTitle
|
|
@@ -40671,21 +40872,21 @@ class Chart {
|
|
|
40671
40872
|
* @function Highcharts.Chart#transform
|
|
40672
40873
|
*/
|
|
40673
40874
|
transform(params) {
|
|
40674
|
-
const { axes = this.axes, event, from = {}, reset, selection, to = {}, trigger, allowResetButton = true } = params, {
|
|
40875
|
+
const { axes = this.axes, event, from = {}, reset, selection, to = {}, trigger, allowResetButton = true } = params, { time } = this;
|
|
40675
40876
|
// Remove active points for shared tooltip
|
|
40676
40877
|
this.hoverPoints?.forEach((point) => point.setState());
|
|
40677
40878
|
fireEvent(this, 'transform', params);
|
|
40678
40879
|
let hasZoomed = params.hasZoomed || false, displayButton, isAnyAxisPanning;
|
|
40679
40880
|
for (const axis of axes) {
|
|
40680
|
-
const { horiz, len, minPointOffset = 0, options, reversed } = axis, wh = horiz ? 'width' : 'height', xy = horiz ? 'x' : 'y', toLength =
|
|
40881
|
+
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),
|
|
40681
40882
|
// If fingers pinched very close on this axis, treat as pan
|
|
40682
40883
|
scale = Math.abs(toLength) < 10 ?
|
|
40683
40884
|
1 :
|
|
40684
40885
|
toLength / fromLength, fromCenter = (from[xy] || 0) + fromLength / 2 - axis.pos, toCenter = (to[xy] ?? axis.pos) +
|
|
40685
|
-
toLength / 2 - axis.pos, move = fromCenter - toCenter / scale, pointRangeDirection = (
|
|
40686
|
-
(!
|
|
40687
|
-
|
|
40688
|
-
1, minPx = move;
|
|
40886
|
+
toLength / 2 - axis.pos, move = fromCenter - toCenter / scale, pointRangeDirection = ((horiz && !reversed) ||
|
|
40887
|
+
(!horiz && reversed)) ?
|
|
40888
|
+
1 :
|
|
40889
|
+
-1, minPx = move;
|
|
40689
40890
|
// Zooming in multiple panes, zoom only in the pane that receives
|
|
40690
40891
|
// the input
|
|
40691
40892
|
if (!reset && (fromCenter < 0 || fromCenter > axis.len)) {
|
|
@@ -40694,17 +40895,11 @@ class Chart {
|
|
|
40694
40895
|
// Adjust offset to ensure selection zoom triggers correctly
|
|
40695
40896
|
// (#22945)
|
|
40696
40897
|
// Set offset to 0 for ordinal axis only when zooming out, (#24545).
|
|
40697
|
-
const offset = (axis.chart.polar ||
|
|
40898
|
+
const offset = (selection || axis.chart.polar ||
|
|
40899
|
+
(axis.isOrdinal && scale <= 1)) ?
|
|
40698
40900
|
0 :
|
|
40699
40901
|
(minPointOffset * pointRangeDirection || 0), eventMin = axis.toValue(minPx, true), eventMax = axis.toValue(minPx + len / scale, true);
|
|
40700
40902
|
let newMin = eventMin + offset, newMax = eventMax - offset, allExtremes = axis.allExtremes;
|
|
40701
|
-
if (selection) {
|
|
40702
|
-
selection[axis.coll].push({
|
|
40703
|
-
axis,
|
|
40704
|
-
min: Math.min(eventMin, eventMax),
|
|
40705
|
-
max: Math.max(eventMin, eventMax)
|
|
40706
|
-
});
|
|
40707
|
-
}
|
|
40708
40903
|
if (newMin > newMax) {
|
|
40709
40904
|
[newMin, newMax] = [newMax, newMin];
|
|
40710
40905
|
}
|
|
@@ -40761,14 +40956,15 @@ class Chart {
|
|
|
40761
40956
|
}
|
|
40762
40957
|
// Set new extremes if they are actually new
|
|
40763
40958
|
if (reset || (axis.series.length &&
|
|
40764
|
-
(
|
|
40765
|
-
|
|
40766
|
-
|
|
40959
|
+
(selection ||
|
|
40960
|
+
((newMin !== min || newMax !== max) &&
|
|
40961
|
+
newMin >= floor &&
|
|
40962
|
+
newMax <= ceiling)))) {
|
|
40767
40963
|
if (selection) {
|
|
40768
40964
|
selection[axis.coll].push({
|
|
40769
40965
|
axis,
|
|
40770
|
-
min:
|
|
40771
|
-
max:
|
|
40966
|
+
min: Math.min(eventMin, eventMax),
|
|
40967
|
+
max: Math.max(eventMin, eventMax)
|
|
40772
40968
|
});
|
|
40773
40969
|
}
|
|
40774
40970
|
else {
|
|
@@ -40776,11 +40972,14 @@ class Chart {
|
|
|
40776
40972
|
// disallow certain axis padding options that would make
|
|
40777
40973
|
// panning/zooming hard. Reset and redraw after the
|
|
40778
40974
|
// operation has finished.
|
|
40779
|
-
axis.isPanning = trigger !== 'zoom'
|
|
40975
|
+
axis.isPanning = trigger !== 'zoom' &&
|
|
40976
|
+
trigger !== 'drop';
|
|
40780
40977
|
if (axis.isPanning && trigger !== 'mousewheel') {
|
|
40781
40978
|
isAnyAxisPanning = true; // #21319
|
|
40782
40979
|
}
|
|
40783
|
-
|
|
40980
|
+
if (trigger !== 'drop') {
|
|
40981
|
+
axis.setExtremes(reset ? void 0 : newMin, reset ? void 0 : newMax, false, false, { move, trigger, scale });
|
|
40982
|
+
}
|
|
40784
40983
|
if (!reset &&
|
|
40785
40984
|
(newMin > floor || newMax < ceiling)) {
|
|
40786
40985
|
displayButton = allowResetButton;
|
|
@@ -40811,7 +41010,8 @@ class Chart {
|
|
|
40811
41010
|
});
|
|
40812
41011
|
}
|
|
40813
41012
|
else {
|
|
40814
|
-
// Show or hide the Reset zoom button, but not while
|
|
41013
|
+
// Show or hide the Reset zoom button, but not while
|
|
41014
|
+
// panning.
|
|
40815
41015
|
if (displayButton &&
|
|
40816
41016
|
!isAnyAxisPanning &&
|
|
40817
41017
|
!this.resetZoomButton) {
|
|
@@ -41053,7 +41253,6 @@ extend(Chart.prototype, {
|
|
|
41053
41253
|
*/
|
|
41054
41254
|
|
|
41055
41255
|
|
|
41056
|
-
const { stop: ScrollablePlotArea_stop } = AnimationUtilities;
|
|
41057
41256
|
|
|
41058
41257
|
const { composed: ScrollablePlotArea_composed } = Core_Globals;
|
|
41059
41258
|
|
|
@@ -41219,7 +41418,7 @@ class ScrollablePlotArea {
|
|
|
41219
41418
|
this.moveFixedElements();
|
|
41220
41419
|
}
|
|
41221
41420
|
// Increase the size of the scrollable renderer and background
|
|
41222
|
-
|
|
41421
|
+
stop(chart.container);
|
|
41223
41422
|
css(container, {
|
|
41224
41423
|
width: `${scrollableWidth}px`,
|
|
41225
41424
|
height: `${scrollableHeight}px`
|
|
@@ -41376,6 +41575,13 @@ ScrollablePlotArea.fixedSelectors = [
|
|
|
41376
41575
|
* vertical scrolling, depending on whether the `minWidth` or `minHeight`
|
|
41377
41576
|
* option is set.
|
|
41378
41577
|
*
|
|
41578
|
+
* **Note:** Because native browser scrollbars are used, they may
|
|
41579
|
+
* overlap with fixed chart elements such as credits or the chart
|
|
41580
|
+
* border. To avoid this collision, it is recommended to manually add
|
|
41581
|
+
* extra space to the corresponding side using `chart.spacingBottom`
|
|
41582
|
+
* (for horizontal scrollbars) or `chart.spacingRight` (for vertical
|
|
41583
|
+
* scrollbars).
|
|
41584
|
+
*
|
|
41379
41585
|
* @sample highcharts/chart/scrollable-plotarea
|
|
41380
41586
|
* Scrollable plot area
|
|
41381
41587
|
* @sample highcharts/chart/scrollable-plotarea-vertical
|
|
@@ -41536,7 +41742,7 @@ class StackItem {
|
|
|
41536
41742
|
r: options.borderRadius || 0,
|
|
41537
41743
|
text: str,
|
|
41538
41744
|
// Set default padding to 5 as it is in dataLabels #12308
|
|
41539
|
-
padding:
|
|
41745
|
+
padding: (options.padding ?? 5),
|
|
41540
41746
|
visibility: 'hidden' // Hidden until setOffset is called
|
|
41541
41747
|
};
|
|
41542
41748
|
if (!chart.styledMode) {
|
|
@@ -41570,7 +41776,7 @@ class StackItem {
|
|
|
41570
41776
|
}), { verticalAlign } = alignOptions;
|
|
41571
41777
|
if (label && stackBox) {
|
|
41572
41778
|
const labelBox = label.getBBox(void 0, 0), padding = label.padding;
|
|
41573
|
-
let isJustify =
|
|
41779
|
+
let isJustify = (options.overflow ?? 'justify') === 'justify', visible;
|
|
41574
41780
|
// Reset alignOptions property after justify #12337
|
|
41575
41781
|
alignOptions.x = options.x || 0;
|
|
41576
41782
|
alignOptions.y = options.y || 0;
|
|
@@ -41607,7 +41813,7 @@ class StackItem {
|
|
|
41607
41813
|
rotationOriginY: labelBox.height / 2
|
|
41608
41814
|
});
|
|
41609
41815
|
// Check if the dataLabel should be visible.
|
|
41610
|
-
if (
|
|
41816
|
+
if (((!isJustify && options.crop) ?? true)) {
|
|
41611
41817
|
visible =
|
|
41612
41818
|
isNumber(label.x) &&
|
|
41613
41819
|
isNumber(label.y) &&
|
|
@@ -41641,7 +41847,7 @@ class StackItem {
|
|
|
41641
41847
|
getStackBox(stackBoxProps) {
|
|
41642
41848
|
const stackItem = this, axis = this.axis, chart = axis.chart, { boxTop, defaultX, xOffset, width, boxBottom } = stackBoxProps, totalStackValue = axis.stacking.usePercentage ?
|
|
41643
41849
|
100 :
|
|
41644
|
-
|
|
41850
|
+
(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 ||
|
|
41645
41851
|
(isNumber(axis.min) &&
|
|
41646
41852
|
axis.logarithmic &&
|
|
41647
41853
|
axis.logarithmic.lin2log(axis.min)) ||
|
|
@@ -41726,7 +41932,6 @@ class StackItem {
|
|
|
41726
41932
|
* */
|
|
41727
41933
|
|
|
41728
41934
|
|
|
41729
|
-
const { getDeferredAnimation: StackingAxis_getDeferredAnimation } = AnimationUtilities;
|
|
41730
41935
|
|
|
41731
41936
|
const { series: { prototype: seriesProto } } = Series_SeriesRegistry;
|
|
41732
41937
|
|
|
@@ -41755,7 +41960,7 @@ function chartGetStacks() {
|
|
|
41755
41960
|
if (series.options.stacking && series.reserveSpace()) {
|
|
41756
41961
|
series.stackKey = [
|
|
41757
41962
|
series.type,
|
|
41758
|
-
|
|
41963
|
+
(series.options.stack ?? ''),
|
|
41759
41964
|
inverted ? xAxisOptions.top : xAxisOptions.left,
|
|
41760
41965
|
inverted ? xAxisOptions.height : xAxisOptions.width
|
|
41761
41966
|
].join(',');
|
|
@@ -41918,7 +42123,7 @@ function seriesSetStackedPoints(axis, stackingParam) {
|
|
|
41918
42123
|
stack = stacks[key][x];
|
|
41919
42124
|
if (y !== null) {
|
|
41920
42125
|
stack.points[pointKey] = stack.points[series.index] = [
|
|
41921
|
-
|
|
42126
|
+
(stack.cumulative ?? stackThreshold)
|
|
41922
42127
|
];
|
|
41923
42128
|
// Record the base of the stack
|
|
41924
42129
|
if (!defined(stack.cumulative)) {
|
|
@@ -41966,7 +42171,7 @@ function seriesSetStackedPoints(axis, stackingParam) {
|
|
|
41966
42171
|
stack.cumulative = (total || 1) - 1;
|
|
41967
42172
|
}
|
|
41968
42173
|
else {
|
|
41969
|
-
stack.cumulative = correctFloat(
|
|
42174
|
+
stack.cumulative = correctFloat((stack.cumulative ?? stackThreshold) + yNumber);
|
|
41970
42175
|
}
|
|
41971
42176
|
stack.total = total;
|
|
41972
42177
|
if (y !== null) {
|
|
@@ -42070,7 +42275,7 @@ class AxisAdditions {
|
|
|
42070
42275
|
}
|
|
42071
42276
|
/** @internal */
|
|
42072
42277
|
renderStackTotals() {
|
|
42073
|
-
const stacking = this, axis = stacking.axis, chart = axis.chart, renderer = chart.renderer, stacks = stacking.stacks, stackLabelsAnim = axis.options.stackLabels?.animation, animationConfig =
|
|
42278
|
+
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 ||
|
|
42074
42279
|
renderer
|
|
42075
42280
|
.g('stack-labels')
|
|
42076
42281
|
.attr({
|
|
@@ -42981,8 +43186,7 @@ class AreaSeries extends AreaSeries_LineSeries {
|
|
|
42981
43186
|
*/
|
|
42982
43187
|
getGraphPath(points) {
|
|
42983
43188
|
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
|
|
42984
|
-
yAxis.getThreshold(options.threshold)), connectNulls =
|
|
42985
|
-
options.connectNulls, stacking === 'percent'),
|
|
43189
|
+
yAxis.getThreshold(options.threshold)), connectNulls = (options.connectNulls ?? stacking === 'percent'),
|
|
42986
43190
|
// To display null points in underlying stacked series, this
|
|
42987
43191
|
// series graph must be broken, and the area also fall down to
|
|
42988
43192
|
// fill the gap left by the null point. #2069
|
|
@@ -43035,9 +43239,9 @@ class AreaSeries extends AreaSeries_LineSeries {
|
|
|
43035
43239
|
// Treat points with undefined plotY as null (e.g. non-positive
|
|
43036
43240
|
// values on logarithmic axis, #18422)
|
|
43037
43241
|
isNull = points[i].isNull || !defined(points[i].plotY);
|
|
43038
|
-
plotX =
|
|
43242
|
+
plotX = (points[i].rectPlotX ?? points[i].plotX);
|
|
43039
43243
|
yBottom = stacking ?
|
|
43040
|
-
|
|
43244
|
+
(points[i].yBottom ?? translatedThreshold) :
|
|
43041
43245
|
translatedThreshold;
|
|
43042
43246
|
if (!isNull || connectNulls) {
|
|
43043
43247
|
if (!connectNulls) {
|
|
@@ -43375,10 +43579,10 @@ class SplineSeries extends SplineSeries_LineSeries {
|
|
|
43375
43579
|
}
|
|
43376
43580
|
const ret = [
|
|
43377
43581
|
'C',
|
|
43378
|
-
|
|
43379
|
-
|
|
43380
|
-
|
|
43381
|
-
|
|
43582
|
+
(lastPoint.rightContX ?? lastPoint.plotX ?? 0),
|
|
43583
|
+
(lastPoint.rightContY ?? lastPoint.plotY ?? 0),
|
|
43584
|
+
(leftContX ?? plotX ?? 0),
|
|
43585
|
+
(leftContY ?? plotY ?? 0),
|
|
43382
43586
|
plotX,
|
|
43383
43587
|
plotY
|
|
43384
43588
|
];
|
|
@@ -43823,6 +44027,8 @@ const ColumnSeriesDefaults = {
|
|
|
43823
44027
|
* 0.25
|
|
43824
44028
|
* @sample {highcharts} highcharts/plotoptions/column-pointpadding-none/
|
|
43825
44029
|
* 0 for tightly packed columns
|
|
44030
|
+
* @sample {highcharts} highcharts/plotoptions/pie-pointpadding/
|
|
44031
|
+
* Pie point padding plugin
|
|
43826
44032
|
*
|
|
43827
44033
|
* @product highcharts highstock gantt
|
|
43828
44034
|
*/
|
|
@@ -44154,12 +44360,12 @@ const ColumnSeriesDefaults = {
|
|
|
44154
44360
|
*/
|
|
44155
44361
|
/**
|
|
44156
44362
|
* @excluding halo, lineWidth, lineWidthPlus, marker
|
|
44157
|
-
* @product highcharts highstock
|
|
44363
|
+
* @product highcharts highstock gantt
|
|
44158
44364
|
* @apioption series.column.states.hover
|
|
44159
44365
|
*/
|
|
44160
44366
|
/**
|
|
44161
44367
|
* @excluding halo, lineWidth, lineWidthPlus, marker
|
|
44162
|
-
* @product highcharts highstock
|
|
44368
|
+
* @product highcharts highstock gantt
|
|
44163
44369
|
* @apioption series.column.states.select
|
|
44164
44370
|
*/
|
|
44165
44371
|
/**
|
|
@@ -44189,7 +44395,6 @@ const ColumnSeriesDefaults = {
|
|
|
44189
44395
|
* */
|
|
44190
44396
|
|
|
44191
44397
|
|
|
44192
|
-
const { animObject: ColumnSeries_animObject } = AnimationUtilities;
|
|
44193
44398
|
|
|
44194
44399
|
const { parse: ColumnSeries_color } = Color_Color;
|
|
44195
44400
|
|
|
@@ -44260,7 +44465,7 @@ class ColumnSeries extends Series_Series {
|
|
|
44260
44465
|
}
|
|
44261
44466
|
else { // Run the animation
|
|
44262
44467
|
translateStart = Number(series.group.attr(translateProp));
|
|
44263
|
-
series.group.animate({ scaleY: 1 }, extend(
|
|
44468
|
+
series.group.animate({ scaleY: 1 }, extend(animObject(series.options.animation), {
|
|
44264
44469
|
// Do the scale synchronously to ensure smooth
|
|
44265
44470
|
// updating (#5030, #7228)
|
|
44266
44471
|
step: function (val, fx) {
|
|
@@ -44346,7 +44551,7 @@ class ColumnSeries extends Series_Series {
|
|
|
44346
44551
|
xAxis.tickInterval ||
|
|
44347
44552
|
1), // #2610
|
|
44348
44553
|
xAxis.len // #1535
|
|
44349
|
-
), groupPadding = categoryWidth * options.groupPadding, groupWidth = categoryWidth - 2 * groupPadding, pointOffsetWidth = groupWidth / (columnCount || 1), pointWidth = Math.min(options.maxPointWidth || xAxis.len,
|
|
44554
|
+
), 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,
|
|
44350
44555
|
// #1251, #3737
|
|
44351
44556
|
colIndex = (series.columnIndex || 0) + (reverseStacks ? 1 : 0), pointXOffset = pointPadding +
|
|
44352
44557
|
(groupPadding +
|
|
@@ -44596,11 +44801,11 @@ class ColumnSeries extends Series_Series {
|
|
|
44596
44801
|
*/
|
|
44597
44802
|
pointAttribs(point, state) {
|
|
44598
44803
|
const options = this.options, p2o = this.pointAttrToOptions || {}, strokeOption = p2o.stroke || 'borderColor', strokeWidthOption = p2o['stroke-width'] || 'borderWidth';
|
|
44599
|
-
let stateOptions, zone, brightness, fill =
|
|
44804
|
+
let stateOptions, zone, brightness, fill = point?.color || this.color,
|
|
44600
44805
|
// Set to fill when borderColor null:
|
|
44601
|
-
stroke = (
|
|
44806
|
+
stroke = (point?.[strokeOption] ||
|
|
44602
44807
|
options[strokeOption] ||
|
|
44603
|
-
fill), dashstyle =
|
|
44808
|
+
fill), dashstyle = point?.options.dashStyle || options.dashStyle, strokeWidth = point?.[strokeWidthOption] ??
|
|
44604
44809
|
options[strokeWidthOption] ??
|
|
44605
44810
|
this[strokeWidthOption] ?? 1, opacity = (point?.isNull && options.nullInteraction) ?
|
|
44606
44811
|
0 :
|
|
@@ -44621,7 +44826,7 @@ class ColumnSeries extends Series_Series {
|
|
|
44621
44826
|
}
|
|
44622
44827
|
// Select or hover states
|
|
44623
44828
|
if (state && point) {
|
|
44624
|
-
stateOptions = merge(options.states[state],
|
|
44829
|
+
stateOptions = merge(options.states?.[state],
|
|
44625
44830
|
// #6401
|
|
44626
44831
|
point.options.states?.[state] || {});
|
|
44627
44832
|
brightness = stateOptions.brightness;
|
|
@@ -44631,14 +44836,13 @@ class ColumnSeries extends Series_Series {
|
|
|
44631
44836
|
.brighten(stateOptions.brightness)
|
|
44632
44837
|
.get()) || fill;
|
|
44633
44838
|
stroke = stateOptions[strokeOption] || stroke;
|
|
44634
|
-
strokeWidth =
|
|
44635
|
-
stateOptions[strokeWidthOption] || strokeWidth;
|
|
44839
|
+
strokeWidth = stateOptions[strokeWidthOption] || strokeWidth;
|
|
44636
44840
|
dashstyle = stateOptions.dashStyle || dashstyle;
|
|
44637
|
-
opacity =
|
|
44841
|
+
opacity = stateOptions.opacity ?? opacity;
|
|
44638
44842
|
}
|
|
44639
44843
|
const ret = {
|
|
44640
|
-
fill
|
|
44641
|
-
stroke
|
|
44844
|
+
fill,
|
|
44845
|
+
stroke,
|
|
44642
44846
|
'stroke-width': strokeWidth,
|
|
44643
44847
|
opacity: point?.condemned ? 0 : opacity
|
|
44644
44848
|
};
|
|
@@ -44679,6 +44883,7 @@ class ColumnSeries extends Series_Series {
|
|
|
44679
44883
|
initialAttr = merge(shapeArgs, point.getOrigin(point.origin, shapeArgs));
|
|
44680
44884
|
if (!styledMode) {
|
|
44681
44885
|
initialAttr.opacity = 0;
|
|
44886
|
+
initialAttr['stroke-width'] = 0;
|
|
44682
44887
|
}
|
|
44683
44888
|
shouldUpdate = true;
|
|
44684
44889
|
verb = 'animate';
|
|
@@ -44694,7 +44899,7 @@ class ColumnSeries extends Series_Series {
|
|
|
44694
44899
|
}
|
|
44695
44900
|
// Presentational
|
|
44696
44901
|
if (!styledMode) {
|
|
44697
|
-
graphic[verb](series.pointAttribs(point,
|
|
44902
|
+
graphic[verb](series.pointAttribs(point, point.selected ? 'select' : ''))
|
|
44698
44903
|
.shadow(point.allowShadow !== false && options.shadow);
|
|
44699
44904
|
}
|
|
44700
44905
|
graphic
|
|
@@ -44818,6 +45023,7 @@ Series_SeriesRegistry.registerSeriesType('column', ColumnSeries);
|
|
|
44818
45023
|
* Default Export
|
|
44819
45024
|
*
|
|
44820
45025
|
* */
|
|
45026
|
+
/** @internal */
|
|
44821
45027
|
/* harmony default export */ const Column_ColumnSeries = (ColumnSeries);
|
|
44822
45028
|
/* *
|
|
44823
45029
|
*
|
|
@@ -44854,7 +45060,6 @@ Series_SeriesRegistry.registerSeriesType('column', ColumnSeries);
|
|
|
44854
45060
|
* */
|
|
44855
45061
|
|
|
44856
45062
|
|
|
44857
|
-
const { getDeferredAnimation: DataLabel_getDeferredAnimation } = AnimationUtilities;
|
|
44858
45063
|
|
|
44859
45064
|
const { format: DataLabel_format } = Core_Templating;
|
|
44860
45065
|
|
|
@@ -44910,7 +45115,7 @@ var DataLabel;
|
|
|
44910
45115
|
// that parts of the align box is inside the plot area
|
|
44911
45116
|
// (#12370). When stacking, it is always inside regardless
|
|
44912
45117
|
// of the option (#15148).
|
|
44913
|
-
|
|
45118
|
+
(options.inside ?? !!this.options.stacking) &&
|
|
44914
45119
|
alignTo &&
|
|
44915
45120
|
chart.isInsidePlot(plotX, inverted ?
|
|
44916
45121
|
alignTo.x + 1 :
|
|
@@ -45013,8 +45218,8 @@ var DataLabel;
|
|
|
45013
45218
|
// zIndex: 20
|
|
45014
45219
|
// }).add();
|
|
45015
45220
|
// chart.renderer.circle(
|
|
45016
|
-
// chart.plotLeft +
|
|
45017
|
-
// chart.plotTop +
|
|
45221
|
+
// chart.plotLeft + (dataLabel.alignAttr.x ?? 0),
|
|
45222
|
+
// chart.plotTop + (dataLabel.alignAttr.y ?? 0),
|
|
45018
45223
|
// 2
|
|
45019
45224
|
// ).attr({
|
|
45020
45225
|
// fill: 'red',
|
|
@@ -45171,7 +45376,7 @@ var DataLabel;
|
|
|
45171
45376
|
'var(--highcharts-background-color)'), groupByIndex = [], seriesDlOptions = mergedDataLabelOptions(series);
|
|
45172
45377
|
// Resolve the animation
|
|
45173
45378
|
const { animation, defer } = seriesDlOptions[0], animationConfig = defer ?
|
|
45174
|
-
|
|
45379
|
+
getDeferredAnimation(chart, animation, series) :
|
|
45175
45380
|
{ defer: 0, duration: 0 };
|
|
45176
45381
|
fireEvent(this, 'drawDataLabels');
|
|
45177
45382
|
if (series.hasDataLabels?.()) {
|
|
@@ -45197,7 +45402,7 @@ var DataLabel;
|
|
|
45197
45402
|
if (labelEnabled) {
|
|
45198
45403
|
// Create individual options structure that can be
|
|
45199
45404
|
// extended without affecting others
|
|
45200
|
-
formatString =
|
|
45405
|
+
formatString = (labelOptions[point.formatPrefix + 'Format'] ?? labelOptions.format);
|
|
45201
45406
|
labelText = defined(formatString) ?
|
|
45202
45407
|
DataLabel_format(formatString, point, chart) :
|
|
45203
45408
|
(labelOptions[point.formatPrefix + 'Formatter'] ||
|
|
@@ -45205,7 +45410,9 @@ var DataLabel;
|
|
|
45205
45410
|
rotation = labelOptions.rotation;
|
|
45206
45411
|
if (!chart.styledMode) {
|
|
45207
45412
|
// Determine the color
|
|
45208
|
-
style.color =
|
|
45413
|
+
style.color = (isString(labelOptions.color) ?
|
|
45414
|
+
labelOptions.color :
|
|
45415
|
+
void 0) ?? style.color ?? (isString(series.color) ? series.color : void 0) ?? 'var(--highcharts-neutral-color-100)';
|
|
45209
45416
|
// Get automated contrast color
|
|
45210
45417
|
if (style.color === 'contrast') {
|
|
45211
45418
|
if (backgroundColor !== 'none') {
|
|
@@ -45937,6 +46144,8 @@ const ScatterSeriesDefaults = {
|
|
|
45937
46144
|
* Arrays of datetime x and y
|
|
45938
46145
|
* @sample {highcharts} highcharts/series/data-array-of-name-value/
|
|
45939
46146
|
* Arrays of point.name and y
|
|
46147
|
+
* @sample {highcharts} highcharts/series-scatter/scatter-cluster/
|
|
46148
|
+
* Computed clusters
|
|
45940
46149
|
* @sample {highcharts} highcharts/series/data-array-of-objects/
|
|
45941
46150
|
* Config objects
|
|
45942
46151
|
*
|
|
@@ -46004,14 +46213,15 @@ class ScatterSeries extends ScatterSeries_LineSeries {
|
|
|
46004
46213
|
return rand - Math.floor(rand);
|
|
46005
46214
|
}
|
|
46006
46215
|
if (jitter) {
|
|
46007
|
-
this.points.forEach(
|
|
46008
|
-
['x', 'y'].forEach(
|
|
46216
|
+
this.points.forEach((point, i) => {
|
|
46217
|
+
['x', 'y'].forEach((dim, j) => {
|
|
46009
46218
|
if (jitter[dim] && !point.isNull) {
|
|
46010
|
-
const plotProp = `plot${dim.toUpperCase()}`, axis = series[`${dim}Axis`]
|
|
46011
|
-
axis.transA;
|
|
46219
|
+
const plotProp = `plot${dim.toUpperCase()}`, axis = series[`${dim}Axis`];
|
|
46012
46220
|
if (axis && !axis.logarithmic) {
|
|
46013
46221
|
// Identify the outer bounds of the jitter range
|
|
46014
|
-
|
|
46222
|
+
// (#25054)
|
|
46223
|
+
const translatedJitter = jitter[dim] * axis.transA *
|
|
46224
|
+
(axis.reversed ? -1 : 1), min = (point[plotProp] || 0) - translatedJitter, max = (point[plotProp] || 0) + translatedJitter;
|
|
46015
46225
|
// Find a random position within this range
|
|
46016
46226
|
point[plotProp] = min +
|
|
46017
46227
|
(max - min) * unrandom(i + j * len);
|
|
@@ -46085,7 +46295,7 @@ Series_SeriesRegistry.registerSeriesType('scatter', ScatterSeries);
|
|
|
46085
46295
|
const { deg2rad: CenteredUtilities_deg2rad } = Core_Globals;
|
|
46086
46296
|
|
|
46087
46297
|
/**
|
|
46088
|
-
* @
|
|
46298
|
+
* @internal
|
|
46089
46299
|
*/
|
|
46090
46300
|
var CenteredUtilities;
|
|
46091
46301
|
(function (CenteredUtilities) {
|
|
@@ -46103,7 +46313,7 @@ var CenteredUtilities;
|
|
|
46103
46313
|
* Get the center of the pie based on the size and center options relative
|
|
46104
46314
|
* to the plot area. Borrowed by the polar and gauge series types.
|
|
46105
46315
|
*
|
|
46106
|
-
* @
|
|
46316
|
+
* @internal
|
|
46107
46317
|
* @function Highcharts.CenteredSeriesMixin.getCenter
|
|
46108
46318
|
*/
|
|
46109
46319
|
function getCenter() {
|
|
@@ -46116,11 +46326,13 @@ var CenteredUtilities;
|
|
|
46116
46326
|
innerSize = parseFloat(innerSize);
|
|
46117
46327
|
}
|
|
46118
46328
|
const positions = [
|
|
46119
|
-
|
|
46120
|
-
|
|
46329
|
+
(centerOption?.[0] ?? '50%'),
|
|
46330
|
+
(centerOption?.[1] ?? '50%'),
|
|
46121
46331
|
// Prevent from negative values
|
|
46122
|
-
|
|
46123
|
-
|
|
46332
|
+
((size && size < 0 ? void 0 : options.size) ?? '100%'),
|
|
46333
|
+
((innerSize && innerSize < 0 ?
|
|
46334
|
+
void 0 :
|
|
46335
|
+
options.innerSize || 0) ?? '0%')
|
|
46124
46336
|
];
|
|
46125
46337
|
for (i = 0; i < 4; ++i) {
|
|
46126
46338
|
value = positions[i];
|
|
@@ -46148,7 +46360,7 @@ var CenteredUtilities;
|
|
|
46148
46360
|
* GetStartAndEndRadians - Calculates start and end angles in radians.
|
|
46149
46361
|
* Used in series types such as pie and sunburst.
|
|
46150
46362
|
*
|
|
46151
|
-
* @
|
|
46363
|
+
* @internal
|
|
46152
46364
|
* @function Highcharts.CenteredSeriesMixin.getStartAndEndRadians
|
|
46153
46365
|
*
|
|
46154
46366
|
* @param {number} [start]
|
|
@@ -46180,6 +46392,7 @@ var CenteredUtilities;
|
|
|
46180
46392
|
* Default Export
|
|
46181
46393
|
*
|
|
46182
46394
|
* */
|
|
46395
|
+
/** @internal */
|
|
46183
46396
|
/* harmony default export */ const Series_CenteredUtilities = (CenteredUtilities);
|
|
46184
46397
|
/* *
|
|
46185
46398
|
*
|
|
@@ -46187,7 +46400,7 @@ var CenteredUtilities;
|
|
|
46187
46400
|
*
|
|
46188
46401
|
* */
|
|
46189
46402
|
/**
|
|
46190
|
-
* @
|
|
46403
|
+
* @internal
|
|
46191
46404
|
* @interface Highcharts.RadianAngles
|
|
46192
46405
|
*/ /**
|
|
46193
46406
|
* @name Highcharts.RadianAngles#end
|
|
@@ -46212,7 +46425,6 @@ var CenteredUtilities;
|
|
|
46212
46425
|
* */
|
|
46213
46426
|
|
|
46214
46427
|
|
|
46215
|
-
const { setAnimation: PiePoint_setAnimation } = AnimationUtilities;
|
|
46216
46428
|
|
|
46217
46429
|
|
|
46218
46430
|
/* *
|
|
@@ -46320,9 +46532,9 @@ class PiePoint extends Series_Point {
|
|
|
46320
46532
|
*/
|
|
46321
46533
|
slice(sliced, redraw, animation) {
|
|
46322
46534
|
const series = this.series, chart = series.chart;
|
|
46323
|
-
|
|
46535
|
+
setAnimation(animation, chart);
|
|
46324
46536
|
// Redraw is true by default
|
|
46325
|
-
redraw =
|
|
46537
|
+
redraw = (redraw ?? true);
|
|
46326
46538
|
this.sliced = this.options.sliced = sliced ?? !this.sliced;
|
|
46327
46539
|
// Update options.data
|
|
46328
46540
|
if (series.options.data) {
|
|
@@ -47127,7 +47339,8 @@ class PieSeries extends Series_Series {
|
|
|
47127
47339
|
// Start values
|
|
47128
47340
|
graphic.attr({
|
|
47129
47341
|
// Animate from inner radius (#779)
|
|
47130
|
-
r:
|
|
47342
|
+
r: point.startR ??
|
|
47343
|
+
(series.center && series.center[3] / 2),
|
|
47131
47344
|
start: startAngleRad,
|
|
47132
47345
|
end: startAngleRad
|
|
47133
47346
|
});
|
|
@@ -47768,7 +47981,7 @@ var PieDataLabel_ColumnDataLabel;
|
|
|
47768
47981
|
labelPosition.computed.x = x;
|
|
47769
47982
|
labelPosition.computed.y = y - topOffset;
|
|
47770
47983
|
// Detect overflowing data labels
|
|
47771
|
-
if (
|
|
47984
|
+
if (dataLabelOptions.crop ?? true) {
|
|
47772
47985
|
dataLabelWidth = dataLabel.getBBox().width;
|
|
47773
47986
|
let sideOverflow;
|
|
47774
47987
|
// Overflow left
|
|
@@ -48284,7 +48497,10 @@ function OverlappingDataLabels_onChartRender() {
|
|
|
48284
48497
|
if (point.visible) {
|
|
48285
48498
|
(point.dataLabels || []).forEach((label) => {
|
|
48286
48499
|
const options = label.options || {};
|
|
48287
|
-
label.labelrank =
|
|
48500
|
+
label.labelrank =
|
|
48501
|
+
options.labelrank ??
|
|
48502
|
+
point.labelrank ??
|
|
48503
|
+
point.shapeArgs?.height; // #4118
|
|
48288
48504
|
// #21725: Sync target positions for generic overlap
|
|
48289
48505
|
// checking. During animations (e.g., toggling a
|
|
48290
48506
|
// point), DOM positions may overlap. We force
|
|
@@ -48458,7 +48674,7 @@ function BorderRadius_arc(x, y, w, h, options = {}) {
|
|
|
48458
48674
|
if (options.open || !options.borderRadius) {
|
|
48459
48675
|
return path;
|
|
48460
48676
|
}
|
|
48461
|
-
const alpha = end - start, sinHalfAlpha = Math.sin(alpha / 2), borderRadius = Math.max(Math.min(relativeLength(options.borderRadius
|
|
48677
|
+
const alpha = end - start, sinHalfAlpha = Math.sin(alpha / 2), borderRadius = Math.max(Math.min(relativeLength(borderRadiusObject(options.borderRadius).radius, r - innerR),
|
|
48462
48678
|
// Cap to half the sector radius
|
|
48463
48679
|
(r - innerR) / 2,
|
|
48464
48680
|
// For smaller pie slices, cap to the largest small circle that
|
|
@@ -48484,7 +48700,7 @@ function seriesOnAfterColumnTranslate() {
|
|
|
48484
48700
|
if (this.options.borderRadius &&
|
|
48485
48701
|
!(this.chart.is3d && this.chart.is3d())) {
|
|
48486
48702
|
const { options, yAxis } = this, percent = options.stacking === 'percent', seriesDefault = BorderRadius_defaultOptions.plotOptions?.[this.type]
|
|
48487
|
-
?.borderRadius, borderRadius =
|
|
48703
|
+
?.borderRadius, borderRadius = borderRadiusObject(options.borderRadius, isObject(seriesDefault) ? seriesDefault : {}), reversed = yAxis.options.reversed;
|
|
48488
48704
|
for (const point of this.points) {
|
|
48489
48705
|
const { shapeArgs } = point;
|
|
48490
48706
|
if (point.shapeType === 'roundedRect' && shapeArgs) {
|
|
@@ -48556,8 +48772,12 @@ function composeBorderRadius(SeriesClass, SVGElementClass, SVGRendererClass) {
|
|
|
48556
48772
|
symbols.roundedRect = BorderRadius_roundedRect;
|
|
48557
48773
|
}
|
|
48558
48774
|
}
|
|
48559
|
-
/**
|
|
48560
|
-
function
|
|
48775
|
+
/**
|
|
48776
|
+
* Utility function to get the full border radius options object, from a simple
|
|
48777
|
+
* number or a partial options object.
|
|
48778
|
+
* @internal
|
|
48779
|
+
*/
|
|
48780
|
+
function borderRadiusObject(options, seriesBROptions) {
|
|
48561
48781
|
if (!isObject(options)) {
|
|
48562
48782
|
options = { radius: options || 0 };
|
|
48563
48783
|
}
|
|
@@ -48565,7 +48785,7 @@ function optionsToObject(options, seriesBROptions) {
|
|
|
48565
48785
|
}
|
|
48566
48786
|
/** @internal */
|
|
48567
48787
|
function pieSeriesOnAfterTranslate() {
|
|
48568
|
-
const borderRadius =
|
|
48788
|
+
const borderRadius = borderRadiusObject(this.options.borderRadius);
|
|
48569
48789
|
for (const point of this.points) {
|
|
48570
48790
|
const shapeArgs = point.shapeArgs;
|
|
48571
48791
|
if (shapeArgs) {
|
|
@@ -48684,7 +48904,7 @@ function BorderRadius_roundedRect(x, y, width, height, options = {}) {
|
|
|
48684
48904
|
* Column and pie with rounded border
|
|
48685
48905
|
*
|
|
48686
48906
|
* @name Highcharts.BorderRadiusOptionsObject#radius
|
|
48687
|
-
* @type {string|number}
|
|
48907
|
+
* @type {string|number|undefined}
|
|
48688
48908
|
*/ /**
|
|
48689
48909
|
* The scope of the rounding for column charts or plot bands. In a stacked
|
|
48690
48910
|
* column chart, the value `point` means each single point will get rounded
|
|
@@ -48699,8 +48919,7 @@ function BorderRadius_roundedRect(x, y, width, height, options = {}) {
|
|
|
48699
48919
|
* Rounded columns
|
|
48700
48920
|
*
|
|
48701
48921
|
* @name Highcharts.BorderRadiusOptionsObject#scope
|
|
48702
|
-
* @
|
|
48703
|
-
* @type {string}
|
|
48922
|
+
* @type {"individual"|"point"|"stack"|undefined}
|
|
48704
48923
|
*/ /**
|
|
48705
48924
|
* For column charts, where in the point or stack to apply rounding. The `end`
|
|
48706
48925
|
* value means only those corners at the point value will be rounded, leaving
|
|
@@ -48711,8 +48930,7 @@ function BorderRadius_roundedRect(x, y, width, height, options = {}) {
|
|
|
48711
48930
|
* Rounding on all corners
|
|
48712
48931
|
*
|
|
48713
48932
|
* @name Highcharts.BorderRadiusOptionsObject#where
|
|
48714
|
-
* @
|
|
48715
|
-
* @type {string}
|
|
48933
|
+
* @type {"all"|"end"|undefined}
|
|
48716
48934
|
* @default end
|
|
48717
48935
|
*/
|
|
48718
48936
|
(''); // Keeps doclets above in JS file
|
|
@@ -48771,10 +48989,12 @@ var Responsive;
|
|
|
48771
48989
|
*/
|
|
48772
48990
|
function matchResponsiveRule(rule, matches) {
|
|
48773
48991
|
const condition = rule.condition, fn = condition.callback || function () {
|
|
48774
|
-
return (this.chartWidth <=
|
|
48775
|
-
|
|
48776
|
-
this.
|
|
48777
|
-
|
|
48992
|
+
return (this.chartWidth <=
|
|
48993
|
+
(condition.maxWidth ?? Number.MAX_VALUE) &&
|
|
48994
|
+
this.chartHeight <=
|
|
48995
|
+
(condition.maxHeight ?? Number.MAX_VALUE) &&
|
|
48996
|
+
this.chartWidth >= (condition.minWidth ?? 0) &&
|
|
48997
|
+
this.chartHeight >= (condition.minHeight ?? 0));
|
|
48778
48998
|
};
|
|
48779
48999
|
if (fn.call(this, this)) {
|
|
48780
49000
|
matches.push(rule._id);
|
|
@@ -48988,7 +49208,7 @@ var Responsive;
|
|
|
48988
49208
|
;// ./code/es-modules/masters/highcharts.src.js
|
|
48989
49209
|
// SPDX-License-Identifier: LicenseRef-Highcharts
|
|
48990
49210
|
/**
|
|
48991
|
-
* @license Highcharts JS v13.0.
|
|
49211
|
+
* @license Highcharts JS v13.0.2 (2026-08-27)
|
|
48992
49212
|
* @module highcharts/highcharts
|
|
48993
49213
|
*
|
|
48994
49214
|
* (c) 2009-2026 Highsoft AS
|
|
@@ -49065,12 +49285,17 @@ G.SVGElement = SVG_SVGElement;
|
|
|
49065
49285
|
G.SVGRenderer = SVG_SVGRenderer;
|
|
49066
49286
|
G.Templating = Core_Templating;
|
|
49067
49287
|
G.Tick = Axis_Tick;
|
|
49068
|
-
G.Time = Core_Time
|
|
49288
|
+
G.Time = class extends Core_Time {
|
|
49289
|
+
constructor(options, lang) {
|
|
49290
|
+
const defaultOptions = Defaults.getOptions();
|
|
49291
|
+
super(options ?? defaultOptions.time, lang ?? defaultOptions.lang);
|
|
49292
|
+
}
|
|
49293
|
+
};
|
|
49069
49294
|
G.Tooltip = Core_Tooltip;
|
|
49070
49295
|
// Utilities
|
|
49071
49296
|
G.addEvent = addEvent;
|
|
49072
|
-
G.animObject =
|
|
49073
|
-
G.animate =
|
|
49297
|
+
G.animObject = animObject;
|
|
49298
|
+
G.animate = animate;
|
|
49074
49299
|
G.arrayMax = arrayMax;
|
|
49075
49300
|
G.arrayMin = arrayMin;
|
|
49076
49301
|
G.attr = attr;
|
|
@@ -49097,7 +49322,7 @@ G.fireEvent = fireEvent;
|
|
|
49097
49322
|
G.format = Core_Templating.format;
|
|
49098
49323
|
G.getAlignFactor = getAlignFactor;
|
|
49099
49324
|
G.getClosestDistance = getClosestDistance;
|
|
49100
|
-
G.getDeferredAnimation =
|
|
49325
|
+
G.getDeferredAnimation = getDeferredAnimation;
|
|
49101
49326
|
G.getMagnitude = getMagnitude;
|
|
49102
49327
|
G.getNestedProperty = getNestedProperty;
|
|
49103
49328
|
G.getOptions = Defaults.getOptions;
|
|
@@ -49124,11 +49349,11 @@ G.relativeLength = relativeLength;
|
|
|
49124
49349
|
G.removeEvent = removeEvent;
|
|
49125
49350
|
G.replaceNested = replaceNested;
|
|
49126
49351
|
G.seriesType = Series_SeriesRegistry.seriesType;
|
|
49127
|
-
G.setAnimation =
|
|
49352
|
+
G.setAnimation = setAnimation;
|
|
49128
49353
|
G.setOptions = Defaults.setOptions;
|
|
49129
49354
|
G.splat = splat;
|
|
49130
49355
|
G.stableSort = stableSort;
|
|
49131
|
-
G.stop =
|
|
49356
|
+
G.stop = stop;
|
|
49132
49357
|
G.syncTimeout = syncTimeout;
|
|
49133
49358
|
G.time = Defaults.defaultTime;
|
|
49134
49359
|
G.ucfirst = ucfirst;
|
|
@@ -50065,7 +50290,7 @@ function onChartAfterSetChartSize() {
|
|
|
50065
50290
|
navigator.top = this.plotTop + scrollButtonSize;
|
|
50066
50291
|
}
|
|
50067
50292
|
else {
|
|
50068
|
-
navigator.left =
|
|
50293
|
+
navigator.left = (xAxis.left ?? this.plotLeft + scrollButtonSize);
|
|
50069
50294
|
navigator.top = navigator.navigatorOptions.top ||
|
|
50070
50295
|
this.chartHeight -
|
|
50071
50296
|
navigator.height -
|
|
@@ -50081,7 +50306,7 @@ function onChartAfterSetChartSize() {
|
|
|
50081
50306
|
legendOptions.enabled &&
|
|
50082
50307
|
!legendOptions.floating) ?
|
|
50083
50308
|
legend.legendHeight +
|
|
50084
|
-
|
|
50309
|
+
(legendOptions.margin ?? 10) :
|
|
50085
50310
|
0) -
|
|
50086
50311
|
(this.titleOffset ? this.titleOffset[2] : 0);
|
|
50087
50312
|
}
|
|
@@ -50106,7 +50331,7 @@ function onChartAfterUpdate(event) {
|
|
|
50106
50331
|
(this.options.navigator.enabled ||
|
|
50107
50332
|
this.options.scrollbar.enabled)) {
|
|
50108
50333
|
this.scroller = this.navigator = new NavigatorConstructor(this);
|
|
50109
|
-
if (
|
|
50334
|
+
if (event.redraw ?? true) {
|
|
50110
50335
|
this.redraw(event.animation); // #7067
|
|
50111
50336
|
}
|
|
50112
50337
|
}
|
|
@@ -50284,7 +50509,7 @@ class NavigatorAxisAdditions {
|
|
|
50284
50509
|
*/
|
|
50285
50510
|
toFixedRange(pxMin, pxMax, fixedMin, fixedMax) {
|
|
50286
50511
|
const axis = this.axis, halfPointRange = (axis.pointRange || 0) / 2;
|
|
50287
|
-
let newMin =
|
|
50512
|
+
let newMin = fixedMin ?? axis.translate(pxMin, true, !axis.horiz), newMax = fixedMax ?? axis.translate(pxMax, true, !axis.horiz);
|
|
50288
50513
|
// Add/remove half point range to/from the extremes (#1172)
|
|
50289
50514
|
if (!defined(fixedMin)) {
|
|
50290
50515
|
newMin = correctFloat(newMin + halfPointRange);
|
|
@@ -50508,7 +50733,7 @@ const NavigatorDefaults = {
|
|
|
50508
50733
|
*
|
|
50509
50734
|
* @type {Highcharts.ColorType}
|
|
50510
50735
|
*/
|
|
50511
|
-
maskFill: 'color-mix(var(--highcharts-highlight-color-60) 30%, transparent)',
|
|
50736
|
+
maskFill: 'color-mix(in srgb, var(--highcharts-highlight-color-60) 30%, transparent)', // eslint-disable-line max-len
|
|
50512
50737
|
/**
|
|
50513
50738
|
* The color of the line marking the currently zoomed area in the
|
|
50514
50739
|
* navigator.
|
|
@@ -50647,11 +50872,18 @@ const NavigatorDefaults = {
|
|
|
50647
50872
|
id: 'highcharts-navigator-series',
|
|
50648
50873
|
className: 'highcharts-navigator-series',
|
|
50649
50874
|
/**
|
|
50650
|
-
* Sets the
|
|
50875
|
+
* Sets the color of the navigator series.
|
|
50651
50876
|
*
|
|
50652
50877
|
* @type {Highcharts.ColorType}
|
|
50653
50878
|
* @apioption navigator.series.color
|
|
50654
50879
|
*/
|
|
50880
|
+
/**
|
|
50881
|
+
* Sets the fill color of the navigator series. Applies to series
|
|
50882
|
+
* types with a filled area, like the default `areaspline`.
|
|
50883
|
+
*
|
|
50884
|
+
* @type {Highcharts.ColorType}
|
|
50885
|
+
* @apioption navigator.series.fillColor
|
|
50886
|
+
*/
|
|
50655
50887
|
/**
|
|
50656
50888
|
* Line color for the navigator series. Allows setting the color
|
|
50657
50889
|
* while disallowing the default candlestick setting.
|
|
@@ -50851,6 +51083,7 @@ const NavigatorDefaults = {
|
|
|
50851
51083
|
|
|
50852
51084
|
|
|
50853
51085
|
|
|
51086
|
+
|
|
50854
51087
|
/* *
|
|
50855
51088
|
*
|
|
50856
51089
|
* Constants
|
|
@@ -50861,7 +51094,7 @@ const NavigatorDefaults = {
|
|
|
50861
51094
|
* @internal
|
|
50862
51095
|
*/
|
|
50863
51096
|
function navigatorHandle(_x, _y, width, height, options = {}) {
|
|
50864
|
-
const halfWidth = options.width ? options.width / 2 : width, markerPosition = 1.5, r = relativeLength(options.borderRadius
|
|
51097
|
+
const halfWidth = options.width ? options.width / 2 : width, markerPosition = 1.5, r = relativeLength(borderRadiusObject(options.borderRadius).radius, Math.min(halfWidth * 2, height));
|
|
50865
51098
|
height = options.height || height;
|
|
50866
51099
|
return [
|
|
50867
51100
|
['M', -markerPosition, height / 2 - 3.5],
|
|
@@ -51051,8 +51284,8 @@ var ScrollbarAxis;
|
|
|
51051
51284
|
ScrollbarAxis.compose = compose;
|
|
51052
51285
|
/** @internal */
|
|
51053
51286
|
function getExtremes(axis) {
|
|
51054
|
-
const axisMin =
|
|
51055
|
-
const axisMax =
|
|
51287
|
+
const axisMin = (axis.options?.min ?? axis.min);
|
|
51288
|
+
const axisMax = (axis.options?.max ?? axis.max);
|
|
51056
51289
|
return {
|
|
51057
51290
|
axisMin,
|
|
51058
51291
|
axisMax,
|
|
@@ -51591,7 +51824,7 @@ class Scrollbar {
|
|
|
51591
51824
|
buttonToMaxClick(e) {
|
|
51592
51825
|
const scroller = this;
|
|
51593
51826
|
const range = ((scroller.to - scroller.from) *
|
|
51594
|
-
|
|
51827
|
+
(scroller.options.step ?? 0.2));
|
|
51595
51828
|
scroller.updatePosition(scroller.from + range, scroller.to + range);
|
|
51596
51829
|
fireEvent(scroller, 'changed', {
|
|
51597
51830
|
from: scroller.from,
|
|
@@ -51603,7 +51836,7 @@ class Scrollbar {
|
|
|
51603
51836
|
buttonToMinClick(e) {
|
|
51604
51837
|
const scroller = this;
|
|
51605
51838
|
const range = correctFloat(scroller.to - scroller.from) *
|
|
51606
|
-
|
|
51839
|
+
(scroller.options.step ?? 0.2);
|
|
51607
51840
|
scroller.updatePosition(correctFloat(scroller.from - range), correctFloat(scroller.to - range));
|
|
51608
51841
|
fireEvent(scroller, 'changed', {
|
|
51609
51842
|
from: scroller.from,
|
|
@@ -51735,10 +51968,11 @@ class Scrollbar {
|
|
|
51735
51968
|
scroller.renderer = renderer;
|
|
51736
51969
|
scroller.userOptions = options;
|
|
51737
51970
|
scroller.options = merge(Scrollbar_ScrollbarDefaults, Scrollbar_defaultOptions.scrollbar, options);
|
|
51738
|
-
scroller.options.margin =
|
|
51971
|
+
scroller.options.margin = (scroller.options.margin ?? 10);
|
|
51739
51972
|
scroller.chart = chart;
|
|
51740
51973
|
// Backward compatibility
|
|
51741
|
-
scroller.size =
|
|
51974
|
+
scroller.size = scroller.options.size ??
|
|
51975
|
+
scroller.options.height;
|
|
51742
51976
|
// Init
|
|
51743
51977
|
if (options.enabled) {
|
|
51744
51978
|
scroller.render();
|
|
@@ -52028,9 +52262,9 @@ class Scrollbar {
|
|
|
52028
52262
|
* @function Highcharts.Scrollbar#shouldUpdateExtremes
|
|
52029
52263
|
*/
|
|
52030
52264
|
shouldUpdateExtremes(eventType) {
|
|
52031
|
-
return (
|
|
52265
|
+
return ((this.options.liveRedraw ?? (Core_Globals.svg &&
|
|
52032
52266
|
!Core_Globals.isTouchDevice &&
|
|
52033
|
-
!this.chart.boosted) ||
|
|
52267
|
+
!this.chart.boosted)) ||
|
|
52034
52268
|
// Mouseup always should change extremes
|
|
52035
52269
|
eventType === 'mouseup' ||
|
|
52036
52270
|
eventType === 'touchend' ||
|
|
@@ -52550,18 +52784,18 @@ class Navigator {
|
|
|
52550
52784
|
// it. For example hidden series, but visible navigator (#6022).
|
|
52551
52785
|
if (rendered) {
|
|
52552
52786
|
pxMin = 0;
|
|
52553
|
-
pxMax =
|
|
52787
|
+
pxMax = (xAxis.width ?? scrollbarXAxis.width);
|
|
52554
52788
|
}
|
|
52555
52789
|
else {
|
|
52556
52790
|
return;
|
|
52557
52791
|
}
|
|
52558
52792
|
}
|
|
52559
|
-
navigator.left =
|
|
52560
|
-
// In case of scrollbar only, without navigator
|
|
52561
|
-
chart.plotLeft + scrollButtonSize +
|
|
52793
|
+
navigator.left = (xAxis.left ?? chart.plotLeft + scrollButtonSize +
|
|
52562
52794
|
(inverted ? chart.plotWidth : 0));
|
|
52563
|
-
let zoomedMax = navigator.size = navigatorSize =
|
|
52564
|
-
|
|
52795
|
+
let zoomedMax = navigator.size = navigatorSize =
|
|
52796
|
+
xAxis.len ??
|
|
52797
|
+
(inverted ? chart.plotHeight : chart.plotWidth) -
|
|
52798
|
+
2 * scrollButtonSize;
|
|
52565
52799
|
if (inverted) {
|
|
52566
52800
|
navigatorWidth = scrollbarHeight;
|
|
52567
52801
|
}
|
|
@@ -52569,8 +52803,8 @@ class Navigator {
|
|
|
52569
52803
|
navigatorWidth = navigatorSize + 2 * scrollButtonSize;
|
|
52570
52804
|
}
|
|
52571
52805
|
// Get the pixel position of the handles
|
|
52572
|
-
pxMin =
|
|
52573
|
-
pxMax =
|
|
52806
|
+
pxMin = (pxMin ?? xAxis.toPixels(min, true));
|
|
52807
|
+
pxMax = (pxMax ?? xAxis.toPixels(max, true));
|
|
52574
52808
|
// Verify (#1851, #2238)
|
|
52575
52809
|
if (!isNumber(pxMin) || Math.abs(pxMin) === Infinity) {
|
|
52576
52810
|
pxMin = 0;
|
|
@@ -52849,11 +53083,10 @@ class Navigator {
|
|
|
52849
53083
|
navigator.render(0, 0, chartX - dragOffset, chartX - dragOffset + range);
|
|
52850
53084
|
}
|
|
52851
53085
|
if (navigator.hasDragged &&
|
|
52852
|
-
|
|
53086
|
+
(navigator.scrollbarOptions?.liveRedraw ?? (
|
|
52853
53087
|
// By default, don't run live redraw on touch
|
|
52854
53088
|
// devices or if the chart is in boost.
|
|
52855
|
-
!Navigator_isTouchDevice &&
|
|
52856
|
-
!this.chart.boosted)) {
|
|
53089
|
+
!Navigator_isTouchDevice && !this.chart.boosted))) {
|
|
52857
53090
|
e.DOMType = e.type;
|
|
52858
53091
|
setTimeout(function () {
|
|
52859
53092
|
navigator.onMouseUp(e);
|
|
@@ -53042,8 +53275,10 @@ class Navigator {
|
|
|
53042
53275
|
offset: 0,
|
|
53043
53276
|
index: yAxisIndex,
|
|
53044
53277
|
isInternal: true,
|
|
53045
|
-
reversed:
|
|
53046
|
-
navigatorOptions.yAxis.reversed)
|
|
53278
|
+
reversed: ((navigatorOptions.yAxis &&
|
|
53279
|
+
navigatorOptions.yAxis.reversed) ??
|
|
53280
|
+
(chart.yAxis[0] && chart.yAxis[0].reversed) ??
|
|
53281
|
+
false), // #14060
|
|
53047
53282
|
zoomEnabled: false
|
|
53048
53283
|
}, chart.inverted ? {
|
|
53049
53284
|
width: height
|
|
@@ -53129,7 +53364,9 @@ class Navigator {
|
|
|
53129
53364
|
*/
|
|
53130
53365
|
setOpposite() {
|
|
53131
53366
|
const navigatorOptions = this.navigatorOptions, navigatorEnabled = this.navigatorEnabled, chart = this.chart;
|
|
53132
|
-
this.opposite =
|
|
53367
|
+
this.opposite =
|
|
53368
|
+
navigatorOptions.opposite ??
|
|
53369
|
+
Boolean(!navigatorEnabled && chart.inverted); // #6262
|
|
53133
53370
|
}
|
|
53134
53371
|
/**
|
|
53135
53372
|
* Get the union data extremes of the chart - the outer data extremes of the
|
|
@@ -53143,9 +53380,8 @@ class Navigator {
|
|
|
53143
53380
|
let ret;
|
|
53144
53381
|
if (!returnFalseOnNoBaseSeries || baseAxis.dataMin !== null) {
|
|
53145
53382
|
ret = {
|
|
53146
|
-
dataMin:
|
|
53147
|
-
time.parse(navAxisOptions?.
|
|
53148
|
-
dataMax: pick(time.parse(navAxisOptions?.max), numExt('max', time.parse(baseAxisOptions.max), baseAxis.dataMax, navAxis.dataMax, navAxis.max))
|
|
53383
|
+
dataMin: (time.parse(navAxisOptions?.min) ?? numExt('min', time.parse(baseAxisOptions.min), baseAxis.dataMin, navAxis.dataMin, navAxis.min)),
|
|
53384
|
+
dataMax: (time.parse(navAxisOptions?.max) ?? numExt('max', time.parse(baseAxisOptions.max), baseAxis.dataMax, navAxis.dataMax, navAxis.max))
|
|
53149
53385
|
};
|
|
53150
53386
|
}
|
|
53151
53387
|
return ret;
|
|
@@ -53260,11 +53496,9 @@ class Navigator {
|
|
|
53260
53496
|
userNavOptions.dataLabels = splat(userNavOptions.dataLabels);
|
|
53261
53497
|
mergedNavSeriesOptions = merge(baseOptions, navSeriesMixin, userNavOptions, baseNavigatorOptions);
|
|
53262
53498
|
// Once nav series type is resolved, pick correct pointRange
|
|
53263
|
-
mergedNavSeriesOptions.pointRange =
|
|
53264
|
-
|
|
53265
|
-
|
|
53266
|
-
// Fallback to default values, e.g. `null` for column
|
|
53267
|
-
Navigator_defaultOptions.plotOptions[mergedNavSeriesOptions.type || 'line']?.pointRange);
|
|
53499
|
+
mergedNavSeriesOptions.pointRange = (userNavOptions.pointRange ??
|
|
53500
|
+
baseNavigatorOptions.pointRange ??
|
|
53501
|
+
Navigator_defaultOptions.plotOptions[mergedNavSeriesOptions.type || 'line']?.pointRange);
|
|
53268
53502
|
// Merge data separately. Do a slice to avoid mutating the
|
|
53269
53503
|
// navigator options from base series (#4923).
|
|
53270
53504
|
const navigatorSeriesData = baseNavigatorOptions.data || userNavOptions.data, navigatorSeriesDataTable = baseNavigatorOptions.dataTable ||
|
|
@@ -53424,7 +53658,7 @@ class Navigator {
|
|
|
53424
53658
|
* @function Highcharts.Navigator#modifyBaseAxisExtremes
|
|
53425
53659
|
*/
|
|
53426
53660
|
modifyBaseAxisExtremes() {
|
|
53427
|
-
const baseXAxis = this, navigator = baseXAxis.chart.navigator, baseExtremes = baseXAxis.getExtremes(), baseMin = baseExtremes.min, baseMax = baseExtremes.max, baseDataMin = baseExtremes.dataMin, baseDataMax = baseExtremes.dataMax, range = baseMax - baseMin, stickToMin = navigator?.stickToMin, stickToMax = navigator?.stickToMax, overscroll =
|
|
53661
|
+
const baseXAxis = this, navigator = baseXAxis.chart.navigator, baseExtremes = baseXAxis.getExtremes(), baseMin = baseExtremes.min, baseMax = baseExtremes.max, baseDataMin = baseExtremes.dataMin, baseDataMax = baseExtremes.dataMax, range = baseMax - baseMin, stickToMin = navigator?.stickToMin, stickToMax = navigator?.stickToMax, overscroll = (baseXAxis.ordinal?.convertOverscroll(baseXAxis.options.overscroll) ?? 0), navigatorSeries = navigator.series && navigator.series[0], hasSetExtremes = !!baseXAxis.setExtremes,
|
|
53428
53662
|
// When the extremes have been set by range selector button, don't
|
|
53429
53663
|
// stick to min or max. The range selector buttons will handle the
|
|
53430
53664
|
// extremes. (#5489)
|
|
@@ -53476,8 +53710,8 @@ class Navigator {
|
|
|
53476
53710
|
Math.round(navigator.zoomedMax) >= Math.round(navigator.size);
|
|
53477
53711
|
// If the scrollbar is scrolled all the way to the right, keep right as
|
|
53478
53712
|
// new data comes in, unless user set navigator.stickToMax to false.
|
|
53479
|
-
navigator.stickToMax =
|
|
53480
|
-
this.chart.options.navigator.stickToMax
|
|
53713
|
+
navigator.stickToMax = (this.chart.options.navigator &&
|
|
53714
|
+
this.chart.options.navigator.stickToMax) ?? shouldStickToMax;
|
|
53481
53715
|
navigator.stickToMin = navigator.shouldStickToMin(baseSeries, navigator);
|
|
53482
53716
|
// Set the navigator series data to the new data of the base series
|
|
53483
53717
|
if (navigatorSeries && !navigator.hasNavigatorData) {
|
|
@@ -54252,7 +54486,7 @@ function axisMinFromRange() {
|
|
|
54252
54486
|
this.chart.setFixedRange(max - min);
|
|
54253
54487
|
}
|
|
54254
54488
|
}
|
|
54255
|
-
const dataMin =
|
|
54489
|
+
const dataMin = (this.dataMin ?? Number.MIN_VALUE);
|
|
54256
54490
|
if (!isNumber(min)) {
|
|
54257
54491
|
min = dataMin;
|
|
54258
54492
|
}
|
|
@@ -54261,7 +54495,7 @@ function axisMinFromRange() {
|
|
|
54261
54495
|
if (typeof range === 'undefined') { // #4501
|
|
54262
54496
|
range = getTrueRange(min, rangeOptions.count);
|
|
54263
54497
|
}
|
|
54264
|
-
this.newMax = Math.min(min + range,
|
|
54498
|
+
this.newMax = Math.min(min + range, (this.dataMax ?? Number.MAX_VALUE));
|
|
54265
54499
|
}
|
|
54266
54500
|
if (!isNumber(max)) {
|
|
54267
54501
|
min = void 0;
|
|
@@ -54682,7 +54916,7 @@ class RangeSelector {
|
|
|
54682
54916
|
}
|
|
54683
54917
|
else if (isNumber(newMin) || isNumber(newMax)) {
|
|
54684
54918
|
// Existing axis object. Set extremes after render time.
|
|
54685
|
-
baseAxis.setExtremes(newMin, newMax,
|
|
54919
|
+
baseAxis.setExtremes(newMin, newMax, (redraw ?? true), void 0, // Auto animation
|
|
54686
54920
|
{
|
|
54687
54921
|
trigger: 'rangeSelectorButton',
|
|
54688
54922
|
rangeSelectorButton: rangeOptions
|
|
@@ -54917,8 +55151,8 @@ class RangeSelector {
|
|
|
54917
55151
|
year: 365
|
|
54918
55152
|
}[type] * 24 * 36e5 * count;
|
|
54919
55153
|
}
|
|
54920
|
-
rangeOptions._offsetMin =
|
|
54921
|
-
rangeOptions._offsetMax =
|
|
55154
|
+
rangeOptions._offsetMin = (rangeOptions.offsetMin ?? 0);
|
|
55155
|
+
rangeOptions._offsetMax = (rangeOptions.offsetMax ?? 0);
|
|
54922
55156
|
rangeOptions._range +=
|
|
54923
55157
|
rangeOptions._offsetMax - rangeOptions._offsetMin;
|
|
54924
55158
|
}
|
|
@@ -55229,7 +55463,7 @@ class RangeSelector {
|
|
|
55229
55463
|
};
|
|
55230
55464
|
}
|
|
55231
55465
|
createElements() {
|
|
55232
|
-
const chart = this.chart, renderer = chart.renderer, container = chart.container, chartOptions = chart.options, options = chartOptions.rangeSelector, inputEnabled = options.inputEnabled, inputsZIndex =
|
|
55466
|
+
const chart = this.chart, renderer = chart.renderer, container = chart.container, chartOptions = chart.options, options = chartOptions.rangeSelector, inputEnabled = options.inputEnabled, inputsZIndex = (chartOptions.chart.style?.zIndex ?? 0) + 1;
|
|
55233
55467
|
if (options.enabled === false) {
|
|
55234
55468
|
return;
|
|
55235
55469
|
}
|
|
@@ -55370,10 +55604,14 @@ class RangeSelector {
|
|
|
55370
55604
|
// Create a label for dropdown select element
|
|
55371
55605
|
const userButtonTheme = chart.userOptions.rangeSelector?.buttonTheme;
|
|
55372
55606
|
this.dropdownLabel = renderer.button('', 0, 0, () => { }, merge(buttonTheme, {
|
|
55373
|
-
'stroke-width':
|
|
55607
|
+
'stroke-width': (buttonTheme['stroke-width'] ?? 0),
|
|
55374
55608
|
width: 'auto',
|
|
55375
|
-
paddingLeft:
|
|
55376
|
-
|
|
55609
|
+
paddingLeft: options.buttonTheme.paddingLeft ??
|
|
55610
|
+
userButtonTheme?.padding ??
|
|
55611
|
+
8,
|
|
55612
|
+
paddingRight: options.buttonTheme.paddingRight ??
|
|
55613
|
+
userButtonTheme?.padding ??
|
|
55614
|
+
8
|
|
55377
55615
|
}), states && states.hover, states && states.select, states && states.disabled)
|
|
55378
55616
|
.hide()
|
|
55379
55617
|
.add(this.group);
|
|
@@ -55554,7 +55792,7 @@ class RangeSelector {
|
|
|
55554
55792
|
legendOptions.enabled &&
|
|
55555
55793
|
!legendOptions.floating ?
|
|
55556
55794
|
(chart.legend.legendHeight +
|
|
55557
|
-
|
|
55795
|
+
(legendOptions.margin ?? 10)) :
|
|
55558
55796
|
0);
|
|
55559
55797
|
groupHeight = groupHeight + legendHeight - 20;
|
|
55560
55798
|
translateY = (alignTranslateY -
|
|
@@ -55700,7 +55938,7 @@ class RangeSelector {
|
|
|
55700
55938
|
// Align button group
|
|
55701
55939
|
buttonGroup.align({
|
|
55702
55940
|
y: buttonPosition.y,
|
|
55703
|
-
width:
|
|
55941
|
+
width: (width ?? this.initialButtonGroupWidth),
|
|
55704
55942
|
align: buttonPosition.align,
|
|
55705
55943
|
x: translateX
|
|
55706
55944
|
}, true, chart.spacingBox);
|
|
@@ -55719,7 +55957,7 @@ class RangeSelector {
|
|
|
55719
55957
|
if (zoomText && zoomText.visibility !== 'hidden') {
|
|
55720
55958
|
// #8769, allow dynamically updating margins
|
|
55721
55959
|
zoomText[verb]({
|
|
55722
|
-
x:
|
|
55960
|
+
x: plotLeft + (buttonPosition.x ?? 0)
|
|
55723
55961
|
});
|
|
55724
55962
|
// Button start position
|
|
55725
55963
|
buttonLeft += buttonPosition.x +
|
|
@@ -56183,7 +56421,6 @@ const PathUtilities = {
|
|
|
56183
56421
|
* */
|
|
56184
56422
|
|
|
56185
56423
|
|
|
56186
|
-
|
|
56187
56424
|
/* *
|
|
56188
56425
|
*
|
|
56189
56426
|
* Constants
|
|
@@ -56380,7 +56617,8 @@ function straight(start, end) {
|
|
|
56380
56617
|
*/
|
|
56381
56618
|
const simpleConnect = function (start, end, options) {
|
|
56382
56619
|
const segments = [], chartObstacles = options.chartObstacles, startObstacleIx = findObstacleFromPoint(chartObstacles, start), endObstacleIx = findObstacleFromPoint(chartObstacles, end);
|
|
56383
|
-
let endSegment, dir =
|
|
56620
|
+
let endSegment, dir = (options.startDirectionX ??
|
|
56621
|
+
(abs(end.x - start.x) > abs(end.y - start.y))) ? 'x' : 'y', startObstacle, endObstacle, waypoint, useMax, endPoint;
|
|
56384
56622
|
// eslint-disable-next-line valid-jsdoc
|
|
56385
56623
|
/**
|
|
56386
56624
|
* Return a clone of a point with a property set from a target object,
|
|
@@ -56522,7 +56760,8 @@ function fastAvoid(start, end, options) {
|
|
|
56522
56760
|
- When going around the end obstacle we should not always go the
|
|
56523
56761
|
shortest route, rather pick the one closer to the end point
|
|
56524
56762
|
*/
|
|
56525
|
-
const dirIsX =
|
|
56763
|
+
const dirIsX = options.startDirectionX ??
|
|
56764
|
+
(abs(end.x - start.x) > abs(end.y - start.y)), dir = dirIsX ? 'x' : 'y', endSegments = [],
|
|
56526
56765
|
// Boundaries to stay within. If beyond soft boundary, prefer to
|
|
56527
56766
|
// change direction ASAP. If at hard max, always change immediately.
|
|
56528
56767
|
metrics = options.obstacleMetrics, softMinX = PathfinderAlgorithms_min(start.x, end.x) - metrics.maxWidth - 10, softMaxX = PathfinderAlgorithms_max(start.x, end.x) + metrics.maxWidth + 10, softMinY = PathfinderAlgorithms_min(start.y, end.y) - metrics.maxHeight - 10, softMaxY = PathfinderAlgorithms_max(start.y, end.y) + metrics.maxHeight + 10;
|
|
@@ -57476,7 +57715,7 @@ function Pathfinder_getPointBB(point) {
|
|
|
57476
57715
|
*/
|
|
57477
57716
|
function calculateObstacleDistance(a, b, bbMargin) {
|
|
57478
57717
|
// Count the distance even if we are slightly off
|
|
57479
|
-
const margin =
|
|
57718
|
+
const margin = (bbMargin ?? 10), yOverlap = a.yMax + margin > b.yMin - margin &&
|
|
57480
57719
|
a.yMin - margin < b.yMax + margin, xOverlap = a.xMax + margin > b.xMin - margin &&
|
|
57481
57720
|
a.xMin - margin < b.xMax + margin, xDistance = yOverlap ? (a.xMin > b.xMax ? a.xMin - b.xMax : b.xMin - a.xMax) : Infinity, yDistance = xOverlap ? (a.yMin > b.yMax ? a.yMin - b.yMax : b.yMin - a.yMax) : Infinity;
|
|
57482
57721
|
// If the rectangles collide, try recomputing with smaller margin.
|
|
@@ -57721,7 +57960,7 @@ class Pathfinder {
|
|
|
57721
57960
|
* with xMin, xMax, yMin and yMax properties.
|
|
57722
57961
|
*/
|
|
57723
57962
|
getChartObstacles(options) {
|
|
57724
|
-
const series = this.chart.series, margin =
|
|
57963
|
+
const series = this.chart.series, margin = (options.algorithmMargin ?? 0);
|
|
57725
57964
|
let obstacles = [], calculatedMargin;
|
|
57726
57965
|
for (let i = 0, sLen = series.length; i < sLen; ++i) {
|
|
57727
57966
|
if (series[i].visible && !series[i].options.isInternal) {
|
|
@@ -57854,9 +58093,10 @@ Pathfinder.prototype.algorithms = PathfinderAlgorithms;
|
|
|
57854
58093
|
''; // Keeps doclets above in JS file
|
|
57855
58094
|
|
|
57856
58095
|
;// ./code/es-modules/masters/modules/pathfinder.src.js
|
|
58096
|
+
/* unused harmony import specifier */ var Highcharts;
|
|
57857
58097
|
// SPDX-License-Identifier: LicenseRef-Highcharts
|
|
57858
58098
|
/**
|
|
57859
|
-
* @license Highcharts Gantt JS v13.0.
|
|
58099
|
+
* @license Highcharts Gantt JS v13.0.2 (2026-08-27)
|
|
57860
58100
|
* @module highcharts/modules/pathfinder
|
|
57861
58101
|
* @requires highcharts
|
|
57862
58102
|
*
|
|
@@ -57984,9 +58224,10 @@ function chartAdjustHeight() {
|
|
|
57984
58224
|
''; // Keeps doclets above in JS file
|
|
57985
58225
|
|
|
57986
58226
|
;// ./code/es-modules/masters/modules/static-scale.src.js
|
|
58227
|
+
/* unused harmony import specifier */ var static_scale_src_Highcharts;
|
|
57987
58228
|
// SPDX-License-Identifier: LicenseRef-Highcharts
|
|
57988
58229
|
/**
|
|
57989
|
-
* @license Highcharts Gantt JS v13.0.
|
|
58230
|
+
* @license Highcharts Gantt JS v13.0.2 (2026-08-27)
|
|
57990
58231
|
* @module highcharts/modules/static-scale
|
|
57991
58232
|
* @requires highcharts
|
|
57992
58233
|
*
|
|
@@ -58003,7 +58244,7 @@ function chartAdjustHeight() {
|
|
|
58003
58244
|
|
|
58004
58245
|
const static_scale_src_G = Core_Globals;
|
|
58005
58246
|
composeStaticScale(static_scale_src_G.Axis, static_scale_src_G.Chart);
|
|
58006
|
-
/* harmony default export */ const static_scale_src = ((/* unused pure expression or super */ null && (
|
|
58247
|
+
/* harmony default export */ const static_scale_src = ((/* unused pure expression or super */ null && (static_scale_src_Highcharts)));
|
|
58007
58248
|
|
|
58008
58249
|
;// ./code/es-modules/Series/XRange/XRangeSeriesDefaults.js
|
|
58009
58250
|
/* *
|
|
@@ -58401,7 +58642,7 @@ function onAxisAfterGetSeriesExtremes() {
|
|
|
58401
58642
|
const time = this.chart.time;
|
|
58402
58643
|
let dataMax, modMax;
|
|
58403
58644
|
if (this.isXAxis) {
|
|
58404
|
-
dataMax =
|
|
58645
|
+
dataMax = this.dataMax ?? -Number.MAX_VALUE;
|
|
58405
58646
|
for (const series of this.series) {
|
|
58406
58647
|
const column = (series.dataTable.getColumn('x2', true) ||
|
|
58407
58648
|
series.dataTable.getColumn('end', true) ||
|
|
@@ -58526,7 +58767,7 @@ class XRangeSeries extends XRangeSeries_ColumnSeries {
|
|
|
58526
58767
|
}
|
|
58527
58768
|
alignDataLabel(point) {
|
|
58528
58769
|
const oldPlotX = point.plotX;
|
|
58529
|
-
point.plotX =
|
|
58770
|
+
point.plotX = point.dlBox?.centerX ?? point.plotX;
|
|
58530
58771
|
if (point.dataLabel && point.shapeArgs?.width) {
|
|
58531
58772
|
point.dataLabel.css({
|
|
58532
58773
|
width: `${point.shapeArgs.width}px`
|
|
@@ -58539,9 +58780,9 @@ class XRangeSeries extends XRangeSeries_ColumnSeries {
|
|
|
58539
58780
|
* @private
|
|
58540
58781
|
*/
|
|
58541
58782
|
translatePoint(point) {
|
|
58542
|
-
const xAxis = this.xAxis, yAxis = this.yAxis, metrics = this.columnMetrics, options = this.options, minPointLength = options.minPointLength || 0, oldColWidth = (point.shapeArgs?.width || 0) / 2, seriesXOffset = this.pointXOffset = metrics.offset, posX =
|
|
58783
|
+
const xAxis = this.xAxis, yAxis = this.yAxis, metrics = this.columnMetrics, options = this.options, minPointLength = options.minPointLength || 0, oldColWidth = (point.shapeArgs?.width || 0) / 2, seriesXOffset = this.pointXOffset = metrics.offset, posX = point.x2 ?? (point.x + (point.len || 0)), borderRadius = options.borderRadius, plotTop = this.chart.plotTop, plotLeft = this.chart.plotLeft;
|
|
58543
58784
|
let plotX = point.plotX, plotX2 = xAxis.translate(posX, 0, 0, 0, 1);
|
|
58544
|
-
const length = Math.abs(plotX2 - plotX), inverted = this.chart.inverted, borderWidth =
|
|
58785
|
+
const length = Math.abs(plotX2 - plotX), inverted = this.chart.inverted, borderWidth = options.borderWidth ?? 1;
|
|
58545
58786
|
let widthDifference, partialFill, yOffset = metrics.offset, pointHeight = Math.round(metrics.width), dlLeft, dlRight, dlWidth, clipRectWidth;
|
|
58546
58787
|
if (minPointLength) {
|
|
58547
58788
|
widthDifference = minPointLength - length;
|
|
@@ -58671,9 +58912,9 @@ class XRangeSeries extends XRangeSeries_ColumnSeries {
|
|
|
58671
58912
|
* 'animate' (animates changes) or 'attr' (sets options)
|
|
58672
58913
|
*/
|
|
58673
58914
|
drawPoint(point, verb) {
|
|
58674
|
-
const seriesOpts = this.options, renderer = this.chart.renderer, type = point.shapeType, shapeArgs = point.shapeArgs, partShapeArgs = point.partShapeArgs, clipRectArgs = point.clipRectArgs, pointState = point.state, stateOpts =
|
|
58675
|
-
|
|
58676
|
-
|
|
58915
|
+
const seriesOpts = this.options, renderer = this.chart.renderer, type = point.shapeType, shapeArgs = point.shapeArgs, partShapeArgs = point.partShapeArgs, clipRectArgs = point.clipRectArgs, pointState = point.state, stateOpts = seriesOpts.states?.[pointState || 'normal'] || {}, pointStateVerb = typeof pointState === 'undefined' ?
|
|
58916
|
+
'attr' : verb, pointAttr = this.pointAttribs(point, pointState), animation = (this.chart.options.chart.animation ??
|
|
58917
|
+
stateOpts.animation);
|
|
58677
58918
|
let graphic = point.graphic, pfOptions = point.partialFill;
|
|
58678
58919
|
if (!point.isNull && point.visible !== false) {
|
|
58679
58920
|
const className = point.getClassName();
|
|
@@ -58799,9 +59040,10 @@ Series_SeriesRegistry.registerSeriesType('xrange', XRangeSeries);
|
|
|
58799
59040
|
/* harmony default export */ const XRange_XRangeSeries = (XRangeSeries);
|
|
58800
59041
|
|
|
58801
59042
|
;// ./code/es-modules/masters/modules/xrange.src.js
|
|
59043
|
+
/* unused harmony import specifier */ var xrange_src_Highcharts;
|
|
58802
59044
|
// SPDX-License-Identifier: LicenseRef-Highcharts
|
|
58803
59045
|
/**
|
|
58804
|
-
* @license Highcharts JS v13.0.
|
|
59046
|
+
* @license Highcharts JS v13.0.2 (2026-08-27)
|
|
58805
59047
|
* @module highcharts/modules/xrange
|
|
58806
59048
|
* @requires highcharts
|
|
58807
59049
|
*
|
|
@@ -58818,7 +59060,7 @@ Series_SeriesRegistry.registerSeriesType('xrange', XRangeSeries);
|
|
|
58818
59060
|
|
|
58819
59061
|
const xrange_src_G = Core_Globals;
|
|
58820
59062
|
XRange_XRangeSeries.compose(xrange_src_G.Axis);
|
|
58821
|
-
/* harmony default export */ const xrange_src = ((/* unused pure expression or super */ null && (
|
|
59063
|
+
/* harmony default export */ const xrange_src = ((/* unused pure expression or super */ null && (xrange_src_Highcharts)));
|
|
58822
59064
|
|
|
58823
59065
|
;// ./code/es-modules/Series/Gantt/GanttPoint.js
|
|
58824
59066
|
/* *
|
|
@@ -59246,7 +59488,7 @@ var BrokenAxis;
|
|
|
59246
59488
|
/** @internal */
|
|
59247
59489
|
function onSeriesAfterRender() {
|
|
59248
59490
|
this.drawBreaks(this.xAxis, ['x']);
|
|
59249
|
-
this.drawBreaks(this.yAxis,
|
|
59491
|
+
this.drawBreaks(this.yAxis, (this.pointArrayMap ?? ['y']));
|
|
59250
59492
|
}
|
|
59251
59493
|
/** @internal */
|
|
59252
59494
|
function seriesDrawBreaks(axis, keys) {
|
|
@@ -59258,7 +59500,7 @@ var BrokenAxis;
|
|
|
59258
59500
|
breaks = brokenAxis?.breakArray || [];
|
|
59259
59501
|
threshold = axis.isXAxis ?
|
|
59260
59502
|
axis.min :
|
|
59261
|
-
|
|
59503
|
+
(series.options.threshold ?? axis.min);
|
|
59262
59504
|
points.forEach(function (point) {
|
|
59263
59505
|
y = point['stack' + key.toUpperCase()] ??
|
|
59264
59506
|
point[key];
|
|
@@ -59551,7 +59793,8 @@ var BrokenAxis;
|
|
|
59551
59793
|
if (Additions.isInBreak(breaks[i], val)) {
|
|
59552
59794
|
inbrk = true;
|
|
59553
59795
|
if (!keep) {
|
|
59554
|
-
keep =
|
|
59796
|
+
keep =
|
|
59797
|
+
breaks[i].showPoints ?? !axis.isXAxis;
|
|
59555
59798
|
}
|
|
59556
59799
|
}
|
|
59557
59800
|
}
|
|
@@ -59734,7 +59977,7 @@ var BrokenAxis;
|
|
|
59734
59977
|
}
|
|
59735
59978
|
};
|
|
59736
59979
|
}
|
|
59737
|
-
if (
|
|
59980
|
+
if (redraw ?? true) {
|
|
59738
59981
|
axis.chart.redraw();
|
|
59739
59982
|
}
|
|
59740
59983
|
}
|
|
@@ -59806,7 +60049,7 @@ function applyGridOptions(axis) {
|
|
|
59806
60049
|
options.labels = {};
|
|
59807
60050
|
}
|
|
59808
60051
|
*/
|
|
59809
|
-
options.labels.align =
|
|
60052
|
+
options.labels.align = (options.labels.align ?? 'center');
|
|
59810
60053
|
// @todo: Check against tickLabelPlacement between/on etc
|
|
59811
60054
|
/* Prevents adding the last tick label if the axis is not a category
|
|
59812
60055
|
axis.
|
|
@@ -60350,8 +60593,8 @@ function onAfterSetOptions(e) {
|
|
|
60350
60593
|
_________________________
|
|
60351
60594
|
Into this: |_____|_____|_____|_____|
|
|
60352
60595
|
^ ^ */
|
|
60353
|
-
options.minPadding =
|
|
60354
|
-
options.maxPadding =
|
|
60596
|
+
options.minPadding = (userOptions.minPadding ?? 0);
|
|
60597
|
+
options.maxPadding = (userOptions.maxPadding ?? 0);
|
|
60355
60598
|
}
|
|
60356
60599
|
// If borderWidth is set, then use its value for tick and
|
|
60357
60600
|
// line width.
|
|
@@ -60414,6 +60657,11 @@ function GridAxis_onChartAfterSetChartSize() {
|
|
|
60414
60657
|
/** @internal */
|
|
60415
60658
|
function onDestroy(e) {
|
|
60416
60659
|
const { grid } = this;
|
|
60660
|
+
// Axes created before the Gantt module was loaded have no grid
|
|
60661
|
+
// additions to be destroyed (#24644).
|
|
60662
|
+
if (!grid) {
|
|
60663
|
+
return;
|
|
60664
|
+
}
|
|
60417
60665
|
(grid.columns || []).forEach((column) => column.destroy(e.keepEvents));
|
|
60418
60666
|
grid.columns = void 0;
|
|
60419
60667
|
}
|
|
@@ -60433,7 +60681,9 @@ function onInit(e) {
|
|
|
60433
60681
|
}
|
|
60434
60682
|
axis.hiddenLabels = [];
|
|
60435
60683
|
axis.hiddenMarks = [];
|
|
60436
|
-
|
|
60684
|
+
if (gridOptions.enabled) {
|
|
60685
|
+
axis.clippable = false;
|
|
60686
|
+
}
|
|
60437
60687
|
}
|
|
60438
60688
|
/**
|
|
60439
60689
|
* Center tick labels in cells.
|
|
@@ -60863,7 +61113,7 @@ function getNode(id, parent, level, data, mapOfIdToChildren, options) {
|
|
|
60863
61113
|
}
|
|
60864
61114
|
// Call getNode recursively on the children. Calculate the height of the
|
|
60865
61115
|
// node, and the number of descendants.
|
|
60866
|
-
const children = (
|
|
61116
|
+
const children = (mapOfIdToChildren[id] || []).map((child) => {
|
|
60867
61117
|
const node = getNode(child.id, id, (level + 1), child, mapOfIdToChildren, options), childStart = child.start || NaN, childEnd = (child.milestone === true ?
|
|
60868
61118
|
childStart :
|
|
60869
61119
|
child.end ||
|
|
@@ -60992,7 +61242,7 @@ function renderLabelIcon(tick, params) {
|
|
|
60992
61242
|
}
|
|
60993
61243
|
/** @internal */
|
|
60994
61244
|
function wrapGetLabelPosition(proceed, x, y, label, horiz, labelOptions, tickmarkOffset, index, step) {
|
|
60995
|
-
const tick = this, lbOptions =
|
|
61245
|
+
const tick = this, lbOptions = (tick.options?.labels ?? labelOptions), pos = tick.pos, axis = tick.axis, isTreeGrid = axis.type === 'treegrid', result = proceed.apply(tick, [x, y, label, horiz, lbOptions, tickmarkOffset, index, step]);
|
|
60996
61246
|
let mapOfPosToGridNode, node, level;
|
|
60997
61247
|
if (isTreeGrid) {
|
|
60998
61248
|
const { width = 0, padding = axis.linkedParent ? 0 : 5 } = (lbOptions && isObject(lbOptions.symbol, true) ?
|
|
@@ -61013,7 +61263,7 @@ function wrapGetLabelPosition(proceed, x, y, label, horiz, labelOptions, tickmar
|
|
|
61013
61263
|
}
|
|
61014
61264
|
/** @internal */
|
|
61015
61265
|
function wrapRenderLabel(proceed) {
|
|
61016
|
-
const tick = this, { pos, axis, label, treeGrid: tickGrid, options: tickOptions } = tick, icon = tickGrid?.labelIcon, labelElement = label?.element, { treeGrid: axisGrid, options: axisOptions, chart, tickPositions } = axis, mapOfPosToGridNode = axisGrid.mapOfPosToGridNode, labelOptions =
|
|
61266
|
+
const tick = this, { pos, axis, label, treeGrid: tickGrid, options: tickOptions } = tick, icon = tickGrid?.labelIcon, labelElement = label?.element, { treeGrid: axisGrid, options: axisOptions, chart, tickPositions } = axis, mapOfPosToGridNode = axisGrid.mapOfPosToGridNode, labelOptions = (tickOptions?.labels ?? axisOptions?.labels), symbolOptions = (labelOptions && isObject(labelOptions.symbol, true) ?
|
|
61017
61267
|
labelOptions.symbol :
|
|
61018
61268
|
{}), node = mapOfPosToGridNode?.[pos], { descendants, depth } = node || {}, hasDescendants = node && descendants && descendants > 0, level = depth, isTreeGridElement = (axis.type === 'treegrid') && labelElement, shouldRender = tickPositions.indexOf(pos) > -1, prefixClassName = 'highcharts-treegrid-node-', prefixLevelClass = prefixClassName + 'level-', styledMode = chart.styledMode;
|
|
61019
61269
|
let collapsed, addClassName, removeClassName;
|
|
@@ -61276,9 +61526,17 @@ function getColor(node, options) {
|
|
|
61276
61526
|
}
|
|
61277
61527
|
// Select either point color, level color or inherited color.
|
|
61278
61528
|
if (!series.chart.styledMode) {
|
|
61279
|
-
color =
|
|
61280
|
-
|
|
61281
|
-
|
|
61529
|
+
color = ((point && point.options.color) ??
|
|
61530
|
+
(level && level.color) ??
|
|
61531
|
+
colorByPoint ??
|
|
61532
|
+
(parentColor && variateColor(parentColor)) ??
|
|
61533
|
+
series.color);
|
|
61534
|
+
}
|
|
61535
|
+
colorIndex = ((point && point.options.colorIndex) ??
|
|
61536
|
+
(level && level.colorIndex) ??
|
|
61537
|
+
colorIndexByPoint ??
|
|
61538
|
+
parentColorIndex ??
|
|
61539
|
+
options.colorIndex);
|
|
61282
61540
|
}
|
|
61283
61541
|
return {
|
|
61284
61542
|
color: color,
|
|
@@ -61315,7 +61573,8 @@ function getLevelOptions(params) {
|
|
|
61315
61573
|
let level, levelIsConstant, options;
|
|
61316
61574
|
if (isObject(item) && isNumber(item.level)) {
|
|
61317
61575
|
options = merge({}, item);
|
|
61318
|
-
levelIsConstant =
|
|
61576
|
+
levelIsConstant =
|
|
61577
|
+
options.levelIsConstant ?? defaults.levelIsConstant;
|
|
61319
61578
|
// Delete redundant properties.
|
|
61320
61579
|
delete options.levelIsConstant;
|
|
61321
61580
|
delete options.level;
|
|
@@ -61347,7 +61606,7 @@ function setTreeValues(tree, options) {
|
|
|
61347
61606
|
const before = options.before, idRoot = options.idRoot, mapIdToNode = options.mapIdToNode, nodeRoot = mapIdToNode[idRoot], levelIsConstant = (options.levelIsConstant !== false), points = options.points, point = points[tree.i], optionsPoint = point && point.options || {}, children = [];
|
|
61348
61607
|
let childrenTotal = 0;
|
|
61349
61608
|
tree.levelDynamic = tree.level - (levelIsConstant ? 0 : nodeRoot.level);
|
|
61350
|
-
tree.name =
|
|
61609
|
+
tree.name = ((point && point.name) ?? '');
|
|
61351
61610
|
tree.visible = (idRoot === tree.id ||
|
|
61352
61611
|
options.visible === true);
|
|
61353
61612
|
if (typeof before === 'function') {
|
|
@@ -61368,7 +61627,7 @@ function setTreeValues(tree, options) {
|
|
|
61368
61627
|
}
|
|
61369
61628
|
});
|
|
61370
61629
|
// Set the values
|
|
61371
|
-
const value =
|
|
61630
|
+
const value = (optionsPoint.value ?? childrenTotal);
|
|
61372
61631
|
tree.visible = value >= 0 && (childrenTotal > 0 || tree.visible);
|
|
61373
61632
|
tree.children = children;
|
|
61374
61633
|
tree.childrenTotal = childrenTotal;
|
|
@@ -61394,7 +61653,7 @@ function updateRootId(series) {
|
|
|
61394
61653
|
// Get the series options.
|
|
61395
61654
|
options = isObject(series.options) ? series.options : {};
|
|
61396
61655
|
// Calculate the rootId.
|
|
61397
|
-
rootId =
|
|
61656
|
+
rootId = (series.rootNode ?? options.rootId ?? '');
|
|
61398
61657
|
// Set rootId on series.userOptions to pick it up in exporting.
|
|
61399
61658
|
if (isObject(series.userOptions)) {
|
|
61400
61659
|
series.userOptions.rootId = rootId;
|
|
@@ -61786,7 +62045,7 @@ function wrapInit(proceed, chart, userOptions, coll) {
|
|
|
61786
62045
|
if (isTreeGrid) {
|
|
61787
62046
|
// Add event for updating the categories of a treegrid.
|
|
61788
62047
|
// NOTE Preferably these events should be set on the axis.
|
|
61789
|
-
addEvent(chart, 'beforeRender', onBeforeRender);
|
|
62048
|
+
addEvent(chart, 'beforeRender', onBeforeRender, { order: 0 });
|
|
61790
62049
|
addEvent(chart, 'beforeRedraw', onBeforeRender);
|
|
61791
62050
|
// Add new collapsed nodes on addSeries
|
|
61792
62051
|
addEvent(chart, 'addSeries', function (e) {
|
|
@@ -62204,7 +62463,8 @@ class GanttSeries extends GanttSeries_XRangeSeries {
|
|
|
62204
62463
|
if (columnName === 'x') {
|
|
62205
62464
|
const startColumn = super.getColumn('start');
|
|
62206
62465
|
if (startColumn.length) {
|
|
62207
|
-
return startColumn.map((val) => time.parse(val)
|
|
62466
|
+
return startColumn.map((val) => time.parse(val) ?? NaN // #24849
|
|
62467
|
+
);
|
|
62208
62468
|
}
|
|
62209
62469
|
}
|
|
62210
62470
|
return super.getColumn.apply(this, arguments);
|
|
@@ -62298,9 +62558,10 @@ Series_SeriesRegistry.registerSeriesType('gantt', GanttSeries);
|
|
|
62298
62558
|
/* harmony default export */ const Gantt_GanttSeries = (GanttSeries);
|
|
62299
62559
|
|
|
62300
62560
|
;// ./code/es-modules/masters/modules/gantt.src.js
|
|
62561
|
+
/* unused harmony import specifier */ var gantt_src_Highcharts;
|
|
62301
62562
|
// SPDX-License-Identifier: LicenseRef-Highcharts
|
|
62302
62563
|
/**
|
|
62303
|
-
* @license Highcharts Gantt JS v13.0.
|
|
62564
|
+
* @license Highcharts Gantt JS v13.0.2 (2026-08-27)
|
|
62304
62565
|
* @module highcharts/modules/gantt
|
|
62305
62566
|
* @requires highcharts
|
|
62306
62567
|
*
|
|
@@ -62342,7 +62603,7 @@ Gantt_GanttSeries.compose(gantt_src_G.Axis, gantt_src_G.Chart, gantt_src_G.Serie
|
|
|
62342
62603
|
gantt_src_G.Navigator.compose(gantt_src_G.Chart, gantt_src_G.Axis, gantt_src_G.Series);
|
|
62343
62604
|
gantt_src_G.RangeSelector.compose(gantt_src_G.Axis, gantt_src_G.Chart);
|
|
62344
62605
|
gantt_src_G.Scrollbar.compose(gantt_src_G.Axis);
|
|
62345
|
-
/* harmony default export */ const gantt_src = ((/* unused pure expression or super */ null && (
|
|
62606
|
+
/* harmony default export */ const gantt_src = ((/* unused pure expression or super */ null && (gantt_src_Highcharts)));
|
|
62346
62607
|
|
|
62347
62608
|
;// ./code/es-modules/masters/highcharts-gantt.src.js
|
|
62348
62609
|
|