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
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: LicenseRef-Highcharts
2
2
  /**
3
- * @license Highcharts Gantt JS v13.0.1 (2026-08-17)
3
+ * @license Highcharts Gantt JS v13.0.2 (2026-08-27)
4
4
  * @module highcharts/highcharts-gantt
5
5
  *
6
6
  * (c) 2017-2026 Highsoft AS
@@ -99,7 +99,7 @@ var Globals;
99
99
  * Constants
100
100
  *
101
101
  * */
102
- Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '13.0.1', Globals.win = (typeof window !== 'undefined' ?
102
+ Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '13.0.2', Globals.win = (typeof window !== 'undefined' ?
103
103
  window :
104
104
  {}), // eslint-disable-line node/no-unsupported-features/es-builtins
105
105
  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 = [
@@ -426,6 +426,29 @@ const ChartDefaults = {
426
426
  * @context Highcharts.Chart
427
427
  * @apioption chart.events.load
428
428
  */
429
+ /**
430
+ * Fires while the chart is panned by mouse drag. Panning must be
431
+ * enabled through [chart.panning](#chart.panning). One parameter,
432
+ * `event`, is passed to the function, containing common event
433
+ * information as well as `event.originalEvent`, the underlying pointer
434
+ * event. Note that the event fires for every mouse move during the
435
+ * drag, not once per gesture.
436
+ *
437
+ * Calling `event.preventDefault()` or returning false prevents the
438
+ * default panning of the axes. In Highcharts Maps, and on ordinal axes
439
+ * in Highcharts Stock, the panning is applied outside the default
440
+ * action and is not prevented.
441
+ *
442
+ * Panning by touch does not fire this event, unless
443
+ * [chart.zooming.singleTouch](#chart.zooming.singleTouch) is enabled and
444
+ * no zoom type is set. Single-finger drags are then handled as mouse
445
+ * drags and fire this event.
446
+ *
447
+ * @type {Highcharts.ChartPanCallbackFunction}
448
+ * @since 7.0.2
449
+ * @context Highcharts.Chart
450
+ * @apioption chart.events.pan
451
+ */
429
452
  /**
430
453
  * Fires when the chart is redrawn, either after a call to
431
454
  * `chart.redraw()` or after an axis, series or point is modified with
@@ -2440,7 +2463,7 @@ function getStyle(el, prop, toInt) {
2440
2463
  const css = win.getComputedStyle(el, void 0); // eslint-disable-line no-undefined
2441
2464
  if (css) {
2442
2465
  style = css.getPropertyValue(prop);
2443
- if (pick(toInt, prop !== 'opacity')) {
2466
+ if (toInt ?? prop !== 'opacity') {
2444
2467
  style = pInt(style);
2445
2468
  }
2446
2469
  }
@@ -2690,7 +2713,7 @@ function merge(extendOrSource, ...sources) {
2690
2713
  function normalizeTickInterval(interval, multiples, magnitude, allowDecimals, hasTickAmount) {
2691
2714
  let i, retInterval = interval;
2692
2715
  // Round to a tenfold of 1, 2, 2.5 or 5
2693
- magnitude = pick(magnitude, getMagnitude(interval));
2716
+ magnitude = (magnitude ?? getMagnitude(interval));
2694
2717
  const normalized = interval / magnitude;
2695
2718
  // Multiples for a linear scale
2696
2719
  if (!multiples) {
@@ -2803,20 +2826,22 @@ function pad(number, length, padder) {
2803
2826
  .replace('-', '')
2804
2827
  .length).join(padder || '0') + number;
2805
2828
  }
2806
- /* eslint-disable jsdoc/check-param-names */
2829
+ /* eslint-disable valid-jsdoc */
2807
2830
  /**
2808
2831
  * Return the first value that is not null or undefined.
2809
2832
  *
2833
+ * @deprecated 13.0.2
2834
+ * Use nullish coalescing (`??`) or explicit fallback logic instead.
2835
+ *
2810
2836
  * @function Highcharts.pick<T>
2811
2837
  *
2812
- * @param {...Array<T|null|undefined>} items
2838
+ * @param {...(T|null|undefined)} args
2813
2839
  * Variable number of arguments to inspect.
2814
2840
  *
2815
2841
  * @return {T}
2816
2842
  * The value of the first argument that is not null or undefined.
2817
2843
  */
2818
- function pick() {
2819
- const args = arguments;
2844
+ function pick(...args) {
2820
2845
  const length = args.length;
2821
2846
  for (let i = 0; i < length; i++) {
2822
2847
  const arg = args[i];
@@ -2825,7 +2850,7 @@ function pick() {
2825
2850
  }
2826
2851
  }
2827
2852
  }
2828
- /* eslint-enable jsdoc/check-param-names */
2853
+ /* eslint-enable valid-jsdoc */
2829
2854
  /**
2830
2855
  * Shortcut for parseInt
2831
2856
  *
@@ -3208,7 +3233,8 @@ function insertItem(item, collection) {
3208
3233
  !collection[i] ||
3209
3234
  // Handle index option, the element to insert has lower index
3210
3235
  (isNumber(indexOption) &&
3211
- indexOption < pick(collection[i].options.index, collection[i]._i)) ||
3236
+ indexOption < (collection[i].options.index ??
3237
+ collection[i]._i)) ||
3212
3238
  // Insert the new item before other internal items
3213
3239
  // (navigator)
3214
3240
  collection[i].options.isInternal) {
@@ -3294,7 +3320,7 @@ const uniqueKey = (function () {
3294
3320
  * State of the serial mode.
3295
3321
  */
3296
3322
  function useSerialIds(mode) {
3297
- return (serialMode = pick(mode, serialMode));
3323
+ return (serialMode = (mode ?? serialMode));
3298
3324
  }
3299
3325
  /* *
3300
3326
  *
@@ -3760,6 +3786,10 @@ const isDateTimeFormatOptions = (obj) => obj.main === void 0;
3760
3786
  *
3761
3787
  * @param {Highcharts.TimeOptions} [options] Time options as defined in
3762
3788
  * [chart.options.time](/highcharts/time).
3789
+ *
3790
+ * @param {Highcharts.LangOptions} [lang]
3791
+ * Language options. When `options.locale` is not set, `lang.locale` is used as
3792
+ * the locale fallback for locale-aware date formatting.
3763
3793
  */
3764
3794
  class TimeBase {
3765
3795
  /* *
@@ -3778,8 +3808,8 @@ class TimeBase {
3778
3808
  };
3779
3809
  this.variableTimezone = false;
3780
3810
  this.Date = TimeBase_win.Date;
3781
- this.update(options);
3782
3811
  this.lang = lang;
3812
+ this.update(options);
3783
3813
  }
3784
3814
  /* *
3785
3815
  *
@@ -3891,7 +3921,9 @@ class TimeBase {
3891
3921
  /**
3892
3922
  * Shorthand to get a cached `Intl.DateTimeFormat` instance.
3893
3923
  */
3894
- dateTimeFormat(options, timestamp, locale = this.options.locale || pageLang) {
3924
+ dateTimeFormat(options, timestamp, locale = (this.options.locale ||
3925
+ this.lang?.locale ||
3926
+ pageLang)) {
3895
3927
  const cacheKey = JSON.stringify(options) + locale;
3896
3928
  if (isString(options)) {
3897
3929
  options = this.str2dtf(options);
@@ -7831,6 +7863,41 @@ const DefaultOptions = {
7831
7863
  * @param {global.Event} event
7832
7864
  * The event that occurred.
7833
7865
  */
7866
+ /**
7867
+ * Gets fired while the chart is panned by mouse drag. Calling
7868
+ * `event.preventDefault()` or returning `false` prevents the default panning
7869
+ * of the axes.
7870
+ *
7871
+ * @callback Highcharts.ChartPanCallbackFunction
7872
+ *
7873
+ * @param {Highcharts.Chart} this
7874
+ * The chart on which the event occurred.
7875
+ *
7876
+ * @param {Highcharts.ChartPanEventObject} event
7877
+ * The event that occurred.
7878
+ */
7879
+ /**
7880
+ * Contains common event information. Through the `originalEvent` property you
7881
+ * can access the pointer event that triggered the panning.
7882
+ *
7883
+ * @interface Highcharts.ChartPanEventObject
7884
+ */ /**
7885
+ * The pointer event that triggered the panning.
7886
+ * @name Highcharts.ChartPanEventObject#originalEvent
7887
+ * @type {Highcharts.PointerEventObject}
7888
+ */ /**
7889
+ * Prevents the default behavior of the event.
7890
+ * @name Highcharts.ChartPanEventObject#preventDefault
7891
+ * @type {Function}
7892
+ */ /**
7893
+ * The event target.
7894
+ * @name Highcharts.ChartPanEventObject#target
7895
+ * @type {Highcharts.Chart}
7896
+ */ /**
7897
+ * The event type.
7898
+ * @name Highcharts.ChartPanEventObject#type
7899
+ * @type {"pan"}
7900
+ */
7834
7901
  /**
7835
7902
  * Fires when the chart is redrawn, either after a call to `chart.redraw()` or
7836
7903
  * after an axis, series or point is modified with the `redraw` option set to
@@ -8206,7 +8273,9 @@ Color.None = new Color(''); // Must be last static for init
8206
8273
  */
8207
8274
  /**
8208
8275
  * A valid color type than can be parsed and handled by Highcharts. It can be a
8209
- * color string, a gradient object, or a pattern object.
8276
+ * color string (including CSS expressions), a gradient object, or a pattern
8277
+ * object. Read more about colors in the [Highcharts
8278
+ * documentation](https://www.highcharts.com/docs/chart-design-and-style/colors).
8210
8279
  *
8211
8280
  * @typedef {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject} Highcharts.ColorType
8212
8281
  */
@@ -8749,7 +8818,8 @@ Fx.timers = [];
8749
8818
  * so it should be moved to the SVGRenderer.
8750
8819
  */
8751
8820
  function setAnimation(animation, chart) {
8752
- chart.renderer.globalAnimation = pick(animation, chart.options.chart.animation, true);
8821
+ chart.renderer.globalAnimation =
8822
+ animation ?? chart.options.chart.animation ?? true;
8753
8823
  }
8754
8824
  /**
8755
8825
  * Get the animation in object form, where a disabled animation is always
@@ -9812,7 +9882,7 @@ function format(str = '', ctx, owner) {
9812
9882
  replacement = `"${replacement}"`;
9813
9883
  }
9814
9884
  }
9815
- str = str.replace(match.find, pick(replacement, ''));
9885
+ str = str.replace(match.find, (replacement ?? ''));
9816
9886
  });
9817
9887
  return hasSub ? format(str, ctx, owner) : str;
9818
9888
  }
@@ -10061,7 +10131,7 @@ var RendererUtilities;
10061
10131
  boxes = boxes.map((box) => ({
10062
10132
  size: box.size,
10063
10133
  targets: [box.target],
10064
- align: pick(box.align, 0.5)
10134
+ align: (box.align ?? 0.5)
10065
10135
  }));
10066
10136
  while (overlapping) {
10067
10137
  // Initial positions: target centered in box
@@ -10219,8 +10289,10 @@ class SVGElement {
10219
10289
  * Property value.
10220
10290
  */
10221
10291
  _defaultGetter(key) {
10222
- let ret = pick(this[key + 'Value'], // Align getter
10223
- this[key], this.element ? this.element.getAttribute(key) : null, 0);
10292
+ let ret = (this[key + 'Value'] ??
10293
+ this[key] ??
10294
+ (this.element ? this.element.getAttribute(key) : null) ??
10295
+ 0);
10224
10296
  if (/^-?[\d\.]+$/.test(ret)) { // Is numerical
10225
10297
  ret = parseFloat(ret);
10226
10298
  }
@@ -10383,7 +10455,7 @@ class SVGElement {
10383
10455
  }
10384
10456
  alignTo = void 0; // Do not use the box
10385
10457
  }
10386
- const alignToBox = pick(alignTo, renderer[alignToKey], renderer),
10458
+ const alignToBox = alignTo ?? renderer[alignToKey] ?? renderer,
10387
10459
  // Default: left align
10388
10460
  x = (alignToBox.x || 0) + (alignOptions.x || 0) +
10389
10461
  ((alignToBox.width || 0) - (alignOptions.width || 0)) *
@@ -10443,7 +10515,7 @@ class SVGElement {
10443
10515
  * Returns the SVGElement for chaining.
10444
10516
  */
10445
10517
  animate(params, options, complete) {
10446
- const animOptions = animObject(pick(options, this.renderer.globalAnimation, true)), deferTime = animOptions.defer;
10518
+ const animOptions = animObject((options ?? this.renderer.globalAnimation ?? true)), deferTime = animOptions.defer;
10447
10519
  // When the page is hidden save resources in the background by not
10448
10520
  // running animation at all (#9749).
10449
10521
  if (SVGElement_doc.hidden) {
@@ -10935,7 +11007,7 @@ class SVGElement {
10935
11007
  .split(','); // Ending comma
10936
11008
  i = v.length;
10937
11009
  while (i--) {
10938
- v[i] = '' + (pInt(v[i]) * pick(strokeWidth, NaN));
11010
+ v[i] = '' + (pInt(v[i]) * (strokeWidth ?? NaN));
10939
11011
  }
10940
11012
  value = v.join(',').replace(/NaN/g, 'none'); // #3226
10941
11013
  this.element.setAttribute('stroke-dasharray', value);
@@ -11075,7 +11147,7 @@ class SVGElement {
11075
11147
  * The bounding box with `x`, `y`, `width` and `height` properties.
11076
11148
  */
11077
11149
  getBBox(reload, rot) {
11078
- 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 &&
11150
+ 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 &&
11079
11151
  SVGElement.prototype.getStyle.call(element, 'font-size')) : (styles.fontSize), cacheKey = this.getBBoxCacheKey([
11080
11152
  renderer.rootFontSize,
11081
11153
  this.textWidth, // #7874, also useHTML
@@ -11601,7 +11673,7 @@ class SVGElement {
11601
11673
  symbolAttr(hash) {
11602
11674
  const wrapper = this;
11603
11675
  SVGElement.symbolCustomAttribs.forEach(function (key) {
11604
- wrapper[key] = pick(hash[key], wrapper[key]);
11676
+ wrapper[key] = (hash[key] ?? wrapper[key]);
11605
11677
  });
11606
11678
  wrapper.attr({
11607
11679
  d: wrapper.renderer.symbols[wrapper.symbolName](wrapper.x, wrapper.y, wrapper.width, wrapper.height, wrapper)
@@ -11641,7 +11713,7 @@ class SVGElement {
11641
11713
  }
11642
11714
  // Replace text content and escape markup
11643
11715
  titleNode.textContent = replaceNested(// Scan #[73]
11644
- pick(value, ''), // #3276, #3895
11716
+ (value ?? ''), // #3276, #3895
11645
11717
  [/<[^>]*>/g, '']).replace(/&lt;/g, '<').replace(/&gt;/g, '>');
11646
11718
  }
11647
11719
  /**
@@ -12419,7 +12491,7 @@ class SVGLabel extends SVG_SVGElement {
12419
12491
  if ((this.textStr && this.bBox.width === 0 && this.bBox.height === 0) || this.rotation) {
12420
12492
  this.updateBoxSize();
12421
12493
  }
12422
- const { padding, height = 0, translateX = 0, translateY = 0, width = 0 } = this, paddingLeft = pick(this.paddingLeft, padding), rotation = rot ?? (this.rotation || 0);
12494
+ const { padding, height = 0, translateX = 0, translateY = 0, width = 0 } = this, paddingLeft = (this.paddingLeft ?? padding), rotation = rot ?? (this.rotation || 0);
12423
12495
  let bBox = {
12424
12496
  width,
12425
12497
  height,
@@ -12472,7 +12544,7 @@ class SVGLabel extends SVG_SVGElement {
12472
12544
  this.attr({
12473
12545
  // Alignment is available now (#3295, 0 not rendered if given
12474
12546
  // as a value)
12475
- text: pick(this.textStr, ''),
12547
+ text: (this.textStr ?? ''),
12476
12548
  x: this.x || 0,
12477
12549
  y: this.y || 0
12478
12550
  });
@@ -12628,8 +12700,8 @@ class SVGLabel extends SVG_SVGElement {
12628
12700
  /** @internal */
12629
12701
  getPaddedWidth() {
12630
12702
  const padding = this.padding;
12631
- const paddingLeft = pick(this.paddingLeft, padding);
12632
- const paddingRight = pick(this.paddingRight, padding);
12703
+ const paddingLeft = (this.paddingLeft ?? padding);
12704
+ const paddingRight = (this.paddingRight ?? padding);
12633
12705
  return ((this.widthSetting || this.bBox.width || 0) +
12634
12706
  paddingLeft +
12635
12707
  paddingRight);
@@ -12730,7 +12802,7 @@ function arc(cx, cy, w, h, options) {
12730
12802
  const arc = [];
12731
12803
  if (options) {
12732
12804
  let start = options.start || 0, end = options.end || 0;
12733
- const rx = pick(options.r, w), ry = pick(options.r, h || w),
12805
+ const rx = (options.r ?? w), ry = (options.r ?? (h || w)),
12734
12806
  // Subtract a small number to prevent cos and sin of start and end
12735
12807
  // from becoming equal on 360 arcs (#1561). See "Arc proximity"
12736
12808
  // tests at samples/unit-tests/svgrenderer/symbol/demo.js
@@ -12740,16 +12812,17 @@ function arc(cx, cy, w, h, options) {
12740
12812
  start = Math.PI / 2;
12741
12813
  end = Math.PI * 2.5 - proximity;
12742
12814
  }
12743
- 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),
12815
+ 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),
12744
12816
  // Proximity takes care of rounding errors around PI (#6971)
12745
- longArc = pick(options.longArc, end - start - Math.PI < proximity ? 0 : 1);
12817
+ longArc = options.longArc ??
12818
+ (end - start - Math.PI < proximity ? 0 : 1);
12746
12819
  let arcSegment = [
12747
12820
  'A', // ArcTo
12748
12821
  rx, // X radius
12749
12822
  ry, // Y radius
12750
12823
  0, // Slanting
12751
12824
  longArc, // Long or short arc
12752
- pick(options.clockwise, 1), // Clockwise
12825
+ (options.clockwise ?? 1), // Clockwise
12753
12826
  // Use a static pixel offset for full circle (#21701)
12754
12827
  cx + (fullCircle ? 0.001 : rx * cosEnd),
12755
12828
  cy + ry * sinEnd
@@ -13280,7 +13353,7 @@ class TextBuilder {
13280
13353
  * @internal
13281
13354
  */
13282
13355
  buildSVG() {
13283
- 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,
13356
+ 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,
13284
13357
  // The buildText code is quite heavy, so if we're not changing
13285
13358
  // something that affects the text, skip it (#6113).
13286
13359
  textCache = [
@@ -13864,7 +13937,7 @@ class SVGRenderer {
13864
13937
  this.url = this.getReferenceURL();
13865
13938
  // Add description
13866
13939
  const desc = this.createElement('desc').add();
13867
- desc.element.appendChild(SVGRenderer_doc.createTextNode('Created with Highcharts 13.0.1'));
13940
+ desc.element.appendChild(SVGRenderer_doc.createTextNode('Created with Highcharts 13.0.2'));
13868
13941
  this.defs = this.createElement('defs').add();
13869
13942
  this.allowHTML = allowHTML;
13870
13943
  this.forExport = forExport;
@@ -14650,7 +14723,7 @@ class SVGRenderer {
14650
14723
  this.attr('height')
14651
14724
  });
14652
14725
  },
14653
- duration: pick(animate, true) ? void 0 : 0
14726
+ duration: (animate ?? true) ? void 0 : 0
14654
14727
  });
14655
14728
  renderer.alignElements();
14656
14729
  }
@@ -14808,8 +14881,8 @@ class SVGRenderer {
14808
14881
  // The image width is not always the same as the symbol width. The
14809
14882
  // image may be centered within the symbol, as is the case when
14810
14883
  // image shapes are used as label backgrounds, for example in flags.
14811
- img.imgwidth = pick(options?.width, symbolSizes[imageSrc]?.width);
14812
- img.imgheight = pick(options?.height, symbolSizes[imageSrc]?.height);
14884
+ img.imgwidth = (options?.width ?? symbolSizes[imageSrc]?.width);
14885
+ img.imgheight = (options?.height ?? symbolSizes[imageSrc]?.height);
14813
14886
  /**
14814
14887
  * Set the size and position
14815
14888
  */
@@ -19288,11 +19361,11 @@ class Tick {
19288
19361
  * @function Highcharts.Tick#addLabel
19289
19362
  */
19290
19363
  addLabel() {
19291
- 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;
19364
+ 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;
19292
19365
  let label = tick.label, dateTimeLabelFormat, dateTimeLabelFormats, i;
19293
19366
  // The context value
19294
19367
  let value = this.parameters.category || (categories ?
19295
- pick(categories[pos], names[pos], pos) :
19368
+ (categories[pos] ?? names[pos] ?? pos) :
19296
19369
  pos);
19297
19370
  if (log && isNumber(value)) {
19298
19371
  value = correctFloat(log.lin2log(value));
@@ -19539,7 +19612,7 @@ class Tick {
19539
19612
  labelOptions.y;
19540
19613
  }
19541
19614
  x = x +
19542
- pick(labelOptions.x, [0, 1, 0, -1][axis.side] * distance) +
19615
+ (labelOptions.x ?? [0, 1, 0, -1][axis.side] * distance) +
19543
19616
  labelOffsetCorrection +
19544
19617
  rotCorr.x -
19545
19618
  (tickmarkOffset && horiz ?
@@ -19594,7 +19667,7 @@ class Tick {
19594
19667
  * @function Highcharts.Tick#handleOverflow
19595
19668
  */
19596
19669
  handleOverflow(xy) {
19597
- 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 = {};
19670
+ 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 = {};
19598
19671
  let modifiedSlotWidth = slotWidth, goRight = 1, leftPos, rightPos, textWidth;
19599
19672
  // Check if the label overshoots the chart spacing box. If it does, move
19600
19673
  // it. If it now overshoots the slotWidth, add ellipsis.
@@ -19661,9 +19734,8 @@ class Tick {
19661
19734
  * @param {number} [opacity]
19662
19735
  */
19663
19736
  render(index, old, opacity) {
19664
- 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;
19665
- const labelOpacity = pick(opacity, tick.label?.newOpacity, // #15528
19666
- 1);
19737
+ 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;
19738
+ const labelOpacity = (opacity ?? tick.label?.newOpacity ?? 1);
19667
19739
  // Anything that is not between `axis.pos` and `axis.pos + axis.length`
19668
19740
  // should not be visible (#20166). The `correctFloat` is for reversed
19669
19741
  // axes in Safari.
@@ -19691,7 +19763,7 @@ class Tick {
19691
19763
  * @param {number} opacity The opacity of the grid line
19692
19764
  */
19693
19765
  renderGridLine(old, opacity) {
19694
- 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;
19766
+ 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;
19695
19767
  let gridLine = tick.gridLine, gridLinePath, gridLineWidth = options.gridLineWidth, gridLineColor = options.gridLineColor, dashStyle = options.gridLineDashStyle;
19696
19768
  if (tick.type === 'minor') {
19697
19769
  gridLineWidth = options.minorGridLineWidth;
@@ -19747,7 +19819,7 @@ class Tick {
19747
19819
  * @param {number} opacity The opacity of the mark
19748
19820
  */
19749
19821
  renderMark(xy, opacity) {
19750
- 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
19822
+ 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
19751
19823
  tickColor = options[type !== 'minor' ? 'tickColor' : 'minorTickColor'];
19752
19824
  let mark = tick.mark;
19753
19825
  const isNewMark = !mark;
@@ -19792,7 +19864,7 @@ class Tick {
19792
19864
  * @param {number} index The index of the tick
19793
19865
  */
19794
19866
  renderLabel(xy, old, opacity, index) {
19795
- 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;
19867
+ 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;
19796
19868
  let show = true;
19797
19869
  if (label && isNumber(x)) {
19798
19870
  label.xy = xy = tick.getLabelPosition(x, y, label, horiz, labelOptions, tickmarkOffset, index, step);
@@ -19897,12 +19969,7 @@ const { deg2rad: Axis_deg2rad } = Core_Globals;
19897
19969
 
19898
19970
 
19899
19971
 
19900
- const getNormalizedTickInterval = (axis, tickInterval) => normalizeTickInterval(tickInterval, void 0, void 0, pick(axis.options.allowDecimals,
19901
- // If the tick interval is greater than 0.5, avoid decimals, as
19902
- // linear axes are often used to render discrete values (#3363). If
19903
- // a tick amount is set, allow decimals by default, as it increases
19904
- // the chances for a good fit.
19905
- tickInterval < 0.5 || axis.tickAmount !== void 0), !!axis.tickAmount);
19972
+ const getNormalizedTickInterval = (axis, tickInterval) => normalizeTickInterval(tickInterval, void 0, void 0, (axis.options.allowDecimals ?? (tickInterval < 0.5 || axis.tickAmount !== void 0)), !!axis.tickAmount);
19906
19973
  extend(Axis_defaultOptions, { xAxis, yAxis: merge(xAxis, yAxis) });
19907
19974
  /* *
19908
19975
  *
@@ -20010,7 +20077,7 @@ class Axis {
20010
20077
  axis.coll = coll;
20011
20078
  fireEvent(this, 'init', { userOptions: userOptions });
20012
20079
  // Needed in setOptions
20013
- axis.opposite = pick(userOptions.opposite, axis.opposite);
20080
+ axis.opposite = (userOptions.opposite ?? axis.opposite);
20014
20081
  /**
20015
20082
  * The side on which the axis is rendered. 0 is top, 1 is right, 2
20016
20083
  * is bottom and 3 is left.
@@ -20018,10 +20085,9 @@ class Axis {
20018
20085
  * @name Highcharts.Axis#side
20019
20086
  * @type {number}
20020
20087
  */
20021
- axis.side = pick(userOptions.side, axis.side, (horiz ?
20088
+ axis.side = (userOptions.side ?? axis.side ?? (horiz ?
20022
20089
  (axis.opposite ? 0 : 2) : // Top : bottom
20023
- (axis.opposite ? 1 : 3)) // Right : left
20024
- );
20090
+ (axis.opposite ? 1 : 3)));
20025
20091
  /**
20026
20092
  * Current options for the axis after merge of defaults and user's
20027
20093
  * options.
@@ -20050,7 +20116,7 @@ class Axis {
20050
20116
  * @name Highcharts.Axis#reversed
20051
20117
  * @type {boolean}
20052
20118
  */
20053
- axis.reversed = pick(options.reversed, axis.reversed);
20119
+ axis.reversed = (options.reversed ?? axis.reversed);
20054
20120
  axis.visible = options.visible;
20055
20121
  axis.zoomEnabled = options.zoomEnabled;
20056
20122
  // Initial categories
@@ -20138,7 +20204,7 @@ class Axis {
20138
20204
  * @name Highcharts.Axis#crosshair
20139
20205
  * @type {boolean|Highcharts.AxisCrosshairOptions}
20140
20206
  */
20141
- const crosshair = pick(options.crosshair, splat(chart.options.tooltip.crosshairs)[isXAxis ? 0 : 1]);
20207
+ const crosshair = options.crosshair ?? splat(chart.options.tooltip.crosshairs)[isXAxis ? 0 : 1];
20142
20208
  axis.crosshair = crosshair === true ? {} : crosshair;
20143
20209
  // Register. Don't add it again on Axis.update().
20144
20210
  if (chart.axes.indexOf(axis) === -1) { //
@@ -20322,8 +20388,8 @@ class Axis {
20322
20388
  seriesDataMax = xExtremes.max;
20323
20389
  }
20324
20390
  if (xData.length) {
20325
- axis.dataMin = Math.min(pick(axis.dataMin, seriesDataMin), seriesDataMin);
20326
- axis.dataMax = Math.max(pick(axis.dataMax, seriesDataMax), seriesDataMax);
20391
+ axis.dataMin = Math.min((axis.dataMin ?? seriesDataMin), seriesDataMin);
20392
+ axis.dataMax = Math.max((axis.dataMax ?? seriesDataMax), seriesDataMax);
20327
20393
  }
20328
20394
  }
20329
20395
  // Get dataMin and dataMax for Y axes, as well as handle
@@ -20338,11 +20404,11 @@ class Axis {
20338
20404
  // doesn't have active y data, we continue with nulls
20339
20405
  if (isNumber(dataExtremes.dataMin)) {
20340
20406
  seriesDataMin = dataExtremes.dataMin;
20341
- axis.dataMin = Math.min(pick(axis.dataMin, seriesDataMin), seriesDataMin);
20407
+ axis.dataMin = Math.min((axis.dataMin ?? seriesDataMin), seriesDataMin);
20342
20408
  }
20343
20409
  if (isNumber(dataExtremes.dataMax)) {
20344
20410
  seriesDataMax = dataExtremes.dataMax;
20345
- axis.dataMax = Math.max(pick(axis.dataMax, seriesDataMax), seriesDataMax);
20411
+ axis.dataMax = Math.max((axis.dataMax ?? seriesDataMax), seriesDataMax);
20346
20412
  }
20347
20413
  // Adjust to threshold
20348
20414
  if (defined(threshold)) {
@@ -20497,7 +20563,7 @@ class Axis {
20497
20563
  translatedValue
20498
20564
  };
20499
20565
  fireEvent(this, 'getPlotLinePath', evt, function (e) {
20500
- translatedValue = pick(translatedValue, axis.translate(value, void 0, void 0, old));
20566
+ translatedValue = translatedValue ?? axis.translate(value, void 0, void 0, old);
20501
20567
  // Keep the translated value within sane bounds, and avoid Infinity
20502
20568
  // to fail the isNumber test (#7709).
20503
20569
  translatedValue = clamp(translatedValue, -1e9, 1e9);
@@ -20586,7 +20652,7 @@ class Axis {
20586
20652
  getMinorTickInterval() {
20587
20653
  const { minorTicks, minorTickInterval } = this.options;
20588
20654
  if (minorTicks === true) {
20589
- return pick(minorTickInterval, 'auto');
20655
+ return (minorTickInterval ?? 'auto');
20590
20656
  }
20591
20657
  if (minorTicks === false) {
20592
20658
  return;
@@ -20869,7 +20935,9 @@ class Axis {
20869
20935
  const seriesPointRange = hasCategories ?
20870
20936
  1 :
20871
20937
  (isXAxis ?
20872
- pick(series.options.pointRange, closestPointRange, 0) :
20938
+ (series.options.pointRange ??
20939
+ closestPointRange ??
20940
+ 0) :
20873
20941
  (axis.axisPointRange || 0)), // #2806
20874
20942
  pointPlacement = series.options.pointPlacement;
20875
20943
  pointRange = Math.max(pointRange, seriesPointRange);
@@ -20953,14 +21021,16 @@ class Axis {
20953
21021
  this.getTickAmount();
20954
21022
  }
20955
21023
  // Min or max set either by zooming/setExtremes or initial options
20956
- hardMin = pick(axis.userMin, time.parse(options.min));
20957
- hardMax = pick(axis.userMax, time.parse(options.max));
21024
+ hardMin = (axis.userMin ?? time.parse(options.min));
21025
+ hardMax = (axis.userMax ?? time.parse(options.max));
20958
21026
  // Linked axis gets the extremes from the parent axis
20959
21027
  if (linkedParent) {
20960
21028
  axis.linkedParent = linkedParent;
20961
21029
  linkedParentExtremes = linkedParent.getExtremes();
20962
- axis.min = pick(linkedParentExtremes.min, linkedParentExtremes.dataMin);
20963
- axis.max = pick(linkedParentExtremes.max, linkedParentExtremes.dataMax);
21030
+ axis.min =
21031
+ linkedParentExtremes.min ?? linkedParentExtremes.dataMin;
21032
+ axis.max =
21033
+ linkedParentExtremes.max ?? linkedParentExtremes.dataMax;
20964
21034
  if (this.type !== linkedParent.type) {
20965
21035
  // Can't link axes of different type
20966
21036
  error(11, true, chart);
@@ -20982,14 +21052,14 @@ class Axis {
20982
21052
  maxPadding = 0;
20983
21053
  }
20984
21054
  }
20985
- axis.min = pick(hardMin, thresholdMin, dataMin);
20986
- axis.max = pick(hardMax, thresholdMax, dataMax);
21055
+ axis.min = (hardMin ?? thresholdMin ?? dataMin);
21056
+ axis.max = (hardMax ?? thresholdMax ?? dataMax);
20987
21057
  }
20988
21058
  if (isNumber(axis.max) && isNumber(axis.min)) {
20989
21059
  if (logarithmic) {
20990
21060
  if (axis.positiveValuesOnly &&
20991
21061
  !secondPass &&
20992
- Math.min(axis.min, pick(dataMin, axis.min)) <= 0) { // #978
21062
+ Math.min(axis.min, (dataMin ?? axis.min)) <= 0) { // #978
20993
21063
  // Can't plot negative values on log axis
20994
21064
  error(10, true, chart);
20995
21065
  }
@@ -21095,16 +21165,13 @@ class Axis {
21095
21165
  axis.tickInterval = tickIntervalOption = linkedParent.tickInterval;
21096
21166
  }
21097
21167
  else {
21098
- axis.tickInterval = pick(tickIntervalOption, this.tickAmount ?
21168
+ axis.tickInterval = tickIntervalOption ?? (this.tickAmount ?
21099
21169
  range / Math.max(this.tickAmount - 1, 1) :
21100
- void 0,
21101
- // For categorized axis, 1 is default, for linear axis use
21102
- // tickPix
21103
- categories ?
21104
- 1 :
21105
- // Don't let it be more than the data range
21106
- range * tickPixelIntervalOption /
21107
- Math.max(axis.len, tickPixelIntervalOption));
21170
+ categories ?
21171
+ 1 :
21172
+ // Don't let it be more than the data range
21173
+ range * tickPixelIntervalOption /
21174
+ Math.max(axis.len, tickPixelIntervalOption));
21108
21175
  }
21109
21176
  // Now we're finished detecting min and max, crop and group series data.
21110
21177
  // This is in turn needed in order to find tick positions in ordinal
@@ -21134,12 +21201,9 @@ class Axis {
21134
21201
  }
21135
21202
  // Before normalizing the tick interval, handle minimum tick interval.
21136
21203
  // This applies only if tickInterval is not defined.
21137
- const minTickInterval = pick(options.minTickInterval,
21138
- // In datetime axes, don't go below the data interval, except when
21139
- // there are scatter-like series involved (#13369).
21140
- dateTime &&
21141
- !axis.series.some((s) => !s.sorted) ?
21142
- axis.closestPointRange : 0);
21204
+ const minTickInterval = options.minTickInterval ?? (dateTime && !axis.series.some((s) => !s.sorted) ?
21205
+ axis.closestPointRange :
21206
+ 0);
21143
21207
  if (!tickIntervalOption &&
21144
21208
  minTickInterval &&
21145
21209
  axis.tickInterval < minTickInterval) {
@@ -21469,7 +21533,7 @@ class Axis {
21469
21533
  * @function Highcharts.Axis#adjustTickAmount
21470
21534
  */
21471
21535
  adjustTickAmount() {
21472
- const axis = this, { finalTickAmt, max, min, options, tickPositions, tickAmount, thresholdAlignment } = axis, currentTickAmount = tickPositions?.length, threshold = pick(axis.threshold, axis.softThreshold ? 0 : null);
21536
+ const axis = this, { finalTickAmt, max, min, options, tickPositions, tickAmount, thresholdAlignment } = axis, currentTickAmount = tickPositions?.length, threshold = axis.threshold ?? (axis.softThreshold ? 0 : null);
21473
21537
  let len, i, tickInterval = axis.tickInterval, thresholdTickIndex;
21474
21538
  const
21475
21539
  // Extend the tickPositions by appending a position
@@ -21705,7 +21769,8 @@ class Axis {
21705
21769
  offsets = options.offsets || [0, 0, 0, 0], horiz = this.horiz,
21706
21770
  // Check for percentage based input values. Rounding fixes problems
21707
21771
  // with column overflow and plot line filtering (#4898, #4899)
21708
- 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));
21772
+ width = this.width = Math.round(relativeLength((options.width ?? chart.plotWidth - offsets[3] + offsets[1]), chart.plotWidth)), height = this.height = Math.round(relativeLength((options.height ??
21773
+ 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));
21709
21774
  // Expose basic values to use in Series object and navigator
21710
21775
  this.bottom = chart.chartHeight - height - top;
21711
21776
  this.right = chart.chartWidth - width - left;
@@ -21816,9 +21881,7 @@ class Axis {
21816
21881
  * An array of tickLength and tickWidth
21817
21882
  */
21818
21883
  tickSize(prefix) {
21819
- const options = this.options, tickWidth = pick(options[prefix === 'tick' ? 'tickWidth' : 'minorTickWidth'],
21820
- // Default to 1 on linear and datetime X axes
21821
- prefix === 'tick' && this.isXAxis && !this.categories ? 1 : 0);
21884
+ const options = this.options, tickWidth = options[prefix === 'tick' ? 'tickWidth' : 'minorTickWidth'] ?? (prefix === 'tick' && this.isXAxis && !this.categories ? 1 : 0);
21822
21885
  let tickLength = options[prefix === 'tick' ? 'tickLength' : 'minorTickLength'], tickSize;
21823
21886
  if (tickWidth && tickLength) {
21824
21887
  // Negate the length
@@ -21905,7 +21968,7 @@ class Axis {
21905
21968
  newTickInterval = getStep(lineHeight * 0.75);
21906
21969
  }
21907
21970
  this.autoRotation = autoRotation;
21908
- this.labelRotation = pick(rotation, isNumber(rotationOption) ? rotationOption : 0);
21971
+ this.labelRotation = rotation ?? (isNumber(rotationOption) ? rotationOption : 0);
21909
21972
  return labelOptions.step ? tickInterval : newTickInterval;
21910
21973
  }
21911
21974
  /**
@@ -22257,7 +22320,7 @@ class Axis {
22257
22320
  titleOffsetOption = axisTitleOptions.offset;
22258
22321
  titleMargin = defined(titleOffsetOption) ?
22259
22322
  0 :
22260
- pick(axisTitleOptions.margin, horiz ? 5 : 10);
22323
+ axisTitleOptions.margin ?? (horiz ? 5 : 10);
22261
22324
  }
22262
22325
  }
22263
22326
  // Render the axis line
@@ -22768,9 +22831,9 @@ class Axis {
22768
22831
  }
22769
22832
  else if (defined(point)) {
22770
22833
  // #3834
22771
- pos = pick(this.coll !== 'colorAxis' ?
22772
- point.crosshairPos : // 3D axis extension
22773
- null, this.isXAxis ?
22834
+ pos = (this.coll !== 'colorAxis' ?
22835
+ point.crosshairPos :
22836
+ null) ?? (this.isXAxis ?
22774
22837
  point.plotX :
22775
22838
  this.len - point.plotY);
22776
22839
  }
@@ -22779,7 +22842,7 @@ class Axis {
22779
22842
  // Value, only used on radial
22780
22843
  value: point && (this.isXAxis ?
22781
22844
  point.x :
22782
- pick(point.stackY, point.y)),
22845
+ (point.stackY ?? point.y ?? void 0)),
22783
22846
  translatedValue: pos
22784
22847
  };
22785
22848
  if (chart.polar) {
@@ -22812,7 +22875,7 @@ class Axis {
22812
22875
  (categorized ? 'category ' : 'thin ') +
22813
22876
  (options.className || ''))
22814
22877
  .attr({
22815
- zIndex: pick(options.zIndex, 2)
22878
+ zIndex: (options.zIndex ?? 2)
22816
22879
  })
22817
22880
  .clip(options.clip === false ?
22818
22881
  void 0 :
@@ -22827,7 +22890,7 @@ class Axis {
22827
22890
  // eslint-disable-next-line max-len
22828
22891
  'var(--highcharts-highlight-color-20)').setOpacity(0.25).get() :
22829
22892
  'var(--highcharts-neutral-color-20)'),
22830
- 'stroke-width': pick(options.width, 1)
22893
+ 'stroke-width': (options.width ?? 1)
22831
22894
  }).css({
22832
22895
  'pointer-events': 'none'
22833
22896
  });
@@ -22893,7 +22956,7 @@ class Axis {
22893
22956
  this.destroy(true);
22894
22957
  this.init(chart, options);
22895
22958
  chart.isDirtyBox = true;
22896
- if (pick(redraw, true)) {
22959
+ if (redraw ?? true) {
22897
22960
  chart.redraw();
22898
22961
  }
22899
22962
  }
@@ -22923,7 +22986,7 @@ class Axis {
22923
22986
  chart.orderItems(coll);
22924
22987
  this.destroy();
22925
22988
  chart.isDirtyBox = true;
22926
- if (pick(redraw, true)) {
22989
+ if (redraw ?? true) {
22927
22990
  chart.redraw();
22928
22991
  }
22929
22992
  }
@@ -23579,8 +23642,10 @@ var LogarithmicAxis;
23579
23642
  tickIntervalOption, tickPixelIntervalOption = options.tickPixelInterval / (minor ? 5 : 1), totalPixelLength = minor ?
23580
23643
  axisLength / axis.tickPositions.length :
23581
23644
  axisLength;
23582
- interval = pick(filteredTickIntervalOption, log.minorAutoInterval, (realMax - realMin) *
23583
- tickPixelIntervalOption / (totalPixelLength || 1));
23645
+ interval = filteredTickIntervalOption ??
23646
+ log.minorAutoInterval ??
23647
+ (realMax - realMin) * tickPixelIntervalOption /
23648
+ (totalPixelLength || 1);
23584
23649
  interval = normalizeTickInterval(interval);
23585
23650
  positions = axis.getLinearTickPositions(interval, realMin, realMax).map(log.log2lin);
23586
23651
  if (!minor) {
@@ -24009,7 +24074,8 @@ class PlotLineOrBand {
24009
24074
  if (!chart.styledMode) {
24010
24075
  if (isLine) {
24011
24076
  attribs.stroke = color || 'var(--highcharts-neutral-color-40)';
24012
- attribs['stroke-width'] = pick(options.width, 1);
24077
+ attribs['stroke-width'] =
24078
+ options.width ?? 1;
24013
24079
  if (options.dashStyle) {
24014
24080
  attribs.dashstyle = options.dashStyle;
24015
24081
  }
@@ -25141,7 +25207,8 @@ class Tooltip {
25141
25207
  'highcharts-label',
25142
25208
  isHeader && 'highcharts-tooltip-header',
25143
25209
  isSplit ? 'highcharts-tooltip-box' : 'highcharts-tooltip',
25144
- !isHeader && 'highcharts-color-' + pick(point.colorIndex, series.colorIndex),
25210
+ !isHeader &&
25211
+ 'highcharts-color-' + (point.colorIndex ?? series.colorIndex),
25145
25212
  seriesOptions?.className
25146
25213
  ].filter(isString).join(' ');
25147
25214
  }
@@ -25326,7 +25393,8 @@ class Tooltip {
25326
25393
  }
25327
25394
  // The far side is right or bottom
25328
25395
  const preferFarSide = !this.followPointer &&
25329
- pick(point.ttBelow, polar ? false : !inverted === flipped), // #4984
25396
+ (point.ttBelow ??
25397
+ (polar ? false : !inverted === flipped)), // #4984
25330
25398
  /*
25331
25399
  * Handle the preferred dimension. When the preferred dimension is
25332
25400
  * tooltip on top or bottom of the point, it will look for space
@@ -25453,7 +25521,7 @@ class Tooltip {
25453
25521
  const tooltip = this;
25454
25522
  // Disallow duplicate timers (#1728, #1766)
25455
25523
  clearTimeouts(this);
25456
- delay = pick(delay, this.options.hideDelay);
25524
+ delay = (delay ?? this.options.hideDelay);
25457
25525
  if (!this.isHidden) {
25458
25526
  this.hideTimer = syncTimeout(function () {
25459
25527
  const label = tooltip.getLabel();
@@ -25556,7 +25624,9 @@ class Tooltip {
25556
25624
  * Split tooltip does not support outside in the first iteration. Should
25557
25625
  * not be too complicated to implement.
25558
25626
  */
25559
- this.outside = pick(options.outside, Boolean(chart.scrollablePixelsX || chart.scrollablePixelsY));
25627
+ this.outside =
25628
+ options.outside ??
25629
+ Boolean(chart.scrollablePixelsX || chart.scrollablePixelsY);
25560
25630
  }
25561
25631
  shouldStickOnContact(pointerEvent) {
25562
25632
  return !!(!this.followPointer &&
@@ -25636,7 +25706,7 @@ class Tooltip {
25636
25706
  point.points = void 0;
25637
25707
  // Register the current series
25638
25708
  const currentSeries = point.series;
25639
- this.distance = pick(currentSeries.tooltipOptions.distance, 16);
25709
+ this.distance = (currentSeries.tooltipOptions.distance ?? 16);
25640
25710
  // Update the inner HTML
25641
25711
  if (text === false) {
25642
25712
  this.hide();
@@ -25909,7 +25979,7 @@ class Tooltip {
25909
25979
  anchorY,
25910
25980
  boxWidth,
25911
25981
  point,
25912
- rank: pick(boxPosition.rank, isHeader ? 1 : 0),
25982
+ rank: boxPosition.rank ?? (isHeader ? 1 : 0),
25913
25983
  size,
25914
25984
  target: boxPosition.y,
25915
25985
  tt,
@@ -27254,7 +27324,7 @@ class Point {
27254
27324
  */
27255
27325
  select(selected, accumulate) {
27256
27326
  const point = this, series = point.series, chart = series.chart;
27257
- selected = pick(selected, !point.selected);
27327
+ selected = (selected ?? !point.selected);
27258
27328
  this.selectedStaging = selected;
27259
27329
  // Fire the event with the default handler
27260
27330
  point.firePointEvent(selected ? 'select' : 'unselect', { accumulate: accumulate }, function () {
@@ -27505,7 +27575,7 @@ class Point {
27505
27575
  });
27506
27576
  halo.attr({
27507
27577
  'class': 'highcharts-halo highcharts-color-' +
27508
- pick(point.colorIndex, series.colorIndex) +
27578
+ (point.colorIndex ?? series.colorIndex) +
27509
27579
  (point.className ? ' ' + point.className : ''),
27510
27580
  'visibility': markerVisibility,
27511
27581
  'zIndex': -1 // #4929, #8276
@@ -28238,7 +28308,7 @@ class Pointer {
28238
28308
  const hoverPoints = [], useExisting = !!(isDirectTouch && existingHoverPoint), filter = function (s) {
28239
28309
  return (s.visible &&
28240
28310
  !(!shared && s.directTouch) && // #3821
28241
- pick(s.options.enableMouseTracking, true));
28311
+ (s.options.enableMouseTracking ?? true));
28242
28312
  };
28243
28313
  let hoverSeries = existingHoverSeries,
28244
28314
  // Which series to look in for the hover point
@@ -28424,8 +28494,8 @@ class Pointer {
28424
28494
  const ePos = (touches ?
28425
28495
  touches.length ?
28426
28496
  touches.item(0) :
28427
- (pick(// #13534
28428
- touches.changedTouches, e.changedTouches))[0] :
28497
+ (touches.changedTouches ??
28498
+ e.changedTouches)[0] :
28429
28499
  e);
28430
28500
  // Get mouse position
28431
28501
  if (!chartPosition) {
@@ -28499,7 +28569,7 @@ class Pointer {
28499
28569
  * @function Highcharts.Pointer#onContainerMouseLeave
28500
28570
  */
28501
28571
  onContainerMouseLeave(e) {
28502
- const { pointer } = Pointer_charts[pick(Pointer.hoverChartIndex, -1)] || {};
28572
+ const { pointer } = Pointer_charts[(Pointer.hoverChartIndex ?? -1)] || {};
28503
28573
  e = this.normalize(e);
28504
28574
  this.onContainerMouseMove(e);
28505
28575
  // #4886, MS Touch end fires mouseleave but with no related target
@@ -28599,7 +28669,7 @@ class Pointer {
28599
28669
  if (e?.touches && this.hasPinchMoved) {
28600
28670
  e?.preventDefault?.();
28601
28671
  }
28602
- Pointer_charts[pick(Pointer.hoverChartIndex, -1)]
28672
+ Pointer_charts[(Pointer.hoverChartIndex ?? -1)]
28603
28673
  ?.pointer
28604
28674
  ?.drop(e);
28605
28675
  }
@@ -29106,7 +29176,7 @@ class Pointer {
29106
29176
  */
29107
29177
  setHoverChartIndex(e) {
29108
29178
  const chart = this.chart;
29109
- const hoverChart = Core_Globals.charts[pick(Pointer.hoverChartIndex, -1)];
29179
+ const hoverChart = Core_Globals.charts[(Pointer.hoverChartIndex ?? -1)];
29110
29180
  if (hoverChart &&
29111
29181
  hoverChart !== chart) {
29112
29182
  const relatedTargetObj = { relatedTarget: chart.container };
@@ -29152,7 +29222,7 @@ class Pointer {
29152
29222
  Math.pow(pinchDown[0].chartY - e.chartY, 2)) >= 16 :
29153
29223
  false;
29154
29224
  }
29155
- if (pick(hasMoved, true)) {
29225
+ if (hasMoved ?? true) {
29156
29226
  this.pinch(e);
29157
29227
  }
29158
29228
  }
@@ -29195,7 +29265,7 @@ class Pointer {
29195
29265
  let zoomType = chart.zooming.type || '', zoomX, zoomY;
29196
29266
  // Look for the pinchType option
29197
29267
  if (/touch/.test(e.type)) {
29198
- zoomType = pick(chart.zooming.pinchType, zoomType);
29268
+ zoomType = (chart.zooming.pinchType ?? zoomType);
29199
29269
  }
29200
29270
  this.zoomX = zoomX = /x/.test(zoomType);
29201
29271
  this.zoomY = zoomY = /y/.test(zoomType);
@@ -29969,7 +30039,7 @@ var LegendSymbol;
29969
30039
  // Draw the marker
29970
30040
  if (markerOptions && markerOptions.enabled !== false && symbolWidth) {
29971
30041
  // Do not allow the marker to be larger than the symbolHeight
29972
- let radius = Math.min(pick(markerOptions.radius, generalRadius), generalRadius);
30042
+ let radius = Math.min((markerOptions.radius ?? generalRadius), generalRadius);
29973
30043
  // Restrict symbol markers size
29974
30044
  if (symbol.indexOf('url') === 0) {
29975
30045
  markerOptions = merge(markerOptions, {
@@ -32990,7 +33060,7 @@ class Series {
32990
33060
  if (chartSeries.length) {
32991
33061
  lastSeries = chartSeries[chartSeries.length - 1];
32992
33062
  }
32993
- series._i = pick(lastSeries?._i, -1) + 1;
33063
+ series._i = (lastSeries?._i ?? -1) + 1;
32994
33064
  series.opacity = series.options.opacity;
32995
33065
  // Insert the series and re-order all series above the insertion
32996
33066
  // point.
@@ -33037,7 +33107,7 @@ class Series {
33037
33107
  // Apply if the series xAxis or yAxis option matches
33038
33108
  // the number of the axis, or if undefined, use the
33039
33109
  // first axis
33040
- if (pick(seriesOptions[coll], 0) === axis.index ||
33110
+ if ((seriesOptions[coll] ?? 0) === axis.index ||
33041
33111
  (typeof seriesOptions[coll] !==
33042
33112
  'undefined' &&
33043
33113
  seriesOptions[coll] === axisOptions.id)) {
@@ -33080,8 +33150,12 @@ class Series {
33080
33150
  * @function Highcharts.Series#hasMarkerChanged
33081
33151
  */
33082
33152
  hasMarkerChanged(options, oldOptions) {
33083
- const marker = options.marker, oldMarker = oldOptions.marker || {};
33084
- return marker && ((oldMarker.enabled && !marker.enabled) ||
33153
+ const marker = options.marker, oldMarker = oldOptions.marker;
33154
+ // Note that `marker` holds the full, merged object including
33155
+ // `plotOptions`, while `oldMarker` is the user-defined series-level
33156
+ // options only. We may need to refactor that in the future if more
33157
+ // issues like #24057 arise.
33158
+ return marker && oldMarker && ((oldMarker.enabled && !marker.enabled) ||
33085
33159
  oldMarker.symbol !== marker.symbol || // #10870, #15946
33086
33160
  oldMarker.height !== marker.height || // #16274
33087
33161
  oldMarker.width !== marker.width // #16274
@@ -33100,7 +33174,8 @@ class Series {
33100
33174
  time.parse(options.pointStart) ??
33101
33175
  0;
33102
33176
  let pointInterval;
33103
- this.pointInterval = pointInterval = pick(this.pointInterval, options.pointInterval, 1);
33177
+ this.pointInterval = pointInterval =
33178
+ this.pointInterval ?? options.pointInterval ?? 1;
33104
33179
  if (relativeXValue && isNumber(x)) {
33105
33180
  pointInterval *= x;
33106
33181
  }
@@ -33172,9 +33247,13 @@ class Series {
33172
33247
  );
33173
33248
  // When shared tooltip, stickyTracking is true by default,
33174
33249
  // unless user says otherwise.
33175
- this.stickyTracking = pick(seriesUserOptions.stickyTracking, userPlotOptionsType.stickyTracking, userPlotOptionsSeries.stickyTracking, (this.tooltipOptions.shared && !this.noSharedTooltip ?
33176
- true :
33177
- options.stickyTracking));
33250
+ this.stickyTracking =
33251
+ seriesUserOptions.stickyTracking ??
33252
+ userPlotOptionsType.stickyTracking ??
33253
+ userPlotOptionsSeries.stickyTracking ??
33254
+ (this.tooltipOptions.shared && !this.noSharedTooltip ?
33255
+ true :
33256
+ options.stickyTracking);
33178
33257
  // Delete marker object if not allowed (#1125)
33179
33258
  if (typeOptions.marker === null) {
33180
33259
  delete options.marker;
@@ -33252,7 +33331,9 @@ class Series {
33252
33331
  if (!value) {
33253
33332
  // Pick up either the colorIndex option, or the series.colorIndex
33254
33333
  // after Series.update()
33255
- setting = pick(prop === 'color' ? this.options.colorIndex : void 0, this[indexName]);
33334
+ setting = prop === 'color' ?
33335
+ (this.options.colorIndex ?? this[indexName]) :
33336
+ this[indexName];
33256
33337
  if (defined(setting)) { // After Series.update()
33257
33338
  i = setting;
33258
33339
  }
@@ -34279,7 +34360,9 @@ class Series {
34279
34360
  yValue = stackValues[1];
34280
34361
  if (lowValue === stackThreshold &&
34281
34362
  stackIndicator.key === stacks[xValue].base) {
34282
- lowValue = pick(isNumber(threshold) ? threshold : yAxis.min);
34363
+ lowValue = isNumber(threshold) ?
34364
+ threshold :
34365
+ yAxis.min;
34283
34366
  }
34284
34367
  // #1200, #1232
34285
34368
  if (yAxis.positiveValuesOnly &&
@@ -34287,7 +34370,7 @@ class Series {
34287
34370
  lowValue <= 0) {
34288
34371
  lowValue = void 0;
34289
34372
  }
34290
- point.total = point.stackTotal = pick(stackItem.total);
34373
+ point.total = point.stackTotal = stackItem.total ?? void 0;
34291
34374
  point.percentage = defined(point.y) && stackItem.total ?
34292
34375
  (point.y / stackItem.total * 100) : void 0;
34293
34376
  point.stackY = yValue;
@@ -34537,7 +34620,9 @@ class Series {
34537
34620
  // Only draw the point if y is defined
34538
34621
  if (shouldDrawMarker) {
34539
34622
  // Shortcuts
34540
- const symbol = pick(pointMarkerOptions.symbol, series.symbol, 'rect');
34623
+ const symbol = pointMarkerOptions.symbol ??
34624
+ series.symbol ??
34625
+ 'rect';
34541
34626
  markerAttribs = series.markerAttribs(point, point.selected ? 'select' : '');
34542
34627
  const isInside = point.isInside !== false;
34543
34628
  if (!graphic &&
@@ -34805,7 +34890,7 @@ class Series {
34805
34890
  // Reset
34806
34891
  zones.forEach((zone) => {
34807
34892
  zone.lineClip = [];
34808
- zone.translated = clamp(axis.toPixels(pick(zone.value, axisMax), true) || 0, 0, len);
34893
+ zone.translated = clamp(axis.toPixels((zone.value ?? axisMax), true) || 0, 0, len);
34809
34894
  });
34810
34895
  // The use of the Color Threshold assumes there are no gaps so it is
34811
34896
  // safe to hide the original graph and area unless it is not
@@ -35461,7 +35546,7 @@ class Series {
35461
35546
  const series = this, seriesOptions = series.options, { chart, data, dataTable: table, xAxis } = series, names = xAxis?.hasNames && xAxis.names, dataOptions = seriesOptions.data, xData = series.getColumn('x');
35462
35547
  let isInTheMiddle, i;
35463
35548
  // Optional redraw, defaults to true
35464
- redraw = pick(redraw, true);
35549
+ redraw = (redraw ?? true);
35465
35550
  // Get options and push the point to xData, yData and series.options. In
35466
35551
  // series.generatePoints the Point instance will be created on demand
35467
35552
  // and pushed to the series.data array.
@@ -35572,7 +35657,7 @@ class Series {
35572
35657
  }
35573
35658
  };
35574
35659
  setAnimation(animation, chart);
35575
- redraw = pick(redraw, true);
35660
+ redraw = (redraw ?? true);
35576
35661
  // Fire the event with a default handler of removing the point
35577
35662
  if (point) {
35578
35663
  point.firePointEvent('remove', null, remove);
@@ -35615,7 +35700,7 @@ class Series {
35615
35700
  // Redraw
35616
35701
  chart.isDirtyLegend = chart.isDirtyBox = true;
35617
35702
  chart.linkSeries(keepEvents);
35618
- if (pick(redraw, true)) {
35703
+ if (redraw ?? true) {
35619
35704
  chart.redraw(animation);
35620
35705
  }
35621
35706
  }
@@ -35832,7 +35917,7 @@ class Series {
35832
35917
  series.isDirtyData = true;
35833
35918
  }
35834
35919
  fireEvent(this, 'afterUpdate');
35835
- if (pick(redraw, true)) {
35920
+ if (redraw ?? true) {
35836
35921
  chart.redraw(keepPoints ? void 0 : false);
35837
35922
  }
35838
35923
  }
@@ -35849,12 +35934,12 @@ class Series {
35849
35934
  * @internal
35850
35935
  */
35851
35936
  hasOptionChanged(optionName) {
35852
- 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]);
35937
+ const chart = this.chart, option = this.options[optionName], plotOptions = chart.options.plotOptions, oldOption = this.userOptions[optionName], plotOptionsOption = (plotOptions?.[this.type]?.[optionName] ?? plotOptions?.series?.[optionName]);
35853
35938
  // Check if `plotOptions` are defined already, #19203
35854
35939
  if (oldOption && !defined(plotOptionsOption)) {
35855
35940
  return option !== oldOption;
35856
35941
  }
35857
- return option !== pick(plotOptionsOption, option);
35942
+ return option !== (plotOptionsOption ?? option);
35858
35943
  }
35859
35944
  /**
35860
35945
  * Runs on mouse over the series graphical items.
@@ -35928,7 +36013,8 @@ class Series {
35928
36013
  const series = this, { graph, options } = series, { inactiveOtherPoints, states: stateOptions = {} } = options,
35929
36014
  // By default a quick animation to hover/inactive,
35930
36015
  // slower to un-hover
35931
- stateAnimation = pick(stateOptions[state || 'normal']?.animation, series.chart.options.chart.animation);
36016
+ stateAnimation = stateOptions[state || 'normal']?.animation ??
36017
+ series.chart.options.chart.animation;
35932
36018
  let { lineWidth, opacity } = options;
35933
36019
  state = state || '';
35934
36020
  if (series.state !== state) {
@@ -36814,7 +36900,7 @@ class Legend {
36814
36900
  * @param {Highcharts.LegendOptions} options
36815
36901
  */
36816
36902
  setOptions(options) {
36817
- const padding = pick(options.padding, 8);
36903
+ const padding = (options.padding ?? 8);
36818
36904
  /**
36819
36905
  * Legend options.
36820
36906
  *
@@ -36831,7 +36917,7 @@ class Legend {
36831
36917
  this.itemMarginBottom = options.itemMarginBottom;
36832
36918
  this.padding = padding;
36833
36919
  this.initialItemY = padding - 5; // 5 is pixels above the text
36834
- this.symbolWidth = pick(options.symbolWidth, 16);
36920
+ this.symbolWidth = (options.symbolWidth ?? 16);
36835
36921
  this.pages = [];
36836
36922
  this.proximate = options.layout === 'proximate' && !this.chart.inverted;
36837
36923
  // #12705: baseline has to be reset on every update
@@ -36865,7 +36951,7 @@ class Legend {
36865
36951
  }
36866
36952
  this.destroy();
36867
36953
  chart.isDirtyLegend = chart.isDirtyBox = true;
36868
- if (pick(redraw, true)) {
36954
+ if (redraw ?? true) {
36869
36955
  chart.redraw();
36870
36956
  }
36871
36957
  fireEvent(this, 'afterUpdate', { redraw });
@@ -37103,7 +37189,7 @@ class Legend {
37103
37189
  * The item to render.
37104
37190
  */
37105
37191
  renderItem(item) {
37106
- 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 ?
37192
+ 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 ?
37107
37193
  item.series :
37108
37194
  item, seriesOptions = series.options, showCheckbox = (!!legend.createCheckboxForItem &&
37109
37195
  seriesOptions &&
@@ -37149,9 +37235,11 @@ class Legend {
37149
37235
  legend.fontMetrics.f + 3 + legend.itemMarginTop;
37150
37236
  label.attr('y', legend.baseline);
37151
37237
  legend.symbolHeight =
37152
- pick(options.symbolHeight, legend.fontMetrics.f);
37238
+ (options.symbolHeight ?? legend.fontMetrics.f);
37153
37239
  if (options.squareSymbol) {
37154
- legend.symbolWidth = pick(options.symbolWidth, Math.max(legend.symbolHeight, 16));
37240
+ legend.symbolWidth =
37241
+ options.symbolWidth ??
37242
+ Math.max(legend.symbolHeight, 16);
37155
37243
  itemExtraWidth = legend.symbolWidth + symbolPadding +
37156
37244
  itemDistance + (showCheckbox ? 20 : 0);
37157
37245
  if (ltr) {
@@ -37203,7 +37291,7 @@ class Legend {
37203
37291
  * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item
37204
37292
  */
37205
37293
  layoutItem(item) {
37206
- 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 &&
37294
+ 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 &&
37207
37295
  this.totalItemWidth > maxLegendWidth) ?
37208
37296
  this.maxItemWidth :
37209
37297
  item.itemWidth, legendItem = item.legendItem || {};
@@ -37257,7 +37345,9 @@ class Legend {
37257
37345
  const seriesOptions = series?.options;
37258
37346
  // Handle showInLegend. If the series is linked to another series,
37259
37347
  // defaults to false.
37260
- if (series && pick(seriesOptions.showInLegend, !defined(seriesOptions.linkedTo) ? void 0 : false, true)) {
37348
+ if (series &&
37349
+ (seriesOptions.showInLegend ??
37350
+ (!defined(seriesOptions.linkedTo)))) {
37261
37351
  // Use points or series for the legend item depending on
37262
37352
  // legendType
37263
37353
  allItems = allItems.concat(series.legendItem?.labels ||
@@ -37539,7 +37629,7 @@ class Legend {
37539
37629
  * @function Highcharts.Legend#handleOverflow
37540
37630
  */
37541
37631
  handleOverflow(legendHeight) {
37542
- 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) {
37632
+ 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) {
37543
37633
  if (typeof height === 'number') {
37544
37634
  clipRect.attr({
37545
37635
  height: height
@@ -37585,7 +37675,7 @@ class Legend {
37585
37675
  navOptions.enabled !== false) {
37586
37676
  this.clipHeight = clipHeight =
37587
37677
  Math.max(spaceHeight - 20 - this.titleHeight - padding, 0);
37588
- this.currentPage = pick(this.currentPage, 1);
37678
+ this.currentPage = (this.currentPage ?? 1);
37589
37679
  this.fullHeight = legendHeight;
37590
37680
  // Fill pages with Y positions so that the top of each a legend item
37591
37681
  // defines the scroll top for each page (#2098)
@@ -37745,7 +37835,7 @@ class Legend {
37745
37835
  this.currentPage = currentPage;
37746
37836
  this.positionCheckboxes();
37747
37837
  // Fire event after scroll animation is complete
37748
- const animOptions = animObject(pick(animation, chart.renderer.globalAnimation, true));
37838
+ const animOptions = animObject((animation ?? chart.renderer.globalAnimation ?? true));
37749
37839
  syncTimeout(() => {
37750
37840
  fireEvent(this, 'afterScroll', { currentPage });
37751
37841
  }, animOptions.duration);
@@ -38186,7 +38276,7 @@ class Chart {
38186
38276
  */
38187
38277
  static chart(a, b, c) {
38188
38278
  const chart = new Chart(a, b, c);
38189
- return chart.promise || chart;
38279
+ return chart.promise ?? chart;
38190
38280
  }
38191
38281
  // Implementation
38192
38282
  constructor(a,
@@ -38227,10 +38317,10 @@ class Chart {
38227
38317
  const chart = this, options = chart.options.chart, zooming = options.zooming;
38228
38318
  chart.zooming = {
38229
38319
  ...zooming,
38230
- type: pick(options.zoomType, zooming.type),
38231
- key: pick(options.zoomKey, zooming.key),
38232
- pinchType: pick(options.pinchType, zooming.pinchType),
38233
- singleTouch: pick(options.zoomBySingleTouch, zooming.singleTouch, false),
38320
+ type: (options.zoomType ?? zooming.type),
38321
+ key: (options.zoomKey ?? zooming.key),
38322
+ pinchType: (options.pinchType ?? zooming.pinchType),
38323
+ singleTouch: options.zoomBySingleTouch ?? zooming.singleTouch ?? false,
38234
38324
  resetButton: merge(zooming.resetButton, options.resetZoomButton)
38235
38325
  };
38236
38326
  }
@@ -38782,7 +38872,7 @@ class Chart {
38782
38872
  // inspect the generated series.points.
38783
38873
  series.getPointsCollection()
38784
38874
  .forEach((point) => {
38785
- if (pick(point.selectedStaging, point.selected)) {
38875
+ if (point.selectedStaging ?? point.selected) {
38786
38876
  acc.push(point);
38787
38877
  }
38788
38878
  });
@@ -39220,7 +39310,7 @@ class Chart {
39220
39310
  chartWidth = chart.chartWidth;
39221
39311
  if (!chart.styledMode) {
39222
39312
  css(container, {
39223
- width: pick(optionsChart.style?.width, chartWidth + 'px')
39313
+ width: (optionsChart.style?.width ?? chartWidth + 'px')
39224
39314
  });
39225
39315
  }
39226
39316
  }
@@ -39863,7 +39953,7 @@ class Chart {
39863
39953
  const mockTick = new Axis_Tick(axis, 0, '', true), label = mockTick.createLabel('x', labels);
39864
39954
  mockTick.destroy();
39865
39955
  if (label &&
39866
- pick(labels.reserveSpace, !isNumber(options.crossing))) {
39956
+ (labels.reserveSpace ?? !isNumber(options.crossing))) {
39867
39957
  expectedSpace = label.getBBox().height +
39868
39958
  labels.distance +
39869
39959
  Math.max(isNumber(offset) ? offset : 0, 0);
@@ -40198,7 +40288,7 @@ class Chart {
40198
40288
  const chart = this;
40199
40289
  let series;
40200
40290
  if (options) { // <- not necessary
40201
- redraw = pick(redraw, true); // Defaults to true
40291
+ redraw = (redraw ?? true); // Defaults to true
40202
40292
  fireEvent(chart, 'addSeries', { options: options }, function () {
40203
40293
  series = chart.initSeries(options);
40204
40294
  chart.isDirtyLegend = true;
@@ -40289,7 +40379,7 @@ class Chart {
40289
40379
  */
40290
40380
  createAxis(coll, options) {
40291
40381
  const axis = new Axis_Axis(this, options.axis, coll);
40292
- if (pick(options.redraw, true)) {
40382
+ if (options.redraw ?? true) {
40293
40383
  this.redraw(options.animation);
40294
40384
  }
40295
40385
  return axis;
@@ -40337,7 +40427,7 @@ class Chart {
40337
40427
  }
40338
40428
  loadingDiv.className = 'highcharts-loading';
40339
40429
  // Update text
40340
- HTML_AST.setElementHTML(loadingSpan, pick(str, options.lang.loading, ''));
40430
+ HTML_AST.setElementHTML(loadingSpan, (str ?? options.lang.loading ?? ''));
40341
40431
  if (!chart.styledMode) {
40342
40432
  // Update visuals
40343
40433
  css(loadingDiv, extend(loadingStyle, { zIndex: 10 }));
@@ -40575,7 +40665,7 @@ class Chart {
40575
40665
  }
40576
40666
  // No match by id found, match by index instead
40577
40667
  if (!item && chart[coll]) {
40578
- item = chart[coll][pick(newOptions.index, i)];
40668
+ item = chart[coll][(newOptions.index ?? i)];
40579
40669
  // Check if we grabbed an item with an existing but
40580
40670
  // different id (#13541). Check that the item in this
40581
40671
  // position is not internal (navigator).
@@ -40788,7 +40878,7 @@ class Chart {
40788
40878
  fireEvent(this, 'transform', params);
40789
40879
  let hasZoomed = params.hasZoomed || false, displayButton, isAnyAxisPanning;
40790
40880
  for (const axis of axes) {
40791
- 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),
40881
+ 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),
40792
40882
  // If fingers pinched very close on this axis, treat as pan
40793
40883
  scale = Math.abs(toLength) < 10 ?
40794
40884
  1 :
@@ -41652,7 +41742,7 @@ class StackItem {
41652
41742
  r: options.borderRadius || 0,
41653
41743
  text: str,
41654
41744
  // Set default padding to 5 as it is in dataLabels #12308
41655
- padding: pick(options.padding, 5),
41745
+ padding: (options.padding ?? 5),
41656
41746
  visibility: 'hidden' // Hidden until setOffset is called
41657
41747
  };
41658
41748
  if (!chart.styledMode) {
@@ -41686,7 +41776,7 @@ class StackItem {
41686
41776
  }), { verticalAlign } = alignOptions;
41687
41777
  if (label && stackBox) {
41688
41778
  const labelBox = label.getBBox(void 0, 0), padding = label.padding;
41689
- let isJustify = pick(options.overflow, 'justify') === 'justify', visible;
41779
+ let isJustify = (options.overflow ?? 'justify') === 'justify', visible;
41690
41780
  // Reset alignOptions property after justify #12337
41691
41781
  alignOptions.x = options.x || 0;
41692
41782
  alignOptions.y = options.y || 0;
@@ -41723,7 +41813,7 @@ class StackItem {
41723
41813
  rotationOriginY: labelBox.height / 2
41724
41814
  });
41725
41815
  // Check if the dataLabel should be visible.
41726
- if (pick(!isJustify && options.crop, true)) {
41816
+ if (((!isJustify && options.crop) ?? true)) {
41727
41817
  visible =
41728
41818
  isNumber(label.x) &&
41729
41819
  isNumber(label.y) &&
@@ -41757,7 +41847,7 @@ class StackItem {
41757
41847
  getStackBox(stackBoxProps) {
41758
41848
  const stackItem = this, axis = this.axis, chart = axis.chart, { boxTop, defaultX, xOffset, width, boxBottom } = stackBoxProps, totalStackValue = axis.stacking.usePercentage ?
41759
41849
  100 :
41760
- 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 ||
41850
+ (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 ||
41761
41851
  (isNumber(axis.min) &&
41762
41852
  axis.logarithmic &&
41763
41853
  axis.logarithmic.lin2log(axis.min)) ||
@@ -41870,7 +41960,7 @@ function chartGetStacks() {
41870
41960
  if (series.options.stacking && series.reserveSpace()) {
41871
41961
  series.stackKey = [
41872
41962
  series.type,
41873
- pick(series.options.stack, ''),
41963
+ (series.options.stack ?? ''),
41874
41964
  inverted ? xAxisOptions.top : xAxisOptions.left,
41875
41965
  inverted ? xAxisOptions.height : xAxisOptions.width
41876
41966
  ].join(',');
@@ -42033,7 +42123,7 @@ function seriesSetStackedPoints(axis, stackingParam) {
42033
42123
  stack = stacks[key][x];
42034
42124
  if (y !== null) {
42035
42125
  stack.points[pointKey] = stack.points[series.index] = [
42036
- pick(stack.cumulative, stackThreshold)
42126
+ (stack.cumulative ?? stackThreshold)
42037
42127
  ];
42038
42128
  // Record the base of the stack
42039
42129
  if (!defined(stack.cumulative)) {
@@ -42081,7 +42171,7 @@ function seriesSetStackedPoints(axis, stackingParam) {
42081
42171
  stack.cumulative = (total || 1) - 1;
42082
42172
  }
42083
42173
  else {
42084
- stack.cumulative = correctFloat(pick(stack.cumulative, stackThreshold) + yNumber);
42174
+ stack.cumulative = correctFloat((stack.cumulative ?? stackThreshold) + yNumber);
42085
42175
  }
42086
42176
  stack.total = total;
42087
42177
  if (y !== null) {
@@ -43096,8 +43186,7 @@ class AreaSeries extends AreaSeries_LineSeries {
43096
43186
  */
43097
43187
  getGraphPath(points) {
43098
43188
  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
43099
- yAxis.getThreshold(options.threshold)), connectNulls = pick(// #10574
43100
- options.connectNulls, stacking === 'percent'),
43189
+ yAxis.getThreshold(options.threshold)), connectNulls = (options.connectNulls ?? stacking === 'percent'),
43101
43190
  // To display null points in underlying stacked series, this
43102
43191
  // series graph must be broken, and the area also fall down to
43103
43192
  // fill the gap left by the null point. #2069
@@ -43150,9 +43239,9 @@ class AreaSeries extends AreaSeries_LineSeries {
43150
43239
  // Treat points with undefined plotY as null (e.g. non-positive
43151
43240
  // values on logarithmic axis, #18422)
43152
43241
  isNull = points[i].isNull || !defined(points[i].plotY);
43153
- plotX = pick(points[i].rectPlotX, points[i].plotX);
43242
+ plotX = (points[i].rectPlotX ?? points[i].plotX);
43154
43243
  yBottom = stacking ?
43155
- pick(points[i].yBottom, translatedThreshold) :
43244
+ (points[i].yBottom ?? translatedThreshold) :
43156
43245
  translatedThreshold;
43157
43246
  if (!isNull || connectNulls) {
43158
43247
  if (!connectNulls) {
@@ -43490,10 +43579,10 @@ class SplineSeries extends SplineSeries_LineSeries {
43490
43579
  }
43491
43580
  const ret = [
43492
43581
  'C',
43493
- pick(lastPoint.rightContX, lastPoint.plotX, 0),
43494
- pick(lastPoint.rightContY, lastPoint.plotY, 0),
43495
- pick(leftContX, plotX, 0),
43496
- pick(leftContY, plotY, 0),
43582
+ (lastPoint.rightContX ?? lastPoint.plotX ?? 0),
43583
+ (lastPoint.rightContY ?? lastPoint.plotY ?? 0),
43584
+ (leftContX ?? plotX ?? 0),
43585
+ (leftContY ?? plotY ?? 0),
43497
43586
  plotX,
43498
43587
  plotY
43499
43588
  ];
@@ -44462,7 +44551,7 @@ class ColumnSeries extends Series_Series {
44462
44551
  xAxis.tickInterval ||
44463
44552
  1), // #2610
44464
44553
  xAxis.len // #1535
44465
- ), 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,
44554
+ ), 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,
44466
44555
  // #1251, #3737
44467
44556
  colIndex = (series.columnIndex || 0) + (reverseStacks ? 1 : 0), pointXOffset = pointPadding +
44468
44557
  (groupPadding +
@@ -45026,7 +45115,7 @@ var DataLabel;
45026
45115
  // that parts of the align box is inside the plot area
45027
45116
  // (#12370). When stacking, it is always inside regardless
45028
45117
  // of the option (#15148).
45029
- pick(options.inside, !!this.options.stacking) &&
45118
+ (options.inside ?? !!this.options.stacking) &&
45030
45119
  alignTo &&
45031
45120
  chart.isInsidePlot(plotX, inverted ?
45032
45121
  alignTo.x + 1 :
@@ -45129,8 +45218,8 @@ var DataLabel;
45129
45218
  // zIndex: 20
45130
45219
  // }).add();
45131
45220
  // chart.renderer.circle(
45132
- // chart.plotLeft + pick(dataLabel.alignAttr.x, 0),
45133
- // chart.plotTop + pick(dataLabel.alignAttr.y, 0),
45221
+ // chart.plotLeft + (dataLabel.alignAttr.x ?? 0),
45222
+ // chart.plotTop + (dataLabel.alignAttr.y ?? 0),
45134
45223
  // 2
45135
45224
  // ).attr({
45136
45225
  // fill: 'red',
@@ -45313,7 +45402,7 @@ var DataLabel;
45313
45402
  if (labelEnabled) {
45314
45403
  // Create individual options structure that can be
45315
45404
  // extended without affecting others
45316
- formatString = pick(labelOptions[point.formatPrefix + 'Format'], labelOptions.format);
45405
+ formatString = (labelOptions[point.formatPrefix + 'Format'] ?? labelOptions.format);
45317
45406
  labelText = defined(formatString) ?
45318
45407
  DataLabel_format(formatString, point, chart) :
45319
45408
  (labelOptions[point.formatPrefix + 'Formatter'] ||
@@ -45321,7 +45410,9 @@ var DataLabel;
45321
45410
  rotation = labelOptions.rotation;
45322
45411
  if (!chart.styledMode) {
45323
45412
  // Determine the color
45324
- style.color = pick(labelOptions.color, style.color, isString(series.color) ? series.color : void 0, 'var(--highcharts-neutral-color-100)');
45413
+ style.color = (isString(labelOptions.color) ?
45414
+ labelOptions.color :
45415
+ void 0) ?? style.color ?? (isString(series.color) ? series.color : void 0) ?? 'var(--highcharts-neutral-color-100)';
45325
45416
  // Get automated contrast color
45326
45417
  if (style.color === 'contrast') {
45327
45418
  if (backgroundColor !== 'none') {
@@ -46122,14 +46213,15 @@ class ScatterSeries extends ScatterSeries_LineSeries {
46122
46213
  return rand - Math.floor(rand);
46123
46214
  }
46124
46215
  if (jitter) {
46125
- this.points.forEach(function (point, i) {
46126
- ['x', 'y'].forEach(function (dim, j) {
46216
+ this.points.forEach((point, i) => {
46217
+ ['x', 'y'].forEach((dim, j) => {
46127
46218
  if (jitter[dim] && !point.isNull) {
46128
- const plotProp = `plot${dim.toUpperCase()}`, axis = series[`${dim}Axis`], translatedJitter = jitter[dim] *
46129
- axis.transA;
46219
+ const plotProp = `plot${dim.toUpperCase()}`, axis = series[`${dim}Axis`];
46130
46220
  if (axis && !axis.logarithmic) {
46131
46221
  // Identify the outer bounds of the jitter range
46132
- const min = Math.max(0, (point[plotProp] || 0) - translatedJitter), max = Math.min(axis.len, (point[plotProp] || 0) + translatedJitter);
46222
+ // (#25054)
46223
+ const translatedJitter = jitter[dim] * axis.transA *
46224
+ (axis.reversed ? -1 : 1), min = (point[plotProp] || 0) - translatedJitter, max = (point[plotProp] || 0) + translatedJitter;
46133
46225
  // Find a random position within this range
46134
46226
  point[plotProp] = min +
46135
46227
  (max - min) * unrandom(i + j * len);
@@ -46234,11 +46326,13 @@ var CenteredUtilities;
46234
46326
  innerSize = parseFloat(innerSize);
46235
46327
  }
46236
46328
  const positions = [
46237
- pick(centerOption?.[0], '50%'),
46238
- pick(centerOption?.[1], '50%'),
46329
+ (centerOption?.[0] ?? '50%'),
46330
+ (centerOption?.[1] ?? '50%'),
46239
46331
  // Prevent from negative values
46240
- pick(size && size < 0 ? void 0 : options.size, '100%'),
46241
- pick(innerSize && innerSize < 0 ? void 0 : options.innerSize || 0, '0%')
46332
+ ((size && size < 0 ? void 0 : options.size) ?? '100%'),
46333
+ ((innerSize && innerSize < 0 ?
46334
+ void 0 :
46335
+ options.innerSize || 0) ?? '0%')
46242
46336
  ];
46243
46337
  for (i = 0; i < 4; ++i) {
46244
46338
  value = positions[i];
@@ -46440,7 +46534,7 @@ class PiePoint extends Series_Point {
46440
46534
  const series = this.series, chart = series.chart;
46441
46535
  setAnimation(animation, chart);
46442
46536
  // Redraw is true by default
46443
- redraw = pick(redraw, true);
46537
+ redraw = (redraw ?? true);
46444
46538
  this.sliced = this.options.sliced = sliced ?? !this.sliced;
46445
46539
  // Update options.data
46446
46540
  if (series.options.data) {
@@ -47245,7 +47339,8 @@ class PieSeries extends Series_Series {
47245
47339
  // Start values
47246
47340
  graphic.attr({
47247
47341
  // Animate from inner radius (#779)
47248
- r: pick(point.startR, (series.center && series.center[3] / 2)),
47342
+ r: point.startR ??
47343
+ (series.center && series.center[3] / 2),
47249
47344
  start: startAngleRad,
47250
47345
  end: startAngleRad
47251
47346
  });
@@ -47886,7 +47981,7 @@ var PieDataLabel_ColumnDataLabel;
47886
47981
  labelPosition.computed.x = x;
47887
47982
  labelPosition.computed.y = y - topOffset;
47888
47983
  // Detect overflowing data labels
47889
- if (pick(dataLabelOptions.crop, true)) {
47984
+ if (dataLabelOptions.crop ?? true) {
47890
47985
  dataLabelWidth = dataLabel.getBBox().width;
47891
47986
  let sideOverflow;
47892
47987
  // Overflow left
@@ -48402,7 +48497,10 @@ function OverlappingDataLabels_onChartRender() {
48402
48497
  if (point.visible) {
48403
48498
  (point.dataLabels || []).forEach((label) => {
48404
48499
  const options = label.options || {};
48405
- label.labelrank = pick(options.labelrank, point.labelrank, point.shapeArgs?.height); // #4118
48500
+ label.labelrank =
48501
+ options.labelrank ??
48502
+ point.labelrank ??
48503
+ point.shapeArgs?.height; // #4118
48406
48504
  // #21725: Sync target positions for generic overlap
48407
48505
  // checking. During animations (e.g., toggling a
48408
48506
  // point), DOM positions may overlap. We force
@@ -48891,10 +48989,12 @@ var Responsive;
48891
48989
  */
48892
48990
  function matchResponsiveRule(rule, matches) {
48893
48991
  const condition = rule.condition, fn = condition.callback || function () {
48894
- return (this.chartWidth <= pick(condition.maxWidth, Number.MAX_VALUE) &&
48895
- this.chartHeight <= pick(condition.maxHeight, Number.MAX_VALUE) &&
48896
- this.chartWidth >= pick(condition.minWidth, 0) &&
48897
- this.chartHeight >= pick(condition.minHeight, 0));
48992
+ return (this.chartWidth <=
48993
+ (condition.maxWidth ?? Number.MAX_VALUE) &&
48994
+ this.chartHeight <=
48995
+ (condition.maxHeight ?? Number.MAX_VALUE) &&
48996
+ this.chartWidth >= (condition.minWidth ?? 0) &&
48997
+ this.chartHeight >= (condition.minHeight ?? 0));
48898
48998
  };
48899
48999
  if (fn.call(this, this)) {
48900
49000
  matches.push(rule._id);
@@ -49108,7 +49208,7 @@ var Responsive;
49108
49208
  ;// ./code/es-modules/masters/highcharts.src.js
49109
49209
  // SPDX-License-Identifier: LicenseRef-Highcharts
49110
49210
  /**
49111
- * @license Highcharts JS v13.0.1 (2026-08-17)
49211
+ * @license Highcharts JS v13.0.2 (2026-08-27)
49112
49212
  * @module highcharts/highcharts
49113
49213
  *
49114
49214
  * (c) 2009-2026 Highsoft AS
@@ -49185,7 +49285,12 @@ G.SVGElement = SVG_SVGElement;
49185
49285
  G.SVGRenderer = SVG_SVGRenderer;
49186
49286
  G.Templating = Core_Templating;
49187
49287
  G.Tick = Axis_Tick;
49188
- G.Time = Core_Time;
49288
+ G.Time = class extends Core_Time {
49289
+ constructor(options, lang) {
49290
+ const defaultOptions = Defaults.getOptions();
49291
+ super(options ?? defaultOptions.time, lang ?? defaultOptions.lang);
49292
+ }
49293
+ };
49189
49294
  G.Tooltip = Core_Tooltip;
49190
49295
  // Utilities
49191
49296
  G.addEvent = addEvent;
@@ -50185,7 +50290,7 @@ function onChartAfterSetChartSize() {
50185
50290
  navigator.top = this.plotTop + scrollButtonSize;
50186
50291
  }
50187
50292
  else {
50188
- navigator.left = pick(xAxis.left, this.plotLeft + scrollButtonSize);
50293
+ navigator.left = (xAxis.left ?? this.plotLeft + scrollButtonSize);
50189
50294
  navigator.top = navigator.navigatorOptions.top ||
50190
50295
  this.chartHeight -
50191
50296
  navigator.height -
@@ -50201,7 +50306,7 @@ function onChartAfterSetChartSize() {
50201
50306
  legendOptions.enabled &&
50202
50307
  !legendOptions.floating) ?
50203
50308
  legend.legendHeight +
50204
- pick(legendOptions.margin, 10) :
50309
+ (legendOptions.margin ?? 10) :
50205
50310
  0) -
50206
50311
  (this.titleOffset ? this.titleOffset[2] : 0);
50207
50312
  }
@@ -50226,7 +50331,7 @@ function onChartAfterUpdate(event) {
50226
50331
  (this.options.navigator.enabled ||
50227
50332
  this.options.scrollbar.enabled)) {
50228
50333
  this.scroller = this.navigator = new NavigatorConstructor(this);
50229
- if (pick(event.redraw, true)) {
50334
+ if (event.redraw ?? true) {
50230
50335
  this.redraw(event.animation); // #7067
50231
50336
  }
50232
50337
  }
@@ -50404,7 +50509,7 @@ class NavigatorAxisAdditions {
50404
50509
  */
50405
50510
  toFixedRange(pxMin, pxMax, fixedMin, fixedMax) {
50406
50511
  const axis = this.axis, halfPointRange = (axis.pointRange || 0) / 2;
50407
- let newMin = pick(fixedMin, axis.translate(pxMin, true, !axis.horiz)), newMax = pick(fixedMax, axis.translate(pxMax, true, !axis.horiz));
50512
+ let newMin = fixedMin ?? axis.translate(pxMin, true, !axis.horiz), newMax = fixedMax ?? axis.translate(pxMax, true, !axis.horiz);
50408
50513
  // Add/remove half point range to/from the extremes (#1172)
50409
50514
  if (!defined(fixedMin)) {
50410
50515
  newMin = correctFloat(newMin + halfPointRange);
@@ -51179,8 +51284,8 @@ var ScrollbarAxis;
51179
51284
  ScrollbarAxis.compose = compose;
51180
51285
  /** @internal */
51181
51286
  function getExtremes(axis) {
51182
- const axisMin = pick(axis.options?.min, axis.min);
51183
- const axisMax = pick(axis.options?.max, axis.max);
51287
+ const axisMin = (axis.options?.min ?? axis.min);
51288
+ const axisMax = (axis.options?.max ?? axis.max);
51184
51289
  return {
51185
51290
  axisMin,
51186
51291
  axisMax,
@@ -51719,7 +51824,7 @@ class Scrollbar {
51719
51824
  buttonToMaxClick(e) {
51720
51825
  const scroller = this;
51721
51826
  const range = ((scroller.to - scroller.from) *
51722
- pick(scroller.options.step, 0.2));
51827
+ (scroller.options.step ?? 0.2));
51723
51828
  scroller.updatePosition(scroller.from + range, scroller.to + range);
51724
51829
  fireEvent(scroller, 'changed', {
51725
51830
  from: scroller.from,
@@ -51731,7 +51836,7 @@ class Scrollbar {
51731
51836
  buttonToMinClick(e) {
51732
51837
  const scroller = this;
51733
51838
  const range = correctFloat(scroller.to - scroller.from) *
51734
- pick(scroller.options.step, 0.2);
51839
+ (scroller.options.step ?? 0.2);
51735
51840
  scroller.updatePosition(correctFloat(scroller.from - range), correctFloat(scroller.to - range));
51736
51841
  fireEvent(scroller, 'changed', {
51737
51842
  from: scroller.from,
@@ -51863,10 +51968,11 @@ class Scrollbar {
51863
51968
  scroller.renderer = renderer;
51864
51969
  scroller.userOptions = options;
51865
51970
  scroller.options = merge(Scrollbar_ScrollbarDefaults, Scrollbar_defaultOptions.scrollbar, options);
51866
- scroller.options.margin = pick(scroller.options.margin, 10);
51971
+ scroller.options.margin = (scroller.options.margin ?? 10);
51867
51972
  scroller.chart = chart;
51868
51973
  // Backward compatibility
51869
- scroller.size = pick(scroller.options.size, scroller.options.height);
51974
+ scroller.size = scroller.options.size ??
51975
+ scroller.options.height;
51870
51976
  // Init
51871
51977
  if (options.enabled) {
51872
51978
  scroller.render();
@@ -52156,9 +52262,9 @@ class Scrollbar {
52156
52262
  * @function Highcharts.Scrollbar#shouldUpdateExtremes
52157
52263
  */
52158
52264
  shouldUpdateExtremes(eventType) {
52159
- return (pick(this.options.liveRedraw, Core_Globals.svg &&
52265
+ return ((this.options.liveRedraw ?? (Core_Globals.svg &&
52160
52266
  !Core_Globals.isTouchDevice &&
52161
- !this.chart.boosted) ||
52267
+ !this.chart.boosted)) ||
52162
52268
  // Mouseup always should change extremes
52163
52269
  eventType === 'mouseup' ||
52164
52270
  eventType === 'touchend' ||
@@ -52678,18 +52784,18 @@ class Navigator {
52678
52784
  // it. For example hidden series, but visible navigator (#6022).
52679
52785
  if (rendered) {
52680
52786
  pxMin = 0;
52681
- pxMax = pick(xAxis.width, scrollbarXAxis.width);
52787
+ pxMax = (xAxis.width ?? scrollbarXAxis.width);
52682
52788
  }
52683
52789
  else {
52684
52790
  return;
52685
52791
  }
52686
52792
  }
52687
- navigator.left = pick(xAxis.left,
52688
- // In case of scrollbar only, without navigator
52689
- chart.plotLeft + scrollButtonSize +
52793
+ navigator.left = (xAxis.left ?? chart.plotLeft + scrollButtonSize +
52690
52794
  (inverted ? chart.plotWidth : 0));
52691
- let zoomedMax = navigator.size = navigatorSize = pick(xAxis.len, (inverted ? chart.plotHeight : chart.plotWidth) -
52692
- 2 * scrollButtonSize);
52795
+ let zoomedMax = navigator.size = navigatorSize =
52796
+ xAxis.len ??
52797
+ (inverted ? chart.plotHeight : chart.plotWidth) -
52798
+ 2 * scrollButtonSize;
52693
52799
  if (inverted) {
52694
52800
  navigatorWidth = scrollbarHeight;
52695
52801
  }
@@ -52697,8 +52803,8 @@ class Navigator {
52697
52803
  navigatorWidth = navigatorSize + 2 * scrollButtonSize;
52698
52804
  }
52699
52805
  // Get the pixel position of the handles
52700
- pxMin = pick(pxMin, xAxis.toPixels(min, true));
52701
- pxMax = pick(pxMax, xAxis.toPixels(max, true));
52806
+ pxMin = (pxMin ?? xAxis.toPixels(min, true));
52807
+ pxMax = (pxMax ?? xAxis.toPixels(max, true));
52702
52808
  // Verify (#1851, #2238)
52703
52809
  if (!isNumber(pxMin) || Math.abs(pxMin) === Infinity) {
52704
52810
  pxMin = 0;
@@ -52977,11 +53083,10 @@ class Navigator {
52977
53083
  navigator.render(0, 0, chartX - dragOffset, chartX - dragOffset + range);
52978
53084
  }
52979
53085
  if (navigator.hasDragged &&
52980
- pick(navigator.scrollbarOptions?.liveRedraw,
53086
+ (navigator.scrollbarOptions?.liveRedraw ?? (
52981
53087
  // By default, don't run live redraw on touch
52982
53088
  // devices or if the chart is in boost.
52983
- !Navigator_isTouchDevice &&
52984
- !this.chart.boosted)) {
53089
+ !Navigator_isTouchDevice && !this.chart.boosted))) {
52985
53090
  e.DOMType = e.type;
52986
53091
  setTimeout(function () {
52987
53092
  navigator.onMouseUp(e);
@@ -53170,8 +53275,10 @@ class Navigator {
53170
53275
  offset: 0,
53171
53276
  index: yAxisIndex,
53172
53277
  isInternal: true,
53173
- reversed: pick((navigatorOptions.yAxis &&
53174
- navigatorOptions.yAxis.reversed), (chart.yAxis[0] && chart.yAxis[0].reversed), false), // #14060
53278
+ reversed: ((navigatorOptions.yAxis &&
53279
+ navigatorOptions.yAxis.reversed) ??
53280
+ (chart.yAxis[0] && chart.yAxis[0].reversed) ??
53281
+ false), // #14060
53175
53282
  zoomEnabled: false
53176
53283
  }, chart.inverted ? {
53177
53284
  width: height
@@ -53257,7 +53364,9 @@ class Navigator {
53257
53364
  */
53258
53365
  setOpposite() {
53259
53366
  const navigatorOptions = this.navigatorOptions, navigatorEnabled = this.navigatorEnabled, chart = this.chart;
53260
- this.opposite = pick(navigatorOptions.opposite, Boolean(!navigatorEnabled && chart.inverted)); // #6262
53367
+ this.opposite =
53368
+ navigatorOptions.opposite ??
53369
+ Boolean(!navigatorEnabled && chart.inverted); // #6262
53261
53370
  }
53262
53371
  /**
53263
53372
  * Get the union data extremes of the chart - the outer data extremes of the
@@ -53271,9 +53380,8 @@ class Navigator {
53271
53380
  let ret;
53272
53381
  if (!returnFalseOnNoBaseSeries || baseAxis.dataMin !== null) {
53273
53382
  ret = {
53274
- dataMin: pick(// #4053
53275
- time.parse(navAxisOptions?.min), numExt('min', time.parse(baseAxisOptions.min), baseAxis.dataMin, navAxis.dataMin, navAxis.min)),
53276
- dataMax: pick(time.parse(navAxisOptions?.max), numExt('max', time.parse(baseAxisOptions.max), baseAxis.dataMax, navAxis.dataMax, navAxis.max))
53383
+ dataMin: (time.parse(navAxisOptions?.min) ?? numExt('min', time.parse(baseAxisOptions.min), baseAxis.dataMin, navAxis.dataMin, navAxis.min)),
53384
+ dataMax: (time.parse(navAxisOptions?.max) ?? numExt('max', time.parse(baseAxisOptions.max), baseAxis.dataMax, navAxis.dataMax, navAxis.max))
53277
53385
  };
53278
53386
  }
53279
53387
  return ret;
@@ -53388,11 +53496,9 @@ class Navigator {
53388
53496
  userNavOptions.dataLabels = splat(userNavOptions.dataLabels);
53389
53497
  mergedNavSeriesOptions = merge(baseOptions, navSeriesMixin, userNavOptions, baseNavigatorOptions);
53390
53498
  // Once nav series type is resolved, pick correct pointRange
53391
- mergedNavSeriesOptions.pointRange = pick(
53392
- // Strictly set pointRange in options
53393
- userNavOptions.pointRange, baseNavigatorOptions.pointRange,
53394
- // Fallback to default values, e.g. `null` for column
53395
- Navigator_defaultOptions.plotOptions[mergedNavSeriesOptions.type || 'line']?.pointRange);
53499
+ mergedNavSeriesOptions.pointRange = (userNavOptions.pointRange ??
53500
+ baseNavigatorOptions.pointRange ??
53501
+ Navigator_defaultOptions.plotOptions[mergedNavSeriesOptions.type || 'line']?.pointRange);
53396
53502
  // Merge data separately. Do a slice to avoid mutating the
53397
53503
  // navigator options from base series (#4923).
53398
53504
  const navigatorSeriesData = baseNavigatorOptions.data || userNavOptions.data, navigatorSeriesDataTable = baseNavigatorOptions.dataTable ||
@@ -53552,7 +53658,7 @@ class Navigator {
53552
53658
  * @function Highcharts.Navigator#modifyBaseAxisExtremes
53553
53659
  */
53554
53660
  modifyBaseAxisExtremes() {
53555
- 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,
53661
+ 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,
53556
53662
  // When the extremes have been set by range selector button, don't
53557
53663
  // stick to min or max. The range selector buttons will handle the
53558
53664
  // extremes. (#5489)
@@ -53604,8 +53710,8 @@ class Navigator {
53604
53710
  Math.round(navigator.zoomedMax) >= Math.round(navigator.size);
53605
53711
  // If the scrollbar is scrolled all the way to the right, keep right as
53606
53712
  // new data comes in, unless user set navigator.stickToMax to false.
53607
- navigator.stickToMax = pick(this.chart.options.navigator &&
53608
- this.chart.options.navigator.stickToMax, shouldStickToMax);
53713
+ navigator.stickToMax = (this.chart.options.navigator &&
53714
+ this.chart.options.navigator.stickToMax) ?? shouldStickToMax;
53609
53715
  navigator.stickToMin = navigator.shouldStickToMin(baseSeries, navigator);
53610
53716
  // Set the navigator series data to the new data of the base series
53611
53717
  if (navigatorSeries && !navigator.hasNavigatorData) {
@@ -54380,7 +54486,7 @@ function axisMinFromRange() {
54380
54486
  this.chart.setFixedRange(max - min);
54381
54487
  }
54382
54488
  }
54383
- const dataMin = pick(this.dataMin, Number.MIN_VALUE);
54489
+ const dataMin = (this.dataMin ?? Number.MIN_VALUE);
54384
54490
  if (!isNumber(min)) {
54385
54491
  min = dataMin;
54386
54492
  }
@@ -54389,7 +54495,7 @@ function axisMinFromRange() {
54389
54495
  if (typeof range === 'undefined') { // #4501
54390
54496
  range = getTrueRange(min, rangeOptions.count);
54391
54497
  }
54392
- this.newMax = Math.min(min + range, pick(this.dataMax, Number.MAX_VALUE));
54498
+ this.newMax = Math.min(min + range, (this.dataMax ?? Number.MAX_VALUE));
54393
54499
  }
54394
54500
  if (!isNumber(max)) {
54395
54501
  min = void 0;
@@ -54810,7 +54916,7 @@ class RangeSelector {
54810
54916
  }
54811
54917
  else if (isNumber(newMin) || isNumber(newMax)) {
54812
54918
  // Existing axis object. Set extremes after render time.
54813
- baseAxis.setExtremes(newMin, newMax, pick(redraw, true), void 0, // Auto animation
54919
+ baseAxis.setExtremes(newMin, newMax, (redraw ?? true), void 0, // Auto animation
54814
54920
  {
54815
54921
  trigger: 'rangeSelectorButton',
54816
54922
  rangeSelectorButton: rangeOptions
@@ -55045,8 +55151,8 @@ class RangeSelector {
55045
55151
  year: 365
55046
55152
  }[type] * 24 * 36e5 * count;
55047
55153
  }
55048
- rangeOptions._offsetMin = pick(rangeOptions.offsetMin, 0);
55049
- rangeOptions._offsetMax = pick(rangeOptions.offsetMax, 0);
55154
+ rangeOptions._offsetMin = (rangeOptions.offsetMin ?? 0);
55155
+ rangeOptions._offsetMax = (rangeOptions.offsetMax ?? 0);
55050
55156
  rangeOptions._range +=
55051
55157
  rangeOptions._offsetMax - rangeOptions._offsetMin;
55052
55158
  }
@@ -55357,7 +55463,7 @@ class RangeSelector {
55357
55463
  };
55358
55464
  }
55359
55465
  createElements() {
55360
- 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;
55466
+ 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;
55361
55467
  if (options.enabled === false) {
55362
55468
  return;
55363
55469
  }
@@ -55498,10 +55604,14 @@ class RangeSelector {
55498
55604
  // Create a label for dropdown select element
55499
55605
  const userButtonTheme = chart.userOptions.rangeSelector?.buttonTheme;
55500
55606
  this.dropdownLabel = renderer.button('', 0, 0, () => { }, merge(buttonTheme, {
55501
- 'stroke-width': pick(buttonTheme['stroke-width'], 0),
55607
+ 'stroke-width': (buttonTheme['stroke-width'] ?? 0),
55502
55608
  width: 'auto',
55503
- paddingLeft: pick(options.buttonTheme.paddingLeft, userButtonTheme?.padding, 8),
55504
- paddingRight: pick(options.buttonTheme.paddingRight, userButtonTheme?.padding, 8)
55609
+ paddingLeft: options.buttonTheme.paddingLeft ??
55610
+ userButtonTheme?.padding ??
55611
+ 8,
55612
+ paddingRight: options.buttonTheme.paddingRight ??
55613
+ userButtonTheme?.padding ??
55614
+ 8
55505
55615
  }), states && states.hover, states && states.select, states && states.disabled)
55506
55616
  .hide()
55507
55617
  .add(this.group);
@@ -55682,7 +55792,7 @@ class RangeSelector {
55682
55792
  legendOptions.enabled &&
55683
55793
  !legendOptions.floating ?
55684
55794
  (chart.legend.legendHeight +
55685
- pick(legendOptions.margin, 10)) :
55795
+ (legendOptions.margin ?? 10)) :
55686
55796
  0);
55687
55797
  groupHeight = groupHeight + legendHeight - 20;
55688
55798
  translateY = (alignTranslateY -
@@ -55828,7 +55938,7 @@ class RangeSelector {
55828
55938
  // Align button group
55829
55939
  buttonGroup.align({
55830
55940
  y: buttonPosition.y,
55831
- width: pick(width, this.initialButtonGroupWidth),
55941
+ width: (width ?? this.initialButtonGroupWidth),
55832
55942
  align: buttonPosition.align,
55833
55943
  x: translateX
55834
55944
  }, true, chart.spacingBox);
@@ -55847,7 +55957,7 @@ class RangeSelector {
55847
55957
  if (zoomText && zoomText.visibility !== 'hidden') {
55848
55958
  // #8769, allow dynamically updating margins
55849
55959
  zoomText[verb]({
55850
- x: pick(plotLeft + buttonPosition.x, plotLeft)
55960
+ x: plotLeft + (buttonPosition.x ?? 0)
55851
55961
  });
55852
55962
  // Button start position
55853
55963
  buttonLeft += buttonPosition.x +
@@ -56311,7 +56421,6 @@ const PathUtilities = {
56311
56421
  * */
56312
56422
 
56313
56423
 
56314
-
56315
56424
  /* *
56316
56425
  *
56317
56426
  * Constants
@@ -56508,7 +56617,8 @@ function straight(start, end) {
56508
56617
  */
56509
56618
  const simpleConnect = function (start, end, options) {
56510
56619
  const segments = [], chartObstacles = options.chartObstacles, startObstacleIx = findObstacleFromPoint(chartObstacles, start), endObstacleIx = findObstacleFromPoint(chartObstacles, end);
56511
- let endSegment, dir = pick(options.startDirectionX, abs(end.x - start.x) > abs(end.y - start.y)) ? 'x' : 'y', startObstacle, endObstacle, waypoint, useMax, endPoint;
56620
+ let endSegment, dir = (options.startDirectionX ??
56621
+ (abs(end.x - start.x) > abs(end.y - start.y))) ? 'x' : 'y', startObstacle, endObstacle, waypoint, useMax, endPoint;
56512
56622
  // eslint-disable-next-line valid-jsdoc
56513
56623
  /**
56514
56624
  * Return a clone of a point with a property set from a target object,
@@ -56650,7 +56760,8 @@ function fastAvoid(start, end, options) {
56650
56760
  - When going around the end obstacle we should not always go the
56651
56761
  shortest route, rather pick the one closer to the end point
56652
56762
  */
56653
- const dirIsX = pick(options.startDirectionX, abs(end.x - start.x) > abs(end.y - start.y)), dir = dirIsX ? 'x' : 'y', endSegments = [],
56763
+ const dirIsX = options.startDirectionX ??
56764
+ (abs(end.x - start.x) > abs(end.y - start.y)), dir = dirIsX ? 'x' : 'y', endSegments = [],
56654
56765
  // Boundaries to stay within. If beyond soft boundary, prefer to
56655
56766
  // change direction ASAP. If at hard max, always change immediately.
56656
56767
  metrics = options.obstacleMetrics, softMinX = PathfinderAlgorithms_min(start.x, end.x) - metrics.maxWidth - 10, softMaxX = PathfinderAlgorithms_max(start.x, end.x) + metrics.maxWidth + 10, softMinY = PathfinderAlgorithms_min(start.y, end.y) - metrics.maxHeight - 10, softMaxY = PathfinderAlgorithms_max(start.y, end.y) + metrics.maxHeight + 10;
@@ -57604,7 +57715,7 @@ function Pathfinder_getPointBB(point) {
57604
57715
  */
57605
57716
  function calculateObstacleDistance(a, b, bbMargin) {
57606
57717
  // Count the distance even if we are slightly off
57607
- const margin = pick(bbMargin, 10), yOverlap = a.yMax + margin > b.yMin - margin &&
57718
+ const margin = (bbMargin ?? 10), yOverlap = a.yMax + margin > b.yMin - margin &&
57608
57719
  a.yMin - margin < b.yMax + margin, xOverlap = a.xMax + margin > b.xMin - margin &&
57609
57720
  a.xMin - margin < b.xMax + margin, xDistance = yOverlap ? (a.xMin > b.xMax ? a.xMin - b.xMax : b.xMin - a.xMax) : Infinity, yDistance = xOverlap ? (a.yMin > b.yMax ? a.yMin - b.yMax : b.yMin - a.yMax) : Infinity;
57610
57721
  // If the rectangles collide, try recomputing with smaller margin.
@@ -57849,7 +57960,7 @@ class Pathfinder {
57849
57960
  * with xMin, xMax, yMin and yMax properties.
57850
57961
  */
57851
57962
  getChartObstacles(options) {
57852
- const series = this.chart.series, margin = pick(options.algorithmMargin, 0);
57963
+ const series = this.chart.series, margin = (options.algorithmMargin ?? 0);
57853
57964
  let obstacles = [], calculatedMargin;
57854
57965
  for (let i = 0, sLen = series.length; i < sLen; ++i) {
57855
57966
  if (series[i].visible && !series[i].options.isInternal) {
@@ -57985,7 +58096,7 @@ Pathfinder.prototype.algorithms = PathfinderAlgorithms;
57985
58096
  /* unused harmony import specifier */ var Highcharts;
57986
58097
  // SPDX-License-Identifier: LicenseRef-Highcharts
57987
58098
  /**
57988
- * @license Highcharts Gantt JS v13.0.1 (2026-08-17)
58099
+ * @license Highcharts Gantt JS v13.0.2 (2026-08-27)
57989
58100
  * @module highcharts/modules/pathfinder
57990
58101
  * @requires highcharts
57991
58102
  *
@@ -58116,7 +58227,7 @@ function chartAdjustHeight() {
58116
58227
  /* unused harmony import specifier */ var static_scale_src_Highcharts;
58117
58228
  // SPDX-License-Identifier: LicenseRef-Highcharts
58118
58229
  /**
58119
- * @license Highcharts Gantt JS v13.0.1 (2026-08-17)
58230
+ * @license Highcharts Gantt JS v13.0.2 (2026-08-27)
58120
58231
  * @module highcharts/modules/static-scale
58121
58232
  * @requires highcharts
58122
58233
  *
@@ -58932,7 +59043,7 @@ Series_SeriesRegistry.registerSeriesType('xrange', XRangeSeries);
58932
59043
  /* unused harmony import specifier */ var xrange_src_Highcharts;
58933
59044
  // SPDX-License-Identifier: LicenseRef-Highcharts
58934
59045
  /**
58935
- * @license Highcharts JS v13.0.1 (2026-08-17)
59046
+ * @license Highcharts JS v13.0.2 (2026-08-27)
58936
59047
  * @module highcharts/modules/xrange
58937
59048
  * @requires highcharts
58938
59049
  *
@@ -59377,7 +59488,7 @@ var BrokenAxis;
59377
59488
  /** @internal */
59378
59489
  function onSeriesAfterRender() {
59379
59490
  this.drawBreaks(this.xAxis, ['x']);
59380
- this.drawBreaks(this.yAxis, pick(this.pointArrayMap, ['y']));
59491
+ this.drawBreaks(this.yAxis, (this.pointArrayMap ?? ['y']));
59381
59492
  }
59382
59493
  /** @internal */
59383
59494
  function seriesDrawBreaks(axis, keys) {
@@ -59389,7 +59500,7 @@ var BrokenAxis;
59389
59500
  breaks = brokenAxis?.breakArray || [];
59390
59501
  threshold = axis.isXAxis ?
59391
59502
  axis.min :
59392
- pick(series.options.threshold, axis.min);
59503
+ (series.options.threshold ?? axis.min);
59393
59504
  points.forEach(function (point) {
59394
59505
  y = point['stack' + key.toUpperCase()] ??
59395
59506
  point[key];
@@ -59682,7 +59793,8 @@ var BrokenAxis;
59682
59793
  if (Additions.isInBreak(breaks[i], val)) {
59683
59794
  inbrk = true;
59684
59795
  if (!keep) {
59685
- keep = pick(breaks[i].showPoints, !axis.isXAxis);
59796
+ keep =
59797
+ breaks[i].showPoints ?? !axis.isXAxis;
59686
59798
  }
59687
59799
  }
59688
59800
  }
@@ -59865,7 +59977,7 @@ var BrokenAxis;
59865
59977
  }
59866
59978
  };
59867
59979
  }
59868
- if (pick(redraw, true)) {
59980
+ if (redraw ?? true) {
59869
59981
  axis.chart.redraw();
59870
59982
  }
59871
59983
  }
@@ -59937,7 +60049,7 @@ function applyGridOptions(axis) {
59937
60049
  options.labels = {};
59938
60050
  }
59939
60051
  */
59940
- options.labels.align = pick(options.labels.align, 'center');
60052
+ options.labels.align = (options.labels.align ?? 'center');
59941
60053
  // @todo: Check against tickLabelPlacement between/on etc
59942
60054
  /* Prevents adding the last tick label if the axis is not a category
59943
60055
  axis.
@@ -60481,8 +60593,8 @@ function onAfterSetOptions(e) {
60481
60593
  _________________________
60482
60594
  Into this: |_____|_____|_____|_____|
60483
60595
  ^ ^ */
60484
- options.minPadding = pick(userOptions.minPadding, 0);
60485
- options.maxPadding = pick(userOptions.maxPadding, 0);
60596
+ options.minPadding = (userOptions.minPadding ?? 0);
60597
+ options.maxPadding = (userOptions.maxPadding ?? 0);
60486
60598
  }
60487
60599
  // If borderWidth is set, then use its value for tick and
60488
60600
  // line width.
@@ -61001,7 +61113,7 @@ function getNode(id, parent, level, data, mapOfIdToChildren, options) {
61001
61113
  }
61002
61114
  // Call getNode recursively on the children. Calculate the height of the
61003
61115
  // node, and the number of descendants.
61004
- const children = ((mapOfIdToChildren[id] || [])).map((child) => {
61116
+ const children = (mapOfIdToChildren[id] || []).map((child) => {
61005
61117
  const node = getNode(child.id, id, (level + 1), child, mapOfIdToChildren, options), childStart = child.start || NaN, childEnd = (child.milestone === true ?
61006
61118
  childStart :
61007
61119
  child.end ||
@@ -61130,7 +61242,7 @@ function renderLabelIcon(tick, params) {
61130
61242
  }
61131
61243
  /** @internal */
61132
61244
  function wrapGetLabelPosition(proceed, x, y, label, horiz, labelOptions, tickmarkOffset, index, step) {
61133
- const tick = this, lbOptions = pick(tick.options?.labels, labelOptions), pos = tick.pos, axis = tick.axis, isTreeGrid = axis.type === 'treegrid', result = proceed.apply(tick, [x, y, label, horiz, lbOptions, tickmarkOffset, index, step]);
61245
+ const tick = this, lbOptions = (tick.options?.labels ?? labelOptions), pos = tick.pos, axis = tick.axis, isTreeGrid = axis.type === 'treegrid', result = proceed.apply(tick, [x, y, label, horiz, lbOptions, tickmarkOffset, index, step]);
61134
61246
  let mapOfPosToGridNode, node, level;
61135
61247
  if (isTreeGrid) {
61136
61248
  const { width = 0, padding = axis.linkedParent ? 0 : 5 } = (lbOptions && isObject(lbOptions.symbol, true) ?
@@ -61151,7 +61263,7 @@ function wrapGetLabelPosition(proceed, x, y, label, horiz, labelOptions, tickmar
61151
61263
  }
61152
61264
  /** @internal */
61153
61265
  function wrapRenderLabel(proceed) {
61154
- const tick = this, { pos, axis, label, treeGrid: tickGrid, options: tickOptions } = tick, icon = tickGrid?.labelIcon, labelElement = label?.element, { treeGrid: axisGrid, options: axisOptions, chart, tickPositions } = axis, mapOfPosToGridNode = axisGrid.mapOfPosToGridNode, labelOptions = pick(tickOptions?.labels, axisOptions?.labels), symbolOptions = (labelOptions && isObject(labelOptions.symbol, true) ?
61266
+ const tick = this, { pos, axis, label, treeGrid: tickGrid, options: tickOptions } = tick, icon = tickGrid?.labelIcon, labelElement = label?.element, { treeGrid: axisGrid, options: axisOptions, chart, tickPositions } = axis, mapOfPosToGridNode = axisGrid.mapOfPosToGridNode, labelOptions = (tickOptions?.labels ?? axisOptions?.labels), symbolOptions = (labelOptions && isObject(labelOptions.symbol, true) ?
61155
61267
  labelOptions.symbol :
61156
61268
  {}), node = mapOfPosToGridNode?.[pos], { descendants, depth } = node || {}, hasDescendants = node && descendants && descendants > 0, level = depth, isTreeGridElement = (axis.type === 'treegrid') && labelElement, shouldRender = tickPositions.indexOf(pos) > -1, prefixClassName = 'highcharts-treegrid-node-', prefixLevelClass = prefixClassName + 'level-', styledMode = chart.styledMode;
61157
61269
  let collapsed, addClassName, removeClassName;
@@ -61414,9 +61526,17 @@ function getColor(node, options) {
61414
61526
  }
61415
61527
  // Select either point color, level color or inherited color.
61416
61528
  if (!series.chart.styledMode) {
61417
- color = pick(point && point.options.color, level && level.color, colorByPoint, parentColor && variateColor(parentColor), series.color);
61418
- }
61419
- colorIndex = pick(point && point.options.colorIndex, level && level.colorIndex, colorIndexByPoint, parentColorIndex, options.colorIndex);
61529
+ color = ((point && point.options.color) ??
61530
+ (level && level.color) ??
61531
+ colorByPoint ??
61532
+ (parentColor && variateColor(parentColor)) ??
61533
+ series.color);
61534
+ }
61535
+ colorIndex = ((point && point.options.colorIndex) ??
61536
+ (level && level.colorIndex) ??
61537
+ colorIndexByPoint ??
61538
+ parentColorIndex ??
61539
+ options.colorIndex);
61420
61540
  }
61421
61541
  return {
61422
61542
  color: color,
@@ -61453,7 +61573,8 @@ function getLevelOptions(params) {
61453
61573
  let level, levelIsConstant, options;
61454
61574
  if (isObject(item) && isNumber(item.level)) {
61455
61575
  options = merge({}, item);
61456
- levelIsConstant = pick(options.levelIsConstant, defaults.levelIsConstant);
61576
+ levelIsConstant =
61577
+ options.levelIsConstant ?? defaults.levelIsConstant;
61457
61578
  // Delete redundant properties.
61458
61579
  delete options.levelIsConstant;
61459
61580
  delete options.level;
@@ -61485,7 +61606,7 @@ function setTreeValues(tree, options) {
61485
61606
  const before = options.before, idRoot = options.idRoot, mapIdToNode = options.mapIdToNode, nodeRoot = mapIdToNode[idRoot], levelIsConstant = (options.levelIsConstant !== false), points = options.points, point = points[tree.i], optionsPoint = point && point.options || {}, children = [];
61486
61607
  let childrenTotal = 0;
61487
61608
  tree.levelDynamic = tree.level - (levelIsConstant ? 0 : nodeRoot.level);
61488
- tree.name = pick(point && point.name, '');
61609
+ tree.name = ((point && point.name) ?? '');
61489
61610
  tree.visible = (idRoot === tree.id ||
61490
61611
  options.visible === true);
61491
61612
  if (typeof before === 'function') {
@@ -61506,7 +61627,7 @@ function setTreeValues(tree, options) {
61506
61627
  }
61507
61628
  });
61508
61629
  // Set the values
61509
- const value = pick(optionsPoint.value, childrenTotal);
61630
+ const value = (optionsPoint.value ?? childrenTotal);
61510
61631
  tree.visible = value >= 0 && (childrenTotal > 0 || tree.visible);
61511
61632
  tree.children = children;
61512
61633
  tree.childrenTotal = childrenTotal;
@@ -61532,7 +61653,7 @@ function updateRootId(series) {
61532
61653
  // Get the series options.
61533
61654
  options = isObject(series.options) ? series.options : {};
61534
61655
  // Calculate the rootId.
61535
- rootId = pick(series.rootNode, options.rootId, '');
61656
+ rootId = (series.rootNode ?? options.rootId ?? '');
61536
61657
  // Set rootId on series.userOptions to pick it up in exporting.
61537
61658
  if (isObject(series.userOptions)) {
61538
61659
  series.userOptions.rootId = rootId;
@@ -62440,7 +62561,7 @@ Series_SeriesRegistry.registerSeriesType('gantt', GanttSeries);
62440
62561
  /* unused harmony import specifier */ var gantt_src_Highcharts;
62441
62562
  // SPDX-License-Identifier: LicenseRef-Highcharts
62442
62563
  /**
62443
- * @license Highcharts Gantt JS v13.0.1 (2026-08-17)
62564
+ * @license Highcharts Gantt JS v13.0.2 (2026-08-27)
62444
62565
  * @module highcharts/modules/gantt
62445
62566
  * @requires highcharts
62446
62567
  *