highcharts 9.2.0 → 9.3.1

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.
Files changed (755) hide show
  1. package/README.md +13 -6
  2. package/bower.json +1 -1
  3. package/css/annotations/popup.css +48 -8
  4. package/css/annotations/popup.scss +70 -22
  5. package/css/highcharts.css +45 -0
  6. package/css/highcharts.scss +40 -0
  7. package/css/themes/dark-unica.css +45 -0
  8. package/css/themes/grid-light.css +45 -0
  9. package/css/themes/sand-signika.css +45 -0
  10. package/es-modules/Accessibility/A11yI18n.js +273 -224
  11. package/es-modules/Accessibility/Accessibility.js +237 -128
  12. package/es-modules/Accessibility/AccessibilityComponent.js +79 -314
  13. package/es-modules/Accessibility/Components/AnnotationsA11y.js +10 -0
  14. package/es-modules/Accessibility/Components/ContainerComponent.js +52 -27
  15. package/es-modules/Accessibility/Components/InfoRegionsComponent.js +173 -104
  16. package/es-modules/Accessibility/Components/LegendComponent.js +97 -65
  17. package/es-modules/Accessibility/Components/MenuComponent.js +243 -149
  18. package/es-modules/Accessibility/Components/RangeSelectorComponent.js +170 -88
  19. package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +152 -115
  20. package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.js +133 -68
  21. package/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +64 -27
  22. package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +38 -21
  23. package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +380 -325
  24. package/es-modules/Accessibility/Components/ZoomComponent.js +28 -20
  25. package/es-modules/Accessibility/FocusBorder.js +192 -147
  26. package/es-modules/Accessibility/HighContrastMode.js +78 -66
  27. package/es-modules/Accessibility/HighContrastTheme.js +10 -0
  28. package/es-modules/Accessibility/KeyboardNavigation.js +146 -71
  29. package/es-modules/Accessibility/KeyboardNavigationHandler.js +71 -44
  30. package/es-modules/Accessibility/Options/DeprecatedOptions.js +11 -1
  31. package/es-modules/Accessibility/Options/LangOptions.js +1 -2
  32. package/es-modules/Accessibility/Options/Options.js +32 -17
  33. package/es-modules/Accessibility/ProxyElement.js +212 -0
  34. package/es-modules/Accessibility/ProxyProvider.js +305 -0
  35. package/es-modules/Accessibility/Utils/Announcer.js +15 -8
  36. package/es-modules/Accessibility/Utils/ChartUtilities.js +41 -16
  37. package/es-modules/Accessibility/Utils/DOMElementProvider.js +27 -15
  38. package/es-modules/Accessibility/Utils/EventProvider.js +27 -17
  39. package/es-modules/Accessibility/Utils/HTMLUtilities.js +125 -30
  40. package/es-modules/Core/Axis/Axis.js +37 -30
  41. package/es-modules/Core/Axis/AxisDefaults.js +35 -24
  42. package/es-modules/Core/Axis/Color/ColorAxisComposition.js +54 -4
  43. package/es-modules/Core/Axis/Color/ColorAxisDefaults.js +5 -5
  44. package/es-modules/Core/Axis/OrdinalAxis.js +5 -13
  45. package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +4 -5
  46. package/es-modules/Core/Axis/ScrollbarAxis.js +10 -3
  47. package/es-modules/Core/Axis/TreeGridAxis.js +2 -2
  48. package/es-modules/Core/Axis/TreeGridTick.js +1 -2
  49. package/es-modules/Core/Chart/Chart.js +2 -3
  50. package/es-modules/Core/Chart/ChartDefaults.js +3 -4
  51. package/es-modules/Core/Chart/ChartNavigationComposition.js +92 -0
  52. package/es-modules/Core/Chart/MapChart.js +10 -22
  53. package/es-modules/Core/Chart/StockChart.js +3 -293
  54. package/es-modules/Core/Color/Palettes.js +22 -0
  55. package/es-modules/Core/DefaultOptions.js +19 -17
  56. package/es-modules/Core/Foundation.js +39 -31
  57. package/es-modules/Core/Globals.js +1 -1
  58. package/es-modules/Core/HttpUtilities.js +3 -3
  59. package/es-modules/Core/Legend/Legend.js +7 -3
  60. package/es-modules/Core/Navigator.js +7 -8
  61. package/es-modules/Core/Pointer.js +39 -36
  62. package/es-modules/Core/Renderer/HTML/AST.js +3 -6
  63. package/es-modules/Core/Renderer/HTML/HTMLElement.js +23 -18
  64. package/es-modules/Core/Renderer/SVG/SVGElement.js +3 -4
  65. package/es-modules/Core/Renderer/SVG/SVGRenderer.js +21 -18
  66. package/es-modules/Core/Renderer/SVG/TextBuilder.js +17 -13
  67. package/es-modules/Core/ScrollbarDefaults.js +10 -9
  68. package/es-modules/Core/Series/DataLabel.js +2 -3
  69. package/es-modules/Core/Series/Point.js +5 -3
  70. package/es-modules/Core/Series/Series.js +156 -162
  71. package/es-modules/Core/Series/SeriesDefaults.js +3 -4
  72. package/es-modules/Core/Series/SeriesRegistry.js +1 -2
  73. package/es-modules/Core/Tooltip.js +44 -17
  74. package/es-modules/Core/Utilities.js +15 -7
  75. package/es-modules/Data/DataConverter.js +489 -0
  76. package/es-modules/Data/DataPromise.js +252 -0
  77. package/es-modules/Data/DataSeriesConverter.js +203 -0
  78. package/es-modules/Data/DataTable.js +1204 -0
  79. package/es-modules/Data/Modifiers/ChainModifier.js +299 -0
  80. package/es-modules/Data/Modifiers/DataModifier.js +303 -0
  81. package/es-modules/Data/Modifiers/GroupModifier.js +144 -0
  82. package/es-modules/Data/Modifiers/InvertModifier.js +254 -0
  83. package/es-modules/Data/Modifiers/RangeModifier.js +143 -0
  84. package/es-modules/Data/Modifiers/SeriesPointsModifier.js +110 -0
  85. package/es-modules/Data/Modifiers/SortModifier.js +249 -0
  86. package/es-modules/Data/Parsers/CSVParser.js +399 -0
  87. package/es-modules/Data/Parsers/DataParser.js +101 -0
  88. package/es-modules/Data/Parsers/GoogleSheetsParser.js +220 -0
  89. package/es-modules/Data/Parsers/HTMLTableParser.js +213 -0
  90. package/es-modules/Data/Stores/CSVStore.js +317 -0
  91. package/es-modules/Data/Stores/DataStore.js +276 -0
  92. package/es-modules/Data/Stores/GoogleSheetsStore.js +167 -0
  93. package/es-modules/Data/Stores/HTMLTableStore.js +351 -0
  94. package/es-modules/Extensions/Annotations/Annotations.js +61 -11
  95. package/es-modules/Extensions/Annotations/ControlPoint.js +1 -1
  96. package/es-modules/Extensions/Annotations/Controllables/ControllableEllipse.js +199 -0
  97. package/es-modules/Extensions/Annotations/Mixins/ControllableMixin.js +7 -1
  98. package/es-modules/Extensions/Annotations/NavigationBindings.js +90 -28
  99. package/es-modules/Extensions/Annotations/Popup.js +479 -141
  100. package/es-modules/Extensions/Annotations/Types/BasicAnnotation.js +51 -2
  101. package/es-modules/Extensions/Annotations/Types/CrookedLine.js +1 -1
  102. package/es-modules/Extensions/Annotations/Types/Fibonacci.js +2 -3
  103. package/es-modules/Extensions/Annotations/Types/FibonacciTimeZones.js +219 -0
  104. package/es-modules/Extensions/Annotations/Types/InfinityLine.js +1 -1
  105. package/es-modules/Extensions/Annotations/Types/Measure.js +14 -8
  106. package/es-modules/Extensions/Annotations/Types/Pitchfork.js +5 -5
  107. package/es-modules/Extensions/Annotations/Types/TimeCycles.js +207 -0
  108. package/es-modules/Extensions/Annotations/Types/Tunnel.js +3 -5
  109. package/es-modules/Extensions/Annotations/Types/VerticalLine.js +1 -1
  110. package/es-modules/Extensions/Boost/BoostOptions.js +2 -2
  111. package/es-modules/Extensions/Boost/BoostOverrides.js +3 -1
  112. package/es-modules/Extensions/Boost/WGLShader.js +4 -3
  113. package/es-modules/Extensions/BoostCanvas.js +1 -2
  114. package/es-modules/Extensions/CurrentDateIndication.js +2 -3
  115. package/es-modules/Extensions/Data.js +73 -67
  116. package/es-modules/Extensions/DataGrouping.js +33 -18
  117. package/es-modules/Extensions/Debugger/ErrorMessages.js +2 -2
  118. package/es-modules/Extensions/DownloadURL.js +2 -2
  119. package/es-modules/Extensions/DragPanes.js +1 -2
  120. package/es-modules/Extensions/Drilldown.js +2 -3
  121. package/es-modules/Extensions/Exporting/Exporting.js +12 -11
  122. package/es-modules/Extensions/Exporting/ExportingDefaults.js +8 -15
  123. package/es-modules/Extensions/GeoJSON.js +39 -63
  124. package/es-modules/Extensions/MarkerClusters.js +115 -97
  125. package/es-modules/Extensions/NoDataToDisplay.js +1 -2
  126. package/es-modules/Extensions/OfflineExporting/OfflineExporting.js +10 -9
  127. package/es-modules/Extensions/OfflineExporting/OfflineExportingDefaults.js +1 -1
  128. package/es-modules/Extensions/Oldie/Oldie.js +2 -3
  129. package/es-modules/Extensions/Pane.js +5 -6
  130. package/es-modules/Extensions/Polar.js +1 -1
  131. package/es-modules/Extensions/RangeSelector.js +3 -4
  132. package/es-modules/Extensions/Sonification/ChartSonify.js +247 -637
  133. package/es-modules/Extensions/Sonification/Earcon.js +136 -102
  134. package/es-modules/Extensions/Sonification/Instrument.js +496 -426
  135. package/es-modules/Extensions/Sonification/MusicalFrequencies.js +10 -0
  136. package/es-modules/Extensions/Sonification/Options.js +10 -0
  137. package/es-modules/Extensions/Sonification/PointSonify.js +203 -152
  138. package/es-modules/Extensions/Sonification/SeriesSonify.js +459 -0
  139. package/es-modules/Extensions/Sonification/SignalHandler.js +124 -0
  140. package/es-modules/Extensions/Sonification/Sonification.js +26 -52
  141. package/es-modules/Extensions/Sonification/{Utilities.js → SonificationUtilities.js} +62 -84
  142. package/es-modules/Extensions/Sonification/Timeline.js +255 -567
  143. package/es-modules/Extensions/Sonification/TimelineEvent.js +158 -0
  144. package/es-modules/Extensions/Sonification/TimelinePath.js +311 -0
  145. package/es-modules/Maps/MapNavigation.js +27 -64
  146. package/es-modules/Maps/MapNavigationOptionsDefault.js +3 -0
  147. package/es-modules/Maps/MapPointer.js +7 -5
  148. package/es-modules/Maps/MapView.js +450 -0
  149. package/es-modules/Maps/MapViewOptionsDefault.js +97 -0
  150. package/es-modules/Maps/Projection.js +436 -0
  151. package/es-modules/Maps/ProjectionDefinition.js +9 -0
  152. package/es-modules/Maps/Projections/EqualEarth.js +42 -0
  153. package/es-modules/Maps/Projections/LambertConformalConic.js +52 -0
  154. package/es-modules/Maps/Projections/Miller.js +16 -0
  155. package/es-modules/Maps/Projections/Orthographic.js +26 -0
  156. package/es-modules/Maps/Projections/ProjectionRegistry.js +19 -0
  157. package/es-modules/Maps/Projections/WebMercator.js +24 -0
  158. package/es-modules/Series/AreaRange/AreaRangeSeries.js +4 -5
  159. package/es-modules/Series/Bellcurve/BellcurveSeries.js +2 -8
  160. package/es-modules/Series/BoxPlot/BoxPlotSeries.js +1 -2
  161. package/es-modules/Series/Bubble/BubbleLegendDefaults.js +1 -2
  162. package/es-modules/Series/Bubble/BubbleLegendItem.js +3 -3
  163. package/es-modules/Series/Bubble/BubblePoint.js +5 -0
  164. package/es-modules/Series/Bubble/BubbleSeries.js +90 -50
  165. package/es-modules/Series/Candlestick/CandlestickSeries.js +10 -18
  166. package/es-modules/{Mixins/CenteredSeries.js → Series/CenteredUtilities.js} +45 -23
  167. package/es-modules/Series/ColorMapComposition.js +109 -0
  168. package/es-modules/Series/Column/ColumnDataLabel.js +5 -5
  169. package/es-modules/Series/Column/ColumnSeries.js +3 -4
  170. package/es-modules/Series/ColumnPyramid/ColumnPyramidSeries.js +6 -6
  171. package/es-modules/Series/DataModifyComposition.js +539 -0
  172. package/es-modules/Series/DependencyWheel/DependencyWheelPoint.js +2 -6
  173. package/es-modules/Series/DerivedComposition.js +137 -0
  174. package/es-modules/Series/DrawPointComposition.js +111 -0
  175. package/es-modules/Series/Dumbbell/DumbbellSeries.js +2 -3
  176. package/es-modules/Series/ErrorBar/ErrorBarSeries.js +1 -2
  177. package/es-modules/Series/Flags/FlagsSeries.js +18 -25
  178. package/es-modules/Series/Funnel/FunnelSeries.js +6 -5
  179. package/es-modules/Series/Gantt/GanttSeries.js +0 -2
  180. package/es-modules/Series/Gauge/GaugePoint.js +1 -1
  181. package/es-modules/Series/Gauge/GaugeSeries.js +7 -7
  182. package/es-modules/Series/HLC/HLCPoint.js +55 -0
  183. package/es-modules/Series/HLC/HLCSeries.js +383 -0
  184. package/es-modules/Series/Heatmap/HeatmapPoint.js +3 -4
  185. package/es-modules/Series/Heatmap/HeatmapSeries.js +19 -6
  186. package/es-modules/Series/HeikinAshi/HeikinAshiSeries.js +2 -3
  187. package/es-modules/Series/Histogram/HistogramSeries.js +3 -7
  188. package/es-modules/Series/HollowCandlestick/HollowCandlestickPoint.js +2 -2
  189. package/es-modules/Series/HollowCandlestick/HollowCandlestickSeries.js +33 -34
  190. package/es-modules/Series/Line/LineSeries.js +1 -2
  191. package/es-modules/Series/Map/MapPoint.js +23 -16
  192. package/es-modules/Series/Map/MapSeries.js +271 -309
  193. package/es-modules/Series/MapBubble/MapBubblePoint.js +0 -3
  194. package/es-modules/Series/MapBubble/MapBubbleSeries.js +10 -1
  195. package/es-modules/Series/MapLine/MapLineSeries.js +2 -0
  196. package/es-modules/Series/MapPoint/MapPointPoint.js +5 -1
  197. package/es-modules/Series/MapPoint/MapPointSeries.js +99 -14
  198. package/es-modules/Series/Networkgraph/Networkgraph.js +5 -5
  199. package/es-modules/{Mixins/Nodes.js → Series/NodesComposition.js} +76 -29
  200. package/es-modules/Series/OHLC/OHLCPoint.js +2 -6
  201. package/es-modules/Series/OHLC/OHLCSeries.js +55 -183
  202. package/es-modules/{Mixins/OnSeries.js → Series/OnSeriesComposition.js} +53 -21
  203. package/es-modules/Series/Organization/OrganizationSeries.js +2 -3
  204. package/es-modules/Series/PackedBubble/PackedBubbleSeries.js +46 -6
  205. package/es-modules/Series/ParetoSeries/ParetoSeries.js +3 -7
  206. package/es-modules/Series/Pie/PieDataLabel.js +1 -2
  207. package/es-modules/Series/Pie/PieSeries.js +6 -7
  208. package/es-modules/Series/Sankey/SankeyPoint.js +0 -4
  209. package/es-modules/Series/Sankey/SankeySeries.js +89 -20
  210. package/es-modules/Series/Sunburst/SunburstPoint.js +2 -3
  211. package/es-modules/Series/Sunburst/SunburstSeries.js +4 -4
  212. package/es-modules/Series/Tilemap/TilemapPoint.js +2 -3
  213. package/es-modules/Series/Timeline/TimelineSeries.js +3 -4
  214. package/es-modules/{Mixins/TreeSeries.js → Series/TreeUtilities.js} +86 -76
  215. package/es-modules/Series/Treemap/TreemapPoint.js +2 -2
  216. package/es-modules/Series/Treemap/TreemapSeries.js +8 -8
  217. package/es-modules/Series/Venn/VennPoint.js +16 -7
  218. package/es-modules/Series/Venn/VennSeries.js +5 -8
  219. package/es-modules/Series/Venn/VennUtils.js +550 -439
  220. package/es-modules/Series/Waterfall/WaterfallSeries.js +2 -3
  221. package/es-modules/Series/Windbarb/WindbarbSeries.js +23 -24
  222. package/es-modules/Series/Wordcloud/WordcloudPoint.js +8 -6
  223. package/es-modules/Series/Wordcloud/WordcloudSeries.js +24 -20
  224. package/es-modules/Series/Wordcloud/WordcloudUtils.js +673 -484
  225. package/es-modules/Series/XRange/XRangePoint.js +1 -0
  226. package/es-modules/Stock/Indicators/ABands/ABandsIndicator.js +3 -6
  227. package/es-modules/Stock/Indicators/AO/AOIndicator.js +2 -3
  228. package/es-modules/Stock/Indicators/APO/APOIndicator.js +14 -20
  229. package/es-modules/Stock/Indicators/Aroon/AroonIndicator.js +3 -6
  230. package/es-modules/Stock/Indicators/AroonOscillator/AroonOscillatorIndicator.js +11 -13
  231. package/es-modules/Stock/Indicators/ArrayUtilities.js +47 -0
  232. package/es-modules/Stock/Indicators/BB/BBIndicator.js +27 -11
  233. package/es-modules/Stock/Indicators/Chaikin/ChaikinIndicator.js +6 -12
  234. package/es-modules/Stock/Indicators/DEMA/DEMAIndicator.js +1 -11
  235. package/es-modules/Stock/Indicators/DMI/DMIIndicator.js +19 -11
  236. package/es-modules/Stock/Indicators/DisparityIndex/DisparityIndexIndicator.js +17 -11
  237. package/es-modules/Stock/Indicators/EMA/EMAIndicator.js +1 -3
  238. package/es-modules/Stock/Indicators/KeltnerChannels/KeltnerChannelsIndicator.js +11 -9
  239. package/es-modules/Stock/Indicators/Klinger/KlingerIndicator.js +8 -16
  240. package/es-modules/Stock/Indicators/LinearRegression/LinearRegression.js +2 -2
  241. package/es-modules/Stock/Indicators/LinearRegressionAngle/LinearRegressionAngle.js +2 -2
  242. package/es-modules/Stock/Indicators/LinearRegressionIntercept/LinearRegressionIntercept.js +2 -2
  243. package/es-modules/Stock/Indicators/LinearRegressionSlopes/LinearRegressionSlopes.js +2 -2
  244. package/es-modules/Stock/Indicators/MACD/MACDIndicator.js +1 -2
  245. package/es-modules/{Mixins/MultipleLines.js → Stock/Indicators/MultipleLinesComposition.js} +136 -87
  246. package/es-modules/Stock/Indicators/NATR/NATRIndicator.js +1 -3
  247. package/es-modules/Stock/Indicators/PC/PCIndicator.js +14 -13
  248. package/es-modules/Stock/Indicators/PPO/PPOIndicator.js +1 -11
  249. package/es-modules/Stock/Indicators/SMA/SMAComposition.js +0 -26
  250. package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +32 -49
  251. package/es-modules/Stock/Indicators/SlowStochastic/SlowStochasticIndicator.js +0 -8
  252. package/es-modules/Stock/Indicators/Stochastic/StochasticIndicator.js +15 -8
  253. package/es-modules/Stock/Indicators/Supertrend/SupertrendIndicator.js +4 -6
  254. package/es-modules/Stock/Indicators/TEMA/TEMAIndicator.js +26 -11
  255. package/es-modules/Stock/Indicators/TRIX/TRIXIndicator.js +6 -12
  256. package/es-modules/Stock/Indicators/VBP/VBPIndicator.js +23 -7
  257. package/es-modules/Stock/Indicators/WilliamsR/WilliamsRIndicator.js +2 -3
  258. package/es-modules/Stock/StockToolsBindings.js +144 -42
  259. package/es-modules/Stock/StockToolsGui.js +409 -15
  260. package/es-modules/masters/highcharts-3d.src.js +1 -1
  261. package/es-modules/masters/highcharts-gantt.src.js +1 -1
  262. package/es-modules/masters/highcharts-more.src.js +1 -1
  263. package/es-modules/masters/highcharts.src.js +1 -1
  264. package/es-modules/masters/highmaps.src.js +1 -1
  265. package/es-modules/masters/highstock.src.js +1 -1
  266. package/es-modules/masters/indicators/acceleration-bands.src.js +1 -1
  267. package/es-modules/masters/indicators/accumulation-distribution.src.js +1 -1
  268. package/es-modules/masters/indicators/ao.src.js +1 -1
  269. package/es-modules/masters/indicators/apo.src.js +1 -1
  270. package/es-modules/masters/indicators/aroon-oscillator.src.js +1 -1
  271. package/es-modules/masters/indicators/aroon.src.js +1 -1
  272. package/es-modules/masters/indicators/atr.src.js +1 -1
  273. package/es-modules/masters/indicators/bollinger-bands.src.js +1 -1
  274. package/es-modules/masters/indicators/cci.src.js +1 -1
  275. package/es-modules/masters/indicators/chaikin.src.js +1 -1
  276. package/es-modules/masters/indicators/cmf.src.js +1 -1
  277. package/es-modules/masters/indicators/cmo.src.js +1 -1
  278. package/es-modules/masters/indicators/dema.src.js +1 -1
  279. package/es-modules/masters/indicators/disparity-index.src.js +1 -1
  280. package/es-modules/masters/indicators/dmi.src.js +1 -1
  281. package/es-modules/masters/indicators/dpo.src.js +1 -1
  282. package/es-modules/masters/indicators/ema.src.js +4 -10
  283. package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
  284. package/es-modules/masters/indicators/indicators-all.src.js +2 -2
  285. package/es-modules/masters/indicators/indicators.src.js +2 -1
  286. package/es-modules/masters/indicators/keltner-channels.src.js +1 -1
  287. package/es-modules/masters/indicators/klinger.src.js +1 -1
  288. package/es-modules/masters/indicators/macd.src.js +1 -1
  289. package/es-modules/masters/indicators/mfi.src.js +1 -1
  290. package/es-modules/masters/indicators/momentum.src.js +1 -1
  291. package/es-modules/masters/indicators/natr.src.js +1 -1
  292. package/es-modules/masters/indicators/obv.src.js +1 -1
  293. package/es-modules/masters/indicators/pivot-points.src.js +1 -1
  294. package/es-modules/masters/indicators/ppo.src.js +1 -1
  295. package/es-modules/masters/indicators/price-channel.src.js +1 -1
  296. package/es-modules/masters/indicators/price-envelopes.src.js +1 -1
  297. package/es-modules/masters/indicators/psar.src.js +1 -1
  298. package/es-modules/masters/indicators/regressions.src.js +1 -1
  299. package/es-modules/masters/indicators/roc.src.js +1 -1
  300. package/es-modules/masters/indicators/rsi.src.js +1 -1
  301. package/es-modules/masters/indicators/slow-stochastic.src.js +1 -1
  302. package/es-modules/masters/indicators/stochastic.src.js +1 -1
  303. package/es-modules/masters/indicators/supertrend.src.js +1 -1
  304. package/es-modules/masters/indicators/tema.src.js +1 -1
  305. package/es-modules/masters/indicators/trendline.src.js +1 -1
  306. package/es-modules/masters/indicators/trix.src.js +1 -1
  307. package/es-modules/masters/indicators/volume-by-price.src.js +1 -1
  308. package/es-modules/masters/indicators/vwap.src.js +1 -1
  309. package/es-modules/masters/indicators/williams-r.src.js +1 -1
  310. package/es-modules/masters/indicators/wma.src.js +1 -1
  311. package/es-modules/masters/indicators/zigzag.src.js +1 -1
  312. package/es-modules/masters/modules/accessibility.src.js +16 -2
  313. package/es-modules/masters/modules/annotations-advanced.src.js +3 -1
  314. package/es-modules/masters/modules/annotations.src.js +1 -1
  315. package/es-modules/masters/modules/arrow-symbols.src.js +1 -1
  316. package/es-modules/masters/modules/boost-canvas.src.js +1 -1
  317. package/es-modules/masters/modules/boost.src.js +1 -1
  318. package/es-modules/masters/modules/broken-axis.src.js +1 -1
  319. package/es-modules/masters/modules/bullet.src.js +1 -1
  320. package/es-modules/masters/modules/coloraxis.src.js +1 -1
  321. package/es-modules/masters/modules/current-date-indicator.src.js +1 -1
  322. package/es-modules/masters/modules/cylinder.src.js +1 -1
  323. package/es-modules/masters/modules/data.src.js +6 -3
  324. package/es-modules/masters/modules/datagrouping.src.js +1 -1
  325. package/es-modules/masters/modules/debugger.src.js +1 -1
  326. package/es-modules/masters/modules/dependency-wheel.src.js +1 -1
  327. package/es-modules/masters/modules/dotplot.src.js +1 -1
  328. package/es-modules/masters/modules/drag-panes.src.js +1 -1
  329. package/es-modules/masters/modules/draggable-points.src.js +1 -1
  330. package/es-modules/masters/modules/drilldown.src.js +1 -1
  331. package/es-modules/masters/modules/dumbbell.src.js +1 -1
  332. package/es-modules/masters/modules/export-data.src.js +1 -1
  333. package/es-modules/masters/modules/exporting.src.js +1 -1
  334. package/es-modules/masters/modules/full-screen.src.js +1 -1
  335. package/es-modules/masters/modules/funnel.src.js +1 -1
  336. package/es-modules/masters/modules/funnel3d.src.js +1 -1
  337. package/es-modules/masters/modules/gantt.src.js +1 -1
  338. package/es-modules/masters/modules/grid-axis.src.js +1 -1
  339. package/es-modules/masters/modules/heatmap.src.js +1 -2
  340. package/es-modules/masters/modules/heikinashi.src.js +1 -1
  341. package/es-modules/masters/modules/histogram-bellcurve.src.js +1 -1
  342. package/es-modules/masters/modules/hollowcandlestick.src.js +1 -1
  343. package/es-modules/masters/modules/item-series.src.js +1 -1
  344. package/es-modules/masters/modules/lollipop.src.js +1 -1
  345. package/es-modules/masters/modules/map.src.js +1 -3
  346. package/es-modules/masters/modules/marker-clusters.src.js +1 -1
  347. package/es-modules/masters/modules/networkgraph.src.js +1 -1
  348. package/es-modules/masters/modules/no-data-to-display.src.js +1 -1
  349. package/es-modules/masters/modules/offline-exporting.src.js +1 -1
  350. package/es-modules/masters/modules/oldie-polyfills.src.js +1 -1
  351. package/es-modules/masters/modules/oldie.src.js +1 -1
  352. package/es-modules/masters/modules/organization.src.js +1 -1
  353. package/es-modules/masters/modules/overlapping-datalabels.src.js +1 -1
  354. package/es-modules/masters/modules/parallel-coordinates.src.js +1 -1
  355. package/es-modules/masters/modules/pareto.src.js +1 -1
  356. package/es-modules/masters/modules/pathfinder.src.js +1 -1
  357. package/es-modules/masters/modules/pattern-fill.src.js +1 -1
  358. package/es-modules/masters/modules/price-indicator.src.js +1 -1
  359. package/es-modules/masters/modules/pyramid3d.src.js +1 -1
  360. package/es-modules/masters/modules/sankey.src.js +1 -1
  361. package/es-modules/masters/modules/series-label.src.js +1 -1
  362. package/es-modules/masters/modules/solid-gauge.src.js +1 -1
  363. package/es-modules/masters/modules/sonification.src.js +33 -2
  364. package/es-modules/masters/modules/static-scale.src.js +1 -1
  365. package/es-modules/masters/modules/stock-tools.src.js +1 -1
  366. package/es-modules/masters/modules/stock.src.js +4 -1
  367. package/es-modules/masters/modules/streamgraph.src.js +1 -1
  368. package/es-modules/masters/modules/sunburst.src.js +1 -1
  369. package/es-modules/masters/modules/tilemap.src.js +1 -1
  370. package/es-modules/masters/modules/timeline.src.js +1 -1
  371. package/es-modules/masters/modules/treegrid.src.js +1 -1
  372. package/es-modules/masters/modules/treemap.src.js +1 -1
  373. package/es-modules/masters/modules/variable-pie.src.js +1 -1
  374. package/es-modules/masters/modules/variwide.src.js +1 -1
  375. package/es-modules/masters/modules/vector.src.js +1 -1
  376. package/es-modules/masters/modules/venn.src.js +1 -1
  377. package/es-modules/masters/modules/windbarb.src.js +1 -1
  378. package/es-modules/masters/modules/wordcloud.src.js +1 -1
  379. package/es-modules/masters/modules/xrange.src.js +1 -1
  380. package/es-modules/masters/themes/avocado.src.js +1 -1
  381. package/es-modules/masters/themes/dark-blue.src.js +1 -1
  382. package/es-modules/masters/themes/dark-green.src.js +1 -1
  383. package/es-modules/masters/themes/dark-unica.src.js +1 -1
  384. package/es-modules/masters/themes/gray.src.js +1 -1
  385. package/es-modules/masters/themes/grid-light.src.js +1 -1
  386. package/es-modules/masters/themes/grid.src.js +1 -1
  387. package/es-modules/masters/themes/high-contrast-dark.src.js +1 -1
  388. package/es-modules/masters/themes/high-contrast-light.src.js +1 -1
  389. package/es-modules/masters/themes/sand-signika.src.js +1 -1
  390. package/es-modules/masters/themes/skies.src.js +1 -1
  391. package/es-modules/masters/themes/sunset.src.js +1 -1
  392. package/highcharts-3d.js +1 -1
  393. package/highcharts-3d.src.js +1 -1
  394. package/highcharts-gantt.js +799 -801
  395. package/highcharts-gantt.js.map +1 -1
  396. package/highcharts-gantt.src.js +793 -755
  397. package/highcharts-more.js +194 -193
  398. package/highcharts-more.js.map +1 -1
  399. package/highcharts-more.src.js +208 -120
  400. package/highcharts.d.ts +9814 -4231
  401. package/highcharts.js +585 -587
  402. package/highcharts.js.map +1 -1
  403. package/highcharts.src.d.ts +9814 -4231
  404. package/highcharts.src.js +626 -603
  405. package/highmaps.js +728 -707
  406. package/highmaps.js.map +1 -1
  407. package/highmaps.src.js +2824 -1613
  408. package/highstock.js +788 -782
  409. package/highstock.js.map +1 -1
  410. package/highstock.src.js +1913 -1284
  411. package/indicators/acceleration-bands.js +10 -9
  412. package/indicators/acceleration-bands.js.map +1 -1
  413. package/indicators/acceleration-bands.src.js +156 -112
  414. package/indicators/accumulation-distribution.js +1 -1
  415. package/indicators/accumulation-distribution.src.js +1 -1
  416. package/indicators/ao.js +6 -6
  417. package/indicators/ao.js.map +1 -1
  418. package/indicators/ao.src.js +4 -4
  419. package/indicators/apo.js +5 -6
  420. package/indicators/apo.js.map +1 -1
  421. package/indicators/apo.src.js +16 -84
  422. package/indicators/aroon-oscillator.js +9 -9
  423. package/indicators/aroon-oscillator.js.map +1 -1
  424. package/indicators/aroon-oscillator.src.js +160 -177
  425. package/indicators/aroon.js +9 -9
  426. package/indicators/aroon.js.map +1 -1
  427. package/indicators/aroon.src.js +156 -112
  428. package/indicators/atr.js +1 -1
  429. package/indicators/atr.src.js +1 -1
  430. package/indicators/bollinger-bands.js +10 -9
  431. package/indicators/bollinger-bands.js.map +1 -1
  432. package/indicators/bollinger-bands.src.js +180 -117
  433. package/indicators/cci.js +1 -1
  434. package/indicators/cci.src.js +1 -1
  435. package/indicators/chaikin.js +8 -9
  436. package/indicators/chaikin.js.map +1 -1
  437. package/indicators/chaikin.src.js +8 -76
  438. package/indicators/cmf.js +1 -1
  439. package/indicators/cmf.src.js +1 -1
  440. package/indicators/cmo.js +1 -1
  441. package/indicators/cmo.src.js +1 -1
  442. package/indicators/dema.js +5 -6
  443. package/indicators/dema.js.map +1 -1
  444. package/indicators/dema.src.js +3 -75
  445. package/indicators/disparity-index.js +6 -7
  446. package/indicators/disparity-index.js.map +1 -1
  447. package/indicators/disparity-index.src.js +19 -74
  448. package/indicators/dmi.js +11 -11
  449. package/indicators/dmi.js.map +1 -1
  450. package/indicators/dmi.src.js +173 -116
  451. package/indicators/dpo.js +1 -1
  452. package/indicators/dpo.src.js +1 -1
  453. package/indicators/ema.js +1 -13
  454. package/indicators/ema.js.map +1 -1
  455. package/indicators/ema.src.js +7 -188
  456. package/indicators/ichimoku-kinko-hyo.js +1 -1
  457. package/indicators/ichimoku-kinko-hyo.src.js +1 -1
  458. package/indicators/indicators-all.js +197 -203
  459. package/indicators/indicators-all.js.map +1 -1
  460. package/indicators/indicators-all.src.js +677 -743
  461. package/indicators/indicators.js +12 -12
  462. package/indicators/indicators.js.map +1 -1
  463. package/indicators/indicators.src.js +213 -143
  464. package/indicators/keltner-channels.js +10 -10
  465. package/indicators/keltner-channels.js.map +1 -1
  466. package/indicators/keltner-channels.src.js +164 -118
  467. package/indicators/klinger.js +12 -13
  468. package/indicators/klinger.js.map +1 -1
  469. package/indicators/klinger.src.js +161 -184
  470. package/indicators/macd.js +2 -2
  471. package/indicators/macd.js.map +1 -1
  472. package/indicators/macd.src.js +2 -3
  473. package/indicators/mfi.js +1 -1
  474. package/indicators/mfi.src.js +1 -1
  475. package/indicators/momentum.js +1 -1
  476. package/indicators/momentum.src.js +1 -1
  477. package/indicators/natr.js +3 -3
  478. package/indicators/natr.js.map +1 -1
  479. package/indicators/natr.src.js +2 -4
  480. package/indicators/obv.js +1 -1
  481. package/indicators/obv.src.js +1 -1
  482. package/indicators/pivot-points.js +1 -1
  483. package/indicators/pivot-points.src.js +1 -1
  484. package/indicators/ppo.js +5 -6
  485. package/indicators/ppo.js.map +1 -1
  486. package/indicators/ppo.src.js +3 -75
  487. package/indicators/price-channel.js +9 -9
  488. package/indicators/price-channel.js.map +1 -1
  489. package/indicators/price-channel.src.js +207 -168
  490. package/indicators/price-envelopes.js +1 -1
  491. package/indicators/price-envelopes.src.js +1 -1
  492. package/indicators/psar.js +1 -1
  493. package/indicators/psar.src.js +1 -1
  494. package/indicators/regressions.js +1 -1
  495. package/indicators/regressions.src.js +9 -9
  496. package/indicators/roc.js +1 -1
  497. package/indicators/roc.src.js +1 -1
  498. package/indicators/rsi.js +1 -1
  499. package/indicators/rsi.src.js +1 -1
  500. package/indicators/slow-stochastic.js +5 -6
  501. package/indicators/slow-stochastic.js.map +1 -1
  502. package/indicators/slow-stochastic.src.js +2 -72
  503. package/indicators/stochastic.js +10 -10
  504. package/indicators/stochastic.js.map +1 -1
  505. package/indicators/stochastic.src.js +209 -164
  506. package/indicators/supertrend.js +10 -10
  507. package/indicators/supertrend.js.map +1 -1
  508. package/indicators/supertrend.src.js +6 -7
  509. package/indicators/tema.js +6 -7
  510. package/indicators/tema.js.map +1 -1
  511. package/indicators/tema.src.js +28 -75
  512. package/indicators/trendline.js +1 -1
  513. package/indicators/trendline.src.js +1 -1
  514. package/indicators/trix.js +4 -5
  515. package/indicators/trix.js.map +1 -1
  516. package/indicators/trix.src.js +8 -76
  517. package/indicators/volume-by-price.js +16 -16
  518. package/indicators/volume-by-price.js.map +1 -1
  519. package/indicators/volume-by-price.src.js +24 -7
  520. package/indicators/vwap.js +1 -1
  521. package/indicators/vwap.src.js +1 -1
  522. package/indicators/williams-r.js +5 -6
  523. package/indicators/williams-r.js.map +1 -1
  524. package/indicators/williams-r.src.js +41 -51
  525. package/indicators/wma.js +1 -1
  526. package/indicators/wma.src.js +1 -1
  527. package/indicators/zigzag.js +1 -1
  528. package/indicators/zigzag.src.js +1 -1
  529. package/modules/accessibility.d.ts +5 -0
  530. package/modules/accessibility.js +237 -216
  531. package/modules/accessibility.js.map +1 -1
  532. package/modules/accessibility.src.d.ts +5 -0
  533. package/modules/accessibility.src.js +7400 -6078
  534. package/modules/annotations-advanced.d.ts +30 -0
  535. package/modules/annotations-advanced.js +192 -165
  536. package/modules/annotations-advanced.js.map +1 -1
  537. package/modules/annotations-advanced.src.d.ts +30 -0
  538. package/modules/annotations-advanced.src.js +1604 -332
  539. package/modules/annotations.js +121 -106
  540. package/modules/annotations.js.map +1 -1
  541. package/modules/annotations.src.js +981 -238
  542. package/modules/arrow-symbols.js +1 -1
  543. package/modules/arrow-symbols.src.js +1 -1
  544. package/modules/boost-canvas.js +15 -15
  545. package/modules/boost-canvas.js.map +1 -1
  546. package/modules/boost-canvas.src.js +3 -3
  547. package/modules/boost.js +79 -79
  548. package/modules/boost.js.map +1 -1
  549. package/modules/boost.src.js +10 -9
  550. package/modules/broken-axis.js +1 -1
  551. package/modules/broken-axis.src.js +1 -1
  552. package/modules/bullet.js +1 -1
  553. package/modules/bullet.src.js +1 -1
  554. package/modules/coloraxis.js +24 -24
  555. package/modules/coloraxis.js.map +1 -1
  556. package/modules/coloraxis.src.js +69 -98
  557. package/modules/current-date-indicator.js +4 -4
  558. package/modules/current-date-indicator.js.map +1 -1
  559. package/modules/current-date-indicator.src.js +4 -4
  560. package/modules/cylinder.js +1 -1
  561. package/modules/cylinder.src.js +1 -1
  562. package/modules/data.js +32 -32
  563. package/modules/data.js.map +1 -1
  564. package/modules/data.src.js +85 -88
  565. package/modules/datagrouping.js +20 -20
  566. package/modules/datagrouping.js.map +1 -1
  567. package/modules/datagrouping.src.js +35 -19
  568. package/modules/debugger.js +3 -3
  569. package/modules/debugger.js.map +1 -1
  570. package/modules/debugger.src.js +3 -3
  571. package/modules/dependency-wheel.js +11 -11
  572. package/modules/dependency-wheel.js.map +1 -1
  573. package/modules/dependency-wheel.src.js +4 -7
  574. package/modules/dotplot.js +1 -1
  575. package/modules/dotplot.src.js +1 -1
  576. package/modules/drag-panes.js +8 -8
  577. package/modules/drag-panes.js.map +1 -1
  578. package/modules/drag-panes.src.js +3 -3
  579. package/modules/draggable-points.js +1 -1
  580. package/modules/draggable-points.src.js +1 -1
  581. package/modules/drilldown.js +24 -24
  582. package/modules/drilldown.js.map +1 -1
  583. package/modules/drilldown.src.js +4 -4
  584. package/modules/dumbbell.js +17 -17
  585. package/modules/dumbbell.js.map +1 -1
  586. package/modules/dumbbell.src.js +4 -4
  587. package/modules/export-data.js +1 -1
  588. package/modules/export-data.js.map +1 -1
  589. package/modules/export-data.src.js +3 -3
  590. package/modules/exporting.js +39 -38
  591. package/modules/exporting.js.map +1 -1
  592. package/modules/exporting.src.js +102 -72
  593. package/modules/full-screen.js +1 -1
  594. package/modules/full-screen.src.js +1 -1
  595. package/modules/funnel.js +12 -12
  596. package/modules/funnel.js.map +1 -1
  597. package/modules/funnel.src.js +9 -6
  598. package/modules/funnel3d.js +1 -1
  599. package/modules/funnel3d.src.js +1 -1
  600. package/modules/gantt.js +217 -218
  601. package/modules/gantt.js.map +1 -1
  602. package/modules/gantt.src.js +167 -152
  603. package/modules/grid-axis.js +1 -1
  604. package/modules/grid-axis.src.js +1 -1
  605. package/modules/heatmap.js +39 -39
  606. package/modules/heatmap.js.map +1 -1
  607. package/modules/heatmap.src.js +177 -162
  608. package/modules/heikinashi.js +1 -1
  609. package/modules/heikinashi.src.js +4 -4
  610. package/modules/histogram-bellcurve.js +13 -13
  611. package/modules/histogram-bellcurve.js.map +1 -1
  612. package/modules/histogram-bellcurve.src.js +91 -86
  613. package/modules/hollowcandlestick.js +9 -9
  614. package/modules/hollowcandlestick.js.map +1 -1
  615. package/modules/hollowcandlestick.src.js +37 -37
  616. package/modules/item-series.js +1 -1
  617. package/modules/item-series.src.js +1 -1
  618. package/modules/lollipop.js +1 -1
  619. package/modules/lollipop.src.js +1 -1
  620. package/modules/map.d.ts +136 -14
  621. package/modules/map.js +144 -122
  622. package/modules/map.js.map +1 -1
  623. package/modules/map.src.d.ts +136 -14
  624. package/modules/map.src.js +2227 -1039
  625. package/modules/marker-clusters.js +36 -36
  626. package/modules/marker-clusters.js.map +1 -1
  627. package/modules/marker-clusters.src.js +173 -142
  628. package/modules/networkgraph.d.ts +12 -1
  629. package/modules/networkgraph.js +49 -49
  630. package/modules/networkgraph.js.map +1 -1
  631. package/modules/networkgraph.src.d.ts +12 -1
  632. package/modules/networkgraph.src.js +91 -43
  633. package/modules/no-data-to-display.js +5 -5
  634. package/modules/no-data-to-display.js.map +1 -1
  635. package/modules/no-data-to-display.src.js +3 -3
  636. package/modules/offline-exporting.js +18 -17
  637. package/modules/offline-exporting.js.map +1 -1
  638. package/modules/offline-exporting.src.js +14 -14
  639. package/modules/oldie-polyfills.js +1 -1
  640. package/modules/oldie-polyfills.src.js +1 -1
  641. package/modules/oldie.js +26 -26
  642. package/modules/oldie.js.map +1 -1
  643. package/modules/oldie.src.js +4 -4
  644. package/modules/organization.js +13 -13
  645. package/modules/organization.js.map +1 -1
  646. package/modules/organization.src.js +4 -4
  647. package/modules/overlapping-datalabels.js +1 -1
  648. package/modules/overlapping-datalabels.src.js +1 -1
  649. package/modules/parallel-coordinates.js +1 -1
  650. package/modules/parallel-coordinates.src.js +1 -1
  651. package/modules/pareto.js +7 -7
  652. package/modules/pareto.js.map +1 -1
  653. package/modules/pareto.src.js +89 -78
  654. package/modules/pathfinder.js +1 -1
  655. package/modules/pathfinder.src.js +1 -1
  656. package/modules/pattern-fill.js +1 -1
  657. package/modules/pattern-fill.src.js +1 -1
  658. package/modules/price-indicator.js +1 -1
  659. package/modules/price-indicator.src.js +1 -1
  660. package/modules/pyramid3d.js +1 -1
  661. package/modules/pyramid3d.src.js +1 -1
  662. package/modules/sankey.d.ts +12 -1
  663. package/modules/sankey.js +29 -29
  664. package/modules/sankey.js.map +1 -1
  665. package/modules/sankey.src.d.ts +12 -1
  666. package/modules/sankey.src.js +300 -176
  667. package/modules/series-label.js +1 -1
  668. package/modules/series-label.src.js +1 -1
  669. package/modules/solid-gauge.js +1 -1
  670. package/modules/solid-gauge.src.js +1 -1
  671. package/modules/sonification.js +59 -55
  672. package/modules/sonification.js.map +1 -1
  673. package/modules/sonification.src.js +3034 -2553
  674. package/modules/static-scale.js +1 -1
  675. package/modules/static-scale.src.js +1 -1
  676. package/modules/stock-tools.js +178 -163
  677. package/modules/stock-tools.js.map +1 -1
  678. package/modules/stock-tools.src.js +1028 -144
  679. package/modules/stock.d.ts +39 -6
  680. package/modules/stock.js +204 -196
  681. package/modules/stock.js.map +1 -1
  682. package/modules/stock.src.d.ts +39 -6
  683. package/modules/stock.src.js +1667 -1061
  684. package/modules/streamgraph.js +1 -1
  685. package/modules/streamgraph.src.js +1 -1
  686. package/modules/sunburst.js +61 -60
  687. package/modules/sunburst.js.map +1 -1
  688. package/modules/sunburst.src.js +329 -266
  689. package/modules/tilemap.js +17 -17
  690. package/modules/tilemap.js.map +1 -1
  691. package/modules/tilemap.src.js +3 -4
  692. package/modules/timeline.js +18 -18
  693. package/modules/timeline.js.map +1 -1
  694. package/modules/timeline.src.js +5 -5
  695. package/modules/treegrid.js +56 -57
  696. package/modules/treegrid.js.map +1 -1
  697. package/modules/treegrid.src.js +126 -120
  698. package/modules/treemap.js +41 -41
  699. package/modules/treemap.js.map +1 -1
  700. package/modules/treemap.src.js +319 -254
  701. package/modules/variable-pie.js +1 -1
  702. package/modules/variable-pie.src.js +1 -1
  703. package/modules/variwide.js +1 -1
  704. package/modules/variwide.src.js +1 -1
  705. package/modules/vector.js +1 -1
  706. package/modules/vector.src.js +1 -1
  707. package/modules/venn.js +31 -31
  708. package/modules/venn.js.map +1 -1
  709. package/modules/venn.src.js +731 -721
  710. package/modules/windbarb.js +15 -15
  711. package/modules/windbarb.js.map +1 -1
  712. package/modules/windbarb.src.js +90 -62
  713. package/modules/wordcloud.js +23 -24
  714. package/modules/wordcloud.js.map +1 -1
  715. package/modules/wordcloud.src.js +897 -949
  716. package/modules/xrange.js +2 -2
  717. package/modules/xrange.js.map +1 -1
  718. package/modules/xrange.src.js +2 -1
  719. package/package.json +1 -1
  720. package/themes/avocado.js +1 -1
  721. package/themes/avocado.src.js +1 -1
  722. package/themes/dark-blue.js +1 -1
  723. package/themes/dark-blue.src.js +1 -1
  724. package/themes/dark-green.js +1 -1
  725. package/themes/dark-green.src.js +1 -1
  726. package/themes/dark-unica.js +1 -1
  727. package/themes/dark-unica.src.js +1 -1
  728. package/themes/gray.js +1 -1
  729. package/themes/gray.src.js +1 -1
  730. package/themes/grid-light.js +1 -1
  731. package/themes/grid-light.src.js +1 -1
  732. package/themes/grid.js +1 -1
  733. package/themes/grid.src.js +1 -1
  734. package/themes/high-contrast-dark.js +1 -1
  735. package/themes/high-contrast-dark.src.js +1 -1
  736. package/themes/high-contrast-light.js +1 -1
  737. package/themes/high-contrast-light.src.js +1 -1
  738. package/themes/sand-signika.js +1 -1
  739. package/themes/sand-signika.src.js +1 -1
  740. package/themes/skies.js +1 -1
  741. package/themes/skies.src.js +1 -1
  742. package/themes/sunset.js +1 -1
  743. package/themes/sunset.src.js +1 -1
  744. package/es-modules/Core/Axis/MapAxis.js +0 -157
  745. package/es-modules/Core/Color/Palette.js +0 -82
  746. package/es-modules/Extensions/Sonification/InstrumentDefinitions.js +0 -32
  747. package/es-modules/Mixins/ColorMapSeries.js +0 -82
  748. package/es-modules/Mixins/ColorSeries.js +0 -77
  749. package/es-modules/Mixins/DerivedSeries.js +0 -118
  750. package/es-modules/Mixins/DrawPoint.js +0 -81
  751. package/es-modules/Mixins/IndicatorRequired.js +0 -56
  752. package/es-modules/Mixins/Navigation.js +0 -54
  753. package/es-modules/Mixins/NelderMead.js +0 -132
  754. package/es-modules/Mixins/Polygon.js +0 -259
  755. package/es-modules/Mixins/ReduceArray.js +0 -54
@@ -10,9 +10,504 @@
10
10
  *
11
11
  * */
12
12
  'use strict';
13
+ /* *
14
+ *
15
+ * Imports
16
+ *
17
+ * */
13
18
  import H from '../../Core/Globals.js';
19
+ var win = H.win;
20
+ import Sonification from './Sonification.js';
21
+ import SU from './SonificationUtilities.js';
14
22
  import U from '../../Core/Utilities.js';
15
23
  var error = U.error, merge = U.merge, pick = U.pick, uniqueKey = U.uniqueKey;
24
+ /* eslint-disable no-invalid-this, valid-jsdoc */
25
+ /* *
26
+ *
27
+ * Class
28
+ *
29
+ * */
30
+ /**
31
+ * The Instrument class. Instrument objects represent an instrument capable of
32
+ * playing a certain pitch for a specified duration.
33
+ *
34
+ * @sample highcharts/sonification/instrument/
35
+ * Using Instruments directly
36
+ * @sample highcharts/sonification/instrument-advanced/
37
+ * Using callbacks for instrument parameters
38
+ *
39
+ * @requires module:modules/sonification
40
+ *
41
+ * @class
42
+ * @name Highcharts.Instrument
43
+ *
44
+ * @param {Highcharts.InstrumentOptionsObject} options
45
+ * Options for the instrument instance.
46
+ */
47
+ var Instrument = /** @class */ (function () {
48
+ /* *
49
+ *
50
+ * Constructor
51
+ *
52
+ * */
53
+ function Instrument(options) {
54
+ this.id = void 0;
55
+ this.masterVolume = void 0;
56
+ this.options = void 0;
57
+ this.playCallbackTimers = void 0;
58
+ this.init(options);
59
+ }
60
+ /* *
61
+ *
62
+ * Functions
63
+ *
64
+ * */
65
+ Instrument.prototype.init = function (options) {
66
+ if (!this.initAudioContext()) {
67
+ error(29);
68
+ return;
69
+ }
70
+ this.options = merge(Instrument.defaultOptions, options);
71
+ this.id = this.options.id = options && options.id || uniqueKey();
72
+ this.masterVolume = this.options.masterVolume || 0;
73
+ // Init the audio nodes
74
+ var ctx = Instrument.audioContext,
75
+ // Note: Destination node can be overridden by setting
76
+ // Highcharts.sonification.Instrument.prototype.destinationNode.
77
+ // This allows for inserting an additional chain of nodes after
78
+ // the default processing.
79
+ destination = this.destinationNode || ctx.destination;
80
+ this.gainNode = ctx.createGain();
81
+ this.setGain(0);
82
+ this.panNode = ctx.createStereoPanner && ctx.createStereoPanner();
83
+ if (this.panNode) {
84
+ this.setPan(0);
85
+ this.gainNode.connect(this.panNode);
86
+ this.panNode.connect(destination);
87
+ }
88
+ else {
89
+ this.gainNode.connect(destination);
90
+ }
91
+ // Oscillator initialization
92
+ if (this.options.type === 'oscillator') {
93
+ this.initOscillator(this.options.oscillator);
94
+ }
95
+ // Init timer list
96
+ this.playCallbackTimers = [];
97
+ };
98
+ /**
99
+ * Return a copy of an instrument. Only one instrument instance can play at
100
+ * a time, so use this to get a new copy of the instrument that can play
101
+ * alongside it. The new instrument copy will receive a new ID unless one is
102
+ * supplied in options.
103
+ *
104
+ * @function Highcharts.Instrument#copy
105
+ *
106
+ * @param {Highcharts.InstrumentOptionsObject} [options]
107
+ * Options to merge in for the copy.
108
+ *
109
+ * @return {Highcharts.Instrument}
110
+ * A new Instrument instance with the same options.
111
+ */
112
+ Instrument.prototype.copy = function (options) {
113
+ return new Instrument(merge(this.options, { id: null }, options));
114
+ };
115
+ /**
116
+ * Init the audio context, if we do not have one.
117
+ * @private
118
+ * @return {boolean} True if successful, false if not.
119
+ */
120
+ Instrument.prototype.initAudioContext = function () {
121
+ var Context = win.AudioContext || win.webkitAudioContext, hasOldContext = !!Instrument.audioContext;
122
+ if (Context) {
123
+ Instrument.audioContext = Instrument.audioContext || new Context();
124
+ if (!hasOldContext &&
125
+ Instrument.audioContext &&
126
+ Instrument.audioContext.state === 'running') {
127
+ Instrument.audioContext.suspend(); // Pause until we need it
128
+ }
129
+ return !!(Instrument.audioContext &&
130
+ (Instrument.audioContext.createOscillator) &&
131
+ (Instrument.audioContext.createGain));
132
+ }
133
+ return false;
134
+ };
135
+ /**
136
+ * Init an oscillator instrument.
137
+ * @private
138
+ * @param {Highcharts.OscillatorOptionsObject} oscillatorOptions
139
+ * The oscillator options passed to Highcharts.Instrument#init.
140
+ * @return {void}
141
+ */
142
+ Instrument.prototype.initOscillator = function (options) {
143
+ var ctx = Instrument.audioContext;
144
+ this.oscillator = ctx.createOscillator();
145
+ this.oscillator.type = options.waveformShape;
146
+ this.oscillator.connect(this.gainNode);
147
+ this.oscillatorStarted = false;
148
+ };
149
+ /**
150
+ * Set pan position.
151
+ * @private
152
+ * @param {number} panValue
153
+ * The pan position to set for the instrument.
154
+ * @return {void}
155
+ */
156
+ Instrument.prototype.setPan = function (panValue) {
157
+ if (this.panNode) {
158
+ this.panNode.pan.setValueAtTime(panValue, Instrument.audioContext.currentTime);
159
+ }
160
+ };
161
+ /**
162
+ * Set gain level. A maximum of 1.2 is allowed before we emit a warning. The
163
+ * actual volume is not set above this level regardless of input. This
164
+ * function also handles the Instrument's master volume.
165
+ * @private
166
+ * @param {number} gainValue
167
+ * The gain level to set for the instrument.
168
+ * @param {number} [rampTime=0]
169
+ * Gradually change the gain level, time given in milliseconds.
170
+ * @return {void}
171
+ */
172
+ Instrument.prototype.setGain = function (gainValue, rampTime) {
173
+ var gainNode = this.gainNode;
174
+ var newVal = gainValue * this.masterVolume;
175
+ if (gainNode) {
176
+ if (newVal > 1.2) {
177
+ console.warn(// eslint-disable-line
178
+ 'Highcharts sonification warning: ' +
179
+ 'Volume of instrument set too high.');
180
+ newVal = 1.2;
181
+ }
182
+ if (rampTime) {
183
+ gainNode.gain.setValueAtTime(gainNode.gain.value, Instrument.audioContext.currentTime);
184
+ gainNode.gain.linearRampToValueAtTime(newVal, Instrument.audioContext.currentTime + rampTime / 1000);
185
+ }
186
+ else {
187
+ gainNode.gain.setValueAtTime(newVal, Instrument.audioContext.currentTime);
188
+ }
189
+ }
190
+ };
191
+ /**
192
+ * Cancel ongoing gain ramps.
193
+ * @private
194
+ * @return {void}
195
+ */
196
+ Instrument.prototype.cancelGainRamp = function () {
197
+ if (this.gainNode) {
198
+ this.gainNode.gain.cancelScheduledValues(0);
199
+ }
200
+ };
201
+ /**
202
+ * Set the master volume multiplier of the instrument after creation.
203
+ * @param {number} volumeMultiplier
204
+ * The gain level to set for the instrument.
205
+ * @return {void}
206
+ */
207
+ Instrument.prototype.setMasterVolume = function (volumeMultiplier) {
208
+ this.masterVolume = volumeMultiplier || 0;
209
+ };
210
+ /**
211
+ * Get the closest valid frequency for this instrument.
212
+ * @private
213
+ * @param {number} frequency - The target frequency.
214
+ * @param {number} [min] - Minimum frequency to return.
215
+ * @param {number} [max] - Maximum frequency to return.
216
+ * @return {number} The closest valid frequency to the input frequency.
217
+ */
218
+ Instrument.prototype.getValidFrequency = function (frequency, min, max) {
219
+ var validFrequencies = this.options.allowedFrequencies, maximum = pick(max, Infinity), minimum = pick(min, -Infinity);
220
+ return !validFrequencies || !validFrequencies.length ?
221
+ // No valid frequencies for this instrument, return the target
222
+ frequency :
223
+ // Use the valid frequencies and return the closest match
224
+ validFrequencies.reduce(function (acc, cur) {
225
+ // Find the closest allowed value
226
+ return Math.abs(cur - frequency) < Math.abs(acc - frequency) &&
227
+ cur < maximum && cur > minimum ?
228
+ cur : acc;
229
+ }, Infinity);
230
+ };
231
+ /**
232
+ * Clear existing play callback timers.
233
+ * @private
234
+ * @return {void}
235
+ */
236
+ Instrument.prototype.clearPlayCallbackTimers = function () {
237
+ this.playCallbackTimers.forEach(function (timer) {
238
+ clearInterval(timer);
239
+ });
240
+ this.playCallbackTimers = [];
241
+ };
242
+ /**
243
+ * Set the current frequency being played by the instrument. The closest
244
+ * valid frequency between the frequency limits is used.
245
+ * @param {number} frequency
246
+ * The frequency to set.
247
+ * @param {Highcharts.Dictionary<number>} [frequencyLimits]
248
+ * Object with maxFrequency and minFrequency
249
+ * @return {void}
250
+ */
251
+ Instrument.prototype.setFrequency = function (frequency, frequencyLimits) {
252
+ var limits = frequencyLimits || {}, validFrequency = this.getValidFrequency(frequency, limits.min, limits.max);
253
+ if (this.options.type === 'oscillator') {
254
+ this.oscillatorPlay(validFrequency);
255
+ }
256
+ };
257
+ /**
258
+ * Play oscillator instrument.
259
+ * @private
260
+ * @param {number} frequency - The frequency to play.
261
+ */
262
+ Instrument.prototype.oscillatorPlay = function (frequency) {
263
+ if (!this.oscillatorStarted) {
264
+ this.oscillator.start();
265
+ this.oscillatorStarted = true;
266
+ }
267
+ this.oscillator.frequency.setValueAtTime(frequency, Instrument.audioContext.currentTime);
268
+ };
269
+ /**
270
+ * Prepare instrument before playing. Resumes the audio context and starts
271
+ * the oscillator.
272
+ * @private
273
+ */
274
+ Instrument.prototype.preparePlay = function () {
275
+ this.setGain(0.001);
276
+ if (Instrument.audioContext.state === 'suspended') {
277
+ Instrument.audioContext.resume();
278
+ }
279
+ if (this.oscillator && !this.oscillatorStarted) {
280
+ this.oscillator.start();
281
+ this.oscillatorStarted = true;
282
+ }
283
+ };
284
+ /**
285
+ * Play the instrument according to options.
286
+ *
287
+ * @sample highcharts/sonification/instrument/
288
+ * Using Instruments directly
289
+ * @sample highcharts/sonification/instrument-advanced/
290
+ * Using callbacks for instrument parameters
291
+ *
292
+ * @function Highcharts.Instrument#play
293
+ *
294
+ * @param {Highcharts.InstrumentPlayOptionsObject} options
295
+ * Options for the playback of the instrument.
296
+ *
297
+ * @return {void}
298
+ */
299
+ Instrument.prototype.play = function (options) {
300
+ var instrument = this, duration = options.duration || 0,
301
+ // Set a value, or if it is a function, set it continously as a
302
+ // timer. Pass in the value/function to set, the setter function,
303
+ // and any additional data to pass through to the setter function.
304
+ setOrStartTimer = function (value, setter, setterData) {
305
+ var target = options.duration, callbackInterval = instrument.options.playCallbackInterval;
306
+ var currentDurationIx = 0;
307
+ if (typeof value === 'function') {
308
+ var timer_1 = setInterval(function () {
309
+ currentDurationIx++;
310
+ var curTime = (currentDurationIx * callbackInterval / target);
311
+ if (curTime >= 1) {
312
+ instrument[setter](value(1), setterData);
313
+ clearInterval(timer_1);
314
+ }
315
+ else {
316
+ instrument[setter](value(curTime), setterData);
317
+ }
318
+ }, callbackInterval);
319
+ instrument.playCallbackTimers.push(timer_1);
320
+ }
321
+ else {
322
+ instrument[setter](value, setterData);
323
+ }
324
+ };
325
+ if (!instrument.id) {
326
+ // No audio support - do nothing
327
+ return;
328
+ }
329
+ // If the AudioContext is suspended we have to resume it before playing
330
+ if (Instrument.audioContext.state === 'suspended' ||
331
+ this.oscillator && !this.oscillatorStarted) {
332
+ instrument.preparePlay();
333
+ // Try again in 10ms
334
+ setTimeout(function () {
335
+ instrument.play(options);
336
+ }, 10);
337
+ return;
338
+ }
339
+ // Clear any existing play timers
340
+ if (instrument.playCallbackTimers.length) {
341
+ instrument.clearPlayCallbackTimers();
342
+ }
343
+ // Clear any gain ramps
344
+ instrument.cancelGainRamp();
345
+ // Clear stop oscillator timer
346
+ if (instrument.stopOscillatorTimeout) {
347
+ clearTimeout(instrument.stopOscillatorTimeout);
348
+ delete instrument.stopOscillatorTimeout;
349
+ }
350
+ // If a note is playing right now, clear the stop timeout, and call the
351
+ // callback.
352
+ if (instrument.stopTimeout) {
353
+ clearTimeout(instrument.stopTimeout);
354
+ delete instrument.stopTimeout;
355
+ if (instrument.stopCallback) {
356
+ // We have a callback for the play we are interrupting. We do
357
+ // not allow this callback to start a new play, because that
358
+ // leads to chaos. We pass in 'cancelled' to indicate that this
359
+ // note did not finish, but still stopped.
360
+ instrument._play = instrument.play;
361
+ instrument.play = function () { };
362
+ instrument.stopCallback('cancelled');
363
+ instrument.play = instrument._play;
364
+ }
365
+ }
366
+ // Stop the note without fadeOut if the duration is too short to hear
367
+ // the note otherwise.
368
+ var immediate = duration < Sonification.fadeOutDuration + 20;
369
+ // Stop the instrument after the duration of the note
370
+ instrument.stopCallback = options.onEnd;
371
+ var onStop = function () {
372
+ delete instrument.stopTimeout;
373
+ instrument.stop(immediate);
374
+ };
375
+ if (duration) {
376
+ instrument.stopTimeout = setTimeout(onStop, immediate ? duration :
377
+ duration - Sonification.fadeOutDuration);
378
+ // Play the note
379
+ setOrStartTimer(options.frequency, 'setFrequency', {
380
+ minFrequency: options.minFrequency,
381
+ maxFrequency: options.maxFrequency
382
+ });
383
+ // Set the volume and panning
384
+ setOrStartTimer(pick(options.volume, 1), 'setGain', 4); // Slight ramp
385
+ setOrStartTimer(pick(options.pan, 0), 'setPan');
386
+ }
387
+ else {
388
+ // No note duration, so just stop immediately
389
+ onStop();
390
+ }
391
+ };
392
+ /**
393
+ * Mute an instrument that is playing. If the instrument is not currently
394
+ * playing, this function does nothing.
395
+ *
396
+ * @function Highcharts.Instrument#mute
397
+ */
398
+ Instrument.prototype.mute = function () {
399
+ this.setGain(0.0001, Sonification.fadeOutDuration * 0.8);
400
+ };
401
+ /**
402
+ * Stop the instrument playing.
403
+ *
404
+ * @function Highcharts.Instrument#stop
405
+ *
406
+ * @param {boolean} immediately
407
+ * Whether to do the stop immediately or fade out.
408
+ *
409
+ * @param {Function} [onStopped]
410
+ * Callback function to be called when the stop is completed.
411
+ *
412
+ * @param {*} [callbackData]
413
+ * Data to send to the onEnd callback functions.
414
+ *
415
+ * @return {void}
416
+ */
417
+ Instrument.prototype.stop = function (immediately, onStopped, callbackData) {
418
+ var instr = this, reset = function () {
419
+ // Remove timeout reference
420
+ if (instr.stopOscillatorTimeout) {
421
+ delete instr.stopOscillatorTimeout;
422
+ }
423
+ if (instr.oscillator &&
424
+ instr.options.oscillator) {
425
+ // The oscillator may have stopped in the meantime here, so
426
+ // allow this function to fail if so.
427
+ try {
428
+ instr.oscillator.stop();
429
+ }
430
+ catch (e) {
431
+ // silent error
432
+ }
433
+ if (instr.gainNode) {
434
+ instr.oscillator.disconnect(instr.gainNode);
435
+ }
436
+ // We need a new oscillator in order to restart it
437
+ instr.initOscillator(instr.options.oscillator);
438
+ }
439
+ // Done stopping, call the callback from the stop
440
+ if (onStopped) {
441
+ onStopped(callbackData);
442
+ }
443
+ // Call the callback for the play we finished
444
+ if (instr.stopCallback) {
445
+ instr.stopCallback(callbackData);
446
+ }
447
+ };
448
+ // Clear any existing timers
449
+ if (instr.playCallbackTimers.length) {
450
+ instr.clearPlayCallbackTimers();
451
+ }
452
+ if (instr.stopTimeout) {
453
+ clearTimeout(instr.stopTimeout);
454
+ }
455
+ if (immediately) {
456
+ instr.setGain(0);
457
+ reset();
458
+ }
459
+ else {
460
+ instr.mute();
461
+ // Stop the oscillator after the mute fade-out has finished
462
+ instr.stopOscillatorTimeout =
463
+ setTimeout(reset, Sonification.fadeOutDuration + 100);
464
+ }
465
+ };
466
+ // Default options for Instrument constructor
467
+ Instrument.defaultOptions = {
468
+ type: 'oscillator',
469
+ playCallbackInterval: 20,
470
+ masterVolume: 1,
471
+ oscillator: {
472
+ waveformShape: 'sine'
473
+ }
474
+ };
475
+ Instrument.definitions = {};
476
+ return Instrument;
477
+ }());
478
+ /* *
479
+ *
480
+ * Class Prototype
481
+ *
482
+ * */
483
+ // ['sine', 'square', 'triangle', 'sawtooth'].forEach(function (
484
+ ['sine', 'square', 'triangle', 'sawtooth'].forEach(function (waveform) {
485
+ // Add basic instruments
486
+ Instrument.definitions[waveform] = new Instrument({
487
+ oscillator: { waveformShape: waveform }
488
+ });
489
+ // Add musical instruments
490
+ Instrument.definitions[waveform + 'Musical'] = new Instrument({
491
+ allowedFrequencies: SU.musicalFrequencies,
492
+ oscillator: { waveformShape: waveform }
493
+ });
494
+ // Add scaled instruments
495
+ Instrument.definitions[waveform + 'Major'] = new Instrument({
496
+ allowedFrequencies: SU.getMusicalScale([1, 3, 5, 6, 8, 10, 12]),
497
+ oscillator: { waveformShape: waveform }
498
+ });
499
+ });
500
+ /* *
501
+ *
502
+ * Default Export
503
+ *
504
+ * */
505
+ export default Instrument;
506
+ /* *
507
+ *
508
+ * API Declarations
509
+ *
510
+ * */
16
511
  /**
17
512
  * A set of options for the Instrument class.
18
513
  *
@@ -111,429 +606,4 @@ var error = U.error, merge = U.merge, pick = U.pick, uniqueKey = U.uniqueKey;
111
606
  * @name Highcharts.OscillatorOptionsObject#waveformShape
112
607
  * @type {string|undefined}
113
608
  */
114
- // Default options for Instrument constructor
115
- var defaultOptions = {
116
- type: 'oscillator',
117
- playCallbackInterval: 20,
118
- masterVolume: 1,
119
- oscillator: {
120
- waveformShape: 'sine'
121
- }
122
- };
123
- /* eslint-disable no-invalid-this, valid-jsdoc */
124
- /**
125
- * The Instrument class. Instrument objects represent an instrument capable of
126
- * playing a certain pitch for a specified duration.
127
- *
128
- * @sample highcharts/sonification/instrument/
129
- * Using Instruments directly
130
- * @sample highcharts/sonification/instrument-advanced/
131
- * Using callbacks for instrument parameters
132
- *
133
- * @requires module:modules/sonification
134
- *
135
- * @class
136
- * @name Highcharts.Instrument
137
- *
138
- * @param {Highcharts.InstrumentOptionsObject} options
139
- * Options for the instrument instance.
140
- */
141
- function Instrument(options) {
142
- this.init(options);
143
- }
144
- Instrument.prototype.init = function (options) {
145
- if (!this.initAudioContext()) {
146
- error(29);
147
- return;
148
- }
149
- this.options = merge(defaultOptions, options);
150
- this.id = this.options.id = options && options.id || uniqueKey();
151
- this.masterVolume = this.options.masterVolume || 0;
152
- // Init the audio nodes
153
- var ctx = H.audioContext;
154
- // Note: Destination node can be overridden by setting
155
- // Highcharts.sonification.Instrument.prototype.destinationNode.
156
- // This allows for inserting an additional chain of nodes after
157
- // the default processing.
158
- var destination = this.destinationNode || ctx.destination;
159
- this.gainNode = ctx.createGain();
160
- this.setGain(0);
161
- this.panNode = ctx.createStereoPanner && ctx.createStereoPanner();
162
- if (this.panNode) {
163
- this.setPan(0);
164
- this.gainNode.connect(this.panNode);
165
- this.panNode.connect(destination);
166
- }
167
- else {
168
- this.gainNode.connect(destination);
169
- }
170
- // Oscillator initialization
171
- if (this.options.type === 'oscillator') {
172
- this.initOscillator(this.options.oscillator);
173
- }
174
- // Init timer list
175
- this.playCallbackTimers = [];
176
- };
177
- /**
178
- * Return a copy of an instrument. Only one instrument instance can play at a
179
- * time, so use this to get a new copy of the instrument that can play alongside
180
- * it. The new instrument copy will receive a new ID unless one is supplied in
181
- * options.
182
- *
183
- * @function Highcharts.Instrument#copy
184
- *
185
- * @param {Highcharts.InstrumentOptionsObject} [options]
186
- * Options to merge in for the copy.
187
- *
188
- * @return {Highcharts.Instrument}
189
- * A new Instrument instance with the same options.
190
- */
191
- Instrument.prototype.copy = function (options) {
192
- return new Instrument(merge(this.options, { id: null }, options));
193
- };
194
- /**
195
- * Init the audio context, if we do not have one.
196
- * @private
197
- * @return {boolean} True if successful, false if not.
198
- */
199
- Instrument.prototype.initAudioContext = function () {
200
- var Context = H.win.AudioContext || H.win.webkitAudioContext, hasOldContext = !!H.audioContext;
201
- if (Context) {
202
- H.audioContext = H.audioContext || new Context();
203
- if (!hasOldContext &&
204
- H.audioContext &&
205
- H.audioContext.state === 'running') {
206
- H.audioContext.suspend(); // Pause until we need it
207
- }
208
- return !!(H.audioContext &&
209
- H.audioContext.createOscillator &&
210
- H.audioContext.createGain);
211
- }
212
- return false;
213
- };
214
- /**
215
- * Init an oscillator instrument.
216
- * @private
217
- * @param {Highcharts.OscillatorOptionsObject} oscillatorOptions
218
- * The oscillator options passed to Highcharts.Instrument#init.
219
- * @return {void}
220
- */
221
- Instrument.prototype.initOscillator = function (options) {
222
- var ctx = H.audioContext;
223
- this.oscillator = ctx.createOscillator();
224
- this.oscillator.type = options.waveformShape;
225
- this.oscillator.connect(this.gainNode);
226
- this.oscillatorStarted = false;
227
- };
228
- /**
229
- * Set pan position.
230
- * @private
231
- * @param {number} panValue
232
- * The pan position to set for the instrument.
233
- * @return {void}
234
- */
235
- Instrument.prototype.setPan = function (panValue) {
236
- if (this.panNode) {
237
- this.panNode.pan.setValueAtTime(panValue, H.audioContext.currentTime);
238
- }
239
- };
240
- /**
241
- * Set gain level. A maximum of 1.2 is allowed before we emit a warning. The
242
- * actual volume is not set above this level regardless of input. This function
243
- * also handles the Instrument's master volume.
244
- * @private
245
- * @param {number} gainValue
246
- * The gain level to set for the instrument.
247
- * @param {number} [rampTime=0]
248
- * Gradually change the gain level, time given in milliseconds.
249
- * @return {void}
250
- */
251
- Instrument.prototype.setGain = function (gainValue, rampTime) {
252
- var gainNode = this.gainNode;
253
- var newVal = gainValue * this.masterVolume;
254
- if (gainNode) {
255
- if (newVal > 1.2) {
256
- console.warn(// eslint-disable-line
257
- 'Highcharts sonification warning: ' +
258
- 'Volume of instrument set too high.');
259
- newVal = 1.2;
260
- }
261
- if (rampTime) {
262
- gainNode.gain.setValueAtTime(gainNode.gain.value, H.audioContext.currentTime);
263
- gainNode.gain.linearRampToValueAtTime(newVal, H.audioContext.currentTime + rampTime / 1000);
264
- }
265
- else {
266
- gainNode.gain.setValueAtTime(newVal, H.audioContext.currentTime);
267
- }
268
- }
269
- };
270
- /**
271
- * Cancel ongoing gain ramps.
272
- * @private
273
- * @return {void}
274
- */
275
- Instrument.prototype.cancelGainRamp = function () {
276
- if (this.gainNode) {
277
- this.gainNode.gain.cancelScheduledValues(0);
278
- }
279
- };
280
- /**
281
- * Set the master volume multiplier of the instrument after creation.
282
- * @param {number} volumeMultiplier
283
- * The gain level to set for the instrument.
284
- * @return {void}
285
- */
286
- Instrument.prototype.setMasterVolume = function (volumeMultiplier) {
287
- this.masterVolume = volumeMultiplier || 0;
288
- };
289
- /**
290
- * Get the closest valid frequency for this instrument.
291
- * @private
292
- * @param {number} frequency - The target frequency.
293
- * @param {number} [min] - Minimum frequency to return.
294
- * @param {number} [max] - Maximum frequency to return.
295
- * @return {number} The closest valid frequency to the input frequency.
296
- */
297
- Instrument.prototype.getValidFrequency = function (frequency, min, max) {
298
- var validFrequencies = this.options.allowedFrequencies, maximum = pick(max, Infinity), minimum = pick(min, -Infinity);
299
- return !validFrequencies || !validFrequencies.length ?
300
- // No valid frequencies for this instrument, return the target
301
- frequency :
302
- // Use the valid frequencies and return the closest match
303
- validFrequencies.reduce(function (acc, cur) {
304
- // Find the closest allowed value
305
- return Math.abs(cur - frequency) < Math.abs(acc - frequency) &&
306
- cur < maximum && cur > minimum ?
307
- cur : acc;
308
- }, Infinity);
309
- };
310
- /**
311
- * Clear existing play callback timers.
312
- * @private
313
- * @return {void}
314
- */
315
- Instrument.prototype.clearPlayCallbackTimers = function () {
316
- this.playCallbackTimers.forEach(function (timer) {
317
- clearInterval(timer);
318
- });
319
- this.playCallbackTimers = [];
320
- };
321
- /**
322
- * Set the current frequency being played by the instrument. The closest valid
323
- * frequency between the frequency limits is used.
324
- * @param {number} frequency
325
- * The frequency to set.
326
- * @param {Highcharts.Dictionary<number>} [frequencyLimits]
327
- * Object with maxFrequency and minFrequency
328
- * @return {void}
329
- */
330
- Instrument.prototype.setFrequency = function (frequency, frequencyLimits) {
331
- var limits = frequencyLimits || {}, validFrequency = this.getValidFrequency(frequency, limits.min, limits.max);
332
- if (this.options.type === 'oscillator') {
333
- this.oscillatorPlay(validFrequency);
334
- }
335
- };
336
- /**
337
- * Play oscillator instrument.
338
- * @private
339
- * @param {number} frequency - The frequency to play.
340
- */
341
- Instrument.prototype.oscillatorPlay = function (frequency) {
342
- if (!this.oscillatorStarted) {
343
- this.oscillator.start();
344
- this.oscillatorStarted = true;
345
- }
346
- this.oscillator.frequency.setValueAtTime(frequency, H.audioContext.currentTime);
347
- };
348
- /**
349
- * Prepare instrument before playing. Resumes the audio context and starts the
350
- * oscillator.
351
- * @private
352
- */
353
- Instrument.prototype.preparePlay = function () {
354
- this.setGain(0.001);
355
- if (H.audioContext.state === 'suspended') {
356
- H.audioContext.resume();
357
- }
358
- if (this.oscillator && !this.oscillatorStarted) {
359
- this.oscillator.start();
360
- this.oscillatorStarted = true;
361
- }
362
- };
363
- /**
364
- * Play the instrument according to options.
365
- *
366
- * @sample highcharts/sonification/instrument/
367
- * Using Instruments directly
368
- * @sample highcharts/sonification/instrument-advanced/
369
- * Using callbacks for instrument parameters
370
- *
371
- * @function Highcharts.Instrument#play
372
- *
373
- * @param {Highcharts.InstrumentPlayOptionsObject} options
374
- * Options for the playback of the instrument.
375
- *
376
- * @return {void}
377
- */
378
- Instrument.prototype.play = function (options) {
379
- var instrument = this, duration = options.duration || 0,
380
- // Set a value, or if it is a function, set it continously as a timer.
381
- // Pass in the value/function to set, the setter function, and any
382
- // additional data to pass through to the setter function.
383
- setOrStartTimer = function (value, setter, setterData) {
384
- var target = options.duration, currentDurationIx = 0, callbackInterval = instrument.options.playCallbackInterval;
385
- if (typeof value === 'function') {
386
- var timer_1 = setInterval(function () {
387
- currentDurationIx++;
388
- var curTime = (currentDurationIx * callbackInterval / target);
389
- if (curTime >= 1) {
390
- instrument[setter](value(1), setterData);
391
- clearInterval(timer_1);
392
- }
393
- else {
394
- instrument[setter](value(curTime), setterData);
395
- }
396
- }, callbackInterval);
397
- instrument.playCallbackTimers.push(timer_1);
398
- }
399
- else {
400
- instrument[setter](value, setterData);
401
- }
402
- };
403
- if (!instrument.id) {
404
- // No audio support - do nothing
405
- return;
406
- }
407
- // If the AudioContext is suspended we have to resume it before playing
408
- if (H.audioContext.state === 'suspended' ||
409
- this.oscillator && !this.oscillatorStarted) {
410
- instrument.preparePlay();
411
- // Try again in 10ms
412
- setTimeout(function () {
413
- instrument.play(options);
414
- }, 10);
415
- return;
416
- }
417
- // Clear any existing play timers
418
- if (instrument.playCallbackTimers.length) {
419
- instrument.clearPlayCallbackTimers();
420
- }
421
- // Clear any gain ramps
422
- instrument.cancelGainRamp();
423
- // Clear stop oscillator timer
424
- if (instrument.stopOscillatorTimeout) {
425
- clearTimeout(instrument.stopOscillatorTimeout);
426
- delete instrument.stopOscillatorTimeout;
427
- }
428
- // If a note is playing right now, clear the stop timeout, and call the
429
- // callback.
430
- if (instrument.stopTimeout) {
431
- clearTimeout(instrument.stopTimeout);
432
- delete instrument.stopTimeout;
433
- if (instrument.stopCallback) {
434
- // We have a callback for the play we are interrupting. We do not
435
- // allow this callback to start a new play, because that leads to
436
- // chaos. We pass in 'cancelled' to indicate that this note did not
437
- // finish, but still stopped.
438
- instrument._play = instrument.play;
439
- instrument.play = function () { };
440
- instrument.stopCallback('cancelled');
441
- instrument.play = instrument._play;
442
- }
443
- }
444
- // Stop the note without fadeOut if the duration is too short to hear the
445
- // note otherwise.
446
- var immediate = duration < H.sonification.fadeOutDuration + 20;
447
- // Stop the instrument after the duration of the note
448
- instrument.stopCallback = options.onEnd;
449
- var onStop = function () {
450
- delete instrument.stopTimeout;
451
- instrument.stop(immediate);
452
- };
453
- if (duration) {
454
- instrument.stopTimeout = setTimeout(onStop, immediate ? duration :
455
- duration - H.sonification.fadeOutDuration);
456
- // Play the note
457
- setOrStartTimer(options.frequency, 'setFrequency', {
458
- minFrequency: options.minFrequency,
459
- maxFrequency: options.maxFrequency
460
- });
461
- // Set the volume and panning
462
- setOrStartTimer(pick(options.volume, 1), 'setGain', 4); // Slight ramp
463
- setOrStartTimer(pick(options.pan, 0), 'setPan');
464
- }
465
- else {
466
- // No note duration, so just stop immediately
467
- onStop();
468
- }
469
- };
470
- /**
471
- * Mute an instrument that is playing. If the instrument is not currently
472
- * playing, this function does nothing.
473
- *
474
- * @function Highcharts.Instrument#mute
475
- */
476
- Instrument.prototype.mute = function () {
477
- this.setGain(0.0001, H.sonification.fadeOutDuration * 0.8);
478
- };
479
- /**
480
- * Stop the instrument playing.
481
- *
482
- * @function Highcharts.Instrument#stop
483
- *
484
- * @param {boolean} immediately
485
- * Whether to do the stop immediately or fade out.
486
- *
487
- * @param {Function} [onStopped]
488
- * Callback function to be called when the stop is completed.
489
- *
490
- * @param {*} [callbackData]
491
- * Data to send to the onEnd callback functions.
492
- *
493
- * @return {void}
494
- */
495
- Instrument.prototype.stop = function (immediately, onStopped, callbackData) {
496
- var instr = this, reset = function () {
497
- // Remove timeout reference
498
- if (instr.stopOscillatorTimeout) {
499
- delete instr.stopOscillatorTimeout;
500
- }
501
- // The oscillator may have stopped in the meantime here, so allow
502
- // this function to fail if so.
503
- try {
504
- instr.oscillator.stop();
505
- }
506
- catch (e) {
507
- // silent error
508
- }
509
- instr.oscillator.disconnect(instr.gainNode);
510
- // We need a new oscillator in order to restart it
511
- instr.initOscillator(instr.options.oscillator);
512
- // Done stopping, call the callback from the stop
513
- if (onStopped) {
514
- onStopped(callbackData);
515
- }
516
- // Call the callback for the play we finished
517
- if (instr.stopCallback) {
518
- instr.stopCallback(callbackData);
519
- }
520
- };
521
- // Clear any existing timers
522
- if (instr.playCallbackTimers.length) {
523
- instr.clearPlayCallbackTimers();
524
- }
525
- if (instr.stopTimeout) {
526
- clearTimeout(instr.stopTimeout);
527
- }
528
- if (immediately) {
529
- instr.setGain(0);
530
- reset();
531
- }
532
- else {
533
- instr.mute();
534
- // Stop the oscillator after the mute fade-out has finished
535
- instr.stopOscillatorTimeout =
536
- setTimeout(reset, H.sonification.fadeOutDuration + 100);
537
- }
538
- };
539
- export default Instrument;
609
+ (''); // keeps doclets above in JS file