highcharts 13.0.1 → 13.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (915) hide show
  1. package/bower.json +2 -3
  2. package/es-modules/Accessibility/A11yI18n.js +4 -4
  3. package/es-modules/Accessibility/Components/InfoRegionsComponent.js +6 -4
  4. package/es-modules/Accessibility/Components/LegendComponent.js +2 -2
  5. package/es-modules/Accessibility/Components/NavigatorComponent.js +2 -2
  6. package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +13 -10
  7. package/es-modules/Accessibility/Components/ZoomComponent.js +2 -2
  8. package/es-modules/Accessibility/FocusBorder.js +2 -2
  9. package/es-modules/Accessibility/Options/DeprecatedOptions.js +1 -2
  10. package/es-modules/Core/Animation/AnimationUtilities.js +3 -2
  11. package/es-modules/Core/Axis/Axis.js +48 -57
  12. package/es-modules/Core/Axis/Axis3DComposition.js +8 -6
  13. package/es-modules/Core/Axis/BrokenAxis.js +6 -5
  14. package/es-modules/Core/Axis/Color/ColorAxis.js +17 -10
  15. package/es-modules/Core/Axis/Color/ColorAxisComposition.js +2 -2
  16. package/es-modules/Core/Axis/GridAxis.js +4 -4
  17. package/es-modules/Core/Axis/LogarithmicAxis.js +5 -3
  18. package/es-modules/Core/Axis/NavigatorAxisComposition.js +2 -2
  19. package/es-modules/Core/Axis/OrdinalAxis.js +9 -7
  20. package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +3 -2
  21. package/es-modules/Core/Axis/RadialAxis.js +15 -9
  22. package/es-modules/Core/Axis/ScrollbarAxis.js +3 -3
  23. package/es-modules/Core/Axis/Stacking/StackItem.js +5 -5
  24. package/es-modules/Core/Axis/Stacking/StackingAxis.js +4 -4
  25. package/es-modules/Core/Axis/Tick.js +10 -11
  26. package/es-modules/Core/Axis/TreeGrid/TreeGridTick.js +3 -3
  27. package/es-modules/Core/Chart/Chart.js +14 -14
  28. package/es-modules/Core/Chart/Chart3D.js +3 -3
  29. package/es-modules/Core/Chart/ChartDefaults.js +23 -0
  30. package/es-modules/Core/Chart/MapChart.js +7 -5
  31. package/es-modules/Core/Chart/StockChart.js +15 -11
  32. package/es-modules/Core/Color/Color.js +3 -1
  33. package/es-modules/Core/Defaults.js +35 -0
  34. package/es-modules/Core/Globals.js +1 -1
  35. package/es-modules/Core/Legend/Legend.js +16 -12
  36. package/es-modules/Core/Legend/LegendSymbol.js +2 -2
  37. package/es-modules/Core/MSPointer.js +2 -2
  38. package/es-modules/Core/Math3D.js +6 -7
  39. package/es-modules/Core/Pointer.js +9 -9
  40. package/es-modules/Core/Renderer/RendererUtilities.js +2 -2
  41. package/es-modules/Core/Renderer/SVG/SVGElement.js +11 -9
  42. package/es-modules/Core/Renderer/SVG/SVGElement3D.js +2 -2
  43. package/es-modules/Core/Renderer/SVG/SVGLabel.js +5 -5
  44. package/es-modules/Core/Renderer/SVG/SVGRenderer.js +5 -5
  45. package/es-modules/Core/Renderer/SVG/SVGRenderer3D.js +11 -9
  46. package/es-modules/Core/Renderer/SVG/Symbols.js +6 -5
  47. package/es-modules/Core/Renderer/SVG/TextBuilder.js +2 -2
  48. package/es-modules/Core/Responsive.js +7 -5
  49. package/es-modules/Core/Series/DataLabel.js +8 -6
  50. package/es-modules/Core/Series/OverlappingDataLabels.js +5 -2
  51. package/es-modules/Core/Series/Point.js +3 -3
  52. package/es-modules/Core/Series/Series.js +37 -21
  53. package/es-modules/Core/Series/Series3D.js +2 -2
  54. package/es-modules/Core/Templating.js +2 -2
  55. package/es-modules/Core/Tooltip.js +11 -7
  56. package/es-modules/Core/Utilities.js +4 -3
  57. package/es-modules/Data/Connectors/DataConnector.js +2 -2
  58. package/es-modules/Data/Connectors/GoogleSheetsConnector.js +2 -2
  59. package/es-modules/Data/DataTable.js +17 -0
  60. package/es-modules/Extensions/Annotations/Annotation.js +4 -4
  61. package/es-modules/Extensions/Annotations/AnnotationChart.js +2 -2
  62. package/es-modules/Extensions/Annotations/ControlPoint.js +2 -2
  63. package/es-modules/Extensions/Annotations/Controllables/ControllableLabel.js +2 -2
  64. package/es-modules/Extensions/Annotations/EventEmitter.js +4 -4
  65. package/es-modules/Extensions/Annotations/NavigationBindings.js +6 -3
  66. package/es-modules/Extensions/Annotations/NavigationBindingsUtilities.js +2 -2
  67. package/es-modules/Extensions/Annotations/Popup/Popup.js +3 -2
  68. package/es-modules/Extensions/Annotations/Popup/PopupAnnotations.js +4 -6
  69. package/es-modules/Extensions/Annotations/Types/Measure.js +3 -3
  70. package/es-modules/Extensions/Annotations/Types/VerticalLine.js +3 -3
  71. package/es-modules/Extensions/Boost/BoostChart.js +11 -4
  72. package/es-modules/Extensions/Boost/BoostSeries.js +8 -9
  73. package/es-modules/Extensions/Boost/WGLRenderer.js +9 -6
  74. package/es-modules/Extensions/Boost/WGLShader.js +3 -3
  75. package/es-modules/Extensions/BoostCanvas.js +2 -2
  76. package/es-modules/Extensions/Breadcrumbs/Breadcrumbs.js +5 -4
  77. package/es-modules/Extensions/DataGrouping/DataGrouping.js +2 -2
  78. package/es-modules/Extensions/DataGrouping/DataGroupingAxisComposition.js +4 -3
  79. package/es-modules/Extensions/DataGrouping/DataGroupingSeriesComposition.js +2 -2
  80. package/es-modules/Extensions/DraggablePoints/DragDropProps.js +2 -3
  81. package/es-modules/Extensions/ExportData/ExportData.js +17 -16
  82. package/es-modules/Extensions/Exporting/Exporting.js +7 -7
  83. package/es-modules/Extensions/MouseWheelZoom/MouseWheelZoom.js +2 -2
  84. package/es-modules/Extensions/Pane/PaneComposition.js +2 -2
  85. package/es-modules/Extensions/ParallelCoordinates/ParallelAxis.js +2 -2
  86. package/es-modules/Extensions/PatternFill.js +7 -5
  87. package/es-modules/Extensions/PriceIndication.js +5 -4
  88. package/es-modules/Extensions/SeriesLabel/SeriesLabel.js +7 -7
  89. package/es-modules/Extensions/Sonification/MIDI.js +2 -3
  90. package/es-modules/Extensions/Sonification/Sonification.js +2 -2
  91. package/es-modules/Extensions/Sonification/SonificationSpeaker.js +3 -2
  92. package/es-modules/Extensions/Sonification/SynthPatch.js +3 -3
  93. package/es-modules/Extensions/Sonification/TimelineFromChart.js +11 -11
  94. package/es-modules/Gantt/Legacy.js +2 -2
  95. package/es-modules/Gantt/Pathfinder.js +3 -3
  96. package/es-modules/Gantt/PathfinderAlgorithms.js +4 -3
  97. package/es-modules/Gantt/Tree.js +1 -1
  98. package/es-modules/Maps/MapNavigation.js +4 -4
  99. package/es-modules/Maps/MapPointer.js +2 -2
  100. package/es-modules/Maps/MapView.js +2 -2
  101. package/es-modules/Series/ArcDiagram/ArcDiagramSeries.js +8 -6
  102. package/es-modules/Series/Area/AreaSeries.js +4 -5
  103. package/es-modules/Series/BoxPlot/BoxPlotSeries.js +13 -4
  104. package/es-modules/Series/Bubble/BubbleLegendItem.js +10 -6
  105. package/es-modules/Series/Bubble/BubbleSeries.js +10 -9
  106. package/es-modules/Series/Bullet/BulletSeries.js +17 -10
  107. package/es-modules/Series/CenteredUtilities.js +7 -5
  108. package/es-modules/Series/Column/ColumnSeries.js +2 -2
  109. package/es-modules/Series/Column3D/Column3DComposition.js +6 -5
  110. package/es-modules/Series/ColumnPyramid/ColumnPyramidSeries.js +4 -4
  111. package/es-modules/Series/ColumnRange/ColumnRangeSeries.js +4 -2
  112. package/es-modules/Series/Cylinder/CylinderComposition.js +2 -2
  113. package/es-modules/Series/DataModifyComposition.js +9 -7
  114. package/es-modules/Series/DotPlot/DotPlotSeries.js +3 -2
  115. package/es-modules/Series/Dumbbell/DumbbellPoint.js +14 -3
  116. package/es-modules/Series/Dumbbell/DumbbellSeries.js +24 -7
  117. package/es-modules/Series/FlowMap/FlowMapPoint.js +5 -3
  118. package/es-modules/Series/FlowMap/FlowMapSeries.js +17 -9
  119. package/es-modules/Series/Funnel/FunnelSeries.js +2 -2
  120. package/es-modules/Series/Funnel3D/Funnel3DSeries.js +7 -5
  121. package/es-modules/Series/Gauge/GaugeSeries.js +2 -2
  122. package/es-modules/Series/GeoHeatmap/GeoHeatmapSeries.js +4 -4
  123. package/es-modules/Series/Heatmap/HeatmapPoint.js +6 -6
  124. package/es-modules/Series/Heatmap/HeatmapPointOptions.js +12 -0
  125. package/es-modules/Series/Heatmap/HeatmapSeries.js +13 -13
  126. package/es-modules/Series/Heatmap/HeatmapSeriesOptions.js +12 -0
  127. package/es-modules/Series/Histogram/HistogramPoint.js +17 -0
  128. package/es-modules/Series/Histogram/HistogramPointOptions.js +12 -0
  129. package/es-modules/Series/Histogram/HistogramSeries.js +14 -2
  130. package/es-modules/Series/Histogram/HistogramSeriesOptions.js +12 -0
  131. package/es-modules/Series/InterpolationUtilities.js +5 -5
  132. package/es-modules/Series/Item/ItemPointOptions.js +14 -0
  133. package/es-modules/Series/Item/ItemSeries.js +18 -6
  134. package/es-modules/Series/Item/ItemSeriesOptions.js +14 -0
  135. package/es-modules/Series/Map/MapPoint.js +5 -3
  136. package/es-modules/Series/Map/MapSeries.js +5 -8
  137. package/es-modules/Series/Networkgraph/NetworkgraphPoint.js +3 -3
  138. package/es-modules/Series/Networkgraph/NetworkgraphSeries.js +4 -2
  139. package/es-modules/Series/Networkgraph/ReingoldFruchtermanLayout.js +18 -9
  140. package/es-modules/Series/NodesComposition.js +9 -10
  141. package/es-modules/Series/Organization/OrganizationPoint.js +3 -2
  142. package/es-modules/Series/PackedBubble/PackedBubbleLayout.js +3 -3
  143. package/es-modules/Series/PackedBubble/PackedBubbleSeries.js +5 -5
  144. package/es-modules/Series/Pictorial/PictorialSeries.js +4 -2
  145. package/es-modules/Series/Pie/PieDataLabel.js +2 -2
  146. package/es-modules/Series/Pie/PiePoint.js +2 -2
  147. package/es-modules/Series/Pie/PieSeries.js +3 -2
  148. package/es-modules/Series/Pie3D/Pie3DSeries.js +8 -4
  149. package/es-modules/Series/PolarComposition.js +8 -7
  150. package/es-modules/Series/Sankey/SankeySeries.js +11 -5
  151. package/es-modules/Series/Scatter/ScatterSeries.js +6 -5
  152. package/es-modules/Series/SolidGauge/SolidGaugeSeries.js +2 -2
  153. package/es-modules/Series/Spline/SplineSeries.js +5 -5
  154. package/es-modules/Series/TiledWebMap/TiledWebMapSeries.js +8 -6
  155. package/es-modules/Series/Tilemap/TilemapShapes.js +2 -2
  156. package/es-modules/Series/Timeline/TimelinePoint.js +2 -2
  157. package/es-modules/Series/Timeline/TimelineSeries.js +4 -3
  158. package/es-modules/Series/TreeUtilities.js +16 -7
  159. package/es-modules/Series/Treegraph/TreegraphLink.js +2 -2
  160. package/es-modules/Series/Treemap/TreemapPoint.js +2 -2
  161. package/es-modules/Series/Treemap/TreemapSeries.js +14 -11
  162. package/es-modules/Series/VariablePie/VariablePieSeries.js +6 -4
  163. package/es-modules/Series/Variwide/VariwideSeries.js +2 -2
  164. package/es-modules/Series/Waterfall/WaterfallSeries.js +2 -2
  165. package/es-modules/Series/Windbarb/WindbarbSeries.js +2 -2
  166. package/es-modules/Shared/TimeBase.js +8 -2
  167. package/es-modules/Shared/Utilities.js +9 -7
  168. package/es-modules/Stock/Indicators/Aroon/AroonIndicator.js +3 -3
  169. package/es-modules/Stock/Indicators/DPO/DPOIndicator.js +4 -3
  170. package/es-modules/Stock/Indicators/RSI/RSIIndicator.js +1 -1
  171. package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +2 -2
  172. package/es-modules/Stock/Navigator/ChartNavigatorComposition.js +4 -4
  173. package/es-modules/Stock/Navigator/Navigator.js +26 -26
  174. package/es-modules/Stock/Navigator/StandaloneNavigator.js +4 -4
  175. package/es-modules/Stock/RangeSelector/RangeSelector.js +15 -11
  176. package/es-modules/Stock/RangeSelector/RangeSelectorComposition.js +3 -3
  177. package/es-modules/Stock/Scrollbar/Scrollbar.js +8 -7
  178. package/es-modules/Stock/StockTools/StockToolbar.js +5 -5
  179. package/es-modules/Stock/StockTools/StockTools.js +2 -2
  180. package/es-modules/Stock/StockTools/StockToolsGui.js +4 -2
  181. package/es-modules/masters/highcharts-3d.src.js +1 -1
  182. package/es-modules/masters/highcharts-autoload.src.js +1 -1
  183. package/es-modules/masters/highcharts-gantt.src.js +1 -1
  184. package/es-modules/masters/highcharts-more.src.js +1 -1
  185. package/es-modules/masters/highcharts.src.js +7 -2
  186. package/es-modules/masters/highmaps.src.js +1 -1
  187. package/es-modules/masters/highstock.src.js +1 -1
  188. package/es-modules/masters/i18n/fr-FR.src.d.ts +1 -1
  189. package/es-modules/masters/i18n/fr-FR.src.js +1 -1
  190. package/es-modules/masters/i18n/nb-NO.src.d.ts +1 -1
  191. package/es-modules/masters/i18n/nb-NO.src.js +1 -1
  192. package/es-modules/masters/i18n/zh-CN.src.d.ts +1 -1
  193. package/es-modules/masters/i18n/zh-CN.src.js +1 -1
  194. package/es-modules/masters/indicators/acceleration-bands.src.js +1 -1
  195. package/es-modules/masters/indicators/accumulation-distribution.src.js +1 -1
  196. package/es-modules/masters/indicators/ao.src.js +1 -1
  197. package/es-modules/masters/indicators/apo.src.js +1 -1
  198. package/es-modules/masters/indicators/aroon-oscillator.src.js +1 -1
  199. package/es-modules/masters/indicators/aroon.src.js +1 -1
  200. package/es-modules/masters/indicators/atr.src.js +1 -1
  201. package/es-modules/masters/indicators/bollinger-bands.src.js +1 -1
  202. package/es-modules/masters/indicators/cci.src.js +1 -1
  203. package/es-modules/masters/indicators/chaikin.src.js +1 -1
  204. package/es-modules/masters/indicators/cmf.src.js +1 -1
  205. package/es-modules/masters/indicators/cmo.src.js +1 -1
  206. package/es-modules/masters/indicators/dema.src.js +1 -1
  207. package/es-modules/masters/indicators/disparity-index.src.js +1 -1
  208. package/es-modules/masters/indicators/dmi.src.js +1 -1
  209. package/es-modules/masters/indicators/dpo.src.js +1 -1
  210. package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
  211. package/es-modules/masters/indicators/indicators-all.src.js +1 -1
  212. package/es-modules/masters/indicators/indicators.src.js +1 -1
  213. package/es-modules/masters/indicators/keltner-channels.src.js +1 -1
  214. package/es-modules/masters/indicators/klinger.src.js +1 -1
  215. package/es-modules/masters/indicators/macd.src.js +1 -1
  216. package/es-modules/masters/indicators/mfi.src.js +1 -1
  217. package/es-modules/masters/indicators/momentum.src.js +1 -1
  218. package/es-modules/masters/indicators/natr.src.js +1 -1
  219. package/es-modules/masters/indicators/obv.src.js +1 -1
  220. package/es-modules/masters/indicators/pivot-points.src.js +1 -1
  221. package/es-modules/masters/indicators/ppo.src.js +1 -1
  222. package/es-modules/masters/indicators/price-channel.src.js +1 -1
  223. package/es-modules/masters/indicators/price-envelopes.src.js +1 -1
  224. package/es-modules/masters/indicators/psar.src.js +1 -1
  225. package/es-modules/masters/indicators/regressions.src.js +1 -1
  226. package/es-modules/masters/indicators/roc.src.js +1 -1
  227. package/es-modules/masters/indicators/rsi.src.js +1 -1
  228. package/es-modules/masters/indicators/slow-stochastic.src.js +1 -1
  229. package/es-modules/masters/indicators/stochastic.src.js +1 -1
  230. package/es-modules/masters/indicators/supertrend.src.js +1 -1
  231. package/es-modules/masters/indicators/tema.src.js +1 -1
  232. package/es-modules/masters/indicators/trendline.src.js +1 -1
  233. package/es-modules/masters/indicators/trix.src.js +1 -1
  234. package/es-modules/masters/indicators/volume-by-price.src.js +1 -1
  235. package/es-modules/masters/indicators/vwap.src.js +1 -1
  236. package/es-modules/masters/indicators/williams-r.src.js +1 -1
  237. package/es-modules/masters/indicators/wma.src.js +1 -1
  238. package/es-modules/masters/indicators/zigzag.src.js +1 -1
  239. package/es-modules/masters/modules/accessibility.src.js +1 -1
  240. package/es-modules/masters/modules/annotations-advanced.src.js +1 -1
  241. package/es-modules/masters/modules/annotations.src.js +1 -1
  242. package/es-modules/masters/modules/arc-diagram.src.js +1 -1
  243. package/es-modules/masters/modules/arrow-symbols.src.js +1 -1
  244. package/es-modules/masters/modules/boost-canvas.src.js +1 -1
  245. package/es-modules/masters/modules/boost.src.js +1 -1
  246. package/es-modules/masters/modules/broken-axis.src.js +1 -1
  247. package/es-modules/masters/modules/bullet.src.js +1 -1
  248. package/es-modules/masters/modules/coloraxis.src.js +1 -1
  249. package/es-modules/masters/modules/contour.src.js +1 -1
  250. package/es-modules/masters/modules/current-date-indicator.src.js +1 -1
  251. package/es-modules/masters/modules/cylinder.src.js +1 -1
  252. package/es-modules/masters/modules/data-sorting.src.js +1 -1
  253. package/es-modules/masters/modules/data-tools.src.js +1 -1
  254. package/es-modules/masters/modules/data.src.js +1 -1
  255. package/es-modules/masters/modules/datagrouping.src.js +1 -1
  256. package/es-modules/masters/modules/debugger.src.js +1 -1
  257. package/es-modules/masters/modules/dependency-wheel.src.js +1 -1
  258. package/es-modules/masters/modules/dotplot.src.js +1 -1
  259. package/es-modules/masters/modules/drag-panes.src.js +1 -1
  260. package/es-modules/masters/modules/draggable-points.src.js +1 -1
  261. package/es-modules/masters/modules/drilldown.src.js +1 -1
  262. package/es-modules/masters/modules/dumbbell.src.js +1 -1
  263. package/es-modules/masters/modules/export-data.src.js +1 -1
  264. package/es-modules/masters/modules/exporting.src.js +1 -1
  265. package/es-modules/masters/modules/flowmap.src.js +1 -1
  266. package/es-modules/masters/modules/full-screen.src.js +1 -1
  267. package/es-modules/masters/modules/funnel.src.js +1 -1
  268. package/es-modules/masters/modules/funnel3d.src.js +1 -1
  269. package/es-modules/masters/modules/gantt.src.js +1 -1
  270. package/es-modules/masters/modules/geoheatmap.src.js +1 -1
  271. package/es-modules/masters/modules/grid-axis.src.js +1 -1
  272. package/es-modules/masters/modules/heatmap.src.js +1 -1
  273. package/es-modules/masters/modules/heikinashi.src.js +1 -1
  274. package/es-modules/masters/modules/histogram-bellcurve.src.js +1 -1
  275. package/es-modules/masters/modules/hollowcandlestick.src.js +1 -1
  276. package/es-modules/masters/modules/item-series.src.js +1 -1
  277. package/es-modules/masters/modules/lollipop.src.js +1 -1
  278. package/es-modules/masters/modules/map.src.js +1 -1
  279. package/es-modules/masters/modules/marker-clusters.src.js +1 -1
  280. package/es-modules/masters/modules/mouse-wheel-zoom.src.js +1 -1
  281. package/es-modules/masters/modules/navigator.src.js +1 -1
  282. package/es-modules/masters/modules/networkgraph.src.js +1 -1
  283. package/es-modules/masters/modules/no-data-to-display.src.js +1 -1
  284. package/es-modules/masters/modules/non-cartesian-zoom.src.js +1 -1
  285. package/es-modules/masters/modules/offline-exporting.src.js +1 -1
  286. package/es-modules/masters/modules/organization.src.js +1 -1
  287. package/es-modules/masters/modules/parallel-coordinates.src.js +1 -1
  288. package/es-modules/masters/modules/pareto.src.js +1 -1
  289. package/es-modules/masters/modules/pathfinder.src.js +1 -1
  290. package/es-modules/masters/modules/pattern-fill.src.js +1 -1
  291. package/es-modules/masters/modules/pictorial.src.js +1 -1
  292. package/es-modules/masters/modules/pointandfigure.src.js +1 -1
  293. package/es-modules/masters/modules/price-indicator.src.js +1 -1
  294. package/es-modules/masters/modules/pyramid3d.src.js +1 -1
  295. package/es-modules/masters/modules/renko.src.js +1 -1
  296. package/es-modules/masters/modules/sankey.src.js +1 -1
  297. package/es-modules/masters/modules/series-label.src.js +1 -1
  298. package/es-modules/masters/modules/series-on-point.src.js +1 -1
  299. package/es-modules/masters/modules/solid-gauge.src.js +1 -1
  300. package/es-modules/masters/modules/sonification.src.js +1 -1
  301. package/es-modules/masters/modules/static-scale.src.js +1 -1
  302. package/es-modules/masters/modules/stock-tools.src.js +1 -1
  303. package/es-modules/masters/modules/stock.src.js +1 -1
  304. package/es-modules/masters/modules/streamgraph.src.js +1 -1
  305. package/es-modules/masters/modules/sunburst.src.js +1 -1
  306. package/es-modules/masters/modules/textpath.src.js +1 -1
  307. package/es-modules/masters/modules/tiledwebmap.src.js +1 -1
  308. package/es-modules/masters/modules/tilemap.src.js +1 -1
  309. package/es-modules/masters/modules/timeline.src.js +1 -1
  310. package/es-modules/masters/modules/treegraph.src.js +1 -1
  311. package/es-modules/masters/modules/treegrid.src.js +1 -1
  312. package/es-modules/masters/modules/treemap.src.js +1 -1
  313. package/es-modules/masters/modules/variable-pie.src.js +1 -1
  314. package/es-modules/masters/modules/variwide.src.js +1 -1
  315. package/es-modules/masters/modules/vector.src.js +1 -1
  316. package/es-modules/masters/modules/venn.src.js +1 -1
  317. package/es-modules/masters/modules/windbarb.src.js +1 -1
  318. package/es-modules/masters/modules/wordcloud.src.js +1 -1
  319. package/es-modules/masters/modules/xrange.src.js +1 -1
  320. package/es-modules/masters/standalone-navigator.src.js +1 -1
  321. package/es-modules/masters/themes/adaptive.src.js +1 -1
  322. package/es-modules/masters/themes/avocado.src.js +1 -1
  323. package/es-modules/masters/themes/dark-unica.src.js +1 -1
  324. package/es-modules/masters/themes/grid-light.src.js +1 -1
  325. package/es-modules/masters/themes/high-contrast.src.js +1 -1
  326. package/es-modules/masters/themes/sand-signika.src.js +1 -1
  327. package/es-modules/masters/themes/sunset.src.js +1 -1
  328. package/es-modules/tsconfig.tsbuildinfo +1 -1
  329. package/esm/highcharts-3d.js +2 -2
  330. package/esm/highcharts-3d.src.js +40 -32
  331. package/esm/highcharts-autoload.js +1 -1
  332. package/esm/highcharts-autoload.src.js +1 -1
  333. package/esm/highcharts-gantt.js +1 -1
  334. package/esm/highcharts-gantt.src.js +1 -1
  335. package/esm/highcharts-more.js +2 -2
  336. package/esm/highcharts-more.src.js +90 -56
  337. package/esm/highcharts.js +4 -4
  338. package/esm/highcharts.src.js +312 -207
  339. package/esm/highmaps.js +1 -1
  340. package/esm/highmaps.src.js +1 -1
  341. package/esm/highstock.js +1 -1
  342. package/esm/highstock.src.js +1 -1
  343. package/esm/i18n/fr-FR.js +1 -1
  344. package/esm/i18n/fr-FR.src.js +1 -1
  345. package/esm/i18n/nb-NO.js +1 -1
  346. package/esm/i18n/nb-NO.src.js +1 -1
  347. package/esm/i18n/zh-CN.js +1 -1
  348. package/esm/i18n/zh-CN.src.js +1 -1
  349. package/esm/indicators/acceleration-bands.js +1 -1
  350. package/esm/indicators/acceleration-bands.src.js +1 -1
  351. package/esm/indicators/accumulation-distribution.js +1 -1
  352. package/esm/indicators/accumulation-distribution.src.js +1 -1
  353. package/esm/indicators/ao.js +1 -1
  354. package/esm/indicators/ao.src.js +1 -1
  355. package/esm/indicators/apo.js +1 -1
  356. package/esm/indicators/apo.src.js +1 -1
  357. package/esm/indicators/aroon-oscillator.js +1 -1
  358. package/esm/indicators/aroon-oscillator.src.js +1 -1
  359. package/esm/indicators/aroon.js +2 -2
  360. package/esm/indicators/aroon.src.js +3 -3
  361. package/esm/indicators/atr.js +1 -1
  362. package/esm/indicators/atr.src.js +1 -1
  363. package/esm/indicators/bollinger-bands.js +1 -1
  364. package/esm/indicators/bollinger-bands.src.js +1 -1
  365. package/esm/indicators/cci.js +1 -1
  366. package/esm/indicators/cci.src.js +1 -1
  367. package/esm/indicators/chaikin.js +1 -1
  368. package/esm/indicators/chaikin.src.js +1 -1
  369. package/esm/indicators/cmf.js +1 -1
  370. package/esm/indicators/cmf.src.js +1 -1
  371. package/esm/indicators/cmo.js +1 -1
  372. package/esm/indicators/cmo.src.js +1 -1
  373. package/esm/indicators/dema.js +1 -1
  374. package/esm/indicators/dema.src.js +1 -1
  375. package/esm/indicators/disparity-index.js +1 -1
  376. package/esm/indicators/disparity-index.src.js +1 -1
  377. package/esm/indicators/dmi.js +1 -1
  378. package/esm/indicators/dmi.src.js +1 -1
  379. package/esm/indicators/dpo.js +2 -2
  380. package/esm/indicators/dpo.src.js +4 -3
  381. package/esm/indicators/ichimoku-kinko-hyo.js +1 -1
  382. package/esm/indicators/ichimoku-kinko-hyo.src.js +1 -1
  383. package/esm/indicators/indicators-all.js +2 -2
  384. package/esm/indicators/indicators-all.src.js +8 -7
  385. package/esm/indicators/indicators.js +2 -2
  386. package/esm/indicators/indicators.src.js +2 -2
  387. package/esm/indicators/keltner-channels.js +1 -1
  388. package/esm/indicators/keltner-channels.src.js +1 -1
  389. package/esm/indicators/klinger.js +1 -1
  390. package/esm/indicators/klinger.src.js +1 -1
  391. package/esm/indicators/macd.js +1 -1
  392. package/esm/indicators/macd.src.js +1 -1
  393. package/esm/indicators/mfi.js +1 -1
  394. package/esm/indicators/mfi.src.js +1 -1
  395. package/esm/indicators/momentum.js +1 -1
  396. package/esm/indicators/momentum.src.js +1 -1
  397. package/esm/indicators/natr.js +1 -1
  398. package/esm/indicators/natr.src.js +1 -1
  399. package/esm/indicators/obv.js +1 -1
  400. package/esm/indicators/obv.src.js +1 -1
  401. package/esm/indicators/pivot-points.js +1 -1
  402. package/esm/indicators/pivot-points.src.js +1 -1
  403. package/esm/indicators/ppo.js +1 -1
  404. package/esm/indicators/ppo.src.js +1 -1
  405. package/esm/indicators/price-channel.js +1 -1
  406. package/esm/indicators/price-channel.src.js +1 -1
  407. package/esm/indicators/price-envelopes.js +1 -1
  408. package/esm/indicators/price-envelopes.src.js +1 -1
  409. package/esm/indicators/psar.js +1 -1
  410. package/esm/indicators/psar.src.js +1 -1
  411. package/esm/indicators/regressions.js +1 -1
  412. package/esm/indicators/regressions.src.js +1 -1
  413. package/esm/indicators/roc.js +1 -1
  414. package/esm/indicators/roc.src.js +1 -1
  415. package/esm/indicators/rsi.js +1 -1
  416. package/esm/indicators/rsi.src.js +2 -2
  417. package/esm/indicators/slow-stochastic.js +1 -1
  418. package/esm/indicators/slow-stochastic.src.js +1 -1
  419. package/esm/indicators/stochastic.js +1 -1
  420. package/esm/indicators/stochastic.src.js +1 -1
  421. package/esm/indicators/supertrend.js +1 -1
  422. package/esm/indicators/supertrend.src.js +1 -1
  423. package/esm/indicators/tema.js +1 -1
  424. package/esm/indicators/tema.src.js +1 -1
  425. package/esm/indicators/trendline.js +1 -1
  426. package/esm/indicators/trendline.src.js +1 -1
  427. package/esm/indicators/trix.js +1 -1
  428. package/esm/indicators/trix.src.js +1 -1
  429. package/esm/indicators/volume-by-price.js +1 -1
  430. package/esm/indicators/volume-by-price.src.js +1 -1
  431. package/esm/indicators/vwap.js +1 -1
  432. package/esm/indicators/vwap.src.js +1 -1
  433. package/esm/indicators/williams-r.js +1 -1
  434. package/esm/indicators/williams-r.src.js +1 -1
  435. package/esm/indicators/wma.js +1 -1
  436. package/esm/indicators/wma.src.js +1 -1
  437. package/esm/indicators/zigzag.js +1 -1
  438. package/esm/indicators/zigzag.src.js +1 -1
  439. package/esm/modules/accessibility.js +2 -2
  440. package/esm/modules/accessibility.src.js +69 -63
  441. package/esm/modules/annotations-advanced.js +3 -3
  442. package/esm/modules/annotations-advanced.src.js +25 -23
  443. package/esm/modules/annotations.js +3 -3
  444. package/esm/modules/annotations.src.js +21 -19
  445. package/esm/modules/arc-diagram.js +2 -2
  446. package/esm/modules/arc-diagram.src.js +16 -15
  447. package/esm/modules/arrow-symbols.js +1 -1
  448. package/esm/modules/arrow-symbols.src.js +1 -1
  449. package/esm/modules/boost-canvas.js +2 -2
  450. package/esm/modules/boost-canvas.src.js +29 -20
  451. package/esm/modules/boost.js +2 -2
  452. package/esm/modules/boost.src.js +28 -19
  453. package/esm/modules/broken-axis.js +2 -2
  454. package/esm/modules/broken-axis.src.js +6 -5
  455. package/esm/modules/bullet.js +2 -2
  456. package/esm/modules/bullet.src.js +17 -10
  457. package/esm/modules/coloraxis.js +2 -2
  458. package/esm/modules/coloraxis.src.js +18 -11
  459. package/esm/modules/contour.js +1 -1
  460. package/esm/modules/contour.src.js +1 -1
  461. package/esm/modules/current-date-indicator.js +1 -1
  462. package/esm/modules/current-date-indicator.src.js +1 -1
  463. package/esm/modules/cylinder.js +2 -2
  464. package/esm/modules/cylinder.src.js +9 -10
  465. package/esm/modules/data-sorting.js +1 -1
  466. package/esm/modules/data-sorting.src.js +1 -1
  467. package/esm/modules/data-tools.js +2 -2
  468. package/esm/modules/data-tools.src.js +20 -3
  469. package/esm/modules/data.js +1 -1
  470. package/esm/modules/data.src.js +1 -1
  471. package/esm/modules/datagrouping.js +2 -2
  472. package/esm/modules/datagrouping.src.js +6 -5
  473. package/esm/modules/debugger.js +1 -1
  474. package/esm/modules/debugger.src.js +1 -1
  475. package/esm/modules/dependency-wheel.js +1 -1
  476. package/esm/modules/dependency-wheel.src.js +1 -1
  477. package/esm/modules/dotplot.js +2 -2
  478. package/esm/modules/dotplot.src.js +3 -2
  479. package/esm/modules/drag-panes.js +1 -1
  480. package/esm/modules/drag-panes.src.js +1 -1
  481. package/esm/modules/draggable-points.js +2 -2
  482. package/esm/modules/draggable-points.src.js +2 -3
  483. package/esm/modules/drilldown.js +2 -2
  484. package/esm/modules/drilldown.src.js +5 -4
  485. package/esm/modules/dumbbell.js +2 -2
  486. package/esm/modules/dumbbell.src.js +37 -9
  487. package/esm/modules/export-data.js +2 -2
  488. package/esm/modules/export-data.src.js +17 -16
  489. package/esm/modules/exporting.js +2 -2
  490. package/esm/modules/exporting.src.js +7 -7
  491. package/esm/modules/flowmap.js +2 -2
  492. package/esm/modules/flowmap.src.js +21 -11
  493. package/esm/modules/full-screen.js +1 -1
  494. package/esm/modules/full-screen.src.js +1 -1
  495. package/esm/modules/funnel.js +2 -2
  496. package/esm/modules/funnel.src.js +2 -2
  497. package/esm/modules/funnel3d.js +2 -2
  498. package/esm/modules/funnel3d.src.js +14 -13
  499. package/esm/modules/gantt.js +2 -2
  500. package/esm/modules/gantt.src.js +93 -76
  501. package/esm/modules/geoheatmap.js +2 -2
  502. package/esm/modules/geoheatmap.src.js +8 -8
  503. package/esm/modules/grid-axis.js +2 -2
  504. package/esm/modules/grid-axis.src.js +4 -4
  505. package/esm/modules/heatmap.js +2 -2
  506. package/esm/modules/heatmap.src.js +22 -22
  507. package/esm/modules/heikinashi.js +1 -1
  508. package/esm/modules/heikinashi.src.js +1 -1
  509. package/esm/modules/histogram-bellcurve.js +1 -1
  510. package/esm/modules/histogram-bellcurve.src.js +15 -3
  511. package/esm/modules/hollowcandlestick.js +1 -1
  512. package/esm/modules/hollowcandlestick.src.js +1 -1
  513. package/esm/modules/item-series.js +2 -2
  514. package/esm/modules/item-series.src.js +18 -6
  515. package/esm/modules/lollipop.js +1 -1
  516. package/esm/modules/lollipop.src.js +1 -1
  517. package/esm/modules/map.js +2 -2
  518. package/esm/modules/map.src.js +65 -57
  519. package/esm/modules/marker-clusters.js +1 -1
  520. package/esm/modules/marker-clusters.src.js +1 -1
  521. package/esm/modules/mouse-wheel-zoom.js +2 -2
  522. package/esm/modules/mouse-wheel-zoom.src.js +3 -3
  523. package/esm/modules/navigator.js +2 -2
  524. package/esm/modules/navigator.src.js +47 -45
  525. package/esm/modules/networkgraph.js +2 -2
  526. package/esm/modules/networkgraph.src.js +31 -21
  527. package/esm/modules/no-data-to-display.js +1 -1
  528. package/esm/modules/no-data-to-display.src.js +1 -1
  529. package/esm/modules/non-cartesian-zoom.js +1 -1
  530. package/esm/modules/non-cartesian-zoom.src.js +1 -1
  531. package/esm/modules/offline-exporting.js +1 -1
  532. package/esm/modules/offline-exporting.src.js +1 -1
  533. package/esm/modules/organization.js +2 -2
  534. package/esm/modules/organization.src.js +3 -2
  535. package/esm/modules/parallel-coordinates.js +2 -2
  536. package/esm/modules/parallel-coordinates.src.js +2 -2
  537. package/esm/modules/pareto.js +1 -1
  538. package/esm/modules/pareto.src.js +1 -1
  539. package/esm/modules/pathfinder.js +2 -2
  540. package/esm/modules/pathfinder.src.js +7 -6
  541. package/esm/modules/pattern-fill.js +2 -2
  542. package/esm/modules/pattern-fill.src.js +7 -5
  543. package/esm/modules/pictorial.js +2 -2
  544. package/esm/modules/pictorial.src.js +10 -6
  545. package/esm/modules/pointandfigure.js +1 -1
  546. package/esm/modules/pointandfigure.src.js +1 -1
  547. package/esm/modules/price-indicator.js +2 -2
  548. package/esm/modules/price-indicator.src.js +5 -4
  549. package/esm/modules/pyramid3d.js +1 -1
  550. package/esm/modules/pyramid3d.src.js +1 -1
  551. package/esm/modules/renko.js +1 -1
  552. package/esm/modules/renko.src.js +1 -1
  553. package/esm/modules/sankey.js +2 -2
  554. package/esm/modules/sankey.src.js +34 -20
  555. package/esm/modules/series-label.js +2 -2
  556. package/esm/modules/series-label.src.js +7 -7
  557. package/esm/modules/series-on-point.js +1 -1
  558. package/esm/modules/series-on-point.src.js +1 -1
  559. package/esm/modules/solid-gauge.js +2 -2
  560. package/esm/modules/solid-gauge.src.js +2 -2
  561. package/esm/modules/sonification.js +2 -2
  562. package/esm/modules/sonification.src.js +19 -19
  563. package/esm/modules/static-scale.js +1 -1
  564. package/esm/modules/static-scale.src.js +1 -1
  565. package/esm/modules/stock-tools.js +3 -3
  566. package/esm/modules/stock-tools.src.js +15 -10
  567. package/esm/modules/stock.js +2 -2
  568. package/esm/modules/stock.src.js +90 -76
  569. package/esm/modules/streamgraph.js +1 -1
  570. package/esm/modules/streamgraph.src.js +1 -1
  571. package/esm/modules/sunburst.js +2 -2
  572. package/esm/modules/sunburst.src.js +41 -26
  573. package/esm/modules/textpath.js +1 -1
  574. package/esm/modules/textpath.src.js +1 -1
  575. package/esm/modules/tiledwebmap.js +2 -2
  576. package/esm/modules/tiledwebmap.src.js +8 -6
  577. package/esm/modules/tilemap.js +2 -2
  578. package/esm/modules/tilemap.src.js +3 -3
  579. package/esm/modules/timeline.js +2 -2
  580. package/esm/modules/timeline.src.js +5 -4
  581. package/esm/modules/treegraph.js +2 -2
  582. package/esm/modules/treegraph.src.js +17 -8
  583. package/esm/modules/treegrid.js +2 -2
  584. package/esm/modules/treegrid.src.js +28 -18
  585. package/esm/modules/treemap.js +2 -2
  586. package/esm/modules/treemap.src.js +35 -22
  587. package/esm/modules/variable-pie.js +2 -2
  588. package/esm/modules/variable-pie.src.js +6 -4
  589. package/esm/modules/variwide.js +2 -2
  590. package/esm/modules/variwide.src.js +2 -2
  591. package/esm/modules/vector.js +1 -1
  592. package/esm/modules/vector.src.js +1 -1
  593. package/esm/modules/venn.js +1 -1
  594. package/esm/modules/venn.src.js +1 -1
  595. package/esm/modules/windbarb.js +2 -2
  596. package/esm/modules/windbarb.src.js +2 -2
  597. package/esm/modules/wordcloud.js +1 -1
  598. package/esm/modules/wordcloud.src.js +1 -1
  599. package/esm/modules/xrange.js +1 -1
  600. package/esm/modules/xrange.src.js +1 -1
  601. package/esm/standalone-navigator.js +4 -4
  602. package/esm/standalone-navigator.src.js +355 -249
  603. package/esm/themes/adaptive.js +1 -1
  604. package/esm/themes/adaptive.src.js +1 -1
  605. package/esm/themes/avocado.js +1 -1
  606. package/esm/themes/avocado.src.js +1 -1
  607. package/esm/themes/dark-unica.js +1 -1
  608. package/esm/themes/dark-unica.src.js +1 -1
  609. package/esm/themes/grid-light.js +1 -1
  610. package/esm/themes/grid-light.src.js +1 -1
  611. package/esm/themes/high-contrast.js +1 -1
  612. package/esm/themes/high-contrast.src.js +1 -1
  613. package/esm/themes/sand-signika.js +1 -1
  614. package/esm/themes/sand-signika.src.js +1 -1
  615. package/esm/themes/sunset.js +1 -1
  616. package/esm/themes/sunset.src.js +1 -1
  617. package/highcharts-3d.js +2 -2
  618. package/highcharts-3d.src.js +40 -32
  619. package/highcharts-autoload.d.ts +8 -2
  620. package/highcharts-autoload.js +4 -4
  621. package/highcharts-autoload.src.d.ts +8 -2
  622. package/highcharts-autoload.src.js +313 -208
  623. package/highcharts-gantt.js +4 -4
  624. package/highcharts-gantt.src.js +404 -283
  625. package/highcharts-more.js +2 -2
  626. package/highcharts-more.src.js +90 -56
  627. package/highcharts.d.ts +61 -4
  628. package/highcharts.js +4 -4
  629. package/highcharts.src.d.ts +61 -4
  630. package/highcharts.src.js +312 -207
  631. package/highmaps.js +4 -4
  632. package/highmaps.src.js +390 -272
  633. package/highstock.js +4 -4
  634. package/highstock.src.js +413 -293
  635. package/i18n/fr-FR.js +1 -1
  636. package/i18n/fr-FR.src.js +1 -1
  637. package/i18n/nb-NO.js +1 -1
  638. package/i18n/nb-NO.src.js +1 -1
  639. package/i18n/zh-CN.js +1 -1
  640. package/i18n/zh-CN.src.js +1 -1
  641. package/indicators/acceleration-bands.js +1 -1
  642. package/indicators/acceleration-bands.src.js +1 -1
  643. package/indicators/accumulation-distribution.js +1 -1
  644. package/indicators/accumulation-distribution.src.js +1 -1
  645. package/indicators/ao.js +1 -1
  646. package/indicators/ao.src.js +1 -1
  647. package/indicators/apo.js +1 -1
  648. package/indicators/apo.src.js +1 -1
  649. package/indicators/aroon-oscillator.js +1 -1
  650. package/indicators/aroon-oscillator.src.js +1 -1
  651. package/indicators/aroon.js +2 -2
  652. package/indicators/aroon.src.js +3 -3
  653. package/indicators/atr.js +1 -1
  654. package/indicators/atr.src.js +1 -1
  655. package/indicators/bollinger-bands.js +1 -1
  656. package/indicators/bollinger-bands.src.js +1 -1
  657. package/indicators/cci.js +1 -1
  658. package/indicators/cci.src.js +1 -1
  659. package/indicators/chaikin.js +1 -1
  660. package/indicators/chaikin.src.js +1 -1
  661. package/indicators/cmf.js +1 -1
  662. package/indicators/cmf.src.js +1 -1
  663. package/indicators/cmo.js +1 -1
  664. package/indicators/cmo.src.js +1 -1
  665. package/indicators/dema.js +1 -1
  666. package/indicators/dema.src.js +1 -1
  667. package/indicators/disparity-index.js +1 -1
  668. package/indicators/disparity-index.src.js +1 -1
  669. package/indicators/dmi.js +1 -1
  670. package/indicators/dmi.src.js +1 -1
  671. package/indicators/dpo.js +2 -2
  672. package/indicators/dpo.src.js +4 -3
  673. package/indicators/ichimoku-kinko-hyo.js +1 -1
  674. package/indicators/ichimoku-kinko-hyo.src.js +1 -1
  675. package/indicators/indicators-all.js +2 -2
  676. package/indicators/indicators-all.src.js +8 -7
  677. package/indicators/indicators.js +2 -2
  678. package/indicators/indicators.src.js +2 -2
  679. package/indicators/keltner-channels.js +1 -1
  680. package/indicators/keltner-channels.src.js +1 -1
  681. package/indicators/klinger.js +1 -1
  682. package/indicators/klinger.src.js +1 -1
  683. package/indicators/macd.js +1 -1
  684. package/indicators/macd.src.js +1 -1
  685. package/indicators/mfi.js +1 -1
  686. package/indicators/mfi.src.js +1 -1
  687. package/indicators/momentum.js +1 -1
  688. package/indicators/momentum.src.js +1 -1
  689. package/indicators/natr.js +1 -1
  690. package/indicators/natr.src.js +1 -1
  691. package/indicators/obv.js +1 -1
  692. package/indicators/obv.src.js +1 -1
  693. package/indicators/pivot-points.js +1 -1
  694. package/indicators/pivot-points.src.js +1 -1
  695. package/indicators/ppo.js +1 -1
  696. package/indicators/ppo.src.js +1 -1
  697. package/indicators/price-channel.js +1 -1
  698. package/indicators/price-channel.src.js +1 -1
  699. package/indicators/price-envelopes.js +1 -1
  700. package/indicators/price-envelopes.src.js +1 -1
  701. package/indicators/psar.js +1 -1
  702. package/indicators/psar.src.js +1 -1
  703. package/indicators/regressions.js +1 -1
  704. package/indicators/regressions.src.js +1 -1
  705. package/indicators/roc.js +1 -1
  706. package/indicators/roc.src.js +1 -1
  707. package/indicators/rsi.js +1 -1
  708. package/indicators/rsi.src.js +2 -2
  709. package/indicators/slow-stochastic.js +1 -1
  710. package/indicators/slow-stochastic.src.js +1 -1
  711. package/indicators/stochastic.js +1 -1
  712. package/indicators/stochastic.src.js +1 -1
  713. package/indicators/supertrend.js +1 -1
  714. package/indicators/supertrend.src.js +1 -1
  715. package/indicators/tema.js +1 -1
  716. package/indicators/tema.src.js +1 -1
  717. package/indicators/trendline.js +1 -1
  718. package/indicators/trendline.src.js +1 -1
  719. package/indicators/trix.js +1 -1
  720. package/indicators/trix.src.js +1 -1
  721. package/indicators/volume-by-price.js +1 -1
  722. package/indicators/volume-by-price.src.js +1 -1
  723. package/indicators/vwap.js +1 -1
  724. package/indicators/vwap.src.js +1 -1
  725. package/indicators/williams-r.js +1 -1
  726. package/indicators/williams-r.src.js +1 -1
  727. package/indicators/wma.js +1 -1
  728. package/indicators/wma.src.js +1 -1
  729. package/indicators/zigzag.js +1 -1
  730. package/indicators/zigzag.src.js +1 -1
  731. package/modules/accessibility.js +2 -2
  732. package/modules/accessibility.src.js +69 -63
  733. package/modules/annotations-advanced.js +3 -3
  734. package/modules/annotations-advanced.src.js +25 -23
  735. package/modules/annotations.js +3 -3
  736. package/modules/annotations.src.js +21 -19
  737. package/modules/arc-diagram.js +2 -2
  738. package/modules/arc-diagram.src.js +16 -15
  739. package/modules/arrow-symbols.js +1 -1
  740. package/modules/arrow-symbols.src.js +1 -1
  741. package/modules/boost-canvas.js +2 -2
  742. package/modules/boost-canvas.src.js +29 -20
  743. package/modules/boost.js +2 -2
  744. package/modules/boost.src.js +28 -19
  745. package/modules/broken-axis.js +2 -2
  746. package/modules/broken-axis.src.js +6 -5
  747. package/modules/bullet.js +2 -2
  748. package/modules/bullet.src.js +17 -10
  749. package/modules/coloraxis.js +2 -2
  750. package/modules/coloraxis.src.js +18 -11
  751. package/modules/contour.js +4 -4
  752. package/modules/contour.src.js +19 -12
  753. package/modules/current-date-indicator.js +1 -1
  754. package/modules/current-date-indicator.src.js +1 -1
  755. package/modules/cylinder.js +2 -2
  756. package/modules/cylinder.src.js +9 -10
  757. package/modules/data-sorting.js +1 -1
  758. package/modules/data-sorting.src.js +1 -1
  759. package/modules/data-tools.js +2 -2
  760. package/modules/data-tools.src.js +20 -3
  761. package/modules/data.js +1 -1
  762. package/modules/data.src.js +1 -1
  763. package/modules/datagrouping.js +2 -2
  764. package/modules/datagrouping.src.js +6 -5
  765. package/modules/debugger.js +1 -1
  766. package/modules/debugger.src.js +1 -1
  767. package/modules/dependency-wheel.js +1 -1
  768. package/modules/dependency-wheel.src.js +1 -1
  769. package/modules/dotplot.js +2 -2
  770. package/modules/dotplot.src.js +3 -2
  771. package/modules/drag-panes.js +1 -1
  772. package/modules/drag-panes.src.js +1 -1
  773. package/modules/draggable-points.js +2 -2
  774. package/modules/draggable-points.src.js +2 -3
  775. package/modules/drilldown.js +2 -2
  776. package/modules/drilldown.src.js +5 -4
  777. package/modules/dumbbell.js +2 -2
  778. package/modules/dumbbell.src.js +37 -9
  779. package/modules/export-data.js +2 -2
  780. package/modules/export-data.src.js +17 -16
  781. package/modules/exporting.js +2 -2
  782. package/modules/exporting.src.js +7 -7
  783. package/modules/flowmap.js +2 -2
  784. package/modules/flowmap.src.js +21 -11
  785. package/modules/full-screen.js +1 -1
  786. package/modules/full-screen.src.js +1 -1
  787. package/modules/funnel.js +2 -2
  788. package/modules/funnel.src.js +2 -2
  789. package/modules/funnel3d.js +2 -2
  790. package/modules/funnel3d.src.js +14 -13
  791. package/modules/gantt.js +6 -6
  792. package/modules/gantt.src.js +96 -79
  793. package/modules/geoheatmap.d.ts +0 -12
  794. package/modules/geoheatmap.js +2 -2
  795. package/modules/geoheatmap.src.d.ts +0 -12
  796. package/modules/geoheatmap.src.js +8 -8
  797. package/modules/grid-axis.js +2 -2
  798. package/modules/grid-axis.src.js +4 -4
  799. package/modules/heatmap.d.ts +0 -12
  800. package/modules/heatmap.js +4 -4
  801. package/modules/heatmap.src.d.ts +0 -12
  802. package/modules/heatmap.src.js +40 -33
  803. package/modules/heikinashi.js +1 -1
  804. package/modules/heikinashi.src.js +1 -1
  805. package/modules/histogram-bellcurve.js +1 -1
  806. package/modules/histogram-bellcurve.src.js +15 -3
  807. package/modules/hollowcandlestick.js +1 -1
  808. package/modules/hollowcandlestick.src.js +1 -1
  809. package/modules/item-series.js +2 -2
  810. package/modules/item-series.src.js +18 -6
  811. package/modules/lollipop.js +1 -1
  812. package/modules/lollipop.src.js +1 -1
  813. package/modules/map.d.ts +0 -12
  814. package/modules/map.js +4 -4
  815. package/modules/map.src.d.ts +0 -12
  816. package/modules/map.src.js +83 -68
  817. package/modules/marker-clusters.js +1 -1
  818. package/modules/marker-clusters.src.js +1 -1
  819. package/modules/mouse-wheel-zoom.js +2 -2
  820. package/modules/mouse-wheel-zoom.src.js +3 -3
  821. package/modules/navigator.js +2 -2
  822. package/modules/navigator.src.js +47 -45
  823. package/modules/networkgraph.js +2 -2
  824. package/modules/networkgraph.src.js +31 -21
  825. package/modules/no-data-to-display.js +1 -1
  826. package/modules/no-data-to-display.src.js +1 -1
  827. package/modules/non-cartesian-zoom.js +1 -1
  828. package/modules/non-cartesian-zoom.src.js +1 -1
  829. package/modules/offline-exporting.js +1 -1
  830. package/modules/offline-exporting.src.js +1 -1
  831. package/modules/organization.js +2 -2
  832. package/modules/organization.src.js +3 -2
  833. package/modules/parallel-coordinates.js +2 -2
  834. package/modules/parallel-coordinates.src.js +2 -2
  835. package/modules/pareto.js +1 -1
  836. package/modules/pareto.src.js +1 -1
  837. package/modules/pathfinder.js +2 -2
  838. package/modules/pathfinder.src.js +7 -6
  839. package/modules/pattern-fill.js +2 -2
  840. package/modules/pattern-fill.src.js +7 -5
  841. package/modules/pictorial.js +2 -2
  842. package/modules/pictorial.src.js +10 -6
  843. package/modules/pointandfigure.js +1 -1
  844. package/modules/pointandfigure.src.js +1 -1
  845. package/modules/price-indicator.js +2 -2
  846. package/modules/price-indicator.src.js +5 -4
  847. package/modules/pyramid3d.js +1 -1
  848. package/modules/pyramid3d.src.js +1 -1
  849. package/modules/renko.js +1 -1
  850. package/modules/renko.src.js +1 -1
  851. package/modules/sankey.js +2 -2
  852. package/modules/sankey.src.js +34 -20
  853. package/modules/series-label.js +2 -2
  854. package/modules/series-label.src.js +7 -7
  855. package/modules/series-on-point.js +1 -1
  856. package/modules/series-on-point.src.js +1 -1
  857. package/modules/solid-gauge.js +2 -2
  858. package/modules/solid-gauge.src.js +2 -2
  859. package/modules/sonification.js +2 -2
  860. package/modules/sonification.src.js +19 -19
  861. package/modules/static-scale.js +1 -1
  862. package/modules/static-scale.src.js +1 -1
  863. package/modules/stock-tools.js +3 -3
  864. package/modules/stock-tools.src.js +15 -10
  865. package/modules/stock.js +6 -6
  866. package/modules/stock.src.js +105 -89
  867. package/modules/streamgraph.js +1 -1
  868. package/modules/streamgraph.src.js +1 -1
  869. package/modules/sunburst.js +2 -2
  870. package/modules/sunburst.src.js +41 -26
  871. package/modules/textpath.js +1 -1
  872. package/modules/textpath.src.js +1 -1
  873. package/modules/tiledwebmap.js +2 -2
  874. package/modules/tiledwebmap.src.js +8 -6
  875. package/modules/tilemap.js +2 -2
  876. package/modules/tilemap.src.js +3 -3
  877. package/modules/timeline.js +2 -2
  878. package/modules/timeline.src.js +5 -4
  879. package/modules/treegraph.js +2 -2
  880. package/modules/treegraph.src.js +17 -8
  881. package/modules/treegrid.js +2 -2
  882. package/modules/treegrid.src.js +28 -18
  883. package/modules/treemap.js +2 -2
  884. package/modules/treemap.src.js +35 -22
  885. package/modules/variable-pie.js +2 -2
  886. package/modules/variable-pie.src.js +6 -4
  887. package/modules/variwide.js +2 -2
  888. package/modules/variwide.src.js +2 -2
  889. package/modules/vector.js +1 -1
  890. package/modules/vector.src.js +1 -1
  891. package/modules/venn.js +1 -1
  892. package/modules/venn.src.js +1 -1
  893. package/modules/windbarb.js +2 -2
  894. package/modules/windbarb.src.js +2 -2
  895. package/modules/wordcloud.js +1 -1
  896. package/modules/wordcloud.src.js +1 -1
  897. package/modules/xrange.js +1 -1
  898. package/modules/xrange.src.js +1 -1
  899. package/package.json +2 -3
  900. package/standalone-navigator.js +4 -4
  901. package/standalone-navigator.src.js +355 -249
  902. package/themes/adaptive.js +1 -1
  903. package/themes/adaptive.src.js +1 -1
  904. package/themes/avocado.js +1 -1
  905. package/themes/avocado.src.js +1 -1
  906. package/themes/dark-unica.js +1 -1
  907. package/themes/dark-unica.src.js +1 -1
  908. package/themes/grid-light.js +1 -1
  909. package/themes/grid-light.src.js +1 -1
  910. package/themes/high-contrast.js +1 -1
  911. package/themes/high-contrast.src.js +1 -1
  912. package/themes/sand-signika.js +1 -1
  913. package/themes/sand-signika.src.js +1 -1
  914. package/themes/sunset.js +1 -1
  915. package/themes/sunset.src.js +1 -1
package/highmaps.src.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: LicenseRef-Highcharts
2
2
  /**
3
- * @license Highcharts Maps v13.0.1 (2026-08-17)
3
+ * @license Highcharts Maps v13.0.2 (2026-08-27)
4
4
  * @module highcharts/highmaps
5
5
  *
6
6
  * (c) 2011-2026 Highsoft AS
@@ -93,7 +93,7 @@ var Globals;
93
93
  * Constants
94
94
  *
95
95
  * */
96
- Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '13.0.1', Globals.win = (typeof window !== 'undefined' ?
96
+ Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '13.0.2', Globals.win = (typeof window !== 'undefined' ?
97
97
  window :
98
98
  {}), // eslint-disable-line node/no-unsupported-features/es-builtins
99
99
  Globals.doc = Globals.win.document, Globals.svg = !!Globals.doc?.createElementNS?.(Globals.SVG_NS, 'svg')?.createSVGRect, Globals.pageLang = Globals.doc?.documentElement?.closest('[lang]')?.lang, Globals.userAgent = Globals.win.navigator?.userAgent || '', Globals.isChrome = Globals.win.chrome, Globals.isFirefox = Globals.userAgent.indexOf('Firefox') !== -1, Globals.isMS = /(edge|msie|trident)/i.test(Globals.userAgent) && !Globals.win.opera, Globals.isSafari = !Globals.isChrome && Globals.userAgent.indexOf('Safari') !== -1, Globals.isTouchDevice = /(Mobile|Android|Windows Phone)/.test(Globals.userAgent), Globals.isWebKit = Globals.userAgent.indexOf('AppleWebKit') !== -1, Globals.deg2rad = Math.PI * 2 / 360, Globals.marginNames = [
@@ -420,6 +420,29 @@ const ChartDefaults = {
420
420
  * @context Highcharts.Chart
421
421
  * @apioption chart.events.load
422
422
  */
423
+ /**
424
+ * Fires while the chart is panned by mouse drag. Panning must be
425
+ * enabled through [chart.panning](#chart.panning). One parameter,
426
+ * `event`, is passed to the function, containing common event
427
+ * information as well as `event.originalEvent`, the underlying pointer
428
+ * event. Note that the event fires for every mouse move during the
429
+ * drag, not once per gesture.
430
+ *
431
+ * Calling `event.preventDefault()` or returning false prevents the
432
+ * default panning of the axes. In Highcharts Maps, and on ordinal axes
433
+ * in Highcharts Stock, the panning is applied outside the default
434
+ * action and is not prevented.
435
+ *
436
+ * Panning by touch does not fire this event, unless
437
+ * [chart.zooming.singleTouch](#chart.zooming.singleTouch) is enabled and
438
+ * no zoom type is set. Single-finger drags are then handled as mouse
439
+ * drags and fire this event.
440
+ *
441
+ * @type {Highcharts.ChartPanCallbackFunction}
442
+ * @since 7.0.2
443
+ * @context Highcharts.Chart
444
+ * @apioption chart.events.pan
445
+ */
423
446
  /**
424
447
  * Fires when the chart is redrawn, either after a call to
425
448
  * `chart.redraw()` or after an axis, series or point is modified with
@@ -2434,7 +2457,7 @@ function getStyle(el, prop, toInt) {
2434
2457
  const css = win.getComputedStyle(el, void 0); // eslint-disable-line no-undefined
2435
2458
  if (css) {
2436
2459
  style = css.getPropertyValue(prop);
2437
- if (pick(toInt, prop !== 'opacity')) {
2460
+ if (toInt ?? prop !== 'opacity') {
2438
2461
  style = pInt(style);
2439
2462
  }
2440
2463
  }
@@ -2684,7 +2707,7 @@ function merge(extendOrSource, ...sources) {
2684
2707
  function normalizeTickInterval(interval, multiples, magnitude, allowDecimals, hasTickAmount) {
2685
2708
  let i, retInterval = interval;
2686
2709
  // Round to a tenfold of 1, 2, 2.5 or 5
2687
- magnitude = pick(magnitude, getMagnitude(interval));
2710
+ magnitude = (magnitude ?? getMagnitude(interval));
2688
2711
  const normalized = interval / magnitude;
2689
2712
  // Multiples for a linear scale
2690
2713
  if (!multiples) {
@@ -2797,20 +2820,22 @@ function pad(number, length, padder) {
2797
2820
  .replace('-', '')
2798
2821
  .length).join(padder || '0') + number;
2799
2822
  }
2800
- /* eslint-disable jsdoc/check-param-names */
2823
+ /* eslint-disable valid-jsdoc */
2801
2824
  /**
2802
2825
  * Return the first value that is not null or undefined.
2803
2826
  *
2827
+ * @deprecated 13.0.2
2828
+ * Use nullish coalescing (`??`) or explicit fallback logic instead.
2829
+ *
2804
2830
  * @function Highcharts.pick<T>
2805
2831
  *
2806
- * @param {...Array<T|null|undefined>} items
2832
+ * @param {...(T|null|undefined)} args
2807
2833
  * Variable number of arguments to inspect.
2808
2834
  *
2809
2835
  * @return {T}
2810
2836
  * The value of the first argument that is not null or undefined.
2811
2837
  */
2812
- function pick() {
2813
- const args = arguments;
2838
+ function pick(...args) {
2814
2839
  const length = args.length;
2815
2840
  for (let i = 0; i < length; i++) {
2816
2841
  const arg = args[i];
@@ -2819,7 +2844,7 @@ function pick() {
2819
2844
  }
2820
2845
  }
2821
2846
  }
2822
- /* eslint-enable jsdoc/check-param-names */
2847
+ /* eslint-enable valid-jsdoc */
2823
2848
  /**
2824
2849
  * Shortcut for parseInt
2825
2850
  *
@@ -3202,7 +3227,8 @@ function insertItem(item, collection) {
3202
3227
  !collection[i] ||
3203
3228
  // Handle index option, the element to insert has lower index
3204
3229
  (isNumber(indexOption) &&
3205
- indexOption < pick(collection[i].options.index, collection[i]._i)) ||
3230
+ indexOption < (collection[i].options.index ??
3231
+ collection[i]._i)) ||
3206
3232
  // Insert the new item before other internal items
3207
3233
  // (navigator)
3208
3234
  collection[i].options.isInternal) {
@@ -3288,7 +3314,7 @@ const uniqueKey = (function () {
3288
3314
  * State of the serial mode.
3289
3315
  */
3290
3316
  function useSerialIds(mode) {
3291
- return (serialMode = pick(mode, serialMode));
3317
+ return (serialMode = (mode ?? serialMode));
3292
3318
  }
3293
3319
  /* *
3294
3320
  *
@@ -3754,6 +3780,10 @@ const isDateTimeFormatOptions = (obj) => obj.main === void 0;
3754
3780
  *
3755
3781
  * @param {Highcharts.TimeOptions} [options] Time options as defined in
3756
3782
  * [chart.options.time](/highcharts/time).
3783
+ *
3784
+ * @param {Highcharts.LangOptions} [lang]
3785
+ * Language options. When `options.locale` is not set, `lang.locale` is used as
3786
+ * the locale fallback for locale-aware date formatting.
3757
3787
  */
3758
3788
  class TimeBase {
3759
3789
  /* *
@@ -3772,8 +3802,8 @@ class TimeBase {
3772
3802
  };
3773
3803
  this.variableTimezone = false;
3774
3804
  this.Date = TimeBase_win.Date;
3775
- this.update(options);
3776
3805
  this.lang = lang;
3806
+ this.update(options);
3777
3807
  }
3778
3808
  /* *
3779
3809
  *
@@ -3885,7 +3915,9 @@ class TimeBase {
3885
3915
  /**
3886
3916
  * Shorthand to get a cached `Intl.DateTimeFormat` instance.
3887
3917
  */
3888
- dateTimeFormat(options, timestamp, locale = this.options.locale || pageLang) {
3918
+ dateTimeFormat(options, timestamp, locale = (this.options.locale ||
3919
+ this.lang?.locale ||
3920
+ pageLang)) {
3889
3921
  const cacheKey = JSON.stringify(options) + locale;
3890
3922
  if (isString(options)) {
3891
3923
  options = this.str2dtf(options);
@@ -7825,6 +7857,41 @@ const DefaultOptions = {
7825
7857
  * @param {global.Event} event
7826
7858
  * The event that occurred.
7827
7859
  */
7860
+ /**
7861
+ * Gets fired while the chart is panned by mouse drag. Calling
7862
+ * `event.preventDefault()` or returning `false` prevents the default panning
7863
+ * of the axes.
7864
+ *
7865
+ * @callback Highcharts.ChartPanCallbackFunction
7866
+ *
7867
+ * @param {Highcharts.Chart} this
7868
+ * The chart on which the event occurred.
7869
+ *
7870
+ * @param {Highcharts.ChartPanEventObject} event
7871
+ * The event that occurred.
7872
+ */
7873
+ /**
7874
+ * Contains common event information. Through the `originalEvent` property you
7875
+ * can access the pointer event that triggered the panning.
7876
+ *
7877
+ * @interface Highcharts.ChartPanEventObject
7878
+ */ /**
7879
+ * The pointer event that triggered the panning.
7880
+ * @name Highcharts.ChartPanEventObject#originalEvent
7881
+ * @type {Highcharts.PointerEventObject}
7882
+ */ /**
7883
+ * Prevents the default behavior of the event.
7884
+ * @name Highcharts.ChartPanEventObject#preventDefault
7885
+ * @type {Function}
7886
+ */ /**
7887
+ * The event target.
7888
+ * @name Highcharts.ChartPanEventObject#target
7889
+ * @type {Highcharts.Chart}
7890
+ */ /**
7891
+ * The event type.
7892
+ * @name Highcharts.ChartPanEventObject#type
7893
+ * @type {"pan"}
7894
+ */
7828
7895
  /**
7829
7896
  * Fires when the chart is redrawn, either after a call to `chart.redraw()` or
7830
7897
  * after an axis, series or point is modified with the `redraw` option set to
@@ -8200,7 +8267,9 @@ Color.None = new Color(''); // Must be last static for init
8200
8267
  */
8201
8268
  /**
8202
8269
  * A valid color type than can be parsed and handled by Highcharts. It can be a
8203
- * color string, a gradient object, or a pattern object.
8270
+ * color string (including CSS expressions), a gradient object, or a pattern
8271
+ * object. Read more about colors in the [Highcharts
8272
+ * documentation](https://www.highcharts.com/docs/chart-design-and-style/colors).
8204
8273
  *
8205
8274
  * @typedef {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject} Highcharts.ColorType
8206
8275
  */
@@ -8743,7 +8812,8 @@ Fx.timers = [];
8743
8812
  * so it should be moved to the SVGRenderer.
8744
8813
  */
8745
8814
  function setAnimation(animation, chart) {
8746
- chart.renderer.globalAnimation = pick(animation, chart.options.chart.animation, true);
8815
+ chart.renderer.globalAnimation =
8816
+ animation ?? chart.options.chart.animation ?? true;
8747
8817
  }
8748
8818
  /**
8749
8819
  * Get the animation in object form, where a disabled animation is always
@@ -9806,7 +9876,7 @@ function format(str = '', ctx, owner) {
9806
9876
  replacement = `"${replacement}"`;
9807
9877
  }
9808
9878
  }
9809
- str = str.replace(match.find, pick(replacement, ''));
9879
+ str = str.replace(match.find, (replacement ?? ''));
9810
9880
  });
9811
9881
  return hasSub ? format(str, ctx, owner) : str;
9812
9882
  }
@@ -10055,7 +10125,7 @@ var RendererUtilities;
10055
10125
  boxes = boxes.map((box) => ({
10056
10126
  size: box.size,
10057
10127
  targets: [box.target],
10058
- align: pick(box.align, 0.5)
10128
+ align: (box.align ?? 0.5)
10059
10129
  }));
10060
10130
  while (overlapping) {
10061
10131
  // Initial positions: target centered in box
@@ -10213,8 +10283,10 @@ class SVGElement {
10213
10283
  * Property value.
10214
10284
  */
10215
10285
  _defaultGetter(key) {
10216
- let ret = pick(this[key + 'Value'], // Align getter
10217
- this[key], this.element ? this.element.getAttribute(key) : null, 0);
10286
+ let ret = (this[key + 'Value'] ??
10287
+ this[key] ??
10288
+ (this.element ? this.element.getAttribute(key) : null) ??
10289
+ 0);
10218
10290
  if (/^-?[\d\.]+$/.test(ret)) { // Is numerical
10219
10291
  ret = parseFloat(ret);
10220
10292
  }
@@ -10377,7 +10449,7 @@ class SVGElement {
10377
10449
  }
10378
10450
  alignTo = void 0; // Do not use the box
10379
10451
  }
10380
- const alignToBox = pick(alignTo, renderer[alignToKey], renderer),
10452
+ const alignToBox = alignTo ?? renderer[alignToKey] ?? renderer,
10381
10453
  // Default: left align
10382
10454
  x = (alignToBox.x || 0) + (alignOptions.x || 0) +
10383
10455
  ((alignToBox.width || 0) - (alignOptions.width || 0)) *
@@ -10437,7 +10509,7 @@ class SVGElement {
10437
10509
  * Returns the SVGElement for chaining.
10438
10510
  */
10439
10511
  animate(params, options, complete) {
10440
- const animOptions = animObject(pick(options, this.renderer.globalAnimation, true)), deferTime = animOptions.defer;
10512
+ const animOptions = animObject((options ?? this.renderer.globalAnimation ?? true)), deferTime = animOptions.defer;
10441
10513
  // When the page is hidden save resources in the background by not
10442
10514
  // running animation at all (#9749).
10443
10515
  if (SVGElement_doc.hidden) {
@@ -10929,7 +11001,7 @@ class SVGElement {
10929
11001
  .split(','); // Ending comma
10930
11002
  i = v.length;
10931
11003
  while (i--) {
10932
- v[i] = '' + (pInt(v[i]) * pick(strokeWidth, NaN));
11004
+ v[i] = '' + (pInt(v[i]) * (strokeWidth ?? NaN));
10933
11005
  }
10934
11006
  value = v.join(',').replace(/NaN/g, 'none'); // #3226
10935
11007
  this.element.setAttribute('stroke-dasharray', value);
@@ -11069,7 +11141,7 @@ class SVGElement {
11069
11141
  * The bounding box with `x`, `y`, `width` and `height` properties.
11070
11142
  */
11071
11143
  getBBox(reload, rot) {
11072
- const wrapper = this, { element, renderer, styles, textStr } = wrapper, { cache, cacheKeys } = renderer, isSVG = element.namespaceURI === wrapper.SVG_NS, rotation = pick(rot, wrapper.rotation, 0), fontSize = renderer.styledMode ? (element &&
11144
+ const wrapper = this, { element, renderer, styles, textStr } = wrapper, { cache, cacheKeys } = renderer, isSVG = element.namespaceURI === wrapper.SVG_NS, rotation = (rot ?? wrapper.rotation ?? 0), fontSize = renderer.styledMode ? (element &&
11073
11145
  SVGElement.prototype.getStyle.call(element, 'font-size')) : (styles.fontSize), cacheKey = this.getBBoxCacheKey([
11074
11146
  renderer.rootFontSize,
11075
11147
  this.textWidth, // #7874, also useHTML
@@ -11595,7 +11667,7 @@ class SVGElement {
11595
11667
  symbolAttr(hash) {
11596
11668
  const wrapper = this;
11597
11669
  SVGElement.symbolCustomAttribs.forEach(function (key) {
11598
- wrapper[key] = pick(hash[key], wrapper[key]);
11670
+ wrapper[key] = (hash[key] ?? wrapper[key]);
11599
11671
  });
11600
11672
  wrapper.attr({
11601
11673
  d: wrapper.renderer.symbols[wrapper.symbolName](wrapper.x, wrapper.y, wrapper.width, wrapper.height, wrapper)
@@ -11635,7 +11707,7 @@ class SVGElement {
11635
11707
  }
11636
11708
  // Replace text content and escape markup
11637
11709
  titleNode.textContent = replaceNested(// Scan #[73]
11638
- pick(value, ''), // #3276, #3895
11710
+ (value ?? ''), // #3276, #3895
11639
11711
  [/<[^>]*>/g, '']).replace(/&lt;/g, '<').replace(/&gt;/g, '>');
11640
11712
  }
11641
11713
  /**
@@ -12413,7 +12485,7 @@ class SVGLabel extends SVG_SVGElement {
12413
12485
  if ((this.textStr && this.bBox.width === 0 && this.bBox.height === 0) || this.rotation) {
12414
12486
  this.updateBoxSize();
12415
12487
  }
12416
- const { padding, height = 0, translateX = 0, translateY = 0, width = 0 } = this, paddingLeft = pick(this.paddingLeft, padding), rotation = rot ?? (this.rotation || 0);
12488
+ const { padding, height = 0, translateX = 0, translateY = 0, width = 0 } = this, paddingLeft = (this.paddingLeft ?? padding), rotation = rot ?? (this.rotation || 0);
12417
12489
  let bBox = {
12418
12490
  width,
12419
12491
  height,
@@ -12466,7 +12538,7 @@ class SVGLabel extends SVG_SVGElement {
12466
12538
  this.attr({
12467
12539
  // Alignment is available now (#3295, 0 not rendered if given
12468
12540
  // as a value)
12469
- text: pick(this.textStr, ''),
12541
+ text: (this.textStr ?? ''),
12470
12542
  x: this.x || 0,
12471
12543
  y: this.y || 0
12472
12544
  });
@@ -12622,8 +12694,8 @@ class SVGLabel extends SVG_SVGElement {
12622
12694
  /** @internal */
12623
12695
  getPaddedWidth() {
12624
12696
  const padding = this.padding;
12625
- const paddingLeft = pick(this.paddingLeft, padding);
12626
- const paddingRight = pick(this.paddingRight, padding);
12697
+ const paddingLeft = (this.paddingLeft ?? padding);
12698
+ const paddingRight = (this.paddingRight ?? padding);
12627
12699
  return ((this.widthSetting || this.bBox.width || 0) +
12628
12700
  paddingLeft +
12629
12701
  paddingRight);
@@ -12724,7 +12796,7 @@ function arc(cx, cy, w, h, options) {
12724
12796
  const arc = [];
12725
12797
  if (options) {
12726
12798
  let start = options.start || 0, end = options.end || 0;
12727
- const rx = pick(options.r, w), ry = pick(options.r, h || w),
12799
+ const rx = (options.r ?? w), ry = (options.r ?? (h || w)),
12728
12800
  // Subtract a small number to prevent cos and sin of start and end
12729
12801
  // from becoming equal on 360 arcs (#1561). See "Arc proximity"
12730
12802
  // tests at samples/unit-tests/svgrenderer/symbol/demo.js
@@ -12734,16 +12806,17 @@ function arc(cx, cy, w, h, options) {
12734
12806
  start = Math.PI / 2;
12735
12807
  end = Math.PI * 2.5 - proximity;
12736
12808
  }
12737
- const innerRadius = options.innerR, open = pick(options.open, fullCircle), cosStart = fullCircle ? 0 : Math.cos(start), sinStart = fullCircle ? 1 : Math.sin(start), cosEnd = fullCircle ? 0 : Math.cos(end), sinEnd = fullCircle ? 1 : Math.sin(end),
12809
+ const innerRadius = options.innerR, open = (options.open ?? fullCircle), cosStart = fullCircle ? 0 : Math.cos(start), sinStart = fullCircle ? 1 : Math.sin(start), cosEnd = fullCircle ? 0 : Math.cos(end), sinEnd = fullCircle ? 1 : Math.sin(end),
12738
12810
  // Proximity takes care of rounding errors around PI (#6971)
12739
- longArc = pick(options.longArc, end - start - Math.PI < proximity ? 0 : 1);
12811
+ longArc = options.longArc ??
12812
+ (end - start - Math.PI < proximity ? 0 : 1);
12740
12813
  let arcSegment = [
12741
12814
  'A', // ArcTo
12742
12815
  rx, // X radius
12743
12816
  ry, // Y radius
12744
12817
  0, // Slanting
12745
12818
  longArc, // Long or short arc
12746
- pick(options.clockwise, 1), // Clockwise
12819
+ (options.clockwise ?? 1), // Clockwise
12747
12820
  // Use a static pixel offset for full circle (#21701)
12748
12821
  cx + (fullCircle ? 0.001 : rx * cosEnd),
12749
12822
  cy + ry * sinEnd
@@ -13274,7 +13347,7 @@ class TextBuilder {
13274
13347
  * @internal
13275
13348
  */
13276
13349
  buildSVG() {
13277
- const wrapper = this.svgElement, textNode = wrapper.element, renderer = wrapper.renderer, textStr = pick(wrapper.textStr, '').toString(), hasMarkup = textStr.indexOf('<') !== -1, childNodes = textNode.childNodes, tempParent = !wrapper.added && renderer.box, regexMatchBreaks = /<br.*?>/g,
13350
+ const wrapper = this.svgElement, textNode = wrapper.element, renderer = wrapper.renderer, textStr = (wrapper.textStr ?? '').toString(), hasMarkup = textStr.indexOf('<') !== -1, childNodes = textNode.childNodes, tempParent = !wrapper.added && renderer.box, regexMatchBreaks = /<br.*?>/g,
13278
13351
  // The buildText code is quite heavy, so if we're not changing
13279
13352
  // something that affects the text, skip it (#6113).
13280
13353
  textCache = [
@@ -13858,7 +13931,7 @@ class SVGRenderer {
13858
13931
  this.url = this.getReferenceURL();
13859
13932
  // Add description
13860
13933
  const desc = this.createElement('desc').add();
13861
- desc.element.appendChild(SVGRenderer_doc.createTextNode('Created with Highcharts 13.0.1'));
13934
+ desc.element.appendChild(SVGRenderer_doc.createTextNode('Created with Highcharts 13.0.2'));
13862
13935
  this.defs = this.createElement('defs').add();
13863
13936
  this.allowHTML = allowHTML;
13864
13937
  this.forExport = forExport;
@@ -14644,7 +14717,7 @@ class SVGRenderer {
14644
14717
  this.attr('height')
14645
14718
  });
14646
14719
  },
14647
- duration: pick(animate, true) ? void 0 : 0
14720
+ duration: (animate ?? true) ? void 0 : 0
14648
14721
  });
14649
14722
  renderer.alignElements();
14650
14723
  }
@@ -14802,8 +14875,8 @@ class SVGRenderer {
14802
14875
  // The image width is not always the same as the symbol width. The
14803
14876
  // image may be centered within the symbol, as is the case when
14804
14877
  // image shapes are used as label backgrounds, for example in flags.
14805
- img.imgwidth = pick(options?.width, symbolSizes[imageSrc]?.width);
14806
- img.imgheight = pick(options?.height, symbolSizes[imageSrc]?.height);
14878
+ img.imgwidth = (options?.width ?? symbolSizes[imageSrc]?.width);
14879
+ img.imgheight = (options?.height ?? symbolSizes[imageSrc]?.height);
14807
14880
  /**
14808
14881
  * Set the size and position
14809
14882
  */
@@ -19282,11 +19355,11 @@ class Tick {
19282
19355
  * @function Highcharts.Tick#addLabel
19283
19356
  */
19284
19357
  addLabel() {
19285
- const tick = this, axis = tick.axis, options = axis.options, chart = axis.chart, categories = axis.categories, log = axis.logarithmic, names = axis.names, pos = tick.pos, labelOptions = pick(tick.options?.labels, options.labels), tickPositions = axis.tickPositions, isFirst = pos === tickPositions[0], isLast = pos === tickPositions[tickPositions.length - 1], tickPositionInfo = tickPositions.info, boundary = tickPositionInfo?.boundaryTicks[pos], DTLFormats = options.dateTimeLabelFormats;
19358
+ const tick = this, axis = tick.axis, options = axis.options, chart = axis.chart, categories = axis.categories, log = axis.logarithmic, names = axis.names, pos = tick.pos, labelOptions = (tick.options?.labels ?? options.labels), tickPositions = axis.tickPositions, isFirst = pos === tickPositions[0], isLast = pos === tickPositions[tickPositions.length - 1], tickPositionInfo = tickPositions.info, boundary = tickPositionInfo?.boundaryTicks[pos], DTLFormats = options.dateTimeLabelFormats;
19286
19359
  let label = tick.label, dateTimeLabelFormat, dateTimeLabelFormats, i;
19287
19360
  // The context value
19288
19361
  let value = this.parameters.category || (categories ?
19289
- pick(categories[pos], names[pos], pos) :
19362
+ (categories[pos] ?? names[pos] ?? pos) :
19290
19363
  pos);
19291
19364
  if (log && isNumber(value)) {
19292
19365
  value = correctFloat(log.lin2log(value));
@@ -19533,7 +19606,7 @@ class Tick {
19533
19606
  labelOptions.y;
19534
19607
  }
19535
19608
  x = x +
19536
- pick(labelOptions.x, [0, 1, 0, -1][axis.side] * distance) +
19609
+ (labelOptions.x ?? [0, 1, 0, -1][axis.side] * distance) +
19537
19610
  labelOffsetCorrection +
19538
19611
  rotCorr.x -
19539
19612
  (tickmarkOffset && horiz ?
@@ -19588,7 +19661,7 @@ class Tick {
19588
19661
  * @function Highcharts.Tick#handleOverflow
19589
19662
  */
19590
19663
  handleOverflow(xy) {
19591
- const tick = this, axis = this.axis, labelOptions = axis.options.labels, pxPos = xy.x, chartWidth = axis.chart.chartWidth, spacing = axis.chart.spacing, leftBound = pick(axis.labelLeft, Math.min(axis.pos, spacing[3])), rightBound = pick(axis.labelRight, Math.max(!axis.isRadial ? axis.pos + axis.len : 0, chartWidth - spacing[1])), label = this.label, rotation = this.rotation, factor = getAlignFactor(axis.labelAlign || label.attr('align')), labelWidth = label.getBBox().width, slotWidth = axis.getSlotWidth(tick), xCorrection = factor, css = {};
19664
+ const tick = this, axis = this.axis, labelOptions = axis.options.labels, pxPos = xy.x, chartWidth = axis.chart.chartWidth, spacing = axis.chart.spacing, leftBound = axis.labelLeft ?? Math.min(axis.pos, spacing[3]), rightBound = (axis.labelRight ?? Math.max(!axis.isRadial ? axis.pos + axis.len : 0, chartWidth - spacing[1])), label = this.label, rotation = this.rotation, factor = getAlignFactor(axis.labelAlign || label.attr('align')), labelWidth = label.getBBox().width, slotWidth = axis.getSlotWidth(tick), xCorrection = factor, css = {};
19592
19665
  let modifiedSlotWidth = slotWidth, goRight = 1, leftPos, rightPos, textWidth;
19593
19666
  // Check if the label overshoots the chart spacing box. If it does, move
19594
19667
  // it. If it now overshoots the slotWidth, add ellipsis.
@@ -19655,9 +19728,8 @@ class Tick {
19655
19728
  * @param {number} [opacity]
19656
19729
  */
19657
19730
  render(index, old, opacity) {
19658
- const tick = this, axis = tick.axis, horiz = axis.horiz, pos = tick.pos, tickmarkOffset = pick(tick.tickmarkOffset, axis.tickmarkOffset), xy = tick.getPosition(horiz, pos, tickmarkOffset, old), x = xy.x, y = xy.y, axisStart = axis.pos, axisEnd = axisStart + axis.len, pxPos = horiz ? x : y;
19659
- const labelOpacity = pick(opacity, tick.label?.newOpacity, // #15528
19660
- 1);
19731
+ const tick = this, axis = tick.axis, horiz = axis.horiz, pos = tick.pos, tickmarkOffset = (tick.tickmarkOffset ?? axis.tickmarkOffset), xy = tick.getPosition(horiz, pos, tickmarkOffset, old), x = xy.x, y = xy.y, axisStart = axis.pos, axisEnd = axisStart + axis.len, pxPos = horiz ? x : y;
19732
+ const labelOpacity = (opacity ?? tick.label?.newOpacity ?? 1);
19661
19733
  // Anything that is not between `axis.pos` and `axis.pos + axis.length`
19662
19734
  // should not be visible (#20166). The `correctFloat` is for reversed
19663
19735
  // axes in Safari.
@@ -19685,7 +19757,7 @@ class Tick {
19685
19757
  * @param {number} opacity The opacity of the grid line
19686
19758
  */
19687
19759
  renderGridLine(old, opacity) {
19688
- const tick = this, axis = tick.axis, options = axis.options, attribs = {}, pos = tick.pos, type = tick.type, tickmarkOffset = pick(tick.tickmarkOffset, axis.tickmarkOffset), renderer = axis.chart.renderer;
19760
+ const tick = this, axis = tick.axis, options = axis.options, attribs = {}, pos = tick.pos, type = tick.type, tickmarkOffset = (tick.tickmarkOffset ?? axis.tickmarkOffset), renderer = axis.chart.renderer;
19689
19761
  let gridLine = tick.gridLine, gridLinePath, gridLineWidth = options.gridLineWidth, gridLineColor = options.gridLineColor, dashStyle = options.gridLineDashStyle;
19690
19762
  if (tick.type === 'minor') {
19691
19763
  gridLineWidth = options.minorGridLineWidth;
@@ -19741,7 +19813,7 @@ class Tick {
19741
19813
  * @param {number} opacity The opacity of the mark
19742
19814
  */
19743
19815
  renderMark(xy, opacity) {
19744
- const tick = this, axis = tick.axis, options = axis.options, renderer = axis.chart.renderer, type = tick.type, tickSize = axis.tickSize(type ? type + 'Tick' : 'tick'), x = xy.x, y = xy.y, tickWidth = pick(options[type !== 'minor' ? 'tickWidth' : 'minorTickWidth'], !type && axis.isXAxis ? 1 : 0), // X axis defaults to 1
19816
+ const tick = this, axis = tick.axis, options = axis.options, renderer = axis.chart.renderer, type = tick.type, tickSize = axis.tickSize(type ? type + 'Tick' : 'tick'), x = xy.x, y = xy.y, tickWidth = options[type !== 'minor' ? 'tickWidth' : 'minorTickWidth'] ?? (!type && axis.isXAxis ? 1 : 0), // X axis defaults to 1
19745
19817
  tickColor = options[type !== 'minor' ? 'tickColor' : 'minorTickColor'];
19746
19818
  let mark = tick.mark;
19747
19819
  const isNewMark = !mark;
@@ -19786,7 +19858,7 @@ class Tick {
19786
19858
  * @param {number} index The index of the tick
19787
19859
  */
19788
19860
  renderLabel(xy, old, opacity, index) {
19789
- const tick = this, axis = tick.axis, horiz = axis.horiz, options = axis.options, label = tick.label, labelOptions = options.labels, step = labelOptions.step, tickmarkOffset = pick(tick.tickmarkOffset, axis.tickmarkOffset), x = xy.x, y = xy.y;
19861
+ const tick = this, axis = tick.axis, horiz = axis.horiz, options = axis.options, label = tick.label, labelOptions = options.labels, step = labelOptions.step, tickmarkOffset = (tick.tickmarkOffset ?? axis.tickmarkOffset), x = xy.x, y = xy.y;
19790
19862
  let show = true;
19791
19863
  if (label && isNumber(x)) {
19792
19864
  label.xy = xy = tick.getLabelPosition(x, y, label, horiz, labelOptions, tickmarkOffset, index, step);
@@ -19891,12 +19963,7 @@ const { deg2rad: Axis_deg2rad } = Core_Globals;
19891
19963
 
19892
19964
 
19893
19965
 
19894
- const getNormalizedTickInterval = (axis, tickInterval) => normalizeTickInterval(tickInterval, void 0, void 0, pick(axis.options.allowDecimals,
19895
- // If the tick interval is greater than 0.5, avoid decimals, as
19896
- // linear axes are often used to render discrete values (#3363). If
19897
- // a tick amount is set, allow decimals by default, as it increases
19898
- // the chances for a good fit.
19899
- tickInterval < 0.5 || axis.tickAmount !== void 0), !!axis.tickAmount);
19966
+ const getNormalizedTickInterval = (axis, tickInterval) => normalizeTickInterval(tickInterval, void 0, void 0, (axis.options.allowDecimals ?? (tickInterval < 0.5 || axis.tickAmount !== void 0)), !!axis.tickAmount);
19900
19967
  extend(Axis_defaultOptions, { xAxis, yAxis: merge(xAxis, yAxis) });
19901
19968
  /* *
19902
19969
  *
@@ -20004,7 +20071,7 @@ class Axis {
20004
20071
  axis.coll = coll;
20005
20072
  fireEvent(this, 'init', { userOptions: userOptions });
20006
20073
  // Needed in setOptions
20007
- axis.opposite = pick(userOptions.opposite, axis.opposite);
20074
+ axis.opposite = (userOptions.opposite ?? axis.opposite);
20008
20075
  /**
20009
20076
  * The side on which the axis is rendered. 0 is top, 1 is right, 2
20010
20077
  * is bottom and 3 is left.
@@ -20012,10 +20079,9 @@ class Axis {
20012
20079
  * @name Highcharts.Axis#side
20013
20080
  * @type {number}
20014
20081
  */
20015
- axis.side = pick(userOptions.side, axis.side, (horiz ?
20082
+ axis.side = (userOptions.side ?? axis.side ?? (horiz ?
20016
20083
  (axis.opposite ? 0 : 2) : // Top : bottom
20017
- (axis.opposite ? 1 : 3)) // Right : left
20018
- );
20084
+ (axis.opposite ? 1 : 3)));
20019
20085
  /**
20020
20086
  * Current options for the axis after merge of defaults and user's
20021
20087
  * options.
@@ -20044,7 +20110,7 @@ class Axis {
20044
20110
  * @name Highcharts.Axis#reversed
20045
20111
  * @type {boolean}
20046
20112
  */
20047
- axis.reversed = pick(options.reversed, axis.reversed);
20113
+ axis.reversed = (options.reversed ?? axis.reversed);
20048
20114
  axis.visible = options.visible;
20049
20115
  axis.zoomEnabled = options.zoomEnabled;
20050
20116
  // Initial categories
@@ -20132,7 +20198,7 @@ class Axis {
20132
20198
  * @name Highcharts.Axis#crosshair
20133
20199
  * @type {boolean|Highcharts.AxisCrosshairOptions}
20134
20200
  */
20135
- const crosshair = pick(options.crosshair, splat(chart.options.tooltip.crosshairs)[isXAxis ? 0 : 1]);
20201
+ const crosshair = options.crosshair ?? splat(chart.options.tooltip.crosshairs)[isXAxis ? 0 : 1];
20136
20202
  axis.crosshair = crosshair === true ? {} : crosshair;
20137
20203
  // Register. Don't add it again on Axis.update().
20138
20204
  if (chart.axes.indexOf(axis) === -1) { //
@@ -20316,8 +20382,8 @@ class Axis {
20316
20382
  seriesDataMax = xExtremes.max;
20317
20383
  }
20318
20384
  if (xData.length) {
20319
- axis.dataMin = Math.min(pick(axis.dataMin, seriesDataMin), seriesDataMin);
20320
- axis.dataMax = Math.max(pick(axis.dataMax, seriesDataMax), seriesDataMax);
20385
+ axis.dataMin = Math.min((axis.dataMin ?? seriesDataMin), seriesDataMin);
20386
+ axis.dataMax = Math.max((axis.dataMax ?? seriesDataMax), seriesDataMax);
20321
20387
  }
20322
20388
  }
20323
20389
  // Get dataMin and dataMax for Y axes, as well as handle
@@ -20332,11 +20398,11 @@ class Axis {
20332
20398
  // doesn't have active y data, we continue with nulls
20333
20399
  if (isNumber(dataExtremes.dataMin)) {
20334
20400
  seriesDataMin = dataExtremes.dataMin;
20335
- axis.dataMin = Math.min(pick(axis.dataMin, seriesDataMin), seriesDataMin);
20401
+ axis.dataMin = Math.min((axis.dataMin ?? seriesDataMin), seriesDataMin);
20336
20402
  }
20337
20403
  if (isNumber(dataExtremes.dataMax)) {
20338
20404
  seriesDataMax = dataExtremes.dataMax;
20339
- axis.dataMax = Math.max(pick(axis.dataMax, seriesDataMax), seriesDataMax);
20405
+ axis.dataMax = Math.max((axis.dataMax ?? seriesDataMax), seriesDataMax);
20340
20406
  }
20341
20407
  // Adjust to threshold
20342
20408
  if (defined(threshold)) {
@@ -20491,7 +20557,7 @@ class Axis {
20491
20557
  translatedValue
20492
20558
  };
20493
20559
  fireEvent(this, 'getPlotLinePath', evt, function (e) {
20494
- translatedValue = pick(translatedValue, axis.translate(value, void 0, void 0, old));
20560
+ translatedValue = translatedValue ?? axis.translate(value, void 0, void 0, old);
20495
20561
  // Keep the translated value within sane bounds, and avoid Infinity
20496
20562
  // to fail the isNumber test (#7709).
20497
20563
  translatedValue = clamp(translatedValue, -1e9, 1e9);
@@ -20580,7 +20646,7 @@ class Axis {
20580
20646
  getMinorTickInterval() {
20581
20647
  const { minorTicks, minorTickInterval } = this.options;
20582
20648
  if (minorTicks === true) {
20583
- return pick(minorTickInterval, 'auto');
20649
+ return (minorTickInterval ?? 'auto');
20584
20650
  }
20585
20651
  if (minorTicks === false) {
20586
20652
  return;
@@ -20863,7 +20929,9 @@ class Axis {
20863
20929
  const seriesPointRange = hasCategories ?
20864
20930
  1 :
20865
20931
  (isXAxis ?
20866
- pick(series.options.pointRange, closestPointRange, 0) :
20932
+ (series.options.pointRange ??
20933
+ closestPointRange ??
20934
+ 0) :
20867
20935
  (axis.axisPointRange || 0)), // #2806
20868
20936
  pointPlacement = series.options.pointPlacement;
20869
20937
  pointRange = Math.max(pointRange, seriesPointRange);
@@ -20947,14 +21015,16 @@ class Axis {
20947
21015
  this.getTickAmount();
20948
21016
  }
20949
21017
  // Min or max set either by zooming/setExtremes or initial options
20950
- hardMin = pick(axis.userMin, time.parse(options.min));
20951
- hardMax = pick(axis.userMax, time.parse(options.max));
21018
+ hardMin = (axis.userMin ?? time.parse(options.min));
21019
+ hardMax = (axis.userMax ?? time.parse(options.max));
20952
21020
  // Linked axis gets the extremes from the parent axis
20953
21021
  if (linkedParent) {
20954
21022
  axis.linkedParent = linkedParent;
20955
21023
  linkedParentExtremes = linkedParent.getExtremes();
20956
- axis.min = pick(linkedParentExtremes.min, linkedParentExtremes.dataMin);
20957
- axis.max = pick(linkedParentExtremes.max, linkedParentExtremes.dataMax);
21024
+ axis.min =
21025
+ linkedParentExtremes.min ?? linkedParentExtremes.dataMin;
21026
+ axis.max =
21027
+ linkedParentExtremes.max ?? linkedParentExtremes.dataMax;
20958
21028
  if (this.type !== linkedParent.type) {
20959
21029
  // Can't link axes of different type
20960
21030
  error(11, true, chart);
@@ -20976,14 +21046,14 @@ class Axis {
20976
21046
  maxPadding = 0;
20977
21047
  }
20978
21048
  }
20979
- axis.min = pick(hardMin, thresholdMin, dataMin);
20980
- axis.max = pick(hardMax, thresholdMax, dataMax);
21049
+ axis.min = (hardMin ?? thresholdMin ?? dataMin);
21050
+ axis.max = (hardMax ?? thresholdMax ?? dataMax);
20981
21051
  }
20982
21052
  if (isNumber(axis.max) && isNumber(axis.min)) {
20983
21053
  if (logarithmic) {
20984
21054
  if (axis.positiveValuesOnly &&
20985
21055
  !secondPass &&
20986
- Math.min(axis.min, pick(dataMin, axis.min)) <= 0) { // #978
21056
+ Math.min(axis.min, (dataMin ?? axis.min)) <= 0) { // #978
20987
21057
  // Can't plot negative values on log axis
20988
21058
  error(10, true, chart);
20989
21059
  }
@@ -21089,16 +21159,13 @@ class Axis {
21089
21159
  axis.tickInterval = tickIntervalOption = linkedParent.tickInterval;
21090
21160
  }
21091
21161
  else {
21092
- axis.tickInterval = pick(tickIntervalOption, this.tickAmount ?
21162
+ axis.tickInterval = tickIntervalOption ?? (this.tickAmount ?
21093
21163
  range / Math.max(this.tickAmount - 1, 1) :
21094
- void 0,
21095
- // For categorized axis, 1 is default, for linear axis use
21096
- // tickPix
21097
- categories ?
21098
- 1 :
21099
- // Don't let it be more than the data range
21100
- range * tickPixelIntervalOption /
21101
- Math.max(axis.len, tickPixelIntervalOption));
21164
+ categories ?
21165
+ 1 :
21166
+ // Don't let it be more than the data range
21167
+ range * tickPixelIntervalOption /
21168
+ Math.max(axis.len, tickPixelIntervalOption));
21102
21169
  }
21103
21170
  // Now we're finished detecting min and max, crop and group series data.
21104
21171
  // This is in turn needed in order to find tick positions in ordinal
@@ -21128,12 +21195,9 @@ class Axis {
21128
21195
  }
21129
21196
  // Before normalizing the tick interval, handle minimum tick interval.
21130
21197
  // This applies only if tickInterval is not defined.
21131
- const minTickInterval = pick(options.minTickInterval,
21132
- // In datetime axes, don't go below the data interval, except when
21133
- // there are scatter-like series involved (#13369).
21134
- dateTime &&
21135
- !axis.series.some((s) => !s.sorted) ?
21136
- axis.closestPointRange : 0);
21198
+ const minTickInterval = options.minTickInterval ?? (dateTime && !axis.series.some((s) => !s.sorted) ?
21199
+ axis.closestPointRange :
21200
+ 0);
21137
21201
  if (!tickIntervalOption &&
21138
21202
  minTickInterval &&
21139
21203
  axis.tickInterval < minTickInterval) {
@@ -21463,7 +21527,7 @@ class Axis {
21463
21527
  * @function Highcharts.Axis#adjustTickAmount
21464
21528
  */
21465
21529
  adjustTickAmount() {
21466
- const axis = this, { finalTickAmt, max, min, options, tickPositions, tickAmount, thresholdAlignment } = axis, currentTickAmount = tickPositions?.length, threshold = pick(axis.threshold, axis.softThreshold ? 0 : null);
21530
+ const axis = this, { finalTickAmt, max, min, options, tickPositions, tickAmount, thresholdAlignment } = axis, currentTickAmount = tickPositions?.length, threshold = axis.threshold ?? (axis.softThreshold ? 0 : null);
21467
21531
  let len, i, tickInterval = axis.tickInterval, thresholdTickIndex;
21468
21532
  const
21469
21533
  // Extend the tickPositions by appending a position
@@ -21699,7 +21763,8 @@ class Axis {
21699
21763
  offsets = options.offsets || [0, 0, 0, 0], horiz = this.horiz,
21700
21764
  // Check for percentage based input values. Rounding fixes problems
21701
21765
  // with column overflow and plot line filtering (#4898, #4899)
21702
- width = this.width = Math.round(relativeLength(pick(options.width, chart.plotWidth - offsets[3] + offsets[1]), chart.plotWidth)), height = this.height = Math.round(relativeLength(pick(options.height, chart.plotHeight - offsets[0] + offsets[2]), chart.plotHeight)), top = this.top = Math.round(relativeLength(pick(options.top, chart.plotTop + offsets[0]), chart.plotHeight, chart.plotTop)), left = this.left = Math.round(relativeLength(pick(options.left, chart.plotLeft + offsets[3]), chart.plotWidth, chart.plotLeft));
21766
+ width = this.width = Math.round(relativeLength((options.width ?? chart.plotWidth - offsets[3] + offsets[1]), chart.plotWidth)), height = this.height = Math.round(relativeLength((options.height ??
21767
+ chart.plotHeight - offsets[0] + offsets[2]), chart.plotHeight)), top = this.top = Math.round(relativeLength((options.top ?? chart.plotTop + offsets[0]), chart.plotHeight, chart.plotTop)), left = this.left = Math.round(relativeLength((options.left ?? chart.plotLeft + offsets[3]), chart.plotWidth, chart.plotLeft));
21703
21768
  // Expose basic values to use in Series object and navigator
21704
21769
  this.bottom = chart.chartHeight - height - top;
21705
21770
  this.right = chart.chartWidth - width - left;
@@ -21810,9 +21875,7 @@ class Axis {
21810
21875
  * An array of tickLength and tickWidth
21811
21876
  */
21812
21877
  tickSize(prefix) {
21813
- const options = this.options, tickWidth = pick(options[prefix === 'tick' ? 'tickWidth' : 'minorTickWidth'],
21814
- // Default to 1 on linear and datetime X axes
21815
- prefix === 'tick' && this.isXAxis && !this.categories ? 1 : 0);
21878
+ const options = this.options, tickWidth = options[prefix === 'tick' ? 'tickWidth' : 'minorTickWidth'] ?? (prefix === 'tick' && this.isXAxis && !this.categories ? 1 : 0);
21816
21879
  let tickLength = options[prefix === 'tick' ? 'tickLength' : 'minorTickLength'], tickSize;
21817
21880
  if (tickWidth && tickLength) {
21818
21881
  // Negate the length
@@ -21899,7 +21962,7 @@ class Axis {
21899
21962
  newTickInterval = getStep(lineHeight * 0.75);
21900
21963
  }
21901
21964
  this.autoRotation = autoRotation;
21902
- this.labelRotation = pick(rotation, isNumber(rotationOption) ? rotationOption : 0);
21965
+ this.labelRotation = rotation ?? (isNumber(rotationOption) ? rotationOption : 0);
21903
21966
  return labelOptions.step ? tickInterval : newTickInterval;
21904
21967
  }
21905
21968
  /**
@@ -22251,7 +22314,7 @@ class Axis {
22251
22314
  titleOffsetOption = axisTitleOptions.offset;
22252
22315
  titleMargin = defined(titleOffsetOption) ?
22253
22316
  0 :
22254
- pick(axisTitleOptions.margin, horiz ? 5 : 10);
22317
+ axisTitleOptions.margin ?? (horiz ? 5 : 10);
22255
22318
  }
22256
22319
  }
22257
22320
  // Render the axis line
@@ -22762,9 +22825,9 @@ class Axis {
22762
22825
  }
22763
22826
  else if (defined(point)) {
22764
22827
  // #3834
22765
- pos = pick(this.coll !== 'colorAxis' ?
22766
- point.crosshairPos : // 3D axis extension
22767
- null, this.isXAxis ?
22828
+ pos = (this.coll !== 'colorAxis' ?
22829
+ point.crosshairPos :
22830
+ null) ?? (this.isXAxis ?
22768
22831
  point.plotX :
22769
22832
  this.len - point.plotY);
22770
22833
  }
@@ -22773,7 +22836,7 @@ class Axis {
22773
22836
  // Value, only used on radial
22774
22837
  value: point && (this.isXAxis ?
22775
22838
  point.x :
22776
- pick(point.stackY, point.y)),
22839
+ (point.stackY ?? point.y ?? void 0)),
22777
22840
  translatedValue: pos
22778
22841
  };
22779
22842
  if (chart.polar) {
@@ -22806,7 +22869,7 @@ class Axis {
22806
22869
  (categorized ? 'category ' : 'thin ') +
22807
22870
  (options.className || ''))
22808
22871
  .attr({
22809
- zIndex: pick(options.zIndex, 2)
22872
+ zIndex: (options.zIndex ?? 2)
22810
22873
  })
22811
22874
  .clip(options.clip === false ?
22812
22875
  void 0 :
@@ -22821,7 +22884,7 @@ class Axis {
22821
22884
  // eslint-disable-next-line max-len
22822
22885
  'var(--highcharts-highlight-color-20)').setOpacity(0.25).get() :
22823
22886
  'var(--highcharts-neutral-color-20)'),
22824
- 'stroke-width': pick(options.width, 1)
22887
+ 'stroke-width': (options.width ?? 1)
22825
22888
  }).css({
22826
22889
  'pointer-events': 'none'
22827
22890
  });
@@ -22887,7 +22950,7 @@ class Axis {
22887
22950
  this.destroy(true);
22888
22951
  this.init(chart, options);
22889
22952
  chart.isDirtyBox = true;
22890
- if (pick(redraw, true)) {
22953
+ if (redraw ?? true) {
22891
22954
  chart.redraw();
22892
22955
  }
22893
22956
  }
@@ -22917,7 +22980,7 @@ class Axis {
22917
22980
  chart.orderItems(coll);
22918
22981
  this.destroy();
22919
22982
  chart.isDirtyBox = true;
22920
- if (pick(redraw, true)) {
22983
+ if (redraw ?? true) {
22921
22984
  chart.redraw();
22922
22985
  }
22923
22986
  }
@@ -23573,8 +23636,10 @@ var LogarithmicAxis;
23573
23636
  tickIntervalOption, tickPixelIntervalOption = options.tickPixelInterval / (minor ? 5 : 1), totalPixelLength = minor ?
23574
23637
  axisLength / axis.tickPositions.length :
23575
23638
  axisLength;
23576
- interval = pick(filteredTickIntervalOption, log.minorAutoInterval, (realMax - realMin) *
23577
- tickPixelIntervalOption / (totalPixelLength || 1));
23639
+ interval = filteredTickIntervalOption ??
23640
+ log.minorAutoInterval ??
23641
+ (realMax - realMin) * tickPixelIntervalOption /
23642
+ (totalPixelLength || 1);
23578
23643
  interval = normalizeTickInterval(interval);
23579
23644
  positions = axis.getLinearTickPositions(interval, realMin, realMax).map(log.log2lin);
23580
23645
  if (!minor) {
@@ -24003,7 +24068,8 @@ class PlotLineOrBand {
24003
24068
  if (!chart.styledMode) {
24004
24069
  if (isLine) {
24005
24070
  attribs.stroke = color || 'var(--highcharts-neutral-color-40)';
24006
- attribs['stroke-width'] = pick(options.width, 1);
24071
+ attribs['stroke-width'] =
24072
+ options.width ?? 1;
24007
24073
  if (options.dashStyle) {
24008
24074
  attribs.dashstyle = options.dashStyle;
24009
24075
  }
@@ -25135,7 +25201,8 @@ class Tooltip {
25135
25201
  'highcharts-label',
25136
25202
  isHeader && 'highcharts-tooltip-header',
25137
25203
  isSplit ? 'highcharts-tooltip-box' : 'highcharts-tooltip',
25138
- !isHeader && 'highcharts-color-' + pick(point.colorIndex, series.colorIndex),
25204
+ !isHeader &&
25205
+ 'highcharts-color-' + (point.colorIndex ?? series.colorIndex),
25139
25206
  seriesOptions?.className
25140
25207
  ].filter(isString).join(' ');
25141
25208
  }
@@ -25320,7 +25387,8 @@ class Tooltip {
25320
25387
  }
25321
25388
  // The far side is right or bottom
25322
25389
  const preferFarSide = !this.followPointer &&
25323
- pick(point.ttBelow, polar ? false : !inverted === flipped), // #4984
25390
+ (point.ttBelow ??
25391
+ (polar ? false : !inverted === flipped)), // #4984
25324
25392
  /*
25325
25393
  * Handle the preferred dimension. When the preferred dimension is
25326
25394
  * tooltip on top or bottom of the point, it will look for space
@@ -25447,7 +25515,7 @@ class Tooltip {
25447
25515
  const tooltip = this;
25448
25516
  // Disallow duplicate timers (#1728, #1766)
25449
25517
  clearTimeouts(this);
25450
- delay = pick(delay, this.options.hideDelay);
25518
+ delay = (delay ?? this.options.hideDelay);
25451
25519
  if (!this.isHidden) {
25452
25520
  this.hideTimer = syncTimeout(function () {
25453
25521
  const label = tooltip.getLabel();
@@ -25550,7 +25618,9 @@ class Tooltip {
25550
25618
  * Split tooltip does not support outside in the first iteration. Should
25551
25619
  * not be too complicated to implement.
25552
25620
  */
25553
- this.outside = pick(options.outside, Boolean(chart.scrollablePixelsX || chart.scrollablePixelsY));
25621
+ this.outside =
25622
+ options.outside ??
25623
+ Boolean(chart.scrollablePixelsX || chart.scrollablePixelsY);
25554
25624
  }
25555
25625
  shouldStickOnContact(pointerEvent) {
25556
25626
  return !!(!this.followPointer &&
@@ -25630,7 +25700,7 @@ class Tooltip {
25630
25700
  point.points = void 0;
25631
25701
  // Register the current series
25632
25702
  const currentSeries = point.series;
25633
- this.distance = pick(currentSeries.tooltipOptions.distance, 16);
25703
+ this.distance = (currentSeries.tooltipOptions.distance ?? 16);
25634
25704
  // Update the inner HTML
25635
25705
  if (text === false) {
25636
25706
  this.hide();
@@ -25903,7 +25973,7 @@ class Tooltip {
25903
25973
  anchorY,
25904
25974
  boxWidth,
25905
25975
  point,
25906
- rank: pick(boxPosition.rank, isHeader ? 1 : 0),
25976
+ rank: boxPosition.rank ?? (isHeader ? 1 : 0),
25907
25977
  size,
25908
25978
  target: boxPosition.y,
25909
25979
  tt,
@@ -27248,7 +27318,7 @@ class Point {
27248
27318
  */
27249
27319
  select(selected, accumulate) {
27250
27320
  const point = this, series = point.series, chart = series.chart;
27251
- selected = pick(selected, !point.selected);
27321
+ selected = (selected ?? !point.selected);
27252
27322
  this.selectedStaging = selected;
27253
27323
  // Fire the event with the default handler
27254
27324
  point.firePointEvent(selected ? 'select' : 'unselect', { accumulate: accumulate }, function () {
@@ -27499,7 +27569,7 @@ class Point {
27499
27569
  });
27500
27570
  halo.attr({
27501
27571
  'class': 'highcharts-halo highcharts-color-' +
27502
- pick(point.colorIndex, series.colorIndex) +
27572
+ (point.colorIndex ?? series.colorIndex) +
27503
27573
  (point.className ? ' ' + point.className : ''),
27504
27574
  'visibility': markerVisibility,
27505
27575
  'zIndex': -1 // #4929, #8276
@@ -28232,7 +28302,7 @@ class Pointer {
28232
28302
  const hoverPoints = [], useExisting = !!(isDirectTouch && existingHoverPoint), filter = function (s) {
28233
28303
  return (s.visible &&
28234
28304
  !(!shared && s.directTouch) && // #3821
28235
- pick(s.options.enableMouseTracking, true));
28305
+ (s.options.enableMouseTracking ?? true));
28236
28306
  };
28237
28307
  let hoverSeries = existingHoverSeries,
28238
28308
  // Which series to look in for the hover point
@@ -28418,8 +28488,8 @@ class Pointer {
28418
28488
  const ePos = (touches ?
28419
28489
  touches.length ?
28420
28490
  touches.item(0) :
28421
- (pick(// #13534
28422
- touches.changedTouches, e.changedTouches))[0] :
28491
+ (touches.changedTouches ??
28492
+ e.changedTouches)[0] :
28423
28493
  e);
28424
28494
  // Get mouse position
28425
28495
  if (!chartPosition) {
@@ -28493,7 +28563,7 @@ class Pointer {
28493
28563
  * @function Highcharts.Pointer#onContainerMouseLeave
28494
28564
  */
28495
28565
  onContainerMouseLeave(e) {
28496
- const { pointer } = Pointer_charts[pick(Pointer.hoverChartIndex, -1)] || {};
28566
+ const { pointer } = Pointer_charts[(Pointer.hoverChartIndex ?? -1)] || {};
28497
28567
  e = this.normalize(e);
28498
28568
  this.onContainerMouseMove(e);
28499
28569
  // #4886, MS Touch end fires mouseleave but with no related target
@@ -28593,7 +28663,7 @@ class Pointer {
28593
28663
  if (e?.touches && this.hasPinchMoved) {
28594
28664
  e?.preventDefault?.();
28595
28665
  }
28596
- Pointer_charts[pick(Pointer.hoverChartIndex, -1)]
28666
+ Pointer_charts[(Pointer.hoverChartIndex ?? -1)]
28597
28667
  ?.pointer
28598
28668
  ?.drop(e);
28599
28669
  }
@@ -29100,7 +29170,7 @@ class Pointer {
29100
29170
  */
29101
29171
  setHoverChartIndex(e) {
29102
29172
  const chart = this.chart;
29103
- const hoverChart = Core_Globals.charts[pick(Pointer.hoverChartIndex, -1)];
29173
+ const hoverChart = Core_Globals.charts[(Pointer.hoverChartIndex ?? -1)];
29104
29174
  if (hoverChart &&
29105
29175
  hoverChart !== chart) {
29106
29176
  const relatedTargetObj = { relatedTarget: chart.container };
@@ -29146,7 +29216,7 @@ class Pointer {
29146
29216
  Math.pow(pinchDown[0].chartY - e.chartY, 2)) >= 16 :
29147
29217
  false;
29148
29218
  }
29149
- if (pick(hasMoved, true)) {
29219
+ if (hasMoved ?? true) {
29150
29220
  this.pinch(e);
29151
29221
  }
29152
29222
  }
@@ -29189,7 +29259,7 @@ class Pointer {
29189
29259
  let zoomType = chart.zooming.type || '', zoomX, zoomY;
29190
29260
  // Look for the pinchType option
29191
29261
  if (/touch/.test(e.type)) {
29192
- zoomType = pick(chart.zooming.pinchType, zoomType);
29262
+ zoomType = (chart.zooming.pinchType ?? zoomType);
29193
29263
  }
29194
29264
  this.zoomX = zoomX = /x/.test(zoomType);
29195
29265
  this.zoomY = zoomY = /y/.test(zoomType);
@@ -29963,7 +30033,7 @@ var LegendSymbol;
29963
30033
  // Draw the marker
29964
30034
  if (markerOptions && markerOptions.enabled !== false && symbolWidth) {
29965
30035
  // Do not allow the marker to be larger than the symbolHeight
29966
- let radius = Math.min(pick(markerOptions.radius, generalRadius), generalRadius);
30036
+ let radius = Math.min((markerOptions.radius ?? generalRadius), generalRadius);
29967
30037
  // Restrict symbol markers size
29968
30038
  if (symbol.indexOf('url') === 0) {
29969
30039
  markerOptions = merge(markerOptions, {
@@ -32984,7 +33054,7 @@ class Series {
32984
33054
  if (chartSeries.length) {
32985
33055
  lastSeries = chartSeries[chartSeries.length - 1];
32986
33056
  }
32987
- series._i = pick(lastSeries?._i, -1) + 1;
33057
+ series._i = (lastSeries?._i ?? -1) + 1;
32988
33058
  series.opacity = series.options.opacity;
32989
33059
  // Insert the series and re-order all series above the insertion
32990
33060
  // point.
@@ -33031,7 +33101,7 @@ class Series {
33031
33101
  // Apply if the series xAxis or yAxis option matches
33032
33102
  // the number of the axis, or if undefined, use the
33033
33103
  // first axis
33034
- if (pick(seriesOptions[coll], 0) === axis.index ||
33104
+ if ((seriesOptions[coll] ?? 0) === axis.index ||
33035
33105
  (typeof seriesOptions[coll] !==
33036
33106
  'undefined' &&
33037
33107
  seriesOptions[coll] === axisOptions.id)) {
@@ -33074,8 +33144,12 @@ class Series {
33074
33144
  * @function Highcharts.Series#hasMarkerChanged
33075
33145
  */
33076
33146
  hasMarkerChanged(options, oldOptions) {
33077
- const marker = options.marker, oldMarker = oldOptions.marker || {};
33078
- return marker && ((oldMarker.enabled && !marker.enabled) ||
33147
+ const marker = options.marker, oldMarker = oldOptions.marker;
33148
+ // Note that `marker` holds the full, merged object including
33149
+ // `plotOptions`, while `oldMarker` is the user-defined series-level
33150
+ // options only. We may need to refactor that in the future if more
33151
+ // issues like #24057 arise.
33152
+ return marker && oldMarker && ((oldMarker.enabled && !marker.enabled) ||
33079
33153
  oldMarker.symbol !== marker.symbol || // #10870, #15946
33080
33154
  oldMarker.height !== marker.height || // #16274
33081
33155
  oldMarker.width !== marker.width // #16274
@@ -33094,7 +33168,8 @@ class Series {
33094
33168
  time.parse(options.pointStart) ??
33095
33169
  0;
33096
33170
  let pointInterval;
33097
- this.pointInterval = pointInterval = pick(this.pointInterval, options.pointInterval, 1);
33171
+ this.pointInterval = pointInterval =
33172
+ this.pointInterval ?? options.pointInterval ?? 1;
33098
33173
  if (relativeXValue && isNumber(x)) {
33099
33174
  pointInterval *= x;
33100
33175
  }
@@ -33166,9 +33241,13 @@ class Series {
33166
33241
  );
33167
33242
  // When shared tooltip, stickyTracking is true by default,
33168
33243
  // unless user says otherwise.
33169
- this.stickyTracking = pick(seriesUserOptions.stickyTracking, userPlotOptionsType.stickyTracking, userPlotOptionsSeries.stickyTracking, (this.tooltipOptions.shared && !this.noSharedTooltip ?
33170
- true :
33171
- options.stickyTracking));
33244
+ this.stickyTracking =
33245
+ seriesUserOptions.stickyTracking ??
33246
+ userPlotOptionsType.stickyTracking ??
33247
+ userPlotOptionsSeries.stickyTracking ??
33248
+ (this.tooltipOptions.shared && !this.noSharedTooltip ?
33249
+ true :
33250
+ options.stickyTracking);
33172
33251
  // Delete marker object if not allowed (#1125)
33173
33252
  if (typeOptions.marker === null) {
33174
33253
  delete options.marker;
@@ -33246,7 +33325,9 @@ class Series {
33246
33325
  if (!value) {
33247
33326
  // Pick up either the colorIndex option, or the series.colorIndex
33248
33327
  // after Series.update()
33249
- setting = pick(prop === 'color' ? this.options.colorIndex : void 0, this[indexName]);
33328
+ setting = prop === 'color' ?
33329
+ (this.options.colorIndex ?? this[indexName]) :
33330
+ this[indexName];
33250
33331
  if (defined(setting)) { // After Series.update()
33251
33332
  i = setting;
33252
33333
  }
@@ -34273,7 +34354,9 @@ class Series {
34273
34354
  yValue = stackValues[1];
34274
34355
  if (lowValue === stackThreshold &&
34275
34356
  stackIndicator.key === stacks[xValue].base) {
34276
- lowValue = pick(isNumber(threshold) ? threshold : yAxis.min);
34357
+ lowValue = isNumber(threshold) ?
34358
+ threshold :
34359
+ yAxis.min;
34277
34360
  }
34278
34361
  // #1200, #1232
34279
34362
  if (yAxis.positiveValuesOnly &&
@@ -34281,7 +34364,7 @@ class Series {
34281
34364
  lowValue <= 0) {
34282
34365
  lowValue = void 0;
34283
34366
  }
34284
- point.total = point.stackTotal = pick(stackItem.total);
34367
+ point.total = point.stackTotal = stackItem.total ?? void 0;
34285
34368
  point.percentage = defined(point.y) && stackItem.total ?
34286
34369
  (point.y / stackItem.total * 100) : void 0;
34287
34370
  point.stackY = yValue;
@@ -34531,7 +34614,9 @@ class Series {
34531
34614
  // Only draw the point if y is defined
34532
34615
  if (shouldDrawMarker) {
34533
34616
  // Shortcuts
34534
- const symbol = pick(pointMarkerOptions.symbol, series.symbol, 'rect');
34617
+ const symbol = pointMarkerOptions.symbol ??
34618
+ series.symbol ??
34619
+ 'rect';
34535
34620
  markerAttribs = series.markerAttribs(point, point.selected ? 'select' : '');
34536
34621
  const isInside = point.isInside !== false;
34537
34622
  if (!graphic &&
@@ -34799,7 +34884,7 @@ class Series {
34799
34884
  // Reset
34800
34885
  zones.forEach((zone) => {
34801
34886
  zone.lineClip = [];
34802
- zone.translated = clamp(axis.toPixels(pick(zone.value, axisMax), true) || 0, 0, len);
34887
+ zone.translated = clamp(axis.toPixels((zone.value ?? axisMax), true) || 0, 0, len);
34803
34888
  });
34804
34889
  // The use of the Color Threshold assumes there are no gaps so it is
34805
34890
  // safe to hide the original graph and area unless it is not
@@ -35455,7 +35540,7 @@ class Series {
35455
35540
  const series = this, seriesOptions = series.options, { chart, data, dataTable: table, xAxis } = series, names = xAxis?.hasNames && xAxis.names, dataOptions = seriesOptions.data, xData = series.getColumn('x');
35456
35541
  let isInTheMiddle, i;
35457
35542
  // Optional redraw, defaults to true
35458
- redraw = pick(redraw, true);
35543
+ redraw = (redraw ?? true);
35459
35544
  // Get options and push the point to xData, yData and series.options. In
35460
35545
  // series.generatePoints the Point instance will be created on demand
35461
35546
  // and pushed to the series.data array.
@@ -35566,7 +35651,7 @@ class Series {
35566
35651
  }
35567
35652
  };
35568
35653
  setAnimation(animation, chart);
35569
- redraw = pick(redraw, true);
35654
+ redraw = (redraw ?? true);
35570
35655
  // Fire the event with a default handler of removing the point
35571
35656
  if (point) {
35572
35657
  point.firePointEvent('remove', null, remove);
@@ -35609,7 +35694,7 @@ class Series {
35609
35694
  // Redraw
35610
35695
  chart.isDirtyLegend = chart.isDirtyBox = true;
35611
35696
  chart.linkSeries(keepEvents);
35612
- if (pick(redraw, true)) {
35697
+ if (redraw ?? true) {
35613
35698
  chart.redraw(animation);
35614
35699
  }
35615
35700
  }
@@ -35826,7 +35911,7 @@ class Series {
35826
35911
  series.isDirtyData = true;
35827
35912
  }
35828
35913
  fireEvent(this, 'afterUpdate');
35829
- if (pick(redraw, true)) {
35914
+ if (redraw ?? true) {
35830
35915
  chart.redraw(keepPoints ? void 0 : false);
35831
35916
  }
35832
35917
  }
@@ -35843,12 +35928,12 @@ class Series {
35843
35928
  * @internal
35844
35929
  */
35845
35930
  hasOptionChanged(optionName) {
35846
- const chart = this.chart, option = this.options[optionName], plotOptions = chart.options.plotOptions, oldOption = this.userOptions[optionName], plotOptionsOption = pick(plotOptions?.[this.type]?.[optionName], plotOptions?.series?.[optionName]);
35931
+ const chart = this.chart, option = this.options[optionName], plotOptions = chart.options.plotOptions, oldOption = this.userOptions[optionName], plotOptionsOption = (plotOptions?.[this.type]?.[optionName] ?? plotOptions?.series?.[optionName]);
35847
35932
  // Check if `plotOptions` are defined already, #19203
35848
35933
  if (oldOption && !defined(plotOptionsOption)) {
35849
35934
  return option !== oldOption;
35850
35935
  }
35851
- return option !== pick(plotOptionsOption, option);
35936
+ return option !== (plotOptionsOption ?? option);
35852
35937
  }
35853
35938
  /**
35854
35939
  * Runs on mouse over the series graphical items.
@@ -35922,7 +36007,8 @@ class Series {
35922
36007
  const series = this, { graph, options } = series, { inactiveOtherPoints, states: stateOptions = {} } = options,
35923
36008
  // By default a quick animation to hover/inactive,
35924
36009
  // slower to un-hover
35925
- stateAnimation = pick(stateOptions[state || 'normal']?.animation, series.chart.options.chart.animation);
36010
+ stateAnimation = stateOptions[state || 'normal']?.animation ??
36011
+ series.chart.options.chart.animation;
35926
36012
  let { lineWidth, opacity } = options;
35927
36013
  state = state || '';
35928
36014
  if (series.state !== state) {
@@ -36808,7 +36894,7 @@ class Legend {
36808
36894
  * @param {Highcharts.LegendOptions} options
36809
36895
  */
36810
36896
  setOptions(options) {
36811
- const padding = pick(options.padding, 8);
36897
+ const padding = (options.padding ?? 8);
36812
36898
  /**
36813
36899
  * Legend options.
36814
36900
  *
@@ -36825,7 +36911,7 @@ class Legend {
36825
36911
  this.itemMarginBottom = options.itemMarginBottom;
36826
36912
  this.padding = padding;
36827
36913
  this.initialItemY = padding - 5; // 5 is pixels above the text
36828
- this.symbolWidth = pick(options.symbolWidth, 16);
36914
+ this.symbolWidth = (options.symbolWidth ?? 16);
36829
36915
  this.pages = [];
36830
36916
  this.proximate = options.layout === 'proximate' && !this.chart.inverted;
36831
36917
  // #12705: baseline has to be reset on every update
@@ -36859,7 +36945,7 @@ class Legend {
36859
36945
  }
36860
36946
  this.destroy();
36861
36947
  chart.isDirtyLegend = chart.isDirtyBox = true;
36862
- if (pick(redraw, true)) {
36948
+ if (redraw ?? true) {
36863
36949
  chart.redraw();
36864
36950
  }
36865
36951
  fireEvent(this, 'afterUpdate', { redraw });
@@ -37097,7 +37183,7 @@ class Legend {
37097
37183
  * The item to render.
37098
37184
  */
37099
37185
  renderItem(item) {
37100
- const legend = this, legendItem = item.legendItem = item.legendItem || {}, chart = legend.chart, renderer = chart.renderer, options = legend.options, horizontal = options.layout === 'horizontal', symbolWidth = legend.symbolWidth, symbolPadding = options.symbolPadding || 0, itemStyle = legend.itemStyle, itemHiddenStyle = legend.itemHiddenStyle, itemDistance = horizontal ? pick(options.itemDistance, 20) : 0, ltr = !options.rtl, isSeries = !item.series, series = !isSeries && item.series.drawLegendSymbol ?
37186
+ const legend = this, legendItem = item.legendItem = item.legendItem || {}, chart = legend.chart, renderer = chart.renderer, options = legend.options, horizontal = options.layout === 'horizontal', symbolWidth = legend.symbolWidth, symbolPadding = options.symbolPadding || 0, itemStyle = legend.itemStyle, itemHiddenStyle = legend.itemHiddenStyle, itemDistance = horizontal ? (options.itemDistance ?? 20) : 0, ltr = !options.rtl, isSeries = !item.series, series = !isSeries && item.series.drawLegendSymbol ?
37101
37187
  item.series :
37102
37188
  item, seriesOptions = series.options, showCheckbox = (!!legend.createCheckboxForItem &&
37103
37189
  seriesOptions &&
@@ -37143,9 +37229,11 @@ class Legend {
37143
37229
  legend.fontMetrics.f + 3 + legend.itemMarginTop;
37144
37230
  label.attr('y', legend.baseline);
37145
37231
  legend.symbolHeight =
37146
- pick(options.symbolHeight, legend.fontMetrics.f);
37232
+ (options.symbolHeight ?? legend.fontMetrics.f);
37147
37233
  if (options.squareSymbol) {
37148
- legend.symbolWidth = pick(options.symbolWidth, Math.max(legend.symbolHeight, 16));
37234
+ legend.symbolWidth =
37235
+ options.symbolWidth ??
37236
+ Math.max(legend.symbolHeight, 16);
37149
37237
  itemExtraWidth = legend.symbolWidth + symbolPadding +
37150
37238
  itemDistance + (showCheckbox ? 20 : 0);
37151
37239
  if (ltr) {
@@ -37197,7 +37285,7 @@ class Legend {
37197
37285
  * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item
37198
37286
  */
37199
37287
  layoutItem(item) {
37200
- const options = this.options, padding = this.padding, horizontal = options.layout === 'horizontal', itemHeight = item.itemHeight, itemMarginBottom = this.itemMarginBottom, itemMarginTop = this.itemMarginTop, itemDistance = horizontal ? pick(options.itemDistance, 20) : 0, maxLegendWidth = this.maxLegendWidth, itemWidth = (options.alignColumns &&
37288
+ const options = this.options, padding = this.padding, horizontal = options.layout === 'horizontal', itemHeight = item.itemHeight, itemMarginBottom = this.itemMarginBottom, itemMarginTop = this.itemMarginTop, itemDistance = horizontal ? (options.itemDistance ?? 20) : 0, maxLegendWidth = this.maxLegendWidth, itemWidth = (options.alignColumns &&
37201
37289
  this.totalItemWidth > maxLegendWidth) ?
37202
37290
  this.maxItemWidth :
37203
37291
  item.itemWidth, legendItem = item.legendItem || {};
@@ -37251,7 +37339,9 @@ class Legend {
37251
37339
  const seriesOptions = series?.options;
37252
37340
  // Handle showInLegend. If the series is linked to another series,
37253
37341
  // defaults to false.
37254
- if (series && pick(seriesOptions.showInLegend, !defined(seriesOptions.linkedTo) ? void 0 : false, true)) {
37342
+ if (series &&
37343
+ (seriesOptions.showInLegend ??
37344
+ (!defined(seriesOptions.linkedTo)))) {
37255
37345
  // Use points or series for the legend item depending on
37256
37346
  // legendType
37257
37347
  allItems = allItems.concat(series.legendItem?.labels ||
@@ -37533,7 +37623,7 @@ class Legend {
37533
37623
  * @function Highcharts.Legend#handleOverflow
37534
37624
  */
37535
37625
  handleOverflow(legendHeight) {
37536
- const legend = this, chart = this.chart, renderer = chart.renderer, options = this.options, optionsY = options.y, alignTop = options.verticalAlign === 'top', padding = this.padding, maxHeight = options.maxHeight, navOptions = options.navigation, animation = pick(navOptions.animation, true), arrowSize = navOptions.arrowSize || 12, pages = this.pages, allItems = this.allItems, clipToHeight = function (height) {
37626
+ const legend = this, chart = this.chart, renderer = chart.renderer, options = this.options, optionsY = options.y, alignTop = options.verticalAlign === 'top', padding = this.padding, maxHeight = options.maxHeight, navOptions = options.navigation, animation = (navOptions.animation ?? true), arrowSize = navOptions.arrowSize || 12, pages = this.pages, allItems = this.allItems, clipToHeight = function (height) {
37537
37627
  if (typeof height === 'number') {
37538
37628
  clipRect.attr({
37539
37629
  height: height
@@ -37579,7 +37669,7 @@ class Legend {
37579
37669
  navOptions.enabled !== false) {
37580
37670
  this.clipHeight = clipHeight =
37581
37671
  Math.max(spaceHeight - 20 - this.titleHeight - padding, 0);
37582
- this.currentPage = pick(this.currentPage, 1);
37672
+ this.currentPage = (this.currentPage ?? 1);
37583
37673
  this.fullHeight = legendHeight;
37584
37674
  // Fill pages with Y positions so that the top of each a legend item
37585
37675
  // defines the scroll top for each page (#2098)
@@ -37739,7 +37829,7 @@ class Legend {
37739
37829
  this.currentPage = currentPage;
37740
37830
  this.positionCheckboxes();
37741
37831
  // Fire event after scroll animation is complete
37742
- const animOptions = animObject(pick(animation, chart.renderer.globalAnimation, true));
37832
+ const animOptions = animObject((animation ?? chart.renderer.globalAnimation ?? true));
37743
37833
  syncTimeout(() => {
37744
37834
  fireEvent(this, 'afterScroll', { currentPage });
37745
37835
  }, animOptions.duration);
@@ -38180,7 +38270,7 @@ class Chart {
38180
38270
  */
38181
38271
  static chart(a, b, c) {
38182
38272
  const chart = new Chart(a, b, c);
38183
- return chart.promise || chart;
38273
+ return chart.promise ?? chart;
38184
38274
  }
38185
38275
  // Implementation
38186
38276
  constructor(a,
@@ -38221,10 +38311,10 @@ class Chart {
38221
38311
  const chart = this, options = chart.options.chart, zooming = options.zooming;
38222
38312
  chart.zooming = {
38223
38313
  ...zooming,
38224
- type: pick(options.zoomType, zooming.type),
38225
- key: pick(options.zoomKey, zooming.key),
38226
- pinchType: pick(options.pinchType, zooming.pinchType),
38227
- singleTouch: pick(options.zoomBySingleTouch, zooming.singleTouch, false),
38314
+ type: (options.zoomType ?? zooming.type),
38315
+ key: (options.zoomKey ?? zooming.key),
38316
+ pinchType: (options.pinchType ?? zooming.pinchType),
38317
+ singleTouch: options.zoomBySingleTouch ?? zooming.singleTouch ?? false,
38228
38318
  resetButton: merge(zooming.resetButton, options.resetZoomButton)
38229
38319
  };
38230
38320
  }
@@ -38776,7 +38866,7 @@ class Chart {
38776
38866
  // inspect the generated series.points.
38777
38867
  series.getPointsCollection()
38778
38868
  .forEach((point) => {
38779
- if (pick(point.selectedStaging, point.selected)) {
38869
+ if (point.selectedStaging ?? point.selected) {
38780
38870
  acc.push(point);
38781
38871
  }
38782
38872
  });
@@ -39214,7 +39304,7 @@ class Chart {
39214
39304
  chartWidth = chart.chartWidth;
39215
39305
  if (!chart.styledMode) {
39216
39306
  css(container, {
39217
- width: pick(optionsChart.style?.width, chartWidth + 'px')
39307
+ width: (optionsChart.style?.width ?? chartWidth + 'px')
39218
39308
  });
39219
39309
  }
39220
39310
  }
@@ -39857,7 +39947,7 @@ class Chart {
39857
39947
  const mockTick = new Axis_Tick(axis, 0, '', true), label = mockTick.createLabel('x', labels);
39858
39948
  mockTick.destroy();
39859
39949
  if (label &&
39860
- pick(labels.reserveSpace, !isNumber(options.crossing))) {
39950
+ (labels.reserveSpace ?? !isNumber(options.crossing))) {
39861
39951
  expectedSpace = label.getBBox().height +
39862
39952
  labels.distance +
39863
39953
  Math.max(isNumber(offset) ? offset : 0, 0);
@@ -40192,7 +40282,7 @@ class Chart {
40192
40282
  const chart = this;
40193
40283
  let series;
40194
40284
  if (options) { // <- not necessary
40195
- redraw = pick(redraw, true); // Defaults to true
40285
+ redraw = (redraw ?? true); // Defaults to true
40196
40286
  fireEvent(chart, 'addSeries', { options: options }, function () {
40197
40287
  series = chart.initSeries(options);
40198
40288
  chart.isDirtyLegend = true;
@@ -40283,7 +40373,7 @@ class Chart {
40283
40373
  */
40284
40374
  createAxis(coll, options) {
40285
40375
  const axis = new Axis_Axis(this, options.axis, coll);
40286
- if (pick(options.redraw, true)) {
40376
+ if (options.redraw ?? true) {
40287
40377
  this.redraw(options.animation);
40288
40378
  }
40289
40379
  return axis;
@@ -40331,7 +40421,7 @@ class Chart {
40331
40421
  }
40332
40422
  loadingDiv.className = 'highcharts-loading';
40333
40423
  // Update text
40334
- HTML_AST.setElementHTML(loadingSpan, pick(str, options.lang.loading, ''));
40424
+ HTML_AST.setElementHTML(loadingSpan, (str ?? options.lang.loading ?? ''));
40335
40425
  if (!chart.styledMode) {
40336
40426
  // Update visuals
40337
40427
  css(loadingDiv, extend(loadingStyle, { zIndex: 10 }));
@@ -40569,7 +40659,7 @@ class Chart {
40569
40659
  }
40570
40660
  // No match by id found, match by index instead
40571
40661
  if (!item && chart[coll]) {
40572
- item = chart[coll][pick(newOptions.index, i)];
40662
+ item = chart[coll][(newOptions.index ?? i)];
40573
40663
  // Check if we grabbed an item with an existing but
40574
40664
  // different id (#13541). Check that the item in this
40575
40665
  // position is not internal (navigator).
@@ -40782,7 +40872,7 @@ class Chart {
40782
40872
  fireEvent(this, 'transform', params);
40783
40873
  let hasZoomed = params.hasZoomed || false, displayButton, isAnyAxisPanning;
40784
40874
  for (const axis of axes) {
40785
- const { horiz, len, minPointOffset = 0, options, reversed } = axis, wh = horiz ? 'width' : 'height', xy = horiz ? 'x' : 'y', toLength = pick(to[wh], axis.len), fromLength = pick(from[wh], axis.len),
40875
+ const { horiz, len, minPointOffset = 0, options, reversed } = axis, wh = horiz ? 'width' : 'height', xy = horiz ? 'x' : 'y', toLength = (to[wh] ?? axis.len), fromLength = (from[wh] ?? axis.len),
40786
40876
  // If fingers pinched very close on this axis, treat as pan
40787
40877
  scale = Math.abs(toLength) < 10 ?
40788
40878
  1 :
@@ -41646,7 +41736,7 @@ class StackItem {
41646
41736
  r: options.borderRadius || 0,
41647
41737
  text: str,
41648
41738
  // Set default padding to 5 as it is in dataLabels #12308
41649
- padding: pick(options.padding, 5),
41739
+ padding: (options.padding ?? 5),
41650
41740
  visibility: 'hidden' // Hidden until setOffset is called
41651
41741
  };
41652
41742
  if (!chart.styledMode) {
@@ -41680,7 +41770,7 @@ class StackItem {
41680
41770
  }), { verticalAlign } = alignOptions;
41681
41771
  if (label && stackBox) {
41682
41772
  const labelBox = label.getBBox(void 0, 0), padding = label.padding;
41683
- let isJustify = pick(options.overflow, 'justify') === 'justify', visible;
41773
+ let isJustify = (options.overflow ?? 'justify') === 'justify', visible;
41684
41774
  // Reset alignOptions property after justify #12337
41685
41775
  alignOptions.x = options.x || 0;
41686
41776
  alignOptions.y = options.y || 0;
@@ -41717,7 +41807,7 @@ class StackItem {
41717
41807
  rotationOriginY: labelBox.height / 2
41718
41808
  });
41719
41809
  // Check if the dataLabel should be visible.
41720
- if (pick(!isJustify && options.crop, true)) {
41810
+ if (((!isJustify && options.crop) ?? true)) {
41721
41811
  visible =
41722
41812
  isNumber(label.x) &&
41723
41813
  isNumber(label.y) &&
@@ -41751,7 +41841,7 @@ class StackItem {
41751
41841
  getStackBox(stackBoxProps) {
41752
41842
  const stackItem = this, axis = this.axis, chart = axis.chart, { boxTop, defaultX, xOffset, width, boxBottom } = stackBoxProps, totalStackValue = axis.stacking.usePercentage ?
41753
41843
  100 :
41754
- pick(boxTop, this.total, 0), y = axis.toPixels(totalStackValue), xAxis = stackBoxProps.xAxis || chart.xAxis[0], x = pick(defaultX, xAxis.translate(this.x)) + xOffset, yZero = axis.toPixels(boxBottom ||
41844
+ (boxTop ?? this.total ?? 0), y = axis.toPixels(totalStackValue), xAxis = stackBoxProps.xAxis || chart.xAxis[0], x = (defaultX ?? xAxis.translate(this.x)) + xOffset, yZero = axis.toPixels(boxBottom ||
41755
41845
  (isNumber(axis.min) &&
41756
41846
  axis.logarithmic &&
41757
41847
  axis.logarithmic.lin2log(axis.min)) ||
@@ -41864,7 +41954,7 @@ function chartGetStacks() {
41864
41954
  if (series.options.stacking && series.reserveSpace()) {
41865
41955
  series.stackKey = [
41866
41956
  series.type,
41867
- pick(series.options.stack, ''),
41957
+ (series.options.stack ?? ''),
41868
41958
  inverted ? xAxisOptions.top : xAxisOptions.left,
41869
41959
  inverted ? xAxisOptions.height : xAxisOptions.width
41870
41960
  ].join(',');
@@ -42027,7 +42117,7 @@ function seriesSetStackedPoints(axis, stackingParam) {
42027
42117
  stack = stacks[key][x];
42028
42118
  if (y !== null) {
42029
42119
  stack.points[pointKey] = stack.points[series.index] = [
42030
- pick(stack.cumulative, stackThreshold)
42120
+ (stack.cumulative ?? stackThreshold)
42031
42121
  ];
42032
42122
  // Record the base of the stack
42033
42123
  if (!defined(stack.cumulative)) {
@@ -42075,7 +42165,7 @@ function seriesSetStackedPoints(axis, stackingParam) {
42075
42165
  stack.cumulative = (total || 1) - 1;
42076
42166
  }
42077
42167
  else {
42078
- stack.cumulative = correctFloat(pick(stack.cumulative, stackThreshold) + yNumber);
42168
+ stack.cumulative = correctFloat((stack.cumulative ?? stackThreshold) + yNumber);
42079
42169
  }
42080
42170
  stack.total = total;
42081
42171
  if (y !== null) {
@@ -43090,8 +43180,7 @@ class AreaSeries extends AreaSeries_LineSeries {
43090
43180
  */
43091
43181
  getGraphPath(points) {
43092
43182
  const getGraphPath = AreaSeries_LineSeries.prototype.getGraphPath, options = this.options, stacking = options.stacking, yAxis = this.yAxis, bottomPoints = [], graphPoints = [], seriesIndex = this.index, stacks = yAxis.stacking.stacks[this.stackKey], threshold = options.threshold, translatedThreshold = Math.round(// #10909
43093
- yAxis.getThreshold(options.threshold)), connectNulls = pick(// #10574
43094
- options.connectNulls, stacking === 'percent'),
43183
+ yAxis.getThreshold(options.threshold)), connectNulls = (options.connectNulls ?? stacking === 'percent'),
43095
43184
  // To display null points in underlying stacked series, this
43096
43185
  // series graph must be broken, and the area also fall down to
43097
43186
  // fill the gap left by the null point. #2069
@@ -43144,9 +43233,9 @@ class AreaSeries extends AreaSeries_LineSeries {
43144
43233
  // Treat points with undefined plotY as null (e.g. non-positive
43145
43234
  // values on logarithmic axis, #18422)
43146
43235
  isNull = points[i].isNull || !defined(points[i].plotY);
43147
- plotX = pick(points[i].rectPlotX, points[i].plotX);
43236
+ plotX = (points[i].rectPlotX ?? points[i].plotX);
43148
43237
  yBottom = stacking ?
43149
- pick(points[i].yBottom, translatedThreshold) :
43238
+ (points[i].yBottom ?? translatedThreshold) :
43150
43239
  translatedThreshold;
43151
43240
  if (!isNull || connectNulls) {
43152
43241
  if (!connectNulls) {
@@ -43484,10 +43573,10 @@ class SplineSeries extends SplineSeries_LineSeries {
43484
43573
  }
43485
43574
  const ret = [
43486
43575
  'C',
43487
- pick(lastPoint.rightContX, lastPoint.plotX, 0),
43488
- pick(lastPoint.rightContY, lastPoint.plotY, 0),
43489
- pick(leftContX, plotX, 0),
43490
- pick(leftContY, plotY, 0),
43576
+ (lastPoint.rightContX ?? lastPoint.plotX ?? 0),
43577
+ (lastPoint.rightContY ?? lastPoint.plotY ?? 0),
43578
+ (leftContX ?? plotX ?? 0),
43579
+ (leftContY ?? plotY ?? 0),
43491
43580
  plotX,
43492
43581
  plotY
43493
43582
  ];
@@ -44456,7 +44545,7 @@ class ColumnSeries extends Series_Series {
44456
44545
  xAxis.tickInterval ||
44457
44546
  1), // #2610
44458
44547
  xAxis.len // #1535
44459
- ), groupPadding = categoryWidth * options.groupPadding, groupWidth = categoryWidth - 2 * groupPadding, pointOffsetWidth = groupWidth / (columnCount || 1), pointWidth = Math.min(options.maxPointWidth || xAxis.len, pick(options.pointWidth, pointOffsetWidth * (1 - 2 * options.pointPadding))), pointPadding = (pointOffsetWidth - pointWidth) / 2,
44548
+ ), groupPadding = categoryWidth * options.groupPadding, groupWidth = categoryWidth - 2 * groupPadding, pointOffsetWidth = groupWidth / (columnCount || 1), pointWidth = Math.min(options.maxPointWidth || xAxis.len, (options.pointWidth ?? pointOffsetWidth * (1 - 2 * options.pointPadding))), pointPadding = (pointOffsetWidth - pointWidth) / 2,
44460
44549
  // #1251, #3737
44461
44550
  colIndex = (series.columnIndex || 0) + (reverseStacks ? 1 : 0), pointXOffset = pointPadding +
44462
44551
  (groupPadding +
@@ -45020,7 +45109,7 @@ var DataLabel;
45020
45109
  // that parts of the align box is inside the plot area
45021
45110
  // (#12370). When stacking, it is always inside regardless
45022
45111
  // of the option (#15148).
45023
- pick(options.inside, !!this.options.stacking) &&
45112
+ (options.inside ?? !!this.options.stacking) &&
45024
45113
  alignTo &&
45025
45114
  chart.isInsidePlot(plotX, inverted ?
45026
45115
  alignTo.x + 1 :
@@ -45123,8 +45212,8 @@ var DataLabel;
45123
45212
  // zIndex: 20
45124
45213
  // }).add();
45125
45214
  // chart.renderer.circle(
45126
- // chart.plotLeft + pick(dataLabel.alignAttr.x, 0),
45127
- // chart.plotTop + pick(dataLabel.alignAttr.y, 0),
45215
+ // chart.plotLeft + (dataLabel.alignAttr.x ?? 0),
45216
+ // chart.plotTop + (dataLabel.alignAttr.y ?? 0),
45128
45217
  // 2
45129
45218
  // ).attr({
45130
45219
  // fill: 'red',
@@ -45307,7 +45396,7 @@ var DataLabel;
45307
45396
  if (labelEnabled) {
45308
45397
  // Create individual options structure that can be
45309
45398
  // extended without affecting others
45310
- formatString = pick(labelOptions[point.formatPrefix + 'Format'], labelOptions.format);
45399
+ formatString = (labelOptions[point.formatPrefix + 'Format'] ?? labelOptions.format);
45311
45400
  labelText = defined(formatString) ?
45312
45401
  DataLabel_format(formatString, point, chart) :
45313
45402
  (labelOptions[point.formatPrefix + 'Formatter'] ||
@@ -45315,7 +45404,9 @@ var DataLabel;
45315
45404
  rotation = labelOptions.rotation;
45316
45405
  if (!chart.styledMode) {
45317
45406
  // Determine the color
45318
- style.color = pick(labelOptions.color, style.color, isString(series.color) ? series.color : void 0, 'var(--highcharts-neutral-color-100)');
45407
+ style.color = (isString(labelOptions.color) ?
45408
+ labelOptions.color :
45409
+ void 0) ?? style.color ?? (isString(series.color) ? series.color : void 0) ?? 'var(--highcharts-neutral-color-100)';
45319
45410
  // Get automated contrast color
45320
45411
  if (style.color === 'contrast') {
45321
45412
  if (backgroundColor !== 'none') {
@@ -46116,14 +46207,15 @@ class ScatterSeries extends ScatterSeries_LineSeries {
46116
46207
  return rand - Math.floor(rand);
46117
46208
  }
46118
46209
  if (jitter) {
46119
- this.points.forEach(function (point, i) {
46120
- ['x', 'y'].forEach(function (dim, j) {
46210
+ this.points.forEach((point, i) => {
46211
+ ['x', 'y'].forEach((dim, j) => {
46121
46212
  if (jitter[dim] && !point.isNull) {
46122
- const plotProp = `plot${dim.toUpperCase()}`, axis = series[`${dim}Axis`], translatedJitter = jitter[dim] *
46123
- axis.transA;
46213
+ const plotProp = `plot${dim.toUpperCase()}`, axis = series[`${dim}Axis`];
46124
46214
  if (axis && !axis.logarithmic) {
46125
46215
  // Identify the outer bounds of the jitter range
46126
- const min = Math.max(0, (point[plotProp] || 0) - translatedJitter), max = Math.min(axis.len, (point[plotProp] || 0) + translatedJitter);
46216
+ // (#25054)
46217
+ const translatedJitter = jitter[dim] * axis.transA *
46218
+ (axis.reversed ? -1 : 1), min = (point[plotProp] || 0) - translatedJitter, max = (point[plotProp] || 0) + translatedJitter;
46127
46219
  // Find a random position within this range
46128
46220
  point[plotProp] = min +
46129
46221
  (max - min) * unrandom(i + j * len);
@@ -46228,11 +46320,13 @@ var CenteredUtilities;
46228
46320
  innerSize = parseFloat(innerSize);
46229
46321
  }
46230
46322
  const positions = [
46231
- pick(centerOption?.[0], '50%'),
46232
- pick(centerOption?.[1], '50%'),
46323
+ (centerOption?.[0] ?? '50%'),
46324
+ (centerOption?.[1] ?? '50%'),
46233
46325
  // Prevent from negative values
46234
- pick(size && size < 0 ? void 0 : options.size, '100%'),
46235
- pick(innerSize && innerSize < 0 ? void 0 : options.innerSize || 0, '0%')
46326
+ ((size && size < 0 ? void 0 : options.size) ?? '100%'),
46327
+ ((innerSize && innerSize < 0 ?
46328
+ void 0 :
46329
+ options.innerSize || 0) ?? '0%')
46236
46330
  ];
46237
46331
  for (i = 0; i < 4; ++i) {
46238
46332
  value = positions[i];
@@ -46434,7 +46528,7 @@ class PiePoint extends Series_Point {
46434
46528
  const series = this.series, chart = series.chart;
46435
46529
  setAnimation(animation, chart);
46436
46530
  // Redraw is true by default
46437
- redraw = pick(redraw, true);
46531
+ redraw = (redraw ?? true);
46438
46532
  this.sliced = this.options.sliced = sliced ?? !this.sliced;
46439
46533
  // Update options.data
46440
46534
  if (series.options.data) {
@@ -47239,7 +47333,8 @@ class PieSeries extends Series_Series {
47239
47333
  // Start values
47240
47334
  graphic.attr({
47241
47335
  // Animate from inner radius (#779)
47242
- r: pick(point.startR, (series.center && series.center[3] / 2)),
47336
+ r: point.startR ??
47337
+ (series.center && series.center[3] / 2),
47243
47338
  start: startAngleRad,
47244
47339
  end: startAngleRad
47245
47340
  });
@@ -47880,7 +47975,7 @@ var PieDataLabel_ColumnDataLabel;
47880
47975
  labelPosition.computed.x = x;
47881
47976
  labelPosition.computed.y = y - topOffset;
47882
47977
  // Detect overflowing data labels
47883
- if (pick(dataLabelOptions.crop, true)) {
47978
+ if (dataLabelOptions.crop ?? true) {
47884
47979
  dataLabelWidth = dataLabel.getBBox().width;
47885
47980
  let sideOverflow;
47886
47981
  // Overflow left
@@ -48396,7 +48491,10 @@ function OverlappingDataLabels_onChartRender() {
48396
48491
  if (point.visible) {
48397
48492
  (point.dataLabels || []).forEach((label) => {
48398
48493
  const options = label.options || {};
48399
- label.labelrank = pick(options.labelrank, point.labelrank, point.shapeArgs?.height); // #4118
48494
+ label.labelrank =
48495
+ options.labelrank ??
48496
+ point.labelrank ??
48497
+ point.shapeArgs?.height; // #4118
48400
48498
  // #21725: Sync target positions for generic overlap
48401
48499
  // checking. During animations (e.g., toggling a
48402
48500
  // point), DOM positions may overlap. We force
@@ -48885,10 +48983,12 @@ var Responsive;
48885
48983
  */
48886
48984
  function matchResponsiveRule(rule, matches) {
48887
48985
  const condition = rule.condition, fn = condition.callback || function () {
48888
- return (this.chartWidth <= pick(condition.maxWidth, Number.MAX_VALUE) &&
48889
- this.chartHeight <= pick(condition.maxHeight, Number.MAX_VALUE) &&
48890
- this.chartWidth >= pick(condition.minWidth, 0) &&
48891
- this.chartHeight >= pick(condition.minHeight, 0));
48986
+ return (this.chartWidth <=
48987
+ (condition.maxWidth ?? Number.MAX_VALUE) &&
48988
+ this.chartHeight <=
48989
+ (condition.maxHeight ?? Number.MAX_VALUE) &&
48990
+ this.chartWidth >= (condition.minWidth ?? 0) &&
48991
+ this.chartHeight >= (condition.minHeight ?? 0));
48892
48992
  };
48893
48993
  if (fn.call(this, this)) {
48894
48994
  matches.push(rule._id);
@@ -49102,7 +49202,7 @@ var Responsive;
49102
49202
  ;// ./code/es-modules/masters/highcharts.src.js
49103
49203
  // SPDX-License-Identifier: LicenseRef-Highcharts
49104
49204
  /**
49105
- * @license Highcharts JS v13.0.1 (2026-08-17)
49205
+ * @license Highcharts JS v13.0.2 (2026-08-27)
49106
49206
  * @module highcharts/highcharts
49107
49207
  *
49108
49208
  * (c) 2009-2026 Highsoft AS
@@ -49179,7 +49279,12 @@ G.SVGElement = SVG_SVGElement;
49179
49279
  G.SVGRenderer = SVG_SVGRenderer;
49180
49280
  G.Templating = Core_Templating;
49181
49281
  G.Tick = Axis_Tick;
49182
- G.Time = Core_Time;
49282
+ G.Time = class extends Core_Time {
49283
+ constructor(options, lang) {
49284
+ const defaultOptions = Defaults.getOptions();
49285
+ super(options ?? defaultOptions.time, lang ?? defaultOptions.lang);
49286
+ }
49287
+ };
49183
49288
  G.Tooltip = Core_Tooltip;
49184
49289
  // Utilities
49185
49290
  G.addEvent = addEvent;
@@ -49651,7 +49756,7 @@ var ColorAxisComposition;
49651
49756
  series.bindAxes();
49652
49757
  series.isDirtyData = true;
49653
49758
  });
49654
- if (pick(options.redraw, true)) {
49759
+ if (options.redraw ?? true) {
49655
49760
  chart.redraw(options.animation);
49656
49761
  }
49657
49762
  return axis;
@@ -50426,10 +50531,8 @@ class ColorAxis extends Axis_Axis {
50426
50531
  * @internal
50427
50532
  */
50428
50533
  drawLegendSymbol(legend, item) {
50429
- const axis = this, legendItem = item.legendItem || {}, padding = legend.padding, legendOptions = legend.options, labelOptions = axis.options.labels, itemDistance = pick(legendOptions.itemDistance, 10), horiz = axis.horiz, { width, height } = axis.getSize(), labelPadding = pick(
50430
- // @todo: This option is not documented, nor implemented when
50431
- // vertical
50432
- legendOptions.labelPadding, horiz ? 16 : 30);
50534
+ const axis = this, legendItem = item.legendItem || {}, padding = legend.padding, legendOptions = legend.options, labelOptions = axis.options.labels, itemDistance = (legendOptions.itemDistance ?? 10), horiz = axis.horiz, { width, height } = axis.getSize(), labelPadding = legendOptions.labelPadding ??
50535
+ (horiz ? 16 : 30);
50433
50536
  this.setLegendColor();
50434
50537
  let titleHeight = 0;
50435
50538
  let titleWidth = 0;
@@ -50531,7 +50634,12 @@ class ColorAxis extends Axis_Axis {
50531
50634
  this.dataMax = -Infinity;
50532
50635
  while (i--) { // X, y, value, other
50533
50636
  cSeries = series[i];
50534
- colorKey = cSeries.colorKey = pick(cSeries.options.colorKey, cSeries.colorKey, cSeries.pointValKey, cSeries.zoneAxis, 'y');
50637
+ colorKey = cSeries.colorKey =
50638
+ cSeries.options.colorKey ??
50639
+ cSeries.colorKey ??
50640
+ cSeries.pointValKey ??
50641
+ cSeries.zoneAxis ??
50642
+ 'y';
50535
50643
  calculatedExtremes = cSeries[colorKey + 'Min'] &&
50536
50644
  cSeries[colorKey + 'Max'];
50537
50645
  // Find the first column that has values
@@ -50718,7 +50826,7 @@ class ColorAxis extends Axis_Axis {
50718
50826
  getDataClassLegendSymbols() {
50719
50827
  const axis = this, chart = axis.chart, legendItems = (axis.legendItem &&
50720
50828
  axis.legendItem.labels ||
50721
- []), legendOptions = chart.options.legend, valueDecimals = pick(legendOptions.valueDecimals, -1), valueSuffix = pick(legendOptions.valueSuffix, '');
50829
+ []), legendOptions = chart.options.legend, valueDecimals = (legendOptions.valueDecimals ?? -1), valueSuffix = (legendOptions.valueSuffix ?? '');
50722
50830
  const getPointsInDataClass = (i) => axis.series.reduce((points, s) => {
50723
50831
  points.push(...s.points.filter((point) => point.dataClass === i));
50724
50832
  return points;
@@ -50788,9 +50896,13 @@ class ColorAxis extends Axis_Axis {
50788
50896
  * @internal
50789
50897
  */
50790
50898
  getSize() {
50791
- const axis = this, { chart, horiz } = axis, { height: colorAxisHeight, width: colorAxisWidth } = axis.options, { legend: legendOptions } = chart.options, width = pick(defined(colorAxisWidth) ?
50792
- relativeLength(colorAxisWidth, chart.chartWidth) : void 0, legendOptions?.symbolWidth, horiz ? ColorAxis.defaultLegendLength : 12), height = pick(defined(colorAxisHeight) ?
50793
- relativeLength(colorAxisHeight, chart.chartHeight) : void 0, legendOptions?.symbolHeight, horiz ? 12 : ColorAxis.defaultLegendLength);
50899
+ const axis = this, { chart, horiz } = axis, { height: colorAxisHeight, width: colorAxisWidth } = axis.options, { legend: legendOptions } = chart.options, width = defined(colorAxisWidth) ?
50900
+ relativeLength(colorAxisWidth, chart.chartWidth) :
50901
+ (legendOptions?.symbolWidth ??
50902
+ (horiz ? ColorAxis.defaultLegendLength : 12)), height = defined(colorAxisHeight) ?
50903
+ relativeLength(colorAxisHeight, chart.chartHeight) :
50904
+ (legendOptions?.symbolHeight ??
50905
+ (horiz ? 12 : ColorAxis.defaultLegendLength));
50794
50906
  return {
50795
50907
  width,
50796
50908
  height
@@ -50838,7 +50950,7 @@ Array.prototype.push.apply(Axis_Axis.keepProps, ColorAxis.keepProps);
50838
50950
  /* unused harmony import specifier */ var Highcharts;
50839
50951
  // SPDX-License-Identifier: LicenseRef-Highcharts
50840
50952
  /**
50841
- * @license Highcharts JS v13.0.1 (2026-08-17)
50953
+ * @license Highcharts JS v13.0.2 (2026-08-27)
50842
50954
  * @module highcharts/modules/color-axis
50843
50955
  * @requires highcharts
50844
50956
  *
@@ -51251,7 +51363,7 @@ var MapPointer;
51251
51363
  const mapNavigation = this.chart.options.mapNavigation;
51252
51364
  // Pinch status
51253
51365
  if (mapNavigation &&
51254
- pick(mapNavigation.enableTouchZoom, mapNavigation.enabled)) {
51366
+ (mapNavigation.enableTouchZoom ?? mapNavigation.enabled)) {
51255
51367
  this.chart.zooming.pinchType = 'xy';
51256
51368
  }
51257
51369
  proceed.apply(this, [].slice.call(arguments, 1));
@@ -51434,7 +51546,7 @@ class MapNavigation {
51434
51546
  navButtons.pop()?.destroy();
51435
51547
  }
51436
51548
  if (!chart.renderer.forExport &&
51437
- pick(navOptions.enableButtons, navOptions.enabled)) {
51549
+ (navOptions.enableButtons ?? navOptions.enabled)) {
51438
51550
  if (!mapNav.navButtonsGroup) {
51439
51551
  mapNav.navButtonsGroup = chart.renderer.g()
51440
51552
  .attr({
@@ -51565,7 +51677,7 @@ class MapNavigation {
51565
51677
  updateEvents(options) {
51566
51678
  const chart = this.chart;
51567
51679
  // Add the double click event
51568
- if (pick(options.enableDoubleClickZoom, options.enabled) ||
51680
+ if ((options.enableDoubleClickZoom ?? options.enabled) ||
51569
51681
  options.enableDoubleClickZoomTo) {
51570
51682
  this.unbindDblClick = this.unbindDblClick || addEvent(chart.container, 'dblclick', function (e) {
51571
51683
  chart.pointer.onContainerDblClick(e);
@@ -51576,7 +51688,7 @@ class MapNavigation {
51576
51688
  this.unbindDblClick = this.unbindDblClick();
51577
51689
  }
51578
51690
  // Add the mousewheel event
51579
- if (pick(options.enableMouseWheelZoom, options.enabled)) {
51691
+ if (options.enableMouseWheelZoom ?? options.enabled) {
51580
51692
  this.unbindMouseWheel = this.unbindMouseWheel || addEvent(chart.container, 'wheel', function (e) {
51581
51693
  // Prevent scrolling when the pointer is over the element
51582
51694
  // with that class, for example annotation popup #12100.
@@ -51806,9 +51918,11 @@ class MapChart extends Chart_Chart {
51806
51918
  type: 'map'
51807
51919
  },
51808
51920
  credits: {
51809
- mapText: pick(defaultCreditsOptions.mapText, ' \u00a9 <a href="{geojson.copyrightUrl}">' +
51810
- '{geojson.copyrightShort}</a>'),
51811
- mapTextFull: pick(defaultCreditsOptions.mapTextFull, '{geojson.copyright}')
51921
+ mapText: (defaultCreditsOptions.mapText ??
51922
+ ' \u00a9 <a href="{geojson.copyrightUrl}">' +
51923
+ '{geojson.copyrightShort}</a>'),
51924
+ mapTextFull: defaultCreditsOptions.mapTextFull ??
51925
+ '{geojson.copyright}'
51812
51926
  },
51813
51927
  mapView: {}, // Required to enable Chart.mapView
51814
51928
  tooltip: {
@@ -51931,7 +52045,7 @@ class MapChart extends Chart_Chart {
51931
52045
  */
51932
52046
  function mapChart(a, b, c) {
51933
52047
  const chart = new MapChart(a, b, c);
51934
- return chart.promise || chart;
52048
+ return chart.promise ?? chart;
51935
52049
  }
51936
52050
  MapChart.mapChart = mapChart;
51937
52051
  /* eslint-enable jsdoc/check-param-names */
@@ -52121,8 +52235,10 @@ class MapPoint extends ScatterPoint {
52121
52235
  }
52122
52236
  else {
52123
52237
  const propMiddleX = properties?.['hc-middle-x'], propMiddleY = properties?.['hc-middle-y'];
52124
- bounds.midX = (bounds.x1 + (bounds.x2 - bounds.x1) * pick(this.middleX, isNumber(propMiddleX) ? propMiddleX : 0.5));
52125
- let middleYFraction = pick(this.middleY, isNumber(propMiddleY) ? propMiddleY : 0.5);
52238
+ bounds.midX = (bounds.x1 + (bounds.x2 - bounds.x1) * (this.middleX ??
52239
+ (isNumber(propMiddleX) ? propMiddleX : 0.5)));
52240
+ let middleYFraction = this.middleY ??
52241
+ (isNumber(propMiddleY) ? propMiddleY : 0.5);
52126
52242
  // No geographic geometry, only path given => flip
52127
52243
  if (!this.geometry) {
52128
52244
  middleYFraction = 1 - middleYFraction;
@@ -55162,7 +55278,7 @@ class MapView {
55162
55278
  fitToBounds(bounds, padding, redraw = true, animation) {
55163
55279
  const b = bounds || this.getProjectedBounds();
55164
55280
  if (b) {
55165
- const pad = pick(padding, bounds ? 0 : this.options.padding), fullField = this.getField(false), padArr = isArray(pad) ? pad : [pad, pad, pad, pad];
55281
+ const pad = padding ?? (bounds ? 0 : this.options.padding), fullField = this.getField(false), padArr = isArray(pad) ? pad : [pad, pad, pad, pad];
55166
55282
  this.padding = [
55167
55283
  relativeLength(padArr[0], fullField.height),
55168
55284
  relativeLength(padArr[1], fullField.width),
@@ -56205,8 +56321,8 @@ class MapSeries extends MapSeries_ScatterSeries {
56205
56321
  !isNumber(params['stroke-width']));
56206
56322
  // When strokeWidth is animating
56207
56323
  if (animateIn || animateOut) {
56208
- const strokeWidth = pick(series.getStrokeWidth(series.options), 1 // Styled mode
56209
- ), inheritedStrokeWidth = (strokeWidth /
56324
+ const strokeWidth = series.getStrokeWidth(series.options) ??
56325
+ 1, inheritedStrokeWidth = (strokeWidth /
56210
56326
  (chart.mapView?.getScale() ||
56211
56327
  1));
56212
56328
  // For animating from undefined, .attr() reads the
@@ -56235,8 +56351,7 @@ class MapSeries extends MapSeries_ScatterSeries {
56235
56351
  }
56236
56352
  // Apply the SVG transform
56237
56353
  transformGroups.forEach((transformGroup, i) => {
56238
- const view = i === 0 ? mapView : mapView.insets[i - 1], svgTransform = view.getSVGTransform(), strokeWidth = pick(this.getStrokeWidth(this.options), 1 // Styled mode
56239
- );
56354
+ const view = i === 0 ? mapView : mapView.insets[i - 1], svgTransform = view.getSVGTransform(), strokeWidth = (this.getStrokeWidth(this.options) ?? 1);
56240
56355
  /*
56241
56356
  Animate or move to the new zoom level. In order to prevent
56242
56357
  flickering as the different transform components are set out of sync
@@ -56337,9 +56452,7 @@ class MapSeries extends MapSeries_ScatterSeries {
56337
56452
  if (!point.bounds) {
56338
56453
  let bounds = point.getProjectedBounds(projection);
56339
56454
  if (bounds) {
56340
- point.labelrank = pick(point.labelrank,
56341
- // Bigger shape, higher rank
56342
- ((bounds.x2 - bounds.x1) *
56455
+ point.labelrank = (point.labelrank ?? ((bounds.x2 - bounds.x1) *
56343
56456
  (bounds.y2 - bounds.y1)));
56344
56457
  const { midX, midY } = bounds;
56345
56458
  if (insets && isNumber(midX) && isNumber(midY)) {
@@ -57702,7 +57815,7 @@ class BubbleLegendItem {
57702
57815
  * Legend instance
57703
57816
  */
57704
57817
  drawLegendSymbol(legend) {
57705
- const itemDistance = pick(legend.options.itemDistance, 20), legendItem = this.legendItem || {}, options = this.options, ranges = options.ranges, connectorDistance = options.connectorDistance;
57818
+ const itemDistance = (legend.options.itemDistance ?? 20), legendItem = this.legendItem || {}, options = this.options, ranges = options.ranges, connectorDistance = options.connectorDistance;
57706
57819
  let connectorSpace;
57707
57820
  // Do not create bubbleLegend now if ranges or ranges values are not
57708
57821
  // specified or if are empty array.
@@ -57748,13 +57861,17 @@ class BubbleLegendItem {
57748
57861
  // Allow to parts of styles be used individually for range
57749
57862
  ranges.forEach(function (range, i) {
57750
57863
  if (!styledMode) {
57751
- bubbleAttribs.stroke = pick(range.borderColor, options.borderColor, series.color);
57864
+ bubbleAttribs.stroke =
57865
+ range.borderColor ?? options.borderColor ?? series.color;
57752
57866
  bubbleAttribs.fill = range.color || options.color;
57753
57867
  if (!bubbleAttribs.fill) {
57754
57868
  bubbleAttribs.fill = series.color;
57755
57869
  bubbleAttribs['fill-opacity'] = fillOpacity ?? 1;
57756
57870
  }
57757
- connectorAttribs.stroke = pick(range.connectorColor, options.connectorColor, series.color);
57871
+ connectorAttribs.stroke =
57872
+ range.connectorColor ??
57873
+ options.connectorColor ??
57874
+ series.color;
57758
57875
  }
57759
57876
  // Set options needed for rendering each range
57760
57877
  ranges[i].radius = this.getRangeRadius(range.value);
@@ -57951,10 +58068,10 @@ class BubbleLegendItem {
57951
58068
  if (s.isBubble && !s.ignoreSeries) {
57952
58069
  zData = s.getColumn('z').filter(isNumber);
57953
58070
  if (zData.length) {
57954
- minZ = pick(s.options.zMin, Math.min(minZ, Math.max(arrayMin(zData), s.options.displayNegative === false ?
58071
+ minZ = (s.options.zMin ?? Math.min(minZ, Math.max(arrayMin(zData), s.options.displayNegative === false ?
57955
58072
  s.options.zThreshold :
57956
58073
  -Number.MAX_VALUE)));
57957
- maxZ = pick(s.options.zMax, Math.max(maxZ, arrayMax(zData)));
58074
+ maxZ = (s.options.zMax ?? Math.max(maxZ, arrayMax(zData)));
57958
58075
  }
57959
58076
  }
57960
58077
  });
@@ -58469,7 +58586,8 @@ function onAxisFoundExtremes() {
58469
58586
  ['min', 'userMin', pxMin],
58470
58587
  ['max', 'userMax', pxMax]
58471
58588
  ].forEach((keys) => {
58472
- if (typeof pick(this.options[keys[0]], this[keys[1]]) === 'undefined') {
58589
+ if (typeof (this.options[keys[0]] ??
58590
+ this[keys[1]]) === 'undefined') {
58473
58591
  this[keys[0]] += keys[2] / transA;
58474
58592
  }
58475
58593
  });
@@ -58566,10 +58684,10 @@ class BubbleSeries extends BubbleSeries_ScatterSeries {
58566
58684
  if (otherSeries.bubblePadding && otherSeries.reserveSpace()) {
58567
58685
  const zExtremes = (otherSeries.onPoint || otherSeries).getZExtremes();
58568
58686
  if (zExtremes) {
58569
- // Changed '||' to 'pick' because min or max can be 0.
58687
+ // Use nullish coalescing because min or max can be 0.
58570
58688
  // #17280
58571
- zMin = Math.min(pick(zMin, zExtremes.zMin), zExtremes.zMin);
58572
- zMax = Math.max(pick(zMax, zExtremes.zMax), zExtremes.zMax);
58689
+ zMin = Math.min((zMin ?? zExtremes.zMin), zExtremes.zMin);
58690
+ zMax = Math.max((zMax ?? zExtremes.zMax), zExtremes.zMax);
58573
58691
  valid = true;
58574
58692
  }
58575
58693
  }
@@ -58707,19 +58825,19 @@ class BubbleSeries extends BubbleSeries_ScatterSeries {
58707
58825
  }
58708
58826
  return isPercent ? smallestSize * length / 100 : length;
58709
58827
  };
58710
- const minPxSize = getPxSize(pick(this.options.minSize, 8));
58828
+ const minPxSize = getPxSize(this.options.minSize ?? 8);
58711
58829
  // Prioritize min size if conflict to make sure bubbles are
58712
58830
  // always visible. #5873
58713
- const maxPxSize = Math.max(getPxSize(pick(this.options.maxSize, '20%')), minPxSize);
58831
+ const maxPxSize = Math.max(getPxSize(this.options.maxSize ?? '20%'), minPxSize);
58714
58832
  return { minPxSize, maxPxSize };
58715
58833
  }
58716
58834
  getZExtremes() {
58717
58835
  const options = this.options, zData = this.getColumn('z').filter(isNumber);
58718
58836
  if (zData.length) {
58719
- const zMin = pick(options.zMin, clamp(arrayMin(zData), options.displayNegative === false ?
58837
+ const zMin = (options.zMin ?? clamp(arrayMin(zData), options.displayNegative === false ?
58720
58838
  (options.zThreshold || 0) :
58721
58839
  -Number.MAX_VALUE, Number.MAX_VALUE));
58722
- const zMax = pick(options.zMax, arrayMax(zData));
58840
+ const zMax = (options.zMax ?? arrayMax(zData));
58723
58841
  if (isNumber(zMin) && isNumber(zMax)) {
58724
58842
  return { zMin, zMax };
58725
58843
  }
@@ -59547,7 +59665,7 @@ class HeatmapPoint extends HeatmapPoint_ScatterPoint {
59547
59665
  * Functions
59548
59666
  *
59549
59667
  * */
59550
- /** @private */
59668
+ /** @internal */
59551
59669
  applyOptions(options, x) {
59552
59670
  // #17970, if point is null remove its color, because it may be updated
59553
59671
  if (this.isNull || this.value === null) {
@@ -59558,10 +59676,10 @@ class HeatmapPoint extends HeatmapPoint_ScatterPoint {
59558
59676
  'null' : 'point';
59559
59677
  return this;
59560
59678
  }
59561
- /** @private */
59679
+ /** @internal */
59562
59680
  getCellAttributes() {
59563
59681
  const point = this, series = point.series, seriesOptions = series.options, xPad = (seriesOptions.colsize || 1) / 2, yPad = (seriesOptions.rowsize || 1) / 2, xAxis = series.xAxis, yAxis = series.yAxis, markerOptions = point.options.marker || series.options.marker, pointPlacement = series.pointPlacementToXValue(), // #7860
59564
- pointPadding = pick(point.pointPadding, seriesOptions.pointPadding, 0), cellAttr = {
59682
+ pointPadding = point.pointPadding ?? seriesOptions.pointPadding ?? 0, cellAttr = {
59565
59683
  x1: clamp(Math.round(xAxis.len -
59566
59684
  xAxis.translate(point.x - xPad, false, true, false, true, -pointPlacement)), -xAxis.len, 2 * xAxis.len),
59567
59685
  x2: clamp(Math.round(xAxis.len -
@@ -59596,7 +59714,7 @@ class HeatmapPoint extends HeatmapPoint_ScatterPoint {
59596
59714
  return cellAttr;
59597
59715
  }
59598
59716
  /**
59599
- * @private
59717
+ * @internal
59600
59718
  */
59601
59719
  haloPath(size) {
59602
59720
  if (!size) {
@@ -59614,7 +59732,7 @@ class HeatmapPoint extends HeatmapPoint_ScatterPoint {
59614
59732
  /**
59615
59733
  * Color points have a value option that determines whether or not it is
59616
59734
  * a null point
59617
- * @private
59735
+ * @internal
59618
59736
  */
59619
59737
  isValid() {
59620
59738
  // Undefined is allowed
@@ -60301,7 +60419,7 @@ const { doc: InterpolationUtilities_doc } = Core_Globals;
60301
60419
  /**
60302
60420
  * Find color of point based on color axis.
60303
60421
  *
60304
- * @function Highcharts.colorFromPoint
60422
+ * @internal
60305
60423
  *
60306
60424
  * @param {number | null} value
60307
60425
  * Value to find corresponding color on the color axis.
@@ -60319,8 +60437,8 @@ function colorFromPoint(value, point) {
60319
60437
  .split(')')[0]
60320
60438
  .split('(')[1]
60321
60439
  .split(',')
60322
- .map((s) => pick(parseFloat(s), parseInt(s, 10))));
60323
- rgba[3] = pick(rgba[3], 1.0) * 255;
60440
+ .map((s) => (parseFloat(s) ?? parseInt(s, 10))));
60441
+ rgba[3] = (rgba[3] ?? 1.0) * 255;
60324
60442
  if (!defined(value) || !point.visible) {
60325
60443
  rgba[3] = 0;
60326
60444
  }
@@ -60330,7 +60448,7 @@ function colorFromPoint(value, point) {
60330
60448
  }
60331
60449
  /**
60332
60450
  * Method responsible for creating a canvas for interpolation image.
60333
- * @private
60451
+ * @internal
60334
60452
  */
60335
60453
  function getContext(series) {
60336
60454
  const { canvas, context } = series;
@@ -60383,7 +60501,7 @@ const { colorFromPoint: HeatmapSeries_colorFromPoint, getContext: HeatmapSeries_
60383
60501
  *
60384
60502
  * */
60385
60503
  /**
60386
- * @private
60504
+ * @internal
60387
60505
  * @class
60388
60506
  * @name Highcharts.seriesTypes.heatmap
60389
60507
  *
@@ -60407,7 +60525,7 @@ class HeatmapSeries extends HeatmapSeries_ScatterSeries {
60407
60525
  *
60408
60526
  * */
60409
60527
  /**
60410
- * @private
60528
+ * @internal
60411
60529
  */
60412
60530
  drawPoints() {
60413
60531
  const series = this, seriesOptions = series.options, interpolation = seriesOptions.interpolation, seriesMarkerOptions = seriesOptions.marker || {};
@@ -60466,13 +60584,13 @@ class HeatmapSeries extends HeatmapSeries_ScatterSeries {
60466
60584
  }
60467
60585
  /**
60468
60586
  * Override to use rectangle by default
60469
- * @private
60587
+ * @internal
60470
60588
  */
60471
60589
  getSymbol() {
60472
60590
  this.symbol = this.options.marker?.symbol || 'rect';
60473
60591
  }
60474
60592
  /**
60475
- * @private
60593
+ * @internal
60476
60594
  */
60477
60595
  getExtremes() {
60478
60596
  // Get the extremes from the value data
@@ -60490,7 +60608,7 @@ class HeatmapSeries extends HeatmapSeries_ScatterSeries {
60490
60608
  /**
60491
60609
  * Override to also allow null points, used when building the k-d-tree for
60492
60610
  * tooltips in boost mode.
60493
- * @private
60611
+ * @internal
60494
60612
  */
60495
60613
  getValidPoints(points, insideOnly) {
60496
60614
  return HeatmapSeries_Series.prototype.getValidPoints.call(this, points, insideOnly, true);
@@ -60498,20 +60616,20 @@ class HeatmapSeries extends HeatmapSeries_ScatterSeries {
60498
60616
  /**
60499
60617
  * Define hasData function for non-cartesian series. Returns true if the
60500
60618
  * series has points at all.
60501
- * @private
60619
+ * @internal
60502
60620
  */
60503
60621
  hasData() {
60504
60622
  return !!this.dataTable.rowCount;
60505
60623
  }
60506
60624
  /**
60507
60625
  * Override the init method to add point ranges on both axes.
60508
- * @private
60626
+ * @internal
60509
60627
  */
60510
60628
  init() {
60511
60629
  super.init.apply(this, arguments);
60512
60630
  const options = this.options;
60513
60631
  // #3758, prevent resetting in setData
60514
- options.pointRange = pick(options.pointRange, options.colsize || 1);
60632
+ options.pointRange = options.pointRange ?? (options.colsize || 1);
60515
60633
  // General point range
60516
60634
  this.yAxis.axisPointRange = options.rowsize || 1;
60517
60635
  // Bind new symbol names
@@ -60534,7 +60652,7 @@ class HeatmapSeries extends HeatmapSeries_ScatterSeries {
60534
60652
  }
60535
60653
  }
60536
60654
  /**
60537
- * @private
60655
+ * @internal
60538
60656
  */
60539
60657
  markerAttribs(point, state) {
60540
60658
  const shapeArgs = point.shapeArgs || {};
@@ -60568,7 +60686,7 @@ class HeatmapSeries extends HeatmapSeries_ScatterSeries {
60568
60686
  return shapeArgs;
60569
60687
  }
60570
60688
  /**
60571
- * @private
60689
+ * @internal
60572
60690
  */
60573
60691
  pointAttribs(point, state) {
60574
60692
  const series = this, attr = HeatmapSeries_Series.prototype.pointAttribs.call(series, point, state), seriesOptions = series.options || {}, plotOptions = series.chart.options.plotOptions || {}, seriesPlotOptions = plotOptions.series || {}, heatmapPlotOptions = plotOptions.heatmap || {},
@@ -60598,7 +60716,7 @@ class HeatmapSeries extends HeatmapSeries_ScatterSeries {
60598
60716
  return attr;
60599
60717
  }
60600
60718
  /**
60601
- * @private
60719
+ * @internal
60602
60720
  */
60603
60721
  translate() {
60604
60722
  const series = this, options = series.options, { borderRadius, marker } = options, symbol = marker?.symbol || 'rect', shape = HeatmapSeries_symbols[symbol] ? symbol : 'rect', hasRegularShape = ['circle', 'square'].indexOf(shape) !== -1;
@@ -60650,7 +60768,7 @@ extend(HeatmapSeries.prototype, {
60650
60768
  specialGroup: 'group',
60651
60769
  trackerGroups: Series_ColorMapComposition.seriesMembers.trackerGroups,
60652
60770
  /**
60653
- * @private
60771
+ * @internal
60654
60772
  */
60655
60773
  alignDataLabel: HeatmapSeries_ColumnSeries.prototype.alignDataLabel,
60656
60774
  colorAttribs: Series_ColorMapComposition.seriesMembers.colorAttribs
@@ -60697,7 +60815,7 @@ Series_SeriesRegistry.registerSeriesType('heatmap', HeatmapSeries);
60697
60815
  /* unused harmony import specifier */ var map_src_Highcharts;
60698
60816
  // SPDX-License-Identifier: LicenseRef-Highcharts
60699
60817
  /**
60700
- * @license Highmaps JS v13.0.1 (2026-08-17)
60818
+ * @license Highmaps JS v13.0.2 (2026-08-27)
60701
60819
  * @module highcharts/modules/map
60702
60820
  * @requires highcharts
60703
60821
  *