@ntlab/ntjs-assets 2.41.0 → 2.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1268) hide show
  1. package/assets/js/cdn.json +1 -1
  2. package/assets/js/highcharts/README.md +8 -17
  3. package/assets/js/highcharts/css/highcharts.css +12 -5
  4. package/assets/js/highcharts/es-modules/Accessibility/A11yI18n.js +1 -1
  5. package/assets/js/highcharts/es-modules/Accessibility/Accessibility.js +2 -2
  6. package/assets/js/highcharts/es-modules/Accessibility/AccessibilityComponent.js +1 -1
  7. package/assets/js/highcharts/es-modules/Accessibility/Components/AnnotationsA11y.js +1 -1
  8. package/assets/js/highcharts/es-modules/Accessibility/Components/ContainerComponent.js +1 -1
  9. package/assets/js/highcharts/es-modules/Accessibility/Components/InfoRegionsComponent.js +1 -1
  10. package/assets/js/highcharts/es-modules/Accessibility/Components/LegendComponent.js +1 -1
  11. package/assets/js/highcharts/es-modules/Accessibility/Components/MenuComponent.js +6 -1
  12. package/assets/js/highcharts/es-modules/Accessibility/Components/NavigatorComponent.js +1 -1
  13. package/assets/js/highcharts/es-modules/Accessibility/Components/RangeSelectorComponent.js +1 -1
  14. package/assets/js/highcharts/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +1 -1
  15. package/assets/js/highcharts/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.js +1 -1
  16. package/assets/js/highcharts/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +1 -1
  17. package/assets/js/highcharts/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +3 -2
  18. package/assets/js/highcharts/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +9 -8
  19. package/assets/js/highcharts/es-modules/Accessibility/Components/ZoomComponent.js +1 -1
  20. package/assets/js/highcharts/es-modules/Accessibility/FocusBorder.js +1 -1
  21. package/assets/js/highcharts/es-modules/Accessibility/HighContrastMode.js +1 -1
  22. package/assets/js/highcharts/es-modules/Accessibility/HighContrastTheme.js +1 -1
  23. package/assets/js/highcharts/es-modules/Accessibility/KeyboardNavigation.js +4 -2
  24. package/assets/js/highcharts/es-modules/Accessibility/KeyboardNavigationHandler.js +1 -1
  25. package/assets/js/highcharts/es-modules/Accessibility/Options/A11yDefaults.js +4 -3
  26. package/assets/js/highcharts/es-modules/Accessibility/Options/DeprecatedOptions.js +1 -1
  27. package/assets/js/highcharts/es-modules/Accessibility/Options/LangDefaults.js +1 -1
  28. package/assets/js/highcharts/es-modules/Accessibility/ProxyElement.js +7 -4
  29. package/assets/js/highcharts/es-modules/Accessibility/ProxyProvider.js +1 -1
  30. package/assets/js/highcharts/es-modules/Accessibility/Utils/Announcer.js +1 -1
  31. package/assets/js/highcharts/es-modules/Accessibility/Utils/ChartUtilities.js +2 -2
  32. package/assets/js/highcharts/es-modules/Accessibility/Utils/DOMElementProvider.js +1 -1
  33. package/assets/js/highcharts/es-modules/Accessibility/Utils/EventProvider.js +1 -1
  34. package/assets/js/highcharts/es-modules/Accessibility/Utils/HTMLUtilities.js +3 -3
  35. package/assets/js/highcharts/es-modules/Core/Animation/AnimationUtilities.js +1 -1
  36. package/assets/js/highcharts/es-modules/Core/Animation/Fx.js +3 -3
  37. package/assets/js/highcharts/es-modules/Core/Axis/Axis.js +31 -19
  38. package/assets/js/highcharts/es-modules/Core/Axis/Axis3DComposition.js +3 -3
  39. package/assets/js/highcharts/es-modules/Core/Axis/Axis3DDefaults.js +1 -1
  40. package/assets/js/highcharts/es-modules/Core/Axis/AxisDefaults.js +29 -29
  41. package/assets/js/highcharts/es-modules/Core/Axis/BrokenAxis.js +3 -3
  42. package/assets/js/highcharts/es-modules/Core/Axis/Color/ColorAxis.js +3 -3
  43. package/assets/js/highcharts/es-modules/Core/Axis/Color/ColorAxisComposition.js +3 -4
  44. package/assets/js/highcharts/es-modules/Core/Axis/Color/ColorAxisDefaults.js +1 -1
  45. package/assets/js/highcharts/es-modules/Core/Axis/Color/ColorAxisLike.js +1 -1
  46. package/assets/js/highcharts/es-modules/Core/Axis/DateTimeAxis.js +1 -1
  47. package/assets/js/highcharts/es-modules/Core/Axis/GridAxis.js +11 -15
  48. package/assets/js/highcharts/es-modules/Core/Axis/LogarithmicAxis.js +1 -1
  49. package/assets/js/highcharts/es-modules/Core/Axis/NavigatorAxisComposition.js +1 -1
  50. package/assets/js/highcharts/es-modules/Core/Axis/OrdinalAxis.js +18 -9
  51. package/assets/js/highcharts/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +2 -1
  52. package/assets/js/highcharts/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js +2 -2
  53. package/assets/js/highcharts/es-modules/Core/Axis/RadialAxis.js +4 -5
  54. package/assets/js/highcharts/es-modules/Core/Axis/RadialAxisDefaults.js +1 -1
  55. package/assets/js/highcharts/es-modules/Core/Axis/ScrollbarAxis.js +4 -6
  56. package/assets/js/highcharts/es-modules/Core/Axis/SolidGaugeAxis.js +1 -1
  57. package/assets/js/highcharts/es-modules/Core/Axis/Stacking/StackItem.js +1 -1
  58. package/assets/js/highcharts/es-modules/Core/Axis/Stacking/StackingAxis.js +3 -3
  59. package/assets/js/highcharts/es-modules/Core/Axis/Tick.js +11 -13
  60. package/assets/js/highcharts/es-modules/Core/Axis/Tick3DComposition.js +1 -1
  61. package/assets/js/highcharts/es-modules/Core/Axis/TreeGrid/TreeGridAxis.js +5 -6
  62. package/assets/js/highcharts/es-modules/Core/Axis/TreeGrid/TreeGridTick.js +4 -4
  63. package/assets/js/highcharts/es-modules/Core/Axis/WaterfallAxis.js +3 -3
  64. package/assets/js/highcharts/es-modules/Core/Axis/ZAxis.js +2 -3
  65. package/assets/js/highcharts/es-modules/Core/Chart/Chart.js +58 -33
  66. package/assets/js/highcharts/es-modules/Core/Chart/Chart3D.js +1 -1
  67. package/assets/js/highcharts/es-modules/Core/Chart/ChartDefaults.js +1 -1
  68. package/assets/js/highcharts/es-modules/Core/Chart/ChartNavigationComposition.js +1 -1
  69. package/assets/js/highcharts/es-modules/Core/Chart/GanttChart.js +1 -1
  70. package/assets/js/highcharts/es-modules/Core/Chart/MapChart.js +1 -1
  71. package/assets/js/highcharts/es-modules/Core/Chart/StockChart.js +8 -12
  72. package/assets/js/highcharts/es-modules/Core/Color/Color.js +37 -9
  73. package/assets/js/highcharts/es-modules/Core/Color/Palettes.js +2 -1
  74. package/assets/js/highcharts/es-modules/Core/Defaults.js +171 -29
  75. package/assets/js/highcharts/es-modules/Core/Foundation.js +1 -1
  76. package/assets/js/highcharts/es-modules/Core/Geometry/CircleUtilities.js +1 -1
  77. package/assets/js/highcharts/es-modules/Core/Geometry/GeometryUtilities.js +1 -1
  78. package/assets/js/highcharts/es-modules/Core/Geometry/PolygonClip.js +1 -1
  79. package/assets/js/highcharts/es-modules/Core/Globals.js +3 -5
  80. package/assets/js/highcharts/es-modules/Core/HttpUtilities.js +3 -3
  81. package/assets/js/highcharts/es-modules/Core/Legend/Legend.js +12 -11
  82. package/assets/js/highcharts/es-modules/Core/Legend/LegendSymbol.js +1 -1
  83. package/assets/js/highcharts/es-modules/Core/MSPointer.js +2 -2
  84. package/assets/js/highcharts/es-modules/Core/Math3D.js +1 -1
  85. package/assets/js/highcharts/es-modules/Core/Pointer.js +33 -30
  86. package/assets/js/highcharts/es-modules/Core/Renderer/HTML/AST.js +1 -1
  87. package/assets/js/highcharts/es-modules/Core/Renderer/HTML/HTMLElement.js +125 -66
  88. package/assets/js/highcharts/es-modules/Core/Renderer/RendererRegistry.js +1 -1
  89. package/assets/js/highcharts/es-modules/Core/Renderer/RendererUtilities.js +1 -1
  90. package/assets/js/highcharts/es-modules/Core/Renderer/SVG/SVGElement.js +27 -25
  91. package/assets/js/highcharts/es-modules/Core/Renderer/SVG/SVGElement3D.js +3 -3
  92. package/assets/js/highcharts/es-modules/Core/Renderer/SVG/SVGLabel.js +1 -1
  93. package/assets/js/highcharts/es-modules/Core/Renderer/SVG/SVGRenderer.js +38 -17
  94. package/assets/js/highcharts/es-modules/Core/Renderer/SVG/SVGRenderer3D.js +2 -2
  95. package/assets/js/highcharts/es-modules/Core/Renderer/SVG/Symbols.js +13 -7
  96. package/assets/js/highcharts/es-modules/Core/Renderer/SVG/TextBuilder.js +7 -7
  97. package/assets/js/highcharts/es-modules/Core/Responsive.js +4 -4
  98. package/assets/js/highcharts/es-modules/Core/Series/DataLabel.js +11 -6
  99. package/assets/js/highcharts/es-modules/Core/Series/DataSeriesComposition.js +1 -1
  100. package/assets/js/highcharts/es-modules/Core/Series/DataSeriesConverter.js +2 -2
  101. package/assets/js/highcharts/es-modules/{Extensions → Core/Series}/OverlappingDataLabels.js +11 -13
  102. package/assets/js/highcharts/es-modules/Core/Series/Point.js +19 -13
  103. package/assets/js/highcharts/es-modules/Core/Series/Series.js +128 -132
  104. package/assets/js/highcharts/es-modules/Core/Series/Series3D.js +2 -2
  105. package/assets/js/highcharts/es-modules/Core/Series/SeriesDefaults.js +37 -13
  106. package/assets/js/highcharts/es-modules/Core/Series/SeriesRegistry.js +1 -1
  107. package/assets/js/highcharts/es-modules/Core/Templating.js +35 -9
  108. package/assets/js/highcharts/es-modules/Core/Time.js +8 -796
  109. package/assets/js/highcharts/es-modules/Core/Tooltip.js +83 -62
  110. package/assets/js/highcharts/es-modules/Core/Utilities.js +6 -9
  111. package/assets/js/highcharts/es-modules/Data/ColumnUtils.js +113 -0
  112. package/assets/js/highcharts/es-modules/Data/Connectors/CSVConnector.js +1 -1
  113. package/assets/js/highcharts/es-modules/Data/Connectors/DataConnector.js +2 -2
  114. package/assets/js/highcharts/es-modules/Data/Connectors/GoogleSheetsConnector.js +1 -1
  115. package/assets/js/highcharts/es-modules/Data/Connectors/HTMLTableConnector.js +1 -1
  116. package/assets/js/highcharts/es-modules/Data/Connectors/JSONConnector.js +10 -2
  117. package/assets/js/highcharts/es-modules/Data/Converters/CSVConverter.js +1 -1
  118. package/assets/js/highcharts/es-modules/Data/Converters/DataConverter.js +1 -1
  119. package/assets/js/highcharts/es-modules/Data/Converters/GoogleSheetsConverter.js +1 -1
  120. package/assets/js/highcharts/es-modules/Data/Converters/HTMLTableConverter.js +9 -2
  121. package/assets/js/highcharts/es-modules/Data/Converters/JSONConverter.js +1 -1
  122. package/assets/js/highcharts/es-modules/Data/DataCursor.js +1 -1
  123. package/assets/js/highcharts/es-modules/Data/DataEvent.js +1 -1
  124. package/assets/js/highcharts/es-modules/Data/DataPool.js +3 -3
  125. package/assets/js/highcharts/es-modules/Data/DataPoolDefaults.js +1 -1
  126. package/assets/js/highcharts/es-modules/Data/DataPoolOptions.js +1 -1
  127. package/assets/js/highcharts/es-modules/Data/DataTable.js +70 -19
  128. package/assets/js/highcharts/es-modules/Data/DataTableCore.js +48 -15
  129. package/assets/js/highcharts/es-modules/Data/DataTableOptions.js +2 -1
  130. package/assets/js/highcharts/es-modules/Data/Formula/Formula.js +1 -1
  131. package/assets/js/highcharts/es-modules/Data/Formula/FormulaParser.js +1 -1
  132. package/assets/js/highcharts/es-modules/Data/Formula/FormulaProcessor.js +1 -1
  133. package/assets/js/highcharts/es-modules/Data/Formula/FormulaTypes.js +1 -1
  134. package/assets/js/highcharts/es-modules/Data/Formula/Functions/ABS.js +1 -1
  135. package/assets/js/highcharts/es-modules/Data/Formula/Functions/AND.js +1 -1
  136. package/assets/js/highcharts/es-modules/Data/Formula/Functions/AVERAGE.js +1 -1
  137. package/assets/js/highcharts/es-modules/Data/Formula/Functions/AVERAGEA.js +1 -1
  138. package/assets/js/highcharts/es-modules/Data/Formula/Functions/COUNT.js +1 -1
  139. package/assets/js/highcharts/es-modules/Data/Formula/Functions/COUNTA.js +1 -1
  140. package/assets/js/highcharts/es-modules/Data/Formula/Functions/IF.js +1 -1
  141. package/assets/js/highcharts/es-modules/Data/Formula/Functions/ISNA.js +1 -1
  142. package/assets/js/highcharts/es-modules/Data/Formula/Functions/MAX.js +1 -1
  143. package/assets/js/highcharts/es-modules/Data/Formula/Functions/MEDIAN.js +1 -1
  144. package/assets/js/highcharts/es-modules/Data/Formula/Functions/MIN.js +1 -1
  145. package/assets/js/highcharts/es-modules/Data/Formula/Functions/MOD.js +1 -1
  146. package/assets/js/highcharts/es-modules/Data/Formula/Functions/MODE.js +1 -1
  147. package/assets/js/highcharts/es-modules/Data/Formula/Functions/NOT.js +1 -1
  148. package/assets/js/highcharts/es-modules/Data/Formula/Functions/OR.js +1 -1
  149. package/assets/js/highcharts/es-modules/Data/Formula/Functions/PRODUCT.js +1 -1
  150. package/assets/js/highcharts/es-modules/Data/Formula/Functions/SUM.js +1 -1
  151. package/assets/js/highcharts/es-modules/Data/Formula/Functions/XOR.js +1 -1
  152. package/assets/js/highcharts/es-modules/Data/Modifiers/ChainModifier.js +1 -1
  153. package/assets/js/highcharts/es-modules/Data/Modifiers/ChainModifierOptions.js +1 -1
  154. package/assets/js/highcharts/es-modules/Data/Modifiers/DataModifier.js +1 -1
  155. package/assets/js/highcharts/es-modules/Data/Modifiers/DataModifierEvent.js +1 -1
  156. package/assets/js/highcharts/es-modules/Data/Modifiers/DataModifierOptions.js +1 -1
  157. package/assets/js/highcharts/es-modules/Data/Modifiers/InvertModifier.js +6 -3
  158. package/assets/js/highcharts/es-modules/Data/Modifiers/InvertModifierOptions.js +1 -1
  159. package/assets/js/highcharts/es-modules/Data/Modifiers/MathModifier.js +1 -1
  160. package/assets/js/highcharts/es-modules/Data/Modifiers/MathModifierOptions.js +1 -1
  161. package/assets/js/highcharts/es-modules/Data/Modifiers/RangeModifier.js +1 -1
  162. package/assets/js/highcharts/es-modules/Data/Modifiers/RangeModifierOptions.js +1 -1
  163. package/assets/js/highcharts/es-modules/Data/Modifiers/SortModifier.js +1 -1
  164. package/assets/js/highcharts/es-modules/Data/Modifiers/SortModifierOptions.js +1 -1
  165. package/assets/js/highcharts/es-modules/Extensions/Annotations/Annotation.js +2 -2
  166. package/assets/js/highcharts/es-modules/Extensions/Annotations/AnnotationChart.js +1 -1
  167. package/assets/js/highcharts/es-modules/Extensions/Annotations/ControlPoint.js +1 -1
  168. package/assets/js/highcharts/es-modules/Extensions/Annotations/EventEmitter.js +7 -3
  169. package/assets/js/highcharts/es-modules/Extensions/Annotations/NavigationBindings.js +1 -1
  170. package/assets/js/highcharts/es-modules/Extensions/Annotations/NavigationBindingsDefaults.js +3 -3
  171. package/assets/js/highcharts/es-modules/Extensions/Annotations/NavigationBindingsUtilities.js +1 -1
  172. package/assets/js/highcharts/es-modules/Extensions/Annotations/Popup/Popup.js +1 -1
  173. package/assets/js/highcharts/es-modules/Extensions/Annotations/Popup/PopupAnnotations.js +1 -1
  174. package/assets/js/highcharts/es-modules/Extensions/Annotations/Popup/PopupComposition.js +2 -2
  175. package/assets/js/highcharts/es-modules/Extensions/Annotations/Popup/PopupIndicators.js +1 -1
  176. package/assets/js/highcharts/es-modules/Extensions/Annotations/Popup/PopupTabs.js +1 -1
  177. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/Measure.js +51 -49
  178. package/assets/js/highcharts/es-modules/Extensions/Boost/Boost.js +3 -3
  179. package/assets/js/highcharts/es-modules/Extensions/Boost/BoostChart.js +3 -3
  180. package/assets/js/highcharts/es-modules/Extensions/Boost/BoostSeries.js +22 -7
  181. package/assets/js/highcharts/es-modules/Extensions/Boost/BoostableMap.js +1 -1
  182. package/assets/js/highcharts/es-modules/Extensions/Boost/Boostables.js +1 -1
  183. package/assets/js/highcharts/es-modules/Extensions/Boost/NamedColors.js +1 -1
  184. package/assets/js/highcharts/es-modules/Extensions/Boost/WGLDrawMode.js +1 -1
  185. package/assets/js/highcharts/es-modules/Extensions/Boost/WGLRenderer.js +5 -2
  186. package/assets/js/highcharts/es-modules/Extensions/Boost/WGLShader.js +1 -1
  187. package/assets/js/highcharts/es-modules/Extensions/Boost/WGLVertexBuffer.js +1 -1
  188. package/assets/js/highcharts/es-modules/Extensions/Breadcrumbs/Breadcrumbs.js +0 -3
  189. package/assets/js/highcharts/es-modules/Extensions/CurrentDateIndication.js +1 -1
  190. package/assets/js/highcharts/es-modules/Extensions/Data.js +1 -1
  191. package/assets/js/highcharts/es-modules/Extensions/DataGrouping/ApproximationDefaults.js +1 -1
  192. package/assets/js/highcharts/es-modules/Extensions/DataGrouping/ApproximationRegistry.js +1 -1
  193. package/assets/js/highcharts/es-modules/Extensions/DataGrouping/DataGrouping.js +3 -3
  194. package/assets/js/highcharts/es-modules/Extensions/DataGrouping/DataGroupingAxisComposition.js +1 -1
  195. package/assets/js/highcharts/es-modules/Extensions/DataGrouping/DataGroupingDefaults.js +2 -2
  196. package/assets/js/highcharts/es-modules/Extensions/DataGrouping/DataGroupingSeriesComposition.js +1 -1
  197. package/assets/js/highcharts/es-modules/Extensions/Debugger/Debugger.js +1 -1
  198. package/assets/js/highcharts/es-modules/Extensions/DownloadURL.js +1 -1
  199. package/assets/js/highcharts/es-modules/Extensions/DragPanes/AxisResizer.js +1 -1
  200. package/assets/js/highcharts/es-modules/Extensions/DragPanes/AxisResizerDefaults.js +1 -1
  201. package/assets/js/highcharts/es-modules/Extensions/DragPanes/DragPanes.js +1 -1
  202. package/assets/js/highcharts/es-modules/Extensions/DraggablePoints/DragDropDefaults.js +1 -1
  203. package/assets/js/highcharts/es-modules/Extensions/DraggablePoints/DragDropProps.js +1 -1
  204. package/assets/js/highcharts/es-modules/Extensions/DraggablePoints/DragDropUtilities.js +1 -1
  205. package/assets/js/highcharts/es-modules/Extensions/DraggablePoints/DraggableChart.js +1 -1
  206. package/assets/js/highcharts/es-modules/Extensions/DraggablePoints/DraggablePoints.js +1 -1
  207. package/assets/js/highcharts/es-modules/Extensions/Drilldown/Drilldown.js +2 -5
  208. package/assets/js/highcharts/es-modules/Extensions/Drilldown/DrilldownDefaults.js +7 -5
  209. package/assets/js/highcharts/es-modules/Extensions/Drilldown/DrilldownSeries.js +1 -1
  210. package/assets/js/highcharts/es-modules/Extensions/ExportData/ExportData.js +6 -5
  211. package/assets/js/highcharts/es-modules/Extensions/ExportData/ExportDataDefaults.js +1 -1
  212. package/assets/js/highcharts/es-modules/Extensions/Exporting/Exporting.js +33 -18
  213. package/assets/js/highcharts/es-modules/Extensions/Exporting/ExportingDefaults.js +5 -7
  214. package/assets/js/highcharts/es-modules/Extensions/Exporting/ExportingSymbols.js +1 -1
  215. package/assets/js/highcharts/es-modules/Extensions/Exporting/Fullscreen.js +1 -1
  216. package/assets/js/highcharts/es-modules/Extensions/MarkerClusters/MarkerClusterDebugging.js +1 -1
  217. package/assets/js/highcharts/es-modules/Extensions/MarkerClusters/MarkerClusterDefaults.js +1 -1
  218. package/assets/js/highcharts/es-modules/Extensions/MarkerClusters/MarkerClusterScatter.js +1 -1
  219. package/assets/js/highcharts/es-modules/Extensions/MarkerClusters/MarkerClusterSymbols.js +1 -1
  220. package/assets/js/highcharts/es-modules/Extensions/MarkerClusters/MarkerClusters.js +1 -1
  221. package/assets/js/highcharts/es-modules/Extensions/NoDataToDisplay/NoDataDefaults.js +1 -1
  222. package/assets/js/highcharts/es-modules/Extensions/NoDataToDisplay/NoDataToDisplay.js +1 -1
  223. package/assets/js/highcharts/es-modules/Extensions/OfflineExporting/OfflineExportingDefaults.js +2 -2
  224. package/assets/js/highcharts/es-modules/Extensions/Pane/Pane.js +1 -1
  225. package/assets/js/highcharts/es-modules/Extensions/Pane/PaneDefaults.js +1 -1
  226. package/assets/js/highcharts/es-modules/Extensions/ParallelCoordinates/ParallelAxis.js +1 -1
  227. package/assets/js/highcharts/es-modules/Extensions/ParallelCoordinates/ParallelCoordinates.js +1 -1
  228. package/assets/js/highcharts/es-modules/Extensions/ParallelCoordinates/ParallelCoordinatesDefaults.js +1 -1
  229. package/assets/js/highcharts/es-modules/Extensions/ParallelCoordinates/ParallelSeries.js +1 -1
  230. package/assets/js/highcharts/es-modules/Extensions/PatternFill.js +1 -1
  231. package/assets/js/highcharts/es-modules/Extensions/PriceIndication.js +52 -1
  232. package/assets/js/highcharts/es-modules/Extensions/ScrollablePlotArea.js +1 -1
  233. package/assets/js/highcharts/es-modules/Extensions/SeriesLabel/SeriesLabel.js +1 -1
  234. package/assets/js/highcharts/es-modules/Extensions/SeriesLabel/SeriesLabelDefaults.js +1 -1
  235. package/assets/js/highcharts/es-modules/Extensions/SeriesLabel/SeriesLabelUtilities.js +1 -1
  236. package/assets/js/highcharts/es-modules/Extensions/Sonification/InstrumentPresets.js +1 -1
  237. package/assets/js/highcharts/es-modules/Extensions/Sonification/MIDI.js +1 -1
  238. package/assets/js/highcharts/es-modules/Extensions/Sonification/Options.js +1 -1
  239. package/assets/js/highcharts/es-modules/Extensions/Sonification/Scales.js +1 -1
  240. package/assets/js/highcharts/es-modules/Extensions/Sonification/Sonification.js +1 -1
  241. package/assets/js/highcharts/es-modules/Extensions/Sonification/SonificationInstrument.js +1 -1
  242. package/assets/js/highcharts/es-modules/Extensions/Sonification/SonificationSpeaker.js +1 -1
  243. package/assets/js/highcharts/es-modules/Extensions/Sonification/SonificationTimeline.js +1 -1
  244. package/assets/js/highcharts/es-modules/Extensions/Sonification/SynthPatch.js +1 -1
  245. package/assets/js/highcharts/es-modules/Extensions/Sonification/TimelineChannel.js +1 -1
  246. package/assets/js/highcharts/es-modules/Extensions/Sonification/TimelineFromChart.js +1 -1
  247. package/assets/js/highcharts/es-modules/Extensions/StaticScale.js +1 -1
  248. package/assets/js/highcharts/es-modules/Extensions/TextPath.js +1 -1
  249. package/assets/js/highcharts/es-modules/Extensions/Themes/Avocado.js +1 -1
  250. package/assets/js/highcharts/es-modules/Extensions/Themes/BrandDark.js +1 -1
  251. package/assets/js/highcharts/es-modules/Extensions/Themes/BrandLight.js +1 -1
  252. package/assets/js/highcharts/es-modules/Extensions/Themes/DarkBlue.js +1 -1
  253. package/assets/js/highcharts/es-modules/Extensions/Themes/DarkGreen.js +1 -1
  254. package/assets/js/highcharts/es-modules/Extensions/Themes/DarkUnica.js +1 -1
  255. package/assets/js/highcharts/es-modules/Extensions/Themes/Gray.js +1 -1
  256. package/assets/js/highcharts/es-modules/Extensions/Themes/Grid.js +1 -1
  257. package/assets/js/highcharts/es-modules/Extensions/Themes/GridLight.js +1 -1
  258. package/assets/js/highcharts/es-modules/Extensions/Themes/HighContrastDark.js +1 -1
  259. package/assets/js/highcharts/es-modules/Extensions/Themes/HighContrastLight.js +1 -1
  260. package/assets/js/highcharts/es-modules/Extensions/Themes/SandSignika.js +1 -1
  261. package/assets/js/highcharts/es-modules/Extensions/Themes/Skies.js +1 -1
  262. package/assets/js/highcharts/es-modules/Extensions/Themes/Sunset.js +1 -1
  263. package/assets/js/highcharts/es-modules/Gantt/Tree.js +1 -1
  264. package/assets/js/highcharts/es-modules/Maps/GeoJSONComposition.js +1 -1
  265. package/assets/js/highcharts/es-modules/Maps/MapNavigation.js +1 -1
  266. package/assets/js/highcharts/es-modules/Maps/MapNavigationDefaults.js +1 -1
  267. package/assets/js/highcharts/es-modules/Maps/MapPointer.js +1 -1
  268. package/assets/js/highcharts/es-modules/Maps/MapSymbols.js +1 -1
  269. package/assets/js/highcharts/es-modules/Maps/MapUtilities.js +1 -1
  270. package/assets/js/highcharts/es-modules/Maps/MapView.js +1 -1
  271. package/assets/js/highcharts/es-modules/Maps/MapViewDefaults.js +1 -1
  272. package/assets/js/highcharts/es-modules/Series/ArcDiagram/ArcDiagramPoint.js +1 -1
  273. package/assets/js/highcharts/es-modules/Series/Area/AreaSeries.js +1 -1
  274. package/assets/js/highcharts/es-modules/Series/Area/AreaSeriesDefaults.js +1 -1
  275. package/assets/js/highcharts/es-modules/Series/Area3D/Area3DSeries.js +1 -1
  276. package/assets/js/highcharts/es-modules/Series/AreaRange/AreaRangePoint.js +1 -1
  277. package/assets/js/highcharts/es-modules/Series/AreaRange/AreaRangeSeries.js +1 -1
  278. package/assets/js/highcharts/es-modules/Series/AreaRange/AreaRangeSeriesDefaults.js +1 -1
  279. package/assets/js/highcharts/es-modules/Series/AreaSpline/AreaSplineSeries.js +1 -1
  280. package/assets/js/highcharts/es-modules/Series/AreaSplineRange/AreaSplineRangeSeries.js +1 -1
  281. package/assets/js/highcharts/es-modules/Series/Bar/BarSeries.js +1 -1
  282. package/assets/js/highcharts/es-modules/Series/Bellcurve/BellcurveSeries.js +1 -1
  283. package/assets/js/highcharts/es-modules/Series/Bellcurve/BellcurveSeriesDefaults.js +1 -1
  284. package/assets/js/highcharts/es-modules/Series/BoxPlot/BoxPlotSeries.js +1 -1
  285. package/assets/js/highcharts/es-modules/Series/BoxPlot/BoxPlotSeriesDefaults.js +1 -1
  286. package/assets/js/highcharts/es-modules/Series/Bubble/BubbleLegendComposition.js +1 -1
  287. package/assets/js/highcharts/es-modules/Series/Bubble/BubbleLegendDefaults.js +1 -1
  288. package/assets/js/highcharts/es-modules/Series/Bubble/BubbleLegendItem.js +6 -7
  289. package/assets/js/highcharts/es-modules/Series/Bubble/BubblePoint.js +1 -1
  290. package/assets/js/highcharts/es-modules/Series/Bubble/BubbleSeries.js +7 -10
  291. package/assets/js/highcharts/es-modules/Series/Bullet/BulletPoint.js +1 -1
  292. package/assets/js/highcharts/es-modules/Series/Bullet/BulletSeries.js +1 -1
  293. package/assets/js/highcharts/es-modules/Series/Candlestick/CandlestickSeries.js +1 -1
  294. package/assets/js/highcharts/es-modules/Series/Candlestick/CandlestickSeriesDefaults.js +1 -1
  295. package/assets/js/highcharts/es-modules/Series/CenteredUtilities.js +1 -1
  296. package/assets/js/highcharts/es-modules/Series/ColorMapComposition.js +1 -1
  297. package/assets/js/highcharts/es-modules/Series/Column/ColumnDataLabel.js +17 -14
  298. package/assets/js/highcharts/es-modules/Series/Column/ColumnSeries.js +21 -13
  299. package/assets/js/highcharts/es-modules/Series/Column/ColumnSeriesDefaults.js +1 -1
  300. package/assets/js/highcharts/es-modules/Series/Column3D/Column3DComposition.js +1 -1
  301. package/assets/js/highcharts/es-modules/Series/ColumnPyramid/ColumnPyramidSeries.js +1 -1
  302. package/assets/js/highcharts/es-modules/Series/ColumnPyramid/ColumnPyramidSeriesDefaults.js +1 -1
  303. package/assets/js/highcharts/es-modules/Series/ColumnRange/ColumnRangePoint.js +1 -1
  304. package/assets/js/highcharts/es-modules/Series/ColumnRange/ColumnRangeSeries.js +1 -1
  305. package/assets/js/highcharts/es-modules/Series/Cylinder/CylinderComposition.js +1 -1
  306. package/assets/js/highcharts/es-modules/Series/Cylinder/CylinderPoint.js +1 -1
  307. package/assets/js/highcharts/es-modules/Series/Cylinder/CylinderSeries.js +1 -1
  308. package/assets/js/highcharts/es-modules/Series/Cylinder/CylinderSeriesDefaults.js +1 -1
  309. package/assets/js/highcharts/es-modules/Series/Cylinder/SVGElement3DCylinder.js +1 -1
  310. package/assets/js/highcharts/es-modules/Series/DataModifyComposition.js +1 -1
  311. package/assets/js/highcharts/es-modules/Series/DependencyWheel/DependencyWheelPoint.js +1 -1
  312. package/assets/js/highcharts/es-modules/Series/DependencyWheel/DependencyWheelSeries.js +1 -1
  313. package/assets/js/highcharts/es-modules/Series/DependencyWheel/DependencyWheelSeriesDefaults.js +1 -1
  314. package/assets/js/highcharts/es-modules/Series/DotPlot/DotPlotSeries.js +1 -1
  315. package/assets/js/highcharts/es-modules/Series/DotPlot/DotPlotSeriesDefaults.js +1 -1
  316. package/assets/js/highcharts/es-modules/Series/DragNodesComposition.js +9 -3
  317. package/assets/js/highcharts/es-modules/Series/Dumbbell/DumbbellPoint.js +1 -1
  318. package/assets/js/highcharts/es-modules/Series/Dumbbell/DumbbellSeries.js +4 -2
  319. package/assets/js/highcharts/es-modules/Series/Dumbbell/DumbbellSeriesDefaults.js +1 -1
  320. package/assets/js/highcharts/es-modules/Series/ErrorBar/ErrorBarSeries.js +1 -1
  321. package/assets/js/highcharts/es-modules/Series/ErrorBar/ErrorBarSeriesDefaults.js +1 -1
  322. package/assets/js/highcharts/es-modules/Series/Flags/FlagsPoint.js +1 -1
  323. package/assets/js/highcharts/es-modules/Series/Flags/FlagsSeries.js +1 -1
  324. package/assets/js/highcharts/es-modules/Series/Flags/FlagsSeriesDefaults.js +1 -1
  325. package/assets/js/highcharts/es-modules/Series/FlowMap/FlowMapPoint.js +1 -1
  326. package/assets/js/highcharts/es-modules/Series/FlowMap/FlowMapSeries.js +1 -1
  327. package/assets/js/highcharts/es-modules/Series/Funnel/FunnelSeries.js +1 -1
  328. package/assets/js/highcharts/es-modules/Series/Funnel/FunnelSeriesDefaults.js +1 -1
  329. package/assets/js/highcharts/es-modules/Series/Funnel3D/Funnel3DComposition.js +1 -1
  330. package/assets/js/highcharts/es-modules/Series/Funnel3D/Funnel3DPoint.js +1 -1
  331. package/assets/js/highcharts/es-modules/Series/Funnel3D/Funnel3DSeries.js +1 -1
  332. package/assets/js/highcharts/es-modules/Series/Funnel3D/SVGElement3DFunnel.js +1 -1
  333. package/assets/js/highcharts/es-modules/Series/Gantt/GanttPoint.js +1 -1
  334. package/assets/js/highcharts/es-modules/Series/Gantt/GanttSeries.js +1 -1
  335. package/assets/js/highcharts/es-modules/Series/Gantt/GanttSeriesDefaults.js +1 -1
  336. package/assets/js/highcharts/es-modules/Series/Gauge/GaugePoint.js +1 -1
  337. package/assets/js/highcharts/es-modules/Series/Gauge/GaugeSeries.js +1 -1
  338. package/assets/js/highcharts/es-modules/Series/GeoHeatmap/GeoHeatmapPoint.js +1 -1
  339. package/assets/js/highcharts/es-modules/Series/GeoHeatmap/GeoHeatmapPointOptions.js +1 -1
  340. package/assets/js/highcharts/es-modules/Series/GeoHeatmap/GeoHeatmapSeries.js +36 -21
  341. package/assets/js/highcharts/es-modules/Series/GeoHeatmap/GeoHeatmapSeriesOptions.js +1 -1
  342. package/assets/js/highcharts/es-modules/Series/GraphLayoutComposition.js +1 -1
  343. package/assets/js/highcharts/es-modules/Series/HLC/HLCPoint.js +1 -1
  344. package/assets/js/highcharts/es-modules/Series/HLC/HLCSeries.js +11 -1
  345. package/assets/js/highcharts/es-modules/Series/HLC/HLCSeriesDefaults.js +4 -4
  346. package/assets/js/highcharts/es-modules/Series/Heatmap/HeatmapPoint.js +1 -1
  347. package/assets/js/highcharts/es-modules/Series/Heatmap/HeatmapSeries.js +9 -16
  348. package/assets/js/highcharts/es-modules/Series/Heatmap/HeatmapSeriesDefaults.js +1 -1
  349. package/assets/js/highcharts/es-modules/Series/HeikinAshi/HeikinAshiPoint.js +1 -1
  350. package/assets/js/highcharts/es-modules/Series/HeikinAshi/HeikinAshiSeries.js +1 -1
  351. package/assets/js/highcharts/es-modules/Series/HeikinAshi/HeikinAshiSeriesDefaults.js +1 -1
  352. package/assets/js/highcharts/es-modules/Series/Histogram/HistogramSeries.js +1 -1
  353. package/assets/js/highcharts/es-modules/Series/Histogram/HistogramSeriesDefaults.js +1 -1
  354. package/assets/js/highcharts/es-modules/Series/HollowCandlestick/HollowCandlestickPoint.js +1 -1
  355. package/assets/js/highcharts/es-modules/Series/HollowCandlestick/HollowCandlestickSeries.js +1 -1
  356. package/assets/js/highcharts/es-modules/Series/InterpolationUtilities.js +1 -1
  357. package/assets/js/highcharts/es-modules/Series/Item/ItemPoint.js +1 -1
  358. package/assets/js/highcharts/es-modules/Series/Item/ItemSeries.js +1 -1
  359. package/assets/js/highcharts/es-modules/Series/Item/ItemSeriesDefaults.js +1 -1
  360. package/assets/js/highcharts/es-modules/Series/Line/LineSeries.js +5 -3
  361. package/assets/js/highcharts/es-modules/Series/Lollipop/LollipopPoint.js +1 -1
  362. package/assets/js/highcharts/es-modules/Series/Lollipop/LollipopSeries.js +1 -1
  363. package/assets/js/highcharts/es-modules/Series/Map/MapPoint.js +3 -3
  364. package/assets/js/highcharts/es-modules/Series/Map/MapSeries.js +7 -10
  365. package/assets/js/highcharts/es-modules/Series/Map/MapSeriesDefaults.js +1 -1
  366. package/assets/js/highcharts/es-modules/Series/MapBubble/MapBubblePoint.js +1 -1
  367. package/assets/js/highcharts/es-modules/Series/MapBubble/MapBubbleSeries.js +1 -1
  368. package/assets/js/highcharts/es-modules/Series/MapLine/MapLineSeries.js +1 -1
  369. package/assets/js/highcharts/es-modules/Series/MapLine/MapLineSeriesDefaults.js +1 -1
  370. package/assets/js/highcharts/es-modules/Series/MapPoint/MapPointPoint.js +1 -1
  371. package/assets/js/highcharts/es-modules/Series/MapPoint/MapPointSeries.js +1 -1
  372. package/assets/js/highcharts/es-modules/Series/MapPoint/MapPointSeriesDefaults.js +1 -1
  373. package/assets/js/highcharts/es-modules/Series/Networkgraph/EulerIntegration.js +1 -1
  374. package/assets/js/highcharts/es-modules/Series/Networkgraph/NetworkgraphPoint.js +1 -1
  375. package/assets/js/highcharts/es-modules/Series/Networkgraph/NetworkgraphSeries.js +1 -1
  376. package/assets/js/highcharts/es-modules/Series/Networkgraph/NetworkgraphSeriesDefaults.js +1 -1
  377. package/assets/js/highcharts/es-modules/Series/Networkgraph/QuadTree.js +1 -1
  378. package/assets/js/highcharts/es-modules/Series/Networkgraph/QuadTreeNode.js +1 -1
  379. package/assets/js/highcharts/es-modules/Series/Networkgraph/ReingoldFruchtermanLayout.js +1 -1
  380. package/assets/js/highcharts/es-modules/Series/Networkgraph/VerletIntegration.js +1 -1
  381. package/assets/js/highcharts/es-modules/Series/OHLC/OHLCPoint.js +1 -1
  382. package/assets/js/highcharts/es-modules/Series/OHLC/OHLCSeries.js +1 -1
  383. package/assets/js/highcharts/es-modules/Series/OHLC/OHLCSeriesDefaults.js +5 -5
  384. package/assets/js/highcharts/es-modules/Series/OnSeriesComposition.js +1 -1
  385. package/assets/js/highcharts/es-modules/Series/Organization/OrganizationPoint.js +1 -1
  386. package/assets/js/highcharts/es-modules/Series/Organization/OrganizationSeries.js +22 -18
  387. package/assets/js/highcharts/es-modules/Series/Organization/OrganizationSeriesDefaults.js +1 -1
  388. package/assets/js/highcharts/es-modules/Series/PackedBubble/PackedBubbleIntegration.js +25 -18
  389. package/assets/js/highcharts/es-modules/Series/PackedBubble/PackedBubbleLayout.js +49 -24
  390. package/assets/js/highcharts/es-modules/Series/PackedBubble/PackedBubblePoint.js +1 -1
  391. package/assets/js/highcharts/es-modules/Series/PackedBubble/PackedBubbleSeries.js +5 -2
  392. package/assets/js/highcharts/es-modules/Series/PackedBubble/PackedBubbleSeriesDefaults.js +4 -3
  393. package/assets/js/highcharts/es-modules/Series/ParetoSeries/ParetoSeries.js +1 -1
  394. package/assets/js/highcharts/es-modules/Series/ParetoSeries/ParetoSeriesDefaults.js +1 -1
  395. package/assets/js/highcharts/es-modules/Series/PathUtilities.js +1 -1
  396. package/assets/js/highcharts/es-modules/Series/Pictorial/PictorialPoint.js +1 -1
  397. package/assets/js/highcharts/es-modules/Series/Pictorial/PictorialSeries.js +3 -3
  398. package/assets/js/highcharts/es-modules/Series/Pictorial/PictorialUtilities.js +1 -1
  399. package/assets/js/highcharts/es-modules/Series/Pie/PieDataLabel.js +2 -3
  400. package/assets/js/highcharts/es-modules/Series/Pie/PiePoint.js +2 -2
  401. package/assets/js/highcharts/es-modules/Series/Pie/PieSeries.js +1 -1
  402. package/assets/js/highcharts/es-modules/Series/Pie/PieSeriesDefaults.js +1 -1
  403. package/assets/js/highcharts/es-modules/Series/Pie3D/Pie3DPoint.js +1 -1
  404. package/assets/js/highcharts/es-modules/Series/Pie3D/Pie3DSeries.js +1 -1
  405. package/assets/js/highcharts/es-modules/Series/PointAndFigure/PointAndFigurePoint.js +1 -1
  406. package/assets/js/highcharts/es-modules/Series/PointAndFigure/PointAndFigureSeries.js +1 -1
  407. package/assets/js/highcharts/es-modules/Series/PointAndFigure/PointAndFigureSeriesDefaults.js +1 -1
  408. package/assets/js/highcharts/es-modules/Series/PolarComposition.js +1 -1
  409. package/assets/js/highcharts/es-modules/Series/Polygon/PolygonSeries.js +1 -1
  410. package/assets/js/highcharts/es-modules/Series/Polygon/PolygonSeriesDefaults.js +1 -1
  411. package/assets/js/highcharts/es-modules/Series/Pyramid/PyramidSeries.js +1 -1
  412. package/assets/js/highcharts/es-modules/Series/Pyramid/PyramidSeriesDefaults.js +1 -1
  413. package/assets/js/highcharts/es-modules/Series/Pyramid3D/Pyramid3DSeries.js +1 -1
  414. package/assets/js/highcharts/es-modules/Series/Pyramid3D/Pyramid3DSeriesDefaults.js +1 -1
  415. package/assets/js/highcharts/es-modules/Series/Renko/RenkoPoint.js +1 -1
  416. package/assets/js/highcharts/es-modules/Series/Renko/RenkoSeries.js +1 -1
  417. package/assets/js/highcharts/es-modules/Series/Renko/RenkoSeriesDefaults.js +1 -1
  418. package/assets/js/highcharts/es-modules/Series/Sankey/SankeyColumnComposition.js +1 -1
  419. package/assets/js/highcharts/es-modules/Series/Sankey/SankeyPoint.js +1 -1
  420. package/assets/js/highcharts/es-modules/Series/Sankey/SankeySeries.js +3 -2
  421. package/assets/js/highcharts/es-modules/Series/Sankey/SankeySeriesDefaults.js +1 -1
  422. package/assets/js/highcharts/es-modules/Series/Scatter/ScatterSeries.js +1 -1
  423. package/assets/js/highcharts/es-modules/Series/Scatter/ScatterSeriesDefaults.js +1 -1
  424. package/assets/js/highcharts/es-modules/Series/Scatter3D/Scatter3DPoint.js +1 -1
  425. package/assets/js/highcharts/es-modules/Series/Scatter3D/Scatter3DSeries.js +1 -1
  426. package/assets/js/highcharts/es-modules/Series/Scatter3D/Scatter3DSeriesDefaults.js +1 -1
  427. package/assets/js/highcharts/es-modules/Series/SeriesOnPointComposition.js +1 -1
  428. package/assets/js/highcharts/es-modules/Series/SolidGauge/SolidGaugeSeries.js +1 -1
  429. package/assets/js/highcharts/es-modules/Series/SolidGauge/SolidGaugeSeriesDefaults.js +1 -1
  430. package/assets/js/highcharts/es-modules/Series/Spline/SplineSeries.js +1 -1
  431. package/assets/js/highcharts/es-modules/Series/Streamgraph/StreamgraphSeries.js +1 -1
  432. package/assets/js/highcharts/es-modules/Series/Streamgraph/StreamgraphSeriesDefaults.js +1 -1
  433. package/assets/js/highcharts/es-modules/Series/Sunburst/SunburstNode.js +1 -1
  434. package/assets/js/highcharts/es-modules/Series/Sunburst/SunburstPoint.js +1 -1
  435. package/assets/js/highcharts/es-modules/Series/Sunburst/SunburstSeries.js +41 -32
  436. package/assets/js/highcharts/es-modules/Series/Sunburst/SunburstSeriesDefaults.js +1 -1
  437. package/assets/js/highcharts/es-modules/Series/Sunburst/SunburstUtilities.js +1 -1
  438. package/assets/js/highcharts/es-modules/Series/TiledWebMap/TiledWebMapSeries.js +1 -1
  439. package/assets/js/highcharts/es-modules/Series/TiledWebMap/TiledWebMapSeriesDefaults.js +1 -1
  440. package/assets/js/highcharts/es-modules/Series/Tilemap/TilemapPoint.js +1 -1
  441. package/assets/js/highcharts/es-modules/Series/Tilemap/TilemapSeries.js +1 -1
  442. package/assets/js/highcharts/es-modules/Series/Tilemap/TilemapSeriesDefaults.js +1 -1
  443. package/assets/js/highcharts/es-modules/Series/Tilemap/TilemapShapes.js +1 -1
  444. package/assets/js/highcharts/es-modules/Series/Timeline/TimelinePoint.js +28 -6
  445. package/assets/js/highcharts/es-modules/Series/Timeline/TimelineSeries.js +10 -8
  446. package/assets/js/highcharts/es-modules/Series/Timeline/TimelineSeriesDefaults.js +1 -1
  447. package/assets/js/highcharts/es-modules/Series/TreeUtilities.js +1 -1
  448. package/assets/js/highcharts/es-modules/Series/Treegraph/TreegraphLayout.js +1 -1
  449. package/assets/js/highcharts/es-modules/Series/Treegraph/TreegraphLink.js +1 -1
  450. package/assets/js/highcharts/es-modules/Series/Treegraph/TreegraphNode.js +1 -1
  451. package/assets/js/highcharts/es-modules/Series/Treegraph/TreegraphPoint.js +1 -1
  452. package/assets/js/highcharts/es-modules/Series/Treegraph/TreegraphSeries.js +5 -5
  453. package/assets/js/highcharts/es-modules/Series/Treegraph/TreegraphSeriesDefaults.js +1 -1
  454. package/assets/js/highcharts/es-modules/Series/Treemap/TreemapAlgorithmGroup.js +1 -1
  455. package/assets/js/highcharts/es-modules/Series/Treemap/TreemapNode.js +1 -1
  456. package/assets/js/highcharts/es-modules/Series/Treemap/TreemapPoint.js +1 -1
  457. package/assets/js/highcharts/es-modules/Series/Treemap/TreemapSeries.js +198 -59
  458. package/assets/js/highcharts/es-modules/Series/Treemap/TreemapSeriesDefaults.js +41 -3
  459. package/assets/js/highcharts/es-modules/Series/Treemap/TreemapUtilities.js +1 -1
  460. package/assets/js/highcharts/es-modules/Series/VariablePie/VariablePieSeries.js +1 -1
  461. package/assets/js/highcharts/es-modules/Series/VariablePie/VariablePieSeriesDefaults.js +1 -1
  462. package/assets/js/highcharts/es-modules/Series/Variwide/VariwideComposition.js +2 -2
  463. package/assets/js/highcharts/es-modules/Series/Variwide/VariwidePoint.js +1 -1
  464. package/assets/js/highcharts/es-modules/Series/Variwide/VariwideSeries.js +1 -1
  465. package/assets/js/highcharts/es-modules/Series/Variwide/VariwideSeriesDefaults.js +1 -1
  466. package/assets/js/highcharts/es-modules/Series/Vector/VectorSeries.js +1 -1
  467. package/assets/js/highcharts/es-modules/Series/Vector/VectorSeriesDefaults.js +1 -1
  468. package/assets/js/highcharts/es-modules/Series/Venn/VennPoint.js +1 -1
  469. package/assets/js/highcharts/es-modules/Series/Venn/VennSeries.js +7 -9
  470. package/assets/js/highcharts/es-modules/Series/Venn/VennSeriesDefaults.js +1 -1
  471. package/assets/js/highcharts/es-modules/Series/Venn/VennUtils.js +1 -1
  472. package/assets/js/highcharts/es-modules/Series/Waterfall/WaterfallPoint.js +1 -1
  473. package/assets/js/highcharts/es-modules/Series/Waterfall/WaterfallSeries.js +3 -3
  474. package/assets/js/highcharts/es-modules/Series/Waterfall/WaterfallSeriesDefaults.js +1 -1
  475. package/assets/js/highcharts/es-modules/Series/Windbarb/WindbarbPoint.js +1 -1
  476. package/assets/js/highcharts/es-modules/Series/Windbarb/WindbarbSeries.js +1 -1
  477. package/assets/js/highcharts/es-modules/Series/Windbarb/WindbarbSeriesDefaults.js +1 -1
  478. package/assets/js/highcharts/es-modules/Series/Wordcloud/WordcloudPoint.js +1 -1
  479. package/assets/js/highcharts/es-modules/Series/Wordcloud/WordcloudSeries.js +1 -1
  480. package/assets/js/highcharts/es-modules/Series/Wordcloud/WordcloudSeriesDefaults.js +1 -1
  481. package/assets/js/highcharts/es-modules/Series/Wordcloud/WordcloudUtils.js +1 -1
  482. package/assets/js/highcharts/es-modules/Series/XRange/XRangePoint.js +2 -2
  483. package/assets/js/highcharts/es-modules/Series/XRange/XRangeSeries.js +3 -3
  484. package/assets/js/highcharts/es-modules/Series/XRange/XRangeSeriesDefaults.js +1 -1
  485. package/assets/js/highcharts/es-modules/Shared/BaseForm.js +1 -1
  486. package/assets/js/highcharts/es-modules/Shared/TimeBase.js +826 -0
  487. package/assets/js/highcharts/es-modules/Shared/Types.js +1 -1
  488. package/assets/js/highcharts/es-modules/Stock/Indicators/ArrayUtilities.js +1 -1
  489. package/assets/js/highcharts/es-modules/Stock/Indicators/CMF/CMFIndicator.js +1 -1
  490. package/assets/js/highcharts/es-modules/Stock/Indicators/DMI/DMIIndicator.js +1 -1
  491. package/assets/js/highcharts/es-modules/Stock/Indicators/DisparityIndex/DisparityIndexIndicator.js +1 -1
  492. package/assets/js/highcharts/es-modules/Stock/Indicators/LinearRegression/LinearRegressionIndicator.js +1 -1
  493. package/assets/js/highcharts/es-modules/Stock/Indicators/LinearRegressionAngle/LinearRegressionAngleIndicator.js +1 -1
  494. package/assets/js/highcharts/es-modules/Stock/Indicators/LinearRegressionIntercept/LinearRegressionInterceptIndicator.js +1 -1
  495. package/assets/js/highcharts/es-modules/Stock/Indicators/LinearRegressionSlopes/LinearRegressionSlopesIndicator.js +1 -1
  496. package/assets/js/highcharts/es-modules/Stock/Indicators/MFI/MFIIndicator.js +1 -1
  497. package/assets/js/highcharts/es-modules/Stock/Indicators/MultipleLinesComposition.js +1 -1
  498. package/assets/js/highcharts/es-modules/Stock/Indicators/PSAR/PSARIndicator.js +1 -1
  499. package/assets/js/highcharts/es-modules/Stock/Indicators/ROC/ROCIndicator.js +1 -1
  500. package/assets/js/highcharts/es-modules/Stock/Indicators/VBP/VBPIndicator.js +1 -1
  501. package/assets/js/highcharts/es-modules/Stock/Indicators/VWAP/VWAPIndicator.js +1 -1
  502. package/assets/js/highcharts/es-modules/Stock/Indicators/WMA/WMAIndicator.js +1 -1
  503. package/assets/js/highcharts/es-modules/Stock/Indicators/Zigzag/ZigzagIndicator.js +1 -1
  504. package/assets/js/highcharts/es-modules/Stock/Navigator/ChartNavigatorComposition.js +1 -1
  505. package/assets/js/highcharts/es-modules/Stock/Navigator/Navigator.js +11 -7
  506. package/assets/js/highcharts/es-modules/Stock/Navigator/NavigatorComposition.js +1 -1
  507. package/assets/js/highcharts/es-modules/Stock/Navigator/NavigatorDefaults.js +3 -3
  508. package/assets/js/highcharts/es-modules/Stock/Navigator/NavigatorSymbols.js +1 -1
  509. package/assets/js/highcharts/es-modules/Stock/Navigator/StandaloneNavigator.js +5 -5
  510. package/assets/js/highcharts/es-modules/Stock/Navigator/StandaloneNavigatorDefaults.js +1 -1
  511. package/assets/js/highcharts/es-modules/Stock/RangeSelector/RangeSelector.js +20 -5
  512. package/assets/js/highcharts/es-modules/Stock/RangeSelector/RangeSelectorComposition.js +1 -1
  513. package/assets/js/highcharts/es-modules/Stock/RangeSelector/RangeSelectorDefaults.js +23 -20
  514. package/assets/js/highcharts/es-modules/Stock/Scrollbar/Scrollbar.js +1 -1
  515. package/assets/js/highcharts/es-modules/Stock/Scrollbar/ScrollbarDefaults.js +2 -2
  516. package/assets/js/highcharts/es-modules/Stock/StockTools/StockToolbar.js +2 -2
  517. package/assets/js/highcharts/es-modules/Stock/StockTools/StockTools.js +1 -1
  518. package/assets/js/highcharts/es-modules/Stock/StockTools/StockToolsBindings.js +1 -1
  519. package/assets/js/highcharts/es-modules/Stock/StockTools/StockToolsDefaults.js +1 -1
  520. package/assets/js/highcharts/es-modules/Stock/StockTools/StockToolsGui.js +1 -1
  521. package/assets/js/highcharts/es-modules/Stock/StockTools/StockToolsUtilities.js +1 -1
  522. package/assets/js/highcharts/es-modules/Stock/Utilities/StockUtilities.js +1 -1
  523. package/assets/js/highcharts/es-modules/masters/highcharts-3d.src.js +2 -2
  524. package/assets/js/highcharts/es-modules/masters/highcharts-gantt.src.js +2 -2
  525. package/assets/js/highcharts/es-modules/masters/highcharts-more.src.js +2 -2
  526. package/assets/js/highcharts/es-modules/masters/highcharts.src.js +3 -3
  527. package/assets/js/highcharts/es-modules/masters/highmaps.src.js +2 -2
  528. package/assets/js/highcharts/es-modules/masters/highstock.src.js +2 -2
  529. package/assets/js/highcharts/es-modules/masters/i18n/fr-FR.src.js +524 -0
  530. package/assets/js/highcharts/es-modules/masters/i18n/nb-NO.src.js +524 -0
  531. package/assets/js/highcharts/es-modules/masters/i18n/zh-CN.src.js +524 -0
  532. package/assets/js/highcharts/es-modules/masters/indicators/acceleration-bands.src.js +2 -2
  533. package/assets/js/highcharts/es-modules/masters/indicators/accumulation-distribution.src.js +2 -2
  534. package/assets/js/highcharts/es-modules/masters/indicators/ao.src.js +2 -2
  535. package/assets/js/highcharts/es-modules/masters/indicators/apo.src.js +2 -2
  536. package/assets/js/highcharts/es-modules/masters/indicators/aroon-oscillator.src.js +2 -2
  537. package/assets/js/highcharts/es-modules/masters/indicators/aroon.src.js +2 -2
  538. package/assets/js/highcharts/es-modules/masters/indicators/atr.src.js +2 -2
  539. package/assets/js/highcharts/es-modules/masters/indicators/bollinger-bands.src.js +2 -2
  540. package/assets/js/highcharts/es-modules/masters/indicators/cci.src.js +2 -2
  541. package/assets/js/highcharts/es-modules/masters/indicators/chaikin.src.js +2 -2
  542. package/assets/js/highcharts/es-modules/masters/indicators/cmf.src.js +2 -2
  543. package/assets/js/highcharts/es-modules/masters/indicators/cmo.src.js +2 -2
  544. package/assets/js/highcharts/es-modules/masters/indicators/dema.src.js +2 -2
  545. package/assets/js/highcharts/es-modules/masters/indicators/disparity-index.src.js +2 -2
  546. package/assets/js/highcharts/es-modules/masters/indicators/dmi.src.js +2 -2
  547. package/assets/js/highcharts/es-modules/masters/indicators/dpo.src.js +2 -2
  548. package/assets/js/highcharts/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +2 -2
  549. package/assets/js/highcharts/es-modules/masters/indicators/indicators-all.src.js +2 -2
  550. package/assets/js/highcharts/es-modules/masters/indicators/indicators.src.js +2 -2
  551. package/assets/js/highcharts/es-modules/masters/indicators/keltner-channels.src.js +2 -2
  552. package/assets/js/highcharts/es-modules/masters/indicators/klinger.src.js +2 -2
  553. package/assets/js/highcharts/es-modules/masters/indicators/macd.src.js +2 -2
  554. package/assets/js/highcharts/es-modules/masters/indicators/mfi.src.js +2 -2
  555. package/assets/js/highcharts/es-modules/masters/indicators/momentum.src.js +2 -2
  556. package/assets/js/highcharts/es-modules/masters/indicators/natr.src.js +2 -2
  557. package/assets/js/highcharts/es-modules/masters/indicators/obv.src.js +2 -2
  558. package/assets/js/highcharts/es-modules/masters/indicators/pivot-points.src.js +2 -2
  559. package/assets/js/highcharts/es-modules/masters/indicators/ppo.src.js +2 -2
  560. package/assets/js/highcharts/es-modules/masters/indicators/price-channel.src.js +2 -2
  561. package/assets/js/highcharts/es-modules/masters/indicators/price-envelopes.src.js +2 -2
  562. package/assets/js/highcharts/es-modules/masters/indicators/psar.src.js +2 -2
  563. package/assets/js/highcharts/es-modules/masters/indicators/regressions.src.js +2 -2
  564. package/assets/js/highcharts/es-modules/masters/indicators/roc.src.js +2 -2
  565. package/assets/js/highcharts/es-modules/masters/indicators/rsi.src.js +2 -2
  566. package/assets/js/highcharts/es-modules/masters/indicators/slow-stochastic.src.js +2 -2
  567. package/assets/js/highcharts/es-modules/masters/indicators/stochastic.src.js +2 -2
  568. package/assets/js/highcharts/es-modules/masters/indicators/supertrend.src.js +2 -2
  569. package/assets/js/highcharts/es-modules/masters/indicators/tema.src.js +2 -2
  570. package/assets/js/highcharts/es-modules/masters/indicators/trendline.src.js +2 -2
  571. package/assets/js/highcharts/es-modules/masters/indicators/trix.src.js +2 -2
  572. package/assets/js/highcharts/es-modules/masters/indicators/volume-by-price.src.js +2 -2
  573. package/assets/js/highcharts/es-modules/masters/indicators/vwap.src.js +2 -2
  574. package/assets/js/highcharts/es-modules/masters/indicators/williams-r.src.js +2 -2
  575. package/assets/js/highcharts/es-modules/masters/indicators/wma.src.js +2 -2
  576. package/assets/js/highcharts/es-modules/masters/indicators/zigzag.src.js +2 -2
  577. package/assets/js/highcharts/es-modules/masters/modules/accessibility.src.js +2 -2
  578. package/assets/js/highcharts/es-modules/masters/modules/annotations-advanced.src.js +2 -2
  579. package/assets/js/highcharts/es-modules/masters/modules/annotations.src.js +2 -2
  580. package/assets/js/highcharts/es-modules/masters/modules/arc-diagram.src.js +1 -1
  581. package/assets/js/highcharts/es-modules/masters/modules/arrow-symbols.src.js +2 -2
  582. package/assets/js/highcharts/es-modules/masters/modules/boost-canvas.src.js +2 -2
  583. package/assets/js/highcharts/es-modules/masters/modules/boost.src.js +3 -3
  584. package/assets/js/highcharts/es-modules/masters/modules/broken-axis.src.js +2 -2
  585. package/assets/js/highcharts/es-modules/masters/modules/bullet.src.js +2 -2
  586. package/assets/js/highcharts/es-modules/masters/modules/coloraxis.src.js +2 -2
  587. package/assets/js/highcharts/es-modules/masters/modules/current-date-indicator.src.js +2 -2
  588. package/assets/js/highcharts/es-modules/masters/modules/cylinder.src.js +2 -2
  589. package/assets/js/highcharts/es-modules/masters/modules/data-tools.src.js +2 -2
  590. package/assets/js/highcharts/es-modules/masters/modules/data.src.js +2 -2
  591. package/assets/js/highcharts/es-modules/masters/modules/datagrouping.src.js +2 -2
  592. package/assets/js/highcharts/es-modules/masters/modules/debugger.src.js +2 -2
  593. package/assets/js/highcharts/es-modules/masters/modules/dependency-wheel.src.js +2 -2
  594. package/assets/js/highcharts/es-modules/masters/modules/dotplot.src.js +2 -2
  595. package/assets/js/highcharts/es-modules/masters/modules/drag-panes.src.js +2 -2
  596. package/assets/js/highcharts/es-modules/masters/modules/draggable-points.src.js +2 -2
  597. package/assets/js/highcharts/es-modules/masters/modules/drilldown.src.js +1 -1
  598. package/assets/js/highcharts/es-modules/masters/modules/dumbbell.src.js +2 -2
  599. package/assets/js/highcharts/es-modules/masters/modules/export-data.src.js +2 -2
  600. package/assets/js/highcharts/es-modules/masters/modules/exporting.src.js +2 -2
  601. package/assets/js/highcharts/es-modules/masters/modules/flowmap.src.js +2 -2
  602. package/assets/js/highcharts/es-modules/masters/modules/full-screen.src.js +2 -2
  603. package/assets/js/highcharts/es-modules/masters/modules/funnel.src.js +2 -2
  604. package/assets/js/highcharts/es-modules/masters/modules/funnel3d.src.js +2 -2
  605. package/assets/js/highcharts/es-modules/masters/modules/gantt.src.js +2 -2
  606. package/assets/js/highcharts/es-modules/masters/modules/geoheatmap.src.js +2 -2
  607. package/assets/js/highcharts/es-modules/masters/modules/grid-axis.src.js +2 -2
  608. package/assets/js/highcharts/es-modules/masters/modules/heatmap.src.js +2 -2
  609. package/assets/js/highcharts/es-modules/masters/modules/heikinashi.src.js +2 -2
  610. package/assets/js/highcharts/es-modules/masters/modules/histogram-bellcurve.src.js +2 -2
  611. package/assets/js/highcharts/es-modules/masters/modules/hollowcandlestick.src.js +2 -2
  612. package/assets/js/highcharts/es-modules/masters/modules/item-series.src.js +1 -1
  613. package/assets/js/highcharts/es-modules/masters/modules/lollipop.src.js +2 -2
  614. package/assets/js/highcharts/es-modules/masters/modules/map.src.js +2 -2
  615. package/assets/js/highcharts/es-modules/masters/modules/marker-clusters.src.js +2 -2
  616. package/assets/js/highcharts/es-modules/masters/modules/mouse-wheel-zoom.src.js +1 -1
  617. package/assets/js/highcharts/es-modules/masters/modules/navigator.src.js +2 -2
  618. package/assets/js/highcharts/es-modules/masters/modules/networkgraph.src.js +2 -2
  619. package/assets/js/highcharts/es-modules/masters/modules/no-data-to-display.src.js +2 -2
  620. package/assets/js/highcharts/es-modules/masters/modules/offline-exporting.src.js +2 -2
  621. package/assets/js/highcharts/es-modules/masters/modules/organization.src.js +2 -2
  622. package/assets/js/highcharts/es-modules/masters/modules/parallel-coordinates.src.js +2 -2
  623. package/assets/js/highcharts/es-modules/masters/modules/pareto.src.js +2 -2
  624. package/assets/js/highcharts/es-modules/masters/modules/pathfinder.src.js +2 -2
  625. package/assets/js/highcharts/es-modules/masters/modules/pattern-fill.src.js +2 -2
  626. package/assets/js/highcharts/es-modules/masters/modules/pictorial.src.js +2 -2
  627. package/assets/js/highcharts/es-modules/masters/modules/pointandfigure.src.js +2 -2
  628. package/assets/js/highcharts/es-modules/masters/modules/price-indicator.src.js +2 -2
  629. package/assets/js/highcharts/es-modules/masters/modules/pyramid3d.src.js +2 -2
  630. package/assets/js/highcharts/es-modules/masters/modules/renko.src.js +2 -2
  631. package/assets/js/highcharts/es-modules/masters/modules/sankey.src.js +2 -2
  632. package/assets/js/highcharts/es-modules/masters/modules/series-label.src.js +2 -2
  633. package/assets/js/highcharts/es-modules/masters/modules/series-on-point.src.js +2 -2
  634. package/assets/js/highcharts/es-modules/masters/modules/solid-gauge.src.js +2 -2
  635. package/assets/js/highcharts/es-modules/masters/modules/sonification.src.js +2 -2
  636. package/assets/js/highcharts/es-modules/masters/modules/static-scale.src.js +2 -2
  637. package/assets/js/highcharts/es-modules/masters/modules/stock-tools.src.js +2 -2
  638. package/assets/js/highcharts/es-modules/masters/modules/stock.src.js +2 -2
  639. package/assets/js/highcharts/es-modules/masters/modules/streamgraph.src.js +2 -2
  640. package/assets/js/highcharts/es-modules/masters/modules/sunburst.src.js +2 -2
  641. package/assets/js/highcharts/es-modules/masters/modules/textpath.src.js +2 -2
  642. package/assets/js/highcharts/es-modules/masters/modules/tiledwebmap.src.js +2 -2
  643. package/assets/js/highcharts/es-modules/masters/modules/tilemap.src.js +2 -2
  644. package/assets/js/highcharts/es-modules/masters/modules/timeline.src.js +2 -2
  645. package/assets/js/highcharts/es-modules/masters/modules/treegraph.src.js +2 -2
  646. package/assets/js/highcharts/es-modules/masters/modules/treegrid.src.js +2 -2
  647. package/assets/js/highcharts/es-modules/masters/modules/treemap.src.js +2 -2
  648. package/assets/js/highcharts/es-modules/masters/modules/variable-pie.src.js +2 -2
  649. package/assets/js/highcharts/es-modules/masters/modules/variwide.src.js +2 -2
  650. package/assets/js/highcharts/es-modules/masters/modules/vector.src.js +2 -2
  651. package/assets/js/highcharts/es-modules/masters/modules/venn.src.js +2 -2
  652. package/assets/js/highcharts/es-modules/masters/modules/windbarb.src.js +2 -2
  653. package/assets/js/highcharts/es-modules/masters/modules/wordcloud.src.js +2 -2
  654. package/assets/js/highcharts/es-modules/masters/modules/xrange.src.js +2 -2
  655. package/assets/js/highcharts/es-modules/masters/standalone-navigator.src.js +1 -1
  656. package/assets/js/highcharts/es-modules/masters/themes/avocado.src.js +2 -2
  657. package/assets/js/highcharts/es-modules/masters/themes/brand-dark.src.js +2 -2
  658. package/assets/js/highcharts/es-modules/masters/themes/brand-light.src.js +2 -2
  659. package/assets/js/highcharts/es-modules/masters/themes/dark-blue.src.js +2 -2
  660. package/assets/js/highcharts/es-modules/masters/themes/dark-green.src.js +2 -2
  661. package/assets/js/highcharts/es-modules/masters/themes/dark-unica.src.js +2 -2
  662. package/assets/js/highcharts/es-modules/masters/themes/gray.src.js +2 -2
  663. package/assets/js/highcharts/es-modules/masters/themes/grid-light.src.js +2 -2
  664. package/assets/js/highcharts/es-modules/masters/themes/grid.src.js +2 -2
  665. package/assets/js/highcharts/es-modules/masters/themes/high-contrast-dark.src.js +2 -2
  666. package/assets/js/highcharts/es-modules/masters/themes/high-contrast-light.src.js +2 -2
  667. package/assets/js/highcharts/es-modules/masters/themes/sand-signika.src.js +2 -2
  668. package/assets/js/highcharts/es-modules/masters/themes/skies.src.js +2 -2
  669. package/assets/js/highcharts/es-modules/masters/themes/sunset.src.js +2 -2
  670. package/assets/js/highcharts/esm/highcharts-3d.js +1 -0
  671. package/assets/js/highcharts/esm/highcharts-3d.src.js +5053 -0
  672. package/assets/js/highcharts/esm/highcharts-gantt.js +1 -0
  673. package/assets/js/highcharts/esm/highcharts-gantt.src.js +56 -0
  674. package/assets/js/highcharts/esm/highcharts-more.js +1 -0
  675. package/assets/js/highcharts/esm/highcharts-more.src.js +12257 -0
  676. package/assets/js/highcharts/esm/highcharts.js +2 -0
  677. package/assets/js/highcharts/esm/highcharts.src.js +47243 -0
  678. package/assets/js/highcharts/esm/highmaps.js +1 -0
  679. package/assets/js/highcharts/esm/highmaps.src.js +56 -0
  680. package/assets/js/highcharts/esm/highstock.js +1 -0
  681. package/assets/js/highcharts/esm/highstock.src.js +56 -0
  682. package/assets/js/highcharts/esm/i18n/fr-FR.js +1 -0
  683. package/assets/js/highcharts/esm/i18n/fr-FR.src.js +567 -0
  684. package/assets/js/highcharts/esm/i18n/nb-NO.js +1 -0
  685. package/assets/js/highcharts/esm/i18n/nb-NO.src.js +567 -0
  686. package/assets/js/highcharts/esm/i18n/zh-CN.js +1 -0
  687. package/assets/js/highcharts/esm/i18n/zh-CN.src.js +567 -0
  688. package/assets/js/highcharts/esm/indicators/acceleration-bands.js +1 -0
  689. package/assets/js/highcharts/esm/indicators/acceleration-bands.src.js +578 -0
  690. package/assets/js/highcharts/esm/indicators/accumulation-distribution.js +1 -0
  691. package/assets/js/highcharts/esm/indicators/accumulation-distribution.src.js +214 -0
  692. package/assets/js/highcharts/esm/indicators/ao.js +1 -0
  693. package/assets/js/highcharts/esm/indicators/ao.src.js +270 -0
  694. package/assets/js/highcharts/esm/indicators/apo.js +1 -0
  695. package/assets/js/highcharts/esm/indicators/apo.src.js +217 -0
  696. package/assets/js/highcharts/esm/indicators/aroon-oscillator.js +1 -0
  697. package/assets/js/highcharts/esm/indicators/aroon-oscillator.src.js +473 -0
  698. package/assets/js/highcharts/esm/indicators/aroon.js +1 -0
  699. package/assets/js/highcharts/esm/indicators/aroon.src.js +538 -0
  700. package/assets/js/highcharts/esm/indicators/atr.js +1 -0
  701. package/assets/js/highcharts/esm/indicators/atr.src.js +220 -0
  702. package/assets/js/highcharts/esm/indicators/bollinger-bands.js +1 -0
  703. package/assets/js/highcharts/esm/indicators/bollinger-bands.src.js +584 -0
  704. package/assets/js/highcharts/esm/indicators/cci.js +1 -0
  705. package/assets/js/highcharts/esm/indicators/cci.src.js +215 -0
  706. package/assets/js/highcharts/esm/indicators/chaikin.js +1 -0
  707. package/assets/js/highcharts/esm/indicators/chaikin.src.js +379 -0
  708. package/assets/js/highcharts/esm/indicators/cmf.js +1 -0
  709. package/assets/js/highcharts/esm/indicators/cmf.src.js +307 -0
  710. package/assets/js/highcharts/esm/indicators/cmo.js +1 -0
  711. package/assets/js/highcharts/esm/indicators/cmo.src.js +226 -0
  712. package/assets/js/highcharts/esm/indicators/dema.js +1 -0
  713. package/assets/js/highcharts/esm/indicators/dema.src.js +220 -0
  714. package/assets/js/highcharts/esm/indicators/disparity-index.js +1 -0
  715. package/assets/js/highcharts/esm/indicators/disparity-index.src.js +223 -0
  716. package/assets/js/highcharts/esm/indicators/dmi.js +1 -0
  717. package/assets/js/highcharts/esm/indicators/dmi.src.js +610 -0
  718. package/assets/js/highcharts/esm/indicators/dpo.js +1 -0
  719. package/assets/js/highcharts/esm/indicators/dpo.src.js +221 -0
  720. package/assets/js/highcharts/esm/indicators/ema.js +1 -0
  721. package/assets/js/highcharts/esm/indicators/ema.src.js +52 -0
  722. package/assets/js/highcharts/esm/indicators/ichimoku-kinko-hyo.js +1 -0
  723. package/assets/js/highcharts/esm/indicators/ichimoku-kinko-hyo.src.js +772 -0
  724. package/assets/js/highcharts/esm/indicators/indicators-all.js +1 -0
  725. package/assets/js/highcharts/esm/indicators/indicators-all.src.js +10578 -0
  726. package/assets/js/highcharts/esm/indicators/indicators.js +1 -0
  727. package/assets/js/highcharts/esm/indicators/indicators.src.js +900 -0
  728. package/assets/js/highcharts/esm/indicators/keltner-channels.js +1 -0
  729. package/assets/js/highcharts/esm/indicators/keltner-channels.src.js +569 -0
  730. package/assets/js/highcharts/esm/indicators/klinger.js +1 -0
  731. package/assets/js/highcharts/esm/indicators/klinger.src.js +602 -0
  732. package/assets/js/highcharts/esm/indicators/macd.js +1 -0
  733. package/assets/js/highcharts/esm/indicators/macd.src.js +445 -0
  734. package/assets/js/highcharts/esm/indicators/mfi.js +1 -0
  735. package/assets/js/highcharts/esm/indicators/mfi.src.js +270 -0
  736. package/assets/js/highcharts/esm/indicators/momentum.js +1 -0
  737. package/assets/js/highcharts/esm/indicators/momentum.src.js +196 -0
  738. package/assets/js/highcharts/esm/indicators/natr.js +1 -0
  739. package/assets/js/highcharts/esm/indicators/natr.src.js +170 -0
  740. package/assets/js/highcharts/esm/indicators/obv.js +1 -0
  741. package/assets/js/highcharts/esm/indicators/obv.src.js +226 -0
  742. package/assets/js/highcharts/esm/indicators/pivot-points.js +1 -0
  743. package/assets/js/highcharts/esm/indicators/pivot-points.src.js +426 -0
  744. package/assets/js/highcharts/esm/indicators/ppo.js +1 -0
  745. package/assets/js/highcharts/esm/indicators/ppo.src.js +219 -0
  746. package/assets/js/highcharts/esm/indicators/price-channel.js +1 -0
  747. package/assets/js/highcharts/esm/indicators/price-channel.src.js +604 -0
  748. package/assets/js/highcharts/esm/indicators/price-envelopes.js +1 -0
  749. package/assets/js/highcharts/esm/indicators/price-envelopes.src.js +557 -0
  750. package/assets/js/highcharts/esm/indicators/psar.js +1 -0
  751. package/assets/js/highcharts/esm/indicators/psar.src.js +362 -0
  752. package/assets/js/highcharts/esm/indicators/regressions.js +1 -0
  753. package/assets/js/highcharts/esm/indicators/regressions.src.js +626 -0
  754. package/assets/js/highcharts/esm/indicators/roc.js +1 -0
  755. package/assets/js/highcharts/esm/indicators/roc.src.js +239 -0
  756. package/assets/js/highcharts/esm/indicators/rsi.js +1 -0
  757. package/assets/js/highcharts/esm/indicators/rsi.src.js +239 -0
  758. package/assets/js/highcharts/esm/indicators/slow-stochastic.js +1 -0
  759. package/assets/js/highcharts/esm/indicators/slow-stochastic.src.js +202 -0
  760. package/assets/js/highcharts/esm/indicators/stochastic.js +1 -0
  761. package/assets/js/highcharts/esm/indicators/stochastic.src.js +622 -0
  762. package/assets/js/highcharts/esm/indicators/supertrend.js +1 -0
  763. package/assets/js/highcharts/esm/indicators/supertrend.src.js +548 -0
  764. package/assets/js/highcharts/esm/indicators/tema.js +1 -0
  765. package/assets/js/highcharts/esm/indicators/tema.src.js +253 -0
  766. package/assets/js/highcharts/esm/indicators/trendline.js +1 -0
  767. package/assets/js/highcharts/esm/indicators/trendline.src.js +212 -0
  768. package/assets/js/highcharts/esm/indicators/trix.js +1 -0
  769. package/assets/js/highcharts/esm/indicators/trix.src.js +169 -0
  770. package/assets/js/highcharts/esm/indicators/volume-by-price.js +1 -0
  771. package/assets/js/highcharts/esm/indicators/volume-by-price.src.js +698 -0
  772. package/assets/js/highcharts/esm/indicators/vwap.js +1 -0
  773. package/assets/js/highcharts/esm/indicators/vwap.src.js +251 -0
  774. package/assets/js/highcharts/esm/indicators/williams-r.js +1 -0
  775. package/assets/js/highcharts/esm/indicators/williams-r.src.js +256 -0
  776. package/assets/js/highcharts/esm/indicators/wma.js +1 -0
  777. package/assets/js/highcharts/esm/indicators/wma.src.js +228 -0
  778. package/assets/js/highcharts/esm/indicators/zigzag.js +1 -0
  779. package/assets/js/highcharts/esm/indicators/zigzag.src.js +284 -0
  780. package/assets/js/highcharts/esm/modules/accessibility.js +1 -0
  781. package/assets/js/highcharts/esm/modules/accessibility.src.js +13670 -0
  782. package/assets/js/highcharts/esm/modules/annotations-advanced.js +1 -0
  783. package/assets/js/highcharts/esm/modules/annotations-advanced.src.js +8224 -0
  784. package/assets/js/highcharts/esm/modules/annotations.js +1 -0
  785. package/assets/js/highcharts/esm/modules/annotations.src.js +7094 -0
  786. package/assets/js/highcharts/esm/modules/arc-diagram.js +1 -0
  787. package/assets/js/highcharts/esm/modules/arc-diagram.src.js +1427 -0
  788. package/assets/js/highcharts/esm/modules/arrow-symbols.js +1 -0
  789. package/assets/js/highcharts/esm/modules/arrow-symbols.src.js +235 -0
  790. package/assets/js/highcharts/esm/modules/boost-canvas.js +1 -0
  791. package/assets/js/highcharts/esm/modules/boost-canvas.src.js +4419 -0
  792. package/assets/js/highcharts/esm/modules/boost.js +1 -0
  793. package/assets/js/highcharts/esm/modules/boost.src.js +4362 -0
  794. package/assets/js/highcharts/esm/modules/broken-axis.js +1 -0
  795. package/assets/js/highcharts/esm/modules/broken-axis.src.js +673 -0
  796. package/assets/js/highcharts/esm/modules/bullet.js +1 -0
  797. package/assets/js/highcharts/esm/modules/bullet.src.js +452 -0
  798. package/assets/js/highcharts/esm/modules/coloraxis.js +1 -0
  799. package/assets/js/highcharts/esm/modules/coloraxis.src.js +1527 -0
  800. package/assets/js/highcharts/esm/modules/current-date-indicator.js +1 -0
  801. package/assets/js/highcharts/esm/modules/current-date-indicator.src.js +198 -0
  802. package/assets/js/highcharts/esm/modules/cylinder.js +1 -0
  803. package/assets/js/highcharts/esm/modules/cylinder.src.js +901 -0
  804. package/assets/js/highcharts/esm/modules/data-tools.js +1 -0
  805. package/assets/js/highcharts/esm/modules/data-tools.src.js +8828 -0
  806. package/assets/js/highcharts/esm/modules/data.js +1 -0
  807. package/assets/js/highcharts/esm/modules/data.src.js +2424 -0
  808. package/assets/js/highcharts/esm/modules/datagrouping.js +1 -0
  809. package/assets/js/highcharts/esm/modules/datagrouping.src.js +2161 -0
  810. package/assets/js/highcharts/esm/modules/debugger.js +1 -0
  811. package/assets/js/highcharts/esm/modules/debugger.src.js +307 -0
  812. package/assets/js/highcharts/esm/modules/dependency-wheel.js +1 -0
  813. package/assets/js/highcharts/esm/modules/dependency-wheel.src.js +1045 -0
  814. package/assets/js/highcharts/esm/modules/dotplot.js +1 -0
  815. package/assets/js/highcharts/esm/modules/dotplot.src.js +237 -0
  816. package/assets/js/highcharts/esm/modules/drag-panes.js +1 -0
  817. package/assets/js/highcharts/esm/modules/drag-panes.src.js +672 -0
  818. package/assets/js/highcharts/esm/modules/draggable-points.js +1 -0
  819. package/assets/js/highcharts/esm/modules/draggable-points.src.js +2596 -0
  820. package/assets/js/highcharts/esm/modules/drilldown.js +1 -0
  821. package/assets/js/highcharts/esm/modules/drilldown.src.js +2743 -0
  822. package/assets/js/highcharts/esm/modules/dumbbell.js +1 -0
  823. package/assets/js/highcharts/esm/modules/dumbbell.src.js +736 -0
  824. package/assets/js/highcharts/esm/modules/export-data.js +1 -0
  825. package/assets/js/highcharts/esm/modules/export-data.src.js +1399 -0
  826. package/assets/js/highcharts/esm/modules/exporting.js +1 -0
  827. package/assets/js/highcharts/esm/modules/exporting.src.js +2985 -0
  828. package/assets/js/highcharts/esm/modules/flowmap.js +1 -0
  829. package/assets/js/highcharts/esm/modules/flowmap.src.js +863 -0
  830. package/assets/js/highcharts/esm/modules/full-screen.js +1 -0
  831. package/assets/js/highcharts/esm/modules/full-screen.src.js +407 -0
  832. package/assets/js/highcharts/esm/modules/funnel.js +1 -0
  833. package/assets/js/highcharts/esm/modules/funnel.src.js +1282 -0
  834. package/assets/js/highcharts/esm/modules/funnel3d.js +1 -0
  835. package/assets/js/highcharts/esm/modules/funnel3d.src.js +1227 -0
  836. package/assets/js/highcharts/esm/modules/gantt.js +1 -0
  837. package/assets/js/highcharts/esm/modules/gantt.src.js +14167 -0
  838. package/assets/js/highcharts/esm/modules/geoheatmap.js +1 -0
  839. package/assets/js/highcharts/esm/modules/geoheatmap.src.js +747 -0
  840. package/assets/js/highcharts/esm/modules/grid-axis.js +1 -0
  841. package/assets/js/highcharts/esm/modules/grid-axis.src.js +1129 -0
  842. package/assets/js/highcharts/esm/modules/heatmap.js +1 -0
  843. package/assets/js/highcharts/esm/modules/heatmap.src.js +1360 -0
  844. package/assets/js/highcharts/esm/modules/heikinashi.js +1 -0
  845. package/assets/js/highcharts/esm/modules/heikinashi.src.js +380 -0
  846. package/assets/js/highcharts/esm/modules/histogram-bellcurve.js +1 -0
  847. package/assets/js/highcharts/esm/modules/histogram-bellcurve.src.js +681 -0
  848. package/assets/js/highcharts/esm/modules/hollowcandlestick.js +1 -0
  849. package/assets/js/highcharts/esm/modules/hollowcandlestick.src.js +473 -0
  850. package/assets/js/highcharts/esm/modules/item-series.js +1 -0
  851. package/assets/js/highcharts/esm/modules/item-series.src.js +3060 -0
  852. package/assets/js/highcharts/esm/modules/lollipop.js +1 -0
  853. package/assets/js/highcharts/esm/modules/lollipop.src.js +335 -0
  854. package/assets/js/highcharts/esm/modules/map.js +1 -0
  855. package/assets/js/highcharts/esm/modules/map.src.js +9897 -0
  856. package/assets/js/highcharts/esm/modules/marker-clusters.js +1 -0
  857. package/assets/js/highcharts/esm/modules/marker-clusters.src.js +2160 -0
  858. package/assets/js/highcharts/esm/modules/mouse-wheel-zoom.js +1 -0
  859. package/assets/js/highcharts/esm/modules/mouse-wheel-zoom.src.js +357 -0
  860. package/assets/js/highcharts/esm/modules/navigator.js +1 -0
  861. package/assets/js/highcharts/esm/modules/navigator.src.js +4344 -0
  862. package/assets/js/highcharts/esm/modules/networkgraph.js +1 -0
  863. package/assets/js/highcharts/esm/modules/networkgraph.src.js +3460 -0
  864. package/assets/js/highcharts/esm/modules/no-data-to-display.js +1 -0
  865. package/assets/js/highcharts/esm/modules/no-data-to-display.src.js +310 -0
  866. package/assets/js/highcharts/esm/modules/offline-exporting.js +1 -0
  867. package/assets/js/highcharts/esm/modules/offline-exporting.src.js +3701 -0
  868. package/assets/js/highcharts/esm/modules/organization.js +1 -0
  869. package/assets/js/highcharts/esm/modules/organization.src.js +1320 -0
  870. package/assets/js/highcharts/esm/modules/parallel-coordinates.js +1 -0
  871. package/assets/js/highcharts/esm/modules/parallel-coordinates.src.js +713 -0
  872. package/assets/js/highcharts/esm/modules/pareto.js +1 -0
  873. package/assets/js/highcharts/esm/modules/pareto.src.js +389 -0
  874. package/assets/js/highcharts/esm/modules/pathfinder.js +1 -0
  875. package/assets/js/highcharts/esm/modules/pathfinder.src.js +2394 -0
  876. package/assets/js/highcharts/esm/modules/pattern-fill.js +1 -0
  877. package/assets/js/highcharts/esm/modules/pattern-fill.src.js +780 -0
  878. package/assets/js/highcharts/esm/modules/pictorial.js +1 -0
  879. package/assets/js/highcharts/esm/modules/pictorial.src.js +1436 -0
  880. package/assets/js/highcharts/esm/modules/pointandfigure.js +1 -0
  881. package/assets/js/highcharts/esm/modules/pointandfigure.src.js +562 -0
  882. package/assets/js/highcharts/esm/modules/price-indicator.js +1 -0
  883. package/assets/js/highcharts/esm/modules/price-indicator.src.js +450 -0
  884. package/assets/js/highcharts/esm/modules/pyramid3d.js +1 -0
  885. package/assets/js/highcharts/esm/modules/pyramid3d.src.js +265 -0
  886. package/assets/js/highcharts/esm/modules/renko.js +1 -0
  887. package/assets/js/highcharts/esm/modules/renko.src.js +383 -0
  888. package/assets/js/highcharts/esm/modules/sankey.js +1 -0
  889. package/assets/js/highcharts/esm/modules/sankey.src.js +2286 -0
  890. package/assets/js/highcharts/esm/modules/series-label.js +1 -0
  891. package/assets/js/highcharts/esm/modules/series-label.src.js +945 -0
  892. package/assets/js/highcharts/esm/modules/series-on-point.js +1 -0
  893. package/assets/js/highcharts/esm/modules/series-on-point.src.js +898 -0
  894. package/assets/js/highcharts/esm/modules/solid-gauge.js +1 -0
  895. package/assets/js/highcharts/esm/modules/solid-gauge.src.js +1004 -0
  896. package/assets/js/highcharts/esm/modules/sonification.js +1 -0
  897. package/assets/js/highcharts/esm/modules/sonification.src.js +5561 -0
  898. package/assets/js/highcharts/esm/modules/static-scale.js +1 -0
  899. package/assets/js/highcharts/esm/modules/static-scale.src.js +166 -0
  900. package/assets/js/highcharts/esm/modules/stock-tools.js +1 -0
  901. package/assets/js/highcharts/esm/modules/stock-tools.src.js +5725 -0
  902. package/assets/js/highcharts/esm/modules/stock.js +1 -0
  903. package/assets/js/highcharts/esm/modules/stock.src.js +11189 -0
  904. package/assets/js/highcharts/esm/modules/streamgraph.js +1 -0
  905. package/assets/js/highcharts/esm/modules/streamgraph.src.js +284 -0
  906. package/assets/js/highcharts/esm/modules/sunburst.js +1 -0
  907. package/assets/js/highcharts/esm/modules/sunburst.src.js +5294 -0
  908. package/assets/js/highcharts/esm/modules/textpath.js +1 -0
  909. package/assets/js/highcharts/esm/modules/textpath.src.js +288 -0
  910. package/assets/js/highcharts/esm/modules/tiledwebmap.js +4 -0
  911. package/assets/js/highcharts/esm/modules/tiledwebmap.src.js +1122 -0
  912. package/assets/js/highcharts/esm/modules/tilemap.js +1 -0
  913. package/assets/js/highcharts/esm/modules/tilemap.src.js +1095 -0
  914. package/assets/js/highcharts/esm/modules/timeline.js +1 -0
  915. package/assets/js/highcharts/esm/modules/timeline.src.js +755 -0
  916. package/assets/js/highcharts/esm/modules/treegraph.js +1 -0
  917. package/assets/js/highcharts/esm/modules/treegraph.src.js +2282 -0
  918. package/assets/js/highcharts/esm/modules/treegrid.js +1 -0
  919. package/assets/js/highcharts/esm/modules/treegrid.src.js +3145 -0
  920. package/assets/js/highcharts/esm/modules/treemap.js +1 -0
  921. package/assets/js/highcharts/esm/modules/treemap.src.js +3681 -0
  922. package/assets/js/highcharts/esm/modules/variable-pie.js +1 -0
  923. package/assets/js/highcharts/esm/modules/variable-pie.src.js +498 -0
  924. package/assets/js/highcharts/esm/modules/variwide.js +1 -0
  925. package/assets/js/highcharts/esm/modules/variwide.src.js +539 -0
  926. package/assets/js/highcharts/esm/modules/vector.js +1 -0
  927. package/assets/js/highcharts/esm/modules/vector.src.js +415 -0
  928. package/assets/js/highcharts/esm/modules/venn.js +1 -0
  929. package/assets/js/highcharts/esm/modules/venn.src.js +1978 -0
  930. package/assets/js/highcharts/esm/modules/windbarb.js +1 -0
  931. package/assets/js/highcharts/esm/modules/windbarb.src.js +782 -0
  932. package/assets/js/highcharts/esm/modules/wordcloud.js +1 -0
  933. package/assets/js/highcharts/esm/modules/wordcloud.src.js +1392 -0
  934. package/assets/js/highcharts/esm/modules/xrange.js +1 -0
  935. package/assets/js/highcharts/esm/modules/xrange.src.js +858 -0
  936. package/assets/js/highcharts/esm/standalone-navigator.js +2 -0
  937. package/assets/js/highcharts/esm/standalone-navigator.src.js +51291 -0
  938. package/assets/js/highcharts/esm/themes/avocado.js +1 -0
  939. package/assets/js/highcharts/esm/themes/avocado.src.js +127 -0
  940. package/assets/js/highcharts/esm/themes/brand-dark.js +1 -0
  941. package/assets/js/highcharts/esm/themes/brand-dark.src.js +361 -0
  942. package/assets/js/highcharts/esm/themes/brand-light.js +1 -0
  943. package/assets/js/highcharts/esm/themes/brand-light.src.js +316 -0
  944. package/assets/js/highcharts/esm/themes/dark-blue.js +1 -0
  945. package/assets/js/highcharts/esm/themes/dark-blue.src.js +335 -0
  946. package/assets/js/highcharts/esm/themes/dark-green.js +1 -0
  947. package/assets/js/highcharts/esm/themes/dark-green.src.js +335 -0
  948. package/assets/js/highcharts/esm/themes/dark-unica.js +1 -0
  949. package/assets/js/highcharts/esm/themes/dark-unica.src.js +304 -0
  950. package/assets/js/highcharts/esm/themes/gray.js +1 -0
  951. package/assets/js/highcharts/esm/themes/gray.src.js +344 -0
  952. package/assets/js/highcharts/esm/themes/grid-light.js +1 -0
  953. package/assets/js/highcharts/esm/themes/grid-light.src.js +171 -0
  954. package/assets/js/highcharts/esm/themes/grid.js +1 -0
  955. package/assets/js/highcharts/esm/themes/grid.src.js +195 -0
  956. package/assets/js/highcharts/esm/themes/high-contrast-dark.js +1 -0
  957. package/assets/js/highcharts/esm/themes/high-contrast-dark.src.js +294 -0
  958. package/assets/js/highcharts/esm/themes/high-contrast-light.js +1 -0
  959. package/assets/js/highcharts/esm/themes/high-contrast-light.src.js +134 -0
  960. package/assets/js/highcharts/esm/themes/sand-signika.js +1 -0
  961. package/assets/js/highcharts/esm/themes/sand-signika.src.js +201 -0
  962. package/assets/js/highcharts/esm/themes/skies.js +1 -0
  963. package/assets/js/highcharts/esm/themes/skies.src.js +188 -0
  964. package/assets/js/highcharts/esm/themes/sunset.js +1 -0
  965. package/assets/js/highcharts/esm/themes/sunset.src.js +126 -0
  966. package/assets/js/highcharts/highcharts-3d.js +1 -9
  967. package/assets/js/highcharts/highcharts-3d.src.js +39 -40
  968. package/assets/js/highcharts/highcharts-gantt.js +2 -16
  969. package/assets/js/highcharts/highcharts-gantt.src.js +1556 -962
  970. package/assets/js/highcharts/highcharts-more.js +1 -9
  971. package/assets/js/highcharts/highcharts-more.src.js +179 -142
  972. package/assets/js/highcharts/highcharts.js +2 -9
  973. package/assets/js/highcharts/highcharts.src.js +1420 -850
  974. package/assets/js/highcharts/highmaps.js +2 -16
  975. package/assets/js/highcharts/highmaps.src.js +1491 -936
  976. package/assets/js/highcharts/highstock.js +2 -16
  977. package/assets/js/highcharts/highstock.src.js +1568 -963
  978. package/assets/js/highcharts/i18n/fr-FR.js +1 -0
  979. package/assets/js/highcharts/i18n/fr-FR.src.js +615 -0
  980. package/assets/js/highcharts/i18n/nb-NO.js +1 -0
  981. package/assets/js/highcharts/i18n/nb-NO.src.js +615 -0
  982. package/assets/js/highcharts/i18n/zh-CN.js +1 -0
  983. package/assets/js/highcharts/i18n/zh-CN.src.js +615 -0
  984. package/assets/js/highcharts/indicators/acceleration-bands.js +1 -12
  985. package/assets/js/highcharts/indicators/acceleration-bands.src.js +3 -3
  986. package/assets/js/highcharts/indicators/accumulation-distribution.js +1 -12
  987. package/assets/js/highcharts/indicators/accumulation-distribution.src.js +2 -2
  988. package/assets/js/highcharts/indicators/ao.js +1 -12
  989. package/assets/js/highcharts/indicators/ao.src.js +2 -2
  990. package/assets/js/highcharts/indicators/apo.js +1 -12
  991. package/assets/js/highcharts/indicators/apo.src.js +2 -2
  992. package/assets/js/highcharts/indicators/aroon-oscillator.js +1 -12
  993. package/assets/js/highcharts/indicators/aroon-oscillator.src.js +3 -3
  994. package/assets/js/highcharts/indicators/aroon.js +1 -12
  995. package/assets/js/highcharts/indicators/aroon.src.js +3 -3
  996. package/assets/js/highcharts/indicators/atr.js +1 -12
  997. package/assets/js/highcharts/indicators/atr.src.js +2 -2
  998. package/assets/js/highcharts/indicators/bollinger-bands.js +1 -12
  999. package/assets/js/highcharts/indicators/bollinger-bands.src.js +3 -3
  1000. package/assets/js/highcharts/indicators/cci.js +1 -12
  1001. package/assets/js/highcharts/indicators/cci.src.js +2 -2
  1002. package/assets/js/highcharts/indicators/chaikin.js +1 -12
  1003. package/assets/js/highcharts/indicators/chaikin.src.js +2 -2
  1004. package/assets/js/highcharts/indicators/cmf.js +1 -11
  1005. package/assets/js/highcharts/indicators/cmf.src.js +3 -3
  1006. package/assets/js/highcharts/indicators/cmo.js +1 -12
  1007. package/assets/js/highcharts/indicators/cmo.src.js +2 -2
  1008. package/assets/js/highcharts/indicators/dema.js +1 -12
  1009. package/assets/js/highcharts/indicators/dema.src.js +2 -2
  1010. package/assets/js/highcharts/indicators/disparity-index.js +1 -12
  1011. package/assets/js/highcharts/indicators/disparity-index.src.js +3 -3
  1012. package/assets/js/highcharts/indicators/dmi.js +1 -12
  1013. package/assets/js/highcharts/indicators/dmi.src.js +4 -4
  1014. package/assets/js/highcharts/indicators/dpo.js +1 -12
  1015. package/assets/js/highcharts/indicators/dpo.src.js +2 -2
  1016. package/assets/js/highcharts/indicators/ichimoku-kinko-hyo.js +1 -12
  1017. package/assets/js/highcharts/indicators/ichimoku-kinko-hyo.src.js +10 -10
  1018. package/assets/js/highcharts/indicators/indicators-all.js +1 -12
  1019. package/assets/js/highcharts/indicators/indicators-all.src.js +26 -25
  1020. package/assets/js/highcharts/indicators/indicators.js +1 -12
  1021. package/assets/js/highcharts/indicators/indicators.src.js +9 -9
  1022. package/assets/js/highcharts/indicators/keltner-channels.js +1 -12
  1023. package/assets/js/highcharts/indicators/keltner-channels.src.js +3 -3
  1024. package/assets/js/highcharts/indicators/klinger.js +1 -12
  1025. package/assets/js/highcharts/indicators/klinger.src.js +3 -3
  1026. package/assets/js/highcharts/indicators/macd.js +1 -12
  1027. package/assets/js/highcharts/indicators/macd.src.js +2 -2
  1028. package/assets/js/highcharts/indicators/mfi.js +1 -12
  1029. package/assets/js/highcharts/indicators/mfi.src.js +3 -3
  1030. package/assets/js/highcharts/indicators/momentum.js +1 -12
  1031. package/assets/js/highcharts/indicators/momentum.src.js +2 -2
  1032. package/assets/js/highcharts/indicators/natr.js +1 -12
  1033. package/assets/js/highcharts/indicators/natr.src.js +2 -2
  1034. package/assets/js/highcharts/indicators/obv.js +1 -12
  1035. package/assets/js/highcharts/indicators/obv.src.js +2 -2
  1036. package/assets/js/highcharts/indicators/pivot-points.js +1 -12
  1037. package/assets/js/highcharts/indicators/pivot-points.src.js +2 -2
  1038. package/assets/js/highcharts/indicators/ppo.js +1 -12
  1039. package/assets/js/highcharts/indicators/ppo.src.js +2 -2
  1040. package/assets/js/highcharts/indicators/price-channel.js +1 -12
  1041. package/assets/js/highcharts/indicators/price-channel.src.js +6 -5
  1042. package/assets/js/highcharts/indicators/price-envelopes.js +1 -12
  1043. package/assets/js/highcharts/indicators/price-envelopes.src.js +3 -3
  1044. package/assets/js/highcharts/indicators/psar.js +1 -12
  1045. package/assets/js/highcharts/indicators/psar.src.js +3 -3
  1046. package/assets/js/highcharts/indicators/regressions.js +1 -12
  1047. package/assets/js/highcharts/indicators/regressions.src.js +6 -6
  1048. package/assets/js/highcharts/indicators/roc.js +1 -12
  1049. package/assets/js/highcharts/indicators/roc.src.js +3 -3
  1050. package/assets/js/highcharts/indicators/rsi.js +1 -12
  1051. package/assets/js/highcharts/indicators/rsi.src.js +2 -2
  1052. package/assets/js/highcharts/indicators/slow-stochastic.js +1 -12
  1053. package/assets/js/highcharts/indicators/slow-stochastic.src.js +2 -2
  1054. package/assets/js/highcharts/indicators/stochastic.js +1 -12
  1055. package/assets/js/highcharts/indicators/stochastic.src.js +4 -4
  1056. package/assets/js/highcharts/indicators/supertrend.js +1 -12
  1057. package/assets/js/highcharts/indicators/supertrend.src.js +2 -2
  1058. package/assets/js/highcharts/indicators/tema.js +1 -12
  1059. package/assets/js/highcharts/indicators/tema.src.js +2 -2
  1060. package/assets/js/highcharts/indicators/trendline.js +1 -12
  1061. package/assets/js/highcharts/indicators/trendline.src.js +2 -2
  1062. package/assets/js/highcharts/indicators/trix.js +1 -12
  1063. package/assets/js/highcharts/indicators/trix.src.js +2 -2
  1064. package/assets/js/highcharts/indicators/volume-by-price.js +1 -12
  1065. package/assets/js/highcharts/indicators/volume-by-price.src.js +3 -3
  1066. package/assets/js/highcharts/indicators/vwap.js +1 -12
  1067. package/assets/js/highcharts/indicators/vwap.src.js +3 -3
  1068. package/assets/js/highcharts/indicators/williams-r.js +1 -12
  1069. package/assets/js/highcharts/indicators/williams-r.src.js +3 -3
  1070. package/assets/js/highcharts/indicators/wma.js +1 -12
  1071. package/assets/js/highcharts/indicators/wma.src.js +3 -3
  1072. package/assets/js/highcharts/indicators/zigzag.js +1 -12
  1073. package/assets/js/highcharts/indicators/zigzag.src.js +3 -3
  1074. package/assets/js/highcharts/lib/jspdf.js +14 -14
  1075. package/assets/js/highcharts/lib/jspdf.src.js +450 -347
  1076. package/assets/js/highcharts/lib/svg2pdf.js +2 -41
  1077. package/assets/js/highcharts/lib/svg2pdf.src.js +5482 -5241
  1078. package/assets/js/highcharts/modules/accessibility.js +1 -12
  1079. package/assets/js/highcharts/modules/accessibility.src.js +124 -103
  1080. package/assets/js/highcharts/modules/annotations-advanced.js +1 -21
  1081. package/assets/js/highcharts/modules/annotations-advanced.src.js +87 -81
  1082. package/assets/js/highcharts/modules/annotations.js +1 -11
  1083. package/assets/js/highcharts/modules/annotations.src.js +34 -30
  1084. package/assets/js/highcharts/modules/arc-diagram.js +1 -11
  1085. package/assets/js/highcharts/modules/arc-diagram.src.js +10 -10
  1086. package/assets/js/highcharts/modules/arrow-symbols.js +1 -11
  1087. package/assets/js/highcharts/modules/arrow-symbols.src.js +2 -2
  1088. package/assets/js/highcharts/modules/boost-canvas.js +1 -12
  1089. package/assets/js/highcharts/modules/boost-canvas.src.js +464 -22
  1090. package/assets/js/highcharts/modules/boost.js +1 -13
  1091. package/assets/js/highcharts/modules/boost.src.js +469 -27
  1092. package/assets/js/highcharts/modules/broken-axis.js +1 -9
  1093. package/assets/js/highcharts/modules/broken-axis.src.js +5 -5
  1094. package/assets/js/highcharts/modules/bullet.js +1 -11
  1095. package/assets/js/highcharts/modules/bullet.src.js +4 -4
  1096. package/assets/js/highcharts/modules/coloraxis.js +1 -11
  1097. package/assets/js/highcharts/modules/coloraxis.src.js +18 -19
  1098. package/assets/js/highcharts/modules/current-date-indicator.js +1 -11
  1099. package/assets/js/highcharts/modules/current-date-indicator.src.js +3 -3
  1100. package/assets/js/highcharts/modules/cylinder.js +1 -12
  1101. package/assets/js/highcharts/modules/cylinder.src.js +12 -12
  1102. package/assets/js/highcharts/modules/data-tools.js +1 -11
  1103. package/assets/js/highcharts/modules/data-tools.src.js +306 -89
  1104. package/assets/js/highcharts/modules/data.js +1 -11
  1105. package/assets/js/highcharts/modules/data.src.js +16 -16
  1106. package/assets/js/highcharts/modules/datagrouping.js +1 -11
  1107. package/assets/js/highcharts/modules/datagrouping.src.js +179 -31
  1108. package/assets/js/highcharts/modules/debugger.js +1 -11
  1109. package/assets/js/highcharts/modules/debugger.src.js +3 -3
  1110. package/assets/js/highcharts/modules/dependency-wheel.js +1 -12
  1111. package/assets/js/highcharts/modules/dependency-wheel.src.js +7 -7
  1112. package/assets/js/highcharts/modules/dotplot.js +1 -11
  1113. package/assets/js/highcharts/modules/dotplot.src.js +4 -4
  1114. package/assets/js/highcharts/modules/drag-panes.js +1 -13
  1115. package/assets/js/highcharts/modules/drag-panes.src.js +5 -5
  1116. package/assets/js/highcharts/modules/draggable-points.js +1 -9
  1117. package/assets/js/highcharts/modules/draggable-points.src.js +7 -7
  1118. package/assets/js/highcharts/modules/drilldown.js +1 -11
  1119. package/assets/js/highcharts/modules/drilldown.src.js +18 -32
  1120. package/assets/js/highcharts/modules/dumbbell.js +1 -9
  1121. package/assets/js/highcharts/modules/dumbbell.src.js +13 -11
  1122. package/assets/js/highcharts/modules/export-data.js +1 -12
  1123. package/assets/js/highcharts/modules/export-data.src.js +10 -9
  1124. package/assets/js/highcharts/modules/exporting.js +1 -11
  1125. package/assets/js/highcharts/modules/exporting.src.js +50 -37
  1126. package/assets/js/highcharts/modules/flowmap.js +1 -9
  1127. package/assets/js/highcharts/modules/flowmap.src.js +4 -4
  1128. package/assets/js/highcharts/modules/full-screen.js +1 -12
  1129. package/assets/js/highcharts/modules/full-screen.src.js +3 -3
  1130. package/assets/js/highcharts/modules/funnel.js +1 -11
  1131. package/assets/js/highcharts/modules/funnel.src.js +6 -6
  1132. package/assets/js/highcharts/modules/funnel3d.js +1 -13
  1133. package/assets/js/highcharts/modules/funnel3d.src.js +11 -11
  1134. package/assets/js/highcharts/modules/gantt.js +1 -31
  1135. package/assets/js/highcharts/modules/gantt.src.js +344 -156
  1136. package/assets/js/highcharts/modules/geoheatmap.js +1 -9
  1137. package/assets/js/highcharts/modules/geoheatmap.src.js +40 -25
  1138. package/assets/js/highcharts/modules/grid-axis.js +1 -11
  1139. package/assets/js/highcharts/modules/grid-axis.src.js +13 -17
  1140. package/assets/js/highcharts/modules/heatmap.js +1 -19
  1141. package/assets/js/highcharts/modules/heatmap.src.js +35 -43
  1142. package/assets/js/highcharts/modules/heikinashi.js +1 -12
  1143. package/assets/js/highcharts/modules/heikinashi.src.js +5 -5
  1144. package/assets/js/highcharts/modules/histogram-bellcurve.js +1 -10
  1145. package/assets/js/highcharts/modules/histogram-bellcurve.src.js +10 -10
  1146. package/assets/js/highcharts/modules/hollowcandlestick.js +1 -12
  1147. package/assets/js/highcharts/modules/hollowcandlestick.src.js +8 -8
  1148. package/assets/js/highcharts/modules/item-series.js +1 -11
  1149. package/assets/js/highcharts/modules/item-series.src.js +41 -17
  1150. package/assets/js/highcharts/modules/lollipop.js +1 -9
  1151. package/assets/js/highcharts/modules/lollipop.src.js +8 -8
  1152. package/assets/js/highcharts/modules/map.js +1 -21
  1153. package/assets/js/highcharts/modules/map.src.js +91 -106
  1154. package/assets/js/highcharts/modules/marker-clusters.js +1 -11
  1155. package/assets/js/highcharts/modules/marker-clusters.src.js +172 -24
  1156. package/assets/js/highcharts/modules/mouse-wheel-zoom.js +1 -11
  1157. package/assets/js/highcharts/modules/mouse-wheel-zoom.src.js +2 -2
  1158. package/assets/js/highcharts/modules/navigator.js +1 -11
  1159. package/assets/js/highcharts/modules/navigator.src.js +59 -51
  1160. package/assets/js/highcharts/modules/networkgraph.js +1 -11
  1161. package/assets/js/highcharts/modules/networkgraph.src.js +21 -15
  1162. package/assets/js/highcharts/modules/no-data-to-display.js +1 -12
  1163. package/assets/js/highcharts/modules/no-data-to-display.src.js +4 -4
  1164. package/assets/js/highcharts/modules/offline-exporting.js +1 -12
  1165. package/assets/js/highcharts/modules/offline-exporting.src.js +54 -41
  1166. package/assets/js/highcharts/modules/organization.js +1 -11
  1167. package/assets/js/highcharts/modules/organization.src.js +28 -24
  1168. package/assets/js/highcharts/modules/parallel-coordinates.js +1 -11
  1169. package/assets/js/highcharts/modules/parallel-coordinates.src.js +10 -10
  1170. package/assets/js/highcharts/modules/pareto.js +1 -11
  1171. package/assets/js/highcharts/modules/pareto.src.js +8 -8
  1172. package/assets/js/highcharts/modules/pathfinder.js +1 -11
  1173. package/assets/js/highcharts/modules/pathfinder.src.js +3 -3
  1174. package/assets/js/highcharts/modules/pattern-fill.js +1 -12
  1175. package/assets/js/highcharts/modules/pattern-fill.src.js +3 -3
  1176. package/assets/js/highcharts/modules/pictorial.js +1 -11
  1177. package/assets/js/highcharts/modules/pictorial.src.js +22 -22
  1178. package/assets/js/highcharts/modules/pointandfigure.js +1 -12
  1179. package/assets/js/highcharts/modules/pointandfigure.src.js +9 -9
  1180. package/assets/js/highcharts/modules/price-indicator.js +1 -13
  1181. package/assets/js/highcharts/modules/price-indicator.src.js +54 -3
  1182. package/assets/js/highcharts/modules/pyramid3d.js +1 -14
  1183. package/assets/js/highcharts/modules/pyramid3d.src.js +4 -4
  1184. package/assets/js/highcharts/modules/renko.js +1 -12
  1185. package/assets/js/highcharts/modules/renko.src.js +5 -5
  1186. package/assets/js/highcharts/modules/sankey.js +1 -11
  1187. package/assets/js/highcharts/modules/sankey.src.js +16 -15
  1188. package/assets/js/highcharts/modules/series-label.js +1 -9
  1189. package/assets/js/highcharts/modules/series-label.src.js +9 -9
  1190. package/assets/js/highcharts/modules/series-on-point.js +1 -12
  1191. package/assets/js/highcharts/modules/series-on-point.src.js +172 -24
  1192. package/assets/js/highcharts/modules/solid-gauge.js +1 -12
  1193. package/assets/js/highcharts/modules/solid-gauge.src.js +10 -10
  1194. package/assets/js/highcharts/modules/sonification.js +1 -12
  1195. package/assets/js/highcharts/modules/sonification.src.js +18 -18
  1196. package/assets/js/highcharts/modules/static-scale.js +1 -11
  1197. package/assets/js/highcharts/modules/static-scale.src.js +3 -3
  1198. package/assets/js/highcharts/modules/stock-tools.js +1 -13
  1199. package/assets/js/highcharts/modules/stock-tools.src.js +19 -19
  1200. package/assets/js/highcharts/modules/stock.js +1 -29
  1201. package/assets/js/highcharts/modules/stock.src.js +357 -168
  1202. package/assets/js/highcharts/modules/streamgraph.js +1 -11
  1203. package/assets/js/highcharts/modules/streamgraph.src.js +4 -4
  1204. package/assets/js/highcharts/modules/sunburst.js +1 -10
  1205. package/assets/js/highcharts/modules/sunburst.src.js +309 -126
  1206. package/assets/js/highcharts/modules/textpath.js +1 -9
  1207. package/assets/js/highcharts/modules/textpath.src.js +3 -3
  1208. package/assets/js/highcharts/modules/tiledwebmap.js +2 -10
  1209. package/assets/js/highcharts/modules/tiledwebmap.src.js +4 -4
  1210. package/assets/js/highcharts/modules/tilemap.js +1 -12
  1211. package/assets/js/highcharts/modules/tilemap.src.js +13 -14
  1212. package/assets/js/highcharts/modules/timeline.js +1 -12
  1213. package/assets/js/highcharts/modules/timeline.src.js +41 -17
  1214. package/assets/js/highcharts/modules/treegraph.js +1 -11
  1215. package/assets/js/highcharts/modules/treegraph.src.js +21 -21
  1216. package/assets/js/highcharts/modules/treegrid.js +1 -11
  1217. package/assets/js/highcharts/modules/treegrid.src.js +33 -38
  1218. package/assets/js/highcharts/modules/treemap.js +1 -10
  1219. package/assets/js/highcharts/modules/treemap.src.js +270 -86
  1220. package/assets/js/highcharts/modules/variable-pie.js +1 -11
  1221. package/assets/js/highcharts/modules/variable-pie.src.js +4 -4
  1222. package/assets/js/highcharts/modules/variwide.js +1 -11
  1223. package/assets/js/highcharts/modules/variwide.src.js +7 -7
  1224. package/assets/js/highcharts/modules/vector.js +1 -11
  1225. package/assets/js/highcharts/modules/vector.src.js +4 -4
  1226. package/assets/js/highcharts/modules/venn.js +1 -10
  1227. package/assets/js/highcharts/modules/venn.src.js +18 -20
  1228. package/assets/js/highcharts/modules/windbarb.js +1 -11
  1229. package/assets/js/highcharts/modules/windbarb.src.js +14 -14
  1230. package/assets/js/highcharts/modules/wordcloud.js +1 -10
  1231. package/assets/js/highcharts/modules/wordcloud.src.js +6 -6
  1232. package/assets/js/highcharts/modules/xrange.js +1 -11
  1233. package/assets/js/highcharts/modules/xrange.src.js +12 -12
  1234. package/assets/js/highcharts/standalone-navigator.js +2 -9
  1235. package/assets/js/highcharts/standalone-navigator.src.js +1455 -883
  1236. package/assets/js/highcharts/themes/avocado.js +1 -9
  1237. package/assets/js/highcharts/themes/avocado.src.js +3 -3
  1238. package/assets/js/highcharts/themes/brand-dark.js +1 -9
  1239. package/assets/js/highcharts/themes/brand-dark.src.js +3 -3
  1240. package/assets/js/highcharts/themes/brand-light.js +1 -9
  1241. package/assets/js/highcharts/themes/brand-light.src.js +3 -3
  1242. package/assets/js/highcharts/themes/dark-blue.js +1 -9
  1243. package/assets/js/highcharts/themes/dark-blue.src.js +3 -3
  1244. package/assets/js/highcharts/themes/dark-green.js +1 -9
  1245. package/assets/js/highcharts/themes/dark-green.src.js +3 -3
  1246. package/assets/js/highcharts/themes/dark-unica.js +1 -9
  1247. package/assets/js/highcharts/themes/dark-unica.src.js +3 -3
  1248. package/assets/js/highcharts/themes/gray.js +1 -9
  1249. package/assets/js/highcharts/themes/gray.src.js +3 -3
  1250. package/assets/js/highcharts/themes/grid-light.js +1 -9
  1251. package/assets/js/highcharts/themes/grid-light.src.js +3 -3
  1252. package/assets/js/highcharts/themes/grid.js +1 -9
  1253. package/assets/js/highcharts/themes/grid.src.js +3 -3
  1254. package/assets/js/highcharts/themes/high-contrast-dark.js +1 -9
  1255. package/assets/js/highcharts/themes/high-contrast-dark.src.js +3 -3
  1256. package/assets/js/highcharts/themes/high-contrast-light.js +1 -9
  1257. package/assets/js/highcharts/themes/high-contrast-light.src.js +3 -3
  1258. package/assets/js/highcharts/themes/sand-signika.js +1 -9
  1259. package/assets/js/highcharts/themes/sand-signika.src.js +3 -3
  1260. package/assets/js/highcharts/themes/skies.js +1 -9
  1261. package/assets/js/highcharts/themes/skies.src.js +3 -3
  1262. package/assets/js/highcharts/themes/sunset.js +1 -9
  1263. package/assets/js/highcharts/themes/sunset.src.js +3 -3
  1264. package/package.json +1 -1
  1265. package/assets/js/highcharts/es-modules/masters/modules/overlapping-datalabels.src.js +0 -16
  1266. package/assets/js/highcharts/gfx/datagrid-icons/dropdown-pointer.svg +0 -3
  1267. package/assets/js/highcharts/modules/overlapping-datalabels.js +0 -9
  1268. package/assets/js/highcharts/modules/overlapping-datalabels.src.js +0 -474
@@ -0,0 +1,4362 @@
1
+ /**
2
+ * @license Highcharts JS v12.2.0 (2025-04-07)
3
+ * @module highcharts/modules/boost
4
+ * @requires highcharts
5
+ *
6
+ * Boost module
7
+ *
8
+ * (c) 2010-2025 Highsoft AS
9
+ * Author: Torstein Honsi
10
+ *
11
+ * License: www.highcharts.com/license
12
+ *
13
+ * */
14
+ import * as __WEBPACK_EXTERNAL_MODULE__highcharts_src_js_8202131d__ from "../highcharts.src.js";
15
+ /******/ // The require scope
16
+ /******/ var __webpack_require__ = {};
17
+ /******/
18
+ /************************************************************************/
19
+ /******/ /* webpack/runtime/compat get default export */
20
+ /******/ (() => {
21
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
22
+ /******/ __webpack_require__.n = (module) => {
23
+ /******/ var getter = module && module.__esModule ?
24
+ /******/ () => (module['default']) :
25
+ /******/ () => (module);
26
+ /******/ __webpack_require__.d(getter, { a: getter });
27
+ /******/ return getter;
28
+ /******/ };
29
+ /******/ })();
30
+ /******/
31
+ /******/ /* webpack/runtime/define property getters */
32
+ /******/ (() => {
33
+ /******/ // define getter functions for harmony exports
34
+ /******/ __webpack_require__.d = (exports, definition) => {
35
+ /******/ for(var key in definition) {
36
+ /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
37
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
38
+ /******/ }
39
+ /******/ }
40
+ /******/ };
41
+ /******/ })();
42
+ /******/
43
+ /******/ /* webpack/runtime/hasOwnProperty shorthand */
44
+ /******/ (() => {
45
+ /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
46
+ /******/ })();
47
+ /******/
48
+ /************************************************************************/
49
+
50
+ ;// external ["../highcharts.src.js","default"]
51
+ const external_highcharts_src_js_default_namespaceObject = __WEBPACK_EXTERNAL_MODULE__highcharts_src_js_8202131d__["default"];
52
+ var external_highcharts_src_js_default_default = /*#__PURE__*/__webpack_require__.n(external_highcharts_src_js_default_namespaceObject);
53
+ ;// ./code/es-modules/Extensions/Boost/Boostables.js
54
+ /* *
55
+ *
56
+ * (c) 2019-2025 Highsoft AS
57
+ *
58
+ * Boost module: stripped-down renderer for higher performance
59
+ *
60
+ * License: highcharts.com/license
61
+ *
62
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
63
+ *
64
+ * */
65
+
66
+ /* *
67
+ *
68
+ * Constants
69
+ *
70
+ * */
71
+ // These are the series we allow boosting for.
72
+ const Boostables = [
73
+ 'area',
74
+ 'areaspline',
75
+ 'arearange',
76
+ 'column',
77
+ 'columnrange',
78
+ 'bar',
79
+ 'line',
80
+ 'scatter',
81
+ 'heatmap',
82
+ 'bubble',
83
+ 'treemap'
84
+ ];
85
+ /* *
86
+ *
87
+ * Default Export
88
+ *
89
+ * */
90
+ /* harmony default export */ const Boost_Boostables = (Boostables);
91
+
92
+ ;// ./code/es-modules/Extensions/Boost/BoostableMap.js
93
+ /* *
94
+ *
95
+ * (c) 2019-2025 Highsoft AS
96
+ *
97
+ * Boost module: stripped-down renderer for higher performance
98
+ *
99
+ * License: highcharts.com/license
100
+ *
101
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
102
+ *
103
+ * */
104
+
105
+ /* *
106
+ *
107
+ * Imports
108
+ *
109
+ * */
110
+
111
+ /* *
112
+ *
113
+ * Constants
114
+ *
115
+ * */
116
+ // These are the series we allow boosting for.
117
+ const BoostableMap = {};
118
+ Boost_Boostables.forEach((item) => {
119
+ BoostableMap[item] = true;
120
+ });
121
+ /* *
122
+ *
123
+ * Default Export
124
+ *
125
+ * */
126
+ /* harmony default export */ const Boost_BoostableMap = (BoostableMap);
127
+
128
+ ;// ./code/es-modules/Extensions/Boost/BoostChart.js
129
+ /* *
130
+ *
131
+ * (c) 2019-2025 Highsoft AS
132
+ *
133
+ * Boost module: stripped-down renderer for higher performance
134
+ *
135
+ * License: highcharts.com/license
136
+ *
137
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
138
+ *
139
+ * */
140
+
141
+
142
+
143
+ const { composed } = (external_highcharts_src_js_default_default());
144
+
145
+ const { addEvent, pick, pushUnique } = (external_highcharts_src_js_default_default());
146
+ /* *
147
+ *
148
+ * Functions
149
+ *
150
+ * */
151
+ /**
152
+ * @private
153
+ */
154
+ function compose(ChartClass, wglMode) {
155
+ if (wglMode && pushUnique(composed, 'Boost.Chart')) {
156
+ ChartClass.prototype.callbacks.push(onChartCallback);
157
+ }
158
+ return ChartClass;
159
+ }
160
+ /**
161
+ * Get the clip rectangle for a target, either a series or the chart.
162
+ * For the chart, we need to consider the maximum extent of its Y axes,
163
+ * in case of Highcharts Stock panes and navigator.
164
+ *
165
+ * @private
166
+ * @function Highcharts.Chart#getBoostClipRect
167
+ */
168
+ function getBoostClipRect(chart, target) {
169
+ const navigator = chart.navigator;
170
+ let clipBox = {
171
+ x: chart.plotLeft,
172
+ y: chart.plotTop,
173
+ width: chart.plotWidth,
174
+ height: chart.plotHeight
175
+ };
176
+ if (navigator && chart.inverted) { // #17820, #20936
177
+ clipBox.width += navigator.top + navigator.height;
178
+ if (!navigator.opposite) {
179
+ clipBox.x = navigator.left;
180
+ }
181
+ }
182
+ else if (navigator && !chart.inverted) {
183
+ clipBox.height = navigator.top + navigator.height - chart.plotTop;
184
+ }
185
+ // Clipping of individual series (#11906, #19039).
186
+ if (target.is) {
187
+ const { xAxis, yAxis } = target;
188
+ clipBox = chart.getClipBox(target);
189
+ if (chart.inverted) {
190
+ const lateral = clipBox.width;
191
+ clipBox.width = clipBox.height;
192
+ clipBox.height = lateral;
193
+ clipBox.x = yAxis.pos;
194
+ clipBox.y = xAxis.pos;
195
+ }
196
+ else {
197
+ clipBox.x = xAxis.pos;
198
+ clipBox.y = yAxis.pos;
199
+ }
200
+ }
201
+ if (target === chart) {
202
+ const verticalAxes = chart.inverted ? chart.xAxis : chart.yAxis; // #14444
203
+ if (verticalAxes.length <= 1) {
204
+ clipBox.y = Math.min(verticalAxes[0].pos, clipBox.y);
205
+ clipBox.height = (verticalAxes[0].pos -
206
+ chart.plotTop +
207
+ verticalAxes[0].len);
208
+ }
209
+ }
210
+ return clipBox;
211
+ }
212
+ /**
213
+ * Returns true if the chart is in series boost mode.
214
+ * @private
215
+ * @param {Highcharts.Chart} chart
216
+ * Chart to check.
217
+ * @return {boolean}
218
+ * `true` if the chart is in series boost mode.
219
+ */
220
+ function isChartSeriesBoosting(chart) {
221
+ const allSeries = chart.series, boost = chart.boost = chart.boost || {}, boostOptions = chart.options.boost || {}, threshold = pick(boostOptions.seriesThreshold, 50);
222
+ if (allSeries.length >= threshold) {
223
+ return true;
224
+ }
225
+ if (allSeries.length === 1) {
226
+ return false;
227
+ }
228
+ let allowBoostForce = boostOptions.allowForce;
229
+ if (typeof allowBoostForce === 'undefined') {
230
+ allowBoostForce = true;
231
+ for (const axis of chart.xAxis) {
232
+ if (pick(axis.min, -Infinity) > pick(axis.dataMin, -Infinity) ||
233
+ pick(axis.max, Infinity) < pick(axis.dataMax, Infinity)) {
234
+ allowBoostForce = false;
235
+ break;
236
+ }
237
+ }
238
+ }
239
+ if (typeof boost.forceChartBoost !== 'undefined') {
240
+ if (allowBoostForce) {
241
+ return boost.forceChartBoost;
242
+ }
243
+ boost.forceChartBoost = void 0;
244
+ }
245
+ // If there are more than five series currently boosting,
246
+ // we should boost the whole chart to avoid running out of webgl contexts.
247
+ let canBoostCount = 0, needBoostCount = 0, seriesOptions;
248
+ for (const series of allSeries) {
249
+ seriesOptions = series.options;
250
+ // Don't count series with boostThreshold set to 0
251
+ // See #8950
252
+ // Also don't count if the series is hidden.
253
+ // See #9046
254
+ if (seriesOptions.boostThreshold === 0 ||
255
+ series.visible === false) {
256
+ continue;
257
+ }
258
+ // Don't count heatmap series as they are handled differently.
259
+ // In the future we should make the heatmap/treemap path compatible
260
+ // with forcing. See #9636.
261
+ if (series.type === 'heatmap') {
262
+ continue;
263
+ }
264
+ if (Boost_BoostableMap[series.type]) {
265
+ ++canBoostCount;
266
+ }
267
+ if (patientMax(series.getColumn('x', true), seriesOptions.data,
268
+ /// series.xData,
269
+ series.points) >= (seriesOptions.boostThreshold || Number.MAX_VALUE)) {
270
+ ++needBoostCount;
271
+ }
272
+ }
273
+ boost.forceChartBoost = allowBoostForce && ((
274
+ // Even when the series that need a boost are less than or equal
275
+ // to 5, force a chart boost when all series are to be boosted.
276
+ // See #18815
277
+ canBoostCount === allSeries.length &&
278
+ needBoostCount === canBoostCount) ||
279
+ needBoostCount > 5);
280
+ return boost.forceChartBoost;
281
+ }
282
+ /**
283
+ * Take care of the canvas blitting
284
+ * @private
285
+ */
286
+ function onChartCallback(chart) {
287
+ /**
288
+ * Convert chart-level canvas to image.
289
+ * @private
290
+ */
291
+ function canvasToSVG() {
292
+ if (chart.boost &&
293
+ chart.boost.wgl &&
294
+ isChartSeriesBoosting(chart)) {
295
+ chart.boost.wgl.render(chart);
296
+ }
297
+ }
298
+ /**
299
+ * Clear chart-level canvas.
300
+ * @private
301
+ */
302
+ function preRender() {
303
+ // Reset force state
304
+ chart.boost = chart.boost || {};
305
+ chart.boost.forceChartBoost = void 0;
306
+ chart.boosted = false;
307
+ // Clear the canvas
308
+ if (!chart.axes.some((axis) => axis.isPanning)) {
309
+ chart.boost.clear?.();
310
+ }
311
+ if (chart.boost.canvas &&
312
+ chart.boost.wgl &&
313
+ isChartSeriesBoosting(chart)) {
314
+ // Allocate
315
+ chart.boost.wgl.allocateBuffer(chart);
316
+ }
317
+ // See #6518 + #6739
318
+ if (chart.boost.markerGroup &&
319
+ chart.xAxis &&
320
+ chart.xAxis.length > 0 &&
321
+ chart.yAxis &&
322
+ chart.yAxis.length > 0) {
323
+ chart.boost.markerGroup.translate(chart.xAxis[0].pos, chart.yAxis[0].pos);
324
+ }
325
+ }
326
+ addEvent(chart, 'predraw', preRender);
327
+ // Use the load event rather than redraw, otherwise user load events will
328
+ // fire too early (#18755)
329
+ addEvent(chart, 'load', canvasToSVG, { order: -1 });
330
+ addEvent(chart, 'redraw', canvasToSVG);
331
+ let prevX = -1;
332
+ let prevY = -1;
333
+ addEvent(chart.pointer, 'afterGetHoverData', (e) => {
334
+ const series = e.hoverPoint?.series;
335
+ chart.boost = chart.boost || {};
336
+ if (chart.boost.markerGroup && series) {
337
+ const xAxis = chart.inverted ? series.yAxis : series.xAxis;
338
+ const yAxis = chart.inverted ? series.xAxis : series.yAxis;
339
+ if ((xAxis && xAxis.pos !== prevX) ||
340
+ (yAxis && yAxis.pos !== prevY)) {
341
+ // #21176: If the axis is changed, hide teh halo without
342
+ // animation to prevent flickering of halos sharing the
343
+ // same marker group
344
+ chart.series.forEach((s) => {
345
+ s.halo?.hide();
346
+ });
347
+ // #10464: Keep the marker group position in sync with the
348
+ // position of the hovered series axes since there is only
349
+ // one shared marker group when boosting.
350
+ chart.boost.markerGroup.translate(xAxis.pos, yAxis.pos);
351
+ prevX = xAxis.pos;
352
+ prevY = yAxis.pos;
353
+ }
354
+ }
355
+ });
356
+ }
357
+ /**
358
+ * Tolerant max() function.
359
+ *
360
+ * @private
361
+ * @param {...Array<Array<unknown>>} args
362
+ * Max arguments
363
+ * @return {number}
364
+ * Max value
365
+ */
366
+ function patientMax(...args) {
367
+ let r = -Number.MAX_VALUE;
368
+ args.forEach((t) => {
369
+ if (typeof t !== 'undefined' &&
370
+ t !== null &&
371
+ typeof t.length !== 'undefined') {
372
+ if (t.length > 0) {
373
+ r = t.length;
374
+ return true;
375
+ }
376
+ }
377
+ });
378
+ return r;
379
+ }
380
+ /* *
381
+ *
382
+ * Default Export
383
+ *
384
+ * */
385
+ const BoostChart = {
386
+ compose,
387
+ getBoostClipRect,
388
+ isChartSeriesBoosting
389
+ };
390
+ /* harmony default export */ const Boost_BoostChart = (BoostChart);
391
+
392
+ ;// external ["../highcharts.src.js","default","Color"]
393
+ const external_highcharts_src_js_default_Color_namespaceObject = __WEBPACK_EXTERNAL_MODULE__highcharts_src_js_8202131d__["default"].Color;
394
+ var external_highcharts_src_js_default_Color_default = /*#__PURE__*/__webpack_require__.n(external_highcharts_src_js_default_Color_namespaceObject);
395
+ ;// ./code/es-modules/Extensions/Boost/WGLDrawMode.js
396
+ /* *
397
+ *
398
+ * (c) 2019-2025 Highsoft AS
399
+ *
400
+ * Boost module: stripped-down renderer for higher performance
401
+ *
402
+ * License: highcharts.com/license
403
+ *
404
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
405
+ *
406
+ * */
407
+
408
+ /* *
409
+ *
410
+ * Constants
411
+ *
412
+ * */
413
+ const WGLDrawMode = {
414
+ 'area': 'LINES',
415
+ 'arearange': 'LINES',
416
+ 'areaspline': 'LINES',
417
+ 'column': 'LINES',
418
+ 'columnrange': 'LINES',
419
+ 'bar': 'LINES',
420
+ 'line': 'LINE_STRIP',
421
+ 'scatter': 'POINTS',
422
+ 'heatmap': 'TRIANGLES',
423
+ 'treemap': 'TRIANGLES',
424
+ 'bubble': 'POINTS'
425
+ };
426
+ /* *
427
+ *
428
+ * Default Export
429
+ *
430
+ * */
431
+ /* harmony default export */ const Boost_WGLDrawMode = (WGLDrawMode);
432
+
433
+ ;// ./code/es-modules/Extensions/Boost/WGLShader.js
434
+ /* *
435
+ *
436
+ * (c) 2019-2025 Highsoft AS
437
+ *
438
+ * Boost module: stripped-down renderer for higher performance
439
+ *
440
+ * License: highcharts.com/license
441
+ *
442
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
443
+ *
444
+ * */
445
+
446
+
447
+ const { clamp, error, pick: WGLShader_pick } = (external_highcharts_src_js_default_default());
448
+ /* *
449
+ *
450
+ * Constants
451
+ *
452
+ * */
453
+ const fragmentShader = [
454
+ /* eslint-disable max-len, @typescript-eslint/indent */
455
+ 'precision highp float;',
456
+ 'uniform vec4 fillColor;',
457
+ 'varying highp vec2 position;',
458
+ 'varying highp vec4 vColor;',
459
+ 'uniform sampler2D uSampler;',
460
+ 'uniform bool isCircle;',
461
+ 'uniform bool hasColor;',
462
+ // 'vec4 toColor(float value, vec2 point) {',
463
+ // 'return vec4(0.0, 0.0, 0.0, 0.0);',
464
+ // '}',
465
+ 'void main(void) {',
466
+ 'vec4 col = fillColor;',
467
+ 'vec4 tcol = texture2D(uSampler, gl_PointCoord.st);',
468
+ 'if (hasColor) {',
469
+ 'col = vColor;',
470
+ '}',
471
+ 'if (isCircle) {',
472
+ 'col *= tcol;',
473
+ 'if (tcol.r < 0.0) {',
474
+ 'discard;',
475
+ '} else {',
476
+ 'gl_FragColor = col;',
477
+ '}',
478
+ '} else {',
479
+ 'gl_FragColor = col;',
480
+ '}',
481
+ '}'
482
+ /* eslint-enable max-len, @typescript-eslint/indent */
483
+ ].join('\n');
484
+ const vertexShader = [
485
+ /* eslint-disable max-len, @typescript-eslint/indent */
486
+ '#version 100',
487
+ '#define LN10 2.302585092994046',
488
+ 'precision highp float;',
489
+ 'attribute vec4 aVertexPosition;',
490
+ 'attribute vec4 aColor;',
491
+ 'varying highp vec2 position;',
492
+ 'varying highp vec4 vColor;',
493
+ 'uniform mat4 uPMatrix;',
494
+ 'uniform float pSize;',
495
+ 'uniform float translatedThreshold;',
496
+ 'uniform bool hasThreshold;',
497
+ 'uniform bool skipTranslation;',
498
+ 'uniform float xAxisTrans;',
499
+ 'uniform float xAxisMin;',
500
+ 'uniform float xAxisMinPad;',
501
+ 'uniform float xAxisPointRange;',
502
+ 'uniform float xAxisLen;',
503
+ 'uniform bool xAxisPostTranslate;',
504
+ 'uniform float xAxisOrdinalSlope;',
505
+ 'uniform float xAxisOrdinalOffset;',
506
+ 'uniform float xAxisPos;',
507
+ 'uniform bool xAxisCVSCoord;',
508
+ 'uniform bool xAxisIsLog;',
509
+ 'uniform bool xAxisReversed;',
510
+ 'uniform float yAxisTrans;',
511
+ 'uniform float yAxisMin;',
512
+ 'uniform float yAxisMinPad;',
513
+ 'uniform float yAxisPointRange;',
514
+ 'uniform float yAxisLen;',
515
+ 'uniform bool yAxisPostTranslate;',
516
+ 'uniform float yAxisOrdinalSlope;',
517
+ 'uniform float yAxisOrdinalOffset;',
518
+ 'uniform float yAxisPos;',
519
+ 'uniform bool yAxisCVSCoord;',
520
+ 'uniform bool yAxisIsLog;',
521
+ 'uniform bool yAxisReversed;',
522
+ 'uniform bool isBubble;',
523
+ 'uniform bool bubbleSizeByArea;',
524
+ 'uniform float bubbleZMin;',
525
+ 'uniform float bubbleZMax;',
526
+ 'uniform float bubbleZThreshold;',
527
+ 'uniform float bubbleMinSize;',
528
+ 'uniform float bubbleMaxSize;',
529
+ 'uniform bool bubbleSizeAbs;',
530
+ 'uniform bool isInverted;',
531
+ 'float bubbleRadius(){',
532
+ 'float value = aVertexPosition.w;',
533
+ 'float zMax = bubbleZMax;',
534
+ 'float zMin = bubbleZMin;',
535
+ 'float radius = 0.0;',
536
+ 'float pos = 0.0;',
537
+ 'float zRange = zMax - zMin;',
538
+ 'if (bubbleSizeAbs){',
539
+ 'value = value - bubbleZThreshold;',
540
+ 'zMax = max(zMax - bubbleZThreshold, zMin - bubbleZThreshold);',
541
+ 'zMin = 0.0;',
542
+ '}',
543
+ 'if (value < zMin){',
544
+ 'radius = bubbleZMin / 2.0 - 1.0;',
545
+ '} else {',
546
+ 'pos = zRange > 0.0 ? (value - zMin) / zRange : 0.5;',
547
+ 'if (bubbleSizeByArea && pos > 0.0){',
548
+ 'pos = sqrt(pos);',
549
+ '}',
550
+ 'radius = ceil(bubbleMinSize + pos * (bubbleMaxSize - bubbleMinSize)) / 2.0;',
551
+ '}',
552
+ 'return radius * 2.0;',
553
+ '}',
554
+ 'float translate(float val,',
555
+ 'float pointPlacement,',
556
+ 'float localA,',
557
+ 'float localMin,',
558
+ 'float minPixelPadding,',
559
+ 'float pointRange,',
560
+ 'float len,',
561
+ 'bool cvsCoord,',
562
+ 'bool isLog,',
563
+ 'bool reversed',
564
+ '){',
565
+ 'float sign = 1.0;',
566
+ 'float cvsOffset = 0.0;',
567
+ 'if (cvsCoord) {',
568
+ 'sign *= -1.0;',
569
+ 'cvsOffset = len;',
570
+ '}',
571
+ 'if (isLog) {',
572
+ 'val = log(val) / LN10;',
573
+ '}',
574
+ 'if (reversed) {',
575
+ 'sign *= -1.0;',
576
+ 'cvsOffset -= sign * len;',
577
+ '}',
578
+ 'return sign * (val - localMin) * localA + cvsOffset + ',
579
+ '(sign * minPixelPadding);', // ' + localA * pointPlacement * pointRange;',
580
+ '}',
581
+ 'float xToPixels(float value) {',
582
+ 'if (skipTranslation){',
583
+ 'return value;// + xAxisPos;',
584
+ '}',
585
+ 'return translate(value, 0.0, xAxisTrans, xAxisMin, xAxisMinPad, xAxisPointRange, xAxisLen, xAxisCVSCoord, xAxisIsLog, xAxisReversed);// + xAxisPos;',
586
+ '}',
587
+ 'float yToPixels(float value, float checkTreshold) {',
588
+ 'float v;',
589
+ 'if (skipTranslation){',
590
+ 'v = value;// + yAxisPos;',
591
+ '} else {',
592
+ 'v = translate(value, 0.0, yAxisTrans, yAxisMin, yAxisMinPad, yAxisPointRange, yAxisLen, yAxisCVSCoord, yAxisIsLog, yAxisReversed);// + yAxisPos;',
593
+ 'if (v > yAxisLen) {',
594
+ 'v = yAxisLen;',
595
+ '}',
596
+ '}',
597
+ 'if (checkTreshold > 0.0 && hasThreshold) {',
598
+ 'v = min(v, translatedThreshold);',
599
+ '}',
600
+ 'return v;',
601
+ '}',
602
+ 'void main(void) {',
603
+ 'if (isBubble){',
604
+ 'gl_PointSize = bubbleRadius();',
605
+ '} else {',
606
+ 'gl_PointSize = pSize;',
607
+ '}',
608
+ // 'gl_PointSize = 10.0;',
609
+ 'vColor = aColor;',
610
+ 'if (skipTranslation && isInverted) {',
611
+ // If we get translated values from JS, just swap them (x, y)
612
+ 'gl_Position = uPMatrix * vec4(aVertexPosition.y + yAxisPos, aVertexPosition.x + xAxisPos, 0.0, 1.0);',
613
+ '} else if (isInverted) {',
614
+ // But when calculating pixel positions directly,
615
+ // swap axes and values (x, y)
616
+ 'gl_Position = uPMatrix * vec4(yToPixels(aVertexPosition.y, aVertexPosition.z) + yAxisPos, xToPixels(aVertexPosition.x) + xAxisPos, 0.0, 1.0);',
617
+ '} else {',
618
+ 'gl_Position = uPMatrix * vec4(xToPixels(aVertexPosition.x) + xAxisPos, yToPixels(aVertexPosition.y, aVertexPosition.z) + yAxisPos, 0.0, 1.0);',
619
+ '}',
620
+ // 'gl_Position = uPMatrix * vec4(aVertexPosition.x, aVertexPosition.y, 0.0, 1.0);',
621
+ '}'
622
+ /* eslint-enable max-len, @typescript-eslint/indent */
623
+ ].join('\n');
624
+ /* *
625
+ *
626
+ * Class
627
+ *
628
+ * */
629
+ /* eslint-disable valid-jsdoc */
630
+ /**
631
+ * A static shader mimicing axis translation functions found in Core/Axis
632
+ *
633
+ * @private
634
+ *
635
+ * @param {WebGLContext} gl
636
+ * the context in which the shader is active
637
+ */
638
+ class WGLShader {
639
+ /* *
640
+ *
641
+ * Constructor
642
+ *
643
+ * */
644
+ constructor(gl) {
645
+ // Error stack
646
+ this.errors = [];
647
+ this.uLocations = {};
648
+ this.gl = gl;
649
+ if (gl && !this.createShader()) {
650
+ return void 0;
651
+ }
652
+ }
653
+ /* *
654
+ *
655
+ * Functions
656
+ *
657
+ * */
658
+ /**
659
+ * Bind the shader.
660
+ * This makes the shader the active one until another one is bound,
661
+ * or until 0 is bound.
662
+ * @private
663
+ */
664
+ bind() {
665
+ if (this.gl && this.shaderProgram) {
666
+ this.gl.useProgram(this.shaderProgram);
667
+ }
668
+ }
669
+ /**
670
+ * Create the shader.
671
+ * Loads the shader program statically defined above
672
+ * @private
673
+ */
674
+ createShader() {
675
+ const v = this.stringToProgram(vertexShader, 'vertex'), f = this.stringToProgram(fragmentShader, 'fragment'), uloc = (n) => (this.gl.getUniformLocation(this.shaderProgram, n));
676
+ if (!v || !f) {
677
+ this.shaderProgram = false;
678
+ this.handleErrors();
679
+ return false;
680
+ }
681
+ this.shaderProgram = this.gl.createProgram();
682
+ this.gl.attachShader(this.shaderProgram, v);
683
+ this.gl.attachShader(this.shaderProgram, f);
684
+ this.gl.linkProgram(this.shaderProgram);
685
+ if (!this.gl.getProgramParameter(this.shaderProgram, this.gl.LINK_STATUS)) {
686
+ this.errors.push(this.gl.getProgramInfoLog(this.shaderProgram));
687
+ this.handleErrors();
688
+ this.shaderProgram = false;
689
+ return false;
690
+ }
691
+ this.gl.useProgram(this.shaderProgram);
692
+ this.gl.bindAttribLocation(this.shaderProgram, 0, 'aVertexPosition');
693
+ this.pUniform = uloc('uPMatrix');
694
+ this.psUniform = uloc('pSize');
695
+ this.fcUniform = uloc('fillColor');
696
+ this.isBubbleUniform = uloc('isBubble');
697
+ this.bubbleSizeAbsUniform = uloc('bubbleSizeAbs');
698
+ this.bubbleSizeAreaUniform = uloc('bubbleSizeByArea');
699
+ this.uSamplerUniform = uloc('uSampler');
700
+ this.skipTranslationUniform = uloc('skipTranslation');
701
+ this.isCircleUniform = uloc('isCircle');
702
+ this.isInverted = uloc('isInverted');
703
+ return true;
704
+ }
705
+ /**
706
+ * Handle errors accumulated in errors stack
707
+ * @private
708
+ */
709
+ handleErrors() {
710
+ if (this.errors.length) {
711
+ error('[highcharts boost] shader error - ' +
712
+ this.errors.join('\n'));
713
+ }
714
+ }
715
+ /**
716
+ * String to shader program
717
+ * @private
718
+ * @param {string} str
719
+ * Program source
720
+ * @param {string} type
721
+ * Program type: either `vertex` or `fragment`
722
+ */
723
+ stringToProgram(str, type) {
724
+ const shader = this.gl.createShader(type === 'vertex' ? this.gl.VERTEX_SHADER : this.gl.FRAGMENT_SHADER);
725
+ this.gl.shaderSource(shader, str);
726
+ this.gl.compileShader(shader);
727
+ if (!this.gl.getShaderParameter(shader, this.gl.COMPILE_STATUS)) {
728
+ this.errors.push('when compiling ' +
729
+ type +
730
+ ' shader:\n' +
731
+ this.gl.getShaderInfoLog(shader));
732
+ return false;
733
+ }
734
+ return shader;
735
+ }
736
+ /**
737
+ * Destroy the shader
738
+ * @private
739
+ */
740
+ destroy() {
741
+ if (this.gl && this.shaderProgram) {
742
+ this.gl.deleteProgram(this.shaderProgram);
743
+ this.shaderProgram = false;
744
+ }
745
+ }
746
+ fillColorUniform() {
747
+ return this.fcUniform;
748
+ }
749
+ /**
750
+ * Get the shader program handle
751
+ * @private
752
+ * @return {WebGLProgram}
753
+ * The handle for the program
754
+ */
755
+ getProgram() {
756
+ return this.shaderProgram;
757
+ }
758
+ pointSizeUniform() {
759
+ return this.psUniform;
760
+ }
761
+ perspectiveUniform() {
762
+ return this.pUniform;
763
+ }
764
+ /**
765
+ * Flush
766
+ * @private
767
+ */
768
+ reset() {
769
+ if (this.gl && this.shaderProgram) {
770
+ this.gl.uniform1i(this.isBubbleUniform, 0);
771
+ this.gl.uniform1i(this.isCircleUniform, 0);
772
+ }
773
+ }
774
+ /**
775
+ * Set bubble uniforms
776
+ * @private
777
+ * @param {Highcharts.Series} series
778
+ * Series to use
779
+ */
780
+ setBubbleUniforms(series, zCalcMin, zCalcMax, pixelRatio = 1) {
781
+ const seriesOptions = series.options;
782
+ let zMin = Number.MAX_VALUE, zMax = -Number.MAX_VALUE;
783
+ if (this.gl && this.shaderProgram && series.is('bubble')) {
784
+ const pxSizes = series.getPxExtremes();
785
+ zMin = WGLShader_pick(seriesOptions.zMin, clamp(zCalcMin, seriesOptions.displayNegative === false ?
786
+ seriesOptions.zThreshold : -Number.MAX_VALUE, zMin));
787
+ zMax = WGLShader_pick(seriesOptions.zMax, Math.max(zMax, zCalcMax));
788
+ this.gl.uniform1i(this.isBubbleUniform, 1);
789
+ this.gl.uniform1i(this.isCircleUniform, 1);
790
+ this.gl.uniform1i(this.bubbleSizeAreaUniform, (series.options.sizeBy !== 'width'));
791
+ this.gl.uniform1i(this.bubbleSizeAbsUniform, series.options
792
+ .sizeByAbsoluteValue);
793
+ this.setUniform('bubbleMinSize', pxSizes.minPxSize * pixelRatio);
794
+ this.setUniform('bubbleMaxSize', pxSizes.maxPxSize * pixelRatio);
795
+ this.setUniform('bubbleZMin', zMin);
796
+ this.setUniform('bubbleZMax', zMax);
797
+ this.setUniform('bubbleZThreshold', series.options.zThreshold);
798
+ }
799
+ }
800
+ /**
801
+ * Set the Color uniform.
802
+ * @private
803
+ * @param {Array<number>} color
804
+ * Array with RGBA values.
805
+ */
806
+ setColor(color) {
807
+ if (this.gl && this.shaderProgram) {
808
+ this.gl.uniform4f(this.fcUniform, color[0] / 255.0, color[1] / 255.0, color[2] / 255.0, color[3]);
809
+ }
810
+ }
811
+ /**
812
+ * Enable/disable circle drawing
813
+ * @private
814
+ */
815
+ setDrawAsCircle(flag) {
816
+ if (this.gl && this.shaderProgram) {
817
+ this.gl.uniform1i(this.isCircleUniform, flag ? 1 : 0);
818
+ }
819
+ }
820
+ /**
821
+ * Set if inversion state
822
+ * @private
823
+ * @param {number} flag
824
+ * Inversion flag
825
+ */
826
+ setInverted(flag) {
827
+ if (this.gl && this.shaderProgram) {
828
+ this.gl.uniform1i(this.isInverted, flag);
829
+ }
830
+ }
831
+ /**
832
+ * Set the perspective matrix
833
+ * @private
834
+ * @param {Float32List} m
835
+ * Matrix 4 x 4
836
+ */
837
+ setPMatrix(m) {
838
+ if (this.gl && this.shaderProgram) {
839
+ this.gl.uniformMatrix4fv(this.pUniform, false, m);
840
+ }
841
+ }
842
+ /**
843
+ * Set the point size.
844
+ * @private
845
+ * @param {number} p
846
+ * Point size
847
+ */
848
+ setPointSize(p) {
849
+ if (this.gl && this.shaderProgram) {
850
+ this.gl.uniform1f(this.psUniform, p);
851
+ }
852
+ }
853
+ /**
854
+ * Set skip translation
855
+ * @private
856
+ */
857
+ setSkipTranslation(flag) {
858
+ if (this.gl && this.shaderProgram) {
859
+ this.gl.uniform1i(this.skipTranslationUniform, flag === true ? 1 : 0);
860
+ }
861
+ }
862
+ /**
863
+ * Set the active texture
864
+ * @private
865
+ * @param {number} texture
866
+ * Texture to activate
867
+ */
868
+ setTexture(texture) {
869
+ if (this.gl && this.shaderProgram) {
870
+ this.gl.uniform1i(this.uSamplerUniform, texture);
871
+ }
872
+ }
873
+ /**
874
+ * Set a uniform value.
875
+ * This uses a hash map to cache uniform locations.
876
+ * @private
877
+ * @param {string} name
878
+ * Name of the uniform to set.
879
+ * @param {number} val
880
+ * Value to set
881
+ */
882
+ setUniform(name, val) {
883
+ if (this.gl && this.shaderProgram) {
884
+ const u = this.uLocations[name] = (this.uLocations[name] ||
885
+ this.gl.getUniformLocation(this.shaderProgram, name));
886
+ this.gl.uniform1f(u, val);
887
+ }
888
+ }
889
+ }
890
+ /* *
891
+ *
892
+ * Default Export
893
+ *
894
+ * */
895
+ /* harmony default export */ const Boost_WGLShader = (WGLShader);
896
+
897
+ ;// ./code/es-modules/Extensions/Boost/WGLVertexBuffer.js
898
+ /* *
899
+ *
900
+ * (c) 2019-2025 Highsoft AS
901
+ *
902
+ * Boost module: stripped-down renderer for higher performance
903
+ *
904
+ * License: highcharts.com/license
905
+ *
906
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
907
+ *
908
+ * */
909
+
910
+ /* *
911
+ *
912
+ * Class
913
+ *
914
+ * */
915
+ /**
916
+ * Vertex Buffer abstraction.
917
+ * A vertex buffer is a set of vertices which are passed to the GPU
918
+ * in a single call.
919
+ *
920
+ * @private
921
+ * @class
922
+ * @name WGLVertexBuffer
923
+ *
924
+ * @param {WebGLContext} gl
925
+ * Context in which to create the buffer.
926
+ * @param {WGLShader} shader
927
+ * Shader to use.
928
+ */
929
+ class WGLVertexBuffer {
930
+ /* *
931
+ *
932
+ * Constructor
933
+ *
934
+ * */
935
+ constructor(gl, shader, dataComponents
936
+ /* , type */
937
+ ) {
938
+ /* *
939
+ *
940
+ * Properties
941
+ *
942
+ * */
943
+ this.buffer = false;
944
+ this.iterator = 0;
945
+ this.preAllocated = false;
946
+ this.vertAttribute = false;
947
+ this.components = dataComponents || 2;
948
+ this.dataComponents = dataComponents;
949
+ this.gl = gl;
950
+ this.shader = shader;
951
+ }
952
+ /* *
953
+ *
954
+ * Functions
955
+ *
956
+ * */
957
+ /**
958
+ * Note about pre-allocated buffers:
959
+ * - This is slower for charts with many series
960
+ * @private
961
+ */
962
+ allocate(size) {
963
+ this.iterator = -1;
964
+ this.preAllocated = new Float32Array(size * 4);
965
+ }
966
+ /**
967
+ * Bind the buffer
968
+ * @private
969
+ */
970
+ bind() {
971
+ if (!this.buffer) {
972
+ return false;
973
+ }
974
+ /// gl.bindAttribLocation(shader.program(), 0, 'aVertexPosition');
975
+ // gl.enableVertexAttribArray(vertAttribute);
976
+ // gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
977
+ this.gl.vertexAttribPointer(this.vertAttribute, this.components, this.gl.FLOAT, false, 0, 0);
978
+ /// gl.enableVertexAttribArray(vertAttribute);
979
+ }
980
+ /**
981
+ * Build the buffer
982
+ * @private
983
+ * @param {Array<number>} dataIn
984
+ * Zero padded array of indices
985
+ * @param {string} attrib
986
+ * Name of the Attribute to bind the buffer to
987
+ * @param {number} dataComponents
988
+ * Number of components per. indice
989
+ */
990
+ build(dataIn, attrib, dataComponents) {
991
+ let farray;
992
+ this.data = dataIn || [];
993
+ if ((!this.data || this.data.length === 0) && !this.preAllocated) {
994
+ /// console.error('trying to render empty vbuffer');
995
+ this.destroy();
996
+ return false;
997
+ }
998
+ this.components = dataComponents || this.components;
999
+ if (this.buffer) {
1000
+ this.gl.deleteBuffer(this.buffer);
1001
+ }
1002
+ if (!this.preAllocated) {
1003
+ farray = new Float32Array(this.data);
1004
+ }
1005
+ this.buffer = this.gl.createBuffer();
1006
+ this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.buffer);
1007
+ this.gl.bufferData(this.gl.ARRAY_BUFFER, this.preAllocated || farray, this.gl.STATIC_DRAW);
1008
+ /// gl.bindAttribLocation(shader.program(), 0, 'aVertexPosition');
1009
+ this.vertAttribute = this.gl
1010
+ .getAttribLocation(this.shader.getProgram(), attrib);
1011
+ this.gl.enableVertexAttribArray(this.vertAttribute);
1012
+ // Trigger cleanup
1013
+ farray = false;
1014
+ return true;
1015
+ }
1016
+ /**
1017
+ * @private
1018
+ */
1019
+ destroy() {
1020
+ if (this.buffer) {
1021
+ this.gl.deleteBuffer(this.buffer);
1022
+ this.buffer = false;
1023
+ this.vertAttribute = false;
1024
+ }
1025
+ this.iterator = 0;
1026
+ this.components = this.dataComponents || 2;
1027
+ this.data = [];
1028
+ }
1029
+ /**
1030
+ * Adds data to the pre-allocated buffer.
1031
+ * @private
1032
+ * @param {number} x
1033
+ * X data
1034
+ * @param {number} y
1035
+ * Y data
1036
+ * @param {number} a
1037
+ * A data
1038
+ * @param {number} b
1039
+ * B data
1040
+ */
1041
+ push(x, y, a, b) {
1042
+ if (this.preAllocated) { // && iterator <= preAllocated.length - 4) {
1043
+ this.preAllocated[++this.iterator] = x;
1044
+ this.preAllocated[++this.iterator] = y;
1045
+ this.preAllocated[++this.iterator] = a;
1046
+ this.preAllocated[++this.iterator] = b;
1047
+ }
1048
+ }
1049
+ /**
1050
+ * Render the buffer
1051
+ *
1052
+ * @private
1053
+ * @param {number} from
1054
+ * Start indice.
1055
+ * @param {number} to
1056
+ * End indice.
1057
+ * @param {WGLDrawModeValue} drawMode
1058
+ * Draw mode.
1059
+ */
1060
+ render(from, to, drawMode) {
1061
+ const length = this.preAllocated ?
1062
+ this.preAllocated.length : this.data.length;
1063
+ if (!this.buffer) {
1064
+ return false;
1065
+ }
1066
+ if (!length) {
1067
+ return false;
1068
+ }
1069
+ if (!from || from > length || from < 0) {
1070
+ from = 0;
1071
+ }
1072
+ if (!to || to > length) {
1073
+ to = length;
1074
+ }
1075
+ if (from >= to) {
1076
+ return false;
1077
+ }
1078
+ drawMode = drawMode || 'POINTS';
1079
+ this.gl.drawArrays(this.gl[drawMode], from / this.components, (to - from) / this.components);
1080
+ return true;
1081
+ }
1082
+ }
1083
+ /* *
1084
+ *
1085
+ * Default Export
1086
+ *
1087
+ * */
1088
+ /* harmony default export */ const Boost_WGLVertexBuffer = (WGLVertexBuffer);
1089
+
1090
+ ;// ./code/es-modules/Extensions/Boost/WGLRenderer.js
1091
+ /* *
1092
+ *
1093
+ * (c) 2019-2025 Highsoft AS
1094
+ *
1095
+ * Boost module: stripped-down renderer for higher performance
1096
+ *
1097
+ * License: highcharts.com/license
1098
+ *
1099
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
1100
+ *
1101
+ * */
1102
+
1103
+
1104
+ const { parse: color } = (external_highcharts_src_js_default_Color_default());
1105
+
1106
+ const { doc, win } = (external_highcharts_src_js_default_default());
1107
+
1108
+ const { isNumber, isObject, merge, objectEach, pick: WGLRenderer_pick } = (external_highcharts_src_js_default_default());
1109
+
1110
+
1111
+
1112
+ /* *
1113
+ *
1114
+ * Constants
1115
+ *
1116
+ * */
1117
+ // Things to draw as "rectangles" (i.e lines)
1118
+ const asBar = {
1119
+ 'column': true,
1120
+ 'columnrange': true,
1121
+ 'bar': true,
1122
+ 'area': true,
1123
+ 'areaspline': true,
1124
+ 'arearange': true
1125
+ };
1126
+ const asCircle = {
1127
+ 'scatter': true,
1128
+ 'bubble': true
1129
+ };
1130
+ const contexts = [
1131
+ 'webgl',
1132
+ 'experimental-webgl',
1133
+ 'moz-webgl',
1134
+ 'webkit-3d'
1135
+ ];
1136
+ /* *
1137
+ *
1138
+ * Class
1139
+ *
1140
+ * */
1141
+ /* eslint-disable valid-jsdoc */
1142
+ /**
1143
+ * Main renderer. Used to render series.
1144
+ *
1145
+ * Notes to self:
1146
+ * - May be able to build a point map by rendering to a separate canvas and
1147
+ * encoding values in the color data.
1148
+ * - Need to figure out a way to transform the data quicker
1149
+ *
1150
+ * @private
1151
+ *
1152
+ * @param {Function} postRenderCallback
1153
+ */
1154
+ class WGLRenderer {
1155
+ /* *
1156
+ *
1157
+ * Static Functions
1158
+ *
1159
+ * */
1160
+ /**
1161
+ * Returns an orthographic perspective matrix
1162
+ * @private
1163
+ * @param {number} width
1164
+ * the width of the viewport in pixels
1165
+ * @param {number} height
1166
+ * the height of the viewport in pixels
1167
+ */
1168
+ static orthoMatrix(width, height) {
1169
+ const near = 0, far = 1;
1170
+ return [
1171
+ 2 / width, 0, 0, 0,
1172
+ 0, -(2 / height), 0, 0,
1173
+ 0, 0, -2 / (far - near), 0,
1174
+ -1, 1, -(far + near) / (far - near), 1
1175
+ ];
1176
+ }
1177
+ /**
1178
+ * @private
1179
+ */
1180
+ static seriesPointCount(series) {
1181
+ let isStacked, xData, s;
1182
+ if (series.boosted) {
1183
+ isStacked = !!series.options.stacking;
1184
+ xData = ((series.getColumn('x').length ?
1185
+ series.getColumn('x') :
1186
+ void 0) ||
1187
+ series.options.xData ||
1188
+ series.getColumn('x', true));
1189
+ s = (isStacked ? series.data : (xData || series.options.data))
1190
+ .length;
1191
+ if (series.type === 'treemap') {
1192
+ s *= 12;
1193
+ }
1194
+ else if (series.type === 'heatmap') {
1195
+ s *= 6;
1196
+ }
1197
+ else if (asBar[series.type]) {
1198
+ s *= 2;
1199
+ }
1200
+ return s;
1201
+ }
1202
+ return 0;
1203
+ }
1204
+ /* *
1205
+ *
1206
+ * Constructor
1207
+ *
1208
+ * */
1209
+ constructor(postRenderCallback) {
1210
+ /**
1211
+ * The data to render - array of coordinates.
1212
+ * Repeating sequence of [x, y, checkThreshold, pointSize].
1213
+ */
1214
+ this.data = [];
1215
+ // Height of our viewport in pixels
1216
+ this.height = 0;
1217
+ // Is it inited?
1218
+ this.isInited = false;
1219
+ // The marker data
1220
+ this.markerData = [];
1221
+ // The series stack
1222
+ this.series = [];
1223
+ // Texture handles
1224
+ this.textureHandles = {};
1225
+ // Width of our viewport in pixels
1226
+ this.width = 0;
1227
+ this.postRenderCallback = postRenderCallback;
1228
+ this.settings = {
1229
+ pointSize: 1,
1230
+ lineWidth: 1,
1231
+ fillColor: '#AA00AA',
1232
+ useAlpha: true,
1233
+ usePreallocated: false,
1234
+ useGPUTranslations: false,
1235
+ debug: {
1236
+ timeRendering: false,
1237
+ timeSeriesProcessing: false,
1238
+ timeSetup: false,
1239
+ timeBufferCopy: false,
1240
+ timeKDTree: false,
1241
+ showSkipSummary: false
1242
+ }
1243
+ };
1244
+ }
1245
+ /* *
1246
+ *
1247
+ * Functions
1248
+ *
1249
+ * */
1250
+ /**
1251
+ * @private
1252
+ */
1253
+ getPixelRatio() {
1254
+ return this.settings.pixelRatio || win.devicePixelRatio || 1;
1255
+ }
1256
+ /**
1257
+ * @private
1258
+ */
1259
+ setOptions(options) {
1260
+ // The pixelRatio defaults to 1. This is an antipattern, we should
1261
+ // refactor the Boost options to include an object of default options as
1262
+ // base for the merge, like other components.
1263
+ if (!('pixelRatio' in options)) {
1264
+ options.pixelRatio = 1;
1265
+ }
1266
+ merge(true, this.settings, options);
1267
+ }
1268
+ /**
1269
+ * Allocate a float buffer to fit all series
1270
+ * @private
1271
+ */
1272
+ allocateBuffer(chart) {
1273
+ const vbuffer = this.vbuffer;
1274
+ let s = 0;
1275
+ if (!this.settings.usePreallocated) {
1276
+ return;
1277
+ }
1278
+ chart.series.forEach((series) => {
1279
+ if (series.boosted) {
1280
+ s += WGLRenderer.seriesPointCount(series);
1281
+ }
1282
+ });
1283
+ vbuffer && vbuffer.allocate(s);
1284
+ }
1285
+ /**
1286
+ * @private
1287
+ */
1288
+ allocateBufferForSingleSeries(series) {
1289
+ const vbuffer = this.vbuffer;
1290
+ let s = 0;
1291
+ if (!this.settings.usePreallocated) {
1292
+ return;
1293
+ }
1294
+ if (series.boosted) {
1295
+ s = WGLRenderer.seriesPointCount(series);
1296
+ }
1297
+ vbuffer && vbuffer.allocate(s);
1298
+ }
1299
+ /**
1300
+ * Clear the depth and color buffer
1301
+ * @private
1302
+ */
1303
+ clear() {
1304
+ const gl = this.gl;
1305
+ gl && gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
1306
+ }
1307
+ /**
1308
+ * Push data for a single series
1309
+ * This calculates additional vertices and transforms the data to be
1310
+ * aligned correctly in memory
1311
+ * @private
1312
+ */
1313
+ pushSeriesData(series, inst) {
1314
+ const data = this.data, settings = this.settings, vbuffer = this.vbuffer, isRange = (series.pointArrayMap &&
1315
+ series.pointArrayMap.join(',') === 'low,high'), { chart, options, sorted, xAxis, yAxis } = series, isStacked = !!options.stacking, rawData = options.data, xExtremes = series.xAxis.getExtremes(),
1316
+ // Taking into account the offset of the min point #19497
1317
+ xMin = xExtremes.min - (series.xAxis.minPointOffset || 0), xMax = xExtremes.max + (series.xAxis.minPointOffset || 0), yExtremes = series.yAxis.getExtremes(), yMin = yExtremes.min - (series.yAxis.minPointOffset || 0), yMax = yExtremes.max + (series.yAxis.minPointOffset || 0), xData = (series.getColumn('x').length ? series.getColumn('x') : void 0) || options.xData || series.getColumn('x', true), yData = (series.getColumn('y').length ? series.getColumn('y') : void 0) || options.yData || series.getColumn('y', true), zData = (series.getColumn('z').length ? series.getColumn('z') : void 0) || options.zData || series.getColumn('z', true), useRaw = !xData || xData.length === 0,
1318
+ /// threshold = options.threshold,
1319
+ // yBottom = chart.yAxis[0].getThreshold(threshold),
1320
+ // hasThreshold = isNumber(threshold),
1321
+ // colorByPoint = series.options.colorByPoint,
1322
+ // This is required for color by point, so make sure this is
1323
+ // uncommented if enabling that
1324
+ // colorIndex = 0,
1325
+ // Required for color axis support
1326
+ // caxis,
1327
+ connectNulls = options.connectNulls,
1328
+ // For some reason eslint/TypeScript don't pick up that this is
1329
+ // actually used: --- bre1470: it is never read, just set
1330
+ // maxVal: (number|undefined), // eslint-disable-line no-unused-vars
1331
+ points = series.points || false, sdata = isStacked ? series.data : (xData || rawData), closestLeft = { x: Number.MAX_VALUE, y: 0 }, closestRight = { x: -Number.MAX_VALUE, y: 0 }, cullXThreshold = 1, cullYThreshold = 1, chartDestroyed = typeof chart.index === 'undefined', drawAsBar = asBar[series.type], zoneAxis = options.zoneAxis || 'y', zones = options.zones || false, threshold = options.threshold, pixelRatio = this.getPixelRatio();
1332
+ let plotWidth = series.chart.plotWidth, lastX = false, lastY = false, minVal, scolor,
1333
+ //
1334
+ skipped = 0, hadPoints = false,
1335
+ // The following are used in the builder while loop
1336
+ x, y, d, z, i = -1, px = false, nx = false, low, nextInside = false, prevInside = false, pcolor = false, isXInside = false, isYInside = true, firstPoint = true, zoneColors, zoneDefColor = false, gapSize = false, vlen = 0;
1337
+ if (options.boostData && options.boostData.length > 0) {
1338
+ return;
1339
+ }
1340
+ if (options.gapSize) {
1341
+ gapSize = options.gapUnit !== 'value' ?
1342
+ options.gapSize * series.closestPointRange :
1343
+ options.gapSize;
1344
+ }
1345
+ if (zones) {
1346
+ zoneColors = [];
1347
+ zones.forEach((zone, i) => {
1348
+ if (zone.color) {
1349
+ const zoneColor = color(zone.color).rgba;
1350
+ zoneColor[0] /= 255.0;
1351
+ zoneColor[1] /= 255.0;
1352
+ zoneColor[2] /= 255.0;
1353
+ zoneColors[i] = zoneColor;
1354
+ if (!zoneDefColor && typeof zone.value === 'undefined') {
1355
+ zoneDefColor = zoneColor;
1356
+ }
1357
+ }
1358
+ });
1359
+ if (!zoneDefColor) {
1360
+ const seriesColor = ((series.pointAttribs && series.pointAttribs().fill) ||
1361
+ series.color);
1362
+ zoneDefColor = color(seriesColor).rgba;
1363
+ zoneDefColor[0] /= 255.0;
1364
+ zoneDefColor[1] /= 255.0;
1365
+ zoneDefColor[2] /= 255.0;
1366
+ }
1367
+ }
1368
+ if (chart.inverted) {
1369
+ plotWidth = series.chart.plotHeight;
1370
+ }
1371
+ series.closestPointRangePx = Number.MAX_VALUE;
1372
+ /**
1373
+ * Push color to color buffer - need to do this per vertex.
1374
+ * @private
1375
+ */
1376
+ const pushColor = (color) => {
1377
+ if (color) {
1378
+ inst.colorData.push(color[0]);
1379
+ inst.colorData.push(color[1]);
1380
+ inst.colorData.push(color[2]);
1381
+ inst.colorData.push(color[3]);
1382
+ }
1383
+ };
1384
+ /**
1385
+ * Push a vertice to the data buffer.
1386
+ * @private
1387
+ */
1388
+ const vertice = (x, y, checkTreshold, pointSize = 1, color) => {
1389
+ pushColor(color);
1390
+ // Correct for pixel ratio
1391
+ if (pixelRatio !== 1 && (!settings.useGPUTranslations ||
1392
+ inst.skipTranslation)) {
1393
+ x *= pixelRatio;
1394
+ y *= pixelRatio;
1395
+ pointSize *= pixelRatio;
1396
+ }
1397
+ if (settings.usePreallocated && vbuffer) {
1398
+ vbuffer.push(x, y, checkTreshold ? 1 : 0, pointSize);
1399
+ vlen += 4;
1400
+ }
1401
+ else {
1402
+ data.push(x);
1403
+ data.push(y);
1404
+ data.push(checkTreshold ? pixelRatio : 0);
1405
+ data.push(pointSize);
1406
+ }
1407
+ };
1408
+ /**
1409
+ * @private
1410
+ */
1411
+ const closeSegment = () => {
1412
+ if (inst.segments.length) {
1413
+ inst.segments[inst.segments.length - 1].to = data.length || vlen;
1414
+ }
1415
+ };
1416
+ /**
1417
+ * Create a new segment for the current set.
1418
+ * @private
1419
+ */
1420
+ const beginSegment = () => {
1421
+ // Insert a segment on the series.
1422
+ // A segment is just a start indice.
1423
+ // When adding a segment, if one exists from before, it should
1424
+ // set the previous segment's end
1425
+ if (inst.segments.length &&
1426
+ inst.segments[inst.segments.length - 1].from === (data.length || vlen)) {
1427
+ return;
1428
+ }
1429
+ closeSegment();
1430
+ inst.segments.push({
1431
+ from: data.length || vlen
1432
+ });
1433
+ };
1434
+ /**
1435
+ * Push a rectangle to the data buffer.
1436
+ * @private
1437
+ */
1438
+ const pushRect = (x, y, w, h, color) => {
1439
+ pushColor(color);
1440
+ vertice(x + w, y);
1441
+ pushColor(color);
1442
+ vertice(x, y);
1443
+ pushColor(color);
1444
+ vertice(x, y + h);
1445
+ pushColor(color);
1446
+ vertice(x, y + h);
1447
+ pushColor(color);
1448
+ vertice(x + w, y + h);
1449
+ pushColor(color);
1450
+ vertice(x + w, y);
1451
+ };
1452
+ // Create the first segment
1453
+ beginSegment();
1454
+ // Special case for point shapes
1455
+ if (points && points.length > 0) {
1456
+ // If we're doing points, we assume that the points are already
1457
+ // translated, so we skip the shader translation.
1458
+ inst.skipTranslation = true;
1459
+ // Force triangle draw mode
1460
+ inst.drawMode = 'TRIANGLES';
1461
+ // We don't have a z component in the shader, so we need to sort.
1462
+ if (points[0].node && points[0].node.levelDynamic) {
1463
+ points.sort((a, b) => {
1464
+ if (a.node) {
1465
+ if (a.node.levelDynamic >
1466
+ b.node.levelDynamic) {
1467
+ return 1;
1468
+ }
1469
+ if (a.node.levelDynamic <
1470
+ b.node.levelDynamic) {
1471
+ return -1;
1472
+ }
1473
+ }
1474
+ return 0;
1475
+ });
1476
+ }
1477
+ points.forEach((point) => {
1478
+ const plotY = point.plotY;
1479
+ let swidth, pointAttr;
1480
+ if (typeof plotY !== 'undefined' &&
1481
+ !isNaN(plotY) &&
1482
+ point.y !== null &&
1483
+ point.shapeArgs) {
1484
+ let { x = 0, y = 0, width = 0, height = 0 } = point.shapeArgs;
1485
+ pointAttr = chart.styledMode ?
1486
+ point.series
1487
+ .colorAttribs(point) :
1488
+ pointAttr = point.series.pointAttribs(point);
1489
+ swidth = pointAttr['stroke-width'] || 0;
1490
+ // Handle point colors
1491
+ pcolor = color(pointAttr.fill).rgba;
1492
+ pcolor[0] /= 255.0;
1493
+ pcolor[1] /= 255.0;
1494
+ pcolor[2] /= 255.0;
1495
+ // So there are two ways of doing this. Either we can
1496
+ // create a rectangle of two triangles, or we can do a
1497
+ // point and use point size. Latter is faster, but
1498
+ // only supports squares. So we're doing triangles.
1499
+ // We could also use one color per. vertice to get
1500
+ // better color interpolation.
1501
+ // If there's stroking, we do an additional rect
1502
+ if (series.is('treemap')) {
1503
+ swidth = swidth || 1;
1504
+ scolor = color(pointAttr.stroke).rgba;
1505
+ scolor[0] /= 255.0;
1506
+ scolor[1] /= 255.0;
1507
+ scolor[2] /= 255.0;
1508
+ pushRect(x, y, width, height, scolor);
1509
+ swidth /= 2;
1510
+ }
1511
+ // } else {
1512
+ // swidth = 0;
1513
+ // }
1514
+ // Fixes issues with inverted heatmaps (see #6981). The root
1515
+ // cause is that the coordinate system is flipped. In other
1516
+ // words, instead of [0,0] being top-left, it's
1517
+ // bottom-right. This causes a vertical and horizontal flip
1518
+ // in the resulting image, making it rotated 180 degrees.
1519
+ if (series.is('heatmap') && chart.inverted) {
1520
+ x = xAxis.len - x;
1521
+ y = yAxis.len - y;
1522
+ width = -width;
1523
+ height = -height;
1524
+ }
1525
+ pushRect(x + swidth, y + swidth, width - (swidth * 2), height - (swidth * 2), pcolor);
1526
+ }
1527
+ });
1528
+ closeSegment();
1529
+ return;
1530
+ }
1531
+ // Extract color axis
1532
+ // (chart.axes || []).forEach((a): void => {
1533
+ // if (H.ColorAxis && a instanceof H.ColorAxis) {
1534
+ // caxis = a;
1535
+ // }
1536
+ // });
1537
+ while (i < sdata.length - 1) {
1538
+ d = sdata[++i];
1539
+ if (typeof d === 'undefined') {
1540
+ continue;
1541
+ }
1542
+ /// px = x = y = z = nx = low = false;
1543
+ // chartDestroyed = typeof chart.index === 'undefined';
1544
+ // nextInside = prevInside = pcolor = isXInside = isYInside = false;
1545
+ // drawAsBar = asBar[series.type];
1546
+ if (chartDestroyed) {
1547
+ break;
1548
+ }
1549
+ // Uncomment this to enable color by point.
1550
+ // This currently left disabled as the charts look really ugly
1551
+ // when enabled and there's a lot of points.
1552
+ // Leaving in for the future (tm).
1553
+ // if (colorByPoint) {
1554
+ // colorIndex = ++colorIndex %
1555
+ // series.chart.options.colors.length;
1556
+ // pcolor = toRGBAFast(series.chart.options.colors[colorIndex]);
1557
+ // pcolor[0] /= 255.0;
1558
+ // pcolor[1] /= 255.0;
1559
+ // pcolor[2] /= 255.0;
1560
+ // }
1561
+ // Handle the point.color option (#5999)
1562
+ const pointOptions = rawData && rawData[i];
1563
+ if (!useRaw && isObject(pointOptions, true)) {
1564
+ if (pointOptions.color) {
1565
+ pcolor = color(pointOptions.color).rgba;
1566
+ pcolor[0] /= 255.0;
1567
+ pcolor[1] /= 255.0;
1568
+ pcolor[2] /= 255.0;
1569
+ }
1570
+ }
1571
+ if (useRaw) {
1572
+ x = d[0];
1573
+ y = d[1];
1574
+ if (sdata[i + 1]) {
1575
+ nx = sdata[i + 1][0];
1576
+ }
1577
+ if (sdata[i - 1]) {
1578
+ px = sdata[i - 1][0];
1579
+ }
1580
+ if (d.length >= 3) {
1581
+ z = d[2];
1582
+ if (d[2] > inst.zMax) {
1583
+ inst.zMax = d[2];
1584
+ }
1585
+ if (d[2] < inst.zMin) {
1586
+ inst.zMin = d[2];
1587
+ }
1588
+ }
1589
+ }
1590
+ else {
1591
+ x = d;
1592
+ y = yData?.[i];
1593
+ if (sdata[i + 1]) {
1594
+ nx = sdata[i + 1];
1595
+ }
1596
+ if (sdata[i - 1]) {
1597
+ px = sdata[i - 1];
1598
+ }
1599
+ if (zData && zData.length) {
1600
+ z = zData[i];
1601
+ if (zData[i] > inst.zMax) {
1602
+ inst.zMax = zData[i];
1603
+ }
1604
+ if (zData[i] < inst.zMin) {
1605
+ inst.zMin = zData[i];
1606
+ }
1607
+ }
1608
+ }
1609
+ if (!connectNulls && (x === null || y === null)) {
1610
+ beginSegment();
1611
+ continue;
1612
+ }
1613
+ if (nx && nx >= xMin && nx <= xMax) {
1614
+ nextInside = true;
1615
+ }
1616
+ if (px && px >= xMin && px <= xMax) {
1617
+ prevInside = true;
1618
+ }
1619
+ if (isRange) {
1620
+ if (useRaw) {
1621
+ y = d.slice(1, 3);
1622
+ }
1623
+ low = series.getColumn('low', true)?.[i];
1624
+ y = series.getColumn('high', true)?.[i] || 0;
1625
+ }
1626
+ else if (isStacked) {
1627
+ x = d.x;
1628
+ y = d.stackY;
1629
+ low = y - d.y;
1630
+ }
1631
+ if (yMin !== null &&
1632
+ typeof yMin !== 'undefined' &&
1633
+ yMax !== null &&
1634
+ typeof yMax !== 'undefined') {
1635
+ isYInside = y >= yMin && y <= yMax;
1636
+ }
1637
+ // Do not render points outside the zoomed range (#19701)
1638
+ if (!sorted && !isYInside) {
1639
+ continue;
1640
+ }
1641
+ if (x > xMax && closestRight.x < xMax) {
1642
+ closestRight.x = x;
1643
+ closestRight.y = y;
1644
+ }
1645
+ if (x < xMin && closestLeft.x > xMin) {
1646
+ closestLeft.x = x;
1647
+ closestLeft.y = y;
1648
+ }
1649
+ if (y === null && connectNulls) {
1650
+ continue;
1651
+ }
1652
+ // Cull points outside the extremes
1653
+ // Continue if `sdata` has only one point as `nextInside` asserts
1654
+ // whether the next point exists and will thus be false. (#22194)
1655
+ if (y === null || (!isYInside && sdata.length > 1 &&
1656
+ !nextInside && !prevInside)) {
1657
+ beginSegment();
1658
+ continue;
1659
+ }
1660
+ // The first point before and first after extremes should be
1661
+ // rendered (#9962, 19701)
1662
+ // Make sure series with a single point are rendered (#21897)
1663
+ if (sorted && ((nx >= xMin || x >= xMin) &&
1664
+ (px <= xMax || x <= xMax)) ||
1665
+ !sorted && ((x >= xMin) && (x <= xMax))) {
1666
+ isXInside = true;
1667
+ }
1668
+ if (!isXInside && !nextInside && !prevInside) {
1669
+ continue;
1670
+ }
1671
+ if (gapSize && x - px > gapSize) {
1672
+ beginSegment();
1673
+ }
1674
+ // Note: Boost requires that zones are sorted!
1675
+ if (zones) {
1676
+ let zoneColor;
1677
+ zones.some((// eslint-disable-line no-loop-func
1678
+ zone, i) => {
1679
+ const last = zones[i - 1];
1680
+ if (zoneAxis === 'x') {
1681
+ if (typeof zone.value !== 'undefined' &&
1682
+ x <= zone.value) {
1683
+ if (zoneColors[i] &&
1684
+ (!last || x >= last.value)) {
1685
+ zoneColor = zoneColors[i];
1686
+ }
1687
+ return true;
1688
+ }
1689
+ return false;
1690
+ }
1691
+ if (typeof zone.value !== 'undefined' && y <= zone.value) {
1692
+ if (zoneColors[i] &&
1693
+ (!last || y >= last.value)) {
1694
+ zoneColor = zoneColors[i];
1695
+ }
1696
+ return true;
1697
+ }
1698
+ return false;
1699
+ });
1700
+ pcolor = zoneColor || zoneDefColor || pcolor;
1701
+ }
1702
+ // Skip translations - temporary floating point fix
1703
+ if (!settings.useGPUTranslations) {
1704
+ inst.skipTranslation = true;
1705
+ x = xAxis.toPixels(x, true);
1706
+ y = yAxis.toPixels(y, true);
1707
+ // Make sure we're not drawing outside of the chart area.
1708
+ // See #6594. Update: this is no longer required as far as I
1709
+ // can tell. Leaving in for git blame in case there are edge
1710
+ // cases I've not found. Having this in breaks #10246.
1711
+ // if (y > plotHeight) {
1712
+ // y = plotHeight;
1713
+ // }
1714
+ if (x > plotWidth) {
1715
+ // If this is rendered as a point, just skip drawing it
1716
+ // entirely, as we're not dependant on lineTo'ing to it.
1717
+ // See #8197
1718
+ if (inst.drawMode === 'POINTS') {
1719
+ continue;
1720
+ }
1721
+ // Having this here will clamp markers and make the angle
1722
+ // of the last line wrong. See 9166.
1723
+ // x = plotWidth;
1724
+ }
1725
+ }
1726
+ // No markers on out of bounds things.
1727
+ // Out of bound things are shown if and only if the next
1728
+ // or previous point is inside the rect.
1729
+ if (inst.hasMarkers && isXInside) {
1730
+ /// x = Highcharts.correctFloat(
1731
+ // Math.min(Math.max(-1e5, xAxis.translate(
1732
+ // x,
1733
+ // 0,
1734
+ // 0,
1735
+ // 0,
1736
+ // 1,
1737
+ // 0.5,
1738
+ // false
1739
+ // )), 1e5)
1740
+ // );
1741
+ if (lastX !== false) {
1742
+ series.closestPointRangePx = Math.min(series.closestPointRangePx, Math.abs(x - lastX));
1743
+ }
1744
+ }
1745
+ // If the last _drawn_ point is closer to this point than the
1746
+ // threshold, skip it. Shaves off 20-100ms in processing.
1747
+ if (!settings.useGPUTranslations &&
1748
+ !settings.usePreallocated &&
1749
+ (lastX && Math.abs(x - lastX) < cullXThreshold) &&
1750
+ (lastY && Math.abs(y - lastY) < cullYThreshold)) {
1751
+ if (settings.debug.showSkipSummary) {
1752
+ ++skipped;
1753
+ }
1754
+ continue;
1755
+ }
1756
+ if (drawAsBar) {
1757
+ minVal = low || 0;
1758
+ if (low === false || typeof low === 'undefined') {
1759
+ if (y < 0) {
1760
+ minVal = y;
1761
+ }
1762
+ else {
1763
+ minVal = 0;
1764
+ }
1765
+ }
1766
+ if ((!isRange && !isStacked) ||
1767
+ yAxis.logarithmic // #16850
1768
+ ) {
1769
+ minVal = Math.max(threshold === null ? yMin : threshold, // #5268
1770
+ yMin); // #8731
1771
+ }
1772
+ if (!settings.useGPUTranslations) {
1773
+ minVal = yAxis.toPixels(minVal, true);
1774
+ }
1775
+ // Need to add an extra point here
1776
+ vertice(x, minVal, 0, 0, pcolor);
1777
+ }
1778
+ // Do step line if enabled.
1779
+ // Draws an additional point at the old Y at the new X.
1780
+ // See #6976.
1781
+ if (options.step && !firstPoint) {
1782
+ vertice(x, lastY, 0, 2, pcolor);
1783
+ }
1784
+ vertice(x, y, 0, series.type === 'bubble' ? (z || 1) : 2, pcolor);
1785
+ // Uncomment this to support color axis.
1786
+ // if (caxis) {
1787
+ // pcolor = color(caxis.toColor(y)).rgba;
1788
+ // inst.colorData.push(color[0] / 255.0);
1789
+ // inst.colorData.push(color[1] / 255.0);
1790
+ // inst.colorData.push(color[2] / 255.0);
1791
+ // inst.colorData.push(color[3]);
1792
+ // }
1793
+ lastX = x;
1794
+ lastY = y;
1795
+ hadPoints = true;
1796
+ firstPoint = false;
1797
+ }
1798
+ if (settings.debug.showSkipSummary) {
1799
+ console.log('skipped points:', skipped); // eslint-disable-line no-console
1800
+ }
1801
+ const pushSupplementPoint = (point, atStart) => {
1802
+ if (!settings.useGPUTranslations) {
1803
+ inst.skipTranslation = true;
1804
+ point.x = xAxis.toPixels(point.x, true);
1805
+ point.y = yAxis.toPixels(point.y, true);
1806
+ }
1807
+ // We should only do this for lines, and we should ignore markers
1808
+ // since there's no point here that would have a marker.
1809
+ if (atStart) {
1810
+ this.data = [point.x, point.y, 0, 2].concat(this.data);
1811
+ return;
1812
+ }
1813
+ vertice(point.x, point.y, 0, 2);
1814
+ };
1815
+ if (!hadPoints &&
1816
+ connectNulls !== false &&
1817
+ series.drawMode === 'line_strip') {
1818
+ if (closestLeft.x < Number.MAX_VALUE) {
1819
+ // We actually need to push this *before* the complete buffer.
1820
+ pushSupplementPoint(closestLeft, true);
1821
+ }
1822
+ if (closestRight.x > -Number.MAX_VALUE) {
1823
+ pushSupplementPoint(closestRight);
1824
+ }
1825
+ }
1826
+ closeSegment();
1827
+ }
1828
+ /**
1829
+ * Push a series to the renderer
1830
+ * If we render the series immediately, we don't have to loop later
1831
+ * @private
1832
+ * @param {Highchart.Series} s
1833
+ * The series to push.
1834
+ */
1835
+ pushSeries(s) {
1836
+ const markerData = this.markerData, series = this.series, settings = this.settings;
1837
+ if (series.length > 0) {
1838
+ if (series[series.length - 1].hasMarkers) {
1839
+ series[series.length - 1].markerTo = markerData.length;
1840
+ }
1841
+ }
1842
+ if (settings.debug.timeSeriesProcessing) {
1843
+ console.time('building ' + s.type + ' series'); // eslint-disable-line no-console
1844
+ }
1845
+ const obj = {
1846
+ segments: [],
1847
+ markerFrom: markerData.length,
1848
+ // Push RGBA values to this array to use per. point coloring.
1849
+ // It should be 0-padded, so each component should be pushed in
1850
+ // succession.
1851
+ colorData: [],
1852
+ series: s,
1853
+ zMin: Number.MAX_VALUE,
1854
+ zMax: -Number.MAX_VALUE,
1855
+ hasMarkers: s.options.marker ?
1856
+ s.options.marker.enabled !== false :
1857
+ false,
1858
+ showMarkers: true,
1859
+ drawMode: Boost_WGLDrawMode[s.type] || 'LINE_STRIP'
1860
+ };
1861
+ if (s.index >= series.length) {
1862
+ series.push(obj);
1863
+ }
1864
+ else {
1865
+ series[s.index] = obj;
1866
+ }
1867
+ // Add the series data to our buffer(s)
1868
+ this.pushSeriesData(s, obj);
1869
+ if (settings.debug.timeSeriesProcessing) {
1870
+ console.timeEnd('building ' + s.type + ' series'); // eslint-disable-line no-console
1871
+ }
1872
+ }
1873
+ /**
1874
+ * Flush the renderer.
1875
+ * This removes pushed series and vertices.
1876
+ * Should be called after clearing and before rendering
1877
+ * @private
1878
+ */
1879
+ flush() {
1880
+ const vbuffer = this.vbuffer;
1881
+ this.data = [];
1882
+ this.markerData = [];
1883
+ this.series = [];
1884
+ if (vbuffer) {
1885
+ vbuffer.destroy();
1886
+ }
1887
+ }
1888
+ /**
1889
+ * Pass x-axis to shader
1890
+ * @private
1891
+ * @param {Highcharts.Axis} axis
1892
+ * The x-axis.
1893
+ */
1894
+ setXAxis(axis) {
1895
+ const shader = this.shader;
1896
+ if (!shader) {
1897
+ return;
1898
+ }
1899
+ const pixelRatio = this.getPixelRatio();
1900
+ shader.setUniform('xAxisTrans', axis.transA * pixelRatio);
1901
+ shader.setUniform('xAxisMin', axis.min);
1902
+ shader.setUniform('xAxisMinPad', axis.minPixelPadding * pixelRatio);
1903
+ shader.setUniform('xAxisPointRange', axis.pointRange);
1904
+ shader.setUniform('xAxisLen', axis.len * pixelRatio);
1905
+ shader.setUniform('xAxisPos', axis.pos * pixelRatio);
1906
+ shader.setUniform('xAxisCVSCoord', (!axis.horiz));
1907
+ shader.setUniform('xAxisIsLog', (!!axis.logarithmic));
1908
+ shader.setUniform('xAxisReversed', (!!axis.reversed));
1909
+ }
1910
+ /**
1911
+ * Pass y-axis to shader
1912
+ * @private
1913
+ * @param {Highcharts.Axis} axis
1914
+ * The y-axis.
1915
+ */
1916
+ setYAxis(axis) {
1917
+ const shader = this.shader;
1918
+ if (!shader) {
1919
+ return;
1920
+ }
1921
+ const pixelRatio = this.getPixelRatio();
1922
+ shader.setUniform('yAxisTrans', axis.transA * pixelRatio);
1923
+ shader.setUniform('yAxisMin', axis.min);
1924
+ shader.setUniform('yAxisMinPad', axis.minPixelPadding * pixelRatio);
1925
+ shader.setUniform('yAxisPointRange', axis.pointRange);
1926
+ shader.setUniform('yAxisLen', axis.len * pixelRatio);
1927
+ shader.setUniform('yAxisPos', axis.pos * pixelRatio);
1928
+ shader.setUniform('yAxisCVSCoord', (!axis.horiz));
1929
+ shader.setUniform('yAxisIsLog', (!!axis.logarithmic));
1930
+ shader.setUniform('yAxisReversed', (!!axis.reversed));
1931
+ }
1932
+ /**
1933
+ * Set the translation threshold
1934
+ * @private
1935
+ * @param {boolean} has
1936
+ * Has threshold flag.
1937
+ * @param {numbe} translation
1938
+ * The threshold.
1939
+ */
1940
+ setThreshold(has, translation) {
1941
+ const shader = this.shader;
1942
+ if (!shader) {
1943
+ return;
1944
+ }
1945
+ shader.setUniform('hasThreshold', has);
1946
+ shader.setUniform('translatedThreshold', translation);
1947
+ }
1948
+ /**
1949
+ * Render the data
1950
+ * This renders all pushed series.
1951
+ * @private
1952
+ */
1953
+ renderChart(chart) {
1954
+ const gl = this.gl, settings = this.settings, shader = this.shader, vbuffer = this.vbuffer;
1955
+ const pixelRatio = this.getPixelRatio();
1956
+ if (chart) {
1957
+ this.width = chart.chartWidth * pixelRatio;
1958
+ this.height = chart.chartHeight * pixelRatio;
1959
+ }
1960
+ else {
1961
+ return false;
1962
+ }
1963
+ const height = this.height, width = this.width;
1964
+ if (!gl || !shader || !width || !height) {
1965
+ return false;
1966
+ }
1967
+ if (settings.debug.timeRendering) {
1968
+ console.time('gl rendering'); // eslint-disable-line no-console
1969
+ }
1970
+ gl.canvas.width = width;
1971
+ gl.canvas.height = height;
1972
+ shader.bind();
1973
+ gl.viewport(0, 0, width, height);
1974
+ shader.setPMatrix(WGLRenderer.orthoMatrix(width, height));
1975
+ if (settings.lineWidth > 1 && !(external_highcharts_src_js_default_default()).isMS) {
1976
+ gl.lineWidth(settings.lineWidth);
1977
+ }
1978
+ if (vbuffer) {
1979
+ vbuffer.build(this.data, 'aVertexPosition', 4);
1980
+ vbuffer.bind();
1981
+ }
1982
+ shader.setInverted(chart.inverted);
1983
+ // Render the series
1984
+ this.series.forEach((s, si) => {
1985
+ const options = s.series.options, shapeOptions = options.marker, lineWidth = (typeof options.lineWidth !== 'undefined' ?
1986
+ options.lineWidth :
1987
+ 1), threshold = options.threshold, hasThreshold = isNumber(threshold), yBottom = s.series.yAxis.getThreshold(threshold), translatedThreshold = yBottom, showMarkers = WGLRenderer_pick(options.marker ? options.marker.enabled : null, s.series.xAxis.isRadial ? true : null, s.series.closestPointRangePx >
1988
+ 2 * ((options.marker ?
1989
+ options.marker.radius :
1990
+ 10) || 10)), shapeTexture = this.textureHandles[(shapeOptions && shapeOptions.symbol) ||
1991
+ s.series.symbol] || this.textureHandles.circle;
1992
+ let sindex, cbuffer, fillColor, scolor = [];
1993
+ if (s.segments.length === 0 ||
1994
+ s.segments[0].from === s.segments[0].to) {
1995
+ return;
1996
+ }
1997
+ if (shapeTexture.isReady) {
1998
+ gl.bindTexture(gl.TEXTURE_2D, shapeTexture.handle);
1999
+ shader.setTexture(shapeTexture.handle);
2000
+ }
2001
+ if (chart.styledMode) {
2002
+ if (s.series.markerGroup === s.series.chart.boost?.markerGroup) {
2003
+ // Create a temporary markerGroup to get the fill color
2004
+ delete s.series.markerGroup;
2005
+ s.series.markerGroup = s.series.plotGroup('markerGroup', 'markers', 'visible', 1, chart.seriesGroup).addClass('highcharts-tracker');
2006
+ fillColor = s.series.markerGroup.getStyle('fill');
2007
+ s.series.markerGroup.destroy();
2008
+ s.series.markerGroup = s.series.chart.boost?.markerGroup;
2009
+ }
2010
+ else {
2011
+ fillColor = s.series.markerGroup?.getStyle('fill');
2012
+ }
2013
+ }
2014
+ else {
2015
+ fillColor =
2016
+ (s.drawMode === 'POINTS' && // #14260
2017
+ s.series.pointAttribs &&
2018
+ s.series.pointAttribs().fill) ||
2019
+ s.series.color;
2020
+ if (options.colorByPoint) {
2021
+ fillColor = s.series.chart.options.colors[si];
2022
+ }
2023
+ }
2024
+ if (s.series.fillOpacity && options.fillOpacity) {
2025
+ fillColor = new (external_highcharts_src_js_default_Color_default())(fillColor).setOpacity(WGLRenderer_pick(options.fillOpacity, 1.0)).get();
2026
+ }
2027
+ scolor = color(fillColor).rgba;
2028
+ if (!settings.useAlpha) {
2029
+ scolor[3] = 1.0;
2030
+ }
2031
+ // Blending
2032
+ if (options.boostBlending === 'add') {
2033
+ gl.blendFunc(gl.SRC_ALPHA, gl.ONE);
2034
+ gl.blendEquation(gl.FUNC_ADD);
2035
+ }
2036
+ else if (options.boostBlending === 'mult' ||
2037
+ options.boostBlending === 'multiply') {
2038
+ gl.blendFunc(gl.DST_COLOR, gl.ZERO);
2039
+ }
2040
+ else if (options.boostBlending === 'darken') {
2041
+ gl.blendFunc(gl.ONE, gl.ONE);
2042
+ gl.blendEquation(gl.FUNC_MIN);
2043
+ }
2044
+ else {
2045
+ /// gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
2046
+ // gl.blendEquation(gl.FUNC_ADD);
2047
+ gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
2048
+ }
2049
+ shader.reset();
2050
+ // If there are entries in the colorData buffer, build and bind it.
2051
+ if (s.colorData.length > 0) {
2052
+ shader.setUniform('hasColor', 1);
2053
+ cbuffer = new Boost_WGLVertexBuffer(gl, shader);
2054
+ cbuffer.build(
2055
+ // The color array attribute for vertex is assigned from 0,
2056
+ // so it needs to be shifted to be applied to further
2057
+ // segments. #18858
2058
+ Array(s.segments[0].from).concat(s.colorData), 'aColor', 4);
2059
+ cbuffer.bind();
2060
+ }
2061
+ else {
2062
+ // Set the hasColor uniform to false (0) when the series
2063
+ // contains no colorData buffer points. #18858
2064
+ shader.setUniform('hasColor', 0);
2065
+ // #15869, a buffer with fewer points might already be bound by
2066
+ // a different series/chart causing out of range errors
2067
+ gl.disableVertexAttribArray(gl.getAttribLocation(shader.getProgram(), 'aColor'));
2068
+ }
2069
+ // Set series specific uniforms
2070
+ shader.setColor(scolor);
2071
+ this.setXAxis(s.series.xAxis);
2072
+ this.setYAxis(s.series.yAxis);
2073
+ this.setThreshold(hasThreshold, translatedThreshold);
2074
+ if (s.drawMode === 'POINTS') {
2075
+ shader.setPointSize(WGLRenderer_pick(options.marker && options.marker.radius, 0.5) * 2 * pixelRatio);
2076
+ }
2077
+ // If set to true, the toPixels translations in the shader
2078
+ // is skipped, i.e it's assumed that the value is a pixel coord.
2079
+ shader.setSkipTranslation(s.skipTranslation);
2080
+ if (s.series.type === 'bubble') {
2081
+ shader.setBubbleUniforms(s.series, s.zMin, s.zMax, pixelRatio);
2082
+ }
2083
+ shader.setDrawAsCircle(asCircle[s.series.type] || false);
2084
+ if (!vbuffer) {
2085
+ return;
2086
+ }
2087
+ // Do the actual rendering
2088
+ // If the line width is < 0, skip rendering of the lines. See #7833.
2089
+ if (lineWidth > 0 || s.drawMode !== 'LINE_STRIP') {
2090
+ for (sindex = 0; sindex < s.segments.length; sindex++) {
2091
+ vbuffer.render(s.segments[sindex].from, s.segments[sindex].to, s.drawMode);
2092
+ }
2093
+ }
2094
+ if (s.hasMarkers && showMarkers) {
2095
+ shader.setPointSize(WGLRenderer_pick(options.marker && options.marker.radius, 5) * 2 * pixelRatio);
2096
+ shader.setDrawAsCircle(true);
2097
+ for (sindex = 0; sindex < s.segments.length; sindex++) {
2098
+ vbuffer.render(s.segments[sindex].from, s.segments[sindex].to, 'POINTS');
2099
+ }
2100
+ }
2101
+ });
2102
+ if (settings.debug.timeRendering) {
2103
+ console.timeEnd('gl rendering'); // eslint-disable-line no-console
2104
+ }
2105
+ if (this.postRenderCallback) {
2106
+ this.postRenderCallback(this);
2107
+ }
2108
+ this.flush();
2109
+ }
2110
+ /**
2111
+ * Render the data when ready
2112
+ * @private
2113
+ */
2114
+ render(chart) {
2115
+ this.clear();
2116
+ if (chart.renderer.forExport) {
2117
+ return this.renderChart(chart);
2118
+ }
2119
+ if (this.isInited) {
2120
+ this.renderChart(chart);
2121
+ }
2122
+ else {
2123
+ setTimeout(() => {
2124
+ this.render(chart);
2125
+ }, 1);
2126
+ }
2127
+ }
2128
+ /**
2129
+ * Set the viewport size in pixels
2130
+ * Creates an orthographic perspective matrix and applies it.
2131
+ * @private
2132
+ */
2133
+ setSize(width, height) {
2134
+ const shader = this.shader;
2135
+ // Skip if there's no change, or if we have no valid shader
2136
+ if (!shader || (this.width === width && this.height === height)) {
2137
+ return;
2138
+ }
2139
+ this.width = width;
2140
+ this.height = height;
2141
+ shader.bind();
2142
+ shader.setPMatrix(WGLRenderer.orthoMatrix(width, height));
2143
+ }
2144
+ /**
2145
+ * Init OpenGL
2146
+ * @private
2147
+ */
2148
+ init(canvas, noFlush) {
2149
+ const settings = this.settings;
2150
+ this.isInited = false;
2151
+ if (!canvas) {
2152
+ return false;
2153
+ }
2154
+ if (settings.debug.timeSetup) {
2155
+ console.time('gl setup'); // eslint-disable-line no-console
2156
+ }
2157
+ for (let i = 0; i < contexts.length; ++i) {
2158
+ this.gl = canvas.getContext(contexts[i], {
2159
+ // /premultipliedAlpha: false
2160
+ });
2161
+ if (this.gl) {
2162
+ break;
2163
+ }
2164
+ }
2165
+ const gl = this.gl;
2166
+ if (gl) {
2167
+ if (!noFlush) {
2168
+ this.flush();
2169
+ }
2170
+ }
2171
+ else {
2172
+ return false;
2173
+ }
2174
+ gl.enable(gl.BLEND);
2175
+ /// gl.blendFunc(gl.SRC_ALPHA, gl.ONE);
2176
+ gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
2177
+ gl.disable(gl.DEPTH_TEST);
2178
+ /// gl.depthMask(gl.FALSE);
2179
+ gl.depthFunc(gl.LESS);
2180
+ const shader = this.shader = new Boost_WGLShader(gl);
2181
+ if (!shader) {
2182
+ // We need to abort, there's no shader context
2183
+ return false;
2184
+ }
2185
+ this.vbuffer = new Boost_WGLVertexBuffer(gl, shader);
2186
+ const createTexture = (name, fn) => {
2187
+ const props = {
2188
+ isReady: false,
2189
+ texture: doc.createElement('canvas'),
2190
+ handle: gl.createTexture()
2191
+ }, ctx = props.texture.getContext('2d');
2192
+ this.textureHandles[name] = props;
2193
+ props.texture.width = 512;
2194
+ props.texture.height = 512;
2195
+ ctx.mozImageSmoothingEnabled = false;
2196
+ ctx.webkitImageSmoothingEnabled = false;
2197
+ ctx.msImageSmoothingEnabled = false;
2198
+ ctx.imageSmoothingEnabled = false;
2199
+ ctx.strokeStyle = 'rgba(255, 255, 255, 0)';
2200
+ ctx.fillStyle = '#FFF';
2201
+ fn(ctx);
2202
+ try {
2203
+ gl.activeTexture(gl.TEXTURE0);
2204
+ gl.bindTexture(gl.TEXTURE_2D, props.handle);
2205
+ /// gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);
2206
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, props.texture);
2207
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
2208
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
2209
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
2210
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
2211
+ /// gl.generateMipmap(gl.TEXTURE_2D);
2212
+ gl.bindTexture(gl.TEXTURE_2D, null);
2213
+ props.isReady = true;
2214
+ }
2215
+ catch (e) {
2216
+ // Silent error
2217
+ }
2218
+ };
2219
+ // Circle shape
2220
+ createTexture('circle', (ctx) => {
2221
+ ctx.beginPath();
2222
+ ctx.arc(256, 256, 256, 0, 2 * Math.PI);
2223
+ ctx.stroke();
2224
+ ctx.fill();
2225
+ });
2226
+ // Square shape
2227
+ createTexture('square', (ctx) => {
2228
+ ctx.fillRect(0, 0, 512, 512);
2229
+ });
2230
+ // Diamond shape
2231
+ createTexture('diamond', (ctx) => {
2232
+ ctx.beginPath();
2233
+ ctx.moveTo(256, 0);
2234
+ ctx.lineTo(512, 256);
2235
+ ctx.lineTo(256, 512);
2236
+ ctx.lineTo(0, 256);
2237
+ ctx.lineTo(256, 0);
2238
+ ctx.fill();
2239
+ });
2240
+ // Triangle shape
2241
+ createTexture('triangle', (ctx) => {
2242
+ ctx.beginPath();
2243
+ ctx.moveTo(0, 512);
2244
+ ctx.lineTo(256, 0);
2245
+ ctx.lineTo(512, 512);
2246
+ ctx.lineTo(0, 512);
2247
+ ctx.fill();
2248
+ });
2249
+ // Triangle shape (rotated)
2250
+ createTexture('triangle-down', (ctx) => {
2251
+ ctx.beginPath();
2252
+ ctx.moveTo(0, 0);
2253
+ ctx.lineTo(256, 512);
2254
+ ctx.lineTo(512, 0);
2255
+ ctx.lineTo(0, 0);
2256
+ ctx.fill();
2257
+ });
2258
+ this.isInited = true;
2259
+ if (settings.debug.timeSetup) {
2260
+ console.timeEnd('gl setup'); // eslint-disable-line no-console
2261
+ }
2262
+ return true;
2263
+ }
2264
+ /**
2265
+ * @private
2266
+ * @todo use it
2267
+ */
2268
+ destroy() {
2269
+ const gl = this.gl, shader = this.shader, vbuffer = this.vbuffer;
2270
+ this.flush();
2271
+ if (vbuffer) {
2272
+ vbuffer.destroy();
2273
+ }
2274
+ if (shader) {
2275
+ shader.destroy();
2276
+ }
2277
+ if (gl) {
2278
+ objectEach(this.textureHandles, (texture) => {
2279
+ if (texture.handle) {
2280
+ gl.deleteTexture(texture.handle);
2281
+ }
2282
+ });
2283
+ gl.canvas.width = 1;
2284
+ gl.canvas.height = 1;
2285
+ }
2286
+ }
2287
+ }
2288
+ /* *
2289
+ *
2290
+ * Default Export
2291
+ *
2292
+ * */
2293
+ /* harmony default export */ const Boost_WGLRenderer = (WGLRenderer);
2294
+
2295
+ ;// ./code/es-modules/Data/ColumnUtils.js
2296
+ /* *
2297
+ *
2298
+ * (c) 2020-2025 Highsoft AS
2299
+ *
2300
+ * License: www.highcharts.com/license
2301
+ *
2302
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
2303
+ *
2304
+ * Authors:
2305
+ * - Dawid Dragula
2306
+ *
2307
+ * */
2308
+ /**
2309
+ * Utility functions for columns that can be either arrays or typed arrays.
2310
+ * @private
2311
+ */
2312
+ var ColumnUtils;
2313
+ (function (ColumnUtils) {
2314
+ /* *
2315
+ *
2316
+ * Declarations
2317
+ *
2318
+ * */
2319
+ /* *
2320
+ *
2321
+ * Functions
2322
+ *
2323
+ * */
2324
+ /**
2325
+ * Sets the length of the column array.
2326
+ *
2327
+ * @param {DataTable.Column} column
2328
+ * Column to be modified.
2329
+ *
2330
+ * @param {number} length
2331
+ * New length of the column.
2332
+ *
2333
+ * @param {boolean} asSubarray
2334
+ * If column is a typed array, return a subarray instead of a new array. It
2335
+ * is faster `O(1)`, but the entire buffer will be kept in memory until all
2336
+ * views to it are destroyed. Default is `false`.
2337
+ *
2338
+ * @return {DataTable.Column}
2339
+ * Modified column.
2340
+ *
2341
+ * @private
2342
+ */
2343
+ function setLength(column, length, asSubarray) {
2344
+ if (Array.isArray(column)) {
2345
+ column.length = length;
2346
+ return column;
2347
+ }
2348
+ return column[asSubarray ? 'subarray' : 'slice'](0, length);
2349
+ }
2350
+ ColumnUtils.setLength = setLength;
2351
+ /**
2352
+ * Splices a column array.
2353
+ *
2354
+ * @param {DataTable.Column} column
2355
+ * Column to be modified.
2356
+ *
2357
+ * @param {number} start
2358
+ * Index at which to start changing the array.
2359
+ *
2360
+ * @param {number} deleteCount
2361
+ * An integer indicating the number of old array elements to remove.
2362
+ *
2363
+ * @param {boolean} removedAsSubarray
2364
+ * If column is a typed array, return a subarray instead of a new array. It
2365
+ * is faster `O(1)`, but the entire buffer will be kept in memory until all
2366
+ * views to it are destroyed. Default is `true`.
2367
+ *
2368
+ * @param {Array<number>|TypedArray} items
2369
+ * The elements to add to the array, beginning at the start index. If you
2370
+ * don't specify any elements, `splice()` will only remove elements from the
2371
+ * array.
2372
+ *
2373
+ * @return {SpliceResult}
2374
+ * Object containing removed elements and the modified column.
2375
+ *
2376
+ * @private
2377
+ */
2378
+ function splice(column, start, deleteCount, removedAsSubarray, items = []) {
2379
+ if (Array.isArray(column)) {
2380
+ if (!Array.isArray(items)) {
2381
+ items = Array.from(items);
2382
+ }
2383
+ return {
2384
+ removed: column.splice(start, deleteCount, ...items),
2385
+ array: column
2386
+ };
2387
+ }
2388
+ const Constructor = Object.getPrototypeOf(column)
2389
+ .constructor;
2390
+ const removed = column[removedAsSubarray ? 'subarray' : 'slice'](start, start + deleteCount);
2391
+ const newLength = column.length - deleteCount + items.length;
2392
+ const result = new Constructor(newLength);
2393
+ result.set(column.subarray(0, start), 0);
2394
+ result.set(items, start);
2395
+ result.set(column.subarray(start + deleteCount), start + items.length);
2396
+ return {
2397
+ removed: removed,
2398
+ array: result
2399
+ };
2400
+ }
2401
+ ColumnUtils.splice = splice;
2402
+ })(ColumnUtils || (ColumnUtils = {}));
2403
+ /* *
2404
+ *
2405
+ * Default Export
2406
+ *
2407
+ * */
2408
+ /* harmony default export */ const Data_ColumnUtils = (ColumnUtils);
2409
+
2410
+ ;// ./code/es-modules/Data/DataTableCore.js
2411
+ /* *
2412
+ *
2413
+ * (c) 2009-2025 Highsoft AS
2414
+ *
2415
+ * License: www.highcharts.com/license
2416
+ *
2417
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
2418
+ *
2419
+ * Authors:
2420
+ * - Sophie Bremer
2421
+ * - Gøran Slettemark
2422
+ * - Torstein Hønsi
2423
+ *
2424
+ * */
2425
+
2426
+
2427
+ const { setLength, splice } = Data_ColumnUtils;
2428
+
2429
+ const { fireEvent, objectEach: DataTableCore_objectEach, uniqueKey } = (external_highcharts_src_js_default_default());
2430
+ /* *
2431
+ *
2432
+ * Class
2433
+ *
2434
+ * */
2435
+ /**
2436
+ * Class to manage columns and rows in a table structure. It provides methods
2437
+ * to add, remove, and manipulate columns and rows, as well as to retrieve data
2438
+ * from specific cells.
2439
+ *
2440
+ * @class
2441
+ * @name Highcharts.DataTable
2442
+ *
2443
+ * @param {Highcharts.DataTableOptions} [options]
2444
+ * Options to initialize the new DataTable instance.
2445
+ */
2446
+ class DataTableCore {
2447
+ /**
2448
+ * Constructs an instance of the DataTable class.
2449
+ *
2450
+ * @example
2451
+ * const dataTable = new Highcharts.DataTableCore({
2452
+ * columns: {
2453
+ * year: [2020, 2021, 2022, 2023],
2454
+ * cost: [11, 13, 12, 14],
2455
+ * revenue: [12, 15, 14, 18]
2456
+ * }
2457
+ * });
2458
+
2459
+ *
2460
+ * @param {Highcharts.DataTableOptions} [options]
2461
+ * Options to initialize the new DataTable instance.
2462
+ */
2463
+ constructor(options = {}) {
2464
+ /**
2465
+ * Whether the ID was automatic generated or given in the constructor.
2466
+ *
2467
+ * @name Highcharts.DataTable#autoId
2468
+ * @type {boolean}
2469
+ */
2470
+ this.autoId = !options.id;
2471
+ this.columns = {};
2472
+ /**
2473
+ * ID of the table for identification purposes.
2474
+ *
2475
+ * @name Highcharts.DataTable#id
2476
+ * @type {string}
2477
+ */
2478
+ this.id = (options.id || uniqueKey());
2479
+ this.modified = this;
2480
+ this.rowCount = 0;
2481
+ this.versionTag = uniqueKey();
2482
+ let rowCount = 0;
2483
+ DataTableCore_objectEach(options.columns || {}, (column, columnName) => {
2484
+ this.columns[columnName] = column.slice();
2485
+ rowCount = Math.max(rowCount, column.length);
2486
+ });
2487
+ this.applyRowCount(rowCount);
2488
+ }
2489
+ /* *
2490
+ *
2491
+ * Functions
2492
+ *
2493
+ * */
2494
+ /**
2495
+ * Applies a row count to the table by setting the `rowCount` property and
2496
+ * adjusting the length of all columns.
2497
+ *
2498
+ * @private
2499
+ * @param {number} rowCount The new row count.
2500
+ */
2501
+ applyRowCount(rowCount) {
2502
+ this.rowCount = rowCount;
2503
+ DataTableCore_objectEach(this.columns, (column, columnName) => {
2504
+ if (column.length !== rowCount) {
2505
+ this.columns[columnName] = setLength(column, rowCount);
2506
+ }
2507
+ });
2508
+ }
2509
+ /**
2510
+ * Delete rows. Simplified version of the full
2511
+ * `DataTable.deleteRows` method.
2512
+ *
2513
+ * @param {number} rowIndex
2514
+ * The start row index
2515
+ *
2516
+ * @param {number} [rowCount=1]
2517
+ * The number of rows to delete
2518
+ *
2519
+ * @return {void}
2520
+ *
2521
+ * @emits #afterDeleteRows
2522
+ */
2523
+ deleteRows(rowIndex, rowCount = 1) {
2524
+ if (rowCount > 0 && rowIndex < this.rowCount) {
2525
+ let length = 0;
2526
+ DataTableCore_objectEach(this.columns, (column, columnName) => {
2527
+ this.columns[columnName] =
2528
+ splice(column, rowIndex, rowCount).array;
2529
+ length = column.length;
2530
+ });
2531
+ this.rowCount = length;
2532
+ }
2533
+ fireEvent(this, 'afterDeleteRows', { rowIndex, rowCount });
2534
+ this.versionTag = uniqueKey();
2535
+ }
2536
+ /**
2537
+ * Fetches the given column by the canonical column name. Simplified version
2538
+ * of the full `DataTable.getRow` method, always returning by reference.
2539
+ *
2540
+ * @param {string} columnName
2541
+ * Name of the column to get.
2542
+ *
2543
+ * @return {Highcharts.DataTableColumn|undefined}
2544
+ * A copy of the column, or `undefined` if not found.
2545
+ */
2546
+ getColumn(columnName,
2547
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2548
+ asReference) {
2549
+ return this.columns[columnName];
2550
+ }
2551
+ /**
2552
+ * Retrieves all or the given columns. Simplified version of the full
2553
+ * `DataTable.getColumns` method, always returning by reference.
2554
+ *
2555
+ * @param {Array<string>} [columnNames]
2556
+ * Column names to retrieve.
2557
+ *
2558
+ * @return {Highcharts.DataTableColumnCollection}
2559
+ * Collection of columns. If a requested column was not found, it is
2560
+ * `undefined`.
2561
+ */
2562
+ getColumns(columnNames,
2563
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2564
+ asReference) {
2565
+ return (columnNames || Object.keys(this.columns)).reduce((columns, columnName) => {
2566
+ columns[columnName] = this.columns[columnName];
2567
+ return columns;
2568
+ }, {});
2569
+ }
2570
+ /**
2571
+ * Retrieves the row at a given index.
2572
+ *
2573
+ * @param {number} rowIndex
2574
+ * Row index to retrieve. First row has index 0.
2575
+ *
2576
+ * @param {Array<string>} [columnNames]
2577
+ * Column names to retrieve.
2578
+ *
2579
+ * @return {Record<string, number|string|undefined>|undefined}
2580
+ * Returns the row values, or `undefined` if not found.
2581
+ */
2582
+ getRow(rowIndex, columnNames) {
2583
+ return (columnNames || Object.keys(this.columns)).map((key) => this.columns[key]?.[rowIndex]);
2584
+ }
2585
+ /**
2586
+ * Sets cell values for a column. Will insert a new column, if not found.
2587
+ *
2588
+ * @param {string} columnName
2589
+ * Column name to set.
2590
+ *
2591
+ * @param {Highcharts.DataTableColumn} [column]
2592
+ * Values to set in the column.
2593
+ *
2594
+ * @param {number} [rowIndex]
2595
+ * Index of the first row to change. (Default: 0)
2596
+ *
2597
+ * @param {Record<string, (boolean|number|string|null|undefined)>} [eventDetail]
2598
+ * Custom information for pending events.
2599
+ *
2600
+ * @emits #setColumns
2601
+ * @emits #afterSetColumns
2602
+ */
2603
+ setColumn(columnName, column = [], rowIndex = 0, eventDetail) {
2604
+ this.setColumns({ [columnName]: column }, rowIndex, eventDetail);
2605
+ }
2606
+ /**
2607
+ * Sets cell values for multiple columns. Will insert new columns, if not
2608
+ * found. Simplified version of the full `DataTableCore.setColumns`, limited
2609
+ * to full replacement of the columns (undefined `rowIndex`).
2610
+ *
2611
+ * @param {Highcharts.DataTableColumnCollection} columns
2612
+ * Columns as a collection, where the keys are the column names.
2613
+ *
2614
+ * @param {number} [rowIndex]
2615
+ * Index of the first row to change. Ignored in the `DataTableCore`, as it
2616
+ * always replaces the full column.
2617
+ *
2618
+ * @param {Record<string, (boolean|number|string|null|undefined)>} [eventDetail]
2619
+ * Custom information for pending events.
2620
+ *
2621
+ * @emits #setColumns
2622
+ * @emits #afterSetColumns
2623
+ */
2624
+ setColumns(columns, rowIndex, eventDetail) {
2625
+ let rowCount = this.rowCount;
2626
+ DataTableCore_objectEach(columns, (column, columnName) => {
2627
+ this.columns[columnName] = column.slice();
2628
+ rowCount = column.length;
2629
+ });
2630
+ this.applyRowCount(rowCount);
2631
+ if (!eventDetail?.silent) {
2632
+ fireEvent(this, 'afterSetColumns');
2633
+ this.versionTag = uniqueKey();
2634
+ }
2635
+ }
2636
+ /**
2637
+ * Sets cell values of a row. Will insert a new row if no index was
2638
+ * provided, or if the index is higher than the total number of table rows.
2639
+ * A simplified version of the full `DateTable.setRow`, limited to objects.
2640
+ *
2641
+ * @param {Record<string, number|string|undefined>} row
2642
+ * Cell values to set.
2643
+ *
2644
+ * @param {number} [rowIndex]
2645
+ * Index of the row to set. Leave `undefined` to add as a new row.
2646
+ *
2647
+ * @param {boolean} [insert]
2648
+ * Whether to insert the row at the given index, or to overwrite the row.
2649
+ *
2650
+ * @param {Record<string, (boolean|number|string|null|undefined)>} [eventDetail]
2651
+ * Custom information for pending events.
2652
+ *
2653
+ * @emits #afterSetRows
2654
+ */
2655
+ setRow(row, rowIndex = this.rowCount, insert, eventDetail) {
2656
+ const { columns } = this, indexRowCount = insert ? this.rowCount + 1 : rowIndex + 1;
2657
+ DataTableCore_objectEach(row, (cellValue, columnName) => {
2658
+ let column = columns[columnName] ||
2659
+ eventDetail?.addColumns !== false && new Array(indexRowCount);
2660
+ if (column) {
2661
+ if (insert) {
2662
+ column = splice(column, rowIndex, 0, true, [cellValue]).array;
2663
+ }
2664
+ else {
2665
+ column[rowIndex] = cellValue;
2666
+ }
2667
+ columns[columnName] = column;
2668
+ }
2669
+ });
2670
+ if (indexRowCount > this.rowCount) {
2671
+ this.applyRowCount(indexRowCount);
2672
+ }
2673
+ if (!eventDetail?.silent) {
2674
+ fireEvent(this, 'afterSetRows');
2675
+ this.versionTag = uniqueKey();
2676
+ }
2677
+ }
2678
+ }
2679
+ /* *
2680
+ *
2681
+ * Default Export
2682
+ *
2683
+ * */
2684
+ /* harmony default export */ const Data_DataTableCore = (DataTableCore);
2685
+ /* *
2686
+ *
2687
+ * API Declarations
2688
+ *
2689
+ * */
2690
+ /**
2691
+ * A typed array.
2692
+ * @typedef {Int8Array|Uint8Array|Uint8ClampedArray|Int16Array|Uint16Array|Int32Array|Uint32Array|Float32Array|Float64Array} Highcharts.TypedArray
2693
+ * //**
2694
+ * A column of values in a data table.
2695
+ * @typedef {Array<boolean|null|number|string|undefined>|Highcharts.TypedArray} Highcharts.DataTableColumn
2696
+ */ /**
2697
+ * A collection of data table columns defined by a object where the key is the
2698
+ * column name and the value is an array of the column values.
2699
+ * @typedef {Record<string, Highcharts.DataTableColumn>} Highcharts.DataTableColumnCollection
2700
+ */
2701
+ /**
2702
+ * Options for the `DataTable` or `DataTableCore` classes.
2703
+ * @interface Highcharts.DataTableOptions
2704
+ */ /**
2705
+ * The column options for the data table. The columns are defined by an object
2706
+ * where the key is the column ID and the value is an array of the column
2707
+ * values.
2708
+ *
2709
+ * @name Highcharts.DataTableOptions.columns
2710
+ * @type {Highcharts.DataTableColumnCollection|undefined}
2711
+ */ /**
2712
+ * Custom ID to identify the new DataTable instance.
2713
+ *
2714
+ * @name Highcharts.DataTableOptions.id
2715
+ * @type {string|undefined}
2716
+ */
2717
+ (''); // Keeps doclets above in JS file
2718
+
2719
+ ;// ./code/es-modules/Extensions/Boost/BoostSeries.js
2720
+ /* *
2721
+ *
2722
+ * (c) 2019-2025 Highsoft AS
2723
+ *
2724
+ * Boost module: stripped-down renderer for higher performance
2725
+ *
2726
+ * License: highcharts.com/license
2727
+ *
2728
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
2729
+ *
2730
+ * */
2731
+
2732
+
2733
+
2734
+
2735
+ const { getBoostClipRect: BoostSeries_getBoostClipRect, isChartSeriesBoosting: BoostSeries_isChartSeriesBoosting } = Boost_BoostChart;
2736
+
2737
+ const { getOptions } = (external_highcharts_src_js_default_default());
2738
+
2739
+ const { composed: BoostSeries_composed, doc: BoostSeries_doc, noop, win: BoostSeries_win } = (external_highcharts_src_js_default_default());
2740
+
2741
+ const { addEvent: BoostSeries_addEvent, destroyObjectProperties, error: BoostSeries_error, extend, fireEvent: BoostSeries_fireEvent, isArray, isNumber: BoostSeries_isNumber, pick: BoostSeries_pick, pushUnique: BoostSeries_pushUnique, wrap, defined } = (external_highcharts_src_js_default_default());
2742
+
2743
+
2744
+ /* *
2745
+ *
2746
+ * Constants
2747
+ *
2748
+ * */
2749
+ const CHUNK_SIZE = 3000;
2750
+ /* *
2751
+ *
2752
+ * Variables
2753
+ *
2754
+ * */
2755
+ let index, mainCanvas;
2756
+ /* *
2757
+ *
2758
+ * Functions
2759
+ *
2760
+ * */
2761
+ /**
2762
+ * @private
2763
+ */
2764
+ function allocateIfNotSeriesBoosting(renderer, series) {
2765
+ const boost = series.boost;
2766
+ if (renderer &&
2767
+ boost &&
2768
+ boost.target &&
2769
+ boost.canvas &&
2770
+ !BoostSeries_isChartSeriesBoosting(series.chart)) {
2771
+ renderer.allocateBufferForSingleSeries(series);
2772
+ }
2773
+ }
2774
+ /**
2775
+ * Return true if ths boost.enabled option is true
2776
+ *
2777
+ * @private
2778
+ * @param {Highcharts.Chart} chart
2779
+ * The chart
2780
+ * @return {boolean}
2781
+ * True, if boost is enabled.
2782
+ */
2783
+ function boostEnabled(chart) {
2784
+ return BoostSeries_pick((chart &&
2785
+ chart.options &&
2786
+ chart.options.boost &&
2787
+ chart.options.boost.enabled), true);
2788
+ }
2789
+ /**
2790
+ * @private
2791
+ */
2792
+ function BoostSeries_compose(SeriesClass, seriesTypes, PointClass, wglMode) {
2793
+ if (BoostSeries_pushUnique(BoostSeries_composed, 'Boost.Series')) {
2794
+ const plotOptions = getOptions().plotOptions, seriesProto = SeriesClass.prototype;
2795
+ BoostSeries_addEvent(SeriesClass, 'destroy', onSeriesDestroy);
2796
+ BoostSeries_addEvent(SeriesClass, 'hide', onSeriesHide);
2797
+ if (wglMode) {
2798
+ seriesProto.renderCanvas = seriesRenderCanvas;
2799
+ }
2800
+ wrap(seriesProto, 'getExtremes', wrapSeriesGetExtremes);
2801
+ wrap(seriesProto, 'processData', wrapSeriesProcessData);
2802
+ wrap(seriesProto, 'searchPoint', wrapSeriesSearchPoint);
2803
+ [
2804
+ 'translate',
2805
+ 'generatePoints',
2806
+ 'drawTracker',
2807
+ 'drawPoints',
2808
+ 'render'
2809
+ ].forEach((method) => wrapSeriesFunctions(seriesProto, seriesTypes, method));
2810
+ wrap(PointClass.prototype, 'firePointEvent', function (proceed, type, e) {
2811
+ if (type === 'click' && this.series.boosted) {
2812
+ const point = e.point;
2813
+ if ((point.dist || point.distX) >= (point.series.options.marker?.radius ?? 10)) {
2814
+ return;
2815
+ }
2816
+ }
2817
+ return proceed.apply(this, [].slice.call(arguments, 1));
2818
+ });
2819
+ // Set default options
2820
+ Boost_Boostables.forEach((type) => {
2821
+ const typePlotOptions = plotOptions[type];
2822
+ if (typePlotOptions) {
2823
+ typePlotOptions.boostThreshold = 5000;
2824
+ typePlotOptions.boostData = [];
2825
+ seriesTypes[type].prototype.fillOpacity = true;
2826
+ }
2827
+ });
2828
+ if (wglMode) {
2829
+ const { area: AreaSeries, areaspline: AreaSplineSeries, bubble: BubbleSeries, column: ColumnSeries, heatmap: HeatmapSeries, scatter: ScatterSeries, treemap: TreemapSeries } = seriesTypes;
2830
+ if (AreaSeries) {
2831
+ extend(AreaSeries.prototype, {
2832
+ fill: true,
2833
+ fillOpacity: true,
2834
+ sampling: true
2835
+ });
2836
+ }
2837
+ if (AreaSplineSeries) {
2838
+ extend(AreaSplineSeries.prototype, {
2839
+ fill: true,
2840
+ fillOpacity: true,
2841
+ sampling: true
2842
+ });
2843
+ }
2844
+ if (BubbleSeries) {
2845
+ const bubbleProto = BubbleSeries.prototype;
2846
+ // By default, the bubble series does not use the KD-tree, so
2847
+ // force it to.
2848
+ delete bubbleProto.buildKDTree;
2849
+ // SeriesTypes.bubble.prototype.directTouch = false;
2850
+ // Needed for markers to work correctly
2851
+ wrap(bubbleProto, 'markerAttribs', function (proceed) {
2852
+ if (this.boosted) {
2853
+ return false;
2854
+ }
2855
+ return proceed.apply(this, [].slice.call(arguments, 1));
2856
+ });
2857
+ }
2858
+ if (ColumnSeries) {
2859
+ extend(ColumnSeries.prototype, {
2860
+ fill: true,
2861
+ sampling: true
2862
+ });
2863
+ }
2864
+ if (ScatterSeries) {
2865
+ ScatterSeries.prototype.fill = true;
2866
+ }
2867
+ // We need to handle heatmaps separately, since we can't perform the
2868
+ // size/color calculations in the shader easily.
2869
+ // @todo This likely needs future optimization.
2870
+ [HeatmapSeries, TreemapSeries].forEach((SC) => {
2871
+ if (SC) {
2872
+ wrap(SC.prototype, 'drawPoints', wrapSeriesDrawPoints);
2873
+ }
2874
+ });
2875
+ }
2876
+ }
2877
+ return SeriesClass;
2878
+ }
2879
+ /**
2880
+ * Create a canvas + context and attach it to the target
2881
+ *
2882
+ * @private
2883
+ * @function createAndAttachRenderer
2884
+ *
2885
+ * @param {Highcharts.Chart} chart
2886
+ * the chart
2887
+ *
2888
+ * @param {Highcharts.Series} series
2889
+ * the series
2890
+ *
2891
+ * @return {Highcharts.BoostGLRenderer}
2892
+ * the canvas renderer
2893
+ */
2894
+ function createAndAttachRenderer(chart, series) {
2895
+ const ChartClass = chart.constructor, targetGroup = chart.seriesGroup || series.group, alpha = 1;
2896
+ let width = chart.chartWidth, height = chart.chartHeight, target = chart, foSupported = typeof SVGForeignObjectElement !== 'undefined', hasClickHandler = false;
2897
+ if (BoostSeries_isChartSeriesBoosting(chart)) {
2898
+ target = chart;
2899
+ }
2900
+ else {
2901
+ target = series;
2902
+ hasClickHandler = Boolean(series.options.events?.click ||
2903
+ series.options.point?.events?.click);
2904
+ }
2905
+ const boost = target.boost =
2906
+ target.boost ||
2907
+ {};
2908
+ // Support for foreignObject is flimsy as best.
2909
+ // IE does not support it, and Chrome has a bug which messes up
2910
+ // the canvas draw order.
2911
+ // As such, we force the Image fallback for now, but leaving the
2912
+ // actual Canvas path in-place in case this changes in the future.
2913
+ foSupported = false;
2914
+ if (!mainCanvas) {
2915
+ mainCanvas = BoostSeries_doc.createElement('canvas');
2916
+ }
2917
+ if (!boost.target) {
2918
+ boost.canvas = mainCanvas;
2919
+ // Fall back to image tag if foreignObject isn't supported,
2920
+ // or if we're exporting.
2921
+ if (chart.renderer.forExport || !foSupported) {
2922
+ target.renderTarget = boost.target = chart.renderer.image('', 0, 0, width, height)
2923
+ .addClass('highcharts-boost-canvas')
2924
+ .add(targetGroup);
2925
+ boost.clear = function () {
2926
+ boost.target.attr({
2927
+ // Insert a blank pixel (#17182)
2928
+ /* eslint-disable-next-line max-len*/
2929
+ href: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII='
2930
+ });
2931
+ };
2932
+ boost.copy = function () {
2933
+ boost.resize();
2934
+ boost.target.attr({
2935
+ href: boost.canvas.toDataURL('image/png')
2936
+ });
2937
+ };
2938
+ }
2939
+ else {
2940
+ boost.targetFo = chart.renderer
2941
+ .createElement('foreignObject')
2942
+ .add(targetGroup);
2943
+ target.renderTarget = boost.target =
2944
+ BoostSeries_doc.createElement('canvas');
2945
+ boost.targetCtx = boost.target.getContext('2d');
2946
+ boost.targetFo.element.appendChild(boost.target);
2947
+ boost.clear = function () {
2948
+ boost.target.width = boost.canvas.width;
2949
+ boost.target.height = boost.canvas.height;
2950
+ };
2951
+ boost.copy = function () {
2952
+ boost.target.width = boost.canvas.width;
2953
+ boost.target.height = boost.canvas.height;
2954
+ boost.targetCtx.drawImage(boost.canvas, 0, 0);
2955
+ };
2956
+ }
2957
+ boost.resize = function () {
2958
+ width = chart.chartWidth;
2959
+ height = chart.chartHeight;
2960
+ (boost.targetFo || boost.target)
2961
+ .attr({
2962
+ x: 0,
2963
+ y: 0,
2964
+ width,
2965
+ height
2966
+ })
2967
+ .css({
2968
+ pointerEvents: hasClickHandler ? void 0 : 'none',
2969
+ mixedBlendMode: 'normal',
2970
+ opacity: alpha
2971
+ })
2972
+ .addClass(hasClickHandler ? 'highcharts-tracker' : '');
2973
+ if (target instanceof ChartClass) {
2974
+ target.boost?.markerGroup?.translate(chart.plotLeft, chart.plotTop);
2975
+ }
2976
+ };
2977
+ boost.clipRect = chart.renderer.clipRect();
2978
+ (boost.targetFo || boost.target)
2979
+ .attr({
2980
+ // Set the z index of the boost target to that of the last
2981
+ // series using it. This logic is not perfect, as it will not
2982
+ // handle interleaved series with boost enabled or disabled. But
2983
+ // it will cover the most common use case of one or more
2984
+ // successive boosted or non-boosted series (#9819).
2985
+ zIndex: series.options.zIndex
2986
+ });
2987
+ if (target instanceof ChartClass) {
2988
+ target.boost.markerGroup = target.renderer
2989
+ .g()
2990
+ .add(targetGroup)
2991
+ .translate(series.xAxis.pos, series.yAxis.pos);
2992
+ }
2993
+ }
2994
+ boost.canvas.width = width;
2995
+ boost.canvas.height = height;
2996
+ if (boost.clipRect) {
2997
+ const box = BoostSeries_getBoostClipRect(chart, target),
2998
+ // When using panes, the image itself must be clipped. When not
2999
+ // using panes, it is better to clip the target group, because then
3000
+ // we preserve clipping on touch- and mousewheel zoom preview.
3001
+ clippedElement = (box.width === chart.clipBox.width &&
3002
+ box.height === chart.clipBox.height) ? targetGroup :
3003
+ (boost.targetFo || boost.target);
3004
+ boost.clipRect.attr(box);
3005
+ clippedElement?.clip(boost.clipRect);
3006
+ }
3007
+ boost.resize();
3008
+ boost.clear();
3009
+ if (!boost.wgl) {
3010
+ boost.wgl = new Boost_WGLRenderer((wgl) => {
3011
+ if (wgl.settings.debug.timeBufferCopy) {
3012
+ console.time('buffer copy'); // eslint-disable-line no-console
3013
+ }
3014
+ boost.copy();
3015
+ if (wgl.settings.debug.timeBufferCopy) {
3016
+ console.timeEnd('buffer copy'); // eslint-disable-line no-console
3017
+ }
3018
+ });
3019
+ if (!boost.wgl.init(boost.canvas)) {
3020
+ // The OGL renderer couldn't be inited. This likely means a shader
3021
+ // error as we wouldn't get to this point if there was no WebGL
3022
+ // support.
3023
+ BoostSeries_error('[highcharts boost] - unable to init WebGL renderer');
3024
+ }
3025
+ boost.wgl.setOptions(chart.options.boost || {});
3026
+ if (target instanceof ChartClass) {
3027
+ boost.wgl.allocateBuffer(chart);
3028
+ }
3029
+ }
3030
+ boost.wgl.setSize(width, height);
3031
+ return boost.wgl;
3032
+ }
3033
+ /**
3034
+ * If implemented in the core, parts of this can probably be
3035
+ * shared with other similar methods in Highcharts.
3036
+ * @private
3037
+ * @function Highcharts.Series#destroyGraphics
3038
+ */
3039
+ function destroyGraphics(series) {
3040
+ const points = series.points;
3041
+ if (points) {
3042
+ let point, i;
3043
+ for (i = 0; i < points.length; i = i + 1) {
3044
+ point = points[i];
3045
+ if (point && point.destroyElements) {
3046
+ point.destroyElements(); // #7557
3047
+ }
3048
+ }
3049
+ }
3050
+ ['graph', 'area', 'tracker'].forEach((prop) => {
3051
+ const seriesProp = series[prop];
3052
+ if (seriesProp) {
3053
+ series[prop] = seriesProp.destroy();
3054
+ }
3055
+ });
3056
+ for (const zone of series.zones) {
3057
+ destroyObjectProperties(zone, void 0, true);
3058
+ }
3059
+ }
3060
+ /**
3061
+ * An "async" foreach loop. Uses a setTimeout to keep the loop from blocking the
3062
+ * UI thread.
3063
+ *
3064
+ * @private
3065
+ * @param {Array<unknown>} arr
3066
+ * The array to loop through.
3067
+ * @param {Function} fn
3068
+ * The callback to call for each item.
3069
+ * @param {Function} finalFunc
3070
+ * The callback to call when done.
3071
+ * @param {number} [chunkSize]
3072
+ * The number of iterations per timeout.
3073
+ * @param {number} [i]
3074
+ * The current index.
3075
+ * @param {boolean} [noTimeout]
3076
+ * Set to true to skip timeouts.
3077
+ */
3078
+ function eachAsync(arr, fn, finalFunc, chunkSize, i, noTimeout) {
3079
+ i = i || 0;
3080
+ chunkSize = chunkSize || CHUNK_SIZE;
3081
+ const threshold = i + chunkSize;
3082
+ let proceed = true;
3083
+ while (proceed && i < threshold && i < arr.length) {
3084
+ proceed = fn(arr[i], i);
3085
+ ++i;
3086
+ }
3087
+ if (proceed) {
3088
+ if (i < arr.length) {
3089
+ if (noTimeout) {
3090
+ eachAsync(arr, fn, finalFunc, chunkSize, i, noTimeout);
3091
+ }
3092
+ else if (BoostSeries_win.requestAnimationFrame) {
3093
+ // If available, do requestAnimationFrame - shaves off a few ms
3094
+ BoostSeries_win.requestAnimationFrame(function () {
3095
+ eachAsync(arr, fn, finalFunc, chunkSize, i);
3096
+ });
3097
+ }
3098
+ else {
3099
+ setTimeout(eachAsync, 0, arr, fn, finalFunc, chunkSize, i);
3100
+ }
3101
+ }
3102
+ else if (finalFunc) {
3103
+ finalFunc();
3104
+ }
3105
+ }
3106
+ }
3107
+ /**
3108
+ * Enter boost mode and apply boost-specific properties.
3109
+ * @private
3110
+ * @function Highcharts.Series#enterBoost
3111
+ */
3112
+ function enterBoost(series) {
3113
+ series.boost = series.boost || {
3114
+ // Faster than a series bind:
3115
+ getPoint: ((bp) => getPoint(series, bp))
3116
+ };
3117
+ const alteredByBoost = series.boost.altered = [];
3118
+ // Save the original values, including whether it was an own
3119
+ // property or inherited from the prototype.
3120
+ ['allowDG', 'directTouch', 'stickyTracking'].forEach((prop) => {
3121
+ alteredByBoost.push({
3122
+ prop: prop,
3123
+ val: series[prop],
3124
+ own: Object.hasOwnProperty.call(series, prop)
3125
+ });
3126
+ });
3127
+ series.allowDG = false;
3128
+ series.directTouch = false;
3129
+ series.stickyTracking = true;
3130
+ // Prevent animation when zooming in on boosted series(#13421).
3131
+ series.finishedAnimating = true;
3132
+ // Hide series label if any
3133
+ if (series.labelBySeries) {
3134
+ series.labelBySeries = series.labelBySeries.destroy();
3135
+ }
3136
+ // Destroy existing points after zoom out
3137
+ if (series.is('scatter') &&
3138
+ !series.is('treemap') &&
3139
+ series.data.length) {
3140
+ for (const point of series.data) {
3141
+ point?.destroy?.();
3142
+ }
3143
+ series.data.length = 0;
3144
+ series.points.length = 0;
3145
+ delete series.processedData;
3146
+ }
3147
+ }
3148
+ /**
3149
+ * Exit from boost mode and restore non-boost properties.
3150
+ * @private
3151
+ * @function Highcharts.Series#exitBoost
3152
+ */
3153
+ function exitBoost(series) {
3154
+ const boost = series.boost, chart = series.chart, chartBoost = chart.boost;
3155
+ if (chartBoost?.markerGroup) {
3156
+ chartBoost.markerGroup.destroy();
3157
+ chartBoost.markerGroup = void 0;
3158
+ for (const s of chart.series) {
3159
+ s.markerGroup = void 0;
3160
+ s.markerGroup = s.plotGroup('markerGroup', 'markers', 'visible', 1, chart.seriesGroup).addClass('highcharts-tracker');
3161
+ }
3162
+ }
3163
+ // Reset instance properties and/or delete instance properties and go back
3164
+ // to prototype
3165
+ if (boost) {
3166
+ (boost.altered || []).forEach((setting) => {
3167
+ if (setting.own) {
3168
+ series[setting.prop] = setting.val;
3169
+ }
3170
+ else {
3171
+ // Revert to prototype
3172
+ delete series[setting.prop];
3173
+ }
3174
+ });
3175
+ // Clear previous run
3176
+ if (boost.clear) {
3177
+ boost.clear();
3178
+ }
3179
+ }
3180
+ // #21106, clean up boost clipping on the series groups.
3181
+ (chart.seriesGroup || series.group)?.clip();
3182
+ }
3183
+ /**
3184
+ * @private
3185
+ * @function Highcharts.Series#hasExtremes
3186
+ */
3187
+ function hasExtremes(series, checkX) {
3188
+ const options = series.options, dataLength = series.dataTable.modified.rowCount, xAxis = series.xAxis && series.xAxis.options, yAxis = series.yAxis && series.yAxis.options, colorAxis = series.colorAxis && series.colorAxis.options;
3189
+ return dataLength > (options.boostThreshold || Number.MAX_VALUE) &&
3190
+ // Defined yAxis extremes
3191
+ BoostSeries_isNumber(yAxis.min) &&
3192
+ BoostSeries_isNumber(yAxis.max) &&
3193
+ // Defined (and required) xAxis extremes
3194
+ (!checkX ||
3195
+ (BoostSeries_isNumber(xAxis.min) && BoostSeries_isNumber(xAxis.max))) &&
3196
+ // Defined (e.g. heatmap) colorAxis extremes
3197
+ (!colorAxis ||
3198
+ (BoostSeries_isNumber(colorAxis.min) && BoostSeries_isNumber(colorAxis.max)));
3199
+ }
3200
+ /**
3201
+ * Used multiple times. In processData first on this.options.data, the second
3202
+ * time it runs the check again after processedXData is built.
3203
+ * If the data is going to be grouped, the series shouldn't be boosted.
3204
+ * @private
3205
+ */
3206
+ const getSeriesBoosting = (series, data) => {
3207
+ // Check if will be grouped.
3208
+ if (series.forceCrop) {
3209
+ return false;
3210
+ }
3211
+ return (BoostSeries_isChartSeriesBoosting(series.chart) ||
3212
+ ((data ? data.length : 0) >=
3213
+ (series.options.boostThreshold || Number.MAX_VALUE)));
3214
+ };
3215
+ /**
3216
+ * Extend series.destroy to also remove the fake k-d-tree points (#5137).
3217
+ * Normally this is handled by Series.destroy that calls Point.destroy,
3218
+ * but the fake search points are not registered like that.
3219
+ * @private
3220
+ */
3221
+ function onSeriesDestroy() {
3222
+ const series = this, chart = series.chart;
3223
+ if (chart.boost &&
3224
+ chart.boost.markerGroup === series.markerGroup) {
3225
+ series.markerGroup = null;
3226
+ }
3227
+ if (chart.hoverPoints) {
3228
+ chart.hoverPoints = chart.hoverPoints.filter(function (point) {
3229
+ return point.series === series;
3230
+ });
3231
+ }
3232
+ if (chart.hoverPoint && chart.hoverPoint.series === series) {
3233
+ chart.hoverPoint = null;
3234
+ }
3235
+ }
3236
+ /**
3237
+ * @private
3238
+ */
3239
+ function onSeriesHide() {
3240
+ const boost = this.boost;
3241
+ if (boost && boost.canvas && boost.target) {
3242
+ if (boost.wgl) {
3243
+ boost.wgl.clear();
3244
+ }
3245
+ if (boost.clear) {
3246
+ boost.clear();
3247
+ }
3248
+ }
3249
+ }
3250
+ /**
3251
+ * Performs the actual render if the renderer is
3252
+ * attached to the series.
3253
+ * @private
3254
+ */
3255
+ function renderIfNotSeriesBoosting(series) {
3256
+ const boost = series.boost;
3257
+ if (boost &&
3258
+ boost.canvas &&
3259
+ boost.target &&
3260
+ boost.wgl &&
3261
+ !BoostSeries_isChartSeriesBoosting(series.chart)) {
3262
+ boost.wgl.render(series.chart);
3263
+ }
3264
+ }
3265
+ /**
3266
+ * Return a full Point object based on the index.
3267
+ * The boost module uses stripped point objects for performance reasons.
3268
+ * @private
3269
+ * @param {object|Highcharts.Point} boostPoint
3270
+ * A stripped-down point object
3271
+ * @return {Highcharts.Point}
3272
+ * A Point object as per https://api.highcharts.com/highcharts#Point
3273
+ */
3274
+ function getPoint(series, boostPoint) {
3275
+ const seriesOptions = series.options, xAxis = series.xAxis, PointClass = series.pointClass;
3276
+ if (boostPoint instanceof PointClass) {
3277
+ return boostPoint;
3278
+ }
3279
+ const isScatter = series.is('scatter'), xData = ((isScatter && series.getColumn('x', true).length ?
3280
+ series.getColumn('x', true) :
3281
+ void 0) ||
3282
+ (series.getColumn('x').length ? series.getColumn('x') : void 0) ||
3283
+ seriesOptions.xData ||
3284
+ series.getColumn('x', true) ||
3285
+ false), yData = (series.getColumn('y', true) ||
3286
+ seriesOptions.yData ||
3287
+ false), point = new PointClass(series, (isScatter && xData && yData) ?
3288
+ [xData[boostPoint.i], yData[boostPoint.i]] :
3289
+ (isArray(series.options.data) ? series.options.data : [])[boostPoint.i], xData ? xData[boostPoint.i] : void 0);
3290
+ point.category = BoostSeries_pick(xAxis.categories ?
3291
+ xAxis.categories[point.x] :
3292
+ point.x, // @todo simplify
3293
+ point.x);
3294
+ point.key = point.name ?? point.category;
3295
+ point.dist = boostPoint.dist;
3296
+ point.distX = boostPoint.distX;
3297
+ point.plotX = boostPoint.plotX;
3298
+ point.plotY = boostPoint.plotY;
3299
+ point.index = boostPoint.i;
3300
+ point.percentage = boostPoint.percentage;
3301
+ point.isInside = series.isPointInside(point);
3302
+ return point;
3303
+ }
3304
+ /**
3305
+ * @private
3306
+ */
3307
+ function scatterProcessData(force) {
3308
+ const series = this, { options, xAxis, yAxis } = series;
3309
+ // Process only on changes
3310
+ if (!series.isDirty &&
3311
+ !xAxis.isDirty &&
3312
+ !yAxis.isDirty &&
3313
+ !force) {
3314
+ return false;
3315
+ }
3316
+ // Required to get tick-based zoom ranges that take options into account
3317
+ // like `minPadding`, `maxPadding`, `startOnTick`, `endOnTick`.
3318
+ series.yAxis.setTickInterval();
3319
+ const boostThreshold = options.boostThreshold || 0, cropThreshold = options.cropThreshold, xData = series.getColumn('x'), xExtremes = xAxis.getExtremes(), xMax = xExtremes.max ?? Number.MAX_VALUE, xMin = xExtremes.min ?? -Number.MAX_VALUE, yData = series.getColumn('y'), yExtremes = yAxis.getExtremes(), yMax = yExtremes.max ?? Number.MAX_VALUE, yMin = yExtremes.min ?? -Number.MAX_VALUE;
3320
+ // Skip processing in non-boost zoom
3321
+ if (!series.boosted &&
3322
+ xAxis.old &&
3323
+ yAxis.old &&
3324
+ xMin >= (xAxis.old.min ?? -Number.MAX_VALUE) &&
3325
+ xMax <= (xAxis.old.max ?? Number.MAX_VALUE) &&
3326
+ yMin >= (yAxis.old.min ?? -Number.MAX_VALUE) &&
3327
+ yMax <= (yAxis.old.max ?? Number.MAX_VALUE)) {
3328
+ series.dataTable.modified.setColumns({
3329
+ x: xData,
3330
+ y: yData
3331
+ });
3332
+ return true;
3333
+ }
3334
+ // Without thresholds just assign data
3335
+ const dataLength = series.dataTable.rowCount;
3336
+ if (!boostThreshold ||
3337
+ dataLength < boostThreshold ||
3338
+ (cropThreshold &&
3339
+ !series.forceCrop &&
3340
+ !series.getExtremesFromAll &&
3341
+ !options.getExtremesFromAll &&
3342
+ dataLength < cropThreshold)) {
3343
+ series.dataTable.modified.setColumns({
3344
+ x: xData,
3345
+ y: yData
3346
+ });
3347
+ return true;
3348
+ }
3349
+ // Filter unsorted scatter data for ranges
3350
+ const processedData = [], processedXData = [], processedYData = [], xRangeNeeded = !(BoostSeries_isNumber(xExtremes.max) || BoostSeries_isNumber(xExtremes.min)), yRangeNeeded = !(BoostSeries_isNumber(yExtremes.max) || BoostSeries_isNumber(yExtremes.min));
3351
+ let cropped = false, x, xDataMax = xData[0], xDataMin = xData[0], y, yDataMax = yData?.[0], yDataMin = yData?.[0];
3352
+ for (let i = 0, iEnd = xData.length; i < iEnd; ++i) {
3353
+ x = xData[i];
3354
+ y = yData?.[i];
3355
+ if (x >= xMin && x <= xMax &&
3356
+ y >= yMin && y <= yMax) {
3357
+ processedData.push({ x, y });
3358
+ processedXData.push(x);
3359
+ processedYData.push(y);
3360
+ if (xRangeNeeded) {
3361
+ xDataMax = Math.max(xDataMax, x);
3362
+ xDataMin = Math.min(xDataMin, x);
3363
+ }
3364
+ if (yRangeNeeded) {
3365
+ yDataMax = Math.max(yDataMax, y);
3366
+ yDataMin = Math.min(yDataMin, y);
3367
+ }
3368
+ }
3369
+ else {
3370
+ cropped = true;
3371
+ }
3372
+ }
3373
+ if (xRangeNeeded) {
3374
+ xAxis.dataMax = Math.max(xDataMax, xAxis.dataMax || 0);
3375
+ xAxis.dataMin = Math.min(xDataMin, xAxis.dataMin || 0);
3376
+ }
3377
+ if (yRangeNeeded) {
3378
+ yAxis.dataMax = Math.max(yDataMax, yAxis.dataMax || 0);
3379
+ yAxis.dataMin = Math.min(yDataMin, yAxis.dataMin || 0);
3380
+ }
3381
+ // Set properties as base processData
3382
+ series.cropped = cropped;
3383
+ series.cropStart = 0;
3384
+ // For boosted points rendering
3385
+ if (cropped && series.dataTable.modified === series.dataTable) {
3386
+ // Calling setColumns with cropped data must be done on a new instance
3387
+ // to avoid modification of the original (complete) data
3388
+ series.dataTable.modified = new Data_DataTableCore();
3389
+ }
3390
+ series.dataTable.modified.setColumns({
3391
+ x: processedXData,
3392
+ y: processedYData
3393
+ });
3394
+ if (!getSeriesBoosting(series, processedXData)) {
3395
+ series.processedData = processedData; // For un-boosted points rendering
3396
+ }
3397
+ return true;
3398
+ }
3399
+ /**
3400
+ * @private
3401
+ * @function Highcharts.Series#renderCanvas
3402
+ */
3403
+ function seriesRenderCanvas() {
3404
+ const options = this.options || {}, chart = this.chart, chartBoost = chart.boost, seriesBoost = this.boost, xAxis = this.xAxis, yAxis = this.yAxis, xData = options.xData || this.getColumn('x', true), yData = options.yData || this.getColumn('y', true), lowData = this.getColumn('low', true), highData = this.getColumn('high', true), rawData = this.processedData || options.data, xExtremes = xAxis.getExtremes(),
3405
+ // Taking into account the offset of the min point #19497
3406
+ xMin = xExtremes.min - (xAxis.minPointOffset || 0), xMax = xExtremes.max + (xAxis.minPointOffset || 0), yExtremes = yAxis.getExtremes(), yMin = yExtremes.min - (yAxis.minPointOffset || 0), yMax = yExtremes.max + (yAxis.minPointOffset || 0), pointTaken = {}, sampling = !!this.sampling, enableMouseTracking = options.enableMouseTracking, threshold = options.threshold, isRange = this.pointArrayMap &&
3407
+ this.pointArrayMap.join(',') === 'low,high', isStacked = !!options.stacking, cropStart = this.cropStart || 0, requireSorting = this.requireSorting, useRaw = !xData, compareX = options.findNearestPointBy === 'x', xDataFull = ((this.getColumn('x').length ?
3408
+ this.getColumn('x') :
3409
+ void 0) ||
3410
+ this.options.xData ||
3411
+ this.getColumn('x', true)), lineWidth = BoostSeries_pick(options.lineWidth, 1), nullYSubstitute = options.nullInteraction && yMin;
3412
+ let renderer = false, lastClientX, yBottom = yAxis.getThreshold(threshold), minVal, maxVal, minI, maxI;
3413
+ // When touch-zooming or mouse-panning, re-rendering the canvas would not
3414
+ // perform fast enough. Instead, let the axes redraw, but not the series.
3415
+ // The series is scale-translated in an event handler for an approximate
3416
+ // preview.
3417
+ if (xAxis.isPanning || yAxis.isPanning) {
3418
+ return;
3419
+ }
3420
+ // Get or create the renderer
3421
+ renderer = createAndAttachRenderer(chart, this);
3422
+ chart.boosted = true;
3423
+ if (!this.visible) {
3424
+ return;
3425
+ }
3426
+ // If we are zooming out from SVG mode, destroy the graphics
3427
+ if (this.points || this.graph) {
3428
+ destroyGraphics(this);
3429
+ }
3430
+ // If we're rendering per. series we should create the marker groups
3431
+ // as usual.
3432
+ if (!BoostSeries_isChartSeriesBoosting(chart)) {
3433
+ // If all series were boosting, but are not anymore
3434
+ // restore private markerGroup
3435
+ if (this.markerGroup === chartBoost?.markerGroup) {
3436
+ this.markerGroup = void 0;
3437
+ }
3438
+ this.markerGroup = this.plotGroup('markerGroup', 'markers', 'visible', 1, chart.seriesGroup).addClass('highcharts-tracker');
3439
+ }
3440
+ else {
3441
+ // If series has a private markerGroup, remove that
3442
+ // and use common markerGroup
3443
+ if (this.markerGroup &&
3444
+ this.markerGroup !== chartBoost?.markerGroup) {
3445
+ this.markerGroup.destroy();
3446
+ }
3447
+ // Use a single group for the markers
3448
+ this.markerGroup = chartBoost?.markerGroup;
3449
+ // When switching from chart boosting mode, destroy redundant
3450
+ // series boosting targets
3451
+ if (seriesBoost && seriesBoost.target) {
3452
+ this.renderTarget =
3453
+ seriesBoost.target =
3454
+ seriesBoost.target.destroy();
3455
+ }
3456
+ }
3457
+ const points = this.points = [], addKDPoint = (clientX, plotY, i, percentage) => {
3458
+ const x = xDataFull ? xDataFull[cropStart + i] : false, pushPoint = (plotX) => {
3459
+ if (chart.inverted) {
3460
+ plotX = xAxis.len - plotX;
3461
+ plotY = yAxis.len - plotY;
3462
+ }
3463
+ points.push({
3464
+ destroy: noop,
3465
+ x: x,
3466
+ clientX: plotX,
3467
+ plotX: plotX,
3468
+ plotY: plotY,
3469
+ i: cropStart + i,
3470
+ percentage: percentage
3471
+ });
3472
+ };
3473
+ // We need to do ceil on the clientX to make things
3474
+ // snap to pixel values. The renderer will frequently
3475
+ // draw stuff on "sub-pixels".
3476
+ clientX = Math.ceil(clientX);
3477
+ // Shaves off about 60ms compared to repeated concatenation
3478
+ index = compareX ? clientX : clientX + ',' + plotY;
3479
+ // The k-d tree requires series points.
3480
+ // Reduce the amount of points, since the time to build the
3481
+ // tree increases exponentially.
3482
+ if (enableMouseTracking) {
3483
+ if (!pointTaken[index]) {
3484
+ pointTaken[index] = true;
3485
+ pushPoint(clientX);
3486
+ }
3487
+ else if (x === xDataFull[xDataFull.length - 1]) {
3488
+ // If the last point is on the same pixel as the last
3489
+ // tracked point, swap them. (#18856)
3490
+ points.length--;
3491
+ pushPoint(clientX);
3492
+ }
3493
+ }
3494
+ };
3495
+ // Do not start building while drawing
3496
+ this.buildKDTree = noop;
3497
+ BoostSeries_fireEvent(this, 'renderCanvas');
3498
+ if (this.is('line') &&
3499
+ lineWidth > 1 &&
3500
+ seriesBoost?.target &&
3501
+ chartBoost &&
3502
+ !chartBoost.lineWidthFilter) {
3503
+ chartBoost.lineWidthFilter = chart.renderer.definition({
3504
+ tagName: 'filter',
3505
+ children: [
3506
+ {
3507
+ tagName: 'feMorphology',
3508
+ attributes: {
3509
+ operator: 'dilate',
3510
+ radius: 0.25 * lineWidth
3511
+ }
3512
+ }
3513
+ ],
3514
+ attributes: { id: 'linewidth' }
3515
+ });
3516
+ seriesBoost.target.attr({
3517
+ filter: 'url(#linewidth)'
3518
+ });
3519
+ }
3520
+ if (renderer) {
3521
+ allocateIfNotSeriesBoosting(renderer, this);
3522
+ renderer.pushSeries(this);
3523
+ // Perform the actual renderer if we're on series level
3524
+ renderIfNotSeriesBoosting(this);
3525
+ }
3526
+ /**
3527
+ * This builds the KD-tree
3528
+ * @private
3529
+ */
3530
+ function processPoint(d, i) {
3531
+ const chartDestroyed = typeof chart.index === 'undefined';
3532
+ let x, y, clientX, plotY, percentage, low = false, isYInside = true;
3533
+ if (!defined(d)) {
3534
+ return true;
3535
+ }
3536
+ if (!chartDestroyed) {
3537
+ if (useRaw) {
3538
+ x = d[0];
3539
+ y = d[1];
3540
+ }
3541
+ else {
3542
+ x = d;
3543
+ y = yData[i] ?? nullYSubstitute ?? null;
3544
+ }
3545
+ // Resolve low and high for range series
3546
+ if (isRange) {
3547
+ if (useRaw) {
3548
+ y = d.slice(1, 3);
3549
+ }
3550
+ low = lowData[i];
3551
+ y = highData[i];
3552
+ }
3553
+ else if (isStacked) {
3554
+ x = d.x;
3555
+ y = d.stackY;
3556
+ low = y - d.y;
3557
+ percentage = d.percentage;
3558
+ }
3559
+ // Optimize for scatter zooming
3560
+ if (!requireSorting) {
3561
+ isYInside = (y || 0) >= yMin && y <= yMax;
3562
+ }
3563
+ if (y !== null && x >= xMin && x <= xMax && isYInside) {
3564
+ clientX = xAxis.toPixels(x, true);
3565
+ if (sampling) {
3566
+ if (typeof minI === 'undefined' ||
3567
+ clientX === lastClientX) {
3568
+ if (!isRange) {
3569
+ low = y;
3570
+ }
3571
+ if (typeof maxI === 'undefined' ||
3572
+ y > maxVal) {
3573
+ maxVal = y;
3574
+ maxI = i;
3575
+ }
3576
+ if (typeof minI === 'undefined' ||
3577
+ low < minVal) {
3578
+ minVal = low;
3579
+ minI = i;
3580
+ }
3581
+ }
3582
+ // Add points and reset
3583
+ if (!compareX || clientX !== lastClientX) {
3584
+ // `maxI` is number too:
3585
+ if (typeof minI !== 'undefined') {
3586
+ plotY =
3587
+ yAxis.toPixels(maxVal, true);
3588
+ yBottom =
3589
+ yAxis.toPixels(minVal, true);
3590
+ addKDPoint(clientX, plotY, maxI, percentage);
3591
+ if (yBottom !== plotY) {
3592
+ addKDPoint(clientX, yBottom, minI, percentage);
3593
+ }
3594
+ }
3595
+ minI = maxI = void 0;
3596
+ lastClientX = clientX;
3597
+ }
3598
+ }
3599
+ else {
3600
+ plotY = Math.ceil(yAxis.toPixels(y, true));
3601
+ addKDPoint(clientX, plotY, i, percentage);
3602
+ }
3603
+ }
3604
+ }
3605
+ return !chartDestroyed;
3606
+ }
3607
+ /**
3608
+ * @private
3609
+ */
3610
+ const boostOptions = renderer.settings, doneProcessing = () => {
3611
+ BoostSeries_fireEvent(this, 'renderedCanvas');
3612
+ // Go back to prototype, ready to build
3613
+ delete this.buildKDTree;
3614
+ // Check that options exist, as async processing
3615
+ // could mean the series is removed at this point (#19895)
3616
+ if (this.options) {
3617
+ this.buildKDTree();
3618
+ }
3619
+ if (boostOptions.debug.timeKDTree) {
3620
+ console.timeEnd('kd tree building'); // eslint-disable-line no-console
3621
+ }
3622
+ };
3623
+ // Loop over the points to build the k-d tree - skip this if
3624
+ // exporting
3625
+ if (!chart.renderer.forExport) {
3626
+ if (boostOptions.debug.timeKDTree) {
3627
+ console.time('kd tree building'); // eslint-disable-line no-console
3628
+ }
3629
+ eachAsync(isStacked ?
3630
+ this.data.slice(cropStart) :
3631
+ (xData || rawData), processPoint, doneProcessing);
3632
+ }
3633
+ }
3634
+ /**
3635
+ * Used for treemap|heatmap.drawPoints
3636
+ * @private
3637
+ */
3638
+ function wrapSeriesDrawPoints(proceed) {
3639
+ let enabled = true;
3640
+ if (this.chart.options && this.chart.options.boost) {
3641
+ enabled = typeof this.chart.options.boost.enabled === 'undefined' ?
3642
+ true :
3643
+ this.chart.options.boost.enabled;
3644
+ }
3645
+ if (!enabled || !this.boosted) {
3646
+ return proceed.call(this);
3647
+ }
3648
+ this.chart.boosted = true;
3649
+ // Make sure we have a valid OGL context
3650
+ const renderer = createAndAttachRenderer(this.chart, this);
3651
+ if (renderer) {
3652
+ allocateIfNotSeriesBoosting(renderer, this);
3653
+ renderer.pushSeries(this);
3654
+ }
3655
+ renderIfNotSeriesBoosting(this);
3656
+ }
3657
+ /**
3658
+ * Override a bunch of methods the same way. If the number of points is
3659
+ * below the threshold, run the original method. If not, check for a
3660
+ * canvas version or do nothing.
3661
+ *
3662
+ * Note that we're not overriding any of these for heatmaps.
3663
+ */
3664
+ function wrapSeriesFunctions(seriesProto, seriesTypes, method) {
3665
+ /**
3666
+ * @private
3667
+ */
3668
+ function branch(proceed) {
3669
+ const letItPass = this.options.stacking &&
3670
+ (method === 'translate' || method === 'generatePoints');
3671
+ if (!this.boosted ||
3672
+ letItPass ||
3673
+ !boostEnabled(this.chart) ||
3674
+ this.type === 'heatmap' ||
3675
+ this.type === 'treemap' ||
3676
+ !Boost_BoostableMap[this.type] ||
3677
+ this.options.boostThreshold === 0) {
3678
+ proceed.call(this);
3679
+ // Run canvas version of method, like renderCanvas(), if it exists
3680
+ }
3681
+ else if (method === 'render' && this.renderCanvas) {
3682
+ this.renderCanvas();
3683
+ }
3684
+ }
3685
+ wrap(seriesProto, method, branch);
3686
+ // Special case for some types, when translate method is already wrapped
3687
+ if (method === 'translate') {
3688
+ for (const type of [
3689
+ 'column',
3690
+ 'arearange',
3691
+ 'columnrange',
3692
+ 'heatmap',
3693
+ 'treemap'
3694
+ ]) {
3695
+ if (seriesTypes[type]) {
3696
+ wrap(seriesTypes[type].prototype, method, branch);
3697
+ }
3698
+ }
3699
+ }
3700
+ }
3701
+ /**
3702
+ * Do not compute extremes when min and max are set. If we use this in the
3703
+ * core, we can add the hook to hasExtremes to the methods directly.
3704
+ * @private
3705
+ */
3706
+ function wrapSeriesGetExtremes(proceed) {
3707
+ if (this.boosted) {
3708
+ if (hasExtremes(this)) {
3709
+ return {};
3710
+ }
3711
+ if (this.xAxis.isPanning || this.yAxis.isPanning) {
3712
+ // Do not re-compute the extremes during panning, because looping
3713
+ // the data is expensive. The `this` contains the `dataMin` and
3714
+ // `dataMax` to use.
3715
+ return this;
3716
+ }
3717
+ }
3718
+ return proceed.apply(this, [].slice.call(arguments, 1));
3719
+ }
3720
+ /**
3721
+ * If the series is a heatmap or treemap, or if the series is not boosting
3722
+ * do the default behaviour. Otherwise, process if the series has no
3723
+ * extremes.
3724
+ * @private
3725
+ */
3726
+ function wrapSeriesProcessData(proceed) {
3727
+ let dataToMeasure = this.options.data;
3728
+ if (boostEnabled(this.chart) && Boost_BoostableMap[this.type]) {
3729
+ const series = this,
3730
+ // Flag for code that should run for ScatterSeries and its
3731
+ // subclasses, apart from the enlisted exceptions.
3732
+ isScatter = series.is('scatter') &&
3733
+ !series.is('bubble') &&
3734
+ !series.is('treemap') &&
3735
+ !series.is('heatmap');
3736
+ // If there are no extremes given in the options, we also need to
3737
+ // process the data to read the data extremes. If this is a heatmap,
3738
+ // do default behaviour.
3739
+ if (
3740
+ // First pass with options.data:
3741
+ !getSeriesBoosting(series, dataToMeasure) ||
3742
+ isScatter ||
3743
+ series.is('treemap') ||
3744
+ // Use processedYData for the stack (#7481):
3745
+ series.options.stacking ||
3746
+ !hasExtremes(series, true)) {
3747
+ // Do nothing until the panning stops
3748
+ if (series.boosted && (series.xAxis?.isPanning || series.yAxis?.isPanning)) {
3749
+ return;
3750
+ }
3751
+ // Extra check for zoomed scatter data
3752
+ if (isScatter && series.yAxis.type !== 'treegrid') {
3753
+ scatterProcessData.call(series, arguments[1]);
3754
+ }
3755
+ else {
3756
+ proceed.apply(series, [].slice.call(arguments, 1));
3757
+ }
3758
+ dataToMeasure = series.getColumn('x', true);
3759
+ }
3760
+ // Set the isBoosting flag, second pass with processedXData to
3761
+ // see if we have zoomed.
3762
+ series.boosted = getSeriesBoosting(series, dataToMeasure);
3763
+ // Enter or exit boost mode
3764
+ if (series.boosted) {
3765
+ // Force turbo-mode:
3766
+ let firstPoint;
3767
+ if (series.options.data?.length) {
3768
+ firstPoint = series.getFirstValidPoint(series.options.data);
3769
+ if (!BoostSeries_isNumber(firstPoint) &&
3770
+ !isArray(firstPoint) &&
3771
+ !series.is('treemap')) {
3772
+ BoostSeries_error(12, false, series.chart);
3773
+ }
3774
+ }
3775
+ enterBoost(series);
3776
+ }
3777
+ else {
3778
+ exitBoost(series);
3779
+ }
3780
+ // The series type is not boostable
3781
+ }
3782
+ else {
3783
+ proceed.apply(this, [].slice.call(arguments, 1));
3784
+ }
3785
+ }
3786
+ /**
3787
+ * Return a point instance from the k-d-tree
3788
+ * @private
3789
+ */
3790
+ function wrapSeriesSearchPoint(proceed) {
3791
+ const result = proceed.apply(this, [].slice.call(arguments, 1));
3792
+ if (this.boost && result) {
3793
+ return this.boost.getPoint(result);
3794
+ }
3795
+ return result;
3796
+ }
3797
+ /* *
3798
+ *
3799
+ * Default Export
3800
+ *
3801
+ * */
3802
+ const BoostSeries = {
3803
+ compose: BoostSeries_compose,
3804
+ destroyGraphics,
3805
+ eachAsync,
3806
+ getPoint
3807
+ };
3808
+ /* harmony default export */ const Boost_BoostSeries = (BoostSeries);
3809
+
3810
+ ;// ./code/es-modules/Extensions/Boost/NamedColors.js
3811
+ /* *
3812
+ *
3813
+ * (c) 2019-2025 Highsoft AS
3814
+ *
3815
+ * Boost module: stripped-down renderer for higher performance
3816
+ *
3817
+ * License: highcharts.com/license
3818
+ *
3819
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
3820
+ *
3821
+ * */
3822
+
3823
+ /* *
3824
+ *
3825
+ * Constants
3826
+ *
3827
+ * */
3828
+ // Register color names since GL can't render those directly.
3829
+ // TODO: When supporting modern syntax, make this a named export
3830
+ const defaultHTMLColorMap = {
3831
+ aliceblue: '#f0f8ff',
3832
+ antiquewhite: '#faebd7',
3833
+ aqua: '#00ffff',
3834
+ aquamarine: '#7fffd4',
3835
+ azure: '#f0ffff',
3836
+ beige: '#f5f5dc',
3837
+ bisque: '#ffe4c4',
3838
+ blanchedalmond: '#ffebcd',
3839
+ blue: '#0000ff',
3840
+ blueviolet: '#8a2be2',
3841
+ brown: '#a52a2a',
3842
+ burlywood: '#deb887',
3843
+ cadetblue: '#5f9ea0',
3844
+ chartreuse: '#7fff00',
3845
+ chocolate: '#d2691e',
3846
+ coral: '#ff7f50',
3847
+ cornflowerblue: '#6495ed',
3848
+ cornsilk: '#fff8dc',
3849
+ crimson: '#dc143c',
3850
+ cyan: '#00ffff',
3851
+ darkblue: '#00008b',
3852
+ darkcyan: '#008b8b',
3853
+ darkgoldenrod: '#b8860b',
3854
+ darkgray: '#a9a9a9',
3855
+ darkgreen: '#006400',
3856
+ darkkhaki: '#bdb76b',
3857
+ darkmagenta: '#8b008b',
3858
+ darkolivegreen: '#556b2f',
3859
+ darkorange: '#ff8c00',
3860
+ darkorchid: '#9932cc',
3861
+ darkred: '#8b0000',
3862
+ darksalmon: '#e9967a',
3863
+ darkseagreen: '#8fbc8f',
3864
+ darkslateblue: '#483d8b',
3865
+ darkslategray: '#2f4f4f',
3866
+ darkturquoise: '#00ced1',
3867
+ darkviolet: '#9400d3',
3868
+ deeppink: '#ff1493',
3869
+ deepskyblue: '#00bfff',
3870
+ dimgray: '#696969',
3871
+ dodgerblue: '#1e90ff',
3872
+ feldspar: '#d19275',
3873
+ firebrick: '#b22222',
3874
+ floralwhite: '#fffaf0',
3875
+ forestgreen: '#228b22',
3876
+ fuchsia: '#ff00ff',
3877
+ gainsboro: '#dcdcdc',
3878
+ ghostwhite: '#f8f8ff',
3879
+ gold: '#ffd700',
3880
+ goldenrod: '#daa520',
3881
+ gray: '#808080',
3882
+ grey: '#808080',
3883
+ green: '#008000',
3884
+ greenyellow: '#adff2f',
3885
+ honeydew: '#f0fff0',
3886
+ hotpink: '#ff69b4',
3887
+ indianred: '#cd5c5c',
3888
+ indigo: '#4b0082',
3889
+ ivory: '#fffff0',
3890
+ khaki: '#f0e68c',
3891
+ lavender: '#e6e6fa',
3892
+ lavenderblush: '#fff0f5',
3893
+ lawngreen: '#7cfc00',
3894
+ lemonchiffon: '#fffacd',
3895
+ lightblue: '#add8e6',
3896
+ lightcoral: '#f08080',
3897
+ lightcyan: '#e0ffff',
3898
+ lightgoldenrodyellow: '#fafad2',
3899
+ lightgrey: '#d3d3d3',
3900
+ lightgreen: '#90ee90',
3901
+ lightpink: '#ffb6c1',
3902
+ lightsalmon: '#ffa07a',
3903
+ lightseagreen: '#20b2aa',
3904
+ lightskyblue: '#87cefa',
3905
+ lightslateblue: '#8470ff',
3906
+ lightslategray: '#778899',
3907
+ lightsteelblue: '#b0c4de',
3908
+ lightyellow: '#ffffe0',
3909
+ lime: '#00ff00',
3910
+ limegreen: '#32cd32',
3911
+ linen: '#faf0e6',
3912
+ magenta: '#ff00ff',
3913
+ maroon: '#800000',
3914
+ mediumaquamarine: '#66cdaa',
3915
+ mediumblue: '#0000cd',
3916
+ mediumorchid: '#ba55d3',
3917
+ mediumpurple: '#9370d8',
3918
+ mediumseagreen: '#3cb371',
3919
+ mediumslateblue: '#7b68ee',
3920
+ mediumspringgreen: '#00fa9a',
3921
+ mediumturquoise: '#48d1cc',
3922
+ mediumvioletred: '#c71585',
3923
+ midnightblue: '#191970',
3924
+ mintcream: '#f5fffa',
3925
+ mistyrose: '#ffe4e1',
3926
+ moccasin: '#ffe4b5',
3927
+ navajowhite: '#ffdead',
3928
+ navy: '#000080',
3929
+ oldlace: '#fdf5e6',
3930
+ olive: '#808000',
3931
+ olivedrab: '#6b8e23',
3932
+ orange: '#ffa500',
3933
+ orangered: '#ff4500',
3934
+ orchid: '#da70d6',
3935
+ palegoldenrod: '#eee8aa',
3936
+ palegreen: '#98fb98',
3937
+ paleturquoise: '#afeeee',
3938
+ palevioletred: '#d87093',
3939
+ papayawhip: '#ffefd5',
3940
+ peachpuff: '#ffdab9',
3941
+ peru: '#cd853f',
3942
+ pink: '#ffc0cb',
3943
+ plum: '#dda0dd',
3944
+ powderblue: '#b0e0e6',
3945
+ purple: '#800080',
3946
+ red: '#ff0000',
3947
+ rosybrown: '#bc8f8f',
3948
+ royalblue: '#4169e1',
3949
+ saddlebrown: '#8b4513',
3950
+ salmon: '#fa8072',
3951
+ sandybrown: '#f4a460',
3952
+ seagreen: '#2e8b57',
3953
+ seashell: '#fff5ee',
3954
+ sienna: '#a0522d',
3955
+ silver: '#c0c0c0',
3956
+ skyblue: '#87ceeb',
3957
+ slateblue: '#6a5acd',
3958
+ slategray: '#708090',
3959
+ snow: '#fffafa',
3960
+ springgreen: '#00ff7f',
3961
+ steelblue: '#4682b4',
3962
+ tan: '#d2b48c',
3963
+ teal: '#008080',
3964
+ thistle: '#d8bfd8',
3965
+ tomato: '#ff6347',
3966
+ turquoise: '#40e0d0',
3967
+ violet: '#ee82ee',
3968
+ violetred: '#d02090',
3969
+ wheat: '#f5deb3',
3970
+ whitesmoke: '#f5f5f5',
3971
+ yellow: '#ffff00',
3972
+ yellowgreen: '#9acd32'
3973
+ };
3974
+ /* *
3975
+ *
3976
+ * Default Export
3977
+ *
3978
+ * */
3979
+ const namedColors = {
3980
+ defaultHTMLColorMap
3981
+ };
3982
+ /* harmony default export */ const NamedColors = (namedColors);
3983
+
3984
+ ;// ./code/es-modules/Extensions/Boost/Boost.js
3985
+ /* *
3986
+ *
3987
+ * (c) 2019-2025 Highsoft AS
3988
+ *
3989
+ * Boost module: stripped-down renderer for higher performance
3990
+ *
3991
+ * License: highcharts.com/license
3992
+ *
3993
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
3994
+ *
3995
+ * */
3996
+
3997
+
3998
+
3999
+
4000
+ const { doc: Boost_doc, win: Boost_win } = (external_highcharts_src_js_default_default());
4001
+
4002
+
4003
+ const { addEvent: Boost_addEvent, error: Boost_error } = (external_highcharts_src_js_default_default());
4004
+ /* *
4005
+ *
4006
+ * Constants
4007
+ *
4008
+ * */
4009
+ const Boost_contexts = [
4010
+ 'webgl',
4011
+ 'experimental-webgl',
4012
+ 'moz-webgl',
4013
+ 'webkit-3d'
4014
+ ];
4015
+ /* *
4016
+ *
4017
+ * Functions
4018
+ *
4019
+ * */
4020
+ /**
4021
+ * @private
4022
+ */
4023
+ function Boost_compose(ChartClass, AxisClass, SeriesClass, seriesTypes, PointClass, ColorClass) {
4024
+ const wglMode = hasWebGLSupport();
4025
+ if (!wglMode) {
4026
+ if (typeof (external_highcharts_src_js_default_default()).initCanvasBoost !== 'undefined') {
4027
+ // Fallback to canvas boost
4028
+ external_highcharts_src_js_default_default().initCanvasBoost();
4029
+ }
4030
+ else {
4031
+ Boost_error(26);
4032
+ }
4033
+ }
4034
+ if (ColorClass && !ColorClass.names.lightgoldenrodyellow) {
4035
+ ColorClass.names = {
4036
+ ...ColorClass.names,
4037
+ ...NamedColors.defaultHTMLColorMap
4038
+ };
4039
+ }
4040
+ // WebGL support is alright, and we're good to go.
4041
+ Boost_BoostChart.compose(ChartClass, wglMode);
4042
+ Boost_BoostSeries.compose(SeriesClass, seriesTypes, PointClass, wglMode);
4043
+ // Handle zooming by touch/pinch or mouse wheel. Assume that boosted charts
4044
+ // are too slow for a live preview while dragging. Instead, just scale the
4045
+ // div while `isPanning`.
4046
+ Boost_addEvent(AxisClass, 'setExtremes', function (e) {
4047
+ // Render targets can be either chart-wide or series-specific
4048
+ const renderTargets = [this.chart, ...this.series]
4049
+ .map((item) => item.renderTarget)
4050
+ .filter(Boolean);
4051
+ for (const renderTarget of renderTargets) {
4052
+ const { horiz, pos } = this, scaleKey = horiz ? 'scaleX' : 'scaleY', translateKey = horiz ? 'translateX' : 'translateY', lastScale = renderTarget?.[scaleKey] ?? 1;
4053
+ let scale = 1, translate = 0, opacity = 1, filter = 'none';
4054
+ if (this.isPanning) {
4055
+ scale = (e.scale ?? 1) * lastScale;
4056
+ translate = (renderTarget?.[translateKey] || 0) -
4057
+ scale * (e.move || 0) +
4058
+ lastScale * pos -
4059
+ scale * pos;
4060
+ opacity = 0.7;
4061
+ filter = 'blur(3px)';
4062
+ }
4063
+ renderTarget
4064
+ ?.attr({
4065
+ [scaleKey]: scale,
4066
+ [translateKey]: translate
4067
+ })
4068
+ .css({
4069
+ transition: '250ms filter, 250ms opacity',
4070
+ filter,
4071
+ opacity
4072
+ });
4073
+ }
4074
+ });
4075
+ }
4076
+ /**
4077
+ * Returns true if the current browser supports WebGL.
4078
+ *
4079
+ * @requires modules/boost
4080
+ *
4081
+ * @function Highcharts.hasWebGLSupport
4082
+ *
4083
+ * @return {boolean}
4084
+ * `true` if the browser supports WebGL.
4085
+ */
4086
+ function hasWebGLSupport() {
4087
+ let canvas, gl = false;
4088
+ if (typeof Boost_win.WebGLRenderingContext !== 'undefined') {
4089
+ canvas = Boost_doc.createElement('canvas');
4090
+ for (let i = 0; i < Boost_contexts.length; ++i) {
4091
+ try {
4092
+ gl = canvas.getContext(Boost_contexts[i]);
4093
+ if (typeof gl !== 'undefined' && gl !== null) {
4094
+ return true;
4095
+ }
4096
+ }
4097
+ catch (e) {
4098
+ // Silent error
4099
+ }
4100
+ }
4101
+ }
4102
+ return false;
4103
+ }
4104
+ /* *
4105
+ *
4106
+ * Default Export
4107
+ *
4108
+ * */
4109
+ const Boost = {
4110
+ compose: Boost_compose,
4111
+ hasWebGLSupport
4112
+ };
4113
+ /* harmony default export */ const Boost_Boost = (Boost);
4114
+ /* *
4115
+ *
4116
+ * API Options
4117
+ *
4118
+ * */
4119
+ /**
4120
+ * Options for the Boost module. The Boost module allows certain series types
4121
+ * to be rendered by WebGL instead of the default SVG. This allows hundreds of
4122
+ * thousands of data points to be rendered in milliseconds. In addition to the
4123
+ * WebGL rendering it saves time by skipping processing and inspection of the
4124
+ * data wherever possible. This introduces some limitations to what features are
4125
+ * available in boost mode. See [the docs](
4126
+ * https://www.highcharts.com/docs/advanced-chart-features/boost-module) for
4127
+ * details.
4128
+ *
4129
+ * In addition to the global `boost` option, each series has a
4130
+ * [boostThreshold](#plotOptions.series.boostThreshold) that defines when the
4131
+ * boost should kick in.
4132
+ *
4133
+ * Requires the `modules/boost.js` module.
4134
+ *
4135
+ * @sample {highstock} highcharts/boost/line-series-heavy-stock
4136
+ * Stock chart
4137
+ * @sample {highstock} highcharts/boost/line-series-heavy-dynamic
4138
+ * Dynamic stock chart
4139
+ * @sample highcharts/boost/line
4140
+ * Line chart
4141
+ * @sample highcharts/boost/line-series-heavy
4142
+ * Line chart with hundreds of series
4143
+ * @sample highcharts/boost/scatter
4144
+ * Scatter chart
4145
+ * @sample highcharts/boost/area
4146
+ * Area chart
4147
+ * @sample highcharts/boost/arearange
4148
+ * Area range chart
4149
+ * @sample highcharts/boost/column
4150
+ * Column chart
4151
+ * @sample highcharts/boost/columnrange
4152
+ * Column range chart
4153
+ * @sample highcharts/boost/bubble
4154
+ * Bubble chart
4155
+ * @sample highcharts/boost/heatmap
4156
+ * Heat map
4157
+ * @sample highcharts/boost/treemap
4158
+ * Tree map
4159
+ *
4160
+ * @product highcharts highstock
4161
+ * @requires modules/boost
4162
+ * @apioption boost
4163
+ */
4164
+ /**
4165
+ * The chart will be boosted, if one of the series crosses its threshold and all
4166
+ * the series in the chart can be boosted.
4167
+ *
4168
+ * @type {boolean}
4169
+ * @default true
4170
+ * @apioption boost.allowForce
4171
+ */
4172
+ /**
4173
+ * Enable or disable boost on a chart.
4174
+ *
4175
+ * @type {boolean}
4176
+ * @default true
4177
+ * @apioption boost.enabled
4178
+ */
4179
+ /**
4180
+ * Debugging options for boost.
4181
+ * Useful for benchmarking, and general timing.
4182
+ *
4183
+ * @apioption boost.debug
4184
+ */
4185
+ /**
4186
+ * Time the series rendering.
4187
+ *
4188
+ * This outputs the time spent on actual rendering in the console when
4189
+ * set to true.
4190
+ *
4191
+ * @type {boolean}
4192
+ * @default false
4193
+ * @apioption boost.debug.timeRendering
4194
+ */
4195
+ /**
4196
+ * Time the series processing.
4197
+ *
4198
+ * This outputs the time spent on transforming the series data to
4199
+ * vertex buffers when set to true.
4200
+ *
4201
+ * @type {boolean}
4202
+ * @default false
4203
+ * @apioption boost.debug.timeSeriesProcessing
4204
+ */
4205
+ /**
4206
+ * Time the WebGL setup.
4207
+ *
4208
+ * This outputs the time spent on setting up the WebGL context,
4209
+ * creating shaders, and textures.
4210
+ *
4211
+ * @type {boolean}
4212
+ * @default false
4213
+ * @apioption boost.debug.timeSetup
4214
+ */
4215
+ /**
4216
+ * Time the building of the k-d tree.
4217
+ *
4218
+ * This outputs the time spent building the k-d tree used for
4219
+ * markers etc.
4220
+ *
4221
+ * Note that the k-d tree is built async, and runs post-rendering.
4222
+ * Following, it does not affect the performance of the rendering itself.
4223
+ *
4224
+ * @type {boolean}
4225
+ * @default false
4226
+ * @apioption boost.debug.timeKDTree
4227
+ */
4228
+ /**
4229
+ * Show the number of points skipped through culling.
4230
+ *
4231
+ * When set to true, the number of points skipped in series processing
4232
+ * is outputted. Points are skipped if they are closer than 1 pixel from
4233
+ * each other.
4234
+ *
4235
+ * @type {boolean}
4236
+ * @default false
4237
+ * @apioption boost.debug.showSkipSummary
4238
+ */
4239
+ /**
4240
+ * Time the WebGL to SVG buffer copy
4241
+ *
4242
+ * After rendering, the result is copied to an image which is injected
4243
+ * into the SVG.
4244
+ *
4245
+ * If this property is set to true, the time it takes for the buffer copy
4246
+ * to complete is outputted.
4247
+ *
4248
+ * @type {boolean}
4249
+ * @default false
4250
+ * @apioption boost.debug.timeBufferCopy
4251
+ */
4252
+ /**
4253
+ * The pixel ratio for the WebGL content. If 0, the `window.devicePixelRatio` is
4254
+ * used. This ensures sharp graphics on high DPI displays like Apple's Retina,
4255
+ * as well as when a page is zoomed.
4256
+ *
4257
+ * The default is left at 1 for now, as this is a new feature that has the
4258
+ * potential to break existing setups. Over time, when it has been battle
4259
+ * tested, the intention is to set it to 0 by default.
4260
+ *
4261
+ * Another use case for this option is to set it to 2 in order to make exported
4262
+ * and upscaled charts render sharp.
4263
+ *
4264
+ * One limitation when using the `pixelRatio` is that the line width of graphs
4265
+ * is scaled down. Since the Boost module currently can only render 1px line
4266
+ * widths, it is scaled down to a thin 0.5 pixels on a Retina display.
4267
+ *
4268
+ * @sample highcharts/boost/line-devicepixelratio
4269
+ * Enable the `devicePixelRatio`
4270
+ * @sample highcharts/boost/line-export-pixelratio
4271
+ * Sharper graphics in export
4272
+ *
4273
+ * @type {number}
4274
+ * @since 10.0.0
4275
+ * @default 1
4276
+ * @apioption boost.pixelRatio
4277
+ */
4278
+ /**
4279
+ * Set the series threshold for when the boost should kick in globally.
4280
+ *
4281
+ * Setting to e.g. 20 will cause the whole chart to enter boost mode
4282
+ * if there are 20 or more series active. When the chart is in boost mode,
4283
+ * every series in it will be rendered to a common canvas. This offers
4284
+ * a significant speed improvement in charts with a very high
4285
+ * amount of series.
4286
+ *
4287
+ * @type {number}
4288
+ * @default 50
4289
+ * @apioption boost.seriesThreshold
4290
+ */
4291
+ /**
4292
+ * Enable or disable GPU translations. GPU translations are faster than doing
4293
+ * the translation in JavaScript.
4294
+ *
4295
+ * This option may cause rendering issues with certain datasets.
4296
+ * Namely, if your dataset has large numbers with small increments (such as
4297
+ * timestamps), it won't work correctly. This is due to floating point
4298
+ * precision.
4299
+ *
4300
+ * @type {boolean}
4301
+ * @default false
4302
+ * @apioption boost.useGPUTranslations
4303
+ */
4304
+ /**
4305
+ * Enable or disable pre-allocation of vertex buffers.
4306
+ *
4307
+ * Enabling this will make it so that the binary data arrays required for
4308
+ * storing the series data will be allocated prior to transforming the data
4309
+ * to a WebGL-compatible format.
4310
+ *
4311
+ * This saves a copy operation on the order of O(n) and so is significantly more
4312
+ * performant. However, this is currently an experimental option, and may cause
4313
+ * visual artifacts with some datasets.
4314
+ *
4315
+ * As such, care should be taken when using this setting to make sure that
4316
+ * it doesn't cause any rendering glitches with the given use-case.
4317
+ *
4318
+ * @type {boolean}
4319
+ * @default false
4320
+ * @apioption boost.usePreallocated
4321
+ */
4322
+ /**
4323
+ * Set the point threshold for when a series should enter boost mode.
4324
+ *
4325
+ * Setting it to e.g. 2000 will cause the series to enter boost mode when there
4326
+ * are 2000 or more points in the series.
4327
+ *
4328
+ * To disable boosting on the series, set the `boostThreshold` to 0. Setting it
4329
+ * to 1 will force boosting.
4330
+ *
4331
+ * Note that the [cropThreshold](plotOptions.series.cropThreshold) also affects
4332
+ * this setting. When zooming in on a series that has fewer points than the
4333
+ * `cropThreshold`, all points are rendered although outside the visible plot
4334
+ * area, and the `boostThreshold` won't take effect.
4335
+ *
4336
+ * @type {number}
4337
+ * @default 5000
4338
+ * @requires modules/boost
4339
+ * @apioption plotOptions.series.boostThreshold
4340
+ */
4341
+ /**
4342
+ * Sets the color blending in the boost module.
4343
+ *
4344
+ * @type {string}
4345
+ * @default undefined
4346
+ * @validvalue ["add", "multiply", "darken"]
4347
+ * @requires modules/boost
4348
+ * @apioption plotOptions.series.boostBlending
4349
+ */
4350
+ ''; // Adds doclets above to transpiled file
4351
+
4352
+ ;// ./code/es-modules/masters/modules/boost.src.js
4353
+
4354
+
4355
+
4356
+
4357
+ const G = (external_highcharts_src_js_default_default());
4358
+ G.hasWebGLSupport = Boost_Boost.hasWebGLSupport;
4359
+ Boost_Boost.compose(G.Chart, G.Axis, G.Series, G.seriesTypes, G.Point, G.Color);
4360
+ /* harmony default export */ const boost_src = ((external_highcharts_src_js_default_default()));
4361
+
4362
+ export { boost_src as default };