highcharts 13.0.1 → 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 (915) hide show
  1. package/bower.json +2 -3
  2. package/es-modules/Accessibility/A11yI18n.js +4 -4
  3. package/es-modules/Accessibility/Components/InfoRegionsComponent.js +6 -4
  4. package/es-modules/Accessibility/Components/LegendComponent.js +2 -2
  5. package/es-modules/Accessibility/Components/NavigatorComponent.js +2 -2
  6. package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +13 -10
  7. package/es-modules/Accessibility/Components/ZoomComponent.js +2 -2
  8. package/es-modules/Accessibility/FocusBorder.js +2 -2
  9. package/es-modules/Accessibility/Options/DeprecatedOptions.js +1 -2
  10. package/es-modules/Core/Animation/AnimationUtilities.js +3 -2
  11. package/es-modules/Core/Axis/Axis.js +48 -57
  12. package/es-modules/Core/Axis/Axis3DComposition.js +8 -6
  13. package/es-modules/Core/Axis/BrokenAxis.js +6 -5
  14. package/es-modules/Core/Axis/Color/ColorAxis.js +17 -10
  15. package/es-modules/Core/Axis/Color/ColorAxisComposition.js +2 -2
  16. package/es-modules/Core/Axis/GridAxis.js +4 -4
  17. package/es-modules/Core/Axis/LogarithmicAxis.js +5 -3
  18. package/es-modules/Core/Axis/NavigatorAxisComposition.js +2 -2
  19. package/es-modules/Core/Axis/OrdinalAxis.js +9 -7
  20. package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +3 -2
  21. package/es-modules/Core/Axis/RadialAxis.js +15 -9
  22. package/es-modules/Core/Axis/ScrollbarAxis.js +3 -3
  23. package/es-modules/Core/Axis/Stacking/StackItem.js +5 -5
  24. package/es-modules/Core/Axis/Stacking/StackingAxis.js +4 -4
  25. package/es-modules/Core/Axis/Tick.js +10 -11
  26. package/es-modules/Core/Axis/TreeGrid/TreeGridTick.js +3 -3
  27. package/es-modules/Core/Chart/Chart.js +14 -14
  28. package/es-modules/Core/Chart/Chart3D.js +3 -3
  29. package/es-modules/Core/Chart/ChartDefaults.js +23 -0
  30. package/es-modules/Core/Chart/MapChart.js +7 -5
  31. package/es-modules/Core/Chart/StockChart.js +15 -11
  32. package/es-modules/Core/Color/Color.js +3 -1
  33. package/es-modules/Core/Defaults.js +35 -0
  34. package/es-modules/Core/Globals.js +1 -1
  35. package/es-modules/Core/Legend/Legend.js +16 -12
  36. package/es-modules/Core/Legend/LegendSymbol.js +2 -2
  37. package/es-modules/Core/MSPointer.js +2 -2
  38. package/es-modules/Core/Math3D.js +6 -7
  39. package/es-modules/Core/Pointer.js +9 -9
  40. package/es-modules/Core/Renderer/RendererUtilities.js +2 -2
  41. package/es-modules/Core/Renderer/SVG/SVGElement.js +11 -9
  42. package/es-modules/Core/Renderer/SVG/SVGElement3D.js +2 -2
  43. package/es-modules/Core/Renderer/SVG/SVGLabel.js +5 -5
  44. package/es-modules/Core/Renderer/SVG/SVGRenderer.js +5 -5
  45. package/es-modules/Core/Renderer/SVG/SVGRenderer3D.js +11 -9
  46. package/es-modules/Core/Renderer/SVG/Symbols.js +6 -5
  47. package/es-modules/Core/Renderer/SVG/TextBuilder.js +2 -2
  48. package/es-modules/Core/Responsive.js +7 -5
  49. package/es-modules/Core/Series/DataLabel.js +8 -6
  50. package/es-modules/Core/Series/OverlappingDataLabels.js +5 -2
  51. package/es-modules/Core/Series/Point.js +3 -3
  52. package/es-modules/Core/Series/Series.js +37 -21
  53. package/es-modules/Core/Series/Series3D.js +2 -2
  54. package/es-modules/Core/Templating.js +2 -2
  55. package/es-modules/Core/Tooltip.js +11 -7
  56. package/es-modules/Core/Utilities.js +4 -3
  57. package/es-modules/Data/Connectors/DataConnector.js +2 -2
  58. package/es-modules/Data/Connectors/GoogleSheetsConnector.js +2 -2
  59. package/es-modules/Data/DataTable.js +17 -0
  60. package/es-modules/Extensions/Annotations/Annotation.js +4 -4
  61. package/es-modules/Extensions/Annotations/AnnotationChart.js +2 -2
  62. package/es-modules/Extensions/Annotations/ControlPoint.js +2 -2
  63. package/es-modules/Extensions/Annotations/Controllables/ControllableLabel.js +2 -2
  64. package/es-modules/Extensions/Annotations/EventEmitter.js +4 -4
  65. package/es-modules/Extensions/Annotations/NavigationBindings.js +6 -3
  66. package/es-modules/Extensions/Annotations/NavigationBindingsUtilities.js +2 -2
  67. package/es-modules/Extensions/Annotations/Popup/Popup.js +3 -2
  68. package/es-modules/Extensions/Annotations/Popup/PopupAnnotations.js +4 -6
  69. package/es-modules/Extensions/Annotations/Types/Measure.js +3 -3
  70. package/es-modules/Extensions/Annotations/Types/VerticalLine.js +3 -3
  71. package/es-modules/Extensions/Boost/BoostChart.js +11 -4
  72. package/es-modules/Extensions/Boost/BoostSeries.js +8 -9
  73. package/es-modules/Extensions/Boost/WGLRenderer.js +9 -6
  74. package/es-modules/Extensions/Boost/WGLShader.js +3 -3
  75. package/es-modules/Extensions/BoostCanvas.js +2 -2
  76. package/es-modules/Extensions/Breadcrumbs/Breadcrumbs.js +5 -4
  77. package/es-modules/Extensions/DataGrouping/DataGrouping.js +2 -2
  78. package/es-modules/Extensions/DataGrouping/DataGroupingAxisComposition.js +4 -3
  79. package/es-modules/Extensions/DataGrouping/DataGroupingSeriesComposition.js +2 -2
  80. package/es-modules/Extensions/DraggablePoints/DragDropProps.js +2 -3
  81. package/es-modules/Extensions/ExportData/ExportData.js +17 -16
  82. package/es-modules/Extensions/Exporting/Exporting.js +7 -7
  83. package/es-modules/Extensions/MouseWheelZoom/MouseWheelZoom.js +2 -2
  84. package/es-modules/Extensions/Pane/PaneComposition.js +2 -2
  85. package/es-modules/Extensions/ParallelCoordinates/ParallelAxis.js +2 -2
  86. package/es-modules/Extensions/PatternFill.js +7 -5
  87. package/es-modules/Extensions/PriceIndication.js +5 -4
  88. package/es-modules/Extensions/SeriesLabel/SeriesLabel.js +7 -7
  89. package/es-modules/Extensions/Sonification/MIDI.js +2 -3
  90. package/es-modules/Extensions/Sonification/Sonification.js +2 -2
  91. package/es-modules/Extensions/Sonification/SonificationSpeaker.js +3 -2
  92. package/es-modules/Extensions/Sonification/SynthPatch.js +3 -3
  93. package/es-modules/Extensions/Sonification/TimelineFromChart.js +11 -11
  94. package/es-modules/Gantt/Legacy.js +2 -2
  95. package/es-modules/Gantt/Pathfinder.js +3 -3
  96. package/es-modules/Gantt/PathfinderAlgorithms.js +4 -3
  97. package/es-modules/Gantt/Tree.js +1 -1
  98. package/es-modules/Maps/MapNavigation.js +4 -4
  99. package/es-modules/Maps/MapPointer.js +2 -2
  100. package/es-modules/Maps/MapView.js +2 -2
  101. package/es-modules/Series/ArcDiagram/ArcDiagramSeries.js +8 -6
  102. package/es-modules/Series/Area/AreaSeries.js +4 -5
  103. package/es-modules/Series/BoxPlot/BoxPlotSeries.js +13 -4
  104. package/es-modules/Series/Bubble/BubbleLegendItem.js +10 -6
  105. package/es-modules/Series/Bubble/BubbleSeries.js +10 -9
  106. package/es-modules/Series/Bullet/BulletSeries.js +17 -10
  107. package/es-modules/Series/CenteredUtilities.js +7 -5
  108. package/es-modules/Series/Column/ColumnSeries.js +2 -2
  109. package/es-modules/Series/Column3D/Column3DComposition.js +6 -5
  110. package/es-modules/Series/ColumnPyramid/ColumnPyramidSeries.js +4 -4
  111. package/es-modules/Series/ColumnRange/ColumnRangeSeries.js +4 -2
  112. package/es-modules/Series/Cylinder/CylinderComposition.js +2 -2
  113. package/es-modules/Series/DataModifyComposition.js +9 -7
  114. package/es-modules/Series/DotPlot/DotPlotSeries.js +3 -2
  115. package/es-modules/Series/Dumbbell/DumbbellPoint.js +14 -3
  116. package/es-modules/Series/Dumbbell/DumbbellSeries.js +24 -7
  117. package/es-modules/Series/FlowMap/FlowMapPoint.js +5 -3
  118. package/es-modules/Series/FlowMap/FlowMapSeries.js +17 -9
  119. package/es-modules/Series/Funnel/FunnelSeries.js +2 -2
  120. package/es-modules/Series/Funnel3D/Funnel3DSeries.js +7 -5
  121. package/es-modules/Series/Gauge/GaugeSeries.js +2 -2
  122. package/es-modules/Series/GeoHeatmap/GeoHeatmapSeries.js +4 -4
  123. package/es-modules/Series/Heatmap/HeatmapPoint.js +6 -6
  124. package/es-modules/Series/Heatmap/HeatmapPointOptions.js +12 -0
  125. package/es-modules/Series/Heatmap/HeatmapSeries.js +13 -13
  126. package/es-modules/Series/Heatmap/HeatmapSeriesOptions.js +12 -0
  127. package/es-modules/Series/Histogram/HistogramPoint.js +17 -0
  128. package/es-modules/Series/Histogram/HistogramPointOptions.js +12 -0
  129. package/es-modules/Series/Histogram/HistogramSeries.js +14 -2
  130. package/es-modules/Series/Histogram/HistogramSeriesOptions.js +12 -0
  131. package/es-modules/Series/InterpolationUtilities.js +5 -5
  132. package/es-modules/Series/Item/ItemPointOptions.js +14 -0
  133. package/es-modules/Series/Item/ItemSeries.js +18 -6
  134. package/es-modules/Series/Item/ItemSeriesOptions.js +14 -0
  135. package/es-modules/Series/Map/MapPoint.js +5 -3
  136. package/es-modules/Series/Map/MapSeries.js +5 -8
  137. package/es-modules/Series/Networkgraph/NetworkgraphPoint.js +3 -3
  138. package/es-modules/Series/Networkgraph/NetworkgraphSeries.js +4 -2
  139. package/es-modules/Series/Networkgraph/ReingoldFruchtermanLayout.js +18 -9
  140. package/es-modules/Series/NodesComposition.js +9 -10
  141. package/es-modules/Series/Organization/OrganizationPoint.js +3 -2
  142. package/es-modules/Series/PackedBubble/PackedBubbleLayout.js +3 -3
  143. package/es-modules/Series/PackedBubble/PackedBubbleSeries.js +5 -5
  144. package/es-modules/Series/Pictorial/PictorialSeries.js +4 -2
  145. package/es-modules/Series/Pie/PieDataLabel.js +2 -2
  146. package/es-modules/Series/Pie/PiePoint.js +2 -2
  147. package/es-modules/Series/Pie/PieSeries.js +3 -2
  148. package/es-modules/Series/Pie3D/Pie3DSeries.js +8 -4
  149. package/es-modules/Series/PolarComposition.js +8 -7
  150. package/es-modules/Series/Sankey/SankeySeries.js +11 -5
  151. package/es-modules/Series/Scatter/ScatterSeries.js +6 -5
  152. package/es-modules/Series/SolidGauge/SolidGaugeSeries.js +2 -2
  153. package/es-modules/Series/Spline/SplineSeries.js +5 -5
  154. package/es-modules/Series/TiledWebMap/TiledWebMapSeries.js +8 -6
  155. package/es-modules/Series/Tilemap/TilemapShapes.js +2 -2
  156. package/es-modules/Series/Timeline/TimelinePoint.js +2 -2
  157. package/es-modules/Series/Timeline/TimelineSeries.js +4 -3
  158. package/es-modules/Series/TreeUtilities.js +16 -7
  159. package/es-modules/Series/Treegraph/TreegraphLink.js +2 -2
  160. package/es-modules/Series/Treemap/TreemapPoint.js +2 -2
  161. package/es-modules/Series/Treemap/TreemapSeries.js +14 -11
  162. package/es-modules/Series/VariablePie/VariablePieSeries.js +6 -4
  163. package/es-modules/Series/Variwide/VariwideSeries.js +2 -2
  164. package/es-modules/Series/Waterfall/WaterfallSeries.js +2 -2
  165. package/es-modules/Series/Windbarb/WindbarbSeries.js +2 -2
  166. package/es-modules/Shared/TimeBase.js +8 -2
  167. package/es-modules/Shared/Utilities.js +9 -7
  168. package/es-modules/Stock/Indicators/Aroon/AroonIndicator.js +3 -3
  169. package/es-modules/Stock/Indicators/DPO/DPOIndicator.js +4 -3
  170. package/es-modules/Stock/Indicators/RSI/RSIIndicator.js +1 -1
  171. package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +2 -2
  172. package/es-modules/Stock/Navigator/ChartNavigatorComposition.js +4 -4
  173. package/es-modules/Stock/Navigator/Navigator.js +26 -26
  174. package/es-modules/Stock/Navigator/StandaloneNavigator.js +4 -4
  175. package/es-modules/Stock/RangeSelector/RangeSelector.js +15 -11
  176. package/es-modules/Stock/RangeSelector/RangeSelectorComposition.js +3 -3
  177. package/es-modules/Stock/Scrollbar/Scrollbar.js +8 -7
  178. package/es-modules/Stock/StockTools/StockToolbar.js +5 -5
  179. package/es-modules/Stock/StockTools/StockTools.js +2 -2
  180. package/es-modules/Stock/StockTools/StockToolsGui.js +4 -2
  181. package/es-modules/masters/highcharts-3d.src.js +1 -1
  182. package/es-modules/masters/highcharts-autoload.src.js +1 -1
  183. package/es-modules/masters/highcharts-gantt.src.js +1 -1
  184. package/es-modules/masters/highcharts-more.src.js +1 -1
  185. package/es-modules/masters/highcharts.src.js +7 -2
  186. package/es-modules/masters/highmaps.src.js +1 -1
  187. package/es-modules/masters/highstock.src.js +1 -1
  188. package/es-modules/masters/i18n/fr-FR.src.d.ts +1 -1
  189. package/es-modules/masters/i18n/fr-FR.src.js +1 -1
  190. package/es-modules/masters/i18n/nb-NO.src.d.ts +1 -1
  191. package/es-modules/masters/i18n/nb-NO.src.js +1 -1
  192. package/es-modules/masters/i18n/zh-CN.src.d.ts +1 -1
  193. package/es-modules/masters/i18n/zh-CN.src.js +1 -1
  194. package/es-modules/masters/indicators/acceleration-bands.src.js +1 -1
  195. package/es-modules/masters/indicators/accumulation-distribution.src.js +1 -1
  196. package/es-modules/masters/indicators/ao.src.js +1 -1
  197. package/es-modules/masters/indicators/apo.src.js +1 -1
  198. package/es-modules/masters/indicators/aroon-oscillator.src.js +1 -1
  199. package/es-modules/masters/indicators/aroon.src.js +1 -1
  200. package/es-modules/masters/indicators/atr.src.js +1 -1
  201. package/es-modules/masters/indicators/bollinger-bands.src.js +1 -1
  202. package/es-modules/masters/indicators/cci.src.js +1 -1
  203. package/es-modules/masters/indicators/chaikin.src.js +1 -1
  204. package/es-modules/masters/indicators/cmf.src.js +1 -1
  205. package/es-modules/masters/indicators/cmo.src.js +1 -1
  206. package/es-modules/masters/indicators/dema.src.js +1 -1
  207. package/es-modules/masters/indicators/disparity-index.src.js +1 -1
  208. package/es-modules/masters/indicators/dmi.src.js +1 -1
  209. package/es-modules/masters/indicators/dpo.src.js +1 -1
  210. package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
  211. package/es-modules/masters/indicators/indicators-all.src.js +1 -1
  212. package/es-modules/masters/indicators/indicators.src.js +1 -1
  213. package/es-modules/masters/indicators/keltner-channels.src.js +1 -1
  214. package/es-modules/masters/indicators/klinger.src.js +1 -1
  215. package/es-modules/masters/indicators/macd.src.js +1 -1
  216. package/es-modules/masters/indicators/mfi.src.js +1 -1
  217. package/es-modules/masters/indicators/momentum.src.js +1 -1
  218. package/es-modules/masters/indicators/natr.src.js +1 -1
  219. package/es-modules/masters/indicators/obv.src.js +1 -1
  220. package/es-modules/masters/indicators/pivot-points.src.js +1 -1
  221. package/es-modules/masters/indicators/ppo.src.js +1 -1
  222. package/es-modules/masters/indicators/price-channel.src.js +1 -1
  223. package/es-modules/masters/indicators/price-envelopes.src.js +1 -1
  224. package/es-modules/masters/indicators/psar.src.js +1 -1
  225. package/es-modules/masters/indicators/regressions.src.js +1 -1
  226. package/es-modules/masters/indicators/roc.src.js +1 -1
  227. package/es-modules/masters/indicators/rsi.src.js +1 -1
  228. package/es-modules/masters/indicators/slow-stochastic.src.js +1 -1
  229. package/es-modules/masters/indicators/stochastic.src.js +1 -1
  230. package/es-modules/masters/indicators/supertrend.src.js +1 -1
  231. package/es-modules/masters/indicators/tema.src.js +1 -1
  232. package/es-modules/masters/indicators/trendline.src.js +1 -1
  233. package/es-modules/masters/indicators/trix.src.js +1 -1
  234. package/es-modules/masters/indicators/volume-by-price.src.js +1 -1
  235. package/es-modules/masters/indicators/vwap.src.js +1 -1
  236. package/es-modules/masters/indicators/williams-r.src.js +1 -1
  237. package/es-modules/masters/indicators/wma.src.js +1 -1
  238. package/es-modules/masters/indicators/zigzag.src.js +1 -1
  239. package/es-modules/masters/modules/accessibility.src.js +1 -1
  240. package/es-modules/masters/modules/annotations-advanced.src.js +1 -1
  241. package/es-modules/masters/modules/annotations.src.js +1 -1
  242. package/es-modules/masters/modules/arc-diagram.src.js +1 -1
  243. package/es-modules/masters/modules/arrow-symbols.src.js +1 -1
  244. package/es-modules/masters/modules/boost-canvas.src.js +1 -1
  245. package/es-modules/masters/modules/boost.src.js +1 -1
  246. package/es-modules/masters/modules/broken-axis.src.js +1 -1
  247. package/es-modules/masters/modules/bullet.src.js +1 -1
  248. package/es-modules/masters/modules/coloraxis.src.js +1 -1
  249. package/es-modules/masters/modules/contour.src.js +1 -1
  250. package/es-modules/masters/modules/current-date-indicator.src.js +1 -1
  251. package/es-modules/masters/modules/cylinder.src.js +1 -1
  252. package/es-modules/masters/modules/data-sorting.src.js +1 -1
  253. package/es-modules/masters/modules/data-tools.src.js +1 -1
  254. package/es-modules/masters/modules/data.src.js +1 -1
  255. package/es-modules/masters/modules/datagrouping.src.js +1 -1
  256. package/es-modules/masters/modules/debugger.src.js +1 -1
  257. package/es-modules/masters/modules/dependency-wheel.src.js +1 -1
  258. package/es-modules/masters/modules/dotplot.src.js +1 -1
  259. package/es-modules/masters/modules/drag-panes.src.js +1 -1
  260. package/es-modules/masters/modules/draggable-points.src.js +1 -1
  261. package/es-modules/masters/modules/drilldown.src.js +1 -1
  262. package/es-modules/masters/modules/dumbbell.src.js +1 -1
  263. package/es-modules/masters/modules/export-data.src.js +1 -1
  264. package/es-modules/masters/modules/exporting.src.js +1 -1
  265. package/es-modules/masters/modules/flowmap.src.js +1 -1
  266. package/es-modules/masters/modules/full-screen.src.js +1 -1
  267. package/es-modules/masters/modules/funnel.src.js +1 -1
  268. package/es-modules/masters/modules/funnel3d.src.js +1 -1
  269. package/es-modules/masters/modules/gantt.src.js +1 -1
  270. package/es-modules/masters/modules/geoheatmap.src.js +1 -1
  271. package/es-modules/masters/modules/grid-axis.src.js +1 -1
  272. package/es-modules/masters/modules/heatmap.src.js +1 -1
  273. package/es-modules/masters/modules/heikinashi.src.js +1 -1
  274. package/es-modules/masters/modules/histogram-bellcurve.src.js +1 -1
  275. package/es-modules/masters/modules/hollowcandlestick.src.js +1 -1
  276. package/es-modules/masters/modules/item-series.src.js +1 -1
  277. package/es-modules/masters/modules/lollipop.src.js +1 -1
  278. package/es-modules/masters/modules/map.src.js +1 -1
  279. package/es-modules/masters/modules/marker-clusters.src.js +1 -1
  280. package/es-modules/masters/modules/mouse-wheel-zoom.src.js +1 -1
  281. package/es-modules/masters/modules/navigator.src.js +1 -1
  282. package/es-modules/masters/modules/networkgraph.src.js +1 -1
  283. package/es-modules/masters/modules/no-data-to-display.src.js +1 -1
  284. package/es-modules/masters/modules/non-cartesian-zoom.src.js +1 -1
  285. package/es-modules/masters/modules/offline-exporting.src.js +1 -1
  286. package/es-modules/masters/modules/organization.src.js +1 -1
  287. package/es-modules/masters/modules/parallel-coordinates.src.js +1 -1
  288. package/es-modules/masters/modules/pareto.src.js +1 -1
  289. package/es-modules/masters/modules/pathfinder.src.js +1 -1
  290. package/es-modules/masters/modules/pattern-fill.src.js +1 -1
  291. package/es-modules/masters/modules/pictorial.src.js +1 -1
  292. package/es-modules/masters/modules/pointandfigure.src.js +1 -1
  293. package/es-modules/masters/modules/price-indicator.src.js +1 -1
  294. package/es-modules/masters/modules/pyramid3d.src.js +1 -1
  295. package/es-modules/masters/modules/renko.src.js +1 -1
  296. package/es-modules/masters/modules/sankey.src.js +1 -1
  297. package/es-modules/masters/modules/series-label.src.js +1 -1
  298. package/es-modules/masters/modules/series-on-point.src.js +1 -1
  299. package/es-modules/masters/modules/solid-gauge.src.js +1 -1
  300. package/es-modules/masters/modules/sonification.src.js +1 -1
  301. package/es-modules/masters/modules/static-scale.src.js +1 -1
  302. package/es-modules/masters/modules/stock-tools.src.js +1 -1
  303. package/es-modules/masters/modules/stock.src.js +1 -1
  304. package/es-modules/masters/modules/streamgraph.src.js +1 -1
  305. package/es-modules/masters/modules/sunburst.src.js +1 -1
  306. package/es-modules/masters/modules/textpath.src.js +1 -1
  307. package/es-modules/masters/modules/tiledwebmap.src.js +1 -1
  308. package/es-modules/masters/modules/tilemap.src.js +1 -1
  309. package/es-modules/masters/modules/timeline.src.js +1 -1
  310. package/es-modules/masters/modules/treegraph.src.js +1 -1
  311. package/es-modules/masters/modules/treegrid.src.js +1 -1
  312. package/es-modules/masters/modules/treemap.src.js +1 -1
  313. package/es-modules/masters/modules/variable-pie.src.js +1 -1
  314. package/es-modules/masters/modules/variwide.src.js +1 -1
  315. package/es-modules/masters/modules/vector.src.js +1 -1
  316. package/es-modules/masters/modules/venn.src.js +1 -1
  317. package/es-modules/masters/modules/windbarb.src.js +1 -1
  318. package/es-modules/masters/modules/wordcloud.src.js +1 -1
  319. package/es-modules/masters/modules/xrange.src.js +1 -1
  320. package/es-modules/masters/standalone-navigator.src.js +1 -1
  321. package/es-modules/masters/themes/adaptive.src.js +1 -1
  322. package/es-modules/masters/themes/avocado.src.js +1 -1
  323. package/es-modules/masters/themes/dark-unica.src.js +1 -1
  324. package/es-modules/masters/themes/grid-light.src.js +1 -1
  325. package/es-modules/masters/themes/high-contrast.src.js +1 -1
  326. package/es-modules/masters/themes/sand-signika.src.js +1 -1
  327. package/es-modules/masters/themes/sunset.src.js +1 -1
  328. package/es-modules/tsconfig.tsbuildinfo +1 -1
  329. package/esm/highcharts-3d.js +2 -2
  330. package/esm/highcharts-3d.src.js +40 -32
  331. package/esm/highcharts-autoload.js +1 -1
  332. package/esm/highcharts-autoload.src.js +1 -1
  333. package/esm/highcharts-gantt.js +1 -1
  334. package/esm/highcharts-gantt.src.js +1 -1
  335. package/esm/highcharts-more.js +2 -2
  336. package/esm/highcharts-more.src.js +90 -56
  337. package/esm/highcharts.js +4 -4
  338. package/esm/highcharts.src.js +312 -207
  339. package/esm/highmaps.js +1 -1
  340. package/esm/highmaps.src.js +1 -1
  341. package/esm/highstock.js +1 -1
  342. package/esm/highstock.src.js +1 -1
  343. package/esm/i18n/fr-FR.js +1 -1
  344. package/esm/i18n/fr-FR.src.js +1 -1
  345. package/esm/i18n/nb-NO.js +1 -1
  346. package/esm/i18n/nb-NO.src.js +1 -1
  347. package/esm/i18n/zh-CN.js +1 -1
  348. package/esm/i18n/zh-CN.src.js +1 -1
  349. package/esm/indicators/acceleration-bands.js +1 -1
  350. package/esm/indicators/acceleration-bands.src.js +1 -1
  351. package/esm/indicators/accumulation-distribution.js +1 -1
  352. package/esm/indicators/accumulation-distribution.src.js +1 -1
  353. package/esm/indicators/ao.js +1 -1
  354. package/esm/indicators/ao.src.js +1 -1
  355. package/esm/indicators/apo.js +1 -1
  356. package/esm/indicators/apo.src.js +1 -1
  357. package/esm/indicators/aroon-oscillator.js +1 -1
  358. package/esm/indicators/aroon-oscillator.src.js +1 -1
  359. package/esm/indicators/aroon.js +2 -2
  360. package/esm/indicators/aroon.src.js +3 -3
  361. package/esm/indicators/atr.js +1 -1
  362. package/esm/indicators/atr.src.js +1 -1
  363. package/esm/indicators/bollinger-bands.js +1 -1
  364. package/esm/indicators/bollinger-bands.src.js +1 -1
  365. package/esm/indicators/cci.js +1 -1
  366. package/esm/indicators/cci.src.js +1 -1
  367. package/esm/indicators/chaikin.js +1 -1
  368. package/esm/indicators/chaikin.src.js +1 -1
  369. package/esm/indicators/cmf.js +1 -1
  370. package/esm/indicators/cmf.src.js +1 -1
  371. package/esm/indicators/cmo.js +1 -1
  372. package/esm/indicators/cmo.src.js +1 -1
  373. package/esm/indicators/dema.js +1 -1
  374. package/esm/indicators/dema.src.js +1 -1
  375. package/esm/indicators/disparity-index.js +1 -1
  376. package/esm/indicators/disparity-index.src.js +1 -1
  377. package/esm/indicators/dmi.js +1 -1
  378. package/esm/indicators/dmi.src.js +1 -1
  379. package/esm/indicators/dpo.js +2 -2
  380. package/esm/indicators/dpo.src.js +4 -3
  381. package/esm/indicators/ichimoku-kinko-hyo.js +1 -1
  382. package/esm/indicators/ichimoku-kinko-hyo.src.js +1 -1
  383. package/esm/indicators/indicators-all.js +2 -2
  384. package/esm/indicators/indicators-all.src.js +8 -7
  385. package/esm/indicators/indicators.js +2 -2
  386. package/esm/indicators/indicators.src.js +2 -2
  387. package/esm/indicators/keltner-channels.js +1 -1
  388. package/esm/indicators/keltner-channels.src.js +1 -1
  389. package/esm/indicators/klinger.js +1 -1
  390. package/esm/indicators/klinger.src.js +1 -1
  391. package/esm/indicators/macd.js +1 -1
  392. package/esm/indicators/macd.src.js +1 -1
  393. package/esm/indicators/mfi.js +1 -1
  394. package/esm/indicators/mfi.src.js +1 -1
  395. package/esm/indicators/momentum.js +1 -1
  396. package/esm/indicators/momentum.src.js +1 -1
  397. package/esm/indicators/natr.js +1 -1
  398. package/esm/indicators/natr.src.js +1 -1
  399. package/esm/indicators/obv.js +1 -1
  400. package/esm/indicators/obv.src.js +1 -1
  401. package/esm/indicators/pivot-points.js +1 -1
  402. package/esm/indicators/pivot-points.src.js +1 -1
  403. package/esm/indicators/ppo.js +1 -1
  404. package/esm/indicators/ppo.src.js +1 -1
  405. package/esm/indicators/price-channel.js +1 -1
  406. package/esm/indicators/price-channel.src.js +1 -1
  407. package/esm/indicators/price-envelopes.js +1 -1
  408. package/esm/indicators/price-envelopes.src.js +1 -1
  409. package/esm/indicators/psar.js +1 -1
  410. package/esm/indicators/psar.src.js +1 -1
  411. package/esm/indicators/regressions.js +1 -1
  412. package/esm/indicators/regressions.src.js +1 -1
  413. package/esm/indicators/roc.js +1 -1
  414. package/esm/indicators/roc.src.js +1 -1
  415. package/esm/indicators/rsi.js +1 -1
  416. package/esm/indicators/rsi.src.js +2 -2
  417. package/esm/indicators/slow-stochastic.js +1 -1
  418. package/esm/indicators/slow-stochastic.src.js +1 -1
  419. package/esm/indicators/stochastic.js +1 -1
  420. package/esm/indicators/stochastic.src.js +1 -1
  421. package/esm/indicators/supertrend.js +1 -1
  422. package/esm/indicators/supertrend.src.js +1 -1
  423. package/esm/indicators/tema.js +1 -1
  424. package/esm/indicators/tema.src.js +1 -1
  425. package/esm/indicators/trendline.js +1 -1
  426. package/esm/indicators/trendline.src.js +1 -1
  427. package/esm/indicators/trix.js +1 -1
  428. package/esm/indicators/trix.src.js +1 -1
  429. package/esm/indicators/volume-by-price.js +1 -1
  430. package/esm/indicators/volume-by-price.src.js +1 -1
  431. package/esm/indicators/vwap.js +1 -1
  432. package/esm/indicators/vwap.src.js +1 -1
  433. package/esm/indicators/williams-r.js +1 -1
  434. package/esm/indicators/williams-r.src.js +1 -1
  435. package/esm/indicators/wma.js +1 -1
  436. package/esm/indicators/wma.src.js +1 -1
  437. package/esm/indicators/zigzag.js +1 -1
  438. package/esm/indicators/zigzag.src.js +1 -1
  439. package/esm/modules/accessibility.js +2 -2
  440. package/esm/modules/accessibility.src.js +69 -63
  441. package/esm/modules/annotations-advanced.js +3 -3
  442. package/esm/modules/annotations-advanced.src.js +25 -23
  443. package/esm/modules/annotations.js +3 -3
  444. package/esm/modules/annotations.src.js +21 -19
  445. package/esm/modules/arc-diagram.js +2 -2
  446. package/esm/modules/arc-diagram.src.js +16 -15
  447. package/esm/modules/arrow-symbols.js +1 -1
  448. package/esm/modules/arrow-symbols.src.js +1 -1
  449. package/esm/modules/boost-canvas.js +2 -2
  450. package/esm/modules/boost-canvas.src.js +29 -20
  451. package/esm/modules/boost.js +2 -2
  452. package/esm/modules/boost.src.js +28 -19
  453. package/esm/modules/broken-axis.js +2 -2
  454. package/esm/modules/broken-axis.src.js +6 -5
  455. package/esm/modules/bullet.js +2 -2
  456. package/esm/modules/bullet.src.js +17 -10
  457. package/esm/modules/coloraxis.js +2 -2
  458. package/esm/modules/coloraxis.src.js +18 -11
  459. package/esm/modules/contour.js +1 -1
  460. package/esm/modules/contour.src.js +1 -1
  461. package/esm/modules/current-date-indicator.js +1 -1
  462. package/esm/modules/current-date-indicator.src.js +1 -1
  463. package/esm/modules/cylinder.js +2 -2
  464. package/esm/modules/cylinder.src.js +9 -10
  465. package/esm/modules/data-sorting.js +1 -1
  466. package/esm/modules/data-sorting.src.js +1 -1
  467. package/esm/modules/data-tools.js +2 -2
  468. package/esm/modules/data-tools.src.js +20 -3
  469. package/esm/modules/data.js +1 -1
  470. package/esm/modules/data.src.js +1 -1
  471. package/esm/modules/datagrouping.js +2 -2
  472. package/esm/modules/datagrouping.src.js +6 -5
  473. package/esm/modules/debugger.js +1 -1
  474. package/esm/modules/debugger.src.js +1 -1
  475. package/esm/modules/dependency-wheel.js +1 -1
  476. package/esm/modules/dependency-wheel.src.js +1 -1
  477. package/esm/modules/dotplot.js +2 -2
  478. package/esm/modules/dotplot.src.js +3 -2
  479. package/esm/modules/drag-panes.js +1 -1
  480. package/esm/modules/drag-panes.src.js +1 -1
  481. package/esm/modules/draggable-points.js +2 -2
  482. package/esm/modules/draggable-points.src.js +2 -3
  483. package/esm/modules/drilldown.js +2 -2
  484. package/esm/modules/drilldown.src.js +5 -4
  485. package/esm/modules/dumbbell.js +2 -2
  486. package/esm/modules/dumbbell.src.js +37 -9
  487. package/esm/modules/export-data.js +2 -2
  488. package/esm/modules/export-data.src.js +17 -16
  489. package/esm/modules/exporting.js +2 -2
  490. package/esm/modules/exporting.src.js +7 -7
  491. package/esm/modules/flowmap.js +2 -2
  492. package/esm/modules/flowmap.src.js +21 -11
  493. package/esm/modules/full-screen.js +1 -1
  494. package/esm/modules/full-screen.src.js +1 -1
  495. package/esm/modules/funnel.js +2 -2
  496. package/esm/modules/funnel.src.js +2 -2
  497. package/esm/modules/funnel3d.js +2 -2
  498. package/esm/modules/funnel3d.src.js +14 -13
  499. package/esm/modules/gantt.js +2 -2
  500. package/esm/modules/gantt.src.js +93 -76
  501. package/esm/modules/geoheatmap.js +2 -2
  502. package/esm/modules/geoheatmap.src.js +8 -8
  503. package/esm/modules/grid-axis.js +2 -2
  504. package/esm/modules/grid-axis.src.js +4 -4
  505. package/esm/modules/heatmap.js +2 -2
  506. package/esm/modules/heatmap.src.js +22 -22
  507. package/esm/modules/heikinashi.js +1 -1
  508. package/esm/modules/heikinashi.src.js +1 -1
  509. package/esm/modules/histogram-bellcurve.js +1 -1
  510. package/esm/modules/histogram-bellcurve.src.js +15 -3
  511. package/esm/modules/hollowcandlestick.js +1 -1
  512. package/esm/modules/hollowcandlestick.src.js +1 -1
  513. package/esm/modules/item-series.js +2 -2
  514. package/esm/modules/item-series.src.js +18 -6
  515. package/esm/modules/lollipop.js +1 -1
  516. package/esm/modules/lollipop.src.js +1 -1
  517. package/esm/modules/map.js +2 -2
  518. package/esm/modules/map.src.js +65 -57
  519. package/esm/modules/marker-clusters.js +1 -1
  520. package/esm/modules/marker-clusters.src.js +1 -1
  521. package/esm/modules/mouse-wheel-zoom.js +2 -2
  522. package/esm/modules/mouse-wheel-zoom.src.js +3 -3
  523. package/esm/modules/navigator.js +2 -2
  524. package/esm/modules/navigator.src.js +47 -45
  525. package/esm/modules/networkgraph.js +2 -2
  526. package/esm/modules/networkgraph.src.js +31 -21
  527. package/esm/modules/no-data-to-display.js +1 -1
  528. package/esm/modules/no-data-to-display.src.js +1 -1
  529. package/esm/modules/non-cartesian-zoom.js +1 -1
  530. package/esm/modules/non-cartesian-zoom.src.js +1 -1
  531. package/esm/modules/offline-exporting.js +1 -1
  532. package/esm/modules/offline-exporting.src.js +1 -1
  533. package/esm/modules/organization.js +2 -2
  534. package/esm/modules/organization.src.js +3 -2
  535. package/esm/modules/parallel-coordinates.js +2 -2
  536. package/esm/modules/parallel-coordinates.src.js +2 -2
  537. package/esm/modules/pareto.js +1 -1
  538. package/esm/modules/pareto.src.js +1 -1
  539. package/esm/modules/pathfinder.js +2 -2
  540. package/esm/modules/pathfinder.src.js +7 -6
  541. package/esm/modules/pattern-fill.js +2 -2
  542. package/esm/modules/pattern-fill.src.js +7 -5
  543. package/esm/modules/pictorial.js +2 -2
  544. package/esm/modules/pictorial.src.js +10 -6
  545. package/esm/modules/pointandfigure.js +1 -1
  546. package/esm/modules/pointandfigure.src.js +1 -1
  547. package/esm/modules/price-indicator.js +2 -2
  548. package/esm/modules/price-indicator.src.js +5 -4
  549. package/esm/modules/pyramid3d.js +1 -1
  550. package/esm/modules/pyramid3d.src.js +1 -1
  551. package/esm/modules/renko.js +1 -1
  552. package/esm/modules/renko.src.js +1 -1
  553. package/esm/modules/sankey.js +2 -2
  554. package/esm/modules/sankey.src.js +34 -20
  555. package/esm/modules/series-label.js +2 -2
  556. package/esm/modules/series-label.src.js +7 -7
  557. package/esm/modules/series-on-point.js +1 -1
  558. package/esm/modules/series-on-point.src.js +1 -1
  559. package/esm/modules/solid-gauge.js +2 -2
  560. package/esm/modules/solid-gauge.src.js +2 -2
  561. package/esm/modules/sonification.js +2 -2
  562. package/esm/modules/sonification.src.js +19 -19
  563. package/esm/modules/static-scale.js +1 -1
  564. package/esm/modules/static-scale.src.js +1 -1
  565. package/esm/modules/stock-tools.js +3 -3
  566. package/esm/modules/stock-tools.src.js +15 -10
  567. package/esm/modules/stock.js +2 -2
  568. package/esm/modules/stock.src.js +90 -76
  569. package/esm/modules/streamgraph.js +1 -1
  570. package/esm/modules/streamgraph.src.js +1 -1
  571. package/esm/modules/sunburst.js +2 -2
  572. package/esm/modules/sunburst.src.js +41 -26
  573. package/esm/modules/textpath.js +1 -1
  574. package/esm/modules/textpath.src.js +1 -1
  575. package/esm/modules/tiledwebmap.js +2 -2
  576. package/esm/modules/tiledwebmap.src.js +8 -6
  577. package/esm/modules/tilemap.js +2 -2
  578. package/esm/modules/tilemap.src.js +3 -3
  579. package/esm/modules/timeline.js +2 -2
  580. package/esm/modules/timeline.src.js +5 -4
  581. package/esm/modules/treegraph.js +2 -2
  582. package/esm/modules/treegraph.src.js +17 -8
  583. package/esm/modules/treegrid.js +2 -2
  584. package/esm/modules/treegrid.src.js +28 -18
  585. package/esm/modules/treemap.js +2 -2
  586. package/esm/modules/treemap.src.js +35 -22
  587. package/esm/modules/variable-pie.js +2 -2
  588. package/esm/modules/variable-pie.src.js +6 -4
  589. package/esm/modules/variwide.js +2 -2
  590. package/esm/modules/variwide.src.js +2 -2
  591. package/esm/modules/vector.js +1 -1
  592. package/esm/modules/vector.src.js +1 -1
  593. package/esm/modules/venn.js +1 -1
  594. package/esm/modules/venn.src.js +1 -1
  595. package/esm/modules/windbarb.js +2 -2
  596. package/esm/modules/windbarb.src.js +2 -2
  597. package/esm/modules/wordcloud.js +1 -1
  598. package/esm/modules/wordcloud.src.js +1 -1
  599. package/esm/modules/xrange.js +1 -1
  600. package/esm/modules/xrange.src.js +1 -1
  601. package/esm/standalone-navigator.js +4 -4
  602. package/esm/standalone-navigator.src.js +355 -249
  603. package/esm/themes/adaptive.js +1 -1
  604. package/esm/themes/adaptive.src.js +1 -1
  605. package/esm/themes/avocado.js +1 -1
  606. package/esm/themes/avocado.src.js +1 -1
  607. package/esm/themes/dark-unica.js +1 -1
  608. package/esm/themes/dark-unica.src.js +1 -1
  609. package/esm/themes/grid-light.js +1 -1
  610. package/esm/themes/grid-light.src.js +1 -1
  611. package/esm/themes/high-contrast.js +1 -1
  612. package/esm/themes/high-contrast.src.js +1 -1
  613. package/esm/themes/sand-signika.js +1 -1
  614. package/esm/themes/sand-signika.src.js +1 -1
  615. package/esm/themes/sunset.js +1 -1
  616. package/esm/themes/sunset.src.js +1 -1
  617. package/highcharts-3d.js +2 -2
  618. package/highcharts-3d.src.js +40 -32
  619. package/highcharts-autoload.d.ts +8 -2
  620. package/highcharts-autoload.js +4 -4
  621. package/highcharts-autoload.src.d.ts +8 -2
  622. package/highcharts-autoload.src.js +313 -208
  623. package/highcharts-gantt.js +4 -4
  624. package/highcharts-gantt.src.js +404 -283
  625. package/highcharts-more.js +2 -2
  626. package/highcharts-more.src.js +90 -56
  627. package/highcharts.d.ts +61 -4
  628. package/highcharts.js +4 -4
  629. package/highcharts.src.d.ts +61 -4
  630. package/highcharts.src.js +312 -207
  631. package/highmaps.js +4 -4
  632. package/highmaps.src.js +390 -272
  633. package/highstock.js +4 -4
  634. package/highstock.src.js +413 -293
  635. package/i18n/fr-FR.js +1 -1
  636. package/i18n/fr-FR.src.js +1 -1
  637. package/i18n/nb-NO.js +1 -1
  638. package/i18n/nb-NO.src.js +1 -1
  639. package/i18n/zh-CN.js +1 -1
  640. package/i18n/zh-CN.src.js +1 -1
  641. package/indicators/acceleration-bands.js +1 -1
  642. package/indicators/acceleration-bands.src.js +1 -1
  643. package/indicators/accumulation-distribution.js +1 -1
  644. package/indicators/accumulation-distribution.src.js +1 -1
  645. package/indicators/ao.js +1 -1
  646. package/indicators/ao.src.js +1 -1
  647. package/indicators/apo.js +1 -1
  648. package/indicators/apo.src.js +1 -1
  649. package/indicators/aroon-oscillator.js +1 -1
  650. package/indicators/aroon-oscillator.src.js +1 -1
  651. package/indicators/aroon.js +2 -2
  652. package/indicators/aroon.src.js +3 -3
  653. package/indicators/atr.js +1 -1
  654. package/indicators/atr.src.js +1 -1
  655. package/indicators/bollinger-bands.js +1 -1
  656. package/indicators/bollinger-bands.src.js +1 -1
  657. package/indicators/cci.js +1 -1
  658. package/indicators/cci.src.js +1 -1
  659. package/indicators/chaikin.js +1 -1
  660. package/indicators/chaikin.src.js +1 -1
  661. package/indicators/cmf.js +1 -1
  662. package/indicators/cmf.src.js +1 -1
  663. package/indicators/cmo.js +1 -1
  664. package/indicators/cmo.src.js +1 -1
  665. package/indicators/dema.js +1 -1
  666. package/indicators/dema.src.js +1 -1
  667. package/indicators/disparity-index.js +1 -1
  668. package/indicators/disparity-index.src.js +1 -1
  669. package/indicators/dmi.js +1 -1
  670. package/indicators/dmi.src.js +1 -1
  671. package/indicators/dpo.js +2 -2
  672. package/indicators/dpo.src.js +4 -3
  673. package/indicators/ichimoku-kinko-hyo.js +1 -1
  674. package/indicators/ichimoku-kinko-hyo.src.js +1 -1
  675. package/indicators/indicators-all.js +2 -2
  676. package/indicators/indicators-all.src.js +8 -7
  677. package/indicators/indicators.js +2 -2
  678. package/indicators/indicators.src.js +2 -2
  679. package/indicators/keltner-channels.js +1 -1
  680. package/indicators/keltner-channels.src.js +1 -1
  681. package/indicators/klinger.js +1 -1
  682. package/indicators/klinger.src.js +1 -1
  683. package/indicators/macd.js +1 -1
  684. package/indicators/macd.src.js +1 -1
  685. package/indicators/mfi.js +1 -1
  686. package/indicators/mfi.src.js +1 -1
  687. package/indicators/momentum.js +1 -1
  688. package/indicators/momentum.src.js +1 -1
  689. package/indicators/natr.js +1 -1
  690. package/indicators/natr.src.js +1 -1
  691. package/indicators/obv.js +1 -1
  692. package/indicators/obv.src.js +1 -1
  693. package/indicators/pivot-points.js +1 -1
  694. package/indicators/pivot-points.src.js +1 -1
  695. package/indicators/ppo.js +1 -1
  696. package/indicators/ppo.src.js +1 -1
  697. package/indicators/price-channel.js +1 -1
  698. package/indicators/price-channel.src.js +1 -1
  699. package/indicators/price-envelopes.js +1 -1
  700. package/indicators/price-envelopes.src.js +1 -1
  701. package/indicators/psar.js +1 -1
  702. package/indicators/psar.src.js +1 -1
  703. package/indicators/regressions.js +1 -1
  704. package/indicators/regressions.src.js +1 -1
  705. package/indicators/roc.js +1 -1
  706. package/indicators/roc.src.js +1 -1
  707. package/indicators/rsi.js +1 -1
  708. package/indicators/rsi.src.js +2 -2
  709. package/indicators/slow-stochastic.js +1 -1
  710. package/indicators/slow-stochastic.src.js +1 -1
  711. package/indicators/stochastic.js +1 -1
  712. package/indicators/stochastic.src.js +1 -1
  713. package/indicators/supertrend.js +1 -1
  714. package/indicators/supertrend.src.js +1 -1
  715. package/indicators/tema.js +1 -1
  716. package/indicators/tema.src.js +1 -1
  717. package/indicators/trendline.js +1 -1
  718. package/indicators/trendline.src.js +1 -1
  719. package/indicators/trix.js +1 -1
  720. package/indicators/trix.src.js +1 -1
  721. package/indicators/volume-by-price.js +1 -1
  722. package/indicators/volume-by-price.src.js +1 -1
  723. package/indicators/vwap.js +1 -1
  724. package/indicators/vwap.src.js +1 -1
  725. package/indicators/williams-r.js +1 -1
  726. package/indicators/williams-r.src.js +1 -1
  727. package/indicators/wma.js +1 -1
  728. package/indicators/wma.src.js +1 -1
  729. package/indicators/zigzag.js +1 -1
  730. package/indicators/zigzag.src.js +1 -1
  731. package/modules/accessibility.js +2 -2
  732. package/modules/accessibility.src.js +69 -63
  733. package/modules/annotations-advanced.js +3 -3
  734. package/modules/annotations-advanced.src.js +25 -23
  735. package/modules/annotations.js +3 -3
  736. package/modules/annotations.src.js +21 -19
  737. package/modules/arc-diagram.js +2 -2
  738. package/modules/arc-diagram.src.js +16 -15
  739. package/modules/arrow-symbols.js +1 -1
  740. package/modules/arrow-symbols.src.js +1 -1
  741. package/modules/boost-canvas.js +2 -2
  742. package/modules/boost-canvas.src.js +29 -20
  743. package/modules/boost.js +2 -2
  744. package/modules/boost.src.js +28 -19
  745. package/modules/broken-axis.js +2 -2
  746. package/modules/broken-axis.src.js +6 -5
  747. package/modules/bullet.js +2 -2
  748. package/modules/bullet.src.js +17 -10
  749. package/modules/coloraxis.js +2 -2
  750. package/modules/coloraxis.src.js +18 -11
  751. package/modules/contour.js +4 -4
  752. package/modules/contour.src.js +19 -12
  753. package/modules/current-date-indicator.js +1 -1
  754. package/modules/current-date-indicator.src.js +1 -1
  755. package/modules/cylinder.js +2 -2
  756. package/modules/cylinder.src.js +9 -10
  757. package/modules/data-sorting.js +1 -1
  758. package/modules/data-sorting.src.js +1 -1
  759. package/modules/data-tools.js +2 -2
  760. package/modules/data-tools.src.js +20 -3
  761. package/modules/data.js +1 -1
  762. package/modules/data.src.js +1 -1
  763. package/modules/datagrouping.js +2 -2
  764. package/modules/datagrouping.src.js +6 -5
  765. package/modules/debugger.js +1 -1
  766. package/modules/debugger.src.js +1 -1
  767. package/modules/dependency-wheel.js +1 -1
  768. package/modules/dependency-wheel.src.js +1 -1
  769. package/modules/dotplot.js +2 -2
  770. package/modules/dotplot.src.js +3 -2
  771. package/modules/drag-panes.js +1 -1
  772. package/modules/drag-panes.src.js +1 -1
  773. package/modules/draggable-points.js +2 -2
  774. package/modules/draggable-points.src.js +2 -3
  775. package/modules/drilldown.js +2 -2
  776. package/modules/drilldown.src.js +5 -4
  777. package/modules/dumbbell.js +2 -2
  778. package/modules/dumbbell.src.js +37 -9
  779. package/modules/export-data.js +2 -2
  780. package/modules/export-data.src.js +17 -16
  781. package/modules/exporting.js +2 -2
  782. package/modules/exporting.src.js +7 -7
  783. package/modules/flowmap.js +2 -2
  784. package/modules/flowmap.src.js +21 -11
  785. package/modules/full-screen.js +1 -1
  786. package/modules/full-screen.src.js +1 -1
  787. package/modules/funnel.js +2 -2
  788. package/modules/funnel.src.js +2 -2
  789. package/modules/funnel3d.js +2 -2
  790. package/modules/funnel3d.src.js +14 -13
  791. package/modules/gantt.js +6 -6
  792. package/modules/gantt.src.js +96 -79
  793. package/modules/geoheatmap.d.ts +0 -12
  794. package/modules/geoheatmap.js +2 -2
  795. package/modules/geoheatmap.src.d.ts +0 -12
  796. package/modules/geoheatmap.src.js +8 -8
  797. package/modules/grid-axis.js +2 -2
  798. package/modules/grid-axis.src.js +4 -4
  799. package/modules/heatmap.d.ts +0 -12
  800. package/modules/heatmap.js +4 -4
  801. package/modules/heatmap.src.d.ts +0 -12
  802. package/modules/heatmap.src.js +40 -33
  803. package/modules/heikinashi.js +1 -1
  804. package/modules/heikinashi.src.js +1 -1
  805. package/modules/histogram-bellcurve.js +1 -1
  806. package/modules/histogram-bellcurve.src.js +15 -3
  807. package/modules/hollowcandlestick.js +1 -1
  808. package/modules/hollowcandlestick.src.js +1 -1
  809. package/modules/item-series.js +2 -2
  810. package/modules/item-series.src.js +18 -6
  811. package/modules/lollipop.js +1 -1
  812. package/modules/lollipop.src.js +1 -1
  813. package/modules/map.d.ts +0 -12
  814. package/modules/map.js +4 -4
  815. package/modules/map.src.d.ts +0 -12
  816. package/modules/map.src.js +83 -68
  817. package/modules/marker-clusters.js +1 -1
  818. package/modules/marker-clusters.src.js +1 -1
  819. package/modules/mouse-wheel-zoom.js +2 -2
  820. package/modules/mouse-wheel-zoom.src.js +3 -3
  821. package/modules/navigator.js +2 -2
  822. package/modules/navigator.src.js +47 -45
  823. package/modules/networkgraph.js +2 -2
  824. package/modules/networkgraph.src.js +31 -21
  825. package/modules/no-data-to-display.js +1 -1
  826. package/modules/no-data-to-display.src.js +1 -1
  827. package/modules/non-cartesian-zoom.js +1 -1
  828. package/modules/non-cartesian-zoom.src.js +1 -1
  829. package/modules/offline-exporting.js +1 -1
  830. package/modules/offline-exporting.src.js +1 -1
  831. package/modules/organization.js +2 -2
  832. package/modules/organization.src.js +3 -2
  833. package/modules/parallel-coordinates.js +2 -2
  834. package/modules/parallel-coordinates.src.js +2 -2
  835. package/modules/pareto.js +1 -1
  836. package/modules/pareto.src.js +1 -1
  837. package/modules/pathfinder.js +2 -2
  838. package/modules/pathfinder.src.js +7 -6
  839. package/modules/pattern-fill.js +2 -2
  840. package/modules/pattern-fill.src.js +7 -5
  841. package/modules/pictorial.js +2 -2
  842. package/modules/pictorial.src.js +10 -6
  843. package/modules/pointandfigure.js +1 -1
  844. package/modules/pointandfigure.src.js +1 -1
  845. package/modules/price-indicator.js +2 -2
  846. package/modules/price-indicator.src.js +5 -4
  847. package/modules/pyramid3d.js +1 -1
  848. package/modules/pyramid3d.src.js +1 -1
  849. package/modules/renko.js +1 -1
  850. package/modules/renko.src.js +1 -1
  851. package/modules/sankey.js +2 -2
  852. package/modules/sankey.src.js +34 -20
  853. package/modules/series-label.js +2 -2
  854. package/modules/series-label.src.js +7 -7
  855. package/modules/series-on-point.js +1 -1
  856. package/modules/series-on-point.src.js +1 -1
  857. package/modules/solid-gauge.js +2 -2
  858. package/modules/solid-gauge.src.js +2 -2
  859. package/modules/sonification.js +2 -2
  860. package/modules/sonification.src.js +19 -19
  861. package/modules/static-scale.js +1 -1
  862. package/modules/static-scale.src.js +1 -1
  863. package/modules/stock-tools.js +3 -3
  864. package/modules/stock-tools.src.js +15 -10
  865. package/modules/stock.js +6 -6
  866. package/modules/stock.src.js +105 -89
  867. package/modules/streamgraph.js +1 -1
  868. package/modules/streamgraph.src.js +1 -1
  869. package/modules/sunburst.js +2 -2
  870. package/modules/sunburst.src.js +41 -26
  871. package/modules/textpath.js +1 -1
  872. package/modules/textpath.src.js +1 -1
  873. package/modules/tiledwebmap.js +2 -2
  874. package/modules/tiledwebmap.src.js +8 -6
  875. package/modules/tilemap.js +2 -2
  876. package/modules/tilemap.src.js +3 -3
  877. package/modules/timeline.js +2 -2
  878. package/modules/timeline.src.js +5 -4
  879. package/modules/treegraph.js +2 -2
  880. package/modules/treegraph.src.js +17 -8
  881. package/modules/treegrid.js +2 -2
  882. package/modules/treegrid.src.js +28 -18
  883. package/modules/treemap.js +2 -2
  884. package/modules/treemap.src.js +35 -22
  885. package/modules/variable-pie.js +2 -2
  886. package/modules/variable-pie.src.js +6 -4
  887. package/modules/variwide.js +2 -2
  888. package/modules/variwide.src.js +2 -2
  889. package/modules/vector.js +1 -1
  890. package/modules/vector.src.js +1 -1
  891. package/modules/venn.js +1 -1
  892. package/modules/venn.src.js +1 -1
  893. package/modules/windbarb.js +2 -2
  894. package/modules/windbarb.src.js +2 -2
  895. package/modules/wordcloud.js +1 -1
  896. package/modules/wordcloud.src.js +1 -1
  897. package/modules/xrange.js +1 -1
  898. package/modules/xrange.src.js +1 -1
  899. package/package.json +2 -3
  900. package/standalone-navigator.js +4 -4
  901. package/standalone-navigator.src.js +355 -249
  902. package/themes/adaptive.js +1 -1
  903. package/themes/adaptive.src.js +1 -1
  904. package/themes/avocado.js +1 -1
  905. package/themes/avocado.src.js +1 -1
  906. package/themes/dark-unica.js +1 -1
  907. package/themes/dark-unica.src.js +1 -1
  908. package/themes/grid-light.js +1 -1
  909. package/themes/grid-light.src.js +1 -1
  910. package/themes/high-contrast.js +1 -1
  911. package/themes/high-contrast.src.js +1 -1
  912. package/themes/sand-signika.js +1 -1
  913. package/themes/sand-signika.src.js +1 -1
  914. package/themes/sunset.js +1 -1
  915. package/themes/sunset.src.js +1 -1
package/highstock.src.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: LicenseRef-Highcharts
2
2
  /**
3
- * @license Highcharts Stock v13.0.1 (2026-08-17)
3
+ * @license Highcharts Stock v13.0.2 (2026-08-27)
4
4
  * @module highcharts/highstock
5
5
  *
6
6
  * (c) 2009-2026 Highsoft AS
@@ -93,7 +93,7 @@ var Globals;
93
93
  * Constants
94
94
  *
95
95
  * */
96
- Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '13.0.1', 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' ?
97
97
  window :
98
98
  {}), // eslint-disable-line node/no-unsupported-features/es-builtins
99
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 = [
@@ -420,6 +420,29 @@ const ChartDefaults = {
420
420
  * @context Highcharts.Chart
421
421
  * @apioption chart.events.load
422
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
+ */
423
446
  /**
424
447
  * Fires when the chart is redrawn, either after a call to
425
448
  * `chart.redraw()` or after an axis, series or point is modified with
@@ -2434,7 +2457,7 @@ function getStyle(el, prop, toInt) {
2434
2457
  const css = win.getComputedStyle(el, void 0); // eslint-disable-line no-undefined
2435
2458
  if (css) {
2436
2459
  style = css.getPropertyValue(prop);
2437
- if (pick(toInt, prop !== 'opacity')) {
2460
+ if (toInt ?? prop !== 'opacity') {
2438
2461
  style = pInt(style);
2439
2462
  }
2440
2463
  }
@@ -2684,7 +2707,7 @@ function merge(extendOrSource, ...sources) {
2684
2707
  function normalizeTickInterval(interval, multiples, magnitude, allowDecimals, hasTickAmount) {
2685
2708
  let i, retInterval = interval;
2686
2709
  // Round to a tenfold of 1, 2, 2.5 or 5
2687
- magnitude = pick(magnitude, getMagnitude(interval));
2710
+ magnitude = (magnitude ?? getMagnitude(interval));
2688
2711
  const normalized = interval / magnitude;
2689
2712
  // Multiples for a linear scale
2690
2713
  if (!multiples) {
@@ -2797,20 +2820,22 @@ function pad(number, length, padder) {
2797
2820
  .replace('-', '')
2798
2821
  .length).join(padder || '0') + number;
2799
2822
  }
2800
- /* eslint-disable jsdoc/check-param-names */
2823
+ /* eslint-disable valid-jsdoc */
2801
2824
  /**
2802
2825
  * Return the first value that is not null or undefined.
2803
2826
  *
2827
+ * @deprecated 13.0.2
2828
+ * Use nullish coalescing (`??`) or explicit fallback logic instead.
2829
+ *
2804
2830
  * @function Highcharts.pick<T>
2805
2831
  *
2806
- * @param {...Array<T|null|undefined>} items
2832
+ * @param {...(T|null|undefined)} args
2807
2833
  * Variable number of arguments to inspect.
2808
2834
  *
2809
2835
  * @return {T}
2810
2836
  * The value of the first argument that is not null or undefined.
2811
2837
  */
2812
- function pick() {
2813
- const args = arguments;
2838
+ function pick(...args) {
2814
2839
  const length = args.length;
2815
2840
  for (let i = 0; i < length; i++) {
2816
2841
  const arg = args[i];
@@ -2819,7 +2844,7 @@ function pick() {
2819
2844
  }
2820
2845
  }
2821
2846
  }
2822
- /* eslint-enable jsdoc/check-param-names */
2847
+ /* eslint-enable valid-jsdoc */
2823
2848
  /**
2824
2849
  * Shortcut for parseInt
2825
2850
  *
@@ -3202,7 +3227,8 @@ function insertItem(item, collection) {
3202
3227
  !collection[i] ||
3203
3228
  // Handle index option, the element to insert has lower index
3204
3229
  (isNumber(indexOption) &&
3205
- indexOption < pick(collection[i].options.index, collection[i]._i)) ||
3230
+ indexOption < (collection[i].options.index ??
3231
+ collection[i]._i)) ||
3206
3232
  // Insert the new item before other internal items
3207
3233
  // (navigator)
3208
3234
  collection[i].options.isInternal) {
@@ -3288,7 +3314,7 @@ const uniqueKey = (function () {
3288
3314
  * State of the serial mode.
3289
3315
  */
3290
3316
  function useSerialIds(mode) {
3291
- return (serialMode = pick(mode, serialMode));
3317
+ return (serialMode = (mode ?? serialMode));
3292
3318
  }
3293
3319
  /* *
3294
3320
  *
@@ -3754,6 +3780,10 @@ const isDateTimeFormatOptions = (obj) => obj.main === void 0;
3754
3780
  *
3755
3781
  * @param {Highcharts.TimeOptions} [options] Time options as defined in
3756
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.
3757
3787
  */
3758
3788
  class TimeBase {
3759
3789
  /* *
@@ -3772,8 +3802,8 @@ class TimeBase {
3772
3802
  };
3773
3803
  this.variableTimezone = false;
3774
3804
  this.Date = TimeBase_win.Date;
3775
- this.update(options);
3776
3805
  this.lang = lang;
3806
+ this.update(options);
3777
3807
  }
3778
3808
  /* *
3779
3809
  *
@@ -3885,7 +3915,9 @@ class TimeBase {
3885
3915
  /**
3886
3916
  * Shorthand to get a cached `Intl.DateTimeFormat` instance.
3887
3917
  */
3888
- dateTimeFormat(options, timestamp, locale = this.options.locale || pageLang) {
3918
+ dateTimeFormat(options, timestamp, locale = (this.options.locale ||
3919
+ this.lang?.locale ||
3920
+ pageLang)) {
3889
3921
  const cacheKey = JSON.stringify(options) + locale;
3890
3922
  if (isString(options)) {
3891
3923
  options = this.str2dtf(options);
@@ -7825,6 +7857,41 @@ const DefaultOptions = {
7825
7857
  * @param {global.Event} event
7826
7858
  * The event that occurred.
7827
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
+ */
7828
7895
  /**
7829
7896
  * Fires when the chart is redrawn, either after a call to `chart.redraw()` or
7830
7897
  * after an axis, series or point is modified with the `redraw` option set to
@@ -8200,7 +8267,9 @@ Color.None = new Color(''); // Must be last static for init
8200
8267
  */
8201
8268
  /**
8202
8269
  * A valid color type than can be parsed and handled by Highcharts. It can be a
8203
- * 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).
8204
8273
  *
8205
8274
  * @typedef {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject} Highcharts.ColorType
8206
8275
  */
@@ -8743,7 +8812,8 @@ Fx.timers = [];
8743
8812
  * so it should be moved to the SVGRenderer.
8744
8813
  */
8745
8814
  function setAnimation(animation, chart) {
8746
- chart.renderer.globalAnimation = pick(animation, chart.options.chart.animation, true);
8815
+ chart.renderer.globalAnimation =
8816
+ animation ?? chart.options.chart.animation ?? true;
8747
8817
  }
8748
8818
  /**
8749
8819
  * Get the animation in object form, where a disabled animation is always
@@ -9806,7 +9876,7 @@ function format(str = '', ctx, owner) {
9806
9876
  replacement = `"${replacement}"`;
9807
9877
  }
9808
9878
  }
9809
- str = str.replace(match.find, pick(replacement, ''));
9879
+ str = str.replace(match.find, (replacement ?? ''));
9810
9880
  });
9811
9881
  return hasSub ? format(str, ctx, owner) : str;
9812
9882
  }
@@ -10055,7 +10125,7 @@ var RendererUtilities;
10055
10125
  boxes = boxes.map((box) => ({
10056
10126
  size: box.size,
10057
10127
  targets: [box.target],
10058
- align: pick(box.align, 0.5)
10128
+ align: (box.align ?? 0.5)
10059
10129
  }));
10060
10130
  while (overlapping) {
10061
10131
  // Initial positions: target centered in box
@@ -10213,8 +10283,10 @@ class SVGElement {
10213
10283
  * Property value.
10214
10284
  */
10215
10285
  _defaultGetter(key) {
10216
- let ret = pick(this[key + 'Value'], // Align getter
10217
- 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);
10218
10290
  if (/^-?[\d\.]+$/.test(ret)) { // Is numerical
10219
10291
  ret = parseFloat(ret);
10220
10292
  }
@@ -10377,7 +10449,7 @@ class SVGElement {
10377
10449
  }
10378
10450
  alignTo = void 0; // Do not use the box
10379
10451
  }
10380
- const alignToBox = pick(alignTo, renderer[alignToKey], renderer),
10452
+ const alignToBox = alignTo ?? renderer[alignToKey] ?? renderer,
10381
10453
  // Default: left align
10382
10454
  x = (alignToBox.x || 0) + (alignOptions.x || 0) +
10383
10455
  ((alignToBox.width || 0) - (alignOptions.width || 0)) *
@@ -10437,7 +10509,7 @@ class SVGElement {
10437
10509
  * Returns the SVGElement for chaining.
10438
10510
  */
10439
10511
  animate(params, options, complete) {
10440
- const animOptions = animObject(pick(options, this.renderer.globalAnimation, true)), deferTime = animOptions.defer;
10512
+ const animOptions = animObject((options ?? this.renderer.globalAnimation ?? true)), deferTime = animOptions.defer;
10441
10513
  // When the page is hidden save resources in the background by not
10442
10514
  // running animation at all (#9749).
10443
10515
  if (SVGElement_doc.hidden) {
@@ -10929,7 +11001,7 @@ class SVGElement {
10929
11001
  .split(','); // Ending comma
10930
11002
  i = v.length;
10931
11003
  while (i--) {
10932
- v[i] = '' + (pInt(v[i]) * pick(strokeWidth, NaN));
11004
+ v[i] = '' + (pInt(v[i]) * (strokeWidth ?? NaN));
10933
11005
  }
10934
11006
  value = v.join(',').replace(/NaN/g, 'none'); // #3226
10935
11007
  this.element.setAttribute('stroke-dasharray', value);
@@ -11069,7 +11141,7 @@ class SVGElement {
11069
11141
  * The bounding box with `x`, `y`, `width` and `height` properties.
11070
11142
  */
11071
11143
  getBBox(reload, rot) {
11072
- 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 &&
11073
11145
  SVGElement.prototype.getStyle.call(element, 'font-size')) : (styles.fontSize), cacheKey = this.getBBoxCacheKey([
11074
11146
  renderer.rootFontSize,
11075
11147
  this.textWidth, // #7874, also useHTML
@@ -11595,7 +11667,7 @@ class SVGElement {
11595
11667
  symbolAttr(hash) {
11596
11668
  const wrapper = this;
11597
11669
  SVGElement.symbolCustomAttribs.forEach(function (key) {
11598
- wrapper[key] = pick(hash[key], wrapper[key]);
11670
+ wrapper[key] = (hash[key] ?? wrapper[key]);
11599
11671
  });
11600
11672
  wrapper.attr({
11601
11673
  d: wrapper.renderer.symbols[wrapper.symbolName](wrapper.x, wrapper.y, wrapper.width, wrapper.height, wrapper)
@@ -11635,7 +11707,7 @@ class SVGElement {
11635
11707
  }
11636
11708
  // Replace text content and escape markup
11637
11709
  titleNode.textContent = replaceNested(// Scan #[73]
11638
- pick(value, ''), // #3276, #3895
11710
+ (value ?? ''), // #3276, #3895
11639
11711
  [/<[^>]*>/g, '']).replace(/&lt;/g, '<').replace(/&gt;/g, '>');
11640
11712
  }
11641
11713
  /**
@@ -12413,7 +12485,7 @@ class SVGLabel extends SVG_SVGElement {
12413
12485
  if ((this.textStr && this.bBox.width === 0 && this.bBox.height === 0) || this.rotation) {
12414
12486
  this.updateBoxSize();
12415
12487
  }
12416
- 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);
12417
12489
  let bBox = {
12418
12490
  width,
12419
12491
  height,
@@ -12466,7 +12538,7 @@ class SVGLabel extends SVG_SVGElement {
12466
12538
  this.attr({
12467
12539
  // Alignment is available now (#3295, 0 not rendered if given
12468
12540
  // as a value)
12469
- text: pick(this.textStr, ''),
12541
+ text: (this.textStr ?? ''),
12470
12542
  x: this.x || 0,
12471
12543
  y: this.y || 0
12472
12544
  });
@@ -12622,8 +12694,8 @@ class SVGLabel extends SVG_SVGElement {
12622
12694
  /** @internal */
12623
12695
  getPaddedWidth() {
12624
12696
  const padding = this.padding;
12625
- const paddingLeft = pick(this.paddingLeft, padding);
12626
- const paddingRight = pick(this.paddingRight, padding);
12697
+ const paddingLeft = (this.paddingLeft ?? padding);
12698
+ const paddingRight = (this.paddingRight ?? padding);
12627
12699
  return ((this.widthSetting || this.bBox.width || 0) +
12628
12700
  paddingLeft +
12629
12701
  paddingRight);
@@ -12724,7 +12796,7 @@ function arc(cx, cy, w, h, options) {
12724
12796
  const arc = [];
12725
12797
  if (options) {
12726
12798
  let start = options.start || 0, end = options.end || 0;
12727
- const rx = pick(options.r, w), ry = pick(options.r, h || w),
12799
+ const rx = (options.r ?? w), ry = (options.r ?? (h || w)),
12728
12800
  // Subtract a small number to prevent cos and sin of start and end
12729
12801
  // from becoming equal on 360 arcs (#1561). See "Arc proximity"
12730
12802
  // tests at samples/unit-tests/svgrenderer/symbol/demo.js
@@ -12734,16 +12806,17 @@ function arc(cx, cy, w, h, options) {
12734
12806
  start = Math.PI / 2;
12735
12807
  end = Math.PI * 2.5 - proximity;
12736
12808
  }
12737
- 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),
12738
12810
  // Proximity takes care of rounding errors around PI (#6971)
12739
- longArc = pick(options.longArc, end - start - Math.PI < proximity ? 0 : 1);
12811
+ longArc = options.longArc ??
12812
+ (end - start - Math.PI < proximity ? 0 : 1);
12740
12813
  let arcSegment = [
12741
12814
  'A', // ArcTo
12742
12815
  rx, // X radius
12743
12816
  ry, // Y radius
12744
12817
  0, // Slanting
12745
12818
  longArc, // Long or short arc
12746
- pick(options.clockwise, 1), // Clockwise
12819
+ (options.clockwise ?? 1), // Clockwise
12747
12820
  // Use a static pixel offset for full circle (#21701)
12748
12821
  cx + (fullCircle ? 0.001 : rx * cosEnd),
12749
12822
  cy + ry * sinEnd
@@ -13274,7 +13347,7 @@ class TextBuilder {
13274
13347
  * @internal
13275
13348
  */
13276
13349
  buildSVG() {
13277
- 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,
13278
13351
  // The buildText code is quite heavy, so if we're not changing
13279
13352
  // something that affects the text, skip it (#6113).
13280
13353
  textCache = [
@@ -13858,7 +13931,7 @@ class SVGRenderer {
13858
13931
  this.url = this.getReferenceURL();
13859
13932
  // Add description
13860
13933
  const desc = this.createElement('desc').add();
13861
- desc.element.appendChild(SVGRenderer_doc.createTextNode('Created with Highcharts 13.0.1'));
13934
+ desc.element.appendChild(SVGRenderer_doc.createTextNode('Created with Highcharts 13.0.2'));
13862
13935
  this.defs = this.createElement('defs').add();
13863
13936
  this.allowHTML = allowHTML;
13864
13937
  this.forExport = forExport;
@@ -14644,7 +14717,7 @@ class SVGRenderer {
14644
14717
  this.attr('height')
14645
14718
  });
14646
14719
  },
14647
- duration: pick(animate, true) ? void 0 : 0
14720
+ duration: (animate ?? true) ? void 0 : 0
14648
14721
  });
14649
14722
  renderer.alignElements();
14650
14723
  }
@@ -14802,8 +14875,8 @@ class SVGRenderer {
14802
14875
  // The image width is not always the same as the symbol width. The
14803
14876
  // image may be centered within the symbol, as is the case when
14804
14877
  // image shapes are used as label backgrounds, for example in flags.
14805
- img.imgwidth = pick(options?.width, symbolSizes[imageSrc]?.width);
14806
- img.imgheight = pick(options?.height, symbolSizes[imageSrc]?.height);
14878
+ img.imgwidth = (options?.width ?? symbolSizes[imageSrc]?.width);
14879
+ img.imgheight = (options?.height ?? symbolSizes[imageSrc]?.height);
14807
14880
  /**
14808
14881
  * Set the size and position
14809
14882
  */
@@ -19282,11 +19355,11 @@ class Tick {
19282
19355
  * @function Highcharts.Tick#addLabel
19283
19356
  */
19284
19357
  addLabel() {
19285
- 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;
19286
19359
  let label = tick.label, dateTimeLabelFormat, dateTimeLabelFormats, i;
19287
19360
  // The context value
19288
19361
  let value = this.parameters.category || (categories ?
19289
- pick(categories[pos], names[pos], pos) :
19362
+ (categories[pos] ?? names[pos] ?? pos) :
19290
19363
  pos);
19291
19364
  if (log && isNumber(value)) {
19292
19365
  value = correctFloat(log.lin2log(value));
@@ -19533,7 +19606,7 @@ class Tick {
19533
19606
  labelOptions.y;
19534
19607
  }
19535
19608
  x = x +
19536
- pick(labelOptions.x, [0, 1, 0, -1][axis.side] * distance) +
19609
+ (labelOptions.x ?? [0, 1, 0, -1][axis.side] * distance) +
19537
19610
  labelOffsetCorrection +
19538
19611
  rotCorr.x -
19539
19612
  (tickmarkOffset && horiz ?
@@ -19588,7 +19661,7 @@ class Tick {
19588
19661
  * @function Highcharts.Tick#handleOverflow
19589
19662
  */
19590
19663
  handleOverflow(xy) {
19591
- 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 = {};
19592
19665
  let modifiedSlotWidth = slotWidth, goRight = 1, leftPos, rightPos, textWidth;
19593
19666
  // Check if the label overshoots the chart spacing box. If it does, move
19594
19667
  // it. If it now overshoots the slotWidth, add ellipsis.
@@ -19655,9 +19728,8 @@ class Tick {
19655
19728
  * @param {number} [opacity]
19656
19729
  */
19657
19730
  render(index, old, opacity) {
19658
- 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;
19659
- const labelOpacity = pick(opacity, tick.label?.newOpacity, // #15528
19660
- 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);
19661
19733
  // Anything that is not between `axis.pos` and `axis.pos + axis.length`
19662
19734
  // should not be visible (#20166). The `correctFloat` is for reversed
19663
19735
  // axes in Safari.
@@ -19685,7 +19757,7 @@ class Tick {
19685
19757
  * @param {number} opacity The opacity of the grid line
19686
19758
  */
19687
19759
  renderGridLine(old, opacity) {
19688
- 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;
19689
19761
  let gridLine = tick.gridLine, gridLinePath, gridLineWidth = options.gridLineWidth, gridLineColor = options.gridLineColor, dashStyle = options.gridLineDashStyle;
19690
19762
  if (tick.type === 'minor') {
19691
19763
  gridLineWidth = options.minorGridLineWidth;
@@ -19741,7 +19813,7 @@ class Tick {
19741
19813
  * @param {number} opacity The opacity of the mark
19742
19814
  */
19743
19815
  renderMark(xy, opacity) {
19744
- 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
19745
19817
  tickColor = options[type !== 'minor' ? 'tickColor' : 'minorTickColor'];
19746
19818
  let mark = tick.mark;
19747
19819
  const isNewMark = !mark;
@@ -19786,7 +19858,7 @@ class Tick {
19786
19858
  * @param {number} index The index of the tick
19787
19859
  */
19788
19860
  renderLabel(xy, old, opacity, index) {
19789
- 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;
19790
19862
  let show = true;
19791
19863
  if (label && isNumber(x)) {
19792
19864
  label.xy = xy = tick.getLabelPosition(x, y, label, horiz, labelOptions, tickmarkOffset, index, step);
@@ -19891,12 +19963,7 @@ const { deg2rad: Axis_deg2rad } = Core_Globals;
19891
19963
 
19892
19964
 
19893
19965
 
19894
- const getNormalizedTickInterval = (axis, tickInterval) => normalizeTickInterval(tickInterval, void 0, void 0, pick(axis.options.allowDecimals,
19895
- // If the tick interval is greater than 0.5, avoid decimals, as
19896
- // linear axes are often used to render discrete values (#3363). If
19897
- // a tick amount is set, allow decimals by default, as it increases
19898
- // the chances for a good fit.
19899
- 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);
19900
19967
  extend(Axis_defaultOptions, { xAxis, yAxis: merge(xAxis, yAxis) });
19901
19968
  /* *
19902
19969
  *
@@ -20004,7 +20071,7 @@ class Axis {
20004
20071
  axis.coll = coll;
20005
20072
  fireEvent(this, 'init', { userOptions: userOptions });
20006
20073
  // Needed in setOptions
20007
- axis.opposite = pick(userOptions.opposite, axis.opposite);
20074
+ axis.opposite = (userOptions.opposite ?? axis.opposite);
20008
20075
  /**
20009
20076
  * The side on which the axis is rendered. 0 is top, 1 is right, 2
20010
20077
  * is bottom and 3 is left.
@@ -20012,10 +20079,9 @@ class Axis {
20012
20079
  * @name Highcharts.Axis#side
20013
20080
  * @type {number}
20014
20081
  */
20015
- axis.side = pick(userOptions.side, axis.side, (horiz ?
20082
+ axis.side = (userOptions.side ?? axis.side ?? (horiz ?
20016
20083
  (axis.opposite ? 0 : 2) : // Top : bottom
20017
- (axis.opposite ? 1 : 3)) // Right : left
20018
- );
20084
+ (axis.opposite ? 1 : 3)));
20019
20085
  /**
20020
20086
  * Current options for the axis after merge of defaults and user's
20021
20087
  * options.
@@ -20044,7 +20110,7 @@ class Axis {
20044
20110
  * @name Highcharts.Axis#reversed
20045
20111
  * @type {boolean}
20046
20112
  */
20047
- axis.reversed = pick(options.reversed, axis.reversed);
20113
+ axis.reversed = (options.reversed ?? axis.reversed);
20048
20114
  axis.visible = options.visible;
20049
20115
  axis.zoomEnabled = options.zoomEnabled;
20050
20116
  // Initial categories
@@ -20132,7 +20198,7 @@ class Axis {
20132
20198
  * @name Highcharts.Axis#crosshair
20133
20199
  * @type {boolean|Highcharts.AxisCrosshairOptions}
20134
20200
  */
20135
- 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];
20136
20202
  axis.crosshair = crosshair === true ? {} : crosshair;
20137
20203
  // Register. Don't add it again on Axis.update().
20138
20204
  if (chart.axes.indexOf(axis) === -1) { //
@@ -20316,8 +20382,8 @@ class Axis {
20316
20382
  seriesDataMax = xExtremes.max;
20317
20383
  }
20318
20384
  if (xData.length) {
20319
- axis.dataMin = Math.min(pick(axis.dataMin, seriesDataMin), seriesDataMin);
20320
- 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);
20321
20387
  }
20322
20388
  }
20323
20389
  // Get dataMin and dataMax for Y axes, as well as handle
@@ -20332,11 +20398,11 @@ class Axis {
20332
20398
  // doesn't have active y data, we continue with nulls
20333
20399
  if (isNumber(dataExtremes.dataMin)) {
20334
20400
  seriesDataMin = dataExtremes.dataMin;
20335
- axis.dataMin = Math.min(pick(axis.dataMin, seriesDataMin), seriesDataMin);
20401
+ axis.dataMin = Math.min((axis.dataMin ?? seriesDataMin), seriesDataMin);
20336
20402
  }
20337
20403
  if (isNumber(dataExtremes.dataMax)) {
20338
20404
  seriesDataMax = dataExtremes.dataMax;
20339
- axis.dataMax = Math.max(pick(axis.dataMax, seriesDataMax), seriesDataMax);
20405
+ axis.dataMax = Math.max((axis.dataMax ?? seriesDataMax), seriesDataMax);
20340
20406
  }
20341
20407
  // Adjust to threshold
20342
20408
  if (defined(threshold)) {
@@ -20491,7 +20557,7 @@ class Axis {
20491
20557
  translatedValue
20492
20558
  };
20493
20559
  fireEvent(this, 'getPlotLinePath', evt, function (e) {
20494
- translatedValue = pick(translatedValue, axis.translate(value, void 0, void 0, old));
20560
+ translatedValue = translatedValue ?? axis.translate(value, void 0, void 0, old);
20495
20561
  // Keep the translated value within sane bounds, and avoid Infinity
20496
20562
  // to fail the isNumber test (#7709).
20497
20563
  translatedValue = clamp(translatedValue, -1e9, 1e9);
@@ -20580,7 +20646,7 @@ class Axis {
20580
20646
  getMinorTickInterval() {
20581
20647
  const { minorTicks, minorTickInterval } = this.options;
20582
20648
  if (minorTicks === true) {
20583
- return pick(minorTickInterval, 'auto');
20649
+ return (minorTickInterval ?? 'auto');
20584
20650
  }
20585
20651
  if (minorTicks === false) {
20586
20652
  return;
@@ -20863,7 +20929,9 @@ class Axis {
20863
20929
  const seriesPointRange = hasCategories ?
20864
20930
  1 :
20865
20931
  (isXAxis ?
20866
- pick(series.options.pointRange, closestPointRange, 0) :
20932
+ (series.options.pointRange ??
20933
+ closestPointRange ??
20934
+ 0) :
20867
20935
  (axis.axisPointRange || 0)), // #2806
20868
20936
  pointPlacement = series.options.pointPlacement;
20869
20937
  pointRange = Math.max(pointRange, seriesPointRange);
@@ -20947,14 +21015,16 @@ class Axis {
20947
21015
  this.getTickAmount();
20948
21016
  }
20949
21017
  // Min or max set either by zooming/setExtremes or initial options
20950
- hardMin = pick(axis.userMin, time.parse(options.min));
20951
- hardMax = pick(axis.userMax, time.parse(options.max));
21018
+ hardMin = (axis.userMin ?? time.parse(options.min));
21019
+ hardMax = (axis.userMax ?? time.parse(options.max));
20952
21020
  // Linked axis gets the extremes from the parent axis
20953
21021
  if (linkedParent) {
20954
21022
  axis.linkedParent = linkedParent;
20955
21023
  linkedParentExtremes = linkedParent.getExtremes();
20956
- axis.min = pick(linkedParentExtremes.min, linkedParentExtremes.dataMin);
20957
- axis.max = pick(linkedParentExtremes.max, linkedParentExtremes.dataMax);
21024
+ axis.min =
21025
+ linkedParentExtremes.min ?? linkedParentExtremes.dataMin;
21026
+ axis.max =
21027
+ linkedParentExtremes.max ?? linkedParentExtremes.dataMax;
20958
21028
  if (this.type !== linkedParent.type) {
20959
21029
  // Can't link axes of different type
20960
21030
  error(11, true, chart);
@@ -20976,14 +21046,14 @@ class Axis {
20976
21046
  maxPadding = 0;
20977
21047
  }
20978
21048
  }
20979
- axis.min = pick(hardMin, thresholdMin, dataMin);
20980
- axis.max = pick(hardMax, thresholdMax, dataMax);
21049
+ axis.min = (hardMin ?? thresholdMin ?? dataMin);
21050
+ axis.max = (hardMax ?? thresholdMax ?? dataMax);
20981
21051
  }
20982
21052
  if (isNumber(axis.max) && isNumber(axis.min)) {
20983
21053
  if (logarithmic) {
20984
21054
  if (axis.positiveValuesOnly &&
20985
21055
  !secondPass &&
20986
- Math.min(axis.min, pick(dataMin, axis.min)) <= 0) { // #978
21056
+ Math.min(axis.min, (dataMin ?? axis.min)) <= 0) { // #978
20987
21057
  // Can't plot negative values on log axis
20988
21058
  error(10, true, chart);
20989
21059
  }
@@ -21089,16 +21159,13 @@ class Axis {
21089
21159
  axis.tickInterval = tickIntervalOption = linkedParent.tickInterval;
21090
21160
  }
21091
21161
  else {
21092
- axis.tickInterval = pick(tickIntervalOption, this.tickAmount ?
21162
+ axis.tickInterval = tickIntervalOption ?? (this.tickAmount ?
21093
21163
  range / Math.max(this.tickAmount - 1, 1) :
21094
- void 0,
21095
- // For categorized axis, 1 is default, for linear axis use
21096
- // tickPix
21097
- categories ?
21098
- 1 :
21099
- // Don't let it be more than the data range
21100
- range * tickPixelIntervalOption /
21101
- 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));
21102
21169
  }
21103
21170
  // Now we're finished detecting min and max, crop and group series data.
21104
21171
  // This is in turn needed in order to find tick positions in ordinal
@@ -21128,12 +21195,9 @@ class Axis {
21128
21195
  }
21129
21196
  // Before normalizing the tick interval, handle minimum tick interval.
21130
21197
  // This applies only if tickInterval is not defined.
21131
- const minTickInterval = pick(options.minTickInterval,
21132
- // In datetime axes, don't go below the data interval, except when
21133
- // there are scatter-like series involved (#13369).
21134
- dateTime &&
21135
- !axis.series.some((s) => !s.sorted) ?
21136
- axis.closestPointRange : 0);
21198
+ const minTickInterval = options.minTickInterval ?? (dateTime && !axis.series.some((s) => !s.sorted) ?
21199
+ axis.closestPointRange :
21200
+ 0);
21137
21201
  if (!tickIntervalOption &&
21138
21202
  minTickInterval &&
21139
21203
  axis.tickInterval < minTickInterval) {
@@ -21463,7 +21527,7 @@ class Axis {
21463
21527
  * @function Highcharts.Axis#adjustTickAmount
21464
21528
  */
21465
21529
  adjustTickAmount() {
21466
- 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);
21467
21531
  let len, i, tickInterval = axis.tickInterval, thresholdTickIndex;
21468
21532
  const
21469
21533
  // Extend the tickPositions by appending a position
@@ -21699,7 +21763,8 @@ class Axis {
21699
21763
  offsets = options.offsets || [0, 0, 0, 0], horiz = this.horiz,
21700
21764
  // Check for percentage based input values. Rounding fixes problems
21701
21765
  // with column overflow and plot line filtering (#4898, #4899)
21702
- 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));
21703
21768
  // Expose basic values to use in Series object and navigator
21704
21769
  this.bottom = chart.chartHeight - height - top;
21705
21770
  this.right = chart.chartWidth - width - left;
@@ -21810,9 +21875,7 @@ class Axis {
21810
21875
  * An array of tickLength and tickWidth
21811
21876
  */
21812
21877
  tickSize(prefix) {
21813
- const options = this.options, tickWidth = pick(options[prefix === 'tick' ? 'tickWidth' : 'minorTickWidth'],
21814
- // Default to 1 on linear and datetime X axes
21815
- 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);
21816
21879
  let tickLength = options[prefix === 'tick' ? 'tickLength' : 'minorTickLength'], tickSize;
21817
21880
  if (tickWidth && tickLength) {
21818
21881
  // Negate the length
@@ -21899,7 +21962,7 @@ class Axis {
21899
21962
  newTickInterval = getStep(lineHeight * 0.75);
21900
21963
  }
21901
21964
  this.autoRotation = autoRotation;
21902
- this.labelRotation = pick(rotation, isNumber(rotationOption) ? rotationOption : 0);
21965
+ this.labelRotation = rotation ?? (isNumber(rotationOption) ? rotationOption : 0);
21903
21966
  return labelOptions.step ? tickInterval : newTickInterval;
21904
21967
  }
21905
21968
  /**
@@ -22251,7 +22314,7 @@ class Axis {
22251
22314
  titleOffsetOption = axisTitleOptions.offset;
22252
22315
  titleMargin = defined(titleOffsetOption) ?
22253
22316
  0 :
22254
- pick(axisTitleOptions.margin, horiz ? 5 : 10);
22317
+ axisTitleOptions.margin ?? (horiz ? 5 : 10);
22255
22318
  }
22256
22319
  }
22257
22320
  // Render the axis line
@@ -22762,9 +22825,9 @@ class Axis {
22762
22825
  }
22763
22826
  else if (defined(point)) {
22764
22827
  // #3834
22765
- pos = pick(this.coll !== 'colorAxis' ?
22766
- point.crosshairPos : // 3D axis extension
22767
- null, this.isXAxis ?
22828
+ pos = (this.coll !== 'colorAxis' ?
22829
+ point.crosshairPos :
22830
+ null) ?? (this.isXAxis ?
22768
22831
  point.plotX :
22769
22832
  this.len - point.plotY);
22770
22833
  }
@@ -22773,7 +22836,7 @@ class Axis {
22773
22836
  // Value, only used on radial
22774
22837
  value: point && (this.isXAxis ?
22775
22838
  point.x :
22776
- pick(point.stackY, point.y)),
22839
+ (point.stackY ?? point.y ?? void 0)),
22777
22840
  translatedValue: pos
22778
22841
  };
22779
22842
  if (chart.polar) {
@@ -22806,7 +22869,7 @@ class Axis {
22806
22869
  (categorized ? 'category ' : 'thin ') +
22807
22870
  (options.className || ''))
22808
22871
  .attr({
22809
- zIndex: pick(options.zIndex, 2)
22872
+ zIndex: (options.zIndex ?? 2)
22810
22873
  })
22811
22874
  .clip(options.clip === false ?
22812
22875
  void 0 :
@@ -22821,7 +22884,7 @@ class Axis {
22821
22884
  // eslint-disable-next-line max-len
22822
22885
  'var(--highcharts-highlight-color-20)').setOpacity(0.25).get() :
22823
22886
  'var(--highcharts-neutral-color-20)'),
22824
- 'stroke-width': pick(options.width, 1)
22887
+ 'stroke-width': (options.width ?? 1)
22825
22888
  }).css({
22826
22889
  'pointer-events': 'none'
22827
22890
  });
@@ -22887,7 +22950,7 @@ class Axis {
22887
22950
  this.destroy(true);
22888
22951
  this.init(chart, options);
22889
22952
  chart.isDirtyBox = true;
22890
- if (pick(redraw, true)) {
22953
+ if (redraw ?? true) {
22891
22954
  chart.redraw();
22892
22955
  }
22893
22956
  }
@@ -22917,7 +22980,7 @@ class Axis {
22917
22980
  chart.orderItems(coll);
22918
22981
  this.destroy();
22919
22982
  chart.isDirtyBox = true;
22920
- if (pick(redraw, true)) {
22983
+ if (redraw ?? true) {
22921
22984
  chart.redraw();
22922
22985
  }
22923
22986
  }
@@ -23573,8 +23636,10 @@ var LogarithmicAxis;
23573
23636
  tickIntervalOption, tickPixelIntervalOption = options.tickPixelInterval / (minor ? 5 : 1), totalPixelLength = minor ?
23574
23637
  axisLength / axis.tickPositions.length :
23575
23638
  axisLength;
23576
- interval = pick(filteredTickIntervalOption, log.minorAutoInterval, (realMax - realMin) *
23577
- tickPixelIntervalOption / (totalPixelLength || 1));
23639
+ interval = filteredTickIntervalOption ??
23640
+ log.minorAutoInterval ??
23641
+ (realMax - realMin) * tickPixelIntervalOption /
23642
+ (totalPixelLength || 1);
23578
23643
  interval = normalizeTickInterval(interval);
23579
23644
  positions = axis.getLinearTickPositions(interval, realMin, realMax).map(log.log2lin);
23580
23645
  if (!minor) {
@@ -24003,7 +24068,8 @@ class PlotLineOrBand {
24003
24068
  if (!chart.styledMode) {
24004
24069
  if (isLine) {
24005
24070
  attribs.stroke = color || 'var(--highcharts-neutral-color-40)';
24006
- attribs['stroke-width'] = pick(options.width, 1);
24071
+ attribs['stroke-width'] =
24072
+ options.width ?? 1;
24007
24073
  if (options.dashStyle) {
24008
24074
  attribs.dashstyle = options.dashStyle;
24009
24075
  }
@@ -25135,7 +25201,8 @@ class Tooltip {
25135
25201
  'highcharts-label',
25136
25202
  isHeader && 'highcharts-tooltip-header',
25137
25203
  isSplit ? 'highcharts-tooltip-box' : 'highcharts-tooltip',
25138
- !isHeader && 'highcharts-color-' + pick(point.colorIndex, series.colorIndex),
25204
+ !isHeader &&
25205
+ 'highcharts-color-' + (point.colorIndex ?? series.colorIndex),
25139
25206
  seriesOptions?.className
25140
25207
  ].filter(isString).join(' ');
25141
25208
  }
@@ -25320,7 +25387,8 @@ class Tooltip {
25320
25387
  }
25321
25388
  // The far side is right or bottom
25322
25389
  const preferFarSide = !this.followPointer &&
25323
- pick(point.ttBelow, polar ? false : !inverted === flipped), // #4984
25390
+ (point.ttBelow ??
25391
+ (polar ? false : !inverted === flipped)), // #4984
25324
25392
  /*
25325
25393
  * Handle the preferred dimension. When the preferred dimension is
25326
25394
  * tooltip on top or bottom of the point, it will look for space
@@ -25447,7 +25515,7 @@ class Tooltip {
25447
25515
  const tooltip = this;
25448
25516
  // Disallow duplicate timers (#1728, #1766)
25449
25517
  clearTimeouts(this);
25450
- delay = pick(delay, this.options.hideDelay);
25518
+ delay = (delay ?? this.options.hideDelay);
25451
25519
  if (!this.isHidden) {
25452
25520
  this.hideTimer = syncTimeout(function () {
25453
25521
  const label = tooltip.getLabel();
@@ -25550,7 +25618,9 @@ class Tooltip {
25550
25618
  * Split tooltip does not support outside in the first iteration. Should
25551
25619
  * not be too complicated to implement.
25552
25620
  */
25553
- this.outside = pick(options.outside, Boolean(chart.scrollablePixelsX || chart.scrollablePixelsY));
25621
+ this.outside =
25622
+ options.outside ??
25623
+ Boolean(chart.scrollablePixelsX || chart.scrollablePixelsY);
25554
25624
  }
25555
25625
  shouldStickOnContact(pointerEvent) {
25556
25626
  return !!(!this.followPointer &&
@@ -25630,7 +25700,7 @@ class Tooltip {
25630
25700
  point.points = void 0;
25631
25701
  // Register the current series
25632
25702
  const currentSeries = point.series;
25633
- this.distance = pick(currentSeries.tooltipOptions.distance, 16);
25703
+ this.distance = (currentSeries.tooltipOptions.distance ?? 16);
25634
25704
  // Update the inner HTML
25635
25705
  if (text === false) {
25636
25706
  this.hide();
@@ -25903,7 +25973,7 @@ class Tooltip {
25903
25973
  anchorY,
25904
25974
  boxWidth,
25905
25975
  point,
25906
- rank: pick(boxPosition.rank, isHeader ? 1 : 0),
25976
+ rank: boxPosition.rank ?? (isHeader ? 1 : 0),
25907
25977
  size,
25908
25978
  target: boxPosition.y,
25909
25979
  tt,
@@ -27248,7 +27318,7 @@ class Point {
27248
27318
  */
27249
27319
  select(selected, accumulate) {
27250
27320
  const point = this, series = point.series, chart = series.chart;
27251
- selected = pick(selected, !point.selected);
27321
+ selected = (selected ?? !point.selected);
27252
27322
  this.selectedStaging = selected;
27253
27323
  // Fire the event with the default handler
27254
27324
  point.firePointEvent(selected ? 'select' : 'unselect', { accumulate: accumulate }, function () {
@@ -27499,7 +27569,7 @@ class Point {
27499
27569
  });
27500
27570
  halo.attr({
27501
27571
  'class': 'highcharts-halo highcharts-color-' +
27502
- pick(point.colorIndex, series.colorIndex) +
27572
+ (point.colorIndex ?? series.colorIndex) +
27503
27573
  (point.className ? ' ' + point.className : ''),
27504
27574
  'visibility': markerVisibility,
27505
27575
  'zIndex': -1 // #4929, #8276
@@ -28232,7 +28302,7 @@ class Pointer {
28232
28302
  const hoverPoints = [], useExisting = !!(isDirectTouch && existingHoverPoint), filter = function (s) {
28233
28303
  return (s.visible &&
28234
28304
  !(!shared && s.directTouch) && // #3821
28235
- pick(s.options.enableMouseTracking, true));
28305
+ (s.options.enableMouseTracking ?? true));
28236
28306
  };
28237
28307
  let hoverSeries = existingHoverSeries,
28238
28308
  // Which series to look in for the hover point
@@ -28418,8 +28488,8 @@ class Pointer {
28418
28488
  const ePos = (touches ?
28419
28489
  touches.length ?
28420
28490
  touches.item(0) :
28421
- (pick(// #13534
28422
- touches.changedTouches, e.changedTouches))[0] :
28491
+ (touches.changedTouches ??
28492
+ e.changedTouches)[0] :
28423
28493
  e);
28424
28494
  // Get mouse position
28425
28495
  if (!chartPosition) {
@@ -28493,7 +28563,7 @@ class Pointer {
28493
28563
  * @function Highcharts.Pointer#onContainerMouseLeave
28494
28564
  */
28495
28565
  onContainerMouseLeave(e) {
28496
- const { pointer } = Pointer_charts[pick(Pointer.hoverChartIndex, -1)] || {};
28566
+ const { pointer } = Pointer_charts[(Pointer.hoverChartIndex ?? -1)] || {};
28497
28567
  e = this.normalize(e);
28498
28568
  this.onContainerMouseMove(e);
28499
28569
  // #4886, MS Touch end fires mouseleave but with no related target
@@ -28593,7 +28663,7 @@ class Pointer {
28593
28663
  if (e?.touches && this.hasPinchMoved) {
28594
28664
  e?.preventDefault?.();
28595
28665
  }
28596
- Pointer_charts[pick(Pointer.hoverChartIndex, -1)]
28666
+ Pointer_charts[(Pointer.hoverChartIndex ?? -1)]
28597
28667
  ?.pointer
28598
28668
  ?.drop(e);
28599
28669
  }
@@ -29100,7 +29170,7 @@ class Pointer {
29100
29170
  */
29101
29171
  setHoverChartIndex(e) {
29102
29172
  const chart = this.chart;
29103
- const hoverChart = Core_Globals.charts[pick(Pointer.hoverChartIndex, -1)];
29173
+ const hoverChart = Core_Globals.charts[(Pointer.hoverChartIndex ?? -1)];
29104
29174
  if (hoverChart &&
29105
29175
  hoverChart !== chart) {
29106
29176
  const relatedTargetObj = { relatedTarget: chart.container };
@@ -29146,7 +29216,7 @@ class Pointer {
29146
29216
  Math.pow(pinchDown[0].chartY - e.chartY, 2)) >= 16 :
29147
29217
  false;
29148
29218
  }
29149
- if (pick(hasMoved, true)) {
29219
+ if (hasMoved ?? true) {
29150
29220
  this.pinch(e);
29151
29221
  }
29152
29222
  }
@@ -29189,7 +29259,7 @@ class Pointer {
29189
29259
  let zoomType = chart.zooming.type || '', zoomX, zoomY;
29190
29260
  // Look for the pinchType option
29191
29261
  if (/touch/.test(e.type)) {
29192
- zoomType = pick(chart.zooming.pinchType, zoomType);
29262
+ zoomType = (chart.zooming.pinchType ?? zoomType);
29193
29263
  }
29194
29264
  this.zoomX = zoomX = /x/.test(zoomType);
29195
29265
  this.zoomY = zoomY = /y/.test(zoomType);
@@ -29963,7 +30033,7 @@ var LegendSymbol;
29963
30033
  // Draw the marker
29964
30034
  if (markerOptions && markerOptions.enabled !== false && symbolWidth) {
29965
30035
  // Do not allow the marker to be larger than the symbolHeight
29966
- let radius = Math.min(pick(markerOptions.radius, generalRadius), generalRadius);
30036
+ let radius = Math.min((markerOptions.radius ?? generalRadius), generalRadius);
29967
30037
  // Restrict symbol markers size
29968
30038
  if (symbol.indexOf('url') === 0) {
29969
30039
  markerOptions = merge(markerOptions, {
@@ -32984,7 +33054,7 @@ class Series {
32984
33054
  if (chartSeries.length) {
32985
33055
  lastSeries = chartSeries[chartSeries.length - 1];
32986
33056
  }
32987
- series._i = pick(lastSeries?._i, -1) + 1;
33057
+ series._i = (lastSeries?._i ?? -1) + 1;
32988
33058
  series.opacity = series.options.opacity;
32989
33059
  // Insert the series and re-order all series above the insertion
32990
33060
  // point.
@@ -33031,7 +33101,7 @@ class Series {
33031
33101
  // Apply if the series xAxis or yAxis option matches
33032
33102
  // the number of the axis, or if undefined, use the
33033
33103
  // first axis
33034
- if (pick(seriesOptions[coll], 0) === axis.index ||
33104
+ if ((seriesOptions[coll] ?? 0) === axis.index ||
33035
33105
  (typeof seriesOptions[coll] !==
33036
33106
  'undefined' &&
33037
33107
  seriesOptions[coll] === axisOptions.id)) {
@@ -33074,8 +33144,12 @@ class Series {
33074
33144
  * @function Highcharts.Series#hasMarkerChanged
33075
33145
  */
33076
33146
  hasMarkerChanged(options, oldOptions) {
33077
- const marker = options.marker, oldMarker = oldOptions.marker || {};
33078
- 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) ||
33079
33153
  oldMarker.symbol !== marker.symbol || // #10870, #15946
33080
33154
  oldMarker.height !== marker.height || // #16274
33081
33155
  oldMarker.width !== marker.width // #16274
@@ -33094,7 +33168,8 @@ class Series {
33094
33168
  time.parse(options.pointStart) ??
33095
33169
  0;
33096
33170
  let pointInterval;
33097
- this.pointInterval = pointInterval = pick(this.pointInterval, options.pointInterval, 1);
33171
+ this.pointInterval = pointInterval =
33172
+ this.pointInterval ?? options.pointInterval ?? 1;
33098
33173
  if (relativeXValue && isNumber(x)) {
33099
33174
  pointInterval *= x;
33100
33175
  }
@@ -33166,9 +33241,13 @@ class Series {
33166
33241
  );
33167
33242
  // When shared tooltip, stickyTracking is true by default,
33168
33243
  // unless user says otherwise.
33169
- this.stickyTracking = pick(seriesUserOptions.stickyTracking, userPlotOptionsType.stickyTracking, userPlotOptionsSeries.stickyTracking, (this.tooltipOptions.shared && !this.noSharedTooltip ?
33170
- true :
33171
- 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);
33172
33251
  // Delete marker object if not allowed (#1125)
33173
33252
  if (typeOptions.marker === null) {
33174
33253
  delete options.marker;
@@ -33246,7 +33325,9 @@ class Series {
33246
33325
  if (!value) {
33247
33326
  // Pick up either the colorIndex option, or the series.colorIndex
33248
33327
  // after Series.update()
33249
- setting = pick(prop === 'color' ? this.options.colorIndex : void 0, this[indexName]);
33328
+ setting = prop === 'color' ?
33329
+ (this.options.colorIndex ?? this[indexName]) :
33330
+ this[indexName];
33250
33331
  if (defined(setting)) { // After Series.update()
33251
33332
  i = setting;
33252
33333
  }
@@ -34273,7 +34354,9 @@ class Series {
34273
34354
  yValue = stackValues[1];
34274
34355
  if (lowValue === stackThreshold &&
34275
34356
  stackIndicator.key === stacks[xValue].base) {
34276
- lowValue = pick(isNumber(threshold) ? threshold : yAxis.min);
34357
+ lowValue = isNumber(threshold) ?
34358
+ threshold :
34359
+ yAxis.min;
34277
34360
  }
34278
34361
  // #1200, #1232
34279
34362
  if (yAxis.positiveValuesOnly &&
@@ -34281,7 +34364,7 @@ class Series {
34281
34364
  lowValue <= 0) {
34282
34365
  lowValue = void 0;
34283
34366
  }
34284
- point.total = point.stackTotal = pick(stackItem.total);
34367
+ point.total = point.stackTotal = stackItem.total ?? void 0;
34285
34368
  point.percentage = defined(point.y) && stackItem.total ?
34286
34369
  (point.y / stackItem.total * 100) : void 0;
34287
34370
  point.stackY = yValue;
@@ -34531,7 +34614,9 @@ class Series {
34531
34614
  // Only draw the point if y is defined
34532
34615
  if (shouldDrawMarker) {
34533
34616
  // Shortcuts
34534
- const symbol = pick(pointMarkerOptions.symbol, series.symbol, 'rect');
34617
+ const symbol = pointMarkerOptions.symbol ??
34618
+ series.symbol ??
34619
+ 'rect';
34535
34620
  markerAttribs = series.markerAttribs(point, point.selected ? 'select' : '');
34536
34621
  const isInside = point.isInside !== false;
34537
34622
  if (!graphic &&
@@ -34799,7 +34884,7 @@ class Series {
34799
34884
  // Reset
34800
34885
  zones.forEach((zone) => {
34801
34886
  zone.lineClip = [];
34802
- 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);
34803
34888
  });
34804
34889
  // The use of the Color Threshold assumes there are no gaps so it is
34805
34890
  // safe to hide the original graph and area unless it is not
@@ -35455,7 +35540,7 @@ class Series {
35455
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');
35456
35541
  let isInTheMiddle, i;
35457
35542
  // Optional redraw, defaults to true
35458
- redraw = pick(redraw, true);
35543
+ redraw = (redraw ?? true);
35459
35544
  // Get options and push the point to xData, yData and series.options. In
35460
35545
  // series.generatePoints the Point instance will be created on demand
35461
35546
  // and pushed to the series.data array.
@@ -35566,7 +35651,7 @@ class Series {
35566
35651
  }
35567
35652
  };
35568
35653
  setAnimation(animation, chart);
35569
- redraw = pick(redraw, true);
35654
+ redraw = (redraw ?? true);
35570
35655
  // Fire the event with a default handler of removing the point
35571
35656
  if (point) {
35572
35657
  point.firePointEvent('remove', null, remove);
@@ -35609,7 +35694,7 @@ class Series {
35609
35694
  // Redraw
35610
35695
  chart.isDirtyLegend = chart.isDirtyBox = true;
35611
35696
  chart.linkSeries(keepEvents);
35612
- if (pick(redraw, true)) {
35697
+ if (redraw ?? true) {
35613
35698
  chart.redraw(animation);
35614
35699
  }
35615
35700
  }
@@ -35826,7 +35911,7 @@ class Series {
35826
35911
  series.isDirtyData = true;
35827
35912
  }
35828
35913
  fireEvent(this, 'afterUpdate');
35829
- if (pick(redraw, true)) {
35914
+ if (redraw ?? true) {
35830
35915
  chart.redraw(keepPoints ? void 0 : false);
35831
35916
  }
35832
35917
  }
@@ -35843,12 +35928,12 @@ class Series {
35843
35928
  * @internal
35844
35929
  */
35845
35930
  hasOptionChanged(optionName) {
35846
- 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]);
35847
35932
  // Check if `plotOptions` are defined already, #19203
35848
35933
  if (oldOption && !defined(plotOptionsOption)) {
35849
35934
  return option !== oldOption;
35850
35935
  }
35851
- return option !== pick(plotOptionsOption, option);
35936
+ return option !== (plotOptionsOption ?? option);
35852
35937
  }
35853
35938
  /**
35854
35939
  * Runs on mouse over the series graphical items.
@@ -35922,7 +36007,8 @@ class Series {
35922
36007
  const series = this, { graph, options } = series, { inactiveOtherPoints, states: stateOptions = {} } = options,
35923
36008
  // By default a quick animation to hover/inactive,
35924
36009
  // slower to un-hover
35925
- stateAnimation = pick(stateOptions[state || 'normal']?.animation, series.chart.options.chart.animation);
36010
+ stateAnimation = stateOptions[state || 'normal']?.animation ??
36011
+ series.chart.options.chart.animation;
35926
36012
  let { lineWidth, opacity } = options;
35927
36013
  state = state || '';
35928
36014
  if (series.state !== state) {
@@ -36808,7 +36894,7 @@ class Legend {
36808
36894
  * @param {Highcharts.LegendOptions} options
36809
36895
  */
36810
36896
  setOptions(options) {
36811
- const padding = pick(options.padding, 8);
36897
+ const padding = (options.padding ?? 8);
36812
36898
  /**
36813
36899
  * Legend options.
36814
36900
  *
@@ -36825,7 +36911,7 @@ class Legend {
36825
36911
  this.itemMarginBottom = options.itemMarginBottom;
36826
36912
  this.padding = padding;
36827
36913
  this.initialItemY = padding - 5; // 5 is pixels above the text
36828
- this.symbolWidth = pick(options.symbolWidth, 16);
36914
+ this.symbolWidth = (options.symbolWidth ?? 16);
36829
36915
  this.pages = [];
36830
36916
  this.proximate = options.layout === 'proximate' && !this.chart.inverted;
36831
36917
  // #12705: baseline has to be reset on every update
@@ -36859,7 +36945,7 @@ class Legend {
36859
36945
  }
36860
36946
  this.destroy();
36861
36947
  chart.isDirtyLegend = chart.isDirtyBox = true;
36862
- if (pick(redraw, true)) {
36948
+ if (redraw ?? true) {
36863
36949
  chart.redraw();
36864
36950
  }
36865
36951
  fireEvent(this, 'afterUpdate', { redraw });
@@ -37097,7 +37183,7 @@ class Legend {
37097
37183
  * The item to render.
37098
37184
  */
37099
37185
  renderItem(item) {
37100
- 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 ?
37101
37187
  item.series :
37102
37188
  item, seriesOptions = series.options, showCheckbox = (!!legend.createCheckboxForItem &&
37103
37189
  seriesOptions &&
@@ -37143,9 +37229,11 @@ class Legend {
37143
37229
  legend.fontMetrics.f + 3 + legend.itemMarginTop;
37144
37230
  label.attr('y', legend.baseline);
37145
37231
  legend.symbolHeight =
37146
- pick(options.symbolHeight, legend.fontMetrics.f);
37232
+ (options.symbolHeight ?? legend.fontMetrics.f);
37147
37233
  if (options.squareSymbol) {
37148
- legend.symbolWidth = pick(options.symbolWidth, Math.max(legend.symbolHeight, 16));
37234
+ legend.symbolWidth =
37235
+ options.symbolWidth ??
37236
+ Math.max(legend.symbolHeight, 16);
37149
37237
  itemExtraWidth = legend.symbolWidth + symbolPadding +
37150
37238
  itemDistance + (showCheckbox ? 20 : 0);
37151
37239
  if (ltr) {
@@ -37197,7 +37285,7 @@ class Legend {
37197
37285
  * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item
37198
37286
  */
37199
37287
  layoutItem(item) {
37200
- 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 &&
37201
37289
  this.totalItemWidth > maxLegendWidth) ?
37202
37290
  this.maxItemWidth :
37203
37291
  item.itemWidth, legendItem = item.legendItem || {};
@@ -37251,7 +37339,9 @@ class Legend {
37251
37339
  const seriesOptions = series?.options;
37252
37340
  // Handle showInLegend. If the series is linked to another series,
37253
37341
  // defaults to false.
37254
- if (series && pick(seriesOptions.showInLegend, !defined(seriesOptions.linkedTo) ? void 0 : false, true)) {
37342
+ if (series &&
37343
+ (seriesOptions.showInLegend ??
37344
+ (!defined(seriesOptions.linkedTo)))) {
37255
37345
  // Use points or series for the legend item depending on
37256
37346
  // legendType
37257
37347
  allItems = allItems.concat(series.legendItem?.labels ||
@@ -37533,7 +37623,7 @@ class Legend {
37533
37623
  * @function Highcharts.Legend#handleOverflow
37534
37624
  */
37535
37625
  handleOverflow(legendHeight) {
37536
- 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) {
37537
37627
  if (typeof height === 'number') {
37538
37628
  clipRect.attr({
37539
37629
  height: height
@@ -37579,7 +37669,7 @@ class Legend {
37579
37669
  navOptions.enabled !== false) {
37580
37670
  this.clipHeight = clipHeight =
37581
37671
  Math.max(spaceHeight - 20 - this.titleHeight - padding, 0);
37582
- this.currentPage = pick(this.currentPage, 1);
37672
+ this.currentPage = (this.currentPage ?? 1);
37583
37673
  this.fullHeight = legendHeight;
37584
37674
  // Fill pages with Y positions so that the top of each a legend item
37585
37675
  // defines the scroll top for each page (#2098)
@@ -37739,7 +37829,7 @@ class Legend {
37739
37829
  this.currentPage = currentPage;
37740
37830
  this.positionCheckboxes();
37741
37831
  // Fire event after scroll animation is complete
37742
- const animOptions = animObject(pick(animation, chart.renderer.globalAnimation, true));
37832
+ const animOptions = animObject((animation ?? chart.renderer.globalAnimation ?? true));
37743
37833
  syncTimeout(() => {
37744
37834
  fireEvent(this, 'afterScroll', { currentPage });
37745
37835
  }, animOptions.duration);
@@ -38180,7 +38270,7 @@ class Chart {
38180
38270
  */
38181
38271
  static chart(a, b, c) {
38182
38272
  const chart = new Chart(a, b, c);
38183
- return chart.promise || chart;
38273
+ return chart.promise ?? chart;
38184
38274
  }
38185
38275
  // Implementation
38186
38276
  constructor(a,
@@ -38221,10 +38311,10 @@ class Chart {
38221
38311
  const chart = this, options = chart.options.chart, zooming = options.zooming;
38222
38312
  chart.zooming = {
38223
38313
  ...zooming,
38224
- type: pick(options.zoomType, zooming.type),
38225
- key: pick(options.zoomKey, zooming.key),
38226
- pinchType: pick(options.pinchType, zooming.pinchType),
38227
- 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,
38228
38318
  resetButton: merge(zooming.resetButton, options.resetZoomButton)
38229
38319
  };
38230
38320
  }
@@ -38776,7 +38866,7 @@ class Chart {
38776
38866
  // inspect the generated series.points.
38777
38867
  series.getPointsCollection()
38778
38868
  .forEach((point) => {
38779
- if (pick(point.selectedStaging, point.selected)) {
38869
+ if (point.selectedStaging ?? point.selected) {
38780
38870
  acc.push(point);
38781
38871
  }
38782
38872
  });
@@ -39214,7 +39304,7 @@ class Chart {
39214
39304
  chartWidth = chart.chartWidth;
39215
39305
  if (!chart.styledMode) {
39216
39306
  css(container, {
39217
- width: pick(optionsChart.style?.width, chartWidth + 'px')
39307
+ width: (optionsChart.style?.width ?? chartWidth + 'px')
39218
39308
  });
39219
39309
  }
39220
39310
  }
@@ -39857,7 +39947,7 @@ class Chart {
39857
39947
  const mockTick = new Axis_Tick(axis, 0, '', true), label = mockTick.createLabel('x', labels);
39858
39948
  mockTick.destroy();
39859
39949
  if (label &&
39860
- pick(labels.reserveSpace, !isNumber(options.crossing))) {
39950
+ (labels.reserveSpace ?? !isNumber(options.crossing))) {
39861
39951
  expectedSpace = label.getBBox().height +
39862
39952
  labels.distance +
39863
39953
  Math.max(isNumber(offset) ? offset : 0, 0);
@@ -40192,7 +40282,7 @@ class Chart {
40192
40282
  const chart = this;
40193
40283
  let series;
40194
40284
  if (options) { // <- not necessary
40195
- redraw = pick(redraw, true); // Defaults to true
40285
+ redraw = (redraw ?? true); // Defaults to true
40196
40286
  fireEvent(chart, 'addSeries', { options: options }, function () {
40197
40287
  series = chart.initSeries(options);
40198
40288
  chart.isDirtyLegend = true;
@@ -40283,7 +40373,7 @@ class Chart {
40283
40373
  */
40284
40374
  createAxis(coll, options) {
40285
40375
  const axis = new Axis_Axis(this, options.axis, coll);
40286
- if (pick(options.redraw, true)) {
40376
+ if (options.redraw ?? true) {
40287
40377
  this.redraw(options.animation);
40288
40378
  }
40289
40379
  return axis;
@@ -40331,7 +40421,7 @@ class Chart {
40331
40421
  }
40332
40422
  loadingDiv.className = 'highcharts-loading';
40333
40423
  // Update text
40334
- HTML_AST.setElementHTML(loadingSpan, pick(str, options.lang.loading, ''));
40424
+ HTML_AST.setElementHTML(loadingSpan, (str ?? options.lang.loading ?? ''));
40335
40425
  if (!chart.styledMode) {
40336
40426
  // Update visuals
40337
40427
  css(loadingDiv, extend(loadingStyle, { zIndex: 10 }));
@@ -40569,7 +40659,7 @@ class Chart {
40569
40659
  }
40570
40660
  // No match by id found, match by index instead
40571
40661
  if (!item && chart[coll]) {
40572
- item = chart[coll][pick(newOptions.index, i)];
40662
+ item = chart[coll][(newOptions.index ?? i)];
40573
40663
  // Check if we grabbed an item with an existing but
40574
40664
  // different id (#13541). Check that the item in this
40575
40665
  // position is not internal (navigator).
@@ -40782,7 +40872,7 @@ class Chart {
40782
40872
  fireEvent(this, 'transform', params);
40783
40873
  let hasZoomed = params.hasZoomed || false, displayButton, isAnyAxisPanning;
40784
40874
  for (const axis of axes) {
40785
- 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),
40786
40876
  // If fingers pinched very close on this axis, treat as pan
40787
40877
  scale = Math.abs(toLength) < 10 ?
40788
40878
  1 :
@@ -41646,7 +41736,7 @@ class StackItem {
41646
41736
  r: options.borderRadius || 0,
41647
41737
  text: str,
41648
41738
  // Set default padding to 5 as it is in dataLabels #12308
41649
- padding: pick(options.padding, 5),
41739
+ padding: (options.padding ?? 5),
41650
41740
  visibility: 'hidden' // Hidden until setOffset is called
41651
41741
  };
41652
41742
  if (!chart.styledMode) {
@@ -41680,7 +41770,7 @@ class StackItem {
41680
41770
  }), { verticalAlign } = alignOptions;
41681
41771
  if (label && stackBox) {
41682
41772
  const labelBox = label.getBBox(void 0, 0), padding = label.padding;
41683
- let isJustify = pick(options.overflow, 'justify') === 'justify', visible;
41773
+ let isJustify = (options.overflow ?? 'justify') === 'justify', visible;
41684
41774
  // Reset alignOptions property after justify #12337
41685
41775
  alignOptions.x = options.x || 0;
41686
41776
  alignOptions.y = options.y || 0;
@@ -41717,7 +41807,7 @@ class StackItem {
41717
41807
  rotationOriginY: labelBox.height / 2
41718
41808
  });
41719
41809
  // Check if the dataLabel should be visible.
41720
- if (pick(!isJustify && options.crop, true)) {
41810
+ if (((!isJustify && options.crop) ?? true)) {
41721
41811
  visible =
41722
41812
  isNumber(label.x) &&
41723
41813
  isNumber(label.y) &&
@@ -41751,7 +41841,7 @@ class StackItem {
41751
41841
  getStackBox(stackBoxProps) {
41752
41842
  const stackItem = this, axis = this.axis, chart = axis.chart, { boxTop, defaultX, xOffset, width, boxBottom } = stackBoxProps, totalStackValue = axis.stacking.usePercentage ?
41753
41843
  100 :
41754
- 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 ||
41755
41845
  (isNumber(axis.min) &&
41756
41846
  axis.logarithmic &&
41757
41847
  axis.logarithmic.lin2log(axis.min)) ||
@@ -41864,7 +41954,7 @@ function chartGetStacks() {
41864
41954
  if (series.options.stacking && series.reserveSpace()) {
41865
41955
  series.stackKey = [
41866
41956
  series.type,
41867
- pick(series.options.stack, ''),
41957
+ (series.options.stack ?? ''),
41868
41958
  inverted ? xAxisOptions.top : xAxisOptions.left,
41869
41959
  inverted ? xAxisOptions.height : xAxisOptions.width
41870
41960
  ].join(',');
@@ -42027,7 +42117,7 @@ function seriesSetStackedPoints(axis, stackingParam) {
42027
42117
  stack = stacks[key][x];
42028
42118
  if (y !== null) {
42029
42119
  stack.points[pointKey] = stack.points[series.index] = [
42030
- pick(stack.cumulative, stackThreshold)
42120
+ (stack.cumulative ?? stackThreshold)
42031
42121
  ];
42032
42122
  // Record the base of the stack
42033
42123
  if (!defined(stack.cumulative)) {
@@ -42075,7 +42165,7 @@ function seriesSetStackedPoints(axis, stackingParam) {
42075
42165
  stack.cumulative = (total || 1) - 1;
42076
42166
  }
42077
42167
  else {
42078
- stack.cumulative = correctFloat(pick(stack.cumulative, stackThreshold) + yNumber);
42168
+ stack.cumulative = correctFloat((stack.cumulative ?? stackThreshold) + yNumber);
42079
42169
  }
42080
42170
  stack.total = total;
42081
42171
  if (y !== null) {
@@ -43090,8 +43180,7 @@ class AreaSeries extends AreaSeries_LineSeries {
43090
43180
  */
43091
43181
  getGraphPath(points) {
43092
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
43093
- yAxis.getThreshold(options.threshold)), connectNulls = pick(// #10574
43094
- options.connectNulls, stacking === 'percent'),
43183
+ yAxis.getThreshold(options.threshold)), connectNulls = (options.connectNulls ?? stacking === 'percent'),
43095
43184
  // To display null points in underlying stacked series, this
43096
43185
  // series graph must be broken, and the area also fall down to
43097
43186
  // fill the gap left by the null point. #2069
@@ -43144,9 +43233,9 @@ class AreaSeries extends AreaSeries_LineSeries {
43144
43233
  // Treat points with undefined plotY as null (e.g. non-positive
43145
43234
  // values on logarithmic axis, #18422)
43146
43235
  isNull = points[i].isNull || !defined(points[i].plotY);
43147
- plotX = pick(points[i].rectPlotX, points[i].plotX);
43236
+ plotX = (points[i].rectPlotX ?? points[i].plotX);
43148
43237
  yBottom = stacking ?
43149
- pick(points[i].yBottom, translatedThreshold) :
43238
+ (points[i].yBottom ?? translatedThreshold) :
43150
43239
  translatedThreshold;
43151
43240
  if (!isNull || connectNulls) {
43152
43241
  if (!connectNulls) {
@@ -43484,10 +43573,10 @@ class SplineSeries extends SplineSeries_LineSeries {
43484
43573
  }
43485
43574
  const ret = [
43486
43575
  'C',
43487
- pick(lastPoint.rightContX, lastPoint.plotX, 0),
43488
- pick(lastPoint.rightContY, lastPoint.plotY, 0),
43489
- pick(leftContX, plotX, 0),
43490
- pick(leftContY, plotY, 0),
43576
+ (lastPoint.rightContX ?? lastPoint.plotX ?? 0),
43577
+ (lastPoint.rightContY ?? lastPoint.plotY ?? 0),
43578
+ (leftContX ?? plotX ?? 0),
43579
+ (leftContY ?? plotY ?? 0),
43491
43580
  plotX,
43492
43581
  plotY
43493
43582
  ];
@@ -44456,7 +44545,7 @@ class ColumnSeries extends Series_Series {
44456
44545
  xAxis.tickInterval ||
44457
44546
  1), // #2610
44458
44547
  xAxis.len // #1535
44459
- ), 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,
44460
44549
  // #1251, #3737
44461
44550
  colIndex = (series.columnIndex || 0) + (reverseStacks ? 1 : 0), pointXOffset = pointPadding +
44462
44551
  (groupPadding +
@@ -45020,7 +45109,7 @@ var DataLabel;
45020
45109
  // that parts of the align box is inside the plot area
45021
45110
  // (#12370). When stacking, it is always inside regardless
45022
45111
  // of the option (#15148).
45023
- pick(options.inside, !!this.options.stacking) &&
45112
+ (options.inside ?? !!this.options.stacking) &&
45024
45113
  alignTo &&
45025
45114
  chart.isInsidePlot(plotX, inverted ?
45026
45115
  alignTo.x + 1 :
@@ -45123,8 +45212,8 @@ var DataLabel;
45123
45212
  // zIndex: 20
45124
45213
  // }).add();
45125
45214
  // chart.renderer.circle(
45126
- // chart.plotLeft + pick(dataLabel.alignAttr.x, 0),
45127
- // chart.plotTop + pick(dataLabel.alignAttr.y, 0),
45215
+ // chart.plotLeft + (dataLabel.alignAttr.x ?? 0),
45216
+ // chart.plotTop + (dataLabel.alignAttr.y ?? 0),
45128
45217
  // 2
45129
45218
  // ).attr({
45130
45219
  // fill: 'red',
@@ -45307,7 +45396,7 @@ var DataLabel;
45307
45396
  if (labelEnabled) {
45308
45397
  // Create individual options structure that can be
45309
45398
  // extended without affecting others
45310
- formatString = pick(labelOptions[point.formatPrefix + 'Format'], labelOptions.format);
45399
+ formatString = (labelOptions[point.formatPrefix + 'Format'] ?? labelOptions.format);
45311
45400
  labelText = defined(formatString) ?
45312
45401
  DataLabel_format(formatString, point, chart) :
45313
45402
  (labelOptions[point.formatPrefix + 'Formatter'] ||
@@ -45315,7 +45404,9 @@ var DataLabel;
45315
45404
  rotation = labelOptions.rotation;
45316
45405
  if (!chart.styledMode) {
45317
45406
  // Determine the color
45318
- 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)';
45319
45410
  // Get automated contrast color
45320
45411
  if (style.color === 'contrast') {
45321
45412
  if (backgroundColor !== 'none') {
@@ -46116,14 +46207,15 @@ class ScatterSeries extends ScatterSeries_LineSeries {
46116
46207
  return rand - Math.floor(rand);
46117
46208
  }
46118
46209
  if (jitter) {
46119
- this.points.forEach(function (point, i) {
46120
- ['x', 'y'].forEach(function (dim, j) {
46210
+ this.points.forEach((point, i) => {
46211
+ ['x', 'y'].forEach((dim, j) => {
46121
46212
  if (jitter[dim] && !point.isNull) {
46122
- const plotProp = `plot${dim.toUpperCase()}`, axis = series[`${dim}Axis`], translatedJitter = jitter[dim] *
46123
- axis.transA;
46213
+ const plotProp = `plot${dim.toUpperCase()}`, axis = series[`${dim}Axis`];
46124
46214
  if (axis && !axis.logarithmic) {
46125
46215
  // Identify the outer bounds of the jitter range
46126
- 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;
46127
46219
  // Find a random position within this range
46128
46220
  point[plotProp] = min +
46129
46221
  (max - min) * unrandom(i + j * len);
@@ -46228,11 +46320,13 @@ var CenteredUtilities;
46228
46320
  innerSize = parseFloat(innerSize);
46229
46321
  }
46230
46322
  const positions = [
46231
- pick(centerOption?.[0], '50%'),
46232
- pick(centerOption?.[1], '50%'),
46323
+ (centerOption?.[0] ?? '50%'),
46324
+ (centerOption?.[1] ?? '50%'),
46233
46325
  // Prevent from negative values
46234
- pick(size && size < 0 ? void 0 : options.size, '100%'),
46235
- 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%')
46236
46330
  ];
46237
46331
  for (i = 0; i < 4; ++i) {
46238
46332
  value = positions[i];
@@ -46434,7 +46528,7 @@ class PiePoint extends Series_Point {
46434
46528
  const series = this.series, chart = series.chart;
46435
46529
  setAnimation(animation, chart);
46436
46530
  // Redraw is true by default
46437
- redraw = pick(redraw, true);
46531
+ redraw = (redraw ?? true);
46438
46532
  this.sliced = this.options.sliced = sliced ?? !this.sliced;
46439
46533
  // Update options.data
46440
46534
  if (series.options.data) {
@@ -47239,7 +47333,8 @@ class PieSeries extends Series_Series {
47239
47333
  // Start values
47240
47334
  graphic.attr({
47241
47335
  // Animate from inner radius (#779)
47242
- r: pick(point.startR, (series.center && series.center[3] / 2)),
47336
+ r: point.startR ??
47337
+ (series.center && series.center[3] / 2),
47243
47338
  start: startAngleRad,
47244
47339
  end: startAngleRad
47245
47340
  });
@@ -47880,7 +47975,7 @@ var PieDataLabel_ColumnDataLabel;
47880
47975
  labelPosition.computed.x = x;
47881
47976
  labelPosition.computed.y = y - topOffset;
47882
47977
  // Detect overflowing data labels
47883
- if (pick(dataLabelOptions.crop, true)) {
47978
+ if (dataLabelOptions.crop ?? true) {
47884
47979
  dataLabelWidth = dataLabel.getBBox().width;
47885
47980
  let sideOverflow;
47886
47981
  // Overflow left
@@ -48396,7 +48491,10 @@ function OverlappingDataLabels_onChartRender() {
48396
48491
  if (point.visible) {
48397
48492
  (point.dataLabels || []).forEach((label) => {
48398
48493
  const options = label.options || {};
48399
- 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
48400
48498
  // #21725: Sync target positions for generic overlap
48401
48499
  // checking. During animations (e.g., toggling a
48402
48500
  // point), DOM positions may overlap. We force
@@ -48885,10 +48983,12 @@ var Responsive;
48885
48983
  */
48886
48984
  function matchResponsiveRule(rule, matches) {
48887
48985
  const condition = rule.condition, fn = condition.callback || function () {
48888
- return (this.chartWidth <= pick(condition.maxWidth, Number.MAX_VALUE) &&
48889
- this.chartHeight <= pick(condition.maxHeight, Number.MAX_VALUE) &&
48890
- this.chartWidth >= pick(condition.minWidth, 0) &&
48891
- 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));
48892
48992
  };
48893
48993
  if (fn.call(this, this)) {
48894
48994
  matches.push(rule._id);
@@ -49102,7 +49202,7 @@ var Responsive;
49102
49202
  ;// ./code/es-modules/masters/highcharts.src.js
49103
49203
  // SPDX-License-Identifier: LicenseRef-Highcharts
49104
49204
  /**
49105
- * @license Highcharts JS v13.0.1 (2026-08-17)
49205
+ * @license Highcharts JS v13.0.2 (2026-08-27)
49106
49206
  * @module highcharts/highcharts
49107
49207
  *
49108
49208
  * (c) 2009-2026 Highsoft AS
@@ -49179,7 +49279,12 @@ G.SVGElement = SVG_SVGElement;
49179
49279
  G.SVGRenderer = SVG_SVGRenderer;
49180
49280
  G.Templating = Core_Templating;
49181
49281
  G.Tick = Axis_Tick;
49182
- G.Time = Core_Time;
49282
+ G.Time = class extends Core_Time {
49283
+ constructor(options, lang) {
49284
+ const defaultOptions = Defaults.getOptions();
49285
+ super(options ?? defaultOptions.time, lang ?? defaultOptions.lang);
49286
+ }
49287
+ };
49183
49288
  G.Tooltip = Core_Tooltip;
49184
49289
  // Utilities
49185
49290
  G.addEvent = addEvent;
@@ -49348,7 +49453,7 @@ var DataModifyComposition;
49348
49453
  series.setCumulative(modeState, false);
49349
49454
  }
49350
49455
  });
49351
- if (pick(redraw, true)) {
49456
+ if (redraw ?? true) {
49352
49457
  this.chart.redraw();
49353
49458
  }
49354
49459
  }
@@ -49365,7 +49470,7 @@ var DataModifyComposition;
49365
49470
  function tooltipFormatter(pointFormat) {
49366
49471
  const point = this, { numberFormatter } = point.series.chart, replace = function (value) {
49367
49472
  pointFormat = pointFormat.replace('{point.' + value + '}', (point[value] > 0 && value === 'change' ? '+' : '') +
49368
- numberFormatter(point[value], pick(point.series.tooltipOptions.changeDecimals, 2)));
49473
+ numberFormatter(point[value], (point.series.tooltipOptions.changeDecimals ?? 2)));
49369
49474
  };
49370
49475
  if (defined(point.change)) {
49371
49476
  replace('change');
@@ -49393,7 +49498,9 @@ var DataModifyComposition;
49393
49498
  chart.series[this.index - 1] :
49394
49499
  chart.get(linkedTo);
49395
49500
  if (linkedSeries instanceof Series_Series) {
49396
- this.options.compare = pick(this.userOptions.compare, linkedSeries.options.compare);
49501
+ this.options.compare =
49502
+ this.userOptions.compare ??
49503
+ linkedSeries.options.compare;
49397
49504
  }
49398
49505
  }
49399
49506
  const compare = this.options.compare;
@@ -49467,7 +49574,7 @@ var DataModifyComposition;
49467
49574
  // Survive to export, #5485 (and for options generally)
49468
49575
  this.options.compare = this.userOptions.compare = compare;
49469
49576
  // Fire series.init() that will set or delete series.dataModify
49470
- this.update({}, pick(redraw, true));
49577
+ this.update({}, (redraw ?? true));
49471
49578
  if (this.dataModify && (compare === 'value' || compare === 'percent')) {
49472
49579
  this.dataModify.initCompare(compare);
49473
49580
  }
@@ -49554,11 +49661,11 @@ var DataModifyComposition;
49554
49661
  */
49555
49662
  function seriesSetCumulative(cumulative, redraw) {
49556
49663
  // Set default value to false
49557
- cumulative = pick(cumulative, false);
49664
+ cumulative = (cumulative ?? false);
49558
49665
  // Survive to export, #5485 (and for options generally)
49559
49666
  this.options.cumulative = this.userOptions.cumulative = cumulative;
49560
49667
  // Fire series.init() that will set or delete series.dataModify
49561
- this.update({}, pick(redraw, true));
49668
+ this.update({}, (redraw ?? true));
49562
49669
  // If should, turn on the Cumulative Sum mode
49563
49670
  if (this.dataModify) {
49564
49671
  this.dataModify.initCumulative();
@@ -49904,7 +50011,7 @@ function onChartAfterSetChartSize() {
49904
50011
  navigator.top = this.plotTop + scrollButtonSize;
49905
50012
  }
49906
50013
  else {
49907
- navigator.left = pick(xAxis.left, this.plotLeft + scrollButtonSize);
50014
+ navigator.left = (xAxis.left ?? this.plotLeft + scrollButtonSize);
49908
50015
  navigator.top = navigator.navigatorOptions.top ||
49909
50016
  this.chartHeight -
49910
50017
  navigator.height -
@@ -49920,7 +50027,7 @@ function onChartAfterSetChartSize() {
49920
50027
  legendOptions.enabled &&
49921
50028
  !legendOptions.floating) ?
49922
50029
  legend.legendHeight +
49923
- pick(legendOptions.margin, 10) :
50030
+ (legendOptions.margin ?? 10) :
49924
50031
  0) -
49925
50032
  (this.titleOffset ? this.titleOffset[2] : 0);
49926
50033
  }
@@ -49945,7 +50052,7 @@ function onChartAfterUpdate(event) {
49945
50052
  (this.options.navigator.enabled ||
49946
50053
  this.options.scrollbar.enabled)) {
49947
50054
  this.scroller = this.navigator = new NavigatorConstructor(this);
49948
- if (pick(event.redraw, true)) {
50055
+ if (event.redraw ?? true) {
49949
50056
  this.redraw(event.animation); // #7067
49950
50057
  }
49951
50058
  }
@@ -50123,7 +50230,7 @@ class NavigatorAxisAdditions {
50123
50230
  */
50124
50231
  toFixedRange(pxMin, pxMax, fixedMin, fixedMax) {
50125
50232
  const axis = this.axis, halfPointRange = (axis.pointRange || 0) / 2;
50126
- let newMin = pick(fixedMin, axis.translate(pxMin, true, !axis.horiz)), newMax = pick(fixedMax, axis.translate(pxMax, true, !axis.horiz));
50233
+ let newMin = fixedMin ?? axis.translate(pxMin, true, !axis.horiz), newMax = fixedMax ?? axis.translate(pxMax, true, !axis.horiz);
50127
50234
  // Add/remove half point range to/from the extremes (#1172)
50128
50235
  if (!defined(fixedMin)) {
50129
50236
  newMin = correctFloat(newMin + halfPointRange);
@@ -50898,8 +51005,8 @@ var ScrollbarAxis;
50898
51005
  ScrollbarAxis.compose = compose;
50899
51006
  /** @internal */
50900
51007
  function getExtremes(axis) {
50901
- const axisMin = pick(axis.options?.min, axis.min);
50902
- const axisMax = pick(axis.options?.max, axis.max);
51008
+ const axisMin = (axis.options?.min ?? axis.min);
51009
+ const axisMax = (axis.options?.max ?? axis.max);
50903
51010
  return {
50904
51011
  axisMin,
50905
51012
  axisMax,
@@ -51438,7 +51545,7 @@ class Scrollbar {
51438
51545
  buttonToMaxClick(e) {
51439
51546
  const scroller = this;
51440
51547
  const range = ((scroller.to - scroller.from) *
51441
- pick(scroller.options.step, 0.2));
51548
+ (scroller.options.step ?? 0.2));
51442
51549
  scroller.updatePosition(scroller.from + range, scroller.to + range);
51443
51550
  fireEvent(scroller, 'changed', {
51444
51551
  from: scroller.from,
@@ -51450,7 +51557,7 @@ class Scrollbar {
51450
51557
  buttonToMinClick(e) {
51451
51558
  const scroller = this;
51452
51559
  const range = correctFloat(scroller.to - scroller.from) *
51453
- pick(scroller.options.step, 0.2);
51560
+ (scroller.options.step ?? 0.2);
51454
51561
  scroller.updatePosition(correctFloat(scroller.from - range), correctFloat(scroller.to - range));
51455
51562
  fireEvent(scroller, 'changed', {
51456
51563
  from: scroller.from,
@@ -51582,10 +51689,11 @@ class Scrollbar {
51582
51689
  scroller.renderer = renderer;
51583
51690
  scroller.userOptions = options;
51584
51691
  scroller.options = merge(Scrollbar_ScrollbarDefaults, Scrollbar_defaultOptions.scrollbar, options);
51585
- scroller.options.margin = pick(scroller.options.margin, 10);
51692
+ scroller.options.margin = (scroller.options.margin ?? 10);
51586
51693
  scroller.chart = chart;
51587
51694
  // Backward compatibility
51588
- scroller.size = pick(scroller.options.size, scroller.options.height);
51695
+ scroller.size = scroller.options.size ??
51696
+ scroller.options.height;
51589
51697
  // Init
51590
51698
  if (options.enabled) {
51591
51699
  scroller.render();
@@ -51875,9 +51983,9 @@ class Scrollbar {
51875
51983
  * @function Highcharts.Scrollbar#shouldUpdateExtremes
51876
51984
  */
51877
51985
  shouldUpdateExtremes(eventType) {
51878
- return (pick(this.options.liveRedraw, Core_Globals.svg &&
51986
+ return ((this.options.liveRedraw ?? (Core_Globals.svg &&
51879
51987
  !Core_Globals.isTouchDevice &&
51880
- !this.chart.boosted) ||
51988
+ !this.chart.boosted)) ||
51881
51989
  // Mouseup always should change extremes
51882
51990
  eventType === 'mouseup' ||
51883
51991
  eventType === 'touchend' ||
@@ -52397,18 +52505,18 @@ class Navigator {
52397
52505
  // it. For example hidden series, but visible navigator (#6022).
52398
52506
  if (rendered) {
52399
52507
  pxMin = 0;
52400
- pxMax = pick(xAxis.width, scrollbarXAxis.width);
52508
+ pxMax = (xAxis.width ?? scrollbarXAxis.width);
52401
52509
  }
52402
52510
  else {
52403
52511
  return;
52404
52512
  }
52405
52513
  }
52406
- navigator.left = pick(xAxis.left,
52407
- // In case of scrollbar only, without navigator
52408
- chart.plotLeft + scrollButtonSize +
52514
+ navigator.left = (xAxis.left ?? chart.plotLeft + scrollButtonSize +
52409
52515
  (inverted ? chart.plotWidth : 0));
52410
- let zoomedMax = navigator.size = navigatorSize = pick(xAxis.len, (inverted ? chart.plotHeight : chart.plotWidth) -
52411
- 2 * scrollButtonSize);
52516
+ let zoomedMax = navigator.size = navigatorSize =
52517
+ xAxis.len ??
52518
+ (inverted ? chart.plotHeight : chart.plotWidth) -
52519
+ 2 * scrollButtonSize;
52412
52520
  if (inverted) {
52413
52521
  navigatorWidth = scrollbarHeight;
52414
52522
  }
@@ -52416,8 +52524,8 @@ class Navigator {
52416
52524
  navigatorWidth = navigatorSize + 2 * scrollButtonSize;
52417
52525
  }
52418
52526
  // Get the pixel position of the handles
52419
- pxMin = pick(pxMin, xAxis.toPixels(min, true));
52420
- pxMax = pick(pxMax, xAxis.toPixels(max, true));
52527
+ pxMin = (pxMin ?? xAxis.toPixels(min, true));
52528
+ pxMax = (pxMax ?? xAxis.toPixels(max, true));
52421
52529
  // Verify (#1851, #2238)
52422
52530
  if (!isNumber(pxMin) || Math.abs(pxMin) === Infinity) {
52423
52531
  pxMin = 0;
@@ -52696,11 +52804,10 @@ class Navigator {
52696
52804
  navigator.render(0, 0, chartX - dragOffset, chartX - dragOffset + range);
52697
52805
  }
52698
52806
  if (navigator.hasDragged &&
52699
- pick(navigator.scrollbarOptions?.liveRedraw,
52807
+ (navigator.scrollbarOptions?.liveRedraw ?? (
52700
52808
  // By default, don't run live redraw on touch
52701
52809
  // devices or if the chart is in boost.
52702
- !Navigator_isTouchDevice &&
52703
- !this.chart.boosted)) {
52810
+ !Navigator_isTouchDevice && !this.chart.boosted))) {
52704
52811
  e.DOMType = e.type;
52705
52812
  setTimeout(function () {
52706
52813
  navigator.onMouseUp(e);
@@ -52889,8 +52996,10 @@ class Navigator {
52889
52996
  offset: 0,
52890
52997
  index: yAxisIndex,
52891
52998
  isInternal: true,
52892
- reversed: pick((navigatorOptions.yAxis &&
52893
- navigatorOptions.yAxis.reversed), (chart.yAxis[0] && chart.yAxis[0].reversed), false), // #14060
52999
+ reversed: ((navigatorOptions.yAxis &&
53000
+ navigatorOptions.yAxis.reversed) ??
53001
+ (chart.yAxis[0] && chart.yAxis[0].reversed) ??
53002
+ false), // #14060
52894
53003
  zoomEnabled: false
52895
53004
  }, chart.inverted ? {
52896
53005
  width: height
@@ -52976,7 +53085,9 @@ class Navigator {
52976
53085
  */
52977
53086
  setOpposite() {
52978
53087
  const navigatorOptions = this.navigatorOptions, navigatorEnabled = this.navigatorEnabled, chart = this.chart;
52979
- this.opposite = pick(navigatorOptions.opposite, Boolean(!navigatorEnabled && chart.inverted)); // #6262
53088
+ this.opposite =
53089
+ navigatorOptions.opposite ??
53090
+ Boolean(!navigatorEnabled && chart.inverted); // #6262
52980
53091
  }
52981
53092
  /**
52982
53093
  * Get the union data extremes of the chart - the outer data extremes of the
@@ -52990,9 +53101,8 @@ class Navigator {
52990
53101
  let ret;
52991
53102
  if (!returnFalseOnNoBaseSeries || baseAxis.dataMin !== null) {
52992
53103
  ret = {
52993
- dataMin: pick(// #4053
52994
- time.parse(navAxisOptions?.min), numExt('min', time.parse(baseAxisOptions.min), baseAxis.dataMin, navAxis.dataMin, navAxis.min)),
52995
- dataMax: pick(time.parse(navAxisOptions?.max), numExt('max', time.parse(baseAxisOptions.max), baseAxis.dataMax, navAxis.dataMax, navAxis.max))
53104
+ dataMin: (time.parse(navAxisOptions?.min) ?? numExt('min', time.parse(baseAxisOptions.min), baseAxis.dataMin, navAxis.dataMin, navAxis.min)),
53105
+ dataMax: (time.parse(navAxisOptions?.max) ?? numExt('max', time.parse(baseAxisOptions.max), baseAxis.dataMax, navAxis.dataMax, navAxis.max))
52996
53106
  };
52997
53107
  }
52998
53108
  return ret;
@@ -53107,11 +53217,9 @@ class Navigator {
53107
53217
  userNavOptions.dataLabels = splat(userNavOptions.dataLabels);
53108
53218
  mergedNavSeriesOptions = merge(baseOptions, navSeriesMixin, userNavOptions, baseNavigatorOptions);
53109
53219
  // Once nav series type is resolved, pick correct pointRange
53110
- mergedNavSeriesOptions.pointRange = pick(
53111
- // Strictly set pointRange in options
53112
- userNavOptions.pointRange, baseNavigatorOptions.pointRange,
53113
- // Fallback to default values, e.g. `null` for column
53114
- Navigator_defaultOptions.plotOptions[mergedNavSeriesOptions.type || 'line']?.pointRange);
53220
+ mergedNavSeriesOptions.pointRange = (userNavOptions.pointRange ??
53221
+ baseNavigatorOptions.pointRange ??
53222
+ Navigator_defaultOptions.plotOptions[mergedNavSeriesOptions.type || 'line']?.pointRange);
53115
53223
  // Merge data separately. Do a slice to avoid mutating the
53116
53224
  // navigator options from base series (#4923).
53117
53225
  const navigatorSeriesData = baseNavigatorOptions.data || userNavOptions.data, navigatorSeriesDataTable = baseNavigatorOptions.dataTable ||
@@ -53271,7 +53379,7 @@ class Navigator {
53271
53379
  * @function Highcharts.Navigator#modifyBaseAxisExtremes
53272
53380
  */
53273
53381
  modifyBaseAxisExtremes() {
53274
- const baseXAxis = this, navigator = baseXAxis.chart.navigator, baseExtremes = baseXAxis.getExtremes(), baseMin = baseExtremes.min, baseMax = baseExtremes.max, baseDataMin = baseExtremes.dataMin, baseDataMax = baseExtremes.dataMax, range = baseMax - baseMin, stickToMin = navigator?.stickToMin, stickToMax = navigator?.stickToMax, overscroll = pick(baseXAxis.ordinal?.convertOverscroll(baseXAxis.options.overscroll), 0), navigatorSeries = navigator.series && navigator.series[0], hasSetExtremes = !!baseXAxis.setExtremes,
53382
+ const baseXAxis = this, navigator = baseXAxis.chart.navigator, baseExtremes = baseXAxis.getExtremes(), baseMin = baseExtremes.min, baseMax = baseExtremes.max, baseDataMin = baseExtremes.dataMin, baseDataMax = baseExtremes.dataMax, range = baseMax - baseMin, stickToMin = navigator?.stickToMin, stickToMax = navigator?.stickToMax, overscroll = (baseXAxis.ordinal?.convertOverscroll(baseXAxis.options.overscroll) ?? 0), navigatorSeries = navigator.series && navigator.series[0], hasSetExtremes = !!baseXAxis.setExtremes,
53275
53383
  // When the extremes have been set by range selector button, don't
53276
53384
  // stick to min or max. The range selector buttons will handle the
53277
53385
  // extremes. (#5489)
@@ -53323,8 +53431,8 @@ class Navigator {
53323
53431
  Math.round(navigator.zoomedMax) >= Math.round(navigator.size);
53324
53432
  // If the scrollbar is scrolled all the way to the right, keep right as
53325
53433
  // new data comes in, unless user set navigator.stickToMax to false.
53326
- navigator.stickToMax = pick(this.chart.options.navigator &&
53327
- this.chart.options.navigator.stickToMax, shouldStickToMax);
53434
+ navigator.stickToMax = (this.chart.options.navigator &&
53435
+ this.chart.options.navigator.stickToMax) ?? shouldStickToMax;
53328
53436
  navigator.stickToMin = navigator.shouldStickToMin(baseSeries, navigator);
53329
53437
  // Set the navigator series data to the new data of the base series
53330
53438
  if (navigatorSeries && !navigator.hasNavigatorData) {
@@ -54054,9 +54162,7 @@ var OrdinalAxis;
54054
54162
  // Without a custom function it is sorted as strings
54055
54163
  return a - b;
54056
54164
  });
54057
- overscrollPointsRange = Math.min(overscrollPointsRange, pick(
54058
- // Check for a single-point series:
54059
- series.closestPointRange, overscrollPointsRange));
54165
+ overscrollPointsRange = Math.min(overscrollPointsRange, (series.closestPointRange ?? overscrollPointsRange));
54060
54166
  if (len) {
54061
54167
  i = 0;
54062
54168
  while (i < len - 1) {
@@ -54157,7 +54263,9 @@ var OrdinalAxis;
54157
54263
  ordinal.offset = min - (minIndex * slope);
54158
54264
  }
54159
54265
  else {
54160
- ordinal.overscrollPointsRange = pick(axis.closestPointRange, ordinal.overscrollPointsRange);
54266
+ ordinal.overscrollPointsRange =
54267
+ axis.closestPointRange ??
54268
+ ordinal.overscrollPointsRange;
54161
54269
  ordinal.positions = axis.ordinal.slope = ordinal.offset =
54162
54270
  void 0;
54163
54271
  }
@@ -54450,8 +54558,10 @@ var OrdinalAxis;
54450
54558
  */
54451
54559
  convertOverscroll(overscroll = 0) {
54452
54560
  const ordinal = this, axis = ordinal.axis, calculateOverscroll = function (overscrollPercentage) {
54453
- return pick(ordinal.originalOrdinalRange, defined(axis.dataMax) && defined(axis.dataMin) ?
54454
- axis.dataMax - axis.dataMin : 0) * overscrollPercentage;
54561
+ return (ordinal.originalOrdinalRange ??
54562
+ (defined(axis.dataMax) && defined(axis.dataMin) ?
54563
+ axis.dataMax - axis.dataMin :
54564
+ 0)) * overscrollPercentage;
54455
54565
  };
54456
54566
  if (isString(overscroll)) {
54457
54567
  const overscrollValue = parseInt(overscroll, 10);
@@ -55138,7 +55248,7 @@ function axisMinFromRange() {
55138
55248
  this.chart.setFixedRange(max - min);
55139
55249
  }
55140
55250
  }
55141
- const dataMin = pick(this.dataMin, Number.MIN_VALUE);
55251
+ const dataMin = (this.dataMin ?? Number.MIN_VALUE);
55142
55252
  if (!isNumber(min)) {
55143
55253
  min = dataMin;
55144
55254
  }
@@ -55147,7 +55257,7 @@ function axisMinFromRange() {
55147
55257
  if (typeof range === 'undefined') { // #4501
55148
55258
  range = getTrueRange(min, rangeOptions.count);
55149
55259
  }
55150
- this.newMax = Math.min(min + range, pick(this.dataMax, Number.MAX_VALUE));
55260
+ this.newMax = Math.min(min + range, (this.dataMax ?? Number.MAX_VALUE));
55151
55261
  }
55152
55262
  if (!isNumber(max)) {
55153
55263
  min = void 0;
@@ -55568,7 +55678,7 @@ class RangeSelector {
55568
55678
  }
55569
55679
  else if (isNumber(newMin) || isNumber(newMax)) {
55570
55680
  // Existing axis object. Set extremes after render time.
55571
- baseAxis.setExtremes(newMin, newMax, pick(redraw, true), void 0, // Auto animation
55681
+ baseAxis.setExtremes(newMin, newMax, (redraw ?? true), void 0, // Auto animation
55572
55682
  {
55573
55683
  trigger: 'rangeSelectorButton',
55574
55684
  rangeSelectorButton: rangeOptions
@@ -55803,8 +55913,8 @@ class RangeSelector {
55803
55913
  year: 365
55804
55914
  }[type] * 24 * 36e5 * count;
55805
55915
  }
55806
- rangeOptions._offsetMin = pick(rangeOptions.offsetMin, 0);
55807
- rangeOptions._offsetMax = pick(rangeOptions.offsetMax, 0);
55916
+ rangeOptions._offsetMin = (rangeOptions.offsetMin ?? 0);
55917
+ rangeOptions._offsetMax = (rangeOptions.offsetMax ?? 0);
55808
55918
  rangeOptions._range +=
55809
55919
  rangeOptions._offsetMax - rangeOptions._offsetMin;
55810
55920
  }
@@ -56115,7 +56225,7 @@ class RangeSelector {
56115
56225
  };
56116
56226
  }
56117
56227
  createElements() {
56118
- const chart = this.chart, renderer = chart.renderer, container = chart.container, chartOptions = chart.options, options = chartOptions.rangeSelector, inputEnabled = options.inputEnabled, inputsZIndex = pick(chartOptions.chart.style?.zIndex, 0) + 1;
56228
+ const chart = this.chart, renderer = chart.renderer, container = chart.container, chartOptions = chart.options, options = chartOptions.rangeSelector, inputEnabled = options.inputEnabled, inputsZIndex = (chartOptions.chart.style?.zIndex ?? 0) + 1;
56119
56229
  if (options.enabled === false) {
56120
56230
  return;
56121
56231
  }
@@ -56256,10 +56366,14 @@ class RangeSelector {
56256
56366
  // Create a label for dropdown select element
56257
56367
  const userButtonTheme = chart.userOptions.rangeSelector?.buttonTheme;
56258
56368
  this.dropdownLabel = renderer.button('', 0, 0, () => { }, merge(buttonTheme, {
56259
- 'stroke-width': pick(buttonTheme['stroke-width'], 0),
56369
+ 'stroke-width': (buttonTheme['stroke-width'] ?? 0),
56260
56370
  width: 'auto',
56261
- paddingLeft: pick(options.buttonTheme.paddingLeft, userButtonTheme?.padding, 8),
56262
- paddingRight: pick(options.buttonTheme.paddingRight, userButtonTheme?.padding, 8)
56371
+ paddingLeft: options.buttonTheme.paddingLeft ??
56372
+ userButtonTheme?.padding ??
56373
+ 8,
56374
+ paddingRight: options.buttonTheme.paddingRight ??
56375
+ userButtonTheme?.padding ??
56376
+ 8
56263
56377
  }), states && states.hover, states && states.select, states && states.disabled)
56264
56378
  .hide()
56265
56379
  .add(this.group);
@@ -56440,7 +56554,7 @@ class RangeSelector {
56440
56554
  legendOptions.enabled &&
56441
56555
  !legendOptions.floating ?
56442
56556
  (chart.legend.legendHeight +
56443
- pick(legendOptions.margin, 10)) :
56557
+ (legendOptions.margin ?? 10)) :
56444
56558
  0);
56445
56559
  groupHeight = groupHeight + legendHeight - 20;
56446
56560
  translateY = (alignTranslateY -
@@ -56586,7 +56700,7 @@ class RangeSelector {
56586
56700
  // Align button group
56587
56701
  buttonGroup.align({
56588
56702
  y: buttonPosition.y,
56589
- width: pick(width, this.initialButtonGroupWidth),
56703
+ width: (width ?? this.initialButtonGroupWidth),
56590
56704
  align: buttonPosition.align,
56591
56705
  x: translateX
56592
56706
  }, true, chart.spacingBox);
@@ -56605,7 +56719,7 @@ class RangeSelector {
56605
56719
  if (zoomText && zoomText.visibility !== 'hidden') {
56606
56720
  // #8769, allow dynamically updating margins
56607
56721
  zoomText[verb]({
56608
- x: pick(plotLeft + buttonPosition.x, plotLeft)
56722
+ x: plotLeft + (buttonPosition.x ?? 0)
56609
56723
  });
56610
56724
  // Button start position
56611
56725
  buttonLeft += buttonPosition.x +
@@ -56983,7 +57097,9 @@ function getForcedAxisOptions(type, chartOptions) {
56983
57097
  if (type === 'xAxis') {
56984
57098
  // Always disable startOnTick:true on the main axis when the navigator
56985
57099
  // is enabled (#1090)
56986
- const navigatorEnabled = pick(chartOptions.navigator?.enabled, Navigator_NavigatorDefaults.enabled, true);
57100
+ const navigatorEnabled = chartOptions.navigator?.enabled ??
57101
+ Navigator_NavigatorDefaults.enabled ??
57102
+ true;
56987
57103
  const axisOptions = {
56988
57104
  type: 'datetime',
56989
57105
  categories: void 0
@@ -57037,7 +57153,9 @@ class StockChart extends Chart_Chart {
57037
57153
  const defaultOptions = StockChart_getOptions(), xAxisOptions = userOptions.xAxis, yAxisOptions = userOptions.yAxis,
57038
57154
  // Always disable startOnTick:true on the main axis when the
57039
57155
  // navigator is enabled (#1090)
57040
- navigatorEnabled = pick(userOptions.navigator?.enabled, Navigator_NavigatorDefaults.enabled, true);
57156
+ navigatorEnabled = userOptions.navigator?.enabled ??
57157
+ Navigator_NavigatorDefaults.enabled ??
57158
+ true;
57041
57159
  // Avoid doing these twice
57042
57160
  userOptions.xAxis = userOptions.yAxis = void 0;
57043
57161
  const options = merge({
@@ -57058,17 +57176,17 @@ class StockChart extends Chart_Chart {
57058
57176
  },
57059
57177
  scrollbar: {
57060
57178
  // #4988 - check if setOptions was called
57061
- enabled: pick(Scrollbar_ScrollbarDefaults.enabled, true)
57179
+ enabled: (Scrollbar_ScrollbarDefaults.enabled ?? true)
57062
57180
  },
57063
57181
  rangeSelector: {
57064
57182
  // #4988 - check if setOptions was called
57065
- enabled: pick(RangeSelector_RangeSelectorDefaults.rangeSelector.enabled, true)
57183
+ enabled: RangeSelector_RangeSelectorDefaults.rangeSelector.enabled ?? true
57066
57184
  },
57067
57185
  title: {
57068
57186
  text: null
57069
57187
  },
57070
57188
  tooltip: {
57071
- split: pick(defaultOptions.tooltip?.split, true),
57189
+ split: (defaultOptions.tooltip?.split ?? true),
57072
57190
  crosshairs: true
57073
57191
  },
57074
57192
  legend: {
@@ -57202,8 +57320,8 @@ addEvent(Chart_Chart, 'update', function (e) {
57202
57320
  axis.series[0] && this.series[0].colorIndex))
57203
57321
  .attr({
57204
57322
  align: options.align || align,
57205
- padding: pick(options.padding, 8),
57206
- r: pick(options.borderRadius, 3),
57323
+ padding: (options.padding ?? 8),
57324
+ r: (options.borderRadius ?? 3),
57207
57325
  zIndex: 2
57208
57326
  })
57209
57327
  .add(axis.labelGroup);
@@ -57428,7 +57546,7 @@ addEvent(Chart_Chart, 'update', function (e) {
57428
57546
  uniqueAxes.push(axis2);
57429
57547
  }
57430
57548
  }
57431
- transVal = pick(translatedValue, axis.translate(value || 0, void 0, void 0, e.old));
57549
+ transVal = translatedValue ?? axis.translate(value || 0, void 0, void 0, e.old);
57432
57550
  if (isNumber(transVal)) {
57433
57551
  let skip, pos = horiz ?
57434
57552
  transVal + axis.pos :
@@ -57507,7 +57625,7 @@ addEvent(Chart_Chart, 'update', function (e) {
57507
57625
  function seriesForceCropping() {
57508
57626
  const series = this, chart = series.chart, options = series.options, dataGroupingOptions = options.dataGrouping, groupingEnabled = (series.allowDG !== false &&
57509
57627
  dataGroupingOptions &&
57510
- pick(dataGroupingOptions.enabled, chart.options.isStock));
57628
+ (dataGroupingOptions.enabled ?? chart.options.isStock));
57511
57629
  return groupingEnabled;
57512
57630
  }
57513
57631
  /* eslint-disable jsdoc/check-param-names */
@@ -57545,7 +57663,7 @@ addEvent(Chart_Chart, 'update', function (e) {
57545
57663
  */
57546
57664
  function stockChart(a, b, c) {
57547
57665
  const chart = new StockChart(a, b, c);
57548
- return chart.promise || chart;
57666
+ return chart.promise ?? chart;
57549
57667
  }
57550
57668
  StockChart.stockChart = stockChart;
57551
57669
  /* eslint-enable jsdoc/check-param-names */
@@ -59864,7 +59982,7 @@ var BrokenAxis;
59864
59982
  /** @internal */
59865
59983
  function onSeriesAfterRender() {
59866
59984
  this.drawBreaks(this.xAxis, ['x']);
59867
- this.drawBreaks(this.yAxis, pick(this.pointArrayMap, ['y']));
59985
+ this.drawBreaks(this.yAxis, (this.pointArrayMap ?? ['y']));
59868
59986
  }
59869
59987
  /** @internal */
59870
59988
  function seriesDrawBreaks(axis, keys) {
@@ -59876,7 +59994,7 @@ var BrokenAxis;
59876
59994
  breaks = brokenAxis?.breakArray || [];
59877
59995
  threshold = axis.isXAxis ?
59878
59996
  axis.min :
59879
- pick(series.options.threshold, axis.min);
59997
+ (series.options.threshold ?? axis.min);
59880
59998
  points.forEach(function (point) {
59881
59999
  y = point['stack' + key.toUpperCase()] ??
59882
60000
  point[key];
@@ -60169,7 +60287,8 @@ var BrokenAxis;
60169
60287
  if (Additions.isInBreak(breaks[i], val)) {
60170
60288
  inbrk = true;
60171
60289
  if (!keep) {
60172
- keep = pick(breaks[i].showPoints, !axis.isXAxis);
60290
+ keep =
60291
+ breaks[i].showPoints ?? !axis.isXAxis;
60173
60292
  }
60174
60293
  }
60175
60294
  }
@@ -60352,7 +60471,7 @@ var BrokenAxis;
60352
60471
  }
60353
60472
  };
60354
60473
  }
60355
- if (pick(redraw, true)) {
60474
+ if (redraw ?? true) {
60356
60475
  axis.chart.redraw();
60357
60476
  }
60358
60477
  }
@@ -60371,7 +60490,7 @@ var BrokenAxis;
60371
60490
  /* unused harmony import specifier */ var Highcharts;
60372
60491
  // SPDX-License-Identifier: LicenseRef-Highcharts
60373
60492
  /**
60374
- * @license Highcharts JS v13.0.1 (2026-08-17)
60493
+ * @license Highcharts JS v13.0.2 (2026-08-27)
60375
60494
  * @module highcharts/modules/broken-axis
60376
60495
  * @requires highcharts
60377
60496
  *
@@ -60796,7 +60915,8 @@ function getGroupPixelWidth() {
60796
60915
  // same group pixel width (#334)
60797
60916
  groupPixelWidth = Math.max(groupPixelWidth,
60798
60917
  // Fallback to commonOptions (#9693)
60799
- pick(dgOptions.groupPixelWidth, DataGrouping_DataGroupingDefaults.common.groupPixelWidth));
60918
+ (dgOptions.groupPixelWidth ??
60919
+ DataGrouping_DataGroupingDefaults.common.groupPixelWidth));
60800
60920
  dataLength = (series[i].dataTable.getModified() ||
60801
60921
  series[i].dataTable).rowCount;
60802
60922
  // Execute grouping if the amount of points is greater than the
@@ -60840,7 +60960,7 @@ function onAfterSetScale() {
60840
60960
  function setDataGrouping(dataGrouping, redraw) {
60841
60961
  const axis = this;
60842
60962
  let i;
60843
- redraw = pick(redraw, true);
60963
+ redraw = (redraw ?? true);
60844
60964
  if (!dataGrouping) {
60845
60965
  dataGrouping = {
60846
60966
  forced: false,
@@ -61011,7 +61131,7 @@ function anchorPoints(series, groupedXData, xMax) {
61011
61131
  */
61012
61132
  function DataGroupingSeriesComposition_applyGrouping(hasExtremesChanged) {
61013
61133
  const series = this, chart = series.chart, options = series.options, dataGroupingOptions = options.dataGrouping, groupingEnabled = series.allowDG !== false && dataGroupingOptions &&
61014
- pick(dataGroupingOptions.enabled, chart.options.isStock), reserveSpace = series.reserveSpace(), lastDataGrouping = this.currentDataGrouping;
61134
+ (dataGroupingOptions.enabled ?? chart.options.isStock), reserveSpace = series.reserveSpace(), lastDataGrouping = this.currentDataGrouping;
61015
61135
  let currentDataGrouping, croppedData, revertRequireSorting = false;
61016
61136
  // Data needs to be sorted for dataGrouping
61017
61137
  if (groupingEnabled && !series.requireSorting) {
@@ -61455,7 +61575,7 @@ function onTooltipHeaderFormatter(e) {
61455
61575
  else if (!xDateFormat && dateTimeLabelFormats && xAxis.dateTime) {
61456
61576
  xDateFormat = xAxis.dateTime.getXDateFormat(point.x, tooltipOptions.dateTimeLabelFormats);
61457
61577
  }
61458
- const groupStart = pick(series.groupMap?.[point.index].groupStart, point.key), groupEnd = groupStart + (currentDataGrouping?.totalRange || 0) - 1;
61578
+ const groupStart = series.groupMap?.[point.index].groupStart ?? point.key, groupEnd = groupStart + (currentDataGrouping?.totalRange || 0) - 1;
61459
61579
  formattedKey = time.dateFormat(xDateFormat, groupStart);
61460
61580
  if (xDateFormatEnd) {
61461
61581
  formattedKey += time.dateFormat(xDateFormatEnd, groupEnd);
@@ -61857,7 +61977,7 @@ const DataGroupingComposition = {
61857
61977
  /* unused harmony import specifier */ var datagrouping_src_Highcharts;
61858
61978
  // SPDX-License-Identifier: LicenseRef-Highcharts
61859
61979
  /**
61860
- * @license Highstock JS v13.0.1 (2026-08-17)
61980
+ * @license Highstock JS v13.0.2 (2026-08-27)
61861
61981
  * @module highcharts/modules/datagrouping
61862
61982
  * @requires highcharts
61863
61983
  *
@@ -61942,7 +62062,7 @@ function getAssignedAxis(coords) {
61942
62062
  const extremes = coord.axis.getExtremes(), axisMin = extremes.min, axisMax = extremes.max,
61943
62063
  // Correct axis edges when axis has series
61944
62064
  // with pointRange (like column)
61945
- minPointOffset = pick(coord.axis.minPointOffset, 0);
62065
+ minPointOffset = (coord.axis.minPointOffset ?? 0);
61946
62066
  return isNumber(axisMin) && isNumber(axisMax) &&
61947
62067
  coord.value >= (axisMin - minPointOffset) &&
61948
62068
  coord.value <= (axisMax + minPointOffset) &&
@@ -62055,7 +62175,7 @@ const optionsToObject = (options) => {
62055
62175
  };
62056
62176
  /** @internal */
62057
62177
  const zoomBy = function (chart, howMuch, xAxis, yAxis, mouseX, mouseY, options) {
62058
- const type = pick(options.type, chart.zooming.type, '');
62178
+ const type = (options.type ?? chart.zooming.type ?? '');
62059
62179
  let axes = [];
62060
62180
  if (type === 'x') {
62061
62181
  axes = xAxis;
@@ -62222,7 +62342,7 @@ const MouseWheelZoomComposition = {
62222
62342
  /* unused harmony import specifier */ var mouse_wheel_zoom_src_Highcharts;
62223
62343
  // SPDX-License-Identifier: LicenseRef-Highcharts
62224
62344
  /**
62225
- * @license Highcharts JS v13.0.1 (2026-08-17)
62345
+ * @license Highcharts JS v13.0.2 (2026-08-27)
62226
62346
  * @module highcharts/modules/mouse-wheel-zoom
62227
62347
  * @requires highcharts
62228
62348
  *
@@ -62246,7 +62366,7 @@ mouse_wheel_zoom_src_G.MouseWheelZoom.compose(mouse_wheel_zoom_src_G.Chart);
62246
62366
  /* unused harmony import specifier */ var stock_src_Highcharts;
62247
62367
  // SPDX-License-Identifier: LicenseRef-Highcharts
62248
62368
  /**
62249
- * @license Highstock JS v13.0.1 (2026-08-17)
62369
+ * @license Highstock JS v13.0.2 (2026-08-27)
62250
62370
  * @module highcharts/modules/stock
62251
62371
  * @requires highcharts
62252
62372
  *