highcharts 9.2.2 → 9.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (747) 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 +233 -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 +46 -23
  16. package/es-modules/Accessibility/Components/LegendComponent.js +97 -65
  17. package/es-modules/Accessibility/Components/MenuComponent.js +59 -40
  18. package/es-modules/Accessibility/Components/RangeSelectorComponent.js +5 -8
  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 +144 -70
  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 +8 -12
  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 +2 -0
  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 +3 -3
  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 +153 -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 +68 -19
  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/BoostOverrides.js +3 -1
  111. package/es-modules/Extensions/Boost/WGLShader.js +4 -3
  112. package/es-modules/Extensions/BoostCanvas.js +1 -2
  113. package/es-modules/Extensions/CurrentDateIndication.js +2 -3
  114. package/es-modules/Extensions/DataGrouping.js +31 -18
  115. package/es-modules/Extensions/DownloadURL.js +2 -2
  116. package/es-modules/Extensions/DragPanes.js +1 -2
  117. package/es-modules/Extensions/Drilldown.js +2 -3
  118. package/es-modules/Extensions/Exporting/Exporting.js +8 -7
  119. package/es-modules/Extensions/Exporting/ExportingDefaults.js +8 -15
  120. package/es-modules/Extensions/GeoJSON.js +39 -63
  121. package/es-modules/Extensions/MarkerClusters.js +115 -97
  122. package/es-modules/Extensions/NoDataToDisplay.js +1 -2
  123. package/es-modules/Extensions/OfflineExporting/OfflineExporting.js +9 -8
  124. package/es-modules/Extensions/OfflineExporting/OfflineExportingDefaults.js +1 -1
  125. package/es-modules/Extensions/Oldie/Oldie.js +2 -3
  126. package/es-modules/Extensions/Pane.js +5 -6
  127. package/es-modules/Extensions/RangeSelector.js +3 -4
  128. package/es-modules/Extensions/Sonification/ChartSonify.js +247 -637
  129. package/es-modules/Extensions/Sonification/Earcon.js +136 -102
  130. package/es-modules/Extensions/Sonification/Instrument.js +496 -426
  131. package/es-modules/Extensions/Sonification/MusicalFrequencies.js +10 -0
  132. package/es-modules/Extensions/Sonification/Options.js +10 -0
  133. package/es-modules/Extensions/Sonification/PointSonify.js +203 -152
  134. package/es-modules/Extensions/Sonification/SeriesSonify.js +459 -0
  135. package/es-modules/Extensions/Sonification/SignalHandler.js +124 -0
  136. package/es-modules/Extensions/Sonification/Sonification.js +26 -52
  137. package/es-modules/Extensions/Sonification/{Utilities.js → SonificationUtilities.js} +62 -84
  138. package/es-modules/Extensions/Sonification/Timeline.js +255 -567
  139. package/es-modules/Extensions/Sonification/TimelineEvent.js +158 -0
  140. package/es-modules/Extensions/Sonification/TimelinePath.js +311 -0
  141. package/es-modules/Maps/MapNavigation.js +27 -64
  142. package/es-modules/Maps/MapNavigationOptionsDefault.js +3 -0
  143. package/es-modules/Maps/MapPointer.js +7 -5
  144. package/es-modules/Maps/MapView.js +450 -0
  145. package/es-modules/Maps/MapViewOptionsDefault.js +95 -0
  146. package/es-modules/Maps/Projection.js +433 -0
  147. package/es-modules/Maps/ProjectionDefinition.js +9 -0
  148. package/es-modules/Maps/Projections/EqualEarth.js +42 -0
  149. package/es-modules/Maps/Projections/Miller.js +17 -0
  150. package/es-modules/Maps/Projections/Orthographic.js +26 -0
  151. package/es-modules/Maps/Projections/ProjectionRegistry.js +17 -0
  152. package/es-modules/Maps/Projections/WebMercator.js +25 -0
  153. package/es-modules/Series/AreaRange/AreaRangeSeries.js +4 -5
  154. package/es-modules/Series/Bellcurve/BellcurveSeries.js +2 -8
  155. package/es-modules/Series/BoxPlot/BoxPlotSeries.js +1 -2
  156. package/es-modules/Series/Bubble/BubbleLegendDefaults.js +1 -2
  157. package/es-modules/Series/Bubble/BubbleLegendItem.js +3 -3
  158. package/es-modules/Series/Bubble/BubblePoint.js +5 -0
  159. package/es-modules/Series/Bubble/BubbleSeries.js +90 -50
  160. package/es-modules/Series/Candlestick/CandlestickSeries.js +10 -18
  161. package/es-modules/{Mixins/CenteredSeries.js → Series/CenteredUtilities.js} +45 -23
  162. package/es-modules/Series/ColorMapComposition.js +109 -0
  163. package/es-modules/Series/Column/ColumnDataLabel.js +5 -5
  164. package/es-modules/Series/Column/ColumnSeries.js +3 -4
  165. package/es-modules/Series/ColumnPyramid/ColumnPyramidSeries.js +6 -6
  166. package/es-modules/Series/DataModifyComposition.js +539 -0
  167. package/es-modules/Series/DependencyWheel/DependencyWheelPoint.js +2 -6
  168. package/es-modules/Series/DerivedComposition.js +137 -0
  169. package/es-modules/Series/DrawPointComposition.js +111 -0
  170. package/es-modules/Series/Dumbbell/DumbbellSeries.js +2 -3
  171. package/es-modules/Series/ErrorBar/ErrorBarSeries.js +1 -2
  172. package/es-modules/Series/Flags/FlagsSeries.js +18 -25
  173. package/es-modules/Series/Funnel/FunnelSeries.js +6 -5
  174. package/es-modules/Series/Gantt/GanttSeries.js +0 -2
  175. package/es-modules/Series/Gauge/GaugePoint.js +1 -1
  176. package/es-modules/Series/Gauge/GaugeSeries.js +7 -7
  177. package/es-modules/Series/HLC/HLCPoint.js +55 -0
  178. package/es-modules/Series/HLC/HLCSeries.js +383 -0
  179. package/es-modules/Series/Heatmap/HeatmapPoint.js +3 -4
  180. package/es-modules/Series/Heatmap/HeatmapSeries.js +19 -6
  181. package/es-modules/Series/HeikinAshi/HeikinAshiSeries.js +2 -3
  182. package/es-modules/Series/Histogram/HistogramSeries.js +3 -7
  183. package/es-modules/Series/HollowCandlestick/HollowCandlestickSeries.js +9 -10
  184. package/es-modules/Series/Line/LineSeries.js +1 -2
  185. package/es-modules/Series/Map/MapPoint.js +23 -16
  186. package/es-modules/Series/Map/MapSeries.js +268 -309
  187. package/es-modules/Series/MapBubble/MapBubblePoint.js +0 -3
  188. package/es-modules/Series/MapBubble/MapBubbleSeries.js +10 -1
  189. package/es-modules/Series/MapPoint/MapPointPoint.js +5 -1
  190. package/es-modules/Series/MapPoint/MapPointSeries.js +87 -4
  191. package/es-modules/Series/Networkgraph/Networkgraph.js +5 -5
  192. package/es-modules/{Mixins/Nodes.js → Series/NodesComposition.js} +76 -29
  193. package/es-modules/Series/OHLC/OHLCPoint.js +2 -6
  194. package/es-modules/Series/OHLC/OHLCSeries.js +55 -183
  195. package/es-modules/{Mixins/OnSeries.js → Series/OnSeriesComposition.js} +53 -21
  196. package/es-modules/Series/Organization/OrganizationSeries.js +2 -3
  197. package/es-modules/Series/PackedBubble/PackedBubbleSeries.js +46 -6
  198. package/es-modules/Series/ParetoSeries/ParetoSeries.js +3 -7
  199. package/es-modules/Series/Pie/PieDataLabel.js +1 -2
  200. package/es-modules/Series/Pie/PieSeries.js +6 -7
  201. package/es-modules/Series/Sankey/SankeyPoint.js +0 -4
  202. package/es-modules/Series/Sankey/SankeySeries.js +89 -20
  203. package/es-modules/Series/Sunburst/SunburstPoint.js +2 -3
  204. package/es-modules/Series/Sunburst/SunburstSeries.js +4 -4
  205. package/es-modules/Series/Tilemap/TilemapPoint.js +2 -3
  206. package/es-modules/Series/Timeline/TimelineSeries.js +3 -4
  207. package/es-modules/{Mixins/TreeSeries.js → Series/TreeUtilities.js} +86 -76
  208. package/es-modules/Series/Treemap/TreemapPoint.js +2 -2
  209. package/es-modules/Series/Treemap/TreemapSeries.js +8 -8
  210. package/es-modules/Series/Venn/VennPoint.js +16 -7
  211. package/es-modules/Series/Venn/VennSeries.js +5 -8
  212. package/es-modules/Series/Venn/VennUtils.js +550 -439
  213. package/es-modules/Series/Waterfall/WaterfallSeries.js +2 -3
  214. package/es-modules/Series/Windbarb/WindbarbSeries.js +23 -24
  215. package/es-modules/Series/Wordcloud/WordcloudPoint.js +8 -6
  216. package/es-modules/Series/Wordcloud/WordcloudSeries.js +24 -20
  217. package/es-modules/Series/Wordcloud/WordcloudUtils.js +673 -484
  218. package/es-modules/Series/XRange/XRangePoint.js +1 -0
  219. package/es-modules/Stock/Indicators/ABands/ABandsIndicator.js +3 -6
  220. package/es-modules/Stock/Indicators/AO/AOIndicator.js +2 -3
  221. package/es-modules/Stock/Indicators/APO/APOIndicator.js +14 -20
  222. package/es-modules/Stock/Indicators/Aroon/AroonIndicator.js +3 -6
  223. package/es-modules/Stock/Indicators/AroonOscillator/AroonOscillatorIndicator.js +11 -13
  224. package/es-modules/Stock/Indicators/ArrayUtilities.js +47 -0
  225. package/es-modules/Stock/Indicators/BB/BBIndicator.js +27 -11
  226. package/es-modules/Stock/Indicators/Chaikin/ChaikinIndicator.js +6 -12
  227. package/es-modules/Stock/Indicators/DEMA/DEMAIndicator.js +1 -11
  228. package/es-modules/Stock/Indicators/DMI/DMIIndicator.js +19 -11
  229. package/es-modules/Stock/Indicators/DisparityIndex/DisparityIndexIndicator.js +17 -11
  230. package/es-modules/Stock/Indicators/EMA/EMAIndicator.js +1 -3
  231. package/es-modules/Stock/Indicators/KeltnerChannels/KeltnerChannelsIndicator.js +11 -9
  232. package/es-modules/Stock/Indicators/Klinger/KlingerIndicator.js +8 -16
  233. package/es-modules/Stock/Indicators/LinearRegression/LinearRegression.js +2 -2
  234. package/es-modules/Stock/Indicators/LinearRegressionAngle/LinearRegressionAngle.js +2 -2
  235. package/es-modules/Stock/Indicators/LinearRegressionIntercept/LinearRegressionIntercept.js +2 -2
  236. package/es-modules/Stock/Indicators/LinearRegressionSlopes/LinearRegressionSlopes.js +2 -2
  237. package/es-modules/Stock/Indicators/MACD/MACDIndicator.js +1 -2
  238. package/es-modules/{Mixins/MultipleLines.js → Stock/Indicators/MultipleLinesComposition.js} +136 -87
  239. package/es-modules/Stock/Indicators/NATR/NATRIndicator.js +1 -3
  240. package/es-modules/Stock/Indicators/PC/PCIndicator.js +14 -13
  241. package/es-modules/Stock/Indicators/PPO/PPOIndicator.js +1 -11
  242. package/es-modules/Stock/Indicators/SMA/SMAComposition.js +0 -26
  243. package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +9 -32
  244. package/es-modules/Stock/Indicators/SlowStochastic/SlowStochasticIndicator.js +0 -8
  245. package/es-modules/Stock/Indicators/Stochastic/StochasticIndicator.js +15 -8
  246. package/es-modules/Stock/Indicators/Supertrend/SupertrendIndicator.js +4 -6
  247. package/es-modules/Stock/Indicators/TEMA/TEMAIndicator.js +26 -11
  248. package/es-modules/Stock/Indicators/TRIX/TRIXIndicator.js +6 -12
  249. package/es-modules/Stock/Indicators/VBP/VBPIndicator.js +20 -3
  250. package/es-modules/Stock/Indicators/WilliamsR/WilliamsRIndicator.js +2 -3
  251. package/es-modules/Stock/StockToolsBindings.js +144 -42
  252. package/es-modules/Stock/StockToolsGui.js +405 -11
  253. package/es-modules/masters/highcharts-3d.src.js +1 -1
  254. package/es-modules/masters/highcharts-gantt.src.js +1 -1
  255. package/es-modules/masters/highcharts-more.src.js +1 -1
  256. package/es-modules/masters/highcharts.src.js +1 -1
  257. package/es-modules/masters/highmaps.src.js +1 -1
  258. package/es-modules/masters/highstock.src.js +1 -1
  259. package/es-modules/masters/indicators/acceleration-bands.src.js +1 -1
  260. package/es-modules/masters/indicators/accumulation-distribution.src.js +1 -1
  261. package/es-modules/masters/indicators/ao.src.js +1 -1
  262. package/es-modules/masters/indicators/apo.src.js +1 -1
  263. package/es-modules/masters/indicators/aroon-oscillator.src.js +1 -1
  264. package/es-modules/masters/indicators/aroon.src.js +1 -1
  265. package/es-modules/masters/indicators/atr.src.js +1 -1
  266. package/es-modules/masters/indicators/bollinger-bands.src.js +1 -1
  267. package/es-modules/masters/indicators/cci.src.js +1 -1
  268. package/es-modules/masters/indicators/chaikin.src.js +1 -1
  269. package/es-modules/masters/indicators/cmf.src.js +1 -1
  270. package/es-modules/masters/indicators/cmo.src.js +1 -1
  271. package/es-modules/masters/indicators/dema.src.js +1 -1
  272. package/es-modules/masters/indicators/disparity-index.src.js +1 -1
  273. package/es-modules/masters/indicators/dmi.src.js +1 -1
  274. package/es-modules/masters/indicators/dpo.src.js +1 -1
  275. package/es-modules/masters/indicators/ema.src.js +4 -10
  276. package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
  277. package/es-modules/masters/indicators/indicators-all.src.js +2 -2
  278. package/es-modules/masters/indicators/indicators.src.js +2 -1
  279. package/es-modules/masters/indicators/keltner-channels.src.js +1 -1
  280. package/es-modules/masters/indicators/klinger.src.js +1 -1
  281. package/es-modules/masters/indicators/macd.src.js +1 -1
  282. package/es-modules/masters/indicators/mfi.src.js +1 -1
  283. package/es-modules/masters/indicators/momentum.src.js +1 -1
  284. package/es-modules/masters/indicators/natr.src.js +1 -1
  285. package/es-modules/masters/indicators/obv.src.js +1 -1
  286. package/es-modules/masters/indicators/pivot-points.src.js +1 -1
  287. package/es-modules/masters/indicators/ppo.src.js +1 -1
  288. package/es-modules/masters/indicators/price-channel.src.js +1 -1
  289. package/es-modules/masters/indicators/price-envelopes.src.js +1 -1
  290. package/es-modules/masters/indicators/psar.src.js +1 -1
  291. package/es-modules/masters/indicators/regressions.src.js +1 -1
  292. package/es-modules/masters/indicators/roc.src.js +1 -1
  293. package/es-modules/masters/indicators/rsi.src.js +1 -1
  294. package/es-modules/masters/indicators/slow-stochastic.src.js +1 -1
  295. package/es-modules/masters/indicators/stochastic.src.js +1 -1
  296. package/es-modules/masters/indicators/supertrend.src.js +1 -1
  297. package/es-modules/masters/indicators/tema.src.js +1 -1
  298. package/es-modules/masters/indicators/trendline.src.js +1 -1
  299. package/es-modules/masters/indicators/trix.src.js +1 -1
  300. package/es-modules/masters/indicators/volume-by-price.src.js +1 -1
  301. package/es-modules/masters/indicators/vwap.src.js +1 -1
  302. package/es-modules/masters/indicators/williams-r.src.js +1 -1
  303. package/es-modules/masters/indicators/wma.src.js +1 -1
  304. package/es-modules/masters/indicators/zigzag.src.js +1 -1
  305. package/es-modules/masters/modules/accessibility.src.js +16 -2
  306. package/es-modules/masters/modules/annotations-advanced.src.js +3 -1
  307. package/es-modules/masters/modules/annotations.src.js +1 -1
  308. package/es-modules/masters/modules/arrow-symbols.src.js +1 -1
  309. package/es-modules/masters/modules/boost-canvas.src.js +1 -1
  310. package/es-modules/masters/modules/boost.src.js +1 -1
  311. package/es-modules/masters/modules/broken-axis.src.js +1 -1
  312. package/es-modules/masters/modules/bullet.src.js +1 -1
  313. package/es-modules/masters/modules/coloraxis.src.js +1 -1
  314. package/es-modules/masters/modules/current-date-indicator.src.js +1 -1
  315. package/es-modules/masters/modules/cylinder.src.js +1 -1
  316. package/es-modules/masters/modules/data.src.js +6 -3
  317. package/es-modules/masters/modules/datagrouping.src.js +1 -1
  318. package/es-modules/masters/modules/debugger.src.js +1 -1
  319. package/es-modules/masters/modules/dependency-wheel.src.js +1 -1
  320. package/es-modules/masters/modules/dotplot.src.js +1 -1
  321. package/es-modules/masters/modules/drag-panes.src.js +1 -1
  322. package/es-modules/masters/modules/draggable-points.src.js +1 -1
  323. package/es-modules/masters/modules/drilldown.src.js +1 -1
  324. package/es-modules/masters/modules/dumbbell.src.js +1 -1
  325. package/es-modules/masters/modules/export-data.src.js +1 -1
  326. package/es-modules/masters/modules/exporting.src.js +1 -1
  327. package/es-modules/masters/modules/full-screen.src.js +1 -1
  328. package/es-modules/masters/modules/funnel.src.js +1 -1
  329. package/es-modules/masters/modules/funnel3d.src.js +1 -1
  330. package/es-modules/masters/modules/gantt.src.js +1 -1
  331. package/es-modules/masters/modules/grid-axis.src.js +1 -1
  332. package/es-modules/masters/modules/heatmap.src.js +1 -2
  333. package/es-modules/masters/modules/heikinashi.src.js +1 -1
  334. package/es-modules/masters/modules/histogram-bellcurve.src.js +1 -1
  335. package/es-modules/masters/modules/hollowcandlestick.src.js +1 -1
  336. package/es-modules/masters/modules/item-series.src.js +1 -1
  337. package/es-modules/masters/modules/lollipop.src.js +1 -1
  338. package/es-modules/masters/modules/map.src.js +1 -3
  339. package/es-modules/masters/modules/marker-clusters.src.js +1 -1
  340. package/es-modules/masters/modules/networkgraph.src.js +1 -1
  341. package/es-modules/masters/modules/no-data-to-display.src.js +1 -1
  342. package/es-modules/masters/modules/offline-exporting.src.js +1 -1
  343. package/es-modules/masters/modules/oldie-polyfills.src.js +1 -1
  344. package/es-modules/masters/modules/oldie.src.js +1 -1
  345. package/es-modules/masters/modules/organization.src.js +1 -1
  346. package/es-modules/masters/modules/overlapping-datalabels.src.js +1 -1
  347. package/es-modules/masters/modules/parallel-coordinates.src.js +1 -1
  348. package/es-modules/masters/modules/pareto.src.js +1 -1
  349. package/es-modules/masters/modules/pathfinder.src.js +1 -1
  350. package/es-modules/masters/modules/pattern-fill.src.js +1 -1
  351. package/es-modules/masters/modules/price-indicator.src.js +1 -1
  352. package/es-modules/masters/modules/pyramid3d.src.js +1 -1
  353. package/es-modules/masters/modules/sankey.src.js +1 -1
  354. package/es-modules/masters/modules/series-label.src.js +1 -1
  355. package/es-modules/masters/modules/solid-gauge.src.js +1 -1
  356. package/es-modules/masters/modules/sonification.src.js +33 -2
  357. package/es-modules/masters/modules/static-scale.src.js +1 -1
  358. package/es-modules/masters/modules/stock-tools.src.js +1 -1
  359. package/es-modules/masters/modules/stock.src.js +4 -1
  360. package/es-modules/masters/modules/streamgraph.src.js +1 -1
  361. package/es-modules/masters/modules/sunburst.src.js +1 -1
  362. package/es-modules/masters/modules/tilemap.src.js +1 -1
  363. package/es-modules/masters/modules/timeline.src.js +1 -1
  364. package/es-modules/masters/modules/treegrid.src.js +1 -1
  365. package/es-modules/masters/modules/treemap.src.js +1 -1
  366. package/es-modules/masters/modules/variable-pie.src.js +1 -1
  367. package/es-modules/masters/modules/variwide.src.js +1 -1
  368. package/es-modules/masters/modules/vector.src.js +1 -1
  369. package/es-modules/masters/modules/venn.src.js +1 -1
  370. package/es-modules/masters/modules/windbarb.src.js +1 -1
  371. package/es-modules/masters/modules/wordcloud.src.js +1 -1
  372. package/es-modules/masters/modules/xrange.src.js +1 -1
  373. package/es-modules/masters/themes/avocado.src.js +1 -1
  374. package/es-modules/masters/themes/dark-blue.src.js +1 -1
  375. package/es-modules/masters/themes/dark-green.src.js +1 -1
  376. package/es-modules/masters/themes/dark-unica.src.js +1 -1
  377. package/es-modules/masters/themes/gray.src.js +1 -1
  378. package/es-modules/masters/themes/grid-light.src.js +1 -1
  379. package/es-modules/masters/themes/grid.src.js +1 -1
  380. package/es-modules/masters/themes/high-contrast-dark.src.js +1 -1
  381. package/es-modules/masters/themes/high-contrast-light.src.js +1 -1
  382. package/es-modules/masters/themes/sand-signika.src.js +1 -1
  383. package/es-modules/masters/themes/skies.src.js +1 -1
  384. package/es-modules/masters/themes/sunset.src.js +1 -1
  385. package/highcharts-3d.js +1 -1
  386. package/highcharts-3d.src.js +1 -1
  387. package/highcharts-gantt.js +801 -804
  388. package/highcharts-gantt.js.map +1 -1
  389. package/highcharts-gantt.src.js +775 -739
  390. package/highcharts-more.js +194 -193
  391. package/highcharts-more.js.map +1 -1
  392. package/highcharts-more.src.js +207 -119
  393. package/highcharts.d.ts +9670 -4217
  394. package/highcharts.js +585 -588
  395. package/highcharts.js.map +1 -1
  396. package/highcharts.src.d.ts +9670 -4217
  397. package/highcharts.src.js +608 -587
  398. package/highmaps.js +726 -708
  399. package/highmaps.js.map +1 -1
  400. package/highmaps.src.js +2708 -1587
  401. package/highstock.js +788 -783
  402. package/highstock.js.map +1 -1
  403. package/highstock.src.js +1896 -1267
  404. package/indicators/acceleration-bands.js +10 -9
  405. package/indicators/acceleration-bands.js.map +1 -1
  406. package/indicators/acceleration-bands.src.js +156 -112
  407. package/indicators/accumulation-distribution.js +1 -1
  408. package/indicators/accumulation-distribution.src.js +1 -1
  409. package/indicators/ao.js +6 -6
  410. package/indicators/ao.js.map +1 -1
  411. package/indicators/ao.src.js +4 -4
  412. package/indicators/apo.js +5 -6
  413. package/indicators/apo.js.map +1 -1
  414. package/indicators/apo.src.js +16 -84
  415. package/indicators/aroon-oscillator.js +9 -9
  416. package/indicators/aroon-oscillator.js.map +1 -1
  417. package/indicators/aroon-oscillator.src.js +160 -177
  418. package/indicators/aroon.js +9 -9
  419. package/indicators/aroon.js.map +1 -1
  420. package/indicators/aroon.src.js +156 -112
  421. package/indicators/atr.js +1 -1
  422. package/indicators/atr.src.js +1 -1
  423. package/indicators/bollinger-bands.js +10 -9
  424. package/indicators/bollinger-bands.js.map +1 -1
  425. package/indicators/bollinger-bands.src.js +180 -117
  426. package/indicators/cci.js +1 -1
  427. package/indicators/cci.src.js +1 -1
  428. package/indicators/chaikin.js +8 -9
  429. package/indicators/chaikin.js.map +1 -1
  430. package/indicators/chaikin.src.js +8 -76
  431. package/indicators/cmf.js +1 -1
  432. package/indicators/cmf.src.js +1 -1
  433. package/indicators/cmo.js +1 -1
  434. package/indicators/cmo.src.js +1 -1
  435. package/indicators/dema.js +5 -6
  436. package/indicators/dema.js.map +1 -1
  437. package/indicators/dema.src.js +3 -75
  438. package/indicators/disparity-index.js +6 -7
  439. package/indicators/disparity-index.js.map +1 -1
  440. package/indicators/disparity-index.src.js +19 -74
  441. package/indicators/dmi.js +11 -11
  442. package/indicators/dmi.js.map +1 -1
  443. package/indicators/dmi.src.js +173 -116
  444. package/indicators/dpo.js +1 -1
  445. package/indicators/dpo.src.js +1 -1
  446. package/indicators/ema.js +1 -13
  447. package/indicators/ema.js.map +1 -1
  448. package/indicators/ema.src.js +7 -188
  449. package/indicators/ichimoku-kinko-hyo.js +1 -1
  450. package/indicators/ichimoku-kinko-hyo.src.js +1 -1
  451. package/indicators/indicators-all.js +197 -203
  452. package/indicators/indicators-all.js.map +1 -1
  453. package/indicators/indicators-all.src.js +649 -720
  454. package/indicators/indicators.js +12 -12
  455. package/indicators/indicators.js.map +1 -1
  456. package/indicators/indicators.src.js +188 -124
  457. package/indicators/keltner-channels.js +10 -10
  458. package/indicators/keltner-channels.js.map +1 -1
  459. package/indicators/keltner-channels.src.js +164 -118
  460. package/indicators/klinger.js +12 -13
  461. package/indicators/klinger.js.map +1 -1
  462. package/indicators/klinger.src.js +161 -184
  463. package/indicators/macd.js +2 -2
  464. package/indicators/macd.js.map +1 -1
  465. package/indicators/macd.src.js +2 -3
  466. package/indicators/mfi.js +1 -1
  467. package/indicators/mfi.src.js +1 -1
  468. package/indicators/momentum.js +1 -1
  469. package/indicators/momentum.src.js +1 -1
  470. package/indicators/natr.js +3 -3
  471. package/indicators/natr.js.map +1 -1
  472. package/indicators/natr.src.js +2 -4
  473. package/indicators/obv.js +1 -1
  474. package/indicators/obv.src.js +1 -1
  475. package/indicators/pivot-points.js +1 -1
  476. package/indicators/pivot-points.src.js +1 -1
  477. package/indicators/ppo.js +5 -6
  478. package/indicators/ppo.js.map +1 -1
  479. package/indicators/ppo.src.js +3 -75
  480. package/indicators/price-channel.js +9 -9
  481. package/indicators/price-channel.js.map +1 -1
  482. package/indicators/price-channel.src.js +207 -168
  483. package/indicators/price-envelopes.js +1 -1
  484. package/indicators/price-envelopes.src.js +1 -1
  485. package/indicators/psar.js +1 -1
  486. package/indicators/psar.src.js +1 -1
  487. package/indicators/regressions.js +1 -1
  488. package/indicators/regressions.src.js +9 -9
  489. package/indicators/roc.js +1 -1
  490. package/indicators/roc.src.js +1 -1
  491. package/indicators/rsi.js +1 -1
  492. package/indicators/rsi.src.js +1 -1
  493. package/indicators/slow-stochastic.js +5 -6
  494. package/indicators/slow-stochastic.js.map +1 -1
  495. package/indicators/slow-stochastic.src.js +2 -72
  496. package/indicators/stochastic.js +10 -10
  497. package/indicators/stochastic.js.map +1 -1
  498. package/indicators/stochastic.src.js +209 -164
  499. package/indicators/supertrend.js +10 -10
  500. package/indicators/supertrend.js.map +1 -1
  501. package/indicators/supertrend.src.js +6 -7
  502. package/indicators/tema.js +6 -7
  503. package/indicators/tema.js.map +1 -1
  504. package/indicators/tema.src.js +28 -75
  505. package/indicators/trendline.js +1 -1
  506. package/indicators/trendline.src.js +1 -1
  507. package/indicators/trix.js +4 -5
  508. package/indicators/trix.js.map +1 -1
  509. package/indicators/trix.src.js +8 -76
  510. package/indicators/volume-by-price.js +16 -16
  511. package/indicators/volume-by-price.js.map +1 -1
  512. package/indicators/volume-by-price.src.js +21 -3
  513. package/indicators/vwap.js +1 -1
  514. package/indicators/vwap.src.js +1 -1
  515. package/indicators/williams-r.js +5 -6
  516. package/indicators/williams-r.js.map +1 -1
  517. package/indicators/williams-r.src.js +41 -51
  518. package/indicators/wma.js +1 -1
  519. package/indicators/wma.src.js +1 -1
  520. package/indicators/zigzag.js +1 -1
  521. package/indicators/zigzag.src.js +1 -1
  522. package/modules/accessibility.d.ts +5 -0
  523. package/modules/accessibility.js +234 -216
  524. package/modules/accessibility.js.map +1 -1
  525. package/modules/accessibility.src.d.ts +5 -0
  526. package/modules/accessibility.src.js +9709 -8608
  527. package/modules/annotations-advanced.d.ts +30 -0
  528. package/modules/annotations-advanced.js +191 -165
  529. package/modules/annotations-advanced.js.map +1 -1
  530. package/modules/annotations-advanced.src.d.ts +30 -0
  531. package/modules/annotations-advanced.src.js +1578 -320
  532. package/modules/annotations.js +121 -107
  533. package/modules/annotations.js.map +1 -1
  534. package/modules/annotations.src.js +958 -229
  535. package/modules/arrow-symbols.js +1 -1
  536. package/modules/arrow-symbols.src.js +1 -1
  537. package/modules/boost-canvas.js +15 -15
  538. package/modules/boost-canvas.js.map +1 -1
  539. package/modules/boost-canvas.src.js +3 -3
  540. package/modules/boost.js +79 -79
  541. package/modules/boost.js.map +1 -1
  542. package/modules/boost.src.js +10 -9
  543. package/modules/broken-axis.js +1 -1
  544. package/modules/broken-axis.src.js +1 -1
  545. package/modules/bullet.js +1 -1
  546. package/modules/bullet.src.js +1 -1
  547. package/modules/coloraxis.js +24 -24
  548. package/modules/coloraxis.js.map +1 -1
  549. package/modules/coloraxis.src.js +69 -98
  550. package/modules/current-date-indicator.js +4 -4
  551. package/modules/current-date-indicator.js.map +1 -1
  552. package/modules/current-date-indicator.src.js +4 -4
  553. package/modules/cylinder.js +1 -1
  554. package/modules/cylinder.src.js +1 -1
  555. package/modules/data.js +19 -19
  556. package/modules/data.js.map +1 -1
  557. package/modules/data.src.js +9 -6
  558. package/modules/datagrouping.js +20 -20
  559. package/modules/datagrouping.js.map +1 -1
  560. package/modules/datagrouping.src.js +33 -19
  561. package/modules/debugger.js +1 -1
  562. package/modules/debugger.src.js +1 -1
  563. package/modules/dependency-wheel.js +11 -11
  564. package/modules/dependency-wheel.js.map +1 -1
  565. package/modules/dependency-wheel.src.js +4 -7
  566. package/modules/dotplot.js +1 -1
  567. package/modules/dotplot.src.js +1 -1
  568. package/modules/drag-panes.js +8 -8
  569. package/modules/drag-panes.js.map +1 -1
  570. package/modules/drag-panes.src.js +3 -3
  571. package/modules/draggable-points.js +1 -1
  572. package/modules/draggable-points.src.js +1 -1
  573. package/modules/drilldown.js +24 -24
  574. package/modules/drilldown.js.map +1 -1
  575. package/modules/drilldown.src.js +4 -4
  576. package/modules/dumbbell.js +17 -17
  577. package/modules/dumbbell.js.map +1 -1
  578. package/modules/dumbbell.src.js +4 -4
  579. package/modules/export-data.js +1 -1
  580. package/modules/export-data.js.map +1 -1
  581. package/modules/export-data.src.js +3 -3
  582. package/modules/exporting.js +39 -38
  583. package/modules/exporting.js.map +1 -1
  584. package/modules/exporting.src.js +98 -67
  585. package/modules/full-screen.js +1 -1
  586. package/modules/full-screen.src.js +1 -1
  587. package/modules/funnel.js +12 -12
  588. package/modules/funnel.js.map +1 -1
  589. package/modules/funnel.src.js +9 -6
  590. package/modules/funnel3d.js +1 -1
  591. package/modules/funnel3d.src.js +1 -1
  592. package/modules/gantt.js +217 -218
  593. package/modules/gantt.js.map +1 -1
  594. package/modules/gantt.src.js +167 -152
  595. package/modules/grid-axis.js +1 -1
  596. package/modules/grid-axis.src.js +1 -1
  597. package/modules/heatmap.js +39 -39
  598. package/modules/heatmap.js.map +1 -1
  599. package/modules/heatmap.src.js +177 -162
  600. package/modules/heikinashi.js +1 -1
  601. package/modules/heikinashi.src.js +4 -4
  602. package/modules/histogram-bellcurve.js +13 -13
  603. package/modules/histogram-bellcurve.js.map +1 -1
  604. package/modules/histogram-bellcurve.src.js +91 -86
  605. package/modules/hollowcandlestick.js +9 -9
  606. package/modules/hollowcandlestick.js.map +1 -1
  607. package/modules/hollowcandlestick.src.js +11 -11
  608. package/modules/item-series.js +1 -1
  609. package/modules/item-series.src.js +1 -1
  610. package/modules/lollipop.js +1 -1
  611. package/modules/lollipop.src.js +1 -1
  612. package/modules/map.d.ts +136 -14
  613. package/modules/map.js +142 -122
  614. package/modules/map.js.map +1 -1
  615. package/modules/map.src.d.ts +136 -14
  616. package/modules/map.src.js +2129 -1029
  617. package/modules/marker-clusters.js +36 -36
  618. package/modules/marker-clusters.js.map +1 -1
  619. package/modules/marker-clusters.src.js +173 -142
  620. package/modules/networkgraph.d.ts +12 -1
  621. package/modules/networkgraph.js +49 -49
  622. package/modules/networkgraph.js.map +1 -1
  623. package/modules/networkgraph.src.d.ts +12 -1
  624. package/modules/networkgraph.src.js +91 -43
  625. package/modules/no-data-to-display.js +5 -5
  626. package/modules/no-data-to-display.js.map +1 -1
  627. package/modules/no-data-to-display.src.js +3 -3
  628. package/modules/offline-exporting.js +17 -17
  629. package/modules/offline-exporting.js.map +1 -1
  630. package/modules/offline-exporting.src.js +13 -13
  631. package/modules/oldie-polyfills.js +1 -1
  632. package/modules/oldie-polyfills.src.js +1 -1
  633. package/modules/oldie.js +26 -26
  634. package/modules/oldie.js.map +1 -1
  635. package/modules/oldie.src.js +4 -4
  636. package/modules/organization.js +13 -13
  637. package/modules/organization.js.map +1 -1
  638. package/modules/organization.src.js +4 -4
  639. package/modules/overlapping-datalabels.js +1 -1
  640. package/modules/overlapping-datalabels.src.js +1 -1
  641. package/modules/parallel-coordinates.js +1 -1
  642. package/modules/parallel-coordinates.src.js +1 -1
  643. package/modules/pareto.js +7 -7
  644. package/modules/pareto.js.map +1 -1
  645. package/modules/pareto.src.js +89 -78
  646. package/modules/pathfinder.js +1 -1
  647. package/modules/pathfinder.src.js +1 -1
  648. package/modules/pattern-fill.js +1 -1
  649. package/modules/pattern-fill.src.js +1 -1
  650. package/modules/price-indicator.js +1 -1
  651. package/modules/price-indicator.src.js +1 -1
  652. package/modules/pyramid3d.js +1 -1
  653. package/modules/pyramid3d.src.js +1 -1
  654. package/modules/sankey.d.ts +12 -1
  655. package/modules/sankey.js +29 -29
  656. package/modules/sankey.js.map +1 -1
  657. package/modules/sankey.src.d.ts +12 -1
  658. package/modules/sankey.src.js +300 -176
  659. package/modules/series-label.js +1 -1
  660. package/modules/series-label.src.js +1 -1
  661. package/modules/solid-gauge.js +1 -1
  662. package/modules/solid-gauge.src.js +1 -1
  663. package/modules/sonification.js +59 -55
  664. package/modules/sonification.js.map +1 -1
  665. package/modules/sonification.src.js +3034 -2553
  666. package/modules/static-scale.js +1 -1
  667. package/modules/static-scale.src.js +1 -1
  668. package/modules/stock-tools.js +177 -164
  669. package/modules/stock-tools.js.map +1 -1
  670. package/modules/stock-tools.src.js +1001 -131
  671. package/modules/stock.d.ts +39 -6
  672. package/modules/stock.js +204 -196
  673. package/modules/stock.js.map +1 -1
  674. package/modules/stock.src.d.ts +39 -6
  675. package/modules/stock.src.js +1689 -1081
  676. package/modules/streamgraph.js +1 -1
  677. package/modules/streamgraph.src.js +1 -1
  678. package/modules/sunburst.js +61 -60
  679. package/modules/sunburst.js.map +1 -1
  680. package/modules/sunburst.src.js +329 -266
  681. package/modules/tilemap.js +17 -17
  682. package/modules/tilemap.js.map +1 -1
  683. package/modules/tilemap.src.js +3 -4
  684. package/modules/timeline.js +18 -18
  685. package/modules/timeline.js.map +1 -1
  686. package/modules/timeline.src.js +5 -5
  687. package/modules/treegrid.js +56 -57
  688. package/modules/treegrid.js.map +1 -1
  689. package/modules/treegrid.src.js +126 -120
  690. package/modules/treemap.js +41 -41
  691. package/modules/treemap.js.map +1 -1
  692. package/modules/treemap.src.js +319 -254
  693. package/modules/variable-pie.js +1 -1
  694. package/modules/variable-pie.src.js +1 -1
  695. package/modules/variwide.js +1 -1
  696. package/modules/variwide.src.js +1 -1
  697. package/modules/vector.js +1 -1
  698. package/modules/vector.src.js +1 -1
  699. package/modules/venn.js +31 -31
  700. package/modules/venn.js.map +1 -1
  701. package/modules/venn.src.js +731 -721
  702. package/modules/windbarb.js +15 -15
  703. package/modules/windbarb.js.map +1 -1
  704. package/modules/windbarb.src.js +90 -62
  705. package/modules/wordcloud.js +23 -24
  706. package/modules/wordcloud.js.map +1 -1
  707. package/modules/wordcloud.src.js +897 -949
  708. package/modules/xrange.js +2 -2
  709. package/modules/xrange.js.map +1 -1
  710. package/modules/xrange.src.js +2 -1
  711. package/package.json +1 -1
  712. package/themes/avocado.js +1 -1
  713. package/themes/avocado.src.js +1 -1
  714. package/themes/dark-blue.js +1 -1
  715. package/themes/dark-blue.src.js +1 -1
  716. package/themes/dark-green.js +1 -1
  717. package/themes/dark-green.src.js +1 -1
  718. package/themes/dark-unica.js +1 -1
  719. package/themes/dark-unica.src.js +1 -1
  720. package/themes/gray.js +1 -1
  721. package/themes/gray.src.js +1 -1
  722. package/themes/grid-light.js +1 -1
  723. package/themes/grid-light.src.js +1 -1
  724. package/themes/grid.js +1 -1
  725. package/themes/grid.src.js +1 -1
  726. package/themes/high-contrast-dark.js +1 -1
  727. package/themes/high-contrast-dark.src.js +1 -1
  728. package/themes/high-contrast-light.js +1 -1
  729. package/themes/high-contrast-light.src.js +1 -1
  730. package/themes/sand-signika.js +1 -1
  731. package/themes/sand-signika.src.js +1 -1
  732. package/themes/skies.js +1 -1
  733. package/themes/skies.src.js +1 -1
  734. package/themes/sunset.js +1 -1
  735. package/themes/sunset.src.js +1 -1
  736. package/es-modules/Core/Axis/MapAxis.js +0 -157
  737. package/es-modules/Core/Color/Palette.js +0 -82
  738. package/es-modules/Extensions/Sonification/InstrumentDefinitions.js +0 -32
  739. package/es-modules/Mixins/ColorMapSeries.js +0 -82
  740. package/es-modules/Mixins/ColorSeries.js +0 -77
  741. package/es-modules/Mixins/DerivedSeries.js +0 -118
  742. package/es-modules/Mixins/DrawPoint.js +0 -81
  743. package/es-modules/Mixins/IndicatorRequired.js +0 -56
  744. package/es-modules/Mixins/Navigation.js +0 -54
  745. package/es-modules/Mixins/NelderMead.js +0 -132
  746. package/es-modules/Mixins/Polygon.js +0 -259
  747. 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