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
|
@@ -0,0 +1,459 @@
|
|
|
1
|
+
/* *
|
|
2
|
+
*
|
|
3
|
+
* (c) 2009-2021 Øystein Moseng
|
|
4
|
+
*
|
|
5
|
+
* Sonification functions for chart/series.
|
|
6
|
+
*
|
|
7
|
+
* License: www.highcharts.com/license
|
|
8
|
+
*
|
|
9
|
+
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
10
|
+
*
|
|
11
|
+
* */
|
|
12
|
+
'use strict';
|
|
13
|
+
import Earcon from './Earcon.js';
|
|
14
|
+
import Instrument from './Instrument.js';
|
|
15
|
+
import Point from '../../Core/Series/Point.js';
|
|
16
|
+
import SU from './SonificationUtilities.js';
|
|
17
|
+
var getExtremesForInstrumentProps = SU.getExtremesForInstrumentProps, virtualAxisTranslate = SU.virtualAxisTranslate;
|
|
18
|
+
import Timeline from './Timeline.js';
|
|
19
|
+
import TimelineEvent from './TimelineEvent.js';
|
|
20
|
+
import TimelinePath from './TimelinePath.js';
|
|
21
|
+
import U from '../../Core/Utilities.js';
|
|
22
|
+
var extend = U.extend, find = U.find, isArray = U.isArray, merge = U.merge, objectEach = U.objectEach, pick = U.pick;
|
|
23
|
+
/* *
|
|
24
|
+
*
|
|
25
|
+
* Compositions
|
|
26
|
+
*
|
|
27
|
+
* */
|
|
28
|
+
var SeriesSonify;
|
|
29
|
+
(function (SeriesSonify) {
|
|
30
|
+
/* *
|
|
31
|
+
*
|
|
32
|
+
* Declarations
|
|
33
|
+
*
|
|
34
|
+
* */
|
|
35
|
+
/* *
|
|
36
|
+
*
|
|
37
|
+
* Constants
|
|
38
|
+
*
|
|
39
|
+
* */
|
|
40
|
+
var composedClasses = [];
|
|
41
|
+
/* *
|
|
42
|
+
*
|
|
43
|
+
* Functions
|
|
44
|
+
*
|
|
45
|
+
* */
|
|
46
|
+
/* eslint-disable valid-jsdoc */
|
|
47
|
+
/**
|
|
48
|
+
* @private
|
|
49
|
+
*/
|
|
50
|
+
function compose(SeriesClass) {
|
|
51
|
+
if (composedClasses.indexOf(SeriesClass) === -1) {
|
|
52
|
+
composedClasses.push(SeriesClass);
|
|
53
|
+
var seriesProto = SeriesClass.prototype;
|
|
54
|
+
extend(seriesProto, {
|
|
55
|
+
sonify: sonify
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
return SeriesClass;
|
|
59
|
+
}
|
|
60
|
+
SeriesSonify.compose = compose;
|
|
61
|
+
/**
|
|
62
|
+
* Utility function to apply a master volume to a list of instrument
|
|
63
|
+
* options.
|
|
64
|
+
* @private
|
|
65
|
+
* @param {Array<Highcharts.PointInstrumentObject>} instruments
|
|
66
|
+
* The instrument options. Only options with Instrument object instances
|
|
67
|
+
* will be affected.
|
|
68
|
+
* @param {number} masterVolume
|
|
69
|
+
* The master volume multiplier to apply to the instruments.
|
|
70
|
+
* @return {Array<Highcharts.PointInstrumentObject>}
|
|
71
|
+
* Array of instrument options.
|
|
72
|
+
*/
|
|
73
|
+
function applyMasterVolumeToInstruments(instruments, masterVolume) {
|
|
74
|
+
instruments.forEach(function (instrOpts) {
|
|
75
|
+
var instr = instrOpts.instrument;
|
|
76
|
+
if (typeof instr !== 'string') {
|
|
77
|
+
instr.setMasterVolume(masterVolume);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
return instruments;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Utility function to assemble options for creating a TimelinePath from a
|
|
84
|
+
* series when sonifying an entire chart.
|
|
85
|
+
* @private
|
|
86
|
+
* @param {Highcharts.Series} series
|
|
87
|
+
* The series to return options for.
|
|
88
|
+
* @param {Highcharts.RangeObject} dataExtremes
|
|
89
|
+
* Pre-calculated data extremes for the chart.
|
|
90
|
+
* @param {Highcharts.SonificationOptions} chartSonifyOptions
|
|
91
|
+
* Options passed in to chart.sonify.
|
|
92
|
+
* @return {Partial<Highcharts.SonifySeriesOptionsObject>}
|
|
93
|
+
* Options for buildTimelinePathFromSeries.
|
|
94
|
+
*/
|
|
95
|
+
function buildChartSonifySeriesOptions(series, dataExtremes, chartSonifyOptions) {
|
|
96
|
+
var additionalSeriesOptions = chartSonifyOptions.seriesOptions || {}, pointPlayTime = (series.chart.options.sonification &&
|
|
97
|
+
series.chart.options.sonification.defaultInstrumentOptions &&
|
|
98
|
+
series.chart.options.sonification.defaultInstrumentOptions.mapping &&
|
|
99
|
+
series.chart.options.sonification.defaultInstrumentOptions.mapping.pointPlayTime ||
|
|
100
|
+
'x'), configOptions = chartOptionsToSonifySeriesOptions(series);
|
|
101
|
+
return merge(
|
|
102
|
+
// Options from chart configuration
|
|
103
|
+
configOptions,
|
|
104
|
+
// Options passed in
|
|
105
|
+
{
|
|
106
|
+
// Calculated dataExtremes for chart
|
|
107
|
+
dataExtremes: dataExtremes,
|
|
108
|
+
// We need to get timeExtremes for each series. We pass this
|
|
109
|
+
// in when building the TimelinePath objects to avoid
|
|
110
|
+
// calculating twice.
|
|
111
|
+
timeExtremes: getTimeExtremes(series, pointPlayTime),
|
|
112
|
+
// Some options we just pass on
|
|
113
|
+
instruments: chartSonifyOptions.instruments || configOptions.instruments,
|
|
114
|
+
onStart: chartSonifyOptions.onSeriesStart || configOptions.onStart,
|
|
115
|
+
onEnd: chartSonifyOptions.onSeriesEnd || configOptions.onEnd,
|
|
116
|
+
earcons: chartSonifyOptions.earcons || configOptions.earcons,
|
|
117
|
+
masterVolume: pick(chartSonifyOptions.masterVolume, configOptions.masterVolume)
|
|
118
|
+
},
|
|
119
|
+
// Merge in the specific series options by ID if any are passed in
|
|
120
|
+
isArray(additionalSeriesOptions) ? (find(additionalSeriesOptions, function (optEntry) {
|
|
121
|
+
return optEntry.id === pick(series.id, series.options.id);
|
|
122
|
+
}) || {}) : additionalSeriesOptions, {
|
|
123
|
+
// Forced options
|
|
124
|
+
pointPlayTime: pointPlayTime
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
SeriesSonify.buildChartSonifySeriesOptions = buildChartSonifySeriesOptions;
|
|
128
|
+
/**
|
|
129
|
+
* Create a TimelinePath from a series. Takes the same options as
|
|
130
|
+
* seriesSonify. To intuitively allow multiple series to play simultaneously
|
|
131
|
+
* we make copies of the instruments for each series.
|
|
132
|
+
* @private
|
|
133
|
+
* @param {Highcharts.Series} series
|
|
134
|
+
* The series to build from.
|
|
135
|
+
* @param {Highcharts.SonifySeriesOptionsObject} options
|
|
136
|
+
* The options for building the TimelinePath.
|
|
137
|
+
* @return {Highcharts.TimelinePath}
|
|
138
|
+
* A timeline path with events.
|
|
139
|
+
*/
|
|
140
|
+
function buildTimelinePathFromSeries(series, options) {
|
|
141
|
+
// options.timeExtremes is internal and used so that the calculations
|
|
142
|
+
// from chart.sonify can be reused.
|
|
143
|
+
var timeExtremes = options.timeExtremes || getTimeExtremes(series, options.pointPlayTime),
|
|
144
|
+
// Compute any data extremes that aren't defined yet
|
|
145
|
+
dataExtremes = getExtremesForInstrumentProps(series.chart, options.instruments, options.dataExtremes), minimumSeriesDurationMs = 10,
|
|
146
|
+
// Get the duration of the final note
|
|
147
|
+
finalNoteDuration = getFinalNoteDuration(series, options.instruments, dataExtremes),
|
|
148
|
+
// Get time offset for a point, relative to duration
|
|
149
|
+
pointToTime = function (point) {
|
|
150
|
+
return virtualAxisTranslate(getPointTimeValue(point, options.pointPlayTime), timeExtremes, { min: 0, max: Math.max(options.duration - finalNoteDuration, minimumSeriesDurationMs) });
|
|
151
|
+
}, masterVolume = pick(options.masterVolume, 1),
|
|
152
|
+
// Make copies of the instruments used for this series, to allow
|
|
153
|
+
// multiple series with the same instrument to play together
|
|
154
|
+
instrumentCopies = makeInstrumentCopies(options.instruments), instruments = applyMasterVolumeToInstruments(instrumentCopies, masterVolume),
|
|
155
|
+
// Go through the points, convert to events, optionally add Earcons
|
|
156
|
+
timelineEvents = series.points.reduce(function (events, point) {
|
|
157
|
+
var earcons = getPointEarcons(point, options.earcons || []), time = pointToTime(point);
|
|
158
|
+
return events.concat(
|
|
159
|
+
// Event object for point
|
|
160
|
+
new TimelineEvent({
|
|
161
|
+
eventObject: point,
|
|
162
|
+
time: time,
|
|
163
|
+
id: point.id,
|
|
164
|
+
playOptions: {
|
|
165
|
+
instruments: instruments,
|
|
166
|
+
dataExtremes: dataExtremes,
|
|
167
|
+
masterVolume: masterVolume
|
|
168
|
+
}
|
|
169
|
+
}),
|
|
170
|
+
// Earcons
|
|
171
|
+
earcons.map(function (earcon) {
|
|
172
|
+
return new TimelineEvent({
|
|
173
|
+
eventObject: earcon,
|
|
174
|
+
time: time,
|
|
175
|
+
playOptions: {
|
|
176
|
+
volume: masterVolume
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
}));
|
|
180
|
+
}, []);
|
|
181
|
+
// Build the timeline path
|
|
182
|
+
return new TimelinePath({
|
|
183
|
+
events: timelineEvents,
|
|
184
|
+
onStart: function () {
|
|
185
|
+
if (options.onStart) {
|
|
186
|
+
options.onStart(series);
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
onEventStart: function (event) {
|
|
190
|
+
var eventObject = event.options && event.options.eventObject;
|
|
191
|
+
if (eventObject instanceof Point) {
|
|
192
|
+
// Check for hidden series
|
|
193
|
+
if (!eventObject.series.visible &&
|
|
194
|
+
!eventObject.series.chart.series.some(function (series) {
|
|
195
|
+
return series.visible;
|
|
196
|
+
})) {
|
|
197
|
+
// We have no visible series, stop the path.
|
|
198
|
+
event.timelinePath.timeline.pause();
|
|
199
|
+
event.timelinePath.timeline.resetCursor();
|
|
200
|
+
return false;
|
|
201
|
+
}
|
|
202
|
+
// Emit onPointStart
|
|
203
|
+
if (options.onPointStart) {
|
|
204
|
+
options.onPointStart(event, eventObject);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
onEventEnd: function (eventData) {
|
|
209
|
+
var eventObject = eventData.event && eventData.event.options &&
|
|
210
|
+
eventData.event.options.eventObject;
|
|
211
|
+
if (eventObject instanceof Point && options.onPointEnd) {
|
|
212
|
+
options.onPointEnd(eventData.event, eventObject);
|
|
213
|
+
}
|
|
214
|
+
},
|
|
215
|
+
onEnd: function () {
|
|
216
|
+
if (options.onEnd) {
|
|
217
|
+
options.onEnd(series);
|
|
218
|
+
}
|
|
219
|
+
},
|
|
220
|
+
targetDuration: options.duration
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
SeriesSonify.buildTimelinePathFromSeries = buildTimelinePathFromSeries;
|
|
224
|
+
/**
|
|
225
|
+
* Utility function to translate between options set in chart configuration
|
|
226
|
+
* and a SonifySeriesOptionsObject.
|
|
227
|
+
* @private
|
|
228
|
+
* @param {Highcharts.Series} series The series to get options for.
|
|
229
|
+
* @returns {Highcharts.SonifySeriesOptionsObject} Options for chart/series.sonify()
|
|
230
|
+
*/
|
|
231
|
+
function chartOptionsToSonifySeriesOptions(series) {
|
|
232
|
+
var seriesOpts = series.options.sonification || {}, chartOpts = series.chart.options.sonification || {}, chartEvents = chartOpts.events || {}, seriesEvents = seriesOpts.events || {};
|
|
233
|
+
return {
|
|
234
|
+
onEnd: seriesEvents.onSeriesEnd || chartEvents.onSeriesEnd,
|
|
235
|
+
onStart: seriesEvents.onSeriesStart || chartEvents.onSeriesStart,
|
|
236
|
+
onPointEnd: seriesEvents.onPointEnd || chartEvents.onPointEnd,
|
|
237
|
+
onPointStart: seriesEvents.onPointStart || chartEvents.onPointStart,
|
|
238
|
+
pointPlayTime: (chartOpts.defaultInstrumentOptions &&
|
|
239
|
+
chartOpts.defaultInstrumentOptions.mapping &&
|
|
240
|
+
chartOpts.defaultInstrumentOptions.mapping.pointPlayTime),
|
|
241
|
+
masterVolume: chartOpts.masterVolume,
|
|
242
|
+
instruments: getSeriesInstrumentOptions(series),
|
|
243
|
+
earcons: seriesOpts.earcons || chartOpts.earcons
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Utility function to find the duration of the final note in a series.
|
|
248
|
+
* @private
|
|
249
|
+
* @param {Highcharts.Series} series The data series to calculate on.
|
|
250
|
+
* @param {Array<Highcharts.PointInstrumentObject>} instruments The instrument options for this series.
|
|
251
|
+
* @param {Highcharts.Dictionary<Highcharts.RangeObject>} dataExtremes Value extremes for the data series props.
|
|
252
|
+
* @return {number} The duration of the final note in milliseconds.
|
|
253
|
+
*/
|
|
254
|
+
function getFinalNoteDuration(series, instruments, dataExtremes) {
|
|
255
|
+
var finalPoint = series.points[series.points.length - 1];
|
|
256
|
+
return instruments.reduce(function (duration, instrument) {
|
|
257
|
+
var mapping = instrument.instrumentMapping.duration;
|
|
258
|
+
var instrumentDuration;
|
|
259
|
+
if (typeof mapping === 'string') {
|
|
260
|
+
instrumentDuration = 0; // Ignore, no easy way to map this
|
|
261
|
+
}
|
|
262
|
+
else if (typeof mapping === 'function') {
|
|
263
|
+
instrumentDuration = mapping(finalPoint, dataExtremes);
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
instrumentDuration = mapping;
|
|
267
|
+
}
|
|
268
|
+
return Math.max(duration, instrumentDuration);
|
|
269
|
+
}, 0);
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Get earcons for the point if there are any.
|
|
273
|
+
* @private
|
|
274
|
+
* @param {Highcharts.Point} point
|
|
275
|
+
* The point to find earcons for.
|
|
276
|
+
* @param {Array<Highcharts.EarconConfiguration>} earconDefinitions
|
|
277
|
+
* Earcons to check.
|
|
278
|
+
* @return {Array<Highcharts.Earcon>}
|
|
279
|
+
* Array of earcons to be played with this point.
|
|
280
|
+
*/
|
|
281
|
+
function getPointEarcons(point, earconDefinitions) {
|
|
282
|
+
return earconDefinitions.reduce(function (earcons, earconDefinition) {
|
|
283
|
+
var earcon = earconDefinition.earcon;
|
|
284
|
+
var cond;
|
|
285
|
+
if (earconDefinition.condition) {
|
|
286
|
+
// We have a condition. This overrides onPoint
|
|
287
|
+
cond = earconDefinition.condition(point);
|
|
288
|
+
if (cond instanceof Earcon) {
|
|
289
|
+
// Condition returned an earcon
|
|
290
|
+
earcons.push(cond);
|
|
291
|
+
}
|
|
292
|
+
else if (cond) {
|
|
293
|
+
// Condition returned true
|
|
294
|
+
earcons.push(earcon);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
else if (earconDefinition.onPoint &&
|
|
298
|
+
point.id === earconDefinition.onPoint) {
|
|
299
|
+
// We have earcon onPoint
|
|
300
|
+
earcons.push(earcon);
|
|
301
|
+
}
|
|
302
|
+
return earcons;
|
|
303
|
+
}, []);
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Get the relative time value of a point.
|
|
307
|
+
* @private
|
|
308
|
+
* @param {Highcharts.Point} point
|
|
309
|
+
* The point.
|
|
310
|
+
* @param {Function|string} timeProp
|
|
311
|
+
* The time axis data prop or the time function.
|
|
312
|
+
* @return {number}
|
|
313
|
+
* The time value.
|
|
314
|
+
*/
|
|
315
|
+
function getPointTimeValue(point, timeProp) {
|
|
316
|
+
return typeof timeProp === 'function' ?
|
|
317
|
+
timeProp(point) :
|
|
318
|
+
pick(point[timeProp], point.options[timeProp]);
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* @private
|
|
322
|
+
* @param {Highcharts.Series} series The series to get options for.
|
|
323
|
+
* @param {Highcharts.SonifySeriesOptionsObject} options
|
|
324
|
+
* Options to merge with user options on series/chart and default options.
|
|
325
|
+
* @returns {Array<Highcharts.PointInstrumentObject>} The merged options.
|
|
326
|
+
*/
|
|
327
|
+
function getSeriesInstrumentOptions(series, options) {
|
|
328
|
+
if (options && options.instruments) {
|
|
329
|
+
return options.instruments;
|
|
330
|
+
}
|
|
331
|
+
var defaultInstrOpts = (series.chart.options.sonification &&
|
|
332
|
+
series.chart.options.sonification.defaultInstrumentOptions ||
|
|
333
|
+
{}), seriesInstrOpts = (series.options.sonification &&
|
|
334
|
+
series.options.sonification.instruments ||
|
|
335
|
+
[{}]), removeNullsFromObject = function (obj) {
|
|
336
|
+
objectEach(obj, function (val, key) {
|
|
337
|
+
if (val === null) {
|
|
338
|
+
delete obj[key];
|
|
339
|
+
}
|
|
340
|
+
});
|
|
341
|
+
};
|
|
342
|
+
// Convert series options to PointInstrumentObjects and merge with
|
|
343
|
+
// default options
|
|
344
|
+
return (seriesInstrOpts).map(function (optionSet) {
|
|
345
|
+
// Allow setting option to null to use default
|
|
346
|
+
removeNullsFromObject(optionSet.mapping || {});
|
|
347
|
+
removeNullsFromObject(optionSet);
|
|
348
|
+
return {
|
|
349
|
+
instrument: optionSet.instrument || defaultInstrOpts.instrument,
|
|
350
|
+
instrumentOptions: merge(defaultInstrOpts, optionSet, {
|
|
351
|
+
// Instrument options are lifted to root in the API options
|
|
352
|
+
// object, so merge all in order to avoid missing any. But
|
|
353
|
+
// remove the following which are not instrumentOptions:
|
|
354
|
+
mapping: void 0,
|
|
355
|
+
instrument: void 0
|
|
356
|
+
}),
|
|
357
|
+
instrumentMapping: merge(defaultInstrOpts.mapping, optionSet.mapping)
|
|
358
|
+
};
|
|
359
|
+
});
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* @private
|
|
363
|
+
* @param {Highcharts.Series} series The series to get options for.
|
|
364
|
+
* @param {Highcharts.SonifySeriesOptionsObject} options
|
|
365
|
+
* Options to merge with user options on series/chart and default options.
|
|
366
|
+
* @returns {Highcharts.SonifySeriesOptionsObject} The merged options.
|
|
367
|
+
*/
|
|
368
|
+
function getSeriesSonifyOptions(series, options) {
|
|
369
|
+
var chartOpts = series.chart.options.sonification, seriesOpts = series.options.sonification;
|
|
370
|
+
return merge({
|
|
371
|
+
duration: ((seriesOpts && seriesOpts.duration) ||
|
|
372
|
+
(chartOpts && chartOpts.duration))
|
|
373
|
+
}, chartOptionsToSonifySeriesOptions(series), options);
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Get the time extremes of this series. This is handled outside of the
|
|
377
|
+
* dataExtremes, as we always want to just sonify the visible points, and we
|
|
378
|
+
* always want the extremes to be the extremes of the visible points.
|
|
379
|
+
* @private
|
|
380
|
+
* @param {Highcharts.Series} series
|
|
381
|
+
* The series to compute on.
|
|
382
|
+
* @param {Function|string} timeProp
|
|
383
|
+
* The time axis data prop or the time function.
|
|
384
|
+
* @return {Highcharts.RangeObject}
|
|
385
|
+
* Object with min/max extremes for the time values.
|
|
386
|
+
*/
|
|
387
|
+
function getTimeExtremes(series, timeProp) {
|
|
388
|
+
// Compute the extremes from the visible points.
|
|
389
|
+
return series.points.reduce(function (acc, point) {
|
|
390
|
+
var value = getPointTimeValue(point, timeProp);
|
|
391
|
+
acc.min = Math.min(acc.min, value);
|
|
392
|
+
acc.max = Math.max(acc.max, value);
|
|
393
|
+
return acc;
|
|
394
|
+
}, {
|
|
395
|
+
min: Infinity,
|
|
396
|
+
max: -Infinity
|
|
397
|
+
});
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Utility function to get a new list of instrument options where all the
|
|
401
|
+
* instrument references are copies.
|
|
402
|
+
* @private
|
|
403
|
+
* @param {Array<Highcharts.PointInstrumentObject>} instruments
|
|
404
|
+
* The instrument options.
|
|
405
|
+
* @return {Array<Highcharts.PointInstrumentObject>}
|
|
406
|
+
* Array of copied instrument options.
|
|
407
|
+
*/
|
|
408
|
+
function makeInstrumentCopies(instruments) {
|
|
409
|
+
return instruments.map(function (instrumentDef) {
|
|
410
|
+
var instrument = instrumentDef.instrument, copy = (typeof instrument === 'string' ?
|
|
411
|
+
Instrument.definitions[instrument] :
|
|
412
|
+
instrument).copy();
|
|
413
|
+
return merge(instrumentDef, { instrument: copy });
|
|
414
|
+
});
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* Sonify a series.
|
|
418
|
+
*
|
|
419
|
+
* @sample highcharts/sonification/series-basic/
|
|
420
|
+
* Click on series to sonify
|
|
421
|
+
* @sample highcharts/sonification/series-earcon/
|
|
422
|
+
* Series with earcon
|
|
423
|
+
* @sample highcharts/sonification/point-play-time/
|
|
424
|
+
* Play y-axis by time
|
|
425
|
+
* @sample highcharts/sonification/earcon-on-point/
|
|
426
|
+
* Earcon set on point
|
|
427
|
+
*
|
|
428
|
+
* @requires module:modules/sonification
|
|
429
|
+
*
|
|
430
|
+
* @function Highcharts.Series#sonify
|
|
431
|
+
*
|
|
432
|
+
* @param {Highcharts.SonifySeriesOptionsObject} [options]
|
|
433
|
+
* The options for sonifying this series. If not provided, uses options set
|
|
434
|
+
* on chart and series.
|
|
435
|
+
*/
|
|
436
|
+
function sonify(options) {
|
|
437
|
+
var mergedOptions = getSeriesSonifyOptions(this, options), timelinePath = buildTimelinePathFromSeries(this, mergedOptions), chartSonification = this.chart.sonification;
|
|
438
|
+
if (chartSonification) {
|
|
439
|
+
// Only one timeline can play at a time. If we want multiple series
|
|
440
|
+
// playing at the same time, use chart.sonify.
|
|
441
|
+
if (chartSonification.timeline) {
|
|
442
|
+
chartSonification.timeline.pause();
|
|
443
|
+
}
|
|
444
|
+
// Store reference to duration
|
|
445
|
+
chartSonification.duration = mergedOptions.duration;
|
|
446
|
+
// Create new timeline for this series, and play it.
|
|
447
|
+
chartSonification.timeline = new Timeline({
|
|
448
|
+
paths: [timelinePath]
|
|
449
|
+
});
|
|
450
|
+
chartSonification.timeline.play();
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
})(SeriesSonify || (SeriesSonify = {}));
|
|
454
|
+
/* *
|
|
455
|
+
*
|
|
456
|
+
* Default Export
|
|
457
|
+
*
|
|
458
|
+
* */
|
|
459
|
+
export default SeriesSonify;
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/* *
|
|
2
|
+
*
|
|
3
|
+
* (c) 2009-2021 Øystein Moseng
|
|
4
|
+
*
|
|
5
|
+
* Utility functions for sonification.
|
|
6
|
+
*
|
|
7
|
+
* License: www.highcharts.com/license
|
|
8
|
+
*
|
|
9
|
+
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
10
|
+
*
|
|
11
|
+
* */
|
|
12
|
+
'use strict';
|
|
13
|
+
/* eslint-disable no-invalid-this, valid-jsdoc */
|
|
14
|
+
/* *
|
|
15
|
+
*
|
|
16
|
+
* Class
|
|
17
|
+
*
|
|
18
|
+
* */
|
|
19
|
+
/**
|
|
20
|
+
* The SignalHandler class. Stores signal callbacks (event handlers), and
|
|
21
|
+
* provides an interface to register them, and emit signals. The word "event" is
|
|
22
|
+
* not used to avoid confusion with TimelineEvents.
|
|
23
|
+
*
|
|
24
|
+
* @requires module:modules/sonification
|
|
25
|
+
*
|
|
26
|
+
* @private
|
|
27
|
+
* @class
|
|
28
|
+
* @name Highcharts.SignalHandler
|
|
29
|
+
*
|
|
30
|
+
* @param {Array<string>} supportedSignals
|
|
31
|
+
* List of supported signal names.
|
|
32
|
+
*/
|
|
33
|
+
var SignalHandler = /** @class */ (function () {
|
|
34
|
+
/* *
|
|
35
|
+
*
|
|
36
|
+
* Constructors
|
|
37
|
+
*
|
|
38
|
+
* */
|
|
39
|
+
function SignalHandler(supportedSignals) {
|
|
40
|
+
/* *
|
|
41
|
+
*
|
|
42
|
+
* Properties
|
|
43
|
+
*
|
|
44
|
+
* */
|
|
45
|
+
this.signals = void 0;
|
|
46
|
+
this.supportedSignals = void 0;
|
|
47
|
+
this.init(supportedSignals || []);
|
|
48
|
+
}
|
|
49
|
+
/* *
|
|
50
|
+
*
|
|
51
|
+
* Functions
|
|
52
|
+
*
|
|
53
|
+
* */
|
|
54
|
+
SignalHandler.prototype.init = function (supportedSignals) {
|
|
55
|
+
this.supportedSignals = supportedSignals;
|
|
56
|
+
this.signals = {};
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Register a set of signal callbacks with this SignalHandler.
|
|
60
|
+
* Multiple signal callbacks can be registered for the same signal.
|
|
61
|
+
* @private
|
|
62
|
+
* @param {Highcharts.Dictionary<(Function|undefined)>} signals
|
|
63
|
+
* An object that contains a mapping from the signal name to the callbacks.
|
|
64
|
+
* Only supported events are considered.
|
|
65
|
+
* @return {void}
|
|
66
|
+
*/
|
|
67
|
+
SignalHandler.prototype.registerSignalCallbacks = function (signals) {
|
|
68
|
+
var signalHandler = this;
|
|
69
|
+
signalHandler.supportedSignals.forEach(function (supportedSignal) {
|
|
70
|
+
var signal = signals[supportedSignal];
|
|
71
|
+
if (signal) {
|
|
72
|
+
(signalHandler.signals[supportedSignal] =
|
|
73
|
+
signalHandler.signals[supportedSignal] || []).push(signal);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Clear signal callbacks, optionally by name.
|
|
79
|
+
* @private
|
|
80
|
+
* @param {Array<string>} [signalNames] - A list of signal names to clear. If
|
|
81
|
+
* not supplied, all signal callbacks are removed.
|
|
82
|
+
* @return {void}
|
|
83
|
+
*/
|
|
84
|
+
SignalHandler.prototype.clearSignalCallbacks = function (signalNames) {
|
|
85
|
+
var signalHandler = this;
|
|
86
|
+
if (signalNames) {
|
|
87
|
+
signalNames.forEach(function (signalName) {
|
|
88
|
+
if (signalHandler.signals[signalName]) {
|
|
89
|
+
delete signalHandler.signals[signalName];
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
signalHandler.signals = {};
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Emit a signal. Does nothing if the signal does not exist, or has no
|
|
99
|
+
* registered callbacks.
|
|
100
|
+
* @private
|
|
101
|
+
* @param {string} signalNames
|
|
102
|
+
* Name of signal to emit.
|
|
103
|
+
* @param {*} [data]
|
|
104
|
+
* Data to pass to the callback.
|
|
105
|
+
* @return {*}
|
|
106
|
+
*/
|
|
107
|
+
SignalHandler.prototype.emitSignal = function (signalName, data) {
|
|
108
|
+
var retval;
|
|
109
|
+
if (this.signals[signalName]) {
|
|
110
|
+
this.signals[signalName].forEach(function (handler) {
|
|
111
|
+
var result = handler(data);
|
|
112
|
+
retval = typeof result !== 'undefined' ? result : retval;
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
return retval;
|
|
116
|
+
};
|
|
117
|
+
return SignalHandler;
|
|
118
|
+
}());
|
|
119
|
+
/* *
|
|
120
|
+
*
|
|
121
|
+
* Default Export
|
|
122
|
+
*
|
|
123
|
+
* */
|
|
124
|
+
export default SignalHandler;
|
|
@@ -10,23 +10,36 @@
|
|
|
10
10
|
*
|
|
11
11
|
* */
|
|
12
12
|
'use strict';
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
/* *
|
|
14
|
+
*
|
|
15
|
+
* Imports
|
|
16
|
+
*
|
|
17
|
+
* */
|
|
15
18
|
import D from '../../Core/DefaultOptions.js';
|
|
16
19
|
var defaultOptions = D.defaultOptions;
|
|
17
|
-
import Point from '../../Core/Series/Point.js';
|
|
18
|
-
import Series from '../../Core/Series/Series.js';
|
|
19
20
|
import U from '../../Core/Utilities.js';
|
|
20
|
-
var
|
|
21
|
-
import
|
|
22
|
-
import instruments from './InstrumentDefinitions.js';
|
|
23
|
-
import Earcon from './Earcon.js';
|
|
24
|
-
import pointSonifyFunctions from './PointSonify.js';
|
|
25
|
-
import chartSonifyFunctions from './ChartSonify.js';
|
|
26
|
-
import utilities from './Utilities.js';
|
|
27
|
-
import TimelineClasses from './Timeline.js';
|
|
21
|
+
var merge = U.merge;
|
|
22
|
+
import SU from './SonificationUtilities.js';
|
|
28
23
|
import sonificationOptions from './Options.js';
|
|
24
|
+
/* *
|
|
25
|
+
*
|
|
26
|
+
* Functions
|
|
27
|
+
*
|
|
28
|
+
* */
|
|
29
29
|
// Expose on the Highcharts object
|
|
30
|
+
// Add default options
|
|
31
|
+
merge(true, defaultOptions, sonificationOptions);
|
|
32
|
+
var Sonification = {
|
|
33
|
+
fadeOutDuration: 20,
|
|
34
|
+
// Classes and functions
|
|
35
|
+
utilities: SU
|
|
36
|
+
};
|
|
37
|
+
/* *
|
|
38
|
+
*
|
|
39
|
+
* Default Export
|
|
40
|
+
*
|
|
41
|
+
* */
|
|
42
|
+
export default Sonification;
|
|
30
43
|
/**
|
|
31
44
|
* Global classes and objects related to sonification.
|
|
32
45
|
*
|
|
@@ -81,43 +94,4 @@ import sonificationOptions from './Options.js';
|
|
|
81
94
|
* @name Highcharts.SonificationObject#Timeline
|
|
82
95
|
* @type {Function}
|
|
83
96
|
*/
|
|
84
|
-
|
|
85
|
-
fadeOutDuration: 20,
|
|
86
|
-
// Classes and functions
|
|
87
|
-
utilities: utilities,
|
|
88
|
-
Instrument: Instrument,
|
|
89
|
-
instruments: instruments,
|
|
90
|
-
Earcon: Earcon,
|
|
91
|
-
TimelineEvent: TimelineClasses.TimelineEvent,
|
|
92
|
-
TimelinePath: TimelineClasses.TimelinePath,
|
|
93
|
-
Timeline: TimelineClasses.Timeline
|
|
94
|
-
};
|
|
95
|
-
// Add default options
|
|
96
|
-
merge(true, defaultOptions, sonificationOptions);
|
|
97
|
-
// Chart specific
|
|
98
|
-
Point.prototype.sonify = pointSonifyFunctions.pointSonify;
|
|
99
|
-
Point.prototype.cancelSonify = pointSonifyFunctions.pointCancelSonify;
|
|
100
|
-
Series.prototype.sonify = chartSonifyFunctions.seriesSonify;
|
|
101
|
-
extend(Chart.prototype, {
|
|
102
|
-
sonify: chartSonifyFunctions.chartSonify,
|
|
103
|
-
pauseSonify: chartSonifyFunctions.pause,
|
|
104
|
-
resumeSonify: chartSonifyFunctions.resume,
|
|
105
|
-
rewindSonify: chartSonifyFunctions.rewind,
|
|
106
|
-
cancelSonify: chartSonifyFunctions.cancel,
|
|
107
|
-
getCurrentSonifyPoints: chartSonifyFunctions.getCurrentPoints,
|
|
108
|
-
setSonifyCursor: chartSonifyFunctions.setCursor,
|
|
109
|
-
resetSonifyCursor: chartSonifyFunctions.resetCursor,
|
|
110
|
-
resetSonifyCursorEnd: chartSonifyFunctions.resetCursorEnd
|
|
111
|
-
});
|
|
112
|
-
/* eslint-disable no-invalid-this */
|
|
113
|
-
// Prepare charts for sonification on init
|
|
114
|
-
addEvent(Chart, 'init', function () {
|
|
115
|
-
this.sonification = {};
|
|
116
|
-
});
|
|
117
|
-
// Update with chart/series/point updates
|
|
118
|
-
addEvent(Chart, 'update', function (e) {
|
|
119
|
-
var newOptions = e.options.sonification;
|
|
120
|
-
if (newOptions) {
|
|
121
|
-
merge(true, this.options.sonification, newOptions);
|
|
122
|
-
}
|
|
123
|
-
});
|
|
97
|
+
(''); // detach doclets above
|