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
package/highcharts.src.js CHANGED
@@ -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
@@ -21,16 +21,31 @@
21
21
  return /******/ (() => { // webpackBootstrap
22
22
  /******/ "use strict";
23
23
  /******/ // The require scope
24
- /******/ var __webpack_require__ = {};
24
+ /******/ const __webpack_require__ = {};
25
25
  /******/
26
26
  /************************************************************************/
27
27
  /******/ /* webpack/runtime/define property getters */
28
28
  /******/ (() => {
29
- /******/ // define getter functions for harmony exports
29
+ /******/ // define getter/value functions for harmony exports
30
30
  /******/ __webpack_require__.d = (exports, definition) => {
31
- /******/ for(var key in definition) {
32
- /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
33
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
31
+ /******/ if(Array.isArray(definition)) {
32
+ /******/ var i = 0;
33
+ /******/ while(i < definition.length) {
34
+ /******/ var key = definition[i++];
35
+ /******/ var binding = definition[i++];
36
+ /******/ if(!__webpack_require__.o(exports, key)) {
37
+ /******/ if(binding === 0) {
38
+ /******/ Object.defineProperty(exports, key, { enumerable: true, value: definition[i++] });
39
+ /******/ } else {
40
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: binding });
41
+ /******/ }
42
+ /******/ } else if(binding === 0) { i++; }
43
+ /******/ }
44
+ /******/ } else {
45
+ /******/ for(var key in definition) {
46
+ /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
47
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
48
+ /******/ }
34
49
  /******/ }
35
50
  /******/ }
36
51
  /******/ };
@@ -42,7 +57,7 @@ return /******/ (() => { // webpackBootstrap
42
57
  /******/ })();
43
58
  /******/
44
59
  /************************************************************************/
45
- var __webpack_exports__ = {};
60
+ let __webpack_exports__ = {};
46
61
 
47
62
  // EXPORTS
48
63
  __webpack_require__.d(__webpack_exports__, {
@@ -78,7 +93,7 @@ var Globals;
78
93
  * Constants
79
94
  *
80
95
  * */
81
- Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '13.0.0', Globals.win = (typeof window !== 'undefined' ?
96
+ Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '13.0.2', Globals.win = (typeof window !== 'undefined' ?
82
97
  window :
83
98
  {}), // eslint-disable-line node/no-unsupported-features/es-builtins
84
99
  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 = [
@@ -405,6 +420,29 @@ const ChartDefaults = {
405
420
  * @context Highcharts.Chart
406
421
  * @apioption chart.events.load
407
422
  */
423
+ /**
424
+ * Fires while the chart is panned by mouse drag. Panning must be
425
+ * enabled through [chart.panning](#chart.panning). One parameter,
426
+ * `event`, is passed to the function, containing common event
427
+ * information as well as `event.originalEvent`, the underlying pointer
428
+ * event. Note that the event fires for every mouse move during the
429
+ * drag, not once per gesture.
430
+ *
431
+ * Calling `event.preventDefault()` or returning false prevents the
432
+ * default panning of the axes. In Highcharts Maps, and on ordinal axes
433
+ * in Highcharts Stock, the panning is applied outside the default
434
+ * action and is not prevented.
435
+ *
436
+ * Panning by touch does not fire this event, unless
437
+ * [chart.zooming.singleTouch](#chart.zooming.singleTouch) is enabled and
438
+ * no zoom type is set. Single-finger drags are then handled as mouse
439
+ * drags and fire this event.
440
+ *
441
+ * @type {Highcharts.ChartPanCallbackFunction}
442
+ * @since 7.0.2
443
+ * @context Highcharts.Chart
444
+ * @apioption chart.events.pan
445
+ */
408
446
  /**
409
447
  * Fires when the chart is redrawn, either after a call to
410
448
  * `chart.redraw()` or after an axis, series or point is modified with
@@ -993,7 +1031,7 @@ const ChartDefaults = {
993
1031
  * @type {Highcharts.ColorType}
994
1032
  * @since 2.1.7
995
1033
  */
996
- selectionMarkerFill: 'color-mix(var(--highcharts-highlight-color-80) 25%, transparent)', // eslint-disable-line max-len
1034
+ selectionMarkerFill: 'color-mix(in srgb, var(--highcharts-highlight-color-80) 25%, transparent)', // eslint-disable-line max-len
997
1035
  /**
998
1036
  * Whether to apply a drop shadow to the global series group. This causes
999
1037
  * all the series to have the same shadow. Contrary to the `series.shadow`
@@ -2419,7 +2457,7 @@ function getStyle(el, prop, toInt) {
2419
2457
  const css = win.getComputedStyle(el, void 0); // eslint-disable-line no-undefined
2420
2458
  if (css) {
2421
2459
  style = css.getPropertyValue(prop);
2422
- if (pick(toInt, prop !== 'opacity')) {
2460
+ if (toInt ?? prop !== 'opacity') {
2423
2461
  style = pInt(style);
2424
2462
  }
2425
2463
  }
@@ -2669,7 +2707,7 @@ function merge(extendOrSource, ...sources) {
2669
2707
  function normalizeTickInterval(interval, multiples, magnitude, allowDecimals, hasTickAmount) {
2670
2708
  let i, retInterval = interval;
2671
2709
  // Round to a tenfold of 1, 2, 2.5 or 5
2672
- magnitude = pick(magnitude, getMagnitude(interval));
2710
+ magnitude = (magnitude ?? getMagnitude(interval));
2673
2711
  const normalized = interval / magnitude;
2674
2712
  // Multiples for a linear scale
2675
2713
  if (!multiples) {
@@ -2782,20 +2820,22 @@ function pad(number, length, padder) {
2782
2820
  .replace('-', '')
2783
2821
  .length).join(padder || '0') + number;
2784
2822
  }
2785
- /* eslint-disable jsdoc/check-param-names */
2823
+ /* eslint-disable valid-jsdoc */
2786
2824
  /**
2787
2825
  * Return the first value that is not null or undefined.
2788
2826
  *
2827
+ * @deprecated 13.0.2
2828
+ * Use nullish coalescing (`??`) or explicit fallback logic instead.
2829
+ *
2789
2830
  * @function Highcharts.pick<T>
2790
2831
  *
2791
- * @param {...Array<T|null|undefined>} items
2832
+ * @param {...(T|null|undefined)} args
2792
2833
  * Variable number of arguments to inspect.
2793
2834
  *
2794
2835
  * @return {T}
2795
2836
  * The value of the first argument that is not null or undefined.
2796
2837
  */
2797
- function pick() {
2798
- const args = arguments;
2838
+ function pick(...args) {
2799
2839
  const length = args.length;
2800
2840
  for (let i = 0; i < length; i++) {
2801
2841
  const arg = args[i];
@@ -2804,7 +2844,7 @@ function pick() {
2804
2844
  }
2805
2845
  }
2806
2846
  }
2807
- /* eslint-enable jsdoc/check-param-names */
2847
+ /* eslint-enable valid-jsdoc */
2808
2848
  /**
2809
2849
  * Shortcut for parseInt
2810
2850
  *
@@ -3187,7 +3227,8 @@ function insertItem(item, collection) {
3187
3227
  !collection[i] ||
3188
3228
  // Handle index option, the element to insert has lower index
3189
3229
  (isNumber(indexOption) &&
3190
- indexOption < pick(collection[i].options.index, collection[i]._i)) ||
3230
+ indexOption < (collection[i].options.index ??
3231
+ collection[i]._i)) ||
3191
3232
  // Insert the new item before other internal items
3192
3233
  // (navigator)
3193
3234
  collection[i].options.isInternal) {
@@ -3273,7 +3314,7 @@ const uniqueKey = (function () {
3273
3314
  * State of the serial mode.
3274
3315
  */
3275
3316
  function useSerialIds(mode) {
3276
- return (serialMode = pick(mode, serialMode));
3317
+ return (serialMode = (mode ?? serialMode));
3277
3318
  }
3278
3319
  /* *
3279
3320
  *
@@ -3739,6 +3780,10 @@ const isDateTimeFormatOptions = (obj) => obj.main === void 0;
3739
3780
  *
3740
3781
  * @param {Highcharts.TimeOptions} [options] Time options as defined in
3741
3782
  * [chart.options.time](/highcharts/time).
3783
+ *
3784
+ * @param {Highcharts.LangOptions} [lang]
3785
+ * Language options. When `options.locale` is not set, `lang.locale` is used as
3786
+ * the locale fallback for locale-aware date formatting.
3742
3787
  */
3743
3788
  class TimeBase {
3744
3789
  /* *
@@ -3757,8 +3802,8 @@ class TimeBase {
3757
3802
  };
3758
3803
  this.variableTimezone = false;
3759
3804
  this.Date = TimeBase_win.Date;
3760
- this.update(options);
3761
3805
  this.lang = lang;
3806
+ this.update(options);
3762
3807
  }
3763
3808
  /* *
3764
3809
  *
@@ -3870,7 +3915,9 @@ class TimeBase {
3870
3915
  /**
3871
3916
  * Shorthand to get a cached `Intl.DateTimeFormat` instance.
3872
3917
  */
3873
- dateTimeFormat(options, timestamp, locale = this.options.locale || pageLang) {
3918
+ dateTimeFormat(options, timestamp, locale = (this.options.locale ||
3919
+ this.lang?.locale ||
3920
+ pageLang)) {
3874
3921
  const cacheKey = JSON.stringify(options) + locale;
3875
3922
  if (isString(options)) {
3876
3923
  options = this.str2dtf(options);
@@ -3956,17 +4003,16 @@ class TimeBase {
3956
4003
  // eslint-disable-next-line new-cap
3957
4004
  let d = this.Date.UTC(year, month, date, hours, minutes || 0, seconds || 0, milliseconds || 0);
3958
4005
  if (this.timezone !== 'UTC') {
3959
- const offset = this.getTimezoneOffset(d);
4006
+ const offset = this.getTimezoneOffset(d), localHours = (hours - offset / timeUnits.hour + 24) % 24;
3960
4007
  d += offset;
3961
- // Adjustments close to DST transitions
3962
4008
  if (
3963
- // Optimize for speed by limiting the number of calls to
3964
- // `getTimezoneOffset`. According to
4009
+ // Limit the number of calls to `getTimezoneOffset` to months
4010
+ // where DST changes may occur. According to
3965
4011
  // https://en.wikipedia.org/wiki/Daylight_saving_time_by_country,
3966
4012
  // DST change may only occur in these months.
3967
4013
  [2, 3, 8, 9, 10, 11].indexOf(month) !== -1 &&
3968
- // DST transitions occur only in the night-time
3969
- (hours < 5 || hours > 20)) {
4014
+ // DST changes only occur at night (#24420)
4015
+ (localHours < 5 || localHours > 20)) {
3970
4016
  const newOffset = this.getTimezoneOffset(d);
3971
4017
  if (offset !== newOffset) {
3972
4018
  d += newOffset - offset;
@@ -6703,6 +6749,9 @@ const defaultOptions = {
6703
6749
  * below the column, but as `followTouchMove` is true, the tooltip will
6704
6750
  * jump from column to column as the user swipes across the plot area.
6705
6751
  *
6752
+ * @sample {highcharts} highcharts/tooltip/followtouchmove/
6753
+ * Tooltip follows touch move
6754
+ *
6706
6755
  * @type {boolean}
6707
6756
  * @default {highcharts} true
6708
6757
  * @default {highstock} true
@@ -7485,10 +7534,14 @@ const defaultOptions = {
7485
7534
  * @type {Highcharts.CSSObject}
7486
7535
  */
7487
7536
  style: {
7488
- /** @type {Highcharts.ColorType} */
7537
+ /**
7538
+ * @type {Highcharts.ColorType}
7539
+ */
7489
7540
  color: 'var(--highcharts-neutral-color-80)',
7490
7541
  cursor: 'default',
7491
- /** @type {number|string} */
7542
+ /**
7543
+ * @type {number|string}
7544
+ */
7492
7545
  fontSize: '0.8em'
7493
7546
  },
7494
7547
  /**
@@ -7804,6 +7857,41 @@ const DefaultOptions = {
7804
7857
  * @param {global.Event} event
7805
7858
  * The event that occurred.
7806
7859
  */
7860
+ /**
7861
+ * Gets fired while the chart is panned by mouse drag. Calling
7862
+ * `event.preventDefault()` or returning `false` prevents the default panning
7863
+ * of the axes.
7864
+ *
7865
+ * @callback Highcharts.ChartPanCallbackFunction
7866
+ *
7867
+ * @param {Highcharts.Chart} this
7868
+ * The chart on which the event occurred.
7869
+ *
7870
+ * @param {Highcharts.ChartPanEventObject} event
7871
+ * The event that occurred.
7872
+ */
7873
+ /**
7874
+ * Contains common event information. Through the `originalEvent` property you
7875
+ * can access the pointer event that triggered the panning.
7876
+ *
7877
+ * @interface Highcharts.ChartPanEventObject
7878
+ */ /**
7879
+ * The pointer event that triggered the panning.
7880
+ * @name Highcharts.ChartPanEventObject#originalEvent
7881
+ * @type {Highcharts.PointerEventObject}
7882
+ */ /**
7883
+ * Prevents the default behavior of the event.
7884
+ * @name Highcharts.ChartPanEventObject#preventDefault
7885
+ * @type {Function}
7886
+ */ /**
7887
+ * The event target.
7888
+ * @name Highcharts.ChartPanEventObject#target
7889
+ * @type {Highcharts.Chart}
7890
+ */ /**
7891
+ * The event type.
7892
+ * @name Highcharts.ChartPanEventObject#type
7893
+ * @type {"pan"}
7894
+ */
7807
7895
  /**
7808
7896
  * Fires when the chart is redrawn, either after a call to `chart.redraw()` or
7809
7897
  * after an axis, series or point is modified with the `redraw` option set to
@@ -8179,7 +8267,9 @@ Color.None = new Color(''); // Must be last static for init
8179
8267
  */
8180
8268
  /**
8181
8269
  * A valid color type than can be parsed and handled by Highcharts. It can be a
8182
- * color string, a gradient object, or a pattern object.
8270
+ * color string (including CSS expressions), a gradient object, or a pattern
8271
+ * object. Read more about colors in the [Highcharts
8272
+ * documentation](https://www.highcharts.com/docs/chart-design-and-style/colors).
8183
8273
  *
8184
8274
  * @typedef {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject} Highcharts.ColorType
8185
8275
  */
@@ -8411,24 +8501,22 @@ class Fx {
8411
8501
  */
8412
8502
  update() {
8413
8503
  const elem = this.elem, prop = this.prop, // If destroyed, it is null
8414
- now = this.now, step = this.options.step;
8504
+ now = this.now ?? 1, step = this.options.step;
8415
8505
  // Animation setter defined from outside
8416
8506
  if (this[prop + 'Setter']) {
8417
8507
  this[prop + 'Setter']();
8418
8508
  // Other animations on SVGElement
8419
8509
  }
8420
- else if (elem.attr) {
8510
+ else if (elem && elem.attr) {
8421
8511
  if (elem.element) {
8422
- elem.attr(prop, now, null, true);
8512
+ elem.attr(prop, now, void 0, true);
8423
8513
  }
8424
8514
  // HTML styles, raw HTML content like container size
8425
8515
  }
8426
- else {
8427
- elem.style[prop] = now + this.unit;
8428
- }
8429
- if (step) {
8430
- step.call(elem, now, this);
8516
+ else if (elem) {
8517
+ elem.style[prop] = now + (this.unit || '');
8431
8518
  }
8519
+ step?.call(elem, now, this);
8432
8520
  }
8433
8521
  /**
8434
8522
  * Run an animation.
@@ -8446,12 +8534,10 @@ class Fx {
8446
8534
  *
8447
8535
  */
8448
8536
  run(from, to, unit) {
8449
- const self = this, options = self.options, timer = function (gotoEnd) {
8450
- return timer.stopped ? false : self.step(gotoEnd);
8451
- }, requestAnimationFrame = Fx_win.requestAnimationFrame ||
8537
+ const { elem, options } = this, { complete, curAnim = {} } = options, timer = (gotoEnd) => (timer.stopped ? false : this.step(gotoEnd)), requestAnimationFrame = Fx_win.requestAnimationFrame ||
8452
8538
  function (step) {
8453
8539
  setTimeout(step, 13);
8454
- }, step = function () {
8540
+ }, step = () => {
8455
8541
  for (let i = 0; i < Fx.timers.length; i++) {
8456
8542
  if (!Fx.timers[i]()) {
8457
8543
  Fx.timers.splice(i--, 1);
@@ -8461,11 +8547,11 @@ class Fx {
8461
8547
  requestAnimationFrame(step);
8462
8548
  }
8463
8549
  };
8464
- if (from === to && !this.elem['forceAnimate:' + this.prop]) {
8465
- delete options.curAnim[this.prop];
8466
- if (options.complete &&
8467
- Object.keys(options.curAnim).length === 0) {
8468
- options.complete.call(this.elem);
8550
+ if (from === to && !elem['forceAnimate:' + this.prop]) {
8551
+ delete curAnim[this.prop];
8552
+ if (complete &&
8553
+ Object.keys(curAnim).length === 0) {
8554
+ complete.call(elem);
8469
8555
  }
8470
8556
  }
8471
8557
  else { // #7166
@@ -8475,7 +8561,7 @@ class Fx {
8475
8561
  this.unit = unit;
8476
8562
  this.now = this.start;
8477
8563
  this.pos = 0;
8478
- timer.elem = this.elem;
8564
+ timer.elem = elem;
8479
8565
  timer.prop = this.prop;
8480
8566
  if (timer() && Fx.timers.push(timer) === 1) {
8481
8567
  requestAnimationFrame(step);
@@ -8496,7 +8582,8 @@ class Fx {
8496
8582
  step(gotoEnd) {
8497
8583
  const t = +new Date(), options = this.options, elem = this.elem, complete = options.complete, duration = options.duration, curAnim = options.curAnim;
8498
8584
  let ret, done;
8499
- if (!!elem.attr && !elem.element) { // #2616, element is destroyed
8585
+ // #2616, element is destroyed
8586
+ if (elem?.attr && !elem.element) {
8500
8587
  ret = false;
8501
8588
  }
8502
8589
  else if (gotoEnd || t >= duration + this.startTime) {
@@ -8725,7 +8812,8 @@ Fx.timers = [];
8725
8812
  * so it should be moved to the SVGRenderer.
8726
8813
  */
8727
8814
  function setAnimation(animation, chart) {
8728
- chart.renderer.globalAnimation = pick(animation, chart.options.chart.animation, true);
8815
+ chart.renderer.globalAnimation =
8816
+ animation ?? chart.options.chart.animation ?? true;
8729
8817
  }
8730
8818
  /**
8731
8819
  * Get the animation in object form, where a disabled animation is always
@@ -8786,6 +8874,11 @@ function getDeferredAnimation(chart, animation, series) {
8786
8874
  /**
8787
8875
  * The global animate method, which uses Fx to create individual animators.
8788
8876
  *
8877
+ * @sample highcharts/members/renderer-basic
8878
+ * SVG elements with animation
8879
+ * @sample highcharts/members/animate
8880
+ * Animation without an owner element
8881
+ *
8789
8882
  * @function Highcharts.animate
8790
8883
  *
8791
8884
  * @param {Highcharts.HTMLDOMElement|Highcharts.SVGElement} el
@@ -8801,14 +8894,12 @@ function getDeferredAnimation(chart, animation, series) {
8801
8894
  *
8802
8895
  * @return {void}
8803
8896
  */
8804
- function animate(el, params, opt) {
8805
- let start, unit = '', end, fx, args;
8897
+ function animate(el, params = { pos: 1 }, opt) {
8806
8898
  if (!isObject(opt)) { // Number or undefined/null
8807
- args = arguments;
8808
8899
  opt = {
8809
- duration: args[2],
8810
- easing: args[3],
8811
- complete: args[4]
8900
+ duration: arguments[2],
8901
+ easing: arguments[3],
8902
+ complete: arguments[4]
8812
8903
  };
8813
8904
  }
8814
8905
  if (!isNumber(opt.duration)) {
@@ -8818,22 +8909,23 @@ function animate(el, params, opt) {
8818
8909
  opt.easing :
8819
8910
  (Math[opt.easing] || Math.easeInOutSine);
8820
8911
  opt.curAnim = merge(params);
8821
- objectEach(params, function (val, prop) {
8912
+ objectEach(params, (val, prop) => {
8822
8913
  // Stop current running animation of this property
8823
- stop(el, prop);
8824
- fx = new Animation_Fx(el, opt, prop);
8825
- end = void 0;
8826
- if (prop === 'd' && isArray(params.d)) {
8827
- fx.paths = fx.initPath(el, el.pathArray, params.d);
8828
- fx.toD = params.d;
8829
- start = 0;
8914
+ if (el) {
8915
+ stop(el, prop);
8916
+ }
8917
+ const fx = new Animation_Fx(el, opt, prop), d = params.d;
8918
+ let start = 0, end = void 0, unit = '';
8919
+ if (prop === 'd' && isArray(d)) {
8920
+ fx.paths = fx.initPath(el, el.pathArray, d);
8921
+ fx.toD = d;
8830
8922
  end = 1;
8831
8923
  }
8832
- else if (el.attr) {
8924
+ else if (el?.attr) {
8833
8925
  start = el.attr(prop);
8834
8926
  }
8835
- else {
8836
- start = parseFloat(getStyle(el, prop)) || 0;
8927
+ else if (el) {
8928
+ start = +(getStyle(el, prop) || 0);
8837
8929
  if (prop !== 'opacity') {
8838
8930
  unit = 'px';
8839
8931
  }
@@ -8844,7 +8936,10 @@ function animate(el, params, opt) {
8844
8936
  if (typeof end === 'string' && end.match('px')) {
8845
8937
  end = end.replace(/px/g, ''); // #4351
8846
8938
  }
8847
- fx.run(start, end, unit);
8939
+ // Empty dashstyle animation crashes treemap on hover
8940
+ if (defined(end)) {
8941
+ fx.run(start, end, unit);
8942
+ }
8848
8943
  });
8849
8944
  }
8850
8945
  /**
@@ -8868,28 +8963,11 @@ function animate(el, params, opt) {
8868
8963
  * improvement in all cases where we stop the animation from .attr. Instead of
8869
8964
  * stopping everything, we can just stop the actual attributes we're setting.
8870
8965
  */
8871
- function stop(el, prop) {
8872
- let i = Animation_Fx.timers.length;
8873
- // Remove timers related to this element (#4519)
8874
- while (i--) {
8875
- if (Animation_Fx.timers[i].elem === el && (!prop || prop === Animation_Fx.timers[i].prop)) {
8876
- Animation_Fx.timers[i].stopped = true; // #4667
8877
- }
8966
+ const stop = (el, prop) => Animation_Fx.timers.forEach((timer) => {
8967
+ if (timer.elem === el && (!prop || prop === timer.prop)) {
8968
+ timer.stopped = true; // #4667
8878
8969
  }
8879
- }
8880
- const animationExports = {
8881
- animate,
8882
- animObject,
8883
- getDeferredAnimation,
8884
- setAnimation,
8885
- stop
8886
- };
8887
- /* *
8888
- *
8889
- * Default Export
8890
- *
8891
- * */
8892
- /* harmony default export */ const AnimationUtilities = (animationExports);
8970
+ });
8893
8971
  /* *
8894
8972
  *
8895
8973
  * API Options
@@ -9194,7 +9272,9 @@ class AST {
9194
9272
  doc = { body };
9195
9273
  }
9196
9274
  const appendChildNodes = (node, addTo) => {
9197
- const tagName = node.nodeName.toLowerCase();
9275
+ // Preserve the camelCase of SVG tags via localName (#24702).
9276
+ const tagName = node.localName ||
9277
+ node.nodeName.toLowerCase();
9198
9278
  // Add allowed tags
9199
9279
  const astNode = {
9200
9280
  tagName
@@ -9308,6 +9388,8 @@ AST.allowedAttributes = [
9308
9388
  'src',
9309
9389
  'startOffset',
9310
9390
  'stdDeviation',
9391
+ 'stop-color',
9392
+ 'stop-opacity',
9311
9393
  'stroke-linecap',
9312
9394
  'stroke-width',
9313
9395
  'stroke',
@@ -9794,7 +9876,7 @@ function format(str = '', ctx, owner) {
9794
9876
  replacement = `"${replacement}"`;
9795
9877
  }
9796
9878
  }
9797
- str = str.replace(match.find, pick(replacement, ''));
9879
+ str = str.replace(match.find, (replacement ?? ''));
9798
9880
  });
9799
9881
  return hasSub ? format(str, ctx, owner) : str;
9800
9882
  }
@@ -9911,9 +9993,7 @@ const Templating = {
9911
9993
  * API Declarations
9912
9994
  * */
9913
9995
  /**
9914
- * @interface Highcharts.Templating
9915
- *
9916
- * The Highcharts.Templating interface provides a structure for defining
9996
+ * The Highcharts.TemplatingObject interface provides a structure for defining
9917
9997
  * helpers. Helpers can be used as conditional blocks or functions within
9918
9998
  * expressions. Highcharts includes several built-in helpers and supports
9919
9999
  * the addition of custom helpers.
@@ -9921,16 +10001,21 @@ const Templating = {
9921
10001
  * @see [More information](
9922
10002
  * https://www.highcharts.com/docs/chart-concepts/templating#helpers)
9923
10003
  *
9924
- * @example
9925
- * // Define a custom helper to return the absolute value of a number
9926
- * Highcharts.Templating.helpers.abs = value => Math.abs(value);
9927
- *
9928
- * // Usage in a format string
9929
- * format: 'Absolute value: {abs point.y}'
9930
- *
9931
- * @name Highcharts.Templating#helpers
9932
- * @type {Record<string, Function>}
9933
- */
10004
+ * @interface Highcharts.TemplatingObject
10005
+ */ /**
10006
+ * @example
10007
+ * // Define a custom helper to return the absolute value of a number
10008
+ * Highcharts.Templating.helpers.abs = value => Math.abs(value);
10009
+ *
10010
+ * // Usage in a format string
10011
+ * format: 'Absolute value: {abs point.y}'
10012
+ *
10013
+ * @name Highcharts.TemplatingObject#helpers
10014
+ * @type {Record<string, Function>}
10015
+ */ /**
10016
+ * @name Highcharts.Templating
10017
+ * @type {Highcharts.TemplatingObject}
10018
+ */
9934
10019
  (''); // Keeps doclets above in file
9935
10020
 
9936
10021
  ;// ./code/es-modules/Core/Renderer/RendererUtilities.js
@@ -10040,7 +10125,7 @@ var RendererUtilities;
10040
10125
  boxes = boxes.map((box) => ({
10041
10126
  size: box.size,
10042
10127
  targets: [box.target],
10043
- align: pick(box.align, 0.5)
10128
+ align: (box.align ?? 0.5)
10044
10129
  }));
10045
10130
  while (overlapping) {
10046
10131
  // Initial positions: target centered in box
@@ -10139,7 +10224,6 @@ var RendererUtilities;
10139
10224
  * */
10140
10225
 
10141
10226
 
10142
- const { animate: SVGElement_animate, animObject: SVGElement_animObject, stop: SVGElement_stop } = AnimationUtilities;
10143
10227
 
10144
10228
 
10145
10229
  const { deg2rad, doc: SVGElement_doc, svg, SVG_NS: SVGElement_SVG_NS, win: SVGElement_win, isFirefox } = Core_Globals;
@@ -10199,8 +10283,10 @@ class SVGElement {
10199
10283
  * Property value.
10200
10284
  */
10201
10285
  _defaultGetter(key) {
10202
- let ret = pick(this[key + 'Value'], // Align getter
10203
- this[key], this.element ? this.element.getAttribute(key) : null, 0);
10286
+ let ret = (this[key + 'Value'] ??
10287
+ this[key] ??
10288
+ (this.element ? this.element.getAttribute(key) : null) ??
10289
+ 0);
10204
10290
  if (/^-?[\d\.]+$/.test(ret)) { // Is numerical
10205
10291
  ret = parseFloat(ret);
10206
10292
  }
@@ -10363,7 +10449,7 @@ class SVGElement {
10363
10449
  }
10364
10450
  alignTo = void 0; // Do not use the box
10365
10451
  }
10366
- const alignToBox = pick(alignTo, renderer[alignToKey], renderer),
10452
+ const alignToBox = alignTo ?? renderer[alignToKey] ?? renderer,
10367
10453
  // Default: left align
10368
10454
  x = (alignToBox.x || 0) + (alignOptions.x || 0) +
10369
10455
  ((alignToBox.width || 0) - (alignOptions.width || 0)) *
@@ -10423,7 +10509,7 @@ class SVGElement {
10423
10509
  * Returns the SVGElement for chaining.
10424
10510
  */
10425
10511
  animate(params, options, complete) {
10426
- const animOptions = SVGElement_animObject(pick(options, this.renderer.globalAnimation, true)), deferTime = animOptions.defer;
10512
+ const animOptions = animObject((options ?? this.renderer.globalAnimation ?? true)), deferTime = animOptions.defer;
10427
10513
  // When the page is hidden save resources in the background by not
10428
10514
  // running animation at all (#9749).
10429
10515
  if (SVGElement_doc.hidden) {
@@ -10438,7 +10524,7 @@ class SVGElement {
10438
10524
  // If defer option is defined delay the animation #12901
10439
10525
  syncTimeout(() => {
10440
10526
  if (this.element) {
10441
- SVGElement_animate(this, params, animOptions);
10527
+ animate(this, params, animOptions);
10442
10528
  }
10443
10529
  }, deferTime);
10444
10530
  }
@@ -10612,7 +10698,7 @@ class SVGElement {
10612
10698
  // Unless .attr is from the animator update, stop current
10613
10699
  // running animation of this property
10614
10700
  if (!continueAnimation) {
10615
- SVGElement_stop(this, key);
10701
+ stop(this, key);
10616
10702
  }
10617
10703
  // Special handling of symbol attributes
10618
10704
  if (this.symbolName &&
@@ -10915,7 +11001,7 @@ class SVGElement {
10915
11001
  .split(','); // Ending comma
10916
11002
  i = v.length;
10917
11003
  while (i--) {
10918
- v[i] = '' + (pInt(v[i]) * pick(strokeWidth, NaN));
11004
+ v[i] = '' + (pInt(v[i]) * (strokeWidth ?? NaN));
10919
11005
  }
10920
11006
  value = v.join(',').replace(/NaN/g, 'none'); // #3226
10921
11007
  this.element.setAttribute('stroke-dasharray', value);
@@ -10932,7 +11018,7 @@ class SVGElement {
10932
11018
  // Remove events
10933
11019
  element.onclick = element.onmouseout = element.onmouseover =
10934
11020
  element.onmousemove = element.point = null;
10935
- SVGElement_stop(wrapper); // Stop running animations
11021
+ stop(wrapper); // Stop running animations
10936
11022
  if (wrapper.clipPath && ownerSVGElement) {
10937
11023
  const clipPath = wrapper.clipPath;
10938
11024
  // Look for existing references to this clipPath and remove them
@@ -11055,7 +11141,7 @@ class SVGElement {
11055
11141
  * The bounding box with `x`, `y`, `width` and `height` properties.
11056
11142
  */
11057
11143
  getBBox(reload, rot) {
11058
- 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 &&
11144
+ 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 &&
11059
11145
  SVGElement.prototype.getStyle.call(element, 'font-size')) : (styles.fontSize), cacheKey = this.getBBoxCacheKey([
11060
11146
  renderer.rootFontSize,
11061
11147
  this.textWidth, // #7874, also useHTML
@@ -11581,7 +11667,7 @@ class SVGElement {
11581
11667
  symbolAttr(hash) {
11582
11668
  const wrapper = this;
11583
11669
  SVGElement.symbolCustomAttribs.forEach(function (key) {
11584
- wrapper[key] = pick(hash[key], wrapper[key]);
11670
+ wrapper[key] = (hash[key] ?? wrapper[key]);
11585
11671
  });
11586
11672
  wrapper.attr({
11587
11673
  d: wrapper.renderer.symbols[wrapper.symbolName](wrapper.x, wrapper.y, wrapper.width, wrapper.height, wrapper)
@@ -11621,7 +11707,7 @@ class SVGElement {
11621
11707
  }
11622
11708
  // Replace text content and escape markup
11623
11709
  titleNode.textContent = replaceNested(// Scan #[73]
11624
- pick(value, ''), // #3276, #3895
11710
+ (value ?? ''), // #3276, #3895
11625
11711
  [/<[^>]*>/g, '']).replace(/&lt;/g, '<').replace(/&gt;/g, '>');
11626
11712
  }
11627
11713
  /**
@@ -12399,7 +12485,7 @@ class SVGLabel extends SVG_SVGElement {
12399
12485
  if ((this.textStr && this.bBox.width === 0 && this.bBox.height === 0) || this.rotation) {
12400
12486
  this.updateBoxSize();
12401
12487
  }
12402
- const { padding, height = 0, translateX = 0, translateY = 0, width = 0 } = this, paddingLeft = pick(this.paddingLeft, padding), rotation = rot ?? (this.rotation || 0);
12488
+ const { padding, height = 0, translateX = 0, translateY = 0, width = 0 } = this, paddingLeft = (this.paddingLeft ?? padding), rotation = rot ?? (this.rotation || 0);
12403
12489
  let bBox = {
12404
12490
  width,
12405
12491
  height,
@@ -12452,7 +12538,7 @@ class SVGLabel extends SVG_SVGElement {
12452
12538
  this.attr({
12453
12539
  // Alignment is available now (#3295, 0 not rendered if given
12454
12540
  // as a value)
12455
- text: pick(this.textStr, ''),
12541
+ text: (this.textStr ?? ''),
12456
12542
  x: this.x || 0,
12457
12543
  y: this.y || 0
12458
12544
  });
@@ -12608,8 +12694,8 @@ class SVGLabel extends SVG_SVGElement {
12608
12694
  /** @internal */
12609
12695
  getPaddedWidth() {
12610
12696
  const padding = this.padding;
12611
- const paddingLeft = pick(this.paddingLeft, padding);
12612
- const paddingRight = pick(this.paddingRight, padding);
12697
+ const paddingLeft = (this.paddingLeft ?? padding);
12698
+ const paddingRight = (this.paddingRight ?? padding);
12613
12699
  return ((this.widthSetting || this.bBox.width || 0) +
12614
12700
  paddingLeft +
12615
12701
  paddingRight);
@@ -12710,7 +12796,7 @@ function arc(cx, cy, w, h, options) {
12710
12796
  const arc = [];
12711
12797
  if (options) {
12712
12798
  let start = options.start || 0, end = options.end || 0;
12713
- const rx = pick(options.r, w), ry = pick(options.r, h || w),
12799
+ const rx = (options.r ?? w), ry = (options.r ?? (h || w)),
12714
12800
  // Subtract a small number to prevent cos and sin of start and end
12715
12801
  // from becoming equal on 360 arcs (#1561). See "Arc proximity"
12716
12802
  // tests at samples/unit-tests/svgrenderer/symbol/demo.js
@@ -12720,16 +12806,17 @@ function arc(cx, cy, w, h, options) {
12720
12806
  start = Math.PI / 2;
12721
12807
  end = Math.PI * 2.5 - proximity;
12722
12808
  }
12723
- 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),
12809
+ 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),
12724
12810
  // Proximity takes care of rounding errors around PI (#6971)
12725
- longArc = pick(options.longArc, end - start - Math.PI < proximity ? 0 : 1);
12811
+ longArc = options.longArc ??
12812
+ (end - start - Math.PI < proximity ? 0 : 1);
12726
12813
  let arcSegment = [
12727
12814
  'A', // ArcTo
12728
12815
  rx, // X radius
12729
12816
  ry, // Y radius
12730
12817
  0, // Slanting
12731
12818
  longArc, // Long or short arc
12732
- pick(options.clockwise, 1), // Clockwise
12819
+ (options.clockwise ?? 1), // Clockwise
12733
12820
  // Use a static pixel offset for full circle (#21701)
12734
12821
  cx + (fullCircle ? 0.001 : rx * cosEnd),
12735
12822
  cy + ry * sinEnd
@@ -13260,7 +13347,7 @@ class TextBuilder {
13260
13347
  * @internal
13261
13348
  */
13262
13349
  buildSVG() {
13263
- 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,
13350
+ 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,
13264
13351
  // The buildText code is quite heavy, so if we're not changing
13265
13352
  // something that affects the text, skip it (#6113).
13266
13353
  textCache = [
@@ -13844,7 +13931,7 @@ class SVGRenderer {
13844
13931
  this.url = this.getReferenceURL();
13845
13932
  // Add description
13846
13933
  const desc = this.createElement('desc').add();
13847
- desc.element.appendChild(SVGRenderer_doc.createTextNode('Created with Highcharts 13.0.0'));
13934
+ desc.element.appendChild(SVGRenderer_doc.createTextNode('Created with Highcharts 13.0.2'));
13848
13935
  this.defs = this.createElement('defs').add();
13849
13936
  this.allowHTML = allowHTML;
13850
13937
  this.forExport = forExport;
@@ -14630,7 +14717,7 @@ class SVGRenderer {
14630
14717
  this.attr('height')
14631
14718
  });
14632
14719
  },
14633
- duration: pick(animate, true) ? void 0 : 0
14720
+ duration: (animate ?? true) ? void 0 : 0
14634
14721
  });
14635
14722
  renderer.alignElements();
14636
14723
  }
@@ -14788,8 +14875,8 @@ class SVGRenderer {
14788
14875
  // The image width is not always the same as the symbol width. The
14789
14876
  // image may be centered within the symbol, as is the case when
14790
14877
  // image shapes are used as label backgrounds, for example in flags.
14791
- img.imgwidth = pick(options?.width, symbolSizes[imageSrc]?.width);
14792
- img.imgheight = pick(options?.height, symbolSizes[imageSrc]?.height);
14878
+ img.imgwidth = (options?.width ?? symbolSizes[imageSrc]?.width);
14879
+ img.imgheight = (options?.height ?? symbolSizes[imageSrc]?.height);
14793
14880
  /**
14794
14881
  * Set the size and position
14795
14882
  */
@@ -15635,7 +15722,11 @@ class HTMLElement extends SVG_SVGElement {
15635
15722
  .attr({
15636
15723
  text: str,
15637
15724
  x: Math.round(x),
15638
- y: Math.round(y)
15725
+ y: Math.round(y),
15726
+ // The namespace attribute is required for serialization
15727
+ // (export and side-by-side comparison), otherwise it
15728
+ // inherits the SVG namespace from foreignObject.
15729
+ xmlns: 'http://www.w3.org/1999/xhtml'
15639
15730
  });
15640
15731
  };
15641
15732
  }
@@ -15815,8 +15906,10 @@ class HTMLElement extends SVG_SVGElement {
15815
15906
  foreignObject.attr({
15816
15907
  x: x + (this.xCorr || 0),
15817
15908
  y: y + (this.yCorr || 0),
15818
- // Add 4px to avoid ellipsis, since the body adds 3 px right
15819
- // margin. We need one more because of rounding.
15909
+ // Add 4px to avoid ellipsis. In v13.0.0 we had a body inside
15910
+ // the foreignObject with a 3px right margin. This was later
15911
+ // removed, but we still need to add a few pixels to avoid
15912
+ // ellipsis.
15820
15913
  width: element.offsetWidth + 4,
15821
15914
  // Add 1px to account for subpixel bounding boxes
15822
15915
  height: element.offsetHeight + 1,
@@ -15836,25 +15929,16 @@ class HTMLElement extends SVG_SVGElement {
15836
15929
  this.cTT = currentTextTransform;
15837
15930
  }
15838
15931
  /**
15839
- * Add the element to a group wrapper. For HTML elements, a parallel div
15840
- * will be created for each ancestor SVG `g` element.
15932
+ * Add the element to the foreign object
15841
15933
  *
15842
15934
  * @internal
15843
15935
  */
15844
15936
  add(parentGroup) {
15845
- const { foreignObject, renderer } = this;
15937
+ const { foreignObject } = this;
15846
15938
  // Foreign object
15847
15939
  foreignObject.add(parentGroup);
15848
- super.add(
15849
- // Create a body inside the foreignObject
15850
- renderer.createElement('body')
15851
- .attr({ xmlns: 'http://www.w3.org/1999/xhtml' })
15852
- .css({
15853
- background: 'transparent',
15854
- // 3px is to avoid clipping on the right
15855
- margin: '0 3px 0 0'
15856
- })
15857
- .add(foreignObject));
15940
+ // Add this.element to the foreign objct
15941
+ super.add(foreignObject);
15858
15942
  if (this.alignOnAdd) {
15859
15943
  this.updateTransform();
15860
15944
  }
@@ -15889,10 +15973,20 @@ class HTMLElement extends SVG_SVGElement {
15889
15973
  this[key] = value;
15890
15974
  this.doTransform = true;
15891
15975
  }
15976
+ /**
15977
+ * Apply visibility/opacity to the foreignObject; the HTML element
15978
+ * ignores them.
15979
+ * @internal
15980
+ */
15981
+ visibilitySetter(value, key) {
15982
+ this.foreignObject.attr({ [key]: value });
15983
+ this[key] = value;
15984
+ }
15892
15985
  }
15893
15986
  // Some shared setters
15894
15987
  const proto = HTMLElement.prototype;
15895
15988
  proto.ySetter = proto.xSetter;
15989
+ proto.opacitySetter = proto.visibilitySetter;
15896
15990
  /* *
15897
15991
  *
15898
15992
  * Default Export
@@ -16433,6 +16527,7 @@ var AxisDefaults;
16433
16527
  */
16434
16528
  dateTimeLabelFormats: {
16435
16529
  /**
16530
+ * @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
16436
16531
  * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
16437
16532
  */
16438
16533
  millisecond: {
@@ -16458,6 +16553,7 @@ var AxisDefaults;
16458
16553
  range: false
16459
16554
  },
16460
16555
  /**
16556
+ * @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
16461
16557
  * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
16462
16558
  */
16463
16559
  second: {
@@ -16483,6 +16579,7 @@ var AxisDefaults;
16483
16579
  range: false
16484
16580
  },
16485
16581
  /**
16582
+ * @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
16486
16583
  * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
16487
16584
  */
16488
16585
  minute: {
@@ -16508,6 +16605,7 @@ var AxisDefaults;
16508
16605
  range: false
16509
16606
  },
16510
16607
  /**
16608
+ * @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
16511
16609
  * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
16512
16610
  */
16513
16611
  hour: {
@@ -16540,6 +16638,7 @@ var AxisDefaults;
16540
16638
  range: false
16541
16639
  },
16542
16640
  /**
16641
+ * @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
16543
16642
  * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
16544
16643
  */
16545
16644
  day: {
@@ -16562,6 +16661,7 @@ var AxisDefaults;
16562
16661
  boundary: '%[eb]'
16563
16662
  },
16564
16663
  /**
16664
+ * @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
16565
16665
  * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
16566
16666
  */
16567
16667
  week: {
@@ -16577,6 +16677,7 @@ var AxisDefaults;
16577
16677
  main: '%[eb]'
16578
16678
  },
16579
16679
  /**
16680
+ * @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
16580
16681
  * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
16581
16682
  */
16582
16683
  month: {
@@ -16599,6 +16700,7 @@ var AxisDefaults;
16599
16700
  boundary: void 0
16600
16701
  },
16601
16702
  /**
16703
+ * @type {Highcharts.AxisDateTimeLabelFormatsOptionsObject|string}
16602
16704
  * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject
16603
16705
  */
16604
16706
  year: {
@@ -17414,7 +17516,7 @@ var AxisDefaults;
17414
17516
  * @sample {highstock} stock/xaxis/offset/
17415
17517
  * Y axis offset by 70 px
17416
17518
  *
17417
- * @type {number}
17519
+ * @type {number|string}
17418
17520
  */
17419
17521
  offset: void 0,
17420
17522
  /**
@@ -19064,7 +19166,9 @@ var AxisDefaults;
19064
19166
  * @product highcharts
19065
19167
  */
19066
19168
  style: {
19067
- /** @type {Highcharts.ColorType} */
19169
+ /**
19170
+ * @type {Highcharts.ColorType}
19171
+ */
19068
19172
  color: 'var(--highcharts-neutral-color-100)',
19069
19173
  /**
19070
19174
  * @type {number|string}
@@ -19251,11 +19355,11 @@ class Tick {
19251
19355
  * @function Highcharts.Tick#addLabel
19252
19356
  */
19253
19357
  addLabel() {
19254
- 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;
19358
+ 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;
19255
19359
  let label = tick.label, dateTimeLabelFormat, dateTimeLabelFormats, i;
19256
19360
  // The context value
19257
19361
  let value = this.parameters.category || (categories ?
19258
- pick(categories[pos], names[pos], pos) :
19362
+ (categories[pos] ?? names[pos] ?? pos) :
19259
19363
  pos);
19260
19364
  if (log && isNumber(value)) {
19261
19365
  value = correctFloat(log.lin2log(value));
@@ -19502,7 +19606,7 @@ class Tick {
19502
19606
  labelOptions.y;
19503
19607
  }
19504
19608
  x = x +
19505
- pick(labelOptions.x, [0, 1, 0, -1][axis.side] * distance) +
19609
+ (labelOptions.x ?? [0, 1, 0, -1][axis.side] * distance) +
19506
19610
  labelOffsetCorrection +
19507
19611
  rotCorr.x -
19508
19612
  (tickmarkOffset && horiz ?
@@ -19557,7 +19661,7 @@ class Tick {
19557
19661
  * @function Highcharts.Tick#handleOverflow
19558
19662
  */
19559
19663
  handleOverflow(xy) {
19560
- 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 = {};
19664
+ 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 = {};
19561
19665
  let modifiedSlotWidth = slotWidth, goRight = 1, leftPos, rightPos, textWidth;
19562
19666
  // Check if the label overshoots the chart spacing box. If it does, move
19563
19667
  // it. If it now overshoots the slotWidth, add ellipsis.
@@ -19624,9 +19728,8 @@ class Tick {
19624
19728
  * @param {number} [opacity]
19625
19729
  */
19626
19730
  render(index, old, opacity) {
19627
- 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;
19628
- const labelOpacity = pick(opacity, tick.label?.newOpacity, // #15528
19629
- 1);
19731
+ 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;
19732
+ const labelOpacity = (opacity ?? tick.label?.newOpacity ?? 1);
19630
19733
  // Anything that is not between `axis.pos` and `axis.pos + axis.length`
19631
19734
  // should not be visible (#20166). The `correctFloat` is for reversed
19632
19735
  // axes in Safari.
@@ -19654,7 +19757,7 @@ class Tick {
19654
19757
  * @param {number} opacity The opacity of the grid line
19655
19758
  */
19656
19759
  renderGridLine(old, opacity) {
19657
- 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;
19760
+ 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;
19658
19761
  let gridLine = tick.gridLine, gridLinePath, gridLineWidth = options.gridLineWidth, gridLineColor = options.gridLineColor, dashStyle = options.gridLineDashStyle;
19659
19762
  if (tick.type === 'minor') {
19660
19763
  gridLineWidth = options.minorGridLineWidth;
@@ -19710,7 +19813,7 @@ class Tick {
19710
19813
  * @param {number} opacity The opacity of the mark
19711
19814
  */
19712
19815
  renderMark(xy, opacity) {
19713
- 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
19816
+ 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
19714
19817
  tickColor = options[type !== 'minor' ? 'tickColor' : 'minorTickColor'];
19715
19818
  let mark = tick.mark;
19716
19819
  const isNewMark = !mark;
@@ -19755,7 +19858,7 @@ class Tick {
19755
19858
  * @param {number} index The index of the tick
19756
19859
  */
19757
19860
  renderLabel(xy, old, opacity, index) {
19758
- 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;
19861
+ 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;
19759
19862
  let show = true;
19760
19863
  if (label && isNumber(x)) {
19761
19864
  label.xy = xy = tick.getLabelPosition(x, y, label, horiz, labelOptions, tickmarkOffset, index, step);
@@ -19847,7 +19950,6 @@ class Tick {
19847
19950
  * */
19848
19951
 
19849
19952
 
19850
- const { animObject: Axis_animObject } = AnimationUtilities;
19851
19953
 
19852
19954
  const { xAxis, yAxis } = Axis_AxisDefaults;
19853
19955
 
@@ -19861,12 +19963,7 @@ const { deg2rad: Axis_deg2rad } = Core_Globals;
19861
19963
 
19862
19964
 
19863
19965
 
19864
- const getNormalizedTickInterval = (axis, tickInterval) => normalizeTickInterval(tickInterval, void 0, void 0, pick(axis.options.allowDecimals,
19865
- // If the tick interval is greater than 0.5, avoid decimals, as
19866
- // linear axes are often used to render discrete values (#3363). If
19867
- // a tick amount is set, allow decimals by default, as it increases
19868
- // the chances for a good fit.
19869
- tickInterval < 0.5 || axis.tickAmount !== void 0), !!axis.tickAmount);
19966
+ const getNormalizedTickInterval = (axis, tickInterval) => normalizeTickInterval(tickInterval, void 0, void 0, (axis.options.allowDecimals ?? (tickInterval < 0.5 || axis.tickAmount !== void 0)), !!axis.tickAmount);
19870
19967
  extend(Axis_defaultOptions, { xAxis, yAxis: merge(xAxis, yAxis) });
19871
19968
  /* *
19872
19969
  *
@@ -19974,7 +20071,7 @@ class Axis {
19974
20071
  axis.coll = coll;
19975
20072
  fireEvent(this, 'init', { userOptions: userOptions });
19976
20073
  // Needed in setOptions
19977
- axis.opposite = pick(userOptions.opposite, axis.opposite);
20074
+ axis.opposite = (userOptions.opposite ?? axis.opposite);
19978
20075
  /**
19979
20076
  * The side on which the axis is rendered. 0 is top, 1 is right, 2
19980
20077
  * is bottom and 3 is left.
@@ -19982,10 +20079,9 @@ class Axis {
19982
20079
  * @name Highcharts.Axis#side
19983
20080
  * @type {number}
19984
20081
  */
19985
- axis.side = pick(userOptions.side, axis.side, (horiz ?
20082
+ axis.side = (userOptions.side ?? axis.side ?? (horiz ?
19986
20083
  (axis.opposite ? 0 : 2) : // Top : bottom
19987
- (axis.opposite ? 1 : 3)) // Right : left
19988
- );
20084
+ (axis.opposite ? 1 : 3)));
19989
20085
  /**
19990
20086
  * Current options for the axis after merge of defaults and user's
19991
20087
  * options.
@@ -20014,7 +20110,7 @@ class Axis {
20014
20110
  * @name Highcharts.Axis#reversed
20015
20111
  * @type {boolean}
20016
20112
  */
20017
- axis.reversed = pick(options.reversed, axis.reversed);
20113
+ axis.reversed = (options.reversed ?? axis.reversed);
20018
20114
  axis.visible = options.visible;
20019
20115
  axis.zoomEnabled = options.zoomEnabled;
20020
20116
  // Initial categories
@@ -20102,7 +20198,7 @@ class Axis {
20102
20198
  * @name Highcharts.Axis#crosshair
20103
20199
  * @type {boolean|Highcharts.AxisCrosshairOptions}
20104
20200
  */
20105
- const crosshair = pick(options.crosshair, splat(chart.options.tooltip.crosshairs)[isXAxis ? 0 : 1]);
20201
+ const crosshair = options.crosshair ?? splat(chart.options.tooltip.crosshairs)[isXAxis ? 0 : 1];
20106
20202
  axis.crosshair = crosshair === true ? {} : crosshair;
20107
20203
  // Register. Don't add it again on Axis.update().
20108
20204
  if (chart.axes.indexOf(axis) === -1) { //
@@ -20286,8 +20382,8 @@ class Axis {
20286
20382
  seriesDataMax = xExtremes.max;
20287
20383
  }
20288
20384
  if (xData.length) {
20289
- axis.dataMin = Math.min(pick(axis.dataMin, seriesDataMin), seriesDataMin);
20290
- axis.dataMax = Math.max(pick(axis.dataMax, seriesDataMax), seriesDataMax);
20385
+ axis.dataMin = Math.min((axis.dataMin ?? seriesDataMin), seriesDataMin);
20386
+ axis.dataMax = Math.max((axis.dataMax ?? seriesDataMax), seriesDataMax);
20291
20387
  }
20292
20388
  }
20293
20389
  // Get dataMin and dataMax for Y axes, as well as handle
@@ -20302,11 +20398,11 @@ class Axis {
20302
20398
  // doesn't have active y data, we continue with nulls
20303
20399
  if (isNumber(dataExtremes.dataMin)) {
20304
20400
  seriesDataMin = dataExtremes.dataMin;
20305
- axis.dataMin = Math.min(pick(axis.dataMin, seriesDataMin), seriesDataMin);
20401
+ axis.dataMin = Math.min((axis.dataMin ?? seriesDataMin), seriesDataMin);
20306
20402
  }
20307
20403
  if (isNumber(dataExtremes.dataMax)) {
20308
20404
  seriesDataMax = dataExtremes.dataMax;
20309
- axis.dataMax = Math.max(pick(axis.dataMax, seriesDataMax), seriesDataMax);
20405
+ axis.dataMax = Math.max((axis.dataMax ?? seriesDataMax), seriesDataMax);
20310
20406
  }
20311
20407
  // Adjust to threshold
20312
20408
  if (defined(threshold)) {
@@ -20461,7 +20557,7 @@ class Axis {
20461
20557
  translatedValue
20462
20558
  };
20463
20559
  fireEvent(this, 'getPlotLinePath', evt, function (e) {
20464
- translatedValue = pick(translatedValue, axis.translate(value, void 0, void 0, old));
20560
+ translatedValue = translatedValue ?? axis.translate(value, void 0, void 0, old);
20465
20561
  // Keep the translated value within sane bounds, and avoid Infinity
20466
20562
  // to fail the isNumber test (#7709).
20467
20563
  translatedValue = clamp(translatedValue, -1e9, 1e9);
@@ -20550,7 +20646,7 @@ class Axis {
20550
20646
  getMinorTickInterval() {
20551
20647
  const { minorTicks, minorTickInterval } = this.options;
20552
20648
  if (minorTicks === true) {
20553
- return pick(minorTickInterval, 'auto');
20649
+ return (minorTickInterval ?? 'auto');
20554
20650
  }
20555
20651
  if (minorTicks === false) {
20556
20652
  return;
@@ -20833,7 +20929,9 @@ class Axis {
20833
20929
  const seriesPointRange = hasCategories ?
20834
20930
  1 :
20835
20931
  (isXAxis ?
20836
- pick(series.options.pointRange, closestPointRange, 0) :
20932
+ (series.options.pointRange ??
20933
+ closestPointRange ??
20934
+ 0) :
20837
20935
  (axis.axisPointRange || 0)), // #2806
20838
20936
  pointPlacement = series.options.pointPlacement;
20839
20937
  pointRange = Math.max(pointRange, seriesPointRange);
@@ -20917,14 +21015,16 @@ class Axis {
20917
21015
  this.getTickAmount();
20918
21016
  }
20919
21017
  // Min or max set either by zooming/setExtremes or initial options
20920
- hardMin = pick(axis.userMin, time.parse(options.min));
20921
- hardMax = pick(axis.userMax, time.parse(options.max));
21018
+ hardMin = (axis.userMin ?? time.parse(options.min));
21019
+ hardMax = (axis.userMax ?? time.parse(options.max));
20922
21020
  // Linked axis gets the extremes from the parent axis
20923
21021
  if (linkedParent) {
20924
21022
  axis.linkedParent = linkedParent;
20925
21023
  linkedParentExtremes = linkedParent.getExtremes();
20926
- axis.min = pick(linkedParentExtremes.min, linkedParentExtremes.dataMin);
20927
- axis.max = pick(linkedParentExtremes.max, linkedParentExtremes.dataMax);
21024
+ axis.min =
21025
+ linkedParentExtremes.min ?? linkedParentExtremes.dataMin;
21026
+ axis.max =
21027
+ linkedParentExtremes.max ?? linkedParentExtremes.dataMax;
20928
21028
  if (this.type !== linkedParent.type) {
20929
21029
  // Can't link axes of different type
20930
21030
  error(11, true, chart);
@@ -20946,14 +21046,14 @@ class Axis {
20946
21046
  maxPadding = 0;
20947
21047
  }
20948
21048
  }
20949
- axis.min = pick(hardMin, thresholdMin, dataMin);
20950
- axis.max = pick(hardMax, thresholdMax, dataMax);
21049
+ axis.min = (hardMin ?? thresholdMin ?? dataMin);
21050
+ axis.max = (hardMax ?? thresholdMax ?? dataMax);
20951
21051
  }
20952
21052
  if (isNumber(axis.max) && isNumber(axis.min)) {
20953
21053
  if (logarithmic) {
20954
21054
  if (axis.positiveValuesOnly &&
20955
21055
  !secondPass &&
20956
- Math.min(axis.min, pick(dataMin, axis.min)) <= 0) { // #978
21056
+ Math.min(axis.min, (dataMin ?? axis.min)) <= 0) { // #978
20957
21057
  // Can't plot negative values on log axis
20958
21058
  error(10, true, chart);
20959
21059
  }
@@ -21059,16 +21159,13 @@ class Axis {
21059
21159
  axis.tickInterval = tickIntervalOption = linkedParent.tickInterval;
21060
21160
  }
21061
21161
  else {
21062
- axis.tickInterval = pick(tickIntervalOption, this.tickAmount ?
21162
+ axis.tickInterval = tickIntervalOption ?? (this.tickAmount ?
21063
21163
  range / Math.max(this.tickAmount - 1, 1) :
21064
- void 0,
21065
- // For categorized axis, 1 is default, for linear axis use
21066
- // tickPix
21067
- categories ?
21068
- 1 :
21069
- // Don't let it be more than the data range
21070
- range * tickPixelIntervalOption /
21071
- Math.max(axis.len, tickPixelIntervalOption));
21164
+ categories ?
21165
+ 1 :
21166
+ // Don't let it be more than the data range
21167
+ range * tickPixelIntervalOption /
21168
+ Math.max(axis.len, tickPixelIntervalOption));
21072
21169
  }
21073
21170
  // Now we're finished detecting min and max, crop and group series data.
21074
21171
  // This is in turn needed in order to find tick positions in ordinal
@@ -21098,12 +21195,9 @@ class Axis {
21098
21195
  }
21099
21196
  // Before normalizing the tick interval, handle minimum tick interval.
21100
21197
  // This applies only if tickInterval is not defined.
21101
- const minTickInterval = pick(options.minTickInterval,
21102
- // In datetime axes, don't go below the data interval, except when
21103
- // there are scatter-like series involved (#13369).
21104
- dateTime &&
21105
- !axis.series.some((s) => !s.sorted) ?
21106
- axis.closestPointRange : 0);
21198
+ const minTickInterval = options.minTickInterval ?? (dateTime && !axis.series.some((s) => !s.sorted) ?
21199
+ axis.closestPointRange :
21200
+ 0);
21107
21201
  if (!tickIntervalOption &&
21108
21202
  minTickInterval &&
21109
21203
  axis.tickInterval < minTickInterval) {
@@ -21433,7 +21527,7 @@ class Axis {
21433
21527
  * @function Highcharts.Axis#adjustTickAmount
21434
21528
  */
21435
21529
  adjustTickAmount() {
21436
- const axis = this, { finalTickAmt, max, min, options, tickPositions, tickAmount, thresholdAlignment } = axis, currentTickAmount = tickPositions?.length, threshold = pick(axis.threshold, axis.softThreshold ? 0 : null);
21530
+ const axis = this, { finalTickAmt, max, min, options, tickPositions, tickAmount, thresholdAlignment } = axis, currentTickAmount = tickPositions?.length, threshold = axis.threshold ?? (axis.softThreshold ? 0 : null);
21437
21531
  let len, i, tickInterval = axis.tickInterval, thresholdTickIndex;
21438
21532
  const
21439
21533
  // Extend the tickPositions by appending a position
@@ -21669,7 +21763,8 @@ class Axis {
21669
21763
  offsets = options.offsets || [0, 0, 0, 0], horiz = this.horiz,
21670
21764
  // Check for percentage based input values. Rounding fixes problems
21671
21765
  // with column overflow and plot line filtering (#4898, #4899)
21672
- 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));
21766
+ width = this.width = Math.round(relativeLength((options.width ?? chart.plotWidth - offsets[3] + offsets[1]), chart.plotWidth)), height = this.height = Math.round(relativeLength((options.height ??
21767
+ 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));
21673
21768
  // Expose basic values to use in Series object and navigator
21674
21769
  this.bottom = chart.chartHeight - height - top;
21675
21770
  this.right = chart.chartWidth - width - left;
@@ -21780,9 +21875,7 @@ class Axis {
21780
21875
  * An array of tickLength and tickWidth
21781
21876
  */
21782
21877
  tickSize(prefix) {
21783
- const options = this.options, tickWidth = pick(options[prefix === 'tick' ? 'tickWidth' : 'minorTickWidth'],
21784
- // Default to 1 on linear and datetime X axes
21785
- prefix === 'tick' && this.isXAxis && !this.categories ? 1 : 0);
21878
+ const options = this.options, tickWidth = options[prefix === 'tick' ? 'tickWidth' : 'minorTickWidth'] ?? (prefix === 'tick' && this.isXAxis && !this.categories ? 1 : 0);
21786
21879
  let tickLength = options[prefix === 'tick' ? 'tickLength' : 'minorTickLength'], tickSize;
21787
21880
  if (tickWidth && tickLength) {
21788
21881
  // Negate the length
@@ -21869,7 +21962,7 @@ class Axis {
21869
21962
  newTickInterval = getStep(lineHeight * 0.75);
21870
21963
  }
21871
21964
  this.autoRotation = autoRotation;
21872
- this.labelRotation = pick(rotation, isNumber(rotationOption) ? rotationOption : 0);
21965
+ this.labelRotation = rotation ?? (isNumber(rotationOption) ? rotationOption : 0);
21873
21966
  return labelOptions.step ? tickInterval : newTickInterval;
21874
21967
  }
21875
21968
  /**
@@ -22221,7 +22314,7 @@ class Axis {
22221
22314
  titleOffsetOption = axisTitleOptions.offset;
22222
22315
  titleMargin = defined(titleOffsetOption) ?
22223
22316
  0 :
22224
- pick(axisTitleOptions.margin, horiz ? 5 : 10);
22317
+ axisTitleOptions.margin ?? (horiz ? 5 : 10);
22225
22318
  }
22226
22319
  }
22227
22320
  // Render the axis line
@@ -22453,7 +22546,7 @@ class Axis {
22453
22546
  * @emits Highcharts.Axis#event:afterRender
22454
22547
  */
22455
22548
  render() {
22456
- 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);
22549
+ 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);
22457
22550
  let from, to;
22458
22551
  // Reset
22459
22552
  axis.labelEdge.length = 0;
@@ -22732,9 +22825,9 @@ class Axis {
22732
22825
  }
22733
22826
  else if (defined(point)) {
22734
22827
  // #3834
22735
- pos = pick(this.coll !== 'colorAxis' ?
22736
- point.crosshairPos : // 3D axis extension
22737
- null, this.isXAxis ?
22828
+ pos = (this.coll !== 'colorAxis' ?
22829
+ point.crosshairPos :
22830
+ null) ?? (this.isXAxis ?
22738
22831
  point.plotX :
22739
22832
  this.len - point.plotY);
22740
22833
  }
@@ -22743,7 +22836,7 @@ class Axis {
22743
22836
  // Value, only used on radial
22744
22837
  value: point && (this.isXAxis ?
22745
22838
  point.x :
22746
- pick(point.stackY, point.y)),
22839
+ (point.stackY ?? point.y ?? void 0)),
22747
22840
  translatedValue: pos
22748
22841
  };
22749
22842
  if (chart.polar) {
@@ -22776,7 +22869,7 @@ class Axis {
22776
22869
  (categorized ? 'category ' : 'thin ') +
22777
22870
  (options.className || ''))
22778
22871
  .attr({
22779
- zIndex: pick(options.zIndex, 2)
22872
+ zIndex: (options.zIndex ?? 2)
22780
22873
  })
22781
22874
  .clip(options.clip === false ?
22782
22875
  void 0 :
@@ -22791,7 +22884,7 @@ class Axis {
22791
22884
  // eslint-disable-next-line max-len
22792
22885
  'var(--highcharts-highlight-color-20)').setOpacity(0.25).get() :
22793
22886
  'var(--highcharts-neutral-color-20)'),
22794
- 'stroke-width': pick(options.width, 1)
22887
+ 'stroke-width': (options.width ?? 1)
22795
22888
  }).css({
22796
22889
  'pointer-events': 'none'
22797
22890
  });
@@ -22804,7 +22897,7 @@ class Axis {
22804
22897
  }
22805
22898
  cross
22806
22899
  .show()
22807
- .animate({ d: path }, Axis_animObject(options?.animation));
22900
+ .animate({ d: path }, animObject(options?.animation));
22808
22901
  if (categorized && !options.width) {
22809
22902
  cross.attr({
22810
22903
  'stroke-width': this.transA
@@ -22857,7 +22950,7 @@ class Axis {
22857
22950
  this.destroy(true);
22858
22951
  this.init(chart, options);
22859
22952
  chart.isDirtyBox = true;
22860
- if (pick(redraw, true)) {
22953
+ if (redraw ?? true) {
22861
22954
  chart.redraw();
22862
22955
  }
22863
22956
  }
@@ -22887,7 +22980,7 @@ class Axis {
22887
22980
  chart.orderItems(coll);
22888
22981
  this.destroy();
22889
22982
  chart.isDirtyBox = true;
22890
- if (pick(redraw, true)) {
22983
+ if (redraw ?? true) {
22891
22984
  chart.redraw();
22892
22985
  }
22893
22986
  }
@@ -23543,8 +23636,10 @@ var LogarithmicAxis;
23543
23636
  tickIntervalOption, tickPixelIntervalOption = options.tickPixelInterval / (minor ? 5 : 1), totalPixelLength = minor ?
23544
23637
  axisLength / axis.tickPositions.length :
23545
23638
  axisLength;
23546
- interval = pick(filteredTickIntervalOption, log.minorAutoInterval, (realMax - realMin) *
23547
- tickPixelIntervalOption / (totalPixelLength || 1));
23639
+ interval = filteredTickIntervalOption ??
23640
+ log.minorAutoInterval ??
23641
+ (realMax - realMin) * tickPixelIntervalOption /
23642
+ (totalPixelLength || 1);
23548
23643
  interval = normalizeTickInterval(interval);
23549
23644
  positions = axis.getLinearTickPositions(interval, realMin, realMax).map(log.log2lin);
23550
23645
  if (!minor) {
@@ -23973,7 +24068,8 @@ class PlotLineOrBand {
23973
24068
  if (!chart.styledMode) {
23974
24069
  if (isLine) {
23975
24070
  attribs.stroke = color || 'var(--highcharts-neutral-color-40)';
23976
- attribs['stroke-width'] = pick(options.width, 1);
24071
+ attribs['stroke-width'] =
24072
+ options.width ?? 1;
23977
24073
  if (options.dashStyle) {
23978
24074
  attribs.dashstyle = options.dashStyle;
23979
24075
  }
@@ -24842,7 +24938,6 @@ class PlotLineOrBand {
24842
24938
  * */
24843
24939
 
24844
24940
 
24845
- const { animObject: Tooltip_animObject } = AnimationUtilities;
24846
24941
 
24847
24942
  const { format: Tooltip_format } = Core_Templating;
24848
24943
 
@@ -25106,7 +25201,8 @@ class Tooltip {
25106
25201
  'highcharts-label',
25107
25202
  isHeader && 'highcharts-tooltip-header',
25108
25203
  isSplit ? 'highcharts-tooltip-box' : 'highcharts-tooltip',
25109
- !isHeader && 'highcharts-color-' + pick(point.colorIndex, series.colorIndex),
25204
+ !isHeader &&
25205
+ 'highcharts-color-' + (point.colorIndex ?? series.colorIndex),
25110
25206
  seriesOptions?.className
25111
25207
  ].filter(isString).join(' ');
25112
25208
  }
@@ -25291,7 +25387,8 @@ class Tooltip {
25291
25387
  }
25292
25388
  // The far side is right or bottom
25293
25389
  const preferFarSide = !this.followPointer &&
25294
- pick(point.ttBelow, polar ? false : !inverted === flipped), // #4984
25390
+ (point.ttBelow ??
25391
+ (polar ? false : !inverted === flipped)), // #4984
25295
25392
  /*
25296
25393
  * Handle the preferred dimension. When the preferred dimension is
25297
25394
  * tooltip on top or bottom of the point, it will look for space
@@ -25418,7 +25515,7 @@ class Tooltip {
25418
25515
  const tooltip = this;
25419
25516
  // Disallow duplicate timers (#1728, #1766)
25420
25517
  clearTimeouts(this);
25421
- delay = pick(delay, this.options.hideDelay);
25518
+ delay = (delay ?? this.options.hideDelay);
25422
25519
  if (!this.isHidden) {
25423
25520
  this.hideTimer = syncTimeout(function () {
25424
25521
  const label = tooltip.getLabel();
@@ -25521,7 +25618,9 @@ class Tooltip {
25521
25618
  * Split tooltip does not support outside in the first iteration. Should
25522
25619
  * not be too complicated to implement.
25523
25620
  */
25524
- this.outside = pick(options.outside, Boolean(chart.scrollablePixelsX || chart.scrollablePixelsY));
25621
+ this.outside =
25622
+ options.outside ??
25623
+ Boolean(chart.scrollablePixelsX || chart.scrollablePixelsY);
25525
25624
  }
25526
25625
  shouldStickOnContact(pointerEvent) {
25527
25626
  return !!(!this.followPointer &&
@@ -25543,7 +25642,7 @@ class Tooltip {
25543
25642
  * @param {number} anchorY
25544
25643
  */
25545
25644
  move(x, y, anchorX, anchorY) {
25546
- const { followPointer, options } = this, animation = Tooltip_animObject(!followPointer &&
25645
+ const { followPointer, options } = this, animation = animObject(!followPointer &&
25547
25646
  !this.isHidden &&
25548
25647
  !options.fixed &&
25549
25648
  options.animation), skipAnchor = followPointer || (this.len || 0) > 1, attr = { x, y };
@@ -25601,7 +25700,7 @@ class Tooltip {
25601
25700
  point.points = void 0;
25602
25701
  // Register the current series
25603
25702
  const currentSeries = point.series;
25604
- this.distance = pick(currentSeries.tooltipOptions.distance, 16);
25703
+ this.distance = (currentSeries.tooltipOptions.distance ?? 16);
25605
25704
  // Update the inner HTML
25606
25705
  if (text === false) {
25607
25706
  this.hide();
@@ -25874,7 +25973,7 @@ class Tooltip {
25874
25973
  anchorY,
25875
25974
  boxWidth,
25876
25975
  point,
25877
- rank: pick(boxPosition.rank, isHeader ? 1 : 0),
25976
+ rank: boxPosition.rank ?? (isHeader ? 1 : 0),
25878
25977
  size,
25879
25978
  target: boxPosition.y,
25880
25979
  tt,
@@ -26291,7 +26390,6 @@ class Tooltip {
26291
26390
 
26292
26391
 
26293
26392
 
26294
- const { animObject: Point_animObject } = AnimationUtilities;
26295
26393
 
26296
26394
  const { defaultOptions: Point_defaultOptions } = Defaults;
26297
26395
 
@@ -26631,10 +26729,15 @@ class Point {
26631
26729
  *
26632
26730
  * @internal
26633
26731
  * @function Highcharts.Point#destroy
26732
+ *
26733
+ * @param {boolean} [sync]
26734
+ * Whether to destroy the point synchronously. Used internally from
26735
+ * series.destroy, where condemned points may cause animation errors
26736
+ * (#24976).
26634
26737
  */
26635
- destroy() {
26636
- if (!this.condemned) {
26637
- const point = this, series = point.series, chart = series.chart, hoverPoints = chart.hoverPoints, globalAnimation = point.series.chart.renderer.globalAnimation, { duration } = Point_animObject(globalAnimation);
26738
+ destroy(sync) {
26739
+ if (!this.destroyed && !this.condemned) {
26740
+ const point = this, series = point.series, chart = series.chart, hoverPoints = chart.hoverPoints, globalAnimation = point.series.chart.renderer.globalAnimation, { duration } = animObject(globalAnimation);
26638
26741
  /**
26639
26742
  * Allow to call after animation.
26640
26743
  * @internal
@@ -26651,6 +26754,7 @@ class Point {
26651
26754
  for (const prop in point) { // eslint-disable-line guard-for-in
26652
26755
  delete point[prop];
26653
26756
  }
26757
+ this.destroyed = true;
26654
26758
  };
26655
26759
  if (point.legendItem) {
26656
26760
  // Pies have legend items
@@ -26667,7 +26771,7 @@ class Point {
26667
26771
  point.onMouseOut();
26668
26772
  }
26669
26773
  // Remove properties after animation
26670
- if (duration && series.condemnedPoints) {
26774
+ if (duration && !sync && series.condemnedPoints) {
26671
26775
  series.condemnedPoints.push(this);
26672
26776
  this.graphic?.addClass('highcharts-point-condemned');
26673
26777
  setTimeout(destroyPoint, duration);
@@ -26790,14 +26894,15 @@ class Point {
26790
26894
  *
26791
26895
  * @function Highcharts.Point#getZone
26792
26896
  *
26793
- * @return {Highcharts.SeriesZonesOptionsObject}
26794
- * The zone item.
26897
+ * @return {Highcharts.SeriesZonesOptionsObject|undefined}
26898
+ * The zone item, or `undefined` if the series has no zones.
26795
26899
  */
26796
26900
  getZone() {
26797
26901
  const series = this.series, zones = series.zones, zoneAxis = series.zoneAxis || 'y';
26798
26902
  let zone, i = 0;
26799
26903
  zone = zones[i];
26800
- while (this[zoneAxis] >= zone.value) {
26904
+ while (i < zones.length &&
26905
+ this[zoneAxis] >= zone.value) {
26801
26906
  zone = zones[++i];
26802
26907
  }
26803
26908
  // For resetting or reusing the point (#8100)
@@ -27213,7 +27318,7 @@ class Point {
27213
27318
  */
27214
27319
  select(selected, accumulate) {
27215
27320
  const point = this, series = point.series, chart = series.chart;
27216
- selected = pick(selected, !point.selected);
27321
+ selected = (selected ?? !point.selected);
27217
27322
  this.selectedStaging = selected;
27218
27323
  // Fire the event with the default handler
27219
27324
  point.firePointEvent(selected ? 'select' : 'unselect', { accumulate: accumulate }, function () {
@@ -27337,9 +27442,8 @@ class Point {
27337
27442
  * @emits Highcharts.Point#event:afterSetState
27338
27443
  */
27339
27444
  setState(state, move) {
27340
- const point = this, series = point.series, previousState = point.state, stateOptions = (series.options.states[state || 'normal'] ||
27341
- {}), markerOptions = (Point_defaultOptions.plotOptions[series.type].marker &&
27342
- series.options.marker), normalDisabled = (markerOptions && markerOptions.enabled === false), markerStateOptions = markerOptions?.states?.[state || 'normal'] ||
27445
+ const point = this, series = point.series, previousState = point.state, stateOptions = series.options.states?.[state || 'normal'] || {}, markerOptions = (Point_defaultOptions.plotOptions?.[series.type]?.marker &&
27446
+ series.options.marker), normalDisabled = markerOptions?.enabled === false, markerStateOptions = markerOptions?.states?.[state || 'normal'] ||
27343
27447
  {}, stateDisabled = markerStateOptions.enabled === false, pointMarker = point.marker || {}, chart = series.chart, hasMarkers = (markerOptions && series.markerAttribs);
27344
27448
  let halo = series.halo, markerAttribs, pointAttribs, pointAttribsAnimation, stateMarkerGraphic = series.stateMarkerGraphic, newSymbol;
27345
27449
  state = state || ''; // Empty string
@@ -27352,13 +27456,10 @@ class Point {
27352
27456
  (stateOptions.enabled === false) ||
27353
27457
  // General point marker's state options is disabled
27354
27458
  (state && (stateDisabled ||
27355
- (normalDisabled &&
27356
- markerStateOptions.enabled === false))) ||
27459
+ (normalDisabled && markerStateOptions.enabled === false))) ||
27357
27460
  // Individual point marker's state options is disabled
27358
27461
  (state &&
27359
- pointMarker.states &&
27360
- pointMarker.states[state] &&
27361
- pointMarker.states[state].enabled === false) // #1610
27462
+ pointMarker.states?.[state]?.enabled === false) // #1610
27362
27463
  ) {
27363
27464
  return;
27364
27465
  }
@@ -27377,7 +27478,8 @@ class Point {
27377
27478
  }
27378
27479
  if (!chart.styledMode) {
27379
27480
  pointAttribs = series.pointAttribs(point, state);
27380
- pointAttribsAnimation = pick(chart.options.chart.animation, stateOptions.animation);
27481
+ pointAttribsAnimation = (chart.options.chart.animation ??
27482
+ stateOptions.animation);
27381
27483
  const opacity = pointAttribs.opacity;
27382
27484
  // Some inactive points (e.g. slices in pie) should apply
27383
27485
  // opacity also for their labels
@@ -27395,9 +27497,11 @@ class Point {
27395
27497
  point.graphic.animate(pointAttribs, pointAttribsAnimation);
27396
27498
  }
27397
27499
  if (markerAttribs) {
27398
- point.graphic.animate(markerAttribs, pick(
27500
+ point.graphic.animate(markerAttribs, (
27399
27501
  // Turn off globally:
27400
- chart.options.chart.animation, markerStateOptions.animation, markerOptions.animation));
27502
+ chart.options.chart.animation ??
27503
+ markerStateOptions.animation ??
27504
+ markerOptions.animation));
27401
27505
  }
27402
27506
  // Zooming in from a range with no markers to a range with markers
27403
27507
  if (stateMarkerGraphic) {
@@ -27446,10 +27550,12 @@ class Point {
27446
27550
  }
27447
27551
  }
27448
27552
  // Show me your halo
27449
- const haloOptions = stateOptions.halo;
27553
+ const haloOptions = isObject(stateOptions.halo) ?
27554
+ stateOptions.halo :
27555
+ {};
27450
27556
  const markerGraphic = (point.graphic || stateMarkerGraphic);
27451
27557
  const markerVisibility = markerGraphic?.visibility || 'inherit';
27452
- if (haloOptions?.size &&
27558
+ if (haloOptions.size &&
27453
27559
  markerGraphic &&
27454
27560
  markerVisibility !== 'hidden' &&
27455
27561
  !point.isCluster) {
@@ -27463,7 +27569,7 @@ class Point {
27463
27569
  });
27464
27570
  halo.attr({
27465
27571
  'class': 'highcharts-halo highcharts-color-' +
27466
- pick(point.colorIndex, series.colorIndex) +
27572
+ (point.colorIndex ?? series.colorIndex) +
27467
27573
  (point.className ? ' ' + point.className : ''),
27468
27574
  'visibility': markerVisibility,
27469
27575
  'zIndex': -1 // #4929, #8276
@@ -27979,6 +28085,11 @@ class Pointer {
27979
28085
  }
27980
28086
  }
27981
28087
  }
28088
+ // Run a final transform with a drop trigger to display the reset
28089
+ // zoom button after a pinch gesture (#22128)
28090
+ if (e?.type === 'touchend' && this.hasDragged) {
28091
+ chart.transform({ trigger: 'drop' });
28092
+ }
27982
28093
  if (redraw) {
27983
28094
  chart.redraw();
27984
28095
  }
@@ -28191,7 +28302,7 @@ class Pointer {
28191
28302
  const hoverPoints = [], useExisting = !!(isDirectTouch && existingHoverPoint), filter = function (s) {
28192
28303
  return (s.visible &&
28193
28304
  !(!shared && s.directTouch) && // #3821
28194
- pick(s.options.enableMouseTracking, true));
28305
+ (s.options.enableMouseTracking ?? true));
28195
28306
  };
28196
28307
  let hoverSeries = existingHoverSeries,
28197
28308
  // Which series to look in for the hover point
@@ -28377,8 +28488,8 @@ class Pointer {
28377
28488
  const ePos = (touches ?
28378
28489
  touches.length ?
28379
28490
  touches.item(0) :
28380
- (pick(// #13534
28381
- touches.changedTouches, e.changedTouches))[0] :
28491
+ (touches.changedTouches ??
28492
+ e.changedTouches)[0] :
28382
28493
  e);
28383
28494
  // Get mouse position
28384
28495
  if (!chartPosition) {
@@ -28452,7 +28563,7 @@ class Pointer {
28452
28563
  * @function Highcharts.Pointer#onContainerMouseLeave
28453
28564
  */
28454
28565
  onContainerMouseLeave(e) {
28455
- const { pointer } = Pointer_charts[pick(Pointer.hoverChartIndex, -1)] || {};
28566
+ const { pointer } = Pointer_charts[(Pointer.hoverChartIndex ?? -1)] || {};
28456
28567
  e = this.normalize(e);
28457
28568
  this.onContainerMouseMove(e);
28458
28569
  // #4886, MS Touch end fires mouseleave but with no related target
@@ -28552,7 +28663,7 @@ class Pointer {
28552
28663
  if (e?.touches && this.hasPinchMoved) {
28553
28664
  e?.preventDefault?.();
28554
28665
  }
28555
- Pointer_charts[pick(Pointer.hoverChartIndex, -1)]
28666
+ Pointer_charts[(Pointer.hoverChartIndex ?? -1)]
28556
28667
  ?.pointer
28557
28668
  ?.drop(e);
28558
28669
  }
@@ -28622,6 +28733,9 @@ class Pointer {
28622
28733
  from: boxFromTouches(lastTouches),
28623
28734
  trigger: e.type
28624
28735
  });
28736
+ // Record a truthy value in order to trigger the final transform
28737
+ // in the drop function
28738
+ pointer.hasDragged = 1;
28625
28739
  });
28626
28740
  if (pointer.res) {
28627
28741
  pointer.res = false;
@@ -29056,7 +29170,7 @@ class Pointer {
29056
29170
  */
29057
29171
  setHoverChartIndex(e) {
29058
29172
  const chart = this.chart;
29059
- const hoverChart = Core_Globals.charts[pick(Pointer.hoverChartIndex, -1)];
29173
+ const hoverChart = Core_Globals.charts[(Pointer.hoverChartIndex ?? -1)];
29060
29174
  if (hoverChart &&
29061
29175
  hoverChart !== chart) {
29062
29176
  const relatedTargetObj = { relatedTarget: chart.container };
@@ -29102,7 +29216,7 @@ class Pointer {
29102
29216
  Math.pow(pinchDown[0].chartY - e.chartY, 2)) >= 16 :
29103
29217
  false;
29104
29218
  }
29105
- if (pick(hasMoved, true)) {
29219
+ if (hasMoved ?? true) {
29106
29220
  this.pinch(e);
29107
29221
  }
29108
29222
  }
@@ -29113,7 +29227,9 @@ class Pointer {
29113
29227
  // If inside, capture touch-drag and display tooltip. If not inside,
29114
29228
  // allow dragging the finger to scroll the page
29115
29229
  if ((chart.tooltip?.options.followTouchMove ?? true) &&
29116
- isInside) {
29230
+ isInside &&
29231
+ e.type === 'touchmove' &&
29232
+ !(chart.scrollablePixelsX || chart.scrollablePixelsY)) {
29117
29233
  e.preventDefault();
29118
29234
  }
29119
29235
  }
@@ -29143,7 +29259,7 @@ class Pointer {
29143
29259
  let zoomType = chart.zooming.type || '', zoomX, zoomY;
29144
29260
  // Look for the pinchType option
29145
29261
  if (/touch/.test(e.type)) {
29146
- zoomType = pick(chart.zooming.pinchType, zoomType);
29262
+ zoomType = (chart.zooming.pinchType ?? zoomType);
29147
29263
  }
29148
29264
  this.zoomX = zoomX = /x/.test(zoomType);
29149
29265
  this.zoomY = zoomY = /y/.test(zoomType);
@@ -29585,7 +29701,7 @@ class DataTableCore {
29585
29701
  * Fetches the given column by the canonical column ID. Simplified version
29586
29702
  * of the full `DataTable.getRow` method, always returning by reference.
29587
29703
  *
29588
- * @function Highcharts.DataTable#setColumn
29704
+ * @function Highcharts.DataTable#getColumn
29589
29705
  *
29590
29706
  * @param {string} columnId
29591
29707
  * ID of the column to get.
@@ -29917,7 +30033,7 @@ var LegendSymbol;
29917
30033
  // Draw the marker
29918
30034
  if (markerOptions && markerOptions.enabled !== false && symbolWidth) {
29919
30035
  // Do not allow the marker to be larger than the symbolHeight
29920
- let radius = Math.min(pick(markerOptions.radius, generalRadius), generalRadius);
30036
+ let radius = Math.min((markerOptions.radius ?? generalRadius), generalRadius);
29921
30037
  // Restrict symbol markers size
29922
30038
  if (symbol.indexOf('url') === 0) {
29923
30039
  markerOptions = merge(markerOptions, {
@@ -30321,6 +30437,10 @@ const seriesDefaults = {
30321
30437
  * ```
30322
30438
  *
30323
30439
  * @type {Highcharts.DataMappingOptionsObject}
30440
+ * @sample highcharts/datatable/datamapping
30441
+ * Basic data mapping
30442
+ * @sample highcharts/datatable/datamapping-dynamic
30443
+ * Data mapping with dynamic updates
30324
30444
  * @sample {highcharts} highcharts/datatable/series-datatable-multiple
30325
30445
  * Series with two data tables
30326
30446
  * @sample {highcharts} highcharts/datatable/nested-keys
@@ -30331,6 +30451,29 @@ const seriesDefaults = {
30331
30451
  * @since 13.0.0
30332
30452
  * @apioption plotOptions.series.dataMapping
30333
30453
  */
30454
+ /**
30455
+ * Options for a specific series-level data table or an array of data
30456
+ * tables. The `dataTable` option can be either a configuration object or an
30457
+ * instance of the `DataTable` class. If a `DataTable` instance is passed,
30458
+ * it will be used directly. If a configuration object or an array is
30459
+ * passed, a new `DataTable` instance will be created based on the provided
30460
+ * configuration.
30461
+ *
30462
+ * @type {Highcharts.DataTable|Highcharts.DataTableOptionsObject|Array<Highcharts.DataTable|Highcharts.DataTableOptionsObject>}
30463
+ * @sample {highcharts} highcharts/datatable/series-datatable/
30464
+ * Series with one data table each
30465
+ * @sample {highcharts} highcharts/datatable/series-datatable-multiple/
30466
+ * Series with two data tables
30467
+ * @sample {highstock} stock/datatable/series-datatable/
30468
+ * Series with one data table each
30469
+ * @sample {highstock} stock/datatable/series-datatable-multiple/
30470
+ * Series with two data tables
30471
+ * @sample {highmaps} maps/datatable/series-datatable
30472
+ * Series-level data table
30473
+ *
30474
+ * @since 13.0.0
30475
+ * @apioption plotOptions.series.dataTable
30476
+ */
30334
30477
  /**
30335
30478
  * Enable or disable the mouse tracking for a specific series. This
30336
30479
  * includes point tooltips and click events on graphs and points. For
@@ -31214,6 +31357,7 @@ const seriesDefaults = {
31214
31357
  * `series.allowPointSelect` option to true.
31215
31358
  *
31216
31359
  * @declare Highcharts.PointStatesSelectOptionsObject
31360
+ * @extends plotOptions.series.marker.states.hover
31217
31361
  */
31218
31362
  select: {
31219
31363
  /**
@@ -31790,6 +31934,7 @@ const seriesDefaults = {
31790
31934
  * @sample {highmaps} maps/plotoptions/series-datalabels-box/
31791
31935
  * Data labels box options
31792
31936
  *
31937
+ * @type {number|Array<number>}
31793
31938
  * @since 2.2.1
31794
31939
  */
31795
31940
  padding: [1, 3],
@@ -31991,6 +32136,9 @@ const seriesDefaults = {
31991
32136
  /**
31992
32137
  * A collection of options for different series states.
31993
32138
  *
32139
+ * In addition to the options documented under each state, any option from
32140
+ * the parent series type can be set, with exception of `data` and `states`.
32141
+ *
31994
32142
  * @declare Highcharts.SeriesStatesOptionsObject
31995
32143
  */
31996
32144
  states: {
@@ -32164,6 +32312,7 @@ const seriesDefaults = {
32164
32312
  * Disabled inactive state
32165
32313
  *
32166
32314
  * @declare Highcharts.SeriesStatesInactiveOptionsObject
32315
+ * @extends plotOptions.series.states.hover
32167
32316
  */
32168
32317
  inactive: {
32169
32318
  /**
@@ -32564,7 +32713,6 @@ var SeriesRegistry;
32564
32713
  * */
32565
32714
 
32566
32715
 
32567
- const { animObject: Series_animObject, setAnimation: Series_setAnimation } = AnimationUtilities;
32568
32716
 
32569
32717
 
32570
32718
  const { defaultOptions: Series_defaultOptions } = Defaults;
@@ -32702,6 +32850,13 @@ class Series {
32702
32850
  * @type {number|undefined}
32703
32851
  * @readonly
32704
32852
  */
32853
+ /**
32854
+ * The main group for the series' graphics.
32855
+ *
32856
+ * @name Highcharts.Series#group
32857
+ * @type {Highcharts.SVGElement}
32858
+ * @readonly
32859
+ */
32705
32860
  /**
32706
32861
  * Contains the series' index in the `Chart.series` array.
32707
32862
  *
@@ -32834,10 +32989,12 @@ class Series {
32834
32989
  */
32835
32990
  series.options = series.setOptions(userOptions);
32836
32991
  const options = series.options, visible = options.visible !== false;
32837
- // Create the data table
32838
- this.dataTable ?? (this.dataTable = options.dataTable?.isDataTable ?
32839
- options.dataTable :
32840
- new Data_DataTableCore(options.dataTable));
32992
+ // Create the data table or use the one passed as option
32993
+ this.dataTable ?? (this.dataTable = isArray(options.dataTable) ?
32994
+ new Data_DataTableCore() :
32995
+ options.dataTable?.isDataTable ?
32996
+ options.dataTable :
32997
+ new Data_DataTableCore(options.dataTable));
32841
32998
  /**
32842
32999
  * All child series that are linked to the current series through the
32843
33000
  * [linkedTo](https://api.highcharts.com/highcharts/series.line.linkedTo)
@@ -32897,7 +33054,7 @@ class Series {
32897
33054
  if (chartSeries.length) {
32898
33055
  lastSeries = chartSeries[chartSeries.length - 1];
32899
33056
  }
32900
- series._i = pick(lastSeries?._i, -1) + 1;
33057
+ series._i = (lastSeries?._i ?? -1) + 1;
32901
33058
  series.opacity = series.options.opacity;
32902
33059
  // Insert the series and re-order all series above the insertion
32903
33060
  // point.
@@ -32944,7 +33101,7 @@ class Series {
32944
33101
  // Apply if the series xAxis or yAxis option matches
32945
33102
  // the number of the axis, or if undefined, use the
32946
33103
  // first axis
32947
- if (pick(seriesOptions[coll], 0) === axis.index ||
33104
+ if ((seriesOptions[coll] ?? 0) === axis.index ||
32948
33105
  (typeof seriesOptions[coll] !==
32949
33106
  'undefined' &&
32950
33107
  seriesOptions[coll] === axisOptions.id)) {
@@ -32987,8 +33144,12 @@ class Series {
32987
33144
  * @function Highcharts.Series#hasMarkerChanged
32988
33145
  */
32989
33146
  hasMarkerChanged(options, oldOptions) {
32990
- const marker = options.marker, oldMarker = oldOptions.marker || {};
32991
- return marker && ((oldMarker.enabled && !marker.enabled) ||
33147
+ const marker = options.marker, oldMarker = oldOptions.marker;
33148
+ // Note that `marker` holds the full, merged object including
33149
+ // `plotOptions`, while `oldMarker` is the user-defined series-level
33150
+ // options only. We may need to refactor that in the future if more
33151
+ // issues like #24057 arise.
33152
+ return marker && oldMarker && ((oldMarker.enabled && !marker.enabled) ||
32992
33153
  oldMarker.symbol !== marker.symbol || // #10870, #15946
32993
33154
  oldMarker.height !== marker.height || // #16274
32994
33155
  oldMarker.width !== marker.width // #16274
@@ -33007,7 +33168,8 @@ class Series {
33007
33168
  time.parse(options.pointStart) ??
33008
33169
  0;
33009
33170
  let pointInterval;
33010
- this.pointInterval = pointInterval = pick(this.pointInterval, options.pointInterval, 1);
33171
+ this.pointInterval = pointInterval =
33172
+ this.pointInterval ?? options.pointInterval ?? 1;
33011
33173
  if (relativeXValue && isNumber(x)) {
33012
33174
  pointInterval *= x;
33013
33175
  }
@@ -33079,9 +33241,13 @@ class Series {
33079
33241
  );
33080
33242
  // When shared tooltip, stickyTracking is true by default,
33081
33243
  // unless user says otherwise.
33082
- this.stickyTracking = pick(seriesUserOptions.stickyTracking, userPlotOptionsType.stickyTracking, userPlotOptionsSeries.stickyTracking, (this.tooltipOptions.shared && !this.noSharedTooltip ?
33083
- true :
33084
- options.stickyTracking));
33244
+ this.stickyTracking =
33245
+ seriesUserOptions.stickyTracking ??
33246
+ userPlotOptionsType.stickyTracking ??
33247
+ userPlotOptionsSeries.stickyTracking ??
33248
+ (this.tooltipOptions.shared && !this.noSharedTooltip ?
33249
+ true :
33250
+ options.stickyTracking);
33085
33251
  // Delete marker object if not allowed (#1125)
33086
33252
  if (typeOptions.marker === null) {
33087
33253
  delete options.marker;
@@ -33159,7 +33325,9 @@ class Series {
33159
33325
  if (!value) {
33160
33326
  // Pick up either the colorIndex option, or the series.colorIndex
33161
33327
  // after Series.update()
33162
- setting = pick(prop === 'color' ? this.options.colorIndex : void 0, this[indexName]);
33328
+ setting = prop === 'color' ?
33329
+ (this.options.colorIndex ?? this[indexName]) :
33330
+ this[indexName];
33163
33331
  if (defined(setting)) { // After Series.update()
33164
33332
  i = setting;
33165
33333
  }
@@ -33219,7 +33387,7 @@ class Series {
33219
33387
  */
33220
33388
  getSymbol() {
33221
33389
  const seriesMarkerOption = this.options.marker;
33222
- this.getCyclic('symbol', seriesMarkerOption.symbol, this.chart.options.symbols);
33390
+ this.getCyclic('symbol', seriesMarkerOption?.symbol, this.chart.options.symbols);
33223
33391
  }
33224
33392
  /**
33225
33393
  * Shorthand to get one of the series' data columns from `Series.dataTable`.
@@ -33415,9 +33583,10 @@ class Series {
33415
33583
  if (!oldData[i].destroyed && !oldData[i].condemned) {
33416
33584
  const pOptions = dataTable.getRowObject(i);
33417
33585
  if (pOptions) {
33586
+ // Remove undefined properties, but preserve explicit
33587
+ // nulls (#24872)
33418
33588
  Object.keys(pOptions).forEach((key) => {
33419
- if (!defined(pOptions[key]) /* ||
33420
- pOptions[key] === oldData[i].options[key]*/) {
33589
+ if (pOptions[key] === void 0) {
33421
33590
  delete pOptions[key];
33422
33591
  }
33423
33592
  });
@@ -33822,8 +33991,12 @@ class Series {
33822
33991
  }
33823
33992
  }
33824
33993
  }
33825
- // Find the closest distance between processed points
33826
- xData = this.getColumn('x', true);
33994
+ // Find the closest distance between processed points. When the data was
33995
+ // cropped (or set out of range), read x from the freshly cropped local
33996
+ // `modified` table, #24858.
33997
+ if (modified !== table) {
33998
+ xData = modified.getColumn('x', true) || [];
33999
+ }
33827
34000
  const closestPointRange = getClosestDistance([
33828
34001
  logarithmic ?
33829
34002
  xData.map(logarithmic.log2lin) :
@@ -34028,9 +34201,9 @@ class Series {
34028
34201
  * Force getting extremes of a total series data range.
34029
34202
  */
34030
34203
  getExtremes(yData, forceExtremesFromAll) {
34031
- const { xAxis, yAxis } = this, getExtremesFromAll = forceExtremesFromAll ||
34204
+ const { options, xAxis, yAxis } = this, getExtremesFromAll = forceExtremesFromAll ||
34032
34205
  this.getExtremesFromAll ||
34033
- this.options.getExtremesFromAll, // #4599, #21003
34206
+ options.getExtremesFromAll, // #4599, #21003
34034
34207
  table = getExtremesFromAll && this.cropped ?
34035
34208
  this.dataTable :
34036
34209
  this.dataTable.getModified(), rowCount = table.rowCount, customData = yData || this.stackedYData, yAxisData = customData ?
@@ -34040,7 +34213,12 @@ class Series {
34040
34213
  // non-sorted data like scatter (#7639).
34041
34214
  shoulder = this.requireSorting && !this.is('column') ?
34042
34215
  1 : 0,
34043
- // #2117, need to compensate for log X axis
34216
+ // Used only for `cumulativeStart` (#24608)
34217
+ excludeShoulder = options.cumulative &&
34218
+ options.cumulativeStart &&
34219
+ shoulder &&
34220
+ !getExtremesFromAll,
34221
+ // Compensate for log X axis (#2117)
34044
34222
  positiveValuesOnly = yAxis ? yAxis.positiveValuesOnly : false, doAll = getExtremesFromAll ||
34045
34223
  this.cropped ||
34046
34224
  !xAxis; // For colorAxis support
@@ -34052,10 +34230,10 @@ class Series {
34052
34230
  }
34053
34231
  for (i = 0; i < rowCount; i++) {
34054
34232
  x = xData[i];
34055
- // Check if it is within the selected x axis range
34056
- if (doAll ||
34233
+ // Check if it is within the selected x-axis range
34234
+ if ((doAll ||
34057
34235
  ((xData[i + shoulder] || x) >= xMin &&
34058
- (xData[i - shoulder] || x) <= xMax)) {
34236
+ (xData[i - shoulder] || x) <= xMax)) && (!excludeShoulder || x >= xMin)) {
34059
34237
  for (const values of yAxisData) {
34060
34238
  const val = values[i];
34061
34239
  // For points within the visible range, including the
@@ -34124,7 +34302,7 @@ class Series {
34124
34302
  */
34125
34303
  translate() {
34126
34304
  this.generatePoints();
34127
- 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
34305
+ 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
34128
34306
  dynamicallyPlaced = Boolean(pointPlacement), stackThreshold = options.startFromThreshold ? threshold : 0, nullYSubstitute = (options?.nullInteraction &&
34129
34307
  yAxis.len);
34130
34308
  let i, plotX, lastPlotX, stackIndicator, closestPointRangePx = Number.MAX_VALUE;
@@ -34176,7 +34354,9 @@ class Series {
34176
34354
  yValue = stackValues[1];
34177
34355
  if (lowValue === stackThreshold &&
34178
34356
  stackIndicator.key === stacks[xValue].base) {
34179
- lowValue = pick(isNumber(threshold) ? threshold : yAxis.min);
34357
+ lowValue = isNumber(threshold) ?
34358
+ threshold :
34359
+ yAxis.min;
34180
34360
  }
34181
34361
  // #1200, #1232
34182
34362
  if (yAxis.positiveValuesOnly &&
@@ -34184,7 +34364,7 @@ class Series {
34184
34364
  lowValue <= 0) {
34185
34365
  lowValue = void 0;
34186
34366
  }
34187
- point.total = point.stackTotal = pick(stackItem.total);
34367
+ point.total = point.stackTotal = stackItem.total ?? void 0;
34188
34368
  point.percentage = defined(point.y) && stackItem.total ?
34189
34369
  (point.y / stackItem.total * 100) : void 0;
34190
34370
  point.stackY = yValue;
@@ -34317,7 +34497,7 @@ class Series {
34317
34497
  * Initialize the animation.
34318
34498
  */
34319
34499
  animate(init) {
34320
- const { chart, group, markerGroup } = this, inverted = chart.inverted, animation = Series_animObject(this.options.animation),
34500
+ const { chart, group, markerGroup } = this, inverted = chart.inverted, animation = animObject(this.options.animation),
34321
34501
  // The key for temporary animation clips
34322
34502
  animationClipKey = [
34323
34503
  this.getSharedClipKey(),
@@ -34413,10 +34593,11 @@ class Series {
34413
34593
  */
34414
34594
  drawPoints(points) {
34415
34595
  points || (points = this.points.concat(this.condemnedPoints));
34416
- 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,
34417
- // Use larger or equal as radius is null in bubbles (#6321)
34418
- series.closestPointRangePx >= (seriesMarkerOptions.enabledThreshold *
34419
- seriesMarkerOptions.radius));
34596
+ 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 ??
34597
+ (!xAxis || xAxis.isRadial ? true : null) ??
34598
+ // Use larger or equal as radius is null in bubbles (#6321)
34599
+ ((series.closestPointRangePx ?? -Infinity) >= ((seriesMarkerOptions.enabledThreshold ?? 2) *
34600
+ seriesMarkerOptions.radius));
34420
34601
  let i, point, graphic, verb, pointMarkerOptions, hasPointMarker, markerAttribs;
34421
34602
  if (seriesMarkerOptions.enabled !== false ||
34422
34603
  series._hasPointMarkers) {
@@ -34433,8 +34614,10 @@ class Series {
34433
34614
  // Only draw the point if y is defined
34434
34615
  if (shouldDrawMarker) {
34435
34616
  // Shortcuts
34436
- const symbol = pick(pointMarkerOptions.symbol, series.symbol, 'rect');
34437
- markerAttribs = series.markerAttribs(point, (point.selected && 'select'));
34617
+ const symbol = pointMarkerOptions.symbol ??
34618
+ series.symbol ??
34619
+ 'rect';
34620
+ markerAttribs = series.markerAttribs(point, point.selected ? 'select' : '');
34438
34621
  const isInside = point.isInside !== false;
34439
34622
  if (!graphic &&
34440
34623
  isInside &&
@@ -34499,15 +34682,17 @@ class Series {
34499
34682
  * A hash containing those attributes that are not settable from CSS.
34500
34683
  */
34501
34684
  markerAttribs(point, state) {
34502
- const seriesOptions = this.options, seriesMarkerOptions = seriesOptions.marker, pointMarkerOptions = point.marker || {}, symbol = (pointMarkerOptions.symbol ||
34685
+ const seriesOptions = this.options, seriesMarkerOptions = seriesOptions.marker ?? {}, pointMarkerOptions = point.marker || {}, symbol = (pointMarkerOptions.symbol ||
34503
34686
  seriesMarkerOptions.symbol), attribs = {};
34504
- let seriesStateOptions, pointStateOptions, radius = pick(pointMarkerOptions.radius, seriesMarkerOptions?.radius);
34687
+ let seriesStateOptions, pointStateOptions, radius = pointMarkerOptions.radius ??
34688
+ seriesMarkerOptions.radius;
34505
34689
  // Handle hover and select states
34506
34690
  if (state) {
34507
- seriesStateOptions = seriesMarkerOptions?.states?.[state];
34691
+ seriesStateOptions = seriesMarkerOptions.states?.[state];
34508
34692
  pointStateOptions = pointMarkerOptions.states?.[state];
34509
- radius = pick(pointStateOptions?.radius, seriesStateOptions?.radius, radius && radius + (seriesStateOptions?.radiusPlus ||
34510
- 0));
34693
+ radius = pointStateOptions?.radius ??
34694
+ seriesStateOptions?.radius ??
34695
+ (radius && radius + (seriesStateOptions?.radiusPlus || 0));
34511
34696
  }
34512
34697
  point.hasImage = symbol && symbol.indexOf('url') === 0;
34513
34698
  if (point.hasImage) {
@@ -34520,7 +34705,7 @@ class Series {
34520
34705
  0 :
34521
34706
  symbol === 'rect' ?
34522
34707
  // Rectangle symbols need crisp edges, others don't
34523
- seriesMarkerOptions?.lineWidth || 0 :
34708
+ seriesMarkerOptions.lineWidth || 0 :
34524
34709
  1);
34525
34710
  }
34526
34711
  attribs.x = pos[0] - radius;
@@ -34551,8 +34736,9 @@ class Series {
34551
34736
  * The presentational attributes to be set on the point.
34552
34737
  */
34553
34738
  pointAttribs(point, state) {
34554
- const options = this.options, seriesMarkerOptions = options.marker, pointOptions = point?.options, pointMarkerOptions = pointOptions?.marker || {}, pointColorOption = pointOptions?.color, pointColor = point?.color, zoneColor = point?.zone?.color;
34555
- let seriesStateOptions, pointStateOptions, color = this.color, fill, stroke, strokeWidth = pick(pointMarkerOptions.lineWidth, seriesMarkerOptions.lineWidth), opacity = (point?.isNull && options.nullInteraction) ? 0 : 1;
34739
+ const options = this.options, seriesMarkerOptions = options.marker ?? {}, pointOptions = point?.options, pointMarkerOptions = pointOptions?.marker || {}, pointColorOption = pointOptions?.color, pointColor = point?.color, zoneColor = point?.zone?.color;
34740
+ let color = this.color, fill, stroke, strokeWidth = pointMarkerOptions.lineWidth ??
34741
+ seriesMarkerOptions.lineWidth, opacity = (point?.isNull && options.nullInteraction) ? 0 : 1;
34556
34742
  color = (pointColorOption ||
34557
34743
  zoneColor ||
34558
34744
  pointColor ||
@@ -34565,19 +34751,22 @@ class Series {
34565
34751
  color);
34566
34752
  // Handle hover and select states
34567
34753
  state = state || 'normal';
34568
- if (state) {
34569
- seriesStateOptions = (seriesMarkerOptions.states[state] || {});
34570
- pointStateOptions = (pointMarkerOptions.states &&
34571
- pointMarkerOptions.states[state]) || {};
34572
- strokeWidth = pick(pointStateOptions.lineWidth, seriesStateOptions.lineWidth, strokeWidth + pick(pointStateOptions.lineWidthPlus, seriesStateOptions.lineWidthPlus, 0));
34573
- fill = (pointStateOptions.fillColor ||
34574
- seriesStateOptions.fillColor ||
34575
- fill);
34576
- stroke = (pointStateOptions.lineColor ||
34577
- seriesStateOptions.lineColor ||
34578
- stroke);
34579
- opacity = pick(pointStateOptions.opacity, seriesStateOptions.opacity, opacity);
34580
- }
34754
+ const seriesStateOptions = seriesMarkerOptions.states?.[state] || {};
34755
+ const pointStateOptions = pointMarkerOptions.states?.[state] || {};
34756
+ strokeWidth = pointStateOptions.lineWidth ??
34757
+ seriesStateOptions.lineWidth ??
34758
+ (strokeWidth || 0) + (pointStateOptions.lineWidthPlus ??
34759
+ seriesStateOptions.lineWidthPlus ??
34760
+ 0);
34761
+ fill = (pointStateOptions.fillColor ||
34762
+ seriesStateOptions.fillColor ||
34763
+ fill);
34764
+ stroke = (pointStateOptions.lineColor ||
34765
+ seriesStateOptions.lineColor ||
34766
+ stroke);
34767
+ opacity = (pointStateOptions.opacity ??
34768
+ seriesStateOptions.opacity ??
34769
+ opacity);
34581
34770
  return {
34582
34771
  'stroke': stroke,
34583
34772
  'stroke-width': strokeWidth,
@@ -34616,7 +34805,7 @@ class Series {
34616
34805
  // Destroy all points with their elements
34617
34806
  i = data.length;
34618
34807
  while (i--) {
34619
- data[i]?.destroy?.();
34808
+ data[i]?.destroy?.(true);
34620
34809
  }
34621
34810
  for (const zone of series.zones || []) {
34622
34811
  // Destroy SVGElement's but preserve primitive props (#20426)
@@ -34643,7 +34832,7 @@ class Series {
34643
34832
  erase(chart.series, series);
34644
34833
  chart.orderItems('series');
34645
34834
  // Clear all members
34646
- objectEach(series, function (val, prop) {
34835
+ objectEach(series, function (_val, prop) {
34647
34836
  if (!keepEventsForUpdate || prop !== 'hcEvents') {
34648
34837
  delete series[prop];
34649
34838
  }
@@ -34695,7 +34884,7 @@ class Series {
34695
34884
  // Reset
34696
34885
  zones.forEach((zone) => {
34697
34886
  zone.lineClip = [];
34698
- zone.translated = clamp(axis.toPixels(pick(zone.value, axisMax), true) || 0, 0, len);
34887
+ zone.translated = clamp(axis.toPixels((zone.value ?? axisMax), true) || 0, 0, len);
34699
34888
  });
34700
34889
  // The use of the Color Threshold assumes there are no gaps so it is
34701
34890
  // safe to hide the original graph and area unless it is not
@@ -34919,7 +35108,7 @@ class Series {
34919
35108
  * @emits Highcharts.Series#event:afterRender
34920
35109
  */
34921
35110
  render() {
34922
- const series = this, { chart, options, hasRendered } = series, animOptions = Series_animObject(options.animation), visibility = series.visible ?
35111
+ const series = this, { chart, options, hasRendered } = series, animOptions = animObject(options.animation), visibility = series.visible ?
34923
35112
  'inherit' : 'hidden', // #2597
34924
35113
  zIndex = options.zIndex, chartSeriesGroup = chart.seriesGroup;
34925
35114
  let animDuration = series.finishedAnimating ?
@@ -35021,7 +35210,7 @@ class Series {
35021
35210
  *
35022
35211
  * @function Highcharts.Series#searchPoint
35023
35212
  *
35024
- * @param {Highcharts.PointerEvent} e
35213
+ * @param {PointerEvent} e
35025
35214
  * The normalized pointer event
35026
35215
  * @param {boolean} [compareX=false]
35027
35216
  * Search only by the X value, not Y
@@ -35053,7 +35242,7 @@ class Series {
35053
35242
  // Prevent multiple k-d-trees from being built simultaneously
35054
35243
  // (#6235)
35055
35244
  this.buildingKdTree = true;
35056
- const series = this, seriesOptions = series.options, dimensions = seriesOptions.findNearestPointBy
35245
+ const series = this, seriesOptions = series.options, dimensions = (seriesOptions.findNearestPointBy ?? '')
35057
35246
  .indexOf('y') > -1 ? 2 : 1;
35058
35247
  /**
35059
35248
  * Internal function
@@ -35103,7 +35292,7 @@ class Series {
35103
35292
  * The point to search for.
35104
35293
  * @param {boolean} [compareX=false]
35105
35294
  * Search only by the X value, not Y.
35106
- * @param {Highcharts.PointerEvent} [e]
35295
+ * @param {PointerEvent} [e]
35107
35296
  * The normalized pointer event.
35108
35297
  * @param {Function} [suppliedPointEvaluator]
35109
35298
  * A custom point evaluator function.
@@ -35309,11 +35498,13 @@ class Series {
35309
35498
  * Both X and Y values given
35310
35499
  * @sample highcharts/members/series-addpoint-pie/
35311
35500
  * Append pie slice
35312
- * @sample stock/members/series-addpoint/
35501
+ * @sample highcharts/datatable/datamapping-dynamic
35502
+ * Alternative approach with data table
35503
+ * @sample {highstock} stock/members/series-addpoint/
35313
35504
  * Append 100 points in Highcharts Stock
35314
- * @sample stock/members/series-addpoint-shift/
35505
+ * @sample {highstock} stock/members/series-addpoint-shift/
35315
35506
  * Append and shift in Highcharts Stock
35316
- * @sample maps/members/series-addpoint/
35507
+ * @sample {highmaps} maps/members/series-addpoint/
35317
35508
  * Add a point in Highmaps
35318
35509
  *
35319
35510
  * @function Highcharts.Series#addPoint
@@ -35349,7 +35540,7 @@ class Series {
35349
35540
  const series = this, seriesOptions = series.options, { chart, data, dataTable: table, xAxis } = series, names = xAxis?.hasNames && xAxis.names, dataOptions = seriesOptions.data, xData = series.getColumn('x');
35350
35541
  let isInTheMiddle, i;
35351
35542
  // Optional redraw, defaults to true
35352
- redraw = pick(redraw, true);
35543
+ redraw = (redraw ?? true);
35353
35544
  // Get options and push the point to xData, yData and series.options. In
35354
35545
  // series.generatePoints the Point instance will be created on demand
35355
35546
  // and pushed to the series.data array.
@@ -35459,8 +35650,8 @@ class Series {
35459
35650
  chart.redraw();
35460
35651
  }
35461
35652
  };
35462
- Series_setAnimation(animation, chart);
35463
- redraw = pick(redraw, true);
35653
+ setAnimation(animation, chart);
35654
+ redraw = (redraw ?? true);
35464
35655
  // Fire the event with a default handler of removing the point
35465
35656
  if (point) {
35466
35657
  point.firePointEvent('remove', null, remove);
@@ -35503,7 +35694,7 @@ class Series {
35503
35694
  // Redraw
35504
35695
  chart.isDirtyLegend = chart.isDirtyBox = true;
35505
35696
  chart.linkSeries(keepEvents);
35506
- if (pick(redraw, true)) {
35697
+ if (redraw ?? true) {
35507
35698
  chart.redraw(animation);
35508
35699
  }
35509
35700
  }
@@ -35720,7 +35911,7 @@ class Series {
35720
35911
  series.isDirtyData = true;
35721
35912
  }
35722
35913
  fireEvent(this, 'afterUpdate');
35723
- if (pick(redraw, true)) {
35914
+ if (redraw ?? true) {
35724
35915
  chart.redraw(keepPoints ? void 0 : false);
35725
35916
  }
35726
35917
  }
@@ -35737,12 +35928,12 @@ class Series {
35737
35928
  * @internal
35738
35929
  */
35739
35930
  hasOptionChanged(optionName) {
35740
- 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]);
35931
+ const chart = this.chart, option = this.options[optionName], plotOptions = chart.options.plotOptions, oldOption = this.userOptions[optionName], plotOptionsOption = (plotOptions?.[this.type]?.[optionName] ?? plotOptions?.series?.[optionName]);
35741
35932
  // Check if `plotOptions` are defined already, #19203
35742
35933
  if (oldOption && !defined(plotOptionsOption)) {
35743
35934
  return option !== oldOption;
35744
35935
  }
35745
- return option !== pick(plotOptionsOption, option);
35936
+ return option !== (plotOptionsOption ?? option);
35746
35937
  }
35747
35938
  /**
35748
35939
  * Runs on mouse over the series graphical items.
@@ -35813,10 +36004,11 @@ class Series {
35813
36004
  * Determines if state should be inherited by points too.
35814
36005
  */
35815
36006
  setState(state, inherit) {
35816
- const series = this, { graph, options } = series, { inactiveOtherPoints, states: stateOptions } = options,
36007
+ const series = this, { graph, options } = series, { inactiveOtherPoints, states: stateOptions = {} } = options,
35817
36008
  // By default a quick animation to hover/inactive,
35818
36009
  // slower to un-hover
35819
- stateAnimation = pick(stateOptions?.[state || 'normal']?.animation, series.chart.options.chart.animation);
36010
+ stateAnimation = stateOptions[state || 'normal']?.animation ??
36011
+ series.chart.options.chart.animation;
35820
36012
  let { lineWidth, opacity } = options;
35821
36013
  state = state || '';
35822
36014
  if (series.state !== state) {
@@ -35843,9 +36035,13 @@ class Series {
35843
36035
  return;
35844
36036
  }
35845
36037
  if (state) {
35846
- lineWidth = (stateOptions[state].lineWidth ||
35847
- lineWidth + (stateOptions[state].lineWidthPlus || 0)); // #4035
35848
- opacity = pick(stateOptions[state].opacity, opacity);
36038
+ lineWidth = stateOptions[state]?.lineWidth ?? (!isNumber(lineWidth) ?
36039
+ void 0 :
36040
+ // Increase by lineWidthPlus only when lineWidth
36041
+ // is a number.
36042
+ (lineWidth +
36043
+ (stateOptions?.[state]?.lineWidthPlus || 0))); // #4035
36044
+ opacity = stateOptions[state]?.opacity ?? opacity;
35849
36045
  }
35850
36046
  if (graph && !graph.dashstyle && isNumber(lineWidth)) {
35851
36047
  // Animate the graph stroke-width
@@ -35889,11 +36085,7 @@ class Series {
35889
36085
  * Can be either `hover` or undefined to set to normal state.
35890
36086
  */
35891
36087
  setAllPointsToState(state) {
35892
- this.points.forEach(function (point) {
35893
- if (point.setState) {
35894
- point.setState(state);
35895
- }
35896
- });
36088
+ this.points.forEach((point) => point.setState?.(state));
35897
36089
  }
35898
36090
  /**
35899
36091
  * Show or hide the series.
@@ -36574,7 +36766,6 @@ Series_SeriesRegistry.series = Series;
36574
36766
  * */
36575
36767
 
36576
36768
 
36577
- const { animObject: Legend_animObject, setAnimation: Legend_setAnimation } = AnimationUtilities;
36578
36769
 
36579
36770
  const { registerEventOptions: Legend_registerEventOptions } = Core_Foundation;
36580
36771
 
@@ -36703,7 +36894,7 @@ class Legend {
36703
36894
  * @param {Highcharts.LegendOptions} options
36704
36895
  */
36705
36896
  setOptions(options) {
36706
- const padding = pick(options.padding, 8);
36897
+ const padding = (options.padding ?? 8);
36707
36898
  /**
36708
36899
  * Legend options.
36709
36900
  *
@@ -36720,7 +36911,7 @@ class Legend {
36720
36911
  this.itemMarginBottom = options.itemMarginBottom;
36721
36912
  this.padding = padding;
36722
36913
  this.initialItemY = padding - 5; // 5 is pixels above the text
36723
- this.symbolWidth = pick(options.symbolWidth, 16);
36914
+ this.symbolWidth = (options.symbolWidth ?? 16);
36724
36915
  this.pages = [];
36725
36916
  this.proximate = options.layout === 'proximate' && !this.chart.inverted;
36726
36917
  // #12705: baseline has to be reset on every update
@@ -36754,7 +36945,7 @@ class Legend {
36754
36945
  }
36755
36946
  this.destroy();
36756
36947
  chart.isDirtyLegend = chart.isDirtyBox = true;
36757
- if (pick(redraw, true)) {
36948
+ if (redraw ?? true) {
36758
36949
  chart.redraw();
36759
36950
  }
36760
36951
  fireEvent(this, 'afterUpdate', { redraw });
@@ -36992,7 +37183,7 @@ class Legend {
36992
37183
  * The item to render.
36993
37184
  */
36994
37185
  renderItem(item) {
36995
- 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 ?
37186
+ 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 ?
36996
37187
  item.series :
36997
37188
  item, seriesOptions = series.options, showCheckbox = (!!legend.createCheckboxForItem &&
36998
37189
  seriesOptions &&
@@ -37038,9 +37229,11 @@ class Legend {
37038
37229
  legend.fontMetrics.f + 3 + legend.itemMarginTop;
37039
37230
  label.attr('y', legend.baseline);
37040
37231
  legend.symbolHeight =
37041
- pick(options.symbolHeight, legend.fontMetrics.f);
37232
+ (options.symbolHeight ?? legend.fontMetrics.f);
37042
37233
  if (options.squareSymbol) {
37043
- legend.symbolWidth = pick(options.symbolWidth, Math.max(legend.symbolHeight, 16));
37234
+ legend.symbolWidth =
37235
+ options.symbolWidth ??
37236
+ Math.max(legend.symbolHeight, 16);
37044
37237
  itemExtraWidth = legend.symbolWidth + symbolPadding +
37045
37238
  itemDistance + (showCheckbox ? 20 : 0);
37046
37239
  if (ltr) {
@@ -37092,7 +37285,7 @@ class Legend {
37092
37285
  * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item
37093
37286
  */
37094
37287
  layoutItem(item) {
37095
- 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 &&
37288
+ 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 &&
37096
37289
  this.totalItemWidth > maxLegendWidth) ?
37097
37290
  this.maxItemWidth :
37098
37291
  item.itemWidth, legendItem = item.legendItem || {};
@@ -37146,7 +37339,9 @@ class Legend {
37146
37339
  const seriesOptions = series?.options;
37147
37340
  // Handle showInLegend. If the series is linked to another series,
37148
37341
  // defaults to false.
37149
- if (series && pick(seriesOptions.showInLegend, !defined(seriesOptions.linkedTo) ? void 0 : false, true)) {
37342
+ if (series &&
37343
+ (seriesOptions.showInLegend ??
37344
+ (!defined(seriesOptions.linkedTo)))) {
37150
37345
  // Use points or series for the legend item depending on
37151
37346
  // legendType
37152
37347
  allItems = allItems.concat(series.legendItem?.labels ||
@@ -37428,7 +37623,7 @@ class Legend {
37428
37623
  * @function Highcharts.Legend#handleOverflow
37429
37624
  */
37430
37625
  handleOverflow(legendHeight) {
37431
- 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) {
37626
+ 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) {
37432
37627
  if (typeof height === 'number') {
37433
37628
  clipRect.attr({
37434
37629
  height: height
@@ -37474,7 +37669,7 @@ class Legend {
37474
37669
  navOptions.enabled !== false) {
37475
37670
  this.clipHeight = clipHeight =
37476
37671
  Math.max(spaceHeight - 20 - this.titleHeight - padding, 0);
37477
- this.currentPage = pick(this.currentPage, 1);
37672
+ this.currentPage = (this.currentPage ?? 1);
37478
37673
  this.fullHeight = legendHeight;
37479
37674
  // Fill pages with Y positions so that the top of each a legend item
37480
37675
  // defines the scroll top for each page (#2098)
@@ -37577,7 +37772,7 @@ class Legend {
37577
37772
  }
37578
37773
  if (currentPage > 0) {
37579
37774
  if (typeof animation !== 'undefined') {
37580
- Legend_setAnimation(animation, chart);
37775
+ setAnimation(animation, chart);
37581
37776
  }
37582
37777
  this.nav.attr({
37583
37778
  translateX: padding,
@@ -37634,7 +37829,7 @@ class Legend {
37634
37829
  this.currentPage = currentPage;
37635
37830
  this.positionCheckboxes();
37636
37831
  // Fire event after scroll animation is complete
37637
- const animOptions = Legend_animObject(pick(animation, chart.renderer.globalAnimation, true));
37832
+ const animOptions = animObject((animation ?? chart.renderer.globalAnimation ?? true));
37638
37833
  syncTimeout(() => {
37639
37834
  fireEvent(this, 'afterScroll', { currentPage });
37640
37835
  }, animOptions.duration);
@@ -37844,7 +38039,7 @@ class Legend {
37844
38039
  */ /**
37845
38040
  * Related browser event.
37846
38041
  * @name Highcharts.LegendItemClickEventObject#browserEvent
37847
- * @type {Highcharts.PointerEvent}
38042
+ * @type {PointerEvent}
37848
38043
  */ /**
37849
38044
  * Prevent the default action of toggle the visibility of the series or point.
37850
38045
  * @name Highcharts.LegendItemClickEventObject#preventDefault
@@ -37895,7 +38090,7 @@ class Legend {
37895
38090
  */ /**
37896
38091
  * Related browser event.
37897
38092
  * @name Highcharts.PointLegendItemClickEventObject#browserEvent
37898
- * @type {Highcharts.PointerEvent}
38093
+ * @type {PointerEvent}
37899
38094
  */ /**
37900
38095
  * Whether the default action has been prevented (`true`) or not.
37901
38096
  * @name Highcharts.PointLegendItemClickEventObject#defaultPrevented
@@ -37951,7 +38146,7 @@ class Legend {
37951
38146
  */ /**
37952
38147
  * Related browser event.
37953
38148
  * @name Highcharts.SeriesLegendItemClickEventObject#browserEvent
37954
- * @type {Highcharts.PointerEvent}
38149
+ * @type {PointerEvent}
37955
38150
  */ /**
37956
38151
  * Whether the default action has been prevented (`true`) or not.
37957
38152
  * @name Highcharts.SeriesLegendItemClickEventObject#defaultPrevented
@@ -37985,7 +38180,6 @@ class Legend {
37985
38180
  * */
37986
38181
 
37987
38182
 
37988
- const { animate: Chart_animate, animObject: Chart_animObject, setAnimation: Chart_setAnimation } = AnimationUtilities;
37989
38183
 
37990
38184
 
37991
38185
  const { defaultOptions: Chart_defaultOptions } = Defaults;
@@ -38076,7 +38270,7 @@ class Chart {
38076
38270
  */
38077
38271
  static chart(a, b, c) {
38078
38272
  const chart = new Chart(a, b, c);
38079
- return chart.promise || chart;
38273
+ return chart.promise ?? chart;
38080
38274
  }
38081
38275
  // Implementation
38082
38276
  constructor(a,
@@ -38117,10 +38311,10 @@ class Chart {
38117
38311
  const chart = this, options = chart.options.chart, zooming = options.zooming;
38118
38312
  chart.zooming = {
38119
38313
  ...zooming,
38120
- type: pick(options.zoomType, zooming.type),
38121
- key: pick(options.zoomKey, zooming.key),
38122
- pinchType: pick(options.pinchType, zooming.pinchType),
38123
- singleTouch: pick(options.zoomBySingleTouch, zooming.singleTouch, false),
38314
+ type: (options.zoomType ?? zooming.type),
38315
+ key: (options.zoomKey ?? zooming.key),
38316
+ pinchType: (options.pinchType ?? zooming.pinchType),
38317
+ singleTouch: options.zoomBySingleTouch ?? zooming.singleTouch ?? false,
38124
38318
  resetButton: merge(zooming.resetButton, options.resetZoomButton)
38125
38319
  };
38126
38320
  }
@@ -38463,7 +38657,7 @@ class Chart {
38463
38657
  redraw(animation) {
38464
38658
  fireEvent(this, 'beforeRedraw');
38465
38659
  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 = [];
38466
- let hasDirtyStacks, hasStackedSeries, i, isDirtyBox = chart.isDirtyBox, redrawLegend = chart.isDirtyLegend, serie;
38660
+ let hasDirtyStacks, hasStackedSeries, i, redrawLegend = chart.isDirtyLegend, serie;
38467
38661
  renderer.rootFontSize = renderer.boxWrapper.getStyle('font-size');
38468
38662
  // Handle responsive rules, not only on resize (#6130)
38469
38663
  if (chart.setResponsive) {
@@ -38472,7 +38666,7 @@ class Chart {
38472
38666
  // Set the global animation. When chart.hasRendered is not true, the
38473
38667
  // redraw call comes from a responsive rule and animation should not
38474
38668
  // occur.
38475
- Chart_setAnimation(chart.hasRendered ? animation : false, chart);
38669
+ setAnimation(chart.hasRendered ? animation : false, chart);
38476
38670
  if (isHiddenChart) {
38477
38671
  chart.temporaryDisplay();
38478
38672
  }
@@ -38535,6 +38729,7 @@ class Chart {
38535
38729
  });
38536
38730
  chart.getMargins(); // #3098
38537
38731
  // If one axis is dirty, all axes must be redrawn (#792, #2169)
38732
+ let isDirtyBox = chart.isDirtyBox;
38538
38733
  axes.forEach(function (axis) {
38539
38734
  if (axis.isDirty) {
38540
38735
  isDirtyBox = true;
@@ -38671,7 +38866,7 @@ class Chart {
38671
38866
  // inspect the generated series.points.
38672
38867
  series.getPointsCollection()
38673
38868
  .forEach((point) => {
38674
- if (pick(point.selectedStaging, point.selected)) {
38869
+ if (point.selectedStaging ?? point.selected) {
38675
38870
  acc.push(point);
38676
38871
  }
38677
38872
  });
@@ -39070,11 +39265,8 @@ class Chart {
39070
39265
  const chartHeight = chart.chartHeight;
39071
39266
  let chartWidth = chart.chartWidth;
39072
39267
  // Allow table cells and flex-boxes to shrink without the chart
39073
- // blocking them out (#6427) but skip in styled mode so inline styles
39074
- // don't override user CSS on renderTo
39075
- if (!chart.styledMode) {
39076
- css(renderTo, { overflow: 'hidden' });
39077
- }
39268
+ // blocking them out (#6427)
39269
+ css(renderTo, { overflow: 'hidden' });
39078
39270
  // Create the inner container
39079
39271
  if (!chart.styledMode) {
39080
39272
  containerStyle = extend({
@@ -39112,7 +39304,7 @@ class Chart {
39112
39304
  chartWidth = chart.chartWidth;
39113
39305
  if (!chart.styledMode) {
39114
39306
  css(container, {
39115
- width: pick(optionsChart.style?.width, chartWidth + 'px')
39307
+ width: (optionsChart.style?.width ?? chartWidth + 'px')
39116
39308
  });
39117
39309
  }
39118
39310
  }
@@ -39131,7 +39323,7 @@ class Chart {
39131
39323
  // first ResizeObserver reflow
39132
39324
  chart.containerBox = chart.getContainerBox();
39133
39325
  // Set the initial animation from the options
39134
- Chart_setAnimation(void 0, chart);
39326
+ setAnimation(void 0, chart);
39135
39327
  chart.setClassName(optionsChart.className);
39136
39328
  if (!chart.styledMode) {
39137
39329
  chart.renderer.setStyle(optionsChart.style);
@@ -39326,7 +39518,7 @@ class Chart {
39326
39518
  // Handle the isResizing counter
39327
39519
  chart.isResizing += 1;
39328
39520
  // Set the animation for the current process
39329
- Chart_setAnimation(animation, chart);
39521
+ setAnimation(animation, chart);
39330
39522
  const globalAnimation = renderer.globalAnimation;
39331
39523
  chart.oldChartHeight = chart.chartHeight;
39332
39524
  chart.oldChartWidth = chart.chartWidth;
@@ -39345,7 +39537,7 @@ class Chart {
39345
39537
  // Resize the container with the global animation applied if enabled
39346
39538
  // (#2503)
39347
39539
  if (!chart.styledMode) {
39348
- (globalAnimation ? Chart_animate : css)(chart.container, {
39540
+ (globalAnimation ? animate : css)(chart.container, {
39349
39541
  width: `${chartWidth + scrollablePixelsX}px`,
39350
39542
  height: `${chartHeight + scrollablePixelsY}px`
39351
39543
  }, globalAnimation);
@@ -39371,7 +39563,7 @@ class Chart {
39371
39563
  if (chart) {
39372
39564
  fireEvent(chart, 'endResize');
39373
39565
  }
39374
- }, Chart_animObject(globalAnimation).duration);
39566
+ }, animObject(globalAnimation).duration);
39375
39567
  }
39376
39568
  // Handle resizing counter even if we've re-rendered or not (#20548).
39377
39569
  chart.isResizing -= 1;
@@ -39755,7 +39947,7 @@ class Chart {
39755
39947
  const mockTick = new Axis_Tick(axis, 0, '', true), label = mockTick.createLabel('x', labels);
39756
39948
  mockTick.destroy();
39757
39949
  if (label &&
39758
- pick(labels.reserveSpace, !isNumber(options.crossing))) {
39950
+ (labels.reserveSpace ?? !isNumber(options.crossing))) {
39759
39951
  expectedSpace = label.getBBox().height +
39760
39952
  labels.distance +
39761
39953
  Math.max(isNumber(offset) ? offset : 0, 0);
@@ -40090,7 +40282,7 @@ class Chart {
40090
40282
  const chart = this;
40091
40283
  let series;
40092
40284
  if (options) { // <- not necessary
40093
- redraw = pick(redraw, true); // Defaults to true
40285
+ redraw = (redraw ?? true); // Defaults to true
40094
40286
  fireEvent(chart, 'addSeries', { options: options }, function () {
40095
40287
  series = chart.initSeries(options);
40096
40288
  chart.isDirtyLegend = true;
@@ -40181,7 +40373,7 @@ class Chart {
40181
40373
  */
40182
40374
  createAxis(coll, options) {
40183
40375
  const axis = new Axis_Axis(this, options.axis, coll);
40184
- if (pick(options.redraw, true)) {
40376
+ if (options.redraw ?? true) {
40185
40377
  this.redraw(options.animation);
40186
40378
  }
40187
40379
  return axis;
@@ -40229,7 +40421,7 @@ class Chart {
40229
40421
  }
40230
40422
  loadingDiv.className = 'highcharts-loading';
40231
40423
  // Update text
40232
- HTML_AST.setElementHTML(loadingSpan, pick(str, options.lang.loading, ''));
40424
+ HTML_AST.setElementHTML(loadingSpan, (str ?? options.lang.loading ?? ''));
40233
40425
  if (!chart.styledMode) {
40234
40426
  // Update visuals
40235
40427
  css(loadingDiv, extend(loadingStyle, { zIndex: 10 }));
@@ -40240,7 +40432,7 @@ class Chart {
40240
40432
  opacity: 0,
40241
40433
  display: ''
40242
40434
  });
40243
- Chart_animate(loadingDiv, {
40435
+ animate(loadingDiv, {
40244
40436
  opacity: loadingStyle.opacity ?? 0.5
40245
40437
  }, {
40246
40438
  duration: loadingOptions?.showDuration ?? 0
@@ -40268,7 +40460,7 @@ class Chart {
40268
40460
  loadingDiv.className =
40269
40461
  'highcharts-loading highcharts-loading-hidden';
40270
40462
  if (!this.styledMode) {
40271
- Chart_animate(loadingDiv, {
40463
+ animate(loadingDiv, {
40272
40464
  opacity: 0
40273
40465
  }, {
40274
40466
  duration: options.loading?.hideDuration ?? 100,
@@ -40300,6 +40492,9 @@ class Chart {
40300
40492
  * Note that when changing series data, `chart.update` may mutate the passed
40301
40493
  * data options.
40302
40494
  *
40495
+ * If the given options don't differ from the current chart options, the
40496
+ * update is skipped and the `afterUpdate` event is not emitted.
40497
+ *
40303
40498
  * See also the
40304
40499
  * [responsive option set](https://api.highcharts.com/highcharts/responsive).
40305
40500
  * Switching between `responsive.rules` basically runs `chart.update` under
@@ -40344,14 +40539,24 @@ class Chart {
40344
40539
  caption: 'setCaption'
40345
40540
  }, isResponsiveOptions = options.isResponsiveOptions, itemsForRemoval = [];
40346
40541
  let updateAllAxes, updateAllSeries, runSetSize;
40347
- fireEvent(chart, 'update', { options: options });
40542
+ options = diffObjects(options, chart.options);
40543
+ const e = {
40544
+ options,
40545
+ // Event handlers can turn this on or off to control further
40546
+ // processing
40547
+ hasChanged: !!Object.keys(options).length
40548
+ };
40549
+ fireEvent(chart, 'update', e);
40550
+ // If no changes are detected, stop further processing (#24805).
40551
+ if (!e.hasChanged) {
40552
+ return;
40553
+ }
40348
40554
  // If there are responsive rules in action, undo the responsive rules
40349
40555
  // before we apply the updated options and replay the responsive rules
40350
40556
  // on top from the chart.redraw function (#9617).
40351
40557
  if (!isResponsiveOptions) {
40352
40558
  chart.setResponsive(false, true);
40353
40559
  }
40354
- options = diffObjects(options, chart.options);
40355
40560
  chart.userOptions = merge(chart.userOptions, options);
40356
40561
  // If the top-level chart option is present, some special updates are
40357
40562
  // required
@@ -40454,7 +40659,7 @@ class Chart {
40454
40659
  }
40455
40660
  // No match by id found, match by index instead
40456
40661
  if (!item && chart[coll]) {
40457
- item = chart[coll][pick(newOptions.index, i)];
40662
+ item = chart[coll][(newOptions.index ?? i)];
40458
40663
  // Check if we grabbed an item with an existing but
40459
40664
  // different id (#13541). Check that the item in this
40460
40665
  // position is not internal (navigator).
@@ -40530,7 +40735,7 @@ class Chart {
40530
40735
  (isNumber(newHeight) && newHeight !== chart.chartHeight)) {
40531
40736
  chart.setSize(newWidth, newHeight, animation);
40532
40737
  }
40533
- else if (pick(redraw, true)) {
40738
+ else if (redraw ?? true) {
40534
40739
  chart.redraw(animation);
40535
40740
  }
40536
40741
  fireEvent(chart, 'afterUpdate', {
@@ -40579,15 +40784,11 @@ class Chart {
40579
40784
  showResetZoom() {
40580
40785
  const chart = this, lang = chart.options.lang, btnOptions = chart.zooming.resetButton, theme = btnOptions.theme, alignTo = (btnOptions.relativeTo === 'chart' ||
40581
40786
  btnOptions.relativeTo === 'spacingBox' ?
40582
- null :
40787
+ void 0 :
40583
40788
  'plotBox');
40584
- /** @internal */
40585
- function zoomOut() {
40586
- chart.zoomOut();
40587
- }
40588
- fireEvent(this, 'beforeShowResetZoom', null, function () {
40789
+ fireEvent(this, 'beforeShowResetZoom', void 0, () => {
40589
40790
  chart.resetZoomButton = chart.renderer
40590
- .button(lang.resetZoom, null, null, zoomOut, theme)
40791
+ .button(lang.resetZoom, 0, 0, () => chart.zoomOut(), theme)
40591
40792
  .attr({
40592
40793
  align: btnOptions.position.align,
40593
40794
  title: lang.resetZoomTitle
@@ -40665,21 +40866,21 @@ class Chart {
40665
40866
  * @function Highcharts.Chart#transform
40666
40867
  */
40667
40868
  transform(params) {
40668
- const { axes = this.axes, event, from = {}, reset, selection, to = {}, trigger, allowResetButton = true } = params, { inverted, time } = this;
40869
+ const { axes = this.axes, event, from = {}, reset, selection, to = {}, trigger, allowResetButton = true } = params, { time } = this;
40669
40870
  // Remove active points for shared tooltip
40670
40871
  this.hoverPoints?.forEach((point) => point.setState());
40671
40872
  fireEvent(this, 'transform', params);
40672
40873
  let hasZoomed = params.hasZoomed || false, displayButton, isAnyAxisPanning;
40673
40874
  for (const axis of axes) {
40674
- 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),
40875
+ 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),
40675
40876
  // If fingers pinched very close on this axis, treat as pan
40676
40877
  scale = Math.abs(toLength) < 10 ?
40677
40878
  1 :
40678
40879
  toLength / fromLength, fromCenter = (from[xy] || 0) + fromLength / 2 - axis.pos, toCenter = (to[xy] ?? axis.pos) +
40679
- toLength / 2 - axis.pos, move = fromCenter - toCenter / scale, pointRangeDirection = (reversed && !inverted) ||
40680
- (!reversed && inverted) ?
40681
- -1 :
40682
- 1, minPx = move;
40880
+ toLength / 2 - axis.pos, move = fromCenter - toCenter / scale, pointRangeDirection = ((horiz && !reversed) ||
40881
+ (!horiz && reversed)) ?
40882
+ 1 :
40883
+ -1, minPx = move;
40683
40884
  // Zooming in multiple panes, zoom only in the pane that receives
40684
40885
  // the input
40685
40886
  if (!reset && (fromCenter < 0 || fromCenter > axis.len)) {
@@ -40688,17 +40889,11 @@ class Chart {
40688
40889
  // Adjust offset to ensure selection zoom triggers correctly
40689
40890
  // (#22945)
40690
40891
  // Set offset to 0 for ordinal axis only when zooming out, (#24545).
40691
- const offset = (axis.chart.polar || (axis.isOrdinal && scale <= 1)) ?
40892
+ const offset = (selection || axis.chart.polar ||
40893
+ (axis.isOrdinal && scale <= 1)) ?
40692
40894
  0 :
40693
40895
  (minPointOffset * pointRangeDirection || 0), eventMin = axis.toValue(minPx, true), eventMax = axis.toValue(minPx + len / scale, true);
40694
40896
  let newMin = eventMin + offset, newMax = eventMax - offset, allExtremes = axis.allExtremes;
40695
- if (selection) {
40696
- selection[axis.coll].push({
40697
- axis,
40698
- min: Math.min(eventMin, eventMax),
40699
- max: Math.max(eventMin, eventMax)
40700
- });
40701
- }
40702
40897
  if (newMin > newMax) {
40703
40898
  [newMin, newMax] = [newMax, newMin];
40704
40899
  }
@@ -40755,14 +40950,15 @@ class Chart {
40755
40950
  }
40756
40951
  // Set new extremes if they are actually new
40757
40952
  if (reset || (axis.series.length &&
40758
- (newMin !== min || newMax !== max) &&
40759
- newMin >= floor &&
40760
- newMax <= ceiling)) {
40953
+ (selection ||
40954
+ ((newMin !== min || newMax !== max) &&
40955
+ newMin >= floor &&
40956
+ newMax <= ceiling)))) {
40761
40957
  if (selection) {
40762
40958
  selection[axis.coll].push({
40763
40959
  axis,
40764
- min: newMin,
40765
- max: newMax
40960
+ min: Math.min(eventMin, eventMax),
40961
+ max: Math.max(eventMin, eventMax)
40766
40962
  });
40767
40963
  }
40768
40964
  else {
@@ -40770,11 +40966,14 @@ class Chart {
40770
40966
  // disallow certain axis padding options that would make
40771
40967
  // panning/zooming hard. Reset and redraw after the
40772
40968
  // operation has finished.
40773
- axis.isPanning = trigger !== 'zoom';
40969
+ axis.isPanning = trigger !== 'zoom' &&
40970
+ trigger !== 'drop';
40774
40971
  if (axis.isPanning && trigger !== 'mousewheel') {
40775
40972
  isAnyAxisPanning = true; // #21319
40776
40973
  }
40777
- axis.setExtremes(reset ? void 0 : newMin, reset ? void 0 : newMax, false, false, { move, trigger, scale });
40974
+ if (trigger !== 'drop') {
40975
+ axis.setExtremes(reset ? void 0 : newMin, reset ? void 0 : newMax, false, false, { move, trigger, scale });
40976
+ }
40778
40977
  if (!reset &&
40779
40978
  (newMin > floor || newMax < ceiling)) {
40780
40979
  displayButton = allowResetButton;
@@ -40805,7 +41004,8 @@ class Chart {
40805
41004
  });
40806
41005
  }
40807
41006
  else {
40808
- // Show or hide the Reset zoom button, but not while panning
41007
+ // Show or hide the Reset zoom button, but not while
41008
+ // panning.
40809
41009
  if (displayButton &&
40810
41010
  !isAnyAxisPanning &&
40811
41011
  !this.resetZoomButton) {
@@ -41047,7 +41247,6 @@ extend(Chart.prototype, {
41047
41247
  */
41048
41248
 
41049
41249
 
41050
- const { stop: ScrollablePlotArea_stop } = AnimationUtilities;
41051
41250
 
41052
41251
  const { composed: ScrollablePlotArea_composed } = Core_Globals;
41053
41252
 
@@ -41213,7 +41412,7 @@ class ScrollablePlotArea {
41213
41412
  this.moveFixedElements();
41214
41413
  }
41215
41414
  // Increase the size of the scrollable renderer and background
41216
- ScrollablePlotArea_stop(chart.container);
41415
+ stop(chart.container);
41217
41416
  css(container, {
41218
41417
  width: `${scrollableWidth}px`,
41219
41418
  height: `${scrollableHeight}px`
@@ -41370,6 +41569,13 @@ ScrollablePlotArea.fixedSelectors = [
41370
41569
  * vertical scrolling, depending on whether the `minWidth` or `minHeight`
41371
41570
  * option is set.
41372
41571
  *
41572
+ * **Note:** Because native browser scrollbars are used, they may
41573
+ * overlap with fixed chart elements such as credits or the chart
41574
+ * border. To avoid this collision, it is recommended to manually add
41575
+ * extra space to the corresponding side using `chart.spacingBottom`
41576
+ * (for horizontal scrollbars) or `chart.spacingRight` (for vertical
41577
+ * scrollbars).
41578
+ *
41373
41579
  * @sample highcharts/chart/scrollable-plotarea
41374
41580
  * Scrollable plot area
41375
41581
  * @sample highcharts/chart/scrollable-plotarea-vertical
@@ -41530,7 +41736,7 @@ class StackItem {
41530
41736
  r: options.borderRadius || 0,
41531
41737
  text: str,
41532
41738
  // Set default padding to 5 as it is in dataLabels #12308
41533
- padding: pick(options.padding, 5),
41739
+ padding: (options.padding ?? 5),
41534
41740
  visibility: 'hidden' // Hidden until setOffset is called
41535
41741
  };
41536
41742
  if (!chart.styledMode) {
@@ -41564,7 +41770,7 @@ class StackItem {
41564
41770
  }), { verticalAlign } = alignOptions;
41565
41771
  if (label && stackBox) {
41566
41772
  const labelBox = label.getBBox(void 0, 0), padding = label.padding;
41567
- let isJustify = pick(options.overflow, 'justify') === 'justify', visible;
41773
+ let isJustify = (options.overflow ?? 'justify') === 'justify', visible;
41568
41774
  // Reset alignOptions property after justify #12337
41569
41775
  alignOptions.x = options.x || 0;
41570
41776
  alignOptions.y = options.y || 0;
@@ -41601,7 +41807,7 @@ class StackItem {
41601
41807
  rotationOriginY: labelBox.height / 2
41602
41808
  });
41603
41809
  // Check if the dataLabel should be visible.
41604
- if (pick(!isJustify && options.crop, true)) {
41810
+ if (((!isJustify && options.crop) ?? true)) {
41605
41811
  visible =
41606
41812
  isNumber(label.x) &&
41607
41813
  isNumber(label.y) &&
@@ -41635,7 +41841,7 @@ class StackItem {
41635
41841
  getStackBox(stackBoxProps) {
41636
41842
  const stackItem = this, axis = this.axis, chart = axis.chart, { boxTop, defaultX, xOffset, width, boxBottom } = stackBoxProps, totalStackValue = axis.stacking.usePercentage ?
41637
41843
  100 :
41638
- 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 ||
41844
+ (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 ||
41639
41845
  (isNumber(axis.min) &&
41640
41846
  axis.logarithmic &&
41641
41847
  axis.logarithmic.lin2log(axis.min)) ||
@@ -41720,7 +41926,6 @@ class StackItem {
41720
41926
  * */
41721
41927
 
41722
41928
 
41723
- const { getDeferredAnimation: StackingAxis_getDeferredAnimation } = AnimationUtilities;
41724
41929
 
41725
41930
  const { series: { prototype: seriesProto } } = Series_SeriesRegistry;
41726
41931
 
@@ -41749,7 +41954,7 @@ function chartGetStacks() {
41749
41954
  if (series.options.stacking && series.reserveSpace()) {
41750
41955
  series.stackKey = [
41751
41956
  series.type,
41752
- pick(series.options.stack, ''),
41957
+ (series.options.stack ?? ''),
41753
41958
  inverted ? xAxisOptions.top : xAxisOptions.left,
41754
41959
  inverted ? xAxisOptions.height : xAxisOptions.width
41755
41960
  ].join(',');
@@ -41912,7 +42117,7 @@ function seriesSetStackedPoints(axis, stackingParam) {
41912
42117
  stack = stacks[key][x];
41913
42118
  if (y !== null) {
41914
42119
  stack.points[pointKey] = stack.points[series.index] = [
41915
- pick(stack.cumulative, stackThreshold)
42120
+ (stack.cumulative ?? stackThreshold)
41916
42121
  ];
41917
42122
  // Record the base of the stack
41918
42123
  if (!defined(stack.cumulative)) {
@@ -41960,7 +42165,7 @@ function seriesSetStackedPoints(axis, stackingParam) {
41960
42165
  stack.cumulative = (total || 1) - 1;
41961
42166
  }
41962
42167
  else {
41963
- stack.cumulative = correctFloat(pick(stack.cumulative, stackThreshold) + yNumber);
42168
+ stack.cumulative = correctFloat((stack.cumulative ?? stackThreshold) + yNumber);
41964
42169
  }
41965
42170
  stack.total = total;
41966
42171
  if (y !== null) {
@@ -42064,7 +42269,7 @@ class AxisAdditions {
42064
42269
  }
42065
42270
  /** @internal */
42066
42271
  renderStackTotals() {
42067
- 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 ||
42272
+ 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 ||
42068
42273
  renderer
42069
42274
  .g('stack-labels')
42070
42275
  .attr({
@@ -42975,8 +43180,7 @@ class AreaSeries extends AreaSeries_LineSeries {
42975
43180
  */
42976
43181
  getGraphPath(points) {
42977
43182
  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
42978
- yAxis.getThreshold(options.threshold)), connectNulls = pick(// #10574
42979
- options.connectNulls, stacking === 'percent'),
43183
+ yAxis.getThreshold(options.threshold)), connectNulls = (options.connectNulls ?? stacking === 'percent'),
42980
43184
  // To display null points in underlying stacked series, this
42981
43185
  // series graph must be broken, and the area also fall down to
42982
43186
  // fill the gap left by the null point. #2069
@@ -43029,9 +43233,9 @@ class AreaSeries extends AreaSeries_LineSeries {
43029
43233
  // Treat points with undefined plotY as null (e.g. non-positive
43030
43234
  // values on logarithmic axis, #18422)
43031
43235
  isNull = points[i].isNull || !defined(points[i].plotY);
43032
- plotX = pick(points[i].rectPlotX, points[i].plotX);
43236
+ plotX = (points[i].rectPlotX ?? points[i].plotX);
43033
43237
  yBottom = stacking ?
43034
- pick(points[i].yBottom, translatedThreshold) :
43238
+ (points[i].yBottom ?? translatedThreshold) :
43035
43239
  translatedThreshold;
43036
43240
  if (!isNull || connectNulls) {
43037
43241
  if (!connectNulls) {
@@ -43369,10 +43573,10 @@ class SplineSeries extends SplineSeries_LineSeries {
43369
43573
  }
43370
43574
  const ret = [
43371
43575
  'C',
43372
- pick(lastPoint.rightContX, lastPoint.plotX, 0),
43373
- pick(lastPoint.rightContY, lastPoint.plotY, 0),
43374
- pick(leftContX, plotX, 0),
43375
- pick(leftContY, plotY, 0),
43576
+ (lastPoint.rightContX ?? lastPoint.plotX ?? 0),
43577
+ (lastPoint.rightContY ?? lastPoint.plotY ?? 0),
43578
+ (leftContX ?? plotX ?? 0),
43579
+ (leftContY ?? plotY ?? 0),
43376
43580
  plotX,
43377
43581
  plotY
43378
43582
  ];
@@ -43817,6 +44021,8 @@ const ColumnSeriesDefaults = {
43817
44021
  * 0.25
43818
44022
  * @sample {highcharts} highcharts/plotoptions/column-pointpadding-none/
43819
44023
  * 0 for tightly packed columns
44024
+ * @sample {highcharts} highcharts/plotoptions/pie-pointpadding/
44025
+ * Pie point padding plugin
43820
44026
  *
43821
44027
  * @product highcharts highstock gantt
43822
44028
  */
@@ -44148,12 +44354,12 @@ const ColumnSeriesDefaults = {
44148
44354
  */
44149
44355
  /**
44150
44356
  * @excluding halo, lineWidth, lineWidthPlus, marker
44151
- * @product highcharts highstock
44357
+ * @product highcharts highstock gantt
44152
44358
  * @apioption series.column.states.hover
44153
44359
  */
44154
44360
  /**
44155
44361
  * @excluding halo, lineWidth, lineWidthPlus, marker
44156
- * @product highcharts highstock
44362
+ * @product highcharts highstock gantt
44157
44363
  * @apioption series.column.states.select
44158
44364
  */
44159
44365
  /**
@@ -44183,7 +44389,6 @@ const ColumnSeriesDefaults = {
44183
44389
  * */
44184
44390
 
44185
44391
 
44186
- const { animObject: ColumnSeries_animObject } = AnimationUtilities;
44187
44392
 
44188
44393
  const { parse: ColumnSeries_color } = Color_Color;
44189
44394
 
@@ -44254,7 +44459,7 @@ class ColumnSeries extends Series_Series {
44254
44459
  }
44255
44460
  else { // Run the animation
44256
44461
  translateStart = Number(series.group.attr(translateProp));
44257
- series.group.animate({ scaleY: 1 }, extend(ColumnSeries_animObject(series.options.animation), {
44462
+ series.group.animate({ scaleY: 1 }, extend(animObject(series.options.animation), {
44258
44463
  // Do the scale synchronously to ensure smooth
44259
44464
  // updating (#5030, #7228)
44260
44465
  step: function (val, fx) {
@@ -44340,7 +44545,7 @@ class ColumnSeries extends Series_Series {
44340
44545
  xAxis.tickInterval ||
44341
44546
  1), // #2610
44342
44547
  xAxis.len // #1535
44343
- ), 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,
44548
+ ), 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,
44344
44549
  // #1251, #3737
44345
44550
  colIndex = (series.columnIndex || 0) + (reverseStacks ? 1 : 0), pointXOffset = pointPadding +
44346
44551
  (groupPadding +
@@ -44590,11 +44795,11 @@ class ColumnSeries extends Series_Series {
44590
44795
  */
44591
44796
  pointAttribs(point, state) {
44592
44797
  const options = this.options, p2o = this.pointAttrToOptions || {}, strokeOption = p2o.stroke || 'borderColor', strokeWidthOption = p2o['stroke-width'] || 'borderWidth';
44593
- let stateOptions, zone, brightness, fill = (point && point.color) || this.color,
44798
+ let stateOptions, zone, brightness, fill = point?.color || this.color,
44594
44799
  // Set to fill when borderColor null:
44595
- stroke = ((point && point[strokeOption]) ||
44800
+ stroke = (point?.[strokeOption] ||
44596
44801
  options[strokeOption] ||
44597
- fill), dashstyle = (point && point.options.dashStyle) || options.dashStyle, strokeWidth = (point?.[strokeWidthOption]) ??
44802
+ fill), dashstyle = point?.options.dashStyle || options.dashStyle, strokeWidth = point?.[strokeWidthOption] ??
44598
44803
  options[strokeWidthOption] ??
44599
44804
  this[strokeWidthOption] ?? 1, opacity = (point?.isNull && options.nullInteraction) ?
44600
44805
  0 :
@@ -44615,7 +44820,7 @@ class ColumnSeries extends Series_Series {
44615
44820
  }
44616
44821
  // Select or hover states
44617
44822
  if (state && point) {
44618
- stateOptions = merge(options.states[state],
44823
+ stateOptions = merge(options.states?.[state],
44619
44824
  // #6401
44620
44825
  point.options.states?.[state] || {});
44621
44826
  brightness = stateOptions.brightness;
@@ -44625,14 +44830,13 @@ class ColumnSeries extends Series_Series {
44625
44830
  .brighten(stateOptions.brightness)
44626
44831
  .get()) || fill;
44627
44832
  stroke = stateOptions[strokeOption] || stroke;
44628
- strokeWidth =
44629
- stateOptions[strokeWidthOption] || strokeWidth;
44833
+ strokeWidth = stateOptions[strokeWidthOption] || strokeWidth;
44630
44834
  dashstyle = stateOptions.dashStyle || dashstyle;
44631
- opacity = pick(stateOptions.opacity, opacity);
44835
+ opacity = stateOptions.opacity ?? opacity;
44632
44836
  }
44633
44837
  const ret = {
44634
- fill: fill,
44635
- stroke: stroke,
44838
+ fill,
44839
+ stroke,
44636
44840
  'stroke-width': strokeWidth,
44637
44841
  opacity: point?.condemned ? 0 : opacity
44638
44842
  };
@@ -44673,6 +44877,7 @@ class ColumnSeries extends Series_Series {
44673
44877
  initialAttr = merge(shapeArgs, point.getOrigin(point.origin, shapeArgs));
44674
44878
  if (!styledMode) {
44675
44879
  initialAttr.opacity = 0;
44880
+ initialAttr['stroke-width'] = 0;
44676
44881
  }
44677
44882
  shouldUpdate = true;
44678
44883
  verb = 'animate';
@@ -44688,7 +44893,7 @@ class ColumnSeries extends Series_Series {
44688
44893
  }
44689
44894
  // Presentational
44690
44895
  if (!styledMode) {
44691
- graphic[verb](series.pointAttribs(point, (point.selected && 'select')))
44896
+ graphic[verb](series.pointAttribs(point, point.selected ? 'select' : ''))
44692
44897
  .shadow(point.allowShadow !== false && options.shadow);
44693
44898
  }
44694
44899
  graphic
@@ -44812,6 +45017,7 @@ Series_SeriesRegistry.registerSeriesType('column', ColumnSeries);
44812
45017
  * Default Export
44813
45018
  *
44814
45019
  * */
45020
+ /** @internal */
44815
45021
  /* harmony default export */ const Column_ColumnSeries = (ColumnSeries);
44816
45022
  /* *
44817
45023
  *
@@ -44848,7 +45054,6 @@ Series_SeriesRegistry.registerSeriesType('column', ColumnSeries);
44848
45054
  * */
44849
45055
 
44850
45056
 
44851
- const { getDeferredAnimation: DataLabel_getDeferredAnimation } = AnimationUtilities;
44852
45057
 
44853
45058
  const { format: DataLabel_format } = Core_Templating;
44854
45059
 
@@ -44904,7 +45109,7 @@ var DataLabel;
44904
45109
  // that parts of the align box is inside the plot area
44905
45110
  // (#12370). When stacking, it is always inside regardless
44906
45111
  // of the option (#15148).
44907
- pick(options.inside, !!this.options.stacking) &&
45112
+ (options.inside ?? !!this.options.stacking) &&
44908
45113
  alignTo &&
44909
45114
  chart.isInsidePlot(plotX, inverted ?
44910
45115
  alignTo.x + 1 :
@@ -45007,8 +45212,8 @@ var DataLabel;
45007
45212
  // zIndex: 20
45008
45213
  // }).add();
45009
45214
  // chart.renderer.circle(
45010
- // chart.plotLeft + pick(dataLabel.alignAttr.x, 0),
45011
- // chart.plotTop + pick(dataLabel.alignAttr.y, 0),
45215
+ // chart.plotLeft + (dataLabel.alignAttr.x ?? 0),
45216
+ // chart.plotTop + (dataLabel.alignAttr.y ?? 0),
45012
45217
  // 2
45013
45218
  // ).attr({
45014
45219
  // fill: 'red',
@@ -45165,7 +45370,7 @@ var DataLabel;
45165
45370
  'var(--highcharts-background-color)'), groupByIndex = [], seriesDlOptions = mergedDataLabelOptions(series);
45166
45371
  // Resolve the animation
45167
45372
  const { animation, defer } = seriesDlOptions[0], animationConfig = defer ?
45168
- DataLabel_getDeferredAnimation(chart, animation, series) :
45373
+ getDeferredAnimation(chart, animation, series) :
45169
45374
  { defer: 0, duration: 0 };
45170
45375
  fireEvent(this, 'drawDataLabels');
45171
45376
  if (series.hasDataLabels?.()) {
@@ -45191,7 +45396,7 @@ var DataLabel;
45191
45396
  if (labelEnabled) {
45192
45397
  // Create individual options structure that can be
45193
45398
  // extended without affecting others
45194
- formatString = pick(labelOptions[point.formatPrefix + 'Format'], labelOptions.format);
45399
+ formatString = (labelOptions[point.formatPrefix + 'Format'] ?? labelOptions.format);
45195
45400
  labelText = defined(formatString) ?
45196
45401
  DataLabel_format(formatString, point, chart) :
45197
45402
  (labelOptions[point.formatPrefix + 'Formatter'] ||
@@ -45199,7 +45404,9 @@ var DataLabel;
45199
45404
  rotation = labelOptions.rotation;
45200
45405
  if (!chart.styledMode) {
45201
45406
  // Determine the color
45202
- style.color = pick(labelOptions.color, style.color, isString(series.color) ? series.color : void 0, 'var(--highcharts-neutral-color-100)');
45407
+ style.color = (isString(labelOptions.color) ?
45408
+ labelOptions.color :
45409
+ void 0) ?? style.color ?? (isString(series.color) ? series.color : void 0) ?? 'var(--highcharts-neutral-color-100)';
45203
45410
  // Get automated contrast color
45204
45411
  if (style.color === 'contrast') {
45205
45412
  if (backgroundColor !== 'none') {
@@ -45931,6 +46138,8 @@ const ScatterSeriesDefaults = {
45931
46138
  * Arrays of datetime x and y
45932
46139
  * @sample {highcharts} highcharts/series/data-array-of-name-value/
45933
46140
  * Arrays of point.name and y
46141
+ * @sample {highcharts} highcharts/series-scatter/scatter-cluster/
46142
+ * Computed clusters
45934
46143
  * @sample {highcharts} highcharts/series/data-array-of-objects/
45935
46144
  * Config objects
45936
46145
  *
@@ -45998,14 +46207,15 @@ class ScatterSeries extends ScatterSeries_LineSeries {
45998
46207
  return rand - Math.floor(rand);
45999
46208
  }
46000
46209
  if (jitter) {
46001
- this.points.forEach(function (point, i) {
46002
- ['x', 'y'].forEach(function (dim, j) {
46210
+ this.points.forEach((point, i) => {
46211
+ ['x', 'y'].forEach((dim, j) => {
46003
46212
  if (jitter[dim] && !point.isNull) {
46004
- const plotProp = `plot${dim.toUpperCase()}`, axis = series[`${dim}Axis`], translatedJitter = jitter[dim] *
46005
- axis.transA;
46213
+ const plotProp = `plot${dim.toUpperCase()}`, axis = series[`${dim}Axis`];
46006
46214
  if (axis && !axis.logarithmic) {
46007
46215
  // Identify the outer bounds of the jitter range
46008
- const min = Math.max(0, (point[plotProp] || 0) - translatedJitter), max = Math.min(axis.len, (point[plotProp] || 0) + translatedJitter);
46216
+ // (#25054)
46217
+ const translatedJitter = jitter[dim] * axis.transA *
46218
+ (axis.reversed ? -1 : 1), min = (point[plotProp] || 0) - translatedJitter, max = (point[plotProp] || 0) + translatedJitter;
46009
46219
  // Find a random position within this range
46010
46220
  point[plotProp] = min +
46011
46221
  (max - min) * unrandom(i + j * len);
@@ -46079,7 +46289,7 @@ Series_SeriesRegistry.registerSeriesType('scatter', ScatterSeries);
46079
46289
  const { deg2rad: CenteredUtilities_deg2rad } = Core_Globals;
46080
46290
 
46081
46291
  /**
46082
- * @private
46292
+ * @internal
46083
46293
  */
46084
46294
  var CenteredUtilities;
46085
46295
  (function (CenteredUtilities) {
@@ -46097,7 +46307,7 @@ var CenteredUtilities;
46097
46307
  * Get the center of the pie based on the size and center options relative
46098
46308
  * to the plot area. Borrowed by the polar and gauge series types.
46099
46309
  *
46100
- * @private
46310
+ * @internal
46101
46311
  * @function Highcharts.CenteredSeriesMixin.getCenter
46102
46312
  */
46103
46313
  function getCenter() {
@@ -46110,11 +46320,13 @@ var CenteredUtilities;
46110
46320
  innerSize = parseFloat(innerSize);
46111
46321
  }
46112
46322
  const positions = [
46113
- pick(centerOption?.[0], '50%'),
46114
- pick(centerOption?.[1], '50%'),
46323
+ (centerOption?.[0] ?? '50%'),
46324
+ (centerOption?.[1] ?? '50%'),
46115
46325
  // Prevent from negative values
46116
- pick(size && size < 0 ? void 0 : options.size, '100%'),
46117
- pick(innerSize && innerSize < 0 ? void 0 : options.innerSize || 0, '0%')
46326
+ ((size && size < 0 ? void 0 : options.size) ?? '100%'),
46327
+ ((innerSize && innerSize < 0 ?
46328
+ void 0 :
46329
+ options.innerSize || 0) ?? '0%')
46118
46330
  ];
46119
46331
  for (i = 0; i < 4; ++i) {
46120
46332
  value = positions[i];
@@ -46142,7 +46354,7 @@ var CenteredUtilities;
46142
46354
  * GetStartAndEndRadians - Calculates start and end angles in radians.
46143
46355
  * Used in series types such as pie and sunburst.
46144
46356
  *
46145
- * @private
46357
+ * @internal
46146
46358
  * @function Highcharts.CenteredSeriesMixin.getStartAndEndRadians
46147
46359
  *
46148
46360
  * @param {number} [start]
@@ -46174,6 +46386,7 @@ var CenteredUtilities;
46174
46386
  * Default Export
46175
46387
  *
46176
46388
  * */
46389
+ /** @internal */
46177
46390
  /* harmony default export */ const Series_CenteredUtilities = (CenteredUtilities);
46178
46391
  /* *
46179
46392
  *
@@ -46181,7 +46394,7 @@ var CenteredUtilities;
46181
46394
  *
46182
46395
  * */
46183
46396
  /**
46184
- * @private
46397
+ * @internal
46185
46398
  * @interface Highcharts.RadianAngles
46186
46399
  */ /**
46187
46400
  * @name Highcharts.RadianAngles#end
@@ -46206,7 +46419,6 @@ var CenteredUtilities;
46206
46419
  * */
46207
46420
 
46208
46421
 
46209
- const { setAnimation: PiePoint_setAnimation } = AnimationUtilities;
46210
46422
 
46211
46423
 
46212
46424
  /* *
@@ -46314,9 +46526,9 @@ class PiePoint extends Series_Point {
46314
46526
  */
46315
46527
  slice(sliced, redraw, animation) {
46316
46528
  const series = this.series, chart = series.chart;
46317
- PiePoint_setAnimation(animation, chart);
46529
+ setAnimation(animation, chart);
46318
46530
  // Redraw is true by default
46319
- redraw = pick(redraw, true);
46531
+ redraw = (redraw ?? true);
46320
46532
  this.sliced = this.options.sliced = sliced ?? !this.sliced;
46321
46533
  // Update options.data
46322
46534
  if (series.options.data) {
@@ -47121,7 +47333,8 @@ class PieSeries extends Series_Series {
47121
47333
  // Start values
47122
47334
  graphic.attr({
47123
47335
  // Animate from inner radius (#779)
47124
- r: pick(point.startR, (series.center && series.center[3] / 2)),
47336
+ r: point.startR ??
47337
+ (series.center && series.center[3] / 2),
47125
47338
  start: startAngleRad,
47126
47339
  end: startAngleRad
47127
47340
  });
@@ -47762,7 +47975,7 @@ var PieDataLabel_ColumnDataLabel;
47762
47975
  labelPosition.computed.x = x;
47763
47976
  labelPosition.computed.y = y - topOffset;
47764
47977
  // Detect overflowing data labels
47765
- if (pick(dataLabelOptions.crop, true)) {
47978
+ if (dataLabelOptions.crop ?? true) {
47766
47979
  dataLabelWidth = dataLabel.getBBox().width;
47767
47980
  let sideOverflow;
47768
47981
  // Overflow left
@@ -48278,7 +48491,10 @@ function OverlappingDataLabels_onChartRender() {
48278
48491
  if (point.visible) {
48279
48492
  (point.dataLabels || []).forEach((label) => {
48280
48493
  const options = label.options || {};
48281
- label.labelrank = pick(options.labelrank, point.labelrank, point.shapeArgs?.height); // #4118
48494
+ label.labelrank =
48495
+ options.labelrank ??
48496
+ point.labelrank ??
48497
+ point.shapeArgs?.height; // #4118
48282
48498
  // #21725: Sync target positions for generic overlap
48283
48499
  // checking. During animations (e.g., toggling a
48284
48500
  // point), DOM positions may overlap. We force
@@ -48452,7 +48668,7 @@ function BorderRadius_arc(x, y, w, h, options = {}) {
48452
48668
  if (options.open || !options.borderRadius) {
48453
48669
  return path;
48454
48670
  }
48455
- const alpha = end - start, sinHalfAlpha = Math.sin(alpha / 2), borderRadius = Math.max(Math.min(relativeLength(options.borderRadius || 0, r - innerR),
48671
+ const alpha = end - start, sinHalfAlpha = Math.sin(alpha / 2), borderRadius = Math.max(Math.min(relativeLength(borderRadiusObject(options.borderRadius).radius, r - innerR),
48456
48672
  // Cap to half the sector radius
48457
48673
  (r - innerR) / 2,
48458
48674
  // For smaller pie slices, cap to the largest small circle that
@@ -48478,7 +48694,7 @@ function seriesOnAfterColumnTranslate() {
48478
48694
  if (this.options.borderRadius &&
48479
48695
  !(this.chart.is3d && this.chart.is3d())) {
48480
48696
  const { options, yAxis } = this, percent = options.stacking === 'percent', seriesDefault = BorderRadius_defaultOptions.plotOptions?.[this.type]
48481
- ?.borderRadius, borderRadius = optionsToObject(options.borderRadius, isObject(seriesDefault) ? seriesDefault : {}), reversed = yAxis.options.reversed;
48697
+ ?.borderRadius, borderRadius = borderRadiusObject(options.borderRadius, isObject(seriesDefault) ? seriesDefault : {}), reversed = yAxis.options.reversed;
48482
48698
  for (const point of this.points) {
48483
48699
  const { shapeArgs } = point;
48484
48700
  if (point.shapeType === 'roundedRect' && shapeArgs) {
@@ -48550,8 +48766,12 @@ function composeBorderRadius(SeriesClass, SVGElementClass, SVGRendererClass) {
48550
48766
  symbols.roundedRect = BorderRadius_roundedRect;
48551
48767
  }
48552
48768
  }
48553
- /** @internal */
48554
- function optionsToObject(options, seriesBROptions) {
48769
+ /**
48770
+ * Utility function to get the full border radius options object, from a simple
48771
+ * number or a partial options object.
48772
+ * @internal
48773
+ */
48774
+ function borderRadiusObject(options, seriesBROptions) {
48555
48775
  if (!isObject(options)) {
48556
48776
  options = { radius: options || 0 };
48557
48777
  }
@@ -48559,7 +48779,7 @@ function optionsToObject(options, seriesBROptions) {
48559
48779
  }
48560
48780
  /** @internal */
48561
48781
  function pieSeriesOnAfterTranslate() {
48562
- const borderRadius = optionsToObject(this.options.borderRadius);
48782
+ const borderRadius = borderRadiusObject(this.options.borderRadius);
48563
48783
  for (const point of this.points) {
48564
48784
  const shapeArgs = point.shapeArgs;
48565
48785
  if (shapeArgs) {
@@ -48678,7 +48898,7 @@ function BorderRadius_roundedRect(x, y, width, height, options = {}) {
48678
48898
  * Column and pie with rounded border
48679
48899
  *
48680
48900
  * @name Highcharts.BorderRadiusOptionsObject#radius
48681
- * @type {string|number}
48901
+ * @type {string|number|undefined}
48682
48902
  */ /**
48683
48903
  * The scope of the rounding for column charts or plot bands. In a stacked
48684
48904
  * column chart, the value `point` means each single point will get rounded
@@ -48693,8 +48913,7 @@ function BorderRadius_roundedRect(x, y, width, height, options = {}) {
48693
48913
  * Rounded columns
48694
48914
  *
48695
48915
  * @name Highcharts.BorderRadiusOptionsObject#scope
48696
- * @validvalue ["individual", "point", "stack"]
48697
- * @type {string}
48916
+ * @type {"individual"|"point"|"stack"|undefined}
48698
48917
  */ /**
48699
48918
  * For column charts, where in the point or stack to apply rounding. The `end`
48700
48919
  * value means only those corners at the point value will be rounded, leaving
@@ -48705,8 +48924,7 @@ function BorderRadius_roundedRect(x, y, width, height, options = {}) {
48705
48924
  * Rounding on all corners
48706
48925
  *
48707
48926
  * @name Highcharts.BorderRadiusOptionsObject#where
48708
- * @validvalue ["all", "end"]
48709
- * @type {string}
48927
+ * @type {"all"|"end"|undefined}
48710
48928
  * @default end
48711
48929
  */
48712
48930
  (''); // Keeps doclets above in JS file
@@ -48765,10 +48983,12 @@ var Responsive;
48765
48983
  */
48766
48984
  function matchResponsiveRule(rule, matches) {
48767
48985
  const condition = rule.condition, fn = condition.callback || function () {
48768
- return (this.chartWidth <= pick(condition.maxWidth, Number.MAX_VALUE) &&
48769
- this.chartHeight <= pick(condition.maxHeight, Number.MAX_VALUE) &&
48770
- this.chartWidth >= pick(condition.minWidth, 0) &&
48771
- this.chartHeight >= pick(condition.minHeight, 0));
48986
+ return (this.chartWidth <=
48987
+ (condition.maxWidth ?? Number.MAX_VALUE) &&
48988
+ this.chartHeight <=
48989
+ (condition.maxHeight ?? Number.MAX_VALUE) &&
48990
+ this.chartWidth >= (condition.minWidth ?? 0) &&
48991
+ this.chartHeight >= (condition.minHeight ?? 0));
48772
48992
  };
48773
48993
  if (fn.call(this, this)) {
48774
48994
  matches.push(rule._id);
@@ -49050,12 +49270,17 @@ G.SVGElement = SVG_SVGElement;
49050
49270
  G.SVGRenderer = SVG_SVGRenderer;
49051
49271
  G.Templating = Core_Templating;
49052
49272
  G.Tick = Axis_Tick;
49053
- G.Time = Core_Time;
49273
+ G.Time = class extends Core_Time {
49274
+ constructor(options, lang) {
49275
+ const defaultOptions = Defaults.getOptions();
49276
+ super(options ?? defaultOptions.time, lang ?? defaultOptions.lang);
49277
+ }
49278
+ };
49054
49279
  G.Tooltip = Core_Tooltip;
49055
49280
  // Utilities
49056
49281
  G.addEvent = addEvent;
49057
- G.animObject = AnimationUtilities.animObject;
49058
- G.animate = AnimationUtilities.animate;
49282
+ G.animObject = animObject;
49283
+ G.animate = animate;
49059
49284
  G.arrayMax = arrayMax;
49060
49285
  G.arrayMin = arrayMin;
49061
49286
  G.attr = attr;
@@ -49082,7 +49307,7 @@ G.fireEvent = fireEvent;
49082
49307
  G.format = Core_Templating.format;
49083
49308
  G.getAlignFactor = getAlignFactor;
49084
49309
  G.getClosestDistance = getClosestDistance;
49085
- G.getDeferredAnimation = AnimationUtilities.getDeferredAnimation;
49310
+ G.getDeferredAnimation = getDeferredAnimation;
49086
49311
  G.getMagnitude = getMagnitude;
49087
49312
  G.getNestedProperty = getNestedProperty;
49088
49313
  G.getOptions = Defaults.getOptions;
@@ -49109,11 +49334,11 @@ G.relativeLength = relativeLength;
49109
49334
  G.removeEvent = removeEvent;
49110
49335
  G.replaceNested = replaceNested;
49111
49336
  G.seriesType = Series_SeriesRegistry.seriesType;
49112
- G.setAnimation = AnimationUtilities.setAnimation;
49337
+ G.setAnimation = setAnimation;
49113
49338
  G.setOptions = Defaults.setOptions;
49114
49339
  G.splat = splat;
49115
49340
  G.stableSort = stableSort;
49116
- G.stop = AnimationUtilities.stop;
49341
+ G.stop = stop;
49117
49342
  G.syncTimeout = syncTimeout;
49118
49343
  G.time = Defaults.defaultTime;
49119
49344
  G.ucfirst = ucfirst;