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