highcharts 13.0.1 → 13.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (915) hide show
  1. package/bower.json +2 -3
  2. package/es-modules/Accessibility/A11yI18n.js +4 -4
  3. package/es-modules/Accessibility/Components/InfoRegionsComponent.js +6 -4
  4. package/es-modules/Accessibility/Components/LegendComponent.js +2 -2
  5. package/es-modules/Accessibility/Components/NavigatorComponent.js +2 -2
  6. package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +13 -10
  7. package/es-modules/Accessibility/Components/ZoomComponent.js +2 -2
  8. package/es-modules/Accessibility/FocusBorder.js +2 -2
  9. package/es-modules/Accessibility/Options/DeprecatedOptions.js +1 -2
  10. package/es-modules/Core/Animation/AnimationUtilities.js +3 -2
  11. package/es-modules/Core/Axis/Axis.js +48 -57
  12. package/es-modules/Core/Axis/Axis3DComposition.js +8 -6
  13. package/es-modules/Core/Axis/BrokenAxis.js +6 -5
  14. package/es-modules/Core/Axis/Color/ColorAxis.js +17 -10
  15. package/es-modules/Core/Axis/Color/ColorAxisComposition.js +2 -2
  16. package/es-modules/Core/Axis/GridAxis.js +4 -4
  17. package/es-modules/Core/Axis/LogarithmicAxis.js +5 -3
  18. package/es-modules/Core/Axis/NavigatorAxisComposition.js +2 -2
  19. package/es-modules/Core/Axis/OrdinalAxis.js +9 -7
  20. package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +3 -2
  21. package/es-modules/Core/Axis/RadialAxis.js +15 -9
  22. package/es-modules/Core/Axis/ScrollbarAxis.js +3 -3
  23. package/es-modules/Core/Axis/Stacking/StackItem.js +5 -5
  24. package/es-modules/Core/Axis/Stacking/StackingAxis.js +4 -4
  25. package/es-modules/Core/Axis/Tick.js +10 -11
  26. package/es-modules/Core/Axis/TreeGrid/TreeGridTick.js +3 -3
  27. package/es-modules/Core/Chart/Chart.js +14 -14
  28. package/es-modules/Core/Chart/Chart3D.js +3 -3
  29. package/es-modules/Core/Chart/ChartDefaults.js +23 -0
  30. package/es-modules/Core/Chart/MapChart.js +7 -5
  31. package/es-modules/Core/Chart/StockChart.js +15 -11
  32. package/es-modules/Core/Color/Color.js +3 -1
  33. package/es-modules/Core/Defaults.js +35 -0
  34. package/es-modules/Core/Globals.js +1 -1
  35. package/es-modules/Core/Legend/Legend.js +16 -12
  36. package/es-modules/Core/Legend/LegendSymbol.js +2 -2
  37. package/es-modules/Core/MSPointer.js +2 -2
  38. package/es-modules/Core/Math3D.js +6 -7
  39. package/es-modules/Core/Pointer.js +9 -9
  40. package/es-modules/Core/Renderer/RendererUtilities.js +2 -2
  41. package/es-modules/Core/Renderer/SVG/SVGElement.js +11 -9
  42. package/es-modules/Core/Renderer/SVG/SVGElement3D.js +2 -2
  43. package/es-modules/Core/Renderer/SVG/SVGLabel.js +5 -5
  44. package/es-modules/Core/Renderer/SVG/SVGRenderer.js +5 -5
  45. package/es-modules/Core/Renderer/SVG/SVGRenderer3D.js +11 -9
  46. package/es-modules/Core/Renderer/SVG/Symbols.js +6 -5
  47. package/es-modules/Core/Renderer/SVG/TextBuilder.js +2 -2
  48. package/es-modules/Core/Responsive.js +7 -5
  49. package/es-modules/Core/Series/DataLabel.js +8 -6
  50. package/es-modules/Core/Series/OverlappingDataLabels.js +5 -2
  51. package/es-modules/Core/Series/Point.js +3 -3
  52. package/es-modules/Core/Series/Series.js +37 -21
  53. package/es-modules/Core/Series/Series3D.js +2 -2
  54. package/es-modules/Core/Templating.js +2 -2
  55. package/es-modules/Core/Tooltip.js +11 -7
  56. package/es-modules/Core/Utilities.js +4 -3
  57. package/es-modules/Data/Connectors/DataConnector.js +2 -2
  58. package/es-modules/Data/Connectors/GoogleSheetsConnector.js +2 -2
  59. package/es-modules/Data/DataTable.js +17 -0
  60. package/es-modules/Extensions/Annotations/Annotation.js +4 -4
  61. package/es-modules/Extensions/Annotations/AnnotationChart.js +2 -2
  62. package/es-modules/Extensions/Annotations/ControlPoint.js +2 -2
  63. package/es-modules/Extensions/Annotations/Controllables/ControllableLabel.js +2 -2
  64. package/es-modules/Extensions/Annotations/EventEmitter.js +4 -4
  65. package/es-modules/Extensions/Annotations/NavigationBindings.js +6 -3
  66. package/es-modules/Extensions/Annotations/NavigationBindingsUtilities.js +2 -2
  67. package/es-modules/Extensions/Annotations/Popup/Popup.js +3 -2
  68. package/es-modules/Extensions/Annotations/Popup/PopupAnnotations.js +4 -6
  69. package/es-modules/Extensions/Annotations/Types/Measure.js +3 -3
  70. package/es-modules/Extensions/Annotations/Types/VerticalLine.js +3 -3
  71. package/es-modules/Extensions/Boost/BoostChart.js +11 -4
  72. package/es-modules/Extensions/Boost/BoostSeries.js +8 -9
  73. package/es-modules/Extensions/Boost/WGLRenderer.js +9 -6
  74. package/es-modules/Extensions/Boost/WGLShader.js +3 -3
  75. package/es-modules/Extensions/BoostCanvas.js +2 -2
  76. package/es-modules/Extensions/Breadcrumbs/Breadcrumbs.js +5 -4
  77. package/es-modules/Extensions/DataGrouping/DataGrouping.js +2 -2
  78. package/es-modules/Extensions/DataGrouping/DataGroupingAxisComposition.js +4 -3
  79. package/es-modules/Extensions/DataGrouping/DataGroupingSeriesComposition.js +2 -2
  80. package/es-modules/Extensions/DraggablePoints/DragDropProps.js +2 -3
  81. package/es-modules/Extensions/ExportData/ExportData.js +17 -16
  82. package/es-modules/Extensions/Exporting/Exporting.js +7 -7
  83. package/es-modules/Extensions/MouseWheelZoom/MouseWheelZoom.js +2 -2
  84. package/es-modules/Extensions/Pane/PaneComposition.js +2 -2
  85. package/es-modules/Extensions/ParallelCoordinates/ParallelAxis.js +2 -2
  86. package/es-modules/Extensions/PatternFill.js +7 -5
  87. package/es-modules/Extensions/PriceIndication.js +5 -4
  88. package/es-modules/Extensions/SeriesLabel/SeriesLabel.js +7 -7
  89. package/es-modules/Extensions/Sonification/MIDI.js +2 -3
  90. package/es-modules/Extensions/Sonification/Sonification.js +2 -2
  91. package/es-modules/Extensions/Sonification/SonificationSpeaker.js +3 -2
  92. package/es-modules/Extensions/Sonification/SynthPatch.js +3 -3
  93. package/es-modules/Extensions/Sonification/TimelineFromChart.js +11 -11
  94. package/es-modules/Gantt/Legacy.js +2 -2
  95. package/es-modules/Gantt/Pathfinder.js +3 -3
  96. package/es-modules/Gantt/PathfinderAlgorithms.js +4 -3
  97. package/es-modules/Gantt/Tree.js +1 -1
  98. package/es-modules/Maps/MapNavigation.js +4 -4
  99. package/es-modules/Maps/MapPointer.js +2 -2
  100. package/es-modules/Maps/MapView.js +2 -2
  101. package/es-modules/Series/ArcDiagram/ArcDiagramSeries.js +8 -6
  102. package/es-modules/Series/Area/AreaSeries.js +4 -5
  103. package/es-modules/Series/BoxPlot/BoxPlotSeries.js +13 -4
  104. package/es-modules/Series/Bubble/BubbleLegendItem.js +10 -6
  105. package/es-modules/Series/Bubble/BubbleSeries.js +10 -9
  106. package/es-modules/Series/Bullet/BulletSeries.js +17 -10
  107. package/es-modules/Series/CenteredUtilities.js +7 -5
  108. package/es-modules/Series/Column/ColumnSeries.js +2 -2
  109. package/es-modules/Series/Column3D/Column3DComposition.js +6 -5
  110. package/es-modules/Series/ColumnPyramid/ColumnPyramidSeries.js +4 -4
  111. package/es-modules/Series/ColumnRange/ColumnRangeSeries.js +4 -2
  112. package/es-modules/Series/Cylinder/CylinderComposition.js +2 -2
  113. package/es-modules/Series/DataModifyComposition.js +9 -7
  114. package/es-modules/Series/DotPlot/DotPlotSeries.js +3 -2
  115. package/es-modules/Series/Dumbbell/DumbbellPoint.js +14 -3
  116. package/es-modules/Series/Dumbbell/DumbbellSeries.js +24 -7
  117. package/es-modules/Series/FlowMap/FlowMapPoint.js +5 -3
  118. package/es-modules/Series/FlowMap/FlowMapSeries.js +17 -9
  119. package/es-modules/Series/Funnel/FunnelSeries.js +2 -2
  120. package/es-modules/Series/Funnel3D/Funnel3DSeries.js +7 -5
  121. package/es-modules/Series/Gauge/GaugeSeries.js +2 -2
  122. package/es-modules/Series/GeoHeatmap/GeoHeatmapSeries.js +4 -4
  123. package/es-modules/Series/Heatmap/HeatmapPoint.js +6 -6
  124. package/es-modules/Series/Heatmap/HeatmapPointOptions.js +12 -0
  125. package/es-modules/Series/Heatmap/HeatmapSeries.js +13 -13
  126. package/es-modules/Series/Heatmap/HeatmapSeriesOptions.js +12 -0
  127. package/es-modules/Series/Histogram/HistogramPoint.js +17 -0
  128. package/es-modules/Series/Histogram/HistogramPointOptions.js +12 -0
  129. package/es-modules/Series/Histogram/HistogramSeries.js +14 -2
  130. package/es-modules/Series/Histogram/HistogramSeriesOptions.js +12 -0
  131. package/es-modules/Series/InterpolationUtilities.js +5 -5
  132. package/es-modules/Series/Item/ItemPointOptions.js +14 -0
  133. package/es-modules/Series/Item/ItemSeries.js +18 -6
  134. package/es-modules/Series/Item/ItemSeriesOptions.js +14 -0
  135. package/es-modules/Series/Map/MapPoint.js +5 -3
  136. package/es-modules/Series/Map/MapSeries.js +5 -8
  137. package/es-modules/Series/Networkgraph/NetworkgraphPoint.js +3 -3
  138. package/es-modules/Series/Networkgraph/NetworkgraphSeries.js +4 -2
  139. package/es-modules/Series/Networkgraph/ReingoldFruchtermanLayout.js +18 -9
  140. package/es-modules/Series/NodesComposition.js +9 -10
  141. package/es-modules/Series/Organization/OrganizationPoint.js +3 -2
  142. package/es-modules/Series/PackedBubble/PackedBubbleLayout.js +3 -3
  143. package/es-modules/Series/PackedBubble/PackedBubbleSeries.js +5 -5
  144. package/es-modules/Series/Pictorial/PictorialSeries.js +4 -2
  145. package/es-modules/Series/Pie/PieDataLabel.js +2 -2
  146. package/es-modules/Series/Pie/PiePoint.js +2 -2
  147. package/es-modules/Series/Pie/PieSeries.js +3 -2
  148. package/es-modules/Series/Pie3D/Pie3DSeries.js +8 -4
  149. package/es-modules/Series/PolarComposition.js +8 -7
  150. package/es-modules/Series/Sankey/SankeySeries.js +11 -5
  151. package/es-modules/Series/Scatter/ScatterSeries.js +6 -5
  152. package/es-modules/Series/SolidGauge/SolidGaugeSeries.js +2 -2
  153. package/es-modules/Series/Spline/SplineSeries.js +5 -5
  154. package/es-modules/Series/TiledWebMap/TiledWebMapSeries.js +8 -6
  155. package/es-modules/Series/Tilemap/TilemapShapes.js +2 -2
  156. package/es-modules/Series/Timeline/TimelinePoint.js +2 -2
  157. package/es-modules/Series/Timeline/TimelineSeries.js +4 -3
  158. package/es-modules/Series/TreeUtilities.js +16 -7
  159. package/es-modules/Series/Treegraph/TreegraphLink.js +2 -2
  160. package/es-modules/Series/Treemap/TreemapPoint.js +2 -2
  161. package/es-modules/Series/Treemap/TreemapSeries.js +14 -11
  162. package/es-modules/Series/VariablePie/VariablePieSeries.js +6 -4
  163. package/es-modules/Series/Variwide/VariwideSeries.js +2 -2
  164. package/es-modules/Series/Waterfall/WaterfallSeries.js +2 -2
  165. package/es-modules/Series/Windbarb/WindbarbSeries.js +2 -2
  166. package/es-modules/Shared/TimeBase.js +8 -2
  167. package/es-modules/Shared/Utilities.js +9 -7
  168. package/es-modules/Stock/Indicators/Aroon/AroonIndicator.js +3 -3
  169. package/es-modules/Stock/Indicators/DPO/DPOIndicator.js +4 -3
  170. package/es-modules/Stock/Indicators/RSI/RSIIndicator.js +1 -1
  171. package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +2 -2
  172. package/es-modules/Stock/Navigator/ChartNavigatorComposition.js +4 -4
  173. package/es-modules/Stock/Navigator/Navigator.js +26 -26
  174. package/es-modules/Stock/Navigator/StandaloneNavigator.js +4 -4
  175. package/es-modules/Stock/RangeSelector/RangeSelector.js +15 -11
  176. package/es-modules/Stock/RangeSelector/RangeSelectorComposition.js +3 -3
  177. package/es-modules/Stock/Scrollbar/Scrollbar.js +8 -7
  178. package/es-modules/Stock/StockTools/StockToolbar.js +5 -5
  179. package/es-modules/Stock/StockTools/StockTools.js +2 -2
  180. package/es-modules/Stock/StockTools/StockToolsGui.js +4 -2
  181. package/es-modules/masters/highcharts-3d.src.js +1 -1
  182. package/es-modules/masters/highcharts-autoload.src.js +1 -1
  183. package/es-modules/masters/highcharts-gantt.src.js +1 -1
  184. package/es-modules/masters/highcharts-more.src.js +1 -1
  185. package/es-modules/masters/highcharts.src.js +7 -2
  186. package/es-modules/masters/highmaps.src.js +1 -1
  187. package/es-modules/masters/highstock.src.js +1 -1
  188. package/es-modules/masters/i18n/fr-FR.src.d.ts +1 -1
  189. package/es-modules/masters/i18n/fr-FR.src.js +1 -1
  190. package/es-modules/masters/i18n/nb-NO.src.d.ts +1 -1
  191. package/es-modules/masters/i18n/nb-NO.src.js +1 -1
  192. package/es-modules/masters/i18n/zh-CN.src.d.ts +1 -1
  193. package/es-modules/masters/i18n/zh-CN.src.js +1 -1
  194. package/es-modules/masters/indicators/acceleration-bands.src.js +1 -1
  195. package/es-modules/masters/indicators/accumulation-distribution.src.js +1 -1
  196. package/es-modules/masters/indicators/ao.src.js +1 -1
  197. package/es-modules/masters/indicators/apo.src.js +1 -1
  198. package/es-modules/masters/indicators/aroon-oscillator.src.js +1 -1
  199. package/es-modules/masters/indicators/aroon.src.js +1 -1
  200. package/es-modules/masters/indicators/atr.src.js +1 -1
  201. package/es-modules/masters/indicators/bollinger-bands.src.js +1 -1
  202. package/es-modules/masters/indicators/cci.src.js +1 -1
  203. package/es-modules/masters/indicators/chaikin.src.js +1 -1
  204. package/es-modules/masters/indicators/cmf.src.js +1 -1
  205. package/es-modules/masters/indicators/cmo.src.js +1 -1
  206. package/es-modules/masters/indicators/dema.src.js +1 -1
  207. package/es-modules/masters/indicators/disparity-index.src.js +1 -1
  208. package/es-modules/masters/indicators/dmi.src.js +1 -1
  209. package/es-modules/masters/indicators/dpo.src.js +1 -1
  210. package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
  211. package/es-modules/masters/indicators/indicators-all.src.js +1 -1
  212. package/es-modules/masters/indicators/indicators.src.js +1 -1
  213. package/es-modules/masters/indicators/keltner-channels.src.js +1 -1
  214. package/es-modules/masters/indicators/klinger.src.js +1 -1
  215. package/es-modules/masters/indicators/macd.src.js +1 -1
  216. package/es-modules/masters/indicators/mfi.src.js +1 -1
  217. package/es-modules/masters/indicators/momentum.src.js +1 -1
  218. package/es-modules/masters/indicators/natr.src.js +1 -1
  219. package/es-modules/masters/indicators/obv.src.js +1 -1
  220. package/es-modules/masters/indicators/pivot-points.src.js +1 -1
  221. package/es-modules/masters/indicators/ppo.src.js +1 -1
  222. package/es-modules/masters/indicators/price-channel.src.js +1 -1
  223. package/es-modules/masters/indicators/price-envelopes.src.js +1 -1
  224. package/es-modules/masters/indicators/psar.src.js +1 -1
  225. package/es-modules/masters/indicators/regressions.src.js +1 -1
  226. package/es-modules/masters/indicators/roc.src.js +1 -1
  227. package/es-modules/masters/indicators/rsi.src.js +1 -1
  228. package/es-modules/masters/indicators/slow-stochastic.src.js +1 -1
  229. package/es-modules/masters/indicators/stochastic.src.js +1 -1
  230. package/es-modules/masters/indicators/supertrend.src.js +1 -1
  231. package/es-modules/masters/indicators/tema.src.js +1 -1
  232. package/es-modules/masters/indicators/trendline.src.js +1 -1
  233. package/es-modules/masters/indicators/trix.src.js +1 -1
  234. package/es-modules/masters/indicators/volume-by-price.src.js +1 -1
  235. package/es-modules/masters/indicators/vwap.src.js +1 -1
  236. package/es-modules/masters/indicators/williams-r.src.js +1 -1
  237. package/es-modules/masters/indicators/wma.src.js +1 -1
  238. package/es-modules/masters/indicators/zigzag.src.js +1 -1
  239. package/es-modules/masters/modules/accessibility.src.js +1 -1
  240. package/es-modules/masters/modules/annotations-advanced.src.js +1 -1
  241. package/es-modules/masters/modules/annotations.src.js +1 -1
  242. package/es-modules/masters/modules/arc-diagram.src.js +1 -1
  243. package/es-modules/masters/modules/arrow-symbols.src.js +1 -1
  244. package/es-modules/masters/modules/boost-canvas.src.js +1 -1
  245. package/es-modules/masters/modules/boost.src.js +1 -1
  246. package/es-modules/masters/modules/broken-axis.src.js +1 -1
  247. package/es-modules/masters/modules/bullet.src.js +1 -1
  248. package/es-modules/masters/modules/coloraxis.src.js +1 -1
  249. package/es-modules/masters/modules/contour.src.js +1 -1
  250. package/es-modules/masters/modules/current-date-indicator.src.js +1 -1
  251. package/es-modules/masters/modules/cylinder.src.js +1 -1
  252. package/es-modules/masters/modules/data-sorting.src.js +1 -1
  253. package/es-modules/masters/modules/data-tools.src.js +1 -1
  254. package/es-modules/masters/modules/data.src.js +1 -1
  255. package/es-modules/masters/modules/datagrouping.src.js +1 -1
  256. package/es-modules/masters/modules/debugger.src.js +1 -1
  257. package/es-modules/masters/modules/dependency-wheel.src.js +1 -1
  258. package/es-modules/masters/modules/dotplot.src.js +1 -1
  259. package/es-modules/masters/modules/drag-panes.src.js +1 -1
  260. package/es-modules/masters/modules/draggable-points.src.js +1 -1
  261. package/es-modules/masters/modules/drilldown.src.js +1 -1
  262. package/es-modules/masters/modules/dumbbell.src.js +1 -1
  263. package/es-modules/masters/modules/export-data.src.js +1 -1
  264. package/es-modules/masters/modules/exporting.src.js +1 -1
  265. package/es-modules/masters/modules/flowmap.src.js +1 -1
  266. package/es-modules/masters/modules/full-screen.src.js +1 -1
  267. package/es-modules/masters/modules/funnel.src.js +1 -1
  268. package/es-modules/masters/modules/funnel3d.src.js +1 -1
  269. package/es-modules/masters/modules/gantt.src.js +1 -1
  270. package/es-modules/masters/modules/geoheatmap.src.js +1 -1
  271. package/es-modules/masters/modules/grid-axis.src.js +1 -1
  272. package/es-modules/masters/modules/heatmap.src.js +1 -1
  273. package/es-modules/masters/modules/heikinashi.src.js +1 -1
  274. package/es-modules/masters/modules/histogram-bellcurve.src.js +1 -1
  275. package/es-modules/masters/modules/hollowcandlestick.src.js +1 -1
  276. package/es-modules/masters/modules/item-series.src.js +1 -1
  277. package/es-modules/masters/modules/lollipop.src.js +1 -1
  278. package/es-modules/masters/modules/map.src.js +1 -1
  279. package/es-modules/masters/modules/marker-clusters.src.js +1 -1
  280. package/es-modules/masters/modules/mouse-wheel-zoom.src.js +1 -1
  281. package/es-modules/masters/modules/navigator.src.js +1 -1
  282. package/es-modules/masters/modules/networkgraph.src.js +1 -1
  283. package/es-modules/masters/modules/no-data-to-display.src.js +1 -1
  284. package/es-modules/masters/modules/non-cartesian-zoom.src.js +1 -1
  285. package/es-modules/masters/modules/offline-exporting.src.js +1 -1
  286. package/es-modules/masters/modules/organization.src.js +1 -1
  287. package/es-modules/masters/modules/parallel-coordinates.src.js +1 -1
  288. package/es-modules/masters/modules/pareto.src.js +1 -1
  289. package/es-modules/masters/modules/pathfinder.src.js +1 -1
  290. package/es-modules/masters/modules/pattern-fill.src.js +1 -1
  291. package/es-modules/masters/modules/pictorial.src.js +1 -1
  292. package/es-modules/masters/modules/pointandfigure.src.js +1 -1
  293. package/es-modules/masters/modules/price-indicator.src.js +1 -1
  294. package/es-modules/masters/modules/pyramid3d.src.js +1 -1
  295. package/es-modules/masters/modules/renko.src.js +1 -1
  296. package/es-modules/masters/modules/sankey.src.js +1 -1
  297. package/es-modules/masters/modules/series-label.src.js +1 -1
  298. package/es-modules/masters/modules/series-on-point.src.js +1 -1
  299. package/es-modules/masters/modules/solid-gauge.src.js +1 -1
  300. package/es-modules/masters/modules/sonification.src.js +1 -1
  301. package/es-modules/masters/modules/static-scale.src.js +1 -1
  302. package/es-modules/masters/modules/stock-tools.src.js +1 -1
  303. package/es-modules/masters/modules/stock.src.js +1 -1
  304. package/es-modules/masters/modules/streamgraph.src.js +1 -1
  305. package/es-modules/masters/modules/sunburst.src.js +1 -1
  306. package/es-modules/masters/modules/textpath.src.js +1 -1
  307. package/es-modules/masters/modules/tiledwebmap.src.js +1 -1
  308. package/es-modules/masters/modules/tilemap.src.js +1 -1
  309. package/es-modules/masters/modules/timeline.src.js +1 -1
  310. package/es-modules/masters/modules/treegraph.src.js +1 -1
  311. package/es-modules/masters/modules/treegrid.src.js +1 -1
  312. package/es-modules/masters/modules/treemap.src.js +1 -1
  313. package/es-modules/masters/modules/variable-pie.src.js +1 -1
  314. package/es-modules/masters/modules/variwide.src.js +1 -1
  315. package/es-modules/masters/modules/vector.src.js +1 -1
  316. package/es-modules/masters/modules/venn.src.js +1 -1
  317. package/es-modules/masters/modules/windbarb.src.js +1 -1
  318. package/es-modules/masters/modules/wordcloud.src.js +1 -1
  319. package/es-modules/masters/modules/xrange.src.js +1 -1
  320. package/es-modules/masters/standalone-navigator.src.js +1 -1
  321. package/es-modules/masters/themes/adaptive.src.js +1 -1
  322. package/es-modules/masters/themes/avocado.src.js +1 -1
  323. package/es-modules/masters/themes/dark-unica.src.js +1 -1
  324. package/es-modules/masters/themes/grid-light.src.js +1 -1
  325. package/es-modules/masters/themes/high-contrast.src.js +1 -1
  326. package/es-modules/masters/themes/sand-signika.src.js +1 -1
  327. package/es-modules/masters/themes/sunset.src.js +1 -1
  328. package/es-modules/tsconfig.tsbuildinfo +1 -1
  329. package/esm/highcharts-3d.js +2 -2
  330. package/esm/highcharts-3d.src.js +40 -32
  331. package/esm/highcharts-autoload.js +1 -1
  332. package/esm/highcharts-autoload.src.js +1 -1
  333. package/esm/highcharts-gantt.js +1 -1
  334. package/esm/highcharts-gantt.src.js +1 -1
  335. package/esm/highcharts-more.js +2 -2
  336. package/esm/highcharts-more.src.js +90 -56
  337. package/esm/highcharts.js +4 -4
  338. package/esm/highcharts.src.js +312 -207
  339. package/esm/highmaps.js +1 -1
  340. package/esm/highmaps.src.js +1 -1
  341. package/esm/highstock.js +1 -1
  342. package/esm/highstock.src.js +1 -1
  343. package/esm/i18n/fr-FR.js +1 -1
  344. package/esm/i18n/fr-FR.src.js +1 -1
  345. package/esm/i18n/nb-NO.js +1 -1
  346. package/esm/i18n/nb-NO.src.js +1 -1
  347. package/esm/i18n/zh-CN.js +1 -1
  348. package/esm/i18n/zh-CN.src.js +1 -1
  349. package/esm/indicators/acceleration-bands.js +1 -1
  350. package/esm/indicators/acceleration-bands.src.js +1 -1
  351. package/esm/indicators/accumulation-distribution.js +1 -1
  352. package/esm/indicators/accumulation-distribution.src.js +1 -1
  353. package/esm/indicators/ao.js +1 -1
  354. package/esm/indicators/ao.src.js +1 -1
  355. package/esm/indicators/apo.js +1 -1
  356. package/esm/indicators/apo.src.js +1 -1
  357. package/esm/indicators/aroon-oscillator.js +1 -1
  358. package/esm/indicators/aroon-oscillator.src.js +1 -1
  359. package/esm/indicators/aroon.js +2 -2
  360. package/esm/indicators/aroon.src.js +3 -3
  361. package/esm/indicators/atr.js +1 -1
  362. package/esm/indicators/atr.src.js +1 -1
  363. package/esm/indicators/bollinger-bands.js +1 -1
  364. package/esm/indicators/bollinger-bands.src.js +1 -1
  365. package/esm/indicators/cci.js +1 -1
  366. package/esm/indicators/cci.src.js +1 -1
  367. package/esm/indicators/chaikin.js +1 -1
  368. package/esm/indicators/chaikin.src.js +1 -1
  369. package/esm/indicators/cmf.js +1 -1
  370. package/esm/indicators/cmf.src.js +1 -1
  371. package/esm/indicators/cmo.js +1 -1
  372. package/esm/indicators/cmo.src.js +1 -1
  373. package/esm/indicators/dema.js +1 -1
  374. package/esm/indicators/dema.src.js +1 -1
  375. package/esm/indicators/disparity-index.js +1 -1
  376. package/esm/indicators/disparity-index.src.js +1 -1
  377. package/esm/indicators/dmi.js +1 -1
  378. package/esm/indicators/dmi.src.js +1 -1
  379. package/esm/indicators/dpo.js +2 -2
  380. package/esm/indicators/dpo.src.js +4 -3
  381. package/esm/indicators/ichimoku-kinko-hyo.js +1 -1
  382. package/esm/indicators/ichimoku-kinko-hyo.src.js +1 -1
  383. package/esm/indicators/indicators-all.js +2 -2
  384. package/esm/indicators/indicators-all.src.js +8 -7
  385. package/esm/indicators/indicators.js +2 -2
  386. package/esm/indicators/indicators.src.js +2 -2
  387. package/esm/indicators/keltner-channels.js +1 -1
  388. package/esm/indicators/keltner-channels.src.js +1 -1
  389. package/esm/indicators/klinger.js +1 -1
  390. package/esm/indicators/klinger.src.js +1 -1
  391. package/esm/indicators/macd.js +1 -1
  392. package/esm/indicators/macd.src.js +1 -1
  393. package/esm/indicators/mfi.js +1 -1
  394. package/esm/indicators/mfi.src.js +1 -1
  395. package/esm/indicators/momentum.js +1 -1
  396. package/esm/indicators/momentum.src.js +1 -1
  397. package/esm/indicators/natr.js +1 -1
  398. package/esm/indicators/natr.src.js +1 -1
  399. package/esm/indicators/obv.js +1 -1
  400. package/esm/indicators/obv.src.js +1 -1
  401. package/esm/indicators/pivot-points.js +1 -1
  402. package/esm/indicators/pivot-points.src.js +1 -1
  403. package/esm/indicators/ppo.js +1 -1
  404. package/esm/indicators/ppo.src.js +1 -1
  405. package/esm/indicators/price-channel.js +1 -1
  406. package/esm/indicators/price-channel.src.js +1 -1
  407. package/esm/indicators/price-envelopes.js +1 -1
  408. package/esm/indicators/price-envelopes.src.js +1 -1
  409. package/esm/indicators/psar.js +1 -1
  410. package/esm/indicators/psar.src.js +1 -1
  411. package/esm/indicators/regressions.js +1 -1
  412. package/esm/indicators/regressions.src.js +1 -1
  413. package/esm/indicators/roc.js +1 -1
  414. package/esm/indicators/roc.src.js +1 -1
  415. package/esm/indicators/rsi.js +1 -1
  416. package/esm/indicators/rsi.src.js +2 -2
  417. package/esm/indicators/slow-stochastic.js +1 -1
  418. package/esm/indicators/slow-stochastic.src.js +1 -1
  419. package/esm/indicators/stochastic.js +1 -1
  420. package/esm/indicators/stochastic.src.js +1 -1
  421. package/esm/indicators/supertrend.js +1 -1
  422. package/esm/indicators/supertrend.src.js +1 -1
  423. package/esm/indicators/tema.js +1 -1
  424. package/esm/indicators/tema.src.js +1 -1
  425. package/esm/indicators/trendline.js +1 -1
  426. package/esm/indicators/trendline.src.js +1 -1
  427. package/esm/indicators/trix.js +1 -1
  428. package/esm/indicators/trix.src.js +1 -1
  429. package/esm/indicators/volume-by-price.js +1 -1
  430. package/esm/indicators/volume-by-price.src.js +1 -1
  431. package/esm/indicators/vwap.js +1 -1
  432. package/esm/indicators/vwap.src.js +1 -1
  433. package/esm/indicators/williams-r.js +1 -1
  434. package/esm/indicators/williams-r.src.js +1 -1
  435. package/esm/indicators/wma.js +1 -1
  436. package/esm/indicators/wma.src.js +1 -1
  437. package/esm/indicators/zigzag.js +1 -1
  438. package/esm/indicators/zigzag.src.js +1 -1
  439. package/esm/modules/accessibility.js +2 -2
  440. package/esm/modules/accessibility.src.js +69 -63
  441. package/esm/modules/annotations-advanced.js +3 -3
  442. package/esm/modules/annotations-advanced.src.js +25 -23
  443. package/esm/modules/annotations.js +3 -3
  444. package/esm/modules/annotations.src.js +21 -19
  445. package/esm/modules/arc-diagram.js +2 -2
  446. package/esm/modules/arc-diagram.src.js +16 -15
  447. package/esm/modules/arrow-symbols.js +1 -1
  448. package/esm/modules/arrow-symbols.src.js +1 -1
  449. package/esm/modules/boost-canvas.js +2 -2
  450. package/esm/modules/boost-canvas.src.js +29 -20
  451. package/esm/modules/boost.js +2 -2
  452. package/esm/modules/boost.src.js +28 -19
  453. package/esm/modules/broken-axis.js +2 -2
  454. package/esm/modules/broken-axis.src.js +6 -5
  455. package/esm/modules/bullet.js +2 -2
  456. package/esm/modules/bullet.src.js +17 -10
  457. package/esm/modules/coloraxis.js +2 -2
  458. package/esm/modules/coloraxis.src.js +18 -11
  459. package/esm/modules/contour.js +1 -1
  460. package/esm/modules/contour.src.js +1 -1
  461. package/esm/modules/current-date-indicator.js +1 -1
  462. package/esm/modules/current-date-indicator.src.js +1 -1
  463. package/esm/modules/cylinder.js +2 -2
  464. package/esm/modules/cylinder.src.js +9 -10
  465. package/esm/modules/data-sorting.js +1 -1
  466. package/esm/modules/data-sorting.src.js +1 -1
  467. package/esm/modules/data-tools.js +2 -2
  468. package/esm/modules/data-tools.src.js +20 -3
  469. package/esm/modules/data.js +1 -1
  470. package/esm/modules/data.src.js +1 -1
  471. package/esm/modules/datagrouping.js +2 -2
  472. package/esm/modules/datagrouping.src.js +6 -5
  473. package/esm/modules/debugger.js +1 -1
  474. package/esm/modules/debugger.src.js +1 -1
  475. package/esm/modules/dependency-wheel.js +1 -1
  476. package/esm/modules/dependency-wheel.src.js +1 -1
  477. package/esm/modules/dotplot.js +2 -2
  478. package/esm/modules/dotplot.src.js +3 -2
  479. package/esm/modules/drag-panes.js +1 -1
  480. package/esm/modules/drag-panes.src.js +1 -1
  481. package/esm/modules/draggable-points.js +2 -2
  482. package/esm/modules/draggable-points.src.js +2 -3
  483. package/esm/modules/drilldown.js +2 -2
  484. package/esm/modules/drilldown.src.js +5 -4
  485. package/esm/modules/dumbbell.js +2 -2
  486. package/esm/modules/dumbbell.src.js +37 -9
  487. package/esm/modules/export-data.js +2 -2
  488. package/esm/modules/export-data.src.js +17 -16
  489. package/esm/modules/exporting.js +2 -2
  490. package/esm/modules/exporting.src.js +7 -7
  491. package/esm/modules/flowmap.js +2 -2
  492. package/esm/modules/flowmap.src.js +21 -11
  493. package/esm/modules/full-screen.js +1 -1
  494. package/esm/modules/full-screen.src.js +1 -1
  495. package/esm/modules/funnel.js +2 -2
  496. package/esm/modules/funnel.src.js +2 -2
  497. package/esm/modules/funnel3d.js +2 -2
  498. package/esm/modules/funnel3d.src.js +14 -13
  499. package/esm/modules/gantt.js +2 -2
  500. package/esm/modules/gantt.src.js +93 -76
  501. package/esm/modules/geoheatmap.js +2 -2
  502. package/esm/modules/geoheatmap.src.js +8 -8
  503. package/esm/modules/grid-axis.js +2 -2
  504. package/esm/modules/grid-axis.src.js +4 -4
  505. package/esm/modules/heatmap.js +2 -2
  506. package/esm/modules/heatmap.src.js +22 -22
  507. package/esm/modules/heikinashi.js +1 -1
  508. package/esm/modules/heikinashi.src.js +1 -1
  509. package/esm/modules/histogram-bellcurve.js +1 -1
  510. package/esm/modules/histogram-bellcurve.src.js +15 -3
  511. package/esm/modules/hollowcandlestick.js +1 -1
  512. package/esm/modules/hollowcandlestick.src.js +1 -1
  513. package/esm/modules/item-series.js +2 -2
  514. package/esm/modules/item-series.src.js +18 -6
  515. package/esm/modules/lollipop.js +1 -1
  516. package/esm/modules/lollipop.src.js +1 -1
  517. package/esm/modules/map.js +2 -2
  518. package/esm/modules/map.src.js +65 -57
  519. package/esm/modules/marker-clusters.js +1 -1
  520. package/esm/modules/marker-clusters.src.js +1 -1
  521. package/esm/modules/mouse-wheel-zoom.js +2 -2
  522. package/esm/modules/mouse-wheel-zoom.src.js +3 -3
  523. package/esm/modules/navigator.js +2 -2
  524. package/esm/modules/navigator.src.js +47 -45
  525. package/esm/modules/networkgraph.js +2 -2
  526. package/esm/modules/networkgraph.src.js +31 -21
  527. package/esm/modules/no-data-to-display.js +1 -1
  528. package/esm/modules/no-data-to-display.src.js +1 -1
  529. package/esm/modules/non-cartesian-zoom.js +1 -1
  530. package/esm/modules/non-cartesian-zoom.src.js +1 -1
  531. package/esm/modules/offline-exporting.js +1 -1
  532. package/esm/modules/offline-exporting.src.js +1 -1
  533. package/esm/modules/organization.js +2 -2
  534. package/esm/modules/organization.src.js +3 -2
  535. package/esm/modules/parallel-coordinates.js +2 -2
  536. package/esm/modules/parallel-coordinates.src.js +2 -2
  537. package/esm/modules/pareto.js +1 -1
  538. package/esm/modules/pareto.src.js +1 -1
  539. package/esm/modules/pathfinder.js +2 -2
  540. package/esm/modules/pathfinder.src.js +7 -6
  541. package/esm/modules/pattern-fill.js +2 -2
  542. package/esm/modules/pattern-fill.src.js +7 -5
  543. package/esm/modules/pictorial.js +2 -2
  544. package/esm/modules/pictorial.src.js +10 -6
  545. package/esm/modules/pointandfigure.js +1 -1
  546. package/esm/modules/pointandfigure.src.js +1 -1
  547. package/esm/modules/price-indicator.js +2 -2
  548. package/esm/modules/price-indicator.src.js +5 -4
  549. package/esm/modules/pyramid3d.js +1 -1
  550. package/esm/modules/pyramid3d.src.js +1 -1
  551. package/esm/modules/renko.js +1 -1
  552. package/esm/modules/renko.src.js +1 -1
  553. package/esm/modules/sankey.js +2 -2
  554. package/esm/modules/sankey.src.js +34 -20
  555. package/esm/modules/series-label.js +2 -2
  556. package/esm/modules/series-label.src.js +7 -7
  557. package/esm/modules/series-on-point.js +1 -1
  558. package/esm/modules/series-on-point.src.js +1 -1
  559. package/esm/modules/solid-gauge.js +2 -2
  560. package/esm/modules/solid-gauge.src.js +2 -2
  561. package/esm/modules/sonification.js +2 -2
  562. package/esm/modules/sonification.src.js +19 -19
  563. package/esm/modules/static-scale.js +1 -1
  564. package/esm/modules/static-scale.src.js +1 -1
  565. package/esm/modules/stock-tools.js +3 -3
  566. package/esm/modules/stock-tools.src.js +15 -10
  567. package/esm/modules/stock.js +2 -2
  568. package/esm/modules/stock.src.js +90 -76
  569. package/esm/modules/streamgraph.js +1 -1
  570. package/esm/modules/streamgraph.src.js +1 -1
  571. package/esm/modules/sunburst.js +2 -2
  572. package/esm/modules/sunburst.src.js +41 -26
  573. package/esm/modules/textpath.js +1 -1
  574. package/esm/modules/textpath.src.js +1 -1
  575. package/esm/modules/tiledwebmap.js +2 -2
  576. package/esm/modules/tiledwebmap.src.js +8 -6
  577. package/esm/modules/tilemap.js +2 -2
  578. package/esm/modules/tilemap.src.js +3 -3
  579. package/esm/modules/timeline.js +2 -2
  580. package/esm/modules/timeline.src.js +5 -4
  581. package/esm/modules/treegraph.js +2 -2
  582. package/esm/modules/treegraph.src.js +17 -8
  583. package/esm/modules/treegrid.js +2 -2
  584. package/esm/modules/treegrid.src.js +28 -18
  585. package/esm/modules/treemap.js +2 -2
  586. package/esm/modules/treemap.src.js +35 -22
  587. package/esm/modules/variable-pie.js +2 -2
  588. package/esm/modules/variable-pie.src.js +6 -4
  589. package/esm/modules/variwide.js +2 -2
  590. package/esm/modules/variwide.src.js +2 -2
  591. package/esm/modules/vector.js +1 -1
  592. package/esm/modules/vector.src.js +1 -1
  593. package/esm/modules/venn.js +1 -1
  594. package/esm/modules/venn.src.js +1 -1
  595. package/esm/modules/windbarb.js +2 -2
  596. package/esm/modules/windbarb.src.js +2 -2
  597. package/esm/modules/wordcloud.js +1 -1
  598. package/esm/modules/wordcloud.src.js +1 -1
  599. package/esm/modules/xrange.js +1 -1
  600. package/esm/modules/xrange.src.js +1 -1
  601. package/esm/standalone-navigator.js +4 -4
  602. package/esm/standalone-navigator.src.js +355 -249
  603. package/esm/themes/adaptive.js +1 -1
  604. package/esm/themes/adaptive.src.js +1 -1
  605. package/esm/themes/avocado.js +1 -1
  606. package/esm/themes/avocado.src.js +1 -1
  607. package/esm/themes/dark-unica.js +1 -1
  608. package/esm/themes/dark-unica.src.js +1 -1
  609. package/esm/themes/grid-light.js +1 -1
  610. package/esm/themes/grid-light.src.js +1 -1
  611. package/esm/themes/high-contrast.js +1 -1
  612. package/esm/themes/high-contrast.src.js +1 -1
  613. package/esm/themes/sand-signika.js +1 -1
  614. package/esm/themes/sand-signika.src.js +1 -1
  615. package/esm/themes/sunset.js +1 -1
  616. package/esm/themes/sunset.src.js +1 -1
  617. package/highcharts-3d.js +2 -2
  618. package/highcharts-3d.src.js +40 -32
  619. package/highcharts-autoload.d.ts +8 -2
  620. package/highcharts-autoload.js +4 -4
  621. package/highcharts-autoload.src.d.ts +8 -2
  622. package/highcharts-autoload.src.js +313 -208
  623. package/highcharts-gantt.js +4 -4
  624. package/highcharts-gantt.src.js +404 -283
  625. package/highcharts-more.js +2 -2
  626. package/highcharts-more.src.js +90 -56
  627. package/highcharts.d.ts +61 -4
  628. package/highcharts.js +4 -4
  629. package/highcharts.src.d.ts +61 -4
  630. package/highcharts.src.js +312 -207
  631. package/highmaps.js +4 -4
  632. package/highmaps.src.js +390 -272
  633. package/highstock.js +4 -4
  634. package/highstock.src.js +413 -293
  635. package/i18n/fr-FR.js +1 -1
  636. package/i18n/fr-FR.src.js +1 -1
  637. package/i18n/nb-NO.js +1 -1
  638. package/i18n/nb-NO.src.js +1 -1
  639. package/i18n/zh-CN.js +1 -1
  640. package/i18n/zh-CN.src.js +1 -1
  641. package/indicators/acceleration-bands.js +1 -1
  642. package/indicators/acceleration-bands.src.js +1 -1
  643. package/indicators/accumulation-distribution.js +1 -1
  644. package/indicators/accumulation-distribution.src.js +1 -1
  645. package/indicators/ao.js +1 -1
  646. package/indicators/ao.src.js +1 -1
  647. package/indicators/apo.js +1 -1
  648. package/indicators/apo.src.js +1 -1
  649. package/indicators/aroon-oscillator.js +1 -1
  650. package/indicators/aroon-oscillator.src.js +1 -1
  651. package/indicators/aroon.js +2 -2
  652. package/indicators/aroon.src.js +3 -3
  653. package/indicators/atr.js +1 -1
  654. package/indicators/atr.src.js +1 -1
  655. package/indicators/bollinger-bands.js +1 -1
  656. package/indicators/bollinger-bands.src.js +1 -1
  657. package/indicators/cci.js +1 -1
  658. package/indicators/cci.src.js +1 -1
  659. package/indicators/chaikin.js +1 -1
  660. package/indicators/chaikin.src.js +1 -1
  661. package/indicators/cmf.js +1 -1
  662. package/indicators/cmf.src.js +1 -1
  663. package/indicators/cmo.js +1 -1
  664. package/indicators/cmo.src.js +1 -1
  665. package/indicators/dema.js +1 -1
  666. package/indicators/dema.src.js +1 -1
  667. package/indicators/disparity-index.js +1 -1
  668. package/indicators/disparity-index.src.js +1 -1
  669. package/indicators/dmi.js +1 -1
  670. package/indicators/dmi.src.js +1 -1
  671. package/indicators/dpo.js +2 -2
  672. package/indicators/dpo.src.js +4 -3
  673. package/indicators/ichimoku-kinko-hyo.js +1 -1
  674. package/indicators/ichimoku-kinko-hyo.src.js +1 -1
  675. package/indicators/indicators-all.js +2 -2
  676. package/indicators/indicators-all.src.js +8 -7
  677. package/indicators/indicators.js +2 -2
  678. package/indicators/indicators.src.js +2 -2
  679. package/indicators/keltner-channels.js +1 -1
  680. package/indicators/keltner-channels.src.js +1 -1
  681. package/indicators/klinger.js +1 -1
  682. package/indicators/klinger.src.js +1 -1
  683. package/indicators/macd.js +1 -1
  684. package/indicators/macd.src.js +1 -1
  685. package/indicators/mfi.js +1 -1
  686. package/indicators/mfi.src.js +1 -1
  687. package/indicators/momentum.js +1 -1
  688. package/indicators/momentum.src.js +1 -1
  689. package/indicators/natr.js +1 -1
  690. package/indicators/natr.src.js +1 -1
  691. package/indicators/obv.js +1 -1
  692. package/indicators/obv.src.js +1 -1
  693. package/indicators/pivot-points.js +1 -1
  694. package/indicators/pivot-points.src.js +1 -1
  695. package/indicators/ppo.js +1 -1
  696. package/indicators/ppo.src.js +1 -1
  697. package/indicators/price-channel.js +1 -1
  698. package/indicators/price-channel.src.js +1 -1
  699. package/indicators/price-envelopes.js +1 -1
  700. package/indicators/price-envelopes.src.js +1 -1
  701. package/indicators/psar.js +1 -1
  702. package/indicators/psar.src.js +1 -1
  703. package/indicators/regressions.js +1 -1
  704. package/indicators/regressions.src.js +1 -1
  705. package/indicators/roc.js +1 -1
  706. package/indicators/roc.src.js +1 -1
  707. package/indicators/rsi.js +1 -1
  708. package/indicators/rsi.src.js +2 -2
  709. package/indicators/slow-stochastic.js +1 -1
  710. package/indicators/slow-stochastic.src.js +1 -1
  711. package/indicators/stochastic.js +1 -1
  712. package/indicators/stochastic.src.js +1 -1
  713. package/indicators/supertrend.js +1 -1
  714. package/indicators/supertrend.src.js +1 -1
  715. package/indicators/tema.js +1 -1
  716. package/indicators/tema.src.js +1 -1
  717. package/indicators/trendline.js +1 -1
  718. package/indicators/trendline.src.js +1 -1
  719. package/indicators/trix.js +1 -1
  720. package/indicators/trix.src.js +1 -1
  721. package/indicators/volume-by-price.js +1 -1
  722. package/indicators/volume-by-price.src.js +1 -1
  723. package/indicators/vwap.js +1 -1
  724. package/indicators/vwap.src.js +1 -1
  725. package/indicators/williams-r.js +1 -1
  726. package/indicators/williams-r.src.js +1 -1
  727. package/indicators/wma.js +1 -1
  728. package/indicators/wma.src.js +1 -1
  729. package/indicators/zigzag.js +1 -1
  730. package/indicators/zigzag.src.js +1 -1
  731. package/modules/accessibility.js +2 -2
  732. package/modules/accessibility.src.js +69 -63
  733. package/modules/annotations-advanced.js +3 -3
  734. package/modules/annotations-advanced.src.js +25 -23
  735. package/modules/annotations.js +3 -3
  736. package/modules/annotations.src.js +21 -19
  737. package/modules/arc-diagram.js +2 -2
  738. package/modules/arc-diagram.src.js +16 -15
  739. package/modules/arrow-symbols.js +1 -1
  740. package/modules/arrow-symbols.src.js +1 -1
  741. package/modules/boost-canvas.js +2 -2
  742. package/modules/boost-canvas.src.js +29 -20
  743. package/modules/boost.js +2 -2
  744. package/modules/boost.src.js +28 -19
  745. package/modules/broken-axis.js +2 -2
  746. package/modules/broken-axis.src.js +6 -5
  747. package/modules/bullet.js +2 -2
  748. package/modules/bullet.src.js +17 -10
  749. package/modules/coloraxis.js +2 -2
  750. package/modules/coloraxis.src.js +18 -11
  751. package/modules/contour.js +4 -4
  752. package/modules/contour.src.js +19 -12
  753. package/modules/current-date-indicator.js +1 -1
  754. package/modules/current-date-indicator.src.js +1 -1
  755. package/modules/cylinder.js +2 -2
  756. package/modules/cylinder.src.js +9 -10
  757. package/modules/data-sorting.js +1 -1
  758. package/modules/data-sorting.src.js +1 -1
  759. package/modules/data-tools.js +2 -2
  760. package/modules/data-tools.src.js +20 -3
  761. package/modules/data.js +1 -1
  762. package/modules/data.src.js +1 -1
  763. package/modules/datagrouping.js +2 -2
  764. package/modules/datagrouping.src.js +6 -5
  765. package/modules/debugger.js +1 -1
  766. package/modules/debugger.src.js +1 -1
  767. package/modules/dependency-wheel.js +1 -1
  768. package/modules/dependency-wheel.src.js +1 -1
  769. package/modules/dotplot.js +2 -2
  770. package/modules/dotplot.src.js +3 -2
  771. package/modules/drag-panes.js +1 -1
  772. package/modules/drag-panes.src.js +1 -1
  773. package/modules/draggable-points.js +2 -2
  774. package/modules/draggable-points.src.js +2 -3
  775. package/modules/drilldown.js +2 -2
  776. package/modules/drilldown.src.js +5 -4
  777. package/modules/dumbbell.js +2 -2
  778. package/modules/dumbbell.src.js +37 -9
  779. package/modules/export-data.js +2 -2
  780. package/modules/export-data.src.js +17 -16
  781. package/modules/exporting.js +2 -2
  782. package/modules/exporting.src.js +7 -7
  783. package/modules/flowmap.js +2 -2
  784. package/modules/flowmap.src.js +21 -11
  785. package/modules/full-screen.js +1 -1
  786. package/modules/full-screen.src.js +1 -1
  787. package/modules/funnel.js +2 -2
  788. package/modules/funnel.src.js +2 -2
  789. package/modules/funnel3d.js +2 -2
  790. package/modules/funnel3d.src.js +14 -13
  791. package/modules/gantt.js +6 -6
  792. package/modules/gantt.src.js +96 -79
  793. package/modules/geoheatmap.d.ts +0 -12
  794. package/modules/geoheatmap.js +2 -2
  795. package/modules/geoheatmap.src.d.ts +0 -12
  796. package/modules/geoheatmap.src.js +8 -8
  797. package/modules/grid-axis.js +2 -2
  798. package/modules/grid-axis.src.js +4 -4
  799. package/modules/heatmap.d.ts +0 -12
  800. package/modules/heatmap.js +4 -4
  801. package/modules/heatmap.src.d.ts +0 -12
  802. package/modules/heatmap.src.js +40 -33
  803. package/modules/heikinashi.js +1 -1
  804. package/modules/heikinashi.src.js +1 -1
  805. package/modules/histogram-bellcurve.js +1 -1
  806. package/modules/histogram-bellcurve.src.js +15 -3
  807. package/modules/hollowcandlestick.js +1 -1
  808. package/modules/hollowcandlestick.src.js +1 -1
  809. package/modules/item-series.js +2 -2
  810. package/modules/item-series.src.js +18 -6
  811. package/modules/lollipop.js +1 -1
  812. package/modules/lollipop.src.js +1 -1
  813. package/modules/map.d.ts +0 -12
  814. package/modules/map.js +4 -4
  815. package/modules/map.src.d.ts +0 -12
  816. package/modules/map.src.js +83 -68
  817. package/modules/marker-clusters.js +1 -1
  818. package/modules/marker-clusters.src.js +1 -1
  819. package/modules/mouse-wheel-zoom.js +2 -2
  820. package/modules/mouse-wheel-zoom.src.js +3 -3
  821. package/modules/navigator.js +2 -2
  822. package/modules/navigator.src.js +47 -45
  823. package/modules/networkgraph.js +2 -2
  824. package/modules/networkgraph.src.js +31 -21
  825. package/modules/no-data-to-display.js +1 -1
  826. package/modules/no-data-to-display.src.js +1 -1
  827. package/modules/non-cartesian-zoom.js +1 -1
  828. package/modules/non-cartesian-zoom.src.js +1 -1
  829. package/modules/offline-exporting.js +1 -1
  830. package/modules/offline-exporting.src.js +1 -1
  831. package/modules/organization.js +2 -2
  832. package/modules/organization.src.js +3 -2
  833. package/modules/parallel-coordinates.js +2 -2
  834. package/modules/parallel-coordinates.src.js +2 -2
  835. package/modules/pareto.js +1 -1
  836. package/modules/pareto.src.js +1 -1
  837. package/modules/pathfinder.js +2 -2
  838. package/modules/pathfinder.src.js +7 -6
  839. package/modules/pattern-fill.js +2 -2
  840. package/modules/pattern-fill.src.js +7 -5
  841. package/modules/pictorial.js +2 -2
  842. package/modules/pictorial.src.js +10 -6
  843. package/modules/pointandfigure.js +1 -1
  844. package/modules/pointandfigure.src.js +1 -1
  845. package/modules/price-indicator.js +2 -2
  846. package/modules/price-indicator.src.js +5 -4
  847. package/modules/pyramid3d.js +1 -1
  848. package/modules/pyramid3d.src.js +1 -1
  849. package/modules/renko.js +1 -1
  850. package/modules/renko.src.js +1 -1
  851. package/modules/sankey.js +2 -2
  852. package/modules/sankey.src.js +34 -20
  853. package/modules/series-label.js +2 -2
  854. package/modules/series-label.src.js +7 -7
  855. package/modules/series-on-point.js +1 -1
  856. package/modules/series-on-point.src.js +1 -1
  857. package/modules/solid-gauge.js +2 -2
  858. package/modules/solid-gauge.src.js +2 -2
  859. package/modules/sonification.js +2 -2
  860. package/modules/sonification.src.js +19 -19
  861. package/modules/static-scale.js +1 -1
  862. package/modules/static-scale.src.js +1 -1
  863. package/modules/stock-tools.js +3 -3
  864. package/modules/stock-tools.src.js +15 -10
  865. package/modules/stock.js +6 -6
  866. package/modules/stock.src.js +105 -89
  867. package/modules/streamgraph.js +1 -1
  868. package/modules/streamgraph.src.js +1 -1
  869. package/modules/sunburst.js +2 -2
  870. package/modules/sunburst.src.js +41 -26
  871. package/modules/textpath.js +1 -1
  872. package/modules/textpath.src.js +1 -1
  873. package/modules/tiledwebmap.js +2 -2
  874. package/modules/tiledwebmap.src.js +8 -6
  875. package/modules/tilemap.js +2 -2
  876. package/modules/tilemap.src.js +3 -3
  877. package/modules/timeline.js +2 -2
  878. package/modules/timeline.src.js +5 -4
  879. package/modules/treegraph.js +2 -2
  880. package/modules/treegraph.src.js +17 -8
  881. package/modules/treegrid.js +2 -2
  882. package/modules/treegrid.src.js +28 -18
  883. package/modules/treemap.js +2 -2
  884. package/modules/treemap.src.js +35 -22
  885. package/modules/variable-pie.js +2 -2
  886. package/modules/variable-pie.src.js +6 -4
  887. package/modules/variwide.js +2 -2
  888. package/modules/variwide.src.js +2 -2
  889. package/modules/vector.js +1 -1
  890. package/modules/vector.src.js +1 -1
  891. package/modules/venn.js +1 -1
  892. package/modules/venn.src.js +1 -1
  893. package/modules/windbarb.js +2 -2
  894. package/modules/windbarb.src.js +2 -2
  895. package/modules/wordcloud.js +1 -1
  896. package/modules/wordcloud.src.js +1 -1
  897. package/modules/xrange.js +1 -1
  898. package/modules/xrange.src.js +1 -1
  899. package/package.json +2 -3
  900. package/standalone-navigator.js +4 -4
  901. package/standalone-navigator.src.js +355 -249
  902. package/themes/adaptive.js +1 -1
  903. package/themes/adaptive.src.js +1 -1
  904. package/themes/avocado.js +1 -1
  905. package/themes/avocado.src.js +1 -1
  906. package/themes/dark-unica.js +1 -1
  907. package/themes/dark-unica.src.js +1 -1
  908. package/themes/grid-light.js +1 -1
  909. package/themes/grid-light.src.js +1 -1
  910. package/themes/high-contrast.js +1 -1
  911. package/themes/high-contrast.src.js +1 -1
  912. package/themes/sand-signika.js +1 -1
  913. package/themes/sand-signika.src.js +1 -1
  914. package/themes/sunset.js +1 -1
  915. package/themes/sunset.src.js +1 -1
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: LicenseRef-Highcharts
2
2
  /**
3
- * @license Highcharts JS v13.0.1 (2026-08-17)
3
+ * @license Highcharts JS v13.0.2 (2026-08-27)
4
4
  * @module highcharts/standalone-navigator
5
5
  *
6
6
  * Standalone Navigator for Highcharts.
@@ -95,7 +95,7 @@ var Globals;
95
95
  * Constants
96
96
  *
97
97
  * */
98
- Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '13.0.1', Globals.win = (typeof window !== 'undefined' ?
98
+ Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '13.0.2', Globals.win = (typeof window !== 'undefined' ?
99
99
  window :
100
100
  {}), // eslint-disable-line node/no-unsupported-features/es-builtins
101
101
  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 = [
@@ -422,6 +422,29 @@ const ChartDefaults = {
422
422
  * @context Highcharts.Chart
423
423
  * @apioption chart.events.load
424
424
  */
425
+ /**
426
+ * Fires while the chart is panned by mouse drag. Panning must be
427
+ * enabled through [chart.panning](#chart.panning). One parameter,
428
+ * `event`, is passed to the function, containing common event
429
+ * information as well as `event.originalEvent`, the underlying pointer
430
+ * event. Note that the event fires for every mouse move during the
431
+ * drag, not once per gesture.
432
+ *
433
+ * Calling `event.preventDefault()` or returning false prevents the
434
+ * default panning of the axes. In Highcharts Maps, and on ordinal axes
435
+ * in Highcharts Stock, the panning is applied outside the default
436
+ * action and is not prevented.
437
+ *
438
+ * Panning by touch does not fire this event, unless
439
+ * [chart.zooming.singleTouch](#chart.zooming.singleTouch) is enabled and
440
+ * no zoom type is set. Single-finger drags are then handled as mouse
441
+ * drags and fire this event.
442
+ *
443
+ * @type {Highcharts.ChartPanCallbackFunction}
444
+ * @since 7.0.2
445
+ * @context Highcharts.Chart
446
+ * @apioption chart.events.pan
447
+ */
425
448
  /**
426
449
  * Fires when the chart is redrawn, either after a call to
427
450
  * `chart.redraw()` or after an axis, series or point is modified with
@@ -2436,7 +2459,7 @@ function getStyle(el, prop, toInt) {
2436
2459
  const css = win.getComputedStyle(el, void 0); // eslint-disable-line no-undefined
2437
2460
  if (css) {
2438
2461
  style = css.getPropertyValue(prop);
2439
- if (pick(toInt, prop !== 'opacity')) {
2462
+ if (toInt ?? prop !== 'opacity') {
2440
2463
  style = pInt(style);
2441
2464
  }
2442
2465
  }
@@ -2686,7 +2709,7 @@ function merge(extendOrSource, ...sources) {
2686
2709
  function normalizeTickInterval(interval, multiples, magnitude, allowDecimals, hasTickAmount) {
2687
2710
  let i, retInterval = interval;
2688
2711
  // Round to a tenfold of 1, 2, 2.5 or 5
2689
- magnitude = pick(magnitude, getMagnitude(interval));
2712
+ magnitude = (magnitude ?? getMagnitude(interval));
2690
2713
  const normalized = interval / magnitude;
2691
2714
  // Multiples for a linear scale
2692
2715
  if (!multiples) {
@@ -2799,20 +2822,22 @@ function pad(number, length, padder) {
2799
2822
  .replace('-', '')
2800
2823
  .length).join(padder || '0') + number;
2801
2824
  }
2802
- /* eslint-disable jsdoc/check-param-names */
2825
+ /* eslint-disable valid-jsdoc */
2803
2826
  /**
2804
2827
  * Return the first value that is not null or undefined.
2805
2828
  *
2829
+ * @deprecated 13.0.2
2830
+ * Use nullish coalescing (`??`) or explicit fallback logic instead.
2831
+ *
2806
2832
  * @function Highcharts.pick<T>
2807
2833
  *
2808
- * @param {...Array<T|null|undefined>} items
2834
+ * @param {...(T|null|undefined)} args
2809
2835
  * Variable number of arguments to inspect.
2810
2836
  *
2811
2837
  * @return {T}
2812
2838
  * The value of the first argument that is not null or undefined.
2813
2839
  */
2814
- function pick() {
2815
- const args = arguments;
2840
+ function pick(...args) {
2816
2841
  const length = args.length;
2817
2842
  for (let i = 0; i < length; i++) {
2818
2843
  const arg = args[i];
@@ -2821,7 +2846,7 @@ function pick() {
2821
2846
  }
2822
2847
  }
2823
2848
  }
2824
- /* eslint-enable jsdoc/check-param-names */
2849
+ /* eslint-enable valid-jsdoc */
2825
2850
  /**
2826
2851
  * Shortcut for parseInt
2827
2852
  *
@@ -3204,7 +3229,8 @@ function insertItem(item, collection) {
3204
3229
  !collection[i] ||
3205
3230
  // Handle index option, the element to insert has lower index
3206
3231
  (isNumber(indexOption) &&
3207
- indexOption < pick(collection[i].options.index, collection[i]._i)) ||
3232
+ indexOption < (collection[i].options.index ??
3233
+ collection[i]._i)) ||
3208
3234
  // Insert the new item before other internal items
3209
3235
  // (navigator)
3210
3236
  collection[i].options.isInternal) {
@@ -3290,7 +3316,7 @@ const uniqueKey = (function () {
3290
3316
  * State of the serial mode.
3291
3317
  */
3292
3318
  function useSerialIds(mode) {
3293
- return (serialMode = pick(mode, serialMode));
3319
+ return (serialMode = (mode ?? serialMode));
3294
3320
  }
3295
3321
  /* *
3296
3322
  *
@@ -3756,6 +3782,10 @@ const isDateTimeFormatOptions = (obj) => obj.main === void 0;
3756
3782
  *
3757
3783
  * @param {Highcharts.TimeOptions} [options] Time options as defined in
3758
3784
  * [chart.options.time](/highcharts/time).
3785
+ *
3786
+ * @param {Highcharts.LangOptions} [lang]
3787
+ * Language options. When `options.locale` is not set, `lang.locale` is used as
3788
+ * the locale fallback for locale-aware date formatting.
3759
3789
  */
3760
3790
  class TimeBase {
3761
3791
  /* *
@@ -3774,8 +3804,8 @@ class TimeBase {
3774
3804
  };
3775
3805
  this.variableTimezone = false;
3776
3806
  this.Date = TimeBase_win.Date;
3777
- this.update(options);
3778
3807
  this.lang = lang;
3808
+ this.update(options);
3779
3809
  }
3780
3810
  /* *
3781
3811
  *
@@ -3887,7 +3917,9 @@ class TimeBase {
3887
3917
  /**
3888
3918
  * Shorthand to get a cached `Intl.DateTimeFormat` instance.
3889
3919
  */
3890
- dateTimeFormat(options, timestamp, locale = this.options.locale || pageLang) {
3920
+ dateTimeFormat(options, timestamp, locale = (this.options.locale ||
3921
+ this.lang?.locale ||
3922
+ pageLang)) {
3891
3923
  const cacheKey = JSON.stringify(options) + locale;
3892
3924
  if (isString(options)) {
3893
3925
  options = this.str2dtf(options);
@@ -7827,6 +7859,41 @@ const DefaultOptions = {
7827
7859
  * @param {global.Event} event
7828
7860
  * The event that occurred.
7829
7861
  */
7862
+ /**
7863
+ * Gets fired while the chart is panned by mouse drag. Calling
7864
+ * `event.preventDefault()` or returning `false` prevents the default panning
7865
+ * of the axes.
7866
+ *
7867
+ * @callback Highcharts.ChartPanCallbackFunction
7868
+ *
7869
+ * @param {Highcharts.Chart} this
7870
+ * The chart on which the event occurred.
7871
+ *
7872
+ * @param {Highcharts.ChartPanEventObject} event
7873
+ * The event that occurred.
7874
+ */
7875
+ /**
7876
+ * Contains common event information. Through the `originalEvent` property you
7877
+ * can access the pointer event that triggered the panning.
7878
+ *
7879
+ * @interface Highcharts.ChartPanEventObject
7880
+ */ /**
7881
+ * The pointer event that triggered the panning.
7882
+ * @name Highcharts.ChartPanEventObject#originalEvent
7883
+ * @type {Highcharts.PointerEventObject}
7884
+ */ /**
7885
+ * Prevents the default behavior of the event.
7886
+ * @name Highcharts.ChartPanEventObject#preventDefault
7887
+ * @type {Function}
7888
+ */ /**
7889
+ * The event target.
7890
+ * @name Highcharts.ChartPanEventObject#target
7891
+ * @type {Highcharts.Chart}
7892
+ */ /**
7893
+ * The event type.
7894
+ * @name Highcharts.ChartPanEventObject#type
7895
+ * @type {"pan"}
7896
+ */
7830
7897
  /**
7831
7898
  * Fires when the chart is redrawn, either after a call to `chart.redraw()` or
7832
7899
  * after an axis, series or point is modified with the `redraw` option set to
@@ -8202,7 +8269,9 @@ Color.None = new Color(''); // Must be last static for init
8202
8269
  */
8203
8270
  /**
8204
8271
  * A valid color type than can be parsed and handled by Highcharts. It can be a
8205
- * color string, a gradient object, or a pattern object.
8272
+ * color string (including CSS expressions), a gradient object, or a pattern
8273
+ * object. Read more about colors in the [Highcharts
8274
+ * documentation](https://www.highcharts.com/docs/chart-design-and-style/colors).
8206
8275
  *
8207
8276
  * @typedef {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject} Highcharts.ColorType
8208
8277
  */
@@ -8745,7 +8814,8 @@ Fx.timers = [];
8745
8814
  * so it should be moved to the SVGRenderer.
8746
8815
  */
8747
8816
  function setAnimation(animation, chart) {
8748
- chart.renderer.globalAnimation = pick(animation, chart.options.chart.animation, true);
8817
+ chart.renderer.globalAnimation =
8818
+ animation ?? chart.options.chart.animation ?? true;
8749
8819
  }
8750
8820
  /**
8751
8821
  * Get the animation in object form, where a disabled animation is always
@@ -9808,7 +9878,7 @@ function format(str = '', ctx, owner) {
9808
9878
  replacement = `"${replacement}"`;
9809
9879
  }
9810
9880
  }
9811
- str = str.replace(match.find, pick(replacement, ''));
9881
+ str = str.replace(match.find, (replacement ?? ''));
9812
9882
  });
9813
9883
  return hasSub ? format(str, ctx, owner) : str;
9814
9884
  }
@@ -10057,7 +10127,7 @@ var RendererUtilities;
10057
10127
  boxes = boxes.map((box) => ({
10058
10128
  size: box.size,
10059
10129
  targets: [box.target],
10060
- align: pick(box.align, 0.5)
10130
+ align: (box.align ?? 0.5)
10061
10131
  }));
10062
10132
  while (overlapping) {
10063
10133
  // Initial positions: target centered in box
@@ -10215,8 +10285,10 @@ class SVGElement {
10215
10285
  * Property value.
10216
10286
  */
10217
10287
  _defaultGetter(key) {
10218
- let ret = pick(this[key + 'Value'], // Align getter
10219
- this[key], this.element ? this.element.getAttribute(key) : null, 0);
10288
+ let ret = (this[key + 'Value'] ??
10289
+ this[key] ??
10290
+ (this.element ? this.element.getAttribute(key) : null) ??
10291
+ 0);
10220
10292
  if (/^-?[\d\.]+$/.test(ret)) { // Is numerical
10221
10293
  ret = parseFloat(ret);
10222
10294
  }
@@ -10379,7 +10451,7 @@ class SVGElement {
10379
10451
  }
10380
10452
  alignTo = void 0; // Do not use the box
10381
10453
  }
10382
- const alignToBox = pick(alignTo, renderer[alignToKey], renderer),
10454
+ const alignToBox = alignTo ?? renderer[alignToKey] ?? renderer,
10383
10455
  // Default: left align
10384
10456
  x = (alignToBox.x || 0) + (alignOptions.x || 0) +
10385
10457
  ((alignToBox.width || 0) - (alignOptions.width || 0)) *
@@ -10439,7 +10511,7 @@ class SVGElement {
10439
10511
  * Returns the SVGElement for chaining.
10440
10512
  */
10441
10513
  animate(params, options, complete) {
10442
- const animOptions = animObject(pick(options, this.renderer.globalAnimation, true)), deferTime = animOptions.defer;
10514
+ const animOptions = animObject((options ?? this.renderer.globalAnimation ?? true)), deferTime = animOptions.defer;
10443
10515
  // When the page is hidden save resources in the background by not
10444
10516
  // running animation at all (#9749).
10445
10517
  if (SVGElement_doc.hidden) {
@@ -10931,7 +11003,7 @@ class SVGElement {
10931
11003
  .split(','); // Ending comma
10932
11004
  i = v.length;
10933
11005
  while (i--) {
10934
- v[i] = '' + (pInt(v[i]) * pick(strokeWidth, NaN));
11006
+ v[i] = '' + (pInt(v[i]) * (strokeWidth ?? NaN));
10935
11007
  }
10936
11008
  value = v.join(',').replace(/NaN/g, 'none'); // #3226
10937
11009
  this.element.setAttribute('stroke-dasharray', value);
@@ -11071,7 +11143,7 @@ class SVGElement {
11071
11143
  * The bounding box with `x`, `y`, `width` and `height` properties.
11072
11144
  */
11073
11145
  getBBox(reload, rot) {
11074
- 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 &&
11146
+ 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 &&
11075
11147
  SVGElement.prototype.getStyle.call(element, 'font-size')) : (styles.fontSize), cacheKey = this.getBBoxCacheKey([
11076
11148
  renderer.rootFontSize,
11077
11149
  this.textWidth, // #7874, also useHTML
@@ -11597,7 +11669,7 @@ class SVGElement {
11597
11669
  symbolAttr(hash) {
11598
11670
  const wrapper = this;
11599
11671
  SVGElement.symbolCustomAttribs.forEach(function (key) {
11600
- wrapper[key] = pick(hash[key], wrapper[key]);
11672
+ wrapper[key] = (hash[key] ?? wrapper[key]);
11601
11673
  });
11602
11674
  wrapper.attr({
11603
11675
  d: wrapper.renderer.symbols[wrapper.symbolName](wrapper.x, wrapper.y, wrapper.width, wrapper.height, wrapper)
@@ -11637,7 +11709,7 @@ class SVGElement {
11637
11709
  }
11638
11710
  // Replace text content and escape markup
11639
11711
  titleNode.textContent = replaceNested(// Scan #[73]
11640
- pick(value, ''), // #3276, #3895
11712
+ (value ?? ''), // #3276, #3895
11641
11713
  [/<[^>]*>/g, '']).replace(/&lt;/g, '<').replace(/&gt;/g, '>');
11642
11714
  }
11643
11715
  /**
@@ -12415,7 +12487,7 @@ class SVGLabel extends SVG_SVGElement {
12415
12487
  if ((this.textStr && this.bBox.width === 0 && this.bBox.height === 0) || this.rotation) {
12416
12488
  this.updateBoxSize();
12417
12489
  }
12418
- const { padding, height = 0, translateX = 0, translateY = 0, width = 0 } = this, paddingLeft = pick(this.paddingLeft, padding), rotation = rot ?? (this.rotation || 0);
12490
+ const { padding, height = 0, translateX = 0, translateY = 0, width = 0 } = this, paddingLeft = (this.paddingLeft ?? padding), rotation = rot ?? (this.rotation || 0);
12419
12491
  let bBox = {
12420
12492
  width,
12421
12493
  height,
@@ -12468,7 +12540,7 @@ class SVGLabel extends SVG_SVGElement {
12468
12540
  this.attr({
12469
12541
  // Alignment is available now (#3295, 0 not rendered if given
12470
12542
  // as a value)
12471
- text: pick(this.textStr, ''),
12543
+ text: (this.textStr ?? ''),
12472
12544
  x: this.x || 0,
12473
12545
  y: this.y || 0
12474
12546
  });
@@ -12624,8 +12696,8 @@ class SVGLabel extends SVG_SVGElement {
12624
12696
  /** @internal */
12625
12697
  getPaddedWidth() {
12626
12698
  const padding = this.padding;
12627
- const paddingLeft = pick(this.paddingLeft, padding);
12628
- const paddingRight = pick(this.paddingRight, padding);
12699
+ const paddingLeft = (this.paddingLeft ?? padding);
12700
+ const paddingRight = (this.paddingRight ?? padding);
12629
12701
  return ((this.widthSetting || this.bBox.width || 0) +
12630
12702
  paddingLeft +
12631
12703
  paddingRight);
@@ -12726,7 +12798,7 @@ function arc(cx, cy, w, h, options) {
12726
12798
  const arc = [];
12727
12799
  if (options) {
12728
12800
  let start = options.start || 0, end = options.end || 0;
12729
- const rx = pick(options.r, w), ry = pick(options.r, h || w),
12801
+ const rx = (options.r ?? w), ry = (options.r ?? (h || w)),
12730
12802
  // Subtract a small number to prevent cos and sin of start and end
12731
12803
  // from becoming equal on 360 arcs (#1561). See "Arc proximity"
12732
12804
  // tests at samples/unit-tests/svgrenderer/symbol/demo.js
@@ -12736,16 +12808,17 @@ function arc(cx, cy, w, h, options) {
12736
12808
  start = Math.PI / 2;
12737
12809
  end = Math.PI * 2.5 - proximity;
12738
12810
  }
12739
- 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),
12811
+ 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),
12740
12812
  // Proximity takes care of rounding errors around PI (#6971)
12741
- longArc = pick(options.longArc, end - start - Math.PI < proximity ? 0 : 1);
12813
+ longArc = options.longArc ??
12814
+ (end - start - Math.PI < proximity ? 0 : 1);
12742
12815
  let arcSegment = [
12743
12816
  'A', // ArcTo
12744
12817
  rx, // X radius
12745
12818
  ry, // Y radius
12746
12819
  0, // Slanting
12747
12820
  longArc, // Long or short arc
12748
- pick(options.clockwise, 1), // Clockwise
12821
+ (options.clockwise ?? 1), // Clockwise
12749
12822
  // Use a static pixel offset for full circle (#21701)
12750
12823
  cx + (fullCircle ? 0.001 : rx * cosEnd),
12751
12824
  cy + ry * sinEnd
@@ -13276,7 +13349,7 @@ class TextBuilder {
13276
13349
  * @internal
13277
13350
  */
13278
13351
  buildSVG() {
13279
- 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,
13352
+ 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,
13280
13353
  // The buildText code is quite heavy, so if we're not changing
13281
13354
  // something that affects the text, skip it (#6113).
13282
13355
  textCache = [
@@ -13860,7 +13933,7 @@ class SVGRenderer {
13860
13933
  this.url = this.getReferenceURL();
13861
13934
  // Add description
13862
13935
  const desc = this.createElement('desc').add();
13863
- desc.element.appendChild(SVGRenderer_doc.createTextNode('Created with Highcharts 13.0.1'));
13936
+ desc.element.appendChild(SVGRenderer_doc.createTextNode('Created with Highcharts 13.0.2'));
13864
13937
  this.defs = this.createElement('defs').add();
13865
13938
  this.allowHTML = allowHTML;
13866
13939
  this.forExport = forExport;
@@ -14646,7 +14719,7 @@ class SVGRenderer {
14646
14719
  this.attr('height')
14647
14720
  });
14648
14721
  },
14649
- duration: pick(animate, true) ? void 0 : 0
14722
+ duration: (animate ?? true) ? void 0 : 0
14650
14723
  });
14651
14724
  renderer.alignElements();
14652
14725
  }
@@ -14804,8 +14877,8 @@ class SVGRenderer {
14804
14877
  // The image width is not always the same as the symbol width. The
14805
14878
  // image may be centered within the symbol, as is the case when
14806
14879
  // image shapes are used as label backgrounds, for example in flags.
14807
- img.imgwidth = pick(options?.width, symbolSizes[imageSrc]?.width);
14808
- img.imgheight = pick(options?.height, symbolSizes[imageSrc]?.height);
14880
+ img.imgwidth = (options?.width ?? symbolSizes[imageSrc]?.width);
14881
+ img.imgheight = (options?.height ?? symbolSizes[imageSrc]?.height);
14809
14882
  /**
14810
14883
  * Set the size and position
14811
14884
  */
@@ -19284,11 +19357,11 @@ class Tick {
19284
19357
  * @function Highcharts.Tick#addLabel
19285
19358
  */
19286
19359
  addLabel() {
19287
- 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;
19360
+ 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;
19288
19361
  let label = tick.label, dateTimeLabelFormat, dateTimeLabelFormats, i;
19289
19362
  // The context value
19290
19363
  let value = this.parameters.category || (categories ?
19291
- pick(categories[pos], names[pos], pos) :
19364
+ (categories[pos] ?? names[pos] ?? pos) :
19292
19365
  pos);
19293
19366
  if (log && isNumber(value)) {
19294
19367
  value = correctFloat(log.lin2log(value));
@@ -19535,7 +19608,7 @@ class Tick {
19535
19608
  labelOptions.y;
19536
19609
  }
19537
19610
  x = x +
19538
- pick(labelOptions.x, [0, 1, 0, -1][axis.side] * distance) +
19611
+ (labelOptions.x ?? [0, 1, 0, -1][axis.side] * distance) +
19539
19612
  labelOffsetCorrection +
19540
19613
  rotCorr.x -
19541
19614
  (tickmarkOffset && horiz ?
@@ -19590,7 +19663,7 @@ class Tick {
19590
19663
  * @function Highcharts.Tick#handleOverflow
19591
19664
  */
19592
19665
  handleOverflow(xy) {
19593
- 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 = {};
19666
+ 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 = {};
19594
19667
  let modifiedSlotWidth = slotWidth, goRight = 1, leftPos, rightPos, textWidth;
19595
19668
  // Check if the label overshoots the chart spacing box. If it does, move
19596
19669
  // it. If it now overshoots the slotWidth, add ellipsis.
@@ -19657,9 +19730,8 @@ class Tick {
19657
19730
  * @param {number} [opacity]
19658
19731
  */
19659
19732
  render(index, old, opacity) {
19660
- 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;
19661
- const labelOpacity = pick(opacity, tick.label?.newOpacity, // #15528
19662
- 1);
19733
+ 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;
19734
+ const labelOpacity = (opacity ?? tick.label?.newOpacity ?? 1);
19663
19735
  // Anything that is not between `axis.pos` and `axis.pos + axis.length`
19664
19736
  // should not be visible (#20166). The `correctFloat` is for reversed
19665
19737
  // axes in Safari.
@@ -19687,7 +19759,7 @@ class Tick {
19687
19759
  * @param {number} opacity The opacity of the grid line
19688
19760
  */
19689
19761
  renderGridLine(old, opacity) {
19690
- 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;
19762
+ 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;
19691
19763
  let gridLine = tick.gridLine, gridLinePath, gridLineWidth = options.gridLineWidth, gridLineColor = options.gridLineColor, dashStyle = options.gridLineDashStyle;
19692
19764
  if (tick.type === 'minor') {
19693
19765
  gridLineWidth = options.minorGridLineWidth;
@@ -19743,7 +19815,7 @@ class Tick {
19743
19815
  * @param {number} opacity The opacity of the mark
19744
19816
  */
19745
19817
  renderMark(xy, opacity) {
19746
- 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
19818
+ 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
19747
19819
  tickColor = options[type !== 'minor' ? 'tickColor' : 'minorTickColor'];
19748
19820
  let mark = tick.mark;
19749
19821
  const isNewMark = !mark;
@@ -19788,7 +19860,7 @@ class Tick {
19788
19860
  * @param {number} index The index of the tick
19789
19861
  */
19790
19862
  renderLabel(xy, old, opacity, index) {
19791
- 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;
19863
+ 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;
19792
19864
  let show = true;
19793
19865
  if (label && isNumber(x)) {
19794
19866
  label.xy = xy = tick.getLabelPosition(x, y, label, horiz, labelOptions, tickmarkOffset, index, step);
@@ -19893,12 +19965,7 @@ const { deg2rad: Axis_deg2rad } = Core_Globals;
19893
19965
 
19894
19966
 
19895
19967
 
19896
- const getNormalizedTickInterval = (axis, tickInterval) => normalizeTickInterval(tickInterval, void 0, void 0, pick(axis.options.allowDecimals,
19897
- // If the tick interval is greater than 0.5, avoid decimals, as
19898
- // linear axes are often used to render discrete values (#3363). If
19899
- // a tick amount is set, allow decimals by default, as it increases
19900
- // the chances for a good fit.
19901
- tickInterval < 0.5 || axis.tickAmount !== void 0), !!axis.tickAmount);
19968
+ const getNormalizedTickInterval = (axis, tickInterval) => normalizeTickInterval(tickInterval, void 0, void 0, (axis.options.allowDecimals ?? (tickInterval < 0.5 || axis.tickAmount !== void 0)), !!axis.tickAmount);
19902
19969
  extend(Axis_defaultOptions, { xAxis, yAxis: merge(xAxis, yAxis) });
19903
19970
  /* *
19904
19971
  *
@@ -20006,7 +20073,7 @@ class Axis {
20006
20073
  axis.coll = coll;
20007
20074
  fireEvent(this, 'init', { userOptions: userOptions });
20008
20075
  // Needed in setOptions
20009
- axis.opposite = pick(userOptions.opposite, axis.opposite);
20076
+ axis.opposite = (userOptions.opposite ?? axis.opposite);
20010
20077
  /**
20011
20078
  * The side on which the axis is rendered. 0 is top, 1 is right, 2
20012
20079
  * is bottom and 3 is left.
@@ -20014,10 +20081,9 @@ class Axis {
20014
20081
  * @name Highcharts.Axis#side
20015
20082
  * @type {number}
20016
20083
  */
20017
- axis.side = pick(userOptions.side, axis.side, (horiz ?
20084
+ axis.side = (userOptions.side ?? axis.side ?? (horiz ?
20018
20085
  (axis.opposite ? 0 : 2) : // Top : bottom
20019
- (axis.opposite ? 1 : 3)) // Right : left
20020
- );
20086
+ (axis.opposite ? 1 : 3)));
20021
20087
  /**
20022
20088
  * Current options for the axis after merge of defaults and user's
20023
20089
  * options.
@@ -20046,7 +20112,7 @@ class Axis {
20046
20112
  * @name Highcharts.Axis#reversed
20047
20113
  * @type {boolean}
20048
20114
  */
20049
- axis.reversed = pick(options.reversed, axis.reversed);
20115
+ axis.reversed = (options.reversed ?? axis.reversed);
20050
20116
  axis.visible = options.visible;
20051
20117
  axis.zoomEnabled = options.zoomEnabled;
20052
20118
  // Initial categories
@@ -20134,7 +20200,7 @@ class Axis {
20134
20200
  * @name Highcharts.Axis#crosshair
20135
20201
  * @type {boolean|Highcharts.AxisCrosshairOptions}
20136
20202
  */
20137
- const crosshair = pick(options.crosshair, splat(chart.options.tooltip.crosshairs)[isXAxis ? 0 : 1]);
20203
+ const crosshair = options.crosshair ?? splat(chart.options.tooltip.crosshairs)[isXAxis ? 0 : 1];
20138
20204
  axis.crosshair = crosshair === true ? {} : crosshair;
20139
20205
  // Register. Don't add it again on Axis.update().
20140
20206
  if (chart.axes.indexOf(axis) === -1) { //
@@ -20318,8 +20384,8 @@ class Axis {
20318
20384
  seriesDataMax = xExtremes.max;
20319
20385
  }
20320
20386
  if (xData.length) {
20321
- axis.dataMin = Math.min(pick(axis.dataMin, seriesDataMin), seriesDataMin);
20322
- axis.dataMax = Math.max(pick(axis.dataMax, seriesDataMax), seriesDataMax);
20387
+ axis.dataMin = Math.min((axis.dataMin ?? seriesDataMin), seriesDataMin);
20388
+ axis.dataMax = Math.max((axis.dataMax ?? seriesDataMax), seriesDataMax);
20323
20389
  }
20324
20390
  }
20325
20391
  // Get dataMin and dataMax for Y axes, as well as handle
@@ -20334,11 +20400,11 @@ class Axis {
20334
20400
  // doesn't have active y data, we continue with nulls
20335
20401
  if (isNumber(dataExtremes.dataMin)) {
20336
20402
  seriesDataMin = dataExtremes.dataMin;
20337
- axis.dataMin = Math.min(pick(axis.dataMin, seriesDataMin), seriesDataMin);
20403
+ axis.dataMin = Math.min((axis.dataMin ?? seriesDataMin), seriesDataMin);
20338
20404
  }
20339
20405
  if (isNumber(dataExtremes.dataMax)) {
20340
20406
  seriesDataMax = dataExtremes.dataMax;
20341
- axis.dataMax = Math.max(pick(axis.dataMax, seriesDataMax), seriesDataMax);
20407
+ axis.dataMax = Math.max((axis.dataMax ?? seriesDataMax), seriesDataMax);
20342
20408
  }
20343
20409
  // Adjust to threshold
20344
20410
  if (defined(threshold)) {
@@ -20493,7 +20559,7 @@ class Axis {
20493
20559
  translatedValue
20494
20560
  };
20495
20561
  fireEvent(this, 'getPlotLinePath', evt, function (e) {
20496
- translatedValue = pick(translatedValue, axis.translate(value, void 0, void 0, old));
20562
+ translatedValue = translatedValue ?? axis.translate(value, void 0, void 0, old);
20497
20563
  // Keep the translated value within sane bounds, and avoid Infinity
20498
20564
  // to fail the isNumber test (#7709).
20499
20565
  translatedValue = clamp(translatedValue, -1e9, 1e9);
@@ -20582,7 +20648,7 @@ class Axis {
20582
20648
  getMinorTickInterval() {
20583
20649
  const { minorTicks, minorTickInterval } = this.options;
20584
20650
  if (minorTicks === true) {
20585
- return pick(minorTickInterval, 'auto');
20651
+ return (minorTickInterval ?? 'auto');
20586
20652
  }
20587
20653
  if (minorTicks === false) {
20588
20654
  return;
@@ -20865,7 +20931,9 @@ class Axis {
20865
20931
  const seriesPointRange = hasCategories ?
20866
20932
  1 :
20867
20933
  (isXAxis ?
20868
- pick(series.options.pointRange, closestPointRange, 0) :
20934
+ (series.options.pointRange ??
20935
+ closestPointRange ??
20936
+ 0) :
20869
20937
  (axis.axisPointRange || 0)), // #2806
20870
20938
  pointPlacement = series.options.pointPlacement;
20871
20939
  pointRange = Math.max(pointRange, seriesPointRange);
@@ -20949,14 +21017,16 @@ class Axis {
20949
21017
  this.getTickAmount();
20950
21018
  }
20951
21019
  // Min or max set either by zooming/setExtremes or initial options
20952
- hardMin = pick(axis.userMin, time.parse(options.min));
20953
- hardMax = pick(axis.userMax, time.parse(options.max));
21020
+ hardMin = (axis.userMin ?? time.parse(options.min));
21021
+ hardMax = (axis.userMax ?? time.parse(options.max));
20954
21022
  // Linked axis gets the extremes from the parent axis
20955
21023
  if (linkedParent) {
20956
21024
  axis.linkedParent = linkedParent;
20957
21025
  linkedParentExtremes = linkedParent.getExtremes();
20958
- axis.min = pick(linkedParentExtremes.min, linkedParentExtremes.dataMin);
20959
- axis.max = pick(linkedParentExtremes.max, linkedParentExtremes.dataMax);
21026
+ axis.min =
21027
+ linkedParentExtremes.min ?? linkedParentExtremes.dataMin;
21028
+ axis.max =
21029
+ linkedParentExtremes.max ?? linkedParentExtremes.dataMax;
20960
21030
  if (this.type !== linkedParent.type) {
20961
21031
  // Can't link axes of different type
20962
21032
  error(11, true, chart);
@@ -20978,14 +21048,14 @@ class Axis {
20978
21048
  maxPadding = 0;
20979
21049
  }
20980
21050
  }
20981
- axis.min = pick(hardMin, thresholdMin, dataMin);
20982
- axis.max = pick(hardMax, thresholdMax, dataMax);
21051
+ axis.min = (hardMin ?? thresholdMin ?? dataMin);
21052
+ axis.max = (hardMax ?? thresholdMax ?? dataMax);
20983
21053
  }
20984
21054
  if (isNumber(axis.max) && isNumber(axis.min)) {
20985
21055
  if (logarithmic) {
20986
21056
  if (axis.positiveValuesOnly &&
20987
21057
  !secondPass &&
20988
- Math.min(axis.min, pick(dataMin, axis.min)) <= 0) { // #978
21058
+ Math.min(axis.min, (dataMin ?? axis.min)) <= 0) { // #978
20989
21059
  // Can't plot negative values on log axis
20990
21060
  error(10, true, chart);
20991
21061
  }
@@ -21091,16 +21161,13 @@ class Axis {
21091
21161
  axis.tickInterval = tickIntervalOption = linkedParent.tickInterval;
21092
21162
  }
21093
21163
  else {
21094
- axis.tickInterval = pick(tickIntervalOption, this.tickAmount ?
21164
+ axis.tickInterval = tickIntervalOption ?? (this.tickAmount ?
21095
21165
  range / Math.max(this.tickAmount - 1, 1) :
21096
- void 0,
21097
- // For categorized axis, 1 is default, for linear axis use
21098
- // tickPix
21099
- categories ?
21100
- 1 :
21101
- // Don't let it be more than the data range
21102
- range * tickPixelIntervalOption /
21103
- Math.max(axis.len, tickPixelIntervalOption));
21166
+ categories ?
21167
+ 1 :
21168
+ // Don't let it be more than the data range
21169
+ range * tickPixelIntervalOption /
21170
+ Math.max(axis.len, tickPixelIntervalOption));
21104
21171
  }
21105
21172
  // Now we're finished detecting min and max, crop and group series data.
21106
21173
  // This is in turn needed in order to find tick positions in ordinal
@@ -21130,12 +21197,9 @@ class Axis {
21130
21197
  }
21131
21198
  // Before normalizing the tick interval, handle minimum tick interval.
21132
21199
  // This applies only if tickInterval is not defined.
21133
- const minTickInterval = pick(options.minTickInterval,
21134
- // In datetime axes, don't go below the data interval, except when
21135
- // there are scatter-like series involved (#13369).
21136
- dateTime &&
21137
- !axis.series.some((s) => !s.sorted) ?
21138
- axis.closestPointRange : 0);
21200
+ const minTickInterval = options.minTickInterval ?? (dateTime && !axis.series.some((s) => !s.sorted) ?
21201
+ axis.closestPointRange :
21202
+ 0);
21139
21203
  if (!tickIntervalOption &&
21140
21204
  minTickInterval &&
21141
21205
  axis.tickInterval < minTickInterval) {
@@ -21465,7 +21529,7 @@ class Axis {
21465
21529
  * @function Highcharts.Axis#adjustTickAmount
21466
21530
  */
21467
21531
  adjustTickAmount() {
21468
- const axis = this, { finalTickAmt, max, min, options, tickPositions, tickAmount, thresholdAlignment } = axis, currentTickAmount = tickPositions?.length, threshold = pick(axis.threshold, axis.softThreshold ? 0 : null);
21532
+ const axis = this, { finalTickAmt, max, min, options, tickPositions, tickAmount, thresholdAlignment } = axis, currentTickAmount = tickPositions?.length, threshold = axis.threshold ?? (axis.softThreshold ? 0 : null);
21469
21533
  let len, i, tickInterval = axis.tickInterval, thresholdTickIndex;
21470
21534
  const
21471
21535
  // Extend the tickPositions by appending a position
@@ -21701,7 +21765,8 @@ class Axis {
21701
21765
  offsets = options.offsets || [0, 0, 0, 0], horiz = this.horiz,
21702
21766
  // Check for percentage based input values. Rounding fixes problems
21703
21767
  // with column overflow and plot line filtering (#4898, #4899)
21704
- 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));
21768
+ width = this.width = Math.round(relativeLength((options.width ?? chart.plotWidth - offsets[3] + offsets[1]), chart.plotWidth)), height = this.height = Math.round(relativeLength((options.height ??
21769
+ 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));
21705
21770
  // Expose basic values to use in Series object and navigator
21706
21771
  this.bottom = chart.chartHeight - height - top;
21707
21772
  this.right = chart.chartWidth - width - left;
@@ -21812,9 +21877,7 @@ class Axis {
21812
21877
  * An array of tickLength and tickWidth
21813
21878
  */
21814
21879
  tickSize(prefix) {
21815
- const options = this.options, tickWidth = pick(options[prefix === 'tick' ? 'tickWidth' : 'minorTickWidth'],
21816
- // Default to 1 on linear and datetime X axes
21817
- prefix === 'tick' && this.isXAxis && !this.categories ? 1 : 0);
21880
+ const options = this.options, tickWidth = options[prefix === 'tick' ? 'tickWidth' : 'minorTickWidth'] ?? (prefix === 'tick' && this.isXAxis && !this.categories ? 1 : 0);
21818
21881
  let tickLength = options[prefix === 'tick' ? 'tickLength' : 'minorTickLength'], tickSize;
21819
21882
  if (tickWidth && tickLength) {
21820
21883
  // Negate the length
@@ -21901,7 +21964,7 @@ class Axis {
21901
21964
  newTickInterval = getStep(lineHeight * 0.75);
21902
21965
  }
21903
21966
  this.autoRotation = autoRotation;
21904
- this.labelRotation = pick(rotation, isNumber(rotationOption) ? rotationOption : 0);
21967
+ this.labelRotation = rotation ?? (isNumber(rotationOption) ? rotationOption : 0);
21905
21968
  return labelOptions.step ? tickInterval : newTickInterval;
21906
21969
  }
21907
21970
  /**
@@ -22253,7 +22316,7 @@ class Axis {
22253
22316
  titleOffsetOption = axisTitleOptions.offset;
22254
22317
  titleMargin = defined(titleOffsetOption) ?
22255
22318
  0 :
22256
- pick(axisTitleOptions.margin, horiz ? 5 : 10);
22319
+ axisTitleOptions.margin ?? (horiz ? 5 : 10);
22257
22320
  }
22258
22321
  }
22259
22322
  // Render the axis line
@@ -22764,9 +22827,9 @@ class Axis {
22764
22827
  }
22765
22828
  else if (defined(point)) {
22766
22829
  // #3834
22767
- pos = pick(this.coll !== 'colorAxis' ?
22768
- point.crosshairPos : // 3D axis extension
22769
- null, this.isXAxis ?
22830
+ pos = (this.coll !== 'colorAxis' ?
22831
+ point.crosshairPos :
22832
+ null) ?? (this.isXAxis ?
22770
22833
  point.plotX :
22771
22834
  this.len - point.plotY);
22772
22835
  }
@@ -22775,7 +22838,7 @@ class Axis {
22775
22838
  // Value, only used on radial
22776
22839
  value: point && (this.isXAxis ?
22777
22840
  point.x :
22778
- pick(point.stackY, point.y)),
22841
+ (point.stackY ?? point.y ?? void 0)),
22779
22842
  translatedValue: pos
22780
22843
  };
22781
22844
  if (chart.polar) {
@@ -22808,7 +22871,7 @@ class Axis {
22808
22871
  (categorized ? 'category ' : 'thin ') +
22809
22872
  (options.className || ''))
22810
22873
  .attr({
22811
- zIndex: pick(options.zIndex, 2)
22874
+ zIndex: (options.zIndex ?? 2)
22812
22875
  })
22813
22876
  .clip(options.clip === false ?
22814
22877
  void 0 :
@@ -22823,7 +22886,7 @@ class Axis {
22823
22886
  // eslint-disable-next-line max-len
22824
22887
  'var(--highcharts-highlight-color-20)').setOpacity(0.25).get() :
22825
22888
  'var(--highcharts-neutral-color-20)'),
22826
- 'stroke-width': pick(options.width, 1)
22889
+ 'stroke-width': (options.width ?? 1)
22827
22890
  }).css({
22828
22891
  'pointer-events': 'none'
22829
22892
  });
@@ -22889,7 +22952,7 @@ class Axis {
22889
22952
  this.destroy(true);
22890
22953
  this.init(chart, options);
22891
22954
  chart.isDirtyBox = true;
22892
- if (pick(redraw, true)) {
22955
+ if (redraw ?? true) {
22893
22956
  chart.redraw();
22894
22957
  }
22895
22958
  }
@@ -22919,7 +22982,7 @@ class Axis {
22919
22982
  chart.orderItems(coll);
22920
22983
  this.destroy();
22921
22984
  chart.isDirtyBox = true;
22922
- if (pick(redraw, true)) {
22985
+ if (redraw ?? true) {
22923
22986
  chart.redraw();
22924
22987
  }
22925
22988
  }
@@ -23575,8 +23638,10 @@ var LogarithmicAxis;
23575
23638
  tickIntervalOption, tickPixelIntervalOption = options.tickPixelInterval / (minor ? 5 : 1), totalPixelLength = minor ?
23576
23639
  axisLength / axis.tickPositions.length :
23577
23640
  axisLength;
23578
- interval = pick(filteredTickIntervalOption, log.minorAutoInterval, (realMax - realMin) *
23579
- tickPixelIntervalOption / (totalPixelLength || 1));
23641
+ interval = filteredTickIntervalOption ??
23642
+ log.minorAutoInterval ??
23643
+ (realMax - realMin) * tickPixelIntervalOption /
23644
+ (totalPixelLength || 1);
23580
23645
  interval = normalizeTickInterval(interval);
23581
23646
  positions = axis.getLinearTickPositions(interval, realMin, realMax).map(log.log2lin);
23582
23647
  if (!minor) {
@@ -24005,7 +24070,8 @@ class PlotLineOrBand {
24005
24070
  if (!chart.styledMode) {
24006
24071
  if (isLine) {
24007
24072
  attribs.stroke = color || 'var(--highcharts-neutral-color-40)';
24008
- attribs['stroke-width'] = pick(options.width, 1);
24073
+ attribs['stroke-width'] =
24074
+ options.width ?? 1;
24009
24075
  if (options.dashStyle) {
24010
24076
  attribs.dashstyle = options.dashStyle;
24011
24077
  }
@@ -25137,7 +25203,8 @@ class Tooltip {
25137
25203
  'highcharts-label',
25138
25204
  isHeader && 'highcharts-tooltip-header',
25139
25205
  isSplit ? 'highcharts-tooltip-box' : 'highcharts-tooltip',
25140
- !isHeader && 'highcharts-color-' + pick(point.colorIndex, series.colorIndex),
25206
+ !isHeader &&
25207
+ 'highcharts-color-' + (point.colorIndex ?? series.colorIndex),
25141
25208
  seriesOptions?.className
25142
25209
  ].filter(isString).join(' ');
25143
25210
  }
@@ -25322,7 +25389,8 @@ class Tooltip {
25322
25389
  }
25323
25390
  // The far side is right or bottom
25324
25391
  const preferFarSide = !this.followPointer &&
25325
- pick(point.ttBelow, polar ? false : !inverted === flipped), // #4984
25392
+ (point.ttBelow ??
25393
+ (polar ? false : !inverted === flipped)), // #4984
25326
25394
  /*
25327
25395
  * Handle the preferred dimension. When the preferred dimension is
25328
25396
  * tooltip on top or bottom of the point, it will look for space
@@ -25449,7 +25517,7 @@ class Tooltip {
25449
25517
  const tooltip = this;
25450
25518
  // Disallow duplicate timers (#1728, #1766)
25451
25519
  clearTimeouts(this);
25452
- delay = pick(delay, this.options.hideDelay);
25520
+ delay = (delay ?? this.options.hideDelay);
25453
25521
  if (!this.isHidden) {
25454
25522
  this.hideTimer = syncTimeout(function () {
25455
25523
  const label = tooltip.getLabel();
@@ -25552,7 +25620,9 @@ class Tooltip {
25552
25620
  * Split tooltip does not support outside in the first iteration. Should
25553
25621
  * not be too complicated to implement.
25554
25622
  */
25555
- this.outside = pick(options.outside, Boolean(chart.scrollablePixelsX || chart.scrollablePixelsY));
25623
+ this.outside =
25624
+ options.outside ??
25625
+ Boolean(chart.scrollablePixelsX || chart.scrollablePixelsY);
25556
25626
  }
25557
25627
  shouldStickOnContact(pointerEvent) {
25558
25628
  return !!(!this.followPointer &&
@@ -25632,7 +25702,7 @@ class Tooltip {
25632
25702
  point.points = void 0;
25633
25703
  // Register the current series
25634
25704
  const currentSeries = point.series;
25635
- this.distance = pick(currentSeries.tooltipOptions.distance, 16);
25705
+ this.distance = (currentSeries.tooltipOptions.distance ?? 16);
25636
25706
  // Update the inner HTML
25637
25707
  if (text === false) {
25638
25708
  this.hide();
@@ -25905,7 +25975,7 @@ class Tooltip {
25905
25975
  anchorY,
25906
25976
  boxWidth,
25907
25977
  point,
25908
- rank: pick(boxPosition.rank, isHeader ? 1 : 0),
25978
+ rank: boxPosition.rank ?? (isHeader ? 1 : 0),
25909
25979
  size,
25910
25980
  target: boxPosition.y,
25911
25981
  tt,
@@ -27250,7 +27320,7 @@ class Point {
27250
27320
  */
27251
27321
  select(selected, accumulate) {
27252
27322
  const point = this, series = point.series, chart = series.chart;
27253
- selected = pick(selected, !point.selected);
27323
+ selected = (selected ?? !point.selected);
27254
27324
  this.selectedStaging = selected;
27255
27325
  // Fire the event with the default handler
27256
27326
  point.firePointEvent(selected ? 'select' : 'unselect', { accumulate: accumulate }, function () {
@@ -27501,7 +27571,7 @@ class Point {
27501
27571
  });
27502
27572
  halo.attr({
27503
27573
  'class': 'highcharts-halo highcharts-color-' +
27504
- pick(point.colorIndex, series.colorIndex) +
27574
+ (point.colorIndex ?? series.colorIndex) +
27505
27575
  (point.className ? ' ' + point.className : ''),
27506
27576
  'visibility': markerVisibility,
27507
27577
  'zIndex': -1 // #4929, #8276
@@ -28234,7 +28304,7 @@ class Pointer {
28234
28304
  const hoverPoints = [], useExisting = !!(isDirectTouch && existingHoverPoint), filter = function (s) {
28235
28305
  return (s.visible &&
28236
28306
  !(!shared && s.directTouch) && // #3821
28237
- pick(s.options.enableMouseTracking, true));
28307
+ (s.options.enableMouseTracking ?? true));
28238
28308
  };
28239
28309
  let hoverSeries = existingHoverSeries,
28240
28310
  // Which series to look in for the hover point
@@ -28420,8 +28490,8 @@ class Pointer {
28420
28490
  const ePos = (touches ?
28421
28491
  touches.length ?
28422
28492
  touches.item(0) :
28423
- (pick(// #13534
28424
- touches.changedTouches, e.changedTouches))[0] :
28493
+ (touches.changedTouches ??
28494
+ e.changedTouches)[0] :
28425
28495
  e);
28426
28496
  // Get mouse position
28427
28497
  if (!chartPosition) {
@@ -28495,7 +28565,7 @@ class Pointer {
28495
28565
  * @function Highcharts.Pointer#onContainerMouseLeave
28496
28566
  */
28497
28567
  onContainerMouseLeave(e) {
28498
- const { pointer } = Pointer_charts[pick(Pointer.hoverChartIndex, -1)] || {};
28568
+ const { pointer } = Pointer_charts[(Pointer.hoverChartIndex ?? -1)] || {};
28499
28569
  e = this.normalize(e);
28500
28570
  this.onContainerMouseMove(e);
28501
28571
  // #4886, MS Touch end fires mouseleave but with no related target
@@ -28595,7 +28665,7 @@ class Pointer {
28595
28665
  if (e?.touches && this.hasPinchMoved) {
28596
28666
  e?.preventDefault?.();
28597
28667
  }
28598
- Pointer_charts[pick(Pointer.hoverChartIndex, -1)]
28668
+ Pointer_charts[(Pointer.hoverChartIndex ?? -1)]
28599
28669
  ?.pointer
28600
28670
  ?.drop(e);
28601
28671
  }
@@ -29102,7 +29172,7 @@ class Pointer {
29102
29172
  */
29103
29173
  setHoverChartIndex(e) {
29104
29174
  const chart = this.chart;
29105
- const hoverChart = Core_Globals.charts[pick(Pointer.hoverChartIndex, -1)];
29175
+ const hoverChart = Core_Globals.charts[(Pointer.hoverChartIndex ?? -1)];
29106
29176
  if (hoverChart &&
29107
29177
  hoverChart !== chart) {
29108
29178
  const relatedTargetObj = { relatedTarget: chart.container };
@@ -29148,7 +29218,7 @@ class Pointer {
29148
29218
  Math.pow(pinchDown[0].chartY - e.chartY, 2)) >= 16 :
29149
29219
  false;
29150
29220
  }
29151
- if (pick(hasMoved, true)) {
29221
+ if (hasMoved ?? true) {
29152
29222
  this.pinch(e);
29153
29223
  }
29154
29224
  }
@@ -29191,7 +29261,7 @@ class Pointer {
29191
29261
  let zoomType = chart.zooming.type || '', zoomX, zoomY;
29192
29262
  // Look for the pinchType option
29193
29263
  if (/touch/.test(e.type)) {
29194
- zoomType = pick(chart.zooming.pinchType, zoomType);
29264
+ zoomType = (chart.zooming.pinchType ?? zoomType);
29195
29265
  }
29196
29266
  this.zoomX = zoomX = /x/.test(zoomType);
29197
29267
  this.zoomY = zoomY = /y/.test(zoomType);
@@ -29965,7 +30035,7 @@ var LegendSymbol;
29965
30035
  // Draw the marker
29966
30036
  if (markerOptions && markerOptions.enabled !== false && symbolWidth) {
29967
30037
  // Do not allow the marker to be larger than the symbolHeight
29968
- let radius = Math.min(pick(markerOptions.radius, generalRadius), generalRadius);
30038
+ let radius = Math.min((markerOptions.radius ?? generalRadius), generalRadius);
29969
30039
  // Restrict symbol markers size
29970
30040
  if (symbol.indexOf('url') === 0) {
29971
30041
  markerOptions = merge(markerOptions, {
@@ -32986,7 +33056,7 @@ class Series {
32986
33056
  if (chartSeries.length) {
32987
33057
  lastSeries = chartSeries[chartSeries.length - 1];
32988
33058
  }
32989
- series._i = pick(lastSeries?._i, -1) + 1;
33059
+ series._i = (lastSeries?._i ?? -1) + 1;
32990
33060
  series.opacity = series.options.opacity;
32991
33061
  // Insert the series and re-order all series above the insertion
32992
33062
  // point.
@@ -33033,7 +33103,7 @@ class Series {
33033
33103
  // Apply if the series xAxis or yAxis option matches
33034
33104
  // the number of the axis, or if undefined, use the
33035
33105
  // first axis
33036
- if (pick(seriesOptions[coll], 0) === axis.index ||
33106
+ if ((seriesOptions[coll] ?? 0) === axis.index ||
33037
33107
  (typeof seriesOptions[coll] !==
33038
33108
  'undefined' &&
33039
33109
  seriesOptions[coll] === axisOptions.id)) {
@@ -33076,8 +33146,12 @@ class Series {
33076
33146
  * @function Highcharts.Series#hasMarkerChanged
33077
33147
  */
33078
33148
  hasMarkerChanged(options, oldOptions) {
33079
- const marker = options.marker, oldMarker = oldOptions.marker || {};
33080
- return marker && ((oldMarker.enabled && !marker.enabled) ||
33149
+ const marker = options.marker, oldMarker = oldOptions.marker;
33150
+ // Note that `marker` holds the full, merged object including
33151
+ // `plotOptions`, while `oldMarker` is the user-defined series-level
33152
+ // options only. We may need to refactor that in the future if more
33153
+ // issues like #24057 arise.
33154
+ return marker && oldMarker && ((oldMarker.enabled && !marker.enabled) ||
33081
33155
  oldMarker.symbol !== marker.symbol || // #10870, #15946
33082
33156
  oldMarker.height !== marker.height || // #16274
33083
33157
  oldMarker.width !== marker.width // #16274
@@ -33096,7 +33170,8 @@ class Series {
33096
33170
  time.parse(options.pointStart) ??
33097
33171
  0;
33098
33172
  let pointInterval;
33099
- this.pointInterval = pointInterval = pick(this.pointInterval, options.pointInterval, 1);
33173
+ this.pointInterval = pointInterval =
33174
+ this.pointInterval ?? options.pointInterval ?? 1;
33100
33175
  if (relativeXValue && isNumber(x)) {
33101
33176
  pointInterval *= x;
33102
33177
  }
@@ -33168,9 +33243,13 @@ class Series {
33168
33243
  );
33169
33244
  // When shared tooltip, stickyTracking is true by default,
33170
33245
  // unless user says otherwise.
33171
- this.stickyTracking = pick(seriesUserOptions.stickyTracking, userPlotOptionsType.stickyTracking, userPlotOptionsSeries.stickyTracking, (this.tooltipOptions.shared && !this.noSharedTooltip ?
33172
- true :
33173
- options.stickyTracking));
33246
+ this.stickyTracking =
33247
+ seriesUserOptions.stickyTracking ??
33248
+ userPlotOptionsType.stickyTracking ??
33249
+ userPlotOptionsSeries.stickyTracking ??
33250
+ (this.tooltipOptions.shared && !this.noSharedTooltip ?
33251
+ true :
33252
+ options.stickyTracking);
33174
33253
  // Delete marker object if not allowed (#1125)
33175
33254
  if (typeOptions.marker === null) {
33176
33255
  delete options.marker;
@@ -33248,7 +33327,9 @@ class Series {
33248
33327
  if (!value) {
33249
33328
  // Pick up either the colorIndex option, or the series.colorIndex
33250
33329
  // after Series.update()
33251
- setting = pick(prop === 'color' ? this.options.colorIndex : void 0, this[indexName]);
33330
+ setting = prop === 'color' ?
33331
+ (this.options.colorIndex ?? this[indexName]) :
33332
+ this[indexName];
33252
33333
  if (defined(setting)) { // After Series.update()
33253
33334
  i = setting;
33254
33335
  }
@@ -34275,7 +34356,9 @@ class Series {
34275
34356
  yValue = stackValues[1];
34276
34357
  if (lowValue === stackThreshold &&
34277
34358
  stackIndicator.key === stacks[xValue].base) {
34278
- lowValue = pick(isNumber(threshold) ? threshold : yAxis.min);
34359
+ lowValue = isNumber(threshold) ?
34360
+ threshold :
34361
+ yAxis.min;
34279
34362
  }
34280
34363
  // #1200, #1232
34281
34364
  if (yAxis.positiveValuesOnly &&
@@ -34283,7 +34366,7 @@ class Series {
34283
34366
  lowValue <= 0) {
34284
34367
  lowValue = void 0;
34285
34368
  }
34286
- point.total = point.stackTotal = pick(stackItem.total);
34369
+ point.total = point.stackTotal = stackItem.total ?? void 0;
34287
34370
  point.percentage = defined(point.y) && stackItem.total ?
34288
34371
  (point.y / stackItem.total * 100) : void 0;
34289
34372
  point.stackY = yValue;
@@ -34533,7 +34616,9 @@ class Series {
34533
34616
  // Only draw the point if y is defined
34534
34617
  if (shouldDrawMarker) {
34535
34618
  // Shortcuts
34536
- const symbol = pick(pointMarkerOptions.symbol, series.symbol, 'rect');
34619
+ const symbol = pointMarkerOptions.symbol ??
34620
+ series.symbol ??
34621
+ 'rect';
34537
34622
  markerAttribs = series.markerAttribs(point, point.selected ? 'select' : '');
34538
34623
  const isInside = point.isInside !== false;
34539
34624
  if (!graphic &&
@@ -34801,7 +34886,7 @@ class Series {
34801
34886
  // Reset
34802
34887
  zones.forEach((zone) => {
34803
34888
  zone.lineClip = [];
34804
- zone.translated = clamp(axis.toPixels(pick(zone.value, axisMax), true) || 0, 0, len);
34889
+ zone.translated = clamp(axis.toPixels((zone.value ?? axisMax), true) || 0, 0, len);
34805
34890
  });
34806
34891
  // The use of the Color Threshold assumes there are no gaps so it is
34807
34892
  // safe to hide the original graph and area unless it is not
@@ -35457,7 +35542,7 @@ class Series {
35457
35542
  const series = this, seriesOptions = series.options, { chart, data, dataTable: table, xAxis } = series, names = xAxis?.hasNames && xAxis.names, dataOptions = seriesOptions.data, xData = series.getColumn('x');
35458
35543
  let isInTheMiddle, i;
35459
35544
  // Optional redraw, defaults to true
35460
- redraw = pick(redraw, true);
35545
+ redraw = (redraw ?? true);
35461
35546
  // Get options and push the point to xData, yData and series.options. In
35462
35547
  // series.generatePoints the Point instance will be created on demand
35463
35548
  // and pushed to the series.data array.
@@ -35568,7 +35653,7 @@ class Series {
35568
35653
  }
35569
35654
  };
35570
35655
  setAnimation(animation, chart);
35571
- redraw = pick(redraw, true);
35656
+ redraw = (redraw ?? true);
35572
35657
  // Fire the event with a default handler of removing the point
35573
35658
  if (point) {
35574
35659
  point.firePointEvent('remove', null, remove);
@@ -35611,7 +35696,7 @@ class Series {
35611
35696
  // Redraw
35612
35697
  chart.isDirtyLegend = chart.isDirtyBox = true;
35613
35698
  chart.linkSeries(keepEvents);
35614
- if (pick(redraw, true)) {
35699
+ if (redraw ?? true) {
35615
35700
  chart.redraw(animation);
35616
35701
  }
35617
35702
  }
@@ -35828,7 +35913,7 @@ class Series {
35828
35913
  series.isDirtyData = true;
35829
35914
  }
35830
35915
  fireEvent(this, 'afterUpdate');
35831
- if (pick(redraw, true)) {
35916
+ if (redraw ?? true) {
35832
35917
  chart.redraw(keepPoints ? void 0 : false);
35833
35918
  }
35834
35919
  }
@@ -35845,12 +35930,12 @@ class Series {
35845
35930
  * @internal
35846
35931
  */
35847
35932
  hasOptionChanged(optionName) {
35848
- 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]);
35933
+ const chart = this.chart, option = this.options[optionName], plotOptions = chart.options.plotOptions, oldOption = this.userOptions[optionName], plotOptionsOption = (plotOptions?.[this.type]?.[optionName] ?? plotOptions?.series?.[optionName]);
35849
35934
  // Check if `plotOptions` are defined already, #19203
35850
35935
  if (oldOption && !defined(plotOptionsOption)) {
35851
35936
  return option !== oldOption;
35852
35937
  }
35853
- return option !== pick(plotOptionsOption, option);
35938
+ return option !== (plotOptionsOption ?? option);
35854
35939
  }
35855
35940
  /**
35856
35941
  * Runs on mouse over the series graphical items.
@@ -35924,7 +36009,8 @@ class Series {
35924
36009
  const series = this, { graph, options } = series, { inactiveOtherPoints, states: stateOptions = {} } = options,
35925
36010
  // By default a quick animation to hover/inactive,
35926
36011
  // slower to un-hover
35927
- stateAnimation = pick(stateOptions[state || 'normal']?.animation, series.chart.options.chart.animation);
36012
+ stateAnimation = stateOptions[state || 'normal']?.animation ??
36013
+ series.chart.options.chart.animation;
35928
36014
  let { lineWidth, opacity } = options;
35929
36015
  state = state || '';
35930
36016
  if (series.state !== state) {
@@ -36810,7 +36896,7 @@ class Legend {
36810
36896
  * @param {Highcharts.LegendOptions} options
36811
36897
  */
36812
36898
  setOptions(options) {
36813
- const padding = pick(options.padding, 8);
36899
+ const padding = (options.padding ?? 8);
36814
36900
  /**
36815
36901
  * Legend options.
36816
36902
  *
@@ -36827,7 +36913,7 @@ class Legend {
36827
36913
  this.itemMarginBottom = options.itemMarginBottom;
36828
36914
  this.padding = padding;
36829
36915
  this.initialItemY = padding - 5; // 5 is pixels above the text
36830
- this.symbolWidth = pick(options.symbolWidth, 16);
36916
+ this.symbolWidth = (options.symbolWidth ?? 16);
36831
36917
  this.pages = [];
36832
36918
  this.proximate = options.layout === 'proximate' && !this.chart.inverted;
36833
36919
  // #12705: baseline has to be reset on every update
@@ -36861,7 +36947,7 @@ class Legend {
36861
36947
  }
36862
36948
  this.destroy();
36863
36949
  chart.isDirtyLegend = chart.isDirtyBox = true;
36864
- if (pick(redraw, true)) {
36950
+ if (redraw ?? true) {
36865
36951
  chart.redraw();
36866
36952
  }
36867
36953
  fireEvent(this, 'afterUpdate', { redraw });
@@ -37099,7 +37185,7 @@ class Legend {
37099
37185
  * The item to render.
37100
37186
  */
37101
37187
  renderItem(item) {
37102
- 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 ?
37188
+ 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 ?
37103
37189
  item.series :
37104
37190
  item, seriesOptions = series.options, showCheckbox = (!!legend.createCheckboxForItem &&
37105
37191
  seriesOptions &&
@@ -37145,9 +37231,11 @@ class Legend {
37145
37231
  legend.fontMetrics.f + 3 + legend.itemMarginTop;
37146
37232
  label.attr('y', legend.baseline);
37147
37233
  legend.symbolHeight =
37148
- pick(options.symbolHeight, legend.fontMetrics.f);
37234
+ (options.symbolHeight ?? legend.fontMetrics.f);
37149
37235
  if (options.squareSymbol) {
37150
- legend.symbolWidth = pick(options.symbolWidth, Math.max(legend.symbolHeight, 16));
37236
+ legend.symbolWidth =
37237
+ options.symbolWidth ??
37238
+ Math.max(legend.symbolHeight, 16);
37151
37239
  itemExtraWidth = legend.symbolWidth + symbolPadding +
37152
37240
  itemDistance + (showCheckbox ? 20 : 0);
37153
37241
  if (ltr) {
@@ -37199,7 +37287,7 @@ class Legend {
37199
37287
  * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item
37200
37288
  */
37201
37289
  layoutItem(item) {
37202
- 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 &&
37290
+ 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 &&
37203
37291
  this.totalItemWidth > maxLegendWidth) ?
37204
37292
  this.maxItemWidth :
37205
37293
  item.itemWidth, legendItem = item.legendItem || {};
@@ -37253,7 +37341,9 @@ class Legend {
37253
37341
  const seriesOptions = series?.options;
37254
37342
  // Handle showInLegend. If the series is linked to another series,
37255
37343
  // defaults to false.
37256
- if (series && pick(seriesOptions.showInLegend, !defined(seriesOptions.linkedTo) ? void 0 : false, true)) {
37344
+ if (series &&
37345
+ (seriesOptions.showInLegend ??
37346
+ (!defined(seriesOptions.linkedTo)))) {
37257
37347
  // Use points or series for the legend item depending on
37258
37348
  // legendType
37259
37349
  allItems = allItems.concat(series.legendItem?.labels ||
@@ -37535,7 +37625,7 @@ class Legend {
37535
37625
  * @function Highcharts.Legend#handleOverflow
37536
37626
  */
37537
37627
  handleOverflow(legendHeight) {
37538
- 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) {
37628
+ 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) {
37539
37629
  if (typeof height === 'number') {
37540
37630
  clipRect.attr({
37541
37631
  height: height
@@ -37581,7 +37671,7 @@ class Legend {
37581
37671
  navOptions.enabled !== false) {
37582
37672
  this.clipHeight = clipHeight =
37583
37673
  Math.max(spaceHeight - 20 - this.titleHeight - padding, 0);
37584
- this.currentPage = pick(this.currentPage, 1);
37674
+ this.currentPage = (this.currentPage ?? 1);
37585
37675
  this.fullHeight = legendHeight;
37586
37676
  // Fill pages with Y positions so that the top of each a legend item
37587
37677
  // defines the scroll top for each page (#2098)
@@ -37741,7 +37831,7 @@ class Legend {
37741
37831
  this.currentPage = currentPage;
37742
37832
  this.positionCheckboxes();
37743
37833
  // Fire event after scroll animation is complete
37744
- const animOptions = animObject(pick(animation, chart.renderer.globalAnimation, true));
37834
+ const animOptions = animObject((animation ?? chart.renderer.globalAnimation ?? true));
37745
37835
  syncTimeout(() => {
37746
37836
  fireEvent(this, 'afterScroll', { currentPage });
37747
37837
  }, animOptions.duration);
@@ -38182,7 +38272,7 @@ class Chart {
38182
38272
  */
38183
38273
  static chart(a, b, c) {
38184
38274
  const chart = new Chart(a, b, c);
38185
- return chart.promise || chart;
38275
+ return chart.promise ?? chart;
38186
38276
  }
38187
38277
  // Implementation
38188
38278
  constructor(a,
@@ -38223,10 +38313,10 @@ class Chart {
38223
38313
  const chart = this, options = chart.options.chart, zooming = options.zooming;
38224
38314
  chart.zooming = {
38225
38315
  ...zooming,
38226
- type: pick(options.zoomType, zooming.type),
38227
- key: pick(options.zoomKey, zooming.key),
38228
- pinchType: pick(options.pinchType, zooming.pinchType),
38229
- singleTouch: pick(options.zoomBySingleTouch, zooming.singleTouch, false),
38316
+ type: (options.zoomType ?? zooming.type),
38317
+ key: (options.zoomKey ?? zooming.key),
38318
+ pinchType: (options.pinchType ?? zooming.pinchType),
38319
+ singleTouch: options.zoomBySingleTouch ?? zooming.singleTouch ?? false,
38230
38320
  resetButton: merge(zooming.resetButton, options.resetZoomButton)
38231
38321
  };
38232
38322
  }
@@ -38778,7 +38868,7 @@ class Chart {
38778
38868
  // inspect the generated series.points.
38779
38869
  series.getPointsCollection()
38780
38870
  .forEach((point) => {
38781
- if (pick(point.selectedStaging, point.selected)) {
38871
+ if (point.selectedStaging ?? point.selected) {
38782
38872
  acc.push(point);
38783
38873
  }
38784
38874
  });
@@ -39216,7 +39306,7 @@ class Chart {
39216
39306
  chartWidth = chart.chartWidth;
39217
39307
  if (!chart.styledMode) {
39218
39308
  css(container, {
39219
- width: pick(optionsChart.style?.width, chartWidth + 'px')
39309
+ width: (optionsChart.style?.width ?? chartWidth + 'px')
39220
39310
  });
39221
39311
  }
39222
39312
  }
@@ -39859,7 +39949,7 @@ class Chart {
39859
39949
  const mockTick = new Axis_Tick(axis, 0, '', true), label = mockTick.createLabel('x', labels);
39860
39950
  mockTick.destroy();
39861
39951
  if (label &&
39862
- pick(labels.reserveSpace, !isNumber(options.crossing))) {
39952
+ (labels.reserveSpace ?? !isNumber(options.crossing))) {
39863
39953
  expectedSpace = label.getBBox().height +
39864
39954
  labels.distance +
39865
39955
  Math.max(isNumber(offset) ? offset : 0, 0);
@@ -40194,7 +40284,7 @@ class Chart {
40194
40284
  const chart = this;
40195
40285
  let series;
40196
40286
  if (options) { // <- not necessary
40197
- redraw = pick(redraw, true); // Defaults to true
40287
+ redraw = (redraw ?? true); // Defaults to true
40198
40288
  fireEvent(chart, 'addSeries', { options: options }, function () {
40199
40289
  series = chart.initSeries(options);
40200
40290
  chart.isDirtyLegend = true;
@@ -40285,7 +40375,7 @@ class Chart {
40285
40375
  */
40286
40376
  createAxis(coll, options) {
40287
40377
  const axis = new Axis_Axis(this, options.axis, coll);
40288
- if (pick(options.redraw, true)) {
40378
+ if (options.redraw ?? true) {
40289
40379
  this.redraw(options.animation);
40290
40380
  }
40291
40381
  return axis;
@@ -40333,7 +40423,7 @@ class Chart {
40333
40423
  }
40334
40424
  loadingDiv.className = 'highcharts-loading';
40335
40425
  // Update text
40336
- HTML_AST.setElementHTML(loadingSpan, pick(str, options.lang.loading, ''));
40426
+ HTML_AST.setElementHTML(loadingSpan, (str ?? options.lang.loading ?? ''));
40337
40427
  if (!chart.styledMode) {
40338
40428
  // Update visuals
40339
40429
  css(loadingDiv, extend(loadingStyle, { zIndex: 10 }));
@@ -40571,7 +40661,7 @@ class Chart {
40571
40661
  }
40572
40662
  // No match by id found, match by index instead
40573
40663
  if (!item && chart[coll]) {
40574
- item = chart[coll][pick(newOptions.index, i)];
40664
+ item = chart[coll][(newOptions.index ?? i)];
40575
40665
  // Check if we grabbed an item with an existing but
40576
40666
  // different id (#13541). Check that the item in this
40577
40667
  // position is not internal (navigator).
@@ -40784,7 +40874,7 @@ class Chart {
40784
40874
  fireEvent(this, 'transform', params);
40785
40875
  let hasZoomed = params.hasZoomed || false, displayButton, isAnyAxisPanning;
40786
40876
  for (const axis of axes) {
40787
- 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),
40877
+ 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),
40788
40878
  // If fingers pinched very close on this axis, treat as pan
40789
40879
  scale = Math.abs(toLength) < 10 ?
40790
40880
  1 :
@@ -41648,7 +41738,7 @@ class StackItem {
41648
41738
  r: options.borderRadius || 0,
41649
41739
  text: str,
41650
41740
  // Set default padding to 5 as it is in dataLabels #12308
41651
- padding: pick(options.padding, 5),
41741
+ padding: (options.padding ?? 5),
41652
41742
  visibility: 'hidden' // Hidden until setOffset is called
41653
41743
  };
41654
41744
  if (!chart.styledMode) {
@@ -41682,7 +41772,7 @@ class StackItem {
41682
41772
  }), { verticalAlign } = alignOptions;
41683
41773
  if (label && stackBox) {
41684
41774
  const labelBox = label.getBBox(void 0, 0), padding = label.padding;
41685
- let isJustify = pick(options.overflow, 'justify') === 'justify', visible;
41775
+ let isJustify = (options.overflow ?? 'justify') === 'justify', visible;
41686
41776
  // Reset alignOptions property after justify #12337
41687
41777
  alignOptions.x = options.x || 0;
41688
41778
  alignOptions.y = options.y || 0;
@@ -41719,7 +41809,7 @@ class StackItem {
41719
41809
  rotationOriginY: labelBox.height / 2
41720
41810
  });
41721
41811
  // Check if the dataLabel should be visible.
41722
- if (pick(!isJustify && options.crop, true)) {
41812
+ if (((!isJustify && options.crop) ?? true)) {
41723
41813
  visible =
41724
41814
  isNumber(label.x) &&
41725
41815
  isNumber(label.y) &&
@@ -41753,7 +41843,7 @@ class StackItem {
41753
41843
  getStackBox(stackBoxProps) {
41754
41844
  const stackItem = this, axis = this.axis, chart = axis.chart, { boxTop, defaultX, xOffset, width, boxBottom } = stackBoxProps, totalStackValue = axis.stacking.usePercentage ?
41755
41845
  100 :
41756
- 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 ||
41846
+ (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 ||
41757
41847
  (isNumber(axis.min) &&
41758
41848
  axis.logarithmic &&
41759
41849
  axis.logarithmic.lin2log(axis.min)) ||
@@ -41866,7 +41956,7 @@ function chartGetStacks() {
41866
41956
  if (series.options.stacking && series.reserveSpace()) {
41867
41957
  series.stackKey = [
41868
41958
  series.type,
41869
- pick(series.options.stack, ''),
41959
+ (series.options.stack ?? ''),
41870
41960
  inverted ? xAxisOptions.top : xAxisOptions.left,
41871
41961
  inverted ? xAxisOptions.height : xAxisOptions.width
41872
41962
  ].join(',');
@@ -42029,7 +42119,7 @@ function seriesSetStackedPoints(axis, stackingParam) {
42029
42119
  stack = stacks[key][x];
42030
42120
  if (y !== null) {
42031
42121
  stack.points[pointKey] = stack.points[series.index] = [
42032
- pick(stack.cumulative, stackThreshold)
42122
+ (stack.cumulative ?? stackThreshold)
42033
42123
  ];
42034
42124
  // Record the base of the stack
42035
42125
  if (!defined(stack.cumulative)) {
@@ -42077,7 +42167,7 @@ function seriesSetStackedPoints(axis, stackingParam) {
42077
42167
  stack.cumulative = (total || 1) - 1;
42078
42168
  }
42079
42169
  else {
42080
- stack.cumulative = correctFloat(pick(stack.cumulative, stackThreshold) + yNumber);
42170
+ stack.cumulative = correctFloat((stack.cumulative ?? stackThreshold) + yNumber);
42081
42171
  }
42082
42172
  stack.total = total;
42083
42173
  if (y !== null) {
@@ -43092,8 +43182,7 @@ class AreaSeries extends AreaSeries_LineSeries {
43092
43182
  */
43093
43183
  getGraphPath(points) {
43094
43184
  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
43095
- yAxis.getThreshold(options.threshold)), connectNulls = pick(// #10574
43096
- options.connectNulls, stacking === 'percent'),
43185
+ yAxis.getThreshold(options.threshold)), connectNulls = (options.connectNulls ?? stacking === 'percent'),
43097
43186
  // To display null points in underlying stacked series, this
43098
43187
  // series graph must be broken, and the area also fall down to
43099
43188
  // fill the gap left by the null point. #2069
@@ -43146,9 +43235,9 @@ class AreaSeries extends AreaSeries_LineSeries {
43146
43235
  // Treat points with undefined plotY as null (e.g. non-positive
43147
43236
  // values on logarithmic axis, #18422)
43148
43237
  isNull = points[i].isNull || !defined(points[i].plotY);
43149
- plotX = pick(points[i].rectPlotX, points[i].plotX);
43238
+ plotX = (points[i].rectPlotX ?? points[i].plotX);
43150
43239
  yBottom = stacking ?
43151
- pick(points[i].yBottom, translatedThreshold) :
43240
+ (points[i].yBottom ?? translatedThreshold) :
43152
43241
  translatedThreshold;
43153
43242
  if (!isNull || connectNulls) {
43154
43243
  if (!connectNulls) {
@@ -43486,10 +43575,10 @@ class SplineSeries extends SplineSeries_LineSeries {
43486
43575
  }
43487
43576
  const ret = [
43488
43577
  'C',
43489
- pick(lastPoint.rightContX, lastPoint.plotX, 0),
43490
- pick(lastPoint.rightContY, lastPoint.plotY, 0),
43491
- pick(leftContX, plotX, 0),
43492
- pick(leftContY, plotY, 0),
43578
+ (lastPoint.rightContX ?? lastPoint.plotX ?? 0),
43579
+ (lastPoint.rightContY ?? lastPoint.plotY ?? 0),
43580
+ (leftContX ?? plotX ?? 0),
43581
+ (leftContY ?? plotY ?? 0),
43493
43582
  plotX,
43494
43583
  plotY
43495
43584
  ];
@@ -44458,7 +44547,7 @@ class ColumnSeries extends Series_Series {
44458
44547
  xAxis.tickInterval ||
44459
44548
  1), // #2610
44460
44549
  xAxis.len // #1535
44461
- ), 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,
44550
+ ), 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,
44462
44551
  // #1251, #3737
44463
44552
  colIndex = (series.columnIndex || 0) + (reverseStacks ? 1 : 0), pointXOffset = pointPadding +
44464
44553
  (groupPadding +
@@ -45022,7 +45111,7 @@ var DataLabel;
45022
45111
  // that parts of the align box is inside the plot area
45023
45112
  // (#12370). When stacking, it is always inside regardless
45024
45113
  // of the option (#15148).
45025
- pick(options.inside, !!this.options.stacking) &&
45114
+ (options.inside ?? !!this.options.stacking) &&
45026
45115
  alignTo &&
45027
45116
  chart.isInsidePlot(plotX, inverted ?
45028
45117
  alignTo.x + 1 :
@@ -45125,8 +45214,8 @@ var DataLabel;
45125
45214
  // zIndex: 20
45126
45215
  // }).add();
45127
45216
  // chart.renderer.circle(
45128
- // chart.plotLeft + pick(dataLabel.alignAttr.x, 0),
45129
- // chart.plotTop + pick(dataLabel.alignAttr.y, 0),
45217
+ // chart.plotLeft + (dataLabel.alignAttr.x ?? 0),
45218
+ // chart.plotTop + (dataLabel.alignAttr.y ?? 0),
45130
45219
  // 2
45131
45220
  // ).attr({
45132
45221
  // fill: 'red',
@@ -45309,7 +45398,7 @@ var DataLabel;
45309
45398
  if (labelEnabled) {
45310
45399
  // Create individual options structure that can be
45311
45400
  // extended without affecting others
45312
- formatString = pick(labelOptions[point.formatPrefix + 'Format'], labelOptions.format);
45401
+ formatString = (labelOptions[point.formatPrefix + 'Format'] ?? labelOptions.format);
45313
45402
  labelText = defined(formatString) ?
45314
45403
  DataLabel_format(formatString, point, chart) :
45315
45404
  (labelOptions[point.formatPrefix + 'Formatter'] ||
@@ -45317,7 +45406,9 @@ var DataLabel;
45317
45406
  rotation = labelOptions.rotation;
45318
45407
  if (!chart.styledMode) {
45319
45408
  // Determine the color
45320
- style.color = pick(labelOptions.color, style.color, isString(series.color) ? series.color : void 0, 'var(--highcharts-neutral-color-100)');
45409
+ style.color = (isString(labelOptions.color) ?
45410
+ labelOptions.color :
45411
+ void 0) ?? style.color ?? (isString(series.color) ? series.color : void 0) ?? 'var(--highcharts-neutral-color-100)';
45321
45412
  // Get automated contrast color
45322
45413
  if (style.color === 'contrast') {
45323
45414
  if (backgroundColor !== 'none') {
@@ -46118,14 +46209,15 @@ class ScatterSeries extends ScatterSeries_LineSeries {
46118
46209
  return rand - Math.floor(rand);
46119
46210
  }
46120
46211
  if (jitter) {
46121
- this.points.forEach(function (point, i) {
46122
- ['x', 'y'].forEach(function (dim, j) {
46212
+ this.points.forEach((point, i) => {
46213
+ ['x', 'y'].forEach((dim, j) => {
46123
46214
  if (jitter[dim] && !point.isNull) {
46124
- const plotProp = `plot${dim.toUpperCase()}`, axis = series[`${dim}Axis`], translatedJitter = jitter[dim] *
46125
- axis.transA;
46215
+ const plotProp = `plot${dim.toUpperCase()}`, axis = series[`${dim}Axis`];
46126
46216
  if (axis && !axis.logarithmic) {
46127
46217
  // Identify the outer bounds of the jitter range
46128
- const min = Math.max(0, (point[plotProp] || 0) - translatedJitter), max = Math.min(axis.len, (point[plotProp] || 0) + translatedJitter);
46218
+ // (#25054)
46219
+ const translatedJitter = jitter[dim] * axis.transA *
46220
+ (axis.reversed ? -1 : 1), min = (point[plotProp] || 0) - translatedJitter, max = (point[plotProp] || 0) + translatedJitter;
46129
46221
  // Find a random position within this range
46130
46222
  point[plotProp] = min +
46131
46223
  (max - min) * unrandom(i + j * len);
@@ -46230,11 +46322,13 @@ var CenteredUtilities;
46230
46322
  innerSize = parseFloat(innerSize);
46231
46323
  }
46232
46324
  const positions = [
46233
- pick(centerOption?.[0], '50%'),
46234
- pick(centerOption?.[1], '50%'),
46325
+ (centerOption?.[0] ?? '50%'),
46326
+ (centerOption?.[1] ?? '50%'),
46235
46327
  // Prevent from negative values
46236
- pick(size && size < 0 ? void 0 : options.size, '100%'),
46237
- pick(innerSize && innerSize < 0 ? void 0 : options.innerSize || 0, '0%')
46328
+ ((size && size < 0 ? void 0 : options.size) ?? '100%'),
46329
+ ((innerSize && innerSize < 0 ?
46330
+ void 0 :
46331
+ options.innerSize || 0) ?? '0%')
46238
46332
  ];
46239
46333
  for (i = 0; i < 4; ++i) {
46240
46334
  value = positions[i];
@@ -46436,7 +46530,7 @@ class PiePoint extends Series_Point {
46436
46530
  const series = this.series, chart = series.chart;
46437
46531
  setAnimation(animation, chart);
46438
46532
  // Redraw is true by default
46439
- redraw = pick(redraw, true);
46533
+ redraw = (redraw ?? true);
46440
46534
  this.sliced = this.options.sliced = sliced ?? !this.sliced;
46441
46535
  // Update options.data
46442
46536
  if (series.options.data) {
@@ -47241,7 +47335,8 @@ class PieSeries extends Series_Series {
47241
47335
  // Start values
47242
47336
  graphic.attr({
47243
47337
  // Animate from inner radius (#779)
47244
- r: pick(point.startR, (series.center && series.center[3] / 2)),
47338
+ r: point.startR ??
47339
+ (series.center && series.center[3] / 2),
47245
47340
  start: startAngleRad,
47246
47341
  end: startAngleRad
47247
47342
  });
@@ -47882,7 +47977,7 @@ var PieDataLabel_ColumnDataLabel;
47882
47977
  labelPosition.computed.x = x;
47883
47978
  labelPosition.computed.y = y - topOffset;
47884
47979
  // Detect overflowing data labels
47885
- if (pick(dataLabelOptions.crop, true)) {
47980
+ if (dataLabelOptions.crop ?? true) {
47886
47981
  dataLabelWidth = dataLabel.getBBox().width;
47887
47982
  let sideOverflow;
47888
47983
  // Overflow left
@@ -48398,7 +48493,10 @@ function OverlappingDataLabels_onChartRender() {
48398
48493
  if (point.visible) {
48399
48494
  (point.dataLabels || []).forEach((label) => {
48400
48495
  const options = label.options || {};
48401
- label.labelrank = pick(options.labelrank, point.labelrank, point.shapeArgs?.height); // #4118
48496
+ label.labelrank =
48497
+ options.labelrank ??
48498
+ point.labelrank ??
48499
+ point.shapeArgs?.height; // #4118
48402
48500
  // #21725: Sync target positions for generic overlap
48403
48501
  // checking. During animations (e.g., toggling a
48404
48502
  // point), DOM positions may overlap. We force
@@ -48887,10 +48985,12 @@ var Responsive;
48887
48985
  */
48888
48986
  function matchResponsiveRule(rule, matches) {
48889
48987
  const condition = rule.condition, fn = condition.callback || function () {
48890
- return (this.chartWidth <= pick(condition.maxWidth, Number.MAX_VALUE) &&
48891
- this.chartHeight <= pick(condition.maxHeight, Number.MAX_VALUE) &&
48892
- this.chartWidth >= pick(condition.minWidth, 0) &&
48893
- this.chartHeight >= pick(condition.minHeight, 0));
48988
+ return (this.chartWidth <=
48989
+ (condition.maxWidth ?? Number.MAX_VALUE) &&
48990
+ this.chartHeight <=
48991
+ (condition.maxHeight ?? Number.MAX_VALUE) &&
48992
+ this.chartWidth >= (condition.minWidth ?? 0) &&
48993
+ this.chartHeight >= (condition.minHeight ?? 0));
48894
48994
  };
48895
48995
  if (fn.call(this, this)) {
48896
48996
  matches.push(rule._id);
@@ -49104,7 +49204,7 @@ var Responsive;
49104
49204
  ;// ./code/es-modules/masters/highcharts.src.js
49105
49205
  // SPDX-License-Identifier: LicenseRef-Highcharts
49106
49206
  /**
49107
- * @license Highcharts JS v13.0.1 (2026-08-17)
49207
+ * @license Highcharts JS v13.0.2 (2026-08-27)
49108
49208
  * @module highcharts/highcharts
49109
49209
  *
49110
49210
  * (c) 2009-2026 Highsoft AS
@@ -49181,7 +49281,12 @@ G.SVGElement = SVG_SVGElement;
49181
49281
  G.SVGRenderer = SVG_SVGRenderer;
49182
49282
  G.Templating = Core_Templating;
49183
49283
  G.Tick = Axis_Tick;
49184
- G.Time = Core_Time;
49284
+ G.Time = class extends Core_Time {
49285
+ constructor(options, lang) {
49286
+ const defaultOptions = Defaults.getOptions();
49287
+ super(options ?? defaultOptions.time, lang ?? defaultOptions.lang);
49288
+ }
49289
+ };
49185
49290
  G.Tooltip = Core_Tooltip;
49186
49291
  // Utilities
49187
49292
  G.addEvent = addEvent;
@@ -49353,7 +49458,7 @@ function onChartAfterSetChartSize() {
49353
49458
  navigator.top = this.plotTop + scrollButtonSize;
49354
49459
  }
49355
49460
  else {
49356
- navigator.left = pick(xAxis.left, this.plotLeft + scrollButtonSize);
49461
+ navigator.left = (xAxis.left ?? this.plotLeft + scrollButtonSize);
49357
49462
  navigator.top = navigator.navigatorOptions.top ||
49358
49463
  this.chartHeight -
49359
49464
  navigator.height -
@@ -49369,7 +49474,7 @@ function onChartAfterSetChartSize() {
49369
49474
  legendOptions.enabled &&
49370
49475
  !legendOptions.floating) ?
49371
49476
  legend.legendHeight +
49372
- pick(legendOptions.margin, 10) :
49477
+ (legendOptions.margin ?? 10) :
49373
49478
  0) -
49374
49479
  (this.titleOffset ? this.titleOffset[2] : 0);
49375
49480
  }
@@ -49394,7 +49499,7 @@ function onChartAfterUpdate(event) {
49394
49499
  (this.options.navigator.enabled ||
49395
49500
  this.options.scrollbar.enabled)) {
49396
49501
  this.scroller = this.navigator = new NavigatorConstructor(this);
49397
- if (pick(event.redraw, true)) {
49502
+ if (event.redraw ?? true) {
49398
49503
  this.redraw(event.animation); // #7067
49399
49504
  }
49400
49505
  }
@@ -49572,7 +49677,7 @@ class NavigatorAxisAdditions {
49572
49677
  */
49573
49678
  toFixedRange(pxMin, pxMax, fixedMin, fixedMax) {
49574
49679
  const axis = this.axis, halfPointRange = (axis.pointRange || 0) / 2;
49575
- let newMin = pick(fixedMin, axis.translate(pxMin, true, !axis.horiz)), newMax = pick(fixedMax, axis.translate(pxMax, true, !axis.horiz));
49680
+ let newMin = fixedMin ?? axis.translate(pxMin, true, !axis.horiz), newMax = fixedMax ?? axis.translate(pxMax, true, !axis.horiz);
49576
49681
  // Add/remove half point range to/from the extremes (#1172)
49577
49682
  if (!defined(fixedMin)) {
49578
49683
  newMin = correctFloat(newMin + halfPointRange);
@@ -50347,8 +50452,8 @@ var ScrollbarAxis;
50347
50452
  ScrollbarAxis.compose = compose;
50348
50453
  /** @internal */
50349
50454
  function getExtremes(axis) {
50350
- const axisMin = pick(axis.options?.min, axis.min);
50351
- const axisMax = pick(axis.options?.max, axis.max);
50455
+ const axisMin = (axis.options?.min ?? axis.min);
50456
+ const axisMax = (axis.options?.max ?? axis.max);
50352
50457
  return {
50353
50458
  axisMin,
50354
50459
  axisMax,
@@ -50887,7 +50992,7 @@ class Scrollbar {
50887
50992
  buttonToMaxClick(e) {
50888
50993
  const scroller = this;
50889
50994
  const range = ((scroller.to - scroller.from) *
50890
- pick(scroller.options.step, 0.2));
50995
+ (scroller.options.step ?? 0.2));
50891
50996
  scroller.updatePosition(scroller.from + range, scroller.to + range);
50892
50997
  fireEvent(scroller, 'changed', {
50893
50998
  from: scroller.from,
@@ -50899,7 +51004,7 @@ class Scrollbar {
50899
51004
  buttonToMinClick(e) {
50900
51005
  const scroller = this;
50901
51006
  const range = correctFloat(scroller.to - scroller.from) *
50902
- pick(scroller.options.step, 0.2);
51007
+ (scroller.options.step ?? 0.2);
50903
51008
  scroller.updatePosition(correctFloat(scroller.from - range), correctFloat(scroller.to - range));
50904
51009
  fireEvent(scroller, 'changed', {
50905
51010
  from: scroller.from,
@@ -51031,10 +51136,11 @@ class Scrollbar {
51031
51136
  scroller.renderer = renderer;
51032
51137
  scroller.userOptions = options;
51033
51138
  scroller.options = merge(Scrollbar_ScrollbarDefaults, Scrollbar_defaultOptions.scrollbar, options);
51034
- scroller.options.margin = pick(scroller.options.margin, 10);
51139
+ scroller.options.margin = (scroller.options.margin ?? 10);
51035
51140
  scroller.chart = chart;
51036
51141
  // Backward compatibility
51037
- scroller.size = pick(scroller.options.size, scroller.options.height);
51142
+ scroller.size = scroller.options.size ??
51143
+ scroller.options.height;
51038
51144
  // Init
51039
51145
  if (options.enabled) {
51040
51146
  scroller.render();
@@ -51324,9 +51430,9 @@ class Scrollbar {
51324
51430
  * @function Highcharts.Scrollbar#shouldUpdateExtremes
51325
51431
  */
51326
51432
  shouldUpdateExtremes(eventType) {
51327
- return (pick(this.options.liveRedraw, Core_Globals.svg &&
51433
+ return ((this.options.liveRedraw ?? (Core_Globals.svg &&
51328
51434
  !Core_Globals.isTouchDevice &&
51329
- !this.chart.boosted) ||
51435
+ !this.chart.boosted)) ||
51330
51436
  // Mouseup always should change extremes
51331
51437
  eventType === 'mouseup' ||
51332
51438
  eventType === 'touchend' ||
@@ -51846,18 +51952,18 @@ class Navigator {
51846
51952
  // it. For example hidden series, but visible navigator (#6022).
51847
51953
  if (rendered) {
51848
51954
  pxMin = 0;
51849
- pxMax = pick(xAxis.width, scrollbarXAxis.width);
51955
+ pxMax = (xAxis.width ?? scrollbarXAxis.width);
51850
51956
  }
51851
51957
  else {
51852
51958
  return;
51853
51959
  }
51854
51960
  }
51855
- navigator.left = pick(xAxis.left,
51856
- // In case of scrollbar only, without navigator
51857
- chart.plotLeft + scrollButtonSize +
51961
+ navigator.left = (xAxis.left ?? chart.plotLeft + scrollButtonSize +
51858
51962
  (inverted ? chart.plotWidth : 0));
51859
- let zoomedMax = navigator.size = navigatorSize = pick(xAxis.len, (inverted ? chart.plotHeight : chart.plotWidth) -
51860
- 2 * scrollButtonSize);
51963
+ let zoomedMax = navigator.size = navigatorSize =
51964
+ xAxis.len ??
51965
+ (inverted ? chart.plotHeight : chart.plotWidth) -
51966
+ 2 * scrollButtonSize;
51861
51967
  if (inverted) {
51862
51968
  navigatorWidth = scrollbarHeight;
51863
51969
  }
@@ -51865,8 +51971,8 @@ class Navigator {
51865
51971
  navigatorWidth = navigatorSize + 2 * scrollButtonSize;
51866
51972
  }
51867
51973
  // Get the pixel position of the handles
51868
- pxMin = pick(pxMin, xAxis.toPixels(min, true));
51869
- pxMax = pick(pxMax, xAxis.toPixels(max, true));
51974
+ pxMin = (pxMin ?? xAxis.toPixels(min, true));
51975
+ pxMax = (pxMax ?? xAxis.toPixels(max, true));
51870
51976
  // Verify (#1851, #2238)
51871
51977
  if (!isNumber(pxMin) || Math.abs(pxMin) === Infinity) {
51872
51978
  pxMin = 0;
@@ -52145,11 +52251,10 @@ class Navigator {
52145
52251
  navigator.render(0, 0, chartX - dragOffset, chartX - dragOffset + range);
52146
52252
  }
52147
52253
  if (navigator.hasDragged &&
52148
- pick(navigator.scrollbarOptions?.liveRedraw,
52254
+ (navigator.scrollbarOptions?.liveRedraw ?? (
52149
52255
  // By default, don't run live redraw on touch
52150
52256
  // devices or if the chart is in boost.
52151
- !Navigator_isTouchDevice &&
52152
- !this.chart.boosted)) {
52257
+ !Navigator_isTouchDevice && !this.chart.boosted))) {
52153
52258
  e.DOMType = e.type;
52154
52259
  setTimeout(function () {
52155
52260
  navigator.onMouseUp(e);
@@ -52338,8 +52443,10 @@ class Navigator {
52338
52443
  offset: 0,
52339
52444
  index: yAxisIndex,
52340
52445
  isInternal: true,
52341
- reversed: pick((navigatorOptions.yAxis &&
52342
- navigatorOptions.yAxis.reversed), (chart.yAxis[0] && chart.yAxis[0].reversed), false), // #14060
52446
+ reversed: ((navigatorOptions.yAxis &&
52447
+ navigatorOptions.yAxis.reversed) ??
52448
+ (chart.yAxis[0] && chart.yAxis[0].reversed) ??
52449
+ false), // #14060
52343
52450
  zoomEnabled: false
52344
52451
  }, chart.inverted ? {
52345
52452
  width: height
@@ -52425,7 +52532,9 @@ class Navigator {
52425
52532
  */
52426
52533
  setOpposite() {
52427
52534
  const navigatorOptions = this.navigatorOptions, navigatorEnabled = this.navigatorEnabled, chart = this.chart;
52428
- this.opposite = pick(navigatorOptions.opposite, Boolean(!navigatorEnabled && chart.inverted)); // #6262
52535
+ this.opposite =
52536
+ navigatorOptions.opposite ??
52537
+ Boolean(!navigatorEnabled && chart.inverted); // #6262
52429
52538
  }
52430
52539
  /**
52431
52540
  * Get the union data extremes of the chart - the outer data extremes of the
@@ -52439,9 +52548,8 @@ class Navigator {
52439
52548
  let ret;
52440
52549
  if (!returnFalseOnNoBaseSeries || baseAxis.dataMin !== null) {
52441
52550
  ret = {
52442
- dataMin: pick(// #4053
52443
- time.parse(navAxisOptions?.min), numExt('min', time.parse(baseAxisOptions.min), baseAxis.dataMin, navAxis.dataMin, navAxis.min)),
52444
- dataMax: pick(time.parse(navAxisOptions?.max), numExt('max', time.parse(baseAxisOptions.max), baseAxis.dataMax, navAxis.dataMax, navAxis.max))
52551
+ dataMin: (time.parse(navAxisOptions?.min) ?? numExt('min', time.parse(baseAxisOptions.min), baseAxis.dataMin, navAxis.dataMin, navAxis.min)),
52552
+ dataMax: (time.parse(navAxisOptions?.max) ?? numExt('max', time.parse(baseAxisOptions.max), baseAxis.dataMax, navAxis.dataMax, navAxis.max))
52445
52553
  };
52446
52554
  }
52447
52555
  return ret;
@@ -52556,11 +52664,9 @@ class Navigator {
52556
52664
  userNavOptions.dataLabels = splat(userNavOptions.dataLabels);
52557
52665
  mergedNavSeriesOptions = merge(baseOptions, navSeriesMixin, userNavOptions, baseNavigatorOptions);
52558
52666
  // Once nav series type is resolved, pick correct pointRange
52559
- mergedNavSeriesOptions.pointRange = pick(
52560
- // Strictly set pointRange in options
52561
- userNavOptions.pointRange, baseNavigatorOptions.pointRange,
52562
- // Fallback to default values, e.g. `null` for column
52563
- Navigator_defaultOptions.plotOptions[mergedNavSeriesOptions.type || 'line']?.pointRange);
52667
+ mergedNavSeriesOptions.pointRange = (userNavOptions.pointRange ??
52668
+ baseNavigatorOptions.pointRange ??
52669
+ Navigator_defaultOptions.plotOptions[mergedNavSeriesOptions.type || 'line']?.pointRange);
52564
52670
  // Merge data separately. Do a slice to avoid mutating the
52565
52671
  // navigator options from base series (#4923).
52566
52672
  const navigatorSeriesData = baseNavigatorOptions.data || userNavOptions.data, navigatorSeriesDataTable = baseNavigatorOptions.dataTable ||
@@ -52720,7 +52826,7 @@ class Navigator {
52720
52826
  * @function Highcharts.Navigator#modifyBaseAxisExtremes
52721
52827
  */
52722
52828
  modifyBaseAxisExtremes() {
52723
- const baseXAxis = this, navigator = baseXAxis.chart.navigator, baseExtremes = baseXAxis.getExtremes(), baseMin = baseExtremes.min, baseMax = baseExtremes.max, baseDataMin = baseExtremes.dataMin, baseDataMax = baseExtremes.dataMax, range = baseMax - baseMin, stickToMin = navigator?.stickToMin, stickToMax = navigator?.stickToMax, overscroll = pick(baseXAxis.ordinal?.convertOverscroll(baseXAxis.options.overscroll), 0), navigatorSeries = navigator.series && navigator.series[0], hasSetExtremes = !!baseXAxis.setExtremes,
52829
+ const baseXAxis = this, navigator = baseXAxis.chart.navigator, baseExtremes = baseXAxis.getExtremes(), baseMin = baseExtremes.min, baseMax = baseExtremes.max, baseDataMin = baseExtremes.dataMin, baseDataMax = baseExtremes.dataMax, range = baseMax - baseMin, stickToMin = navigator?.stickToMin, stickToMax = navigator?.stickToMax, overscroll = (baseXAxis.ordinal?.convertOverscroll(baseXAxis.options.overscroll) ?? 0), navigatorSeries = navigator.series && navigator.series[0], hasSetExtremes = !!baseXAxis.setExtremes,
52724
52830
  // When the extremes have been set by range selector button, don't
52725
52831
  // stick to min or max. The range selector buttons will handle the
52726
52832
  // extremes. (#5489)
@@ -52772,8 +52878,8 @@ class Navigator {
52772
52878
  Math.round(navigator.zoomedMax) >= Math.round(navigator.size);
52773
52879
  // If the scrollbar is scrolled all the way to the right, keep right as
52774
52880
  // new data comes in, unless user set navigator.stickToMax to false.
52775
- navigator.stickToMax = pick(this.chart.options.navigator &&
52776
- this.chart.options.navigator.stickToMax, shouldStickToMax);
52881
+ navigator.stickToMax = (this.chart.options.navigator &&
52882
+ this.chart.options.navigator.stickToMax) ?? shouldStickToMax;
52777
52883
  navigator.stickToMin = navigator.shouldStickToMin(baseSeries, navigator);
52778
52884
  // Set the navigator series data to the new data of the base series
52779
52885
  if (navigatorSeries && !navigator.hasNavigatorData) {
@@ -53251,7 +53357,7 @@ class StandaloneNavigator {
53251
53357
  * Options for the series to be added to the navigator.
53252
53358
  */
53253
53359
  addSeries(seriesOptions) {
53254
- this.navigator.chart.addSeries(merge(seriesOptions, { showInNavigator: pick(seriesOptions.showInNavigator, true) }));
53360
+ this.navigator.chart.addSeries(merge(seriesOptions, { showInNavigator: (seriesOptions.showInNavigator ?? true) }));
53255
53361
  this.navigator.setBaseSeries();
53256
53362
  }
53257
53363
  /**
@@ -53290,8 +53396,8 @@ class StandaloneNavigator {
53290
53396
  getRange() {
53291
53397
  const { min, max } = this.navigator.chart.xAxis[0].getExtremes(), { userMin, userMax, min: dataMin, max: dataMax } = this.navigator.xAxis.getExtremes();
53292
53398
  return {
53293
- min: pick(min, dataMin),
53294
- max: pick(max, dataMax),
53399
+ min: (min ?? dataMin),
53400
+ max: (max ?? dataMax),
53295
53401
  dataMin,
53296
53402
  dataMax,
53297
53403
  userMin,
@@ -53358,7 +53464,7 @@ class StandaloneNavigator {
53358
53464
  /* unused harmony import specifier */ var Highcharts;
53359
53465
  // SPDX-License-Identifier: LicenseRef-Highcharts
53360
53466
  /**
53361
- * @license Highcharts JS v13.0.1 (2026-08-17)
53467
+ * @license Highcharts JS v13.0.2 (2026-08-27)
53362
53468
  * @module highcharts/modules/navigator
53363
53469
  * @requires highcharts
53364
53470
  *