highcharts 9.2.1 → 9.3.2

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 (896) 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 +239 -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 +200 -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 +77 -115
  151. package/es-modules/Extensions/DataGrouping.js +54 -32
  152. package/es-modules/Extensions/Debugger/ErrorMessages.js +2 -2
  153. package/es-modules/Extensions/DownloadURL.js +2 -2
  154. package/es-modules/Extensions/DragPanes.js +1 -2
  155. package/es-modules/Extensions/DraggablePoints.js +7 -8
  156. package/es-modules/Extensions/Drilldown.js +11 -7
  157. package/es-modules/Extensions/ExportData.js +6 -5
  158. package/es-modules/Extensions/Exporting/Exporting.js +35 -48
  159. package/es-modules/Extensions/Exporting/ExportingDefaults.js +8 -15
  160. package/es-modules/Extensions/FullScreen.js +4 -3
  161. package/es-modules/Extensions/GeoJSON.js +42 -66
  162. package/es-modules/Extensions/MarkerClusters.js +118 -98
  163. package/es-modules/Extensions/Math3D.js +4 -4
  164. package/es-modules/Extensions/NoDataToDisplay.js +1 -2
  165. package/es-modules/Extensions/OfflineExporting/OfflineExporting.js +33 -33
  166. package/es-modules/Extensions/OfflineExporting/OfflineExportingDefaults.js +1 -1
  167. package/es-modules/Extensions/Oldie/Oldie.js +14 -79
  168. package/es-modules/Extensions/Oldie/VMLAxis3D.js +5 -1
  169. package/es-modules/Extensions/OverlappingDataLabels.js +10 -6
  170. package/es-modules/Extensions/Pane.js +11 -12
  171. package/es-modules/Extensions/ParallelCoordinates.js +5 -3
  172. package/es-modules/Extensions/PatternFill.js +17 -11
  173. package/es-modules/Extensions/Polar.js +7 -4
  174. package/es-modules/Extensions/PriceIndication.js +2 -1
  175. package/es-modules/Extensions/RangeSelector.js +22 -59
  176. package/es-modules/Extensions/ScrollablePlotArea.js +2 -2
  177. package/es-modules/Extensions/SeriesLabel.js +1 -1
  178. package/es-modules/Extensions/Sonification/ChartSonify.js +279 -663
  179. package/es-modules/Extensions/Sonification/Earcon.js +136 -102
  180. package/es-modules/Extensions/Sonification/Instrument.js +493 -426
  181. package/es-modules/Extensions/Sonification/MusicalFrequencies.js +10 -0
  182. package/es-modules/Extensions/Sonification/Options.js +10 -0
  183. package/es-modules/Extensions/Sonification/PointSonify.js +207 -152
  184. package/es-modules/Extensions/Sonification/SeriesSonify.js +474 -0
  185. package/es-modules/Extensions/Sonification/SignalHandler.js +122 -0
  186. package/es-modules/Extensions/Sonification/Sonification.js +27 -53
  187. package/es-modules/Extensions/Sonification/{Utilities.js → SonificationUtilities.js} +70 -88
  188. package/es-modules/Extensions/Sonification/Timeline.js +250 -567
  189. package/es-modules/Extensions/Sonification/TimelineEvent.js +157 -0
  190. package/es-modules/Extensions/Sonification/TimelinePath.js +311 -0
  191. package/es-modules/Extensions/Stacking.js +5 -23
  192. package/es-modules/Extensions/Themes/BrandDark.js +293 -0
  193. package/es-modules/Extensions/Themes/BrandLight.js +259 -0
  194. package/es-modules/Extensions/Themes/DarkUnica.js +4 -2
  195. package/es-modules/Extensions/Themes/Grid.js +4 -2
  196. package/es-modules/Extensions/Themes/GridLight.js +4 -2
  197. package/es-modules/Gantt/Connection.js +2 -2
  198. package/es-modules/Gantt/Pathfinder.js +6 -5
  199. package/es-modules/Gantt/PathfinderAlgorithms.js +12 -12
  200. package/es-modules/Maps/MapNavigation.js +30 -68
  201. package/es-modules/Maps/MapNavigationOptionsDefault.js +3 -0
  202. package/es-modules/Maps/MapPointer.js +8 -5
  203. package/es-modules/Maps/MapSymbols.js +23 -3
  204. package/es-modules/Maps/MapView.js +450 -0
  205. package/es-modules/Maps/MapViewOptionsDefault.js +97 -0
  206. package/es-modules/Maps/Projection.js +436 -0
  207. package/es-modules/Maps/ProjectionDefinition.js +9 -0
  208. package/es-modules/Maps/Projections/EqualEarth.js +42 -0
  209. package/es-modules/Maps/Projections/LambertConformalConic.js +52 -0
  210. package/es-modules/Maps/Projections/Miller.js +16 -0
  211. package/es-modules/Maps/Projections/Orthographic.js +26 -0
  212. package/es-modules/Maps/Projections/ProjectionRegistry.js +19 -0
  213. package/es-modules/Maps/Projections/WebMercator.js +24 -0
  214. package/es-modules/Series/Area/AreaSeries.js +13 -13
  215. package/es-modules/Series/Area3DSeries.js +4 -2
  216. package/es-modules/Series/AreaRange/AreaRangeSeries.js +28 -17
  217. package/es-modules/Series/Bellcurve/BellcurveSeries.js +4 -9
  218. package/es-modules/Series/BoxPlot/BoxPlotSeries.js +1 -2
  219. package/es-modules/Series/Bubble/BubbleLegendDefaults.js +1 -2
  220. package/es-modules/Series/Bubble/BubbleLegendItem.js +5 -15
  221. package/es-modules/Series/Bubble/BubblePoint.js +5 -0
  222. package/es-modules/Series/Bubble/BubbleSeries.js +90 -50
  223. package/es-modules/Series/Candlestick/CandlestickSeries.js +10 -19
  224. package/es-modules/{Mixins/CenteredSeries.js → Series/CenteredUtilities.js} +45 -23
  225. package/es-modules/{Mixins/ColorMapSeries.js → Series/ColorMapMixin.js} +10 -8
  226. package/es-modules/Series/Column/ColumnDataLabel.js +5 -5
  227. package/es-modules/Series/Column/ColumnSeries.js +19 -18
  228. package/es-modules/Series/Column3D/Column3DComposition.js +1 -2
  229. package/es-modules/Series/ColumnPyramid/ColumnPyramidSeries.js +11 -8
  230. package/es-modules/Series/ColumnRange/ColumnRangeSeries.js +2 -1
  231. package/es-modules/Series/Cylinder/CylinderComposition.js +36 -4
  232. package/es-modules/Series/DataModifyComposition.js +539 -0
  233. package/es-modules/Series/DependencyWheel/DependencyWheelPoint.js +2 -6
  234. package/es-modules/Series/DependencyWheel/DependencyWheelSeries.js +1 -1
  235. package/es-modules/Series/DerivedComposition.js +137 -0
  236. package/es-modules/Series/DrawPointComposition.js +111 -0
  237. package/es-modules/Series/Dumbbell/DumbbellPoint.js +0 -1
  238. package/es-modules/Series/Dumbbell/DumbbellSeries.js +2 -6
  239. package/es-modules/Series/ErrorBar/ErrorBarSeries.js +1 -2
  240. package/es-modules/Series/Flags/FlagsSeries.js +18 -25
  241. package/es-modules/Series/Flags/FlagsSymbols.js +2 -2
  242. package/es-modules/Series/Funnel/FunnelSeries.js +6 -5
  243. package/es-modules/Series/Funnel3D/Funnel3DComposition.js +14 -8
  244. package/es-modules/Series/Funnel3D/Funnel3DSeries.js +2 -1
  245. package/es-modules/Series/Gantt/GanttPoint.js +1 -1
  246. package/es-modules/Series/Gantt/GanttSeries.js +3 -3
  247. package/es-modules/Series/Gauge/GaugePoint.js +1 -1
  248. package/es-modules/Series/Gauge/GaugeSeries.js +7 -7
  249. package/es-modules/Series/HLC/HLCPoint.js +55 -0
  250. package/es-modules/Series/HLC/HLCSeries.js +378 -0
  251. package/es-modules/Series/Heatmap/HeatmapPoint.js +13 -14
  252. package/es-modules/Series/Heatmap/HeatmapSeries.js +24 -12
  253. package/es-modules/Series/HeikinAshi/HeikinAshiSeries.js +10 -9
  254. package/es-modules/Series/Histogram/HistogramSeries.js +7 -11
  255. package/es-modules/Series/HollowCandlestick/HollowCandlestickPoint.js +1 -4
  256. package/es-modules/Series/HollowCandlestick/HollowCandlestickSeries.js +28 -30
  257. package/es-modules/Series/Item/ItemSeries.js +4 -5
  258. package/es-modules/Series/Line/LineSeries.js +1 -2
  259. package/es-modules/Series/Map/MapPoint.js +27 -14
  260. package/es-modules/Series/Map/MapSeries.js +283 -322
  261. package/es-modules/Series/MapBubble/MapBubblePoint.js +0 -3
  262. package/es-modules/Series/MapBubble/MapBubbleSeries.js +10 -1
  263. package/es-modules/Series/MapLine/MapLineSeries.js +2 -4
  264. package/es-modules/Series/MapPoint/MapPointPoint.js +5 -1
  265. package/es-modules/Series/MapPoint/MapPointSeries.js +99 -14
  266. package/es-modules/Series/Networkgraph/DraggableNodes.js +0 -4
  267. package/es-modules/Series/Networkgraph/Integrations.js +8 -22
  268. package/es-modules/Series/Networkgraph/Networkgraph.js +6 -10
  269. package/es-modules/Series/Networkgraph/QuadTree.js +1 -3
  270. package/es-modules/{Mixins/Nodes.js → Series/NodesComposition.js} +78 -30
  271. package/es-modules/Series/OHLC/OHLCPoint.js +2 -7
  272. package/es-modules/Series/OHLC/OHLCSeries.js +55 -183
  273. package/es-modules/{Mixins/OnSeries.js → Series/OnSeriesComposition.js} +53 -21
  274. package/es-modules/Series/Organization/OrganizationSeries.js +6 -5
  275. package/es-modules/Series/PackedBubble/PackedBubbleComposition.js +1 -0
  276. package/es-modules/Series/PackedBubble/PackedBubblePoint.js +1 -1
  277. package/es-modules/Series/PackedBubble/PackedBubbleSeries.js +48 -10
  278. package/es-modules/Series/ParetoSeries/ParetoSeries.js +3 -7
  279. package/es-modules/Series/Pie/PieDataLabel.js +1 -2
  280. package/es-modules/Series/Pie/PiePoint.js +2 -2
  281. package/es-modules/Series/Pie/PieSeries.js +7 -8
  282. package/es-modules/Series/Pie3D/Pie3DComposition.js +2 -1
  283. package/es-modules/Series/Pie3D/Pie3DPoint.js +2 -1
  284. package/es-modules/Series/Pie3D/Pie3DSeries.js +1 -1
  285. package/es-modules/Series/Pyramid3D/Pyramid3DSeries.js +2 -1
  286. package/es-modules/Series/Sankey/SankeyPoint.js +0 -4
  287. package/es-modules/Series/Sankey/SankeySeries.js +92 -22
  288. package/es-modules/Series/SolidGauge/SolidGaugeComposition.js +3 -1
  289. package/es-modules/Series/Spline/SplineSeries.js +0 -8
  290. package/es-modules/Series/Sunburst/SunburstPoint.js +2 -3
  291. package/es-modules/Series/Sunburst/SunburstSeries.js +6 -6
  292. package/es-modules/Series/Sunburst/SunburstUtilities.js +3 -2
  293. package/es-modules/Series/Tilemap/TilemapPoint.js +2 -5
  294. package/es-modules/Series/Tilemap/TilemapShapes.js +0 -7
  295. package/es-modules/Series/Timeline/TimelineSeries.js +3 -4
  296. package/es-modules/{Mixins/TreeSeries.js → Series/TreeUtilities.js} +88 -78
  297. package/es-modules/Series/Treemap/TreemapPoint.js +2 -2
  298. package/es-modules/Series/Treemap/TreemapSeries.js +22 -25
  299. package/es-modules/Series/Variwide/VariwideSeries.js +5 -1
  300. package/es-modules/Series/Venn/VennPoint.js +16 -7
  301. package/es-modules/Series/Venn/VennSeries.js +11 -17
  302. package/es-modules/Series/Venn/VennUtils.js +551 -439
  303. package/es-modules/Series/Waterfall/WaterfallSeries.js +8 -6
  304. package/es-modules/Series/Windbarb/WindbarbSeries.js +23 -24
  305. package/es-modules/Series/Wordcloud/WordcloudPoint.js +8 -6
  306. package/es-modules/Series/Wordcloud/WordcloudSeries.js +26 -22
  307. package/es-modules/Series/Wordcloud/WordcloudUtils.js +669 -484
  308. package/es-modules/Series/XRange/XRangePoint.js +7 -12
  309. package/es-modules/Series/XRange/XRangeSeries.js +4 -20
  310. package/es-modules/Stock/Indicators/ABands/ABandsIndicator.js +15 -6
  311. package/es-modules/Stock/Indicators/AO/AOIndicator.js +2 -3
  312. package/es-modules/Stock/Indicators/APO/APOIndicator.js +14 -20
  313. package/es-modules/Stock/Indicators/Aroon/AroonIndicator.js +4 -6
  314. package/es-modules/Stock/Indicators/AroonOscillator/AroonOscillatorIndicator.js +11 -13
  315. package/es-modules/Stock/Indicators/ArrayUtilities.js +47 -0
  316. package/es-modules/Stock/Indicators/BB/BBIndicator.js +39 -11
  317. package/es-modules/Stock/Indicators/CMF/CMFIndicator.js +35 -15
  318. package/es-modules/Stock/Indicators/Chaikin/ChaikinIndicator.js +6 -12
  319. package/es-modules/Stock/Indicators/DEMA/DEMAIndicator.js +1 -11
  320. package/es-modules/Stock/Indicators/DMI/DMIIndicator.js +28 -16
  321. package/es-modules/Stock/Indicators/DisparityIndex/DisparityIndexIndicator.js +18 -11
  322. package/es-modules/Stock/Indicators/EMA/EMAIndicator.js +1 -3
  323. package/es-modules/Stock/Indicators/IKH/IKHIndicator.js +6 -6
  324. package/es-modules/Stock/Indicators/KeltnerChannels/KeltnerChannelsIndicator.js +23 -9
  325. package/es-modules/Stock/Indicators/Klinger/KlingerIndicator.js +16 -19
  326. package/es-modules/Stock/Indicators/LinearRegression/LinearRegression.js +32 -14
  327. package/es-modules/Stock/Indicators/LinearRegressionAngle/LinearRegressionAngle.js +2 -2
  328. package/es-modules/Stock/Indicators/LinearRegressionIntercept/LinearRegressionIntercept.js +2 -2
  329. package/es-modules/Stock/Indicators/LinearRegressionSlopes/LinearRegressionSlopes.js +2 -2
  330. package/es-modules/Stock/Indicators/MACD/MACDIndicator.js +2 -3
  331. package/es-modules/Stock/Indicators/MultipleLinesComposition.js +294 -0
  332. package/es-modules/Stock/Indicators/NATR/NATRIndicator.js +1 -3
  333. package/es-modules/Stock/Indicators/PC/PCIndicator.js +25 -13
  334. package/es-modules/Stock/Indicators/PPO/PPOIndicator.js +1 -11
  335. package/es-modules/Stock/Indicators/PivotPoints/PivotPointsIndicator.js +2 -1
  336. package/es-modules/Stock/Indicators/RSI/RSIIndicator.js +2 -1
  337. package/es-modules/Stock/Indicators/SMA/SMAComposition.js +0 -26
  338. package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +32 -50
  339. package/es-modules/Stock/Indicators/SlowStochastic/SlowStochasticIndicator.js +0 -8
  340. package/es-modules/Stock/Indicators/Stochastic/StochasticIndicator.js +18 -9
  341. package/es-modules/Stock/Indicators/Supertrend/SupertrendIndicator.js +4 -6
  342. package/es-modules/Stock/Indicators/TEMA/TEMAIndicator.js +26 -11
  343. package/es-modules/Stock/Indicators/TRIX/TRIXIndicator.js +6 -12
  344. package/es-modules/Stock/Indicators/VBP/VBPIndicator.js +26 -10
  345. package/es-modules/Stock/Indicators/VWAP/VWAPIndicator.js +19 -7
  346. package/es-modules/Stock/Indicators/WilliamsR/WilliamsRIndicator.js +2 -3
  347. package/es-modules/Stock/StockToolsBindings.js +156 -47
  348. package/es-modules/Stock/StockToolsGui.js +442 -37
  349. package/es-modules/masters/highcharts-3d.src.js +1 -1
  350. package/es-modules/masters/highcharts-gantt.src.js +1 -1
  351. package/es-modules/masters/highcharts-more.src.js +1 -1
  352. package/es-modules/masters/highcharts.src.js +1 -1
  353. package/es-modules/masters/highmaps.src.js +1 -1
  354. package/es-modules/masters/highstock.src.js +1 -1
  355. package/es-modules/masters/indicators/acceleration-bands.src.js +1 -1
  356. package/es-modules/masters/indicators/accumulation-distribution.src.js +1 -1
  357. package/es-modules/masters/indicators/ao.src.js +1 -1
  358. package/es-modules/masters/indicators/apo.src.js +1 -1
  359. package/es-modules/masters/indicators/aroon-oscillator.src.js +1 -1
  360. package/es-modules/masters/indicators/aroon.src.js +1 -1
  361. package/es-modules/masters/indicators/atr.src.js +1 -1
  362. package/es-modules/masters/indicators/bollinger-bands.src.js +1 -1
  363. package/es-modules/masters/indicators/cci.src.js +1 -1
  364. package/es-modules/masters/indicators/chaikin.src.js +1 -1
  365. package/es-modules/masters/indicators/cmf.src.js +1 -1
  366. package/es-modules/masters/indicators/cmo.src.js +1 -1
  367. package/es-modules/masters/indicators/dema.src.js +1 -1
  368. package/es-modules/masters/indicators/disparity-index.src.js +1 -1
  369. package/es-modules/masters/indicators/dmi.src.js +1 -1
  370. package/es-modules/masters/indicators/dpo.src.js +1 -1
  371. package/es-modules/masters/indicators/ema.src.js +4 -10
  372. package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
  373. package/es-modules/masters/indicators/indicators-all.src.js +2 -2
  374. package/es-modules/masters/indicators/indicators.src.js +2 -1
  375. package/es-modules/masters/indicators/keltner-channels.src.js +1 -1
  376. package/es-modules/masters/indicators/klinger.src.js +1 -1
  377. package/es-modules/masters/indicators/macd.src.js +1 -1
  378. package/es-modules/masters/indicators/mfi.src.js +1 -1
  379. package/es-modules/masters/indicators/momentum.src.js +1 -1
  380. package/es-modules/masters/indicators/natr.src.js +1 -1
  381. package/es-modules/masters/indicators/obv.src.js +1 -1
  382. package/es-modules/masters/indicators/pivot-points.src.js +1 -1
  383. package/es-modules/masters/indicators/ppo.src.js +1 -1
  384. package/es-modules/masters/indicators/price-channel.src.js +1 -1
  385. package/es-modules/masters/indicators/price-envelopes.src.js +1 -1
  386. package/es-modules/masters/indicators/psar.src.js +1 -1
  387. package/es-modules/masters/indicators/regressions.src.js +1 -1
  388. package/es-modules/masters/indicators/roc.src.js +1 -1
  389. package/es-modules/masters/indicators/rsi.src.js +1 -1
  390. package/es-modules/masters/indicators/slow-stochastic.src.js +1 -1
  391. package/es-modules/masters/indicators/stochastic.src.js +1 -1
  392. package/es-modules/masters/indicators/supertrend.src.js +1 -1
  393. package/es-modules/masters/indicators/tema.src.js +1 -1
  394. package/es-modules/masters/indicators/trendline.src.js +1 -1
  395. package/es-modules/masters/indicators/trix.src.js +1 -1
  396. package/es-modules/masters/indicators/volume-by-price.src.js +1 -1
  397. package/es-modules/masters/indicators/vwap.src.js +1 -1
  398. package/es-modules/masters/indicators/williams-r.src.js +1 -1
  399. package/es-modules/masters/indicators/wma.src.js +1 -1
  400. package/es-modules/masters/indicators/zigzag.src.js +1 -1
  401. package/es-modules/masters/modules/accessibility.src.js +16 -2
  402. package/es-modules/masters/modules/annotations-advanced.src.js +3 -1
  403. package/es-modules/masters/modules/annotations.src.js +1 -1
  404. package/es-modules/masters/modules/arrow-symbols.src.js +1 -1
  405. package/es-modules/masters/modules/boost-canvas.src.js +1 -1
  406. package/es-modules/masters/modules/boost.src.js +1 -1
  407. package/es-modules/masters/modules/broken-axis.src.js +1 -1
  408. package/es-modules/masters/modules/bullet.src.js +1 -1
  409. package/es-modules/masters/modules/coloraxis.src.js +1 -1
  410. package/es-modules/masters/modules/current-date-indicator.src.js +1 -1
  411. package/es-modules/masters/modules/cylinder.src.js +1 -1
  412. package/es-modules/masters/modules/data.src.js +6 -3
  413. package/es-modules/masters/modules/datagrouping.src.js +1 -1
  414. package/es-modules/masters/modules/debugger.src.js +1 -1
  415. package/es-modules/masters/modules/dependency-wheel.src.js +1 -1
  416. package/es-modules/masters/modules/dotplot.src.js +1 -1
  417. package/es-modules/masters/modules/drag-panes.src.js +1 -1
  418. package/es-modules/masters/modules/draggable-points.src.js +1 -1
  419. package/es-modules/masters/modules/drilldown.src.js +1 -1
  420. package/es-modules/masters/modules/dumbbell.src.js +1 -1
  421. package/es-modules/masters/modules/export-data.src.js +1 -1
  422. package/es-modules/masters/modules/exporting.src.js +1 -1
  423. package/es-modules/masters/modules/full-screen.src.js +1 -1
  424. package/es-modules/masters/modules/funnel.src.js +1 -1
  425. package/es-modules/masters/modules/funnel3d.src.js +1 -1
  426. package/es-modules/masters/modules/gantt.src.js +1 -1
  427. package/es-modules/masters/modules/grid-axis.src.js +1 -1
  428. package/es-modules/masters/modules/heatmap.src.js +1 -2
  429. package/es-modules/masters/modules/heikinashi.src.js +1 -1
  430. package/es-modules/masters/modules/histogram-bellcurve.src.js +1 -1
  431. package/es-modules/masters/modules/hollowcandlestick.src.js +1 -1
  432. package/es-modules/masters/modules/item-series.src.js +1 -1
  433. package/es-modules/masters/modules/lollipop.src.js +1 -1
  434. package/es-modules/masters/modules/map.src.js +1 -3
  435. package/es-modules/masters/modules/marker-clusters.src.js +1 -1
  436. package/es-modules/masters/modules/networkgraph.src.js +1 -1
  437. package/es-modules/masters/modules/no-data-to-display.src.js +1 -1
  438. package/es-modules/masters/modules/offline-exporting.src.js +1 -1
  439. package/es-modules/masters/modules/oldie-polyfills.src.js +1 -1
  440. package/es-modules/masters/modules/oldie.src.js +1 -1
  441. package/es-modules/masters/modules/organization.src.js +1 -1
  442. package/es-modules/masters/modules/overlapping-datalabels.src.js +1 -1
  443. package/es-modules/masters/modules/parallel-coordinates.src.js +1 -1
  444. package/es-modules/masters/modules/pareto.src.js +1 -1
  445. package/es-modules/masters/modules/pathfinder.src.js +1 -1
  446. package/es-modules/masters/modules/pattern-fill.src.js +1 -1
  447. package/es-modules/masters/modules/price-indicator.src.js +1 -1
  448. package/es-modules/masters/modules/pyramid3d.src.js +1 -1
  449. package/es-modules/masters/modules/sankey.src.js +1 -1
  450. package/es-modules/masters/modules/series-label.src.js +1 -1
  451. package/es-modules/masters/modules/solid-gauge.src.js +1 -1
  452. package/es-modules/masters/modules/sonification.src.js +33 -2
  453. package/es-modules/masters/modules/static-scale.src.js +1 -1
  454. package/es-modules/masters/modules/stock-tools.src.js +1 -1
  455. package/es-modules/masters/modules/stock.src.js +4 -1
  456. package/es-modules/masters/modules/streamgraph.src.js +1 -1
  457. package/es-modules/masters/modules/sunburst.src.js +1 -1
  458. package/es-modules/masters/modules/tilemap.src.js +1 -1
  459. package/es-modules/masters/modules/timeline.src.js +1 -1
  460. package/es-modules/masters/modules/treegrid.src.js +1 -1
  461. package/es-modules/masters/modules/treemap.src.js +1 -1
  462. package/es-modules/masters/modules/variable-pie.src.js +1 -1
  463. package/es-modules/masters/modules/variwide.src.js +1 -1
  464. package/es-modules/masters/modules/vector.src.js +1 -1
  465. package/es-modules/masters/modules/venn.src.js +1 -1
  466. package/es-modules/masters/modules/windbarb.src.js +1 -1
  467. package/es-modules/masters/modules/wordcloud.src.js +1 -1
  468. package/es-modules/masters/modules/xrange.src.js +1 -1
  469. package/es-modules/masters/themes/avocado.src.js +1 -1
  470. package/es-modules/masters/themes/brand-dark.src.js +14 -0
  471. package/es-modules/masters/themes/brand-light.src.js +14 -0
  472. package/es-modules/masters/themes/dark-blue.src.js +1 -1
  473. package/es-modules/masters/themes/dark-green.src.js +1 -1
  474. package/es-modules/masters/themes/dark-unica.src.js +1 -1
  475. package/es-modules/masters/themes/gray.src.js +1 -1
  476. package/es-modules/masters/themes/grid-light.src.js +1 -1
  477. package/es-modules/masters/themes/grid.src.js +1 -1
  478. package/es-modules/masters/themes/high-contrast-dark.src.js +1 -1
  479. package/es-modules/masters/themes/high-contrast-light.src.js +1 -1
  480. package/es-modules/masters/themes/sand-signika.src.js +1 -1
  481. package/es-modules/masters/themes/skies.src.js +1 -1
  482. package/es-modules/masters/themes/sunset.src.js +1 -1
  483. package/highcharts-3d.js +1 -1
  484. package/highcharts-3d.js.map +1 -1
  485. package/highcharts-3d.src.js +65 -35
  486. package/highcharts-gantt.js +800 -803
  487. package/highcharts-gantt.js.map +1 -1
  488. package/highcharts-gantt.src.js +1359 -1429
  489. package/highcharts-more.js +194 -193
  490. package/highcharts-more.js.map +1 -1
  491. package/highcharts-more.src.js +280 -222
  492. package/highcharts.d.ts +10228 -768
  493. package/highcharts.js +585 -588
  494. package/highcharts.js.map +1 -1
  495. package/highcharts.src.d.ts +10228 -768
  496. package/highcharts.src.js +995 -1066
  497. package/highmaps.js +727 -707
  498. package/highmaps.js.map +1 -1
  499. package/highmaps.src.js +3243 -2135
  500. package/highstock.js +788 -783
  501. package/highstock.js.map +1 -1
  502. package/highstock.src.js +2492 -1981
  503. package/indicators/acceleration-bands.d.ts +17 -1
  504. package/indicators/acceleration-bands.js +11 -9
  505. package/indicators/acceleration-bands.js.map +1 -1
  506. package/indicators/acceleration-bands.src.d.ts +17 -1
  507. package/indicators/acceleration-bands.src.js +238 -112
  508. package/indicators/accumulation-distribution.js +1 -1
  509. package/indicators/accumulation-distribution.src.js +1 -1
  510. package/indicators/ao.js +6 -6
  511. package/indicators/ao.js.map +1 -1
  512. package/indicators/ao.src.js +4 -4
  513. package/indicators/apo.js +5 -6
  514. package/indicators/apo.js.map +1 -1
  515. package/indicators/apo.src.js +16 -84
  516. package/indicators/aroon-oscillator.d.ts +17 -1
  517. package/indicators/aroon-oscillator.js +10 -9
  518. package/indicators/aroon-oscillator.js.map +1 -1
  519. package/indicators/aroon-oscillator.src.d.ts +17 -1
  520. package/indicators/aroon-oscillator.src.js +230 -177
  521. package/indicators/aroon.d.ts +17 -1
  522. package/indicators/aroon.js +11 -9
  523. package/indicators/aroon.js.map +1 -1
  524. package/indicators/aroon.src.d.ts +17 -1
  525. package/indicators/aroon.src.js +227 -112
  526. package/indicators/atr.js +1 -1
  527. package/indicators/atr.src.js +1 -1
  528. package/indicators/bollinger-bands.d.ts +17 -1
  529. package/indicators/bollinger-bands.js +12 -9
  530. package/indicators/bollinger-bands.js.map +1 -1
  531. package/indicators/bollinger-bands.src.d.ts +17 -1
  532. package/indicators/bollinger-bands.src.js +262 -117
  533. package/indicators/cci.js +1 -1
  534. package/indicators/cci.src.js +1 -1
  535. package/indicators/chaikin.js +8 -9
  536. package/indicators/chaikin.js.map +1 -1
  537. package/indicators/chaikin.src.js +8 -76
  538. package/indicators/cmf.js +1 -1
  539. package/indicators/cmf.js.map +1 -1
  540. package/indicators/cmf.src.js +36 -16
  541. package/indicators/cmo.js +1 -1
  542. package/indicators/cmo.src.js +1 -1
  543. package/indicators/dema.js +5 -6
  544. package/indicators/dema.js.map +1 -1
  545. package/indicators/dema.src.js +3 -75
  546. package/indicators/disparity-index.js +6 -7
  547. package/indicators/disparity-index.js.map +1 -1
  548. package/indicators/disparity-index.src.js +20 -74
  549. package/indicators/dmi.js +12 -11
  550. package/indicators/dmi.js.map +1 -1
  551. package/indicators/dmi.src.js +252 -121
  552. package/indicators/dpo.js +1 -1
  553. package/indicators/dpo.src.js +1 -1
  554. package/indicators/ema.js +1 -13
  555. package/indicators/ema.js.map +1 -1
  556. package/indicators/ema.src.js +7 -188
  557. package/indicators/ichimoku-kinko-hyo.js +1 -1
  558. package/indicators/ichimoku-kinko-hyo.js.map +1 -1
  559. package/indicators/ichimoku-kinko-hyo.src.js +7 -7
  560. package/indicators/indicators-all.d.ts +17 -1
  561. package/indicators/indicators-all.js +198 -203
  562. package/indicators/indicators-all.js.map +1 -1
  563. package/indicators/indicators-all.src.d.ts +17 -1
  564. package/indicators/indicators-all.src.js +892 -777
  565. package/indicators/indicators.js +12 -12
  566. package/indicators/indicators.js.map +1 -1
  567. package/indicators/indicators.src.js +213 -144
  568. package/indicators/keltner-channels.d.ts +17 -1
  569. package/indicators/keltner-channels.js +11 -10
  570. package/indicators/keltner-channels.js.map +1 -1
  571. package/indicators/keltner-channels.src.d.ts +17 -1
  572. package/indicators/keltner-channels.src.js +246 -118
  573. package/indicators/klinger.js +14 -13
  574. package/indicators/klinger.js.map +1 -1
  575. package/indicators/klinger.src.js +239 -187
  576. package/indicators/macd.js +2 -2
  577. package/indicators/macd.js.map +1 -1
  578. package/indicators/macd.src.js +3 -4
  579. package/indicators/mfi.js +1 -1
  580. package/indicators/mfi.src.js +1 -1
  581. package/indicators/momentum.js +1 -1
  582. package/indicators/momentum.src.js +1 -1
  583. package/indicators/natr.js +3 -3
  584. package/indicators/natr.js.map +1 -1
  585. package/indicators/natr.src.js +2 -4
  586. package/indicators/obv.js +1 -1
  587. package/indicators/obv.src.js +1 -1
  588. package/indicators/pivot-points.js +1 -1
  589. package/indicators/pivot-points.js.map +1 -1
  590. package/indicators/pivot-points.src.js +3 -2
  591. package/indicators/ppo.js +5 -6
  592. package/indicators/ppo.js.map +1 -1
  593. package/indicators/ppo.src.js +3 -75
  594. package/indicators/price-channel.d.ts +17 -1
  595. package/indicators/price-channel.js +11 -9
  596. package/indicators/price-channel.js.map +1 -1
  597. package/indicators/price-channel.src.d.ts +17 -1
  598. package/indicators/price-channel.src.js +288 -168
  599. package/indicators/price-envelopes.js +1 -1
  600. package/indicators/price-envelopes.src.js +1 -1
  601. package/indicators/psar.js +1 -1
  602. package/indicators/psar.src.js +1 -1
  603. package/indicators/regressions.js +1 -1
  604. package/indicators/regressions.js.map +1 -1
  605. package/indicators/regressions.src.js +39 -21
  606. package/indicators/roc.js +1 -1
  607. package/indicators/roc.src.js +1 -1
  608. package/indicators/rsi.js +1 -1
  609. package/indicators/rsi.js.map +1 -1
  610. package/indicators/rsi.src.js +3 -2
  611. package/indicators/slow-stochastic.js +5 -6
  612. package/indicators/slow-stochastic.js.map +1 -1
  613. package/indicators/slow-stochastic.src.js +2 -72
  614. package/indicators/stochastic.d.ts +17 -1
  615. package/indicators/stochastic.js +12 -10
  616. package/indicators/stochastic.js.map +1 -1
  617. package/indicators/stochastic.src.d.ts +17 -1
  618. package/indicators/stochastic.src.js +282 -165
  619. package/indicators/supertrend.js +10 -10
  620. package/indicators/supertrend.js.map +1 -1
  621. package/indicators/supertrend.src.js +6 -7
  622. package/indicators/tema.js +6 -7
  623. package/indicators/tema.js.map +1 -1
  624. package/indicators/tema.src.js +28 -75
  625. package/indicators/trendline.js +1 -1
  626. package/indicators/trendline.src.js +1 -1
  627. package/indicators/trix.js +4 -5
  628. package/indicators/trix.js.map +1 -1
  629. package/indicators/trix.src.js +8 -76
  630. package/indicators/volume-by-price.js +16 -16
  631. package/indicators/volume-by-price.js.map +1 -1
  632. package/indicators/volume-by-price.src.js +27 -10
  633. package/indicators/vwap.js +1 -1
  634. package/indicators/vwap.js.map +1 -1
  635. package/indicators/vwap.src.js +20 -8
  636. package/indicators/williams-r.js +5 -6
  637. package/indicators/williams-r.js.map +1 -1
  638. package/indicators/williams-r.src.js +41 -51
  639. package/indicators/wma.js +1 -1
  640. package/indicators/wma.src.js +1 -1
  641. package/indicators/zigzag.js +1 -1
  642. package/indicators/zigzag.src.js +1 -1
  643. package/modules/accessibility.d.ts +0 -30
  644. package/modules/accessibility.js +240 -216
  645. package/modules/accessibility.js.map +1 -1
  646. package/modules/accessibility.src.d.ts +0 -30
  647. package/modules/accessibility.src.js +7807 -6400
  648. package/modules/annotations-advanced.d.ts +30 -0
  649. package/modules/annotations-advanced.js +192 -165
  650. package/modules/annotations-advanced.js.map +1 -1
  651. package/modules/annotations-advanced.src.d.ts +30 -0
  652. package/modules/annotations-advanced.src.js +1716 -416
  653. package/modules/annotations.js +125 -110
  654. package/modules/annotations.js.map +1 -1
  655. package/modules/annotations.src.js +1059 -304
  656. package/modules/arrow-symbols.js +1 -1
  657. package/modules/arrow-symbols.src.js +1 -1
  658. package/modules/boost-canvas.js +15 -15
  659. package/modules/boost-canvas.js.map +1 -1
  660. package/modules/boost-canvas.src.js +3 -3
  661. package/modules/boost.js +79 -79
  662. package/modules/boost.js.map +1 -1
  663. package/modules/boost.src.js +42 -51
  664. package/modules/broken-axis.js +1 -1
  665. package/modules/broken-axis.js.map +1 -1
  666. package/modules/broken-axis.src.js +18 -12
  667. package/modules/bullet.js +1 -1
  668. package/modules/bullet.src.js +1 -1
  669. package/modules/coloraxis.js +24 -24
  670. package/modules/coloraxis.js.map +1 -1
  671. package/modules/coloraxis.src.js +77 -103
  672. package/modules/current-date-indicator.js +4 -4
  673. package/modules/current-date-indicator.js.map +1 -1
  674. package/modules/current-date-indicator.src.js +4 -4
  675. package/modules/cylinder.js +1 -1
  676. package/modules/cylinder.js.map +1 -1
  677. package/modules/cylinder.src.js +37 -5
  678. package/modules/data.d.ts +6 -6
  679. package/modules/data.js +32 -32
  680. package/modules/data.js.map +1 -1
  681. package/modules/data.src.d.ts +6 -6
  682. package/modules/data.src.js +94 -140
  683. package/modules/datagrouping.js +20 -20
  684. package/modules/datagrouping.js.map +1 -1
  685. package/modules/datagrouping.src.js +56 -33
  686. package/modules/debugger.js +3 -3
  687. package/modules/debugger.js.map +1 -1
  688. package/modules/debugger.src.js +3 -3
  689. package/modules/dependency-wheel.js +11 -11
  690. package/modules/dependency-wheel.js.map +1 -1
  691. package/modules/dependency-wheel.src.js +5 -8
  692. package/modules/dotplot.js +1 -1
  693. package/modules/dotplot.src.js +1 -1
  694. package/modules/drag-panes.js +8 -8
  695. package/modules/drag-panes.js.map +1 -1
  696. package/modules/drag-panes.src.js +3 -3
  697. package/modules/draggable-points.js +1 -1
  698. package/modules/draggable-points.js.map +1 -1
  699. package/modules/draggable-points.src.js +8 -9
  700. package/modules/drilldown.js +24 -24
  701. package/modules/drilldown.js.map +1 -1
  702. package/modules/drilldown.src.js +13 -8
  703. package/modules/dumbbell.js +17 -17
  704. package/modules/dumbbell.js.map +1 -1
  705. package/modules/dumbbell.src.js +4 -8
  706. package/modules/export-data.js +19 -19
  707. package/modules/export-data.js.map +1 -1
  708. package/modules/export-data.src.js +9 -8
  709. package/modules/exporting.js +39 -38
  710. package/modules/exporting.js.map +1 -1
  711. package/modules/exporting.src.js +134 -116
  712. package/modules/full-screen.js +1 -1
  713. package/modules/full-screen.js.map +1 -1
  714. package/modules/full-screen.src.js +5 -4
  715. package/modules/funnel.js +12 -12
  716. package/modules/funnel.js.map +1 -1
  717. package/modules/funnel.src.js +9 -6
  718. package/modules/funnel3d.js +1 -1
  719. package/modules/funnel3d.js.map +1 -1
  720. package/modules/funnel3d.src.js +17 -10
  721. package/modules/gantt.js +217 -218
  722. package/modules/gantt.js.map +1 -1
  723. package/modules/gantt.src.js +364 -363
  724. package/modules/grid-axis.js +1 -1
  725. package/modules/grid-axis.js.map +1 -1
  726. package/modules/grid-axis.src.js +27 -19
  727. package/modules/heatmap.js +39 -39
  728. package/modules/heatmap.js.map +1 -1
  729. package/modules/heatmap.src.js +132 -141
  730. package/modules/heikinashi.js +1 -1
  731. package/modules/heikinashi.js.map +1 -1
  732. package/modules/heikinashi.src.js +12 -10
  733. package/modules/histogram-bellcurve.js +13 -13
  734. package/modules/histogram-bellcurve.js.map +1 -1
  735. package/modules/histogram-bellcurve.src.js +97 -91
  736. package/modules/hollowcandlestick.js +9 -9
  737. package/modules/hollowcandlestick.js.map +1 -1
  738. package/modules/hollowcandlestick.src.js +31 -35
  739. package/modules/item-series.js +6 -6
  740. package/modules/item-series.js.map +1 -1
  741. package/modules/item-series.src.js +6 -6
  742. package/modules/lollipop.js +1 -1
  743. package/modules/lollipop.src.js +1 -1
  744. package/modules/map.d.ts +138 -14
  745. package/modules/map.js +144 -122
  746. package/modules/map.js.map +1 -1
  747. package/modules/map.src.d.ts +138 -14
  748. package/modules/map.src.js +2253 -1074
  749. package/modules/marker-clusters.js +36 -36
  750. package/modules/marker-clusters.js.map +1 -1
  751. package/modules/marker-clusters.src.js +176 -143
  752. package/modules/networkgraph.d.ts +12 -1
  753. package/modules/networkgraph.js +49 -49
  754. package/modules/networkgraph.js.map +1 -1
  755. package/modules/networkgraph.src.d.ts +12 -1
  756. package/modules/networkgraph.src.js +103 -78
  757. package/modules/no-data-to-display.js +5 -5
  758. package/modules/no-data-to-display.js.map +1 -1
  759. package/modules/no-data-to-display.src.js +3 -3
  760. package/modules/offline-exporting.js +18 -17
  761. package/modules/offline-exporting.js.map +1 -1
  762. package/modules/offline-exporting.src.js +39 -44
  763. package/modules/oldie-polyfills.js +1 -1
  764. package/modules/oldie-polyfills.src.js +1 -1
  765. package/modules/oldie.js +26 -26
  766. package/modules/oldie.js.map +1 -1
  767. package/modules/oldie.src.js +21 -81
  768. package/modules/organization.js +13 -13
  769. package/modules/organization.js.map +1 -1
  770. package/modules/organization.src.js +8 -6
  771. package/modules/overlapping-datalabels.js +1 -1
  772. package/modules/overlapping-datalabels.src.js +1 -1
  773. package/modules/parallel-coordinates.js +1 -1
  774. package/modules/parallel-coordinates.js.map +1 -1
  775. package/modules/parallel-coordinates.src.js +6 -4
  776. package/modules/pareto.js +7 -7
  777. package/modules/pareto.js.map +1 -1
  778. package/modules/pareto.src.js +89 -78
  779. package/modules/pathfinder.js +1 -1
  780. package/modules/pathfinder.js.map +1 -1
  781. package/modules/pathfinder.src.js +21 -20
  782. package/modules/pattern-fill.js +1 -1
  783. package/modules/pattern-fill.js.map +1 -1
  784. package/modules/pattern-fill.src.js +18 -12
  785. package/modules/price-indicator.js +1 -1
  786. package/modules/price-indicator.js.map +1 -1
  787. package/modules/price-indicator.src.js +3 -2
  788. package/modules/pyramid3d.js +1 -1
  789. package/modules/pyramid3d.js.map +1 -1
  790. package/modules/pyramid3d.src.js +3 -2
  791. package/modules/sankey.d.ts +12 -1
  792. package/modules/sankey.js +29 -29
  793. package/modules/sankey.js.map +1 -1
  794. package/modules/sankey.src.d.ts +12 -1
  795. package/modules/sankey.src.js +307 -181
  796. package/modules/series-label.js +1 -1
  797. package/modules/series-label.js.map +1 -1
  798. package/modules/series-label.src.js +2 -2
  799. package/modules/solid-gauge.js +1 -1
  800. package/modules/solid-gauge.js.map +1 -1
  801. package/modules/solid-gauge.src.js +17 -2
  802. package/modules/sonification.js +59 -55
  803. package/modules/sonification.js.map +1 -1
  804. package/modules/sonification.src.js +3093 -2594
  805. package/modules/static-scale.js +1 -1
  806. package/modules/static-scale.src.js +1 -1
  807. package/modules/stock-tools.js +178 -163
  808. package/modules/stock-tools.js.map +1 -1
  809. package/modules/stock-tools.src.js +1136 -229
  810. package/modules/stock.d.ts +39 -6
  811. package/modules/stock.js +204 -196
  812. package/modules/stock.js.map +1 -1
  813. package/modules/stock.src.d.ts +39 -6
  814. package/modules/stock.src.js +1822 -1240
  815. package/modules/streamgraph.js +1 -1
  816. package/modules/streamgraph.src.js +1 -1
  817. package/modules/sunburst.js +60 -60
  818. package/modules/sunburst.js.map +1 -1
  819. package/modules/sunburst.src.js +281 -248
  820. package/modules/tilemap.js +17 -17
  821. package/modules/tilemap.js.map +1 -1
  822. package/modules/tilemap.src.js +3 -13
  823. package/modules/timeline.js +18 -18
  824. package/modules/timeline.js.map +1 -1
  825. package/modules/timeline.src.js +5 -5
  826. package/modules/treegrid.js +56 -57
  827. package/modules/treegrid.js.map +1 -1
  828. package/modules/treegrid.src.js +201 -169
  829. package/modules/treemap.js +41 -41
  830. package/modules/treemap.js.map +1 -1
  831. package/modules/treemap.src.js +266 -232
  832. package/modules/variable-pie.js +1 -1
  833. package/modules/variable-pie.src.js +1 -1
  834. package/modules/variwide.js +1 -1
  835. package/modules/variwide.js.map +1 -1
  836. package/modules/variwide.src.js +7 -3
  837. package/modules/vector.js +1 -1
  838. package/modules/vector.src.js +1 -1
  839. package/modules/venn.js +31 -31
  840. package/modules/venn.js.map +1 -1
  841. package/modules/venn.src.js +740 -731
  842. package/modules/windbarb.js +15 -15
  843. package/modules/windbarb.js.map +1 -1
  844. package/modules/windbarb.src.js +90 -62
  845. package/modules/wordcloud.js +23 -24
  846. package/modules/wordcloud.js.map +1 -1
  847. package/modules/wordcloud.src.js +898 -954
  848. package/modules/xrange.js +2 -2
  849. package/modules/xrange.js.map +1 -1
  850. package/modules/xrange.src.js +12 -33
  851. package/package.json +1 -1
  852. package/themes/avocado.js +1 -1
  853. package/themes/avocado.src.js +1 -1
  854. package/themes/brand-dark.js +15 -0
  855. package/themes/brand-dark.js.map +1 -0
  856. package/themes/brand-dark.src.js +328 -0
  857. package/themes/brand-light.js +15 -0
  858. package/themes/brand-light.js.map +1 -0
  859. package/themes/brand-light.src.js +294 -0
  860. package/themes/dark-blue.js +1 -1
  861. package/themes/dark-blue.src.js +1 -1
  862. package/themes/dark-green.js +1 -1
  863. package/themes/dark-green.src.js +1 -1
  864. package/themes/dark-unica.js +1 -1
  865. package/themes/dark-unica.js.map +1 -1
  866. package/themes/dark-unica.src.js +5 -3
  867. package/themes/gray.js +1 -1
  868. package/themes/gray.src.js +1 -1
  869. package/themes/grid-light.js +1 -1
  870. package/themes/grid-light.js.map +1 -1
  871. package/themes/grid-light.src.js +5 -3
  872. package/themes/grid.js +1 -1
  873. package/themes/grid.js.map +1 -1
  874. package/themes/grid.src.js +5 -3
  875. package/themes/high-contrast-dark.js +1 -1
  876. package/themes/high-contrast-dark.src.js +1 -1
  877. package/themes/high-contrast-light.js +1 -1
  878. package/themes/high-contrast-light.src.js +1 -1
  879. package/themes/sand-signika.js +1 -1
  880. package/themes/sand-signika.src.js +1 -1
  881. package/themes/skies.js +1 -1
  882. package/themes/skies.src.js +1 -1
  883. package/themes/sunset.js +1 -1
  884. package/themes/sunset.src.js +1 -1
  885. package/es-modules/Core/Axis/MapAxis.js +0 -157
  886. package/es-modules/Core/Color/Palette.js +0 -82
  887. package/es-modules/Extensions/Sonification/InstrumentDefinitions.js +0 -32
  888. package/es-modules/Mixins/ColorSeries.js +0 -77
  889. package/es-modules/Mixins/DerivedSeries.js +0 -118
  890. package/es-modules/Mixins/DrawPoint.js +0 -81
  891. package/es-modules/Mixins/IndicatorRequired.js +0 -56
  892. package/es-modules/Mixins/MultipleLines.js +0 -181
  893. package/es-modules/Mixins/Navigation.js +0 -54
  894. package/es-modules/Mixins/NelderMead.js +0 -132
  895. package/es-modules/Mixins/Polygon.js +0 -259
  896. 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