highcharts 9.2.2 → 9.3.3

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