ps-toolkit-ui 0.0.209 → 0.0.210

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 (1057) hide show
  1. package/bundles/ps-toolkit-ui.umd.js +20 -2
  2. package/bundles/ps-toolkit-ui.umd.js.map +1 -1
  3. package/bundles/ps-toolkit-ui.umd.min.js +1 -1
  4. package/bundles/ps-toolkit-ui.umd.min.js.map +1 -1
  5. package/esm2015/lib/classes/chart.class.js +140 -0
  6. package/esm2015/lib/components/chart/chart.component.js +17 -0
  7. package/esm2015/lib/ps-toolkit-ui.module.js +4 -3
  8. package/esm2015/ps-toolkit-ui.js +2 -1
  9. package/fesm2015/ps-toolkit-ui.js +19 -3
  10. package/fesm2015/ps-toolkit-ui.js.map +1 -1
  11. package/lib/classes/chart.class.d.ts +11 -0
  12. package/lib/components/chart/chart.component.d.ts +5 -0
  13. package/package.json +1 -1
  14. package/ps-toolkit-ui.d.ts +1 -0
  15. package/ps-toolkit-ui.metadata.json +1 -1
  16. package/src/assets/plugins/highcharts/code/css/annotations/popup.css +276 -0
  17. package/src/assets/plugins/highcharts/code/css/annotations/popup.scss +289 -0
  18. package/src/assets/plugins/highcharts/code/css/highcharts.css +1013 -0
  19. package/src/assets/plugins/highcharts/code/css/highcharts.scss +896 -0
  20. package/src/assets/plugins/highcharts/code/css/stocktools/gui.css +271 -0
  21. package/src/assets/plugins/highcharts/code/css/stocktools/gui.scss +271 -0
  22. package/src/assets/plugins/highcharts/code/css/themes/dark-unica.css +1074 -0
  23. package/src/assets/plugins/highcharts/code/css/themes/dark-unica.scss +122 -0
  24. package/src/assets/plugins/highcharts/code/css/themes/grid-light.css +1027 -0
  25. package/src/assets/plugins/highcharts/code/css/themes/grid-light.scss +33 -0
  26. package/src/assets/plugins/highcharts/code/css/themes/sand-signika.css +1043 -0
  27. package/src/assets/plugins/highcharts/code/css/themes/sand-signika.scss +74 -0
  28. package/src/assets/plugins/highcharts/code/es-modules/Accessibility/A11yI18n.js +299 -0
  29. package/src/assets/plugins/highcharts/code/es-modules/Accessibility/Accessibility.js +401 -0
  30. package/src/assets/plugins/highcharts/code/es-modules/Accessibility/AccessibilityComponent.js +153 -0
  31. package/src/assets/plugins/highcharts/code/es-modules/Accessibility/Components/AnnotationsA11y.js +160 -0
  32. package/src/assets/plugins/highcharts/code/es-modules/Accessibility/Components/ContainerComponent.js +159 -0
  33. package/src/assets/plugins/highcharts/code/es-modules/Accessibility/Components/InfoRegionsComponent.js +543 -0
  34. package/src/assets/plugins/highcharts/code/es-modules/Accessibility/Components/LegendComponent.js +478 -0
  35. package/src/assets/plugins/highcharts/code/es-modules/Accessibility/Components/MenuComponent.js +451 -0
  36. package/src/assets/plugins/highcharts/code/es-modules/Accessibility/Components/RangeSelectorComponent.js +506 -0
  37. package/src/assets/plugins/highcharts/code/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +217 -0
  38. package/src/assets/plugins/highcharts/code/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.js +324 -0
  39. package/src/assets/plugins/highcharts/code/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +148 -0
  40. package/src/assets/plugins/highcharts/code/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +390 -0
  41. package/src/assets/plugins/highcharts/code/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +650 -0
  42. package/src/assets/plugins/highcharts/code/es-modules/Accessibility/Components/ZoomComponent.js +375 -0
  43. package/src/assets/plugins/highcharts/code/es-modules/Accessibility/FocusBorder.js +302 -0
  44. package/src/assets/plugins/highcharts/code/es-modules/Accessibility/HighContrastMode.js +96 -0
  45. package/src/assets/plugins/highcharts/code/es-modules/Accessibility/HighContrastTheme.js +221 -0
  46. package/src/assets/plugins/highcharts/code/es-modules/Accessibility/KeyboardNavigation.js +449 -0
  47. package/src/assets/plugins/highcharts/code/es-modules/Accessibility/KeyboardNavigationHandler.js +128 -0
  48. package/src/assets/plugins/highcharts/code/es-modules/Accessibility/Options/DeprecatedOptions.js +250 -0
  49. package/src/assets/plugins/highcharts/code/es-modules/Accessibility/Options/LangOptions.js +339 -0
  50. package/src/assets/plugins/highcharts/code/es-modules/Accessibility/Options/Options.js +831 -0
  51. package/src/assets/plugins/highcharts/code/es-modules/Accessibility/ProxyElement.js +218 -0
  52. package/src/assets/plugins/highcharts/code/es-modules/Accessibility/ProxyProvider.js +302 -0
  53. package/src/assets/plugins/highcharts/code/es-modules/Accessibility/Utils/Announcer.js +91 -0
  54. package/src/assets/plugins/highcharts/code/es-modules/Accessibility/Utils/ChartUtilities.js +294 -0
  55. package/src/assets/plugins/highcharts/code/es-modules/Accessibility/Utils/DOMElementProvider.js +62 -0
  56. package/src/assets/plugins/highcharts/code/es-modules/Accessibility/Utils/EventProvider.js +58 -0
  57. package/src/assets/plugins/highcharts/code/es-modules/Accessibility/Utils/HTMLUtilities.js +305 -0
  58. package/src/assets/plugins/highcharts/code/es-modules/Core/Animation/AnimationUtilities.js +200 -0
  59. package/src/assets/plugins/highcharts/code/es-modules/Core/Animation/Fx.js +387 -0
  60. package/src/assets/plugins/highcharts/code/es-modules/Core/Axis/Axis.js +3225 -0
  61. package/src/assets/plugins/highcharts/code/es-modules/Core/Axis/Axis3D.js +612 -0
  62. package/src/assets/plugins/highcharts/code/es-modules/Core/Axis/AxisDefaults.js +2935 -0
  63. package/src/assets/plugins/highcharts/code/es-modules/Core/Axis/BrokenAxis.js +601 -0
  64. package/src/assets/plugins/highcharts/code/es-modules/Core/Axis/Color/ColorAxis.js +668 -0
  65. package/src/assets/plugins/highcharts/code/es-modules/Core/Axis/Color/ColorAxisComposition.js +287 -0
  66. package/src/assets/plugins/highcharts/code/es-modules/Core/Axis/Color/ColorAxisDefaults.js +434 -0
  67. package/src/assets/plugins/highcharts/code/es-modules/Core/Axis/DateTimeAxis.js +196 -0
  68. package/src/assets/plugins/highcharts/code/es-modules/Core/Axis/GridAxis.js +1046 -0
  69. package/src/assets/plugins/highcharts/code/es-modules/Core/Axis/LogarithmicAxis.js +202 -0
  70. package/src/assets/plugins/highcharts/code/es-modules/Core/Axis/NavigatorAxis.js +159 -0
  71. package/src/assets/plugins/highcharts/code/es-modules/Core/Axis/OrdinalAxis.js +992 -0
  72. package/src/assets/plugins/highcharts/code/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +873 -0
  73. package/src/assets/plugins/highcharts/code/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js +287 -0
  74. package/src/assets/plugins/highcharts/code/es-modules/Core/Axis/RadialAxis.js +954 -0
  75. package/src/assets/plugins/highcharts/code/es-modules/Core/Axis/ScrollbarAxis.js +182 -0
  76. package/src/assets/plugins/highcharts/code/es-modules/Core/Axis/SolidGaugeAxis.js +127 -0
  77. package/src/assets/plugins/highcharts/code/es-modules/Core/Axis/StackingAxis.js +216 -0
  78. package/src/assets/plugins/highcharts/code/es-modules/Core/Axis/Tick.js +723 -0
  79. package/src/assets/plugins/highcharts/code/es-modules/Core/Axis/Tick3D.js +68 -0
  80. package/src/assets/plugins/highcharts/code/es-modules/Core/Axis/TreeGridAxis.js +720 -0
  81. package/src/assets/plugins/highcharts/code/es-modules/Core/Axis/TreeGridTick.js +306 -0
  82. package/src/assets/plugins/highcharts/code/es-modules/Core/Axis/WaterfallAxis.js +149 -0
  83. package/src/assets/plugins/highcharts/code/es-modules/Core/Axis/ZAxis.js +156 -0
  84. package/src/assets/plugins/highcharts/code/es-modules/Core/Chart/Chart.js +2909 -0
  85. package/src/assets/plugins/highcharts/code/es-modules/Core/Chart/Chart3D.js +1695 -0
  86. package/src/assets/plugins/highcharts/code/es-modules/Core/Chart/ChartDefaults.js +1053 -0
  87. package/src/assets/plugins/highcharts/code/es-modules/Core/Chart/ChartNavigationComposition.js +92 -0
  88. package/src/assets/plugins/highcharts/code/es-modules/Core/Chart/GanttChart.js +177 -0
  89. package/src/assets/plugins/highcharts/code/es-modules/Core/Chart/MapChart.js +179 -0
  90. package/src/assets/plugins/highcharts/code/es-modules/Core/Chart/StockChart.js +644 -0
  91. package/src/assets/plugins/highcharts/code/es-modules/Core/Color/Color.js +419 -0
  92. package/src/assets/plugins/highcharts/code/es-modules/Core/Color/Palettes.js +22 -0
  93. package/src/assets/plugins/highcharts/code/es-modules/Core/DefaultOptions.js +2743 -0
  94. package/src/assets/plugins/highcharts/code/es-modules/Core/FormatUtilities.js +246 -0
  95. package/src/assets/plugins/highcharts/code/es-modules/Core/Foundation.js +61 -0
  96. package/src/assets/plugins/highcharts/code/es-modules/Core/Geometry/CircleUtilities.js +386 -0
  97. package/src/assets/plugins/highcharts/code/es-modules/Core/Geometry/GeometryUtilities.js +83 -0
  98. package/src/assets/plugins/highcharts/code/es-modules/Core/Globals.js +131 -0
  99. package/src/assets/plugins/highcharts/code/es-modules/Core/HttpUtilities.js +195 -0
  100. package/src/assets/plugins/highcharts/code/es-modules/Core/Legend/Legend.js +1284 -0
  101. package/src/assets/plugins/highcharts/code/es-modules/Core/Legend/LegendSymbol.js +109 -0
  102. package/src/assets/plugins/highcharts/code/es-modules/Core/MSPointer.js +170 -0
  103. package/src/assets/plugins/highcharts/code/es-modules/Core/Navigator.js +1958 -0
  104. package/src/assets/plugins/highcharts/code/es-modules/Core/Pointer.js +1518 -0
  105. package/src/assets/plugins/highcharts/code/es-modules/Core/Renderer/HTML/AST.js +475 -0
  106. package/src/assets/plugins/highcharts/code/es-modules/Core/Renderer/HTML/HTMLElement.js +261 -0
  107. package/src/assets/plugins/highcharts/code/es-modules/Core/Renderer/HTML/HTMLRenderer.js +272 -0
  108. package/src/assets/plugins/highcharts/code/es-modules/Core/Renderer/RendererRegistry.js +77 -0
  109. package/src/assets/plugins/highcharts/code/es-modules/Core/Renderer/RendererUtilities.js +159 -0
  110. package/src/assets/plugins/highcharts/code/es-modules/Core/Renderer/SVG/SVGElement.js +2176 -0
  111. package/src/assets/plugins/highcharts/code/es-modules/Core/Renderer/SVG/SVGElement3D.js +160 -0
  112. package/src/assets/plugins/highcharts/code/es-modules/Core/Renderer/SVG/SVGLabel.js +408 -0
  113. package/src/assets/plugins/highcharts/code/es-modules/Core/Renderer/SVG/SVGRenderer.js +1900 -0
  114. package/src/assets/plugins/highcharts/code/es-modules/Core/Renderer/SVG/SVGRenderer3D.js +842 -0
  115. package/src/assets/plugins/highcharts/code/es-modules/Core/Renderer/SVG/Symbols.js +197 -0
  116. package/src/assets/plugins/highcharts/code/es-modules/Core/Renderer/SVG/TextBuilder.js +452 -0
  117. package/src/assets/plugins/highcharts/code/es-modules/Core/Responsive.js +334 -0
  118. package/src/assets/plugins/highcharts/code/es-modules/Core/Scrollbar.js +658 -0
  119. package/src/assets/plugins/highcharts/code/es-modules/Core/ScrollbarDefaults.js +218 -0
  120. package/src/assets/plugins/highcharts/code/es-modules/Core/Series/DataLabel.js +568 -0
  121. package/src/assets/plugins/highcharts/code/es-modules/Core/Series/Point.js +1307 -0
  122. package/src/assets/plugins/highcharts/code/es-modules/Core/Series/Series.js +3718 -0
  123. package/src/assets/plugins/highcharts/code/es-modules/Core/Series/Series3D.js +126 -0
  124. package/src/assets/plugins/highcharts/code/es-modules/Core/Series/SeriesDefaults.js +2293 -0
  125. package/src/assets/plugins/highcharts/code/es-modules/Core/Series/SeriesRegistry.js +127 -0
  126. package/src/assets/plugins/highcharts/code/es-modules/Core/Time.js +741 -0
  127. package/src/assets/plugins/highcharts/code/es-modules/Core/Tooltip.js +1378 -0
  128. package/src/assets/plugins/highcharts/code/es-modules/Core/Utilities.js +1967 -0
  129. package/src/assets/plugins/highcharts/code/es-modules/Data/DataConverter.js +483 -0
  130. package/src/assets/plugins/highcharts/code/es-modules/Data/DataPromise.js +252 -0
  131. package/src/assets/plugins/highcharts/code/es-modules/Data/DataSeriesConverter.js +207 -0
  132. package/src/assets/plugins/highcharts/code/es-modules/Data/DataTable.js +1205 -0
  133. package/src/assets/plugins/highcharts/code/es-modules/Data/Modifiers/ChainModifier.js +299 -0
  134. package/src/assets/plugins/highcharts/code/es-modules/Data/Modifiers/DataModifier.js +303 -0
  135. package/src/assets/plugins/highcharts/code/es-modules/Data/Modifiers/GroupModifier.js +144 -0
  136. package/src/assets/plugins/highcharts/code/es-modules/Data/Modifiers/InvertModifier.js +254 -0
  137. package/src/assets/plugins/highcharts/code/es-modules/Data/Modifiers/RangeModifier.js +143 -0
  138. package/src/assets/plugins/highcharts/code/es-modules/Data/Modifiers/SeriesPointsModifier.js +110 -0
  139. package/src/assets/plugins/highcharts/code/es-modules/Data/Modifiers/SortModifier.js +249 -0
  140. package/src/assets/plugins/highcharts/code/es-modules/Data/Parsers/CSVParser.js +400 -0
  141. package/src/assets/plugins/highcharts/code/es-modules/Data/Parsers/DataParser.js +101 -0
  142. package/src/assets/plugins/highcharts/code/es-modules/Data/Parsers/GoogleSheetsParser.js +223 -0
  143. package/src/assets/plugins/highcharts/code/es-modules/Data/Parsers/HTMLTableParser.js +213 -0
  144. package/src/assets/plugins/highcharts/code/es-modules/Data/Stores/CSVStore.js +317 -0
  145. package/src/assets/plugins/highcharts/code/es-modules/Data/Stores/DataStore.js +276 -0
  146. package/src/assets/plugins/highcharts/code/es-modules/Data/Stores/GoogleSheetsStore.js +169 -0
  147. package/src/assets/plugins/highcharts/code/es-modules/Data/Stores/HTMLTableStore.js +353 -0
  148. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Annotations/Annotations.js +1442 -0
  149. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Annotations/ControlPoint.js +141 -0
  150. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Annotations/Controllables/ControllableCircle.js +117 -0
  151. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Annotations/Controllables/ControllableEllipse.js +199 -0
  152. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Annotations/Controllables/ControllableImage.js +111 -0
  153. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Annotations/Controllables/ControllableLabel.js +387 -0
  154. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Annotations/Controllables/ControllablePath.js +181 -0
  155. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Annotations/Controllables/ControllableRect.js +121 -0
  156. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Annotations/Mixins/ControllableMixin.js +378 -0
  157. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Annotations/Mixins/EventEmitterMixin.js +221 -0
  158. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Annotations/Mixins/MarkerMixin.js +179 -0
  159. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Annotations/MockPoint.js +428 -0
  160. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Annotations/NavigationBindings.js +1212 -0
  161. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Annotations/Popup.js +1123 -0
  162. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Annotations/Types/BasicAnnotation.js +237 -0
  163. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Annotations/Types/CrookedLine.js +185 -0
  164. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Annotations/Types/ElliottWave.js +95 -0
  165. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Annotations/Types/Fibonacci.js +205 -0
  166. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Annotations/Types/FibonacciTimeZones.js +219 -0
  167. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Annotations/Types/InfinityLine.js +161 -0
  168. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Annotations/Types/Measure.js +791 -0
  169. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Annotations/Types/Pitchfork.js +194 -0
  170. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Annotations/Types/TimeCycles.js +211 -0
  171. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Annotations/Types/Tunnel.js +211 -0
  172. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Annotations/Types/VerticalLine.js +156 -0
  173. package/src/assets/plugins/highcharts/code/es-modules/Extensions/ArrowSymbols.js +166 -0
  174. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Boost/Boost.js +34 -0
  175. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Boost/BoostAttach.js +150 -0
  176. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Boost/BoostInit.js +318 -0
  177. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Boost/BoostOptions.js +219 -0
  178. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Boost/BoostOverrides.js +386 -0
  179. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Boost/BoostUtils.js +255 -0
  180. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Boost/BoostableMap.js +18 -0
  181. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Boost/Boostables.js +25 -0
  182. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Boost/NamedColors.js +162 -0
  183. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Boost/WGLRenderer.js +1188 -0
  184. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Boost/WGLShader.js +470 -0
  185. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Boost/WGLVBuffer.js +153 -0
  186. package/src/assets/plugins/highcharts/code/es-modules/Extensions/BoostCanvas.js +509 -0
  187. package/src/assets/plugins/highcharts/code/es-modules/Extensions/CurrentDateIndication.js +100 -0
  188. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Data.js +2037 -0
  189. package/src/assets/plugins/highcharts/code/es-modules/Extensions/DataGrouping.js +1134 -0
  190. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Debugger/Debugger.js +101 -0
  191. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Debugger/ErrorMessages.js +106 -0
  192. package/src/assets/plugins/highcharts/code/es-modules/Extensions/DownloadURL.js +106 -0
  193. package/src/assets/plugins/highcharts/code/es-modules/Extensions/DragPanes.js +512 -0
  194. package/src/assets/plugins/highcharts/code/es-modules/Extensions/DraggablePoints.js +2259 -0
  195. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Drilldown.js +1170 -0
  196. package/src/assets/plugins/highcharts/code/es-modules/Extensions/ExportData.js +997 -0
  197. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Exporting/Exporting.js +1260 -0
  198. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Exporting/ExportingDefaults.js +796 -0
  199. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Exporting/ExportingSymbols.js +73 -0
  200. package/src/assets/plugins/highcharts/code/es-modules/Extensions/FullScreen.js +240 -0
  201. package/src/assets/plugins/highcharts/code/es-modules/Extensions/GeoJSON.js +436 -0
  202. package/src/assets/plugins/highcharts/code/es-modules/Extensions/MarkerClusters.js +1436 -0
  203. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Math3D.js +245 -0
  204. package/src/assets/plugins/highcharts/code/es-modules/Extensions/NoDataToDisplay.js +189 -0
  205. package/src/assets/plugins/highcharts/code/es-modules/Extensions/OfflineExporting/OfflineExporting.js +617 -0
  206. package/src/assets/plugins/highcharts/code/es-modules/Extensions/OfflineExporting/OfflineExportingDefaults.js +58 -0
  207. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Oldie/Oldie.js +1182 -0
  208. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Oldie/VMLAxis3D.js +101 -0
  209. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Oldie/VMLRenderer3D.js +47 -0
  210. package/src/assets/plugins/highcharts/code/es-modules/Extensions/OldiePolyfills.js +167 -0
  211. package/src/assets/plugins/highcharts/code/es-modules/Extensions/OverlappingDataLabels.js +226 -0
  212. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Pane.js +404 -0
  213. package/src/assets/plugins/highcharts/code/es-modules/Extensions/ParallelCoordinates.js +464 -0
  214. package/src/assets/plugins/highcharts/code/es-modules/Extensions/PatternFill.js +580 -0
  215. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Polar.js +740 -0
  216. package/src/assets/plugins/highcharts/code/es-modules/Extensions/PriceIndication.js +292 -0
  217. package/src/assets/plugins/highcharts/code/es-modules/Extensions/RangeSelector.js +2175 -0
  218. package/src/assets/plugins/highcharts/code/es-modules/Extensions/ScrollablePlotArea.js +387 -0
  219. package/src/assets/plugins/highcharts/code/es-modules/Extensions/SeriesLabel.js +765 -0
  220. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Sonification/ChartSonify.js +724 -0
  221. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Sonification/Earcon.js +197 -0
  222. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Sonification/Instrument.js +606 -0
  223. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Sonification/MusicalFrequencies.js +122 -0
  224. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Sonification/Options.js +44 -0
  225. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Sonification/PointSonify.js +391 -0
  226. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Sonification/SeriesSonify.js +474 -0
  227. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Sonification/SignalHandler.js +122 -0
  228. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Sonification/Sonification.js +97 -0
  229. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Sonification/SonificationUtilities.js +150 -0
  230. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Sonification/Timeline.js +308 -0
  231. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Sonification/TimelineEvent.js +157 -0
  232. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Sonification/TimelinePath.js +311 -0
  233. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Stacking.js +516 -0
  234. package/src/assets/plugins/highcharts/code/es-modules/Extensions/StaticScale.js +76 -0
  235. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Themes/Avocado.js +67 -0
  236. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Themes/BrandDark.js +293 -0
  237. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Themes/BrandLight.js +259 -0
  238. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Themes/DarkBlue.js +279 -0
  239. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Themes/DarkGreen.js +279 -0
  240. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Themes/DarkUnica.js +249 -0
  241. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Themes/Gray.js +287 -0
  242. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Themes/Grid.js +140 -0
  243. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Themes/GridLight.js +111 -0
  244. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Themes/HighContrastDark.js +239 -0
  245. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Themes/HighContrastLight.js +69 -0
  246. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Themes/SandSignika.js +144 -0
  247. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Themes/Skies.js +131 -0
  248. package/src/assets/plugins/highcharts/code/es-modules/Extensions/Themes/Sunset.js +66 -0
  249. package/src/assets/plugins/highcharts/code/es-modules/Gantt/Connection.js +838 -0
  250. package/src/assets/plugins/highcharts/code/es-modules/Gantt/Pathfinder.js +818 -0
  251. package/src/assets/plugins/highcharts/code/es-modules/Gantt/PathfinderAlgorithms.js +657 -0
  252. package/src/assets/plugins/highcharts/code/es-modules/Gantt/Tree.js +110 -0
  253. package/src/assets/plugins/highcharts/code/es-modules/Maps/MapNavigation.js +278 -0
  254. package/src/assets/plugins/highcharts/code/es-modules/Maps/MapNavigationOptionsDefault.js +264 -0
  255. package/src/assets/plugins/highcharts/code/es-modules/Maps/MapPointer.js +83 -0
  256. package/src/assets/plugins/highcharts/code/es-modules/Maps/MapSymbols.js +80 -0
  257. package/src/assets/plugins/highcharts/code/es-modules/Maps/MapView.js +450 -0
  258. package/src/assets/plugins/highcharts/code/es-modules/Maps/MapViewOptionsDefault.js +97 -0
  259. package/src/assets/plugins/highcharts/code/es-modules/Maps/Projection.js +436 -0
  260. package/src/assets/plugins/highcharts/code/es-modules/Maps/ProjectionDefinition.js +9 -0
  261. package/src/assets/plugins/highcharts/code/es-modules/Maps/Projections/EqualEarth.js +42 -0
  262. package/src/assets/plugins/highcharts/code/es-modules/Maps/Projections/LambertConformalConic.js +52 -0
  263. package/src/assets/plugins/highcharts/code/es-modules/Maps/Projections/Miller.js +16 -0
  264. package/src/assets/plugins/highcharts/code/es-modules/Maps/Projections/Orthographic.js +26 -0
  265. package/src/assets/plugins/highcharts/code/es-modules/Maps/Projections/ProjectionRegistry.js +19 -0
  266. package/src/assets/plugins/highcharts/code/es-modules/Maps/Projections/WebMercator.js +24 -0
  267. package/src/assets/plugins/highcharts/code/es-modules/Series/Area/AreaSeries.js +563 -0
  268. package/src/assets/plugins/highcharts/code/es-modules/Series/Area3DSeries.js +70 -0
  269. package/src/assets/plugins/highcharts/code/es-modules/Series/AreaRange/AreaRangePoint.js +129 -0
  270. package/src/assets/plugins/highcharts/code/es-modules/Series/AreaRange/AreaRangeSeries.js +650 -0
  271. package/src/assets/plugins/highcharts/code/es-modules/Series/AreaSpline/AreaSplineSeries.js +203 -0
  272. package/src/assets/plugins/highcharts/code/es-modules/Series/AreaSplineRange/AreaSplineRangeSeries.js +199 -0
  273. package/src/assets/plugins/highcharts/code/es-modules/Series/Bar/BarSeries.js +171 -0
  274. package/src/assets/plugins/highcharts/code/es-modules/Series/Bellcurve/BellcurveSeries.js +241 -0
  275. package/src/assets/plugins/highcharts/code/es-modules/Series/BoxPlot/BoxPlotSeries.js +681 -0
  276. package/src/assets/plugins/highcharts/code/es-modules/Series/Bubble/BubbleLegendComposition.js +279 -0
  277. package/src/assets/plugins/highcharts/code/es-modules/Series/Bubble/BubbleLegendDefaults.js +266 -0
  278. package/src/assets/plugins/highcharts/code/es-modules/Series/Bubble/BubbleLegendItem.js +462 -0
  279. package/src/assets/plugins/highcharts/code/es-modules/Series/Bubble/BubblePoint.js +77 -0
  280. package/src/assets/plugins/highcharts/code/es-modules/Series/Bubble/BubbleSeries.js +676 -0
  281. package/src/assets/plugins/highcharts/code/es-modules/Series/Bullet/BulletPoint.js +62 -0
  282. package/src/assets/plugins/highcharts/code/es-modules/Series/Bullet/BulletSeries.js +365 -0
  283. package/src/assets/plugins/highcharts/code/es-modules/Series/Candlestick/CandlestickSeries.js +333 -0
  284. package/src/assets/plugins/highcharts/code/es-modules/Series/CenteredUtilities.js +128 -0
  285. package/src/assets/plugins/highcharts/code/es-modules/Series/ColorMapMixin.js +84 -0
  286. package/src/assets/plugins/highcharts/code/es-modules/Series/Column/ColumnDataLabel.js +109 -0
  287. package/src/assets/plugins/highcharts/code/es-modules/Series/Column/ColumnSeries.js +1171 -0
  288. package/src/assets/plugins/highcharts/code/es-modules/Series/Column3D/Column3DComposition.js +508 -0
  289. package/src/assets/plugins/highcharts/code/es-modules/Series/ColumnPyramid/ColumnPyramidSeries.js +308 -0
  290. package/src/assets/plugins/highcharts/code/es-modules/Series/ColumnRange/ColumnRangePoint.js +62 -0
  291. package/src/assets/plugins/highcharts/code/es-modules/Series/ColumnRange/ColumnRangeSeries.js +308 -0
  292. package/src/assets/plugins/highcharts/code/es-modules/Series/Cylinder/CylinderComposition.js +274 -0
  293. package/src/assets/plugins/highcharts/code/es-modules/Series/Cylinder/CylinderPoint.js +60 -0
  294. package/src/assets/plugins/highcharts/code/es-modules/Series/Cylinder/CylinderSeries.js +175 -0
  295. package/src/assets/plugins/highcharts/code/es-modules/Series/DataModifyComposition.js +539 -0
  296. package/src/assets/plugins/highcharts/code/es-modules/Series/DependencyWheel/DependencyWheelPoint.js +100 -0
  297. package/src/assets/plugins/highcharts/code/es-modules/Series/DependencyWheel/DependencyWheelSeries.js +368 -0
  298. package/src/assets/plugins/highcharts/code/es-modules/Series/DerivedComposition.js +137 -0
  299. package/src/assets/plugins/highcharts/code/es-modules/Series/DotPlot/DotPlotSeries.js +158 -0
  300. package/src/assets/plugins/highcharts/code/es-modules/Series/DrawPointComposition.js +111 -0
  301. package/src/assets/plugins/highcharts/code/es-modules/Series/Dumbbell/DumbbellPoint.js +104 -0
  302. package/src/assets/plugins/highcharts/code/es-modules/Series/Dumbbell/DumbbellSeries.js +464 -0
  303. package/src/assets/plugins/highcharts/code/es-modules/Series/ErrorBar/ErrorBarSeries.js +228 -0
  304. package/src/assets/plugins/highcharts/code/es-modules/Series/Flags/FlagsPoint.js +74 -0
  305. package/src/assets/plugins/highcharts/code/es-modules/Series/Flags/FlagsSeries.js +614 -0
  306. package/src/assets/plugins/highcharts/code/es-modules/Series/Flags/FlagsSymbols.js +90 -0
  307. package/src/assets/plugins/highcharts/code/es-modules/Series/Funnel/FunnelSeries.js +517 -0
  308. package/src/assets/plugins/highcharts/code/es-modules/Series/Funnel3D/Funnel3DComposition.js +383 -0
  309. package/src/assets/plugins/highcharts/code/es-modules/Series/Funnel3D/Funnel3DPoint.js +62 -0
  310. package/src/assets/plugins/highcharts/code/es-modules/Series/Funnel3D/Funnel3DSeries.js +447 -0
  311. package/src/assets/plugins/highcharts/code/es-modules/Series/Gantt/GanttPoint.js +109 -0
  312. package/src/assets/plugins/highcharts/code/es-modules/Series/Gantt/GanttSeries.js +352 -0
  313. package/src/assets/plugins/highcharts/code/es-modules/Series/Gauge/GaugePoint.js +66 -0
  314. package/src/assets/plugins/highcharts/code/es-modules/Series/Gauge/GaugeSeries.js +568 -0
  315. package/src/assets/plugins/highcharts/code/es-modules/Series/HLC/HLCPoint.js +55 -0
  316. package/src/assets/plugins/highcharts/code/es-modules/Series/HLC/HLCSeries.js +378 -0
  317. package/src/assets/plugins/highcharts/code/es-modules/Series/Heatmap/HeatmapPoint.js +144 -0
  318. package/src/assets/plugins/highcharts/code/es-modules/Series/Heatmap/HeatmapSeries.js +946 -0
  319. package/src/assets/plugins/highcharts/code/es-modules/Series/HeikinAshi/HeikinAshiPoint.js +60 -0
  320. package/src/assets/plugins/highcharts/code/es-modules/Series/HeikinAshi/HeikinAshiSeries.js +278 -0
  321. package/src/assets/plugins/highcharts/code/es-modules/Series/Histogram/HistogramSeries.js +253 -0
  322. package/src/assets/plugins/highcharts/code/es-modules/Series/HollowCandlestick/HollowCandlestickPoint.js +80 -0
  323. package/src/assets/plugins/highcharts/code/es-modules/Series/HollowCandlestick/HollowCandlestickSeries.js +368 -0
  324. package/src/assets/plugins/highcharts/code/es-modules/Series/Item/ItemPoint.js +59 -0
  325. package/src/assets/plugins/highcharts/code/es-modules/Series/Item/ItemSeries.js +505 -0
  326. package/src/assets/plugins/highcharts/code/es-modules/Series/Line/LineSeries.js +541 -0
  327. package/src/assets/plugins/highcharts/code/es-modules/Series/Lollipop/LollipopPoint.js +60 -0
  328. package/src/assets/plugins/highcharts/code/es-modules/Series/Lollipop/LollipopSeries.js +209 -0
  329. package/src/assets/plugins/highcharts/code/es-modules/Series/Map/MapPoint.js +136 -0
  330. package/src/assets/plugins/highcharts/code/es-modules/Series/Map/MapSeries.js +1100 -0
  331. package/src/assets/plugins/highcharts/code/es-modules/Series/MapBubble/MapBubblePoint.js +73 -0
  332. package/src/assets/plugins/highcharts/code/es-modules/Series/MapBubble/MapBubbleSeries.js +283 -0
  333. package/src/assets/plugins/highcharts/code/es-modules/Series/MapLine/MapLineSeries.js +181 -0
  334. package/src/assets/plugins/highcharts/code/es-modules/Series/MapPoint/MapPointPoint.js +71 -0
  335. package/src/assets/plugins/highcharts/code/es-modules/Series/MapPoint/MapPointSeries.js +309 -0
  336. package/src/assets/plugins/highcharts/code/es-modules/Series/Networkgraph/DraggableNodes.js +132 -0
  337. package/src/assets/plugins/highcharts/code/es-modules/Series/Networkgraph/Integrations.js +348 -0
  338. package/src/assets/plugins/highcharts/code/es-modules/Series/Networkgraph/Layouts.js +555 -0
  339. package/src/assets/plugins/highcharts/code/es-modules/Series/Networkgraph/Networkgraph.js +1178 -0
  340. package/src/assets/plugins/highcharts/code/es-modules/Series/Networkgraph/QuadTree.js +352 -0
  341. package/src/assets/plugins/highcharts/code/es-modules/Series/NodesComposition.js +229 -0
  342. package/src/assets/plugins/highcharts/code/es-modules/Series/OHLC/OHLCPoint.js +116 -0
  343. package/src/assets/plugins/highcharts/code/es-modules/Series/OHLC/OHLCSeries.js +254 -0
  344. package/src/assets/plugins/highcharts/code/es-modules/Series/OnSeriesComposition.js +168 -0
  345. package/src/assets/plugins/highcharts/code/es-modules/Series/Organization/OrganizationPoint.js +71 -0
  346. package/src/assets/plugins/highcharts/code/es-modules/Series/Organization/OrganizationSeries.js +594 -0
  347. package/src/assets/plugins/highcharts/code/es-modules/Series/PackedBubble/PackedBubbleComposition.js +172 -0
  348. package/src/assets/plugins/highcharts/code/es-modules/Series/PackedBubble/PackedBubblePoint.js +98 -0
  349. package/src/assets/plugins/highcharts/code/es-modules/Series/PackedBubble/PackedBubbleSeries.js +1284 -0
  350. package/src/assets/plugins/highcharts/code/es-modules/Series/ParetoSeries/ParetoSeries.js +195 -0
  351. package/src/assets/plugins/highcharts/code/es-modules/Series/Pie/PieDataLabel.js +447 -0
  352. package/src/assets/plugins/highcharts/code/es-modules/Series/Pie/PiePoint.js +270 -0
  353. package/src/assets/plugins/highcharts/code/es-modules/Series/Pie/PieSeries.js +1074 -0
  354. package/src/assets/plugins/highcharts/code/es-modules/Series/Pie3D/Pie3DComposition.js +27 -0
  355. package/src/assets/plugins/highcharts/code/es-modules/Series/Pie3D/Pie3DPoint.js +72 -0
  356. package/src/assets/plugins/highcharts/code/es-modules/Series/Pie3D/Pie3DSeries.js +200 -0
  357. package/src/assets/plugins/highcharts/code/es-modules/Series/Polygon/PolygonSeries.js +195 -0
  358. package/src/assets/plugins/highcharts/code/es-modules/Series/Pyramid/PyramidSeries.js +161 -0
  359. package/src/assets/plugins/highcharts/code/es-modules/Series/Pyramid3D/Pyramid3DSeries.js +172 -0
  360. package/src/assets/plugins/highcharts/code/es-modules/Series/Sankey/SankeyPoint.js +97 -0
  361. package/src/assets/plugins/highcharts/code/es-modules/Series/Sankey/SankeySeries.js +1195 -0
  362. package/src/assets/plugins/highcharts/code/es-modules/Series/Scatter/ScatterSeries.js +306 -0
  363. package/src/assets/plugins/highcharts/code/es-modules/Series/Scatter3D/Scatter3DPoint.js +66 -0
  364. package/src/assets/plugins/highcharts/code/es-modules/Series/Scatter3D/Scatter3DSeries.js +194 -0
  365. package/src/assets/plugins/highcharts/code/es-modules/Series/SolidGauge/SolidGaugeComposition.js +62 -0
  366. package/src/assets/plugins/highcharts/code/es-modules/Series/SolidGauge/SolidGaugeSeries.js +358 -0
  367. package/src/assets/plugins/highcharts/code/es-modules/Series/Spline/SplineSeries.js +279 -0
  368. package/src/assets/plugins/highcharts/code/es-modules/Series/Streamgraph/StreamgraphSeries.js +213 -0
  369. package/src/assets/plugins/highcharts/code/es-modules/Series/Sunburst/SunburstPoint.js +115 -0
  370. package/src/assets/plugins/highcharts/code/es-modules/Series/Sunburst/SunburstSeries.js +907 -0
  371. package/src/assets/plugins/highcharts/code/es-modules/Series/Sunburst/SunburstUtilities.js +138 -0
  372. package/src/assets/plugins/highcharts/code/es-modules/Series/Tilemap/TilemapComposition.js +61 -0
  373. package/src/assets/plugins/highcharts/code/es-modules/Series/Tilemap/TilemapPoint.js +77 -0
  374. package/src/assets/plugins/highcharts/code/es-modules/Series/Tilemap/TilemapSeries.js +368 -0
  375. package/src/assets/plugins/highcharts/code/es-modules/Series/Tilemap/TilemapShapes.js +275 -0
  376. package/src/assets/plugins/highcharts/code/es-modules/Series/Timeline/TimelinePoint.js +168 -0
  377. package/src/assets/plugins/highcharts/code/es-modules/Series/Timeline/TimelineSeries.js +552 -0
  378. package/src/assets/plugins/highcharts/code/es-modules/Series/TreeUtilities.js +192 -0
  379. package/src/assets/plugins/highcharts/code/es-modules/Series/Treemap/TreemapAlgorithmGroup.js +93 -0
  380. package/src/assets/plugins/highcharts/code/es-modules/Series/Treemap/TreemapComposition.js +58 -0
  381. package/src/assets/plugins/highcharts/code/es-modules/Series/Treemap/TreemapPoint.js +107 -0
  382. package/src/assets/plugins/highcharts/code/es-modules/Series/Treemap/TreemapSeries.js +1473 -0
  383. package/src/assets/plugins/highcharts/code/es-modules/Series/Treemap/TreemapUtilities.js +65 -0
  384. package/src/assets/plugins/highcharts/code/es-modules/Series/VariablePie/VariablePieSeries.js +446 -0
  385. package/src/assets/plugins/highcharts/code/es-modules/Series/Variwide/VariwideComposition.js +78 -0
  386. package/src/assets/plugins/highcharts/code/es-modules/Series/Variwide/VariwidePoint.js +63 -0
  387. package/src/assets/plugins/highcharts/code/es-modules/Series/Variwide/VariwideSeries.js +317 -0
  388. package/src/assets/plugins/highcharts/code/es-modules/Series/Vector/VectorSeries.js +362 -0
  389. package/src/assets/plugins/highcharts/code/es-modules/Series/Venn/VennPoint.js +76 -0
  390. package/src/assets/plugins/highcharts/code/es-modules/Series/Venn/VennSeries.js +633 -0
  391. package/src/assets/plugins/highcharts/code/es-modules/Series/Venn/VennUtils.js +607 -0
  392. package/src/assets/plugins/highcharts/code/es-modules/Series/Waterfall/WaterfallPoint.js +68 -0
  393. package/src/assets/plugins/highcharts/code/es-modules/Series/Waterfall/WaterfallSeries.js +743 -0
  394. package/src/assets/plugins/highcharts/code/es-modules/Series/Windbarb/WindbarbPoint.js +64 -0
  395. package/src/assets/plugins/highcharts/code/es-modules/Series/Windbarb/WindbarbSeries.js +462 -0
  396. package/src/assets/plugins/highcharts/code/es-modules/Series/Wordcloud/WordcloudPoint.js +66 -0
  397. package/src/assets/plugins/highcharts/code/es-modules/Series/Wordcloud/WordcloudSeries.js +503 -0
  398. package/src/assets/plugins/highcharts/code/es-modules/Series/Wordcloud/WordcloudUtils.js +718 -0
  399. package/src/assets/plugins/highcharts/code/es-modules/Series/XRange/XRangeComposition.js +49 -0
  400. package/src/assets/plugins/highcharts/code/es-modules/Series/XRange/XRangePoint.js +168 -0
  401. package/src/assets/plugins/highcharts/code/es-modules/Series/XRange/XRangeSeries.js +608 -0
  402. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/ABands/ABandsIndicator.js +243 -0
  403. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/AD/ADIndicator.js +160 -0
  404. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/AO/AOIndicator.js +212 -0
  405. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/APO/APOIndicator.js +167 -0
  406. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/ATR/ATRIndicator.js +162 -0
  407. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/Aroon/AroonIndicator.js +197 -0
  408. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/AroonOscillator/AroonOscillatorIndicator.js +141 -0
  409. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/ArrayUtilities.js +47 -0
  410. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/BB/BBIndicator.js +241 -0
  411. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/CCI/CCIIndicator.js +154 -0
  412. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/CMF/CMFIndicator.js +243 -0
  413. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/CMO/CMOIndicator.js +166 -0
  414. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/Chaikin/ChaikinIndicator.js +187 -0
  415. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/DEMA/DEMAIndicator.js +149 -0
  416. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/DMI/DMIIndicator.js +276 -0
  417. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/DPO/DPOIndicator.js +163 -0
  418. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/DisparityIndex/DisparityIndexIndicator.js +179 -0
  419. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/EMA/EMAIndicator.js +154 -0
  420. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/IKH/IKHIndicator.js +682 -0
  421. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/KeltnerChannels/KeltnerChannelsIndicator.js +217 -0
  422. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/Klinger/KlingerIndicator.js +270 -0
  423. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/LinearRegression/LinearRegression.js +282 -0
  424. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/LinearRegressionAngle/LinearRegressionAngle.js +119 -0
  425. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/LinearRegressionIntercept/LinearRegressionIntercept.js +104 -0
  426. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/LinearRegressionSlopes/LinearRegressionSlopes.js +104 -0
  427. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/MACD/MACDIndicator.js +402 -0
  428. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/MFI/MFIIndicator.js +198 -0
  429. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/Momentum/MomentumIndicator.js +121 -0
  430. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/MultipleLinesComposition.js +294 -0
  431. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/NATR/NATRIndicator.js +111 -0
  432. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/OBV/OBVIndicator.js +170 -0
  433. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/PC/PCIndicator.js +197 -0
  434. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/PPO/PPOIndicator.js +164 -0
  435. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/PSAR/PSARIndicator.js +280 -0
  436. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/PivotPoints/PivotPointsIndicator.js +310 -0
  437. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/PivotPoints/PivotPointsPoint.js +78 -0
  438. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/PriceEnvelopes/PriceEnvelopesIndicator.js +240 -0
  439. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/ROC/ROCIndicator.js +176 -0
  440. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/RSI/RSIIndicator.js +171 -0
  441. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/SMA/SMAComposition.js +12 -0
  442. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/SMA/SMAIndicator.js +367 -0
  443. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/SlowStochastic/SlowStochasticIndicator.js +134 -0
  444. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/Stochastic/StochasticIndicator.js +208 -0
  445. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/Supertrend/SupertrendIndicator.js +485 -0
  446. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/TEMA/TEMAIndicator.js +208 -0
  447. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/TRIX/TRIXIndicator.js +98 -0
  448. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/TrendLine/TrendLineIndicator.js +148 -0
  449. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/VBP/VBPIndicator.js +556 -0
  450. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/VBP/VBPPoint.js +49 -0
  451. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/VWAP/VWAPIndicator.js +193 -0
  452. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/WMA/WMAIndicator.js +153 -0
  453. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/WilliamsR/WilliamsRIndicator.js +135 -0
  454. package/src/assets/plugins/highcharts/code/es-modules/Stock/Indicators/Zigzag/ZigzagIndicator.js +228 -0
  455. package/src/assets/plugins/highcharts/code/es-modules/Stock/StockToolsBindings.js +2009 -0
  456. package/src/assets/plugins/highcharts/code/es-modules/Stock/StockToolsGui.js +1816 -0
  457. package/src/assets/plugins/highcharts/code/es-modules/masters/highcharts-3d.src.js +28 -0
  458. package/src/assets/plugins/highcharts/code/es-modules/masters/highcharts-more.src.js +28 -0
  459. package/src/assets/plugins/highcharts/code/es-modules/masters/highcharts.src.js +147 -0
  460. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/accessibility.src.js +28 -0
  461. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/annotations-advanced.src.js +26 -0
  462. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/annotations.src.js +15 -0
  463. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/arrow-symbols.src.js +13 -0
  464. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/boost-canvas.src.js +14 -0
  465. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/boost.src.js +15 -0
  466. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/broken-axis.src.js +15 -0
  467. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/bullet.src.js +13 -0
  468. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/coloraxis.src.js +17 -0
  469. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/current-date-indicator.src.js +13 -0
  470. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/cylinder.src.js +14 -0
  471. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/data.src.js +23 -0
  472. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/datagrouping.src.js +14 -0
  473. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/debugger.src.js +16 -0
  474. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/dependency-wheel.src.js +14 -0
  475. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/dotplot.src.js +13 -0
  476. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/drag-panes.src.js +15 -0
  477. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/draggable-points.src.js +11 -0
  478. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/drilldown.src.js +13 -0
  479. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/dumbbell.src.js +11 -0
  480. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/export-data.src.js +14 -0
  481. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/exporting.src.js +22 -0
  482. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/full-screen.src.js +14 -0
  483. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/funnel.src.js +14 -0
  484. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/funnel3d.src.js +18 -0
  485. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/gantt.src.js +26 -0
  486. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/grid-axis.src.js +17 -0
  487. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/heatmap.src.js +16 -0
  488. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/heikinashi.src.js +14 -0
  489. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/histogram-bellcurve.src.js +13 -0
  490. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/hollowcandlestick.src.js +14 -0
  491. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/item-series.src.js +13 -0
  492. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/lollipop.src.js +11 -0
  493. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/marker-clusters.src.js +13 -0
  494. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/networkgraph.src.js +13 -0
  495. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/no-data-to-display.src.js +14 -0
  496. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/offline-exporting.src.js +20 -0
  497. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/oldie-polyfills.src.js +14 -0
  498. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/oldie.src.js +14 -0
  499. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/organization.src.js +13 -0
  500. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/overlapping-datalabels.src.js +11 -0
  501. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/parallel-coordinates.src.js +13 -0
  502. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/pareto.src.js +13 -0
  503. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/pathfinder.src.js +13 -0
  504. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/pattern-fill.src.js +14 -0
  505. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/price-indicator.src.js +15 -0
  506. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/pyramid3d.src.js +16 -0
  507. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/sankey.src.js +13 -0
  508. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/series-label.src.js +11 -0
  509. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/solid-gauge.src.js +14 -0
  510. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/sonification.src.js +44 -0
  511. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/static-scale.src.js +13 -0
  512. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/stock-tools.src.js +16 -0
  513. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/stock.src.js +33 -0
  514. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/streamgraph.src.js +13 -0
  515. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/sunburst.src.js +13 -0
  516. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/tilemap.src.js +14 -0
  517. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/timeline.src.js +14 -0
  518. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/treegrid.src.js +17 -0
  519. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/treemap.src.js +12 -0
  520. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/variable-pie.src.js +13 -0
  521. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/variwide.src.js +13 -0
  522. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/vector.src.js +13 -0
  523. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/venn.src.js +12 -0
  524. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/windbarb.src.js +13 -0
  525. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/wordcloud.src.js +12 -0
  526. package/src/assets/plugins/highcharts/code/es-modules/masters/modules/xrange.src.js +13 -0
  527. package/src/assets/plugins/highcharts/code/es-modules/masters/themes/avocado.src.js +14 -0
  528. package/src/assets/plugins/highcharts/code/es-modules/masters/themes/brand-dark.src.js +14 -0
  529. package/src/assets/plugins/highcharts/code/es-modules/masters/themes/brand-light.src.js +14 -0
  530. package/src/assets/plugins/highcharts/code/es-modules/masters/themes/dark-blue.src.js +14 -0
  531. package/src/assets/plugins/highcharts/code/es-modules/masters/themes/dark-green.src.js +14 -0
  532. package/src/assets/plugins/highcharts/code/es-modules/masters/themes/dark-unica.src.js +14 -0
  533. package/src/assets/plugins/highcharts/code/es-modules/masters/themes/gray.src.js +14 -0
  534. package/src/assets/plugins/highcharts/code/es-modules/masters/themes/grid-light.src.js +14 -0
  535. package/src/assets/plugins/highcharts/code/es-modules/masters/themes/grid.src.js +14 -0
  536. package/src/assets/plugins/highcharts/code/es-modules/masters/themes/high-contrast-dark.src.js +14 -0
  537. package/src/assets/plugins/highcharts/code/es-modules/masters/themes/high-contrast-light.src.js +14 -0
  538. package/src/assets/plugins/highcharts/code/es-modules/masters/themes/sand-signika.src.js +14 -0
  539. package/src/assets/plugins/highcharts/code/es-modules/masters/themes/skies.src.js +14 -0
  540. package/src/assets/plugins/highcharts/code/es-modules/masters/themes/sunset.src.js +14 -0
  541. package/src/assets/plugins/highcharts/code/highcharts-3d.js +105 -0
  542. package/src/assets/plugins/highcharts/code/highcharts-3d.js.map +1 -0
  543. package/src/assets/plugins/highcharts/code/highcharts-3d.src.js +5439 -0
  544. package/src/assets/plugins/highcharts/code/highcharts-more.js +201 -0
  545. package/src/assets/plugins/highcharts/code/highcharts-more.js.map +1 -0
  546. package/src/assets/plugins/highcharts/code/highcharts-more.src.js +12004 -0
  547. package/src/assets/plugins/highcharts/code/highcharts.js +593 -0
  548. package/src/assets/plugins/highcharts/code/highcharts.js.map +1 -0
  549. package/src/assets/plugins/highcharts/code/highcharts.src.js +47519 -0
  550. package/src/assets/plugins/highcharts/code/lib/canvg.js +8 -0
  551. package/src/assets/plugins/highcharts/code/lib/jspdf.js +283 -0
  552. package/src/assets/plugins/highcharts/code/lib/jspdf.src.js +21627 -0
  553. package/src/assets/plugins/highcharts/code/lib/svg2pdf.js +38 -0
  554. package/src/assets/plugins/highcharts/code/lib/svg2pdf.src.js +4390 -0
  555. package/src/assets/plugins/highcharts/code/modules/accessibility.js +256 -0
  556. package/src/assets/plugins/highcharts/code/modules/accessibility.js.map +1 -0
  557. package/src/assets/plugins/highcharts/code/modules/accessibility.src.js +11868 -0
  558. package/src/assets/plugins/highcharts/code/modules/annotations-advanced.js +201 -0
  559. package/src/assets/plugins/highcharts/code/modules/annotations-advanced.js.map +1 -0
  560. package/src/assets/plugins/highcharts/code/modules/annotations-advanced.src.js +9616 -0
  561. package/src/assets/plugins/highcharts/code/modules/annotations.js +135 -0
  562. package/src/assets/plugins/highcharts/code/modules/annotations.js.map +1 -0
  563. package/src/assets/plugins/highcharts/code/modules/annotations.src.js +6712 -0
  564. package/src/assets/plugins/highcharts/code/modules/arrow-symbols.js +12 -0
  565. package/src/assets/plugins/highcharts/code/modules/arrow-symbols.js.map +1 -0
  566. package/src/assets/plugins/highcharts/code/modules/arrow-symbols.src.js +202 -0
  567. package/src/assets/plugins/highcharts/code/modules/boost-canvas.js +25 -0
  568. package/src/assets/plugins/highcharts/code/modules/boost-canvas.js.map +1 -0
  569. package/src/assets/plugins/highcharts/code/modules/boost-canvas.src.js +593 -0
  570. package/src/assets/plugins/highcharts/code/modules/boost.js +90 -0
  571. package/src/assets/plugins/highcharts/code/modules/boost.js.map +1 -0
  572. package/src/assets/plugins/highcharts/code/modules/boost.src.js +3834 -0
  573. package/src/assets/plugins/highcharts/code/modules/broken-axis.js +20 -0
  574. package/src/assets/plugins/highcharts/code/modules/broken-axis.js.map +1 -0
  575. package/src/assets/plugins/highcharts/code/modules/broken-axis.src.js +682 -0
  576. package/src/assets/plugins/highcharts/code/modules/bullet.js +18 -0
  577. package/src/assets/plugins/highcharts/code/modules/bullet.js.map +1 -0
  578. package/src/assets/plugins/highcharts/code/modules/bullet.src.js +489 -0
  579. package/src/assets/plugins/highcharts/code/modules/coloraxis.js +33 -0
  580. package/src/assets/plugins/highcharts/code/modules/coloraxis.js.map +1 -0
  581. package/src/assets/plugins/highcharts/code/modules/coloraxis.src.js +1484 -0
  582. package/src/assets/plugins/highcharts/code/modules/current-date-indicator.js +13 -0
  583. package/src/assets/plugins/highcharts/code/modules/current-date-indicator.js.map +1 -0
  584. package/src/assets/plugins/highcharts/code/modules/current-date-indicator.src.js +138 -0
  585. package/src/assets/plugins/highcharts/code/modules/cylinder.js +20 -0
  586. package/src/assets/plugins/highcharts/code/modules/cylinder.js.map +1 -0
  587. package/src/assets/plugins/highcharts/code/modules/cylinder.src.js +585 -0
  588. package/src/assets/plugins/highcharts/code/modules/data.js +42 -0
  589. package/src/assets/plugins/highcharts/code/modules/data.js.map +1 -0
  590. package/src/assets/plugins/highcharts/code/modules/data.src.js +2383 -0
  591. package/src/assets/plugins/highcharts/code/modules/datagrouping.js +29 -0
  592. package/src/assets/plugins/highcharts/code/modules/datagrouping.js.map +1 -0
  593. package/src/assets/plugins/highcharts/code/modules/datagrouping.src.js +1275 -0
  594. package/src/assets/plugins/highcharts/code/modules/debugger.js +30 -0
  595. package/src/assets/plugins/highcharts/code/modules/debugger.js.map +1 -0
  596. package/src/assets/plugins/highcharts/code/modules/debugger.src.js +250 -0
  597. package/src/assets/plugins/highcharts/code/modules/dependency-wheel.js +20 -0
  598. package/src/assets/plugins/highcharts/code/modules/dependency-wheel.js.map +1 -0
  599. package/src/assets/plugins/highcharts/code/modules/dependency-wheel.src.js +533 -0
  600. package/src/assets/plugins/highcharts/code/modules/dotplot.js +15 -0
  601. package/src/assets/plugins/highcharts/code/modules/dotplot.js.map +1 -0
  602. package/src/assets/plugins/highcharts/code/modules/dotplot.src.js +216 -0
  603. package/src/assets/plugins/highcharts/code/modules/drag-panes.js +20 -0
  604. package/src/assets/plugins/highcharts/code/modules/drag-panes.js.map +1 -0
  605. package/src/assets/plugins/highcharts/code/modules/drag-panes.src.js +586 -0
  606. package/src/assets/plugins/highcharts/code/modules/draggable-points.js +41 -0
  607. package/src/assets/plugins/highcharts/code/modules/draggable-points.js.map +1 -0
  608. package/src/assets/plugins/highcharts/code/modules/draggable-points.src.js +2405 -0
  609. package/src/assets/plugins/highcharts/code/modules/drilldown.js +34 -0
  610. package/src/assets/plugins/highcharts/code/modules/drilldown.js.map +1 -0
  611. package/src/assets/plugins/highcharts/code/modules/drilldown.src.js +1266 -0
  612. package/src/assets/plugins/highcharts/code/modules/dumbbell.js +24 -0
  613. package/src/assets/plugins/highcharts/code/modules/dumbbell.js.map +1 -0
  614. package/src/assets/plugins/highcharts/code/modules/dumbbell.src.js +798 -0
  615. package/src/assets/plugins/highcharts/code/modules/export-data.js +30 -0
  616. package/src/assets/plugins/highcharts/code/modules/export-data.js.map +1 -0
  617. package/src/assets/plugins/highcharts/code/modules/export-data.src.js +1203 -0
  618. package/src/assets/plugins/highcharts/code/modules/exporting.js +48 -0
  619. package/src/assets/plugins/highcharts/code/modules/exporting.js.map +1 -0
  620. package/src/assets/plugins/highcharts/code/modules/exporting.src.js +2789 -0
  621. package/src/assets/plugins/highcharts/code/modules/full-screen.js +17 -0
  622. package/src/assets/plugins/highcharts/code/modules/full-screen.js.map +1 -0
  623. package/src/assets/plugins/highcharts/code/modules/full-screen.src.js +284 -0
  624. package/src/assets/plugins/highcharts/code/modules/funnel.js +21 -0
  625. package/src/assets/plugins/highcharts/code/modules/funnel.js.map +1 -0
  626. package/src/assets/plugins/highcharts/code/modules/funnel.src.js +777 -0
  627. package/src/assets/plugins/highcharts/code/modules/funnel3d.js +30 -0
  628. package/src/assets/plugins/highcharts/code/modules/funnel3d.js.map +1 -0
  629. package/src/assets/plugins/highcharts/code/modules/funnel3d.src.js +1004 -0
  630. package/src/assets/plugins/highcharts/code/modules/gantt.js +226 -0
  631. package/src/assets/plugins/highcharts/code/modules/gantt.js.map +1 -0
  632. package/src/assets/plugins/highcharts/code/modules/gantt.src.js +13485 -0
  633. package/src/assets/plugins/highcharts/code/modules/grid-axis.js +32 -0
  634. package/src/assets/plugins/highcharts/code/modules/grid-axis.js.map +1 -0
  635. package/src/assets/plugins/highcharts/code/modules/grid-axis.src.js +1160 -0
  636. package/src/assets/plugins/highcharts/code/modules/heatmap.js +46 -0
  637. package/src/assets/plugins/highcharts/code/modules/heatmap.js.map +1 -0
  638. package/src/assets/plugins/highcharts/code/modules/heatmap.src.js +2726 -0
  639. package/src/assets/plugins/highcharts/code/modules/heikinashi.js +17 -0
  640. package/src/assets/plugins/highcharts/code/modules/heikinashi.js.map +1 -0
  641. package/src/assets/plugins/highcharts/code/modules/heikinashi.src.js +396 -0
  642. package/src/assets/plugins/highcharts/code/modules/histogram-bellcurve.js +21 -0
  643. package/src/assets/plugins/highcharts/code/modules/histogram-bellcurve.js.map +1 -0
  644. package/src/assets/plugins/highcharts/code/modules/histogram-bellcurve.src.js +699 -0
  645. package/src/assets/plugins/highcharts/code/modules/hollowcandlestick.js +18 -0
  646. package/src/assets/plugins/highcharts/code/modules/hollowcandlestick.js.map +1 -0
  647. package/src/assets/plugins/highcharts/code/modules/hollowcandlestick.src.js +500 -0
  648. package/src/assets/plugins/highcharts/code/modules/item-series.js +21 -0
  649. package/src/assets/plugins/highcharts/code/modules/item-series.js.map +1 -0
  650. package/src/assets/plugins/highcharts/code/modules/item-series.src.js +660 -0
  651. package/src/assets/plugins/highcharts/code/modules/lollipop.js +14 -0
  652. package/src/assets/plugins/highcharts/code/modules/lollipop.js.map +1 -0
  653. package/src/assets/plugins/highcharts/code/modules/lollipop.src.js +318 -0
  654. package/src/assets/plugins/highcharts/code/modules/marker-clusters.js +45 -0
  655. package/src/assets/plugins/highcharts/code/modules/marker-clusters.js.map +1 -0
  656. package/src/assets/plugins/highcharts/code/modules/marker-clusters.src.js +1713 -0
  657. package/src/assets/plugins/highcharts/code/modules/networkgraph.js +58 -0
  658. package/src/assets/plugins/highcharts/code/modules/networkgraph.js.map +1 -0
  659. package/src/assets/plugins/highcharts/code/modules/networkgraph.src.js +2926 -0
  660. package/src/assets/plugins/highcharts/code/modules/no-data-to-display.js +15 -0
  661. package/src/assets/plugins/highcharts/code/modules/no-data-to-display.js.map +1 -0
  662. package/src/assets/plugins/highcharts/code/modules/no-data-to-display.src.js +231 -0
  663. package/src/assets/plugins/highcharts/code/modules/offline-exporting.js +27 -0
  664. package/src/assets/plugins/highcharts/code/modules/offline-exporting.js.map +1 -0
  665. package/src/assets/plugins/highcharts/code/modules/offline-exporting.src.js +847 -0
  666. package/src/assets/plugins/highcharts/code/modules/oldie-polyfills.js +17 -0
  667. package/src/assets/plugins/highcharts/code/modules/oldie-polyfills.js.map +1 -0
  668. package/src/assets/plugins/highcharts/code/modules/oldie-polyfills.src.js +220 -0
  669. package/src/assets/plugins/highcharts/code/modules/oldie.js +40 -0
  670. package/src/assets/plugins/highcharts/code/modules/oldie.js.map +1 -0
  671. package/src/assets/plugins/highcharts/code/modules/oldie.src.js +1443 -0
  672. package/src/assets/plugins/highcharts/code/modules/organization.js +22 -0
  673. package/src/assets/plugins/highcharts/code/modules/organization.js.map +1 -0
  674. package/src/assets/plugins/highcharts/code/modules/organization.src.js +736 -0
  675. package/src/assets/plugins/highcharts/code/modules/overlapping-datalabels.js +9 -0
  676. package/src/assets/plugins/highcharts/code/modules/overlapping-datalabels.js.map +1 -0
  677. package/src/assets/plugins/highcharts/code/modules/overlapping-datalabels.src.js +33 -0
  678. package/src/assets/plugins/highcharts/code/modules/parallel-coordinates.js +20 -0
  679. package/src/assets/plugins/highcharts/code/modules/parallel-coordinates.js.map +1 -0
  680. package/src/assets/plugins/highcharts/code/modules/parallel-coordinates.src.js +555 -0
  681. package/src/assets/plugins/highcharts/code/modules/pareto.js +16 -0
  682. package/src/assets/plugins/highcharts/code/modules/pareto.js.map +1 -0
  683. package/src/assets/plugins/highcharts/code/modules/pareto.src.js +382 -0
  684. package/src/assets/plugins/highcharts/code/modules/pathfinder.js +40 -0
  685. package/src/assets/plugins/highcharts/code/modules/pathfinder.js.map +1 -0
  686. package/src/assets/plugins/highcharts/code/modules/pathfinder.src.js +2693 -0
  687. package/src/assets/plugins/highcharts/code/modules/pattern-fill.js +24 -0
  688. package/src/assets/plugins/highcharts/code/modules/pattern-fill.js.map +1 -0
  689. package/src/assets/plugins/highcharts/code/modules/pattern-fill.src.js +640 -0
  690. package/src/assets/plugins/highcharts/code/modules/price-indicator.js +15 -0
  691. package/src/assets/plugins/highcharts/code/modules/price-indicator.js.map +1 -0
  692. package/src/assets/plugins/highcharts/code/modules/price-indicator.src.js +346 -0
  693. package/src/assets/plugins/highcharts/code/modules/pyramid3d.js +13 -0
  694. package/src/assets/plugins/highcharts/code/modules/pyramid3d.js.map +1 -0
  695. package/src/assets/plugins/highcharts/code/modules/pyramid3d.src.js +211 -0
  696. package/src/assets/plugins/highcharts/code/modules/sankey.js +38 -0
  697. package/src/assets/plugins/highcharts/code/modules/sankey.js.map +1 -0
  698. package/src/assets/plugins/highcharts/code/modules/sankey.src.js +1868 -0
  699. package/src/assets/plugins/highcharts/code/modules/series-label.js +24 -0
  700. package/src/assets/plugins/highcharts/code/modules/series-label.js.map +1 -0
  701. package/src/assets/plugins/highcharts/code/modules/series-label.src.js +852 -0
  702. package/src/assets/plugins/highcharts/code/modules/solid-gauge.js +19 -0
  703. package/src/assets/plugins/highcharts/code/modules/solid-gauge.js.map +1 -0
  704. package/src/assets/plugins/highcharts/code/modules/solid-gauge.src.js +650 -0
  705. package/src/assets/plugins/highcharts/code/modules/sonification.js +68 -0
  706. package/src/assets/plugins/highcharts/code/modules/sonification.js.map +1 -0
  707. package/src/assets/plugins/highcharts/code/modules/sonification.src.js +3869 -0
  708. package/src/assets/plugins/highcharts/code/modules/static-scale.js +13 -0
  709. package/src/assets/plugins/highcharts/code/modules/static-scale.js.map +1 -0
  710. package/src/assets/plugins/highcharts/code/modules/static-scale.src.js +117 -0
  711. package/src/assets/plugins/highcharts/code/modules/stock-tools.js +189 -0
  712. package/src/assets/plugins/highcharts/code/modules/stock-tools.js.map +1 -0
  713. package/src/assets/plugins/highcharts/code/modules/stock-tools.src.js +9592 -0
  714. package/src/assets/plugins/highcharts/code/modules/stock.js +213 -0
  715. package/src/assets/plugins/highcharts/code/modules/stock.js.map +1 -0
  716. package/src/assets/plugins/highcharts/code/modules/stock.src.js +12237 -0
  717. package/src/assets/plugins/highcharts/code/modules/streamgraph.js +13 -0
  718. package/src/assets/plugins/highcharts/code/modules/streamgraph.js.map +1 -0
  719. package/src/assets/plugins/highcharts/code/modules/streamgraph.src.js +253 -0
  720. package/src/assets/plugins/highcharts/code/modules/sunburst.js +68 -0
  721. package/src/assets/plugins/highcharts/code/modules/sunburst.js.map +1 -0
  722. package/src/assets/plugins/highcharts/code/modules/sunburst.src.js +3721 -0
  723. package/src/assets/plugins/highcharts/code/modules/tilemap.js +26 -0
  724. package/src/assets/plugins/highcharts/code/modules/tilemap.js.map +1 -0
  725. package/src/assets/plugins/highcharts/code/modules/tilemap.src.js +878 -0
  726. package/src/assets/plugins/highcharts/code/modules/timeline.js +28 -0
  727. package/src/assets/plugins/highcharts/code/modules/timeline.js.map +1 -0
  728. package/src/assets/plugins/highcharts/code/modules/timeline.src.js +815 -0
  729. package/src/assets/plugins/highcharts/code/modules/treegrid.js +65 -0
  730. package/src/assets/plugins/highcharts/code/modules/treegrid.js.map +1 -0
  731. package/src/assets/plugins/highcharts/code/modules/treegrid.src.js +3294 -0
  732. package/src/assets/plugins/highcharts/code/modules/treemap.js +49 -0
  733. package/src/assets/plugins/highcharts/code/modules/treemap.js.map +1 -0
  734. package/src/assets/plugins/highcharts/code/modules/treemap.src.js +2416 -0
  735. package/src/assets/plugins/highcharts/code/modules/variable-pie.js +18 -0
  736. package/src/assets/plugins/highcharts/code/modules/variable-pie.js.map +1 -0
  737. package/src/assets/plugins/highcharts/code/modules/variable-pie.src.js +533 -0
  738. package/src/assets/plugins/highcharts/code/modules/variwide.js +21 -0
  739. package/src/assets/plugins/highcharts/code/modules/variwide.js.map +1 -0
  740. package/src/assets/plugins/highcharts/code/modules/variwide.src.js +529 -0
  741. package/src/assets/plugins/highcharts/code/modules/vector.js +16 -0
  742. package/src/assets/plugins/highcharts/code/modules/vector.js.map +1 -0
  743. package/src/assets/plugins/highcharts/code/modules/vector.src.js +409 -0
  744. package/src/assets/plugins/highcharts/code/modules/venn.js +39 -0
  745. package/src/assets/plugins/highcharts/code/modules/venn.js.map +1 -0
  746. package/src/assets/plugins/highcharts/code/modules/venn.src.js +2095 -0
  747. package/src/assets/plugins/highcharts/code/modules/windbarb.js +24 -0
  748. package/src/assets/plugins/highcharts/code/modules/windbarb.js.map +1 -0
  749. package/src/assets/plugins/highcharts/code/modules/windbarb.src.js +772 -0
  750. package/src/assets/plugins/highcharts/code/modules/wordcloud.js +31 -0
  751. package/src/assets/plugins/highcharts/code/modules/wordcloud.js.map +1 -0
  752. package/src/assets/plugins/highcharts/code/modules/wordcloud.src.js +1584 -0
  753. package/src/assets/plugins/highcharts/code/modules/xrange.js +26 -0
  754. package/src/assets/plugins/highcharts/code/modules/xrange.js.map +1 -0
  755. package/src/assets/plugins/highcharts/code/modules/xrange.src.js +940 -0
  756. package/src/assets/plugins/highcharts/code/themes/avocado.js +10 -0
  757. package/src/assets/plugins/highcharts/code/themes/avocado.js.map +1 -0
  758. package/src/assets/plugins/highcharts/code/themes/avocado.src.js +103 -0
  759. package/src/assets/plugins/highcharts/code/themes/brand-dark.js +15 -0
  760. package/src/assets/plugins/highcharts/code/themes/brand-dark.js.map +1 -0
  761. package/src/assets/plugins/highcharts/code/themes/brand-dark.src.js +328 -0
  762. package/src/assets/plugins/highcharts/code/themes/brand-light.js +15 -0
  763. package/src/assets/plugins/highcharts/code/themes/brand-light.js.map +1 -0
  764. package/src/assets/plugins/highcharts/code/themes/brand-light.src.js +294 -0
  765. package/src/assets/plugins/highcharts/code/themes/dark-blue.js +15 -0
  766. package/src/assets/plugins/highcharts/code/themes/dark-blue.js.map +1 -0
  767. package/src/assets/plugins/highcharts/code/themes/dark-blue.src.js +315 -0
  768. package/src/assets/plugins/highcharts/code/themes/dark-green.js +15 -0
  769. package/src/assets/plugins/highcharts/code/themes/dark-green.js.map +1 -0
  770. package/src/assets/plugins/highcharts/code/themes/dark-green.src.js +315 -0
  771. package/src/assets/plugins/highcharts/code/themes/dark-unica.js +14 -0
  772. package/src/assets/plugins/highcharts/code/themes/dark-unica.js.map +1 -0
  773. package/src/assets/plugins/highcharts/code/themes/dark-unica.src.js +284 -0
  774. package/src/assets/plugins/highcharts/code/themes/gray.js +15 -0
  775. package/src/assets/plugins/highcharts/code/themes/gray.js.map +1 -0
  776. package/src/assets/plugins/highcharts/code/themes/gray.src.js +323 -0
  777. package/src/assets/plugins/highcharts/code/themes/grid-light.js +11 -0
  778. package/src/assets/plugins/highcharts/code/themes/grid-light.js.map +1 -0
  779. package/src/assets/plugins/highcharts/code/themes/grid-light.src.js +146 -0
  780. package/src/assets/plugins/highcharts/code/themes/grid.js +12 -0
  781. package/src/assets/plugins/highcharts/code/themes/grid.js.map +1 -0
  782. package/src/assets/plugins/highcharts/code/themes/grid.src.js +176 -0
  783. package/src/assets/plugins/highcharts/code/themes/high-contrast-dark.js +14 -0
  784. package/src/assets/plugins/highcharts/code/themes/high-contrast-dark.js.map +1 -0
  785. package/src/assets/plugins/highcharts/code/themes/high-contrast-dark.src.js +275 -0
  786. package/src/assets/plugins/highcharts/code/themes/high-contrast-light.js +10 -0
  787. package/src/assets/plugins/highcharts/code/themes/high-contrast-light.js.map +1 -0
  788. package/src/assets/plugins/highcharts/code/themes/high-contrast-light.src.js +105 -0
  789. package/src/assets/plugins/highcharts/code/themes/sand-signika.js +12 -0
  790. package/src/assets/plugins/highcharts/code/themes/sand-signika.js.map +1 -0
  791. package/src/assets/plugins/highcharts/code/themes/sand-signika.src.js +179 -0
  792. package/src/assets/plugins/highcharts/code/themes/skies.js +12 -0
  793. package/src/assets/plugins/highcharts/code/themes/skies.js.map +1 -0
  794. package/src/assets/plugins/highcharts/code/themes/skies.src.js +167 -0
  795. package/src/assets/plugins/highcharts/code/themes/sunset.js +10 -0
  796. package/src/assets/plugins/highcharts/code/themes/sunset.js.map +1 -0
  797. package/src/assets/plugins/highcharts/code/themes/sunset.src.js +102 -0
  798. package/src/assets/plugins/highcharts/examples/3d-area-multiple/index.html +192 -0
  799. package/src/assets/plugins/highcharts/examples/3d-column-interactive/index.html +111 -0
  800. package/src/assets/plugins/highcharts/examples/3d-column-null-values/index.html +118 -0
  801. package/src/assets/plugins/highcharts/examples/3d-column-stacking-grouping/index.html +144 -0
  802. package/src/assets/plugins/highcharts/examples/3d-pie/index.html +130 -0
  803. package/src/assets/plugins/highcharts/examples/3d-pie-donut/index.html +112 -0
  804. package/src/assets/plugins/highcharts/examples/3d-scatter-draggable/index.html +221 -0
  805. package/src/assets/plugins/highcharts/examples/accessible-line/index.html +198 -0
  806. package/src/assets/plugins/highcharts/examples/accessible-pie/index.html +213 -0
  807. package/src/assets/plugins/highcharts/examples/advanced-accessible/index.html +271 -0
  808. package/src/assets/plugins/highcharts/examples/annotations/index.html +2170 -0
  809. package/src/assets/plugins/highcharts/examples/area-basic/index.html +157 -0
  810. package/src/assets/plugins/highcharts/examples/area-inverted/index.html +135 -0
  811. package/src/assets/plugins/highcharts/examples/area-missing/index.html +125 -0
  812. package/src/assets/plugins/highcharts/examples/area-negative/index.html +101 -0
  813. package/src/assets/plugins/highcharts/examples/area-stacked/index.html +136 -0
  814. package/src/assets/plugins/highcharts/examples/area-stacked-percent/index.html +141 -0
  815. package/src/assets/plugins/highcharts/examples/arearange/index.html +132 -0
  816. package/src/assets/plugins/highcharts/examples/arearange-line/index.html +195 -0
  817. package/src/assets/plugins/highcharts/examples/areaspline/index.html +137 -0
  818. package/src/assets/plugins/highcharts/examples/bar-basic/index.html +143 -0
  819. package/src/assets/plugins/highcharts/examples/bar-negative-stack/index.html +173 -0
  820. package/src/assets/plugins/highcharts/examples/bar-stacked/index.html +112 -0
  821. package/src/assets/plugins/highcharts/examples/bellcurve/index.html +133 -0
  822. package/src/assets/plugins/highcharts/examples/box-plot/index.html +149 -0
  823. package/src/assets/plugins/highcharts/examples/bubble/index.html +209 -0
  824. package/src/assets/plugins/highcharts/examples/bubble-3d/index.html +159 -0
  825. package/src/assets/plugins/highcharts/examples/bullet-graph/index.html +233 -0
  826. package/src/assets/plugins/highcharts/examples/chart-update/index.html +137 -0
  827. package/src/assets/plugins/highcharts/examples/column-basic/index.html +144 -0
  828. package/src/assets/plugins/highcharts/examples/column-comparison/index.html +350 -0
  829. package/src/assets/plugins/highcharts/examples/column-drilldown/index.html +387 -0
  830. package/src/assets/plugins/highcharts/examples/column-negative/index.html +101 -0
  831. package/src/assets/plugins/highcharts/examples/column-parsed/index.html +138 -0
  832. package/src/assets/plugins/highcharts/examples/column-placement/index.html +160 -0
  833. package/src/assets/plugins/highcharts/examples/column-pyramid/index.html +117 -0
  834. package/src/assets/plugins/highcharts/examples/column-rotated-labels/index.html +147 -0
  835. package/src/assets/plugins/highcharts/examples/column-stacked/index.html +138 -0
  836. package/src/assets/plugins/highcharts/examples/column-stacked-and-grouped/index.html +133 -0
  837. package/src/assets/plugins/highcharts/examples/column-stacked-percent/index.html +113 -0
  838. package/src/assets/plugins/highcharts/examples/columnrange/index.html +145 -0
  839. package/src/assets/plugins/highcharts/examples/combo/index.html +146 -0
  840. package/src/assets/plugins/highcharts/examples/combo-dual-axes/index.html +153 -0
  841. package/src/assets/plugins/highcharts/examples/combo-meteogram/index.html +768 -0
  842. package/src/assets/plugins/highcharts/examples/combo-multi-axes/index.html +222 -0
  843. package/src/assets/plugins/highcharts/examples/combo-regression/index.html +110 -0
  844. package/src/assets/plugins/highcharts/examples/combo-timeline/index.html +592 -0
  845. package/src/assets/plugins/highcharts/examples/cylinder/index.html +104 -0
  846. package/src/assets/plugins/highcharts/examples/dependency-wheel/index.html +165 -0
  847. package/src/assets/plugins/highcharts/examples/dumbbell/index.html +230 -0
  848. package/src/assets/plugins/highcharts/examples/dynamic-click-to-add/index.html +147 -0
  849. package/src/assets/plugins/highcharts/examples/dynamic-master-detail/index.html +316 -0
  850. package/src/assets/plugins/highcharts/examples/dynamic-update/index.html +163 -0
  851. package/src/assets/plugins/highcharts/examples/error-bar/index.html +154 -0
  852. package/src/assets/plugins/highcharts/examples/euler-diagram/index.html +119 -0
  853. package/src/assets/plugins/highcharts/examples/flame/index.html +1324 -0
  854. package/src/assets/plugins/highcharts/examples/funnel/index.html +131 -0
  855. package/src/assets/plugins/highcharts/examples/funnel3d/index.html +117 -0
  856. package/src/assets/plugins/highcharts/examples/gauge-activity/index.html +272 -0
  857. package/src/assets/plugins/highcharts/examples/gauge-clock/index.html +261 -0
  858. package/src/assets/plugins/highcharts/examples/gauge-dual/index.html +181 -0
  859. package/src/assets/plugins/highcharts/examples/gauge-solid/index.html +248 -0
  860. package/src/assets/plugins/highcharts/examples/gauge-speedometer/index.html +189 -0
  861. package/src/assets/plugins/highcharts/examples/gauge-vu-meter/index.html +210 -0
  862. package/src/assets/plugins/highcharts/examples/heatmap/index.html +168 -0
  863. package/src/assets/plugins/highcharts/examples/heatmap-canvas/index.html +8928 -0
  864. package/src/assets/plugins/highcharts/examples/histogram/index.html +133 -0
  865. package/src/assets/plugins/highcharts/examples/honeycomb-usa/index.html +518 -0
  866. package/src/assets/plugins/highcharts/examples/line-ajax/index.html +206 -0
  867. package/src/assets/plugins/highcharts/examples/line-basic/index.html +147 -0
  868. package/src/assets/plugins/highcharts/examples/line-boost/index.html +144 -0
  869. package/src/assets/plugins/highcharts/examples/line-labels/index.html +108 -0
  870. package/src/assets/plugins/highcharts/examples/line-log-axis/index.html +106 -0
  871. package/src/assets/plugins/highcharts/examples/line-time-series/index.html +136 -0
  872. package/src/assets/plugins/highcharts/examples/live-data/index.html +155 -0
  873. package/src/assets/plugins/highcharts/examples/lollipop/index.html +161 -0
  874. package/src/assets/plugins/highcharts/examples/network-graph/index.html +277 -0
  875. package/src/assets/plugins/highcharts/examples/organization-chart/index.html +224 -0
  876. package/src/assets/plugins/highcharts/examples/packed-bubble/index.html +588 -0
  877. package/src/assets/plugins/highcharts/examples/packed-bubble-split/index.html +589 -0
  878. package/src/assets/plugins/highcharts/examples/parallel-coordinates/index.html +176 -0
  879. package/src/assets/plugins/highcharts/examples/pareto/index.html +133 -0
  880. package/src/assets/plugins/highcharts/examples/parliament-chart/index.html +138 -0
  881. package/src/assets/plugins/highcharts/examples/pie-basic/index.html +141 -0
  882. package/src/assets/plugins/highcharts/examples/pie-donut/index.html +347 -0
  883. package/src/assets/plugins/highcharts/examples/pie-drilldown/index.html +418 -0
  884. package/src/assets/plugins/highcharts/examples/pie-gradient/index.html +133 -0
  885. package/src/assets/plugins/highcharts/examples/pie-legend/index.html +128 -0
  886. package/src/assets/plugins/highcharts/examples/pie-monochrome/index.html +139 -0
  887. package/src/assets/plugins/highcharts/examples/pie-semi-circle/index.html +133 -0
  888. package/src/assets/plugins/highcharts/examples/polar/index.html +136 -0
  889. package/src/assets/plugins/highcharts/examples/polar-radial-bar/index.html +169 -0
  890. package/src/assets/plugins/highcharts/examples/polar-spider/index.html +148 -0
  891. package/src/assets/plugins/highcharts/examples/polar-wind-rose/index.html +351 -0
  892. package/src/assets/plugins/highcharts/examples/polygon/index.html +190 -0
  893. package/src/assets/plugins/highcharts/examples/pyramid/index.html +126 -0
  894. package/src/assets/plugins/highcharts/examples/pyramid3d/index.html +117 -0
  895. package/src/assets/plugins/highcharts/examples/renderer/index.html +334 -0
  896. package/src/assets/plugins/highcharts/examples/responsive/index.html +176 -0
  897. package/src/assets/plugins/highcharts/examples/sankey-diagram/index.html +145 -0
  898. package/src/assets/plugins/highcharts/examples/scatter/index.html +246 -0
  899. package/src/assets/plugins/highcharts/examples/scatter-boost/index.html +142 -0
  900. package/src/assets/plugins/highcharts/examples/sonification/index.html +331 -0
  901. package/src/assets/plugins/highcharts/examples/sparkline/index.html +676 -0
  902. package/src/assets/plugins/highcharts/examples/spline-inverted/index.html +135 -0
  903. package/src/assets/plugins/highcharts/examples/spline-irregular-time/index.html +255 -0
  904. package/src/assets/plugins/highcharts/examples/spline-plot-bands/index.html +223 -0
  905. package/src/assets/plugins/highcharts/examples/spline-symbols/index.html +139 -0
  906. package/src/assets/plugins/highcharts/examples/streamgraph/index.html +447 -0
  907. package/src/assets/plugins/highcharts/examples/styled-mode-column/index.html +146 -0
  908. package/src/assets/plugins/highcharts/examples/styled-mode-pie/index.html +119 -0
  909. package/src/assets/plugins/highcharts/examples/sunburst/index.html +1520 -0
  910. package/src/assets/plugins/highcharts/examples/synchronized-charts/index.html +238 -0
  911. package/src/assets/plugins/highcharts/examples/timeline/index.html +142 -0
  912. package/src/assets/plugins/highcharts/examples/treemap-coloraxis/index.html +119 -0
  913. package/src/assets/plugins/highcharts/examples/treemap-large-dataset/index.html +172 -0
  914. package/src/assets/plugins/highcharts/examples/treemap-with-levels/index.html +151 -0
  915. package/src/assets/plugins/highcharts/examples/variable-radius-pie/index.html +131 -0
  916. package/src/assets/plugins/highcharts/examples/variwide/index.html +146 -0
  917. package/src/assets/plugins/highcharts/examples/vector-plot/index.html +494 -0
  918. package/src/assets/plugins/highcharts/examples/venn-diagram/index.html +124 -0
  919. package/src/assets/plugins/highcharts/examples/waterfall/index.html +143 -0
  920. package/src/assets/plugins/highcharts/examples/windbarb-series/index.html +189 -0
  921. package/src/assets/plugins/highcharts/examples/wordcloud/index.html +110 -0
  922. package/src/assets/plugins/highcharts/examples/x-range/index.html +142 -0
  923. package/src/assets/plugins/highcharts/gfx/stock-icons/annotations-hidden.svg +19 -0
  924. package/src/assets/plugins/highcharts/gfx/stock-icons/annotations-visible.svg +20 -0
  925. package/src/assets/plugins/highcharts/gfx/stock-icons/arrow-bottom.svg +9 -0
  926. package/src/assets/plugins/highcharts/gfx/stock-icons/arrow-left.svg +9 -0
  927. package/src/assets/plugins/highcharts/gfx/stock-icons/arrow-line.svg +11 -0
  928. package/src/assets/plugins/highcharts/gfx/stock-icons/arrow-ray.svg +10 -0
  929. package/src/assets/plugins/highcharts/gfx/stock-icons/arrow-right.svg +9 -0
  930. package/src/assets/plugins/highcharts/gfx/stock-icons/arrow-segment.svg +11 -0
  931. package/src/assets/plugins/highcharts/gfx/stock-icons/arrow.svg +13 -0
  932. package/src/assets/plugins/highcharts/gfx/stock-icons/circle.svg +13 -0
  933. package/src/assets/plugins/highcharts/gfx/stock-icons/close.svg +8 -0
  934. package/src/assets/plugins/highcharts/gfx/stock-icons/crooked-3.svg +13 -0
  935. package/src/assets/plugins/highcharts/gfx/stock-icons/crooked-5.svg +11 -0
  936. package/src/assets/plugins/highcharts/gfx/stock-icons/current-price-hide.svg +40 -0
  937. package/src/assets/plugins/highcharts/gfx/stock-icons/current-price-show.svg +41 -0
  938. package/src/assets/plugins/highcharts/gfx/stock-icons/destroy.svg +14 -0
  939. package/src/assets/plugins/highcharts/gfx/stock-icons/drawing.svg +18 -0
  940. package/src/assets/plugins/highcharts/gfx/stock-icons/edit.svg +10 -0
  941. package/src/assets/plugins/highcharts/gfx/stock-icons/elliott-3.svg +59 -0
  942. package/src/assets/plugins/highcharts/gfx/stock-icons/elliott-5.svg +41 -0
  943. package/src/assets/plugins/highcharts/gfx/stock-icons/ellipse.svg +11 -0
  944. package/src/assets/plugins/highcharts/gfx/stock-icons/fibonacci-timezone.svg +16 -0
  945. package/src/assets/plugins/highcharts/gfx/stock-icons/fibonacci.svg +25 -0
  946. package/src/assets/plugins/highcharts/gfx/stock-icons/flag-basic.svg +10 -0
  947. package/src/assets/plugins/highcharts/gfx/stock-icons/flag-diamond.svg +12 -0
  948. package/src/assets/plugins/highcharts/gfx/stock-icons/flag-elipse.svg +13 -0
  949. package/src/assets/plugins/highcharts/gfx/stock-icons/flag-trapeze.svg +14 -0
  950. package/src/assets/plugins/highcharts/gfx/stock-icons/fullscreen.svg +15 -0
  951. package/src/assets/plugins/highcharts/gfx/stock-icons/horizontal-line.svg +8 -0
  952. package/src/assets/plugins/highcharts/gfx/stock-icons/indicators.svg +27 -0
  953. package/src/assets/plugins/highcharts/gfx/stock-icons/label.svg +16 -0
  954. package/src/assets/plugins/highcharts/gfx/stock-icons/line.svg +11 -0
  955. package/src/assets/plugins/highcharts/gfx/stock-icons/linear.svg +11 -0
  956. package/src/assets/plugins/highcharts/gfx/stock-icons/logarithmic.svg +1 -0
  957. package/src/assets/plugins/highcharts/gfx/stock-icons/measure-x.svg +23 -0
  958. package/src/assets/plugins/highcharts/gfx/stock-icons/measure-xy.svg +28 -0
  959. package/src/assets/plugins/highcharts/gfx/stock-icons/measure-y.svg +24 -0
  960. package/src/assets/plugins/highcharts/gfx/stock-icons/panning.svg +17 -0
  961. package/src/assets/plugins/highcharts/gfx/stock-icons/parallel-channel.svg +15 -0
  962. package/src/assets/plugins/highcharts/gfx/stock-icons/pitchfork.svg +13 -0
  963. package/src/assets/plugins/highcharts/gfx/stock-icons/ray.svg +10 -0
  964. package/src/assets/plugins/highcharts/gfx/stock-icons/rectangle.svg +8 -0
  965. package/src/assets/plugins/highcharts/gfx/stock-icons/remove-annotations.svg +15 -0
  966. package/src/assets/plugins/highcharts/gfx/stock-icons/save-chart.svg +12 -0
  967. package/src/assets/plugins/highcharts/gfx/stock-icons/segment.svg +10 -0
  968. package/src/assets/plugins/highcharts/gfx/stock-icons/separator.svg +10 -0
  969. package/src/assets/plugins/highcharts/gfx/stock-icons/series-candlestick.svg +12 -0
  970. package/src/assets/plugins/highcharts/gfx/stock-icons/series-heikin-ashi.svg +1 -0
  971. package/src/assets/plugins/highcharts/gfx/stock-icons/series-hlc.svg +1 -0
  972. package/src/assets/plugins/highcharts/gfx/stock-icons/series-hollow-candlestick.svg +1 -0
  973. package/src/assets/plugins/highcharts/gfx/stock-icons/series-line.svg +11 -0
  974. package/src/assets/plugins/highcharts/gfx/stock-icons/series-ohlc.svg +14 -0
  975. package/src/assets/plugins/highcharts/gfx/stock-icons/text.svg +13 -0
  976. package/src/assets/plugins/highcharts/gfx/stock-icons/time-cycles.svg +35 -0
  977. package/src/assets/plugins/highcharts/gfx/stock-icons/vertical-arrow.svg +7 -0
  978. package/src/assets/plugins/highcharts/gfx/stock-icons/vertical-counter.svg +23 -0
  979. package/src/assets/plugins/highcharts/gfx/stock-icons/vertical-double-arrow.svg +10 -0
  980. package/src/assets/plugins/highcharts/gfx/stock-icons/vertical-label.svg +14 -0
  981. package/src/assets/plugins/highcharts/gfx/stock-icons/vertical-line.svg +8 -0
  982. package/src/assets/plugins/highcharts/gfx/stock-icons/zoom-x.svg +17 -0
  983. package/src/assets/plugins/highcharts/gfx/stock-icons/zoom-xy.svg +13 -0
  984. package/src/assets/plugins/highcharts/gfx/stock-icons/zoom-y.svg +17 -0
  985. package/src/assets/plugins/highcharts/gfx/vml-radial-gradient.png +0 -0
  986. package/src/assets/plugins/highcharts/graphics/color-picker.svg +12 -0
  987. package/src/assets/plugins/highcharts/graphics/cursor.svg +11 -0
  988. package/src/assets/plugins/highcharts/graphics/earth.svg +432 -0
  989. package/src/assets/plugins/highcharts/graphics/feature.svg +13 -0
  990. package/src/assets/plugins/highcharts/graphics/flag-circle.svg +17 -0
  991. package/src/assets/plugins/highcharts/graphics/flag-circlepin.svg +15 -0
  992. package/src/assets/plugins/highcharts/graphics/flag-diamondpin.svg +15 -0
  993. package/src/assets/plugins/highcharts/graphics/flag-flag.svg +14 -0
  994. package/src/assets/plugins/highcharts/graphics/flag-rectangle.svg +18 -0
  995. package/src/assets/plugins/highcharts/graphics/flag-squarepin.svg +16 -0
  996. package/src/assets/plugins/highcharts/graphics/flag.svg +15 -0
  997. package/src/assets/plugins/highcharts/graphics/homepage/apple.svg +55 -0
  998. package/src/assets/plugins/highcharts/graphics/homepage/award.png +0 -0
  999. package/src/assets/plugins/highcharts/graphics/homepage/cloud.png +0 -0
  1000. package/src/assets/plugins/highcharts/graphics/homepage/earth.png +0 -0
  1001. package/src/assets/plugins/highcharts/graphics/homepage/jupiter.png +0 -0
  1002. package/src/assets/plugins/highcharts/graphics/homepage/mars.png +0 -0
  1003. package/src/assets/plugins/highcharts/graphics/homepage/mercury.png +0 -0
  1004. package/src/assets/plugins/highcharts/graphics/homepage/moon.png +0 -0
  1005. package/src/assets/plugins/highcharts/graphics/homepage/neptune.png +0 -0
  1006. package/src/assets/plugins/highcharts/graphics/homepage/p1.png +0 -0
  1007. package/src/assets/plugins/highcharts/graphics/homepage/p1.svg +9 -0
  1008. package/src/assets/plugins/highcharts/graphics/homepage/p2.png +0 -0
  1009. package/src/assets/plugins/highcharts/graphics/homepage/p2.svg +9 -0
  1010. package/src/assets/plugins/highcharts/graphics/homepage/p3.png +0 -0
  1011. package/src/assets/plugins/highcharts/graphics/homepage/p3.svg +9 -0
  1012. package/src/assets/plugins/highcharts/graphics/homepage/p4.png +0 -0
  1013. package/src/assets/plugins/highcharts/graphics/homepage/p4.svg +9 -0
  1014. package/src/assets/plugins/highcharts/graphics/homepage/p5.png +0 -0
  1015. package/src/assets/plugins/highcharts/graphics/homepage/p5.svg +9 -0
  1016. package/src/assets/plugins/highcharts/graphics/homepage/p6.png +0 -0
  1017. package/src/assets/plugins/highcharts/graphics/homepage/p6.svg +9 -0
  1018. package/src/assets/plugins/highcharts/graphics/homepage/product.png +0 -0
  1019. package/src/assets/plugins/highcharts/graphics/homepage/saturn.png +0 -0
  1020. package/src/assets/plugins/highcharts/graphics/homepage/sun.png +0 -0
  1021. package/src/assets/plugins/highcharts/graphics/homepage/uranus.png +0 -0
  1022. package/src/assets/plugins/highcharts/graphics/homepage/venus.png +0 -0
  1023. package/src/assets/plugins/highcharts/graphics/homepage/version.png +0 -0
  1024. package/src/assets/plugins/highcharts/graphics/rect.svg +12 -0
  1025. package/src/assets/plugins/highcharts/graphics/reset.svg +16 -0
  1026. package/src/assets/plugins/highcharts/graphics/sand.png +0 -0
  1027. package/src/assets/plugins/highcharts/graphics/save-chart-cloud.svg +14 -0
  1028. package/src/assets/plugins/highcharts/graphics/save.svg +14 -0
  1029. package/src/assets/plugins/highcharts/graphics/search.png +0 -0
  1030. package/src/assets/plugins/highcharts/graphics/skies.jpg +0 -0
  1031. package/src/assets/plugins/highcharts/graphics/snow.png +0 -0
  1032. package/src/assets/plugins/highcharts/graphics/sun.png +0 -0
  1033. package/src/assets/plugins/highcharts/graphics/xmas-card-2020/blue-flake-big.svg +32 -0
  1034. package/src/assets/plugins/highcharts/graphics/xmas-card-2020/blue-star-big.svg +16 -0
  1035. package/src/assets/plugins/highcharts/graphics/xmas-card-2020/car-tree.svg +429 -0
  1036. package/src/assets/plugins/highcharts/graphics/xmas-card-2020/green-flake-big.svg +119 -0
  1037. package/src/assets/plugins/highcharts/graphics/xmas-card-2020/green-star.svg +20 -0
  1038. package/src/assets/plugins/highcharts/graphics/xmas-card-2020/hill.svg +193 -0
  1039. package/src/assets/plugins/highcharts/graphics/xmas-card-2020/hill2.svg +164 -0
  1040. package/src/assets/plugins/highcharts/graphics/xmas-card-2020/horse.svg +1 -0
  1041. package/src/assets/plugins/highcharts/graphics/xmas-card-2020/people.svg +2336 -0
  1042. package/src/assets/plugins/highcharts/graphics/xmas-card-2020/pines.svg +777 -0
  1043. package/src/assets/plugins/highcharts/graphics/xmas-card-2020/pond-skate.svg +1 -0
  1044. package/src/assets/plugins/highcharts/graphics/xmas-card-2020/red-flake.svg +30 -0
  1045. package/src/assets/plugins/highcharts/graphics/xmas-card-2020/red-house.svg +85 -0
  1046. package/src/assets/plugins/highcharts/graphics/xmas-card-2020/red-star-big.svg +36 -0
  1047. package/src/assets/plugins/highcharts/graphics/xmas-card-2020/red-star.svg +20 -0
  1048. package/src/assets/plugins/highcharts/graphics/xmas-card-2020/santa-b.svg +91 -0
  1049. package/src/assets/plugins/highcharts/graphics/xmas-card-2020/santa.svg +91 -0
  1050. package/src/assets/plugins/highcharts/graphics/xmas-card-2020/snow-mound.svg +146 -0
  1051. package/src/assets/plugins/highcharts/graphics/xmas-card-2020/snow.svg +20788 -0
  1052. package/src/assets/plugins/highcharts/graphics/xmas-card-2020/sun-disk.svg +597 -0
  1053. package/src/assets/plugins/highcharts/graphics/xmas-card-2020/tree-cluster.svg +2735 -0
  1054. package/src/assets/plugins/highcharts/graphics/xmas-card-2020/white-flake-big.svg +99 -0
  1055. package/src/assets/plugins/highcharts/graphics/xmas-card-2020/white-flake.big.svg +96 -0
  1056. package/src/assets/plugins/highcharts/graphics/xmas-card-2020/white-star-big.svg +36 -0
  1057. package/src/assets/plugins/highcharts/index.html +133 -0
@@ -0,0 +1,3869 @@
1
+ /**
2
+ * @license Highcharts JS v9.3.3 (2022-02-01)
3
+ *
4
+ * Sonification module
5
+ *
6
+ * (c) 2012-2021 Øystein Moseng
7
+ *
8
+ * License: www.highcharts.com/license
9
+ */
10
+ 'use strict';
11
+ (function (factory) {
12
+ if (typeof module === 'object' && module.exports) {
13
+ factory['default'] = factory;
14
+ module.exports = factory;
15
+ } else if (typeof define === 'function' && define.amd) {
16
+ define('highcharts/modules/sonification', ['highcharts'], function (Highcharts) {
17
+ factory(Highcharts);
18
+ factory.Highcharts = Highcharts;
19
+ return factory;
20
+ });
21
+ } else {
22
+ factory(typeof Highcharts !== 'undefined' ? Highcharts : undefined);
23
+ }
24
+ }(function (Highcharts) {
25
+ var _modules = Highcharts ? Highcharts._modules : {};
26
+ function _registerModule(obj, path, args, fn) {
27
+ if (!obj.hasOwnProperty(path)) {
28
+ obj[path] = fn.apply(null, args);
29
+ }
30
+ }
31
+ _registerModule(_modules, 'Extensions/Sonification/MusicalFrequencies.js', [], function () {
32
+ /* *
33
+ *
34
+ * (c) 2009-2021 Øystein Moseng
35
+ *
36
+ * List of musical frequencies from C0 to C8.
37
+ *
38
+ * License: www.highcharts.com/license
39
+ *
40
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
41
+ *
42
+ * */
43
+ /* *
44
+ *
45
+ * Constants
46
+ *
47
+ * */
48
+ var frequencies = [
49
+ 16.351597831287414,
50
+ 17.323914436054505,
51
+ 18.354047994837977,
52
+ 19.445436482630058,
53
+ 20.601722307054366,
54
+ 21.826764464562746,
55
+ 23.12465141947715,
56
+ 24.499714748859326,
57
+ 25.956543598746574,
58
+ 27.5,
59
+ 29.13523509488062,
60
+ 30.86770632850775,
61
+ 32.70319566257483,
62
+ 34.64782887210901,
63
+ 36.70809598967594,
64
+ 38.890872965260115,
65
+ 41.20344461410875,
66
+ 43.653528929125486,
67
+ 46.2493028389543,
68
+ 48.999429497718666,
69
+ 51.91308719749314,
70
+ 55,
71
+ 58.27047018976124,
72
+ 61.7354126570155,
73
+ 65.40639132514966,
74
+ 69.29565774421802,
75
+ 73.41619197935188,
76
+ 77.78174593052023,
77
+ 82.4068892282175,
78
+ 87.30705785825097,
79
+ 92.4986056779086,
80
+ 97.99885899543733,
81
+ 103.82617439498628,
82
+ 110,
83
+ 116.54094037952248,
84
+ 123.47082531403103,
85
+ 130.8127826502993,
86
+ 138.59131548843604,
87
+ 146.8323839587038,
88
+ 155.56349186104046,
89
+ 164.81377845643496,
90
+ 174.61411571650194,
91
+ 184.9972113558172,
92
+ 195.99771799087463,
93
+ 207.65234878997256,
94
+ 220,
95
+ 233.08188075904496,
96
+ 246.94165062806206,
97
+ 261.6255653005986,
98
+ 277.1826309768721,
99
+ 293.6647679174076,
100
+ 311.1269837220809,
101
+ 329.6275569128699,
102
+ 349.2282314330039,
103
+ 369.9944227116344,
104
+ 391.99543598174927,
105
+ 415.3046975799451,
106
+ 440,
107
+ 466.1637615180899,
108
+ 493.8833012561241,
109
+ 523.2511306011972,
110
+ 554.3652619537442,
111
+ 587.3295358348151,
112
+ 622.2539674441618,
113
+ 659.2551138257398,
114
+ 698.4564628660078,
115
+ 739.9888454232688,
116
+ 783.9908719634985,
117
+ 830.6093951598903,
118
+ 880,
119
+ 932.3275230361799,
120
+ 987.7666025122483,
121
+ 1046.5022612023945,
122
+ 1108.7305239074883,
123
+ 1174.6590716696303,
124
+ 1244.5079348883237,
125
+ 1318.5102276514797,
126
+ 1396.9129257320155,
127
+ 1479.9776908465376,
128
+ 1567.981743926997,
129
+ 1661.2187903197805,
130
+ 1760,
131
+ 1864.6550460723597,
132
+ 1975.533205024496,
133
+ 2093.004522404789,
134
+ 2217.4610478149766,
135
+ 2349.31814333926,
136
+ 2489.0158697766474,
137
+ 2637.02045530296,
138
+ 2793.825851464031,
139
+ 2959.955381693075,
140
+ 3135.9634878539946,
141
+ 3322.437580639561,
142
+ 3520,
143
+ 3729.3100921447194,
144
+ 3951.066410048992,
145
+ 4186.009044809578 // C8
146
+ ];
147
+ /* *
148
+ *
149
+ * Default export
150
+ *
151
+ * */
152
+
153
+ return frequencies;
154
+ });
155
+ _registerModule(_modules, 'Extensions/Sonification/SignalHandler.js', [], function () {
156
+ /* *
157
+ *
158
+ * (c) 2009-2021 Øystein Moseng
159
+ *
160
+ * Utility functions for sonification.
161
+ *
162
+ * License: www.highcharts.com/license
163
+ *
164
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
165
+ *
166
+ * */
167
+ /* eslint-disable no-invalid-this, valid-jsdoc */
168
+ /* *
169
+ *
170
+ * Class
171
+ *
172
+ * */
173
+ /**
174
+ * The SignalHandler class. Stores signal callbacks (event handlers), and
175
+ * provides an interface to register them, and emit signals. The word "event" is
176
+ * not used to avoid confusion with TimelineEvents.
177
+ *
178
+ * @requires module:modules/sonification
179
+ *
180
+ * @private
181
+ * @class
182
+ * @name Highcharts.SignalHandler
183
+ *
184
+ * @param {Array<string>} supportedSignals
185
+ * List of supported signal names.
186
+ */
187
+ var SignalHandler = /** @class */ (function () {
188
+ /* *
189
+ *
190
+ * Constructors
191
+ *
192
+ * */
193
+ function SignalHandler(supportedSignals) {
194
+ /* *
195
+ *
196
+ * Properties
197
+ *
198
+ * */
199
+ this.signals = void 0;
200
+ this.supportedSignals = void 0;
201
+ this.init(supportedSignals || []);
202
+ }
203
+ /* *
204
+ *
205
+ * Functions
206
+ *
207
+ * */
208
+ SignalHandler.prototype.init = function (supportedSignals) {
209
+ this.supportedSignals = supportedSignals;
210
+ this.signals = {};
211
+ };
212
+ /**
213
+ * Register a set of signal callbacks with this SignalHandler.
214
+ * Multiple signal callbacks can be registered for the same signal.
215
+ * @private
216
+ * @param {Highcharts.Dictionary<(Function|undefined)>} signals
217
+ * An object that contains a mapping from the signal name to the callbacks.
218
+ * Only supported events are considered.
219
+ */
220
+ SignalHandler.prototype.registerSignalCallbacks = function (signals) {
221
+ var signalHandler = this;
222
+ signalHandler.supportedSignals.forEach(function (supportedSignal) {
223
+ var signal = signals[supportedSignal];
224
+ if (signal) {
225
+ (signalHandler.signals[supportedSignal] =
226
+ signalHandler.signals[supportedSignal] || []).push(signal);
227
+ }
228
+ });
229
+ };
230
+ /**
231
+ * Clear signal callbacks, optionally by name.
232
+ * @private
233
+ * @param {Array<string>} [signalNames]
234
+ * A list of signal names to clear. If not supplied, all signal callbacks
235
+ * are removed.
236
+ */
237
+ SignalHandler.prototype.clearSignalCallbacks = function (signalNames) {
238
+ var signalHandler = this;
239
+ if (signalNames) {
240
+ signalNames.forEach(function (signalName) {
241
+ if (signalHandler.signals[signalName]) {
242
+ delete signalHandler.signals[signalName];
243
+ }
244
+ });
245
+ }
246
+ else {
247
+ signalHandler.signals = {};
248
+ }
249
+ };
250
+ /**
251
+ * Emit a signal. Does nothing if the signal does not exist, or has no
252
+ * registered callbacks.
253
+ * @private
254
+ * @param {string} signalName
255
+ * Name of signal to emit.
256
+ * @param {*} [data]
257
+ * Data to pass to the callback.
258
+ */
259
+ SignalHandler.prototype.emitSignal = function (signalName, data) {
260
+ var retval;
261
+ if (this.signals[signalName]) {
262
+ this.signals[signalName].forEach(function (handler) {
263
+ var result = handler(data);
264
+ retval = typeof result !== 'undefined' ? result : retval;
265
+ });
266
+ }
267
+ return retval;
268
+ };
269
+ return SignalHandler;
270
+ }());
271
+ /* *
272
+ *
273
+ * Default Export
274
+ *
275
+ * */
276
+
277
+ return SignalHandler;
278
+ });
279
+ _registerModule(_modules, 'Extensions/Sonification/SonificationUtilities.js', [_modules['Extensions/Sonification/MusicalFrequencies.js'], _modules['Extensions/Sonification/SignalHandler.js'], _modules['Core/Utilities.js']], function (MusicalFrequencies, SignalHandler, U) {
280
+ /* *
281
+ *
282
+ * (c) 2009-2021 Øystein Moseng
283
+ *
284
+ * Utility functions for sonification.
285
+ *
286
+ * License: www.highcharts.com/license
287
+ *
288
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
289
+ *
290
+ * */
291
+ var clamp = U.clamp,
292
+ merge = U.merge;
293
+ /* eslint-disable no-invalid-this, valid-jsdoc */
294
+ /* *
295
+ *
296
+ * Constants
297
+ *
298
+ * */
299
+ var SonificationUtilities = {
300
+ // List of musical frequencies from C0 to C8
301
+ musicalFrequencies: MusicalFrequencies,
302
+ // SignalHandler class
303
+ SignalHandler: SignalHandler,
304
+ getExtremesForInstrumentProps: getExtremesForInstrumentProps,
305
+ /**
306
+ * Get a musical scale by specifying the semitones from 1-12 to include.
307
+ * 1: C, 2: C#, 3: D, 4: D#, 5: E, 6: F,
308
+ * 7: F#, 8: G, 9: G#, 10: A, 11: Bb, 12: B
309
+ * @private
310
+ * @param {Array<number>} semitones
311
+ * Array of semitones from 1-12 to include in the scale. Duplicate entries
312
+ * are ignored.
313
+ * @return {Array<number>}
314
+ * Array of frequencies from C0 to C8 that are included in this scale.
315
+ */
316
+ getMusicalScale: function (semitones) {
317
+ return MusicalFrequencies.filter(function (freq,
318
+ i) {
319
+ var interval = i % 12 + 1;
320
+ return semitones.some(function (allowedInterval) {
321
+ return allowedInterval === interval;
322
+ });
323
+ });
324
+ },
325
+ /**
326
+ * Calculate the extreme values in a chart for a data prop.
327
+ * @private
328
+ * @param {Highcharts.Chart} chart
329
+ * The chart
330
+ * @param {string} prop
331
+ * The data prop to find extremes for
332
+ * @return {Highcharts.RangeObject}
333
+ * Object with min and max properties
334
+ */
335
+ calculateDataExtremes: function (chart, prop) {
336
+ return chart.series.reduce(function (extremes, series) {
337
+ // We use cropped points rather than series.data here, to allow
338
+ // users to zoom in for better fidelity.
339
+ series.points.forEach(function (point) {
340
+ var val = typeof point[prop] !== 'undefined' ?
341
+ point[prop] : point.options[prop];
342
+ extremes.min = Math.min(extremes.min, val);
343
+ extremes.max = Math.max(extremes.max, val);
344
+ });
345
+ return extremes;
346
+ }, {
347
+ min: Infinity,
348
+ max: -Infinity
349
+ });
350
+ },
351
+ /**
352
+ * Translate a value on a virtual axis. Creates a new, virtual, axis with a
353
+ * min and max, and maps the relative value onto this axis.
354
+ * @private
355
+ * @param {number} value
356
+ * The relative data value to translate.
357
+ * @param {Highcharts.RangeObject} DataExtremesObject
358
+ * The possible extremes for this value.
359
+ * @param {Object} limits
360
+ * Limits for the virtual axis.
361
+ * @param {boolean} [invert]
362
+ * Invert the virtual axis.
363
+ * @return {number}
364
+ * The value mapped to the virtual axis.
365
+ */
366
+ virtualAxisTranslate: function (value, dataExtremes, limits, invert) {
367
+ var lenValueAxis = dataExtremes.max - dataExtremes.min,
368
+ lenVirtualAxis = Math.abs(limits.max - limits.min),
369
+ valueDelta = invert ?
370
+ dataExtremes.max - value :
371
+ value - dataExtremes.min,
372
+ virtualValueDelta = lenVirtualAxis * valueDelta / lenValueAxis,
373
+ virtualAxisValue = limits.min + virtualValueDelta;
374
+ return lenValueAxis > 0 ?
375
+ clamp(virtualAxisValue, limits.min, limits.max) :
376
+ limits.min;
377
+ }
378
+ };
379
+ /* *
380
+ *
381
+ * Functions
382
+ *
383
+ * */
384
+ /**
385
+ * Calculate value extremes for used instrument data properties on a chart.
386
+ * @private
387
+ * @param {Highcharts.Chart} chart
388
+ * The chart to calculate extremes from.
389
+ * @param {Array<Highcharts.PointInstrumentObject>} [instruments]
390
+ * Additional instrument definitions to inspect for data props used, in
391
+ * addition to the instruments defined in the chart options.
392
+ * @param {Highcharts.Dictionary<Highcharts.RangeObject>} [dataExtremes]
393
+ * Predefined extremes for each data prop.
394
+ * @return {Highcharts.Dictionary<Highcharts.RangeObject>}
395
+ * New extremes with data properties mapped to min/max objects.
396
+ */
397
+ function getExtremesForInstrumentProps(chart, instruments, dataExtremes) {
398
+ var defaultInstrumentDef = (chart.options.sonification &&
399
+ chart.options.sonification.defaultInstrumentOptions),
400
+ optionDefToInstrDef = function (optionDef) { return ({
401
+ instrumentMapping: optionDef.mapping
402
+ }); };
403
+ var allInstrumentDefinitions = (instruments || []).slice(0);
404
+ if (defaultInstrumentDef) {
405
+ allInstrumentDefinitions.push(optionDefToInstrDef(defaultInstrumentDef));
406
+ }
407
+ chart.series.forEach(function (series) {
408
+ var instrOptions = (series.options.sonification &&
409
+ series.options.sonification.instruments);
410
+ if (instrOptions) {
411
+ allInstrumentDefinitions = allInstrumentDefinitions.concat(instrOptions.map(optionDefToInstrDef));
412
+ }
413
+ });
414
+ return (allInstrumentDefinitions).reduce(function (newExtremes, instrumentDefinition) {
415
+ Object.keys(instrumentDefinition.instrumentMapping || {}).forEach(function (instrumentParameter) {
416
+ var value = instrumentDefinition.instrumentMapping[instrumentParameter];
417
+ if (typeof value === 'string' && !newExtremes[value]) {
418
+ // This instrument parameter is mapped to a data prop. If we
419
+ // don't have predefined data extremes, find them.
420
+ newExtremes[value] = SonificationUtilities
421
+ .calculateDataExtremes(chart, value);
422
+ }
423
+ });
424
+ return newExtremes;
425
+ }, merge(dataExtremes));
426
+ }
427
+ /* *
428
+ *
429
+ * Default export
430
+ *
431
+ * */
432
+
433
+ return SonificationUtilities;
434
+ });
435
+ _registerModule(_modules, 'Extensions/Sonification/Options.js', [], function () {
436
+ /* *
437
+ *
438
+ * (c) 2009-2021 Øystein Moseng
439
+ *
440
+ * Default options for sonification.
441
+ *
442
+ * License: www.highcharts.com/license
443
+ *
444
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
445
+ *
446
+ * */
447
+ /* *
448
+ *
449
+ * Constants
450
+ *
451
+ * */
452
+ // Experimental, disabled by default, not exposed in API
453
+ var options = {
454
+ sonification: {
455
+ enabled: false,
456
+ duration: 2500,
457
+ afterSeriesWait: 700,
458
+ masterVolume: 1,
459
+ order: 'sequential',
460
+ defaultInstrumentOptions: {
461
+ instrument: 'sineMusical',
462
+ // Start at G4 note, end at C6
463
+ minFrequency: 392,
464
+ maxFrequency: 1046,
465
+ mapping: {
466
+ pointPlayTime: 'x',
467
+ duration: 200,
468
+ frequency: 'y'
469
+ }
470
+ }
471
+ }
472
+ };
473
+ /* *
474
+ *
475
+ * Default Export
476
+ *
477
+ * */
478
+
479
+ return options;
480
+ });
481
+ _registerModule(_modules, 'Extensions/Sonification/Sonification.js', [_modules['Core/DefaultOptions.js'], _modules['Core/Utilities.js'], _modules['Extensions/Sonification/SonificationUtilities.js'], _modules['Extensions/Sonification/Options.js']], function (D, U, SU, sonificationOptions) {
482
+ /* *
483
+ *
484
+ * (c) 2009-2021 Øystein Moseng
485
+ *
486
+ * Sonification module for Highcharts
487
+ *
488
+ * License: www.highcharts.com/license
489
+ *
490
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
491
+ *
492
+ * */
493
+ /* *
494
+ *
495
+ * Imports
496
+ *
497
+ * */
498
+ var defaultOptions = D.defaultOptions;
499
+ var merge = U.merge;
500
+ /* *
501
+ *
502
+ * Functions
503
+ *
504
+ * */
505
+ // Expose on the Highcharts object
506
+ // Add default options
507
+ merge(true, defaultOptions, sonificationOptions);
508
+ var Sonification = {
509
+ fadeOutDuration: 20,
510
+ // Classes and functions
511
+ utilities: SU
512
+ };
513
+ /* *
514
+ *
515
+ * Default Export
516
+ *
517
+ * */
518
+ /**
519
+ * Global classes and objects related to sonification.
520
+ *
521
+ * @requires module:modules/sonification
522
+ *
523
+ * @name Highcharts.sonification
524
+ * @type {Highcharts.SonificationObject}
525
+ */
526
+ /**
527
+ * Global classes and objects related to sonification.
528
+ *
529
+ * @requires module:modules/sonification
530
+ *
531
+ * @interface Highcharts.SonificationObject
532
+ */ /**
533
+ * Note fade-out-time in milliseconds. Most notes are faded out quickly by
534
+ * default if there is time. This is to avoid abrupt stops which will cause
535
+ * perceived clicks.
536
+ * @name Highcharts.SonificationObject#fadeOutDuration
537
+ * @type {number}
538
+ */ /**
539
+ * Utility functions.
540
+ * @name Highcharts.SonificationObject#utilities
541
+ * @private
542
+ * @type {Object}
543
+ */ /**
544
+ * The Instrument class.
545
+ * @name Highcharts.SonificationObject#Instrument
546
+ * @type {Function}
547
+ */ /**
548
+ * Predefined instruments, given as an object with a map between the instrument
549
+ * name and the Highcharts.Instrument object.
550
+ * @name Highcharts.SonificationObject#instruments
551
+ * @type {Object}
552
+ */ /**
553
+ * The Earcon class.
554
+ * @name Highcharts.SonificationObject#Earcon
555
+ * @type {Function}
556
+ */ /**
557
+ * The TimelineEvent class.
558
+ * @private
559
+ * @name Highcharts.SonificationObject#TimelineEvent
560
+ * @type {Function}
561
+ */ /**
562
+ * The TimelinePath class.
563
+ * @private
564
+ * @name Highcharts.SonificationObject#TimelinePath
565
+ * @type {Function}
566
+ */ /**
567
+ * The Timeline class.
568
+ * @private
569
+ * @name Highcharts.SonificationObject#Timeline
570
+ * @type {Function}
571
+ */
572
+ (''); // detach doclets above
573
+
574
+ return Sonification;
575
+ });
576
+ _registerModule(_modules, 'Extensions/Sonification/Instrument.js', [_modules['Core/Globals.js'], _modules['Extensions/Sonification/Sonification.js'], _modules['Extensions/Sonification/SonificationUtilities.js'], _modules['Core/Utilities.js']], function (H, Sonification, SU, U) {
577
+ /* *
578
+ *
579
+ * (c) 2009-2021 Øystein Moseng
580
+ *
581
+ * Instrument class for sonification module.
582
+ *
583
+ * License: www.highcharts.com/license
584
+ *
585
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
586
+ *
587
+ * */
588
+ /* *
589
+ *
590
+ * Imports
591
+ *
592
+ * */
593
+ var win = H.win;
594
+ var error = U.error,
595
+ merge = U.merge,
596
+ pick = U.pick,
597
+ uniqueKey = U.uniqueKey;
598
+ /* eslint-disable no-invalid-this, valid-jsdoc */
599
+ /* *
600
+ *
601
+ * Class
602
+ *
603
+ * */
604
+ /**
605
+ * The Instrument class. Instrument objects represent an instrument capable of
606
+ * playing a certain pitch for a specified duration.
607
+ *
608
+ * @sample highcharts/sonification/instrument/
609
+ * Using Instruments directly
610
+ * @sample highcharts/sonification/instrument-advanced/
611
+ * Using callbacks for instrument parameters
612
+ *
613
+ * @requires module:modules/sonification
614
+ *
615
+ * @class
616
+ * @name Highcharts.Instrument
617
+ *
618
+ * @param {Highcharts.InstrumentOptionsObject} options
619
+ * Options for the instrument instance.
620
+ */
621
+ var Instrument = /** @class */ (function () {
622
+ /* *
623
+ *
624
+ * Constructor
625
+ *
626
+ * */
627
+ function Instrument(options) {
628
+ this.id = void 0;
629
+ this.masterVolume = void 0;
630
+ this.options = void 0;
631
+ this.playCallbackTimers = void 0;
632
+ this.init(options);
633
+ }
634
+ /* *
635
+ *
636
+ * Functions
637
+ *
638
+ * */
639
+ Instrument.prototype.init = function (options) {
640
+ if (!this.initAudioContext()) {
641
+ error(29);
642
+ return;
643
+ }
644
+ this.options = merge(Instrument.defaultOptions, options);
645
+ this.id = this.options.id = options && options.id || uniqueKey();
646
+ this.masterVolume = this.options.masterVolume || 0;
647
+ // Init the audio nodes
648
+ var ctx = Instrument.audioContext,
649
+ // Note: Destination node can be overridden by setting
650
+ // Highcharts.sonification.Instrument.prototype.destinationNode.
651
+ // This allows for inserting an additional chain of nodes after
652
+ // the default processing.
653
+ destination = this.destinationNode || ctx.destination;
654
+ this.gainNode = ctx.createGain();
655
+ this.setGain(0);
656
+ this.panNode = ctx.createStereoPanner && ctx.createStereoPanner();
657
+ if (this.panNode) {
658
+ this.setPan(0);
659
+ this.gainNode.connect(this.panNode);
660
+ this.panNode.connect(destination);
661
+ }
662
+ else {
663
+ this.gainNode.connect(destination);
664
+ }
665
+ // Oscillator initialization
666
+ if (this.options.type === 'oscillator') {
667
+ this.initOscillator(this.options.oscillator);
668
+ }
669
+ // Init timer list
670
+ this.playCallbackTimers = [];
671
+ };
672
+ /**
673
+ * Return a copy of an instrument. Only one instrument instance can play at
674
+ * a time, so use this to get a new copy of the instrument that can play
675
+ * alongside it. The new instrument copy will receive a new ID unless one is
676
+ * supplied in options.
677
+ *
678
+ * @function Highcharts.Instrument#copy
679
+ *
680
+ * @param {Highcharts.InstrumentOptionsObject} [options]
681
+ * Options to merge in for the copy.
682
+ *
683
+ * @return {Highcharts.Instrument}
684
+ * A new Instrument instance with the same options.
685
+ */
686
+ Instrument.prototype.copy = function (options) {
687
+ return new Instrument(merge(this.options, { id: null }, options));
688
+ };
689
+ /**
690
+ * Init the audio context, if we do not have one.
691
+ * @private
692
+ * @return {boolean} True if successful, false if not.
693
+ */
694
+ Instrument.prototype.initAudioContext = function () {
695
+ var Context = win.AudioContext || win.webkitAudioContext,
696
+ hasOldContext = !!Instrument.audioContext;
697
+ if (Context) {
698
+ Instrument.audioContext = Instrument.audioContext || new Context();
699
+ if (!hasOldContext &&
700
+ Instrument.audioContext &&
701
+ Instrument.audioContext.state === 'running') {
702
+ Instrument.audioContext.suspend(); // Pause until we need it
703
+ }
704
+ return !!(Instrument.audioContext &&
705
+ (Instrument.audioContext.createOscillator) &&
706
+ (Instrument.audioContext.createGain));
707
+ }
708
+ return false;
709
+ };
710
+ /**
711
+ * Init an oscillator instrument.
712
+ * @private
713
+ * @param {Highcharts.OscillatorOptionsObject} oscillatorOptions
714
+ * The oscillator options passed to Highcharts.Instrument#init.
715
+ */
716
+ Instrument.prototype.initOscillator = function (options) {
717
+ var ctx = Instrument.audioContext;
718
+ this.oscillator = ctx.createOscillator();
719
+ this.oscillator.type = options.waveformShape;
720
+ this.oscillator.connect(this.gainNode);
721
+ this.oscillatorStarted = false;
722
+ };
723
+ /**
724
+ * Set pan position.
725
+ * @private
726
+ * @param {number} panValue
727
+ * The pan position to set for the instrument.
728
+ */
729
+ Instrument.prototype.setPan = function (panValue) {
730
+ if (this.panNode) {
731
+ this.panNode.pan.setValueAtTime(panValue, Instrument.audioContext.currentTime);
732
+ }
733
+ };
734
+ /**
735
+ * Set gain level. A maximum of 1.2 is allowed before we emit a warning. The
736
+ * actual volume is not set above this level regardless of input. This
737
+ * function also handles the Instrument's master volume.
738
+ * @private
739
+ * @param {number} gainValue
740
+ * The gain level to set for the instrument.
741
+ * @param {number} [rampTime=0]
742
+ * Gradually change the gain level, time given in milliseconds.
743
+ */
744
+ Instrument.prototype.setGain = function (gainValue, rampTime) {
745
+ var gainNode = this.gainNode;
746
+ var newVal = gainValue * this.masterVolume;
747
+ if (gainNode) {
748
+ if (newVal > 1.2) {
749
+ console.warn(// eslint-disable-line
750
+ 'Highcharts sonification warning: ' +
751
+ 'Volume of instrument set too high.');
752
+ newVal = 1.2;
753
+ }
754
+ if (rampTime) {
755
+ gainNode.gain.setValueAtTime(gainNode.gain.value, Instrument.audioContext.currentTime);
756
+ gainNode.gain.linearRampToValueAtTime(newVal, Instrument.audioContext.currentTime + rampTime / 1000);
757
+ }
758
+ else {
759
+ gainNode.gain.setValueAtTime(newVal, Instrument.audioContext.currentTime);
760
+ }
761
+ }
762
+ };
763
+ /**
764
+ * Cancel ongoing gain ramps.
765
+ * @private
766
+ */
767
+ Instrument.prototype.cancelGainRamp = function () {
768
+ if (this.gainNode) {
769
+ this.gainNode.gain.cancelScheduledValues(0);
770
+ }
771
+ };
772
+ /**
773
+ * Set the master volume multiplier of the instrument after creation.
774
+ * @param {number} volumeMultiplier
775
+ * The gain level to set for the instrument.
776
+ */
777
+ Instrument.prototype.setMasterVolume = function (volumeMultiplier) {
778
+ this.masterVolume = volumeMultiplier || 0;
779
+ };
780
+ /**
781
+ * Get the closest valid frequency for this instrument.
782
+ * @private
783
+ * @param {number} frequency
784
+ * The target frequency.
785
+ * @param {number} [min]
786
+ * Minimum frequency to return.
787
+ * @param {number} [max]
788
+ * Maximum frequency to return.
789
+ * @return {number}
790
+ * The closest valid frequency to the input frequency.
791
+ */
792
+ Instrument.prototype.getValidFrequency = function (frequency, min, max) {
793
+ var validFrequencies = this.options.allowedFrequencies,
794
+ maximum = pick(max,
795
+ Infinity),
796
+ minimum = pick(min, -Infinity);
797
+ return !validFrequencies || !validFrequencies.length ?
798
+ // No valid frequencies for this instrument, return the target
799
+ frequency :
800
+ // Use the valid frequencies and return the closest match
801
+ validFrequencies.reduce(function (acc, cur) {
802
+ // Find the closest allowed value
803
+ return Math.abs(cur - frequency) < Math.abs(acc - frequency) &&
804
+ cur < maximum && cur > minimum ?
805
+ cur : acc;
806
+ }, Infinity);
807
+ };
808
+ /**
809
+ * Clear existing play callback timers.
810
+ * @private
811
+ */
812
+ Instrument.prototype.clearPlayCallbackTimers = function () {
813
+ this.playCallbackTimers.forEach(function (timer) {
814
+ clearInterval(timer);
815
+ });
816
+ this.playCallbackTimers = [];
817
+ };
818
+ /**
819
+ * Set the current frequency being played by the instrument. The closest
820
+ * valid frequency between the frequency limits is used.
821
+ * @param {number} frequency
822
+ * The frequency to set.
823
+ * @param {Highcharts.Dictionary<number>} [frequencyLimits]
824
+ * Object with maxFrequency and minFrequency
825
+ */
826
+ Instrument.prototype.setFrequency = function (frequency, frequencyLimits) {
827
+ var limits = frequencyLimits || {},
828
+ validFrequency = this.getValidFrequency(frequency,
829
+ limits.min,
830
+ limits.max);
831
+ if (this.options.type === 'oscillator') {
832
+ this.oscillatorPlay(validFrequency);
833
+ }
834
+ };
835
+ /**
836
+ * Play oscillator instrument.
837
+ * @private
838
+ * @param {number} frequency
839
+ * The frequency to play.
840
+ */
841
+ Instrument.prototype.oscillatorPlay = function (frequency) {
842
+ if (!this.oscillatorStarted) {
843
+ this.oscillator.start();
844
+ this.oscillatorStarted = true;
845
+ }
846
+ this.oscillator.frequency.setValueAtTime(frequency, Instrument.audioContext.currentTime);
847
+ };
848
+ /**
849
+ * Prepare instrument before playing. Resumes the audio context and starts
850
+ * the oscillator.
851
+ * @private
852
+ */
853
+ Instrument.prototype.preparePlay = function () {
854
+ this.setGain(0.001);
855
+ if (Instrument.audioContext.state === 'suspended') {
856
+ Instrument.audioContext.resume();
857
+ }
858
+ if (this.oscillator && !this.oscillatorStarted) {
859
+ this.oscillator.start();
860
+ this.oscillatorStarted = true;
861
+ }
862
+ };
863
+ /**
864
+ * Play the instrument according to options.
865
+ *
866
+ * @sample highcharts/sonification/instrument/
867
+ * Using Instruments directly
868
+ * @sample highcharts/sonification/instrument-advanced/
869
+ * Using callbacks for instrument parameters
870
+ *
871
+ * @function Highcharts.Instrument#play
872
+ *
873
+ * @param {Highcharts.InstrumentPlayOptionsObject} options
874
+ * Options for the playback of the instrument.
875
+ *
876
+ */
877
+ Instrument.prototype.play = function (options) {
878
+ var instrument = this,
879
+ duration = options.duration || 0,
880
+ // Set a value, or if it is a function, set it continously as a
881
+ // timer. Pass in the value/function to set, the setter function,
882
+ // and any additional data to pass through to the setter function.
883
+ setOrStartTimer = function (value,
884
+ setter,
885
+ setterData) {
886
+ var target = options.duration,
887
+ callbackInterval = instrument.options.playCallbackInterval;
888
+ var currentDurationIx = 0;
889
+ if (typeof value === 'function') {
890
+ var timer_1 = setInterval(function () {
891
+ currentDurationIx++;
892
+ var curTime = (currentDurationIx *
893
+ callbackInterval / target);
894
+ if (curTime >= 1) {
895
+ instrument[setter](value(1), setterData);
896
+ clearInterval(timer_1);
897
+ }
898
+ else {
899
+ instrument[setter](value(curTime), setterData);
900
+ }
901
+ }, callbackInterval);
902
+ instrument.playCallbackTimers.push(timer_1);
903
+ }
904
+ else {
905
+ instrument[setter](value, setterData);
906
+ }
907
+ };
908
+ if (!instrument.id) {
909
+ // No audio support - do nothing
910
+ return;
911
+ }
912
+ // If the AudioContext is suspended we have to resume it before playing
913
+ if (Instrument.audioContext.state === 'suspended' ||
914
+ this.oscillator && !this.oscillatorStarted) {
915
+ instrument.preparePlay();
916
+ // Try again in 10ms
917
+ setTimeout(function () {
918
+ instrument.play(options);
919
+ }, 10);
920
+ return;
921
+ }
922
+ // Clear any existing play timers
923
+ if (instrument.playCallbackTimers.length) {
924
+ instrument.clearPlayCallbackTimers();
925
+ }
926
+ // Clear any gain ramps
927
+ instrument.cancelGainRamp();
928
+ // Clear stop oscillator timer
929
+ if (instrument.stopOscillatorTimeout) {
930
+ clearTimeout(instrument.stopOscillatorTimeout);
931
+ delete instrument.stopOscillatorTimeout;
932
+ }
933
+ // If a note is playing right now, clear the stop timeout, and call the
934
+ // callback.
935
+ if (instrument.stopTimeout) {
936
+ clearTimeout(instrument.stopTimeout);
937
+ delete instrument.stopTimeout;
938
+ if (instrument.stopCallback) {
939
+ // We have a callback for the play we are interrupting. We do
940
+ // not allow this callback to start a new play, because that
941
+ // leads to chaos. We pass in 'cancelled' to indicate that this
942
+ // note did not finish, but still stopped.
943
+ instrument._play = instrument.play;
944
+ instrument.play = function () { };
945
+ instrument.stopCallback('cancelled');
946
+ instrument.play = instrument._play;
947
+ }
948
+ }
949
+ // Stop the note without fadeOut if the duration is too short to hear
950
+ // the note otherwise.
951
+ var immediate = duration < Sonification.fadeOutDuration + 20;
952
+ // Stop the instrument after the duration of the note
953
+ instrument.stopCallback = options.onEnd;
954
+ var onStop = function () {
955
+ delete instrument.stopTimeout;
956
+ instrument.stop(immediate);
957
+ };
958
+ if (duration) {
959
+ instrument.stopTimeout = setTimeout(onStop, immediate ? duration :
960
+ duration - Sonification.fadeOutDuration);
961
+ // Play the note
962
+ setOrStartTimer(options.frequency, 'setFrequency', {
963
+ minFrequency: options.minFrequency,
964
+ maxFrequency: options.maxFrequency
965
+ });
966
+ // Set the volume and panning
967
+ setOrStartTimer(pick(options.volume, 1), 'setGain', 4); // Slight ramp
968
+ setOrStartTimer(pick(options.pan, 0), 'setPan');
969
+ }
970
+ else {
971
+ // No note duration, so just stop immediately
972
+ onStop();
973
+ }
974
+ };
975
+ /**
976
+ * Mute an instrument that is playing. If the instrument is not currently
977
+ * playing, this function does nothing.
978
+ *
979
+ * @function Highcharts.Instrument#mute
980
+ */
981
+ Instrument.prototype.mute = function () {
982
+ this.setGain(0.0001, Sonification.fadeOutDuration * 0.8);
983
+ };
984
+ /**
985
+ * Stop the instrument playing.
986
+ *
987
+ * @function Highcharts.Instrument#stop
988
+ *
989
+ * @param {boolean} immediately
990
+ * Whether to do the stop immediately or fade out.
991
+ *
992
+ * @param {Function} [onStopped]
993
+ * Callback function to be called when the stop is completed.
994
+ *
995
+ * @param {*} [callbackData]
996
+ * Data to send to the onEnd callback functions.
997
+ *
998
+ */
999
+ Instrument.prototype.stop = function (immediately, onStopped, callbackData) {
1000
+ var instr = this,
1001
+ reset = function () {
1002
+ // Remove timeout reference
1003
+ if (instr.stopOscillatorTimeout) {
1004
+ delete instr.stopOscillatorTimeout;
1005
+ }
1006
+ if (instr.oscillator &&
1007
+ instr.options.oscillator) {
1008
+ // The oscillator may have stopped in the meantime here, so
1009
+ // allow this function to fail if so.
1010
+ try {
1011
+ instr.oscillator.stop();
1012
+ }
1013
+ catch (e) {
1014
+ // silent error
1015
+ }
1016
+ if (instr.gainNode) {
1017
+ instr.oscillator.disconnect(instr.gainNode);
1018
+ }
1019
+ // We need a new oscillator in order to restart it
1020
+ instr.initOscillator(instr.options.oscillator);
1021
+ }
1022
+ // Done stopping, call the callback from the stop
1023
+ if (onStopped) {
1024
+ onStopped(callbackData);
1025
+ }
1026
+ // Call the callback for the play we finished
1027
+ if (instr.stopCallback) {
1028
+ instr.stopCallback(callbackData);
1029
+ }
1030
+ };
1031
+ // Clear any existing timers
1032
+ if (instr.playCallbackTimers.length) {
1033
+ instr.clearPlayCallbackTimers();
1034
+ }
1035
+ if (instr.stopTimeout) {
1036
+ clearTimeout(instr.stopTimeout);
1037
+ }
1038
+ if (immediately) {
1039
+ instr.setGain(0);
1040
+ reset();
1041
+ }
1042
+ else {
1043
+ instr.mute();
1044
+ // Stop the oscillator after the mute fade-out has finished
1045
+ instr.stopOscillatorTimeout =
1046
+ setTimeout(reset, Sonification.fadeOutDuration + 100);
1047
+ }
1048
+ };
1049
+ // Default options for Instrument constructor
1050
+ Instrument.defaultOptions = {
1051
+ type: 'oscillator',
1052
+ playCallbackInterval: 20,
1053
+ masterVolume: 1,
1054
+ oscillator: {
1055
+ waveformShape: 'sine'
1056
+ }
1057
+ };
1058
+ Instrument.definitions = {};
1059
+ return Instrument;
1060
+ }());
1061
+ /* *
1062
+ *
1063
+ * Class Prototype
1064
+ *
1065
+ * */
1066
+ // ['sine', 'square', 'triangle', 'sawtooth'].forEach(function (
1067
+ ['sine', 'square', 'triangle', 'sawtooth'].forEach(function (waveform) {
1068
+ // Add basic instruments
1069
+ Instrument.definitions[waveform] = new Instrument({
1070
+ oscillator: { waveformShape: waveform }
1071
+ });
1072
+ // Add musical instruments
1073
+ Instrument.definitions[waveform + 'Musical'] = new Instrument({
1074
+ allowedFrequencies: SU.musicalFrequencies,
1075
+ oscillator: { waveformShape: waveform }
1076
+ });
1077
+ // Add scaled instruments
1078
+ Instrument.definitions[waveform + 'Major'] = new Instrument({
1079
+ allowedFrequencies: SU.getMusicalScale([1, 3, 5, 6, 8, 10, 12]),
1080
+ oscillator: { waveformShape: waveform }
1081
+ });
1082
+ });
1083
+ /* *
1084
+ *
1085
+ * Default Export
1086
+ *
1087
+ * */
1088
+ /* *
1089
+ *
1090
+ * API Declarations
1091
+ *
1092
+ * */
1093
+ /**
1094
+ * A set of options for the Instrument class.
1095
+ *
1096
+ * @requires module:modules/sonification
1097
+ *
1098
+ * @interface Highcharts.InstrumentOptionsObject
1099
+ */ /**
1100
+ * The type of instrument. Currently only `oscillator` is supported. Defaults
1101
+ * to `oscillator`.
1102
+ * @name Highcharts.InstrumentOptionsObject#type
1103
+ * @type {string|undefined}
1104
+ */ /**
1105
+ * The unique ID of the instrument. Generated if not supplied.
1106
+ * @name Highcharts.InstrumentOptionsObject#id
1107
+ * @type {string|undefined}
1108
+ */ /**
1109
+ * The master volume multiplier to apply to the instrument, regardless of other
1110
+ * volume changes. Defaults to 1.
1111
+ * @name Highcharts.InstrumentPlayOptionsObject#masterVolume
1112
+ * @type {number|undefined}
1113
+ */ /**
1114
+ * When using functions to determine frequency or other parameters during
1115
+ * playback, this options specifies how often to call the callback functions.
1116
+ * Number given in milliseconds. Defaults to 20.
1117
+ * @name Highcharts.InstrumentOptionsObject#playCallbackInterval
1118
+ * @type {number|undefined}
1119
+ */ /**
1120
+ * A list of allowed frequencies for this instrument. If trying to play a
1121
+ * frequency not on this list, the closest frequency will be used. Set to `null`
1122
+ * to allow all frequencies to be used. Defaults to `null`.
1123
+ * @name Highcharts.InstrumentOptionsObject#allowedFrequencies
1124
+ * @type {Array<number>|undefined}
1125
+ */ /**
1126
+ * Options specific to oscillator instruments.
1127
+ * @name Highcharts.InstrumentOptionsObject#oscillator
1128
+ * @type {Highcharts.OscillatorOptionsObject|undefined}
1129
+ */
1130
+ /**
1131
+ * Options for playing an instrument.
1132
+ *
1133
+ * @requires module:modules/sonification
1134
+ *
1135
+ * @interface Highcharts.InstrumentPlayOptionsObject
1136
+ */ /**
1137
+ * The frequency of the note to play. Can be a fixed number, or a function. The
1138
+ * function receives one argument: the relative time of the note playing (0
1139
+ * being the start, and 1 being the end of the note). It should return the
1140
+ * frequency number for each point in time. The poll interval of this function
1141
+ * is specified by the Instrument.playCallbackInterval option.
1142
+ * @name Highcharts.InstrumentPlayOptionsObject#frequency
1143
+ * @type {number|Function}
1144
+ */ /**
1145
+ * The duration of the note in milliseconds.
1146
+ * @name Highcharts.InstrumentPlayOptionsObject#duration
1147
+ * @type {number}
1148
+ */ /**
1149
+ * The minimum frequency to allow. If the instrument has a set of allowed
1150
+ * frequencies, the closest frequency is used by default. Use this option to
1151
+ * stop too low frequencies from being used.
1152
+ * @name Highcharts.InstrumentPlayOptionsObject#minFrequency
1153
+ * @type {number|undefined}
1154
+ */ /**
1155
+ * The maximum frequency to allow. If the instrument has a set of allowed
1156
+ * frequencies, the closest frequency is used by default. Use this option to
1157
+ * stop too high frequencies from being used.
1158
+ * @name Highcharts.InstrumentPlayOptionsObject#maxFrequency
1159
+ * @type {number|undefined}
1160
+ */ /**
1161
+ * The volume of the instrument. Can be a fixed number between 0 and 1, or a
1162
+ * function. The function receives one argument: the relative time of the note
1163
+ * playing (0 being the start, and 1 being the end of the note). It should
1164
+ * return the volume for each point in time. The poll interval of this function
1165
+ * is specified by the Instrument.playCallbackInterval option. Defaults to 1.
1166
+ * @name Highcharts.InstrumentPlayOptionsObject#volume
1167
+ * @type {number|Function|undefined}
1168
+ */ /**
1169
+ * The panning of the instrument. Can be a fixed number between -1 and 1, or a
1170
+ * function. The function receives one argument: the relative time of the note
1171
+ * playing (0 being the start, and 1 being the end of the note). It should
1172
+ * return the panning value for each point in time. The poll interval of this
1173
+ * function is specified by the Instrument.playCallbackInterval option.
1174
+ * Defaults to 0.
1175
+ * @name Highcharts.InstrumentPlayOptionsObject#pan
1176
+ * @type {number|Function|undefined}
1177
+ */ /**
1178
+ * Callback function to be called when the play is completed.
1179
+ * @name Highcharts.InstrumentPlayOptionsObject#onEnd
1180
+ * @type {Function|undefined}
1181
+ */
1182
+ /**
1183
+ * @requires module:modules/sonification
1184
+ *
1185
+ * @interface Highcharts.OscillatorOptionsObject
1186
+ */ /**
1187
+ * The waveform shape to use for oscillator instruments. Defaults to `sine`.
1188
+ * @name Highcharts.OscillatorOptionsObject#waveformShape
1189
+ * @type {string|undefined}
1190
+ */
1191
+ (''); // keeps doclets above in JS file
1192
+
1193
+ return Instrument;
1194
+ });
1195
+ _registerModule(_modules, 'Extensions/Sonification/Earcon.js', [_modules['Extensions/Sonification/Instrument.js'], _modules['Core/Utilities.js']], function (Instrument, U) {
1196
+ /* *
1197
+ *
1198
+ * (c) 2009-2021 Øystein Moseng
1199
+ *
1200
+ * Earcons for the sonification module in Highcharts.
1201
+ *
1202
+ * License: www.highcharts.com/license
1203
+ *
1204
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
1205
+ *
1206
+ * */
1207
+ var error = U.error,
1208
+ merge = U.merge,
1209
+ pick = U.pick,
1210
+ uniqueKey = U.uniqueKey;
1211
+ /* *
1212
+ *
1213
+ * Class
1214
+ *
1215
+ * */
1216
+ /* eslint-disable no-invalid-this, valid-jsdoc */
1217
+ /**
1218
+ * The Earcon class. Earcon objects represent a certain sound consisting of
1219
+ * one or more instruments playing a predefined sound.
1220
+ *
1221
+ * @sample highcharts/sonification/earcon/
1222
+ * Using earcons directly
1223
+ *
1224
+ * @requires module:modules/sonification
1225
+ *
1226
+ * @class
1227
+ * @name Highcharts.Earcon
1228
+ *
1229
+ * @param {Highcharts.EarconOptionsObject} options
1230
+ * Options for the Earcon instance.
1231
+ */
1232
+ var Earcon = /** @class */ (function () {
1233
+ /* *
1234
+ *
1235
+ * Constructor
1236
+ *
1237
+ * */
1238
+ function Earcon(options) {
1239
+ /* *
1240
+ *
1241
+ * Properties
1242
+ *
1243
+ * */
1244
+ this.id = void 0;
1245
+ this.instrumentsPlaying = void 0;
1246
+ this.options = void 0;
1247
+ this.init(options || {});
1248
+ }
1249
+ /* *
1250
+ *
1251
+ * Functions
1252
+ *
1253
+ * */
1254
+ Earcon.prototype.init = function (options) {
1255
+ this.options = options;
1256
+ if (!this.options.id) {
1257
+ this.options.id = this.id = uniqueKey();
1258
+ }
1259
+ this.instrumentsPlaying = {};
1260
+ };
1261
+ /**
1262
+ * Play the earcon, optionally overriding init options.
1263
+ *
1264
+ * @sample highcharts/sonification/earcon/
1265
+ * Using earcons directly
1266
+ *
1267
+ * @function Highcharts.Earcon#sonify
1268
+ *
1269
+ * @param {Highcharts.EarconOptionsObject} options
1270
+ * Override existing options.
1271
+ */
1272
+ Earcon.prototype.sonify = function (options) {
1273
+ var playOptions = merge(this.options,
1274
+ options),
1275
+ // Find master volume/pan settings
1276
+ masterVolume = pick(playOptions.volume, 1),
1277
+ masterPan = playOptions.pan,
1278
+ earcon = this,
1279
+ playOnEnd = options && options.onEnd,
1280
+ masterOnEnd = earcon.options.onEnd;
1281
+ // Go through the instruments and play them
1282
+ playOptions.instruments.forEach(function (opts) {
1283
+ var instrument = typeof opts.instrument === 'string' ?
1284
+ Instrument.definitions[opts.instrument] : opts.instrument,
1285
+ instrumentOpts = merge(opts.playOptions);
1286
+ var instrOnEnd,
1287
+ instrumentCopy,
1288
+ copyId = '';
1289
+ if (instrument && instrument.play) {
1290
+ if (opts.playOptions) {
1291
+ instrumentOpts.pan = pick(masterPan, instrumentOpts.pan);
1292
+ // Handle onEnd
1293
+ instrOnEnd = instrumentOpts.onEnd;
1294
+ instrumentOpts.onEnd = function () {
1295
+ delete earcon.instrumentsPlaying[copyId];
1296
+ if (instrOnEnd) {
1297
+ instrOnEnd.apply(this, arguments);
1298
+ }
1299
+ if (!Object.keys(earcon.instrumentsPlaying).length) {
1300
+ if (playOnEnd) {
1301
+ playOnEnd.apply(this, arguments);
1302
+ }
1303
+ if (masterOnEnd) {
1304
+ masterOnEnd.apply(this, arguments);
1305
+ }
1306
+ }
1307
+ };
1308
+ // Play the instrument. Use a copy so we can play multiple
1309
+ // at the same time.
1310
+ instrumentCopy = instrument.copy();
1311
+ instrumentCopy.setMasterVolume(masterVolume);
1312
+ copyId = instrumentCopy.id;
1313
+ earcon.instrumentsPlaying[copyId] = instrumentCopy;
1314
+ instrumentCopy.play(instrumentOpts);
1315
+ }
1316
+ }
1317
+ else {
1318
+ error(30);
1319
+ }
1320
+ });
1321
+ };
1322
+ /**
1323
+ * Cancel any current sonification of the Earcon. Calls onEnd functions.
1324
+ *
1325
+ * @function Highcharts.Earcon#cancelSonify
1326
+ *
1327
+ * @param {boolean} [fadeOut=false]
1328
+ * Whether or not to fade out as we stop. If false, the earcon is
1329
+ * cancelled synchronously.
1330
+ */
1331
+ Earcon.prototype.cancelSonify = function (fadeOut) {
1332
+ var playing = this.instrumentsPlaying,
1333
+ instrIds = playing && Object.keys(playing);
1334
+ if (instrIds && instrIds.length) {
1335
+ instrIds.forEach(function (instr) {
1336
+ playing[instr].stop(!fadeOut, null, 'cancelled');
1337
+ });
1338
+ this.instrumentsPlaying = {};
1339
+ }
1340
+ };
1341
+ return Earcon;
1342
+ }());
1343
+ /* *
1344
+ *
1345
+ * Default Export
1346
+ *
1347
+ * */
1348
+ /* *
1349
+ *
1350
+ * API Declarations
1351
+ *
1352
+ * */
1353
+ /**
1354
+ * Define an Instrument and the options for playing it.
1355
+ *
1356
+ * @requires module:modules/sonification
1357
+ *
1358
+ * @interface Highcharts.EarconInstrument
1359
+ */ /**
1360
+ * An instrument instance or the name of the instrument in the
1361
+ * Highcharts.sonification.instruments map.
1362
+ * @name Highcharts.EarconInstrument#instrument
1363
+ * @type {string|Highcharts.Instrument}
1364
+ */ /**
1365
+ * The options to pass to Instrument.play.
1366
+ * @name Highcharts.EarconInstrument#playOptions
1367
+ * @type {Highcharts.InstrumentPlayOptionsObject}
1368
+ */
1369
+ /**
1370
+ * Options for an Earcon.
1371
+ *
1372
+ * @requires module:modules/sonification
1373
+ *
1374
+ * @interface Highcharts.EarconOptionsObject
1375
+ */ /**
1376
+ * The instruments and their options defining this earcon.
1377
+ * @name Highcharts.EarconOptionsObject#instruments
1378
+ * @type {Array<Highcharts.EarconInstrument>}
1379
+ */ /**
1380
+ * The unique ID of the Earcon. Generated if not supplied.
1381
+ * @name Highcharts.EarconOptionsObject#id
1382
+ * @type {string|undefined}
1383
+ */ /**
1384
+ * Global panning of all instruments. Overrides all panning on individual
1385
+ * instruments. Can be a number between -1 and 1.
1386
+ * @name Highcharts.EarconOptionsObject#pan
1387
+ * @type {number|undefined}
1388
+ */ /**
1389
+ * Master volume for all instruments. Volume settings on individual instruments
1390
+ * can still be used for relative volume between the instruments. This setting
1391
+ * does not affect volumes set by functions in individual instruments. Can be a
1392
+ * number between 0 and 1. Defaults to 1.
1393
+ * @name Highcharts.EarconOptionsObject#volume
1394
+ * @type {number|undefined}
1395
+ */ /**
1396
+ * Callback function to call when earcon has finished playing.
1397
+ * @name Highcharts.EarconOptionsObject#onEnd
1398
+ * @type {Function|undefined}
1399
+ */
1400
+ (''); // detach doclets above
1401
+
1402
+ return Earcon;
1403
+ });
1404
+ _registerModule(_modules, 'Extensions/Sonification/Timeline.js', [_modules['Extensions/Sonification/Sonification.js'], _modules['Core/Utilities.js'], _modules['Extensions/Sonification/SonificationUtilities.js']], function (Sonification, U, SU) {
1405
+ /* *
1406
+ *
1407
+ * (c) 2009-2021 Øystein Moseng
1408
+ *
1409
+ * TimelineEvent class definition.
1410
+ *
1411
+ * License: www.highcharts.com/license
1412
+ *
1413
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
1414
+ *
1415
+ * */
1416
+ var merge = U.merge,
1417
+ splat = U.splat;
1418
+ /**
1419
+ * Internal types.
1420
+ * @private
1421
+ */
1422
+ /* eslint-disable no-invalid-this, valid-jsdoc */
1423
+ /* *
1424
+ *
1425
+ * Class
1426
+ *
1427
+ * */
1428
+ /**
1429
+ * The Timeline class. Represents a sonification timeline with a list of
1430
+ * timeline paths with events to play at certain times relative to each other.
1431
+ *
1432
+ * @requires module:modules/sonification
1433
+ *
1434
+ * @private
1435
+ * @class
1436
+ * @name Highcharts.Timeline
1437
+ *
1438
+ * @param {Highcharts.TimelineOptionsObject} options
1439
+ * Options for the Timeline.
1440
+ */
1441
+ var Timeline = /** @class */ (function () {
1442
+ /* *
1443
+ *
1444
+ * Constructor
1445
+ *
1446
+ * */
1447
+ function Timeline(options) {
1448
+ /* *
1449
+ *
1450
+ * Properties
1451
+ *
1452
+ * */
1453
+ this.cursor = void 0;
1454
+ this.options = void 0;
1455
+ this.paths = void 0;
1456
+ this.pathsPlaying = void 0;
1457
+ this.signalHandler = void 0;
1458
+ this.init(options || {});
1459
+ }
1460
+ /* *
1461
+ *
1462
+ * Functions
1463
+ *
1464
+ * */
1465
+ Timeline.prototype.init = function (options) {
1466
+ this.options = options;
1467
+ this.cursor = 0;
1468
+ this.paths = options.paths || [];
1469
+ this.pathsPlaying = {};
1470
+ this.signalHandler = new SU.SignalHandler(['playOnEnd', 'masterOnEnd', 'onPathStart', 'onPathEnd']);
1471
+ this.signalHandler.registerSignalCallbacks(merge(options, { masterOnEnd: options.onEnd }));
1472
+ };
1473
+ /**
1474
+ * Play the timeline forwards from cursor.
1475
+ * @private
1476
+ * @param {Function} [onEnd]
1477
+ * Callback to call when play finished. Does not override other onEnd
1478
+ * callbacks.
1479
+ */
1480
+ Timeline.prototype.play = function (onEnd) {
1481
+ this.pause();
1482
+ this.signalHandler.clearSignalCallbacks(['playOnEnd']);
1483
+ this.signalHandler.registerSignalCallbacks({ playOnEnd: onEnd });
1484
+ this.playPaths(1);
1485
+ };
1486
+ /**
1487
+ * Play the timeline backwards from cursor.
1488
+ * @private
1489
+ * @param {Function} onEnd
1490
+ * Callback to call when play finished. Does not override other onEnd
1491
+ * callbacks.
1492
+ */
1493
+ Timeline.prototype.rewind = function (onEnd) {
1494
+ this.pause();
1495
+ this.signalHandler.clearSignalCallbacks(['playOnEnd']);
1496
+ this.signalHandler.registerSignalCallbacks({ playOnEnd: onEnd });
1497
+ this.playPaths(-1);
1498
+ };
1499
+ /**
1500
+ * Play the timeline in the specified direction.
1501
+ * @private
1502
+ * @param {number} direction
1503
+ * Direction to play in. 1 for forwards, -1 for backwards.
1504
+ */
1505
+ Timeline.prototype.playPaths = function (direction) {
1506
+ var timeline = this,
1507
+ signalHandler = timeline.signalHandler;
1508
+ if (!timeline.paths.length) {
1509
+ var emptySignal = {
1510
+ cancelled: false
1511
+ };
1512
+ signalHandler.emitSignal('playOnEnd', emptySignal);
1513
+ signalHandler.emitSignal('masterOnEnd', emptySignal);
1514
+ return;
1515
+ }
1516
+ var curPaths = splat(this.paths[this.cursor]),
1517
+ nextPaths = this.paths[this.cursor + direction],
1518
+ // Play a path
1519
+ playPath = function (path) {
1520
+ // Emit signal and set playing state
1521
+ signalHandler.emitSignal('onPathStart',
1522
+ path);
1523
+ timeline.pathsPlaying[path.id] = path;
1524
+ // Do the play
1525
+ path[direction > 0 ? 'play' : 'rewind'](function (callbackData) {
1526
+ // Play ended callback
1527
+ // Data to pass to signal callbacks
1528
+ var cancelled = callbackData && callbackData.cancelled,
1529
+ signalData = {
1530
+ path: path,
1531
+ cancelled: cancelled
1532
+ };
1533
+ // Clear state and send signal
1534
+ delete timeline.pathsPlaying[path.id];
1535
+ signalHandler.emitSignal('onPathEnd', signalData);
1536
+ // Handle next paths
1537
+ var pathsEnded = 0;
1538
+ pathsEnded++;
1539
+ if (pathsEnded >= curPaths.length) {
1540
+ // We finished all of the current paths for cursor.
1541
+ if (nextPaths && !cancelled) {
1542
+ // We have more paths, move cursor along
1543
+ timeline.cursor += direction;
1544
+ // Reset upcoming path cursors before playing
1545
+ splat(nextPaths).forEach(function (nextPath) {
1546
+ nextPath[direction > 0 ?
1547
+ 'resetCursor' : 'resetCursorEnd']();
1548
+ });
1549
+ // Play next
1550
+ timeline.playPaths(direction);
1551
+ }
1552
+ else {
1553
+ // If it is the last path in this direction,
1554
+ // call onEnd
1555
+ signalHandler.emitSignal('playOnEnd', signalData);
1556
+ signalHandler.emitSignal('masterOnEnd', signalData);
1557
+ }
1558
+ }
1559
+ });
1560
+ };
1561
+ // Go through the paths under cursor and play them
1562
+ curPaths.forEach(function (path) {
1563
+ if (path) {
1564
+ // Store reference to timeline
1565
+ path.timeline = timeline;
1566
+ // Leave a timeout to let notes fade out before next play
1567
+ setTimeout(function () {
1568
+ playPath(path);
1569
+ }, Sonification.fadeOutDuration);
1570
+ }
1571
+ });
1572
+ };
1573
+ /**
1574
+ * Stop the playing of the timeline. Cancels all current sounds, but does
1575
+ * not affect the cursor.
1576
+ * @private
1577
+ * @param {boolean} [fadeOut=false]
1578
+ * Whether or not to fade out as we stop. If false, the timeline is
1579
+ * cancelled synchronously.
1580
+ */
1581
+ Timeline.prototype.pause = function (fadeOut) {
1582
+ var timeline = this;
1583
+ // Cancel currently playing events
1584
+ Object.keys(timeline.pathsPlaying).forEach(function (id) {
1585
+ if (timeline.pathsPlaying[id]) {
1586
+ timeline.pathsPlaying[id].pause(fadeOut);
1587
+ }
1588
+ });
1589
+ timeline.pathsPlaying = {};
1590
+ };
1591
+ /**
1592
+ * Reset the cursor to the beginning of the timeline.
1593
+ * @private
1594
+ */
1595
+ Timeline.prototype.resetCursor = function () {
1596
+ this.paths.forEach(function (paths) {
1597
+ splat(paths).forEach(function (path) {
1598
+ path.resetCursor();
1599
+ });
1600
+ });
1601
+ this.cursor = 0;
1602
+ };
1603
+ /**
1604
+ * Reset the cursor to the end of the timeline.
1605
+ * @private
1606
+ */
1607
+ Timeline.prototype.resetCursorEnd = function () {
1608
+ this.paths.forEach(function (paths) {
1609
+ splat(paths).forEach(function (path) {
1610
+ path.resetCursorEnd();
1611
+ });
1612
+ });
1613
+ this.cursor = this.paths.length - 1;
1614
+ };
1615
+ /**
1616
+ * Set the current TimelineEvent under the cursor. If multiple paths are
1617
+ * being played at the same time, this function only affects a single path
1618
+ * (the one that contains the eventId that is passed in).
1619
+ * @private
1620
+ * @param {string} eventId
1621
+ * The ID of the timeline event to set as current.
1622
+ * @return {boolean}
1623
+ * True if the cursor was set, false if no TimelineEvent was found for
1624
+ * this ID.
1625
+ */
1626
+ Timeline.prototype.setCursor = function (eventId) {
1627
+ return this.paths.some(function (paths) {
1628
+ return splat(paths).some(function (path) {
1629
+ return path.setCursor(eventId);
1630
+ });
1631
+ });
1632
+ };
1633
+ /**
1634
+ * Get the current TimelineEvents under the cursors. This function will
1635
+ * return the event under the cursor for each currently playing path, as an
1636
+ * object where the path ID is mapped to the TimelineEvent under that
1637
+ * path's cursor.
1638
+ * @private
1639
+ * @return {Highcharts.Dictionary<Highcharts.TimelineEvent>}
1640
+ * The TimelineEvents under each path's cursors.
1641
+ */
1642
+ Timeline.prototype.getCursor = function () {
1643
+ return this.getCurrentPlayingPaths().reduce(function (acc, cur) {
1644
+ acc[cur.id] = cur.getCursor();
1645
+ return acc;
1646
+ }, {});
1647
+ };
1648
+ /**
1649
+ * Check if timeline is reset or at start.
1650
+ * @private
1651
+ * @return {boolean}
1652
+ * True if timeline is at the beginning.
1653
+ */
1654
+ Timeline.prototype.atStart = function () {
1655
+ if (this.cursor) {
1656
+ return false;
1657
+ }
1658
+ return !splat(this.paths[0]).some(function (path) {
1659
+ return path.cursor;
1660
+ });
1661
+ };
1662
+ /**
1663
+ * Get the current TimelinePaths being played.
1664
+ * @private
1665
+ * @return {Array<Highcharts.TimelinePath>}
1666
+ * The TimelinePaths currently being played.
1667
+ */
1668
+ Timeline.prototype.getCurrentPlayingPaths = function () {
1669
+ if (!this.paths.length) {
1670
+ return [];
1671
+ }
1672
+ return splat(this.paths[this.cursor]);
1673
+ };
1674
+ return Timeline;
1675
+ }());
1676
+ /* *
1677
+ *
1678
+ * Default Export
1679
+ *
1680
+ * */
1681
+ /* *
1682
+ *
1683
+ * API Declarations
1684
+ *
1685
+ * */
1686
+ /**
1687
+ * A set of options for the Timeline class.
1688
+ *
1689
+ * @requires module:modules/sonification
1690
+ *
1691
+ * @private
1692
+ * @interface Highcharts.TimelineOptionsObject
1693
+ */ /**
1694
+ * List of TimelinePaths to play. Multiple paths can be grouped together and
1695
+ * played simultaneously by supplying an array of paths in place of a single
1696
+ * path.
1697
+ * @name Highcharts.TimelineOptionsObject#paths
1698
+ * @type {Array<(Highcharts.TimelinePath|Array<Highcharts.TimelinePath>)>}
1699
+ */ /**
1700
+ * Callback function to call before a path plays.
1701
+ * @name Highcharts.TimelineOptionsObject#onPathStart
1702
+ * @type {Function|undefined}
1703
+ */ /**
1704
+ * Callback function to call after a path has stopped playing.
1705
+ * @name Highcharts.TimelineOptionsObject#onPathEnd
1706
+ * @type {Function|undefined}
1707
+ */ /**
1708
+ * Callback called when the whole path is finished.
1709
+ * @name Highcharts.TimelineOptionsObject#onEnd
1710
+ * @type {Function|undefined}
1711
+ */
1712
+ (''); // detach doclets above
1713
+
1714
+ return Timeline;
1715
+ });
1716
+ _registerModule(_modules, 'Extensions/Sonification/TimelineEvent.js', [_modules['Core/Utilities.js']], function (U) {
1717
+ /* *
1718
+ *
1719
+ * (c) 2009-2021 Øystein Moseng
1720
+ *
1721
+ * TimelineEvent class definition.
1722
+ *
1723
+ * License: www.highcharts.com/license
1724
+ *
1725
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
1726
+ *
1727
+ * */
1728
+ var merge = U.merge,
1729
+ uniqueKey = U.uniqueKey;
1730
+ /* eslint-disable no-invalid-this, valid-jsdoc */
1731
+ /* *
1732
+ *
1733
+ * Class
1734
+ *
1735
+ * */
1736
+ /**
1737
+ * The TimelineEvent class. Represents a sound event on a timeline.
1738
+ *
1739
+ * @requires module:modules/sonification
1740
+ *
1741
+ * @private
1742
+ * @class
1743
+ * @name Highcharts.TimelineEvent
1744
+ *
1745
+ * @param {Highcharts.TimelineEventOptionsObject} options
1746
+ * Options for the TimelineEvent.
1747
+ */
1748
+ var TimelineEvent = /** @class */ (function () {
1749
+ /* *
1750
+ *
1751
+ * Constructor
1752
+ *
1753
+ * */
1754
+ function TimelineEvent(options) {
1755
+ /* *
1756
+ *
1757
+ * Properties
1758
+ *
1759
+ * */
1760
+ this.id = void 0;
1761
+ this.options = void 0;
1762
+ this.time = void 0;
1763
+ this.init(options);
1764
+ }
1765
+ /* *
1766
+ *
1767
+ * Functions
1768
+ *
1769
+ * */
1770
+ TimelineEvent.prototype.init = function (options) {
1771
+ this.options = options;
1772
+ this.time = options.time || 0;
1773
+ this.id = this.options.id = options.id || uniqueKey();
1774
+ };
1775
+ /**
1776
+ * Play the event. Does not take the TimelineEvent.time option into account,
1777
+ * and plays the event immediately.
1778
+ *
1779
+ * @function Highcharts.TimelineEvent#play
1780
+ *
1781
+ * @param {Highcharts.TimelineEventOptionsObject} [options]
1782
+ * Options to pass in to the eventObject when playing it.
1783
+ *
1784
+ */
1785
+ TimelineEvent.prototype.play = function (options) {
1786
+ var eventObject = this.options.eventObject,
1787
+ masterOnEnd = this.options.onEnd,
1788
+ playOnEnd = options && options.onEnd,
1789
+ playOptionsOnEnd = this.options.playOptions &&
1790
+ this.options.playOptions.onEnd,
1791
+ playOptions = merge(this.options.playOptions,
1792
+ options);
1793
+ if (eventObject && eventObject.sonify) {
1794
+ // If we have multiple onEnds defined, use all
1795
+ playOptions.onEnd = masterOnEnd || playOnEnd || playOptionsOnEnd ?
1796
+ function () {
1797
+ var args = arguments;
1798
+ [masterOnEnd, playOnEnd, playOptionsOnEnd].forEach(function (onEnd) {
1799
+ if (onEnd) {
1800
+ onEnd.apply(this, args);
1801
+ }
1802
+ });
1803
+ } : void 0;
1804
+ eventObject.sonify(playOptions);
1805
+ }
1806
+ else {
1807
+ if (playOnEnd) {
1808
+ playOnEnd();
1809
+ }
1810
+ if (masterOnEnd) {
1811
+ masterOnEnd();
1812
+ }
1813
+ }
1814
+ };
1815
+ /**
1816
+ * Cancel the sonification of this event. Does nothing if the event is not
1817
+ * currently sonifying.
1818
+ *
1819
+ * @function Highcharts.TimelineEvent#cancel
1820
+ *
1821
+ * @param {boolean} [fadeOut=false]
1822
+ * Whether or not to fade out as we stop. If false, the event is
1823
+ * cancelled synchronously.
1824
+ */
1825
+ TimelineEvent.prototype.cancel = function (fadeOut) {
1826
+ var eventObject = this.options.eventObject;
1827
+ if (eventObject) {
1828
+ eventObject.cancelSonify(fadeOut);
1829
+ }
1830
+ };
1831
+ return TimelineEvent;
1832
+ }());
1833
+ /* *
1834
+ *
1835
+ * Default export
1836
+ *
1837
+ * */
1838
+ /* *
1839
+ *
1840
+ * API Declarations
1841
+ *
1842
+ * */
1843
+ /**
1844
+ * A set of options for the TimelineEvent class.
1845
+ *
1846
+ * @requires module:modules/sonification
1847
+ *
1848
+ * @private
1849
+ * @interface Highcharts.TimelineEventOptionsObject
1850
+ */ /**
1851
+ * The object we want to sonify when playing the TimelineEvent. Can be any
1852
+ * object that implements the `sonify` and `cancelSonify` functions. If this is
1853
+ * not supplied, the TimelineEvent is considered a silent event, and the onEnd
1854
+ * event is immediately called.
1855
+ * @name Highcharts.TimelineEventOptionsObject#eventObject
1856
+ * @type {*}
1857
+ */ /**
1858
+ * Options to pass on to the eventObject when playing it.
1859
+ * @name Highcharts.TimelineEventOptionsObject#playOptions
1860
+ * @type {object|undefined}
1861
+ */ /**
1862
+ * The time at which we want this event to play (in milliseconds offset). This
1863
+ * is not used for the TimelineEvent.play function, but rather intended as a
1864
+ * property to decide when to call TimelineEvent.play. Defaults to 0.
1865
+ * @name Highcharts.TimelineEventOptionsObject#time
1866
+ * @type {number|undefined}
1867
+ */ /**
1868
+ * Unique ID for the event. Generated automatically if not supplied.
1869
+ * @name Highcharts.TimelineEventOptionsObject#id
1870
+ * @type {string|undefined}
1871
+ */ /**
1872
+ * Callback called when the play has finished.
1873
+ * @name Highcharts.TimelineEventOptionsObject#onEnd
1874
+ * @type {Function|undefined}
1875
+ */
1876
+ (''); // detach doclets above
1877
+
1878
+ return TimelineEvent;
1879
+ });
1880
+ _registerModule(_modules, 'Extensions/Sonification/TimelinePath.js', [_modules['Extensions/Sonification/TimelineEvent.js'], _modules['Extensions/Sonification/SonificationUtilities.js'], _modules['Core/Utilities.js']], function (TimelineEvent, SU, U) {
1881
+ /* *
1882
+ *
1883
+ * (c) 2009-2021 Øystein Moseng
1884
+ *
1885
+ * TimelineEvent class definition.
1886
+ *
1887
+ * License: www.highcharts.com/license
1888
+ *
1889
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
1890
+ *
1891
+ * */
1892
+ var merge = U.merge,
1893
+ uniqueKey = U.uniqueKey;
1894
+ /* *
1895
+ *
1896
+ * Class
1897
+ *
1898
+ * */
1899
+ /* eslint-disable no-invalid-this, valid-jsdoc */
1900
+ /**
1901
+ * The TimelinePath class. Represents a track on a timeline with a list of
1902
+ * sound events to play at certain times relative to each other.
1903
+ *
1904
+ * @requires module:modules/sonification
1905
+ *
1906
+ * @private
1907
+ * @class
1908
+ * @name Highcharts.TimelinePath
1909
+ *
1910
+ * @param {Highcharts.TimelinePathOptionsObject} options
1911
+ * Options for the TimelinePath.
1912
+ */
1913
+ var TimelinePath = /** @class */ (function () {
1914
+ /* *
1915
+ *
1916
+ * Constructors
1917
+ *
1918
+ * */
1919
+ function TimelinePath(options) {
1920
+ /* *
1921
+ *
1922
+ * Properties
1923
+ *
1924
+ * */
1925
+ this.cursor = void 0;
1926
+ this.events = void 0;
1927
+ this.eventIdMap = void 0;
1928
+ this.eventsPlaying = void 0;
1929
+ this.id = void 0;
1930
+ this.options = void 0;
1931
+ this.signalHandler = void 0;
1932
+ this.init(options);
1933
+ }
1934
+ /* *
1935
+ *
1936
+ * Functions
1937
+ *
1938
+ * */
1939
+ TimelinePath.prototype.init = function (options) {
1940
+ this.options = options;
1941
+ this.id = this.options.id = options.id || uniqueKey();
1942
+ this.cursor = 0;
1943
+ this.eventsPlaying = {};
1944
+ // Handle silent wait, otherwise use events from options
1945
+ this.events = options.silentWait ?
1946
+ [
1947
+ new TimelineEvent({ time: 0 }),
1948
+ new TimelineEvent({ time: options.silentWait })
1949
+ ] :
1950
+ this.options.events;
1951
+ // Reference optionally provided by the user that indicates the intended
1952
+ // duration of the path. Unused by TimelinePath itself.
1953
+ this.targetDuration = options.targetDuration || options.silentWait;
1954
+ // We need to sort our events by time
1955
+ this.sortEvents();
1956
+ // Get map from event ID to index
1957
+ this.updateEventIdMap();
1958
+ // Signal events to fire
1959
+ this.signalHandler = new SU.SignalHandler([
1960
+ 'playOnEnd', 'masterOnEnd', 'onStart', 'onEventStart', 'onEventEnd'
1961
+ ]);
1962
+ this.signalHandler.registerSignalCallbacks(merge(options, { masterOnEnd: options.onEnd }));
1963
+ };
1964
+ /**
1965
+ * Sort the internal event list by time.
1966
+ * @private
1967
+ */
1968
+ TimelinePath.prototype.sortEvents = function () {
1969
+ this.events = this.events.sort(function (a, b) {
1970
+ return a.time - b.time;
1971
+ });
1972
+ };
1973
+ /**
1974
+ * Update the internal eventId to index map.
1975
+ * @private
1976
+ */
1977
+ TimelinePath.prototype.updateEventIdMap = function () {
1978
+ this.eventIdMap = this.events.reduce(function (acc, cur, i) {
1979
+ acc[cur.id] = i;
1980
+ return acc;
1981
+ }, {});
1982
+ };
1983
+ /**
1984
+ * Add events to the path. Should not be done while the path is playing.
1985
+ * The new events are inserted according to their time property.
1986
+ * @private
1987
+ * @param {Array<Highcharts.TimelineEvent>} newEvents
1988
+ * The new timeline events to add.
1989
+ */
1990
+ TimelinePath.prototype.addTimelineEvents = function (newEvents) {
1991
+ this.events = this.events.concat(newEvents);
1992
+ this.sortEvents(); // Sort events by time
1993
+ this.updateEventIdMap(); // Update the event ID to index map
1994
+ };
1995
+ /**
1996
+ * Get the current TimelineEvent under the cursor.
1997
+ * @private
1998
+ * @return {Highcharts.TimelineEvent} The current timeline event.
1999
+ */
2000
+ TimelinePath.prototype.getCursor = function () {
2001
+ return this.events[this.cursor];
2002
+ };
2003
+ /**
2004
+ * Set the current TimelineEvent under the cursor.
2005
+ * @private
2006
+ * @param {string} eventId
2007
+ * The ID of the timeline event to set as current.
2008
+ * @return {boolean}
2009
+ * True if there is an event with this ID in the path. False otherwise.
2010
+ */
2011
+ TimelinePath.prototype.setCursor = function (eventId) {
2012
+ var ix = this.eventIdMap[eventId];
2013
+ if (typeof ix !== 'undefined') {
2014
+ this.cursor = ix;
2015
+ return true;
2016
+ }
2017
+ return false;
2018
+ };
2019
+ /**
2020
+ * Play the timeline from the current cursor.
2021
+ * @private
2022
+ * @param {Function} onEnd
2023
+ * Callback to call when play finished. Does not override other onEnd
2024
+ * callbacks.
2025
+ */
2026
+ TimelinePath.prototype.play = function (onEnd) {
2027
+ this.pause();
2028
+ this.signalHandler.emitSignal('onStart');
2029
+ this.signalHandler.clearSignalCallbacks(['playOnEnd']);
2030
+ this.signalHandler.registerSignalCallbacks({ playOnEnd: onEnd });
2031
+ this.playEvents(1);
2032
+ };
2033
+ /**
2034
+ * Play the timeline backwards from the current cursor.
2035
+ * @private
2036
+ * @param {Function} onEnd
2037
+ * Callback to call when play finished. Does not override other onEnd
2038
+ * callbacks.
2039
+ */
2040
+ TimelinePath.prototype.rewind = function (onEnd) {
2041
+ this.pause();
2042
+ this.signalHandler.emitSignal('onStart');
2043
+ this.signalHandler.clearSignalCallbacks(['playOnEnd']);
2044
+ this.signalHandler.registerSignalCallbacks({ playOnEnd: onEnd });
2045
+ this.playEvents(-1);
2046
+ };
2047
+ /**
2048
+ * Reset the cursor to the beginning.
2049
+ * @private
2050
+ */
2051
+ TimelinePath.prototype.resetCursor = function () {
2052
+ this.cursor = 0;
2053
+ };
2054
+ /**
2055
+ * Reset the cursor to the end.
2056
+ * @private
2057
+ */
2058
+ TimelinePath.prototype.resetCursorEnd = function () {
2059
+ this.cursor = this.events.length - 1;
2060
+ };
2061
+ /**
2062
+ * Cancel current playing. Leaves the cursor intact.
2063
+ * @private
2064
+ * @param {boolean} [fadeOut=false]
2065
+ * Whether or not to fade out as we stop. If false, the path is cancelled
2066
+ * synchronously.
2067
+ */
2068
+ TimelinePath.prototype.pause = function (fadeOut) {
2069
+ var timelinePath = this;
2070
+ // Cancel next scheduled play
2071
+ clearTimeout(timelinePath.nextScheduledPlay);
2072
+ // Cancel currently playing events
2073
+ Object.keys(timelinePath.eventsPlaying).forEach(function (id) {
2074
+ if (timelinePath.eventsPlaying[id]) {
2075
+ timelinePath.eventsPlaying[id].cancel(fadeOut);
2076
+ }
2077
+ });
2078
+ timelinePath.eventsPlaying = {};
2079
+ };
2080
+ /**
2081
+ * Play the events, starting from current cursor, and going in specified
2082
+ * direction.
2083
+ * @private
2084
+ * @param {number} direction
2085
+ * The direction to play, 1 for forwards and -1 for backwards.
2086
+ */
2087
+ TimelinePath.prototype.playEvents = function (direction) {
2088
+ var timelinePath = this,
2089
+ curEvent = timelinePath.events[this.cursor],
2090
+ nextEvent = timelinePath.events[this.cursor + direction],
2091
+ onEnd = function (signalData) {
2092
+ timelinePath.signalHandler.emitSignal('masterOnEnd',
2093
+ signalData);
2094
+ timelinePath.signalHandler.emitSignal('playOnEnd', signalData);
2095
+ };
2096
+ var timeDiff;
2097
+ // Store reference to path on event
2098
+ curEvent.timelinePath = timelinePath;
2099
+ // Emit event, cancel if returns false
2100
+ if (timelinePath.signalHandler.emitSignal('onEventStart', curEvent) === false) {
2101
+ onEnd({
2102
+ event: curEvent,
2103
+ cancelled: true
2104
+ });
2105
+ return;
2106
+ }
2107
+ // Play the current event
2108
+ timelinePath.eventsPlaying[curEvent.id] = curEvent;
2109
+ curEvent.play({
2110
+ onEnd: function (cancelled) {
2111
+ var signalData = {
2112
+ event: curEvent,
2113
+ cancelled: !!cancelled
2114
+ };
2115
+ // Keep track of currently playing events for cancelling
2116
+ delete timelinePath.eventsPlaying[curEvent.id];
2117
+ // Handle onEventEnd
2118
+ timelinePath.signalHandler.emitSignal('onEventEnd', signalData);
2119
+ // Reached end of path?
2120
+ if (!nextEvent) {
2121
+ onEnd(signalData);
2122
+ }
2123
+ }
2124
+ });
2125
+ // Schedule next
2126
+ if (nextEvent) {
2127
+ timeDiff = Math.abs(nextEvent.time - curEvent.time);
2128
+ if (timeDiff < 1) {
2129
+ // Play immediately
2130
+ timelinePath.cursor += direction;
2131
+ timelinePath.playEvents(direction);
2132
+ }
2133
+ else {
2134
+ // Schedule after the difference in ms
2135
+ this.nextScheduledPlay = setTimeout(function () {
2136
+ timelinePath.cursor += direction;
2137
+ timelinePath.playEvents(direction);
2138
+ }, timeDiff);
2139
+ }
2140
+ }
2141
+ };
2142
+ return TimelinePath;
2143
+ }());
2144
+ /* *
2145
+ *
2146
+ * Default export
2147
+ *
2148
+ * */
2149
+ /* *
2150
+ *
2151
+ * API Declarations
2152
+ *
2153
+ * */
2154
+ /**
2155
+ * A set of options for the TimelinePath class.
2156
+ *
2157
+ * @requires module:modules/
2158
+ *
2159
+ * @private
2160
+ * @interface Highcharts.TimelinePathOptionsObject
2161
+ */ /**
2162
+ * List of TimelineEvents to play on this track.
2163
+ * @name Highcharts.TimelinePathOptionsObject#events
2164
+ * @type {Array<Highcharts.TimelineEvent>}
2165
+ */ /**
2166
+ * If this option is supplied, this path ignores all events and just waits for
2167
+ * the specified number of milliseconds before calling onEnd.
2168
+ * @name Highcharts.TimelinePathOptionsObject#silentWait
2169
+ * @type {number|undefined}
2170
+ */ /**
2171
+ * Unique ID for this timeline path. Automatically generated if not supplied.
2172
+ * @name Highcharts.TimelinePathOptionsObject#id
2173
+ * @type {string|undefined}
2174
+ */ /**
2175
+ * Callback called before the path starts playing.
2176
+ * @name Highcharts.TimelinePathOptionsObject#onStart
2177
+ * @type {Function|undefined}
2178
+ */ /**
2179
+ * Callback function to call before an event plays.
2180
+ * @name Highcharts.TimelinePathOptionsObject#onEventStart
2181
+ * @type {Function|undefined}
2182
+ */ /**
2183
+ * Callback function to call after an event has stopped playing.
2184
+ * @name Highcharts.TimelinePathOptionsObject#onEventEnd
2185
+ * @type {Function|undefined}
2186
+ */ /**
2187
+ * Callback called when the whole path is finished.
2188
+ * @name Highcharts.TimelinePathOptionsObject#onEnd
2189
+ * @type {Function|undefined}
2190
+ */
2191
+ (''); // detach doclets above
2192
+
2193
+ return TimelinePath;
2194
+ });
2195
+ _registerModule(_modules, 'Extensions/Sonification/SeriesSonify.js', [_modules['Extensions/Sonification/Earcon.js'], _modules['Extensions/Sonification/Instrument.js'], _modules['Core/Series/Point.js'], _modules['Extensions/Sonification/SonificationUtilities.js'], _modules['Extensions/Sonification/Timeline.js'], _modules['Extensions/Sonification/TimelineEvent.js'], _modules['Extensions/Sonification/TimelinePath.js'], _modules['Core/Utilities.js']], function (Earcon, Instrument, Point, SU, Timeline, TimelineEvent, TimelinePath, U) {
2196
+ /* *
2197
+ *
2198
+ * (c) 2009-2021 Øystein Moseng
2199
+ *
2200
+ * Sonification functions for chart/series.
2201
+ *
2202
+ * License: www.highcharts.com/license
2203
+ *
2204
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
2205
+ *
2206
+ * */
2207
+ var getExtremesForInstrumentProps = SU.getExtremesForInstrumentProps,
2208
+ virtualAxisTranslate = SU.virtualAxisTranslate;
2209
+ var extend = U.extend,
2210
+ find = U.find,
2211
+ isArray = U.isArray,
2212
+ merge = U.merge,
2213
+ objectEach = U.objectEach,
2214
+ pick = U.pick;
2215
+ /* *
2216
+ *
2217
+ * Compositions
2218
+ *
2219
+ * */
2220
+ var SeriesSonify;
2221
+ (function (SeriesSonify) {
2222
+ /* *
2223
+ *
2224
+ * Declarations
2225
+ *
2226
+ * */
2227
+ /* *
2228
+ *
2229
+ * Constants
2230
+ *
2231
+ * */
2232
+ var composedClasses = [];
2233
+ /* *
2234
+ *
2235
+ * Functions
2236
+ *
2237
+ * */
2238
+ /* eslint-disable valid-jsdoc */
2239
+ /**
2240
+ * @private
2241
+ */
2242
+ function compose(SeriesClass) {
2243
+ if (composedClasses.indexOf(SeriesClass) === -1) {
2244
+ composedClasses.push(SeriesClass);
2245
+ var seriesProto = SeriesClass.prototype;
2246
+ extend(seriesProto, {
2247
+ sonify: sonify
2248
+ });
2249
+ }
2250
+ return SeriesClass;
2251
+ }
2252
+ SeriesSonify.compose = compose;
2253
+ /**
2254
+ * Utility function to apply a master volume to a list of instrument
2255
+ * options.
2256
+ * @private
2257
+ * @param {Array<Highcharts.PointInstrumentObject>} instruments
2258
+ * The instrument options. Only options with Instrument object instances
2259
+ * will be affected.
2260
+ * @param {number} masterVolume
2261
+ * The master volume multiplier to apply to the instruments.
2262
+ * @return {Array<Highcharts.PointInstrumentObject>}
2263
+ * Array of instrument options.
2264
+ */
2265
+ function applyMasterVolumeToInstruments(instruments, masterVolume) {
2266
+ instruments.forEach(function (instrOpts) {
2267
+ var instr = instrOpts.instrument;
2268
+ if (typeof instr !== 'string') {
2269
+ instr.setMasterVolume(masterVolume);
2270
+ }
2271
+ });
2272
+ return instruments;
2273
+ }
2274
+ /**
2275
+ * Utility function to assemble options for creating a TimelinePath from a
2276
+ * series when sonifying an entire chart.
2277
+ * @private
2278
+ * @param {Highcharts.Series} series
2279
+ * The series to return options for.
2280
+ * @param {Highcharts.RangeObject} dataExtremes
2281
+ * Pre-calculated data extremes for the chart.
2282
+ * @param {Highcharts.SonificationOptions} chartSonifyOptions
2283
+ * Options passed in to chart.sonify.
2284
+ * @return {Partial<Highcharts.SonifySeriesOptionsObject>}
2285
+ * Options for buildTimelinePathFromSeries.
2286
+ */
2287
+ function buildChartSonifySeriesOptions(series, dataExtremes, chartSonifyOptions) {
2288
+ var additionalSeriesOptions = chartSonifyOptions.seriesOptions || {},
2289
+ sonification = series.chart.options.sonification,
2290
+ pointPlayTime = (sonification &&
2291
+ sonification.defaultInstrumentOptions &&
2292
+ sonification.defaultInstrumentOptions.mapping &&
2293
+ sonification.defaultInstrumentOptions.mapping.pointPlayTime ||
2294
+ 'x'),
2295
+ configOptions = chartOptionsToSonifySeriesOptions(series);
2296
+ return merge(
2297
+ // Options from chart configuration
2298
+ configOptions,
2299
+ // Options passed in
2300
+ {
2301
+ // Calculated dataExtremes for chart
2302
+ dataExtremes: dataExtremes,
2303
+ // We need to get timeExtremes for each series. We pass this
2304
+ // in when building the TimelinePath objects to avoid
2305
+ // calculating twice.
2306
+ timeExtremes: getTimeExtremes(series, pointPlayTime),
2307
+ // Some options we just pass on
2308
+ instruments: (chartSonifyOptions.instruments || configOptions.instruments),
2309
+ onStart: (chartSonifyOptions.onSeriesStart || configOptions.onStart),
2310
+ onEnd: chartSonifyOptions.onSeriesEnd || configOptions.onEnd,
2311
+ earcons: chartSonifyOptions.earcons || configOptions.earcons,
2312
+ masterVolume: pick(chartSonifyOptions.masterVolume, configOptions.masterVolume)
2313
+ },
2314
+ // Merge in the specific series options by ID if any are passed in
2315
+ isArray(additionalSeriesOptions) ? (find(additionalSeriesOptions, function (optEntry) {
2316
+ return optEntry.id === pick(series.id, series.options.id);
2317
+ }) || {}) : additionalSeriesOptions, {
2318
+ // Forced options
2319
+ pointPlayTime: pointPlayTime
2320
+ });
2321
+ }
2322
+ SeriesSonify.buildChartSonifySeriesOptions = buildChartSonifySeriesOptions;
2323
+ /**
2324
+ * Create a TimelinePath from a series. Takes the same options as
2325
+ * seriesSonify. To intuitively allow multiple series to play simultaneously
2326
+ * we make copies of the instruments for each series.
2327
+ * @private
2328
+ * @param {Highcharts.Series} series
2329
+ * The series to build from.
2330
+ * @param {Highcharts.SonifySeriesOptionsObject} options
2331
+ * The options for building the TimelinePath.
2332
+ * @return {Highcharts.TimelinePath}
2333
+ * A timeline path with events.
2334
+ */
2335
+ function buildTimelinePathFromSeries(series, options) {
2336
+ // options.timeExtremes is internal and used so that the calculations
2337
+ // from chart.sonify can be reused.
2338
+ var timeExtremes = options.timeExtremes || getTimeExtremes(series,
2339
+ options.pointPlayTime),
2340
+ // Compute any data extremes that aren't defined yet
2341
+ dataExtremes = getExtremesForInstrumentProps(series.chart,
2342
+ options.instruments,
2343
+ options.dataExtremes),
2344
+ minimumSeriesDurationMs = 10,
2345
+ // Get the duration of the final note
2346
+ finalNoteDuration = getFinalNoteDuration(series,
2347
+ options.instruments,
2348
+ dataExtremes),
2349
+ // Get time offset for a point, relative to duration
2350
+ pointToTime = function (point) {
2351
+ return virtualAxisTranslate(getPointTimeValue(point,
2352
+ options.pointPlayTime),
2353
+ timeExtremes, {
2354
+ min: 0,
2355
+ max: Math.max(options.duration - finalNoteDuration,
2356
+ minimumSeriesDurationMs)
2357
+ });
2358
+ }, masterVolume = pick(options.masterVolume, 1),
2359
+ // Make copies of the instruments used for this series, to allow
2360
+ // multiple series with the same instrument to play together
2361
+ instrumentCopies = makeInstrumentCopies(options.instruments), instruments = applyMasterVolumeToInstruments(instrumentCopies, masterVolume),
2362
+ // Go through the points, convert to events, optionally add Earcons
2363
+ timelineEvents = series.points.reduce(function (events, point) {
2364
+ var earcons = getPointEarcons(point,
2365
+ options.earcons || []),
2366
+ time = pointToTime(point);
2367
+ return events.concat(
2368
+ // Event object for point
2369
+ new TimelineEvent({
2370
+ eventObject: point,
2371
+ time: time,
2372
+ id: point.id,
2373
+ playOptions: {
2374
+ instruments: instruments,
2375
+ dataExtremes: dataExtremes,
2376
+ masterVolume: masterVolume
2377
+ }
2378
+ }),
2379
+ // Earcons
2380
+ earcons.map(function (earcon) {
2381
+ return new TimelineEvent({
2382
+ eventObject: earcon,
2383
+ time: time,
2384
+ playOptions: {
2385
+ volume: masterVolume
2386
+ }
2387
+ });
2388
+ }));
2389
+ }, []);
2390
+ // Build the timeline path
2391
+ return new TimelinePath({
2392
+ events: timelineEvents,
2393
+ onStart: function () {
2394
+ if (options.onStart) {
2395
+ options.onStart(series);
2396
+ }
2397
+ },
2398
+ onEventStart: function (event) {
2399
+ var eventObject = event.options && event.options.eventObject;
2400
+ if (eventObject instanceof Point) {
2401
+ // Check for hidden series
2402
+ if (!eventObject.series.visible &&
2403
+ !eventObject.series.chart.series.some(function (series) {
2404
+ return series.visible;
2405
+ })) {
2406
+ // We have no visible series, stop the path.
2407
+ event.timelinePath.timeline.pause();
2408
+ event.timelinePath.timeline.resetCursor();
2409
+ return false;
2410
+ }
2411
+ // Emit onPointStart
2412
+ if (options.onPointStart) {
2413
+ options.onPointStart(event, eventObject);
2414
+ }
2415
+ }
2416
+ },
2417
+ onEventEnd: function (eventData) {
2418
+ var eventObject = (eventData.event &&
2419
+ eventData.event.options &&
2420
+ eventData.event.options.eventObject);
2421
+ if (eventObject instanceof Point && options.onPointEnd) {
2422
+ options.onPointEnd(eventData.event, eventObject);
2423
+ }
2424
+ },
2425
+ onEnd: function () {
2426
+ if (options.onEnd) {
2427
+ options.onEnd(series);
2428
+ }
2429
+ },
2430
+ targetDuration: options.duration
2431
+ });
2432
+ }
2433
+ SeriesSonify.buildTimelinePathFromSeries = buildTimelinePathFromSeries;
2434
+ /**
2435
+ * Utility function to translate between options set in chart configuration
2436
+ * and a SonifySeriesOptionsObject.
2437
+ * @private
2438
+ * @param {Highcharts.Series} series
2439
+ * The series to get options for.
2440
+ * @return {Highcharts.SonifySeriesOptionsObject}
2441
+ * Options for chart/series.sonify()
2442
+ */
2443
+ function chartOptionsToSonifySeriesOptions(series) {
2444
+ var seriesOpts = series.options.sonification ||
2445
+ {},
2446
+ chartOpts = series.chart.options.sonification ||
2447
+ {},
2448
+ chartEvents = chartOpts.events ||
2449
+ {},
2450
+ seriesEvents = seriesOpts.events ||
2451
+ {};
2452
+ return {
2453
+ onEnd: seriesEvents.onSeriesEnd || chartEvents.onSeriesEnd,
2454
+ onStart: seriesEvents.onSeriesStart || chartEvents.onSeriesStart,
2455
+ onPointEnd: seriesEvents.onPointEnd || chartEvents.onPointEnd,
2456
+ onPointStart: seriesEvents.onPointStart || chartEvents.onPointStart,
2457
+ pointPlayTime: (chartOpts.defaultInstrumentOptions &&
2458
+ chartOpts.defaultInstrumentOptions.mapping &&
2459
+ chartOpts.defaultInstrumentOptions.mapping.pointPlayTime),
2460
+ masterVolume: chartOpts.masterVolume,
2461
+ // Deals with chart-level defaults
2462
+ instruments: getSeriesInstrumentOptions(series),
2463
+ earcons: seriesOpts.earcons || chartOpts.earcons
2464
+ };
2465
+ }
2466
+ /**
2467
+ * Utility function to find the duration of the final note in a series.
2468
+ * @private
2469
+ * @param {Highcharts.Series} series The data series to calculate on.
2470
+ * @param {Array<Highcharts.PointInstrumentObject>} instruments The instrument options for this series.
2471
+ * @param {Highcharts.Dictionary<Highcharts.RangeObject>} dataExtremes Value extremes for the data series props.
2472
+ * @return {number} The duration of the final note in milliseconds.
2473
+ */
2474
+ function getFinalNoteDuration(series, instruments, dataExtremes) {
2475
+ var finalPoint = series.points[series.points.length - 1];
2476
+ return instruments.reduce(function (duration, instrument) {
2477
+ var mapping = instrument.instrumentMapping.duration;
2478
+ var instrumentDuration;
2479
+ if (typeof mapping === 'string') {
2480
+ instrumentDuration = 0; // Ignore, no easy way to map this
2481
+ }
2482
+ else if (typeof mapping === 'function') {
2483
+ instrumentDuration = mapping(finalPoint, dataExtremes);
2484
+ }
2485
+ else {
2486
+ instrumentDuration = mapping;
2487
+ }
2488
+ return Math.max(duration, instrumentDuration);
2489
+ }, 0);
2490
+ }
2491
+ /**
2492
+ * Get earcons for the point if there are any.
2493
+ * @private
2494
+ * @param {Highcharts.Point} point
2495
+ * The point to find earcons for.
2496
+ * @param {Array<Highcharts.EarconConfiguration>} earconDefinitions
2497
+ * Earcons to check.
2498
+ * @return {Array<Highcharts.Earcon>}
2499
+ * Array of earcons to be played with this point.
2500
+ */
2501
+ function getPointEarcons(point, earconDefinitions) {
2502
+ return earconDefinitions.reduce(function (earcons, earconDefinition) {
2503
+ var earcon = earconDefinition.earcon;
2504
+ var cond;
2505
+ if (earconDefinition.condition) {
2506
+ // We have a condition. This overrides onPoint
2507
+ cond = earconDefinition.condition(point);
2508
+ if (cond instanceof Earcon) {
2509
+ // Condition returned an earcon
2510
+ earcons.push(cond);
2511
+ }
2512
+ else if (cond) {
2513
+ // Condition returned true
2514
+ earcons.push(earcon);
2515
+ }
2516
+ }
2517
+ else if (earconDefinition.onPoint &&
2518
+ point.id === earconDefinition.onPoint) {
2519
+ // We have earcon onPoint
2520
+ earcons.push(earcon);
2521
+ }
2522
+ return earcons;
2523
+ }, []);
2524
+ }
2525
+ /**
2526
+ * Get the relative time value of a point.
2527
+ * @private
2528
+ * @param {Highcharts.Point} point
2529
+ * The point.
2530
+ * @param {Function|string} timeProp
2531
+ * The time axis data prop or the time function.
2532
+ * @return {number}
2533
+ * The time value.
2534
+ */
2535
+ function getPointTimeValue(point, timeProp) {
2536
+ return typeof timeProp === 'function' ?
2537
+ timeProp(point) :
2538
+ pick(point[timeProp], point.options[timeProp]);
2539
+ }
2540
+ /**
2541
+ * @private
2542
+ * @param {Highcharts.Series} series
2543
+ * The series to get options for.
2544
+ * @param {Highcharts.SonifySeriesOptionsObject} options
2545
+ * Options to merge with user options on series/chart and default options.
2546
+ * @return {Array<Highcharts.PointInstrumentObject>}
2547
+ * The merged options.
2548
+ */
2549
+ function getSeriesInstrumentOptions(series, options) {
2550
+ if (options && options.instruments) {
2551
+ return options.instruments;
2552
+ }
2553
+ var defaultInstrOpts = (series.chart.options.sonification &&
2554
+ series.chart.options.sonification.defaultInstrumentOptions ||
2555
+ {}),
2556
+ seriesInstrOpts = (series.options.sonification &&
2557
+ series.options.sonification.instruments ||
2558
+ [{}]),
2559
+ removeNullsFromObject = function (obj) {
2560
+ objectEach(obj,
2561
+ function (val,
2562
+ key) {
2563
+ if (val === null) {
2564
+ delete obj[key];
2565
+ }
2566
+ });
2567
+ };
2568
+ // Convert series options to PointInstrumentObjects and merge with
2569
+ // default options
2570
+ return (seriesInstrOpts).map(function (optionSet) {
2571
+ // Allow setting option to null to use default
2572
+ removeNullsFromObject(optionSet.mapping || {});
2573
+ removeNullsFromObject(optionSet);
2574
+ return {
2575
+ instrument: optionSet.instrument || defaultInstrOpts.instrument,
2576
+ instrumentOptions: merge(defaultInstrOpts, optionSet, {
2577
+ // Instrument options are lifted to root in the API options
2578
+ // object, so merge all in order to avoid missing any. But
2579
+ // remove the following which are not instrumentOptions:
2580
+ mapping: void 0,
2581
+ instrument: void 0
2582
+ }),
2583
+ instrumentMapping: merge(defaultInstrOpts.mapping, optionSet.mapping)
2584
+ };
2585
+ });
2586
+ }
2587
+ /**
2588
+ * @private
2589
+ * @param {Highcharts.Series} series
2590
+ * The series to get options for.
2591
+ * @param {Highcharts.SonifySeriesOptionsObject} options
2592
+ * Options to merge with user options on series/chart and default options.
2593
+ * @return {Highcharts.SonifySeriesOptionsObject}
2594
+ * The merged options.
2595
+ */
2596
+ function getSeriesSonifyOptions(series, options) {
2597
+ var chartOpts = series.chart.options.sonification,
2598
+ seriesOpts = series.options.sonification;
2599
+ return merge({
2600
+ duration: ((seriesOpts && seriesOpts.duration) ||
2601
+ (chartOpts && chartOpts.duration))
2602
+ }, chartOptionsToSonifySeriesOptions(series), options);
2603
+ }
2604
+ /**
2605
+ * Get the time extremes of this series. This is handled outside of the
2606
+ * dataExtremes, as we always want to just sonify the visible points, and we
2607
+ * always want the extremes to be the extremes of the visible points.
2608
+ * @private
2609
+ * @param {Highcharts.Series} series
2610
+ * The series to compute on.
2611
+ * @param {Function|string} timeProp
2612
+ * The time axis data prop or the time function.
2613
+ * @return {Highcharts.RangeObject}
2614
+ * Object with min/max extremes for the time values.
2615
+ */
2616
+ function getTimeExtremes(series, timeProp) {
2617
+ // Compute the extremes from the visible points.
2618
+ return series.points.reduce(function (acc, point) {
2619
+ var value = getPointTimeValue(point,
2620
+ timeProp);
2621
+ acc.min = Math.min(acc.min, value);
2622
+ acc.max = Math.max(acc.max, value);
2623
+ return acc;
2624
+ }, {
2625
+ min: Infinity,
2626
+ max: -Infinity
2627
+ });
2628
+ }
2629
+ /**
2630
+ * Utility function to get a new list of instrument options where all the
2631
+ * instrument references are copies.
2632
+ * @private
2633
+ * @param {Array<Highcharts.PointInstrumentObject>} instruments
2634
+ * The instrument options.
2635
+ * @return {Array<Highcharts.PointInstrumentObject>}
2636
+ * Array of copied instrument options.
2637
+ */
2638
+ function makeInstrumentCopies(instruments) {
2639
+ return instruments.map(function (instrumentDef) {
2640
+ var instrument = instrumentDef.instrument,
2641
+ copy = (typeof instrument === 'string' ?
2642
+ Instrument.definitions[instrument] :
2643
+ instrument).copy();
2644
+ return merge(instrumentDef, { instrument: copy });
2645
+ });
2646
+ }
2647
+ /**
2648
+ * Sonify a series.
2649
+ *
2650
+ * @sample highcharts/sonification/series-basic/
2651
+ * Click on series to sonify
2652
+ * @sample highcharts/sonification/series-earcon/
2653
+ * Series with earcon
2654
+ * @sample highcharts/sonification/point-play-time/
2655
+ * Play y-axis by time
2656
+ * @sample highcharts/sonification/earcon-on-point/
2657
+ * Earcon set on point
2658
+ *
2659
+ * @requires module:modules/sonification
2660
+ *
2661
+ * @function Highcharts.Series#sonify
2662
+ *
2663
+ * @param {Highcharts.SonifySeriesOptionsObject} [options]
2664
+ * The options for sonifying this series. If not provided, uses options set
2665
+ * on chart and series.
2666
+ */
2667
+ function sonify(options) {
2668
+ var mergedOptions = getSeriesSonifyOptions(this,
2669
+ options),
2670
+ timelinePath = buildTimelinePathFromSeries(this,
2671
+ mergedOptions),
2672
+ chartSonification = this.chart.sonification;
2673
+ if (chartSonification) {
2674
+ // Only one timeline can play at a time. If we want multiple series
2675
+ // playing at the same time, use chart.sonify.
2676
+ if (chartSonification.timeline) {
2677
+ chartSonification.timeline.pause();
2678
+ }
2679
+ // Store reference to duration
2680
+ chartSonification.duration = mergedOptions.duration;
2681
+ // Create new timeline for this series, and play it.
2682
+ chartSonification.timeline = new Timeline({
2683
+ paths: [timelinePath]
2684
+ });
2685
+ chartSonification.timeline.play();
2686
+ }
2687
+ }
2688
+ })(SeriesSonify || (SeriesSonify = {}));
2689
+ /* *
2690
+ *
2691
+ * Default Export
2692
+ *
2693
+ * */
2694
+
2695
+ return SeriesSonify;
2696
+ });
2697
+ _registerModule(_modules, 'Extensions/Sonification/ChartSonify.js', [_modules['Extensions/Sonification/Earcon.js'], _modules['Core/Series/Point.js'], _modules['Extensions/Sonification/SeriesSonify.js'], _modules['Extensions/Sonification/SonificationUtilities.js'], _modules['Extensions/Sonification/Timeline.js'], _modules['Extensions/Sonification/TimelineEvent.js'], _modules['Extensions/Sonification/TimelinePath.js'], _modules['Core/Utilities.js']], function (Earcon, Point, SeriesSonify, SU, Timeline, TimelineEvent, TimelinePath, U) {
2698
+ /* *
2699
+ *
2700
+ * (c) 2009-2021 Øystein Moseng
2701
+ *
2702
+ * Sonification functions for chart/series.
2703
+ *
2704
+ * License: www.highcharts.com/license
2705
+ *
2706
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
2707
+ *
2708
+ * */
2709
+ var getExtremesForInstrumentProps = SU.getExtremesForInstrumentProps,
2710
+ virtualAxisTranslate = SU.virtualAxisTranslate;
2711
+ var addEvent = U.addEvent,
2712
+ extend = U.extend,
2713
+ merge = U.merge,
2714
+ pick = U.pick,
2715
+ splat = U.splat;
2716
+ /* *
2717
+ *
2718
+ * Functions
2719
+ *
2720
+ * */
2721
+ /* eslint-disable valid-jsdoc */
2722
+ /**
2723
+ * Utility function to normalize the ordering of timeline paths when sonifying
2724
+ * a chart.
2725
+ * @private
2726
+ * @param {string|Array<string|Highcharts.Earcon|Array<string|Highcharts.Earcon>>} orderOptions
2727
+ * Order options for the sonification.
2728
+ * @param {Highcharts.Chart} chart
2729
+ * The chart we are sonifying.
2730
+ * @param {Function} seriesOptionsCallback
2731
+ * A function that takes a series as argument, and returns the series options
2732
+ * for that series to be used with buildTimelinePathFromSeries.
2733
+ * @return {Array<object|Array<object|Highcharts.TimelinePath>>}
2734
+ * If order is sequential, we return an array of objects to create series paths
2735
+ * from. If order is simultaneous we return an array of an array with the same.
2736
+ * If there is a custom order, we return an array of arrays of either objects
2737
+ * (for series) or TimelinePaths (for earcons and delays).
2738
+ */
2739
+ function buildPathOrder(orderOptions, chart, seriesOptionsCallback) {
2740
+ var order;
2741
+ if (orderOptions === 'sequential' || orderOptions === 'simultaneous') {
2742
+ // Just add the series from the chart
2743
+ order = chart.series.reduce(function (seriesList, series) {
2744
+ if (series.visible &&
2745
+ (series.options.sonification &&
2746
+ series.options.sonification.enabled) !== false) {
2747
+ seriesList.push({
2748
+ series: series,
2749
+ seriesOptions: seriesOptionsCallback(series)
2750
+ });
2751
+ }
2752
+ return seriesList;
2753
+ }, []);
2754
+ // If order is simultaneous, group all series together
2755
+ if (orderOptions === 'simultaneous') {
2756
+ order = [order];
2757
+ }
2758
+ }
2759
+ else {
2760
+ // We have a specific order, and potentially custom items - like
2761
+ // earcons or silent waits.
2762
+ order = orderOptions.reduce(function (orderList, orderDef) {
2763
+ // Return set of items to play simultaneously. Could be only one.
2764
+ var simulItems = splat(orderDef).reduce(function (items,
2765
+ item) {
2766
+ var itemObject;
2767
+ // Is this item a series ID?
2768
+ if (typeof item === 'string') {
2769
+ var series = chart.get(item);
2770
+ if (series.visible) {
2771
+ itemObject = {
2772
+ series: series,
2773
+ seriesOptions: seriesOptionsCallback(series)
2774
+ };
2775
+ }
2776
+ // Is it an earcon? If so, just create the path.
2777
+ }
2778
+ else if (item instanceof Earcon) {
2779
+ // Path with a single event
2780
+ itemObject = new TimelinePath({
2781
+ events: [new TimelineEvent({
2782
+ eventObject: item
2783
+ })]
2784
+ });
2785
+ }
2786
+ // Is this item a silent wait? If so, just create the path.
2787
+ if (item.silentWait) {
2788
+ itemObject = new TimelinePath({
2789
+ silentWait: item.silentWait
2790
+ });
2791
+ }
2792
+ // Add to items to play simultaneously
2793
+ if (itemObject) {
2794
+ items.push(itemObject);
2795
+ }
2796
+ return items;
2797
+ }, []);
2798
+ // Add to order list
2799
+ if (simulItems.length) {
2800
+ orderList.push(simulItems);
2801
+ }
2802
+ return orderList;
2803
+ }, []);
2804
+ }
2805
+ return order;
2806
+ }
2807
+ /**
2808
+ * Utility function to add a silent wait after all series.
2809
+ * @private
2810
+ * @param {Array<object|Array<object|TimelinePath>>} order
2811
+ * The order of items.
2812
+ * @param {number} wait
2813
+ * The wait in milliseconds to add.
2814
+ * @return {Array<object|Array<object|TimelinePath>>}
2815
+ * The order with waits inserted.
2816
+ */
2817
+ function addAfterSeriesWaits(order, wait) {
2818
+ if (!wait) {
2819
+ return order;
2820
+ }
2821
+ return order.reduce(function (newOrder, orderDef, i) {
2822
+ var simultaneousPaths = splat(orderDef);
2823
+ newOrder.push(simultaneousPaths);
2824
+ // Go through the simultaneous paths and see if there is a series there
2825
+ if (i < order.length - 1 && // Do not add wait after last series
2826
+ simultaneousPaths.some(function (item) {
2827
+ return item.series;
2828
+ })) {
2829
+ // We have a series, meaning we should add a wait after these
2830
+ // paths have finished.
2831
+ newOrder.push(new TimelinePath({
2832
+ silentWait: wait
2833
+ }));
2834
+ }
2835
+ return newOrder;
2836
+ }, []);
2837
+ }
2838
+ /**
2839
+ * Utility function to find the total amout of wait time in the TimelinePaths.
2840
+ * @private
2841
+ * @param {Array<object|Array<object|TimelinePath>>} order
2842
+ * The order of TimelinePaths/items.
2843
+ * @return {number}
2844
+ * The total time in ms spent on wait paths between playing.
2845
+ */
2846
+ function getWaitTime(order) {
2847
+ return order.reduce(function (waitTime, orderDef) {
2848
+ var def = splat(orderDef);
2849
+ return waitTime + (def.length === 1 &&
2850
+ def[0].options &&
2851
+ def[0].options.silentWait || 0);
2852
+ }, 0);
2853
+ }
2854
+ /**
2855
+ * Utility function to ensure simultaneous paths have start/end events at the
2856
+ * same time, to sync them.
2857
+ * @private
2858
+ * @param {Array<Highcharts.TimelinePath>} paths
2859
+ * The paths to sync.
2860
+ */
2861
+ function syncSimultaneousPaths(paths) {
2862
+ // Find the extremes for these paths
2863
+ var extremes = paths.reduce(function (extremes,
2864
+ path) {
2865
+ var events = path.events;
2866
+ if (events && events.length) {
2867
+ extremes.min = Math.min(events[0].time, extremes.min);
2868
+ extremes.max = Math.max(events[events.length - 1].time, extremes.max);
2869
+ }
2870
+ return extremes;
2871
+ }, {
2872
+ min: Infinity,
2873
+ max: -Infinity
2874
+ });
2875
+ // Go through the paths and add events to make them fit the same timespan
2876
+ paths.forEach(function (path) {
2877
+ var events = path.events,
2878
+ hasEvents = events && events.length,
2879
+ eventsToAdd = [];
2880
+ if (!(hasEvents && events[0].time <= extremes.min)) {
2881
+ eventsToAdd.push(new TimelineEvent({
2882
+ time: extremes.min
2883
+ }));
2884
+ }
2885
+ if (!(hasEvents && events[events.length - 1].time >= extremes.max)) {
2886
+ eventsToAdd.push(new TimelineEvent({
2887
+ time: extremes.max
2888
+ }));
2889
+ }
2890
+ if (eventsToAdd.length) {
2891
+ path.addTimelineEvents(eventsToAdd);
2892
+ }
2893
+ });
2894
+ }
2895
+ /**
2896
+ * Utility function to find the total duration span for all simul path sets
2897
+ * that include series.
2898
+ * @private
2899
+ * @param {Array<object|Array<object|Highcharts.TimelinePath>>} order
2900
+ * The order of TimelinePaths/items.
2901
+ * @return {number}
2902
+ * The total time value span difference for all series.
2903
+ */
2904
+ function getSimulPathDurationTotal(order) {
2905
+ return order.reduce(function (durationTotal, orderDef) {
2906
+ return durationTotal + splat(orderDef).reduce(function (maxPathDuration, item) {
2907
+ var timeExtremes = (item.series &&
2908
+ item.seriesOptions &&
2909
+ item.seriesOptions.timeExtremes);
2910
+ return timeExtremes ?
2911
+ Math.max(maxPathDuration, timeExtremes.max - timeExtremes.min) : maxPathDuration;
2912
+ }, 0);
2913
+ }, 0);
2914
+ }
2915
+ /**
2916
+ * Function to calculate the duration in ms for a series.
2917
+ * @private
2918
+ * @param {number} seriesValueDuration
2919
+ * The duration of the series in value difference.
2920
+ * @param {number} totalValueDuration
2921
+ * The total duration of all (non simultaneous) series in value difference.
2922
+ * @param {number} totalDurationMs
2923
+ * The desired total duration for all series in milliseconds.
2924
+ * @return {number}
2925
+ * The duration for the series in milliseconds.
2926
+ */
2927
+ function getSeriesDurationMs(seriesValueDuration, totalValueDuration, totalDurationMs) {
2928
+ // A series spanning the whole chart would get the full duration.
2929
+ return virtualAxisTranslate(seriesValueDuration, { min: 0, max: totalValueDuration }, { min: 0, max: totalDurationMs });
2930
+ }
2931
+ /**
2932
+ * Convert series building objects into paths and return a new list of
2933
+ * TimelinePaths.
2934
+ * @private
2935
+ * @param {Array<object|Array<object|Highcharts.TimelinePath>>} order
2936
+ * The order list.
2937
+ * @param {number} duration
2938
+ * Total duration to aim for in milliseconds.
2939
+ * @return {Array<Array<Highcharts.TimelinePath>>}
2940
+ * Array of TimelinePath objects to play.
2941
+ */
2942
+ function buildPathsFromOrder(order, duration) {
2943
+ // Find time used for waits (custom or after series), and subtract it from
2944
+ // available duration.
2945
+ var totalAvailableDurationMs = Math.max(duration - getWaitTime(order), 0),
2946
+ // Add up simultaneous path durations to find total value span duration
2947
+ // of everything
2948
+ totalUsedDuration = getSimulPathDurationTotal(order);
2949
+ // Go through the order list and convert the items
2950
+ return order.reduce(function (allPaths, orderDef) {
2951
+ var simultaneousPaths = splat(orderDef).reduce(function (simulPaths,
2952
+ item) {
2953
+ if (item instanceof TimelinePath) {
2954
+ // This item is already a path object
2955
+ simulPaths.push(item);
2956
+ }
2957
+ else if (item.series) {
2958
+ // We have a series.
2959
+ // We need to set the duration of the series
2960
+ item.seriesOptions.duration =
2961
+ item.seriesOptions.duration || getSeriesDurationMs(item.seriesOptions.timeExtremes.max -
2962
+ item.seriesOptions.timeExtremes.min, totalUsedDuration, totalAvailableDurationMs);
2963
+ // Add the path
2964
+ simulPaths.push(SeriesSonify.buildTimelinePathFromSeries(item.series, item.seriesOptions));
2965
+ }
2966
+ return simulPaths;
2967
+ }, []);
2968
+ // Add in the simultaneous paths
2969
+ allPaths.push(simultaneousPaths);
2970
+ return allPaths;
2971
+ }, []);
2972
+ }
2973
+ /**
2974
+ * @private
2975
+ * @param {Highcharts.Chart} chart The chart to get options for.
2976
+ * @param {Highcharts.SonificationOptions} options
2977
+ * Options to merge with user options on chart and default options.
2978
+ * @return {Highcharts.SonificationOptions} The merged options.
2979
+ */
2980
+ function getChartSonifyOptions(chart, options) {
2981
+ var chartOpts = chart.options.sonification || {};
2982
+ return merge({
2983
+ duration: chartOpts.duration,
2984
+ afterSeriesWait: chartOpts.afterSeriesWait,
2985
+ pointPlayTime: (chartOpts.defaultInstrumentOptions &&
2986
+ chartOpts.defaultInstrumentOptions.mapping &&
2987
+ chartOpts.defaultInstrumentOptions.mapping.pointPlayTime),
2988
+ order: chartOpts.order,
2989
+ onSeriesStart: (chartOpts.events && chartOpts.events.onSeriesStart),
2990
+ onSeriesEnd: (chartOpts.events && chartOpts.events.onSeriesEnd),
2991
+ onEnd: (chartOpts.events && chartOpts.events.onEnd)
2992
+ }, options);
2993
+ }
2994
+ /**
2995
+ * Sonify a chart.
2996
+ *
2997
+ * @sample highcharts/sonification/chart-sequential/
2998
+ * Sonify a basic chart
2999
+ * @sample highcharts/sonification/chart-simultaneous/
3000
+ * Sonify series simultaneously
3001
+ * @sample highcharts/sonification/chart-custom-order/
3002
+ * Custom defined order of series
3003
+ * @sample highcharts/sonification/chart-earcon/
3004
+ * Earcons on chart
3005
+ * @sample highcharts/sonification/chart-events/
3006
+ * Sonification events on chart
3007
+ *
3008
+ * @requires module:modules/sonification
3009
+ *
3010
+ * @function Highcharts.Chart#sonify
3011
+ *
3012
+ * @param {Highcharts.SonificationOptions} [options]
3013
+ * The options for sonifying this chart. If not provided,
3014
+ * uses options set on chart and series.
3015
+ */
3016
+ function chartSonify(options) {
3017
+ var opts = getChartSonifyOptions(this,
3018
+ options);
3019
+ // Only one timeline can play at a time.
3020
+ if (this.sonification.timeline) {
3021
+ this.sonification.timeline.pause();
3022
+ }
3023
+ // Store reference to duration
3024
+ this.sonification.duration = opts.duration;
3025
+ // Calculate data extremes for the props used
3026
+ var dataExtremes = getExtremesForInstrumentProps(this,
3027
+ opts.instruments,
3028
+ opts.dataExtremes);
3029
+ // Figure out ordering of series and custom paths
3030
+ var order = buildPathOrder(opts.order,
3031
+ this,
3032
+ function (series) {
3033
+ return SeriesSonify.buildChartSonifySeriesOptions(series,
3034
+ dataExtremes,
3035
+ opts);
3036
+ });
3037
+ // Add waits after simultaneous paths with series in them.
3038
+ order = addAfterSeriesWaits(order, opts.afterSeriesWait || 0);
3039
+ // We now have a list of either TimelinePath objects or series that need to
3040
+ // be converted to TimelinePath objects. Convert everything to paths.
3041
+ var paths = buildPathsFromOrder(order,
3042
+ opts.duration);
3043
+ // Sync simultaneous paths
3044
+ paths.forEach(function (simultaneousPaths) {
3045
+ syncSimultaneousPaths(simultaneousPaths);
3046
+ });
3047
+ // We have a set of paths. Create the timeline, and play it.
3048
+ this.sonification.timeline = new Timeline({
3049
+ paths: paths,
3050
+ onEnd: opts.onEnd
3051
+ });
3052
+ this.sonification.timeline.play();
3053
+ }
3054
+ /**
3055
+ * Get a list of the points currently under cursor.
3056
+ *
3057
+ * @requires module:modules/sonification
3058
+ *
3059
+ * @function Highcharts.Chart#getCurrentSonifyPoints
3060
+ *
3061
+ * @return {Array<Highcharts.Point>}
3062
+ * The points currently under the cursor.
3063
+ */
3064
+ function getCurrentPoints() {
3065
+ var cursorObj;
3066
+ if (this.sonification.timeline) {
3067
+ cursorObj = this.sonification.timeline.getCursor(); // Cursor per pathID
3068
+ return Object.keys(cursorObj).map(function (path) {
3069
+ // Get the event objects under cursor for each path
3070
+ return cursorObj[path].options.eventObject;
3071
+ }).filter(function (eventObj) {
3072
+ // Return the events that are points
3073
+ return eventObj instanceof Point;
3074
+ });
3075
+ }
3076
+ return [];
3077
+ }
3078
+ /**
3079
+ * Set the cursor to a point or set of points in different series.
3080
+ *
3081
+ * @requires module:modules/sonification
3082
+ *
3083
+ * @function Highcharts.Chart#setSonifyCursor
3084
+ *
3085
+ * @param {Highcharts.Point|Array<Highcharts.Point>} points
3086
+ * The point or points to set the cursor to. If setting multiple points
3087
+ * under the cursor, the points have to be in different series that are
3088
+ * being played simultaneously.
3089
+ */
3090
+ function setCursor(points) {
3091
+ var timeline = this.sonification.timeline;
3092
+ if (timeline) {
3093
+ splat(points).forEach(function (point) {
3094
+ // We created the events with the ID of the points, which makes
3095
+ // this easy. Just call setCursor for each ID.
3096
+ timeline.setCursor(point.id);
3097
+ });
3098
+ }
3099
+ }
3100
+ /**
3101
+ * Pause the running sonification.
3102
+ *
3103
+ * @requires module:modules/sonification
3104
+ *
3105
+ * @function Highcharts.Chart#pauseSonify
3106
+ *
3107
+ * @param {boolean} [fadeOut=true]
3108
+ * Fade out as we pause to avoid clicks.
3109
+ *
3110
+ * @return {void}
3111
+ */
3112
+ function pause(fadeOut) {
3113
+ if (this.sonification.timeline) {
3114
+ this.sonification.timeline.pause(pick(fadeOut, true));
3115
+ }
3116
+ else if (this.sonification.currentlyPlayingPoint) {
3117
+ this.sonification.currentlyPlayingPoint.cancelSonify(fadeOut);
3118
+ }
3119
+ }
3120
+ /**
3121
+ * Resume the currently running sonification. Requires series.sonify or
3122
+ * chart.sonify to have been played at some point earlier.
3123
+ *
3124
+ * @requires module:modules/sonification
3125
+ *
3126
+ * @function Highcharts.Chart#resumeSonify
3127
+ *
3128
+ * @param {Function} onEnd
3129
+ * Callback to call when play finished.
3130
+ *
3131
+ * @return {void}
3132
+ */
3133
+ function resume(onEnd) {
3134
+ if (this.sonification.timeline) {
3135
+ this.sonification.timeline.play(onEnd);
3136
+ }
3137
+ }
3138
+ /**
3139
+ * Play backwards from cursor. Requires series.sonify or chart.sonify to have
3140
+ * been played at some point earlier.
3141
+ *
3142
+ * @requires module:modules/sonification
3143
+ *
3144
+ * @function Highcharts.Chart#rewindSonify
3145
+ *
3146
+ * @param {Function} onEnd
3147
+ * Callback to call when play finished.
3148
+ *
3149
+ * @return {void}
3150
+ */
3151
+ function rewind(onEnd) {
3152
+ if (this.sonification.timeline) {
3153
+ this.sonification.timeline.rewind(onEnd);
3154
+ }
3155
+ }
3156
+ /**
3157
+ * Cancel current sonification and reset cursor.
3158
+ *
3159
+ * @requires module:modules/sonification
3160
+ *
3161
+ * @function Highcharts.Chart#cancelSonify
3162
+ *
3163
+ * @param {boolean} [fadeOut=true]
3164
+ * Fade out as we pause to avoid clicks.
3165
+ *
3166
+ * @return {void}
3167
+ */
3168
+ function cancel(fadeOut) {
3169
+ this.pauseSonify(fadeOut);
3170
+ this.resetSonifyCursor();
3171
+ }
3172
+ /**
3173
+ * Reset cursor to start. Requires series.sonify or chart.sonify to have been
3174
+ * played at some point earlier.
3175
+ *
3176
+ * @requires module:modules/sonification
3177
+ *
3178
+ * @function Highcharts.Chart#resetSonifyCursor
3179
+ *
3180
+ * @return {void}
3181
+ */
3182
+ function resetCursor() {
3183
+ if (this.sonification.timeline) {
3184
+ this.sonification.timeline.resetCursor();
3185
+ }
3186
+ }
3187
+ /**
3188
+ * Reset cursor to end. Requires series.sonify or chart.sonify to have been
3189
+ * played at some point earlier.
3190
+ *
3191
+ * @requires module:modules/sonification
3192
+ *
3193
+ * @function Highcharts.Chart#resetSonifyCursorEnd
3194
+ *
3195
+ * @return {void}
3196
+ */
3197
+ function resetCursorEnd() {
3198
+ if (this.sonification.timeline) {
3199
+ this.sonification.timeline.resetCursorEnd();
3200
+ }
3201
+ }
3202
+ var composedClasses = [];
3203
+ /**
3204
+ * @private
3205
+ * @todo move to composition namespace with all functions
3206
+ */
3207
+ function compose(ChartClass) {
3208
+ if (composedClasses.indexOf(ChartClass) === -1) {
3209
+ composedClasses.push(ChartClass);
3210
+ var chartProto = ChartClass.prototype;
3211
+ extend(chartProto, {
3212
+ sonify: chartSonify,
3213
+ pauseSonify: pause,
3214
+ resumeSonify: resume,
3215
+ rewindSonify: rewind,
3216
+ cancelSonify: cancel,
3217
+ getCurrentSonifyPoints: getCurrentPoints,
3218
+ setSonifyCursor: setCursor,
3219
+ resetSonifyCursor: resetCursor,
3220
+ resetSonifyCursorEnd: resetCursorEnd
3221
+ });
3222
+ // Prepare charts for sonification on init
3223
+ addEvent(ChartClass, 'init', function () {
3224
+ this.sonification = {};
3225
+ });
3226
+ // Update with chart/series/point updates
3227
+ addEvent(ChartClass, 'update', function (e) {
3228
+ var newOptions = e.options.sonification;
3229
+ if (newOptions) {
3230
+ merge(true, this.options.sonification, newOptions);
3231
+ }
3232
+ });
3233
+ }
3234
+ return ChartClass;
3235
+ }
3236
+ /* *
3237
+ *
3238
+ * Default Export
3239
+ *
3240
+ * */
3241
+ var ChartSonify = {
3242
+ chartSonify: chartSonify,
3243
+ compose: compose,
3244
+ pause: pause,
3245
+ resume: resume,
3246
+ rewind: rewind,
3247
+ cancel: cancel,
3248
+ getCurrentPoints: getCurrentPoints,
3249
+ setCursor: setCursor,
3250
+ resetCursor: resetCursor,
3251
+ resetCursorEnd: resetCursorEnd
3252
+ };
3253
+ /* *
3254
+ *
3255
+ * API Declarations
3256
+ *
3257
+ * */
3258
+ /**
3259
+ * An Earcon configuration, specifying an Earcon and when to play it.
3260
+ *
3261
+ * @requires module:modules/sonification
3262
+ *
3263
+ * @interface Highcharts.EarconConfiguration
3264
+ */ /**
3265
+ * An Earcon instance.
3266
+ * @name Highcharts.EarconConfiguration#earcon
3267
+ * @type {Highcharts.Earcon}
3268
+ */ /**
3269
+ * The ID of the point to play the Earcon on.
3270
+ * @name Highcharts.EarconConfiguration#onPoint
3271
+ * @type {string|undefined}
3272
+ */ /**
3273
+ * A function to determine whether or not to play this earcon on a point. The
3274
+ * function is called for every point, receiving that point as parameter. It
3275
+ * should return either a boolean indicating whether or not to play the earcon,
3276
+ * or a new Earcon instance - in which case the new Earcon will be played.
3277
+ * @name Highcharts.EarconConfiguration#condition
3278
+ * @type {Function|undefined}
3279
+ */
3280
+ /**
3281
+ * Options for sonifying a chart.
3282
+ *
3283
+ * @requires module:modules/sonification
3284
+ *
3285
+ * @interface Highcharts.SonificationOptions
3286
+ */ /**
3287
+ * Duration for sonifying the entire chart. The duration is distributed across
3288
+ * the different series intelligently, but does not take earcons into account.
3289
+ * It is also possible to set the duration explicitly per series, using
3290
+ * `seriesOptions`. Note that points may continue to play after the duration has
3291
+ * passed, but no new points will start playing.
3292
+ * @name Highcharts.SonificationOptions#duration
3293
+ * @type {number}
3294
+ */ /**
3295
+ * Define the order to play the series in. This can be given as a string, or an
3296
+ * array specifying a custom ordering. If given as a string, valid values are
3297
+ * `sequential` - where each series is played in order - or `simultaneous`,
3298
+ * where all series are played at once. For custom ordering, supply an array as
3299
+ * the order. Each element in the array can be either a string with a series ID,
3300
+ * an Earcon object, or an object with a numeric `silentWait` property
3301
+ * designating a number of milliseconds to wait before continuing. Each element
3302
+ * of the array will be played in order. To play elements simultaneously, group
3303
+ * the elements in an array.
3304
+ * @name Highcharts.SonificationOptions#order
3305
+ * @type {string|Array<string|Highcharts.Earcon|Array<string|Highcharts.Earcon>>}
3306
+ */ /**
3307
+ * The axis to use for when to play the points. Can be a string with a data
3308
+ * property (e.g. `x`), or a function. If it is a function, this function
3309
+ * receives the point as argument, and should return a numeric value. The points
3310
+ * with the lowest numeric values are then played first, and the time between
3311
+ * points will be proportional to the distance between the numeric values. This
3312
+ * option can not be overridden per series.
3313
+ * @name Highcharts.SonificationOptions#pointPlayTime
3314
+ * @type {string|Function}
3315
+ */ /**
3316
+ * Milliseconds of silent waiting to add between series. Note that waiting time
3317
+ * is considered part of the sonify duration.
3318
+ * @name Highcharts.SonificationOptions#afterSeriesWait
3319
+ * @type {number|undefined}
3320
+ */ /**
3321
+ * Options as given to `series.sonify` to override options per series. If the
3322
+ * option is supplied as an array of options objects, the `id` property of the
3323
+ * object should correspond to the series' id. If the option is supplied as a
3324
+ * single object, the options apply to all series.
3325
+ * @name Highcharts.SonificationOptions#seriesOptions
3326
+ * @type {Object|Array<object>|undefined}
3327
+ */ /**
3328
+ * The instrument definitions for the points in this chart.
3329
+ * @name Highcharts.SonificationOptions#instruments
3330
+ * @type {Array<Highcharts.PointInstrumentObject>|undefined}
3331
+ */ /**
3332
+ * Earcons to add to the chart. Note that earcons can also be added per series
3333
+ * using `seriesOptions`.
3334
+ * @name Highcharts.SonificationOptions#earcons
3335
+ * @type {Array<Highcharts.EarconConfiguration>|undefined}
3336
+ */ /**
3337
+ * Optionally provide the minimum/maximum data values for the points. If this is
3338
+ * not supplied, it is calculated from all points in the chart on demand. This
3339
+ * option is supplied in the following format, as a map of point data properties
3340
+ * to objects with min/max values:
3341
+ * ```js
3342
+ * dataExtremes: {
3343
+ * y: {
3344
+ * min: 0,
3345
+ * max: 100
3346
+ * },
3347
+ * z: {
3348
+ * min: -10,
3349
+ * max: 10
3350
+ * }
3351
+ * // Properties used and not provided are calculated on demand
3352
+ * }
3353
+ * ```
3354
+ * @name Highcharts.SonificationOptions#dataExtremes
3355
+ * @type {Highcharts.Dictionary<Highcharts.RangeObject>|undefined}
3356
+ */ /**
3357
+ * Callback before a series is played.
3358
+ * @name Highcharts.SonificationOptions#onSeriesStart
3359
+ * @type {Function|undefined}
3360
+ */ /**
3361
+ * Callback after a series has finished playing.
3362
+ * @name Highcharts.SonificationOptions#onSeriesEnd
3363
+ * @type {Function|undefined}
3364
+ */ /**
3365
+ * Callback after the chart has played.
3366
+ * @name Highcharts.SonificationOptions#onEnd
3367
+ * @type {Function|undefined}
3368
+ */
3369
+ /**
3370
+ * Options for sonifying a series.
3371
+ *
3372
+ * @requires module:modules/sonification
3373
+ *
3374
+ * @interface Highcharts.SonifySeriesOptionsObject
3375
+ */ /**
3376
+ * The duration for playing the points. Note that points might continue to play
3377
+ * after the duration has passed, but no new points will start playing.
3378
+ * @name Highcharts.SonifySeriesOptionsObject#duration
3379
+ * @type {number}
3380
+ */ /**
3381
+ * The axis to use for when to play the points. Can be a string with a data
3382
+ * property (e.g. `x`), or a function. If it is a function, this function
3383
+ * receives the point as argument, and should return a numeric value. The points
3384
+ * with the lowest numeric values are then played first, and the time between
3385
+ * points will be proportional to the distance between the numeric values.
3386
+ * @name Highcharts.SonifySeriesOptionsObject#pointPlayTime
3387
+ * @type {string|Function}
3388
+ */ /**
3389
+ * The instrument definitions for the points in this series.
3390
+ * @name Highcharts.SonifySeriesOptionsObject#instruments
3391
+ * @type {Array<Highcharts.PointInstrumentObject>}
3392
+ */ /**
3393
+ * Earcons to add to the series.
3394
+ * @name Highcharts.SonifySeriesOptionsObject#earcons
3395
+ * @type {Array<Highcharts.EarconConfiguration>|undefined}
3396
+ */ /**
3397
+ * Optionally provide the minimum/maximum data values for the points. If this is
3398
+ * not supplied, it is calculated from all points in the chart on demand. This
3399
+ * option is supplied in the following format, as a map of point data properties
3400
+ * to objects with min/max values:
3401
+ * ```js
3402
+ * dataExtremes: {
3403
+ * y: {
3404
+ * min: 0,
3405
+ * max: 100
3406
+ * },
3407
+ * z: {
3408
+ * min: -10,
3409
+ * max: 10
3410
+ * }
3411
+ * // Properties used and not provided are calculated on demand
3412
+ * }
3413
+ * ```
3414
+ * @name Highcharts.SonifySeriesOptionsObject#dataExtremes
3415
+ * @type {Highcharts.Dictionary<Highcharts.RangeObject>|undefined}
3416
+ */ /**
3417
+ * Callback before a point is played.
3418
+ * @name Highcharts.SonifySeriesOptionsObject#onPointStart
3419
+ * @type {Function|undefined}
3420
+ */ /**
3421
+ * Callback after a point has finished playing.
3422
+ * @name Highcharts.SonifySeriesOptionsObject#onPointEnd
3423
+ * @type {Function|undefined}
3424
+ */ /**
3425
+ * Callback after the series has played.
3426
+ * @name Highcharts.SonifySeriesOptionsObject#onEnd
3427
+ * @type {Function|undefined}
3428
+ */
3429
+ ''; // detach doclets above
3430
+
3431
+ return ChartSonify;
3432
+ });
3433
+ _registerModule(_modules, 'Extensions/Sonification/PointSonify.js', [_modules['Extensions/Sonification/Instrument.js'], _modules['Core/Utilities.js'], _modules['Extensions/Sonification/SonificationUtilities.js']], function (Instrument, U, SU) {
3434
+ /* *
3435
+ *
3436
+ * (c) 2009-2021 Øystein Moseng
3437
+ *
3438
+ * Code for sonifying single points.
3439
+ *
3440
+ * License: www.highcharts.com/license
3441
+ *
3442
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
3443
+ *
3444
+ * */
3445
+ var error = U.error,
3446
+ merge = U.merge,
3447
+ pick = U.pick;
3448
+ /* *
3449
+ *
3450
+ * Constants
3451
+ *
3452
+ * */
3453
+ var composedClasses = [];
3454
+ // Defaults for the instrument options
3455
+ // NOTE: Also change defaults in Highcharts.PointInstrumentOptionsObject if
3456
+ // making changes here.
3457
+ var defaultInstrumentOptions = {
3458
+ minDuration: 20,
3459
+ maxDuration: 2000,
3460
+ minVolume: 0.1,
3461
+ maxVolume: 1,
3462
+ minPan: -1,
3463
+ maxPan: 1,
3464
+ minFrequency: 220,
3465
+ maxFrequency: 2200
3466
+ };
3467
+ /* eslint-disable valid-jsdoc */
3468
+ /* *
3469
+ *
3470
+ * Composition
3471
+ *
3472
+ * */
3473
+ /**
3474
+ * @private
3475
+ */
3476
+ var PointSonify;
3477
+ (function (PointSonify) {
3478
+ /* *
3479
+ *
3480
+ * Declarations
3481
+ *
3482
+ * */
3483
+ /* *
3484
+ *
3485
+ * Functions
3486
+ *
3487
+ * */
3488
+ /**
3489
+ * Extends the axis with ordinal support.
3490
+ *
3491
+ * @private
3492
+ *
3493
+ * @param PointClass
3494
+ * Point class to extend.
3495
+ */
3496
+ function compose(PointClass) {
3497
+ if (composedClasses.indexOf(PointClass) === -1) {
3498
+ composedClasses.push(PointClass);
3499
+ var pointProto = PointClass.prototype;
3500
+ pointProto.sonify = pointSonify;
3501
+ pointProto.cancelSonify = pointCancelSonify;
3502
+ }
3503
+ return PointClass;
3504
+ }
3505
+ PointSonify.compose = compose;
3506
+ /**
3507
+ * Sonify a single point.
3508
+ *
3509
+ * @sample highcharts/sonification/point-basic/
3510
+ * Click on points to sonify
3511
+ * @sample highcharts/sonification/point-advanced/
3512
+ * Sonify bubbles
3513
+ *
3514
+ * @requires module:modules/sonification
3515
+ *
3516
+ * @function Highcharts.Point#sonify
3517
+ *
3518
+ * @param {Highcharts.PointSonifyOptionsObject} options
3519
+ * Options for the sonification of the point.
3520
+ */
3521
+ function pointSonify(options) {
3522
+ var point = this,
3523
+ chart = point.series.chart,
3524
+ masterVolume = pick(options.masterVolume,
3525
+ chart.options.sonification &&
3526
+ chart.options.sonification.masterVolume),
3527
+ dataExtremes = options.dataExtremes || {},
3528
+ // Get the value to pass to instrument.play from the mapping value
3529
+ // passed in.
3530
+ getMappingValue = function (value,
3531
+ makeFunction,
3532
+ allowedExtremes) {
3533
+ // Function. Return new function if we try to use callback,
3534
+ // otherwise call it now and return result.
3535
+ if (typeof value === 'function') {
3536
+ return makeFunction ?
3537
+ function (time) {
3538
+ return value(point,
3539
+ dataExtremes,
3540
+ time);
3541
+ } :
3542
+ value(point, dataExtremes);
3543
+ }
3544
+ // String, this is a data prop. Potentially with negative
3545
+ // polarity.
3546
+ if (typeof value === 'string') {
3547
+ var hasInvertedPolarity = value.charAt(0) === '-';
3548
+ var dataProp = hasInvertedPolarity ?
3549
+ value.slice(1) : value;
3550
+ var pointValue = pick(point[dataProp],
3551
+ point.options[dataProp]);
3552
+ // Find data extremes if we don't have them
3553
+ dataExtremes[dataProp] = dataExtremes[dataProp] ||
3554
+ SU.calculateDataExtremes(point.series.chart, dataProp);
3555
+ // Find the value
3556
+ return SU.virtualAxisTranslate(pointValue, dataExtremes[dataProp], allowedExtremes, hasInvertedPolarity);
3557
+ }
3558
+ // Fixed number or something else weird, just use that
3559
+ return value;
3560
+ };
3561
+ // Register playing point on chart
3562
+ chart.sonification.currentlyPlayingPoint = point;
3563
+ // Keep track of instruments playing
3564
+ point.sonification = point.sonification || {};
3565
+ point.sonification.instrumentsPlaying =
3566
+ point.sonification.instrumentsPlaying || {};
3567
+ // Register signal handler for the point
3568
+ var signalHandler = point.sonification.signalHandler =
3569
+ point.sonification.signalHandler ||
3570
+ new SU.SignalHandler(['onEnd']);
3571
+ signalHandler.clearSignalCallbacks();
3572
+ signalHandler.registerSignalCallbacks({ onEnd: options.onEnd });
3573
+ // If we have a null point or invisible point, just return
3574
+ if (point.isNull || !point.visible || !point.series.visible) {
3575
+ signalHandler.emitSignal('onEnd');
3576
+ return;
3577
+ }
3578
+ // Go through instruments and play them
3579
+ options.instruments.forEach(function (instrumentDefinition) {
3580
+ var instrument = (typeof instrumentDefinition.instrument === 'string') ?
3581
+ Instrument.definitions[instrumentDefinition.instrument] :
3582
+ instrumentDefinition.instrument,
3583
+ mapping = instrumentDefinition.instrumentMapping || {},
3584
+ extremes = merge(defaultInstrumentOptions,
3585
+ instrumentDefinition.instrumentOptions),
3586
+ id = instrument.id,
3587
+ onEnd = function (cancelled) {
3588
+ // Instrument on end
3589
+ if (instrumentDefinition.onEnd) {
3590
+ instrumentDefinition.onEnd.apply(this,
3591
+ arguments);
3592
+ }
3593
+ // Remove currently playing point reference on chart
3594
+ if (chart.sonification &&
3595
+ chart.sonification.currentlyPlayingPoint) {
3596
+ delete chart.sonification.currentlyPlayingPoint;
3597
+ }
3598
+ // Remove reference from instruments playing
3599
+ if (point.sonification &&
3600
+ point.sonification.instrumentsPlaying) {
3601
+ delete point.sonification.instrumentsPlaying[id];
3602
+ // This was the last instrument?
3603
+ if (!Object.keys(point.sonification.instrumentsPlaying).length) {
3604
+ signalHandler.emitSignal('onEnd', cancelled);
3605
+ }
3606
+ }
3607
+ };
3608
+ // Play the note on the instrument
3609
+ if (instrument && instrument.play) {
3610
+ if (typeof masterVolume !== 'undefined') {
3611
+ instrument.setMasterVolume(masterVolume);
3612
+ }
3613
+ point.sonification.instrumentsPlaying[instrument.id] =
3614
+ instrument;
3615
+ instrument.play({
3616
+ frequency: getMappingValue(mapping.frequency, true, {
3617
+ min: extremes.minFrequency,
3618
+ max: extremes.maxFrequency
3619
+ }),
3620
+ duration: getMappingValue(mapping.duration, false, { min: extremes.minDuration, max: extremes.maxDuration }),
3621
+ pan: getMappingValue(mapping.pan, true, { min: extremes.minPan, max: extremes.maxPan }),
3622
+ volume: getMappingValue(mapping.volume, true, { min: extremes.minVolume, max: extremes.maxVolume }),
3623
+ onEnd: onEnd,
3624
+ minFrequency: extremes.minFrequency,
3625
+ maxFrequency: extremes.maxFrequency
3626
+ });
3627
+ }
3628
+ else {
3629
+ error(30);
3630
+ }
3631
+ });
3632
+ }
3633
+ /**
3634
+ * Cancel sonification of a point. Calls onEnd functions.
3635
+ *
3636
+ * @requires module:modules/sonification
3637
+ *
3638
+ * @function Highcharts.Point#cancelSonify
3639
+ *
3640
+ * @param {boolean} [fadeOut=false]
3641
+ * Whether or not to fade out as we stop. If false, the points are
3642
+ * cancelled synchronously.
3643
+ *
3644
+ */
3645
+ function pointCancelSonify(fadeOut) {
3646
+ var playing = (this.sonification && this.sonification.instrumentsPlaying),
3647
+ instrIds = playing && Object.keys(playing);
3648
+ if (instrIds && instrIds.length) {
3649
+ instrIds.forEach(function (instr) {
3650
+ playing[instr].stop(!fadeOut, null, 'cancelled');
3651
+ });
3652
+ this.sonification.instrumentsPlaying = {};
3653
+ this.sonification.signalHandler.emitSignal('onEnd', 'cancelled');
3654
+ }
3655
+ }
3656
+ })(PointSonify || (PointSonify = {}));
3657
+ /* *
3658
+ *
3659
+ * Default Export
3660
+ *
3661
+ * */
3662
+ /* *
3663
+ *
3664
+ * API Declarations
3665
+ *
3666
+ * */
3667
+ /**
3668
+ * Define the parameter mapping for an instrument.
3669
+ *
3670
+ * @requires module:modules/sonification
3671
+ *
3672
+ * @interface Highcharts.PointInstrumentMappingObject
3673
+ */ /**
3674
+ * Define the volume of the instrument. This can be a string with a data
3675
+ * property name, e.g. `'y'`, in which case this data property is used to define
3676
+ * the volume relative to the `y`-values of the other points. A higher `y` value
3677
+ * would then result in a higher volume. Alternatively, `'-y'` can be used,
3678
+ * which inverts the polarity, so that a higher `y` value results in a lower
3679
+ * volume. This option can also be a fixed number or a function. If it is a
3680
+ * function, this function is called in regular intervals while the note is
3681
+ * playing. It receives three arguments: The point, the dataExtremes, and the
3682
+ * current relative time - where 0 is the beginning of the note and 1 is the
3683
+ * end. The function should return the volume of the note as a number between
3684
+ * 0 and 1.
3685
+ * @name Highcharts.PointInstrumentMappingObject#volume
3686
+ * @type {string|number|Function}
3687
+ */ /**
3688
+ * Define the duration of the notes for this instrument. This can be a string
3689
+ * with a data property name, e.g. `'y'`, in which case this data property is
3690
+ * used to define the duration relative to the `y`-values of the other points. A
3691
+ * higher `y` value would then result in a longer duration. Alternatively,
3692
+ * `'-y'` can be used, in which case the polarity is inverted, and a higher
3693
+ * `y` value would result in a shorter duration. This option can also be a
3694
+ * fixed number or a function. If it is a function, this function is called
3695
+ * once before the note starts playing, and should return the duration in
3696
+ * milliseconds. It receives two arguments: The point, and the dataExtremes.
3697
+ * @name Highcharts.PointInstrumentMappingObject#duration
3698
+ * @type {string|number|Function}
3699
+ */ /**
3700
+ * Define the panning of the instrument. This can be a string with a data
3701
+ * property name, e.g. `'x'`, in which case this data property is used to define
3702
+ * the panning relative to the `x`-values of the other points. A higher `x`
3703
+ * value would then result in a higher panning value (panned further to the
3704
+ * right). Alternatively, `'-x'` can be used, in which case the polarity is
3705
+ * inverted, and a higher `x` value would result in a lower panning value
3706
+ * (panned further to the left). This option can also be a fixed number or a
3707
+ * function. If it is a function, this function is called in regular intervals
3708
+ * while the note is playing. It receives three arguments: The point, the
3709
+ * dataExtremes, and the current relative time - where 0 is the beginning of
3710
+ * the note and 1 is the end. The function should return the panning of the
3711
+ * note as a number between -1 and 1.
3712
+ * @name Highcharts.PointInstrumentMappingObject#pan
3713
+ * @type {string|number|Function|undefined}
3714
+ */ /**
3715
+ * Define the frequency of the instrument. This can be a string with a data
3716
+ * property name, e.g. `'y'`, in which case this data property is used to define
3717
+ * the frequency relative to the `y`-values of the other points. A higher `y`
3718
+ * value would then result in a higher frequency. Alternatively, `'-y'` can be
3719
+ * used, in which case the polarity is inverted, and a higher `y` value would
3720
+ * result in a lower frequency. This option can also be a fixed number or a
3721
+ * function. If it is a function, this function is called in regular intervals
3722
+ * while the note is playing. It receives three arguments: The point, the
3723
+ * dataExtremes, and the current relative time - where 0 is the beginning of
3724
+ * the note and 1 is the end. The function should return the frequency of the
3725
+ * note as a number (in Hz).
3726
+ * @name Highcharts.PointInstrumentMappingObject#frequency
3727
+ * @type {string|number|Function}
3728
+ */
3729
+ /**
3730
+ * @requires module:modules/sonification
3731
+ *
3732
+ * @interface Highcharts.PointInstrumentOptionsObject
3733
+ */ /**
3734
+ * The minimum duration for a note when using a data property for duration. Can
3735
+ * be overridden by using either a fixed number or a function for
3736
+ * instrumentMapping.duration. Defaults to 20.
3737
+ * @name Highcharts.PointInstrumentOptionsObject#minDuration
3738
+ * @type {number|undefined}
3739
+ */ /**
3740
+ * The maximum duration for a note when using a data property for duration. Can
3741
+ * be overridden by using either a fixed number or a function for
3742
+ * instrumentMapping.duration. Defaults to 2000.
3743
+ * @name Highcharts.PointInstrumentOptionsObject#maxDuration
3744
+ * @type {number|undefined}
3745
+ */ /**
3746
+ * The minimum pan value for a note when using a data property for panning. Can
3747
+ * be overridden by using either a fixed number or a function for
3748
+ * instrumentMapping.pan. Defaults to -1 (fully left).
3749
+ * @name Highcharts.PointInstrumentOptionsObject#minPan
3750
+ * @type {number|undefined}
3751
+ */ /**
3752
+ * The maximum pan value for a note when using a data property for panning. Can
3753
+ * be overridden by using either a fixed number or a function for
3754
+ * instrumentMapping.pan. Defaults to 1 (fully right).
3755
+ * @name Highcharts.PointInstrumentOptionsObject#maxPan
3756
+ * @type {number|undefined}
3757
+ */ /**
3758
+ * The minimum volume for a note when using a data property for volume. Can be
3759
+ * overridden by using either a fixed number or a function for
3760
+ * instrumentMapping.volume. Defaults to 0.1.
3761
+ * @name Highcharts.PointInstrumentOptionsObject#minVolume
3762
+ * @type {number|undefined}
3763
+ */ /**
3764
+ * The maximum volume for a note when using a data property for volume. Can be
3765
+ * overridden by using either a fixed number or a function for
3766
+ * instrumentMapping.volume. Defaults to 1.
3767
+ * @name Highcharts.PointInstrumentOptionsObject#maxVolume
3768
+ * @type {number|undefined}
3769
+ */ /**
3770
+ * The minimum frequency for a note when using a data property for frequency.
3771
+ * Can be overridden by using either a fixed number or a function for
3772
+ * instrumentMapping.frequency. Defaults to 220.
3773
+ * @name Highcharts.PointInstrumentOptionsObject#minFrequency
3774
+ * @type {number|undefined}
3775
+ */ /**
3776
+ * The maximum frequency for a note when using a data property for frequency.
3777
+ * Can be overridden by using either a fixed number or a function for
3778
+ * instrumentMapping.frequency. Defaults to 2200.
3779
+ * @name Highcharts.PointInstrumentOptionsObject#maxFrequency
3780
+ * @type {number|undefined}
3781
+ */
3782
+ /**
3783
+ * An instrument definition for a point, specifying the instrument to play and
3784
+ * how to play it.
3785
+ *
3786
+ * @interface Highcharts.PointInstrumentObject
3787
+ */ /**
3788
+ * An Instrument instance or the name of the instrument in the
3789
+ * Highcharts.sonification.instruments map.
3790
+ * @name Highcharts.PointInstrumentObject#instrument
3791
+ * @type {Highcharts.Instrument|string}
3792
+ */ /**
3793
+ * Mapping of instrument parameters for this instrument.
3794
+ * @name Highcharts.PointInstrumentObject#instrumentMapping
3795
+ * @type {Highcharts.PointInstrumentMappingObject}
3796
+ */ /**
3797
+ * Options for this instrument.
3798
+ * @name Highcharts.PointInstrumentObject#instrumentOptions
3799
+ * @type {Highcharts.PointInstrumentOptionsObject|undefined}
3800
+ */ /**
3801
+ * Callback to call when the instrument has stopped playing.
3802
+ * @name Highcharts.PointInstrumentObject#onEnd
3803
+ * @type {Function|undefined}
3804
+ */
3805
+ /**
3806
+ * Options for sonifying a point.
3807
+ * @interface Highcharts.PointSonifyOptionsObject
3808
+ */ /**
3809
+ * The instrument definitions for this point.
3810
+ * @name Highcharts.PointSonifyOptionsObject#instruments
3811
+ * @type {Array<Highcharts.PointInstrumentObject>}
3812
+ */ /**
3813
+ * Optionally provide the minimum/maximum values for the points. If this is not
3814
+ * supplied, it is calculated from the points in the chart on demand. This
3815
+ * option is supplied in the following format, as a map of point data properties
3816
+ * to objects with min/max values:
3817
+ * ```js
3818
+ * dataExtremes: {
3819
+ * y: {
3820
+ * min: 0,
3821
+ * max: 100
3822
+ * },
3823
+ * z: {
3824
+ * min: -10,
3825
+ * max: 10
3826
+ * }
3827
+ * // Properties used and not provided are calculated on demand
3828
+ * }
3829
+ * ```
3830
+ * @name Highcharts.PointSonifyOptionsObject#dataExtremes
3831
+ * @type {object|undefined}
3832
+ */ /**
3833
+ * Callback called when the sonification has finished.
3834
+ * @name Highcharts.PointSonifyOptionsObject#onEnd
3835
+ * @type {Function|undefined}
3836
+ */
3837
+ (''); // detach doclets above
3838
+
3839
+ return PointSonify;
3840
+ });
3841
+ _registerModule(_modules, 'masters/modules/sonification.src.js', [_modules['Core/Globals.js'], _modules['Extensions/Sonification/ChartSonify.js'], _modules['Extensions/Sonification/Earcon.js'], _modules['Extensions/Sonification/Instrument.js'], _modules['Extensions/Sonification/PointSonify.js'], _modules['Extensions/Sonification/SeriesSonify.js'], _modules['Extensions/Sonification/Sonification.js'], _modules['Extensions/Sonification/Timeline.js'], _modules['Extensions/Sonification/TimelineEvent.js'], _modules['Extensions/Sonification/TimelinePath.js']], function (Highcharts, ChartSonify, Earcon, Instrument, PointSonify, SeriesSonify, Sonification, Timeline, TimelineEvent, TimelinePath) {
3842
+
3843
+ var __assign = (this && this.__assign) || function () {
3844
+ __assign = Object.assign || function(t) {
3845
+ for (var s,
3846
+ i = 1,
3847
+ n = arguments.length; i < n; i++) {
3848
+ s = arguments[i];
3849
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
3850
+ t[p] = s[p];
3851
+ }
3852
+ return t;
3853
+ };
3854
+ return __assign.apply(this, arguments);
3855
+ };
3856
+ var G = Highcharts;
3857
+ G.sonification = __assign(__assign({}, Sonification), { instruments: Instrument.definitions, Earcon: Earcon,
3858
+ Instrument: Instrument,
3859
+ Timeline: Timeline,
3860
+ TimelineEvent: TimelineEvent,
3861
+ TimelinePath: TimelinePath });
3862
+ G.Earcon = Earcon;
3863
+ G.Instrument = Instrument;
3864
+ ChartSonify.compose(G.Chart);
3865
+ SeriesSonify.compose(G.Series);
3866
+ PointSonify.compose(G.Point);
3867
+
3868
+ });
3869
+ }));