highcharts 9.2.2 → 9.3.0
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/README.md +13 -6
- package/bower.json +1 -1
- package/css/annotations/popup.css +48 -8
- package/css/annotations/popup.scss +70 -22
- package/css/highcharts.css +45 -0
- package/css/highcharts.scss +40 -0
- package/css/themes/dark-unica.css +45 -0
- package/css/themes/grid-light.css +45 -0
- package/css/themes/sand-signika.css +45 -0
- package/es-modules/Accessibility/A11yI18n.js +273 -224
- package/es-modules/Accessibility/Accessibility.js +233 -128
- package/es-modules/Accessibility/AccessibilityComponent.js +79 -314
- package/es-modules/Accessibility/Components/AnnotationsA11y.js +10 -0
- package/es-modules/Accessibility/Components/ContainerComponent.js +52 -27
- package/es-modules/Accessibility/Components/InfoRegionsComponent.js +46 -23
- package/es-modules/Accessibility/Components/LegendComponent.js +97 -65
- package/es-modules/Accessibility/Components/MenuComponent.js +59 -40
- package/es-modules/Accessibility/Components/RangeSelectorComponent.js +5 -8
- package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +152 -115
- package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.js +133 -68
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +64 -27
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +38 -21
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +380 -325
- package/es-modules/Accessibility/Components/ZoomComponent.js +28 -20
- package/es-modules/Accessibility/FocusBorder.js +192 -147
- package/es-modules/Accessibility/HighContrastMode.js +78 -66
- package/es-modules/Accessibility/HighContrastTheme.js +10 -0
- package/es-modules/Accessibility/KeyboardNavigation.js +144 -70
- package/es-modules/Accessibility/KeyboardNavigationHandler.js +71 -44
- package/es-modules/Accessibility/Options/DeprecatedOptions.js +11 -1
- package/es-modules/Accessibility/Options/LangOptions.js +1 -2
- package/es-modules/Accessibility/Options/Options.js +32 -17
- package/es-modules/Accessibility/ProxyElement.js +212 -0
- package/es-modules/Accessibility/ProxyProvider.js +305 -0
- package/es-modules/Accessibility/Utils/Announcer.js +15 -8
- package/es-modules/Accessibility/Utils/ChartUtilities.js +41 -16
- package/es-modules/Accessibility/Utils/DOMElementProvider.js +27 -15
- package/es-modules/Accessibility/Utils/EventProvider.js +27 -17
- package/es-modules/Accessibility/Utils/HTMLUtilities.js +125 -30
- package/es-modules/Core/Axis/Axis.js +37 -30
- package/es-modules/Core/Axis/AxisDefaults.js +35 -24
- package/es-modules/Core/Axis/Color/ColorAxisComposition.js +54 -4
- package/es-modules/Core/Axis/Color/ColorAxisDefaults.js +5 -5
- package/es-modules/Core/Axis/OrdinalAxis.js +8 -12
- package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +4 -5
- package/es-modules/Core/Axis/ScrollbarAxis.js +10 -3
- package/es-modules/Core/Axis/TreeGridAxis.js +2 -2
- package/es-modules/Core/Axis/TreeGridTick.js +1 -2
- package/es-modules/Core/Chart/Chart.js +2 -3
- package/es-modules/Core/Chart/ChartDefaults.js +3 -4
- package/es-modules/Core/Chart/ChartNavigationComposition.js +92 -0
- package/es-modules/Core/Chart/MapChart.js +10 -22
- package/es-modules/Core/Chart/StockChart.js +3 -293
- package/es-modules/Core/Color/Palettes.js +22 -0
- package/es-modules/Core/DefaultOptions.js +19 -17
- package/es-modules/Core/Foundation.js +39 -31
- package/es-modules/Core/Globals.js +1 -1
- package/es-modules/Core/HttpUtilities.js +3 -3
- package/es-modules/Core/Legend/Legend.js +7 -3
- package/es-modules/Core/Navigator.js +7 -8
- package/es-modules/Core/Pointer.js +39 -36
- package/es-modules/Core/Renderer/HTML/AST.js +2 -0
- package/es-modules/Core/Renderer/HTML/HTMLElement.js +23 -18
- package/es-modules/Core/Renderer/SVG/SVGElement.js +3 -4
- package/es-modules/Core/Renderer/SVG/SVGRenderer.js +21 -18
- package/es-modules/Core/Renderer/SVG/TextBuilder.js +3 -3
- package/es-modules/Core/ScrollbarDefaults.js +10 -9
- package/es-modules/Core/Series/DataLabel.js +2 -3
- package/es-modules/Core/Series/Point.js +5 -3
- package/es-modules/Core/Series/Series.js +153 -162
- package/es-modules/Core/Series/SeriesDefaults.js +3 -4
- package/es-modules/Core/Series/SeriesRegistry.js +1 -2
- package/es-modules/Core/Tooltip.js +44 -17
- package/es-modules/Core/Utilities.js +15 -7
- package/es-modules/Data/DataConverter.js +489 -0
- package/es-modules/Data/DataPromise.js +252 -0
- package/es-modules/Data/DataSeriesConverter.js +203 -0
- package/es-modules/Data/DataTable.js +1204 -0
- package/es-modules/Data/Modifiers/ChainModifier.js +299 -0
- package/es-modules/Data/Modifiers/DataModifier.js +303 -0
- package/es-modules/Data/Modifiers/GroupModifier.js +144 -0
- package/es-modules/Data/Modifiers/InvertModifier.js +254 -0
- package/es-modules/Data/Modifiers/RangeModifier.js +143 -0
- package/es-modules/Data/Modifiers/SeriesPointsModifier.js +110 -0
- package/es-modules/Data/Modifiers/SortModifier.js +249 -0
- package/es-modules/Data/Parsers/CSVParser.js +399 -0
- package/es-modules/Data/Parsers/DataParser.js +101 -0
- package/es-modules/Data/Parsers/GoogleSheetsParser.js +220 -0
- package/es-modules/Data/Parsers/HTMLTableParser.js +213 -0
- package/es-modules/Data/Stores/CSVStore.js +317 -0
- package/es-modules/Data/Stores/DataStore.js +276 -0
- package/es-modules/Data/Stores/GoogleSheetsStore.js +167 -0
- package/es-modules/Data/Stores/HTMLTableStore.js +351 -0
- package/es-modules/Extensions/Annotations/Annotations.js +61 -11
- package/es-modules/Extensions/Annotations/ControlPoint.js +1 -1
- package/es-modules/Extensions/Annotations/Controllables/ControllableEllipse.js +199 -0
- package/es-modules/Extensions/Annotations/Mixins/ControllableMixin.js +7 -1
- package/es-modules/Extensions/Annotations/NavigationBindings.js +68 -19
- package/es-modules/Extensions/Annotations/Popup.js +479 -141
- package/es-modules/Extensions/Annotations/Types/BasicAnnotation.js +51 -2
- package/es-modules/Extensions/Annotations/Types/CrookedLine.js +1 -1
- package/es-modules/Extensions/Annotations/Types/Fibonacci.js +2 -3
- package/es-modules/Extensions/Annotations/Types/FibonacciTimeZones.js +219 -0
- package/es-modules/Extensions/Annotations/Types/InfinityLine.js +1 -1
- package/es-modules/Extensions/Annotations/Types/Measure.js +14 -8
- package/es-modules/Extensions/Annotations/Types/Pitchfork.js +5 -5
- package/es-modules/Extensions/Annotations/Types/TimeCycles.js +207 -0
- package/es-modules/Extensions/Annotations/Types/Tunnel.js +3 -5
- package/es-modules/Extensions/Annotations/Types/VerticalLine.js +1 -1
- package/es-modules/Extensions/Boost/BoostOverrides.js +3 -1
- package/es-modules/Extensions/Boost/WGLShader.js +4 -3
- package/es-modules/Extensions/BoostCanvas.js +1 -2
- package/es-modules/Extensions/CurrentDateIndication.js +2 -3
- package/es-modules/Extensions/DataGrouping.js +31 -18
- package/es-modules/Extensions/DownloadURL.js +2 -2
- package/es-modules/Extensions/DragPanes.js +1 -2
- package/es-modules/Extensions/Drilldown.js +2 -3
- package/es-modules/Extensions/Exporting/Exporting.js +8 -7
- package/es-modules/Extensions/Exporting/ExportingDefaults.js +8 -15
- package/es-modules/Extensions/GeoJSON.js +39 -63
- package/es-modules/Extensions/MarkerClusters.js +115 -97
- package/es-modules/Extensions/NoDataToDisplay.js +1 -2
- package/es-modules/Extensions/OfflineExporting/OfflineExporting.js +9 -8
- package/es-modules/Extensions/OfflineExporting/OfflineExportingDefaults.js +1 -1
- package/es-modules/Extensions/Oldie/Oldie.js +2 -3
- package/es-modules/Extensions/Pane.js +5 -6
- package/es-modules/Extensions/RangeSelector.js +3 -4
- package/es-modules/Extensions/Sonification/ChartSonify.js +247 -637
- package/es-modules/Extensions/Sonification/Earcon.js +136 -102
- package/es-modules/Extensions/Sonification/Instrument.js +496 -426
- package/es-modules/Extensions/Sonification/MusicalFrequencies.js +10 -0
- package/es-modules/Extensions/Sonification/Options.js +10 -0
- package/es-modules/Extensions/Sonification/PointSonify.js +203 -152
- package/es-modules/Extensions/Sonification/SeriesSonify.js +459 -0
- package/es-modules/Extensions/Sonification/SignalHandler.js +124 -0
- package/es-modules/Extensions/Sonification/Sonification.js +26 -52
- package/es-modules/Extensions/Sonification/{Utilities.js → SonificationUtilities.js} +62 -84
- package/es-modules/Extensions/Sonification/Timeline.js +255 -567
- package/es-modules/Extensions/Sonification/TimelineEvent.js +158 -0
- package/es-modules/Extensions/Sonification/TimelinePath.js +311 -0
- package/es-modules/Maps/MapNavigation.js +27 -64
- package/es-modules/Maps/MapNavigationOptionsDefault.js +3 -0
- package/es-modules/Maps/MapPointer.js +7 -5
- package/es-modules/Maps/MapView.js +450 -0
- package/es-modules/Maps/MapViewOptionsDefault.js +95 -0
- package/es-modules/Maps/Projection.js +433 -0
- package/es-modules/Maps/ProjectionDefinition.js +9 -0
- package/es-modules/Maps/Projections/EqualEarth.js +42 -0
- package/es-modules/Maps/Projections/Miller.js +17 -0
- package/es-modules/Maps/Projections/Orthographic.js +26 -0
- package/es-modules/Maps/Projections/ProjectionRegistry.js +17 -0
- package/es-modules/Maps/Projections/WebMercator.js +25 -0
- package/es-modules/Series/AreaRange/AreaRangeSeries.js +4 -5
- package/es-modules/Series/Bellcurve/BellcurveSeries.js +2 -8
- package/es-modules/Series/BoxPlot/BoxPlotSeries.js +1 -2
- package/es-modules/Series/Bubble/BubbleLegendDefaults.js +1 -2
- package/es-modules/Series/Bubble/BubbleLegendItem.js +3 -3
- package/es-modules/Series/Bubble/BubblePoint.js +5 -0
- package/es-modules/Series/Bubble/BubbleSeries.js +90 -50
- package/es-modules/Series/Candlestick/CandlestickSeries.js +10 -18
- package/es-modules/{Mixins/CenteredSeries.js → Series/CenteredUtilities.js} +45 -23
- package/es-modules/Series/ColorMapComposition.js +109 -0
- package/es-modules/Series/Column/ColumnDataLabel.js +5 -5
- package/es-modules/Series/Column/ColumnSeries.js +3 -4
- package/es-modules/Series/ColumnPyramid/ColumnPyramidSeries.js +6 -6
- package/es-modules/Series/DataModifyComposition.js +539 -0
- package/es-modules/Series/DependencyWheel/DependencyWheelPoint.js +2 -6
- package/es-modules/Series/DerivedComposition.js +137 -0
- package/es-modules/Series/DrawPointComposition.js +111 -0
- package/es-modules/Series/Dumbbell/DumbbellSeries.js +2 -3
- package/es-modules/Series/ErrorBar/ErrorBarSeries.js +1 -2
- package/es-modules/Series/Flags/FlagsSeries.js +18 -25
- package/es-modules/Series/Funnel/FunnelSeries.js +6 -5
- package/es-modules/Series/Gantt/GanttSeries.js +0 -2
- package/es-modules/Series/Gauge/GaugePoint.js +1 -1
- package/es-modules/Series/Gauge/GaugeSeries.js +7 -7
- package/es-modules/Series/HLC/HLCPoint.js +55 -0
- package/es-modules/Series/HLC/HLCSeries.js +383 -0
- package/es-modules/Series/Heatmap/HeatmapPoint.js +3 -4
- package/es-modules/Series/Heatmap/HeatmapSeries.js +19 -6
- package/es-modules/Series/HeikinAshi/HeikinAshiSeries.js +2 -3
- package/es-modules/Series/Histogram/HistogramSeries.js +3 -7
- package/es-modules/Series/HollowCandlestick/HollowCandlestickSeries.js +9 -10
- package/es-modules/Series/Line/LineSeries.js +1 -2
- package/es-modules/Series/Map/MapPoint.js +23 -16
- package/es-modules/Series/Map/MapSeries.js +268 -309
- package/es-modules/Series/MapBubble/MapBubblePoint.js +0 -3
- package/es-modules/Series/MapBubble/MapBubbleSeries.js +10 -1
- package/es-modules/Series/MapPoint/MapPointPoint.js +5 -1
- package/es-modules/Series/MapPoint/MapPointSeries.js +87 -4
- package/es-modules/Series/Networkgraph/Networkgraph.js +5 -5
- package/es-modules/{Mixins/Nodes.js → Series/NodesComposition.js} +76 -29
- package/es-modules/Series/OHLC/OHLCPoint.js +2 -6
- package/es-modules/Series/OHLC/OHLCSeries.js +55 -183
- package/es-modules/{Mixins/OnSeries.js → Series/OnSeriesComposition.js} +53 -21
- package/es-modules/Series/Organization/OrganizationSeries.js +2 -3
- package/es-modules/Series/PackedBubble/PackedBubbleSeries.js +46 -6
- package/es-modules/Series/ParetoSeries/ParetoSeries.js +3 -7
- package/es-modules/Series/Pie/PieDataLabel.js +1 -2
- package/es-modules/Series/Pie/PieSeries.js +6 -7
- package/es-modules/Series/Sankey/SankeyPoint.js +0 -4
- package/es-modules/Series/Sankey/SankeySeries.js +89 -20
- package/es-modules/Series/Sunburst/SunburstPoint.js +2 -3
- package/es-modules/Series/Sunburst/SunburstSeries.js +4 -4
- package/es-modules/Series/Tilemap/TilemapPoint.js +2 -3
- package/es-modules/Series/Timeline/TimelineSeries.js +3 -4
- package/es-modules/{Mixins/TreeSeries.js → Series/TreeUtilities.js} +86 -76
- package/es-modules/Series/Treemap/TreemapPoint.js +2 -2
- package/es-modules/Series/Treemap/TreemapSeries.js +8 -8
- package/es-modules/Series/Venn/VennPoint.js +16 -7
- package/es-modules/Series/Venn/VennSeries.js +5 -8
- package/es-modules/Series/Venn/VennUtils.js +550 -439
- package/es-modules/Series/Waterfall/WaterfallSeries.js +2 -3
- package/es-modules/Series/Windbarb/WindbarbSeries.js +23 -24
- package/es-modules/Series/Wordcloud/WordcloudPoint.js +8 -6
- package/es-modules/Series/Wordcloud/WordcloudSeries.js +24 -20
- package/es-modules/Series/Wordcloud/WordcloudUtils.js +673 -484
- package/es-modules/Series/XRange/XRangePoint.js +1 -0
- package/es-modules/Stock/Indicators/ABands/ABandsIndicator.js +3 -6
- package/es-modules/Stock/Indicators/AO/AOIndicator.js +2 -3
- package/es-modules/Stock/Indicators/APO/APOIndicator.js +14 -20
- package/es-modules/Stock/Indicators/Aroon/AroonIndicator.js +3 -6
- package/es-modules/Stock/Indicators/AroonOscillator/AroonOscillatorIndicator.js +11 -13
- package/es-modules/Stock/Indicators/ArrayUtilities.js +47 -0
- package/es-modules/Stock/Indicators/BB/BBIndicator.js +27 -11
- package/es-modules/Stock/Indicators/Chaikin/ChaikinIndicator.js +6 -12
- package/es-modules/Stock/Indicators/DEMA/DEMAIndicator.js +1 -11
- package/es-modules/Stock/Indicators/DMI/DMIIndicator.js +19 -11
- package/es-modules/Stock/Indicators/DisparityIndex/DisparityIndexIndicator.js +17 -11
- package/es-modules/Stock/Indicators/EMA/EMAIndicator.js +1 -3
- package/es-modules/Stock/Indicators/KeltnerChannels/KeltnerChannelsIndicator.js +11 -9
- package/es-modules/Stock/Indicators/Klinger/KlingerIndicator.js +8 -16
- package/es-modules/Stock/Indicators/LinearRegression/LinearRegression.js +2 -2
- package/es-modules/Stock/Indicators/LinearRegressionAngle/LinearRegressionAngle.js +2 -2
- package/es-modules/Stock/Indicators/LinearRegressionIntercept/LinearRegressionIntercept.js +2 -2
- package/es-modules/Stock/Indicators/LinearRegressionSlopes/LinearRegressionSlopes.js +2 -2
- package/es-modules/Stock/Indicators/MACD/MACDIndicator.js +1 -2
- package/es-modules/{Mixins/MultipleLines.js → Stock/Indicators/MultipleLinesComposition.js} +136 -87
- package/es-modules/Stock/Indicators/NATR/NATRIndicator.js +1 -3
- package/es-modules/Stock/Indicators/PC/PCIndicator.js +14 -13
- package/es-modules/Stock/Indicators/PPO/PPOIndicator.js +1 -11
- package/es-modules/Stock/Indicators/SMA/SMAComposition.js +0 -26
- package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +9 -32
- package/es-modules/Stock/Indicators/SlowStochastic/SlowStochasticIndicator.js +0 -8
- package/es-modules/Stock/Indicators/Stochastic/StochasticIndicator.js +15 -8
- package/es-modules/Stock/Indicators/Supertrend/SupertrendIndicator.js +4 -6
- package/es-modules/Stock/Indicators/TEMA/TEMAIndicator.js +26 -11
- package/es-modules/Stock/Indicators/TRIX/TRIXIndicator.js +6 -12
- package/es-modules/Stock/Indicators/VBP/VBPIndicator.js +20 -3
- package/es-modules/Stock/Indicators/WilliamsR/WilliamsRIndicator.js +2 -3
- package/es-modules/Stock/StockToolsBindings.js +144 -42
- package/es-modules/Stock/StockToolsGui.js +405 -11
- package/es-modules/masters/highcharts-3d.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 +1 -1
- package/es-modules/masters/highmaps.src.js +1 -1
- package/es-modules/masters/highstock.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/ema.src.js +4 -10
- package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
- package/es-modules/masters/indicators/indicators-all.src.js +2 -2
- package/es-modules/masters/indicators/indicators.src.js +2 -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 +16 -2
- package/es-modules/masters/modules/annotations-advanced.src.js +3 -1
- package/es-modules/masters/modules/annotations.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/current-date-indicator.src.js +1 -1
- package/es-modules/masters/modules/cylinder.src.js +1 -1
- package/es-modules/masters/modules/data.src.js +6 -3
- 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/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/grid-axis.src.js +1 -1
- package/es-modules/masters/modules/heatmap.src.js +1 -2
- 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 -3
- package/es-modules/masters/modules/marker-clusters.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/offline-exporting.src.js +1 -1
- package/es-modules/masters/modules/oldie-polyfills.src.js +1 -1
- package/es-modules/masters/modules/oldie.src.js +1 -1
- package/es-modules/masters/modules/organization.src.js +1 -1
- package/es-modules/masters/modules/overlapping-datalabels.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/price-indicator.src.js +1 -1
- package/es-modules/masters/modules/pyramid3d.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/solid-gauge.src.js +1 -1
- package/es-modules/masters/modules/sonification.src.js +33 -2
- 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 +4 -1
- package/es-modules/masters/modules/streamgraph.src.js +1 -1
- package/es-modules/masters/modules/sunburst.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/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/themes/avocado.src.js +1 -1
- package/es-modules/masters/themes/dark-blue.src.js +1 -1
- package/es-modules/masters/themes/dark-green.src.js +1 -1
- package/es-modules/masters/themes/dark-unica.src.js +1 -1
- package/es-modules/masters/themes/gray.src.js +1 -1
- package/es-modules/masters/themes/grid-light.src.js +1 -1
- package/es-modules/masters/themes/grid.src.js +1 -1
- package/es-modules/masters/themes/high-contrast-dark.src.js +1 -1
- package/es-modules/masters/themes/high-contrast-light.src.js +1 -1
- package/es-modules/masters/themes/sand-signika.src.js +1 -1
- package/es-modules/masters/themes/skies.src.js +1 -1
- package/es-modules/masters/themes/sunset.src.js +1 -1
- package/highcharts-3d.js +1 -1
- package/highcharts-3d.src.js +1 -1
- package/highcharts-gantt.js +801 -804
- package/highcharts-gantt.js.map +1 -1
- package/highcharts-gantt.src.js +775 -739
- package/highcharts-more.js +194 -193
- package/highcharts-more.js.map +1 -1
- package/highcharts-more.src.js +207 -119
- package/highcharts.d.ts +9670 -4217
- package/highcharts.js +585 -588
- package/highcharts.js.map +1 -1
- package/highcharts.src.d.ts +9670 -4217
- package/highcharts.src.js +608 -587
- package/highmaps.js +726 -708
- package/highmaps.js.map +1 -1
- package/highmaps.src.js +2708 -1587
- package/highstock.js +788 -783
- package/highstock.js.map +1 -1
- package/highstock.src.js +1896 -1267
- package/indicators/acceleration-bands.js +10 -9
- package/indicators/acceleration-bands.js.map +1 -1
- package/indicators/acceleration-bands.src.js +156 -112
- package/indicators/accumulation-distribution.js +1 -1
- package/indicators/accumulation-distribution.src.js +1 -1
- package/indicators/ao.js +6 -6
- package/indicators/ao.js.map +1 -1
- package/indicators/ao.src.js +4 -4
- package/indicators/apo.js +5 -6
- package/indicators/apo.js.map +1 -1
- package/indicators/apo.src.js +16 -84
- package/indicators/aroon-oscillator.js +9 -9
- package/indicators/aroon-oscillator.js.map +1 -1
- package/indicators/aroon-oscillator.src.js +160 -177
- package/indicators/aroon.js +9 -9
- package/indicators/aroon.js.map +1 -1
- package/indicators/aroon.src.js +156 -112
- package/indicators/atr.js +1 -1
- package/indicators/atr.src.js +1 -1
- package/indicators/bollinger-bands.js +10 -9
- package/indicators/bollinger-bands.js.map +1 -1
- package/indicators/bollinger-bands.src.js +180 -117
- package/indicators/cci.js +1 -1
- package/indicators/cci.src.js +1 -1
- package/indicators/chaikin.js +8 -9
- package/indicators/chaikin.js.map +1 -1
- package/indicators/chaikin.src.js +8 -76
- package/indicators/cmf.js +1 -1
- package/indicators/cmf.src.js +1 -1
- package/indicators/cmo.js +1 -1
- package/indicators/cmo.src.js +1 -1
- package/indicators/dema.js +5 -6
- package/indicators/dema.js.map +1 -1
- package/indicators/dema.src.js +3 -75
- package/indicators/disparity-index.js +6 -7
- package/indicators/disparity-index.js.map +1 -1
- package/indicators/disparity-index.src.js +19 -74
- package/indicators/dmi.js +11 -11
- package/indicators/dmi.js.map +1 -1
- package/indicators/dmi.src.js +173 -116
- package/indicators/dpo.js +1 -1
- package/indicators/dpo.src.js +1 -1
- package/indicators/ema.js +1 -13
- package/indicators/ema.js.map +1 -1
- package/indicators/ema.src.js +7 -188
- package/indicators/ichimoku-kinko-hyo.js +1 -1
- package/indicators/ichimoku-kinko-hyo.src.js +1 -1
- package/indicators/indicators-all.js +197 -203
- package/indicators/indicators-all.js.map +1 -1
- package/indicators/indicators-all.src.js +649 -720
- package/indicators/indicators.js +12 -12
- package/indicators/indicators.js.map +1 -1
- package/indicators/indicators.src.js +188 -124
- package/indicators/keltner-channels.js +10 -10
- package/indicators/keltner-channels.js.map +1 -1
- package/indicators/keltner-channels.src.js +164 -118
- package/indicators/klinger.js +12 -13
- package/indicators/klinger.js.map +1 -1
- package/indicators/klinger.src.js +161 -184
- package/indicators/macd.js +2 -2
- package/indicators/macd.js.map +1 -1
- package/indicators/macd.src.js +2 -3
- package/indicators/mfi.js +1 -1
- package/indicators/mfi.src.js +1 -1
- package/indicators/momentum.js +1 -1
- package/indicators/momentum.src.js +1 -1
- package/indicators/natr.js +3 -3
- package/indicators/natr.js.map +1 -1
- package/indicators/natr.src.js +2 -4
- package/indicators/obv.js +1 -1
- package/indicators/obv.src.js +1 -1
- package/indicators/pivot-points.js +1 -1
- package/indicators/pivot-points.src.js +1 -1
- package/indicators/ppo.js +5 -6
- package/indicators/ppo.js.map +1 -1
- package/indicators/ppo.src.js +3 -75
- package/indicators/price-channel.js +9 -9
- package/indicators/price-channel.js.map +1 -1
- package/indicators/price-channel.src.js +207 -168
- package/indicators/price-envelopes.js +1 -1
- package/indicators/price-envelopes.src.js +1 -1
- package/indicators/psar.js +1 -1
- package/indicators/psar.src.js +1 -1
- package/indicators/regressions.js +1 -1
- package/indicators/regressions.src.js +9 -9
- package/indicators/roc.js +1 -1
- package/indicators/roc.src.js +1 -1
- package/indicators/rsi.js +1 -1
- package/indicators/rsi.src.js +1 -1
- package/indicators/slow-stochastic.js +5 -6
- package/indicators/slow-stochastic.js.map +1 -1
- package/indicators/slow-stochastic.src.js +2 -72
- package/indicators/stochastic.js +10 -10
- package/indicators/stochastic.js.map +1 -1
- package/indicators/stochastic.src.js +209 -164
- package/indicators/supertrend.js +10 -10
- package/indicators/supertrend.js.map +1 -1
- package/indicators/supertrend.src.js +6 -7
- package/indicators/tema.js +6 -7
- package/indicators/tema.js.map +1 -1
- package/indicators/tema.src.js +28 -75
- package/indicators/trendline.js +1 -1
- package/indicators/trendline.src.js +1 -1
- package/indicators/trix.js +4 -5
- package/indicators/trix.js.map +1 -1
- package/indicators/trix.src.js +8 -76
- package/indicators/volume-by-price.js +16 -16
- package/indicators/volume-by-price.js.map +1 -1
- package/indicators/volume-by-price.src.js +21 -3
- package/indicators/vwap.js +1 -1
- package/indicators/vwap.src.js +1 -1
- package/indicators/williams-r.js +5 -6
- package/indicators/williams-r.js.map +1 -1
- package/indicators/williams-r.src.js +41 -51
- package/indicators/wma.js +1 -1
- package/indicators/wma.src.js +1 -1
- package/indicators/zigzag.js +1 -1
- package/indicators/zigzag.src.js +1 -1
- package/modules/accessibility.d.ts +5 -0
- package/modules/accessibility.js +234 -216
- package/modules/accessibility.js.map +1 -1
- package/modules/accessibility.src.d.ts +5 -0
- package/modules/accessibility.src.js +9709 -8608
- package/modules/annotations-advanced.d.ts +30 -0
- package/modules/annotations-advanced.js +191 -165
- package/modules/annotations-advanced.js.map +1 -1
- package/modules/annotations-advanced.src.d.ts +30 -0
- package/modules/annotations-advanced.src.js +1578 -320
- package/modules/annotations.js +121 -107
- package/modules/annotations.js.map +1 -1
- package/modules/annotations.src.js +958 -229
- package/modules/arrow-symbols.js +1 -1
- package/modules/arrow-symbols.src.js +1 -1
- package/modules/boost-canvas.js +15 -15
- package/modules/boost-canvas.js.map +1 -1
- package/modules/boost-canvas.src.js +3 -3
- package/modules/boost.js +79 -79
- package/modules/boost.js.map +1 -1
- package/modules/boost.src.js +10 -9
- package/modules/broken-axis.js +1 -1
- package/modules/broken-axis.src.js +1 -1
- package/modules/bullet.js +1 -1
- package/modules/bullet.src.js +1 -1
- package/modules/coloraxis.js +24 -24
- package/modules/coloraxis.js.map +1 -1
- package/modules/coloraxis.src.js +69 -98
- package/modules/current-date-indicator.js +4 -4
- package/modules/current-date-indicator.js.map +1 -1
- package/modules/current-date-indicator.src.js +4 -4
- package/modules/cylinder.js +1 -1
- package/modules/cylinder.src.js +1 -1
- package/modules/data.js +19 -19
- package/modules/data.js.map +1 -1
- package/modules/data.src.js +9 -6
- package/modules/datagrouping.js +20 -20
- package/modules/datagrouping.js.map +1 -1
- package/modules/datagrouping.src.js +33 -19
- package/modules/debugger.js +1 -1
- package/modules/debugger.src.js +1 -1
- package/modules/dependency-wheel.js +11 -11
- package/modules/dependency-wheel.js.map +1 -1
- package/modules/dependency-wheel.src.js +4 -7
- package/modules/dotplot.js +1 -1
- package/modules/dotplot.src.js +1 -1
- package/modules/drag-panes.js +8 -8
- package/modules/drag-panes.js.map +1 -1
- package/modules/drag-panes.src.js +3 -3
- package/modules/draggable-points.js +1 -1
- package/modules/draggable-points.src.js +1 -1
- package/modules/drilldown.js +24 -24
- package/modules/drilldown.js.map +1 -1
- package/modules/drilldown.src.js +4 -4
- package/modules/dumbbell.js +17 -17
- package/modules/dumbbell.js.map +1 -1
- package/modules/dumbbell.src.js +4 -4
- package/modules/export-data.js +1 -1
- package/modules/export-data.js.map +1 -1
- package/modules/export-data.src.js +3 -3
- package/modules/exporting.js +39 -38
- package/modules/exporting.js.map +1 -1
- package/modules/exporting.src.js +98 -67
- package/modules/full-screen.js +1 -1
- package/modules/full-screen.src.js +1 -1
- package/modules/funnel.js +12 -12
- package/modules/funnel.js.map +1 -1
- package/modules/funnel.src.js +9 -6
- package/modules/funnel3d.js +1 -1
- package/modules/funnel3d.src.js +1 -1
- package/modules/gantt.js +217 -218
- package/modules/gantt.js.map +1 -1
- package/modules/gantt.src.js +167 -152
- package/modules/grid-axis.js +1 -1
- package/modules/grid-axis.src.js +1 -1
- package/modules/heatmap.js +39 -39
- package/modules/heatmap.js.map +1 -1
- package/modules/heatmap.src.js +177 -162
- package/modules/heikinashi.js +1 -1
- package/modules/heikinashi.src.js +4 -4
- package/modules/histogram-bellcurve.js +13 -13
- package/modules/histogram-bellcurve.js.map +1 -1
- package/modules/histogram-bellcurve.src.js +91 -86
- package/modules/hollowcandlestick.js +9 -9
- package/modules/hollowcandlestick.js.map +1 -1
- package/modules/hollowcandlestick.src.js +11 -11
- package/modules/item-series.js +1 -1
- package/modules/item-series.src.js +1 -1
- package/modules/lollipop.js +1 -1
- package/modules/lollipop.src.js +1 -1
- package/modules/map.d.ts +136 -14
- package/modules/map.js +142 -122
- package/modules/map.js.map +1 -1
- package/modules/map.src.d.ts +136 -14
- package/modules/map.src.js +2129 -1029
- package/modules/marker-clusters.js +36 -36
- package/modules/marker-clusters.js.map +1 -1
- package/modules/marker-clusters.src.js +173 -142
- package/modules/networkgraph.d.ts +12 -1
- package/modules/networkgraph.js +49 -49
- package/modules/networkgraph.js.map +1 -1
- package/modules/networkgraph.src.d.ts +12 -1
- package/modules/networkgraph.src.js +91 -43
- package/modules/no-data-to-display.js +5 -5
- package/modules/no-data-to-display.js.map +1 -1
- package/modules/no-data-to-display.src.js +3 -3
- package/modules/offline-exporting.js +17 -17
- package/modules/offline-exporting.js.map +1 -1
- package/modules/offline-exporting.src.js +13 -13
- package/modules/oldie-polyfills.js +1 -1
- package/modules/oldie-polyfills.src.js +1 -1
- package/modules/oldie.js +26 -26
- package/modules/oldie.js.map +1 -1
- package/modules/oldie.src.js +4 -4
- package/modules/organization.js +13 -13
- package/modules/organization.js.map +1 -1
- package/modules/organization.src.js +4 -4
- package/modules/overlapping-datalabels.js +1 -1
- package/modules/overlapping-datalabels.src.js +1 -1
- package/modules/parallel-coordinates.js +1 -1
- package/modules/parallel-coordinates.src.js +1 -1
- package/modules/pareto.js +7 -7
- package/modules/pareto.js.map +1 -1
- package/modules/pareto.src.js +89 -78
- package/modules/pathfinder.js +1 -1
- package/modules/pathfinder.src.js +1 -1
- package/modules/pattern-fill.js +1 -1
- package/modules/pattern-fill.src.js +1 -1
- package/modules/price-indicator.js +1 -1
- package/modules/price-indicator.src.js +1 -1
- package/modules/pyramid3d.js +1 -1
- package/modules/pyramid3d.src.js +1 -1
- package/modules/sankey.d.ts +12 -1
- package/modules/sankey.js +29 -29
- package/modules/sankey.js.map +1 -1
- package/modules/sankey.src.d.ts +12 -1
- package/modules/sankey.src.js +300 -176
- package/modules/series-label.js +1 -1
- package/modules/series-label.src.js +1 -1
- package/modules/solid-gauge.js +1 -1
- package/modules/solid-gauge.src.js +1 -1
- package/modules/sonification.js +59 -55
- package/modules/sonification.js.map +1 -1
- package/modules/sonification.src.js +3034 -2553
- package/modules/static-scale.js +1 -1
- package/modules/static-scale.src.js +1 -1
- package/modules/stock-tools.js +177 -164
- package/modules/stock-tools.js.map +1 -1
- package/modules/stock-tools.src.js +1001 -131
- package/modules/stock.d.ts +39 -6
- package/modules/stock.js +204 -196
- package/modules/stock.js.map +1 -1
- package/modules/stock.src.d.ts +39 -6
- package/modules/stock.src.js +1689 -1081
- package/modules/streamgraph.js +1 -1
- package/modules/streamgraph.src.js +1 -1
- package/modules/sunburst.js +61 -60
- package/modules/sunburst.js.map +1 -1
- package/modules/sunburst.src.js +329 -266
- package/modules/tilemap.js +17 -17
- package/modules/tilemap.js.map +1 -1
- package/modules/tilemap.src.js +3 -4
- package/modules/timeline.js +18 -18
- package/modules/timeline.js.map +1 -1
- package/modules/timeline.src.js +5 -5
- package/modules/treegrid.js +56 -57
- package/modules/treegrid.js.map +1 -1
- package/modules/treegrid.src.js +126 -120
- package/modules/treemap.js +41 -41
- package/modules/treemap.js.map +1 -1
- package/modules/treemap.src.js +319 -254
- package/modules/variable-pie.js +1 -1
- package/modules/variable-pie.src.js +1 -1
- package/modules/variwide.js +1 -1
- package/modules/variwide.src.js +1 -1
- package/modules/vector.js +1 -1
- package/modules/vector.src.js +1 -1
- package/modules/venn.js +31 -31
- package/modules/venn.js.map +1 -1
- package/modules/venn.src.js +731 -721
- package/modules/windbarb.js +15 -15
- package/modules/windbarb.js.map +1 -1
- package/modules/windbarb.src.js +90 -62
- package/modules/wordcloud.js +23 -24
- package/modules/wordcloud.js.map +1 -1
- package/modules/wordcloud.src.js +897 -949
- package/modules/xrange.js +2 -2
- package/modules/xrange.js.map +1 -1
- package/modules/xrange.src.js +2 -1
- package/package.json +1 -1
- package/themes/avocado.js +1 -1
- package/themes/avocado.src.js +1 -1
- package/themes/dark-blue.js +1 -1
- package/themes/dark-blue.src.js +1 -1
- package/themes/dark-green.js +1 -1
- package/themes/dark-green.src.js +1 -1
- package/themes/dark-unica.js +1 -1
- package/themes/dark-unica.src.js +1 -1
- package/themes/gray.js +1 -1
- package/themes/gray.src.js +1 -1
- package/themes/grid-light.js +1 -1
- package/themes/grid-light.src.js +1 -1
- package/themes/grid.js +1 -1
- package/themes/grid.src.js +1 -1
- package/themes/high-contrast-dark.js +1 -1
- package/themes/high-contrast-dark.src.js +1 -1
- package/themes/high-contrast-light.js +1 -1
- package/themes/high-contrast-light.src.js +1 -1
- package/themes/sand-signika.js +1 -1
- package/themes/sand-signika.src.js +1 -1
- package/themes/skies.js +1 -1
- package/themes/skies.src.js +1 -1
- package/themes/sunset.js +1 -1
- package/themes/sunset.src.js +1 -1
- package/es-modules/Core/Axis/MapAxis.js +0 -157
- package/es-modules/Core/Color/Palette.js +0 -82
- package/es-modules/Extensions/Sonification/InstrumentDefinitions.js +0 -32
- package/es-modules/Mixins/ColorMapSeries.js +0 -82
- package/es-modules/Mixins/ColorSeries.js +0 -77
- package/es-modules/Mixins/DerivedSeries.js +0 -118
- package/es-modules/Mixins/DrawPoint.js +0 -81
- package/es-modules/Mixins/IndicatorRequired.js +0 -56
- package/es-modules/Mixins/Navigation.js +0 -54
- package/es-modules/Mixins/NelderMead.js +0 -132
- package/es-modules/Mixins/Polygon.js +0 -259
- package/es-modules/Mixins/ReduceArray.js +0 -54
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
*
|
|
11
11
|
* */
|
|
12
12
|
'use strict';
|
|
13
|
-
import Chart from '../../../Core/Chart/Chart.js';
|
|
14
13
|
import Point from '../../../Core/Series/Point.js';
|
|
15
14
|
import Series from '../../../Core/Series/Series.js';
|
|
16
15
|
import SeriesRegistry from '../../../Core/Series/SeriesRegistry.js';
|
|
@@ -18,24 +17,17 @@ var seriesTypes = SeriesRegistry.seriesTypes;
|
|
|
18
17
|
import H from '../../../Core/Globals.js';
|
|
19
18
|
var doc = H.doc;
|
|
20
19
|
import U from '../../../Core/Utilities.js';
|
|
21
|
-
var defined = U.defined,
|
|
20
|
+
var defined = U.defined, fireEvent = U.fireEvent;
|
|
22
21
|
import KeyboardNavigationHandler from '../../KeyboardNavigationHandler.js';
|
|
23
22
|
import EventProvider from '../../Utils/EventProvider.js';
|
|
24
23
|
import ChartUtilities from '../../Utils/ChartUtilities.js';
|
|
25
24
|
var getPointFromXY = ChartUtilities.getPointFromXY, getSeriesFromName = ChartUtilities.getSeriesFromName, scrollToPoint = ChartUtilities.scrollToPoint;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
*
|
|
31
|
-
|
|
32
|
-
*/
|
|
33
|
-
Series.prototype.keyboardMoveVertical = true;
|
|
34
|
-
['column', 'pie'].forEach(function (type) {
|
|
35
|
-
if (seriesTypes[type]) {
|
|
36
|
-
seriesTypes[type].prototype.keyboardMoveVertical = false;
|
|
37
|
-
}
|
|
38
|
-
});
|
|
25
|
+
/* *
|
|
26
|
+
*
|
|
27
|
+
* Functions
|
|
28
|
+
*
|
|
29
|
+
* */
|
|
30
|
+
/* eslint-disable valid-jsdoc */
|
|
39
31
|
/**
|
|
40
32
|
* Get the index of a point in a series. This is needed when using e.g. data
|
|
41
33
|
* grouping.
|
|
@@ -107,273 +99,7 @@ function isSkipPoint(point) {
|
|
|
107
99
|
isSkipSeries(point.series);
|
|
108
100
|
}
|
|
109
101
|
/**
|
|
110
|
-
* Get the point in a series that is closest (in pixel distance) to a reference
|
|
111
|
-
* point. Optionally supply weight factors for x and y directions.
|
|
112
|
-
*
|
|
113
|
-
* @private
|
|
114
|
-
* @function getClosestPoint
|
|
115
|
-
*
|
|
116
|
-
* @param {Highcharts.Point} point
|
|
117
|
-
* @param {Highcharts.Series} series
|
|
118
|
-
* @param {number} [xWeight]
|
|
119
|
-
* @param {number} [yWeight]
|
|
120
|
-
*
|
|
121
|
-
* @return {Highcharts.Point|undefined}
|
|
122
|
-
*/
|
|
123
|
-
function getClosestPoint(point, series, xWeight, yWeight) {
|
|
124
|
-
var minDistance = Infinity, dPoint, minIx, distance, i = series.points.length;
|
|
125
|
-
var hasUndefinedPosition = function (point) {
|
|
126
|
-
return !(defined(point.plotX) && defined(point.plotY));
|
|
127
|
-
};
|
|
128
|
-
if (hasUndefinedPosition(point)) {
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
while (i--) {
|
|
132
|
-
dPoint = series.points[i];
|
|
133
|
-
if (hasUndefinedPosition(dPoint)) {
|
|
134
|
-
continue;
|
|
135
|
-
}
|
|
136
|
-
distance = (point.plotX - dPoint.plotX) *
|
|
137
|
-
(point.plotX - dPoint.plotX) *
|
|
138
|
-
(xWeight || 1) +
|
|
139
|
-
(point.plotY - dPoint.plotY) *
|
|
140
|
-
(point.plotY - dPoint.plotY) *
|
|
141
|
-
(yWeight || 1);
|
|
142
|
-
if (distance < minDistance) {
|
|
143
|
-
minDistance = distance;
|
|
144
|
-
minIx = i;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
return defined(minIx) ? series.points[minIx] : void 0;
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Highlights a point (show tooltip and display hover state).
|
|
151
|
-
*
|
|
152
|
-
* @private
|
|
153
|
-
* @function Highcharts.Point#highlight
|
|
154
|
-
*
|
|
155
|
-
* @return {Highcharts.Point}
|
|
156
|
-
* This highlighted point.
|
|
157
|
-
*/
|
|
158
|
-
Point.prototype.highlight = function () {
|
|
159
|
-
var chart = this.series.chart;
|
|
160
|
-
if (!this.isNull) {
|
|
161
|
-
this.onMouseOver(); // Show the hover marker and tooltip
|
|
162
|
-
}
|
|
163
|
-
else {
|
|
164
|
-
if (chart.tooltip) {
|
|
165
|
-
chart.tooltip.hide(0);
|
|
166
|
-
}
|
|
167
|
-
// Don't call blur on the element, as it messes up the chart div's focus
|
|
168
|
-
}
|
|
169
|
-
scrollToPoint(this);
|
|
170
|
-
// We focus only after calling onMouseOver because the state change can
|
|
171
|
-
// change z-index and mess up the element.
|
|
172
|
-
if (this.graphic) {
|
|
173
|
-
chart.setFocusToElement(this.graphic);
|
|
174
|
-
}
|
|
175
|
-
chart.highlightedPoint = this;
|
|
176
|
-
return this;
|
|
177
|
-
};
|
|
178
|
-
/**
|
|
179
|
-
* Function to highlight next/previous point in chart.
|
|
180
|
-
*
|
|
181
102
|
* @private
|
|
182
|
-
* @function Highcharts.Chart#highlightAdjacentPoint
|
|
183
|
-
*
|
|
184
|
-
* @param {boolean} next
|
|
185
|
-
* Flag for the direction.
|
|
186
|
-
*
|
|
187
|
-
* @return {Highcharts.Point|boolean}
|
|
188
|
-
* Returns highlighted point on success, false on failure (no adjacent
|
|
189
|
-
* point to highlight in chosen direction).
|
|
190
|
-
*/
|
|
191
|
-
Chart.prototype.highlightAdjacentPoint = function (next) {
|
|
192
|
-
var chart = this, series = chart.series, curPoint = chart.highlightedPoint, curPointIndex = curPoint && getPointIndex(curPoint) || 0, curPoints = (curPoint && curPoint.series.points), lastSeries = chart.series && chart.series[chart.series.length - 1], lastPoint = lastSeries && lastSeries.points &&
|
|
193
|
-
lastSeries.points[lastSeries.points.length - 1];
|
|
194
|
-
var newSeries, newPoint;
|
|
195
|
-
// If no points, return false
|
|
196
|
-
if (!series[0] || !series[0].points) {
|
|
197
|
-
return false;
|
|
198
|
-
}
|
|
199
|
-
if (!curPoint) {
|
|
200
|
-
// No point is highlighted yet. Try first/last point depending on move
|
|
201
|
-
// direction
|
|
202
|
-
newPoint = next ? series[0].points[0] : lastPoint;
|
|
203
|
-
}
|
|
204
|
-
else {
|
|
205
|
-
// We have a highlighted point.
|
|
206
|
-
// Grab next/prev point & series
|
|
207
|
-
newSeries = series[curPoint.series.index + (next ? 1 : -1)];
|
|
208
|
-
newPoint = curPoints[curPointIndex + (next ? 1 : -1)];
|
|
209
|
-
if (!newPoint && newSeries) {
|
|
210
|
-
// Done with this series, try next one
|
|
211
|
-
newPoint = newSeries.points[next ? 0 : newSeries.points.length - 1];
|
|
212
|
-
}
|
|
213
|
-
// If there is no adjacent point, we return false
|
|
214
|
-
if (!newPoint) {
|
|
215
|
-
return false;
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
// Recursively skip points
|
|
219
|
-
if (isSkipPoint(newPoint)) {
|
|
220
|
-
// If we skip this whole series, move to the end of the series before we
|
|
221
|
-
// recurse, just to optimize
|
|
222
|
-
newSeries = newPoint.series;
|
|
223
|
-
if (isSkipSeries(newSeries)) {
|
|
224
|
-
chart.highlightedPoint = next ?
|
|
225
|
-
newSeries.points[newSeries.points.length - 1] :
|
|
226
|
-
newSeries.points[0];
|
|
227
|
-
}
|
|
228
|
-
else {
|
|
229
|
-
// Otherwise, just move one point
|
|
230
|
-
chart.highlightedPoint = newPoint;
|
|
231
|
-
}
|
|
232
|
-
// Retry
|
|
233
|
-
return chart.highlightAdjacentPoint(next);
|
|
234
|
-
}
|
|
235
|
-
// There is an adjacent point, highlight it
|
|
236
|
-
return newPoint.highlight();
|
|
237
|
-
};
|
|
238
|
-
/**
|
|
239
|
-
* Highlight first valid point in a series. Returns the point if successfully
|
|
240
|
-
* highlighted, otherwise false. If there is a highlighted point in the series,
|
|
241
|
-
* use that as starting point.
|
|
242
|
-
*
|
|
243
|
-
* @private
|
|
244
|
-
* @function Highcharts.Series#highlightFirstValidPoint
|
|
245
|
-
*
|
|
246
|
-
* @return {boolean|Highcharts.Point}
|
|
247
|
-
*/
|
|
248
|
-
Series.prototype.highlightFirstValidPoint = function () {
|
|
249
|
-
var curPoint = this.chart.highlightedPoint, start = (curPoint && curPoint.series) === this ?
|
|
250
|
-
getPointIndex(curPoint) :
|
|
251
|
-
0, points = this.points, len = points.length;
|
|
252
|
-
if (points && len) {
|
|
253
|
-
for (var i = start; i < len; ++i) {
|
|
254
|
-
if (!isSkipPoint(points[i])) {
|
|
255
|
-
return points[i].highlight();
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
for (var j = start; j >= 0; --j) {
|
|
259
|
-
if (!isSkipPoint(points[j])) {
|
|
260
|
-
return points[j].highlight();
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
return false;
|
|
265
|
-
};
|
|
266
|
-
/**
|
|
267
|
-
* Highlight next/previous series in chart. Returns false if no adjacent series
|
|
268
|
-
* in the direction, otherwise returns new highlighted point.
|
|
269
|
-
*
|
|
270
|
-
* @private
|
|
271
|
-
* @function Highcharts.Chart#highlightAdjacentSeries
|
|
272
|
-
*
|
|
273
|
-
* @param {boolean} down
|
|
274
|
-
*
|
|
275
|
-
* @return {Highcharts.Point|boolean}
|
|
276
|
-
*/
|
|
277
|
-
Chart.prototype.highlightAdjacentSeries = function (down) {
|
|
278
|
-
var chart = this, curPoint = chart.highlightedPoint, lastSeries = chart.series && chart.series[chart.series.length - 1], lastPoint = lastSeries && lastSeries.points &&
|
|
279
|
-
lastSeries.points[lastSeries.points.length - 1];
|
|
280
|
-
var newSeries, newPoint, adjacentNewPoint;
|
|
281
|
-
// If no point is highlighted, highlight the first/last point
|
|
282
|
-
if (!chart.highlightedPoint) {
|
|
283
|
-
newSeries = down ? (chart.series && chart.series[0]) : lastSeries;
|
|
284
|
-
newPoint = down ?
|
|
285
|
-
(newSeries && newSeries.points && newSeries.points[0]) : lastPoint;
|
|
286
|
-
return newPoint ? newPoint.highlight() : false;
|
|
287
|
-
}
|
|
288
|
-
newSeries = chart.series[curPoint.series.index + (down ? -1 : 1)];
|
|
289
|
-
if (!newSeries) {
|
|
290
|
-
return false;
|
|
291
|
-
}
|
|
292
|
-
// We have a new series in this direction, find the right point
|
|
293
|
-
// Weigh xDistance as counting much higher than Y distance
|
|
294
|
-
newPoint = getClosestPoint(curPoint, newSeries, 4);
|
|
295
|
-
if (!newPoint) {
|
|
296
|
-
return false;
|
|
297
|
-
}
|
|
298
|
-
// New series and point exists, but we might want to skip it
|
|
299
|
-
if (isSkipSeries(newSeries)) {
|
|
300
|
-
// Skip the series
|
|
301
|
-
newPoint.highlight();
|
|
302
|
-
adjacentNewPoint = chart.highlightAdjacentSeries(down); // Try recurse
|
|
303
|
-
if (!adjacentNewPoint) {
|
|
304
|
-
// Recurse failed
|
|
305
|
-
curPoint.highlight();
|
|
306
|
-
return false;
|
|
307
|
-
}
|
|
308
|
-
// Recurse succeeded
|
|
309
|
-
return adjacentNewPoint;
|
|
310
|
-
}
|
|
311
|
-
// Highlight the new point or any first valid point back or forwards from it
|
|
312
|
-
newPoint.highlight();
|
|
313
|
-
return newPoint.series.highlightFirstValidPoint();
|
|
314
|
-
};
|
|
315
|
-
/**
|
|
316
|
-
* Highlight the closest point vertically.
|
|
317
|
-
*
|
|
318
|
-
* @private
|
|
319
|
-
* @function Highcharts.Chart#highlightAdjacentPointVertical
|
|
320
|
-
*
|
|
321
|
-
* @param {boolean} down
|
|
322
|
-
*
|
|
323
|
-
* @return {Highcharts.Point|boolean}
|
|
324
|
-
*/
|
|
325
|
-
Chart.prototype.highlightAdjacentPointVertical = function (down) {
|
|
326
|
-
var curPoint = this.highlightedPoint;
|
|
327
|
-
var minDistance = Infinity, bestPoint;
|
|
328
|
-
if (!defined(curPoint.plotX) || !defined(curPoint.plotY)) {
|
|
329
|
-
return false;
|
|
330
|
-
}
|
|
331
|
-
this.series.forEach(function (series) {
|
|
332
|
-
if (isSkipSeries(series)) {
|
|
333
|
-
return;
|
|
334
|
-
}
|
|
335
|
-
series.points.forEach(function (point) {
|
|
336
|
-
if (!defined(point.plotY) || !defined(point.plotX) ||
|
|
337
|
-
point === curPoint) {
|
|
338
|
-
return;
|
|
339
|
-
}
|
|
340
|
-
var yDistance = point.plotY - curPoint.plotY;
|
|
341
|
-
var width = Math.abs(point.plotX - curPoint.plotX), distance = Math.abs(yDistance) * Math.abs(yDistance) +
|
|
342
|
-
width * width * 4; // Weigh horizontal distance highly
|
|
343
|
-
// Reverse distance number if axis is reversed
|
|
344
|
-
if (series.yAxis && series.yAxis.reversed) {
|
|
345
|
-
yDistance *= -1;
|
|
346
|
-
}
|
|
347
|
-
if (yDistance <= 0 && down || yDistance >= 0 && !down || // Chk dir
|
|
348
|
-
distance < 5 || // Points in same spot => infinite loop
|
|
349
|
-
isSkipPoint(point)) {
|
|
350
|
-
return;
|
|
351
|
-
}
|
|
352
|
-
if (distance < minDistance) {
|
|
353
|
-
minDistance = distance;
|
|
354
|
-
bestPoint = point;
|
|
355
|
-
}
|
|
356
|
-
});
|
|
357
|
-
});
|
|
358
|
-
return bestPoint ? bestPoint.highlight() : false;
|
|
359
|
-
};
|
|
360
|
-
/**
|
|
361
|
-
* @private
|
|
362
|
-
* @param {Highcharts.Chart} chart
|
|
363
|
-
* @return {Highcharts.Point|boolean}
|
|
364
|
-
*/
|
|
365
|
-
function highlightFirstValidPointInChart(chart) {
|
|
366
|
-
var res = false;
|
|
367
|
-
delete chart.highlightedPoint;
|
|
368
|
-
res = chart.series.reduce(function (acc, cur) {
|
|
369
|
-
return acc || cur.highlightFirstValidPoint();
|
|
370
|
-
}, false);
|
|
371
|
-
return res;
|
|
372
|
-
}
|
|
373
|
-
/**
|
|
374
|
-
* @private
|
|
375
|
-
* @param {Highcharts.Chart} chart
|
|
376
|
-
* @return {Highcharts.Point|boolean}
|
|
377
103
|
*/
|
|
378
104
|
function highlightLastValidPointInChart(chart) {
|
|
379
105
|
var numSeries = chart.series.length;
|
|
@@ -392,7 +118,6 @@ function highlightLastValidPointInChart(chart) {
|
|
|
392
118
|
}
|
|
393
119
|
/**
|
|
394
120
|
* @private
|
|
395
|
-
* @param {Highcharts.Chart} chart
|
|
396
121
|
*/
|
|
397
122
|
function updateChartFocusAfterDrilling(chart) {
|
|
398
123
|
highlightFirstValidPointInChart(chart);
|
|
@@ -400,20 +125,45 @@ function updateChartFocusAfterDrilling(chart) {
|
|
|
400
125
|
chart.focusElement.removeFocusBorder();
|
|
401
126
|
}
|
|
402
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* @private
|
|
130
|
+
*/
|
|
131
|
+
function highlightFirstValidPointInChart(chart) {
|
|
132
|
+
var res = false;
|
|
133
|
+
delete chart.highlightedPoint;
|
|
134
|
+
res = chart.series.reduce(function (acc, cur) { return acc || cur.highlightFirstValidPoint(); }, false);
|
|
135
|
+
return res;
|
|
136
|
+
}
|
|
137
|
+
/* *
|
|
138
|
+
*
|
|
139
|
+
* Class
|
|
140
|
+
*
|
|
141
|
+
* */
|
|
403
142
|
/**
|
|
404
143
|
* @private
|
|
405
144
|
* @class
|
|
406
145
|
* @name Highcharts.SeriesKeyboardNavigation
|
|
407
146
|
*/
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
147
|
+
var SeriesKeyboardNavigation = /** @class */ (function () {
|
|
148
|
+
/* *
|
|
149
|
+
*
|
|
150
|
+
* Constructor
|
|
151
|
+
*
|
|
152
|
+
* */
|
|
153
|
+
function SeriesKeyboardNavigation(chart, keyCodes) {
|
|
154
|
+
this.keyCodes = keyCodes;
|
|
155
|
+
this.chart = chart;
|
|
156
|
+
}
|
|
157
|
+
/* *
|
|
158
|
+
*
|
|
159
|
+
* Functions
|
|
160
|
+
*
|
|
161
|
+
* */
|
|
162
|
+
/* eslint-disable valid-jsdoc */
|
|
413
163
|
/**
|
|
414
164
|
* Init the keyboard navigation
|
|
415
165
|
*/
|
|
416
|
-
init
|
|
166
|
+
SeriesKeyboardNavigation.prototype.init = function () {
|
|
417
167
|
var keyboardNavigation = this, chart = this.chart, e = this.eventProvider = new EventProvider();
|
|
418
168
|
e.addEvent(Series, 'destroy', function () {
|
|
419
169
|
return keyboardNavigation.onSeriesDestroy(this);
|
|
@@ -439,15 +189,27 @@ extend(SeriesKeyboardNavigation.prototype, /** @lends Highcharts.SeriesKeyboardN
|
|
|
439
189
|
e.addEvent(Point, 'afterSetState', function () {
|
|
440
190
|
var point = this;
|
|
441
191
|
var pointEl = point.graphic && point.graphic.element;
|
|
192
|
+
var focusedElement = doc.activeElement;
|
|
193
|
+
// VO brings focus with it to container, causing series nav to run.
|
|
194
|
+
// If then navigating with virtual cursor, it is possible to leave
|
|
195
|
+
// keyboard nav module state on the data points and still activate
|
|
196
|
+
// proxy buttons.
|
|
197
|
+
var focusedElClassName = focusedElement && focusedElement.getAttribute('class');
|
|
198
|
+
var isProxyFocused = focusedElClassName &&
|
|
199
|
+
focusedElClassName.indexOf('highcharts-a11y-proxy-button') > -1;
|
|
442
200
|
if (chart.highlightedPoint === point &&
|
|
443
|
-
|
|
201
|
+
focusedElement !== pointEl &&
|
|
202
|
+
!isProxyFocused &&
|
|
444
203
|
pointEl &&
|
|
445
204
|
pointEl.focus) {
|
|
446
205
|
pointEl.focus();
|
|
447
206
|
}
|
|
448
207
|
});
|
|
449
|
-
}
|
|
450
|
-
|
|
208
|
+
};
|
|
209
|
+
/**
|
|
210
|
+
* @private
|
|
211
|
+
*/
|
|
212
|
+
SeriesKeyboardNavigation.prototype.onDrillupAll = function () {
|
|
451
213
|
// After drillup we want to find the point that was drilled down to and
|
|
452
214
|
// highlight it.
|
|
453
215
|
var last = this.lastDrilledDownPoint, chart = this.chart, series = last && getSeriesFromName(chart, last.seriesName);
|
|
@@ -465,11 +227,11 @@ extend(SeriesKeyboardNavigation.prototype, /** @lends Highcharts.SeriesKeyboardN
|
|
|
465
227
|
if (chart.focusElement) {
|
|
466
228
|
chart.focusElement.removeFocusBorder();
|
|
467
229
|
}
|
|
468
|
-
}
|
|
230
|
+
};
|
|
469
231
|
/**
|
|
470
232
|
* @return {Highcharts.KeyboardNavigationHandler}
|
|
471
233
|
*/
|
|
472
|
-
getKeyboardNavigationHandler
|
|
234
|
+
SeriesKeyboardNavigation.prototype.getKeyboardNavigationHandler = function () {
|
|
473
235
|
var keyboardNavigation = this, keys = this.keyCodes, chart = this.chart, inverted = chart.inverted;
|
|
474
236
|
return new KeyboardNavigationHandler(chart, {
|
|
475
237
|
keyCodeMap: [
|
|
@@ -487,16 +249,29 @@ extend(SeriesKeyboardNavigation.prototype, /** @lends Highcharts.SeriesKeyboardN
|
|
|
487
249
|
point.firePointEvent('click');
|
|
488
250
|
}
|
|
489
251
|
return this.response.success;
|
|
252
|
+
}],
|
|
253
|
+
[[keys.home], function () {
|
|
254
|
+
highlightFirstValidPointInChart(chart);
|
|
255
|
+
return this.response.success;
|
|
256
|
+
}],
|
|
257
|
+
[[keys.end], function () {
|
|
258
|
+
highlightLastValidPointInChart(chart);
|
|
259
|
+
return this.response.success;
|
|
260
|
+
}],
|
|
261
|
+
[[keys.pageDown, keys.pageUp], function (keyCode) {
|
|
262
|
+
chart.highlightAdjacentSeries(keyCode === keys.pageDown);
|
|
263
|
+
return this.response.success;
|
|
490
264
|
}]
|
|
491
265
|
],
|
|
492
|
-
init: function (
|
|
493
|
-
|
|
266
|
+
init: function () {
|
|
267
|
+
highlightFirstValidPointInChart(chart);
|
|
268
|
+
return this.response.success;
|
|
494
269
|
},
|
|
495
270
|
terminate: function () {
|
|
496
271
|
return keyboardNavigation.onHandlerTerminate();
|
|
497
272
|
}
|
|
498
273
|
});
|
|
499
|
-
}
|
|
274
|
+
};
|
|
500
275
|
/**
|
|
501
276
|
* @private
|
|
502
277
|
* @param {Highcharts.KeyboardNavigationHandler} handler
|
|
@@ -504,10 +279,10 @@ extend(SeriesKeyboardNavigation.prototype, /** @lends Highcharts.SeriesKeyboardN
|
|
|
504
279
|
* @return {number}
|
|
505
280
|
* response
|
|
506
281
|
*/
|
|
507
|
-
onKbdSideways
|
|
282
|
+
SeriesKeyboardNavigation.prototype.onKbdSideways = function (handler, keyCode) {
|
|
508
283
|
var keys = this.keyCodes, isNext = keyCode === keys.right || keyCode === keys.down;
|
|
509
284
|
return this.attemptHighlightAdjacentPoint(handler, isNext);
|
|
510
|
-
}
|
|
285
|
+
};
|
|
511
286
|
/**
|
|
512
287
|
* @private
|
|
513
288
|
* @param {Highcharts.KeyboardNavigationHandler} handler
|
|
@@ -515,7 +290,7 @@ extend(SeriesKeyboardNavigation.prototype, /** @lends Highcharts.SeriesKeyboardN
|
|
|
515
290
|
* @return {number}
|
|
516
291
|
* response
|
|
517
292
|
*/
|
|
518
|
-
onKbdVertical
|
|
293
|
+
SeriesKeyboardNavigation.prototype.onKbdVertical = function (handler, keyCode) {
|
|
519
294
|
var chart = this.chart, keys = this.keyCodes, isNext = keyCode === keys.down || keyCode === keys.right, navOptions = chart.options.accessibility.keyboardNavigation
|
|
520
295
|
.seriesNavigation;
|
|
521
296
|
// Handle serialized mode, act like left/right
|
|
@@ -529,28 +304,11 @@ extend(SeriesKeyboardNavigation.prototype, /** @lends Highcharts.SeriesKeyboardN
|
|
|
529
304
|
'highlightAdjacentSeries';
|
|
530
305
|
chart[highlightMethod](isNext);
|
|
531
306
|
return handler.response.success;
|
|
532
|
-
}
|
|
533
|
-
/**
|
|
534
|
-
* @private
|
|
535
|
-
* @param {Highcharts.KeyboardNavigationHandler} handler
|
|
536
|
-
* @param {number} initDirection
|
|
537
|
-
* @return {number}
|
|
538
|
-
* response
|
|
539
|
-
*/
|
|
540
|
-
onHandlerInit: function (handler, initDirection) {
|
|
541
|
-
var chart = this.chart;
|
|
542
|
-
if (initDirection > 0) {
|
|
543
|
-
highlightFirstValidPointInChart(chart);
|
|
544
|
-
}
|
|
545
|
-
else {
|
|
546
|
-
highlightLastValidPointInChart(chart);
|
|
547
|
-
}
|
|
548
|
-
return handler.response.success;
|
|
549
|
-
},
|
|
307
|
+
};
|
|
550
308
|
/**
|
|
551
309
|
* @private
|
|
552
310
|
*/
|
|
553
|
-
onHandlerTerminate
|
|
311
|
+
SeriesKeyboardNavigation.prototype.onHandlerTerminate = function () {
|
|
554
312
|
var chart = this.chart;
|
|
555
313
|
if (chart.tooltip) {
|
|
556
314
|
chart.tooltip.hide(0);
|
|
@@ -563,7 +321,7 @@ extend(SeriesKeyboardNavigation.prototype, /** @lends Highcharts.SeriesKeyboardN
|
|
|
563
321
|
chart.highlightedPoint.onMouseOut();
|
|
564
322
|
}
|
|
565
323
|
delete chart.highlightedPoint;
|
|
566
|
-
}
|
|
324
|
+
};
|
|
567
325
|
/**
|
|
568
326
|
* Function that attempts to highlight next/prev point. Handles wrap around.
|
|
569
327
|
* @private
|
|
@@ -572,7 +330,7 @@ extend(SeriesKeyboardNavigation.prototype, /** @lends Highcharts.SeriesKeyboardN
|
|
|
572
330
|
* @return {number}
|
|
573
331
|
* response
|
|
574
332
|
*/
|
|
575
|
-
attemptHighlightAdjacentPoint
|
|
333
|
+
SeriesKeyboardNavigation.prototype.attemptHighlightAdjacentPoint = function (handler, directionIsNext) {
|
|
576
334
|
var chart = this.chart, wrapAround = chart.options.accessibility.keyboardNavigation
|
|
577
335
|
.wrapAround, highlightSuccessful = chart.highlightAdjacentPoint(directionIsNext);
|
|
578
336
|
if (!highlightSuccessful) {
|
|
@@ -582,11 +340,11 @@ extend(SeriesKeyboardNavigation.prototype, /** @lends Highcharts.SeriesKeyboardN
|
|
|
582
340
|
return handler.response[directionIsNext ? 'next' : 'prev'];
|
|
583
341
|
}
|
|
584
342
|
return handler.response.success;
|
|
585
|
-
}
|
|
343
|
+
};
|
|
586
344
|
/**
|
|
587
345
|
* @private
|
|
588
346
|
*/
|
|
589
|
-
onSeriesDestroy
|
|
347
|
+
SeriesKeyboardNavigation.prototype.onSeriesDestroy = function (series) {
|
|
590
348
|
var chart = this.chart, currentHighlightedPointDestroyed = chart.highlightedPoint &&
|
|
591
349
|
chart.highlightedPoint.series === series;
|
|
592
350
|
if (currentHighlightedPointDestroyed) {
|
|
@@ -595,12 +353,309 @@ extend(SeriesKeyboardNavigation.prototype, /** @lends Highcharts.SeriesKeyboardN
|
|
|
595
353
|
chart.focusElement.removeFocusBorder();
|
|
596
354
|
}
|
|
597
355
|
}
|
|
598
|
-
}
|
|
356
|
+
};
|
|
599
357
|
/**
|
|
600
358
|
* @private
|
|
601
359
|
*/
|
|
602
|
-
destroy
|
|
360
|
+
SeriesKeyboardNavigation.prototype.destroy = function () {
|
|
603
361
|
this.eventProvider.removeAddedEvents();
|
|
362
|
+
};
|
|
363
|
+
return SeriesKeyboardNavigation;
|
|
364
|
+
}());
|
|
365
|
+
/* *
|
|
366
|
+
*
|
|
367
|
+
* Class Namespace
|
|
368
|
+
*
|
|
369
|
+
* */
|
|
370
|
+
(function (SeriesKeyboardNavigation) {
|
|
371
|
+
/* *
|
|
372
|
+
*
|
|
373
|
+
* Declarations
|
|
374
|
+
*
|
|
375
|
+
* */
|
|
376
|
+
/* *
|
|
377
|
+
*
|
|
378
|
+
* Constants
|
|
379
|
+
*
|
|
380
|
+
* */
|
|
381
|
+
var composedClasses = [];
|
|
382
|
+
/* *
|
|
383
|
+
*
|
|
384
|
+
* Functions
|
|
385
|
+
*
|
|
386
|
+
* */
|
|
387
|
+
/**
|
|
388
|
+
* Function to highlight next/previous point in chart.
|
|
389
|
+
*
|
|
390
|
+
* @private
|
|
391
|
+
* @function Highcharts.Chart#highlightAdjacentPoint
|
|
392
|
+
*
|
|
393
|
+
* @param {boolean} next
|
|
394
|
+
* Flag for the direction.
|
|
395
|
+
*
|
|
396
|
+
* @return {Highcharts.Point|boolean}
|
|
397
|
+
* Returns highlighted point on success, false on failure (no adjacent point
|
|
398
|
+
* to highlight in chosen direction).
|
|
399
|
+
*/
|
|
400
|
+
function chartHighlightAdjacentPoint(next) {
|
|
401
|
+
var chart = this, series = chart.series, curPoint = chart.highlightedPoint, curPointIndex = curPoint && getPointIndex(curPoint) || 0, curPoints = curPoint && curPoint.series.points || [], lastSeries = chart.series && chart.series[chart.series.length - 1], lastPoint = lastSeries && lastSeries.points && lastSeries.points[lastSeries.points.length - 1];
|
|
402
|
+
var newSeries, newPoint;
|
|
403
|
+
// If no points, return false
|
|
404
|
+
if (!series[0] || !series[0].points) {
|
|
405
|
+
return false;
|
|
406
|
+
}
|
|
407
|
+
if (!curPoint) {
|
|
408
|
+
// No point is highlighted yet. Try first/last point depending on
|
|
409
|
+
// move direction
|
|
410
|
+
newPoint = next ? series[0].points[0] : lastPoint;
|
|
411
|
+
}
|
|
412
|
+
else {
|
|
413
|
+
// We have a highlighted point.
|
|
414
|
+
// Grab next/prev point & series
|
|
415
|
+
newSeries = series[curPoint.series.index + (next ? 1 : -1)];
|
|
416
|
+
newPoint = curPoints[curPointIndex + (next ? 1 : -1)];
|
|
417
|
+
if (!newPoint && newSeries) {
|
|
418
|
+
// Done with this series, try next one
|
|
419
|
+
newPoint = newSeries.points[next ? 0 : newSeries.points.length - 1];
|
|
420
|
+
}
|
|
421
|
+
// If there is no adjacent point, we return false
|
|
422
|
+
if (!newPoint) {
|
|
423
|
+
return false;
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
// Recursively skip points
|
|
427
|
+
if (isSkipPoint(newPoint)) {
|
|
428
|
+
// If we skip this whole series, move to the end of the series
|
|
429
|
+
// before we recurse, just to optimize
|
|
430
|
+
newSeries = newPoint.series;
|
|
431
|
+
if (isSkipSeries(newSeries)) {
|
|
432
|
+
chart.highlightedPoint = next ?
|
|
433
|
+
newSeries.points[newSeries.points.length - 1] :
|
|
434
|
+
newSeries.points[0];
|
|
435
|
+
}
|
|
436
|
+
else {
|
|
437
|
+
// Otherwise, just move one point
|
|
438
|
+
chart.highlightedPoint = newPoint;
|
|
439
|
+
}
|
|
440
|
+
// Retry
|
|
441
|
+
return chart.highlightAdjacentPoint(next);
|
|
442
|
+
}
|
|
443
|
+
// There is an adjacent point, highlight it
|
|
444
|
+
return newPoint.highlight();
|
|
604
445
|
}
|
|
605
|
-
|
|
446
|
+
/**
|
|
447
|
+
* Highlight the closest point vertically.
|
|
448
|
+
* @private
|
|
449
|
+
*/
|
|
450
|
+
function chartHighlightAdjacentPointVertical(down) {
|
|
451
|
+
var curPoint = this.highlightedPoint;
|
|
452
|
+
var minDistance = Infinity, bestPoint;
|
|
453
|
+
if (!defined(curPoint.plotX) || !defined(curPoint.plotY)) {
|
|
454
|
+
return false;
|
|
455
|
+
}
|
|
456
|
+
this.series.forEach(function (series) {
|
|
457
|
+
if (isSkipSeries(series)) {
|
|
458
|
+
return;
|
|
459
|
+
}
|
|
460
|
+
series.points.forEach(function (point) {
|
|
461
|
+
if (!defined(point.plotY) || !defined(point.plotX) ||
|
|
462
|
+
point === curPoint) {
|
|
463
|
+
return;
|
|
464
|
+
}
|
|
465
|
+
var yDistance = point.plotY - curPoint.plotY;
|
|
466
|
+
var width = Math.abs(point.plotX - curPoint.plotX), distance = Math.abs(yDistance) * Math.abs(yDistance) +
|
|
467
|
+
width * width * 4; // Weigh horizontal distance highly
|
|
468
|
+
// Reverse distance number if axis is reversed
|
|
469
|
+
if (series.yAxis && series.yAxis.reversed) {
|
|
470
|
+
yDistance *= -1;
|
|
471
|
+
}
|
|
472
|
+
if (yDistance <= 0 && down || yDistance >= 0 && !down || // Chk dir
|
|
473
|
+
distance < 5 || // Points in same spot => infinite loop
|
|
474
|
+
isSkipPoint(point)) {
|
|
475
|
+
return;
|
|
476
|
+
}
|
|
477
|
+
if (distance < minDistance) {
|
|
478
|
+
minDistance = distance;
|
|
479
|
+
bestPoint = point;
|
|
480
|
+
}
|
|
481
|
+
});
|
|
482
|
+
});
|
|
483
|
+
return bestPoint ? bestPoint.highlight() : false;
|
|
484
|
+
}
|
|
485
|
+
/**
|
|
486
|
+
* Highlight next/previous series in chart. Returns false if no adjacent
|
|
487
|
+
* series in the direction, otherwise returns new highlighted point.
|
|
488
|
+
* @private
|
|
489
|
+
*/
|
|
490
|
+
function chartHighlightAdjacentSeries(down) {
|
|
491
|
+
var chart = this, curPoint = chart.highlightedPoint, lastSeries = chart.series && chart.series[chart.series.length - 1], lastPoint = lastSeries && lastSeries.points &&
|
|
492
|
+
lastSeries.points[lastSeries.points.length - 1];
|
|
493
|
+
var newSeries, newPoint, adjacentNewPoint;
|
|
494
|
+
// If no point is highlighted, highlight the first/last point
|
|
495
|
+
if (!chart.highlightedPoint) {
|
|
496
|
+
newSeries = down ? (chart.series && chart.series[0]) : lastSeries;
|
|
497
|
+
newPoint = down ?
|
|
498
|
+
(newSeries && newSeries.points && newSeries.points[0]) : lastPoint;
|
|
499
|
+
return newPoint ? newPoint.highlight() : false;
|
|
500
|
+
}
|
|
501
|
+
newSeries = chart.series[curPoint.series.index + (down ? -1 : 1)];
|
|
502
|
+
if (!newSeries) {
|
|
503
|
+
return false;
|
|
504
|
+
}
|
|
505
|
+
// We have a new series in this direction, find the right point
|
|
506
|
+
// Weigh xDistance as counting much higher than Y distance
|
|
507
|
+
newPoint = getClosestPoint(curPoint, newSeries, 4);
|
|
508
|
+
if (!newPoint) {
|
|
509
|
+
return false;
|
|
510
|
+
}
|
|
511
|
+
// New series and point exists, but we might want to skip it
|
|
512
|
+
if (isSkipSeries(newSeries)) {
|
|
513
|
+
// Skip the series
|
|
514
|
+
newPoint.highlight();
|
|
515
|
+
adjacentNewPoint = chart.highlightAdjacentSeries(down); // Try recurse
|
|
516
|
+
if (!adjacentNewPoint) {
|
|
517
|
+
// Recurse failed
|
|
518
|
+
curPoint.highlight();
|
|
519
|
+
return false;
|
|
520
|
+
}
|
|
521
|
+
// Recurse succeeded
|
|
522
|
+
return adjacentNewPoint;
|
|
523
|
+
}
|
|
524
|
+
// Highlight the new point or any first valid point back or forwards
|
|
525
|
+
// from it
|
|
526
|
+
newPoint.highlight();
|
|
527
|
+
return newPoint.series.highlightFirstValidPoint();
|
|
528
|
+
}
|
|
529
|
+
/**
|
|
530
|
+
* @private
|
|
531
|
+
*/
|
|
532
|
+
function compose(ChartClass, PointClass, SeriesClass) {
|
|
533
|
+
if (composedClasses.indexOf(ChartClass) === -1) {
|
|
534
|
+
composedClasses.push(ChartClass);
|
|
535
|
+
var chartProto = ChartClass.prototype;
|
|
536
|
+
chartProto.highlightAdjacentPoint = chartHighlightAdjacentPoint;
|
|
537
|
+
chartProto.highlightAdjacentPointVertical = chartHighlightAdjacentPointVertical;
|
|
538
|
+
chartProto.highlightAdjacentSeries = chartHighlightAdjacentSeries;
|
|
539
|
+
}
|
|
540
|
+
if (composedClasses.indexOf(PointClass) === -1) {
|
|
541
|
+
composedClasses.push(PointClass);
|
|
542
|
+
var pointProto = PointClass.prototype;
|
|
543
|
+
pointProto.highlight = pointHighlight;
|
|
544
|
+
}
|
|
545
|
+
if (composedClasses.indexOf(SeriesClass) === -1) {
|
|
546
|
+
composedClasses.push(SeriesClass);
|
|
547
|
+
var seriesProto = SeriesClass.prototype;
|
|
548
|
+
/**
|
|
549
|
+
* Set for which series types it makes sense to move to the closest
|
|
550
|
+
* point with up/down arrows, and which series types should just
|
|
551
|
+
* move to next series.
|
|
552
|
+
* @private
|
|
553
|
+
*/
|
|
554
|
+
seriesProto.keyboardMoveVertical = true;
|
|
555
|
+
[
|
|
556
|
+
'column',
|
|
557
|
+
'gantt',
|
|
558
|
+
'pie'
|
|
559
|
+
].forEach(function (type) {
|
|
560
|
+
if (seriesTypes[type]) {
|
|
561
|
+
seriesTypes[type].prototype.keyboardMoveVertical = false;
|
|
562
|
+
}
|
|
563
|
+
});
|
|
564
|
+
seriesProto.highlightFirstValidPoint = seriesHighlightFirstValidPoint;
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
SeriesKeyboardNavigation.compose = compose;
|
|
568
|
+
/**
|
|
569
|
+
* Get the point in a series that is closest (in pixel distance) to a
|
|
570
|
+
* reference point. Optionally supply weight factors for x and y directions.
|
|
571
|
+
* @private
|
|
572
|
+
*/
|
|
573
|
+
function getClosestPoint(point, series, xWeight, yWeight) {
|
|
574
|
+
var minDistance = Infinity, dPoint, minIx, distance, i = series.points.length;
|
|
575
|
+
var hasUndefinedPosition = function (point) { return (!(defined(point.plotX) && defined(point.plotY))); };
|
|
576
|
+
if (hasUndefinedPosition(point)) {
|
|
577
|
+
return;
|
|
578
|
+
}
|
|
579
|
+
while (i--) {
|
|
580
|
+
dPoint = series.points[i];
|
|
581
|
+
if (hasUndefinedPosition(dPoint)) {
|
|
582
|
+
continue;
|
|
583
|
+
}
|
|
584
|
+
distance = (point.plotX - dPoint.plotX) *
|
|
585
|
+
(point.plotX - dPoint.plotX) *
|
|
586
|
+
(xWeight || 1) +
|
|
587
|
+
(point.plotY - dPoint.plotY) *
|
|
588
|
+
(point.plotY - dPoint.plotY) *
|
|
589
|
+
(yWeight || 1);
|
|
590
|
+
if (distance < minDistance) {
|
|
591
|
+
minDistance = distance;
|
|
592
|
+
minIx = i;
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
return defined(minIx) ? series.points[minIx] : void 0;
|
|
596
|
+
}
|
|
597
|
+
/**
|
|
598
|
+
* Highlights a point (show tooltip and display hover state).
|
|
599
|
+
*
|
|
600
|
+
* @private
|
|
601
|
+
* @function Highcharts.Point#highlight
|
|
602
|
+
*
|
|
603
|
+
* @return {Highcharts.Point}
|
|
604
|
+
* This highlighted point.
|
|
605
|
+
*/
|
|
606
|
+
function pointHighlight() {
|
|
607
|
+
var chart = this.series.chart;
|
|
608
|
+
if (!this.isNull) {
|
|
609
|
+
this.onMouseOver(); // Show the hover marker and tooltip
|
|
610
|
+
}
|
|
611
|
+
else {
|
|
612
|
+
if (chart.tooltip) {
|
|
613
|
+
chart.tooltip.hide(0);
|
|
614
|
+
}
|
|
615
|
+
// Do not call blur on the element, as it messes up the focus of the
|
|
616
|
+
// div element of the chart
|
|
617
|
+
}
|
|
618
|
+
scrollToPoint(this);
|
|
619
|
+
// We focus only after calling onMouseOver because the state change can
|
|
620
|
+
// change z-index and mess up the element.
|
|
621
|
+
if (this.graphic) {
|
|
622
|
+
chart.setFocusToElement(this.graphic);
|
|
623
|
+
}
|
|
624
|
+
chart.highlightedPoint = this;
|
|
625
|
+
return this;
|
|
626
|
+
}
|
|
627
|
+
/**
|
|
628
|
+
* Highlight first valid point in a series. Returns the point if
|
|
629
|
+
* successfully highlighted, otherwise false. If there is a highlighted
|
|
630
|
+
* point in the series, use that as starting point.
|
|
631
|
+
*
|
|
632
|
+
* @private
|
|
633
|
+
* @function Highcharts.Series#highlightFirstValidPoint
|
|
634
|
+
*
|
|
635
|
+
* @return {boolean|Highcharts.Point}
|
|
636
|
+
*/
|
|
637
|
+
function seriesHighlightFirstValidPoint() {
|
|
638
|
+
var curPoint = this.chart.highlightedPoint, start = (curPoint && curPoint.series) === this ?
|
|
639
|
+
getPointIndex(curPoint) :
|
|
640
|
+
0, points = this.points, len = points.length;
|
|
641
|
+
if (points && len) {
|
|
642
|
+
for (var i = start; i < len; ++i) {
|
|
643
|
+
if (!isSkipPoint(points[i])) {
|
|
644
|
+
return points[i].highlight();
|
|
645
|
+
}
|
|
646
|
+
}
|
|
647
|
+
for (var j = start; j >= 0; --j) {
|
|
648
|
+
if (!isSkipPoint(points[j])) {
|
|
649
|
+
return points[j].highlight();
|
|
650
|
+
}
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
return false;
|
|
654
|
+
}
|
|
655
|
+
})(SeriesKeyboardNavigation || (SeriesKeyboardNavigation = {}));
|
|
656
|
+
/* *
|
|
657
|
+
*
|
|
658
|
+
* Default Export
|
|
659
|
+
*
|
|
660
|
+
* */
|
|
606
661
|
export default SeriesKeyboardNavigation;
|