highcharts 9.2.2 → 9.3.3
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 +46 -1
- package/css/highcharts.scss +40 -0
- package/css/stocktools/gui.css +1 -1
- package/css/themes/dark-unica.css +46 -1
- package/css/themes/grid-light.css +46 -1
- package/css/themes/sand-signika.css +46 -1
- package/es-modules/Accessibility/A11yI18n.js +269 -224
- package/es-modules/Accessibility/Accessibility.js +244 -129
- package/es-modules/Accessibility/AccessibilityComponent.js +78 -313
- package/es-modules/Accessibility/Components/AnnotationsA11y.js +19 -5
- package/es-modules/Accessibility/Components/ContainerComponent.js +53 -28
- package/es-modules/Accessibility/Components/InfoRegionsComponent.js +178 -120
- package/es-modules/Accessibility/Components/LegendComponent.js +251 -129
- package/es-modules/Accessibility/Components/MenuComponent.js +250 -154
- package/es-modules/Accessibility/Components/RangeSelectorComponent.js +172 -93
- package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +161 -115
- package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.js +138 -69
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +67 -28
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +48 -56
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +387 -343
- package/es-modules/Accessibility/Components/ZoomComponent.js +156 -70
- package/es-modules/Accessibility/FocusBorder.js +192 -152
- package/es-modules/Accessibility/HighContrastMode.js +79 -66
- package/es-modules/Accessibility/HighContrastTheme.js +10 -0
- package/es-modules/Accessibility/KeyboardNavigation.js +151 -75
- package/es-modules/Accessibility/KeyboardNavigationHandler.js +71 -44
- package/es-modules/Accessibility/Options/DeprecatedOptions.js +21 -4
- package/es-modules/Accessibility/Options/LangOptions.js +4 -5
- package/es-modules/Accessibility/Options/Options.js +32 -17
- package/es-modules/Accessibility/ProxyElement.js +218 -0
- package/es-modules/Accessibility/ProxyProvider.js +302 -0
- package/es-modules/Accessibility/Utils/Announcer.js +17 -10
- package/es-modules/Accessibility/Utils/ChartUtilities.js +55 -45
- 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 -42
- package/es-modules/Core/Animation/Fx.js +5 -14
- package/es-modules/Core/Axis/Axis.js +77 -96
- package/es-modules/Core/Axis/Axis3D.js +10 -4
- package/es-modules/Core/Axis/AxisDefaults.js +35 -24
- package/es-modules/Core/Axis/BrokenAxis.js +17 -11
- package/es-modules/Core/Axis/Color/ColorAxis.js +7 -4
- package/es-modules/Core/Axis/Color/ColorAxisComposition.js +55 -5
- package/es-modules/Core/Axis/Color/ColorAxisDefaults.js +5 -5
- package/es-modules/Core/Axis/DateTimeAxis.js +3 -14
- package/es-modules/Core/Axis/GridAxis.js +26 -16
- package/es-modules/Core/Axis/NavigatorAxis.js +0 -5
- package/es-modules/Core/Axis/OrdinalAxis.js +88 -92
- package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +4 -5
- package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js +0 -5
- package/es-modules/Core/Axis/RadialAxis.js +7 -28
- package/es-modules/Core/Axis/ScrollbarAxis.js +27 -12
- package/es-modules/Core/Axis/StackingAxis.js +2 -1
- package/es-modules/Core/Axis/Tick.js +2 -4
- package/es-modules/Core/Axis/TreeGridAxis.js +28 -19
- package/es-modules/Core/Axis/TreeGridTick.js +5 -3
- package/es-modules/Core/Axis/WaterfallAxis.js +1 -1
- package/es-modules/Core/Axis/ZAxis.js +1 -1
- package/es-modules/Core/Chart/Chart.js +44 -47
- package/es-modules/Core/Chart/Chart3D.js +23 -10
- package/es-modules/Core/Chart/ChartDefaults.js +3 -4
- package/es-modules/Core/Chart/ChartNavigationComposition.js +92 -0
- package/es-modules/Core/Chart/GanttChart.js +4 -4
- package/es-modules/Core/Chart/MapChart.js +13 -25
- package/es-modules/Core/Chart/StockChart.js +13 -316
- package/es-modules/Core/Color/Palettes.js +22 -0
- package/es-modules/Core/DefaultOptions.js +22 -19
- package/es-modules/Core/Foundation.js +39 -31
- package/es-modules/Core/Geometry/CircleUtilities.js +2 -1
- package/es-modules/Core/Globals.js +1 -1
- package/es-modules/Core/HttpUtilities.js +8 -7
- package/es-modules/Core/Legend/Legend.js +19 -16
- package/es-modules/Core/Navigator.js +41 -30
- package/es-modules/Core/Pointer.js +52 -45
- package/es-modules/Core/Renderer/HTML/AST.js +29 -14
- package/es-modules/Core/Renderer/HTML/HTMLElement.js +27 -20
- package/es-modules/Core/Renderer/HTML/HTMLRenderer.js +8 -6
- package/es-modules/Core/Renderer/RendererUtilities.js +2 -2
- package/es-modules/Core/Renderer/SVG/SVGElement.js +11 -20
- package/es-modules/Core/Renderer/SVG/SVGLabel.js +17 -8
- package/es-modules/Core/Renderer/SVG/SVGRenderer.js +25 -29
- package/es-modules/Core/Renderer/SVG/SVGRenderer3D.js +12 -5
- package/es-modules/Core/Renderer/SVG/TextBuilder.js +18 -12
- package/es-modules/Core/Responsive.js +2 -3
- package/es-modules/Core/Scrollbar.js +14 -12
- package/es-modules/Core/ScrollbarDefaults.js +10 -9
- package/es-modules/Core/Series/DataLabel.js +19 -15
- package/es-modules/Core/Series/Point.js +22 -19
- package/es-modules/Core/Series/Series.js +197 -235
- package/es-modules/Core/Series/SeriesDefaults.js +8 -8
- package/es-modules/Core/Series/SeriesRegistry.js +1 -2
- package/es-modules/Core/Time.js +14 -11
- package/es-modules/Core/Tooltip.js +63 -53
- package/es-modules/Core/Utilities.js +20 -24
- package/es-modules/Data/DataConverter.js +483 -0
- package/es-modules/Data/DataPromise.js +252 -0
- package/es-modules/Data/DataSeriesConverter.js +207 -0
- package/es-modules/Data/DataTable.js +1205 -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 +400 -0
- package/es-modules/Data/Parsers/DataParser.js +101 -0
- package/es-modules/Data/Parsers/GoogleSheetsParser.js +223 -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 +169 -0
- package/es-modules/Data/Stores/HTMLTableStore.js +353 -0
- package/es-modules/Extensions/Annotations/Annotations.js +69 -18
- package/es-modules/Extensions/Annotations/ControlPoint.js +1 -3
- package/es-modules/Extensions/Annotations/Controllables/ControllableCircle.js +1 -1
- package/es-modules/Extensions/Annotations/Controllables/ControllableEllipse.js +199 -0
- package/es-modules/Extensions/Annotations/Controllables/ControllableImage.js +1 -1
- package/es-modules/Extensions/Annotations/Controllables/ControllableLabel.js +3 -6
- package/es-modules/Extensions/Annotations/Controllables/ControllablePath.js +3 -2
- package/es-modules/Extensions/Annotations/Controllables/ControllableRect.js +1 -1
- package/es-modules/Extensions/Annotations/Mixins/ControllableMixin.js +13 -4
- package/es-modules/Extensions/Annotations/Mixins/EventEmitterMixin.js +0 -1
- package/es-modules/Extensions/Annotations/Mixins/MarkerMixin.js +5 -4
- package/es-modules/Extensions/Annotations/NavigationBindings.js +120 -53
- package/es-modules/Extensions/Annotations/Popup.js +494 -148
- package/es-modules/Extensions/Annotations/Types/BasicAnnotation.js +51 -2
- package/es-modules/Extensions/Annotations/Types/CrookedLine.js +5 -3
- package/es-modules/Extensions/Annotations/Types/ElliottWave.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 +29 -19
- package/es-modules/Extensions/Annotations/Types/Pitchfork.js +7 -6
- package/es-modules/Extensions/Annotations/Types/TimeCycles.js +211 -0
- package/es-modules/Extensions/Annotations/Types/Tunnel.js +13 -10
- package/es-modules/Extensions/Annotations/Types/VerticalLine.js +1 -1
- package/es-modules/Extensions/Boost/BoostOptions.js +2 -2
- package/es-modules/Extensions/Boost/BoostOverrides.js +6 -10
- package/es-modules/Extensions/Boost/BoostUtils.js +0 -6
- package/es-modules/Extensions/Boost/WGLRenderer.js +16 -12
- package/es-modules/Extensions/Boost/WGLShader.js +13 -11
- package/es-modules/Extensions/Boost/WGLVBuffer.js +4 -7
- package/es-modules/Extensions/BoostCanvas.js +1 -2
- package/es-modules/Extensions/CurrentDateIndication.js +2 -3
- package/es-modules/Extensions/Data.js +4 -48
- package/es-modules/Extensions/DataGrouping.js +52 -32
- package/es-modules/Extensions/DownloadURL.js +2 -2
- package/es-modules/Extensions/DragPanes.js +1 -2
- package/es-modules/Extensions/DraggablePoints.js +7 -8
- package/es-modules/Extensions/Drilldown.js +11 -7
- package/es-modules/Extensions/ExportData.js +6 -5
- package/es-modules/Extensions/Exporting/Exporting.js +33 -46
- package/es-modules/Extensions/Exporting/ExportingDefaults.js +8 -15
- package/es-modules/Extensions/FullScreen.js +4 -3
- package/es-modules/Extensions/GeoJSON.js +42 -66
- package/es-modules/Extensions/MarkerClusters.js +118 -98
- package/es-modules/Extensions/Math3D.js +4 -4
- package/es-modules/Extensions/NoDataToDisplay.js +1 -2
- package/es-modules/Extensions/OfflineExporting/OfflineExporting.js +32 -32
- package/es-modules/Extensions/OfflineExporting/OfflineExportingDefaults.js +1 -1
- package/es-modules/Extensions/Oldie/Oldie.js +14 -79
- package/es-modules/Extensions/Oldie/VMLAxis3D.js +5 -1
- package/es-modules/Extensions/OverlappingDataLabels.js +10 -6
- package/es-modules/Extensions/Pane.js +11 -12
- package/es-modules/Extensions/ParallelCoordinates.js +5 -3
- package/es-modules/Extensions/PatternFill.js +17 -11
- package/es-modules/Extensions/Polar.js +7 -4
- package/es-modules/Extensions/PriceIndication.js +2 -1
- package/es-modules/Extensions/RangeSelector.js +22 -59
- package/es-modules/Extensions/ScrollablePlotArea.js +2 -2
- package/es-modules/Extensions/SeriesLabel.js +1 -1
- package/es-modules/Extensions/Sonification/ChartSonify.js +279 -663
- package/es-modules/Extensions/Sonification/Earcon.js +136 -102
- package/es-modules/Extensions/Sonification/Instrument.js +493 -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 +207 -152
- package/es-modules/Extensions/Sonification/SeriesSonify.js +474 -0
- package/es-modules/Extensions/Sonification/SignalHandler.js +122 -0
- package/es-modules/Extensions/Sonification/Sonification.js +27 -53
- package/es-modules/Extensions/Sonification/{Utilities.js → SonificationUtilities.js} +70 -88
- package/es-modules/Extensions/Sonification/Timeline.js +250 -567
- package/es-modules/Extensions/Sonification/TimelineEvent.js +157 -0
- package/es-modules/Extensions/Sonification/TimelinePath.js +311 -0
- package/es-modules/Extensions/Stacking.js +5 -23
- package/es-modules/Extensions/Themes/BrandDark.js +293 -0
- package/es-modules/Extensions/Themes/BrandLight.js +259 -0
- package/es-modules/Extensions/Themes/DarkUnica.js +4 -2
- package/es-modules/Extensions/Themes/Grid.js +4 -2
- package/es-modules/Extensions/Themes/GridLight.js +4 -2
- package/es-modules/Gantt/Connection.js +2 -2
- package/es-modules/Gantt/Pathfinder.js +6 -5
- package/es-modules/Gantt/PathfinderAlgorithms.js +12 -12
- package/es-modules/Maps/MapNavigation.js +30 -68
- package/es-modules/Maps/MapNavigationOptionsDefault.js +3 -0
- package/es-modules/Maps/MapPointer.js +8 -5
- package/es-modules/Maps/MapSymbols.js +23 -3
- package/es-modules/Maps/MapView.js +450 -0
- package/es-modules/Maps/MapViewOptionsDefault.js +97 -0
- package/es-modules/Maps/Projection.js +436 -0
- package/es-modules/Maps/ProjectionDefinition.js +9 -0
- package/es-modules/Maps/Projections/EqualEarth.js +42 -0
- package/es-modules/Maps/Projections/LambertConformalConic.js +52 -0
- package/es-modules/Maps/Projections/Miller.js +16 -0
- package/es-modules/Maps/Projections/Orthographic.js +26 -0
- package/es-modules/Maps/Projections/ProjectionRegistry.js +19 -0
- package/es-modules/Maps/Projections/WebMercator.js +24 -0
- package/es-modules/Series/Area/AreaSeries.js +13 -13
- package/es-modules/Series/Area3DSeries.js +4 -2
- package/es-modules/Series/AreaRange/AreaRangeSeries.js +28 -17
- package/es-modules/Series/Bellcurve/BellcurveSeries.js +4 -9
- 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 +5 -15
- 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 -19
- package/es-modules/{Mixins/CenteredSeries.js → Series/CenteredUtilities.js} +45 -23
- package/es-modules/{Mixins/ColorMapSeries.js → Series/ColorMapMixin.js} +10 -8
- package/es-modules/Series/Column/ColumnDataLabel.js +5 -5
- package/es-modules/Series/Column/ColumnSeries.js +19 -18
- package/es-modules/Series/Column3D/Column3DComposition.js +1 -2
- package/es-modules/Series/ColumnPyramid/ColumnPyramidSeries.js +11 -8
- package/es-modules/Series/ColumnRange/ColumnRangeSeries.js +2 -1
- package/es-modules/Series/Cylinder/CylinderComposition.js +36 -4
- package/es-modules/Series/DataModifyComposition.js +539 -0
- package/es-modules/Series/DependencyWheel/DependencyWheelPoint.js +2 -6
- package/es-modules/Series/DependencyWheel/DependencyWheelSeries.js +1 -1
- package/es-modules/Series/DerivedComposition.js +137 -0
- package/es-modules/Series/DrawPointComposition.js +111 -0
- package/es-modules/Series/Dumbbell/DumbbellPoint.js +0 -1
- package/es-modules/Series/Dumbbell/DumbbellSeries.js +2 -6
- package/es-modules/Series/ErrorBar/ErrorBarSeries.js +1 -2
- package/es-modules/Series/Flags/FlagsSeries.js +18 -25
- package/es-modules/Series/Flags/FlagsSymbols.js +2 -2
- package/es-modules/Series/Funnel/FunnelSeries.js +6 -5
- package/es-modules/Series/Funnel3D/Funnel3DComposition.js +14 -8
- package/es-modules/Series/Funnel3D/Funnel3DSeries.js +2 -1
- package/es-modules/Series/Gantt/GanttPoint.js +1 -1
- package/es-modules/Series/Gantt/GanttSeries.js +3 -3
- 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 +378 -0
- package/es-modules/Series/Heatmap/HeatmapPoint.js +13 -14
- package/es-modules/Series/Heatmap/HeatmapSeries.js +24 -12
- package/es-modules/Series/HeikinAshi/HeikinAshiSeries.js +10 -9
- package/es-modules/Series/Histogram/HistogramSeries.js +7 -11
- package/es-modules/Series/HollowCandlestick/HollowCandlestickPoint.js +1 -4
- package/es-modules/Series/HollowCandlestick/HollowCandlestickSeries.js +28 -30
- package/es-modules/Series/Item/ItemSeries.js +4 -5
- package/es-modules/Series/Line/LineSeries.js +1 -2
- package/es-modules/Series/Map/MapPoint.js +27 -14
- package/es-modules/Series/Map/MapSeries.js +283 -322
- package/es-modules/Series/MapBubble/MapBubblePoint.js +0 -3
- package/es-modules/Series/MapBubble/MapBubbleSeries.js +10 -1
- package/es-modules/Series/MapLine/MapLineSeries.js +2 -4
- package/es-modules/Series/MapPoint/MapPointPoint.js +5 -1
- package/es-modules/Series/MapPoint/MapPointSeries.js +99 -14
- package/es-modules/Series/Networkgraph/DraggableNodes.js +0 -4
- package/es-modules/Series/Networkgraph/Integrations.js +8 -22
- package/es-modules/Series/Networkgraph/Networkgraph.js +6 -10
- package/es-modules/Series/Networkgraph/QuadTree.js +1 -3
- package/es-modules/{Mixins/Nodes.js → Series/NodesComposition.js} +78 -30
- package/es-modules/Series/OHLC/OHLCPoint.js +2 -7
- 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 +6 -5
- package/es-modules/Series/PackedBubble/PackedBubbleComposition.js +1 -0
- package/es-modules/Series/PackedBubble/PackedBubblePoint.js +1 -1
- package/es-modules/Series/PackedBubble/PackedBubbleSeries.js +48 -10
- package/es-modules/Series/ParetoSeries/ParetoSeries.js +3 -7
- package/es-modules/Series/Pie/PieDataLabel.js +1 -2
- package/es-modules/Series/Pie/PiePoint.js +2 -2
- package/es-modules/Series/Pie/PieSeries.js +7 -8
- package/es-modules/Series/Pie3D/Pie3DComposition.js +2 -1
- package/es-modules/Series/Pie3D/Pie3DPoint.js +2 -1
- package/es-modules/Series/Pie3D/Pie3DSeries.js +1 -1
- package/es-modules/Series/Pyramid3D/Pyramid3DSeries.js +2 -1
- package/es-modules/Series/Sankey/SankeyPoint.js +0 -4
- package/es-modules/Series/Sankey/SankeySeries.js +92 -22
- package/es-modules/Series/SolidGauge/SolidGaugeComposition.js +3 -1
- package/es-modules/Series/Spline/SplineSeries.js +0 -8
- package/es-modules/Series/Sunburst/SunburstPoint.js +2 -3
- package/es-modules/Series/Sunburst/SunburstSeries.js +6 -6
- package/es-modules/Series/Sunburst/SunburstUtilities.js +3 -2
- package/es-modules/Series/Tilemap/TilemapPoint.js +2 -5
- package/es-modules/Series/Tilemap/TilemapShapes.js +0 -7
- package/es-modules/Series/Timeline/TimelineSeries.js +3 -4
- package/es-modules/{Mixins/TreeSeries.js → Series/TreeUtilities.js} +88 -78
- package/es-modules/Series/Treemap/TreemapPoint.js +2 -2
- package/es-modules/Series/Treemap/TreemapSeries.js +22 -25
- package/es-modules/Series/Variwide/VariwideSeries.js +5 -1
- package/es-modules/Series/Venn/VennPoint.js +16 -7
- package/es-modules/Series/Venn/VennSeries.js +11 -17
- package/es-modules/Series/Venn/VennUtils.js +551 -439
- package/es-modules/Series/Waterfall/WaterfallSeries.js +8 -6
- 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 +26 -22
- package/es-modules/Series/Wordcloud/WordcloudUtils.js +669 -484
- package/es-modules/Series/XRange/XRangePoint.js +7 -12
- package/es-modules/Series/XRange/XRangeSeries.js +4 -20
- package/es-modules/Stock/Indicators/ABands/ABandsIndicator.js +15 -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 +4 -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 +39 -11
- package/es-modules/Stock/Indicators/CMF/CMFIndicator.js +35 -15
- 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 +28 -16
- package/es-modules/Stock/Indicators/DisparityIndex/DisparityIndexIndicator.js +18 -11
- package/es-modules/Stock/Indicators/EMA/EMAIndicator.js +1 -3
- package/es-modules/Stock/Indicators/IKH/IKHIndicator.js +6 -6
- package/es-modules/Stock/Indicators/KeltnerChannels/KeltnerChannelsIndicator.js +23 -9
- package/es-modules/Stock/Indicators/Klinger/KlingerIndicator.js +16 -19
- package/es-modules/Stock/Indicators/LinearRegression/LinearRegression.js +32 -14
- 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 +2 -3
- package/es-modules/Stock/Indicators/MultipleLinesComposition.js +294 -0
- package/es-modules/Stock/Indicators/NATR/NATRIndicator.js +1 -3
- package/es-modules/Stock/Indicators/PC/PCIndicator.js +25 -13
- package/es-modules/Stock/Indicators/PPO/PPOIndicator.js +1 -11
- package/es-modules/Stock/Indicators/PivotPoints/PivotPointsIndicator.js +2 -1
- package/es-modules/Stock/Indicators/RSI/RSIIndicator.js +2 -1
- package/es-modules/Stock/Indicators/SMA/SMAComposition.js +0 -26
- package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +32 -50
- package/es-modules/Stock/Indicators/SlowStochastic/SlowStochasticIndicator.js +0 -8
- package/es-modules/Stock/Indicators/Stochastic/StochasticIndicator.js +18 -9
- 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 +26 -10
- package/es-modules/Stock/Indicators/VWAP/VWAPIndicator.js +19 -7
- package/es-modules/Stock/Indicators/WilliamsR/WilliamsRIndicator.js +2 -3
- package/es-modules/Stock/StockToolsBindings.js +156 -47
- package/es-modules/Stock/StockToolsGui.js +442 -37
- 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/brand-dark.src.js +14 -0
- package/es-modules/masters/themes/brand-light.src.js +14 -0
- 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.js.map +1 -1
- package/highcharts-3d.src.js +65 -35
- package/highcharts-gantt.js +800 -803
- package/highcharts-gantt.js.map +1 -1
- package/highcharts-gantt.src.js +1356 -1429
- package/highcharts-more.js +194 -193
- package/highcharts-more.js.map +1 -1
- package/highcharts-more.src.js +280 -222
- package/highcharts.d.ts +10208 -761
- package/highcharts.js +585 -588
- package/highcharts.js.map +1 -1
- package/highcharts.src.d.ts +10208 -761
- package/highcharts.src.js +992 -1066
- package/highmaps.js +727 -707
- package/highmaps.js.map +1 -1
- package/highmaps.src.js +3240 -2135
- package/highstock.js +788 -783
- package/highstock.js.map +1 -1
- package/highstock.src.js +2487 -1981
- package/indicators/acceleration-bands.d.ts +17 -1
- package/indicators/acceleration-bands.js +11 -9
- package/indicators/acceleration-bands.js.map +1 -1
- package/indicators/acceleration-bands.src.d.ts +17 -1
- package/indicators/acceleration-bands.src.js +238 -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.d.ts +17 -1
- package/indicators/aroon-oscillator.js +10 -9
- package/indicators/aroon-oscillator.js.map +1 -1
- package/indicators/aroon-oscillator.src.d.ts +17 -1
- package/indicators/aroon-oscillator.src.js +230 -177
- package/indicators/aroon.d.ts +17 -1
- package/indicators/aroon.js +11 -9
- package/indicators/aroon.js.map +1 -1
- package/indicators/aroon.src.d.ts +17 -1
- package/indicators/aroon.src.js +227 -112
- package/indicators/atr.js +1 -1
- package/indicators/atr.src.js +1 -1
- package/indicators/bollinger-bands.d.ts +17 -1
- package/indicators/bollinger-bands.js +12 -9
- package/indicators/bollinger-bands.js.map +1 -1
- package/indicators/bollinger-bands.src.d.ts +17 -1
- package/indicators/bollinger-bands.src.js +262 -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.js.map +1 -1
- package/indicators/cmf.src.js +36 -16
- 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 +20 -74
- package/indicators/dmi.js +12 -11
- package/indicators/dmi.js.map +1 -1
- package/indicators/dmi.src.js +252 -121
- 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.js.map +1 -1
- package/indicators/ichimoku-kinko-hyo.src.js +7 -7
- package/indicators/indicators-all.d.ts +17 -1
- package/indicators/indicators-all.js +198 -203
- package/indicators/indicators-all.js.map +1 -1
- package/indicators/indicators-all.src.d.ts +17 -1
- package/indicators/indicators-all.src.js +892 -777
- package/indicators/indicators.js +12 -12
- package/indicators/indicators.js.map +1 -1
- package/indicators/indicators.src.js +213 -144
- package/indicators/keltner-channels.d.ts +17 -1
- package/indicators/keltner-channels.js +11 -10
- package/indicators/keltner-channels.js.map +1 -1
- package/indicators/keltner-channels.src.d.ts +17 -1
- package/indicators/keltner-channels.src.js +246 -118
- package/indicators/klinger.js +14 -13
- package/indicators/klinger.js.map +1 -1
- package/indicators/klinger.src.js +239 -187
- package/indicators/macd.js +2 -2
- package/indicators/macd.js.map +1 -1
- package/indicators/macd.src.js +3 -4
- 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.js.map +1 -1
- package/indicators/pivot-points.src.js +3 -2
- package/indicators/ppo.js +5 -6
- package/indicators/ppo.js.map +1 -1
- package/indicators/ppo.src.js +3 -75
- package/indicators/price-channel.d.ts +17 -1
- package/indicators/price-channel.js +11 -9
- package/indicators/price-channel.js.map +1 -1
- package/indicators/price-channel.src.d.ts +17 -1
- package/indicators/price-channel.src.js +288 -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.js.map +1 -1
- package/indicators/regressions.src.js +39 -21
- package/indicators/roc.js +1 -1
- package/indicators/roc.src.js +1 -1
- package/indicators/rsi.js +1 -1
- package/indicators/rsi.js.map +1 -1
- package/indicators/rsi.src.js +3 -2
- 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.d.ts +17 -1
- package/indicators/stochastic.js +12 -10
- package/indicators/stochastic.js.map +1 -1
- package/indicators/stochastic.src.d.ts +17 -1
- package/indicators/stochastic.src.js +282 -165
- 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 +27 -10
- package/indicators/vwap.js +1 -1
- package/indicators/vwap.js.map +1 -1
- package/indicators/vwap.src.js +20 -8
- 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 +0 -30
- package/modules/accessibility.js +241 -216
- package/modules/accessibility.js.map +1 -1
- package/modules/accessibility.src.d.ts +0 -30
- package/modules/accessibility.src.js +7818 -6398
- package/modules/annotations-advanced.d.ts +30 -0
- package/modules/annotations-advanced.js +192 -165
- package/modules/annotations-advanced.js.map +1 -1
- package/modules/annotations-advanced.src.d.ts +30 -0
- package/modules/annotations-advanced.src.js +1716 -416
- package/modules/annotations.js +125 -110
- package/modules/annotations.js.map +1 -1
- package/modules/annotations.src.js +1059 -304
- 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 +42 -51
- package/modules/broken-axis.js +1 -1
- package/modules/broken-axis.js.map +1 -1
- package/modules/broken-axis.src.js +18 -12
- 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 +77 -103
- 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.js.map +1 -1
- package/modules/cylinder.src.js +37 -5
- package/modules/data.d.ts +6 -6
- package/modules/data.js +31 -31
- package/modules/data.js.map +1 -1
- package/modules/data.src.d.ts +6 -6
- package/modules/data.src.js +18 -58
- package/modules/datagrouping.js +20 -20
- package/modules/datagrouping.js.map +1 -1
- package/modules/datagrouping.src.js +54 -33
- 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 +5 -8
- 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.js.map +1 -1
- package/modules/draggable-points.src.js +8 -9
- package/modules/drilldown.js +24 -24
- package/modules/drilldown.js.map +1 -1
- package/modules/drilldown.src.js +13 -8
- package/modules/dumbbell.js +17 -17
- package/modules/dumbbell.js.map +1 -1
- package/modules/dumbbell.src.js +4 -8
- package/modules/export-data.js +19 -19
- package/modules/export-data.js.map +1 -1
- package/modules/export-data.src.js +9 -8
- package/modules/exporting.js +39 -38
- package/modules/exporting.js.map +1 -1
- package/modules/exporting.src.js +132 -113
- package/modules/full-screen.js +1 -1
- package/modules/full-screen.js.map +1 -1
- package/modules/full-screen.src.js +5 -4
- 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.js.map +1 -1
- package/modules/funnel3d.src.js +17 -10
- package/modules/gantt.js +217 -218
- package/modules/gantt.js.map +1 -1
- package/modules/gantt.src.js +364 -363
- package/modules/grid-axis.js +1 -1
- package/modules/grid-axis.js.map +1 -1
- package/modules/grid-axis.src.js +27 -19
- package/modules/heatmap.js +39 -39
- package/modules/heatmap.js.map +1 -1
- package/modules/heatmap.src.js +132 -141
- package/modules/heikinashi.js +1 -1
- package/modules/heikinashi.js.map +1 -1
- package/modules/heikinashi.src.js +12 -10
- package/modules/histogram-bellcurve.js +13 -13
- package/modules/histogram-bellcurve.js.map +1 -1
- package/modules/histogram-bellcurve.src.js +97 -91
- package/modules/hollowcandlestick.js +9 -9
- package/modules/hollowcandlestick.js.map +1 -1
- package/modules/hollowcandlestick.src.js +31 -35
- package/modules/item-series.js +6 -6
- package/modules/item-series.js.map +1 -1
- package/modules/item-series.src.js +6 -6
- package/modules/lollipop.js +1 -1
- package/modules/lollipop.src.js +1 -1
- package/modules/map.d.ts +138 -14
- package/modules/map.js +144 -122
- package/modules/map.js.map +1 -1
- package/modules/map.src.d.ts +138 -14
- package/modules/map.src.js +2253 -1074
- package/modules/marker-clusters.js +36 -36
- package/modules/marker-clusters.js.map +1 -1
- package/modules/marker-clusters.src.js +176 -143
- 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 +103 -78
- 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 +18 -18
- package/modules/offline-exporting.js.map +1 -1
- package/modules/offline-exporting.src.js +38 -43
- 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 +21 -81
- package/modules/organization.js +13 -13
- package/modules/organization.js.map +1 -1
- package/modules/organization.src.js +8 -6
- 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.js.map +1 -1
- package/modules/parallel-coordinates.src.js +6 -4
- 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.js.map +1 -1
- package/modules/pathfinder.src.js +21 -20
- package/modules/pattern-fill.js +1 -1
- package/modules/pattern-fill.js.map +1 -1
- package/modules/pattern-fill.src.js +18 -12
- package/modules/price-indicator.js +1 -1
- package/modules/price-indicator.js.map +1 -1
- package/modules/price-indicator.src.js +3 -2
- package/modules/pyramid3d.js +1 -1
- package/modules/pyramid3d.js.map +1 -1
- package/modules/pyramid3d.src.js +3 -2
- 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 +307 -181
- package/modules/series-label.js +1 -1
- package/modules/series-label.js.map +1 -1
- package/modules/series-label.src.js +2 -2
- package/modules/solid-gauge.js +1 -1
- package/modules/solid-gauge.js.map +1 -1
- package/modules/solid-gauge.src.js +17 -2
- package/modules/sonification.js +59 -55
- package/modules/sonification.js.map +1 -1
- package/modules/sonification.src.js +3093 -2594
- package/modules/static-scale.js +1 -1
- package/modules/static-scale.src.js +1 -1
- package/modules/stock-tools.js +178 -163
- package/modules/stock-tools.js.map +1 -1
- package/modules/stock-tools.src.js +1136 -229
- 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 +1820 -1240
- package/modules/streamgraph.js +1 -1
- package/modules/streamgraph.src.js +1 -1
- package/modules/sunburst.js +60 -60
- package/modules/sunburst.js.map +1 -1
- package/modules/sunburst.src.js +281 -248
- package/modules/tilemap.js +17 -17
- package/modules/tilemap.js.map +1 -1
- package/modules/tilemap.src.js +3 -13
- 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 +201 -169
- package/modules/treemap.js +41 -41
- package/modules/treemap.js.map +1 -1
- package/modules/treemap.src.js +266 -232
- package/modules/variable-pie.js +1 -1
- package/modules/variable-pie.src.js +1 -1
- package/modules/variwide.js +1 -1
- package/modules/variwide.js.map +1 -1
- package/modules/variwide.src.js +7 -3
- 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 +740 -731
- 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 +898 -954
- package/modules/xrange.js +2 -2
- package/modules/xrange.js.map +1 -1
- package/modules/xrange.src.js +12 -33
- package/package.json +1 -1
- package/themes/avocado.js +1 -1
- package/themes/avocado.src.js +1 -1
- package/themes/brand-dark.js +15 -0
- package/themes/brand-dark.js.map +1 -0
- package/themes/brand-dark.src.js +328 -0
- package/themes/brand-light.js +15 -0
- package/themes/brand-light.js.map +1 -0
- package/themes/brand-light.src.js +294 -0
- 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.js.map +1 -1
- package/themes/dark-unica.src.js +5 -3
- package/themes/gray.js +1 -1
- package/themes/gray.src.js +1 -1
- package/themes/grid-light.js +1 -1
- package/themes/grid-light.js.map +1 -1
- package/themes/grid-light.src.js +5 -3
- package/themes/grid.js +1 -1
- package/themes/grid.js.map +1 -1
- package/themes/grid.src.js +5 -3
- 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/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/MultipleLines.js +0 -181
- 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,468 +10,38 @@
|
|
|
10
10
|
*
|
|
11
11
|
* */
|
|
12
12
|
'use strict';
|
|
13
|
-
import
|
|
14
|
-
/**
|
|
15
|
-
* An Earcon configuration, specifying an Earcon and when to play it.
|
|
16
|
-
*
|
|
17
|
-
* @requires module:modules/sonification
|
|
18
|
-
*
|
|
19
|
-
* @interface Highcharts.EarconConfiguration
|
|
20
|
-
*/ /**
|
|
21
|
-
* An Earcon instance.
|
|
22
|
-
* @name Highcharts.EarconConfiguration#earcon
|
|
23
|
-
* @type {Highcharts.Earcon}
|
|
24
|
-
*/ /**
|
|
25
|
-
* The ID of the point to play the Earcon on.
|
|
26
|
-
* @name Highcharts.EarconConfiguration#onPoint
|
|
27
|
-
* @type {string|undefined}
|
|
28
|
-
*/ /**
|
|
29
|
-
* A function to determine whether or not to play this earcon on a point. The
|
|
30
|
-
* function is called for every point, receiving that point as parameter. It
|
|
31
|
-
* should return either a boolean indicating whether or not to play the earcon,
|
|
32
|
-
* or a new Earcon instance - in which case the new Earcon will be played.
|
|
33
|
-
* @name Highcharts.EarconConfiguration#condition
|
|
34
|
-
* @type {Function|undefined}
|
|
35
|
-
*/
|
|
36
|
-
/**
|
|
37
|
-
* Options for sonifying a series.
|
|
38
|
-
*
|
|
39
|
-
* @requires module:modules/sonification
|
|
40
|
-
*
|
|
41
|
-
* @interface Highcharts.SonifySeriesOptionsObject
|
|
42
|
-
*/ /**
|
|
43
|
-
* The duration for playing the points. Note that points might continue to play
|
|
44
|
-
* after the duration has passed, but no new points will start playing.
|
|
45
|
-
* @name Highcharts.SonifySeriesOptionsObject#duration
|
|
46
|
-
* @type {number}
|
|
47
|
-
*/ /**
|
|
48
|
-
* The axis to use for when to play the points. Can be a string with a data
|
|
49
|
-
* property (e.g. `x`), or a function. If it is a function, this function
|
|
50
|
-
* receives the point as argument, and should return a numeric value. The points
|
|
51
|
-
* with the lowest numeric values are then played first, and the time between
|
|
52
|
-
* points will be proportional to the distance between the numeric values.
|
|
53
|
-
* @name Highcharts.SonifySeriesOptionsObject#pointPlayTime
|
|
54
|
-
* @type {string|Function}
|
|
55
|
-
*/ /**
|
|
56
|
-
* The instrument definitions for the points in this series.
|
|
57
|
-
* @name Highcharts.SonifySeriesOptionsObject#instruments
|
|
58
|
-
* @type {Array<Highcharts.PointInstrumentObject>}
|
|
59
|
-
*/ /**
|
|
60
|
-
* Earcons to add to the series.
|
|
61
|
-
* @name Highcharts.SonifySeriesOptionsObject#earcons
|
|
62
|
-
* @type {Array<Highcharts.EarconConfiguration>|undefined}
|
|
63
|
-
*/ /**
|
|
64
|
-
* Optionally provide the minimum/maximum data values for the points. If this is
|
|
65
|
-
* not supplied, it is calculated from all points in the chart on demand. This
|
|
66
|
-
* option is supplied in the following format, as a map of point data properties
|
|
67
|
-
* to objects with min/max values:
|
|
68
|
-
* ```js
|
|
69
|
-
* dataExtremes: {
|
|
70
|
-
* y: {
|
|
71
|
-
* min: 0,
|
|
72
|
-
* max: 100
|
|
73
|
-
* },
|
|
74
|
-
* z: {
|
|
75
|
-
* min: -10,
|
|
76
|
-
* max: 10
|
|
77
|
-
* }
|
|
78
|
-
* // Properties used and not provided are calculated on demand
|
|
79
|
-
* }
|
|
80
|
-
* ```
|
|
81
|
-
* @name Highcharts.SonifySeriesOptionsObject#dataExtremes
|
|
82
|
-
* @type {Highcharts.Dictionary<Highcharts.RangeObject>|undefined}
|
|
83
|
-
*/ /**
|
|
84
|
-
* Callback before a point is played.
|
|
85
|
-
* @name Highcharts.SonifySeriesOptionsObject#onPointStart
|
|
86
|
-
* @type {Function|undefined}
|
|
87
|
-
*/ /**
|
|
88
|
-
* Callback after a point has finished playing.
|
|
89
|
-
* @name Highcharts.SonifySeriesOptionsObject#onPointEnd
|
|
90
|
-
* @type {Function|undefined}
|
|
91
|
-
*/ /**
|
|
92
|
-
* Callback after the series has played.
|
|
93
|
-
* @name Highcharts.SonifySeriesOptionsObject#onEnd
|
|
94
|
-
* @type {Function|undefined}
|
|
95
|
-
*/
|
|
96
|
-
''; // detach doclets above
|
|
13
|
+
import Earcon from './Earcon.js';
|
|
97
14
|
import Point from '../../Core/Series/Point.js';
|
|
15
|
+
import SeriesSonify from './SeriesSonify.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';
|
|
98
21
|
import U from '../../Core/Utilities.js';
|
|
99
|
-
var
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Get the relative time value of a point.
|
|
103
|
-
* @private
|
|
104
|
-
* @param {Highcharts.Point} point
|
|
105
|
-
* The point.
|
|
106
|
-
* @param {Function|string} timeProp
|
|
107
|
-
* The time axis data prop or the time function.
|
|
108
|
-
* @return {number}
|
|
109
|
-
* The time value.
|
|
110
|
-
*/
|
|
111
|
-
function getPointTimeValue(point, timeProp) {
|
|
112
|
-
return typeof timeProp === 'function' ?
|
|
113
|
-
timeProp(point) :
|
|
114
|
-
pick(point[timeProp], point.options[timeProp]);
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Get the time extremes of this series. This is handled outside of the
|
|
118
|
-
* dataExtremes, as we always want to just sonify the visible points, and we
|
|
119
|
-
* always want the extremes to be the extremes of the visible points.
|
|
120
|
-
* @private
|
|
121
|
-
* @param {Highcharts.Series} series
|
|
122
|
-
* The series to compute on.
|
|
123
|
-
* @param {Function|string} timeProp
|
|
124
|
-
* The time axis data prop or the time function.
|
|
125
|
-
* @return {Highcharts.RangeObject}
|
|
126
|
-
* Object with min/max extremes for the time values.
|
|
127
|
-
*/
|
|
128
|
-
function getTimeExtremes(series, timeProp) {
|
|
129
|
-
// Compute the extremes from the visible points.
|
|
130
|
-
return series.points.reduce(function (acc, point) {
|
|
131
|
-
var value = getPointTimeValue(point, timeProp);
|
|
132
|
-
acc.min = Math.min(acc.min, value);
|
|
133
|
-
acc.max = Math.max(acc.max, value);
|
|
134
|
-
return acc;
|
|
135
|
-
}, {
|
|
136
|
-
min: Infinity,
|
|
137
|
-
max: -Infinity
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Calculate value extremes for used instrument data properties on a chart.
|
|
142
|
-
* @private
|
|
143
|
-
* @param {Highcharts.Chart} chart
|
|
144
|
-
* The chart to calculate extremes from.
|
|
145
|
-
* @param {Array<Highcharts.PointInstrumentObject>} [instruments]
|
|
146
|
-
* Additional instrument definitions to inspect for data props used, in
|
|
147
|
-
* addition to the instruments defined in the chart options.
|
|
148
|
-
* @param {Highcharts.Dictionary<Highcharts.RangeObject>} [dataExtremes]
|
|
149
|
-
* Predefined extremes for each data prop.
|
|
150
|
-
* @return {Highcharts.Dictionary<Highcharts.RangeObject>}
|
|
151
|
-
* New extremes with data properties mapped to min/max objects.
|
|
152
|
-
*/
|
|
153
|
-
function getExtremesForInstrumentProps(chart, instruments, dataExtremes) {
|
|
154
|
-
var allInstrumentDefinitions = (instruments || []).slice(0);
|
|
155
|
-
var defaultInstrumentDef = (chart.options.sonification &&
|
|
156
|
-
chart.options.sonification.defaultInstrumentOptions);
|
|
157
|
-
var optionDefToInstrDef = function (optionDef) { return ({
|
|
158
|
-
instrumentMapping: optionDef.mapping
|
|
159
|
-
}); };
|
|
160
|
-
if (defaultInstrumentDef) {
|
|
161
|
-
allInstrumentDefinitions.push(optionDefToInstrDef(defaultInstrumentDef));
|
|
162
|
-
}
|
|
163
|
-
chart.series.forEach(function (series) {
|
|
164
|
-
var instrOptions = (series.options.sonification &&
|
|
165
|
-
series.options.sonification.instruments);
|
|
166
|
-
if (instrOptions) {
|
|
167
|
-
allInstrumentDefinitions = allInstrumentDefinitions.concat(instrOptions.map(optionDefToInstrDef));
|
|
168
|
-
}
|
|
169
|
-
});
|
|
170
|
-
return (allInstrumentDefinitions).reduce(function (newExtremes, instrumentDefinition) {
|
|
171
|
-
Object.keys(instrumentDefinition.instrumentMapping || {}).forEach(function (instrumentParameter) {
|
|
172
|
-
var value = instrumentDefinition.instrumentMapping[instrumentParameter];
|
|
173
|
-
if (typeof value === 'string' && !newExtremes[value]) {
|
|
174
|
-
// This instrument parameter is mapped to a data prop.
|
|
175
|
-
// If we don't have predefined data extremes, find them.
|
|
176
|
-
newExtremes[value] = utilities.calculateDataExtremes(chart, value);
|
|
177
|
-
}
|
|
178
|
-
});
|
|
179
|
-
return newExtremes;
|
|
180
|
-
}, merge(dataExtremes));
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Get earcons for the point if there are any.
|
|
184
|
-
* @private
|
|
185
|
-
* @param {Highcharts.Point} point
|
|
186
|
-
* The point to find earcons for.
|
|
187
|
-
* @param {Array<Highcharts.EarconConfiguration>} earconDefinitions
|
|
188
|
-
* Earcons to check.
|
|
189
|
-
* @return {Array<Highcharts.Earcon>}
|
|
190
|
-
* Array of earcons to be played with this point.
|
|
191
|
-
*/
|
|
192
|
-
function getPointEarcons(point, earconDefinitions) {
|
|
193
|
-
return earconDefinitions.reduce(function (earcons, earconDefinition) {
|
|
194
|
-
var cond, earcon = earconDefinition.earcon;
|
|
195
|
-
if (earconDefinition.condition) {
|
|
196
|
-
// We have a condition. This overrides onPoint
|
|
197
|
-
cond = earconDefinition.condition(point);
|
|
198
|
-
if (cond instanceof H.sonification.Earcon) {
|
|
199
|
-
// Condition returned an earcon
|
|
200
|
-
earcons.push(cond);
|
|
201
|
-
}
|
|
202
|
-
else if (cond) {
|
|
203
|
-
// Condition returned true
|
|
204
|
-
earcons.push(earcon);
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
else if (earconDefinition.onPoint &&
|
|
208
|
-
point.id === earconDefinition.onPoint) {
|
|
209
|
-
// We have earcon onPoint
|
|
210
|
-
earcons.push(earcon);
|
|
211
|
-
}
|
|
212
|
-
return earcons;
|
|
213
|
-
}, []);
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* Utility function to get a new list of instrument options where all the
|
|
217
|
-
* instrument references are copies.
|
|
218
|
-
* @private
|
|
219
|
-
* @param {Array<Highcharts.PointInstrumentObject>} instruments
|
|
220
|
-
* The instrument options.
|
|
221
|
-
* @return {Array<Highcharts.PointInstrumentObject>}
|
|
222
|
-
* Array of copied instrument options.
|
|
223
|
-
*/
|
|
224
|
-
function makeInstrumentCopies(instruments) {
|
|
225
|
-
return instruments.map(function (instrumentDef) {
|
|
226
|
-
var instrument = instrumentDef.instrument, copy = (typeof instrument === 'string' ?
|
|
227
|
-
H.sonification.instruments[instrument] :
|
|
228
|
-
instrument).copy();
|
|
229
|
-
return merge(instrumentDef, { instrument: copy });
|
|
230
|
-
});
|
|
231
|
-
}
|
|
232
|
-
/**
|
|
233
|
-
* Utility function to apply a master volume to a list of instrument
|
|
234
|
-
* options.
|
|
235
|
-
* @private
|
|
236
|
-
* @param {Array<Highcharts.PointInstrumentObject>} instruments
|
|
237
|
-
* The instrument options. Only options with Instrument object instances
|
|
238
|
-
* will be affected.
|
|
239
|
-
* @param {number} masterVolume
|
|
240
|
-
* The master volume multiplier to apply to the instruments.
|
|
241
|
-
* @return {Array<Highcharts.PointInstrumentObject>}
|
|
242
|
-
* Array of instrument options.
|
|
243
|
-
*/
|
|
244
|
-
function applyMasterVolumeToInstruments(instruments, masterVolume) {
|
|
245
|
-
instruments.forEach(function (instrOpts) {
|
|
246
|
-
var instr = instrOpts.instrument;
|
|
247
|
-
if (typeof instr !== 'string') {
|
|
248
|
-
instr.setMasterVolume(masterVolume);
|
|
249
|
-
}
|
|
250
|
-
});
|
|
251
|
-
return instruments;
|
|
252
|
-
}
|
|
253
|
-
/**
|
|
254
|
-
* Utility function to find the duration of the final note in a series.
|
|
255
|
-
* @private
|
|
256
|
-
* @param {Highcharts.Series} series The data series to calculate on.
|
|
257
|
-
* @param {Array<Highcharts.PointInstrumentObject>} instruments The instrument options for this series.
|
|
258
|
-
* @param {Highcharts.Dictionary<Highcharts.RangeObject>} dataExtremes Value extremes for the data series props.
|
|
259
|
-
* @return {number} The duration of the final note in milliseconds.
|
|
260
|
-
*/
|
|
261
|
-
function getFinalNoteDuration(series, instruments, dataExtremes) {
|
|
262
|
-
var finalPoint = series.points[series.points.length - 1];
|
|
263
|
-
return instruments.reduce(function (duration, instrument) {
|
|
264
|
-
var mapping = instrument.instrumentMapping.duration;
|
|
265
|
-
var instrumentDuration;
|
|
266
|
-
if (typeof mapping === 'string') {
|
|
267
|
-
instrumentDuration = 0; // Ignore, no easy way to map this
|
|
268
|
-
}
|
|
269
|
-
else if (typeof mapping === 'function') {
|
|
270
|
-
instrumentDuration = mapping(finalPoint, dataExtremes);
|
|
271
|
-
}
|
|
272
|
-
else {
|
|
273
|
-
instrumentDuration = mapping;
|
|
274
|
-
}
|
|
275
|
-
return Math.max(duration, instrumentDuration);
|
|
276
|
-
}, 0);
|
|
277
|
-
}
|
|
278
|
-
/**
|
|
279
|
-
* Create a TimelinePath from a series. Takes the same options as seriesSonify.
|
|
280
|
-
* To intuitively allow multiple series to play simultaneously we make copies of
|
|
281
|
-
* the instruments for each series.
|
|
282
|
-
* @private
|
|
283
|
-
* @param {Highcharts.Series} series
|
|
284
|
-
* The series to build from.
|
|
285
|
-
* @param {Highcharts.SonifySeriesOptionsObject} options
|
|
286
|
-
* The options for building the TimelinePath.
|
|
287
|
-
* @return {Highcharts.TimelinePath}
|
|
288
|
-
* A timeline path with events.
|
|
289
|
-
*/
|
|
290
|
-
function buildTimelinePathFromSeries(series, options) {
|
|
291
|
-
// options.timeExtremes is internal and used so that the calculations from
|
|
292
|
-
// chart.sonify can be reused.
|
|
293
|
-
var timeExtremes = options.timeExtremes || getTimeExtremes(series, options.pointPlayTime),
|
|
294
|
-
// Compute any data extremes that aren't defined yet
|
|
295
|
-
dataExtremes = getExtremesForInstrumentProps(series.chart, options.instruments, options.dataExtremes), minimumSeriesDurationMs = 10,
|
|
296
|
-
// Get the duration of the final note
|
|
297
|
-
finalNoteDuration = getFinalNoteDuration(series, options.instruments, dataExtremes),
|
|
298
|
-
// Get time offset for a point, relative to duration
|
|
299
|
-
pointToTime = function (point) {
|
|
300
|
-
return utilities.virtualAxisTranslate(getPointTimeValue(point, options.pointPlayTime), timeExtremes, { min: 0, max: Math.max(options.duration - finalNoteDuration, minimumSeriesDurationMs) });
|
|
301
|
-
}, masterVolume = pick(options.masterVolume, 1),
|
|
302
|
-
// Make copies of the instruments used for this series, to allow
|
|
303
|
-
// multiple series with the same instrument to play together
|
|
304
|
-
instrumentCopies = makeInstrumentCopies(options.instruments), instruments = applyMasterVolumeToInstruments(instrumentCopies, masterVolume),
|
|
305
|
-
// Go through the points, convert to events, optionally add Earcons
|
|
306
|
-
timelineEvents = series.points.reduce(function (events, point) {
|
|
307
|
-
var earcons = getPointEarcons(point, options.earcons || []), time = pointToTime(point);
|
|
308
|
-
return events.concat(
|
|
309
|
-
// Event object for point
|
|
310
|
-
new H.sonification.TimelineEvent({
|
|
311
|
-
eventObject: point,
|
|
312
|
-
time: time,
|
|
313
|
-
id: point.id,
|
|
314
|
-
playOptions: {
|
|
315
|
-
instruments: instruments,
|
|
316
|
-
dataExtremes: dataExtremes,
|
|
317
|
-
masterVolume: masterVolume
|
|
318
|
-
}
|
|
319
|
-
}),
|
|
320
|
-
// Earcons
|
|
321
|
-
earcons.map(function (earcon) {
|
|
322
|
-
return new H.sonification.TimelineEvent({
|
|
323
|
-
eventObject: earcon,
|
|
324
|
-
time: time,
|
|
325
|
-
playOptions: {
|
|
326
|
-
volume: masterVolume
|
|
327
|
-
}
|
|
328
|
-
});
|
|
329
|
-
}));
|
|
330
|
-
}, []);
|
|
331
|
-
// Build the timeline path
|
|
332
|
-
return new H.sonification.TimelinePath({
|
|
333
|
-
events: timelineEvents,
|
|
334
|
-
onStart: function () {
|
|
335
|
-
if (options.onStart) {
|
|
336
|
-
options.onStart(series);
|
|
337
|
-
}
|
|
338
|
-
},
|
|
339
|
-
onEventStart: function (event) {
|
|
340
|
-
var eventObject = event.options && event.options.eventObject;
|
|
341
|
-
if (eventObject instanceof Point) {
|
|
342
|
-
// Check for hidden series
|
|
343
|
-
if (!eventObject.series.visible &&
|
|
344
|
-
!eventObject.series.chart.series.some(function (series) {
|
|
345
|
-
return series.visible;
|
|
346
|
-
})) {
|
|
347
|
-
// We have no visible series, stop the path.
|
|
348
|
-
event.timelinePath.timeline.pause();
|
|
349
|
-
event.timelinePath.timeline.resetCursor();
|
|
350
|
-
return false;
|
|
351
|
-
}
|
|
352
|
-
// Emit onPointStart
|
|
353
|
-
if (options.onPointStart) {
|
|
354
|
-
options.onPointStart(event, eventObject);
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
},
|
|
358
|
-
onEventEnd: function (eventData) {
|
|
359
|
-
var eventObject = eventData.event && eventData.event.options &&
|
|
360
|
-
eventData.event.options.eventObject;
|
|
361
|
-
if (eventObject instanceof Point && options.onPointEnd) {
|
|
362
|
-
options.onPointEnd(eventData.event, eventObject);
|
|
363
|
-
}
|
|
364
|
-
},
|
|
365
|
-
onEnd: function () {
|
|
366
|
-
if (options.onEnd) {
|
|
367
|
-
options.onEnd(series);
|
|
368
|
-
}
|
|
369
|
-
},
|
|
370
|
-
targetDuration: options.duration
|
|
371
|
-
});
|
|
372
|
-
}
|
|
373
|
-
/* eslint-disable no-invalid-this, valid-jsdoc */
|
|
374
|
-
/**
|
|
375
|
-
* Sonify a series.
|
|
376
|
-
*
|
|
377
|
-
* @sample highcharts/sonification/series-basic/
|
|
378
|
-
* Click on series to sonify
|
|
379
|
-
* @sample highcharts/sonification/series-earcon/
|
|
380
|
-
* Series with earcon
|
|
381
|
-
* @sample highcharts/sonification/point-play-time/
|
|
382
|
-
* Play y-axis by time
|
|
383
|
-
* @sample highcharts/sonification/earcon-on-point/
|
|
384
|
-
* Earcon set on point
|
|
385
|
-
*
|
|
386
|
-
* @requires module:modules/sonification
|
|
387
|
-
*
|
|
388
|
-
* @function Highcharts.Series#sonify
|
|
22
|
+
var addEvent = U.addEvent, extend = U.extend, merge = U.merge, pick = U.pick, splat = U.splat;
|
|
23
|
+
/* *
|
|
389
24
|
*
|
|
390
|
-
*
|
|
391
|
-
* The options for sonifying this series. If not provided,
|
|
392
|
-
* uses options set on chart and series.
|
|
25
|
+
* Functions
|
|
393
26
|
*
|
|
394
|
-
*
|
|
395
|
-
*/
|
|
396
|
-
function seriesSonify(options) {
|
|
397
|
-
var mergedOptions = getSeriesSonifyOptions(this, options);
|
|
398
|
-
var timelinePath = buildTimelinePathFromSeries(this, mergedOptions);
|
|
399
|
-
var chartSonification = this.chart.sonification;
|
|
400
|
-
// Only one timeline can play at a time. If we want multiple series playing
|
|
401
|
-
// at the same time, use chart.sonify.
|
|
402
|
-
if (chartSonification.timeline) {
|
|
403
|
-
chartSonification.timeline.pause();
|
|
404
|
-
}
|
|
405
|
-
// Store reference to duration
|
|
406
|
-
chartSonification.duration = mergedOptions.duration;
|
|
407
|
-
// Create new timeline for this series, and play it.
|
|
408
|
-
chartSonification.timeline = new H.sonification.Timeline({
|
|
409
|
-
paths: [timelinePath]
|
|
410
|
-
});
|
|
411
|
-
chartSonification.timeline.play();
|
|
412
|
-
}
|
|
413
|
-
/**
|
|
414
|
-
* Utility function to assemble options for creating a TimelinePath from a
|
|
415
|
-
* series when sonifying an entire chart.
|
|
416
|
-
* @private
|
|
417
|
-
* @param {Highcharts.Series} series
|
|
418
|
-
* The series to return options for.
|
|
419
|
-
* @param {Highcharts.RangeObject} dataExtremes
|
|
420
|
-
* Pre-calculated data extremes for the chart.
|
|
421
|
-
* @param {Highcharts.SonificationOptions} chartSonifyOptions
|
|
422
|
-
* Options passed in to chart.sonify.
|
|
423
|
-
* @return {Partial<Highcharts.SonifySeriesOptionsObject>}
|
|
424
|
-
* Options for buildTimelinePathFromSeries.
|
|
425
|
-
*/
|
|
426
|
-
function buildChartSonifySeriesOptions(series, dataExtremes, chartSonifyOptions) {
|
|
427
|
-
var additionalSeriesOptions = chartSonifyOptions.seriesOptions || {};
|
|
428
|
-
var pointPlayTime = (series.chart.options.sonification &&
|
|
429
|
-
series.chart.options.sonification.defaultInstrumentOptions &&
|
|
430
|
-
series.chart.options.sonification.defaultInstrumentOptions.mapping &&
|
|
431
|
-
series.chart.options.sonification.defaultInstrumentOptions.mapping.pointPlayTime ||
|
|
432
|
-
'x');
|
|
433
|
-
var configOptions = chartOptionsToSonifySeriesOptions(series);
|
|
434
|
-
return merge(
|
|
435
|
-
// Options from chart configuration
|
|
436
|
-
configOptions,
|
|
437
|
-
// Options passed in
|
|
438
|
-
{
|
|
439
|
-
// Calculated dataExtremes for chart
|
|
440
|
-
dataExtremes: dataExtremes,
|
|
441
|
-
// We need to get timeExtremes for each series. We pass this
|
|
442
|
-
// in when building the TimelinePath objects to avoid
|
|
443
|
-
// calculating twice.
|
|
444
|
-
timeExtremes: getTimeExtremes(series, pointPlayTime),
|
|
445
|
-
// Some options we just pass on
|
|
446
|
-
instruments: chartSonifyOptions.instruments || configOptions.instruments,
|
|
447
|
-
onStart: chartSonifyOptions.onSeriesStart || configOptions.onStart,
|
|
448
|
-
onEnd: chartSonifyOptions.onSeriesEnd || configOptions.onEnd,
|
|
449
|
-
earcons: chartSonifyOptions.earcons || configOptions.earcons,
|
|
450
|
-
masterVolume: pick(chartSonifyOptions.masterVolume, configOptions.masterVolume)
|
|
451
|
-
},
|
|
452
|
-
// Merge in the specific series options by ID if any are passed in
|
|
453
|
-
isArray(additionalSeriesOptions) ? (find(additionalSeriesOptions, function (optEntry) {
|
|
454
|
-
return optEntry.id === pick(series.id, series.options.id);
|
|
455
|
-
}) || {}) : additionalSeriesOptions, {
|
|
456
|
-
// Forced options
|
|
457
|
-
pointPlayTime: pointPlayTime
|
|
458
|
-
});
|
|
459
|
-
}
|
|
27
|
+
* */
|
|
28
|
+
/* eslint-disable valid-jsdoc */
|
|
460
29
|
/**
|
|
461
30
|
* Utility function to normalize the ordering of timeline paths when sonifying
|
|
462
31
|
* a chart.
|
|
463
32
|
* @private
|
|
464
|
-
* @param {string|Array<string|Highcharts.Earcon|Array<string|Highcharts.Earcon>>} orderOptions
|
|
33
|
+
* @param {string|Array<string|Highcharts.Earcon|Array<string|Highcharts.Earcon>>} orderOptions
|
|
465
34
|
* Order options for the sonification.
|
|
466
|
-
* @param {Highcharts.Chart} chart
|
|
35
|
+
* @param {Highcharts.Chart} chart
|
|
36
|
+
* The chart we are sonifying.
|
|
467
37
|
* @param {Function} seriesOptionsCallback
|
|
468
38
|
* A function that takes a series as argument, and returns the series options
|
|
469
39
|
* for that series to be used with buildTimelinePathFromSeries.
|
|
470
|
-
* @return {Array<object|Array<object|Highcharts.TimelinePath>>}
|
|
471
|
-
* sequential, we return an array of objects to create series paths
|
|
472
|
-
* order is simultaneous we return an array of an array with the same.
|
|
473
|
-
* is a custom order, we return an array of arrays of either objects
|
|
474
|
-
* series) or TimelinePaths (for earcons and delays).
|
|
40
|
+
* @return {Array<object|Array<object|Highcharts.TimelinePath>>}
|
|
41
|
+
* If order is sequential, we return an array of objects to create series paths
|
|
42
|
+
* from. If order is simultaneous we return an array of an array with the same.
|
|
43
|
+
* If there is a custom order, we return an array of arrays of either objects
|
|
44
|
+
* (for series) or TimelinePaths (for earcons and delays).
|
|
475
45
|
*/
|
|
476
46
|
function buildPathOrder(orderOptions, chart, seriesOptionsCallback) {
|
|
477
47
|
var order;
|
|
@@ -511,17 +81,17 @@ function buildPathOrder(orderOptions, chart, seriesOptionsCallback) {
|
|
|
511
81
|
}
|
|
512
82
|
// Is it an earcon? If so, just create the path.
|
|
513
83
|
}
|
|
514
|
-
else if (item instanceof
|
|
84
|
+
else if (item instanceof Earcon) {
|
|
515
85
|
// Path with a single event
|
|
516
|
-
itemObject = new
|
|
517
|
-
events: [new
|
|
86
|
+
itemObject = new TimelinePath({
|
|
87
|
+
events: [new TimelineEvent({
|
|
518
88
|
eventObject: item
|
|
519
89
|
})]
|
|
520
90
|
});
|
|
521
91
|
}
|
|
522
92
|
// Is this item a silent wait? If so, just create the path.
|
|
523
93
|
if (item.silentWait) {
|
|
524
|
-
itemObject = new
|
|
94
|
+
itemObject = new TimelinePath({
|
|
525
95
|
silentWait: item.silentWait
|
|
526
96
|
});
|
|
527
97
|
}
|
|
@@ -564,7 +134,7 @@ function addAfterSeriesWaits(order, wait) {
|
|
|
564
134
|
})) {
|
|
565
135
|
// We have a series, meaning we should add a wait after these
|
|
566
136
|
// paths have finished.
|
|
567
|
-
newOrder.push(new
|
|
137
|
+
newOrder.push(new TimelinePath({
|
|
568
138
|
silentWait: wait
|
|
569
139
|
}));
|
|
570
140
|
}
|
|
@@ -574,9 +144,10 @@ function addAfterSeriesWaits(order, wait) {
|
|
|
574
144
|
/**
|
|
575
145
|
* Utility function to find the total amout of wait time in the TimelinePaths.
|
|
576
146
|
* @private
|
|
577
|
-
* @param {Array<object|Array<object|TimelinePath>>} order
|
|
578
|
-
* TimelinePaths/items.
|
|
579
|
-
* @return {number}
|
|
147
|
+
* @param {Array<object|Array<object|TimelinePath>>} order
|
|
148
|
+
* The order of TimelinePaths/items.
|
|
149
|
+
* @return {number}
|
|
150
|
+
* The total time in ms spent on wait paths between playing.
|
|
580
151
|
*/
|
|
581
152
|
function getWaitTime(order) {
|
|
582
153
|
return order.reduce(function (waitTime, orderDef) {
|
|
@@ -590,7 +161,8 @@ function getWaitTime(order) {
|
|
|
590
161
|
* Utility function to ensure simultaneous paths have start/end events at the
|
|
591
162
|
* same time, to sync them.
|
|
592
163
|
* @private
|
|
593
|
-
* @param {Array<Highcharts.TimelinePath>} paths
|
|
164
|
+
* @param {Array<Highcharts.TimelinePath>} paths
|
|
165
|
+
* The paths to sync.
|
|
594
166
|
*/
|
|
595
167
|
function syncSimultaneousPaths(paths) {
|
|
596
168
|
// Find the extremes for these paths
|
|
@@ -609,12 +181,12 @@ function syncSimultaneousPaths(paths) {
|
|
|
609
181
|
paths.forEach(function (path) {
|
|
610
182
|
var events = path.events, hasEvents = events && events.length, eventsToAdd = [];
|
|
611
183
|
if (!(hasEvents && events[0].time <= extremes.min)) {
|
|
612
|
-
eventsToAdd.push(new
|
|
184
|
+
eventsToAdd.push(new TimelineEvent({
|
|
613
185
|
time: extremes.min
|
|
614
186
|
}));
|
|
615
187
|
}
|
|
616
188
|
if (!(hasEvents && events[events.length - 1].time >= extremes.max)) {
|
|
617
|
-
eventsToAdd.push(new
|
|
189
|
+
eventsToAdd.push(new TimelineEvent({
|
|
618
190
|
time: extremes.max
|
|
619
191
|
}));
|
|
620
192
|
}
|
|
@@ -627,9 +199,10 @@ function syncSimultaneousPaths(paths) {
|
|
|
627
199
|
* Utility function to find the total duration span for all simul path sets
|
|
628
200
|
* that include series.
|
|
629
201
|
* @private
|
|
630
|
-
* @param {Array<object|Array<object|Highcharts.TimelinePath>>} order
|
|
631
|
-
* order of TimelinePaths/items.
|
|
632
|
-
* @return {number}
|
|
202
|
+
* @param {Array<object|Array<object|Highcharts.TimelinePath>>} order
|
|
203
|
+
* The order of TimelinePaths/items.
|
|
204
|
+
* @return {number}
|
|
205
|
+
* The total time value span difference for all series.
|
|
633
206
|
*/
|
|
634
207
|
function getSimulPathDurationTotal(order) {
|
|
635
208
|
return order.reduce(function (durationTotal, orderDef) {
|
|
@@ -645,27 +218,29 @@ function getSimulPathDurationTotal(order) {
|
|
|
645
218
|
/**
|
|
646
219
|
* Function to calculate the duration in ms for a series.
|
|
647
220
|
* @private
|
|
648
|
-
* @param {number} seriesValueDuration
|
|
649
|
-
* difference.
|
|
650
|
-
* @param {number} totalValueDuration
|
|
651
|
-
* simultaneous) series in value difference.
|
|
652
|
-
* @param {number} totalDurationMs
|
|
653
|
-
* in milliseconds.
|
|
654
|
-
* @return {number}
|
|
221
|
+
* @param {number} seriesValueDuration
|
|
222
|
+
* The duration of the series in value difference.
|
|
223
|
+
* @param {number} totalValueDuration
|
|
224
|
+
* The total duration of all (non simultaneous) series in value difference.
|
|
225
|
+
* @param {number} totalDurationMs
|
|
226
|
+
* The desired total duration for all series in milliseconds.
|
|
227
|
+
* @return {number}
|
|
228
|
+
* The duration for the series in milliseconds.
|
|
655
229
|
*/
|
|
656
230
|
function getSeriesDurationMs(seriesValueDuration, totalValueDuration, totalDurationMs) {
|
|
657
231
|
// A series spanning the whole chart would get the full duration.
|
|
658
|
-
return
|
|
232
|
+
return virtualAxisTranslate(seriesValueDuration, { min: 0, max: totalValueDuration }, { min: 0, max: totalDurationMs });
|
|
659
233
|
}
|
|
660
234
|
/**
|
|
661
235
|
* Convert series building objects into paths and return a new list of
|
|
662
236
|
* TimelinePaths.
|
|
663
237
|
* @private
|
|
664
|
-
* @param {Array<object|Array<object|Highcharts.TimelinePath>>} order
|
|
665
|
-
* order list.
|
|
666
|
-
* @param {number} duration
|
|
667
|
-
*
|
|
668
|
-
*
|
|
238
|
+
* @param {Array<object|Array<object|Highcharts.TimelinePath>>} order
|
|
239
|
+
* The order list.
|
|
240
|
+
* @param {number} duration
|
|
241
|
+
* Total duration to aim for in milliseconds.
|
|
242
|
+
* @return {Array<Array<Highcharts.TimelinePath>>}
|
|
243
|
+
* Array of TimelinePath objects to play.
|
|
669
244
|
*/
|
|
670
245
|
function buildPathsFromOrder(order, duration) {
|
|
671
246
|
// Find time used for waits (custom or after series), and subtract it from
|
|
@@ -677,7 +252,7 @@ function buildPathsFromOrder(order, duration) {
|
|
|
677
252
|
// Go through the order list and convert the items
|
|
678
253
|
return order.reduce(function (allPaths, orderDef) {
|
|
679
254
|
var simultaneousPaths = splat(orderDef).reduce(function (simulPaths, item) {
|
|
680
|
-
if (item instanceof
|
|
255
|
+
if (item instanceof TimelinePath) {
|
|
681
256
|
// This item is already a path object
|
|
682
257
|
simulPaths.push(item);
|
|
683
258
|
}
|
|
@@ -688,7 +263,7 @@ function buildPathsFromOrder(order, duration) {
|
|
|
688
263
|
item.seriesOptions.duration || getSeriesDurationMs(item.seriesOptions.timeExtremes.max -
|
|
689
264
|
item.seriesOptions.timeExtremes.min, totalUsedDuration, totalAvailableDurationMs);
|
|
690
265
|
// Add the path
|
|
691
|
-
simulPaths.push(buildTimelinePathFromSeries(item.series, item.seriesOptions));
|
|
266
|
+
simulPaths.push(SeriesSonify.buildTimelinePathFromSeries(item.series, item.seriesOptions));
|
|
692
267
|
}
|
|
693
268
|
return simulPaths;
|
|
694
269
|
}, []);
|
|
@@ -697,95 +272,12 @@ function buildPathsFromOrder(order, duration) {
|
|
|
697
272
|
return allPaths;
|
|
698
273
|
}, []);
|
|
699
274
|
}
|
|
700
|
-
/**
|
|
701
|
-
* @private
|
|
702
|
-
* @param {Highcharts.Series} series The series to get options for.
|
|
703
|
-
* @param {Highcharts.SonifySeriesOptionsObject} options
|
|
704
|
-
* Options to merge with user options on series/chart and default options.
|
|
705
|
-
* @returns {Array<Highcharts.PointInstrumentObject>} The merged options.
|
|
706
|
-
*/
|
|
707
|
-
function getSeriesInstrumentOptions(series, options) {
|
|
708
|
-
if (options && options.instruments) {
|
|
709
|
-
return options.instruments;
|
|
710
|
-
}
|
|
711
|
-
var defaultInstrOpts = (series.chart.options.sonification &&
|
|
712
|
-
series.chart.options.sonification.defaultInstrumentOptions ||
|
|
713
|
-
{});
|
|
714
|
-
var seriesInstrOpts = (series.options.sonification &&
|
|
715
|
-
series.options.sonification.instruments ||
|
|
716
|
-
[{}]);
|
|
717
|
-
var removeNullsFromObject = function (obj) {
|
|
718
|
-
objectEach(obj, function (val, key) {
|
|
719
|
-
if (val === null) {
|
|
720
|
-
delete obj[key];
|
|
721
|
-
}
|
|
722
|
-
});
|
|
723
|
-
};
|
|
724
|
-
// Convert series options to PointInstrumentObjects and merge with
|
|
725
|
-
// default options
|
|
726
|
-
return (seriesInstrOpts).map(function (optionSet) {
|
|
727
|
-
// Allow setting option to null to use default
|
|
728
|
-
removeNullsFromObject(optionSet.mapping || {});
|
|
729
|
-
removeNullsFromObject(optionSet);
|
|
730
|
-
return {
|
|
731
|
-
instrument: optionSet.instrument || defaultInstrOpts.instrument,
|
|
732
|
-
instrumentOptions: merge(defaultInstrOpts, optionSet, {
|
|
733
|
-
// Instrument options are lifted to root in the API options
|
|
734
|
-
// object, so merge all in order to avoid missing any. But
|
|
735
|
-
// remove the following which are not instrumentOptions:
|
|
736
|
-
mapping: void 0,
|
|
737
|
-
instrument: void 0
|
|
738
|
-
}),
|
|
739
|
-
instrumentMapping: merge(defaultInstrOpts.mapping, optionSet.mapping)
|
|
740
|
-
};
|
|
741
|
-
});
|
|
742
|
-
}
|
|
743
|
-
/**
|
|
744
|
-
* Utility function to translate between options set in chart configuration and
|
|
745
|
-
* a SonifySeriesOptionsObject.
|
|
746
|
-
* @private
|
|
747
|
-
* @param {Highcharts.Series} series The series to get options for.
|
|
748
|
-
* @returns {Highcharts.SonifySeriesOptionsObject} Options for chart/series.sonify()
|
|
749
|
-
*/
|
|
750
|
-
function chartOptionsToSonifySeriesOptions(series) {
|
|
751
|
-
var seriesOpts = series.options.sonification || {};
|
|
752
|
-
var chartOpts = series.chart.options.sonification || {};
|
|
753
|
-
var chartEvents = chartOpts.events || {};
|
|
754
|
-
var seriesEvents = seriesOpts.events || {};
|
|
755
|
-
return {
|
|
756
|
-
onEnd: seriesEvents.onSeriesEnd || chartEvents.onSeriesEnd,
|
|
757
|
-
onStart: seriesEvents.onSeriesStart || chartEvents.onSeriesStart,
|
|
758
|
-
onPointEnd: seriesEvents.onPointEnd || chartEvents.onPointEnd,
|
|
759
|
-
onPointStart: seriesEvents.onPointStart || chartEvents.onPointStart,
|
|
760
|
-
pointPlayTime: (chartOpts.defaultInstrumentOptions &&
|
|
761
|
-
chartOpts.defaultInstrumentOptions.mapping &&
|
|
762
|
-
chartOpts.defaultInstrumentOptions.mapping.pointPlayTime),
|
|
763
|
-
masterVolume: chartOpts.masterVolume,
|
|
764
|
-
instruments: getSeriesInstrumentOptions(series),
|
|
765
|
-
earcons: seriesOpts.earcons || chartOpts.earcons
|
|
766
|
-
};
|
|
767
|
-
}
|
|
768
|
-
/**
|
|
769
|
-
* @private
|
|
770
|
-
* @param {Highcharts.Series} series The series to get options for.
|
|
771
|
-
* @param {Highcharts.SonifySeriesOptionsObject} options
|
|
772
|
-
* Options to merge with user options on series/chart and default options.
|
|
773
|
-
* @returns {Highcharts.SonifySeriesOptionsObject} The merged options.
|
|
774
|
-
*/
|
|
775
|
-
function getSeriesSonifyOptions(series, options) {
|
|
776
|
-
var chartOpts = series.chart.options.sonification;
|
|
777
|
-
var seriesOpts = series.options.sonification;
|
|
778
|
-
return merge({
|
|
779
|
-
duration: ((seriesOpts && seriesOpts.duration) ||
|
|
780
|
-
(chartOpts && chartOpts.duration))
|
|
781
|
-
}, chartOptionsToSonifySeriesOptions(series), options);
|
|
782
|
-
}
|
|
783
275
|
/**
|
|
784
276
|
* @private
|
|
785
277
|
* @param {Highcharts.Chart} chart The chart to get options for.
|
|
786
278
|
* @param {Highcharts.SonificationOptions} options
|
|
787
279
|
* Options to merge with user options on chart and default options.
|
|
788
|
-
* @
|
|
280
|
+
* @return {Highcharts.SonificationOptions} The merged options.
|
|
789
281
|
*/
|
|
790
282
|
function getChartSonifyOptions(chart, options) {
|
|
791
283
|
var chartOpts = chart.options.sonification || {};
|
|
@@ -801,95 +293,6 @@ function getChartSonifyOptions(chart, options) {
|
|
|
801
293
|
onEnd: (chartOpts.events && chartOpts.events.onEnd)
|
|
802
294
|
}, options);
|
|
803
295
|
}
|
|
804
|
-
/**
|
|
805
|
-
* Options for sonifying a chart.
|
|
806
|
-
*
|
|
807
|
-
* @requires module:modules/sonification
|
|
808
|
-
*
|
|
809
|
-
* @interface Highcharts.SonificationOptions
|
|
810
|
-
*/ /**
|
|
811
|
-
* Duration for sonifying the entire chart. The duration is distributed across
|
|
812
|
-
* the different series intelligently, but does not take earcons into account.
|
|
813
|
-
* It is also possible to set the duration explicitly per series, using
|
|
814
|
-
* `seriesOptions`. Note that points may continue to play after the duration has
|
|
815
|
-
* passed, but no new points will start playing.
|
|
816
|
-
* @name Highcharts.SonificationOptions#duration
|
|
817
|
-
* @type {number}
|
|
818
|
-
*/ /**
|
|
819
|
-
* Define the order to play the series in. This can be given as a string, or an
|
|
820
|
-
* array specifying a custom ordering. If given as a string, valid values are
|
|
821
|
-
* `sequential` - where each series is played in order - or `simultaneous`,
|
|
822
|
-
* where all series are played at once. For custom ordering, supply an array as
|
|
823
|
-
* the order. Each element in the array can be either a string with a series ID,
|
|
824
|
-
* an Earcon object, or an object with a numeric `silentWait` property
|
|
825
|
-
* designating a number of milliseconds to wait before continuing. Each element
|
|
826
|
-
* of the array will be played in order. To play elements simultaneously, group
|
|
827
|
-
* the elements in an array.
|
|
828
|
-
* @name Highcharts.SonificationOptions#order
|
|
829
|
-
* @type {string|Array<string|Highcharts.Earcon|Array<string|Highcharts.Earcon>>}
|
|
830
|
-
*/ /**
|
|
831
|
-
* The axis to use for when to play the points. Can be a string with a data
|
|
832
|
-
* property (e.g. `x`), or a function. If it is a function, this function
|
|
833
|
-
* receives the point as argument, and should return a numeric value. The points
|
|
834
|
-
* with the lowest numeric values are then played first, and the time between
|
|
835
|
-
* points will be proportional to the distance between the numeric values. This
|
|
836
|
-
* option can not be overridden per series.
|
|
837
|
-
* @name Highcharts.SonificationOptions#pointPlayTime
|
|
838
|
-
* @type {string|Function}
|
|
839
|
-
*/ /**
|
|
840
|
-
* Milliseconds of silent waiting to add between series. Note that waiting time
|
|
841
|
-
* is considered part of the sonify duration.
|
|
842
|
-
* @name Highcharts.SonificationOptions#afterSeriesWait
|
|
843
|
-
* @type {number|undefined}
|
|
844
|
-
*/ /**
|
|
845
|
-
* Options as given to `series.sonify` to override options per series. If the
|
|
846
|
-
* option is supplied as an array of options objects, the `id` property of the
|
|
847
|
-
* object should correspond to the series' id. If the option is supplied as a
|
|
848
|
-
* single object, the options apply to all series.
|
|
849
|
-
* @name Highcharts.SonificationOptions#seriesOptions
|
|
850
|
-
* @type {Object|Array<object>|undefined}
|
|
851
|
-
*/ /**
|
|
852
|
-
* The instrument definitions for the points in this chart.
|
|
853
|
-
* @name Highcharts.SonificationOptions#instruments
|
|
854
|
-
* @type {Array<Highcharts.PointInstrumentObject>|undefined}
|
|
855
|
-
*/ /**
|
|
856
|
-
* Earcons to add to the chart. Note that earcons can also be added per series
|
|
857
|
-
* using `seriesOptions`.
|
|
858
|
-
* @name Highcharts.SonificationOptions#earcons
|
|
859
|
-
* @type {Array<Highcharts.EarconConfiguration>|undefined}
|
|
860
|
-
*/ /**
|
|
861
|
-
* Optionally provide the minimum/maximum data values for the points. If this is
|
|
862
|
-
* not supplied, it is calculated from all points in the chart on demand. This
|
|
863
|
-
* option is supplied in the following format, as a map of point data properties
|
|
864
|
-
* to objects with min/max values:
|
|
865
|
-
* ```js
|
|
866
|
-
* dataExtremes: {
|
|
867
|
-
* y: {
|
|
868
|
-
* min: 0,
|
|
869
|
-
* max: 100
|
|
870
|
-
* },
|
|
871
|
-
* z: {
|
|
872
|
-
* min: -10,
|
|
873
|
-
* max: 10
|
|
874
|
-
* }
|
|
875
|
-
* // Properties used and not provided are calculated on demand
|
|
876
|
-
* }
|
|
877
|
-
* ```
|
|
878
|
-
* @name Highcharts.SonificationOptions#dataExtremes
|
|
879
|
-
* @type {Highcharts.Dictionary<Highcharts.RangeObject>|undefined}
|
|
880
|
-
*/ /**
|
|
881
|
-
* Callback before a series is played.
|
|
882
|
-
* @name Highcharts.SonificationOptions#onSeriesStart
|
|
883
|
-
* @type {Function|undefined}
|
|
884
|
-
*/ /**
|
|
885
|
-
* Callback after a series has finished playing.
|
|
886
|
-
* @name Highcharts.SonificationOptions#onSeriesEnd
|
|
887
|
-
* @type {Function|undefined}
|
|
888
|
-
*/ /**
|
|
889
|
-
* Callback after the chart has played.
|
|
890
|
-
* @name Highcharts.SonificationOptions#onEnd
|
|
891
|
-
* @type {Function|undefined}
|
|
892
|
-
*/
|
|
893
296
|
/**
|
|
894
297
|
* Sonify a chart.
|
|
895
298
|
*
|
|
@@ -909,10 +312,8 @@ function getChartSonifyOptions(chart, options) {
|
|
|
909
312
|
* @function Highcharts.Chart#sonify
|
|
910
313
|
*
|
|
911
314
|
* @param {Highcharts.SonificationOptions} [options]
|
|
912
|
-
*
|
|
913
|
-
*
|
|
914
|
-
*
|
|
915
|
-
* @return {void}
|
|
315
|
+
* The options for sonifying this chart. If not provided,
|
|
316
|
+
* uses options set on chart and series.
|
|
916
317
|
*/
|
|
917
318
|
function chartSonify(options) {
|
|
918
319
|
var opts = getChartSonifyOptions(this, options);
|
|
@@ -926,7 +327,7 @@ function chartSonify(options) {
|
|
|
926
327
|
var dataExtremes = getExtremesForInstrumentProps(this, opts.instruments, opts.dataExtremes);
|
|
927
328
|
// Figure out ordering of series and custom paths
|
|
928
329
|
var order = buildPathOrder(opts.order, this, function (series) {
|
|
929
|
-
return buildChartSonifySeriesOptions(series, dataExtremes, opts);
|
|
330
|
+
return SeriesSonify.buildChartSonifySeriesOptions(series, dataExtremes, opts);
|
|
930
331
|
});
|
|
931
332
|
// Add waits after simultaneous paths with series in them.
|
|
932
333
|
order = addAfterSeriesWaits(order, opts.afterSeriesWait || 0);
|
|
@@ -938,7 +339,7 @@ function chartSonify(options) {
|
|
|
938
339
|
syncSimultaneousPaths(simultaneousPaths);
|
|
939
340
|
});
|
|
940
341
|
// We have a set of paths. Create the timeline, and play it.
|
|
941
|
-
this.sonification.timeline = new
|
|
342
|
+
this.sonification.timeline = new Timeline({
|
|
942
343
|
paths: paths,
|
|
943
344
|
onEnd: opts.onEnd
|
|
944
345
|
});
|
|
@@ -960,7 +361,7 @@ function getCurrentPoints() {
|
|
|
960
361
|
cursorObj = this.sonification.timeline.getCursor(); // Cursor per pathID
|
|
961
362
|
return Object.keys(cursorObj).map(function (path) {
|
|
962
363
|
// Get the event objects under cursor for each path
|
|
963
|
-
return cursorObj[path].eventObject;
|
|
364
|
+
return cursorObj[path].options.eventObject;
|
|
964
365
|
}).filter(function (eventObj) {
|
|
965
366
|
// Return the events that are points
|
|
966
367
|
return eventObj instanceof Point;
|
|
@@ -1092,10 +493,48 @@ function resetCursorEnd() {
|
|
|
1092
493
|
this.sonification.timeline.resetCursorEnd();
|
|
1093
494
|
}
|
|
1094
495
|
}
|
|
1095
|
-
|
|
1096
|
-
|
|
496
|
+
var composedClasses = [];
|
|
497
|
+
/**
|
|
498
|
+
* @private
|
|
499
|
+
* @todo move to composition namespace with all functions
|
|
500
|
+
*/
|
|
501
|
+
function compose(ChartClass) {
|
|
502
|
+
if (composedClasses.indexOf(ChartClass) === -1) {
|
|
503
|
+
composedClasses.push(ChartClass);
|
|
504
|
+
var chartProto = ChartClass.prototype;
|
|
505
|
+
extend(chartProto, {
|
|
506
|
+
sonify: chartSonify,
|
|
507
|
+
pauseSonify: pause,
|
|
508
|
+
resumeSonify: resume,
|
|
509
|
+
rewindSonify: rewind,
|
|
510
|
+
cancelSonify: cancel,
|
|
511
|
+
getCurrentSonifyPoints: getCurrentPoints,
|
|
512
|
+
setSonifyCursor: setCursor,
|
|
513
|
+
resetSonifyCursor: resetCursor,
|
|
514
|
+
resetSonifyCursorEnd: resetCursorEnd
|
|
515
|
+
});
|
|
516
|
+
// Prepare charts for sonification on init
|
|
517
|
+
addEvent(ChartClass, 'init', function () {
|
|
518
|
+
this.sonification = {};
|
|
519
|
+
});
|
|
520
|
+
// Update with chart/series/point updates
|
|
521
|
+
addEvent(ChartClass, 'update', function (e) {
|
|
522
|
+
var newOptions = e.options.sonification;
|
|
523
|
+
if (newOptions) {
|
|
524
|
+
merge(true, this.options.sonification, newOptions);
|
|
525
|
+
}
|
|
526
|
+
});
|
|
527
|
+
}
|
|
528
|
+
return ChartClass;
|
|
529
|
+
}
|
|
530
|
+
/* *
|
|
531
|
+
*
|
|
532
|
+
* Default Export
|
|
533
|
+
*
|
|
534
|
+
* */
|
|
535
|
+
var ChartSonify = {
|
|
1097
536
|
chartSonify: chartSonify,
|
|
1098
|
-
|
|
537
|
+
compose: compose,
|
|
1099
538
|
pause: pause,
|
|
1100
539
|
resume: resume,
|
|
1101
540
|
rewind: rewind,
|
|
@@ -1105,4 +544,181 @@ var chartSonifyFunctions = {
|
|
|
1105
544
|
resetCursor: resetCursor,
|
|
1106
545
|
resetCursorEnd: resetCursorEnd
|
|
1107
546
|
};
|
|
1108
|
-
export default
|
|
547
|
+
export default ChartSonify;
|
|
548
|
+
/* *
|
|
549
|
+
*
|
|
550
|
+
* API Declarations
|
|
551
|
+
*
|
|
552
|
+
* */
|
|
553
|
+
/**
|
|
554
|
+
* An Earcon configuration, specifying an Earcon and when to play it.
|
|
555
|
+
*
|
|
556
|
+
* @requires module:modules/sonification
|
|
557
|
+
*
|
|
558
|
+
* @interface Highcharts.EarconConfiguration
|
|
559
|
+
*/ /**
|
|
560
|
+
* An Earcon instance.
|
|
561
|
+
* @name Highcharts.EarconConfiguration#earcon
|
|
562
|
+
* @type {Highcharts.Earcon}
|
|
563
|
+
*/ /**
|
|
564
|
+
* The ID of the point to play the Earcon on.
|
|
565
|
+
* @name Highcharts.EarconConfiguration#onPoint
|
|
566
|
+
* @type {string|undefined}
|
|
567
|
+
*/ /**
|
|
568
|
+
* A function to determine whether or not to play this earcon on a point. The
|
|
569
|
+
* function is called for every point, receiving that point as parameter. It
|
|
570
|
+
* should return either a boolean indicating whether or not to play the earcon,
|
|
571
|
+
* or a new Earcon instance - in which case the new Earcon will be played.
|
|
572
|
+
* @name Highcharts.EarconConfiguration#condition
|
|
573
|
+
* @type {Function|undefined}
|
|
574
|
+
*/
|
|
575
|
+
/**
|
|
576
|
+
* Options for sonifying a chart.
|
|
577
|
+
*
|
|
578
|
+
* @requires module:modules/sonification
|
|
579
|
+
*
|
|
580
|
+
* @interface Highcharts.SonificationOptions
|
|
581
|
+
*/ /**
|
|
582
|
+
* Duration for sonifying the entire chart. The duration is distributed across
|
|
583
|
+
* the different series intelligently, but does not take earcons into account.
|
|
584
|
+
* It is also possible to set the duration explicitly per series, using
|
|
585
|
+
* `seriesOptions`. Note that points may continue to play after the duration has
|
|
586
|
+
* passed, but no new points will start playing.
|
|
587
|
+
* @name Highcharts.SonificationOptions#duration
|
|
588
|
+
* @type {number}
|
|
589
|
+
*/ /**
|
|
590
|
+
* Define the order to play the series in. This can be given as a string, or an
|
|
591
|
+
* array specifying a custom ordering. If given as a string, valid values are
|
|
592
|
+
* `sequential` - where each series is played in order - or `simultaneous`,
|
|
593
|
+
* where all series are played at once. For custom ordering, supply an array as
|
|
594
|
+
* the order. Each element in the array can be either a string with a series ID,
|
|
595
|
+
* an Earcon object, or an object with a numeric `silentWait` property
|
|
596
|
+
* designating a number of milliseconds to wait before continuing. Each element
|
|
597
|
+
* of the array will be played in order. To play elements simultaneously, group
|
|
598
|
+
* the elements in an array.
|
|
599
|
+
* @name Highcharts.SonificationOptions#order
|
|
600
|
+
* @type {string|Array<string|Highcharts.Earcon|Array<string|Highcharts.Earcon>>}
|
|
601
|
+
*/ /**
|
|
602
|
+
* The axis to use for when to play the points. Can be a string with a data
|
|
603
|
+
* property (e.g. `x`), or a function. If it is a function, this function
|
|
604
|
+
* receives the point as argument, and should return a numeric value. The points
|
|
605
|
+
* with the lowest numeric values are then played first, and the time between
|
|
606
|
+
* points will be proportional to the distance between the numeric values. This
|
|
607
|
+
* option can not be overridden per series.
|
|
608
|
+
* @name Highcharts.SonificationOptions#pointPlayTime
|
|
609
|
+
* @type {string|Function}
|
|
610
|
+
*/ /**
|
|
611
|
+
* Milliseconds of silent waiting to add between series. Note that waiting time
|
|
612
|
+
* is considered part of the sonify duration.
|
|
613
|
+
* @name Highcharts.SonificationOptions#afterSeriesWait
|
|
614
|
+
* @type {number|undefined}
|
|
615
|
+
*/ /**
|
|
616
|
+
* Options as given to `series.sonify` to override options per series. If the
|
|
617
|
+
* option is supplied as an array of options objects, the `id` property of the
|
|
618
|
+
* object should correspond to the series' id. If the option is supplied as a
|
|
619
|
+
* single object, the options apply to all series.
|
|
620
|
+
* @name Highcharts.SonificationOptions#seriesOptions
|
|
621
|
+
* @type {Object|Array<object>|undefined}
|
|
622
|
+
*/ /**
|
|
623
|
+
* The instrument definitions for the points in this chart.
|
|
624
|
+
* @name Highcharts.SonificationOptions#instruments
|
|
625
|
+
* @type {Array<Highcharts.PointInstrumentObject>|undefined}
|
|
626
|
+
*/ /**
|
|
627
|
+
* Earcons to add to the chart. Note that earcons can also be added per series
|
|
628
|
+
* using `seriesOptions`.
|
|
629
|
+
* @name Highcharts.SonificationOptions#earcons
|
|
630
|
+
* @type {Array<Highcharts.EarconConfiguration>|undefined}
|
|
631
|
+
*/ /**
|
|
632
|
+
* Optionally provide the minimum/maximum data values for the points. If this is
|
|
633
|
+
* not supplied, it is calculated from all points in the chart on demand. This
|
|
634
|
+
* option is supplied in the following format, as a map of point data properties
|
|
635
|
+
* to objects with min/max values:
|
|
636
|
+
* ```js
|
|
637
|
+
* dataExtremes: {
|
|
638
|
+
* y: {
|
|
639
|
+
* min: 0,
|
|
640
|
+
* max: 100
|
|
641
|
+
* },
|
|
642
|
+
* z: {
|
|
643
|
+
* min: -10,
|
|
644
|
+
* max: 10
|
|
645
|
+
* }
|
|
646
|
+
* // Properties used and not provided are calculated on demand
|
|
647
|
+
* }
|
|
648
|
+
* ```
|
|
649
|
+
* @name Highcharts.SonificationOptions#dataExtremes
|
|
650
|
+
* @type {Highcharts.Dictionary<Highcharts.RangeObject>|undefined}
|
|
651
|
+
*/ /**
|
|
652
|
+
* Callback before a series is played.
|
|
653
|
+
* @name Highcharts.SonificationOptions#onSeriesStart
|
|
654
|
+
* @type {Function|undefined}
|
|
655
|
+
*/ /**
|
|
656
|
+
* Callback after a series has finished playing.
|
|
657
|
+
* @name Highcharts.SonificationOptions#onSeriesEnd
|
|
658
|
+
* @type {Function|undefined}
|
|
659
|
+
*/ /**
|
|
660
|
+
* Callback after the chart has played.
|
|
661
|
+
* @name Highcharts.SonificationOptions#onEnd
|
|
662
|
+
* @type {Function|undefined}
|
|
663
|
+
*/
|
|
664
|
+
/**
|
|
665
|
+
* Options for sonifying a series.
|
|
666
|
+
*
|
|
667
|
+
* @requires module:modules/sonification
|
|
668
|
+
*
|
|
669
|
+
* @interface Highcharts.SonifySeriesOptionsObject
|
|
670
|
+
*/ /**
|
|
671
|
+
* The duration for playing the points. Note that points might continue to play
|
|
672
|
+
* after the duration has passed, but no new points will start playing.
|
|
673
|
+
* @name Highcharts.SonifySeriesOptionsObject#duration
|
|
674
|
+
* @type {number}
|
|
675
|
+
*/ /**
|
|
676
|
+
* The axis to use for when to play the points. Can be a string with a data
|
|
677
|
+
* property (e.g. `x`), or a function. If it is a function, this function
|
|
678
|
+
* receives the point as argument, and should return a numeric value. The points
|
|
679
|
+
* with the lowest numeric values are then played first, and the time between
|
|
680
|
+
* points will be proportional to the distance between the numeric values.
|
|
681
|
+
* @name Highcharts.SonifySeriesOptionsObject#pointPlayTime
|
|
682
|
+
* @type {string|Function}
|
|
683
|
+
*/ /**
|
|
684
|
+
* The instrument definitions for the points in this series.
|
|
685
|
+
* @name Highcharts.SonifySeriesOptionsObject#instruments
|
|
686
|
+
* @type {Array<Highcharts.PointInstrumentObject>}
|
|
687
|
+
*/ /**
|
|
688
|
+
* Earcons to add to the series.
|
|
689
|
+
* @name Highcharts.SonifySeriesOptionsObject#earcons
|
|
690
|
+
* @type {Array<Highcharts.EarconConfiguration>|undefined}
|
|
691
|
+
*/ /**
|
|
692
|
+
* Optionally provide the minimum/maximum data values for the points. If this is
|
|
693
|
+
* not supplied, it is calculated from all points in the chart on demand. This
|
|
694
|
+
* option is supplied in the following format, as a map of point data properties
|
|
695
|
+
* to objects with min/max values:
|
|
696
|
+
* ```js
|
|
697
|
+
* dataExtremes: {
|
|
698
|
+
* y: {
|
|
699
|
+
* min: 0,
|
|
700
|
+
* max: 100
|
|
701
|
+
* },
|
|
702
|
+
* z: {
|
|
703
|
+
* min: -10,
|
|
704
|
+
* max: 10
|
|
705
|
+
* }
|
|
706
|
+
* // Properties used and not provided are calculated on demand
|
|
707
|
+
* }
|
|
708
|
+
* ```
|
|
709
|
+
* @name Highcharts.SonifySeriesOptionsObject#dataExtremes
|
|
710
|
+
* @type {Highcharts.Dictionary<Highcharts.RangeObject>|undefined}
|
|
711
|
+
*/ /**
|
|
712
|
+
* Callback before a point is played.
|
|
713
|
+
* @name Highcharts.SonifySeriesOptionsObject#onPointStart
|
|
714
|
+
* @type {Function|undefined}
|
|
715
|
+
*/ /**
|
|
716
|
+
* Callback after a point has finished playing.
|
|
717
|
+
* @name Highcharts.SonifySeriesOptionsObject#onPointEnd
|
|
718
|
+
* @type {Function|undefined}
|
|
719
|
+
*/ /**
|
|
720
|
+
* Callback after the series has played.
|
|
721
|
+
* @name Highcharts.SonifySeriesOptionsObject#onEnd
|
|
722
|
+
* @type {Function|undefined}
|
|
723
|
+
*/
|
|
724
|
+
''; // detach doclets above
|