highcharts 13.0.0 → 13.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1264) hide show
  1. package/bower.json +1 -1
  2. package/css/highcharts.css +2 -1
  3. package/es-modules/Accessibility/A11yI18n.js +4 -4
  4. package/es-modules/Accessibility/Accessibility.js +38 -1
  5. package/es-modules/Accessibility/Components/InfoRegionsComponent.js +6 -4
  6. package/es-modules/Accessibility/Components/LegendComponent.js +3 -4
  7. package/es-modules/Accessibility/Components/NavigatorComponent.js +3 -4
  8. package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +13 -10
  9. package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +8 -4
  10. package/es-modules/Accessibility/Components/ZoomComponent.js +2 -2
  11. package/es-modules/Accessibility/FocusBorder.js +2 -2
  12. package/es-modules/Accessibility/Options/A11yDefaults.js +12 -3
  13. package/es-modules/Accessibility/Options/DeprecatedOptions.js +1 -2
  14. package/es-modules/Accessibility/ProxyElement.js +1 -0
  15. package/es-modules/Core/Animation/AnimationUtilities.js +34 -43
  16. package/es-modules/Core/Animation/Fx.js +16 -19
  17. package/es-modules/Core/Axis/Axis.js +49 -59
  18. package/es-modules/Core/Axis/Axis3DComposition.js +8 -6
  19. package/es-modules/Core/Axis/AxisDefaults.js +12 -2
  20. package/es-modules/Core/Axis/BrokenAxis.js +6 -5
  21. package/es-modules/Core/Axis/Color/ColorAxis.js +24 -12
  22. package/es-modules/Core/Axis/Color/ColorAxisComposition.js +3 -3
  23. package/es-modules/Core/Axis/GridAxis.js +12 -5
  24. package/es-modules/Core/Axis/LogarithmicAxis.js +5 -3
  25. package/es-modules/Core/Axis/NavigatorAxisComposition.js +2 -2
  26. package/es-modules/Core/Axis/OrdinalAxis.js +21 -11
  27. package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +3 -2
  28. package/es-modules/Core/Axis/RadialAxis.js +23 -22
  29. package/es-modules/Core/Axis/ScrollbarAxis.js +3 -3
  30. package/es-modules/Core/Axis/Stacking/StackItem.js +5 -5
  31. package/es-modules/Core/Axis/Stacking/StackingAxis.js +5 -6
  32. package/es-modules/Core/Axis/Tick.js +10 -11
  33. package/es-modules/Core/Axis/TreeGrid/TreeGridAxis.js +1 -1
  34. package/es-modules/Core/Axis/TreeGrid/TreeGridTick.js +3 -3
  35. package/es-modules/Core/Chart/Chart.js +58 -53
  36. package/es-modules/Core/Chart/Chart3D.js +3 -3
  37. package/es-modules/Core/Chart/ChartDefaults.js +24 -1
  38. package/es-modules/Core/Chart/MapChart.js +7 -10
  39. package/es-modules/Core/Chart/StockChart.js +15 -11
  40. package/es-modules/Core/Color/Color.js +3 -1
  41. package/es-modules/Core/Defaults.js +44 -2
  42. package/es-modules/Core/Globals.js +1 -1
  43. package/es-modules/Core/Legend/Legend.js +20 -17
  44. package/es-modules/Core/Legend/LegendSymbol.js +2 -2
  45. package/es-modules/Core/MSPointer.js +2 -2
  46. package/es-modules/Core/Math3D.js +6 -7
  47. package/es-modules/Core/Pointer.js +20 -10
  48. package/es-modules/Core/Renderer/HTML/AST.js +5 -1
  49. package/es-modules/Core/Renderer/HTML/HTMLElement.js +23 -16
  50. package/es-modules/Core/Renderer/RendererUtilities.js +2 -2
  51. package/es-modules/Core/Renderer/SVG/SVGElement.js +12 -11
  52. package/es-modules/Core/Renderer/SVG/SVGElement3D.js +2 -2
  53. package/es-modules/Core/Renderer/SVG/SVGLabel.js +5 -5
  54. package/es-modules/Core/Renderer/SVG/SVGRenderer.js +6 -6
  55. package/es-modules/Core/Renderer/SVG/SVGRenderer3D.js +13 -12
  56. package/es-modules/Core/Renderer/SVG/Symbols.js +6 -5
  57. package/es-modules/Core/Renderer/SVG/TextBuilder.js +2 -2
  58. package/es-modules/Core/Responsive.js +7 -5
  59. package/es-modules/Core/Series/DataLabel.js +9 -8
  60. package/es-modules/Core/Series/OverlappingDataLabels.js +5 -2
  61. package/es-modules/Core/Series/Point.js +31 -24
  62. package/es-modules/Core/Series/Series.js +125 -82
  63. package/es-modules/Core/Series/Series3D.js +2 -2
  64. package/es-modules/Core/Series/SeriesDefaults.js +33 -0
  65. package/es-modules/Core/Templating.js +18 -15
  66. package/es-modules/Core/Tooltip.js +12 -9
  67. package/es-modules/Core/Utilities.js +4 -3
  68. package/es-modules/Data/Connectors/DataConnector.js +2 -2
  69. package/es-modules/Data/Connectors/GoogleSheetsConnector.js +2 -2
  70. package/es-modules/Data/DataTable.js +17 -0
  71. package/es-modules/Data/DataTableCore.js +1 -1
  72. package/es-modules/Extensions/Annotations/Annotation.js +5 -6
  73. package/es-modules/Extensions/Annotations/AnnotationChart.js +2 -2
  74. package/es-modules/Extensions/Annotations/AnnotationDefaults.js +4 -4
  75. package/es-modules/Extensions/Annotations/ControlPoint.js +2 -2
  76. package/es-modules/Extensions/Annotations/Controllables/ControllableLabel.js +2 -2
  77. package/es-modules/Extensions/Annotations/EventEmitter.js +4 -4
  78. package/es-modules/Extensions/Annotations/MockPoint.js +7 -9
  79. package/es-modules/Extensions/Annotations/NavigationBindings.js +6 -3
  80. package/es-modules/Extensions/Annotations/NavigationBindingsUtilities.js +31 -4
  81. package/es-modules/Extensions/Annotations/Popup/Popup.js +3 -2
  82. package/es-modules/Extensions/Annotations/Popup/PopupAnnotations.js +6 -8
  83. package/es-modules/Extensions/Annotations/Types/CrookedLine.js +4 -4
  84. package/es-modules/Extensions/Annotations/Types/Measure.js +28 -10
  85. package/es-modules/Extensions/Annotations/Types/TimeCycles.js +4 -2
  86. package/es-modules/Extensions/Annotations/Types/Tunnel.js +3 -1
  87. package/es-modules/Extensions/Annotations/Types/VerticalLine.js +3 -3
  88. package/es-modules/Extensions/Boost/Boost.js +13 -0
  89. package/es-modules/Extensions/Boost/BoostChart.js +11 -4
  90. package/es-modules/Extensions/Boost/BoostSeries.js +17 -11
  91. package/es-modules/Extensions/Boost/WGLRenderer.js +9 -6
  92. package/es-modules/Extensions/Boost/WGLShader.js +3 -3
  93. package/es-modules/Extensions/BoostCanvas.js +2 -2
  94. package/es-modules/Extensions/BorderRadius.js +12 -10
  95. package/es-modules/Extensions/Breadcrumbs/Breadcrumbs.js +6 -5
  96. package/es-modules/Extensions/DataGrouping/DataGrouping.js +2 -2
  97. package/es-modules/Extensions/DataGrouping/DataGroupingAxisComposition.js +4 -3
  98. package/es-modules/Extensions/DataGrouping/DataGroupingSeriesComposition.js +2 -2
  99. package/es-modules/Extensions/DraggablePoints/DragDropProps.js +2 -3
  100. package/es-modules/Extensions/DraggablePoints/DraggableChart.js +1 -2
  101. package/es-modules/Extensions/Drilldown/Drilldown.js +1 -2
  102. package/es-modules/Extensions/Drilldown/DrilldownSeries.js +1 -2
  103. package/es-modules/Extensions/ExportData/ExportData.js +21 -16
  104. package/es-modules/Extensions/Exporting/Exporting.js +28 -28
  105. package/es-modules/Extensions/Exporting/ExportingDefaults.js +32 -0
  106. package/es-modules/Extensions/MarkerClusters/MarkerClusterScatter.js +1 -2
  107. package/es-modules/Extensions/MarkerClusters/MarkerClusters.js +1 -2
  108. package/es-modules/Extensions/MouseWheelZoom/MouseWheelZoom.js +2 -2
  109. package/es-modules/Extensions/OfflineExporting/OfflineExporting.js +31 -4
  110. package/es-modules/Extensions/Pane/PaneComposition.js +2 -2
  111. package/es-modules/Extensions/Pane/PaneDefaults.js +1 -1
  112. package/es-modules/Extensions/ParallelCoordinates/ParallelAxis.js +2 -2
  113. package/es-modules/Extensions/ParallelCoordinates/ParallelCoordinates.js +3 -0
  114. package/es-modules/Extensions/PatternFill.js +7 -5
  115. package/es-modules/Extensions/PriceIndication.js +5 -4
  116. package/es-modules/Extensions/ScrollablePlotArea.js +8 -2
  117. package/es-modules/Extensions/SeriesLabel/SeriesLabel.js +8 -9
  118. package/es-modules/Extensions/Sonification/MIDI.js +2 -3
  119. package/es-modules/Extensions/Sonification/Sonification.js +2 -2
  120. package/es-modules/Extensions/Sonification/SonificationSpeaker.js +3 -2
  121. package/es-modules/Extensions/Sonification/SynthPatch.js +4 -4
  122. package/es-modules/Extensions/Sonification/TimelineFromChart.js +11 -11
  123. package/es-modules/Gantt/Legacy.js +2 -2
  124. package/es-modules/Gantt/Pathfinder.js +3 -3
  125. package/es-modules/Gantt/PathfinderAlgorithms.js +4 -3
  126. package/es-modules/Gantt/Tree.js +1 -1
  127. package/es-modules/Maps/GeoJSONComposition.js +14 -1
  128. package/es-modules/Maps/MapNavigation.js +4 -4
  129. package/es-modules/Maps/MapPointer.js +2 -2
  130. package/es-modules/Maps/MapView.js +3 -3
  131. package/es-modules/Series/ArcDiagram/ArcDiagramSeries.js +8 -6
  132. package/es-modules/Series/Area/AreaSeries.js +4 -5
  133. package/es-modules/Series/AreaRange/AreaRangeSeries.js +87 -147
  134. package/es-modules/Series/AreaRange/AreaRangeSeriesDefaults.js +42 -4
  135. package/es-modules/Series/Bellcurve/BellcurveSeries.js +10 -6
  136. package/es-modules/Series/BoxPlot/BoxPlotSeries.js +40 -32
  137. package/es-modules/Series/BoxPlot/BoxPlotSeriesDefaults.js +33 -1
  138. package/es-modules/Series/Bubble/BubbleLegendItem.js +10 -6
  139. package/es-modules/Series/Bubble/BubbleSeries.js +25 -9
  140. package/es-modules/Series/Bullet/BulletSeries.js +17 -10
  141. package/es-modules/Series/Candlestick/CandlestickSeries.js +3 -3
  142. package/es-modules/Series/CenteredUtilities.js +12 -9
  143. package/es-modules/Series/ColorMapComposition.js +7 -4
  144. package/es-modules/Series/Column/ColumnPoint.js +2 -0
  145. package/es-modules/Series/Column/ColumnSeries.js +14 -14
  146. package/es-modules/Series/Column/ColumnSeriesDefaults.js +4 -2
  147. package/es-modules/Series/Column3D/Column3DComposition.js +22 -19
  148. package/es-modules/Series/ColumnPyramid/ColumnPyramidPoint.js +18 -0
  149. package/es-modules/Series/ColumnPyramid/ColumnPyramidPointOptions.js +12 -0
  150. package/es-modules/Series/ColumnPyramid/ColumnPyramidSeries.js +7 -6
  151. package/es-modules/Series/ColumnPyramid/ColumnPyramidSeriesOptions.js +12 -0
  152. package/es-modules/Series/ColumnRange/ColumnRangePoint.js +2 -0
  153. package/es-modules/Series/ColumnRange/ColumnRangePointOptions.js +12 -0
  154. package/es-modules/Series/ColumnRange/ColumnRangeSeries.js +13 -144
  155. package/es-modules/Series/ColumnRange/ColumnRangeSeriesDefaults.js +148 -0
  156. package/es-modules/Series/ColumnRange/ColumnRangeSeriesOptions.js +12 -0
  157. package/es-modules/Series/Contour/ContourPoint.js +2 -0
  158. package/es-modules/Series/Contour/ContourSeries.js +1 -0
  159. package/es-modules/Series/Contour/ContourSeriesDefaults.js +7 -0
  160. package/es-modules/Series/Contour/ContourShader.js +9 -1
  161. package/es-modules/Series/CrossSymbol.js +3 -2
  162. package/es-modules/Series/Cylinder/CylinderComposition.js +12 -12
  163. package/es-modules/Series/Cylinder/CylinderPoint.js +2 -0
  164. package/es-modules/Series/Cylinder/CylinderPointOptions.js +15 -0
  165. package/es-modules/Series/Cylinder/CylinderSeries.js +2 -1
  166. package/es-modules/Series/Cylinder/CylinderSeriesOptions.js +15 -0
  167. package/es-modules/Series/Cylinder/SVGElement3DCylinder.js +2 -0
  168. package/es-modules/Series/DataModifyComposition.js +9 -7
  169. package/es-modules/Series/DependencyWheel/DependencyWheelPoint.js +3 -1
  170. package/es-modules/Series/DependencyWheel/DependencyWheelPointOptions.js +14 -0
  171. package/es-modules/Series/DependencyWheel/DependencyWheelSeries.js +8 -8
  172. package/es-modules/Series/DependencyWheel/DependencyWheelSeriesOptions.js +14 -0
  173. package/es-modules/Series/DerivedComposition.js +9 -8
  174. package/es-modules/Series/DotPlot/DotPlotPoint.js +18 -0
  175. package/es-modules/Series/DotPlot/DotPlotPointOptions.js +12 -0
  176. package/es-modules/Series/DotPlot/DotPlotSeries.js +6 -4
  177. package/es-modules/Series/DotPlot/DotPlotSeriesOptions.js +12 -0
  178. package/es-modules/Series/DragNodesComposition.js +11 -8
  179. package/es-modules/Series/DrawPointUtilities.js +3 -1
  180. package/es-modules/Series/Dumbbell/DumbbellPoint.js +19 -6
  181. package/es-modules/Series/Dumbbell/DumbbellPointOptions.js +12 -0
  182. package/es-modules/Series/Dumbbell/DumbbellSeries.js +33 -15
  183. package/es-modules/Series/Dumbbell/DumbbellSeriesOptions.js +12 -0
  184. package/es-modules/Series/ErrorBar/ErrorBarPoint.js +18 -0
  185. package/es-modules/Series/ErrorBar/ErrorBarPointOptions.js +12 -0
  186. package/es-modules/Series/ErrorBar/ErrorBarSeries.js +6 -9
  187. package/es-modules/Series/ErrorBar/ErrorBarSeriesDefaults.js +15 -1
  188. package/es-modules/Series/ErrorBar/ErrorBarSeriesOptions.js +12 -0
  189. package/es-modules/Series/Flags/FlagsSeries.js +5 -14
  190. package/es-modules/Series/Flags/FlagsSeriesDefaults.js +2 -1
  191. package/es-modules/Series/FlowMap/FlowMapPoint.js +5 -3
  192. package/es-modules/Series/FlowMap/FlowMapSeries.js +17 -9
  193. package/es-modules/Series/Funnel/FunnelSeries.js +25 -26
  194. package/es-modules/Series/Funnel/FunnelSeriesDefaults.js +12 -0
  195. package/es-modules/Series/Funnel3D/Funnel3DSeries.js +7 -5
  196. package/es-modules/Series/Gantt/GanttSeries.js +2 -1
  197. package/es-modules/Series/Gauge/GaugeSeries.js +2 -2
  198. package/es-modules/Series/GeoHeatmap/GeoHeatmapSeries.js +9 -9
  199. package/es-modules/Series/GraphLayoutComposition.js +3 -3
  200. package/es-modules/Series/Heatmap/HeatmapPoint.js +6 -6
  201. package/es-modules/Series/Heatmap/HeatmapPointOptions.js +12 -0
  202. package/es-modules/Series/Heatmap/HeatmapSeries.js +13 -13
  203. package/es-modules/Series/Heatmap/HeatmapSeriesOptions.js +12 -0
  204. package/es-modules/Series/Histogram/HistogramPoint.js +17 -0
  205. package/es-modules/Series/Histogram/HistogramPointOptions.js +12 -0
  206. package/es-modules/Series/Histogram/HistogramSeries.js +15 -3
  207. package/es-modules/Series/Histogram/HistogramSeriesOptions.js +12 -0
  208. package/es-modules/Series/HollowCandlestick/HollowCandlestickSeries.js +9 -9
  209. package/es-modules/Series/InterpolationUtilities.js +5 -5
  210. package/es-modules/Series/Item/ItemPointOptions.js +14 -0
  211. package/es-modules/Series/Item/ItemSeries.js +18 -6
  212. package/es-modules/Series/Item/ItemSeriesOptions.js +14 -0
  213. package/es-modules/Series/Map/MapPoint.js +5 -3
  214. package/es-modules/Series/Map/MapSeries.js +6 -10
  215. package/es-modules/Series/Map/MapSeriesDefaults.js +11 -1
  216. package/es-modules/Series/Networkgraph/NetworkgraphPoint.js +3 -3
  217. package/es-modules/Series/Networkgraph/NetworkgraphSeries.js +14 -9
  218. package/es-modules/Series/Networkgraph/NetworkgraphSeriesDefaults.js +12 -0
  219. package/es-modules/Series/Networkgraph/ReingoldFruchtermanLayout.js +18 -9
  220. package/es-modules/Series/NodesComposition.js +9 -10
  221. package/es-modules/Series/OHLC/OHLCPoint.js +2 -2
  222. package/es-modules/Series/OHLC/OHLCSeries.js +1 -0
  223. package/es-modules/Series/Organization/OrganizationPoint.js +3 -2
  224. package/es-modules/Series/Organization/OrganizationSeries.js +29 -7
  225. package/es-modules/Series/Organization/OrganizationSeriesDefaults.js +11 -4
  226. package/es-modules/Series/PackedBubble/PackedBubbleLayout.js +3 -3
  227. package/es-modules/Series/PackedBubble/PackedBubbleSeries.js +5 -5
  228. package/es-modules/Series/Pictorial/PictorialSeries.js +4 -2
  229. package/es-modules/Series/Pie/PieDataLabel.js +2 -2
  230. package/es-modules/Series/Pie/PiePoint.js +3 -4
  231. package/es-modules/Series/Pie/PieSeries.js +3 -2
  232. package/es-modules/Series/Pie3D/Pie3DSeries.js +8 -4
  233. package/es-modules/Series/PolarComposition.js +13 -14
  234. package/es-modules/Series/Polygon/PolygonSeries.js +2 -2
  235. package/es-modules/Series/Polygon/PolygonSeriesDefaults.js +20 -0
  236. package/es-modules/Series/RangeDataLabel.js +128 -0
  237. package/es-modules/Series/Sankey/SankeySeries.js +13 -7
  238. package/es-modules/Series/Sankey/SankeySeriesDefaults.js +2 -2
  239. package/es-modules/Series/Scatter/ScatterSeries.js +6 -5
  240. package/es-modules/Series/Scatter/ScatterSeriesDefaults.js +2 -0
  241. package/es-modules/Series/SimulationSeriesUtilities.js +1 -2
  242. package/es-modules/Series/SolidGauge/SolidGaugeSeries.js +4 -4
  243. package/es-modules/Series/Spline/SplineSeries.js +5 -5
  244. package/es-modules/Series/Sunburst/SunburstSeriesDefaults.js +8 -0
  245. package/es-modules/Series/TiledWebMap/TiledWebMapSeries.js +20 -12
  246. package/es-modules/Series/Tilemap/TilemapSeriesDefaults.js +2 -1
  247. package/es-modules/Series/Tilemap/TilemapShapes.js +2 -2
  248. package/es-modules/Series/Timeline/TimelinePoint.js +2 -2
  249. package/es-modules/Series/Timeline/TimelineSeries.js +13 -6
  250. package/es-modules/Series/TreeUtilities.js +16 -7
  251. package/es-modules/Series/Treegraph/TreegraphLink.js +2 -2
  252. package/es-modules/Series/Treegraph/TreegraphSeries.js +22 -13
  253. package/es-modules/Series/Treemap/TreemapPoint.js +2 -2
  254. package/es-modules/Series/Treemap/TreemapSeries.js +14 -11
  255. package/es-modules/Series/Treemap/TreemapSeriesDefaults.js +22 -1
  256. package/es-modules/Series/VariablePie/VariablePieSeries.js +6 -4
  257. package/es-modules/Series/VariablePie/VariablePieSeriesDefaults.js +3 -2
  258. package/es-modules/Series/Variwide/VariwideSeries.js +2 -2
  259. package/es-modules/Series/Vector/VectorSeries.js +7 -9
  260. package/es-modules/Series/Venn/VennSeries.js +3 -4
  261. package/es-modules/Series/Waterfall/WaterfallSeries.js +3 -3
  262. package/es-modules/Series/Windbarb/WindbarbSeries.js +8 -10
  263. package/es-modules/Series/XRange/XRangeSeries.js +8 -8
  264. package/es-modules/Shared/TimeBase.js +13 -8
  265. package/es-modules/Shared/Utilities.js +9 -7
  266. package/es-modules/Stock/Indicators/Aroon/AroonIndicator.js +3 -3
  267. package/es-modules/Stock/Indicators/DPO/DPOIndicator.js +4 -3
  268. package/es-modules/Stock/Indicators/RSI/RSIIndicator.js +1 -1
  269. package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +2 -2
  270. package/es-modules/Stock/Indicators/VBP/VBPIndicator.js +1 -2
  271. package/es-modules/Stock/Navigator/ChartNavigatorComposition.js +4 -4
  272. package/es-modules/Stock/Navigator/Navigator.js +26 -26
  273. package/es-modules/Stock/Navigator/NavigatorDefaults.js +9 -2
  274. package/es-modules/Stock/Navigator/NavigatorSymbols.js +2 -1
  275. package/es-modules/Stock/Navigator/StandaloneNavigator.js +55 -14
  276. package/es-modules/Stock/RangeSelector/RangeSelector.js +15 -11
  277. package/es-modules/Stock/RangeSelector/RangeSelectorComposition.js +3 -3
  278. package/es-modules/Stock/Scrollbar/Scrollbar.js +8 -7
  279. package/es-modules/Stock/StockTools/StockToolbar.js +6 -6
  280. package/es-modules/Stock/StockTools/StockTools.js +2 -2
  281. package/es-modules/Stock/StockTools/StockToolsBindings.js +7 -7
  282. package/es-modules/Stock/StockTools/StockToolsGui.js +6 -4
  283. package/es-modules/masters/highcharts-3d.src.js +1 -1
  284. package/es-modules/masters/highcharts-autoload.src.js +1 -1
  285. package/es-modules/masters/highcharts-gantt.src.js +1 -1
  286. package/es-modules/masters/highcharts-more.src.js +1 -1
  287. package/es-modules/masters/highcharts.src.js +13 -8
  288. package/es-modules/masters/highmaps.src.js +1 -1
  289. package/es-modules/masters/highstock.src.js +1 -1
  290. package/es-modules/masters/i18n/fr-FR.src.d.ts +1 -1
  291. package/es-modules/masters/i18n/fr-FR.src.js +1 -1
  292. package/es-modules/masters/i18n/nb-NO.src.d.ts +1 -1
  293. package/es-modules/masters/i18n/nb-NO.src.js +1 -1
  294. package/es-modules/masters/i18n/zh-CN.src.d.ts +1 -1
  295. package/es-modules/masters/i18n/zh-CN.src.js +1 -1
  296. package/es-modules/masters/indicators/acceleration-bands.src.js +1 -1
  297. package/es-modules/masters/indicators/accumulation-distribution.src.js +1 -1
  298. package/es-modules/masters/indicators/ao.src.js +1 -1
  299. package/es-modules/masters/indicators/apo.src.js +1 -1
  300. package/es-modules/masters/indicators/aroon-oscillator.src.js +1 -1
  301. package/es-modules/masters/indicators/aroon.src.js +1 -1
  302. package/es-modules/masters/indicators/atr.src.js +1 -1
  303. package/es-modules/masters/indicators/bollinger-bands.src.js +1 -1
  304. package/es-modules/masters/indicators/cci.src.js +1 -1
  305. package/es-modules/masters/indicators/chaikin.src.js +1 -1
  306. package/es-modules/masters/indicators/cmf.src.js +1 -1
  307. package/es-modules/masters/indicators/cmo.src.js +1 -1
  308. package/es-modules/masters/indicators/dema.src.js +1 -1
  309. package/es-modules/masters/indicators/disparity-index.src.js +1 -1
  310. package/es-modules/masters/indicators/dmi.src.js +1 -1
  311. package/es-modules/masters/indicators/dpo.src.js +1 -1
  312. package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
  313. package/es-modules/masters/indicators/indicators-all.src.js +1 -1
  314. package/es-modules/masters/indicators/indicators.src.js +1 -1
  315. package/es-modules/masters/indicators/keltner-channels.src.js +1 -1
  316. package/es-modules/masters/indicators/klinger.src.js +1 -1
  317. package/es-modules/masters/indicators/macd.src.js +1 -1
  318. package/es-modules/masters/indicators/mfi.src.js +1 -1
  319. package/es-modules/masters/indicators/momentum.src.js +1 -1
  320. package/es-modules/masters/indicators/natr.src.js +1 -1
  321. package/es-modules/masters/indicators/obv.src.js +1 -1
  322. package/es-modules/masters/indicators/pivot-points.src.js +1 -1
  323. package/es-modules/masters/indicators/ppo.src.js +1 -1
  324. package/es-modules/masters/indicators/price-channel.src.js +1 -1
  325. package/es-modules/masters/indicators/price-envelopes.src.js +1 -1
  326. package/es-modules/masters/indicators/psar.src.js +1 -1
  327. package/es-modules/masters/indicators/regressions.src.js +1 -1
  328. package/es-modules/masters/indicators/roc.src.js +1 -1
  329. package/es-modules/masters/indicators/rsi.src.js +1 -1
  330. package/es-modules/masters/indicators/slow-stochastic.src.js +1 -1
  331. package/es-modules/masters/indicators/stochastic.src.js +1 -1
  332. package/es-modules/masters/indicators/supertrend.src.js +1 -1
  333. package/es-modules/masters/indicators/tema.src.js +1 -1
  334. package/es-modules/masters/indicators/trendline.src.js +1 -1
  335. package/es-modules/masters/indicators/trix.src.js +1 -1
  336. package/es-modules/masters/indicators/volume-by-price.src.js +1 -1
  337. package/es-modules/masters/indicators/vwap.src.js +1 -1
  338. package/es-modules/masters/indicators/williams-r.src.js +1 -1
  339. package/es-modules/masters/indicators/wma.src.js +1 -1
  340. package/es-modules/masters/indicators/zigzag.src.js +1 -1
  341. package/es-modules/masters/modules/accessibility.src.js +1 -1
  342. package/es-modules/masters/modules/annotations-advanced.src.js +1 -1
  343. package/es-modules/masters/modules/annotations.src.js +1 -1
  344. package/es-modules/masters/modules/arc-diagram.src.js +1 -1
  345. package/es-modules/masters/modules/arrow-symbols.src.js +1 -1
  346. package/es-modules/masters/modules/boost-canvas.src.js +1 -1
  347. package/es-modules/masters/modules/boost.src.js +1 -1
  348. package/es-modules/masters/modules/broken-axis.src.js +1 -1
  349. package/es-modules/masters/modules/bullet.src.js +1 -1
  350. package/es-modules/masters/modules/coloraxis.src.js +1 -1
  351. package/es-modules/masters/modules/contour.src.js +1 -1
  352. package/es-modules/masters/modules/current-date-indicator.src.js +1 -1
  353. package/es-modules/masters/modules/cylinder.src.js +1 -1
  354. package/es-modules/masters/modules/data-sorting.src.js +1 -1
  355. package/es-modules/masters/modules/data-tools.src.js +1 -1
  356. package/es-modules/masters/modules/data.src.js +1 -1
  357. package/es-modules/masters/modules/datagrouping.src.js +1 -1
  358. package/es-modules/masters/modules/debugger.src.js +1 -1
  359. package/es-modules/masters/modules/dependency-wheel.src.js +1 -1
  360. package/es-modules/masters/modules/dotplot.src.js +1 -1
  361. package/es-modules/masters/modules/drag-panes.src.js +1 -1
  362. package/es-modules/masters/modules/draggable-points.src.js +1 -1
  363. package/es-modules/masters/modules/drilldown.src.js +1 -1
  364. package/es-modules/masters/modules/dumbbell.src.js +1 -1
  365. package/es-modules/masters/modules/export-data.src.js +1 -1
  366. package/es-modules/masters/modules/exporting.src.js +1 -1
  367. package/es-modules/masters/modules/flowmap.src.js +2 -1
  368. package/es-modules/masters/modules/full-screen.src.js +1 -1
  369. package/es-modules/masters/modules/funnel.src.js +1 -1
  370. package/es-modules/masters/modules/funnel3d.src.js +1 -1
  371. package/es-modules/masters/modules/gantt.src.js +1 -1
  372. package/es-modules/masters/modules/geoheatmap.src.js +1 -1
  373. package/es-modules/masters/modules/grid-axis.src.js +1 -1
  374. package/es-modules/masters/modules/heatmap.src.js +1 -1
  375. package/es-modules/masters/modules/heikinashi.src.js +1 -1
  376. package/es-modules/masters/modules/histogram-bellcurve.src.js +1 -1
  377. package/es-modules/masters/modules/hollowcandlestick.src.js +1 -1
  378. package/es-modules/masters/modules/item-series.src.js +1 -1
  379. package/es-modules/masters/modules/lollipop.src.js +1 -1
  380. package/es-modules/masters/modules/map.src.js +1 -1
  381. package/es-modules/masters/modules/marker-clusters.src.js +1 -1
  382. package/es-modules/masters/modules/mouse-wheel-zoom.src.js +1 -1
  383. package/es-modules/masters/modules/navigator.src.js +1 -1
  384. package/es-modules/masters/modules/networkgraph.src.js +1 -1
  385. package/es-modules/masters/modules/no-data-to-display.src.js +1 -1
  386. package/es-modules/masters/modules/non-cartesian-zoom.src.js +1 -1
  387. package/es-modules/masters/modules/offline-exporting.src.js +1 -1
  388. package/es-modules/masters/modules/organization.src.js +1 -1
  389. package/es-modules/masters/modules/parallel-coordinates.src.js +1 -1
  390. package/es-modules/masters/modules/pareto.src.js +1 -1
  391. package/es-modules/masters/modules/pathfinder.src.js +1 -1
  392. package/es-modules/masters/modules/pattern-fill.src.js +1 -1
  393. package/es-modules/masters/modules/pictorial.src.js +1 -1
  394. package/es-modules/masters/modules/pointandfigure.src.js +1 -1
  395. package/es-modules/masters/modules/price-indicator.src.js +1 -1
  396. package/es-modules/masters/modules/pyramid3d.src.js +1 -1
  397. package/es-modules/masters/modules/renko.src.js +1 -1
  398. package/es-modules/masters/modules/sankey.src.js +1 -1
  399. package/es-modules/masters/modules/series-label.src.js +1 -1
  400. package/es-modules/masters/modules/series-on-point.src.js +1 -1
  401. package/es-modules/masters/modules/solid-gauge.src.js +1 -1
  402. package/es-modules/masters/modules/sonification.src.js +1 -1
  403. package/es-modules/masters/modules/static-scale.src.js +1 -1
  404. package/es-modules/masters/modules/stock-tools.src.js +1 -1
  405. package/es-modules/masters/modules/stock.src.js +1 -1
  406. package/es-modules/masters/modules/streamgraph.src.js +1 -1
  407. package/es-modules/masters/modules/sunburst.src.js +3 -2
  408. package/es-modules/masters/modules/textpath.src.js +1 -1
  409. package/es-modules/masters/modules/tiledwebmap.src.js +1 -1
  410. package/es-modules/masters/modules/tilemap.src.js +1 -1
  411. package/es-modules/masters/modules/timeline.src.js +1 -1
  412. package/es-modules/masters/modules/treegraph.src.js +1 -1
  413. package/es-modules/masters/modules/treegrid.src.js +1 -1
  414. package/es-modules/masters/modules/treemap.src.js +1 -1
  415. package/es-modules/masters/modules/variable-pie.src.js +1 -1
  416. package/es-modules/masters/modules/variwide.src.js +1 -1
  417. package/es-modules/masters/modules/vector.src.js +1 -1
  418. package/es-modules/masters/modules/venn.src.js +1 -1
  419. package/es-modules/masters/modules/windbarb.src.js +1 -1
  420. package/es-modules/masters/modules/wordcloud.src.js +1 -1
  421. package/es-modules/masters/modules/xrange.src.js +1 -1
  422. package/es-modules/masters/standalone-navigator.src.js +1 -1
  423. package/es-modules/masters/themes/adaptive.src.js +1 -1
  424. package/es-modules/masters/themes/avocado.src.js +1 -1
  425. package/es-modules/masters/themes/dark-unica.src.js +1 -1
  426. package/es-modules/masters/themes/grid-light.src.js +1 -1
  427. package/es-modules/masters/themes/high-contrast.src.js +1 -1
  428. package/es-modules/masters/themes/sand-signika.src.js +1 -1
  429. package/es-modules/masters/themes/sunset.src.js +1 -1
  430. package/es-modules/tsconfig.tsbuildinfo +1 -1
  431. package/esm/highcharts-3d.js +2 -2
  432. package/esm/highcharts-3d.src.js +78 -55
  433. package/esm/highcharts-autoload.js +2 -2
  434. package/esm/highcharts-autoload.src.js +22 -8
  435. package/esm/highcharts-gantt.js +2 -2
  436. package/esm/highcharts-gantt.src.js +1 -24
  437. package/esm/highcharts-more.js +2 -2
  438. package/esm/highcharts-more.src.js +1198 -981
  439. package/esm/highcharts.js +5 -5
  440. package/esm/highcharts.src.js +702 -515
  441. package/esm/highmaps.js +2 -2
  442. package/esm/highmaps.src.js +1 -24
  443. package/esm/highstock.js +2 -2
  444. package/esm/highstock.src.js +1 -24
  445. package/esm/i18n/fr-FR.js +2 -2
  446. package/esm/i18n/fr-FR.src.js +22 -8
  447. package/esm/i18n/nb-NO.js +2 -2
  448. package/esm/i18n/nb-NO.src.js +22 -8
  449. package/esm/i18n/zh-CN.js +2 -2
  450. package/esm/i18n/zh-CN.src.js +22 -8
  451. package/esm/indicators/acceleration-bands.js +2 -2
  452. package/esm/indicators/acceleration-bands.src.js +22 -8
  453. package/esm/indicators/accumulation-distribution.js +2 -2
  454. package/esm/indicators/accumulation-distribution.src.js +22 -8
  455. package/esm/indicators/ao.js +2 -2
  456. package/esm/indicators/ao.src.js +22 -8
  457. package/esm/indicators/apo.js +2 -2
  458. package/esm/indicators/apo.src.js +22 -8
  459. package/esm/indicators/aroon-oscillator.js +2 -2
  460. package/esm/indicators/aroon-oscillator.src.js +22 -8
  461. package/esm/indicators/aroon.js +2 -2
  462. package/esm/indicators/aroon.src.js +24 -10
  463. package/esm/indicators/atr.js +2 -2
  464. package/esm/indicators/atr.src.js +22 -8
  465. package/esm/indicators/bollinger-bands.js +2 -2
  466. package/esm/indicators/bollinger-bands.src.js +22 -8
  467. package/esm/indicators/cci.js +2 -2
  468. package/esm/indicators/cci.src.js +22 -8
  469. package/esm/indicators/chaikin.js +2 -2
  470. package/esm/indicators/chaikin.src.js +22 -8
  471. package/esm/indicators/cmf.js +2 -2
  472. package/esm/indicators/cmf.src.js +22 -8
  473. package/esm/indicators/cmo.js +2 -2
  474. package/esm/indicators/cmo.src.js +22 -8
  475. package/esm/indicators/dema.js +2 -2
  476. package/esm/indicators/dema.src.js +22 -8
  477. package/esm/indicators/disparity-index.js +2 -2
  478. package/esm/indicators/disparity-index.src.js +22 -8
  479. package/esm/indicators/dmi.js +2 -2
  480. package/esm/indicators/dmi.src.js +22 -8
  481. package/esm/indicators/dpo.js +2 -2
  482. package/esm/indicators/dpo.src.js +25 -10
  483. package/esm/indicators/ichimoku-kinko-hyo.js +2 -2
  484. package/esm/indicators/ichimoku-kinko-hyo.src.js +22 -8
  485. package/esm/indicators/indicators-all.js +2 -2
  486. package/esm/indicators/indicators-all.src.js +31 -17
  487. package/esm/indicators/indicators.js +2 -2
  488. package/esm/indicators/indicators.src.js +24 -10
  489. package/esm/indicators/keltner-channels.js +2 -2
  490. package/esm/indicators/keltner-channels.src.js +22 -8
  491. package/esm/indicators/klinger.js +2 -2
  492. package/esm/indicators/klinger.src.js +22 -8
  493. package/esm/indicators/macd.js +2 -2
  494. package/esm/indicators/macd.src.js +22 -8
  495. package/esm/indicators/mfi.js +2 -2
  496. package/esm/indicators/mfi.src.js +22 -8
  497. package/esm/indicators/momentum.js +2 -2
  498. package/esm/indicators/momentum.src.js +22 -8
  499. package/esm/indicators/natr.js +2 -2
  500. package/esm/indicators/natr.src.js +22 -8
  501. package/esm/indicators/obv.js +2 -2
  502. package/esm/indicators/obv.src.js +22 -8
  503. package/esm/indicators/pivot-points.js +2 -2
  504. package/esm/indicators/pivot-points.src.js +22 -8
  505. package/esm/indicators/ppo.js +2 -2
  506. package/esm/indicators/ppo.src.js +22 -8
  507. package/esm/indicators/price-channel.js +2 -2
  508. package/esm/indicators/price-channel.src.js +22 -8
  509. package/esm/indicators/price-envelopes.js +2 -2
  510. package/esm/indicators/price-envelopes.src.js +22 -8
  511. package/esm/indicators/psar.js +2 -2
  512. package/esm/indicators/psar.src.js +22 -8
  513. package/esm/indicators/regressions.js +2 -2
  514. package/esm/indicators/regressions.src.js +22 -8
  515. package/esm/indicators/roc.js +2 -2
  516. package/esm/indicators/roc.src.js +22 -8
  517. package/esm/indicators/rsi.js +2 -2
  518. package/esm/indicators/rsi.src.js +23 -9
  519. package/esm/indicators/slow-stochastic.js +2 -2
  520. package/esm/indicators/slow-stochastic.src.js +22 -8
  521. package/esm/indicators/stochastic.js +2 -2
  522. package/esm/indicators/stochastic.src.js +22 -8
  523. package/esm/indicators/supertrend.js +2 -2
  524. package/esm/indicators/supertrend.src.js +22 -8
  525. package/esm/indicators/tema.js +2 -2
  526. package/esm/indicators/tema.src.js +22 -8
  527. package/esm/indicators/trendline.js +2 -2
  528. package/esm/indicators/trendline.src.js +22 -8
  529. package/esm/indicators/trix.js +2 -2
  530. package/esm/indicators/trix.src.js +22 -8
  531. package/esm/indicators/volume-by-price.js +2 -2
  532. package/esm/indicators/volume-by-price.src.js +23 -10
  533. package/esm/indicators/vwap.js +2 -2
  534. package/esm/indicators/vwap.src.js +22 -8
  535. package/esm/indicators/williams-r.js +2 -2
  536. package/esm/indicators/williams-r.src.js +22 -8
  537. package/esm/indicators/wma.js +2 -2
  538. package/esm/indicators/wma.src.js +22 -8
  539. package/esm/indicators/zigzag.js +2 -2
  540. package/esm/indicators/zigzag.src.js +22 -8
  541. package/esm/modules/accessibility.js +2 -2
  542. package/esm/modules/accessibility.src.js +564 -92
  543. package/esm/modules/annotations-advanced.js +11 -11
  544. package/esm/modules/annotations-advanced.src.js +224 -162
  545. package/esm/modules/annotations.js +11 -11
  546. package/esm/modules/annotations.src.js +184 -144
  547. package/esm/modules/arc-diagram.js +2 -2
  548. package/esm/modules/arc-diagram.src.js +37 -22
  549. package/esm/modules/arrow-symbols.js +3 -3
  550. package/esm/modules/arrow-symbols.src.js +22 -8
  551. package/esm/modules/boost-canvas.js +2 -2
  552. package/esm/modules/boost-canvas.src.js +60 -30
  553. package/esm/modules/boost.js +2 -2
  554. package/esm/modules/boost.src.js +72 -29
  555. package/esm/modules/broken-axis.js +2 -2
  556. package/esm/modules/broken-axis.src.js +27 -12
  557. package/esm/modules/bullet.js +2 -2
  558. package/esm/modules/bullet.src.js +38 -17
  559. package/esm/modules/coloraxis.js +2 -2
  560. package/esm/modules/coloraxis.src.js +47 -21
  561. package/esm/modules/contour.js +3 -3
  562. package/esm/modules/contour.src.js +46 -13
  563. package/esm/modules/current-date-indicator.js +2 -2
  564. package/esm/modules/current-date-indicator.src.js +22 -8
  565. package/esm/modules/cylinder.js +2 -2
  566. package/esm/modules/cylinder.src.js +46 -28
  567. package/esm/modules/data-sorting.js +2 -2
  568. package/esm/modules/data-sorting.src.js +22 -8
  569. package/esm/modules/data-tools.js +2 -2
  570. package/esm/modules/data-tools.src.js +44 -13
  571. package/esm/modules/data.js +4 -4
  572. package/esm/modules/data.src.js +23 -9
  573. package/esm/modules/datagrouping.js +2 -2
  574. package/esm/modules/datagrouping.src.js +28 -13
  575. package/esm/modules/debugger.js +2 -2
  576. package/esm/modules/debugger.src.js +22 -8
  577. package/esm/modules/dependency-wheel.js +2 -2
  578. package/esm/modules/dependency-wheel.src.js +428 -17
  579. package/esm/modules/dotplot.js +2 -2
  580. package/esm/modules/dotplot.src.js +27 -11
  581. package/esm/modules/drag-panes.js +2 -2
  582. package/esm/modules/drag-panes.src.js +22 -8
  583. package/esm/modules/draggable-points.js +2 -2
  584. package/esm/modules/draggable-points.src.js +24 -12
  585. package/esm/modules/drilldown.js +2 -2
  586. package/esm/modules/drilldown.src.js +38 -25
  587. package/esm/modules/dumbbell.js +2 -2
  588. package/esm/modules/dumbbell.src.js +72 -27
  589. package/esm/modules/export-data.js +2 -2
  590. package/esm/modules/export-data.src.js +42 -23
  591. package/esm/modules/exporting.js +2 -2
  592. package/esm/modules/exporting.src.js +83 -37
  593. package/esm/modules/flowmap.js +3 -2
  594. package/esm/modules/flowmap.src.js +43 -18
  595. package/esm/modules/full-screen.js +2 -2
  596. package/esm/modules/full-screen.src.js +22 -8
  597. package/esm/modules/funnel.js +2 -2
  598. package/esm/modules/funnel.src.js +73 -42
  599. package/esm/modules/funnel3d.js +2 -2
  600. package/esm/modules/funnel3d.src.js +35 -20
  601. package/esm/modules/gantt.js +2 -2
  602. package/esm/modules/gantt.src.js +542 -100
  603. package/esm/modules/geoheatmap.js +2 -2
  604. package/esm/modules/geoheatmap.src.js +35 -21
  605. package/esm/modules/grid-axis.js +2 -2
  606. package/esm/modules/grid-axis.src.js +33 -12
  607. package/esm/modules/heatmap.js +2 -2
  608. package/esm/modules/heatmap.src.js +50 -33
  609. package/esm/modules/heikinashi.js +2 -2
  610. package/esm/modules/heikinashi.src.js +22 -8
  611. package/esm/modules/histogram-bellcurve.js +2 -2
  612. package/esm/modules/histogram-bellcurve.src.js +56 -25
  613. package/esm/modules/hollowcandlestick.js +2 -2
  614. package/esm/modules/hollowcandlestick.src.js +31 -17
  615. package/esm/modules/item-series.js +2 -2
  616. package/esm/modules/item-series.src.js +72 -13
  617. package/esm/modules/lollipop.js +2 -2
  618. package/esm/modules/lollipop.src.js +22 -8
  619. package/esm/modules/map.js +2 -2
  620. package/esm/modules/map.src.js +148 -91
  621. package/esm/modules/marker-clusters.js +2 -2
  622. package/esm/modules/marker-clusters.src.js +25 -13
  623. package/esm/modules/mouse-wheel-zoom.js +2 -2
  624. package/esm/modules/mouse-wheel-zoom.src.js +54 -13
  625. package/esm/modules/navigator.js +2 -2
  626. package/esm/modules/navigator.src.js +534 -74
  627. package/esm/modules/networkgraph.js +2 -2
  628. package/esm/modules/networkgraph.src.js +87 -46
  629. package/esm/modules/no-data-to-display.js +2 -2
  630. package/esm/modules/no-data-to-display.src.js +22 -8
  631. package/esm/modules/non-cartesian-zoom.js +2 -2
  632. package/esm/modules/non-cartesian-zoom.src.js +22 -8
  633. package/esm/modules/offline-exporting.js +2 -2
  634. package/esm/modules/offline-exporting.src.js +53 -12
  635. package/esm/modules/organization.js +4 -2
  636. package/esm/modules/organization.src.js +63 -19
  637. package/esm/modules/parallel-coordinates.js +2 -2
  638. package/esm/modules/parallel-coordinates.src.js +26 -9
  639. package/esm/modules/pareto.js +2 -2
  640. package/esm/modules/pareto.src.js +31 -16
  641. package/esm/modules/pathfinder.js +2 -2
  642. package/esm/modules/pathfinder.src.js +28 -13
  643. package/esm/modules/pattern-fill.js +2 -2
  644. package/esm/modules/pattern-fill.src.js +28 -12
  645. package/esm/modules/pictorial.js +2 -2
  646. package/esm/modules/pictorial.src.js +36 -19
  647. package/esm/modules/pointandfigure.js +2 -2
  648. package/esm/modules/pointandfigure.src.js +26 -11
  649. package/esm/modules/price-indicator.js +2 -2
  650. package/esm/modules/price-indicator.src.js +26 -11
  651. package/esm/modules/pyramid3d.js +2 -2
  652. package/esm/modules/pyramid3d.src.js +22 -8
  653. package/esm/modules/renko.js +2 -2
  654. package/esm/modules/renko.src.js +22 -8
  655. package/esm/modules/sankey.js +2 -2
  656. package/esm/modules/sankey.src.js +59 -31
  657. package/esm/modules/series-label.js +2 -2
  658. package/esm/modules/series-label.src.js +31 -18
  659. package/esm/modules/series-on-point.js +2 -2
  660. package/esm/modules/series-on-point.src.js +23 -9
  661. package/esm/modules/solid-gauge.js +2 -2
  662. package/esm/modules/solid-gauge.src.js +40 -20
  663. package/esm/modules/sonification.js +2 -2
  664. package/esm/modules/sonification.src.js +45 -30
  665. package/esm/modules/static-scale.js +2 -2
  666. package/esm/modules/static-scale.src.js +22 -8
  667. package/esm/modules/stock-tools.js +3 -3
  668. package/esm/modules/stock-tools.src.js +73 -27
  669. package/esm/modules/stock.js +2 -2
  670. package/esm/modules/stock.src.js +554 -122
  671. package/esm/modules/streamgraph.js +2 -2
  672. package/esm/modules/streamgraph.src.js +22 -8
  673. package/esm/modules/sunburst.js +2 -2
  674. package/esm/modules/sunburst.src.js +110 -45
  675. package/esm/modules/textpath.js +2 -2
  676. package/esm/modules/textpath.src.js +22 -8
  677. package/esm/modules/tiledwebmap.js +3 -3
  678. package/esm/modules/tiledwebmap.src.js +44 -19
  679. package/esm/modules/tilemap.js +2 -2
  680. package/esm/modules/tilemap.src.js +27 -12
  681. package/esm/modules/timeline.js +2 -2
  682. package/esm/modules/timeline.src.js +35 -14
  683. package/esm/modules/treegraph.js +2 -2
  684. package/esm/modules/treegraph.src.js +59 -27
  685. package/esm/modules/treegrid.js +2 -2
  686. package/esm/modules/treegrid.src.js +58 -27
  687. package/esm/modules/treemap.js +2 -2
  688. package/esm/modules/treemap.src.js +89 -36
  689. package/esm/modules/variable-pie.js +2 -2
  690. package/esm/modules/variable-pie.src.js +30 -13
  691. package/esm/modules/variwide.js +2 -2
  692. package/esm/modules/variwide.src.js +23 -9
  693. package/esm/modules/vector.js +2 -2
  694. package/esm/modules/vector.src.js +28 -16
  695. package/esm/modules/venn.js +2 -2
  696. package/esm/modules/venn.src.js +28 -13
  697. package/esm/modules/windbarb.js +2 -2
  698. package/esm/modules/windbarb.src.js +29 -17
  699. package/esm/modules/wordcloud.js +2 -2
  700. package/esm/modules/wordcloud.src.js +25 -9
  701. package/esm/modules/xrange.js +2 -2
  702. package/esm/modules/xrange.src.js +29 -15
  703. package/esm/standalone-navigator.js +5 -5
  704. package/esm/standalone-navigator.src.js +808 -570
  705. package/esm/themes/adaptive.js +3 -3
  706. package/esm/themes/adaptive.src.js +22 -8
  707. package/esm/themes/avocado.js +2 -2
  708. package/esm/themes/avocado.src.js +22 -8
  709. package/esm/themes/dark-unica.js +2 -2
  710. package/esm/themes/dark-unica.src.js +22 -8
  711. package/esm/themes/grid-light.js +2 -2
  712. package/esm/themes/grid-light.src.js +22 -8
  713. package/esm/themes/high-contrast.js +2 -2
  714. package/esm/themes/high-contrast.src.js +22 -8
  715. package/esm/themes/sand-signika.js +2 -2
  716. package/esm/themes/sand-signika.src.js +22 -8
  717. package/esm/themes/sunset.js +2 -2
  718. package/esm/themes/sunset.src.js +22 -8
  719. package/highcharts-3d.js +2 -2
  720. package/highcharts-3d.src.js +116 -92
  721. package/highcharts-autoload.d.ts +15 -5
  722. package/highcharts-autoload.js +4 -4
  723. package/highcharts-autoload.src.d.ts +15 -5
  724. package/highcharts-autoload.src.js +724 -499
  725. package/highcharts-gantt.js +4 -4
  726. package/highcharts-gantt.src.js +851 -590
  727. package/highcharts-more.d.ts +7 -3
  728. package/highcharts-more.js +2 -2
  729. package/highcharts-more.src.d.ts +7 -3
  730. package/highcharts-more.src.js +1313 -1095
  731. package/highcharts.d.ts +34795 -25647
  732. package/highcharts.js +4 -4
  733. package/highcharts.src.d.ts +34795 -25647
  734. package/highcharts.src.js +723 -498
  735. package/highmaps.js +4 -4
  736. package/highmaps.src.js +863 -583
  737. package/highstock.js +4 -4
  738. package/highstock.src.js +899 -619
  739. package/i18n/fr-FR.js +2 -2
  740. package/i18n/fr-FR.src.js +32 -16
  741. package/i18n/nb-NO.js +2 -2
  742. package/i18n/nb-NO.src.js +32 -16
  743. package/i18n/zh-CN.js +2 -2
  744. package/i18n/zh-CN.src.js +32 -16
  745. package/indicators/acceleration-bands.js +2 -2
  746. package/indicators/acceleration-bands.src.js +31 -16
  747. package/indicators/accumulation-distribution.js +2 -2
  748. package/indicators/accumulation-distribution.src.js +31 -16
  749. package/indicators/ao.js +2 -2
  750. package/indicators/ao.src.js +31 -16
  751. package/indicators/apo.js +2 -2
  752. package/indicators/apo.src.js +31 -16
  753. package/indicators/aroon-oscillator.js +2 -2
  754. package/indicators/aroon-oscillator.src.js +31 -16
  755. package/indicators/aroon.js +2 -2
  756. package/indicators/aroon.src.js +33 -18
  757. package/indicators/atr.js +2 -2
  758. package/indicators/atr.src.js +31 -16
  759. package/indicators/bollinger-bands.js +2 -2
  760. package/indicators/bollinger-bands.src.js +31 -16
  761. package/indicators/cci.js +2 -2
  762. package/indicators/cci.src.js +31 -16
  763. package/indicators/chaikin.js +2 -2
  764. package/indicators/chaikin.src.js +31 -16
  765. package/indicators/cmf.js +2 -2
  766. package/indicators/cmf.src.js +31 -16
  767. package/indicators/cmo.js +2 -2
  768. package/indicators/cmo.src.js +31 -16
  769. package/indicators/dema.js +2 -2
  770. package/indicators/dema.src.js +31 -16
  771. package/indicators/disparity-index.js +2 -2
  772. package/indicators/disparity-index.src.js +31 -16
  773. package/indicators/dmi.js +2 -2
  774. package/indicators/dmi.src.js +31 -16
  775. package/indicators/dpo.js +2 -2
  776. package/indicators/dpo.src.js +34 -18
  777. package/indicators/ichimoku-kinko-hyo.js +2 -2
  778. package/indicators/ichimoku-kinko-hyo.src.js +41 -26
  779. package/indicators/indicators-all.js +2 -2
  780. package/indicators/indicators-all.src.js +52 -37
  781. package/indicators/indicators.js +2 -2
  782. package/indicators/indicators.src.js +39 -24
  783. package/indicators/keltner-channels.js +2 -2
  784. package/indicators/keltner-channels.src.js +31 -16
  785. package/indicators/klinger.js +2 -2
  786. package/indicators/klinger.src.js +31 -16
  787. package/indicators/macd.js +2 -2
  788. package/indicators/macd.src.js +31 -16
  789. package/indicators/mfi.js +2 -2
  790. package/indicators/mfi.src.js +31 -16
  791. package/indicators/momentum.js +2 -2
  792. package/indicators/momentum.src.js +31 -16
  793. package/indicators/natr.js +2 -2
  794. package/indicators/natr.src.js +31 -16
  795. package/indicators/obv.js +2 -2
  796. package/indicators/obv.src.js +31 -16
  797. package/indicators/pivot-points.js +2 -2
  798. package/indicators/pivot-points.src.js +31 -16
  799. package/indicators/ppo.js +2 -2
  800. package/indicators/ppo.src.js +31 -16
  801. package/indicators/price-channel.js +2 -2
  802. package/indicators/price-channel.src.js +31 -16
  803. package/indicators/price-envelopes.js +2 -2
  804. package/indicators/price-envelopes.src.js +31 -16
  805. package/indicators/psar.js +2 -2
  806. package/indicators/psar.src.js +31 -16
  807. package/indicators/regressions.js +2 -2
  808. package/indicators/regressions.src.js +31 -16
  809. package/indicators/roc.js +2 -2
  810. package/indicators/roc.src.js +31 -16
  811. package/indicators/rsi.js +2 -2
  812. package/indicators/rsi.src.js +32 -17
  813. package/indicators/slow-stochastic.js +2 -2
  814. package/indicators/slow-stochastic.src.js +31 -16
  815. package/indicators/stochastic.js +2 -2
  816. package/indicators/stochastic.src.js +31 -16
  817. package/indicators/supertrend.js +2 -2
  818. package/indicators/supertrend.src.js +31 -16
  819. package/indicators/tema.js +2 -2
  820. package/indicators/tema.src.js +31 -16
  821. package/indicators/trendline.js +2 -2
  822. package/indicators/trendline.src.js +31 -16
  823. package/indicators/trix.js +2 -2
  824. package/indicators/trix.src.js +31 -16
  825. package/indicators/volume-by-price.js +2 -2
  826. package/indicators/volume-by-price.src.js +32 -18
  827. package/indicators/vwap.js +2 -2
  828. package/indicators/vwap.src.js +31 -16
  829. package/indicators/williams-r.js +2 -2
  830. package/indicators/williams-r.src.js +31 -16
  831. package/indicators/wma.js +2 -2
  832. package/indicators/wma.src.js +31 -16
  833. package/indicators/zigzag.js +2 -2
  834. package/indicators/zigzag.src.js +31 -16
  835. package/modules/accessibility.d.ts +47 -0
  836. package/modules/accessibility.js +2 -2
  837. package/modules/accessibility.src.d.ts +47 -0
  838. package/modules/accessibility.src.js +603 -130
  839. package/modules/annotations-advanced.js +11 -11
  840. package/modules/annotations-advanced.src.js +246 -183
  841. package/modules/annotations.js +11 -11
  842. package/modules/annotations.src.js +206 -165
  843. package/modules/arc-diagram.js +2 -2
  844. package/modules/arc-diagram.src.js +58 -42
  845. package/modules/arrow-symbols.js +2 -2
  846. package/modules/arrow-symbols.src.js +28 -13
  847. package/modules/boost-canvas.js +2 -2
  848. package/modules/boost-canvas.src.js +69 -38
  849. package/modules/boost.js +2 -2
  850. package/modules/boost.src.js +81 -37
  851. package/modules/broken-axis.js +2 -2
  852. package/modules/broken-axis.src.js +36 -20
  853. package/modules/bullet.js +2 -2
  854. package/modules/bullet.src.js +50 -28
  855. package/modules/coloraxis.js +2 -2
  856. package/modules/coloraxis.src.js +65 -38
  857. package/modules/contour.js +5 -5
  858. package/modules/contour.src.js +91 -44
  859. package/modules/current-date-indicator.js +2 -2
  860. package/modules/current-date-indicator.src.js +28 -13
  861. package/modules/cylinder.js +2 -2
  862. package/modules/cylinder.src.js +67 -48
  863. package/modules/data-sorting.js +2 -2
  864. package/modules/data-sorting.src.js +28 -13
  865. package/modules/data-tools.js +2 -2
  866. package/modules/data-tools.src.js +50 -18
  867. package/modules/data.js +2 -2
  868. package/modules/data.src.js +50 -35
  869. package/modules/datagrouping.js +2 -2
  870. package/modules/datagrouping.src.js +42 -26
  871. package/modules/debugger.js +2 -2
  872. package/modules/debugger.src.js +28 -13
  873. package/modules/dependency-wheel.d.ts +7 -1
  874. package/modules/dependency-wheel.js +2 -2
  875. package/modules/dependency-wheel.src.d.ts +7 -1
  876. package/modules/dependency-wheel.src.js +440 -28
  877. package/modules/dotplot.js +2 -2
  878. package/modules/dotplot.src.js +36 -19
  879. package/modules/drag-panes.js +2 -2
  880. package/modules/drag-panes.src.js +28 -13
  881. package/modules/draggable-points.js +2 -2
  882. package/modules/draggable-points.src.js +30 -17
  883. package/modules/drilldown.js +2 -2
  884. package/modules/drilldown.src.js +49 -35
  885. package/modules/dumbbell.js +2 -2
  886. package/modules/dumbbell.src.js +86 -40
  887. package/modules/export-data.d.ts +66 -1
  888. package/modules/export-data.js +2 -2
  889. package/modules/export-data.src.d.ts +66 -1
  890. package/modules/export-data.src.js +56 -36
  891. package/modules/exporting.d.ts +0 -103
  892. package/modules/exporting.js +2 -2
  893. package/modules/exporting.src.d.ts +0 -103
  894. package/modules/exporting.src.js +97 -50
  895. package/modules/flowmap.js +3 -2
  896. package/modules/flowmap.src.js +52 -26
  897. package/modules/full-screen.js +2 -2
  898. package/modules/full-screen.src.js +31 -16
  899. package/modules/funnel.d.ts +3 -3
  900. package/modules/funnel.js +2 -2
  901. package/modules/funnel.src.d.ts +3 -3
  902. package/modules/funnel.src.js +82 -50
  903. package/modules/funnel3d.js +2 -2
  904. package/modules/funnel3d.src.js +56 -40
  905. package/modules/gantt.d.ts +47 -0
  906. package/modules/gantt.js +8 -8
  907. package/modules/gantt.src.d.ts +47 -0
  908. package/modules/gantt.src.js +602 -156
  909. package/modules/geoheatmap.d.ts +13 -12
  910. package/modules/geoheatmap.js +2 -2
  911. package/modules/geoheatmap.src.d.ts +13 -12
  912. package/modules/geoheatmap.src.js +44 -29
  913. package/modules/grid-axis.js +2 -2
  914. package/modules/grid-axis.src.js +42 -20
  915. package/modules/heatmap.d.ts +0 -12
  916. package/modules/heatmap.js +4 -4
  917. package/modules/heatmap.src.d.ts +0 -12
  918. package/modules/heatmap.src.js +102 -71
  919. package/modules/heikinashi.js +2 -2
  920. package/modules/heikinashi.src.js +31 -16
  921. package/modules/histogram-bellcurve.js +2 -2
  922. package/modules/histogram-bellcurve.src.js +70 -38
  923. package/modules/hollowcandlestick.js +2 -2
  924. package/modules/hollowcandlestick.src.js +45 -30
  925. package/modules/item-series.js +2 -2
  926. package/modules/item-series.src.js +81 -21
  927. package/modules/lollipop.js +2 -2
  928. package/modules/lollipop.src.js +36 -21
  929. package/modules/map.d.ts +0 -20
  930. package/modules/map.js +4 -4
  931. package/modules/map.src.d.ts +0 -20
  932. package/modules/map.src.js +212 -140
  933. package/modules/marker-clusters.js +2 -2
  934. package/modules/marker-clusters.src.js +31 -18
  935. package/modules/mouse-wheel-zoom.js +2 -2
  936. package/modules/mouse-wheel-zoom.src.js +60 -18
  937. package/modules/navigator.d.ts +47 -0
  938. package/modules/navigator.js +2 -2
  939. package/modules/navigator.src.d.ts +47 -0
  940. package/modules/navigator.src.js +556 -95
  941. package/modules/networkgraph.js +2 -2
  942. package/modules/networkgraph.src.js +99 -57
  943. package/modules/no-data-to-display.js +2 -2
  944. package/modules/no-data-to-display.src.js +31 -16
  945. package/modules/non-cartesian-zoom.js +2 -2
  946. package/modules/non-cartesian-zoom.src.js +28 -13
  947. package/modules/offline-exporting.js +2 -2
  948. package/modules/offline-exporting.src.js +67 -25
  949. package/modules/organization.js +4 -2
  950. package/modules/organization.src.js +75 -30
  951. package/modules/parallel-coordinates.js +2 -2
  952. package/modules/parallel-coordinates.src.js +37 -19
  953. package/modules/pareto.js +2 -2
  954. package/modules/pareto.src.js +45 -29
  955. package/modules/pathfinder.js +2 -2
  956. package/modules/pathfinder.src.js +37 -21
  957. package/modules/pattern-fill.js +2 -2
  958. package/modules/pattern-fill.src.js +34 -17
  959. package/modules/pictorial.js +2 -2
  960. package/modules/pictorial.src.js +62 -43
  961. package/modules/pointandfigure.js +2 -2
  962. package/modules/pointandfigure.src.js +35 -19
  963. package/modules/price-indicator.js +2 -2
  964. package/modules/price-indicator.src.js +32 -16
  965. package/modules/pyramid3d.js +2 -2
  966. package/modules/pyramid3d.src.js +31 -16
  967. package/modules/renko.js +2 -2
  968. package/modules/renko.src.js +34 -19
  969. package/modules/sankey.js +2 -2
  970. package/modules/sankey.src.js +80 -51
  971. package/modules/series-label.js +2 -2
  972. package/modules/series-label.src.js +42 -28
  973. package/modules/series-on-point.js +2 -2
  974. package/modules/series-on-point.src.js +40 -25
  975. package/modules/solid-gauge.d.ts +3 -3
  976. package/modules/solid-gauge.js +2 -2
  977. package/modules/solid-gauge.src.d.ts +3 -3
  978. package/modules/solid-gauge.src.js +54 -33
  979. package/modules/sonification.js +2 -2
  980. package/modules/sonification.src.js +56 -40
  981. package/modules/static-scale.js +2 -2
  982. package/modules/static-scale.src.js +28 -13
  983. package/modules/stock-tools.js +3 -3
  984. package/modules/stock-tools.src.js +90 -43
  985. package/modules/stock.d.ts +47 -0
  986. package/modules/stock.js +6 -6
  987. package/modules/stock.src.d.ts +47 -0
  988. package/modules/stock.src.js +650 -185
  989. package/modules/streamgraph.js +2 -2
  990. package/modules/streamgraph.src.js +31 -16
  991. package/modules/sunburst.js +2 -2
  992. package/modules/sunburst.src.js +137 -71
  993. package/modules/textpath.js +2 -2
  994. package/modules/textpath.src.js +28 -13
  995. package/modules/tiledwebmap.js +3 -3
  996. package/modules/tiledwebmap.src.js +65 -32
  997. package/modules/tilemap.js +2 -2
  998. package/modules/tilemap.src.js +41 -25
  999. package/modules/timeline.js +2 -2
  1000. package/modules/timeline.src.js +47 -25
  1001. package/modules/treegraph.js +2 -2
  1002. package/modules/treegraph.src.js +83 -50
  1003. package/modules/treegrid.js +2 -2
  1004. package/modules/treegrid.src.js +76 -44
  1005. package/modules/treemap.js +2 -2
  1006. package/modules/treemap.src.js +116 -62
  1007. package/modules/variable-pie.js +2 -2
  1008. package/modules/variable-pie.src.js +39 -21
  1009. package/modules/variwide.js +2 -2
  1010. package/modules/variwide.src.js +32 -17
  1011. package/modules/vector.js +2 -2
  1012. package/modules/vector.src.js +37 -24
  1013. package/modules/venn.js +2 -2
  1014. package/modules/venn.src.js +42 -26
  1015. package/modules/windbarb.js +2 -2
  1016. package/modules/windbarb.src.js +51 -38
  1017. package/modules/wordcloud.js +2 -2
  1018. package/modules/wordcloud.src.js +34 -17
  1019. package/modules/xrange.js +2 -2
  1020. package/modules/xrange.src.js +43 -28
  1021. package/options/abands.d.ts +722 -83
  1022. package/options/abands.src.d.ts +722 -83
  1023. package/options/ad.d.ts +381 -26
  1024. package/options/ad.src.d.ts +381 -26
  1025. package/options/ao.d.ts +744 -70
  1026. package/options/ao.src.d.ts +744 -70
  1027. package/options/apo.d.ts +381 -26
  1028. package/options/apo.src.d.ts +381 -26
  1029. package/options/arcdiagram.d.ts +80 -534
  1030. package/options/arcdiagram.src.d.ts +80 -534
  1031. package/options/area.d.ts +432 -129
  1032. package/options/area.src.d.ts +432 -129
  1033. package/options/arearange.d.ts +46 -4
  1034. package/options/arearange.src.d.ts +46 -4
  1035. package/options/areaspline.d.ts +141 -866
  1036. package/options/areaspline.src.d.ts +141 -866
  1037. package/options/areasplinerange.d.ts +221 -871
  1038. package/options/areasplinerange.src.d.ts +221 -871
  1039. package/options/aroon.d.ts +432 -124
  1040. package/options/aroon.src.d.ts +432 -124
  1041. package/options/aroonoscillator.d.ts +127 -689
  1042. package/options/aroonoscillator.src.d.ts +127 -689
  1043. package/options/atr.d.ts +381 -71
  1044. package/options/atr.src.d.ts +381 -71
  1045. package/options/bar.d.ts +103 -12
  1046. package/options/bar.src.d.ts +103 -12
  1047. package/options/bb.d.ts +87 -762
  1048. package/options/bb.src.d.ts +87 -762
  1049. package/options/bellcurve.d.ts +87 -364
  1050. package/options/bellcurve.src.d.ts +87 -364
  1051. package/options/boxplot.d.ts +82 -13
  1052. package/options/boxplot.src.d.ts +82 -13
  1053. package/options/bubble.d.ts +83 -874
  1054. package/options/bubble.src.d.ts +83 -874
  1055. package/options/bullet.d.ts +354 -717
  1056. package/options/bullet.src.d.ts +354 -717
  1057. package/options/candlestick.d.ts +99 -1214
  1058. package/options/candlestick.src.d.ts +99 -1214
  1059. package/options/cci.d.ts +381 -26
  1060. package/options/cci.src.d.ts +381 -26
  1061. package/options/chaikin.d.ts +728 -83
  1062. package/options/chaikin.src.d.ts +728 -83
  1063. package/options/cmf.d.ts +381 -26
  1064. package/options/cmf.src.d.ts +381 -26
  1065. package/options/cmo.d.ts +730 -79
  1066. package/options/cmo.src.d.ts +730 -79
  1067. package/options/column.d.ts +1265 -99
  1068. package/options/column.src.d.ts +1265 -99
  1069. package/options/columnpyramid.d.ts +102 -1158
  1070. package/options/columnpyramid.src.d.ts +102 -1158
  1071. package/options/columnrange.d.ts +952 -95
  1072. package/options/columnrange.src.d.ts +952 -95
  1073. package/options/contour.d.ts +31 -443
  1074. package/options/contour.src.d.ts +31 -443
  1075. package/options/cylinder.d.ts +100 -12
  1076. package/options/cylinder.src.d.ts +100 -12
  1077. package/options/dema.d.ts +80 -736
  1078. package/options/dema.src.d.ts +80 -736
  1079. package/options/dependencywheel.d.ts +599 -218
  1080. package/options/dependencywheel.src.d.ts +599 -218
  1081. package/options/disparityindex.d.ts +84 -365
  1082. package/options/disparityindex.src.d.ts +84 -365
  1083. package/options/dmi.d.ts +86 -775
  1084. package/options/dmi.src.d.ts +86 -775
  1085. package/options/dpo.d.ts +83 -365
  1086. package/options/dpo.src.d.ts +83 -365
  1087. package/options/dumbbell.d.ts +27 -4
  1088. package/options/dumbbell.src.d.ts +27 -4
  1089. package/options/ema.d.ts +81 -703
  1090. package/options/ema.src.d.ts +81 -703
  1091. package/options/errorbar.d.ts +91 -1161
  1092. package/options/errorbar.src.d.ts +91 -1161
  1093. package/options/flags.d.ts +98 -1192
  1094. package/options/flags.src.d.ts +98 -1192
  1095. package/options/flowmap.d.ts +48 -373
  1096. package/options/flowmap.src.d.ts +48 -373
  1097. package/options/funnel.d.ts +40 -3
  1098. package/options/funnel.src.d.ts +40 -3
  1099. package/options/gantt.d.ts +37 -40
  1100. package/options/gantt.src.d.ts +37 -40
  1101. package/options/gauge.d.ts +398 -472
  1102. package/options/gauge.src.d.ts +398 -472
  1103. package/options/geoheatmap.d.ts +462 -63
  1104. package/options/geoheatmap.src.d.ts +462 -63
  1105. package/options/heatmap.d.ts +31 -380
  1106. package/options/heatmap.src.d.ts +31 -380
  1107. package/options/heikinashi.d.ts +20 -2
  1108. package/options/heikinashi.src.d.ts +20 -2
  1109. package/options/hlc.d.ts +20 -2
  1110. package/options/hlc.src.d.ts +20 -2
  1111. package/options/ikh.d.ts +750 -103
  1112. package/options/ikh.src.d.ts +750 -103
  1113. package/options/item.d.ts +34 -74
  1114. package/options/item.src.d.ts +34 -74
  1115. package/options/keltnerchannels.d.ts +87 -708
  1116. package/options/keltnerchannels.src.d.ts +87 -708
  1117. package/options/klinger.d.ts +34 -365
  1118. package/options/klinger.src.d.ts +34 -365
  1119. package/options/line.d.ts +151 -851
  1120. package/options/line.src.d.ts +151 -851
  1121. package/options/linearregression.d.ts +960 -85
  1122. package/options/linearregression.src.d.ts +960 -85
  1123. package/options/linearregressionangle.d.ts +96 -699
  1124. package/options/linearregressionangle.src.d.ts +96 -699
  1125. package/options/linearregressionintercept.d.ts +381 -26
  1126. package/options/linearregressionintercept.src.d.ts +381 -26
  1127. package/options/linearregressionslope.d.ts +381 -26
  1128. package/options/linearregressionslope.src.d.ts +381 -26
  1129. package/options/lollipop.d.ts +214 -851
  1130. package/options/lollipop.src.d.ts +214 -851
  1131. package/options/macd.d.ts +386 -83
  1132. package/options/macd.src.d.ts +386 -83
  1133. package/options/map.d.ts +470 -36
  1134. package/options/map.src.d.ts +470 -36
  1135. package/options/mapbubble.d.ts +43 -532
  1136. package/options/mapbubble.src.d.ts +43 -532
  1137. package/options/mapline.d.ts +135 -58
  1138. package/options/mapline.src.d.ts +135 -58
  1139. package/options/mappoint.d.ts +205 -283
  1140. package/options/mappoint.src.d.ts +205 -283
  1141. package/options/mfi.d.ts +772 -82
  1142. package/options/mfi.src.d.ts +772 -82
  1143. package/options/momentum.d.ts +381 -71
  1144. package/options/momentum.src.d.ts +381 -71
  1145. package/options/natr.d.ts +776 -75
  1146. package/options/natr.src.d.ts +776 -75
  1147. package/options/networkgraph.d.ts +184 -207
  1148. package/options/networkgraph.src.d.ts +184 -207
  1149. package/options/obv.d.ts +426 -26
  1150. package/options/obv.src.d.ts +426 -26
  1151. package/options/ohlc.d.ts +77 -14
  1152. package/options/ohlc.src.d.ts +77 -14
  1153. package/options/packedbubble.d.ts +76 -696
  1154. package/options/packedbubble.src.d.ts +76 -696
  1155. package/options/pareto.d.ts +28 -364
  1156. package/options/pareto.src.d.ts +28 -364
  1157. package/options/pc.d.ts +724 -85
  1158. package/options/pc.src.d.ts +724 -85
  1159. package/options/pictorial.d.ts +1093 -58
  1160. package/options/pictorial.src.d.ts +1093 -58
  1161. package/options/pie.d.ts +595 -129
  1162. package/options/pie.src.d.ts +595 -129
  1163. package/options/pivotpoints.d.ts +34 -365
  1164. package/options/pivotpoints.src.d.ts +34 -365
  1165. package/options/pointandfigure.d.ts +10 -50
  1166. package/options/pointandfigure.src.d.ts +10 -50
  1167. package/options/polygon.d.ts +803 -74
  1168. package/options/polygon.src.d.ts +803 -74
  1169. package/options/ppo.d.ts +34 -365
  1170. package/options/ppo.src.d.ts +34 -365
  1171. package/options/priceenvelopes.d.ts +93 -719
  1172. package/options/priceenvelopes.src.d.ts +93 -719
  1173. package/options/psar.d.ts +34 -365
  1174. package/options/psar.src.d.ts +34 -365
  1175. package/options/pyramid.d.ts +35 -3
  1176. package/options/pyramid.src.d.ts +35 -3
  1177. package/options/renko.d.ts +25 -2
  1178. package/options/renko.src.d.ts +25 -2
  1179. package/options/roc.d.ts +78 -712
  1180. package/options/roc.src.d.ts +78 -712
  1181. package/options/rsi.d.ts +34 -365
  1182. package/options/rsi.src.d.ts +34 -365
  1183. package/options/sankey.d.ts +27 -5
  1184. package/options/sankey.src.d.ts +27 -5
  1185. package/options/scatter.d.ts +896 -290
  1186. package/options/scatter.src.d.ts +896 -290
  1187. package/options/series.d.ts +938 -83
  1188. package/options/series.src.d.ts +938 -83
  1189. package/options/slowstochastic.d.ts +381 -26
  1190. package/options/slowstochastic.src.d.ts +381 -26
  1191. package/options/sma.d.ts +729 -79
  1192. package/options/sma.src.d.ts +729 -79
  1193. package/options/solidgauge.d.ts +882 -105
  1194. package/options/solidgauge.src.d.ts +882 -105
  1195. package/options/spline.d.ts +389 -90
  1196. package/options/spline.src.d.ts +389 -90
  1197. package/options/stochastic.d.ts +83 -716
  1198. package/options/stochastic.src.d.ts +83 -716
  1199. package/options/streamgraph.d.ts +97 -364
  1200. package/options/streamgraph.src.d.ts +97 -364
  1201. package/options/sunburst.d.ts +87 -19
  1202. package/options/sunburst.src.d.ts +87 -19
  1203. package/options/supertrend.d.ts +77 -749
  1204. package/options/supertrend.src.d.ts +77 -749
  1205. package/options/tema.d.ts +83 -365
  1206. package/options/tema.src.d.ts +83 -365
  1207. package/options/tiledwebmap.d.ts +13 -72
  1208. package/options/tiledwebmap.src.d.ts +13 -72
  1209. package/options/tilemap.d.ts +372 -533
  1210. package/options/tilemap.src.d.ts +372 -533
  1211. package/options/timeline.d.ts +49 -154
  1212. package/options/timeline.src.d.ts +49 -154
  1213. package/options/treegraph.d.ts +174 -696
  1214. package/options/treegraph.src.d.ts +174 -696
  1215. package/options/treemap.d.ts +468 -1079
  1216. package/options/treemap.src.d.ts +468 -1079
  1217. package/options/trendline.d.ts +381 -26
  1218. package/options/trendline.src.d.ts +381 -26
  1219. package/options/trix.d.ts +712 -82
  1220. package/options/trix.src.d.ts +712 -82
  1221. package/options/variablepie.d.ts +130 -587
  1222. package/options/variablepie.src.d.ts +130 -587
  1223. package/options/variwide.d.ts +1123 -94
  1224. package/options/variwide.src.d.ts +1123 -94
  1225. package/options/vbp.d.ts +57 -383
  1226. package/options/vbp.src.d.ts +57 -383
  1227. package/options/vector.d.ts +22 -58
  1228. package/options/vector.src.d.ts +22 -58
  1229. package/options/venn.d.ts +32 -78
  1230. package/options/venn.src.d.ts +32 -78
  1231. package/options/vwap.d.ts +122 -703
  1232. package/options/vwap.src.d.ts +122 -703
  1233. package/options/waterfall.d.ts +139 -1150
  1234. package/options/waterfall.src.d.ts +139 -1150
  1235. package/options/williamsr.d.ts +381 -76
  1236. package/options/williamsr.src.d.ts +381 -76
  1237. package/options/windbarb.d.ts +39 -2
  1238. package/options/windbarb.src.d.ts +39 -2
  1239. package/options/wma.d.ts +78 -704
  1240. package/options/wma.src.d.ts +78 -704
  1241. package/options/wordcloud.d.ts +98 -595
  1242. package/options/wordcloud.src.d.ts +98 -595
  1243. package/options/xrange.d.ts +166 -1056
  1244. package/options/xrange.src.d.ts +166 -1056
  1245. package/options/zigzag.d.ts +34 -410
  1246. package/options/zigzag.src.d.ts +34 -410
  1247. package/package.json +1 -1
  1248. package/standalone-navigator.js +4 -4
  1249. package/standalone-navigator.src.js +829 -553
  1250. package/themes/adaptive.js +2 -2
  1251. package/themes/adaptive.src.js +33 -18
  1252. package/themes/avocado.js +2 -2
  1253. package/themes/avocado.src.js +28 -13
  1254. package/themes/dark-unica.js +2 -2
  1255. package/themes/dark-unica.src.js +28 -13
  1256. package/themes/grid-light.js +2 -2
  1257. package/themes/grid-light.src.js +28 -13
  1258. package/themes/high-contrast.js +2 -2
  1259. package/themes/high-contrast.src.js +28 -13
  1260. package/themes/sand-signika.js +2 -2
  1261. package/themes/sand-signika.src.js +28 -13
  1262. package/themes/sunset.js +2 -2
  1263. package/themes/sunset.src.js +28 -13
  1264. package/css/.stylelintrc.json +0 -8
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: LicenseRef-Highcharts
2
2
  /**
3
- * @license Highcharts JS v13.0.0 (2026-06-11)
3
+ * @license Highcharts JS v13.0.2 (2026-08-27)
4
4
  * @module highcharts/highcharts
5
5
  *
6
6
  * (c) 2009-2026 Highsoft AS
@@ -8,29 +8,6 @@
8
8
  * A commercial license may be required depending on use,
9
9
  * see www.highcharts.com/license
10
10
  */
11
- /******/ // The require scope
12
- /******/ var __webpack_require__ = {};
13
- /******/
14
- /************************************************************************/
15
- /******/ /* webpack/runtime/define property getters */
16
- /******/ (() => {
17
- /******/ // define getter functions for harmony exports
18
- /******/ __webpack_require__.d = (exports, definition) => {
19
- /******/ for(var key in definition) {
20
- /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
21
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
22
- /******/ }
23
- /******/ }
24
- /******/ };
25
- /******/ })();
26
- /******/
27
- /******/ /* webpack/runtime/hasOwnProperty shorthand */
28
- /******/ (() => {
29
- /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
30
- /******/ })();
31
- /******/
32
- /************************************************************************/
33
- var __webpack_exports__ = {};
34
11
 
35
12
  ;// ./code/es-modules/Core/Globals.js
36
13
  /* *
@@ -61,7 +38,7 @@ var Globals;
61
38
  * Constants
62
39
  *
63
40
  * */
64
- Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '13.0.0', Globals.win = (typeof window !== 'undefined' ?
41
+ Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '13.0.2', Globals.win = (typeof window !== 'undefined' ?
65
42
  window :
66
43
  {}), // eslint-disable-line node/no-unsupported-features/es-builtins
67
44
  Globals.doc = Globals.win.document, Globals.svg = !!Globals.doc?.createElementNS?.(Globals.SVG_NS, 'svg')?.createSVGRect, Globals.pageLang = Globals.doc?.documentElement?.closest('[lang]')?.lang, Globals.userAgent = Globals.win.navigator?.userAgent || '', Globals.isChrome = Globals.win.chrome, Globals.isFirefox = Globals.userAgent.indexOf('Firefox') !== -1, Globals.isMS = /(edge|msie|trident)/i.test(Globals.userAgent) && !Globals.win.opera, Globals.isSafari = !Globals.isChrome && Globals.userAgent.indexOf('Safari') !== -1, Globals.isTouchDevice = /(Mobile|Android|Windows Phone)/.test(Globals.userAgent), Globals.isWebKit = Globals.userAgent.indexOf('AppleWebKit') !== -1, Globals.deg2rad = Math.PI * 2 / 360, Globals.marginNames = [
@@ -388,6 +365,29 @@ const ChartDefaults = {
388
365
  * @context Highcharts.Chart
389
366
  * @apioption chart.events.load
390
367
  */
368
+ /**
369
+ * Fires while the chart is panned by mouse drag. Panning must be
370
+ * enabled through [chart.panning](#chart.panning). One parameter,
371
+ * `event`, is passed to the function, containing common event
372
+ * information as well as `event.originalEvent`, the underlying pointer
373
+ * event. Note that the event fires for every mouse move during the
374
+ * drag, not once per gesture.
375
+ *
376
+ * Calling `event.preventDefault()` or returning false prevents the
377
+ * default panning of the axes. In Highcharts Maps, and on ordinal axes
378
+ * in Highcharts Stock, the panning is applied outside the default
379
+ * action and is not prevented.
380
+ *
381
+ * Panning by touch does not fire this event, unless
382
+ * [chart.zooming.singleTouch](#chart.zooming.singleTouch) is enabled and
383
+ * no zoom type is set. Single-finger drags are then handled as mouse
384
+ * drags and fire this event.
385
+ *
386
+ * @type {Highcharts.ChartPanCallbackFunction}
387
+ * @since 7.0.2
388
+ * @context Highcharts.Chart
389
+ * @apioption chart.events.pan
390
+ */
391
391
  /**
392
392
  * Fires when the chart is redrawn, either after a call to
393
393
  * `chart.redraw()` or after an axis, series or point is modified with
@@ -976,7 +976,7 @@ const ChartDefaults = {
976
976
  * @type {Highcharts.ColorType}
977
977
  * @since 2.1.7
978
978
  */
979
- selectionMarkerFill: 'color-mix(var(--highcharts-highlight-color-80) 25%, transparent)', // eslint-disable-line max-len
979
+ selectionMarkerFill: 'color-mix(in srgb, var(--highcharts-highlight-color-80) 25%, transparent)', // eslint-disable-line max-len
980
980
  /**
981
981
  * Whether to apply a drop shadow to the global series group. This causes
982
982
  * all the series to have the same shadow. Contrary to the `series.shadow`
@@ -2402,7 +2402,7 @@ function getStyle(el, prop, toInt) {
2402
2402
  const css = win.getComputedStyle(el, void 0); // eslint-disable-line no-undefined
2403
2403
  if (css) {
2404
2404
  style = css.getPropertyValue(prop);
2405
- if (pick(toInt, prop !== 'opacity')) {
2405
+ if (toInt ?? prop !== 'opacity') {
2406
2406
  style = pInt(style);
2407
2407
  }
2408
2408
  }
@@ -2652,7 +2652,7 @@ function merge(extendOrSource, ...sources) {
2652
2652
  function normalizeTickInterval(interval, multiples, magnitude, allowDecimals, hasTickAmount) {
2653
2653
  let i, retInterval = interval;
2654
2654
  // Round to a tenfold of 1, 2, 2.5 or 5
2655
- magnitude = pick(magnitude, getMagnitude(interval));
2655
+ magnitude = (magnitude ?? getMagnitude(interval));
2656
2656
  const normalized = interval / magnitude;
2657
2657
  // Multiples for a linear scale
2658
2658
  if (!multiples) {
@@ -2765,20 +2765,22 @@ function pad(number, length, padder) {
2765
2765
  .replace('-', '')
2766
2766
  .length).join(padder || '0') + number;
2767
2767
  }
2768
- /* eslint-disable jsdoc/check-param-names */
2768
+ /* eslint-disable valid-jsdoc */
2769
2769
  /**
2770
2770
  * Return the first value that is not null or undefined.
2771
2771
  *
2772
+ * @deprecated 13.0.2
2773
+ * Use nullish coalescing (`??`) or explicit fallback logic instead.
2774
+ *
2772
2775
  * @function Highcharts.pick<T>
2773
2776
  *
2774
- * @param {...Array<T|null|undefined>} items
2777
+ * @param {...(T|null|undefined)} args
2775
2778
  * Variable number of arguments to inspect.
2776
2779
  *
2777
2780
  * @return {T}
2778
2781
  * The value of the first argument that is not null or undefined.
2779
2782
  */
2780
- function pick() {
2781
- const args = arguments;
2783
+ function pick(...args) {
2782
2784
  const length = args.length;
2783
2785
  for (let i = 0; i < length; i++) {
2784
2786
  const arg = args[i];
@@ -2787,7 +2789,7 @@ function pick() {
2787
2789
  }
2788
2790
  }
2789
2791
  }
2790
- /* eslint-enable jsdoc/check-param-names */
2792
+ /* eslint-enable valid-jsdoc */
2791
2793
  /**
2792
2794
  * Shortcut for parseInt
2793
2795
  *
@@ -3170,7 +3172,8 @@ function insertItem(item, collection) {
3170
3172
  !collection[i] ||
3171
3173
  // Handle index option, the element to insert has lower index
3172
3174
  (isNumber(indexOption) &&
3173
- indexOption < pick(collection[i].options.index, collection[i]._i)) ||
3175
+ indexOption < (collection[i].options.index ??
3176
+ collection[i]._i)) ||
3174
3177
  // Insert the new item before other internal items
3175
3178
  // (navigator)
3176
3179
  collection[i].options.isInternal) {
@@ -3256,7 +3259,7 @@ const uniqueKey = (function () {
3256
3259
  * State of the serial mode.
3257
3260
  */
3258
3261
  function useSerialIds(mode) {
3259
- return (serialMode = pick(mode, serialMode));
3262
+ return (serialMode = (mode ?? serialMode));
3260
3263
  }
3261
3264
  /* *
3262
3265
  *
@@ -3722,6 +3725,10 @@ const isDateTimeFormatOptions = (obj) => obj.main === void 0;
3722
3725
  *
3723
3726
  * @param {Highcharts.TimeOptions} [options] Time options as defined in
3724
3727
  * [chart.options.time](/highcharts/time).
3728
+ *
3729
+ * @param {Highcharts.LangOptions} [lang]
3730
+ * Language options. When `options.locale` is not set, `lang.locale` is used as
3731
+ * the locale fallback for locale-aware date formatting.
3725
3732
  */
3726
3733
  class TimeBase {
3727
3734
  /* *
@@ -3740,8 +3747,8 @@ class TimeBase {
3740
3747
  };
3741
3748
  this.variableTimezone = false;
3742
3749
  this.Date = TimeBase_win.Date;
3743
- this.update(options);
3744
3750
  this.lang = lang;
3751
+ this.update(options);
3745
3752
  }
3746
3753
  /* *
3747
3754
  *
@@ -3853,7 +3860,9 @@ class TimeBase {
3853
3860
  /**
3854
3861
  * Shorthand to get a cached `Intl.DateTimeFormat` instance.
3855
3862
  */
3856
- dateTimeFormat(options, timestamp, locale = this.options.locale || pageLang) {
3863
+ dateTimeFormat(options, timestamp, locale = (this.options.locale ||
3864
+ this.lang?.locale ||
3865
+ pageLang)) {
3857
3866
  const cacheKey = JSON.stringify(options) + locale;
3858
3867
  if (isString(options)) {
3859
3868
  options = this.str2dtf(options);
@@ -3939,17 +3948,16 @@ class TimeBase {
3939
3948
  // eslint-disable-next-line new-cap
3940
3949
  let d = this.Date.UTC(year, month, date, hours, minutes || 0, seconds || 0, milliseconds || 0);
3941
3950
  if (this.timezone !== 'UTC') {
3942
- const offset = this.getTimezoneOffset(d);
3951
+ const offset = this.getTimezoneOffset(d), localHours = (hours - offset / timeUnits.hour + 24) % 24;
3943
3952
  d += offset;
3944
- // Adjustments close to DST transitions
3945
3953
  if (
3946
- // Optimize for speed by limiting the number of calls to
3947
- // `getTimezoneOffset`. According to
3954
+ // Limit the number of calls to `getTimezoneOffset` to months
3955
+ // where DST changes may occur. According to
3948
3956
  // https://en.wikipedia.org/wiki/Daylight_saving_time_by_country,
3949
3957
  // DST change may only occur in these months.
3950
3958
  [2, 3, 8, 9, 10, 11].indexOf(month) !== -1 &&
3951
- // DST transitions occur only in the night-time
3952
- (hours < 5 || hours > 20)) {
3959
+ // DST changes only occur at night (#24420)
3960
+ (localHours < 5 || localHours > 20)) {
3953
3961
  const newOffset = this.getTimezoneOffset(d);
3954
3962
  if (offset !== newOffset) {
3955
3963
  d += newOffset - offset;
@@ -6686,6 +6694,9 @@ const defaultOptions = {
6686
6694
  * below the column, but as `followTouchMove` is true, the tooltip will
6687
6695
  * jump from column to column as the user swipes across the plot area.
6688
6696
  *
6697
+ * @sample {highcharts} highcharts/tooltip/followtouchmove/
6698
+ * Tooltip follows touch move
6699
+ *
6689
6700
  * @type {boolean}
6690
6701
  * @default {highcharts} true
6691
6702
  * @default {highstock} true
@@ -7468,10 +7479,14 @@ const defaultOptions = {
7468
7479
  * @type {Highcharts.CSSObject}
7469
7480
  */
7470
7481
  style: {
7471
- /** @type {Highcharts.ColorType} */
7482
+ /**
7483
+ * @type {Highcharts.ColorType}
7484
+ */
7472
7485
  color: 'var(--highcharts-neutral-color-80)',
7473
7486
  cursor: 'default',
7474
- /** @type {number|string} */
7487
+ /**
7488
+ * @type {number|string}
7489
+ */
7475
7490
  fontSize: '0.8em'
7476
7491
  },
7477
7492
  /**
@@ -7787,6 +7802,41 @@ const DefaultOptions = {
7787
7802
  * @param {global.Event} event
7788
7803
  * The event that occurred.
7789
7804
  */
7805
+ /**
7806
+ * Gets fired while the chart is panned by mouse drag. Calling
7807
+ * `event.preventDefault()` or returning `false` prevents the default panning
7808
+ * of the axes.
7809
+ *
7810
+ * @callback Highcharts.ChartPanCallbackFunction
7811
+ *
7812
+ * @param {Highcharts.Chart} this
7813
+ * The chart on which the event occurred.
7814
+ *
7815
+ * @param {Highcharts.ChartPanEventObject} event
7816
+ * The event that occurred.
7817
+ */
7818
+ /**
7819
+ * Contains common event information. Through the `originalEvent` property you
7820
+ * can access the pointer event that triggered the panning.
7821
+ *
7822
+ * @interface Highcharts.ChartPanEventObject
7823
+ */ /**
7824
+ * The pointer event that triggered the panning.
7825
+ * @name Highcharts.ChartPanEventObject#originalEvent
7826
+ * @type {Highcharts.PointerEventObject}
7827
+ */ /**
7828
+ * Prevents the default behavior of the event.
7829
+ * @name Highcharts.ChartPanEventObject#preventDefault
7830
+ * @type {Function}
7831
+ */ /**
7832
+ * The event target.
7833
+ * @name Highcharts.ChartPanEventObject#target
7834
+ * @type {Highcharts.Chart}
7835
+ */ /**
7836
+ * The event type.
7837
+ * @name Highcharts.ChartPanEventObject#type
7838
+ * @type {"pan"}
7839
+ */
7790
7840
  /**
7791
7841
  * Fires when the chart is redrawn, either after a call to `chart.redraw()` or
7792
7842
  * after an axis, series or point is modified with the `redraw` option set to
@@ -8162,7 +8212,9 @@ Color.None = new Color(''); // Must be last static for init
8162
8212
  */
8163
8213
  /**
8164
8214
  * A valid color type than can be parsed and handled by Highcharts. It can be a
8165
- * color string, a gradient object, or a pattern object.
8215
+ * color string (including CSS expressions), a gradient object, or a pattern
8216
+ * object. Read more about colors in the [Highcharts
8217
+ * documentation](https://www.highcharts.com/docs/chart-design-and-style/colors).
8166
8218
  *
8167
8219
  * @typedef {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject} Highcharts.ColorType
8168
8220
  */
@@ -8394,24 +8446,22 @@ class Fx {
8394
8446
  */
8395
8447
  update() {
8396
8448
  const elem = this.elem, prop = this.prop, // If destroyed, it is null
8397
- now = this.now, step = this.options.step;
8449
+ now = this.now ?? 1, step = this.options.step;
8398
8450
  // Animation setter defined from outside
8399
8451
  if (this[prop + 'Setter']) {
8400
8452
  this[prop + 'Setter']();
8401
8453
  // Other animations on SVGElement
8402
8454
  }
8403
- else if (elem.attr) {
8455
+ else if (elem && elem.attr) {
8404
8456
  if (elem.element) {
8405
- elem.attr(prop, now, null, true);
8457
+ elem.attr(prop, now, void 0, true);
8406
8458
  }
8407
8459
  // HTML styles, raw HTML content like container size
8408
8460
  }
8409
- else {
8410
- elem.style[prop] = now + this.unit;
8411
- }
8412
- if (step) {
8413
- step.call(elem, now, this);
8461
+ else if (elem) {
8462
+ elem.style[prop] = now + (this.unit || '');
8414
8463
  }
8464
+ step?.call(elem, now, this);
8415
8465
  }
8416
8466
  /**
8417
8467
  * Run an animation.
@@ -8429,12 +8479,10 @@ class Fx {
8429
8479
  *
8430
8480
  */
8431
8481
  run(from, to, unit) {
8432
- const self = this, options = self.options, timer = function (gotoEnd) {
8433
- return timer.stopped ? false : self.step(gotoEnd);
8434
- }, requestAnimationFrame = Fx_win.requestAnimationFrame ||
8482
+ const { elem, options } = this, { complete, curAnim = {} } = options, timer = (gotoEnd) => (timer.stopped ? false : this.step(gotoEnd)), requestAnimationFrame = Fx_win.requestAnimationFrame ||
8435
8483
  function (step) {
8436
8484
  setTimeout(step, 13);
8437
- }, step = function () {
8485
+ }, step = () => {
8438
8486
  for (let i = 0; i < Fx.timers.length; i++) {
8439
8487
  if (!Fx.timers[i]()) {
8440
8488
  Fx.timers.splice(i--, 1);
@@ -8444,11 +8492,11 @@ class Fx {
8444
8492
  requestAnimationFrame(step);
8445
8493
  }
8446
8494
  };
8447
- if (from === to && !this.elem['forceAnimate:' + this.prop]) {
8448
- delete options.curAnim[this.prop];
8449
- if (options.complete &&
8450
- Object.keys(options.curAnim).length === 0) {
8451
- options.complete.call(this.elem);
8495
+ if (from === to && !elem['forceAnimate:' + this.prop]) {
8496
+ delete curAnim[this.prop];
8497
+ if (complete &&
8498
+ Object.keys(curAnim).length === 0) {
8499
+ complete.call(elem);
8452
8500
  }
8453
8501
  }
8454
8502
  else { // #7166
@@ -8458,7 +8506,7 @@ class Fx {
8458
8506
  this.unit = unit;
8459
8507
  this.now = this.start;
8460
8508
  this.pos = 0;
8461
- timer.elem = this.elem;
8509
+ timer.elem = elem;
8462
8510
  timer.prop = this.prop;
8463
8511
  if (timer() && Fx.timers.push(timer) === 1) {
8464
8512
  requestAnimationFrame(step);
@@ -8479,7 +8527,8 @@ class Fx {
8479
8527
  step(gotoEnd) {
8480
8528
  const t = +new Date(), options = this.options, elem = this.elem, complete = options.complete, duration = options.duration, curAnim = options.curAnim;
8481
8529
  let ret, done;
8482
- if (!!elem.attr && !elem.element) { // #2616, element is destroyed
8530
+ // #2616, element is destroyed
8531
+ if (elem?.attr && !elem.element) {
8483
8532
  ret = false;
8484
8533
  }
8485
8534
  else if (gotoEnd || t >= duration + this.startTime) {
@@ -8708,7 +8757,8 @@ Fx.timers = [];
8708
8757
  * so it should be moved to the SVGRenderer.
8709
8758
  */
8710
8759
  function setAnimation(animation, chart) {
8711
- chart.renderer.globalAnimation = pick(animation, chart.options.chart.animation, true);
8760
+ chart.renderer.globalAnimation =
8761
+ animation ?? chart.options.chart.animation ?? true;
8712
8762
  }
8713
8763
  /**
8714
8764
  * Get the animation in object form, where a disabled animation is always
@@ -8769,6 +8819,11 @@ function getDeferredAnimation(chart, animation, series) {
8769
8819
  /**
8770
8820
  * The global animate method, which uses Fx to create individual animators.
8771
8821
  *
8822
+ * @sample highcharts/members/renderer-basic
8823
+ * SVG elements with animation
8824
+ * @sample highcharts/members/animate
8825
+ * Animation without an owner element
8826
+ *
8772
8827
  * @function Highcharts.animate
8773
8828
  *
8774
8829
  * @param {Highcharts.HTMLDOMElement|Highcharts.SVGElement} el
@@ -8784,14 +8839,12 @@ function getDeferredAnimation(chart, animation, series) {
8784
8839
  *
8785
8840
  * @return {void}
8786
8841
  */
8787
- function animate(el, params, opt) {
8788
- let start, unit = '', end, fx, args;
8842
+ function animate(el, params = { pos: 1 }, opt) {
8789
8843
  if (!isObject(opt)) { // Number or undefined/null
8790
- args = arguments;
8791
8844
  opt = {
8792
- duration: args[2],
8793
- easing: args[3],
8794
- complete: args[4]
8845
+ duration: arguments[2],
8846
+ easing: arguments[3],
8847
+ complete: arguments[4]
8795
8848
  };
8796
8849
  }
8797
8850
  if (!isNumber(opt.duration)) {
@@ -8801,22 +8854,23 @@ function animate(el, params, opt) {
8801
8854
  opt.easing :
8802
8855
  (Math[opt.easing] || Math.easeInOutSine);
8803
8856
  opt.curAnim = merge(params);
8804
- objectEach(params, function (val, prop) {
8857
+ objectEach(params, (val, prop) => {
8805
8858
  // Stop current running animation of this property
8806
- stop(el, prop);
8807
- fx = new Animation_Fx(el, opt, prop);
8808
- end = void 0;
8809
- if (prop === 'd' && isArray(params.d)) {
8810
- fx.paths = fx.initPath(el, el.pathArray, params.d);
8811
- fx.toD = params.d;
8812
- start = 0;
8859
+ if (el) {
8860
+ stop(el, prop);
8861
+ }
8862
+ const fx = new Animation_Fx(el, opt, prop), d = params.d;
8863
+ let start = 0, end = void 0, unit = '';
8864
+ if (prop === 'd' && isArray(d)) {
8865
+ fx.paths = fx.initPath(el, el.pathArray, d);
8866
+ fx.toD = d;
8813
8867
  end = 1;
8814
8868
  }
8815
- else if (el.attr) {
8869
+ else if (el?.attr) {
8816
8870
  start = el.attr(prop);
8817
8871
  }
8818
- else {
8819
- start = parseFloat(getStyle(el, prop)) || 0;
8872
+ else if (el) {
8873
+ start = +(getStyle(el, prop) || 0);
8820
8874
  if (prop !== 'opacity') {
8821
8875
  unit = 'px';
8822
8876
  }
@@ -8827,7 +8881,10 @@ function animate(el, params, opt) {
8827
8881
  if (typeof end === 'string' && end.match('px')) {
8828
8882
  end = end.replace(/px/g, ''); // #4351
8829
8883
  }
8830
- fx.run(start, end, unit);
8884
+ // Empty dashstyle animation crashes treemap on hover
8885
+ if (defined(end)) {
8886
+ fx.run(start, end, unit);
8887
+ }
8831
8888
  });
8832
8889
  }
8833
8890
  /**
@@ -8851,28 +8908,11 @@ function animate(el, params, opt) {
8851
8908
  * improvement in all cases where we stop the animation from .attr. Instead of
8852
8909
  * stopping everything, we can just stop the actual attributes we're setting.
8853
8910
  */
8854
- function stop(el, prop) {
8855
- let i = Animation_Fx.timers.length;
8856
- // Remove timers related to this element (#4519)
8857
- while (i--) {
8858
- if (Animation_Fx.timers[i].elem === el && (!prop || prop === Animation_Fx.timers[i].prop)) {
8859
- Animation_Fx.timers[i].stopped = true; // #4667
8860
- }
8911
+ const stop = (el, prop) => Animation_Fx.timers.forEach((timer) => {
8912
+ if (timer.elem === el && (!prop || prop === timer.prop)) {
8913
+ timer.stopped = true; // #4667
8861
8914
  }
8862
- }
8863
- const animationExports = {
8864
- animate,
8865
- animObject,
8866
- getDeferredAnimation,
8867
- setAnimation,
8868
- stop
8869
- };
8870
- /* *
8871
- *
8872
- * Default Export
8873
- *
8874
- * */
8875
- /* harmony default export */ const AnimationUtilities = (animationExports);
8915
+ });
8876
8916
  /* *
8877
8917
  *
8878
8918
  * API Options
@@ -9177,7 +9217,9 @@ class AST {
9177
9217
  doc = { body };
9178
9218
  }
9179
9219
  const appendChildNodes = (node, addTo) => {
9180
- const tagName = node.nodeName.toLowerCase();
9220
+ // Preserve the camelCase of SVG tags via localName (#24702).
9221
+ const tagName = node.localName ||
9222
+ node.nodeName.toLowerCase();
9181
9223
  // Add allowed tags
9182
9224
  const astNode = {
9183
9225
  tagName
@@ -9291,6 +9333,8 @@ AST.allowedAttributes = [
9291
9333
  'src',
9292
9334
  'startOffset',
9293
9335
  'stdDeviation',
9336
+ 'stop-color',
9337
+ 'stop-opacity',
9294
9338
  'stroke-linecap',
9295
9339
  'stroke-width',
9296
9340
  'stroke',
@@ -9777,7 +9821,7 @@ function format(str = '', ctx, owner) {
9777
9821
  replacement = `"${replacement}"`;
9778
9822
  }
9779
9823
  }
9780
- str = str.replace(match.find, pick(replacement, ''));
9824
+ str = str.replace(match.find, (replacement ?? ''));
9781
9825
  });
9782
9826
  return hasSub ? format(str, ctx, owner) : str;
9783
9827
  }
@@ -9894,9 +9938,7 @@ const Templating = {
9894
9938
  * API Declarations
9895
9939
  * */
9896
9940
  /**
9897
- * @interface Highcharts.Templating
9898
- *
9899
- * The Highcharts.Templating interface provides a structure for defining
9941
+ * The Highcharts.TemplatingObject interface provides a structure for defining
9900
9942
  * helpers. Helpers can be used as conditional blocks or functions within
9901
9943
  * expressions. Highcharts includes several built-in helpers and supports
9902
9944
  * the addition of custom helpers.
@@ -9904,16 +9946,21 @@ const Templating = {
9904
9946
  * @see [More information](
9905
9947
  * https://www.highcharts.com/docs/chart-concepts/templating#helpers)
9906
9948
  *
9907
- * @example
9908
- * // Define a custom helper to return the absolute value of a number
9909
- * Highcharts.Templating.helpers.abs = value => Math.abs(value);
9910
- *
9911
- * // Usage in a format string
9912
- * format: 'Absolute value: {abs point.y}'
9913
- *
9914
- * @name Highcharts.Templating#helpers
9915
- * @type {Record<string, Function>}
9916
- */
9949
+ * @interface Highcharts.TemplatingObject
9950
+ */ /**
9951
+ * @example
9952
+ * // Define a custom helper to return the absolute value of a number
9953
+ * Highcharts.Templating.helpers.abs = value => Math.abs(value);
9954
+ *
9955
+ * // Usage in a format string
9956
+ * format: 'Absolute value: {abs point.y}'
9957
+ *
9958
+ * @name Highcharts.TemplatingObject#helpers
9959
+ * @type {Record<string, Function>}
9960
+ */ /**
9961
+ * @name Highcharts.Templating
9962
+ * @type {Highcharts.TemplatingObject}
9963
+ */
9917
9964
  (''); // Keeps doclets above in file
9918
9965
 
9919
9966
  ;// ./code/es-modules/Core/Renderer/RendererUtilities.js
@@ -10023,7 +10070,7 @@ var RendererUtilities;
10023
10070
  boxes = boxes.map((box) => ({
10024
10071
  size: box.size,
10025
10072
  targets: [box.target],
10026
- align: pick(box.align, 0.5)
10073
+ align: (box.align ?? 0.5)
10027
10074
  }));
10028
10075
  while (overlapping) {
10029
10076
  // Initial positions: target centered in box
@@ -10122,7 +10169,6 @@ var RendererUtilities;
10122
10169
  * */
10123
10170
 
10124
10171
 
10125
- const { animate: SVGElement_animate, animObject: SVGElement_animObject, stop: SVGElement_stop } = AnimationUtilities;
10126
10172
 
10127
10173
 
10128
10174
  const { deg2rad, doc: SVGElement_doc, svg, SVG_NS: SVGElement_SVG_NS, win: SVGElement_win, isFirefox } = Core_Globals;
@@ -10182,8 +10228,10 @@ class SVGElement {
10182
10228
  * Property value.
10183
10229
  */
10184
10230
  _defaultGetter(key) {
10185
- let ret = pick(this[key + 'Value'], // Align getter
10186
- this[key], this.element ? this.element.getAttribute(key) : null, 0);
10231
+ let ret = (this[key + 'Value'] ??
10232
+ this[key] ??
10233
+ (this.element ? this.element.getAttribute(key) : null) ??
10234
+ 0);
10187
10235
  if (/^-?[\d\.]+$/.test(ret)) { // Is numerical
10188
10236
  ret = parseFloat(ret);
10189
10237
  }
@@ -10346,7 +10394,7 @@ class SVGElement {
10346
10394
  }
10347
10395
  alignTo = void 0; // Do not use the box
10348
10396
  }
10349
- const alignToBox = pick(alignTo, renderer[alignToKey], renderer),
10397
+ const alignToBox = alignTo ?? renderer[alignToKey] ?? renderer,
10350
10398
  // Default: left align
10351
10399
  x = (alignToBox.x || 0) + (alignOptions.x || 0) +
10352
10400
  ((alignToBox.width || 0) - (alignOptions.width || 0)) *
@@ -10406,7 +10454,7 @@ class SVGElement {
10406
10454
  * Returns the SVGElement for chaining.
10407
10455
  */
10408
10456
  animate(params, options, complete) {
10409
- const animOptions = SVGElement_animObject(pick(options, this.renderer.globalAnimation, true)), deferTime = animOptions.defer;
10457
+ const animOptions = animObject((options ?? this.renderer.globalAnimation ?? true)), deferTime = animOptions.defer;
10410
10458
  // When the page is hidden save resources in the background by not
10411
10459
  // running animation at all (#9749).
10412
10460
  if (SVGElement_doc.hidden) {
@@ -10421,7 +10469,7 @@ class SVGElement {
10421
10469
  // If defer option is defined delay the animation #12901
10422
10470
  syncTimeout(() => {
10423
10471
  if (this.element) {
10424
- SVGElement_animate(this, params, animOptions);
10472
+ animate(this, params, animOptions);
10425
10473
  }
10426
10474
  }, deferTime);
10427
10475
  }
@@ -10595,7 +10643,7 @@ class SVGElement {
10595
10643
  // Unless .attr is from the animator update, stop current
10596
10644
  // running animation of this property
10597
10645
  if (!continueAnimation) {
10598
- SVGElement_stop(this, key);
10646
+ stop(this, key);
10599
10647
  }
10600
10648
  // Special handling of symbol attributes
10601
10649
  if (this.symbolName &&
@@ -10898,7 +10946,7 @@ class SVGElement {
10898
10946
  .split(','); // Ending comma
10899
10947
  i = v.length;
10900
10948
  while (i--) {
10901
- v[i] = '' + (pInt(v[i]) * pick(strokeWidth, NaN));
10949
+ v[i] = '' + (pInt(v[i]) * (strokeWidth ?? NaN));
10902
10950
  }
10903
10951
  value = v.join(',').replace(/NaN/g, 'none'); // #3226
10904
10952
  this.element.setAttribute('stroke-dasharray', value);
@@ -10915,7 +10963,7 @@ class SVGElement {
10915
10963
  // Remove events
10916
10964
  element.onclick = element.onmouseout = element.onmouseover =
10917
10965
  element.onmousemove = element.point = null;
10918
- SVGElement_stop(wrapper); // Stop running animations
10966
+ stop(wrapper); // Stop running animations
10919
10967
  if (wrapper.clipPath && ownerSVGElement) {
10920
10968
  const clipPath = wrapper.clipPath;
10921
10969
  // Look for existing references to this clipPath and remove them
@@ -11038,7 +11086,7 @@ class SVGElement {
11038
11086
  * The bounding box with `x`, `y`, `width` and `height` properties.
11039
11087
  */
11040
11088
  getBBox(reload, rot) {
11041
- const wrapper = this, { element, renderer, styles, textStr } = wrapper, { cache, cacheKeys } = renderer, isSVG = element.namespaceURI === wrapper.SVG_NS, rotation = pick(rot, wrapper.rotation, 0), fontSize = renderer.styledMode ? (element &&
11089
+ const wrapper = this, { element, renderer, styles, textStr } = wrapper, { cache, cacheKeys } = renderer, isSVG = element.namespaceURI === wrapper.SVG_NS, rotation = (rot ?? wrapper.rotation ?? 0), fontSize = renderer.styledMode ? (element &&
11042
11090
  SVGElement.prototype.getStyle.call(element, 'font-size')) : (styles.fontSize), cacheKey = this.getBBoxCacheKey([
11043
11091
  renderer.rootFontSize,
11044
11092
  this.textWidth, // #7874, also useHTML
@@ -11564,7 +11612,7 @@ class SVGElement {
11564
11612
  symbolAttr(hash) {
11565
11613
  const wrapper = this;
11566
11614
  SVGElement.symbolCustomAttribs.forEach(function (key) {
11567
- wrapper[key] = pick(hash[key], wrapper[key]);
11615
+ wrapper[key] = (hash[key] ?? wrapper[key]);
11568
11616
  });
11569
11617
  wrapper.attr({
11570
11618
  d: wrapper.renderer.symbols[wrapper.symbolName](wrapper.x, wrapper.y, wrapper.width, wrapper.height, wrapper)
@@ -11604,7 +11652,7 @@ class SVGElement {
11604
11652
  }
11605
11653
  // Replace text content and escape markup
11606
11654
  titleNode.textContent = replaceNested(// Scan #[73]
11607
- pick(value, ''), // #3276, #3895
11655
+ (value ?? ''), // #3276, #3895
11608
11656
  [/<[^>]*>/g, '']).replace(/&lt;/g, '<').replace(/&gt;/g, '>');
11609
11657
  }
11610
11658
  /**
@@ -12382,7 +12430,7 @@ class SVGLabel extends SVG_SVGElement {
12382
12430
  if ((this.textStr && this.bBox.width === 0 && this.bBox.height === 0) || this.rotation) {
12383
12431
  this.updateBoxSize();
12384
12432
  }
12385
- const { padding, height = 0, translateX = 0, translateY = 0, width = 0 } = this, paddingLeft = pick(this.paddingLeft, padding), rotation = rot ?? (this.rotation || 0);
12433
+ const { padding, height = 0, translateX = 0, translateY = 0, width = 0 } = this, paddingLeft = (this.paddingLeft ?? padding), rotation = rot ?? (this.rotation || 0);
12386
12434
  let bBox = {
12387
12435
  width,
12388
12436
  height,
@@ -12435,7 +12483,7 @@ class SVGLabel extends SVG_SVGElement {
12435
12483
  this.attr({
12436
12484
  // Alignment is available now (#3295, 0 not rendered if given
12437
12485
  // as a value)
12438
- text: pick(this.textStr, ''),
12486
+ text: (this.textStr ?? ''),
12439
12487
  x: this.x || 0,
12440
12488
  y: this.y || 0
12441
12489
  });
@@ -12591,8 +12639,8 @@ class SVGLabel extends SVG_SVGElement {
12591
12639
  /** @internal */
12592
12640
  getPaddedWidth() {
12593
12641
  const padding = this.padding;
12594
- const paddingLeft = pick(this.paddingLeft, padding);
12595
- const paddingRight = pick(this.paddingRight, padding);
12642
+ const paddingLeft = (this.paddingLeft ?? padding);
12643
+ const paddingRight = (this.paddingRight ?? padding);
12596
12644
  return ((this.widthSetting || this.bBox.width || 0) +
12597
12645
  paddingLeft +
12598
12646
  paddingRight);
@@ -12693,7 +12741,7 @@ function arc(cx, cy, w, h, options) {
12693
12741
  const arc = [];
12694
12742
  if (options) {
12695
12743
  let start = options.start || 0, end = options.end || 0;
12696
- const rx = pick(options.r, w), ry = pick(options.r, h || w),
12744
+ const rx = (options.r ?? w), ry = (options.r ?? (h || w)),
12697
12745
  // Subtract a small number to prevent cos and sin of start and end
12698
12746
  // from becoming equal on 360 arcs (#1561). See "Arc proximity"
12699
12747
  // tests at samples/unit-tests/svgrenderer/symbol/demo.js
@@ -12703,16 +12751,17 @@ function arc(cx, cy, w, h, options) {
12703
12751
  start = Math.PI / 2;
12704
12752
  end = Math.PI * 2.5 - proximity;
12705
12753
  }
12706
- const innerRadius = options.innerR, open = pick(options.open, fullCircle), cosStart = fullCircle ? 0 : Math.cos(start), sinStart = fullCircle ? 1 : Math.sin(start), cosEnd = fullCircle ? 0 : Math.cos(end), sinEnd = fullCircle ? 1 : Math.sin(end),
12754
+ const innerRadius = options.innerR, open = (options.open ?? fullCircle), cosStart = fullCircle ? 0 : Math.cos(start), sinStart = fullCircle ? 1 : Math.sin(start), cosEnd = fullCircle ? 0 : Math.cos(end), sinEnd = fullCircle ? 1 : Math.sin(end),
12707
12755
  // Proximity takes care of rounding errors around PI (#6971)
12708
- longArc = pick(options.longArc, end - start - Math.PI < proximity ? 0 : 1);
12756
+ longArc = options.longArc ??
12757
+ (end - start - Math.PI < proximity ? 0 : 1);
12709
12758
  let arcSegment = [
12710
12759
  'A', // ArcTo
12711
12760
  rx, // X radius
12712
12761
  ry, // Y radius
12713
12762
  0, // Slanting
12714
12763
  longArc, // Long or short arc
12715
- pick(options.clockwise, 1), // Clockwise
12764
+ (options.clockwise ?? 1), // Clockwise
12716
12765
  // Use a static pixel offset for full circle (#21701)
12717
12766
  cx + (fullCircle ? 0.001 : rx * cosEnd),
12718
12767
  cy + ry * sinEnd
@@ -13243,7 +13292,7 @@ class TextBuilder {
13243
13292
  * @internal
13244
13293
  */
13245
13294
  buildSVG() {
13246
- const wrapper = this.svgElement, textNode = wrapper.element, renderer = wrapper.renderer, textStr = pick(wrapper.textStr, '').toString(), hasMarkup = textStr.indexOf('<') !== -1, childNodes = textNode.childNodes, tempParent = !wrapper.added && renderer.box, regexMatchBreaks = /<br.*?>/g,
13295
+ const wrapper = this.svgElement, textNode = wrapper.element, renderer = wrapper.renderer, textStr = (wrapper.textStr ?? '').toString(), hasMarkup = textStr.indexOf('<') !== -1, childNodes = textNode.childNodes, tempParent = !wrapper.added && renderer.box, regexMatchBreaks = /<br.*?>/g,
13247
13296
  // The buildText code is quite heavy, so if we're not changing
13248
13297
  // something that affects the text, skip it (#6113).
13249
13298
  textCache = [
@@ -13827,7 +13876,7 @@ class SVGRenderer {
13827
13876
  this.url = this.getReferenceURL();
13828
13877
  // Add description
13829
13878
  const desc = this.createElement('desc').add();
13830
- desc.element.appendChild(SVGRenderer_doc.createTextNode('Created with Highcharts 13.0.0'));
13879
+ desc.element.appendChild(SVGRenderer_doc.createTextNode('Created with Highcharts 13.0.2'));
13831
13880
  this.defs = this.createElement('defs').add();
13832
13881
  this.allowHTML = allowHTML;
13833
13882
  this.forExport = forExport;
@@ -14613,7 +14662,7 @@ class SVGRenderer {
14613
14662
  this.attr('height')
14614
14663
  });
14615
14664
  },
14616
- duration: pick(animate, true) ? void 0 : 0
14665
+ duration: (animate ?? true) ? void 0 : 0
14617
14666
  });
14618
14667
  renderer.alignElements();
14619
14668
  }
@@ -14771,8 +14820,8 @@ class SVGRenderer {
14771
14820
  // The image width is not always the same as the symbol width. The
14772
14821
  // image may be centered within the symbol, as is the case when
14773
14822
  // image shapes are used as label backgrounds, for example in flags.
14774
- img.imgwidth = pick(options?.width, symbolSizes[imageSrc]?.width);
14775
- img.imgheight = pick(options?.height, symbolSizes[imageSrc]?.height);
14823
+ img.imgwidth = (options?.width ?? symbolSizes[imageSrc]?.width);
14824
+ img.imgheight = (options?.height ?? symbolSizes[imageSrc]?.height);
14776
14825
  /**
14777
14826
  * Set the size and position
14778
14827
  */
@@ -15618,7 +15667,11 @@ class HTMLElement extends SVG_SVGElement {
15618
15667
  .attr({
15619
15668
  text: str,
15620
15669
  x: Math.round(x),
15621
- y: Math.round(y)
15670
+ y: Math.round(y),
15671
+ // The namespace attribute is required for serialization
15672
+ // (export and side-by-side comparison), otherwise it
15673
+ // inherits the SVG namespace from foreignObject.
15674
+ xmlns: 'http://www.w3.org/1999/xhtml'
15622
15675
  });
15623
15676
  };
15624
15677
  }
@@ -15798,8 +15851,10 @@ class HTMLElement extends SVG_SVGElement {
15798
15851
  foreignObject.attr({
15799
15852
  x: x + (this.xCorr || 0),
15800
15853
  y: y + (this.yCorr || 0),
15801
- // Add 4px to avoid ellipsis, since the body adds 3 px right
15802
- // margin. We need one more because of rounding.
15854
+ // Add 4px to avoid ellipsis. In v13.0.0 we had a body inside
15855
+ // the foreignObject with a 3px right margin. This was later
15856
+ // removed, but we still need to add a few pixels to avoid
15857
+ // ellipsis.
15803
15858
  width: element.offsetWidth + 4,
15804
15859
  // Add 1px to account for subpixel bounding boxes
15805
15860
  height: element.offsetHeight + 1,
@@ -15819,25 +15874,16 @@ class HTMLElement extends SVG_SVGElement {
15819
15874
  this.cTT = currentTextTransform;
15820
15875
  }
15821
15876
  /**
15822
- * Add the element to a group wrapper. For HTML elements, a parallel div
15823
- * will be created for each ancestor SVG `g` element.
15877
+ * Add the element to the foreign object
15824
15878
  *
15825
15879
  * @internal
15826
15880
  */
15827
15881
  add(parentGroup) {
15828
- const { foreignObject, renderer } = this;
15882
+ const { foreignObject } = this;
15829
15883
  // Foreign object
15830
15884
  foreignObject.add(parentGroup);
15831
- super.add(
15832
- // Create a body inside the foreignObject
15833
- renderer.createElement('body')
15834
- .attr({ xmlns: 'http://www.w3.org/1999/xhtml' })
15835
- .css({
15836
- background: 'transparent',
15837
- // 3px is to avoid clipping on the right
15838
- margin: '0 3px 0 0'
15839
- })
15840
- .add(foreignObject));
15885
+ // Add this.element to the foreign objct
15886
+ super.add(foreignObject);
15841
15887
  if (this.alignOnAdd) {
15842
15888
  this.updateTransform();
15843
15889
  }
@@ -15872,10 +15918,20 @@ class HTMLElement extends SVG_SVGElement {
15872
15918
  this[key] = value;
15873
15919
  this.doTransform = true;
15874
15920
  }
15921
+ /**
15922
+ * Apply visibility/opacity to the foreignObject; the HTML element
15923
+ * ignores them.
15924
+ * @internal
15925
+ */
15926
+ visibilitySetter(value, key) {
15927
+ this.foreignObject.attr({ [key]: value });
15928
+ this[key] = value;
15929
+ }
15875
15930
  }
15876
15931
  // Some shared setters
15877
15932
  const proto = HTMLElement.prototype;
15878
15933
  proto.ySetter = proto.xSetter;
15934
+ proto.opacitySetter = proto.visibilitySetter;
15879
15935
  /* *
15880
15936
  *
15881
15937
  * Default Export
@@ -16416,6 +16472,7 @@ var AxisDefaults;
16416
16472
  */
16417
16473
  dateTimeLabelFormats: {
16418
16474
  /**
16475
+ * @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
16419
16476
  * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
16420
16477
  */
16421
16478
  millisecond: {
@@ -16441,6 +16498,7 @@ var AxisDefaults;
16441
16498
  range: false
16442
16499
  },
16443
16500
  /**
16501
+ * @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
16444
16502
  * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
16445
16503
  */
16446
16504
  second: {
@@ -16466,6 +16524,7 @@ var AxisDefaults;
16466
16524
  range: false
16467
16525
  },
16468
16526
  /**
16527
+ * @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
16469
16528
  * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
16470
16529
  */
16471
16530
  minute: {
@@ -16491,6 +16550,7 @@ var AxisDefaults;
16491
16550
  range: false
16492
16551
  },
16493
16552
  /**
16553
+ * @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
16494
16554
  * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
16495
16555
  */
16496
16556
  hour: {
@@ -16523,6 +16583,7 @@ var AxisDefaults;
16523
16583
  range: false
16524
16584
  },
16525
16585
  /**
16586
+ * @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
16526
16587
  * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
16527
16588
  */
16528
16589
  day: {
@@ -16545,6 +16606,7 @@ var AxisDefaults;
16545
16606
  boundary: '%[eb]'
16546
16607
  },
16547
16608
  /**
16609
+ * @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
16548
16610
  * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
16549
16611
  */
16550
16612
  week: {
@@ -16560,6 +16622,7 @@ var AxisDefaults;
16560
16622
  main: '%[eb]'
16561
16623
  },
16562
16624
  /**
16625
+ * @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
16563
16626
  * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
16564
16627
  */
16565
16628
  month: {
@@ -16582,6 +16645,7 @@ var AxisDefaults;
16582
16645
  boundary: void 0
16583
16646
  },
16584
16647
  /**
16648
+ * @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
16585
16649
  * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
16586
16650
  */
16587
16651
  year: {
@@ -17397,7 +17461,7 @@ var AxisDefaults;
17397
17461
  * @sample {highstock} stock/xaxis/offset/
17398
17462
  * Y axis offset by 70 px
17399
17463
  *
17400
- * @type {number}
17464
+ * @type {number|string}
17401
17465
  */
17402
17466
  offset: void 0,
17403
17467
  /**
@@ -19047,7 +19111,9 @@ var AxisDefaults;
19047
19111
  * @product highcharts
19048
19112
  */
19049
19113
  style: {
19050
- /** @type {Highcharts.ColorType} */
19114
+ /**
19115
+ * @type {Highcharts.ColorType}
19116
+ */
19051
19117
  color: 'var(--highcharts-neutral-color-100)',
19052
19118
  /**
19053
19119
  * @type {number|string}
@@ -19234,11 +19300,11 @@ class Tick {
19234
19300
  * @function Highcharts.Tick#addLabel
19235
19301
  */
19236
19302
  addLabel() {
19237
- const tick = this, axis = tick.axis, options = axis.options, chart = axis.chart, categories = axis.categories, log = axis.logarithmic, names = axis.names, pos = tick.pos, labelOptions = pick(tick.options?.labels, options.labels), tickPositions = axis.tickPositions, isFirst = pos === tickPositions[0], isLast = pos === tickPositions[tickPositions.length - 1], tickPositionInfo = tickPositions.info, boundary = tickPositionInfo?.boundaryTicks[pos], DTLFormats = options.dateTimeLabelFormats;
19303
+ const tick = this, axis = tick.axis, options = axis.options, chart = axis.chart, categories = axis.categories, log = axis.logarithmic, names = axis.names, pos = tick.pos, labelOptions = (tick.options?.labels ?? options.labels), tickPositions = axis.tickPositions, isFirst = pos === tickPositions[0], isLast = pos === tickPositions[tickPositions.length - 1], tickPositionInfo = tickPositions.info, boundary = tickPositionInfo?.boundaryTicks[pos], DTLFormats = options.dateTimeLabelFormats;
19238
19304
  let label = tick.label, dateTimeLabelFormat, dateTimeLabelFormats, i;
19239
19305
  // The context value
19240
19306
  let value = this.parameters.category || (categories ?
19241
- pick(categories[pos], names[pos], pos) :
19307
+ (categories[pos] ?? names[pos] ?? pos) :
19242
19308
  pos);
19243
19309
  if (log && isNumber(value)) {
19244
19310
  value = correctFloat(log.lin2log(value));
@@ -19485,7 +19551,7 @@ class Tick {
19485
19551
  labelOptions.y;
19486
19552
  }
19487
19553
  x = x +
19488
- pick(labelOptions.x, [0, 1, 0, -1][axis.side] * distance) +
19554
+ (labelOptions.x ?? [0, 1, 0, -1][axis.side] * distance) +
19489
19555
  labelOffsetCorrection +
19490
19556
  rotCorr.x -
19491
19557
  (tickmarkOffset && horiz ?
@@ -19540,7 +19606,7 @@ class Tick {
19540
19606
  * @function Highcharts.Tick#handleOverflow
19541
19607
  */
19542
19608
  handleOverflow(xy) {
19543
- const tick = this, axis = this.axis, labelOptions = axis.options.labels, pxPos = xy.x, chartWidth = axis.chart.chartWidth, spacing = axis.chart.spacing, leftBound = pick(axis.labelLeft, Math.min(axis.pos, spacing[3])), rightBound = pick(axis.labelRight, Math.max(!axis.isRadial ? axis.pos + axis.len : 0, chartWidth - spacing[1])), label = this.label, rotation = this.rotation, factor = getAlignFactor(axis.labelAlign || label.attr('align')), labelWidth = label.getBBox().width, slotWidth = axis.getSlotWidth(tick), xCorrection = factor, css = {};
19609
+ const tick = this, axis = this.axis, labelOptions = axis.options.labels, pxPos = xy.x, chartWidth = axis.chart.chartWidth, spacing = axis.chart.spacing, leftBound = axis.labelLeft ?? Math.min(axis.pos, spacing[3]), rightBound = (axis.labelRight ?? Math.max(!axis.isRadial ? axis.pos + axis.len : 0, chartWidth - spacing[1])), label = this.label, rotation = this.rotation, factor = getAlignFactor(axis.labelAlign || label.attr('align')), labelWidth = label.getBBox().width, slotWidth = axis.getSlotWidth(tick), xCorrection = factor, css = {};
19544
19610
  let modifiedSlotWidth = slotWidth, goRight = 1, leftPos, rightPos, textWidth;
19545
19611
  // Check if the label overshoots the chart spacing box. If it does, move
19546
19612
  // it. If it now overshoots the slotWidth, add ellipsis.
@@ -19607,9 +19673,8 @@ class Tick {
19607
19673
  * @param {number} [opacity]
19608
19674
  */
19609
19675
  render(index, old, opacity) {
19610
- const tick = this, axis = tick.axis, horiz = axis.horiz, pos = tick.pos, tickmarkOffset = pick(tick.tickmarkOffset, axis.tickmarkOffset), xy = tick.getPosition(horiz, pos, tickmarkOffset, old), x = xy.x, y = xy.y, axisStart = axis.pos, axisEnd = axisStart + axis.len, pxPos = horiz ? x : y;
19611
- const labelOpacity = pick(opacity, tick.label?.newOpacity, // #15528
19612
- 1);
19676
+ const tick = this, axis = tick.axis, horiz = axis.horiz, pos = tick.pos, tickmarkOffset = (tick.tickmarkOffset ?? axis.tickmarkOffset), xy = tick.getPosition(horiz, pos, tickmarkOffset, old), x = xy.x, y = xy.y, axisStart = axis.pos, axisEnd = axisStart + axis.len, pxPos = horiz ? x : y;
19677
+ const labelOpacity = (opacity ?? tick.label?.newOpacity ?? 1);
19613
19678
  // Anything that is not between `axis.pos` and `axis.pos + axis.length`
19614
19679
  // should not be visible (#20166). The `correctFloat` is for reversed
19615
19680
  // axes in Safari.
@@ -19637,7 +19702,7 @@ class Tick {
19637
19702
  * @param {number} opacity The opacity of the grid line
19638
19703
  */
19639
19704
  renderGridLine(old, opacity) {
19640
- const tick = this, axis = tick.axis, options = axis.options, attribs = {}, pos = tick.pos, type = tick.type, tickmarkOffset = pick(tick.tickmarkOffset, axis.tickmarkOffset), renderer = axis.chart.renderer;
19705
+ const tick = this, axis = tick.axis, options = axis.options, attribs = {}, pos = tick.pos, type = tick.type, tickmarkOffset = (tick.tickmarkOffset ?? axis.tickmarkOffset), renderer = axis.chart.renderer;
19641
19706
  let gridLine = tick.gridLine, gridLinePath, gridLineWidth = options.gridLineWidth, gridLineColor = options.gridLineColor, dashStyle = options.gridLineDashStyle;
19642
19707
  if (tick.type === 'minor') {
19643
19708
  gridLineWidth = options.minorGridLineWidth;
@@ -19693,7 +19758,7 @@ class Tick {
19693
19758
  * @param {number} opacity The opacity of the mark
19694
19759
  */
19695
19760
  renderMark(xy, opacity) {
19696
- const tick = this, axis = tick.axis, options = axis.options, renderer = axis.chart.renderer, type = tick.type, tickSize = axis.tickSize(type ? type + 'Tick' : 'tick'), x = xy.x, y = xy.y, tickWidth = pick(options[type !== 'minor' ? 'tickWidth' : 'minorTickWidth'], !type && axis.isXAxis ? 1 : 0), // X axis defaults to 1
19761
+ const tick = this, axis = tick.axis, options = axis.options, renderer = axis.chart.renderer, type = tick.type, tickSize = axis.tickSize(type ? type + 'Tick' : 'tick'), x = xy.x, y = xy.y, tickWidth = options[type !== 'minor' ? 'tickWidth' : 'minorTickWidth'] ?? (!type && axis.isXAxis ? 1 : 0), // X axis defaults to 1
19697
19762
  tickColor = options[type !== 'minor' ? 'tickColor' : 'minorTickColor'];
19698
19763
  let mark = tick.mark;
19699
19764
  const isNewMark = !mark;
@@ -19738,7 +19803,7 @@ class Tick {
19738
19803
  * @param {number} index The index of the tick
19739
19804
  */
19740
19805
  renderLabel(xy, old, opacity, index) {
19741
- const tick = this, axis = tick.axis, horiz = axis.horiz, options = axis.options, label = tick.label, labelOptions = options.labels, step = labelOptions.step, tickmarkOffset = pick(tick.tickmarkOffset, axis.tickmarkOffset), x = xy.x, y = xy.y;
19806
+ const tick = this, axis = tick.axis, horiz = axis.horiz, options = axis.options, label = tick.label, labelOptions = options.labels, step = labelOptions.step, tickmarkOffset = (tick.tickmarkOffset ?? axis.tickmarkOffset), x = xy.x, y = xy.y;
19742
19807
  let show = true;
19743
19808
  if (label && isNumber(x)) {
19744
19809
  label.xy = xy = tick.getLabelPosition(x, y, label, horiz, labelOptions, tickmarkOffset, index, step);
@@ -19830,7 +19895,6 @@ class Tick {
19830
19895
  * */
19831
19896
 
19832
19897
 
19833
- const { animObject: Axis_animObject } = AnimationUtilities;
19834
19898
 
19835
19899
  const { xAxis, yAxis } = Axis_AxisDefaults;
19836
19900
 
@@ -19844,12 +19908,7 @@ const { deg2rad: Axis_deg2rad } = Core_Globals;
19844
19908
 
19845
19909
 
19846
19910
 
19847
- const getNormalizedTickInterval = (axis, tickInterval) => normalizeTickInterval(tickInterval, void 0, void 0, pick(axis.options.allowDecimals,
19848
- // If the tick interval is greater than 0.5, avoid decimals, as
19849
- // linear axes are often used to render discrete values (#3363). If
19850
- // a tick amount is set, allow decimals by default, as it increases
19851
- // the chances for a good fit.
19852
- tickInterval < 0.5 || axis.tickAmount !== void 0), !!axis.tickAmount);
19911
+ const getNormalizedTickInterval = (axis, tickInterval) => normalizeTickInterval(tickInterval, void 0, void 0, (axis.options.allowDecimals ?? (tickInterval < 0.5 || axis.tickAmount !== void 0)), !!axis.tickAmount);
19853
19912
  extend(Axis_defaultOptions, { xAxis, yAxis: merge(xAxis, yAxis) });
19854
19913
  /* *
19855
19914
  *
@@ -19957,7 +20016,7 @@ class Axis {
19957
20016
  axis.coll = coll;
19958
20017
  fireEvent(this, 'init', { userOptions: userOptions });
19959
20018
  // Needed in setOptions
19960
- axis.opposite = pick(userOptions.opposite, axis.opposite);
20019
+ axis.opposite = (userOptions.opposite ?? axis.opposite);
19961
20020
  /**
19962
20021
  * The side on which the axis is rendered. 0 is top, 1 is right, 2
19963
20022
  * is bottom and 3 is left.
@@ -19965,10 +20024,9 @@ class Axis {
19965
20024
  * @name Highcharts.Axis#side
19966
20025
  * @type {number}
19967
20026
  */
19968
- axis.side = pick(userOptions.side, axis.side, (horiz ?
20027
+ axis.side = (userOptions.side ?? axis.side ?? (horiz ?
19969
20028
  (axis.opposite ? 0 : 2) : // Top : bottom
19970
- (axis.opposite ? 1 : 3)) // Right : left
19971
- );
20029
+ (axis.opposite ? 1 : 3)));
19972
20030
  /**
19973
20031
  * Current options for the axis after merge of defaults and user's
19974
20032
  * options.
@@ -19997,7 +20055,7 @@ class Axis {
19997
20055
  * @name Highcharts.Axis#reversed
19998
20056
  * @type {boolean}
19999
20057
  */
20000
- axis.reversed = pick(options.reversed, axis.reversed);
20058
+ axis.reversed = (options.reversed ?? axis.reversed);
20001
20059
  axis.visible = options.visible;
20002
20060
  axis.zoomEnabled = options.zoomEnabled;
20003
20061
  // Initial categories
@@ -20085,7 +20143,7 @@ class Axis {
20085
20143
  * @name Highcharts.Axis#crosshair
20086
20144
  * @type {boolean|Highcharts.AxisCrosshairOptions}
20087
20145
  */
20088
- const crosshair = pick(options.crosshair, splat(chart.options.tooltip.crosshairs)[isXAxis ? 0 : 1]);
20146
+ const crosshair = options.crosshair ?? splat(chart.options.tooltip.crosshairs)[isXAxis ? 0 : 1];
20089
20147
  axis.crosshair = crosshair === true ? {} : crosshair;
20090
20148
  // Register. Don't add it again on Axis.update().
20091
20149
  if (chart.axes.indexOf(axis) === -1) { //
@@ -20269,8 +20327,8 @@ class Axis {
20269
20327
  seriesDataMax = xExtremes.max;
20270
20328
  }
20271
20329
  if (xData.length) {
20272
- axis.dataMin = Math.min(pick(axis.dataMin, seriesDataMin), seriesDataMin);
20273
- axis.dataMax = Math.max(pick(axis.dataMax, seriesDataMax), seriesDataMax);
20330
+ axis.dataMin = Math.min((axis.dataMin ?? seriesDataMin), seriesDataMin);
20331
+ axis.dataMax = Math.max((axis.dataMax ?? seriesDataMax), seriesDataMax);
20274
20332
  }
20275
20333
  }
20276
20334
  // Get dataMin and dataMax for Y axes, as well as handle
@@ -20285,11 +20343,11 @@ class Axis {
20285
20343
  // doesn't have active y data, we continue with nulls
20286
20344
  if (isNumber(dataExtremes.dataMin)) {
20287
20345
  seriesDataMin = dataExtremes.dataMin;
20288
- axis.dataMin = Math.min(pick(axis.dataMin, seriesDataMin), seriesDataMin);
20346
+ axis.dataMin = Math.min((axis.dataMin ?? seriesDataMin), seriesDataMin);
20289
20347
  }
20290
20348
  if (isNumber(dataExtremes.dataMax)) {
20291
20349
  seriesDataMax = dataExtremes.dataMax;
20292
- axis.dataMax = Math.max(pick(axis.dataMax, seriesDataMax), seriesDataMax);
20350
+ axis.dataMax = Math.max((axis.dataMax ?? seriesDataMax), seriesDataMax);
20293
20351
  }
20294
20352
  // Adjust to threshold
20295
20353
  if (defined(threshold)) {
@@ -20444,7 +20502,7 @@ class Axis {
20444
20502
  translatedValue
20445
20503
  };
20446
20504
  fireEvent(this, 'getPlotLinePath', evt, function (e) {
20447
- translatedValue = pick(translatedValue, axis.translate(value, void 0, void 0, old));
20505
+ translatedValue = translatedValue ?? axis.translate(value, void 0, void 0, old);
20448
20506
  // Keep the translated value within sane bounds, and avoid Infinity
20449
20507
  // to fail the isNumber test (#7709).
20450
20508
  translatedValue = clamp(translatedValue, -1e9, 1e9);
@@ -20533,7 +20591,7 @@ class Axis {
20533
20591
  getMinorTickInterval() {
20534
20592
  const { minorTicks, minorTickInterval } = this.options;
20535
20593
  if (minorTicks === true) {
20536
- return pick(minorTickInterval, 'auto');
20594
+ return (minorTickInterval ?? 'auto');
20537
20595
  }
20538
20596
  if (minorTicks === false) {
20539
20597
  return;
@@ -20816,7 +20874,9 @@ class Axis {
20816
20874
  const seriesPointRange = hasCategories ?
20817
20875
  1 :
20818
20876
  (isXAxis ?
20819
- pick(series.options.pointRange, closestPointRange, 0) :
20877
+ (series.options.pointRange ??
20878
+ closestPointRange ??
20879
+ 0) :
20820
20880
  (axis.axisPointRange || 0)), // #2806
20821
20881
  pointPlacement = series.options.pointPlacement;
20822
20882
  pointRange = Math.max(pointRange, seriesPointRange);
@@ -20900,14 +20960,16 @@ class Axis {
20900
20960
  this.getTickAmount();
20901
20961
  }
20902
20962
  // Min or max set either by zooming/setExtremes or initial options
20903
- hardMin = pick(axis.userMin, time.parse(options.min));
20904
- hardMax = pick(axis.userMax, time.parse(options.max));
20963
+ hardMin = (axis.userMin ?? time.parse(options.min));
20964
+ hardMax = (axis.userMax ?? time.parse(options.max));
20905
20965
  // Linked axis gets the extremes from the parent axis
20906
20966
  if (linkedParent) {
20907
20967
  axis.linkedParent = linkedParent;
20908
20968
  linkedParentExtremes = linkedParent.getExtremes();
20909
- axis.min = pick(linkedParentExtremes.min, linkedParentExtremes.dataMin);
20910
- axis.max = pick(linkedParentExtremes.max, linkedParentExtremes.dataMax);
20969
+ axis.min =
20970
+ linkedParentExtremes.min ?? linkedParentExtremes.dataMin;
20971
+ axis.max =
20972
+ linkedParentExtremes.max ?? linkedParentExtremes.dataMax;
20911
20973
  if (this.type !== linkedParent.type) {
20912
20974
  // Can't link axes of different type
20913
20975
  error(11, true, chart);
@@ -20929,14 +20991,14 @@ class Axis {
20929
20991
  maxPadding = 0;
20930
20992
  }
20931
20993
  }
20932
- axis.min = pick(hardMin, thresholdMin, dataMin);
20933
- axis.max = pick(hardMax, thresholdMax, dataMax);
20994
+ axis.min = (hardMin ?? thresholdMin ?? dataMin);
20995
+ axis.max = (hardMax ?? thresholdMax ?? dataMax);
20934
20996
  }
20935
20997
  if (isNumber(axis.max) && isNumber(axis.min)) {
20936
20998
  if (logarithmic) {
20937
20999
  if (axis.positiveValuesOnly &&
20938
21000
  !secondPass &&
20939
- Math.min(axis.min, pick(dataMin, axis.min)) <= 0) { // #978
21001
+ Math.min(axis.min, (dataMin ?? axis.min)) <= 0) { // #978
20940
21002
  // Can't plot negative values on log axis
20941
21003
  error(10, true, chart);
20942
21004
  }
@@ -21042,16 +21104,13 @@ class Axis {
21042
21104
  axis.tickInterval = tickIntervalOption = linkedParent.tickInterval;
21043
21105
  }
21044
21106
  else {
21045
- axis.tickInterval = pick(tickIntervalOption, this.tickAmount ?
21107
+ axis.tickInterval = tickIntervalOption ?? (this.tickAmount ?
21046
21108
  range / Math.max(this.tickAmount - 1, 1) :
21047
- void 0,
21048
- // For categorized axis, 1 is default, for linear axis use
21049
- // tickPix
21050
- categories ?
21051
- 1 :
21052
- // Don't let it be more than the data range
21053
- range * tickPixelIntervalOption /
21054
- Math.max(axis.len, tickPixelIntervalOption));
21109
+ categories ?
21110
+ 1 :
21111
+ // Don't let it be more than the data range
21112
+ range * tickPixelIntervalOption /
21113
+ Math.max(axis.len, tickPixelIntervalOption));
21055
21114
  }
21056
21115
  // Now we're finished detecting min and max, crop and group series data.
21057
21116
  // This is in turn needed in order to find tick positions in ordinal
@@ -21081,12 +21140,9 @@ class Axis {
21081
21140
  }
21082
21141
  // Before normalizing the tick interval, handle minimum tick interval.
21083
21142
  // This applies only if tickInterval is not defined.
21084
- const minTickInterval = pick(options.minTickInterval,
21085
- // In datetime axes, don't go below the data interval, except when
21086
- // there are scatter-like series involved (#13369).
21087
- dateTime &&
21088
- !axis.series.some((s) => !s.sorted) ?
21089
- axis.closestPointRange : 0);
21143
+ const minTickInterval = options.minTickInterval ?? (dateTime && !axis.series.some((s) => !s.sorted) ?
21144
+ axis.closestPointRange :
21145
+ 0);
21090
21146
  if (!tickIntervalOption &&
21091
21147
  minTickInterval &&
21092
21148
  axis.tickInterval < minTickInterval) {
@@ -21416,7 +21472,7 @@ class Axis {
21416
21472
  * @function Highcharts.Axis#adjustTickAmount
21417
21473
  */
21418
21474
  adjustTickAmount() {
21419
- const axis = this, { finalTickAmt, max, min, options, tickPositions, tickAmount, thresholdAlignment } = axis, currentTickAmount = tickPositions?.length, threshold = pick(axis.threshold, axis.softThreshold ? 0 : null);
21475
+ const axis = this, { finalTickAmt, max, min, options, tickPositions, tickAmount, thresholdAlignment } = axis, currentTickAmount = tickPositions?.length, threshold = axis.threshold ?? (axis.softThreshold ? 0 : null);
21420
21476
  let len, i, tickInterval = axis.tickInterval, thresholdTickIndex;
21421
21477
  const
21422
21478
  // Extend the tickPositions by appending a position
@@ -21652,7 +21708,8 @@ class Axis {
21652
21708
  offsets = options.offsets || [0, 0, 0, 0], horiz = this.horiz,
21653
21709
  // Check for percentage based input values. Rounding fixes problems
21654
21710
  // with column overflow and plot line filtering (#4898, #4899)
21655
- width = this.width = Math.round(relativeLength(pick(options.width, chart.plotWidth - offsets[3] + offsets[1]), chart.plotWidth)), height = this.height = Math.round(relativeLength(pick(options.height, chart.plotHeight - offsets[0] + offsets[2]), chart.plotHeight)), top = this.top = Math.round(relativeLength(pick(options.top, chart.plotTop + offsets[0]), chart.plotHeight, chart.plotTop)), left = this.left = Math.round(relativeLength(pick(options.left, chart.plotLeft + offsets[3]), chart.plotWidth, chart.plotLeft));
21711
+ width = this.width = Math.round(relativeLength((options.width ?? chart.plotWidth - offsets[3] + offsets[1]), chart.plotWidth)), height = this.height = Math.round(relativeLength((options.height ??
21712
+ chart.plotHeight - offsets[0] + offsets[2]), chart.plotHeight)), top = this.top = Math.round(relativeLength((options.top ?? chart.plotTop + offsets[0]), chart.plotHeight, chart.plotTop)), left = this.left = Math.round(relativeLength((options.left ?? chart.plotLeft + offsets[3]), chart.plotWidth, chart.plotLeft));
21656
21713
  // Expose basic values to use in Series object and navigator
21657
21714
  this.bottom = chart.chartHeight - height - top;
21658
21715
  this.right = chart.chartWidth - width - left;
@@ -21763,9 +21820,7 @@ class Axis {
21763
21820
  * An array of tickLength and tickWidth
21764
21821
  */
21765
21822
  tickSize(prefix) {
21766
- const options = this.options, tickWidth = pick(options[prefix === 'tick' ? 'tickWidth' : 'minorTickWidth'],
21767
- // Default to 1 on linear and datetime X axes
21768
- prefix === 'tick' && this.isXAxis && !this.categories ? 1 : 0);
21823
+ const options = this.options, tickWidth = options[prefix === 'tick' ? 'tickWidth' : 'minorTickWidth'] ?? (prefix === 'tick' && this.isXAxis && !this.categories ? 1 : 0);
21769
21824
  let tickLength = options[prefix === 'tick' ? 'tickLength' : 'minorTickLength'], tickSize;
21770
21825
  if (tickWidth && tickLength) {
21771
21826
  // Negate the length
@@ -21852,7 +21907,7 @@ class Axis {
21852
21907
  newTickInterval = getStep(lineHeight * 0.75);
21853
21908
  }
21854
21909
  this.autoRotation = autoRotation;
21855
- this.labelRotation = pick(rotation, isNumber(rotationOption) ? rotationOption : 0);
21910
+ this.labelRotation = rotation ?? (isNumber(rotationOption) ? rotationOption : 0);
21856
21911
  return labelOptions.step ? tickInterval : newTickInterval;
21857
21912
  }
21858
21913
  /**
@@ -22204,7 +22259,7 @@ class Axis {
22204
22259
  titleOffsetOption = axisTitleOptions.offset;
22205
22260
  titleMargin = defined(titleOffsetOption) ?
22206
22261
  0 :
22207
- pick(axisTitleOptions.margin, horiz ? 5 : 10);
22262
+ axisTitleOptions.margin ?? (horiz ? 5 : 10);
22208
22263
  }
22209
22264
  }
22210
22265
  // Render the axis line
@@ -22436,7 +22491,7 @@ class Axis {
22436
22491
  * @emits Highcharts.Axis#event:afterRender
22437
22492
  */
22438
22493
  render() {
22439
- const axis = this, chart = axis.chart, log = axis.logarithmic, renderer = chart.renderer, options = axis.options, isLinked = axis.isLinked, tickPositions = axis.tickPositions, axisTitle = axis.axisTitle, ticks = axis.ticks, minorTicks = axis.minorTicks, alternateBands = axis.alternateBands, stackLabelOptions = options.stackLabels, alternateGridColor = options.alternateGridColor, crossing = options.crossing, tickmarkOffset = axis.tickmarkOffset, axisLine = axis.axisLine, showAxis = axis.showAxis, animation = Axis_animObject(renderer.globalAnimation);
22494
+ const axis = this, chart = axis.chart, log = axis.logarithmic, renderer = chart.renderer, options = axis.options, isLinked = axis.isLinked, tickPositions = axis.tickPositions, axisTitle = axis.axisTitle, ticks = axis.ticks, minorTicks = axis.minorTicks, alternateBands = axis.alternateBands, stackLabelOptions = options.stackLabels, alternateGridColor = options.alternateGridColor, crossing = options.crossing, tickmarkOffset = axis.tickmarkOffset, axisLine = axis.axisLine, showAxis = axis.showAxis, animation = animObject(renderer.globalAnimation);
22440
22495
  let from, to;
22441
22496
  // Reset
22442
22497
  axis.labelEdge.length = 0;
@@ -22715,9 +22770,9 @@ class Axis {
22715
22770
  }
22716
22771
  else if (defined(point)) {
22717
22772
  // #3834
22718
- pos = pick(this.coll !== 'colorAxis' ?
22719
- point.crosshairPos : // 3D axis extension
22720
- null, this.isXAxis ?
22773
+ pos = (this.coll !== 'colorAxis' ?
22774
+ point.crosshairPos :
22775
+ null) ?? (this.isXAxis ?
22721
22776
  point.plotX :
22722
22777
  this.len - point.plotY);
22723
22778
  }
@@ -22726,7 +22781,7 @@ class Axis {
22726
22781
  // Value, only used on radial
22727
22782
  value: point && (this.isXAxis ?
22728
22783
  point.x :
22729
- pick(point.stackY, point.y)),
22784
+ (point.stackY ?? point.y ?? void 0)),
22730
22785
  translatedValue: pos
22731
22786
  };
22732
22787
  if (chart.polar) {
@@ -22759,7 +22814,7 @@ class Axis {
22759
22814
  (categorized ? 'category ' : 'thin ') +
22760
22815
  (options.className || ''))
22761
22816
  .attr({
22762
- zIndex: pick(options.zIndex, 2)
22817
+ zIndex: (options.zIndex ?? 2)
22763
22818
  })
22764
22819
  .clip(options.clip === false ?
22765
22820
  void 0 :
@@ -22774,7 +22829,7 @@ class Axis {
22774
22829
  // eslint-disable-next-line max-len
22775
22830
  'var(--highcharts-highlight-color-20)').setOpacity(0.25).get() :
22776
22831
  'var(--highcharts-neutral-color-20)'),
22777
- 'stroke-width': pick(options.width, 1)
22832
+ 'stroke-width': (options.width ?? 1)
22778
22833
  }).css({
22779
22834
  'pointer-events': 'none'
22780
22835
  });
@@ -22787,7 +22842,7 @@ class Axis {
22787
22842
  }
22788
22843
  cross
22789
22844
  .show()
22790
- .animate({ d: path }, Axis_animObject(options?.animation));
22845
+ .animate({ d: path }, animObject(options?.animation));
22791
22846
  if (categorized && !options.width) {
22792
22847
  cross.attr({
22793
22848
  'stroke-width': this.transA
@@ -22840,7 +22895,7 @@ class Axis {
22840
22895
  this.destroy(true);
22841
22896
  this.init(chart, options);
22842
22897
  chart.isDirtyBox = true;
22843
- if (pick(redraw, true)) {
22898
+ if (redraw ?? true) {
22844
22899
  chart.redraw();
22845
22900
  }
22846
22901
  }
@@ -22870,7 +22925,7 @@ class Axis {
22870
22925
  chart.orderItems(coll);
22871
22926
  this.destroy();
22872
22927
  chart.isDirtyBox = true;
22873
- if (pick(redraw, true)) {
22928
+ if (redraw ?? true) {
22874
22929
  chart.redraw();
22875
22930
  }
22876
22931
  }
@@ -23526,8 +23581,10 @@ var LogarithmicAxis;
23526
23581
  tickIntervalOption, tickPixelIntervalOption = options.tickPixelInterval / (minor ? 5 : 1), totalPixelLength = minor ?
23527
23582
  axisLength / axis.tickPositions.length :
23528
23583
  axisLength;
23529
- interval = pick(filteredTickIntervalOption, log.minorAutoInterval, (realMax - realMin) *
23530
- tickPixelIntervalOption / (totalPixelLength || 1));
23584
+ interval = filteredTickIntervalOption ??
23585
+ log.minorAutoInterval ??
23586
+ (realMax - realMin) * tickPixelIntervalOption /
23587
+ (totalPixelLength || 1);
23531
23588
  interval = normalizeTickInterval(interval);
23532
23589
  positions = axis.getLinearTickPositions(interval, realMin, realMax).map(log.log2lin);
23533
23590
  if (!minor) {
@@ -23956,7 +24013,8 @@ class PlotLineOrBand {
23956
24013
  if (!chart.styledMode) {
23957
24014
  if (isLine) {
23958
24015
  attribs.stroke = color || 'var(--highcharts-neutral-color-40)';
23959
- attribs['stroke-width'] = pick(options.width, 1);
24016
+ attribs['stroke-width'] =
24017
+ options.width ?? 1;
23960
24018
  if (options.dashStyle) {
23961
24019
  attribs.dashstyle = options.dashStyle;
23962
24020
  }
@@ -24825,7 +24883,6 @@ class PlotLineOrBand {
24825
24883
  * */
24826
24884
 
24827
24885
 
24828
- const { animObject: Tooltip_animObject } = AnimationUtilities;
24829
24886
 
24830
24887
  const { format: Tooltip_format } = Core_Templating;
24831
24888
 
@@ -25089,7 +25146,8 @@ class Tooltip {
25089
25146
  'highcharts-label',
25090
25147
  isHeader && 'highcharts-tooltip-header',
25091
25148
  isSplit ? 'highcharts-tooltip-box' : 'highcharts-tooltip',
25092
- !isHeader && 'highcharts-color-' + pick(point.colorIndex, series.colorIndex),
25149
+ !isHeader &&
25150
+ 'highcharts-color-' + (point.colorIndex ?? series.colorIndex),
25093
25151
  seriesOptions?.className
25094
25152
  ].filter(isString).join(' ');
25095
25153
  }
@@ -25274,7 +25332,8 @@ class Tooltip {
25274
25332
  }
25275
25333
  // The far side is right or bottom
25276
25334
  const preferFarSide = !this.followPointer &&
25277
- pick(point.ttBelow, polar ? false : !inverted === flipped), // #4984
25335
+ (point.ttBelow ??
25336
+ (polar ? false : !inverted === flipped)), // #4984
25278
25337
  /*
25279
25338
  * Handle the preferred dimension. When the preferred dimension is
25280
25339
  * tooltip on top or bottom of the point, it will look for space
@@ -25401,7 +25460,7 @@ class Tooltip {
25401
25460
  const tooltip = this;
25402
25461
  // Disallow duplicate timers (#1728, #1766)
25403
25462
  clearTimeouts(this);
25404
- delay = pick(delay, this.options.hideDelay);
25463
+ delay = (delay ?? this.options.hideDelay);
25405
25464
  if (!this.isHidden) {
25406
25465
  this.hideTimer = syncTimeout(function () {
25407
25466
  const label = tooltip.getLabel();
@@ -25504,7 +25563,9 @@ class Tooltip {
25504
25563
  * Split tooltip does not support outside in the first iteration. Should
25505
25564
  * not be too complicated to implement.
25506
25565
  */
25507
- this.outside = pick(options.outside, Boolean(chart.scrollablePixelsX || chart.scrollablePixelsY));
25566
+ this.outside =
25567
+ options.outside ??
25568
+ Boolean(chart.scrollablePixelsX || chart.scrollablePixelsY);
25508
25569
  }
25509
25570
  shouldStickOnContact(pointerEvent) {
25510
25571
  return !!(!this.followPointer &&
@@ -25526,7 +25587,7 @@ class Tooltip {
25526
25587
  * @param {number} anchorY
25527
25588
  */
25528
25589
  move(x, y, anchorX, anchorY) {
25529
- const { followPointer, options } = this, animation = Tooltip_animObject(!followPointer &&
25590
+ const { followPointer, options } = this, animation = animObject(!followPointer &&
25530
25591
  !this.isHidden &&
25531
25592
  !options.fixed &&
25532
25593
  options.animation), skipAnchor = followPointer || (this.len || 0) > 1, attr = { x, y };
@@ -25584,7 +25645,7 @@ class Tooltip {
25584
25645
  point.points = void 0;
25585
25646
  // Register the current series
25586
25647
  const currentSeries = point.series;
25587
- this.distance = pick(currentSeries.tooltipOptions.distance, 16);
25648
+ this.distance = (currentSeries.tooltipOptions.distance ?? 16);
25588
25649
  // Update the inner HTML
25589
25650
  if (text === false) {
25590
25651
  this.hide();
@@ -25857,7 +25918,7 @@ class Tooltip {
25857
25918
  anchorY,
25858
25919
  boxWidth,
25859
25920
  point,
25860
- rank: pick(boxPosition.rank, isHeader ? 1 : 0),
25921
+ rank: boxPosition.rank ?? (isHeader ? 1 : 0),
25861
25922
  size,
25862
25923
  target: boxPosition.y,
25863
25924
  tt,
@@ -26274,7 +26335,6 @@ class Tooltip {
26274
26335
 
26275
26336
 
26276
26337
 
26277
- const { animObject: Point_animObject } = AnimationUtilities;
26278
26338
 
26279
26339
  const { defaultOptions: Point_defaultOptions } = Defaults;
26280
26340
 
@@ -26614,10 +26674,15 @@ class Point {
26614
26674
  *
26615
26675
  * @internal
26616
26676
  * @function Highcharts.Point#destroy
26677
+ *
26678
+ * @param {boolean} [sync]
26679
+ * Whether to destroy the point synchronously. Used internally from
26680
+ * series.destroy, where condemned points may cause animation errors
26681
+ * (#24976).
26617
26682
  */
26618
- destroy() {
26619
- if (!this.condemned) {
26620
- const point = this, series = point.series, chart = series.chart, hoverPoints = chart.hoverPoints, globalAnimation = point.series.chart.renderer.globalAnimation, { duration } = Point_animObject(globalAnimation);
26683
+ destroy(sync) {
26684
+ if (!this.destroyed && !this.condemned) {
26685
+ const point = this, series = point.series, chart = series.chart, hoverPoints = chart.hoverPoints, globalAnimation = point.series.chart.renderer.globalAnimation, { duration } = animObject(globalAnimation);
26621
26686
  /**
26622
26687
  * Allow to call after animation.
26623
26688
  * @internal
@@ -26634,6 +26699,7 @@ class Point {
26634
26699
  for (const prop in point) { // eslint-disable-line guard-for-in
26635
26700
  delete point[prop];
26636
26701
  }
26702
+ this.destroyed = true;
26637
26703
  };
26638
26704
  if (point.legendItem) {
26639
26705
  // Pies have legend items
@@ -26650,7 +26716,7 @@ class Point {
26650
26716
  point.onMouseOut();
26651
26717
  }
26652
26718
  // Remove properties after animation
26653
- if (duration && series.condemnedPoints) {
26719
+ if (duration && !sync && series.condemnedPoints) {
26654
26720
  series.condemnedPoints.push(this);
26655
26721
  this.graphic?.addClass('highcharts-point-condemned');
26656
26722
  setTimeout(destroyPoint, duration);
@@ -26773,14 +26839,15 @@ class Point {
26773
26839
  *
26774
26840
  * @function Highcharts.Point#getZone
26775
26841
  *
26776
- * @return {Highcharts.SeriesZonesOptionsObject}
26777
- * The zone item.
26842
+ * @return {Highcharts.SeriesZonesOptionsObject|undefined}
26843
+ * The zone item, or `undefined` if the series has no zones.
26778
26844
  */
26779
26845
  getZone() {
26780
26846
  const series = this.series, zones = series.zones, zoneAxis = series.zoneAxis || 'y';
26781
26847
  let zone, i = 0;
26782
26848
  zone = zones[i];
26783
- while (this[zoneAxis] >= zone.value) {
26849
+ while (i < zones.length &&
26850
+ this[zoneAxis] >= zone.value) {
26784
26851
  zone = zones[++i];
26785
26852
  }
26786
26853
  // For resetting or reusing the point (#8100)
@@ -27196,7 +27263,7 @@ class Point {
27196
27263
  */
27197
27264
  select(selected, accumulate) {
27198
27265
  const point = this, series = point.series, chart = series.chart;
27199
- selected = pick(selected, !point.selected);
27266
+ selected = (selected ?? !point.selected);
27200
27267
  this.selectedStaging = selected;
27201
27268
  // Fire the event with the default handler
27202
27269
  point.firePointEvent(selected ? 'select' : 'unselect', { accumulate: accumulate }, function () {
@@ -27320,9 +27387,8 @@ class Point {
27320
27387
  * @emits Highcharts.Point#event:afterSetState
27321
27388
  */
27322
27389
  setState(state, move) {
27323
- const point = this, series = point.series, previousState = point.state, stateOptions = (series.options.states[state || 'normal'] ||
27324
- {}), markerOptions = (Point_defaultOptions.plotOptions[series.type].marker &&
27325
- series.options.marker), normalDisabled = (markerOptions && markerOptions.enabled === false), markerStateOptions = markerOptions?.states?.[state || 'normal'] ||
27390
+ const point = this, series = point.series, previousState = point.state, stateOptions = series.options.states?.[state || 'normal'] || {}, markerOptions = (Point_defaultOptions.plotOptions?.[series.type]?.marker &&
27391
+ series.options.marker), normalDisabled = markerOptions?.enabled === false, markerStateOptions = markerOptions?.states?.[state || 'normal'] ||
27326
27392
  {}, stateDisabled = markerStateOptions.enabled === false, pointMarker = point.marker || {}, chart = series.chart, hasMarkers = (markerOptions && series.markerAttribs);
27327
27393
  let halo = series.halo, markerAttribs, pointAttribs, pointAttribsAnimation, stateMarkerGraphic = series.stateMarkerGraphic, newSymbol;
27328
27394
  state = state || ''; // Empty string
@@ -27335,13 +27401,10 @@ class Point {
27335
27401
  (stateOptions.enabled === false) ||
27336
27402
  // General point marker's state options is disabled
27337
27403
  (state && (stateDisabled ||
27338
- (normalDisabled &&
27339
- markerStateOptions.enabled === false))) ||
27404
+ (normalDisabled && markerStateOptions.enabled === false))) ||
27340
27405
  // Individual point marker's state options is disabled
27341
27406
  (state &&
27342
- pointMarker.states &&
27343
- pointMarker.states[state] &&
27344
- pointMarker.states[state].enabled === false) // #1610
27407
+ pointMarker.states?.[state]?.enabled === false) // #1610
27345
27408
  ) {
27346
27409
  return;
27347
27410
  }
@@ -27360,7 +27423,8 @@ class Point {
27360
27423
  }
27361
27424
  if (!chart.styledMode) {
27362
27425
  pointAttribs = series.pointAttribs(point, state);
27363
- pointAttribsAnimation = pick(chart.options.chart.animation, stateOptions.animation);
27426
+ pointAttribsAnimation = (chart.options.chart.animation ??
27427
+ stateOptions.animation);
27364
27428
  const opacity = pointAttribs.opacity;
27365
27429
  // Some inactive points (e.g. slices in pie) should apply
27366
27430
  // opacity also for their labels
@@ -27378,9 +27442,11 @@ class Point {
27378
27442
  point.graphic.animate(pointAttribs, pointAttribsAnimation);
27379
27443
  }
27380
27444
  if (markerAttribs) {
27381
- point.graphic.animate(markerAttribs, pick(
27445
+ point.graphic.animate(markerAttribs, (
27382
27446
  // Turn off globally:
27383
- chart.options.chart.animation, markerStateOptions.animation, markerOptions.animation));
27447
+ chart.options.chart.animation ??
27448
+ markerStateOptions.animation ??
27449
+ markerOptions.animation));
27384
27450
  }
27385
27451
  // Zooming in from a range with no markers to a range with markers
27386
27452
  if (stateMarkerGraphic) {
@@ -27429,10 +27495,12 @@ class Point {
27429
27495
  }
27430
27496
  }
27431
27497
  // Show me your halo
27432
- const haloOptions = stateOptions.halo;
27498
+ const haloOptions = isObject(stateOptions.halo) ?
27499
+ stateOptions.halo :
27500
+ {};
27433
27501
  const markerGraphic = (point.graphic || stateMarkerGraphic);
27434
27502
  const markerVisibility = markerGraphic?.visibility || 'inherit';
27435
- if (haloOptions?.size &&
27503
+ if (haloOptions.size &&
27436
27504
  markerGraphic &&
27437
27505
  markerVisibility !== 'hidden' &&
27438
27506
  !point.isCluster) {
@@ -27446,7 +27514,7 @@ class Point {
27446
27514
  });
27447
27515
  halo.attr({
27448
27516
  'class': 'highcharts-halo highcharts-color-' +
27449
- pick(point.colorIndex, series.colorIndex) +
27517
+ (point.colorIndex ?? series.colorIndex) +
27450
27518
  (point.className ? ' ' + point.className : ''),
27451
27519
  'visibility': markerVisibility,
27452
27520
  'zIndex': -1 // #4929, #8276
@@ -27962,6 +28030,11 @@ class Pointer {
27962
28030
  }
27963
28031
  }
27964
28032
  }
28033
+ // Run a final transform with a drop trigger to display the reset
28034
+ // zoom button after a pinch gesture (#22128)
28035
+ if (e?.type === 'touchend' && this.hasDragged) {
28036
+ chart.transform({ trigger: 'drop' });
28037
+ }
27965
28038
  if (redraw) {
27966
28039
  chart.redraw();
27967
28040
  }
@@ -28174,7 +28247,7 @@ class Pointer {
28174
28247
  const hoverPoints = [], useExisting = !!(isDirectTouch && existingHoverPoint), filter = function (s) {
28175
28248
  return (s.visible &&
28176
28249
  !(!shared && s.directTouch) && // #3821
28177
- pick(s.options.enableMouseTracking, true));
28250
+ (s.options.enableMouseTracking ?? true));
28178
28251
  };
28179
28252
  let hoverSeries = existingHoverSeries,
28180
28253
  // Which series to look in for the hover point
@@ -28360,8 +28433,8 @@ class Pointer {
28360
28433
  const ePos = (touches ?
28361
28434
  touches.length ?
28362
28435
  touches.item(0) :
28363
- (pick(// #13534
28364
- touches.changedTouches, e.changedTouches))[0] :
28436
+ (touches.changedTouches ??
28437
+ e.changedTouches)[0] :
28365
28438
  e);
28366
28439
  // Get mouse position
28367
28440
  if (!chartPosition) {
@@ -28435,7 +28508,7 @@ class Pointer {
28435
28508
  * @function Highcharts.Pointer#onContainerMouseLeave
28436
28509
  */
28437
28510
  onContainerMouseLeave(e) {
28438
- const { pointer } = Pointer_charts[pick(Pointer.hoverChartIndex, -1)] || {};
28511
+ const { pointer } = Pointer_charts[(Pointer.hoverChartIndex ?? -1)] || {};
28439
28512
  e = this.normalize(e);
28440
28513
  this.onContainerMouseMove(e);
28441
28514
  // #4886, MS Touch end fires mouseleave but with no related target
@@ -28535,7 +28608,7 @@ class Pointer {
28535
28608
  if (e?.touches && this.hasPinchMoved) {
28536
28609
  e?.preventDefault?.();
28537
28610
  }
28538
- Pointer_charts[pick(Pointer.hoverChartIndex, -1)]
28611
+ Pointer_charts[(Pointer.hoverChartIndex ?? -1)]
28539
28612
  ?.pointer
28540
28613
  ?.drop(e);
28541
28614
  }
@@ -28605,6 +28678,9 @@ class Pointer {
28605
28678
  from: boxFromTouches(lastTouches),
28606
28679
  trigger: e.type
28607
28680
  });
28681
+ // Record a truthy value in order to trigger the final transform
28682
+ // in the drop function
28683
+ pointer.hasDragged = 1;
28608
28684
  });
28609
28685
  if (pointer.res) {
28610
28686
  pointer.res = false;
@@ -29039,7 +29115,7 @@ class Pointer {
29039
29115
  */
29040
29116
  setHoverChartIndex(e) {
29041
29117
  const chart = this.chart;
29042
- const hoverChart = Core_Globals.charts[pick(Pointer.hoverChartIndex, -1)];
29118
+ const hoverChart = Core_Globals.charts[(Pointer.hoverChartIndex ?? -1)];
29043
29119
  if (hoverChart &&
29044
29120
  hoverChart !== chart) {
29045
29121
  const relatedTargetObj = { relatedTarget: chart.container };
@@ -29085,7 +29161,7 @@ class Pointer {
29085
29161
  Math.pow(pinchDown[0].chartY - e.chartY, 2)) >= 16 :
29086
29162
  false;
29087
29163
  }
29088
- if (pick(hasMoved, true)) {
29164
+ if (hasMoved ?? true) {
29089
29165
  this.pinch(e);
29090
29166
  }
29091
29167
  }
@@ -29096,7 +29172,9 @@ class Pointer {
29096
29172
  // If inside, capture touch-drag and display tooltip. If not inside,
29097
29173
  // allow dragging the finger to scroll the page
29098
29174
  if ((chart.tooltip?.options.followTouchMove ?? true) &&
29099
- isInside) {
29175
+ isInside &&
29176
+ e.type === 'touchmove' &&
29177
+ !(chart.scrollablePixelsX || chart.scrollablePixelsY)) {
29100
29178
  e.preventDefault();
29101
29179
  }
29102
29180
  }
@@ -29126,7 +29204,7 @@ class Pointer {
29126
29204
  let zoomType = chart.zooming.type || '', zoomX, zoomY;
29127
29205
  // Look for the pinchType option
29128
29206
  if (/touch/.test(e.type)) {
29129
- zoomType = pick(chart.zooming.pinchType, zoomType);
29207
+ zoomType = (chart.zooming.pinchType ?? zoomType);
29130
29208
  }
29131
29209
  this.zoomX = zoomX = /x/.test(zoomType);
29132
29210
  this.zoomY = zoomY = /y/.test(zoomType);
@@ -29568,7 +29646,7 @@ class DataTableCore {
29568
29646
  * Fetches the given column by the canonical column ID. Simplified version
29569
29647
  * of the full `DataTable.getRow` method, always returning by reference.
29570
29648
  *
29571
- * @function Highcharts.DataTable#setColumn
29649
+ * @function Highcharts.DataTable#getColumn
29572
29650
  *
29573
29651
  * @param {string} columnId
29574
29652
  * ID of the column to get.
@@ -29900,7 +29978,7 @@ var LegendSymbol;
29900
29978
  // Draw the marker
29901
29979
  if (markerOptions && markerOptions.enabled !== false && symbolWidth) {
29902
29980
  // Do not allow the marker to be larger than the symbolHeight
29903
- let radius = Math.min(pick(markerOptions.radius, generalRadius), generalRadius);
29981
+ let radius = Math.min((markerOptions.radius ?? generalRadius), generalRadius);
29904
29982
  // Restrict symbol markers size
29905
29983
  if (symbol.indexOf('url') === 0) {
29906
29984
  markerOptions = merge(markerOptions, {
@@ -30304,6 +30382,10 @@ const seriesDefaults = {
30304
30382
  * ```
30305
30383
  *
30306
30384
  * @type {Highcharts.DataMappingOptionsObject}
30385
+ * @sample highcharts/datatable/datamapping
30386
+ * Basic data mapping
30387
+ * @sample highcharts/datatable/datamapping-dynamic
30388
+ * Data mapping with dynamic updates
30307
30389
  * @sample {highcharts} highcharts/datatable/series-datatable-multiple
30308
30390
  * Series with two data tables
30309
30391
  * @sample {highcharts} highcharts/datatable/nested-keys
@@ -30314,6 +30396,29 @@ const seriesDefaults = {
30314
30396
  * @since 13.0.0
30315
30397
  * @apioption plotOptions.series.dataMapping
30316
30398
  */
30399
+ /**
30400
+ * Options for a specific series-level data table or an array of data
30401
+ * tables. The `dataTable` option can be either a configuration object or an
30402
+ * instance of the `DataTable` class. If a `DataTable` instance is passed,
30403
+ * it will be used directly. If a configuration object or an array is
30404
+ * passed, a new `DataTable` instance will be created based on the provided
30405
+ * configuration.
30406
+ *
30407
+ * @type {Highcharts.DataTable|Highcharts.DataTableOptionsObject|Array<Highcharts.DataTable|Highcharts.DataTableOptionsObject>}
30408
+ * @sample {highcharts} highcharts/datatable/series-datatable/
30409
+ * Series with one data table each
30410
+ * @sample {highcharts} highcharts/datatable/series-datatable-multiple/
30411
+ * Series with two data tables
30412
+ * @sample {highstock} stock/datatable/series-datatable/
30413
+ * Series with one data table each
30414
+ * @sample {highstock} stock/datatable/series-datatable-multiple/
30415
+ * Series with two data tables
30416
+ * @sample {highmaps} maps/datatable/series-datatable
30417
+ * Series-level data table
30418
+ *
30419
+ * @since 13.0.0
30420
+ * @apioption plotOptions.series.dataTable
30421
+ */
30317
30422
  /**
30318
30423
  * Enable or disable the mouse tracking for a specific series. This
30319
30424
  * includes point tooltips and click events on graphs and points. For
@@ -31197,6 +31302,7 @@ const seriesDefaults = {
31197
31302
  * `series.allowPointSelect` option to true.
31198
31303
  *
31199
31304
  * @declare Highcharts.PointStatesSelectOptionsObject
31305
+ * @extends plotOptions.series.marker.states.hover
31200
31306
  */
31201
31307
  select: {
31202
31308
  /**
@@ -31773,6 +31879,7 @@ const seriesDefaults = {
31773
31879
  * @sample {highmaps} maps/plotoptions/series-datalabels-box/
31774
31880
  * Data labels box options
31775
31881
  *
31882
+ * @type {number|Array<number>}
31776
31883
  * @since 2.2.1
31777
31884
  */
31778
31885
  padding: [1, 3],
@@ -31974,6 +32081,9 @@ const seriesDefaults = {
31974
32081
  /**
31975
32082
  * A collection of options for different series states.
31976
32083
  *
32084
+ * In addition to the options documented under each state, any option from
32085
+ * the parent series type can be set, with exception of `data` and `states`.
32086
+ *
31977
32087
  * @declare Highcharts.SeriesStatesOptionsObject
31978
32088
  */
31979
32089
  states: {
@@ -32147,6 +32257,7 @@ const seriesDefaults = {
32147
32257
  * Disabled inactive state
32148
32258
  *
32149
32259
  * @declare Highcharts.SeriesStatesInactiveOptionsObject
32260
+ * @extends plotOptions.series.states.hover
32150
32261
  */
32151
32262
  inactive: {
32152
32263
  /**
@@ -32547,7 +32658,6 @@ var SeriesRegistry;
32547
32658
  * */
32548
32659
 
32549
32660
 
32550
- const { animObject: Series_animObject, setAnimation: Series_setAnimation } = AnimationUtilities;
32551
32661
 
32552
32662
 
32553
32663
  const { defaultOptions: Series_defaultOptions } = Defaults;
@@ -32685,6 +32795,13 @@ class Series {
32685
32795
  * @type {number|undefined}
32686
32796
  * @readonly
32687
32797
  */
32798
+ /**
32799
+ * The main group for the series' graphics.
32800
+ *
32801
+ * @name Highcharts.Series#group
32802
+ * @type {Highcharts.SVGElement}
32803
+ * @readonly
32804
+ */
32688
32805
  /**
32689
32806
  * Contains the series' index in the `Chart.series` array.
32690
32807
  *
@@ -32817,10 +32934,12 @@ class Series {
32817
32934
  */
32818
32935
  series.options = series.setOptions(userOptions);
32819
32936
  const options = series.options, visible = options.visible !== false;
32820
- // Create the data table
32821
- this.dataTable ?? (this.dataTable = options.dataTable?.isDataTable ?
32822
- options.dataTable :
32823
- new Data_DataTableCore(options.dataTable));
32937
+ // Create the data table or use the one passed as option
32938
+ this.dataTable ?? (this.dataTable = isArray(options.dataTable) ?
32939
+ new Data_DataTableCore() :
32940
+ options.dataTable?.isDataTable ?
32941
+ options.dataTable :
32942
+ new Data_DataTableCore(options.dataTable));
32824
32943
  /**
32825
32944
  * All child series that are linked to the current series through the
32826
32945
  * [linkedTo](https://api.highcharts.com/highcharts/series.line.linkedTo)
@@ -32880,7 +32999,7 @@ class Series {
32880
32999
  if (chartSeries.length) {
32881
33000
  lastSeries = chartSeries[chartSeries.length - 1];
32882
33001
  }
32883
- series._i = pick(lastSeries?._i, -1) + 1;
33002
+ series._i = (lastSeries?._i ?? -1) + 1;
32884
33003
  series.opacity = series.options.opacity;
32885
33004
  // Insert the series and re-order all series above the insertion
32886
33005
  // point.
@@ -32927,7 +33046,7 @@ class Series {
32927
33046
  // Apply if the series xAxis or yAxis option matches
32928
33047
  // the number of the axis, or if undefined, use the
32929
33048
  // first axis
32930
- if (pick(seriesOptions[coll], 0) === axis.index ||
33049
+ if ((seriesOptions[coll] ?? 0) === axis.index ||
32931
33050
  (typeof seriesOptions[coll] !==
32932
33051
  'undefined' &&
32933
33052
  seriesOptions[coll] === axisOptions.id)) {
@@ -32970,8 +33089,12 @@ class Series {
32970
33089
  * @function Highcharts.Series#hasMarkerChanged
32971
33090
  */
32972
33091
  hasMarkerChanged(options, oldOptions) {
32973
- const marker = options.marker, oldMarker = oldOptions.marker || {};
32974
- return marker && ((oldMarker.enabled && !marker.enabled) ||
33092
+ const marker = options.marker, oldMarker = oldOptions.marker;
33093
+ // Note that `marker` holds the full, merged object including
33094
+ // `plotOptions`, while `oldMarker` is the user-defined series-level
33095
+ // options only. We may need to refactor that in the future if more
33096
+ // issues like #24057 arise.
33097
+ return marker && oldMarker && ((oldMarker.enabled && !marker.enabled) ||
32975
33098
  oldMarker.symbol !== marker.symbol || // #10870, #15946
32976
33099
  oldMarker.height !== marker.height || // #16274
32977
33100
  oldMarker.width !== marker.width // #16274
@@ -32990,7 +33113,8 @@ class Series {
32990
33113
  time.parse(options.pointStart) ??
32991
33114
  0;
32992
33115
  let pointInterval;
32993
- this.pointInterval = pointInterval = pick(this.pointInterval, options.pointInterval, 1);
33116
+ this.pointInterval = pointInterval =
33117
+ this.pointInterval ?? options.pointInterval ?? 1;
32994
33118
  if (relativeXValue && isNumber(x)) {
32995
33119
  pointInterval *= x;
32996
33120
  }
@@ -33062,9 +33186,13 @@ class Series {
33062
33186
  );
33063
33187
  // When shared tooltip, stickyTracking is true by default,
33064
33188
  // unless user says otherwise.
33065
- this.stickyTracking = pick(seriesUserOptions.stickyTracking, userPlotOptionsType.stickyTracking, userPlotOptionsSeries.stickyTracking, (this.tooltipOptions.shared && !this.noSharedTooltip ?
33066
- true :
33067
- options.stickyTracking));
33189
+ this.stickyTracking =
33190
+ seriesUserOptions.stickyTracking ??
33191
+ userPlotOptionsType.stickyTracking ??
33192
+ userPlotOptionsSeries.stickyTracking ??
33193
+ (this.tooltipOptions.shared && !this.noSharedTooltip ?
33194
+ true :
33195
+ options.stickyTracking);
33068
33196
  // Delete marker object if not allowed (#1125)
33069
33197
  if (typeOptions.marker === null) {
33070
33198
  delete options.marker;
@@ -33142,7 +33270,9 @@ class Series {
33142
33270
  if (!value) {
33143
33271
  // Pick up either the colorIndex option, or the series.colorIndex
33144
33272
  // after Series.update()
33145
- setting = pick(prop === 'color' ? this.options.colorIndex : void 0, this[indexName]);
33273
+ setting = prop === 'color' ?
33274
+ (this.options.colorIndex ?? this[indexName]) :
33275
+ this[indexName];
33146
33276
  if (defined(setting)) { // After Series.update()
33147
33277
  i = setting;
33148
33278
  }
@@ -33202,7 +33332,7 @@ class Series {
33202
33332
  */
33203
33333
  getSymbol() {
33204
33334
  const seriesMarkerOption = this.options.marker;
33205
- this.getCyclic('symbol', seriesMarkerOption.symbol, this.chart.options.symbols);
33335
+ this.getCyclic('symbol', seriesMarkerOption?.symbol, this.chart.options.symbols);
33206
33336
  }
33207
33337
  /**
33208
33338
  * Shorthand to get one of the series' data columns from `Series.dataTable`.
@@ -33398,9 +33528,10 @@ class Series {
33398
33528
  if (!oldData[i].destroyed && !oldData[i].condemned) {
33399
33529
  const pOptions = dataTable.getRowObject(i);
33400
33530
  if (pOptions) {
33531
+ // Remove undefined properties, but preserve explicit
33532
+ // nulls (#24872)
33401
33533
  Object.keys(pOptions).forEach((key) => {
33402
- if (!defined(pOptions[key]) /* ||
33403
- pOptions[key] === oldData[i].options[key]*/) {
33534
+ if (pOptions[key] === void 0) {
33404
33535
  delete pOptions[key];
33405
33536
  }
33406
33537
  });
@@ -33805,8 +33936,12 @@ class Series {
33805
33936
  }
33806
33937
  }
33807
33938
  }
33808
- // Find the closest distance between processed points
33809
- xData = this.getColumn('x', true);
33939
+ // Find the closest distance between processed points. When the data was
33940
+ // cropped (or set out of range), read x from the freshly cropped local
33941
+ // `modified` table, #24858.
33942
+ if (modified !== table) {
33943
+ xData = modified.getColumn('x', true) || [];
33944
+ }
33810
33945
  const closestPointRange = getClosestDistance([
33811
33946
  logarithmic ?
33812
33947
  xData.map(logarithmic.log2lin) :
@@ -34011,9 +34146,9 @@ class Series {
34011
34146
  * Force getting extremes of a total series data range.
34012
34147
  */
34013
34148
  getExtremes(yData, forceExtremesFromAll) {
34014
- const { xAxis, yAxis } = this, getExtremesFromAll = forceExtremesFromAll ||
34149
+ const { options, xAxis, yAxis } = this, getExtremesFromAll = forceExtremesFromAll ||
34015
34150
  this.getExtremesFromAll ||
34016
- this.options.getExtremesFromAll, // #4599, #21003
34151
+ options.getExtremesFromAll, // #4599, #21003
34017
34152
  table = getExtremesFromAll && this.cropped ?
34018
34153
  this.dataTable :
34019
34154
  this.dataTable.getModified(), rowCount = table.rowCount, customData = yData || this.stackedYData, yAxisData = customData ?
@@ -34023,7 +34158,12 @@ class Series {
34023
34158
  // non-sorted data like scatter (#7639).
34024
34159
  shoulder = this.requireSorting && !this.is('column') ?
34025
34160
  1 : 0,
34026
- // #2117, need to compensate for log X axis
34161
+ // Used only for `cumulativeStart` (#24608)
34162
+ excludeShoulder = options.cumulative &&
34163
+ options.cumulativeStart &&
34164
+ shoulder &&
34165
+ !getExtremesFromAll,
34166
+ // Compensate for log X axis (#2117)
34027
34167
  positiveValuesOnly = yAxis ? yAxis.positiveValuesOnly : false, doAll = getExtremesFromAll ||
34028
34168
  this.cropped ||
34029
34169
  !xAxis; // For colorAxis support
@@ -34035,10 +34175,10 @@ class Series {
34035
34175
  }
34036
34176
  for (i = 0; i < rowCount; i++) {
34037
34177
  x = xData[i];
34038
- // Check if it is within the selected x axis range
34039
- if (doAll ||
34178
+ // Check if it is within the selected x-axis range
34179
+ if ((doAll ||
34040
34180
  ((xData[i + shoulder] || x) >= xMin &&
34041
- (xData[i - shoulder] || x) <= xMax)) {
34181
+ (xData[i - shoulder] || x) <= xMax)) && (!excludeShoulder || x >= xMin)) {
34042
34182
  for (const values of yAxisData) {
34043
34183
  const val = values[i];
34044
34184
  // For points within the visible range, including the
@@ -34107,7 +34247,7 @@ class Series {
34107
34247
  */
34108
34248
  translate() {
34109
34249
  this.generatePoints();
34110
- const series = this, { options, xAxis, yAxis } = series, { stacking, threshold } = options, { hasRendered, polar } = series.chart, points = series.points.concat(series.condemnedPoints), dataLength = points.length, pointPlacement = series.pointPlacementToXValue(), // #7860
34250
+ const series = this, { hasRendered, options, xAxis, yAxis } = series, { stacking, threshold } = options, { polar } = series.chart, points = series.points.concat(series.condemnedPoints), dataLength = points.length, pointPlacement = series.pointPlacementToXValue(), // #7860
34111
34251
  dynamicallyPlaced = Boolean(pointPlacement), stackThreshold = options.startFromThreshold ? threshold : 0, nullYSubstitute = (options?.nullInteraction &&
34112
34252
  yAxis.len);
34113
34253
  let i, plotX, lastPlotX, stackIndicator, closestPointRangePx = Number.MAX_VALUE;
@@ -34159,7 +34299,9 @@ class Series {
34159
34299
  yValue = stackValues[1];
34160
34300
  if (lowValue === stackThreshold &&
34161
34301
  stackIndicator.key === stacks[xValue].base) {
34162
- lowValue = pick(isNumber(threshold) ? threshold : yAxis.min);
34302
+ lowValue = isNumber(threshold) ?
34303
+ threshold :
34304
+ yAxis.min;
34163
34305
  }
34164
34306
  // #1200, #1232
34165
34307
  if (yAxis.positiveValuesOnly &&
@@ -34167,7 +34309,7 @@ class Series {
34167
34309
  lowValue <= 0) {
34168
34310
  lowValue = void 0;
34169
34311
  }
34170
- point.total = point.stackTotal = pick(stackItem.total);
34312
+ point.total = point.stackTotal = stackItem.total ?? void 0;
34171
34313
  point.percentage = defined(point.y) && stackItem.total ?
34172
34314
  (point.y / stackItem.total * 100) : void 0;
34173
34315
  point.stackY = yValue;
@@ -34300,7 +34442,7 @@ class Series {
34300
34442
  * Initialize the animation.
34301
34443
  */
34302
34444
  animate(init) {
34303
- const { chart, group, markerGroup } = this, inverted = chart.inverted, animation = Series_animObject(this.options.animation),
34445
+ const { chart, group, markerGroup } = this, inverted = chart.inverted, animation = animObject(this.options.animation),
34304
34446
  // The key for temporary animation clips
34305
34447
  animationClipKey = [
34306
34448
  this.getSharedClipKey(),
@@ -34396,10 +34538,11 @@ class Series {
34396
34538
  */
34397
34539
  drawPoints(points) {
34398
34540
  points || (points = this.points.concat(this.condemnedPoints));
34399
- const series = this, chart = series.chart, styledMode = chart.styledMode, { colorAxis, options } = series, seriesMarkerOptions = options.marker, nullInteraction = options.nullInteraction, markerGroup = series[series.specialGroup || 'markerGroup'], xAxis = series.xAxis, globallyEnabled = pick(seriesMarkerOptions.enabled, !xAxis || xAxis.isRadial ? true : null,
34400
- // Use larger or equal as radius is null in bubbles (#6321)
34401
- series.closestPointRangePx >= (seriesMarkerOptions.enabledThreshold *
34402
- seriesMarkerOptions.radius));
34541
+ const series = this, chart = series.chart, styledMode = chart.styledMode, { colorAxis, options } = series, seriesMarkerOptions = options.marker || {}, nullInteraction = options.nullInteraction, markerGroup = series[series.specialGroup || 'markerGroup'], xAxis = series.xAxis, globallyEnabled = seriesMarkerOptions.enabled ??
34542
+ (!xAxis || xAxis.isRadial ? true : null) ??
34543
+ // Use larger or equal as radius is null in bubbles (#6321)
34544
+ ((series.closestPointRangePx ?? -Infinity) >= ((seriesMarkerOptions.enabledThreshold ?? 2) *
34545
+ seriesMarkerOptions.radius));
34403
34546
  let i, point, graphic, verb, pointMarkerOptions, hasPointMarker, markerAttribs;
34404
34547
  if (seriesMarkerOptions.enabled !== false ||
34405
34548
  series._hasPointMarkers) {
@@ -34416,8 +34559,10 @@ class Series {
34416
34559
  // Only draw the point if y is defined
34417
34560
  if (shouldDrawMarker) {
34418
34561
  // Shortcuts
34419
- const symbol = pick(pointMarkerOptions.symbol, series.symbol, 'rect');
34420
- markerAttribs = series.markerAttribs(point, (point.selected && 'select'));
34562
+ const symbol = pointMarkerOptions.symbol ??
34563
+ series.symbol ??
34564
+ 'rect';
34565
+ markerAttribs = series.markerAttribs(point, point.selected ? 'select' : '');
34421
34566
  const isInside = point.isInside !== false;
34422
34567
  if (!graphic &&
34423
34568
  isInside &&
@@ -34482,15 +34627,17 @@ class Series {
34482
34627
  * A hash containing those attributes that are not settable from CSS.
34483
34628
  */
34484
34629
  markerAttribs(point, state) {
34485
- const seriesOptions = this.options, seriesMarkerOptions = seriesOptions.marker, pointMarkerOptions = point.marker || {}, symbol = (pointMarkerOptions.symbol ||
34630
+ const seriesOptions = this.options, seriesMarkerOptions = seriesOptions.marker ?? {}, pointMarkerOptions = point.marker || {}, symbol = (pointMarkerOptions.symbol ||
34486
34631
  seriesMarkerOptions.symbol), attribs = {};
34487
- let seriesStateOptions, pointStateOptions, radius = pick(pointMarkerOptions.radius, seriesMarkerOptions?.radius);
34632
+ let seriesStateOptions, pointStateOptions, radius = pointMarkerOptions.radius ??
34633
+ seriesMarkerOptions.radius;
34488
34634
  // Handle hover and select states
34489
34635
  if (state) {
34490
- seriesStateOptions = seriesMarkerOptions?.states?.[state];
34636
+ seriesStateOptions = seriesMarkerOptions.states?.[state];
34491
34637
  pointStateOptions = pointMarkerOptions.states?.[state];
34492
- radius = pick(pointStateOptions?.radius, seriesStateOptions?.radius, radius && radius + (seriesStateOptions?.radiusPlus ||
34493
- 0));
34638
+ radius = pointStateOptions?.radius ??
34639
+ seriesStateOptions?.radius ??
34640
+ (radius && radius + (seriesStateOptions?.radiusPlus || 0));
34494
34641
  }
34495
34642
  point.hasImage = symbol && symbol.indexOf('url') === 0;
34496
34643
  if (point.hasImage) {
@@ -34503,7 +34650,7 @@ class Series {
34503
34650
  0 :
34504
34651
  symbol === 'rect' ?
34505
34652
  // Rectangle symbols need crisp edges, others don't
34506
- seriesMarkerOptions?.lineWidth || 0 :
34653
+ seriesMarkerOptions.lineWidth || 0 :
34507
34654
  1);
34508
34655
  }
34509
34656
  attribs.x = pos[0] - radius;
@@ -34534,8 +34681,9 @@ class Series {
34534
34681
  * The presentational attributes to be set on the point.
34535
34682
  */
34536
34683
  pointAttribs(point, state) {
34537
- const options = this.options, seriesMarkerOptions = options.marker, pointOptions = point?.options, pointMarkerOptions = pointOptions?.marker || {}, pointColorOption = pointOptions?.color, pointColor = point?.color, zoneColor = point?.zone?.color;
34538
- let seriesStateOptions, pointStateOptions, color = this.color, fill, stroke, strokeWidth = pick(pointMarkerOptions.lineWidth, seriesMarkerOptions.lineWidth), opacity = (point?.isNull && options.nullInteraction) ? 0 : 1;
34684
+ const options = this.options, seriesMarkerOptions = options.marker ?? {}, pointOptions = point?.options, pointMarkerOptions = pointOptions?.marker || {}, pointColorOption = pointOptions?.color, pointColor = point?.color, zoneColor = point?.zone?.color;
34685
+ let color = this.color, fill, stroke, strokeWidth = pointMarkerOptions.lineWidth ??
34686
+ seriesMarkerOptions.lineWidth, opacity = (point?.isNull && options.nullInteraction) ? 0 : 1;
34539
34687
  color = (pointColorOption ||
34540
34688
  zoneColor ||
34541
34689
  pointColor ||
@@ -34548,19 +34696,22 @@ class Series {
34548
34696
  color);
34549
34697
  // Handle hover and select states
34550
34698
  state = state || 'normal';
34551
- if (state) {
34552
- seriesStateOptions = (seriesMarkerOptions.states[state] || {});
34553
- pointStateOptions = (pointMarkerOptions.states &&
34554
- pointMarkerOptions.states[state]) || {};
34555
- strokeWidth = pick(pointStateOptions.lineWidth, seriesStateOptions.lineWidth, strokeWidth + pick(pointStateOptions.lineWidthPlus, seriesStateOptions.lineWidthPlus, 0));
34556
- fill = (pointStateOptions.fillColor ||
34557
- seriesStateOptions.fillColor ||
34558
- fill);
34559
- stroke = (pointStateOptions.lineColor ||
34560
- seriesStateOptions.lineColor ||
34561
- stroke);
34562
- opacity = pick(pointStateOptions.opacity, seriesStateOptions.opacity, opacity);
34563
- }
34699
+ const seriesStateOptions = seriesMarkerOptions.states?.[state] || {};
34700
+ const pointStateOptions = pointMarkerOptions.states?.[state] || {};
34701
+ strokeWidth = pointStateOptions.lineWidth ??
34702
+ seriesStateOptions.lineWidth ??
34703
+ (strokeWidth || 0) + (pointStateOptions.lineWidthPlus ??
34704
+ seriesStateOptions.lineWidthPlus ??
34705
+ 0);
34706
+ fill = (pointStateOptions.fillColor ||
34707
+ seriesStateOptions.fillColor ||
34708
+ fill);
34709
+ stroke = (pointStateOptions.lineColor ||
34710
+ seriesStateOptions.lineColor ||
34711
+ stroke);
34712
+ opacity = (pointStateOptions.opacity ??
34713
+ seriesStateOptions.opacity ??
34714
+ opacity);
34564
34715
  return {
34565
34716
  'stroke': stroke,
34566
34717
  'stroke-width': strokeWidth,
@@ -34599,7 +34750,7 @@ class Series {
34599
34750
  // Destroy all points with their elements
34600
34751
  i = data.length;
34601
34752
  while (i--) {
34602
- data[i]?.destroy?.();
34753
+ data[i]?.destroy?.(true);
34603
34754
  }
34604
34755
  for (const zone of series.zones || []) {
34605
34756
  // Destroy SVGElement's but preserve primitive props (#20426)
@@ -34626,7 +34777,7 @@ class Series {
34626
34777
  erase(chart.series, series);
34627
34778
  chart.orderItems('series');
34628
34779
  // Clear all members
34629
- objectEach(series, function (val, prop) {
34780
+ objectEach(series, function (_val, prop) {
34630
34781
  if (!keepEventsForUpdate || prop !== 'hcEvents') {
34631
34782
  delete series[prop];
34632
34783
  }
@@ -34678,7 +34829,7 @@ class Series {
34678
34829
  // Reset
34679
34830
  zones.forEach((zone) => {
34680
34831
  zone.lineClip = [];
34681
- zone.translated = clamp(axis.toPixels(pick(zone.value, axisMax), true) || 0, 0, len);
34832
+ zone.translated = clamp(axis.toPixels((zone.value ?? axisMax), true) || 0, 0, len);
34682
34833
  });
34683
34834
  // The use of the Color Threshold assumes there are no gaps so it is
34684
34835
  // safe to hide the original graph and area unless it is not
@@ -34902,7 +35053,7 @@ class Series {
34902
35053
  * @emits Highcharts.Series#event:afterRender
34903
35054
  */
34904
35055
  render() {
34905
- const series = this, { chart, options, hasRendered } = series, animOptions = Series_animObject(options.animation), visibility = series.visible ?
35056
+ const series = this, { chart, options, hasRendered } = series, animOptions = animObject(options.animation), visibility = series.visible ?
34906
35057
  'inherit' : 'hidden', // #2597
34907
35058
  zIndex = options.zIndex, chartSeriesGroup = chart.seriesGroup;
34908
35059
  let animDuration = series.finishedAnimating ?
@@ -35004,7 +35155,7 @@ class Series {
35004
35155
  *
35005
35156
  * @function Highcharts.Series#searchPoint
35006
35157
  *
35007
- * @param {Highcharts.PointerEvent} e
35158
+ * @param {PointerEvent} e
35008
35159
  * The normalized pointer event
35009
35160
  * @param {boolean} [compareX=false]
35010
35161
  * Search only by the X value, not Y
@@ -35036,7 +35187,7 @@ class Series {
35036
35187
  // Prevent multiple k-d-trees from being built simultaneously
35037
35188
  // (#6235)
35038
35189
  this.buildingKdTree = true;
35039
- const series = this, seriesOptions = series.options, dimensions = seriesOptions.findNearestPointBy
35190
+ const series = this, seriesOptions = series.options, dimensions = (seriesOptions.findNearestPointBy ?? '')
35040
35191
  .indexOf('y') > -1 ? 2 : 1;
35041
35192
  /**
35042
35193
  * Internal function
@@ -35086,7 +35237,7 @@ class Series {
35086
35237
  * The point to search for.
35087
35238
  * @param {boolean} [compareX=false]
35088
35239
  * Search only by the X value, not Y.
35089
- * @param {Highcharts.PointerEvent} [e]
35240
+ * @param {PointerEvent} [e]
35090
35241
  * The normalized pointer event.
35091
35242
  * @param {Function} [suppliedPointEvaluator]
35092
35243
  * A custom point evaluator function.
@@ -35292,11 +35443,13 @@ class Series {
35292
35443
  * Both X and Y values given
35293
35444
  * @sample highcharts/members/series-addpoint-pie/
35294
35445
  * Append pie slice
35295
- * @sample stock/members/series-addpoint/
35446
+ * @sample highcharts/datatable/datamapping-dynamic
35447
+ * Alternative approach with data table
35448
+ * @sample {highstock} stock/members/series-addpoint/
35296
35449
  * Append 100 points in Highcharts Stock
35297
- * @sample stock/members/series-addpoint-shift/
35450
+ * @sample {highstock} stock/members/series-addpoint-shift/
35298
35451
  * Append and shift in Highcharts Stock
35299
- * @sample maps/members/series-addpoint/
35452
+ * @sample {highmaps} maps/members/series-addpoint/
35300
35453
  * Add a point in Highmaps
35301
35454
  *
35302
35455
  * @function Highcharts.Series#addPoint
@@ -35332,7 +35485,7 @@ class Series {
35332
35485
  const series = this, seriesOptions = series.options, { chart, data, dataTable: table, xAxis } = series, names = xAxis?.hasNames && xAxis.names, dataOptions = seriesOptions.data, xData = series.getColumn('x');
35333
35486
  let isInTheMiddle, i;
35334
35487
  // Optional redraw, defaults to true
35335
- redraw = pick(redraw, true);
35488
+ redraw = (redraw ?? true);
35336
35489
  // Get options and push the point to xData, yData and series.options. In
35337
35490
  // series.generatePoints the Point instance will be created on demand
35338
35491
  // and pushed to the series.data array.
@@ -35442,8 +35595,8 @@ class Series {
35442
35595
  chart.redraw();
35443
35596
  }
35444
35597
  };
35445
- Series_setAnimation(animation, chart);
35446
- redraw = pick(redraw, true);
35598
+ setAnimation(animation, chart);
35599
+ redraw = (redraw ?? true);
35447
35600
  // Fire the event with a default handler of removing the point
35448
35601
  if (point) {
35449
35602
  point.firePointEvent('remove', null, remove);
@@ -35486,7 +35639,7 @@ class Series {
35486
35639
  // Redraw
35487
35640
  chart.isDirtyLegend = chart.isDirtyBox = true;
35488
35641
  chart.linkSeries(keepEvents);
35489
- if (pick(redraw, true)) {
35642
+ if (redraw ?? true) {
35490
35643
  chart.redraw(animation);
35491
35644
  }
35492
35645
  }
@@ -35703,7 +35856,7 @@ class Series {
35703
35856
  series.isDirtyData = true;
35704
35857
  }
35705
35858
  fireEvent(this, 'afterUpdate');
35706
- if (pick(redraw, true)) {
35859
+ if (redraw ?? true) {
35707
35860
  chart.redraw(keepPoints ? void 0 : false);
35708
35861
  }
35709
35862
  }
@@ -35720,12 +35873,12 @@ class Series {
35720
35873
  * @internal
35721
35874
  */
35722
35875
  hasOptionChanged(optionName) {
35723
- const chart = this.chart, option = this.options[optionName], plotOptions = chart.options.plotOptions, oldOption = this.userOptions[optionName], plotOptionsOption = pick(plotOptions?.[this.type]?.[optionName], plotOptions?.series?.[optionName]);
35876
+ const chart = this.chart, option = this.options[optionName], plotOptions = chart.options.plotOptions, oldOption = this.userOptions[optionName], plotOptionsOption = (plotOptions?.[this.type]?.[optionName] ?? plotOptions?.series?.[optionName]);
35724
35877
  // Check if `plotOptions` are defined already, #19203
35725
35878
  if (oldOption && !defined(plotOptionsOption)) {
35726
35879
  return option !== oldOption;
35727
35880
  }
35728
- return option !== pick(plotOptionsOption, option);
35881
+ return option !== (plotOptionsOption ?? option);
35729
35882
  }
35730
35883
  /**
35731
35884
  * Runs on mouse over the series graphical items.
@@ -35796,10 +35949,11 @@ class Series {
35796
35949
  * Determines if state should be inherited by points too.
35797
35950
  */
35798
35951
  setState(state, inherit) {
35799
- const series = this, { graph, options } = series, { inactiveOtherPoints, states: stateOptions } = options,
35952
+ const series = this, { graph, options } = series, { inactiveOtherPoints, states: stateOptions = {} } = options,
35800
35953
  // By default a quick animation to hover/inactive,
35801
35954
  // slower to un-hover
35802
- stateAnimation = pick(stateOptions?.[state || 'normal']?.animation, series.chart.options.chart.animation);
35955
+ stateAnimation = stateOptions[state || 'normal']?.animation ??
35956
+ series.chart.options.chart.animation;
35803
35957
  let { lineWidth, opacity } = options;
35804
35958
  state = state || '';
35805
35959
  if (series.state !== state) {
@@ -35826,9 +35980,13 @@ class Series {
35826
35980
  return;
35827
35981
  }
35828
35982
  if (state) {
35829
- lineWidth = (stateOptions[state].lineWidth ||
35830
- lineWidth + (stateOptions[state].lineWidthPlus || 0)); // #4035
35831
- opacity = pick(stateOptions[state].opacity, opacity);
35983
+ lineWidth = stateOptions[state]?.lineWidth ?? (!isNumber(lineWidth) ?
35984
+ void 0 :
35985
+ // Increase by lineWidthPlus only when lineWidth
35986
+ // is a number.
35987
+ (lineWidth +
35988
+ (stateOptions?.[state]?.lineWidthPlus || 0))); // #4035
35989
+ opacity = stateOptions[state]?.opacity ?? opacity;
35832
35990
  }
35833
35991
  if (graph && !graph.dashstyle && isNumber(lineWidth)) {
35834
35992
  // Animate the graph stroke-width
@@ -35872,11 +36030,7 @@ class Series {
35872
36030
  * Can be either `hover` or undefined to set to normal state.
35873
36031
  */
35874
36032
  setAllPointsToState(state) {
35875
- this.points.forEach(function (point) {
35876
- if (point.setState) {
35877
- point.setState(state);
35878
- }
35879
- });
36033
+ this.points.forEach((point) => point.setState?.(state));
35880
36034
  }
35881
36035
  /**
35882
36036
  * Show or hide the series.
@@ -36557,7 +36711,6 @@ Series_SeriesRegistry.series = Series;
36557
36711
  * */
36558
36712
 
36559
36713
 
36560
- const { animObject: Legend_animObject, setAnimation: Legend_setAnimation } = AnimationUtilities;
36561
36714
 
36562
36715
  const { registerEventOptions: Legend_registerEventOptions } = Core_Foundation;
36563
36716
 
@@ -36686,7 +36839,7 @@ class Legend {
36686
36839
  * @param {Highcharts.LegendOptions} options
36687
36840
  */
36688
36841
  setOptions(options) {
36689
- const padding = pick(options.padding, 8);
36842
+ const padding = (options.padding ?? 8);
36690
36843
  /**
36691
36844
  * Legend options.
36692
36845
  *
@@ -36703,7 +36856,7 @@ class Legend {
36703
36856
  this.itemMarginBottom = options.itemMarginBottom;
36704
36857
  this.padding = padding;
36705
36858
  this.initialItemY = padding - 5; // 5 is pixels above the text
36706
- this.symbolWidth = pick(options.symbolWidth, 16);
36859
+ this.symbolWidth = (options.symbolWidth ?? 16);
36707
36860
  this.pages = [];
36708
36861
  this.proximate = options.layout === 'proximate' && !this.chart.inverted;
36709
36862
  // #12705: baseline has to be reset on every update
@@ -36737,7 +36890,7 @@ class Legend {
36737
36890
  }
36738
36891
  this.destroy();
36739
36892
  chart.isDirtyLegend = chart.isDirtyBox = true;
36740
- if (pick(redraw, true)) {
36893
+ if (redraw ?? true) {
36741
36894
  chart.redraw();
36742
36895
  }
36743
36896
  fireEvent(this, 'afterUpdate', { redraw });
@@ -36975,7 +37128,7 @@ class Legend {
36975
37128
  * The item to render.
36976
37129
  */
36977
37130
  renderItem(item) {
36978
- const legend = this, legendItem = item.legendItem = item.legendItem || {}, chart = legend.chart, renderer = chart.renderer, options = legend.options, horizontal = options.layout === 'horizontal', symbolWidth = legend.symbolWidth, symbolPadding = options.symbolPadding || 0, itemStyle = legend.itemStyle, itemHiddenStyle = legend.itemHiddenStyle, itemDistance = horizontal ? pick(options.itemDistance, 20) : 0, ltr = !options.rtl, isSeries = !item.series, series = !isSeries && item.series.drawLegendSymbol ?
37131
+ const legend = this, legendItem = item.legendItem = item.legendItem || {}, chart = legend.chart, renderer = chart.renderer, options = legend.options, horizontal = options.layout === 'horizontal', symbolWidth = legend.symbolWidth, symbolPadding = options.symbolPadding || 0, itemStyle = legend.itemStyle, itemHiddenStyle = legend.itemHiddenStyle, itemDistance = horizontal ? (options.itemDistance ?? 20) : 0, ltr = !options.rtl, isSeries = !item.series, series = !isSeries && item.series.drawLegendSymbol ?
36979
37132
  item.series :
36980
37133
  item, seriesOptions = series.options, showCheckbox = (!!legend.createCheckboxForItem &&
36981
37134
  seriesOptions &&
@@ -37021,9 +37174,11 @@ class Legend {
37021
37174
  legend.fontMetrics.f + 3 + legend.itemMarginTop;
37022
37175
  label.attr('y', legend.baseline);
37023
37176
  legend.symbolHeight =
37024
- pick(options.symbolHeight, legend.fontMetrics.f);
37177
+ (options.symbolHeight ?? legend.fontMetrics.f);
37025
37178
  if (options.squareSymbol) {
37026
- legend.symbolWidth = pick(options.symbolWidth, Math.max(legend.symbolHeight, 16));
37179
+ legend.symbolWidth =
37180
+ options.symbolWidth ??
37181
+ Math.max(legend.symbolHeight, 16);
37027
37182
  itemExtraWidth = legend.symbolWidth + symbolPadding +
37028
37183
  itemDistance + (showCheckbox ? 20 : 0);
37029
37184
  if (ltr) {
@@ -37075,7 +37230,7 @@ class Legend {
37075
37230
  * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item
37076
37231
  */
37077
37232
  layoutItem(item) {
37078
- const options = this.options, padding = this.padding, horizontal = options.layout === 'horizontal', itemHeight = item.itemHeight, itemMarginBottom = this.itemMarginBottom, itemMarginTop = this.itemMarginTop, itemDistance = horizontal ? pick(options.itemDistance, 20) : 0, maxLegendWidth = this.maxLegendWidth, itemWidth = (options.alignColumns &&
37233
+ const options = this.options, padding = this.padding, horizontal = options.layout === 'horizontal', itemHeight = item.itemHeight, itemMarginBottom = this.itemMarginBottom, itemMarginTop = this.itemMarginTop, itemDistance = horizontal ? (options.itemDistance ?? 20) : 0, maxLegendWidth = this.maxLegendWidth, itemWidth = (options.alignColumns &&
37079
37234
  this.totalItemWidth > maxLegendWidth) ?
37080
37235
  this.maxItemWidth :
37081
37236
  item.itemWidth, legendItem = item.legendItem || {};
@@ -37129,7 +37284,9 @@ class Legend {
37129
37284
  const seriesOptions = series?.options;
37130
37285
  // Handle showInLegend. If the series is linked to another series,
37131
37286
  // defaults to false.
37132
- if (series && pick(seriesOptions.showInLegend, !defined(seriesOptions.linkedTo) ? void 0 : false, true)) {
37287
+ if (series &&
37288
+ (seriesOptions.showInLegend ??
37289
+ (!defined(seriesOptions.linkedTo)))) {
37133
37290
  // Use points or series for the legend item depending on
37134
37291
  // legendType
37135
37292
  allItems = allItems.concat(series.legendItem?.labels ||
@@ -37411,7 +37568,7 @@ class Legend {
37411
37568
  * @function Highcharts.Legend#handleOverflow
37412
37569
  */
37413
37570
  handleOverflow(legendHeight) {
37414
- const legend = this, chart = this.chart, renderer = chart.renderer, options = this.options, optionsY = options.y, alignTop = options.verticalAlign === 'top', padding = this.padding, maxHeight = options.maxHeight, navOptions = options.navigation, animation = pick(navOptions.animation, true), arrowSize = navOptions.arrowSize || 12, pages = this.pages, allItems = this.allItems, clipToHeight = function (height) {
37571
+ const legend = this, chart = this.chart, renderer = chart.renderer, options = this.options, optionsY = options.y, alignTop = options.verticalAlign === 'top', padding = this.padding, maxHeight = options.maxHeight, navOptions = options.navigation, animation = (navOptions.animation ?? true), arrowSize = navOptions.arrowSize || 12, pages = this.pages, allItems = this.allItems, clipToHeight = function (height) {
37415
37572
  if (typeof height === 'number') {
37416
37573
  clipRect.attr({
37417
37574
  height: height
@@ -37457,7 +37614,7 @@ class Legend {
37457
37614
  navOptions.enabled !== false) {
37458
37615
  this.clipHeight = clipHeight =
37459
37616
  Math.max(spaceHeight - 20 - this.titleHeight - padding, 0);
37460
- this.currentPage = pick(this.currentPage, 1);
37617
+ this.currentPage = (this.currentPage ?? 1);
37461
37618
  this.fullHeight = legendHeight;
37462
37619
  // Fill pages with Y positions so that the top of each a legend item
37463
37620
  // defines the scroll top for each page (#2098)
@@ -37560,7 +37717,7 @@ class Legend {
37560
37717
  }
37561
37718
  if (currentPage > 0) {
37562
37719
  if (typeof animation !== 'undefined') {
37563
- Legend_setAnimation(animation, chart);
37720
+ setAnimation(animation, chart);
37564
37721
  }
37565
37722
  this.nav.attr({
37566
37723
  translateX: padding,
@@ -37617,7 +37774,7 @@ class Legend {
37617
37774
  this.currentPage = currentPage;
37618
37775
  this.positionCheckboxes();
37619
37776
  // Fire event after scroll animation is complete
37620
- const animOptions = Legend_animObject(pick(animation, chart.renderer.globalAnimation, true));
37777
+ const animOptions = animObject((animation ?? chart.renderer.globalAnimation ?? true));
37621
37778
  syncTimeout(() => {
37622
37779
  fireEvent(this, 'afterScroll', { currentPage });
37623
37780
  }, animOptions.duration);
@@ -37827,7 +37984,7 @@ class Legend {
37827
37984
  */ /**
37828
37985
  * Related browser event.
37829
37986
  * @name Highcharts.LegendItemClickEventObject#browserEvent
37830
- * @type {Highcharts.PointerEvent}
37987
+ * @type {PointerEvent}
37831
37988
  */ /**
37832
37989
  * Prevent the default action of toggle the visibility of the series or point.
37833
37990
  * @name Highcharts.LegendItemClickEventObject#preventDefault
@@ -37878,7 +38035,7 @@ class Legend {
37878
38035
  */ /**
37879
38036
  * Related browser event.
37880
38037
  * @name Highcharts.PointLegendItemClickEventObject#browserEvent
37881
- * @type {Highcharts.PointerEvent}
38038
+ * @type {PointerEvent}
37882
38039
  */ /**
37883
38040
  * Whether the default action has been prevented (`true`) or not.
37884
38041
  * @name Highcharts.PointLegendItemClickEventObject#defaultPrevented
@@ -37934,7 +38091,7 @@ class Legend {
37934
38091
  */ /**
37935
38092
  * Related browser event.
37936
38093
  * @name Highcharts.SeriesLegendItemClickEventObject#browserEvent
37937
- * @type {Highcharts.PointerEvent}
38094
+ * @type {PointerEvent}
37938
38095
  */ /**
37939
38096
  * Whether the default action has been prevented (`true`) or not.
37940
38097
  * @name Highcharts.SeriesLegendItemClickEventObject#defaultPrevented
@@ -37968,7 +38125,6 @@ class Legend {
37968
38125
  * */
37969
38126
 
37970
38127
 
37971
- const { animate: Chart_animate, animObject: Chart_animObject, setAnimation: Chart_setAnimation } = AnimationUtilities;
37972
38128
 
37973
38129
 
37974
38130
  const { defaultOptions: Chart_defaultOptions } = Defaults;
@@ -38059,7 +38215,7 @@ class Chart {
38059
38215
  */
38060
38216
  static chart(a, b, c) {
38061
38217
  const chart = new Chart(a, b, c);
38062
- return chart.promise || chart;
38218
+ return chart.promise ?? chart;
38063
38219
  }
38064
38220
  // Implementation
38065
38221
  constructor(a,
@@ -38100,10 +38256,10 @@ class Chart {
38100
38256
  const chart = this, options = chart.options.chart, zooming = options.zooming;
38101
38257
  chart.zooming = {
38102
38258
  ...zooming,
38103
- type: pick(options.zoomType, zooming.type),
38104
- key: pick(options.zoomKey, zooming.key),
38105
- pinchType: pick(options.pinchType, zooming.pinchType),
38106
- singleTouch: pick(options.zoomBySingleTouch, zooming.singleTouch, false),
38259
+ type: (options.zoomType ?? zooming.type),
38260
+ key: (options.zoomKey ?? zooming.key),
38261
+ pinchType: (options.pinchType ?? zooming.pinchType),
38262
+ singleTouch: options.zoomBySingleTouch ?? zooming.singleTouch ?? false,
38107
38263
  resetButton: merge(zooming.resetButton, options.resetZoomButton)
38108
38264
  };
38109
38265
  }
@@ -38446,7 +38602,7 @@ class Chart {
38446
38602
  redraw(animation) {
38447
38603
  fireEvent(this, 'beforeRedraw');
38448
38604
  const chart = this, axes = chart.hasCartesianSeries ? chart.axes : chart.colorAxis || [], series = chart.series, pointer = chart.pointer, legend = chart.legend, legendUserOptions = chart.userOptions.legend, renderer = chart.renderer, isHiddenChart = renderer.isHidden(), afterRedraw = [];
38449
- let hasDirtyStacks, hasStackedSeries, i, isDirtyBox = chart.isDirtyBox, redrawLegend = chart.isDirtyLegend, serie;
38605
+ let hasDirtyStacks, hasStackedSeries, i, redrawLegend = chart.isDirtyLegend, serie;
38450
38606
  renderer.rootFontSize = renderer.boxWrapper.getStyle('font-size');
38451
38607
  // Handle responsive rules, not only on resize (#6130)
38452
38608
  if (chart.setResponsive) {
@@ -38455,7 +38611,7 @@ class Chart {
38455
38611
  // Set the global animation. When chart.hasRendered is not true, the
38456
38612
  // redraw call comes from a responsive rule and animation should not
38457
38613
  // occur.
38458
- Chart_setAnimation(chart.hasRendered ? animation : false, chart);
38614
+ setAnimation(chart.hasRendered ? animation : false, chart);
38459
38615
  if (isHiddenChart) {
38460
38616
  chart.temporaryDisplay();
38461
38617
  }
@@ -38518,6 +38674,7 @@ class Chart {
38518
38674
  });
38519
38675
  chart.getMargins(); // #3098
38520
38676
  // If one axis is dirty, all axes must be redrawn (#792, #2169)
38677
+ let isDirtyBox = chart.isDirtyBox;
38521
38678
  axes.forEach(function (axis) {
38522
38679
  if (axis.isDirty) {
38523
38680
  isDirtyBox = true;
@@ -38654,7 +38811,7 @@ class Chart {
38654
38811
  // inspect the generated series.points.
38655
38812
  series.getPointsCollection()
38656
38813
  .forEach((point) => {
38657
- if (pick(point.selectedStaging, point.selected)) {
38814
+ if (point.selectedStaging ?? point.selected) {
38658
38815
  acc.push(point);
38659
38816
  }
38660
38817
  });
@@ -39053,11 +39210,8 @@ class Chart {
39053
39210
  const chartHeight = chart.chartHeight;
39054
39211
  let chartWidth = chart.chartWidth;
39055
39212
  // Allow table cells and flex-boxes to shrink without the chart
39056
- // blocking them out (#6427) but skip in styled mode so inline styles
39057
- // don't override user CSS on renderTo
39058
- if (!chart.styledMode) {
39059
- css(renderTo, { overflow: 'hidden' });
39060
- }
39213
+ // blocking them out (#6427)
39214
+ css(renderTo, { overflow: 'hidden' });
39061
39215
  // Create the inner container
39062
39216
  if (!chart.styledMode) {
39063
39217
  containerStyle = extend({
@@ -39095,7 +39249,7 @@ class Chart {
39095
39249
  chartWidth = chart.chartWidth;
39096
39250
  if (!chart.styledMode) {
39097
39251
  css(container, {
39098
- width: pick(optionsChart.style?.width, chartWidth + 'px')
39252
+ width: (optionsChart.style?.width ?? chartWidth + 'px')
39099
39253
  });
39100
39254
  }
39101
39255
  }
@@ -39114,7 +39268,7 @@ class Chart {
39114
39268
  // first ResizeObserver reflow
39115
39269
  chart.containerBox = chart.getContainerBox();
39116
39270
  // Set the initial animation from the options
39117
- Chart_setAnimation(void 0, chart);
39271
+ setAnimation(void 0, chart);
39118
39272
  chart.setClassName(optionsChart.className);
39119
39273
  if (!chart.styledMode) {
39120
39274
  chart.renderer.setStyle(optionsChart.style);
@@ -39309,7 +39463,7 @@ class Chart {
39309
39463
  // Handle the isResizing counter
39310
39464
  chart.isResizing += 1;
39311
39465
  // Set the animation for the current process
39312
- Chart_setAnimation(animation, chart);
39466
+ setAnimation(animation, chart);
39313
39467
  const globalAnimation = renderer.globalAnimation;
39314
39468
  chart.oldChartHeight = chart.chartHeight;
39315
39469
  chart.oldChartWidth = chart.chartWidth;
@@ -39328,7 +39482,7 @@ class Chart {
39328
39482
  // Resize the container with the global animation applied if enabled
39329
39483
  // (#2503)
39330
39484
  if (!chart.styledMode) {
39331
- (globalAnimation ? Chart_animate : css)(chart.container, {
39485
+ (globalAnimation ? animate : css)(chart.container, {
39332
39486
  width: `${chartWidth + scrollablePixelsX}px`,
39333
39487
  height: `${chartHeight + scrollablePixelsY}px`
39334
39488
  }, globalAnimation);
@@ -39354,7 +39508,7 @@ class Chart {
39354
39508
  if (chart) {
39355
39509
  fireEvent(chart, 'endResize');
39356
39510
  }
39357
- }, Chart_animObject(globalAnimation).duration);
39511
+ }, animObject(globalAnimation).duration);
39358
39512
  }
39359
39513
  // Handle resizing counter even if we've re-rendered or not (#20548).
39360
39514
  chart.isResizing -= 1;
@@ -39738,7 +39892,7 @@ class Chart {
39738
39892
  const mockTick = new Axis_Tick(axis, 0, '', true), label = mockTick.createLabel('x', labels);
39739
39893
  mockTick.destroy();
39740
39894
  if (label &&
39741
- pick(labels.reserveSpace, !isNumber(options.crossing))) {
39895
+ (labels.reserveSpace ?? !isNumber(options.crossing))) {
39742
39896
  expectedSpace = label.getBBox().height +
39743
39897
  labels.distance +
39744
39898
  Math.max(isNumber(offset) ? offset : 0, 0);
@@ -40073,7 +40227,7 @@ class Chart {
40073
40227
  const chart = this;
40074
40228
  let series;
40075
40229
  if (options) { // <- not necessary
40076
- redraw = pick(redraw, true); // Defaults to true
40230
+ redraw = (redraw ?? true); // Defaults to true
40077
40231
  fireEvent(chart, 'addSeries', { options: options }, function () {
40078
40232
  series = chart.initSeries(options);
40079
40233
  chart.isDirtyLegend = true;
@@ -40164,7 +40318,7 @@ class Chart {
40164
40318
  */
40165
40319
  createAxis(coll, options) {
40166
40320
  const axis = new Axis_Axis(this, options.axis, coll);
40167
- if (pick(options.redraw, true)) {
40321
+ if (options.redraw ?? true) {
40168
40322
  this.redraw(options.animation);
40169
40323
  }
40170
40324
  return axis;
@@ -40212,7 +40366,7 @@ class Chart {
40212
40366
  }
40213
40367
  loadingDiv.className = 'highcharts-loading';
40214
40368
  // Update text
40215
- HTML_AST.setElementHTML(loadingSpan, pick(str, options.lang.loading, ''));
40369
+ HTML_AST.setElementHTML(loadingSpan, (str ?? options.lang.loading ?? ''));
40216
40370
  if (!chart.styledMode) {
40217
40371
  // Update visuals
40218
40372
  css(loadingDiv, extend(loadingStyle, { zIndex: 10 }));
@@ -40223,7 +40377,7 @@ class Chart {
40223
40377
  opacity: 0,
40224
40378
  display: ''
40225
40379
  });
40226
- Chart_animate(loadingDiv, {
40380
+ animate(loadingDiv, {
40227
40381
  opacity: loadingStyle.opacity ?? 0.5
40228
40382
  }, {
40229
40383
  duration: loadingOptions?.showDuration ?? 0
@@ -40251,7 +40405,7 @@ class Chart {
40251
40405
  loadingDiv.className =
40252
40406
  'highcharts-loading highcharts-loading-hidden';
40253
40407
  if (!this.styledMode) {
40254
- Chart_animate(loadingDiv, {
40408
+ animate(loadingDiv, {
40255
40409
  opacity: 0
40256
40410
  }, {
40257
40411
  duration: options.loading?.hideDuration ?? 100,
@@ -40283,6 +40437,9 @@ class Chart {
40283
40437
  * Note that when changing series data, `chart.update` may mutate the passed
40284
40438
  * data options.
40285
40439
  *
40440
+ * If the given options don't differ from the current chart options, the
40441
+ * update is skipped and the `afterUpdate` event is not emitted.
40442
+ *
40286
40443
  * See also the
40287
40444
  * [responsive option set](https://api.highcharts.com/highcharts/responsive).
40288
40445
  * Switching between `responsive.rules` basically runs `chart.update` under
@@ -40327,14 +40484,24 @@ class Chart {
40327
40484
  caption: 'setCaption'
40328
40485
  }, isResponsiveOptions = options.isResponsiveOptions, itemsForRemoval = [];
40329
40486
  let updateAllAxes, updateAllSeries, runSetSize;
40330
- fireEvent(chart, 'update', { options: options });
40487
+ options = diffObjects(options, chart.options);
40488
+ const e = {
40489
+ options,
40490
+ // Event handlers can turn this on or off to control further
40491
+ // processing
40492
+ hasChanged: !!Object.keys(options).length
40493
+ };
40494
+ fireEvent(chart, 'update', e);
40495
+ // If no changes are detected, stop further processing (#24805).
40496
+ if (!e.hasChanged) {
40497
+ return;
40498
+ }
40331
40499
  // If there are responsive rules in action, undo the responsive rules
40332
40500
  // before we apply the updated options and replay the responsive rules
40333
40501
  // on top from the chart.redraw function (#9617).
40334
40502
  if (!isResponsiveOptions) {
40335
40503
  chart.setResponsive(false, true);
40336
40504
  }
40337
- options = diffObjects(options, chart.options);
40338
40505
  chart.userOptions = merge(chart.userOptions, options);
40339
40506
  // If the top-level chart option is present, some special updates are
40340
40507
  // required
@@ -40437,7 +40604,7 @@ class Chart {
40437
40604
  }
40438
40605
  // No match by id found, match by index instead
40439
40606
  if (!item && chart[coll]) {
40440
- item = chart[coll][pick(newOptions.index, i)];
40607
+ item = chart[coll][(newOptions.index ?? i)];
40441
40608
  // Check if we grabbed an item with an existing but
40442
40609
  // different id (#13541). Check that the item in this
40443
40610
  // position is not internal (navigator).
@@ -40513,7 +40680,7 @@ class Chart {
40513
40680
  (isNumber(newHeight) && newHeight !== chart.chartHeight)) {
40514
40681
  chart.setSize(newWidth, newHeight, animation);
40515
40682
  }
40516
- else if (pick(redraw, true)) {
40683
+ else if (redraw ?? true) {
40517
40684
  chart.redraw(animation);
40518
40685
  }
40519
40686
  fireEvent(chart, 'afterUpdate', {
@@ -40562,15 +40729,11 @@ class Chart {
40562
40729
  showResetZoom() {
40563
40730
  const chart = this, lang = chart.options.lang, btnOptions = chart.zooming.resetButton, theme = btnOptions.theme, alignTo = (btnOptions.relativeTo === 'chart' ||
40564
40731
  btnOptions.relativeTo === 'spacingBox' ?
40565
- null :
40732
+ void 0 :
40566
40733
  'plotBox');
40567
- /** @internal */
40568
- function zoomOut() {
40569
- chart.zoomOut();
40570
- }
40571
- fireEvent(this, 'beforeShowResetZoom', null, function () {
40734
+ fireEvent(this, 'beforeShowResetZoom', void 0, () => {
40572
40735
  chart.resetZoomButton = chart.renderer
40573
- .button(lang.resetZoom, null, null, zoomOut, theme)
40736
+ .button(lang.resetZoom, 0, 0, () => chart.zoomOut(), theme)
40574
40737
  .attr({
40575
40738
  align: btnOptions.position.align,
40576
40739
  title: lang.resetZoomTitle
@@ -40648,21 +40811,21 @@ class Chart {
40648
40811
  * @function Highcharts.Chart#transform
40649
40812
  */
40650
40813
  transform(params) {
40651
- const { axes = this.axes, event, from = {}, reset, selection, to = {}, trigger, allowResetButton = true } = params, { inverted, time } = this;
40814
+ const { axes = this.axes, event, from = {}, reset, selection, to = {}, trigger, allowResetButton = true } = params, { time } = this;
40652
40815
  // Remove active points for shared tooltip
40653
40816
  this.hoverPoints?.forEach((point) => point.setState());
40654
40817
  fireEvent(this, 'transform', params);
40655
40818
  let hasZoomed = params.hasZoomed || false, displayButton, isAnyAxisPanning;
40656
40819
  for (const axis of axes) {
40657
- const { horiz, len, minPointOffset = 0, options, reversed } = axis, wh = horiz ? 'width' : 'height', xy = horiz ? 'x' : 'y', toLength = pick(to[wh], axis.len), fromLength = pick(from[wh], axis.len),
40820
+ const { horiz, len, minPointOffset = 0, options, reversed } = axis, wh = horiz ? 'width' : 'height', xy = horiz ? 'x' : 'y', toLength = (to[wh] ?? axis.len), fromLength = (from[wh] ?? axis.len),
40658
40821
  // If fingers pinched very close on this axis, treat as pan
40659
40822
  scale = Math.abs(toLength) < 10 ?
40660
40823
  1 :
40661
40824
  toLength / fromLength, fromCenter = (from[xy] || 0) + fromLength / 2 - axis.pos, toCenter = (to[xy] ?? axis.pos) +
40662
- toLength / 2 - axis.pos, move = fromCenter - toCenter / scale, pointRangeDirection = (reversed && !inverted) ||
40663
- (!reversed && inverted) ?
40664
- -1 :
40665
- 1, minPx = move;
40825
+ toLength / 2 - axis.pos, move = fromCenter - toCenter / scale, pointRangeDirection = ((horiz && !reversed) ||
40826
+ (!horiz && reversed)) ?
40827
+ 1 :
40828
+ -1, minPx = move;
40666
40829
  // Zooming in multiple panes, zoom only in the pane that receives
40667
40830
  // the input
40668
40831
  if (!reset && (fromCenter < 0 || fromCenter > axis.len)) {
@@ -40671,17 +40834,11 @@ class Chart {
40671
40834
  // Adjust offset to ensure selection zoom triggers correctly
40672
40835
  // (#22945)
40673
40836
  // Set offset to 0 for ordinal axis only when zooming out, (#24545).
40674
- const offset = (axis.chart.polar || (axis.isOrdinal && scale <= 1)) ?
40837
+ const offset = (selection || axis.chart.polar ||
40838
+ (axis.isOrdinal && scale <= 1)) ?
40675
40839
  0 :
40676
40840
  (minPointOffset * pointRangeDirection || 0), eventMin = axis.toValue(minPx, true), eventMax = axis.toValue(minPx + len / scale, true);
40677
40841
  let newMin = eventMin + offset, newMax = eventMax - offset, allExtremes = axis.allExtremes;
40678
- if (selection) {
40679
- selection[axis.coll].push({
40680
- axis,
40681
- min: Math.min(eventMin, eventMax),
40682
- max: Math.max(eventMin, eventMax)
40683
- });
40684
- }
40685
40842
  if (newMin > newMax) {
40686
40843
  [newMin, newMax] = [newMax, newMin];
40687
40844
  }
@@ -40738,14 +40895,15 @@ class Chart {
40738
40895
  }
40739
40896
  // Set new extremes if they are actually new
40740
40897
  if (reset || (axis.series.length &&
40741
- (newMin !== min || newMax !== max) &&
40742
- newMin >= floor &&
40743
- newMax <= ceiling)) {
40898
+ (selection ||
40899
+ ((newMin !== min || newMax !== max) &&
40900
+ newMin >= floor &&
40901
+ newMax <= ceiling)))) {
40744
40902
  if (selection) {
40745
40903
  selection[axis.coll].push({
40746
40904
  axis,
40747
- min: newMin,
40748
- max: newMax
40905
+ min: Math.min(eventMin, eventMax),
40906
+ max: Math.max(eventMin, eventMax)
40749
40907
  });
40750
40908
  }
40751
40909
  else {
@@ -40753,11 +40911,14 @@ class Chart {
40753
40911
  // disallow certain axis padding options that would make
40754
40912
  // panning/zooming hard. Reset and redraw after the
40755
40913
  // operation has finished.
40756
- axis.isPanning = trigger !== 'zoom';
40914
+ axis.isPanning = trigger !== 'zoom' &&
40915
+ trigger !== 'drop';
40757
40916
  if (axis.isPanning && trigger !== 'mousewheel') {
40758
40917
  isAnyAxisPanning = true; // #21319
40759
40918
  }
40760
- axis.setExtremes(reset ? void 0 : newMin, reset ? void 0 : newMax, false, false, { move, trigger, scale });
40919
+ if (trigger !== 'drop') {
40920
+ axis.setExtremes(reset ? void 0 : newMin, reset ? void 0 : newMax, false, false, { move, trigger, scale });
40921
+ }
40761
40922
  if (!reset &&
40762
40923
  (newMin > floor || newMax < ceiling)) {
40763
40924
  displayButton = allowResetButton;
@@ -40788,7 +40949,8 @@ class Chart {
40788
40949
  });
40789
40950
  }
40790
40951
  else {
40791
- // Show or hide the Reset zoom button, but not while panning
40952
+ // Show or hide the Reset zoom button, but not while
40953
+ // panning.
40792
40954
  if (displayButton &&
40793
40955
  !isAnyAxisPanning &&
40794
40956
  !this.resetZoomButton) {
@@ -41030,7 +41192,6 @@ extend(Chart.prototype, {
41030
41192
  */
41031
41193
 
41032
41194
 
41033
- const { stop: ScrollablePlotArea_stop } = AnimationUtilities;
41034
41195
 
41035
41196
  const { composed: ScrollablePlotArea_composed } = Core_Globals;
41036
41197
 
@@ -41196,7 +41357,7 @@ class ScrollablePlotArea {
41196
41357
  this.moveFixedElements();
41197
41358
  }
41198
41359
  // Increase the size of the scrollable renderer and background
41199
- ScrollablePlotArea_stop(chart.container);
41360
+ stop(chart.container);
41200
41361
  css(container, {
41201
41362
  width: `${scrollableWidth}px`,
41202
41363
  height: `${scrollableHeight}px`
@@ -41353,6 +41514,13 @@ ScrollablePlotArea.fixedSelectors = [
41353
41514
  * vertical scrolling, depending on whether the `minWidth` or `minHeight`
41354
41515
  * option is set.
41355
41516
  *
41517
+ * **Note:** Because native browser scrollbars are used, they may
41518
+ * overlap with fixed chart elements such as credits or the chart
41519
+ * border. To avoid this collision, it is recommended to manually add
41520
+ * extra space to the corresponding side using `chart.spacingBottom`
41521
+ * (for horizontal scrollbars) or `chart.spacingRight` (for vertical
41522
+ * scrollbars).
41523
+ *
41356
41524
  * @sample highcharts/chart/scrollable-plotarea
41357
41525
  * Scrollable plot area
41358
41526
  * @sample highcharts/chart/scrollable-plotarea-vertical
@@ -41513,7 +41681,7 @@ class StackItem {
41513
41681
  r: options.borderRadius || 0,
41514
41682
  text: str,
41515
41683
  // Set default padding to 5 as it is in dataLabels #12308
41516
- padding: pick(options.padding, 5),
41684
+ padding: (options.padding ?? 5),
41517
41685
  visibility: 'hidden' // Hidden until setOffset is called
41518
41686
  };
41519
41687
  if (!chart.styledMode) {
@@ -41547,7 +41715,7 @@ class StackItem {
41547
41715
  }), { verticalAlign } = alignOptions;
41548
41716
  if (label && stackBox) {
41549
41717
  const labelBox = label.getBBox(void 0, 0), padding = label.padding;
41550
- let isJustify = pick(options.overflow, 'justify') === 'justify', visible;
41718
+ let isJustify = (options.overflow ?? 'justify') === 'justify', visible;
41551
41719
  // Reset alignOptions property after justify #12337
41552
41720
  alignOptions.x = options.x || 0;
41553
41721
  alignOptions.y = options.y || 0;
@@ -41584,7 +41752,7 @@ class StackItem {
41584
41752
  rotationOriginY: labelBox.height / 2
41585
41753
  });
41586
41754
  // Check if the dataLabel should be visible.
41587
- if (pick(!isJustify && options.crop, true)) {
41755
+ if (((!isJustify && options.crop) ?? true)) {
41588
41756
  visible =
41589
41757
  isNumber(label.x) &&
41590
41758
  isNumber(label.y) &&
@@ -41618,7 +41786,7 @@ class StackItem {
41618
41786
  getStackBox(stackBoxProps) {
41619
41787
  const stackItem = this, axis = this.axis, chart = axis.chart, { boxTop, defaultX, xOffset, width, boxBottom } = stackBoxProps, totalStackValue = axis.stacking.usePercentage ?
41620
41788
  100 :
41621
- pick(boxTop, this.total, 0), y = axis.toPixels(totalStackValue), xAxis = stackBoxProps.xAxis || chart.xAxis[0], x = pick(defaultX, xAxis.translate(this.x)) + xOffset, yZero = axis.toPixels(boxBottom ||
41789
+ (boxTop ?? this.total ?? 0), y = axis.toPixels(totalStackValue), xAxis = stackBoxProps.xAxis || chart.xAxis[0], x = (defaultX ?? xAxis.translate(this.x)) + xOffset, yZero = axis.toPixels(boxBottom ||
41622
41790
  (isNumber(axis.min) &&
41623
41791
  axis.logarithmic &&
41624
41792
  axis.logarithmic.lin2log(axis.min)) ||
@@ -41703,7 +41871,6 @@ class StackItem {
41703
41871
  * */
41704
41872
 
41705
41873
 
41706
- const { getDeferredAnimation: StackingAxis_getDeferredAnimation } = AnimationUtilities;
41707
41874
 
41708
41875
  const { series: { prototype: seriesProto } } = Series_SeriesRegistry;
41709
41876
 
@@ -41732,7 +41899,7 @@ function chartGetStacks() {
41732
41899
  if (series.options.stacking && series.reserveSpace()) {
41733
41900
  series.stackKey = [
41734
41901
  series.type,
41735
- pick(series.options.stack, ''),
41902
+ (series.options.stack ?? ''),
41736
41903
  inverted ? xAxisOptions.top : xAxisOptions.left,
41737
41904
  inverted ? xAxisOptions.height : xAxisOptions.width
41738
41905
  ].join(',');
@@ -41895,7 +42062,7 @@ function seriesSetStackedPoints(axis, stackingParam) {
41895
42062
  stack = stacks[key][x];
41896
42063
  if (y !== null) {
41897
42064
  stack.points[pointKey] = stack.points[series.index] = [
41898
- pick(stack.cumulative, stackThreshold)
42065
+ (stack.cumulative ?? stackThreshold)
41899
42066
  ];
41900
42067
  // Record the base of the stack
41901
42068
  if (!defined(stack.cumulative)) {
@@ -41943,7 +42110,7 @@ function seriesSetStackedPoints(axis, stackingParam) {
41943
42110
  stack.cumulative = (total || 1) - 1;
41944
42111
  }
41945
42112
  else {
41946
- stack.cumulative = correctFloat(pick(stack.cumulative, stackThreshold) + yNumber);
42113
+ stack.cumulative = correctFloat((stack.cumulative ?? stackThreshold) + yNumber);
41947
42114
  }
41948
42115
  stack.total = total;
41949
42116
  if (y !== null) {
@@ -42047,7 +42214,7 @@ class AxisAdditions {
42047
42214
  }
42048
42215
  /** @internal */
42049
42216
  renderStackTotals() {
42050
- const stacking = this, axis = stacking.axis, chart = axis.chart, renderer = chart.renderer, stacks = stacking.stacks, stackLabelsAnim = axis.options.stackLabels?.animation, animationConfig = StackingAxis_getDeferredAnimation(chart, stackLabelsAnim || false), stackTotalGroup = stacking.stackTotalGroup = (stacking.stackTotalGroup ||
42217
+ const stacking = this, axis = stacking.axis, chart = axis.chart, renderer = chart.renderer, stacks = stacking.stacks, stackLabelsAnim = axis.options.stackLabels?.animation, animationConfig = getDeferredAnimation(chart, stackLabelsAnim || false), stackTotalGroup = stacking.stackTotalGroup = (stacking.stackTotalGroup ||
42051
42218
  renderer
42052
42219
  .g('stack-labels')
42053
42220
  .attr({
@@ -42958,8 +43125,7 @@ class AreaSeries extends AreaSeries_LineSeries {
42958
43125
  */
42959
43126
  getGraphPath(points) {
42960
43127
  const getGraphPath = AreaSeries_LineSeries.prototype.getGraphPath, options = this.options, stacking = options.stacking, yAxis = this.yAxis, bottomPoints = [], graphPoints = [], seriesIndex = this.index, stacks = yAxis.stacking.stacks[this.stackKey], threshold = options.threshold, translatedThreshold = Math.round(// #10909
42961
- yAxis.getThreshold(options.threshold)), connectNulls = pick(// #10574
42962
- options.connectNulls, stacking === 'percent'),
43128
+ yAxis.getThreshold(options.threshold)), connectNulls = (options.connectNulls ?? stacking === 'percent'),
42963
43129
  // To display null points in underlying stacked series, this
42964
43130
  // series graph must be broken, and the area also fall down to
42965
43131
  // fill the gap left by the null point. #2069
@@ -43012,9 +43178,9 @@ class AreaSeries extends AreaSeries_LineSeries {
43012
43178
  // Treat points with undefined plotY as null (e.g. non-positive
43013
43179
  // values on logarithmic axis, #18422)
43014
43180
  isNull = points[i].isNull || !defined(points[i].plotY);
43015
- plotX = pick(points[i].rectPlotX, points[i].plotX);
43181
+ plotX = (points[i].rectPlotX ?? points[i].plotX);
43016
43182
  yBottom = stacking ?
43017
- pick(points[i].yBottom, translatedThreshold) :
43183
+ (points[i].yBottom ?? translatedThreshold) :
43018
43184
  translatedThreshold;
43019
43185
  if (!isNull || connectNulls) {
43020
43186
  if (!connectNulls) {
@@ -43352,10 +43518,10 @@ class SplineSeries extends SplineSeries_LineSeries {
43352
43518
  }
43353
43519
  const ret = [
43354
43520
  'C',
43355
- pick(lastPoint.rightContX, lastPoint.plotX, 0),
43356
- pick(lastPoint.rightContY, lastPoint.plotY, 0),
43357
- pick(leftContX, plotX, 0),
43358
- pick(leftContY, plotY, 0),
43521
+ (lastPoint.rightContX ?? lastPoint.plotX ?? 0),
43522
+ (lastPoint.rightContY ?? lastPoint.plotY ?? 0),
43523
+ (leftContX ?? plotX ?? 0),
43524
+ (leftContY ?? plotY ?? 0),
43359
43525
  plotX,
43360
43526
  plotY
43361
43527
  ];
@@ -43800,6 +43966,8 @@ const ColumnSeriesDefaults = {
43800
43966
  * 0.25
43801
43967
  * @sample {highcharts} highcharts/plotoptions/column-pointpadding-none/
43802
43968
  * 0 for tightly packed columns
43969
+ * @sample {highcharts} highcharts/plotoptions/pie-pointpadding/
43970
+ * Pie point padding plugin
43803
43971
  *
43804
43972
  * @product highcharts highstock gantt
43805
43973
  */
@@ -44131,12 +44299,12 @@ const ColumnSeriesDefaults = {
44131
44299
  */
44132
44300
  /**
44133
44301
  * @excluding halo, lineWidth, lineWidthPlus, marker
44134
- * @product highcharts highstock
44302
+ * @product highcharts highstock gantt
44135
44303
  * @apioption series.column.states.hover
44136
44304
  */
44137
44305
  /**
44138
44306
  * @excluding halo, lineWidth, lineWidthPlus, marker
44139
- * @product highcharts highstock
44307
+ * @product highcharts highstock gantt
44140
44308
  * @apioption series.column.states.select
44141
44309
  */
44142
44310
  /**
@@ -44166,7 +44334,6 @@ const ColumnSeriesDefaults = {
44166
44334
  * */
44167
44335
 
44168
44336
 
44169
- const { animObject: ColumnSeries_animObject } = AnimationUtilities;
44170
44337
 
44171
44338
  const { parse: ColumnSeries_color } = Color_Color;
44172
44339
 
@@ -44237,7 +44404,7 @@ class ColumnSeries extends Series_Series {
44237
44404
  }
44238
44405
  else { // Run the animation
44239
44406
  translateStart = Number(series.group.attr(translateProp));
44240
- series.group.animate({ scaleY: 1 }, extend(ColumnSeries_animObject(series.options.animation), {
44407
+ series.group.animate({ scaleY: 1 }, extend(animObject(series.options.animation), {
44241
44408
  // Do the scale synchronously to ensure smooth
44242
44409
  // updating (#5030, #7228)
44243
44410
  step: function (val, fx) {
@@ -44323,7 +44490,7 @@ class ColumnSeries extends Series_Series {
44323
44490
  xAxis.tickInterval ||
44324
44491
  1), // #2610
44325
44492
  xAxis.len // #1535
44326
- ), groupPadding = categoryWidth * options.groupPadding, groupWidth = categoryWidth - 2 * groupPadding, pointOffsetWidth = groupWidth / (columnCount || 1), pointWidth = Math.min(options.maxPointWidth || xAxis.len, pick(options.pointWidth, pointOffsetWidth * (1 - 2 * options.pointPadding))), pointPadding = (pointOffsetWidth - pointWidth) / 2,
44493
+ ), groupPadding = categoryWidth * options.groupPadding, groupWidth = categoryWidth - 2 * groupPadding, pointOffsetWidth = groupWidth / (columnCount || 1), pointWidth = Math.min(options.maxPointWidth || xAxis.len, (options.pointWidth ?? pointOffsetWidth * (1 - 2 * options.pointPadding))), pointPadding = (pointOffsetWidth - pointWidth) / 2,
44327
44494
  // #1251, #3737
44328
44495
  colIndex = (series.columnIndex || 0) + (reverseStacks ? 1 : 0), pointXOffset = pointPadding +
44329
44496
  (groupPadding +
@@ -44573,11 +44740,11 @@ class ColumnSeries extends Series_Series {
44573
44740
  */
44574
44741
  pointAttribs(point, state) {
44575
44742
  const options = this.options, p2o = this.pointAttrToOptions || {}, strokeOption = p2o.stroke || 'borderColor', strokeWidthOption = p2o['stroke-width'] || 'borderWidth';
44576
- let stateOptions, zone, brightness, fill = (point && point.color) || this.color,
44743
+ let stateOptions, zone, brightness, fill = point?.color || this.color,
44577
44744
  // Set to fill when borderColor null:
44578
- stroke = ((point && point[strokeOption]) ||
44745
+ stroke = (point?.[strokeOption] ||
44579
44746
  options[strokeOption] ||
44580
- fill), dashstyle = (point && point.options.dashStyle) || options.dashStyle, strokeWidth = (point?.[strokeWidthOption]) ??
44747
+ fill), dashstyle = point?.options.dashStyle || options.dashStyle, strokeWidth = point?.[strokeWidthOption] ??
44581
44748
  options[strokeWidthOption] ??
44582
44749
  this[strokeWidthOption] ?? 1, opacity = (point?.isNull && options.nullInteraction) ?
44583
44750
  0 :
@@ -44598,7 +44765,7 @@ class ColumnSeries extends Series_Series {
44598
44765
  }
44599
44766
  // Select or hover states
44600
44767
  if (state && point) {
44601
- stateOptions = merge(options.states[state],
44768
+ stateOptions = merge(options.states?.[state],
44602
44769
  // #6401
44603
44770
  point.options.states?.[state] || {});
44604
44771
  brightness = stateOptions.brightness;
@@ -44608,14 +44775,13 @@ class ColumnSeries extends Series_Series {
44608
44775
  .brighten(stateOptions.brightness)
44609
44776
  .get()) || fill;
44610
44777
  stroke = stateOptions[strokeOption] || stroke;
44611
- strokeWidth =
44612
- stateOptions[strokeWidthOption] || strokeWidth;
44778
+ strokeWidth = stateOptions[strokeWidthOption] || strokeWidth;
44613
44779
  dashstyle = stateOptions.dashStyle || dashstyle;
44614
- opacity = pick(stateOptions.opacity, opacity);
44780
+ opacity = stateOptions.opacity ?? opacity;
44615
44781
  }
44616
44782
  const ret = {
44617
- fill: fill,
44618
- stroke: stroke,
44783
+ fill,
44784
+ stroke,
44619
44785
  'stroke-width': strokeWidth,
44620
44786
  opacity: point?.condemned ? 0 : opacity
44621
44787
  };
@@ -44656,6 +44822,7 @@ class ColumnSeries extends Series_Series {
44656
44822
  initialAttr = merge(shapeArgs, point.getOrigin(point.origin, shapeArgs));
44657
44823
  if (!styledMode) {
44658
44824
  initialAttr.opacity = 0;
44825
+ initialAttr['stroke-width'] = 0;
44659
44826
  }
44660
44827
  shouldUpdate = true;
44661
44828
  verb = 'animate';
@@ -44671,7 +44838,7 @@ class ColumnSeries extends Series_Series {
44671
44838
  }
44672
44839
  // Presentational
44673
44840
  if (!styledMode) {
44674
- graphic[verb](series.pointAttribs(point, (point.selected && 'select')))
44841
+ graphic[verb](series.pointAttribs(point, point.selected ? 'select' : ''))
44675
44842
  .shadow(point.allowShadow !== false && options.shadow);
44676
44843
  }
44677
44844
  graphic
@@ -44795,6 +44962,7 @@ Series_SeriesRegistry.registerSeriesType('column', ColumnSeries);
44795
44962
  * Default Export
44796
44963
  *
44797
44964
  * */
44965
+ /** @internal */
44798
44966
  /* harmony default export */ const Column_ColumnSeries = (ColumnSeries);
44799
44967
  /* *
44800
44968
  *
@@ -44831,7 +44999,6 @@ Series_SeriesRegistry.registerSeriesType('column', ColumnSeries);
44831
44999
  * */
44832
45000
 
44833
45001
 
44834
- const { getDeferredAnimation: DataLabel_getDeferredAnimation } = AnimationUtilities;
44835
45002
 
44836
45003
  const { format: DataLabel_format } = Core_Templating;
44837
45004
 
@@ -44887,7 +45054,7 @@ var DataLabel;
44887
45054
  // that parts of the align box is inside the plot area
44888
45055
  // (#12370). When stacking, it is always inside regardless
44889
45056
  // of the option (#15148).
44890
- pick(options.inside, !!this.options.stacking) &&
45057
+ (options.inside ?? !!this.options.stacking) &&
44891
45058
  alignTo &&
44892
45059
  chart.isInsidePlot(plotX, inverted ?
44893
45060
  alignTo.x + 1 :
@@ -44990,8 +45157,8 @@ var DataLabel;
44990
45157
  // zIndex: 20
44991
45158
  // }).add();
44992
45159
  // chart.renderer.circle(
44993
- // chart.plotLeft + pick(dataLabel.alignAttr.x, 0),
44994
- // chart.plotTop + pick(dataLabel.alignAttr.y, 0),
45160
+ // chart.plotLeft + (dataLabel.alignAttr.x ?? 0),
45161
+ // chart.plotTop + (dataLabel.alignAttr.y ?? 0),
44995
45162
  // 2
44996
45163
  // ).attr({
44997
45164
  // fill: 'red',
@@ -45148,7 +45315,7 @@ var DataLabel;
45148
45315
  'var(--highcharts-background-color)'), groupByIndex = [], seriesDlOptions = mergedDataLabelOptions(series);
45149
45316
  // Resolve the animation
45150
45317
  const { animation, defer } = seriesDlOptions[0], animationConfig = defer ?
45151
- DataLabel_getDeferredAnimation(chart, animation, series) :
45318
+ getDeferredAnimation(chart, animation, series) :
45152
45319
  { defer: 0, duration: 0 };
45153
45320
  fireEvent(this, 'drawDataLabels');
45154
45321
  if (series.hasDataLabels?.()) {
@@ -45174,7 +45341,7 @@ var DataLabel;
45174
45341
  if (labelEnabled) {
45175
45342
  // Create individual options structure that can be
45176
45343
  // extended without affecting others
45177
- formatString = pick(labelOptions[point.formatPrefix + 'Format'], labelOptions.format);
45344
+ formatString = (labelOptions[point.formatPrefix + 'Format'] ?? labelOptions.format);
45178
45345
  labelText = defined(formatString) ?
45179
45346
  DataLabel_format(formatString, point, chart) :
45180
45347
  (labelOptions[point.formatPrefix + 'Formatter'] ||
@@ -45182,7 +45349,9 @@ var DataLabel;
45182
45349
  rotation = labelOptions.rotation;
45183
45350
  if (!chart.styledMode) {
45184
45351
  // Determine the color
45185
- style.color = pick(labelOptions.color, style.color, isString(series.color) ? series.color : void 0, 'var(--highcharts-neutral-color-100)');
45352
+ style.color = (isString(labelOptions.color) ?
45353
+ labelOptions.color :
45354
+ void 0) ?? style.color ?? (isString(series.color) ? series.color : void 0) ?? 'var(--highcharts-neutral-color-100)';
45186
45355
  // Get automated contrast color
45187
45356
  if (style.color === 'contrast') {
45188
45357
  if (backgroundColor !== 'none') {
@@ -45914,6 +46083,8 @@ const ScatterSeriesDefaults = {
45914
46083
  * Arrays of datetime x and y
45915
46084
  * @sample {highcharts} highcharts/series/data-array-of-name-value/
45916
46085
  * Arrays of point.name and y
46086
+ * @sample {highcharts} highcharts/series-scatter/scatter-cluster/
46087
+ * Computed clusters
45917
46088
  * @sample {highcharts} highcharts/series/data-array-of-objects/
45918
46089
  * Config objects
45919
46090
  *
@@ -45981,14 +46152,15 @@ class ScatterSeries extends ScatterSeries_LineSeries {
45981
46152
  return rand - Math.floor(rand);
45982
46153
  }
45983
46154
  if (jitter) {
45984
- this.points.forEach(function (point, i) {
45985
- ['x', 'y'].forEach(function (dim, j) {
46155
+ this.points.forEach((point, i) => {
46156
+ ['x', 'y'].forEach((dim, j) => {
45986
46157
  if (jitter[dim] && !point.isNull) {
45987
- const plotProp = `plot${dim.toUpperCase()}`, axis = series[`${dim}Axis`], translatedJitter = jitter[dim] *
45988
- axis.transA;
46158
+ const plotProp = `plot${dim.toUpperCase()}`, axis = series[`${dim}Axis`];
45989
46159
  if (axis && !axis.logarithmic) {
45990
46160
  // Identify the outer bounds of the jitter range
45991
- const min = Math.max(0, (point[plotProp] || 0) - translatedJitter), max = Math.min(axis.len, (point[plotProp] || 0) + translatedJitter);
46161
+ // (#25054)
46162
+ const translatedJitter = jitter[dim] * axis.transA *
46163
+ (axis.reversed ? -1 : 1), min = (point[plotProp] || 0) - translatedJitter, max = (point[plotProp] || 0) + translatedJitter;
45992
46164
  // Find a random position within this range
45993
46165
  point[plotProp] = min +
45994
46166
  (max - min) * unrandom(i + j * len);
@@ -46062,7 +46234,7 @@ Series_SeriesRegistry.registerSeriesType('scatter', ScatterSeries);
46062
46234
  const { deg2rad: CenteredUtilities_deg2rad } = Core_Globals;
46063
46235
 
46064
46236
  /**
46065
- * @private
46237
+ * @internal
46066
46238
  */
46067
46239
  var CenteredUtilities;
46068
46240
  (function (CenteredUtilities) {
@@ -46080,7 +46252,7 @@ var CenteredUtilities;
46080
46252
  * Get the center of the pie based on the size and center options relative
46081
46253
  * to the plot area. Borrowed by the polar and gauge series types.
46082
46254
  *
46083
- * @private
46255
+ * @internal
46084
46256
  * @function Highcharts.CenteredSeriesMixin.getCenter
46085
46257
  */
46086
46258
  function getCenter() {
@@ -46093,11 +46265,13 @@ var CenteredUtilities;
46093
46265
  innerSize = parseFloat(innerSize);
46094
46266
  }
46095
46267
  const positions = [
46096
- pick(centerOption?.[0], '50%'),
46097
- pick(centerOption?.[1], '50%'),
46268
+ (centerOption?.[0] ?? '50%'),
46269
+ (centerOption?.[1] ?? '50%'),
46098
46270
  // Prevent from negative values
46099
- pick(size && size < 0 ? void 0 : options.size, '100%'),
46100
- pick(innerSize && innerSize < 0 ? void 0 : options.innerSize || 0, '0%')
46271
+ ((size && size < 0 ? void 0 : options.size) ?? '100%'),
46272
+ ((innerSize && innerSize < 0 ?
46273
+ void 0 :
46274
+ options.innerSize || 0) ?? '0%')
46101
46275
  ];
46102
46276
  for (i = 0; i < 4; ++i) {
46103
46277
  value = positions[i];
@@ -46125,7 +46299,7 @@ var CenteredUtilities;
46125
46299
  * GetStartAndEndRadians - Calculates start and end angles in radians.
46126
46300
  * Used in series types such as pie and sunburst.
46127
46301
  *
46128
- * @private
46302
+ * @internal
46129
46303
  * @function Highcharts.CenteredSeriesMixin.getStartAndEndRadians
46130
46304
  *
46131
46305
  * @param {number} [start]
@@ -46157,6 +46331,7 @@ var CenteredUtilities;
46157
46331
  * Default Export
46158
46332
  *
46159
46333
  * */
46334
+ /** @internal */
46160
46335
  /* harmony default export */ const Series_CenteredUtilities = (CenteredUtilities);
46161
46336
  /* *
46162
46337
  *
@@ -46164,7 +46339,7 @@ var CenteredUtilities;
46164
46339
  *
46165
46340
  * */
46166
46341
  /**
46167
- * @private
46342
+ * @internal
46168
46343
  * @interface Highcharts.RadianAngles
46169
46344
  */ /**
46170
46345
  * @name Highcharts.RadianAngles#end
@@ -46189,7 +46364,6 @@ var CenteredUtilities;
46189
46364
  * */
46190
46365
 
46191
46366
 
46192
- const { setAnimation: PiePoint_setAnimation } = AnimationUtilities;
46193
46367
 
46194
46368
 
46195
46369
  /* *
@@ -46297,9 +46471,9 @@ class PiePoint extends Series_Point {
46297
46471
  */
46298
46472
  slice(sliced, redraw, animation) {
46299
46473
  const series = this.series, chart = series.chart;
46300
- PiePoint_setAnimation(animation, chart);
46474
+ setAnimation(animation, chart);
46301
46475
  // Redraw is true by default
46302
- redraw = pick(redraw, true);
46476
+ redraw = (redraw ?? true);
46303
46477
  this.sliced = this.options.sliced = sliced ?? !this.sliced;
46304
46478
  // Update options.data
46305
46479
  if (series.options.data) {
@@ -47104,7 +47278,8 @@ class PieSeries extends Series_Series {
47104
47278
  // Start values
47105
47279
  graphic.attr({
47106
47280
  // Animate from inner radius (#779)
47107
- r: pick(point.startR, (series.center && series.center[3] / 2)),
47281
+ r: point.startR ??
47282
+ (series.center && series.center[3] / 2),
47108
47283
  start: startAngleRad,
47109
47284
  end: startAngleRad
47110
47285
  });
@@ -47745,7 +47920,7 @@ var PieDataLabel_ColumnDataLabel;
47745
47920
  labelPosition.computed.x = x;
47746
47921
  labelPosition.computed.y = y - topOffset;
47747
47922
  // Detect overflowing data labels
47748
- if (pick(dataLabelOptions.crop, true)) {
47923
+ if (dataLabelOptions.crop ?? true) {
47749
47924
  dataLabelWidth = dataLabel.getBBox().width;
47750
47925
  let sideOverflow;
47751
47926
  // Overflow left
@@ -48261,7 +48436,10 @@ function OverlappingDataLabels_onChartRender() {
48261
48436
  if (point.visible) {
48262
48437
  (point.dataLabels || []).forEach((label) => {
48263
48438
  const options = label.options || {};
48264
- label.labelrank = pick(options.labelrank, point.labelrank, point.shapeArgs?.height); // #4118
48439
+ label.labelrank =
48440
+ options.labelrank ??
48441
+ point.labelrank ??
48442
+ point.shapeArgs?.height; // #4118
48265
48443
  // #21725: Sync target positions for generic overlap
48266
48444
  // checking. During animations (e.g., toggling a
48267
48445
  // point), DOM positions may overlap. We force
@@ -48435,7 +48613,7 @@ function BorderRadius_arc(x, y, w, h, options = {}) {
48435
48613
  if (options.open || !options.borderRadius) {
48436
48614
  return path;
48437
48615
  }
48438
- const alpha = end - start, sinHalfAlpha = Math.sin(alpha / 2), borderRadius = Math.max(Math.min(relativeLength(options.borderRadius || 0, r - innerR),
48616
+ const alpha = end - start, sinHalfAlpha = Math.sin(alpha / 2), borderRadius = Math.max(Math.min(relativeLength(borderRadiusObject(options.borderRadius).radius, r - innerR),
48439
48617
  // Cap to half the sector radius
48440
48618
  (r - innerR) / 2,
48441
48619
  // For smaller pie slices, cap to the largest small circle that
@@ -48461,7 +48639,7 @@ function seriesOnAfterColumnTranslate() {
48461
48639
  if (this.options.borderRadius &&
48462
48640
  !(this.chart.is3d && this.chart.is3d())) {
48463
48641
  const { options, yAxis } = this, percent = options.stacking === 'percent', seriesDefault = BorderRadius_defaultOptions.plotOptions?.[this.type]
48464
- ?.borderRadius, borderRadius = optionsToObject(options.borderRadius, isObject(seriesDefault) ? seriesDefault : {}), reversed = yAxis.options.reversed;
48642
+ ?.borderRadius, borderRadius = borderRadiusObject(options.borderRadius, isObject(seriesDefault) ? seriesDefault : {}), reversed = yAxis.options.reversed;
48465
48643
  for (const point of this.points) {
48466
48644
  const { shapeArgs } = point;
48467
48645
  if (point.shapeType === 'roundedRect' && shapeArgs) {
@@ -48533,8 +48711,12 @@ function composeBorderRadius(SeriesClass, SVGElementClass, SVGRendererClass) {
48533
48711
  symbols.roundedRect = BorderRadius_roundedRect;
48534
48712
  }
48535
48713
  }
48536
- /** @internal */
48537
- function optionsToObject(options, seriesBROptions) {
48714
+ /**
48715
+ * Utility function to get the full border radius options object, from a simple
48716
+ * number or a partial options object.
48717
+ * @internal
48718
+ */
48719
+ function borderRadiusObject(options, seriesBROptions) {
48538
48720
  if (!isObject(options)) {
48539
48721
  options = { radius: options || 0 };
48540
48722
  }
@@ -48542,7 +48724,7 @@ function optionsToObject(options, seriesBROptions) {
48542
48724
  }
48543
48725
  /** @internal */
48544
48726
  function pieSeriesOnAfterTranslate() {
48545
- const borderRadius = optionsToObject(this.options.borderRadius);
48727
+ const borderRadius = borderRadiusObject(this.options.borderRadius);
48546
48728
  for (const point of this.points) {
48547
48729
  const shapeArgs = point.shapeArgs;
48548
48730
  if (shapeArgs) {
@@ -48661,7 +48843,7 @@ function BorderRadius_roundedRect(x, y, width, height, options = {}) {
48661
48843
  * Column and pie with rounded border
48662
48844
  *
48663
48845
  * @name Highcharts.BorderRadiusOptionsObject#radius
48664
- * @type {string|number}
48846
+ * @type {string|number|undefined}
48665
48847
  */ /**
48666
48848
  * The scope of the rounding for column charts or plot bands. In a stacked
48667
48849
  * column chart, the value `point` means each single point will get rounded
@@ -48676,8 +48858,7 @@ function BorderRadius_roundedRect(x, y, width, height, options = {}) {
48676
48858
  * Rounded columns
48677
48859
  *
48678
48860
  * @name Highcharts.BorderRadiusOptionsObject#scope
48679
- * @validvalue ["individual", "point", "stack"]
48680
- * @type {string}
48861
+ * @type {"individual"|"point"|"stack"|undefined}
48681
48862
  */ /**
48682
48863
  * For column charts, where in the point or stack to apply rounding. The `end`
48683
48864
  * value means only those corners at the point value will be rounded, leaving
@@ -48688,8 +48869,7 @@ function BorderRadius_roundedRect(x, y, width, height, options = {}) {
48688
48869
  * Rounding on all corners
48689
48870
  *
48690
48871
  * @name Highcharts.BorderRadiusOptionsObject#where
48691
- * @validvalue ["all", "end"]
48692
- * @type {string}
48872
+ * @type {"all"|"end"|undefined}
48693
48873
  * @default end
48694
48874
  */
48695
48875
  (''); // Keeps doclets above in JS file
@@ -48748,10 +48928,12 @@ var Responsive;
48748
48928
  */
48749
48929
  function matchResponsiveRule(rule, matches) {
48750
48930
  const condition = rule.condition, fn = condition.callback || function () {
48751
- return (this.chartWidth <= pick(condition.maxWidth, Number.MAX_VALUE) &&
48752
- this.chartHeight <= pick(condition.maxHeight, Number.MAX_VALUE) &&
48753
- this.chartWidth >= pick(condition.minWidth, 0) &&
48754
- this.chartHeight >= pick(condition.minHeight, 0));
48931
+ return (this.chartWidth <=
48932
+ (condition.maxWidth ?? Number.MAX_VALUE) &&
48933
+ this.chartHeight <=
48934
+ (condition.maxHeight ?? Number.MAX_VALUE) &&
48935
+ this.chartWidth >= (condition.minWidth ?? 0) &&
48936
+ this.chartHeight >= (condition.minHeight ?? 0));
48755
48937
  };
48756
48938
  if (fn.call(this, this)) {
48757
48939
  matches.push(rule._id);
@@ -49033,12 +49215,17 @@ G.SVGElement = SVG_SVGElement;
49033
49215
  G.SVGRenderer = SVG_SVGRenderer;
49034
49216
  G.Templating = Core_Templating;
49035
49217
  G.Tick = Axis_Tick;
49036
- G.Time = Core_Time;
49218
+ G.Time = class extends Core_Time {
49219
+ constructor(options, lang) {
49220
+ const defaultOptions = Defaults.getOptions();
49221
+ super(options ?? defaultOptions.time, lang ?? defaultOptions.lang);
49222
+ }
49223
+ };
49037
49224
  G.Tooltip = Core_Tooltip;
49038
49225
  // Utilities
49039
49226
  G.addEvent = addEvent;
49040
- G.animObject = AnimationUtilities.animObject;
49041
- G.animate = AnimationUtilities.animate;
49227
+ G.animObject = animObject;
49228
+ G.animate = animate;
49042
49229
  G.arrayMax = arrayMax;
49043
49230
  G.arrayMin = arrayMin;
49044
49231
  G.attr = attr;
@@ -49065,7 +49252,7 @@ G.fireEvent = fireEvent;
49065
49252
  G.format = Core_Templating.format;
49066
49253
  G.getAlignFactor = getAlignFactor;
49067
49254
  G.getClosestDistance = getClosestDistance;
49068
- G.getDeferredAnimation = AnimationUtilities.getDeferredAnimation;
49255
+ G.getDeferredAnimation = getDeferredAnimation;
49069
49256
  G.getMagnitude = getMagnitude;
49070
49257
  G.getNestedProperty = getNestedProperty;
49071
49258
  G.getOptions = Defaults.getOptions;
@@ -49092,11 +49279,11 @@ G.relativeLength = relativeLength;
49092
49279
  G.removeEvent = removeEvent;
49093
49280
  G.replaceNested = replaceNested;
49094
49281
  G.seriesType = Series_SeriesRegistry.seriesType;
49095
- G.setAnimation = AnimationUtilities.setAnimation;
49282
+ G.setAnimation = setAnimation;
49096
49283
  G.setOptions = Defaults.setOptions;
49097
49284
  G.splat = splat;
49098
49285
  G.stableSort = stableSort;
49099
- G.stop = AnimationUtilities.stop;
49286
+ G.stop = stop;
49100
49287
  G.syncTimeout = syncTimeout;
49101
49288
  G.time = Defaults.defaultTime;
49102
49289
  G.ucfirst = ucfirst;