highcharts 9.3.2 → 10.1.0

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 (700) hide show
  1. package/bower.json +1 -1
  2. package/css/highcharts.css +19 -2
  3. package/css/highcharts.scss +17 -2
  4. package/css/themes/dark-unica.css +19 -2
  5. package/css/themes/grid-light.css +19 -2
  6. package/css/themes/sand-signika.css +19 -2
  7. package/es-modules/Accessibility/A11yI18n.js +4 -4
  8. package/es-modules/Accessibility/Accessibility.js +1 -1
  9. package/es-modules/Accessibility/Components/ContainerComponent.js +8 -9
  10. package/es-modules/Accessibility/Components/InfoRegionsComponent.js +14 -9
  11. package/es-modules/Accessibility/Components/LegendComponent.js +31 -23
  12. package/es-modules/Accessibility/Components/MenuComponent.js +15 -5
  13. package/es-modules/Accessibility/Components/RangeSelectorComponent.js +2 -2
  14. package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +7 -6
  15. package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.js +1 -1
  16. package/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +0 -1
  17. package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +34 -18
  18. package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +84 -33
  19. package/es-modules/Accessibility/Components/ZoomComponent.js +13 -10
  20. package/es-modules/Accessibility/FocusBorder.js +6 -5
  21. package/es-modules/Accessibility/HighContrastMode.js +2 -2
  22. package/es-modules/Accessibility/KeyboardNavigation.js +113 -98
  23. package/es-modules/Accessibility/Options/LangOptions.js +36 -31
  24. package/es-modules/Accessibility/Options/Options.js +66 -3
  25. package/es-modules/Accessibility/ProxyElement.js +14 -6
  26. package/es-modules/Accessibility/ProxyProvider.js +10 -2
  27. package/es-modules/Accessibility/Utils/ChartUtilities.js +9 -4
  28. package/es-modules/Core/Axis/Axis.js +180 -73
  29. package/es-modules/Core/Axis/Color/ColorAxis.js +22 -5
  30. package/es-modules/Core/Axis/GridAxis.js +15 -11
  31. package/es-modules/Core/Axis/LogarithmicAxis.js +1 -1
  32. package/es-modules/Core/Axis/OrdinalAxis.js +3 -2
  33. package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +1 -1
  34. package/es-modules/Core/Axis/StackingAxis.js +0 -1
  35. package/es-modules/Core/Axis/Tick.js +2 -2
  36. package/es-modules/Core/Axis/TreeGridTick.js +11 -0
  37. package/es-modules/Core/Chart/Chart.js +21 -3
  38. package/es-modules/Core/Chart/Chart3D.js +1 -11
  39. package/es-modules/Core/Chart/ChartDefaults.js +43 -11
  40. package/es-modules/Core/Chart/MapChart.js +1 -6
  41. package/es-modules/Core/Chart/StockChart.js +1 -1
  42. package/es-modules/Core/DefaultOptions.js +8 -4
  43. package/es-modules/Core/Geometry/PolygonClip.js +84 -0
  44. package/es-modules/Core/Globals.js +4 -18
  45. package/es-modules/Core/HttpUtilities.js +13 -8
  46. package/es-modules/Core/Legend/Legend.js +11 -9
  47. package/es-modules/Core/Navigator.js +10 -7
  48. package/es-modules/Core/Pointer.js +15 -11
  49. package/es-modules/Core/Renderer/HTML/AST.js +68 -8
  50. package/es-modules/Core/Renderer/SVG/SVGElement.js +47 -63
  51. package/es-modules/Core/Renderer/SVG/SVGElement3D.js +17 -5
  52. package/es-modules/Core/Renderer/SVG/SVGRenderer.js +31 -28
  53. package/es-modules/Core/Renderer/SVG/SVGRenderer3D.js +1 -1
  54. package/es-modules/Core/Renderer/SVG/TextBuilder.js +12 -10
  55. package/es-modules/Core/Scrollbar.js +9 -5
  56. package/es-modules/Core/Series/DataLabel.js +65 -36
  57. package/es-modules/Core/Series/Point.js +2 -2
  58. package/es-modules/Core/Series/Series.js +52 -22
  59. package/es-modules/Core/Series/SeriesDefaults.js +4 -1
  60. package/es-modules/Core/Tooltip.js +14 -31
  61. package/es-modules/Core/Utilities.js +29 -29
  62. package/es-modules/Extensions/Annotations/Annotations.js +9 -2
  63. package/es-modules/Extensions/Annotations/ControlPoint.js +1 -1
  64. package/es-modules/Extensions/Annotations/MockPoint.js +1 -1
  65. package/es-modules/Extensions/Annotations/NavigationBindings.js +9 -1
  66. package/es-modules/Extensions/Annotations/Popup.js +1 -1
  67. package/es-modules/Extensions/Annotations/Types/BasicAnnotation.js +5 -3
  68. package/es-modules/Extensions/Boost/BoostInit.js +6 -1
  69. package/es-modules/Extensions/Boost/BoostOptions.js +26 -0
  70. package/es-modules/Extensions/Boost/Boostables.js +1 -0
  71. package/es-modules/Extensions/Boost/WGLRenderer.js +48 -37
  72. package/es-modules/Extensions/Boost/WGLShader.js +4 -3
  73. package/es-modules/Extensions/Breadcrumbs.js +873 -0
  74. package/es-modules/Extensions/Data.js +26 -14
  75. package/es-modules/Extensions/DataGrouping.js +8 -3
  76. package/es-modules/Extensions/Debugger/ErrorMessages.js +4 -0
  77. package/es-modules/Extensions/DraggablePoints.js +9 -7
  78. package/es-modules/Extensions/Drilldown.js +150 -95
  79. package/es-modules/Extensions/ExportData.js +1 -2
  80. package/es-modules/Extensions/Exporting/Exporting.js +31 -20
  81. package/es-modules/Extensions/Exporting/ExportingDefaults.js +49 -1
  82. package/es-modules/Extensions/FullScreen.js +121 -54
  83. package/es-modules/Extensions/GeoJSON.js +151 -125
  84. package/es-modules/Extensions/MarkerClusters.js +34 -20
  85. package/es-modules/Extensions/OfflineExporting/OfflineExporting.js +110 -22
  86. package/es-modules/Extensions/OfflineExporting/OfflineExportingDefaults.js +1 -1
  87. package/es-modules/Extensions/Oldie/Oldie.js +1 -1
  88. package/es-modules/Extensions/OverlappingDataLabels.js +5 -4
  89. package/es-modules/Extensions/Polar.js +4 -1
  90. package/es-modules/Extensions/ScrollablePlotArea.js +5 -1
  91. package/es-modules/Extensions/Stacking.js +4 -3
  92. package/es-modules/Extensions/Themes/HighContrastDark.js +10 -10
  93. package/es-modules/Extensions/Themes/HighContrastLight.js +10 -10
  94. package/es-modules/Maps/MapNavigation.js +50 -13
  95. package/es-modules/Maps/MapPointer.js +16 -0
  96. package/es-modules/Maps/MapUtilities.js +56 -0
  97. package/es-modules/Maps/MapView.js +611 -136
  98. package/es-modules/Maps/MapViewInsetsOptionsDefault.js +148 -0
  99. package/es-modules/Maps/MapViewOptionsDefault.js +60 -20
  100. package/es-modules/Maps/Projection.js +169 -77
  101. package/es-modules/Maps/Projections/EqualEarth.js +15 -6
  102. package/es-modules/Maps/Projections/LambertConformalConic.js +27 -19
  103. package/es-modules/Maps/Projections/Miller.js +23 -10
  104. package/es-modules/Maps/Projections/Orthographic.js +21 -10
  105. package/es-modules/Maps/Projections/WebMercator.js +25 -13
  106. package/es-modules/Series/ArcDiagram/ArcDiagramPoint.js +77 -0
  107. package/es-modules/Series/ArcDiagram/ArcDiagramSeries.js +589 -0
  108. package/es-modules/Series/CenteredUtilities.js +6 -1
  109. package/es-modules/Series/Column/ColumnSeries.js +4 -3
  110. package/es-modules/Series/DataModifyComposition.js +1 -0
  111. package/es-modules/Series/DependencyWheel/DependencyWheelSeries.js +2 -2
  112. package/es-modules/Series/DrawPointComposition.js +7 -4
  113. package/es-modules/Series/Flags/FlagsSeries.js +7 -12
  114. package/es-modules/Series/Gauge/GaugeSeries.js +1 -1
  115. package/es-modules/Series/Heatmap/HeatmapSeries.js +13 -20
  116. package/es-modules/Series/Lollipop/LollipopSeries.js +1 -1
  117. package/es-modules/Series/Map/MapPoint.js +24 -1
  118. package/es-modules/Series/Map/MapSeries.js +206 -169
  119. package/es-modules/Series/MapBubble/MapBubblePoint.js +16 -24
  120. package/es-modules/Series/MapBubble/MapBubbleSeries.js +58 -1
  121. package/es-modules/Series/MapPoint/MapPointPoint.js +2 -8
  122. package/es-modules/Series/MapPoint/MapPointSeries.js +40 -14
  123. package/es-modules/Series/NodesComposition.js +60 -13
  124. package/es-modules/Series/OHLC/OHLCSeries.js +7 -0
  125. package/es-modules/Series/Organization/OrganizationPoint.js +68 -2
  126. package/es-modules/Series/Organization/OrganizationSeries.js +79 -25
  127. package/es-modules/Series/Pie/PieDataLabel.js +3 -1
  128. package/es-modules/Series/Pie/PiePoint.js +12 -5
  129. package/es-modules/Series/Pie/PieSeries.js +12 -1
  130. package/es-modules/Series/Pie3D/Pie3DSeries.js +19 -0
  131. package/es-modules/Series/Sankey/SankeyColumnComposition.js +193 -0
  132. package/es-modules/Series/Sankey/SankeyPoint.js +37 -1
  133. package/es-modules/Series/Sankey/SankeySeries.js +13 -128
  134. package/es-modules/Series/Scatter/ScatterSeries.js +1 -1
  135. package/es-modules/Series/Sunburst/SunburstSeries.js +14 -3
  136. package/es-modules/Series/Treemap/TreemapSeries.js +88 -80
  137. package/es-modules/Series/Waterfall/WaterfallSeries.js +2 -0
  138. package/es-modules/Series/Wordcloud/WordcloudSeries.js +4 -4
  139. package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +9 -2
  140. package/es-modules/Stock/StockToolsBindings.js +31 -24
  141. package/es-modules/Stock/StockToolsGui.js +1 -1
  142. package/es-modules/masters/highcharts-3d.src.js +1 -1
  143. package/es-modules/masters/highcharts-gantt.src.js +1 -1
  144. package/es-modules/masters/highcharts-more.src.js +1 -1
  145. package/es-modules/masters/highcharts.src.js +1 -1
  146. package/es-modules/masters/highmaps.src.js +1 -1
  147. package/es-modules/masters/highstock.src.js +1 -1
  148. package/es-modules/masters/indicators/acceleration-bands.src.js +1 -1
  149. package/es-modules/masters/indicators/accumulation-distribution.src.js +1 -1
  150. package/es-modules/masters/indicators/ao.src.js +1 -1
  151. package/es-modules/masters/indicators/apo.src.js +1 -1
  152. package/es-modules/masters/indicators/aroon-oscillator.src.js +1 -1
  153. package/es-modules/masters/indicators/aroon.src.js +1 -1
  154. package/es-modules/masters/indicators/atr.src.js +1 -1
  155. package/es-modules/masters/indicators/bollinger-bands.src.js +1 -1
  156. package/es-modules/masters/indicators/cci.src.js +1 -1
  157. package/es-modules/masters/indicators/chaikin.src.js +1 -1
  158. package/es-modules/masters/indicators/cmf.src.js +1 -1
  159. package/es-modules/masters/indicators/cmo.src.js +1 -1
  160. package/es-modules/masters/indicators/dema.src.js +1 -1
  161. package/es-modules/masters/indicators/disparity-index.src.js +1 -1
  162. package/es-modules/masters/indicators/dmi.src.js +1 -1
  163. package/es-modules/masters/indicators/dpo.src.js +1 -1
  164. package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
  165. package/es-modules/masters/indicators/indicators-all.src.js +1 -1
  166. package/es-modules/masters/indicators/indicators.src.js +1 -1
  167. package/es-modules/masters/indicators/keltner-channels.src.js +1 -1
  168. package/es-modules/masters/indicators/klinger.src.js +1 -1
  169. package/es-modules/masters/indicators/macd.src.js +1 -1
  170. package/es-modules/masters/indicators/mfi.src.js +1 -1
  171. package/es-modules/masters/indicators/momentum.src.js +1 -1
  172. package/es-modules/masters/indicators/natr.src.js +1 -1
  173. package/es-modules/masters/indicators/obv.src.js +1 -1
  174. package/es-modules/masters/indicators/pivot-points.src.js +1 -1
  175. package/es-modules/masters/indicators/ppo.src.js +1 -1
  176. package/es-modules/masters/indicators/price-channel.src.js +1 -1
  177. package/es-modules/masters/indicators/price-envelopes.src.js +1 -1
  178. package/es-modules/masters/indicators/psar.src.js +1 -1
  179. package/es-modules/masters/indicators/regressions.src.js +1 -1
  180. package/es-modules/masters/indicators/roc.src.js +1 -1
  181. package/es-modules/masters/indicators/rsi.src.js +1 -1
  182. package/es-modules/masters/indicators/slow-stochastic.src.js +1 -1
  183. package/es-modules/masters/indicators/stochastic.src.js +1 -1
  184. package/es-modules/masters/indicators/supertrend.src.js +1 -1
  185. package/es-modules/masters/indicators/tema.src.js +1 -1
  186. package/es-modules/masters/indicators/trendline.src.js +1 -1
  187. package/es-modules/masters/indicators/trix.src.js +1 -1
  188. package/es-modules/masters/indicators/volume-by-price.src.js +1 -1
  189. package/es-modules/masters/indicators/vwap.src.js +1 -1
  190. package/es-modules/masters/indicators/williams-r.src.js +1 -1
  191. package/es-modules/masters/indicators/wma.src.js +1 -1
  192. package/es-modules/masters/indicators/zigzag.src.js +1 -1
  193. package/es-modules/masters/modules/accessibility.src.js +1 -1
  194. package/es-modules/masters/modules/annotations-advanced.src.js +1 -1
  195. package/es-modules/masters/modules/annotations.src.js +1 -1
  196. package/es-modules/masters/modules/arc-diagram.src.js +14 -0
  197. package/es-modules/masters/modules/arrow-symbols.src.js +1 -1
  198. package/es-modules/masters/modules/boost-canvas.src.js +1 -1
  199. package/es-modules/masters/modules/boost.src.js +1 -1
  200. package/es-modules/masters/modules/broken-axis.src.js +1 -1
  201. package/es-modules/masters/modules/bullet.src.js +1 -1
  202. package/es-modules/masters/modules/coloraxis.src.js +1 -1
  203. package/es-modules/masters/modules/current-date-indicator.src.js +1 -1
  204. package/es-modules/masters/modules/cylinder.src.js +1 -1
  205. package/es-modules/masters/modules/data.src.js +1 -1
  206. package/es-modules/masters/modules/datagrouping.src.js +1 -1
  207. package/es-modules/masters/modules/debugger.src.js +1 -1
  208. package/es-modules/masters/modules/dependency-wheel.src.js +1 -1
  209. package/es-modules/masters/modules/dotplot.src.js +1 -1
  210. package/es-modules/masters/modules/drag-panes.src.js +1 -1
  211. package/es-modules/masters/modules/draggable-points.src.js +1 -1
  212. package/es-modules/masters/modules/drilldown.src.js +2 -1
  213. package/es-modules/masters/modules/dumbbell.src.js +1 -1
  214. package/es-modules/masters/modules/export-data.src.js +1 -1
  215. package/es-modules/masters/modules/exporting.src.js +1 -1
  216. package/es-modules/masters/modules/full-screen.src.js +1 -1
  217. package/es-modules/masters/modules/funnel.src.js +1 -1
  218. package/es-modules/masters/modules/funnel3d.src.js +1 -1
  219. package/es-modules/masters/modules/gantt.src.js +1 -1
  220. package/es-modules/masters/modules/grid-axis.src.js +1 -1
  221. package/es-modules/masters/modules/heatmap.src.js +1 -1
  222. package/es-modules/masters/modules/heikinashi.src.js +1 -1
  223. package/es-modules/masters/modules/histogram-bellcurve.src.js +1 -1
  224. package/es-modules/masters/modules/hollowcandlestick.src.js +1 -1
  225. package/es-modules/masters/modules/item-series.src.js +1 -1
  226. package/es-modules/masters/modules/lollipop.src.js +1 -1
  227. package/es-modules/masters/modules/map.src.js +5 -1
  228. package/es-modules/masters/modules/marker-clusters.src.js +1 -1
  229. package/es-modules/masters/modules/networkgraph.src.js +1 -1
  230. package/es-modules/masters/modules/no-data-to-display.src.js +1 -1
  231. package/es-modules/masters/modules/offline-exporting.src.js +1 -1
  232. package/es-modules/masters/modules/oldie-polyfills.src.js +1 -1
  233. package/es-modules/masters/modules/oldie.src.js +1 -1
  234. package/es-modules/masters/modules/organization.src.js +1 -1
  235. package/es-modules/masters/modules/overlapping-datalabels.src.js +1 -1
  236. package/es-modules/masters/modules/parallel-coordinates.src.js +1 -1
  237. package/es-modules/masters/modules/pareto.src.js +1 -1
  238. package/es-modules/masters/modules/pathfinder.src.js +1 -1
  239. package/es-modules/masters/modules/pattern-fill.src.js +1 -1
  240. package/es-modules/masters/modules/price-indicator.src.js +1 -1
  241. package/es-modules/masters/modules/pyramid3d.src.js +1 -1
  242. package/es-modules/masters/modules/sankey.src.js +1 -1
  243. package/es-modules/masters/modules/series-label.src.js +1 -1
  244. package/es-modules/masters/modules/solid-gauge.src.js +1 -1
  245. package/es-modules/masters/modules/sonification.src.js +1 -1
  246. package/es-modules/masters/modules/static-scale.src.js +1 -1
  247. package/es-modules/masters/modules/stock-tools.src.js +1 -1
  248. package/es-modules/masters/modules/stock.src.js +1 -1
  249. package/es-modules/masters/modules/streamgraph.src.js +1 -1
  250. package/es-modules/masters/modules/sunburst.src.js +1 -1
  251. package/es-modules/masters/modules/tilemap.src.js +1 -1
  252. package/es-modules/masters/modules/timeline.src.js +1 -1
  253. package/es-modules/masters/modules/treegrid.src.js +1 -1
  254. package/es-modules/masters/modules/treemap.src.js +5 -1
  255. package/es-modules/masters/modules/variable-pie.src.js +1 -1
  256. package/es-modules/masters/modules/variwide.src.js +1 -1
  257. package/es-modules/masters/modules/vector.src.js +1 -1
  258. package/es-modules/masters/modules/venn.src.js +1 -1
  259. package/es-modules/masters/modules/windbarb.src.js +1 -1
  260. package/es-modules/masters/modules/wordcloud.src.js +1 -1
  261. package/es-modules/masters/modules/xrange.src.js +1 -1
  262. package/es-modules/masters/themes/avocado.src.js +1 -1
  263. package/es-modules/masters/themes/brand-dark.src.js +1 -1
  264. package/es-modules/masters/themes/brand-light.src.js +1 -1
  265. package/es-modules/masters/themes/dark-blue.src.js +1 -1
  266. package/es-modules/masters/themes/dark-green.src.js +1 -1
  267. package/es-modules/masters/themes/dark-unica.src.js +1 -1
  268. package/es-modules/masters/themes/gray.src.js +1 -1
  269. package/es-modules/masters/themes/grid-light.src.js +1 -1
  270. package/es-modules/masters/themes/grid.src.js +1 -1
  271. package/es-modules/masters/themes/high-contrast-dark.src.js +1 -1
  272. package/es-modules/masters/themes/high-contrast-light.src.js +1 -1
  273. package/es-modules/masters/themes/sand-signika.src.js +1 -1
  274. package/es-modules/masters/themes/skies.src.js +1 -1
  275. package/es-modules/masters/themes/sunset.src.js +1 -1
  276. package/highcharts-3d.js +99 -98
  277. package/highcharts-3d.js.map +1 -1
  278. package/highcharts-3d.src.js +51 -21
  279. package/highcharts-gantt.js +808 -800
  280. package/highcharts-gantt.js.map +1 -1
  281. package/highcharts-gantt.src.js +781 -426
  282. package/highcharts-more.js +195 -194
  283. package/highcharts-more.js.map +1 -1
  284. package/highcharts-more.src.js +18 -4
  285. package/highcharts.d.ts +3224 -542
  286. package/highcharts.js +592 -584
  287. package/highcharts.js.map +1 -1
  288. package/highcharts.src.d.ts +3224 -542
  289. package/highcharts.src.js +732 -400
  290. package/highmaps.js +760 -728
  291. package/highmaps.js.map +1 -1
  292. package/highmaps.src.js +3840 -2189
  293. package/highstock.js +793 -786
  294. package/highstock.js.map +1 -1
  295. package/highstock.src.js +783 -432
  296. package/indicators/acceleration-bands.js +12 -11
  297. package/indicators/acceleration-bands.js.map +1 -1
  298. package/indicators/acceleration-bands.src.js +11 -2
  299. package/indicators/accumulation-distribution.js +5 -5
  300. package/indicators/accumulation-distribution.js.map +1 -1
  301. package/indicators/accumulation-distribution.src.js +11 -2
  302. package/indicators/ao.js +6 -6
  303. package/indicators/ao.js.map +1 -1
  304. package/indicators/ao.src.js +11 -2
  305. package/indicators/apo.js +5 -5
  306. package/indicators/apo.js.map +1 -1
  307. package/indicators/apo.src.js +11 -2
  308. package/indicators/aroon-oscillator.js +10 -10
  309. package/indicators/aroon-oscillator.js.map +1 -1
  310. package/indicators/aroon-oscillator.src.js +11 -2
  311. package/indicators/aroon.js +11 -11
  312. package/indicators/aroon.js.map +1 -1
  313. package/indicators/aroon.src.js +11 -2
  314. package/indicators/atr.js +5 -5
  315. package/indicators/atr.js.map +1 -1
  316. package/indicators/atr.src.js +11 -2
  317. package/indicators/bollinger-bands.js +12 -12
  318. package/indicators/bollinger-bands.js.map +1 -1
  319. package/indicators/bollinger-bands.src.js +11 -2
  320. package/indicators/cci.js +5 -5
  321. package/indicators/cci.js.map +1 -1
  322. package/indicators/cci.src.js +11 -2
  323. package/indicators/chaikin.js +8 -8
  324. package/indicators/chaikin.js.map +1 -1
  325. package/indicators/chaikin.src.js +11 -2
  326. package/indicators/cmf.js +6 -6
  327. package/indicators/cmf.js.map +1 -1
  328. package/indicators/cmf.src.js +11 -2
  329. package/indicators/cmo.js +5 -5
  330. package/indicators/cmo.js.map +1 -1
  331. package/indicators/cmo.src.js +11 -2
  332. package/indicators/dema.js +5 -5
  333. package/indicators/dema.js.map +1 -1
  334. package/indicators/dema.src.js +11 -2
  335. package/indicators/disparity-index.js +6 -6
  336. package/indicators/disparity-index.js.map +1 -1
  337. package/indicators/disparity-index.src.js +11 -2
  338. package/indicators/dmi.js +12 -12
  339. package/indicators/dmi.js.map +1 -1
  340. package/indicators/dmi.src.js +11 -2
  341. package/indicators/dpo.js +5 -5
  342. package/indicators/dpo.js.map +1 -1
  343. package/indicators/dpo.src.js +11 -2
  344. package/indicators/ema.js +2 -1
  345. package/indicators/ema.js.map +1 -1
  346. package/indicators/ema.src.js +10 -1
  347. package/indicators/ichimoku-kinko-hyo.js +16 -16
  348. package/indicators/ichimoku-kinko-hyo.js.map +1 -1
  349. package/indicators/ichimoku-kinko-hyo.src.js +11 -2
  350. package/indicators/indicators-all.js +195 -194
  351. package/indicators/indicators-all.js.map +1 -1
  352. package/indicators/indicators-all.src.js +21 -5
  353. package/indicators/indicators.js +13 -12
  354. package/indicators/indicators.js.map +1 -1
  355. package/indicators/indicators.src.js +21 -5
  356. package/indicators/keltner-channels.js +12 -11
  357. package/indicators/keltner-channels.js.map +1 -1
  358. package/indicators/keltner-channels.src.js +11 -2
  359. package/indicators/klinger.js +13 -13
  360. package/indicators/klinger.js.map +1 -1
  361. package/indicators/klinger.src.js +11 -2
  362. package/indicators/macd.js +12 -11
  363. package/indicators/macd.js.map +1 -1
  364. package/indicators/macd.src.js +11 -2
  365. package/indicators/mfi.js +6 -6
  366. package/indicators/mfi.js.map +1 -1
  367. package/indicators/mfi.src.js +11 -2
  368. package/indicators/momentum.js +5 -5
  369. package/indicators/momentum.js.map +1 -1
  370. package/indicators/momentum.src.js +11 -2
  371. package/indicators/natr.js +5 -4
  372. package/indicators/natr.js.map +1 -1
  373. package/indicators/natr.src.js +11 -2
  374. package/indicators/obv.js +5 -5
  375. package/indicators/obv.js.map +1 -1
  376. package/indicators/obv.src.js +11 -2
  377. package/indicators/pivot-points.js +11 -11
  378. package/indicators/pivot-points.js.map +1 -1
  379. package/indicators/pivot-points.src.js +11 -2
  380. package/indicators/ppo.js +5 -5
  381. package/indicators/ppo.js.map +1 -1
  382. package/indicators/ppo.src.js +11 -2
  383. package/indicators/price-channel.js +11 -11
  384. package/indicators/price-channel.js.map +1 -1
  385. package/indicators/price-channel.src.js +11 -2
  386. package/indicators/price-envelopes.js +8 -8
  387. package/indicators/price-envelopes.js.map +1 -1
  388. package/indicators/price-envelopes.src.js +11 -2
  389. package/indicators/psar.js +7 -6
  390. package/indicators/psar.js.map +1 -1
  391. package/indicators/psar.src.js +11 -2
  392. package/indicators/regressions.js +12 -12
  393. package/indicators/regressions.js.map +1 -1
  394. package/indicators/regressions.src.js +11 -2
  395. package/indicators/roc.js +5 -5
  396. package/indicators/roc.js.map +1 -1
  397. package/indicators/roc.src.js +11 -2
  398. package/indicators/rsi.js +6 -5
  399. package/indicators/rsi.js.map +1 -1
  400. package/indicators/rsi.src.js +11 -2
  401. package/indicators/slow-stochastic.js +5 -5
  402. package/indicators/slow-stochastic.js.map +1 -1
  403. package/indicators/slow-stochastic.src.js +11 -2
  404. package/indicators/stochastic.js +12 -12
  405. package/indicators/stochastic.js.map +1 -1
  406. package/indicators/stochastic.src.js +11 -2
  407. package/indicators/supertrend.js +10 -10
  408. package/indicators/supertrend.js.map +1 -1
  409. package/indicators/supertrend.src.js +11 -2
  410. package/indicators/tema.js +6 -6
  411. package/indicators/tema.js.map +1 -1
  412. package/indicators/tema.src.js +11 -2
  413. package/indicators/trendline.js +5 -5
  414. package/indicators/trendline.js.map +1 -1
  415. package/indicators/trendline.src.js +11 -2
  416. package/indicators/trix.js +4 -4
  417. package/indicators/trix.js.map +1 -1
  418. package/indicators/trix.src.js +11 -2
  419. package/indicators/volume-by-price.js +17 -17
  420. package/indicators/volume-by-price.js.map +1 -1
  421. package/indicators/volume-by-price.src.js +11 -2
  422. package/indicators/vwap.js +5 -5
  423. package/indicators/vwap.js.map +1 -1
  424. package/indicators/vwap.src.js +11 -2
  425. package/indicators/williams-r.js +6 -5
  426. package/indicators/williams-r.js.map +1 -1
  427. package/indicators/williams-r.src.js +11 -2
  428. package/indicators/wma.js +5 -5
  429. package/indicators/wma.js.map +1 -1
  430. package/indicators/wma.src.js +11 -2
  431. package/indicators/zigzag.js +6 -6
  432. package/indicators/zigzag.js.map +1 -1
  433. package/indicators/zigzag.src.js +11 -2
  434. package/lib/jspdf.js +299 -184
  435. package/lib/jspdf.src.js +25266 -18067
  436. package/lib/svg2pdf.js +35 -31
  437. package/lib/svg2pdf.src.js +5721 -4179
  438. package/modules/accessibility.js +245 -240
  439. package/modules/accessibility.js.map +1 -1
  440. package/modules/accessibility.src.js +510 -283
  441. package/modules/annotations-advanced.js +144 -144
  442. package/modules/annotations-advanced.js.map +1 -1
  443. package/modules/annotations-advanced.src.js +37 -11
  444. package/modules/annotations.js +79 -79
  445. package/modules/annotations.js.map +1 -1
  446. package/modules/annotations.src.js +32 -8
  447. package/modules/arc-diagram.js +25 -0
  448. package/modules/arc-diagram.js.map +1 -0
  449. package/modules/arc-diagram.src.js +778 -0
  450. package/modules/arrow-symbols.js +4 -3
  451. package/modules/arrow-symbols.js.map +1 -1
  452. package/modules/arrow-symbols.src.js +11 -2
  453. package/modules/boost-canvas.js +15 -15
  454. package/modules/boost-canvas.js.map +1 -1
  455. package/modules/boost-canvas.src.js +11 -2
  456. package/modules/boost.js +80 -79
  457. package/modules/boost.js.map +1 -1
  458. package/modules/boost.src.js +71 -43
  459. package/modules/broken-axis.js +13 -13
  460. package/modules/broken-axis.js.map +1 -1
  461. package/modules/broken-axis.src.js +11 -2
  462. package/modules/bullet.js +9 -9
  463. package/modules/bullet.js.map +1 -1
  464. package/modules/bullet.src.js +11 -2
  465. package/modules/coloraxis.js +24 -24
  466. package/modules/coloraxis.js.map +1 -1
  467. package/modules/coloraxis.src.js +33 -7
  468. package/modules/current-date-indicator.js +5 -4
  469. package/modules/current-date-indicator.js.map +1 -1
  470. package/modules/current-date-indicator.src.js +11 -2
  471. package/modules/cylinder.js +11 -11
  472. package/modules/cylinder.js.map +1 -1
  473. package/modules/cylinder.src.js +11 -2
  474. package/modules/data.js +34 -33
  475. package/modules/data.js.map +1 -1
  476. package/modules/data.src.js +59 -32
  477. package/modules/datagrouping.js +21 -20
  478. package/modules/datagrouping.js.map +1 -1
  479. package/modules/datagrouping.src.js +19 -5
  480. package/modules/debugger.js +8 -7
  481. package/modules/debugger.js.map +1 -1
  482. package/modules/debugger.src.js +15 -2
  483. package/modules/dependency-wheel.js +12 -11
  484. package/modules/dependency-wheel.js.map +1 -1
  485. package/modules/dependency-wheel.src.js +14 -5
  486. package/modules/dotplot.js +6 -6
  487. package/modules/dotplot.js.map +1 -1
  488. package/modules/dotplot.src.js +11 -2
  489. package/modules/drag-panes.js +10 -10
  490. package/modules/drag-panes.js.map +1 -1
  491. package/modules/drag-panes.src.js +11 -2
  492. package/modules/draggable-points.js +35 -34
  493. package/modules/draggable-points.js.map +1 -1
  494. package/modules/draggable-points.src.js +20 -9
  495. package/modules/drilldown.d.ts +19 -0
  496. package/modules/drilldown.js +36 -25
  497. package/modules/drilldown.js.map +1 -1
  498. package/modules/drilldown.src.d.ts +19 -0
  499. package/modules/drilldown.src.js +1091 -106
  500. package/modules/dumbbell.js +17 -17
  501. package/modules/dumbbell.js.map +1 -1
  502. package/modules/dumbbell.src.js +11 -2
  503. package/modules/export-data.js +21 -20
  504. package/modules/export-data.js.map +1 -1
  505. package/modules/export-data.src.js +12 -4
  506. package/modules/exporting.js +39 -39
  507. package/modules/exporting.js.map +1 -1
  508. package/modules/exporting.src.js +227 -92
  509. package/modules/full-screen.js +8 -7
  510. package/modules/full-screen.js.map +1 -1
  511. package/modules/full-screen.src.js +135 -58
  512. package/modules/funnel.js +12 -12
  513. package/modules/funnel.js.map +1 -1
  514. package/modules/funnel.src.js +11 -2
  515. package/modules/funnel3d.js +21 -21
  516. package/modules/funnel3d.js.map +1 -1
  517. package/modules/funnel3d.src.js +11 -2
  518. package/modules/gantt.js +216 -215
  519. package/modules/gantt.js.map +1 -1
  520. package/modules/gantt.src.js +60 -28
  521. package/modules/grid-axis.js +23 -23
  522. package/modules/grid-axis.js.map +1 -1
  523. package/modules/grid-axis.src.js +27 -13
  524. package/modules/heatmap.js +40 -39
  525. package/modules/heatmap.js.map +1 -1
  526. package/modules/heatmap.src.js +46 -27
  527. package/modules/heikinashi.js +8 -8
  528. package/modules/heikinashi.js.map +1 -1
  529. package/modules/heikinashi.src.js +11 -2
  530. package/modules/histogram-bellcurve.js +13 -13
  531. package/modules/histogram-bellcurve.js.map +1 -1
  532. package/modules/histogram-bellcurve.src.js +11 -2
  533. package/modules/hollowcandlestick.js +9 -9
  534. package/modules/hollowcandlestick.js.map +1 -1
  535. package/modules/hollowcandlestick.src.js +11 -2
  536. package/modules/item-series.js +12 -12
  537. package/modules/item-series.js.map +1 -1
  538. package/modules/item-series.src.js +11 -2
  539. package/modules/lollipop.js +7 -7
  540. package/modules/lollipop.js.map +1 -1
  541. package/modules/lollipop.src.js +12 -3
  542. package/modules/map.d.ts +80 -43
  543. package/modules/map.js +169 -144
  544. package/modules/map.js.map +1 -1
  545. package/modules/map.src.d.ts +80 -43
  546. package/modules/map.src.js +8024 -6696
  547. package/modules/marker-clusters.js +36 -36
  548. package/modules/marker-clusters.js.map +1 -1
  549. package/modules/marker-clusters.src.js +47 -23
  550. package/modules/networkgraph.d.ts +5 -0
  551. package/modules/networkgraph.js +49 -48
  552. package/modules/networkgraph.js.map +1 -1
  553. package/modules/networkgraph.src.d.ts +5 -0
  554. package/modules/networkgraph.src.js +77 -15
  555. package/modules/no-data-to-display.js +5 -5
  556. package/modules/no-data-to-display.js.map +1 -1
  557. package/modules/no-data-to-display.src.js +11 -2
  558. package/modules/offline-exporting.js +20 -18
  559. package/modules/offline-exporting.js.map +1 -1
  560. package/modules/offline-exporting.src.js +126 -25
  561. package/modules/oldie-polyfills.js +7 -7
  562. package/modules/oldie-polyfills.js.map +1 -1
  563. package/modules/oldie-polyfills.src.js +11 -2
  564. package/modules/oldie.js +30 -30
  565. package/modules/oldie.js.map +1 -1
  566. package/modules/oldie.src.js +12 -3
  567. package/modules/organization.js +16 -14
  568. package/modules/organization.js.map +1 -1
  569. package/modules/organization.src.js +166 -32
  570. package/modules/overlapping-datalabels.js +3 -2
  571. package/modules/overlapping-datalabels.js.map +1 -1
  572. package/modules/overlapping-datalabels.src.js +11 -2
  573. package/modules/parallel-coordinates.js +11 -11
  574. package/modules/parallel-coordinates.js.map +1 -1
  575. package/modules/parallel-coordinates.src.js +11 -2
  576. package/modules/pareto.js +7 -7
  577. package/modules/pareto.js.map +1 -1
  578. package/modules/pareto.src.js +11 -2
  579. package/modules/pathfinder.js +31 -31
  580. package/modules/pathfinder.js.map +1 -1
  581. package/modules/pathfinder.src.js +11 -2
  582. package/modules/pattern-fill.js +14 -14
  583. package/modules/pattern-fill.js.map +1 -1
  584. package/modules/pattern-fill.src.js +11 -2
  585. package/modules/price-indicator.js +5 -5
  586. package/modules/price-indicator.js.map +1 -1
  587. package/modules/price-indicator.src.js +11 -2
  588. package/modules/pyramid3d.js +4 -4
  589. package/modules/pyramid3d.js.map +1 -1
  590. package/modules/pyramid3d.src.js +11 -2
  591. package/modules/sankey.d.ts +5 -0
  592. package/modules/sankey.js +32 -29
  593. package/modules/sankey.js.map +1 -1
  594. package/modules/sankey.src.d.ts +5 -0
  595. package/modules/sankey.src.js +341 -157
  596. package/modules/series-label.js +18 -17
  597. package/modules/series-label.js.map +1 -1
  598. package/modules/series-label.src.js +11 -2
  599. package/modules/solid-gauge.js +10 -10
  600. package/modules/solid-gauge.js.map +1 -1
  601. package/modules/solid-gauge.src.js +11 -2
  602. package/modules/sonification.js +59 -59
  603. package/modules/sonification.js.map +1 -1
  604. package/modules/sonification.src.js +11 -2
  605. package/modules/static-scale.js +5 -4
  606. package/modules/static-scale.js.map +1 -1
  607. package/modules/static-scale.src.js +11 -2
  608. package/modules/stock-tools.js +145 -145
  609. package/modules/stock-tools.js.map +1 -1
  610. package/modules/stock-tools.src.js +64 -32
  611. package/modules/stock.js +204 -204
  612. package/modules/stock.js.map +1 -1
  613. package/modules/stock.src.js +62 -34
  614. package/modules/streamgraph.js +5 -4
  615. package/modules/streamgraph.js.map +1 -1
  616. package/modules/streamgraph.src.js +11 -2
  617. package/modules/sunburst.d.ts +3 -0
  618. package/modules/sunburst.js +73 -60
  619. package/modules/sunburst.js.map +1 -1
  620. package/modules/sunburst.src.d.ts +3 -0
  621. package/modules/sunburst.src.js +1048 -97
  622. package/modules/tilemap.js +17 -17
  623. package/modules/tilemap.js.map +1 -1
  624. package/modules/tilemap.src.js +11 -2
  625. package/modules/timeline.js +18 -18
  626. package/modules/timeline.js.map +1 -1
  627. package/modules/timeline.src.js +11 -2
  628. package/modules/treegrid.js +57 -56
  629. package/modules/treegrid.js.map +1 -1
  630. package/modules/treegrid.src.js +38 -13
  631. package/modules/treemap.d.ts +3 -0
  632. package/modules/treemap.js +53 -41
  633. package/modules/treemap.js.map +1 -1
  634. package/modules/treemap.src.d.ts +3 -0
  635. package/modules/treemap.src.js +1037 -95
  636. package/modules/variable-pie.js +9 -9
  637. package/modules/variable-pie.js.map +1 -1
  638. package/modules/variable-pie.src.js +11 -2
  639. package/modules/variwide.js +12 -12
  640. package/modules/variwide.js.map +1 -1
  641. package/modules/variwide.src.js +11 -2
  642. package/modules/vector.js +8 -7
  643. package/modules/vector.js.map +1 -1
  644. package/modules/vector.src.js +11 -2
  645. package/modules/venn.js +31 -31
  646. package/modules/venn.js.map +1 -1
  647. package/modules/venn.src.js +18 -6
  648. package/modules/windbarb.js +15 -15
  649. package/modules/windbarb.js.map +1 -1
  650. package/modules/windbarb.src.js +11 -2
  651. package/modules/wordcloud.js +24 -23
  652. package/modules/wordcloud.js.map +1 -1
  653. package/modules/wordcloud.src.js +22 -10
  654. package/modules/xrange.js +16 -16
  655. package/modules/xrange.js.map +1 -1
  656. package/modules/xrange.src.js +11 -2
  657. package/package.json +1 -1
  658. package/themes/avocado.js +4 -3
  659. package/themes/avocado.js.map +1 -1
  660. package/themes/avocado.src.js +11 -2
  661. package/themes/brand-dark.js +9 -8
  662. package/themes/brand-dark.js.map +1 -1
  663. package/themes/brand-dark.src.js +11 -2
  664. package/themes/brand-light.js +8 -8
  665. package/themes/brand-light.js.map +1 -1
  666. package/themes/brand-light.src.js +11 -2
  667. package/themes/dark-blue.js +9 -8
  668. package/themes/dark-blue.js.map +1 -1
  669. package/themes/dark-blue.src.js +11 -2
  670. package/themes/dark-green.js +9 -8
  671. package/themes/dark-green.js.map +1 -1
  672. package/themes/dark-green.src.js +11 -2
  673. package/themes/dark-unica.js +8 -7
  674. package/themes/dark-unica.js.map +1 -1
  675. package/themes/dark-unica.src.js +11 -2
  676. package/themes/gray.js +9 -8
  677. package/themes/gray.js.map +1 -1
  678. package/themes/gray.src.js +11 -2
  679. package/themes/grid-light.js +5 -4
  680. package/themes/grid-light.js.map +1 -1
  681. package/themes/grid-light.src.js +11 -2
  682. package/themes/grid.js +5 -5
  683. package/themes/grid.js.map +1 -1
  684. package/themes/grid.src.js +11 -2
  685. package/themes/high-contrast-dark.js +7 -7
  686. package/themes/high-contrast-dark.js.map +1 -1
  687. package/themes/high-contrast-dark.src.js +21 -12
  688. package/themes/high-contrast-light.js +3 -3
  689. package/themes/high-contrast-light.js.map +1 -1
  690. package/themes/high-contrast-light.src.js +21 -12
  691. package/themes/sand-signika.js +5 -5
  692. package/themes/sand-signika.js.map +1 -1
  693. package/themes/sand-signika.src.js +11 -2
  694. package/themes/skies.js +5 -5
  695. package/themes/skies.js.map +1 -1
  696. package/themes/skies.src.js +11 -2
  697. package/themes/sunset.js +3 -3
  698. package/themes/sunset.js.map +1 -1
  699. package/themes/sunset.src.js +11 -2
  700. package/es-modules/Maps/ProjectionDefinition.js +0 -9
@@ -123,6 +123,64 @@ var KeyboardNavigation = /** @class */ (function () {
123
123
  this.removeExitAnchor();
124
124
  }
125
125
  };
126
+ /**
127
+ * We use an exit anchor to move focus out of chart whenever we want, by
128
+ * setting focus to this div and not preventing the default tab action. We
129
+ * also use this when users come back into the chart by tabbing back, in
130
+ * order to navigate from the end of the chart.
131
+ * @private
132
+ */
133
+ KeyboardNavigation.prototype.updateExitAnchor = function () {
134
+ var endMarkerId = "highcharts-end-of-chart-marker-" + this.chart.index, endMarker = getElement(endMarkerId);
135
+ this.removeExitAnchor();
136
+ if (endMarker) {
137
+ this.makeElementAnExitAnchor(endMarker);
138
+ this.exitAnchor = endMarker;
139
+ }
140
+ else {
141
+ this.createExitAnchor();
142
+ }
143
+ };
144
+ /**
145
+ * Move to prev/next module.
146
+ * @private
147
+ * @param {number} direction
148
+ * Direction to move. +1 for next, -1 for prev.
149
+ * @return {boolean}
150
+ * True if there was a valid module in direction.
151
+ */
152
+ KeyboardNavigation.prototype.move = function (direction) {
153
+ var curModule = this.modules && this.modules[this.currentModuleIx];
154
+ if (curModule && curModule.terminate) {
155
+ curModule.terminate(direction);
156
+ }
157
+ // Remove existing focus border if any
158
+ if (this.chart.focusElement) {
159
+ this.chart.focusElement.removeFocusBorder();
160
+ }
161
+ this.currentModuleIx += direction;
162
+ var newModule = this.modules && this.modules[this.currentModuleIx];
163
+ if (newModule) {
164
+ if (newModule.validate && !newModule.validate()) {
165
+ return this.move(direction); // Invalid module, recurse
166
+ }
167
+ if (newModule.init) {
168
+ newModule.init(direction); // Valid module, init it
169
+ return true;
170
+ }
171
+ }
172
+ // No module
173
+ this.currentModuleIx = 0; // Reset counter
174
+ // Set focus to chart or exit anchor depending on direction
175
+ this.exiting = true;
176
+ if (direction > 0) {
177
+ this.exitAnchor.focus();
178
+ }
179
+ else {
180
+ this.tabindexContainer.focus();
181
+ }
182
+ return false;
183
+ };
126
184
  /**
127
185
  * Function to run on container focus
128
186
  * @private
@@ -136,29 +194,37 @@ var KeyboardNavigation = /** @class */ (function () {
136
194
  if (!this.exiting &&
137
195
  !this.tabbingInBackwards &&
138
196
  !this.isClickingChart &&
139
- !focusComesFromChart &&
140
- this.modules[0]) {
141
- this.modules[0].init(1);
197
+ !focusComesFromChart) {
198
+ var ix = this.getFirstValidModuleIx();
199
+ if (ix !== null) {
200
+ this.currentModuleIx = ix;
201
+ this.modules[ix].init(1);
202
+ }
142
203
  }
143
204
  this.exiting = false;
144
205
  };
145
206
  /**
146
- * Reset chart navigation state if we click outside the chart and it's
147
- * not already reset.
207
+ * Reset chart navigation state if we mouse click and it's not already
208
+ * reset. Reset fully if outside the chart, otherwise just hide focus
209
+ * indicator.
148
210
  * @private
149
211
  */
150
212
  KeyboardNavigation.prototype.onMouseUp = function () {
151
213
  delete this.isClickingChart;
152
- if (!this.keyboardReset && !this.pointerIsOverChart) {
153
- var chart = this.chart, curMod = this.modules &&
154
- this.modules[this.currentModuleIx || 0];
155
- if (curMod && curMod.terminate) {
156
- curMod.terminate();
214
+ if (!this.keyboardReset) {
215
+ var chart = this.chart;
216
+ if (!this.pointerIsOverChart) {
217
+ var curMod = this.modules &&
218
+ this.modules[this.currentModuleIx || 0];
219
+ if (curMod && curMod.terminate) {
220
+ curMod.terminate();
221
+ }
222
+ this.currentModuleIx = 0;
157
223
  }
158
224
  if (chart.focusElement) {
159
225
  chart.focusElement.removeFocusBorder();
226
+ delete chart.focusElement;
160
227
  }
161
- this.currentModuleIx = 0;
162
228
  this.keyboardReset = true;
163
229
  }
164
230
  };
@@ -184,10 +250,10 @@ var KeyboardNavigation = /** @class */ (function () {
184
250
  preventDefault = true;
185
251
  }
186
252
  else if (response === curNavModule.response.prev) {
187
- preventDefault = this.prev();
253
+ preventDefault = this.move(-1);
188
254
  }
189
255
  else if (response === curNavModule.response.next) {
190
- preventDefault = this.next();
256
+ preventDefault = this.move(1);
191
257
  }
192
258
  if (preventDefault) {
193
259
  e.preventDefault();
@@ -195,78 +261,6 @@ var KeyboardNavigation = /** @class */ (function () {
195
261
  }
196
262
  }
197
263
  };
198
- /**
199
- * Go to previous module.
200
- * @private
201
- */
202
- KeyboardNavigation.prototype.prev = function () {
203
- return this.move(-1);
204
- };
205
- /**
206
- * Go to next module.
207
- * @private
208
- */
209
- KeyboardNavigation.prototype.next = function () {
210
- return this.move(1);
211
- };
212
- /**
213
- * Move to prev/next module.
214
- * @private
215
- * @param {number} direction
216
- * Direction to move. +1 for next, -1 for prev.
217
- * @return {boolean}
218
- * True if there was a valid module in direction.
219
- */
220
- KeyboardNavigation.prototype.move = function (direction) {
221
- var curModule = this.modules && this.modules[this.currentModuleIx];
222
- if (curModule && curModule.terminate) {
223
- curModule.terminate(direction);
224
- }
225
- // Remove existing focus border if any
226
- if (this.chart.focusElement) {
227
- this.chart.focusElement.removeFocusBorder();
228
- }
229
- this.currentModuleIx += direction;
230
- var newModule = this.modules && this.modules[this.currentModuleIx];
231
- if (newModule) {
232
- if (newModule.validate && !newModule.validate()) {
233
- return this.move(direction); // Invalid module, recurse
234
- }
235
- if (newModule.init) {
236
- newModule.init(direction); // Valid module, init it
237
- return true;
238
- }
239
- }
240
- // No module
241
- this.currentModuleIx = 0; // Reset counter
242
- // Set focus to chart or exit anchor depending on direction
243
- this.exiting = true;
244
- if (direction > 0) {
245
- this.exitAnchor.focus();
246
- }
247
- else {
248
- this.tabindexContainer.focus();
249
- }
250
- return false;
251
- };
252
- /**
253
- * We use an exit anchor to move focus out of chart whenever we want, by
254
- * setting focus to this div and not preventing the default tab action. We
255
- * also use this when users come back into the chart by tabbing back, in
256
- * order to navigate from the end of the chart.
257
- * @private
258
- */
259
- KeyboardNavigation.prototype.updateExitAnchor = function () {
260
- var endMarkerId = ('highcharts-end-of-chart-marker-' + this.chart.index), endMarker = getElement(endMarkerId);
261
- this.removeExitAnchor();
262
- if (endMarker) {
263
- this.makeElementAnExitAnchor(endMarker);
264
- this.exitAnchor = endMarker;
265
- }
266
- else {
267
- this.createExitAnchor();
268
- }
269
- };
270
264
  /**
271
265
  * Chart container should have tabindex if navigation is enabled.
272
266
  * @private
@@ -291,6 +285,17 @@ var KeyboardNavigation = /** @class */ (function () {
291
285
  }
292
286
  };
293
287
  /**
288
+ * Add new exit anchor to the chart.
289
+ * @private
290
+ */
291
+ KeyboardNavigation.prototype.createExitAnchor = function () {
292
+ var chart = this.chart, exitAnchor = this.exitAnchor = doc.createElement('div');
293
+ chart.renderTo.appendChild(exitAnchor);
294
+ this.makeElementAnExitAnchor(exitAnchor);
295
+ };
296
+ /**
297
+ * Add attributes and events to an element to make it function as an
298
+ * exit anchor.
294
299
  * @private
295
300
  */
296
301
  KeyboardNavigation.prototype.makeElementAnExitAnchor = function (el) {
@@ -302,26 +307,17 @@ var KeyboardNavigation = /** @class */ (function () {
302
307
  this.addExitAnchorEventsToEl(el);
303
308
  };
304
309
  /**
305
- * Add new exit anchor to the chart.
306
- *
307
- * @private
308
- */
309
- KeyboardNavigation.prototype.createExitAnchor = function () {
310
- var chart = this.chart, exitAnchor = this.exitAnchor = doc.createElement('div');
311
- chart.renderTo.appendChild(exitAnchor);
312
- this.makeElementAnExitAnchor(exitAnchor);
313
- };
314
- /**
310
+ * Destroy the exit anchor and remove from DOM.
315
311
  * @private
316
312
  */
317
313
  KeyboardNavigation.prototype.removeExitAnchor = function () {
318
314
  if (this.exitAnchor && this.exitAnchor.parentNode) {
319
- this.exitAnchor.parentNode
320
- .removeChild(this.exitAnchor);
315
+ this.exitAnchor.parentNode.removeChild(this.exitAnchor);
321
316
  delete this.exitAnchor;
322
317
  }
323
318
  };
324
319
  /**
320
+ * Add focus handler to exit anchor element.
325
321
  * @private
326
322
  */
327
323
  KeyboardNavigation.prototype.addExitAnchorEventsToEl = function (element) {
@@ -329,6 +325,9 @@ var KeyboardNavigation = /** @class */ (function () {
329
325
  this.eventProvider.addEvent(element, 'focus', function (ev) {
330
326
  var e = ev || win.event, focusComesFromChart = (e.relatedTarget &&
331
327
  chart.container.contains(e.relatedTarget)), comingInBackwards = !(focusComesFromChart || keyboardNavigation.exiting);
328
+ if (chart.focusElement) {
329
+ delete chart.focusElement;
330
+ }
332
331
  if (comingInBackwards) {
333
332
  // Focus the container instead
334
333
  keyboardNavigation.tabbingInBackwards = true;
@@ -346,7 +345,7 @@ var KeyboardNavigation = /** @class */ (function () {
346
345
  if (curModule &&
347
346
  curModule.validate && !curModule.validate()) {
348
347
  // Invalid. Try moving backwards to find next valid.
349
- keyboardNavigation.prev();
348
+ keyboardNavigation.move(-1);
350
349
  }
351
350
  else if (curModule) {
352
351
  // We have a valid module, init it
@@ -360,6 +359,21 @@ var KeyboardNavigation = /** @class */ (function () {
360
359
  }
361
360
  });
362
361
  };
362
+ /**
363
+ * Get the ix of the first module that either does not require validation or
364
+ * validates positively.
365
+ * @private
366
+ */
367
+ KeyboardNavigation.prototype.getFirstValidModuleIx = function () {
368
+ var len = this.modules.length;
369
+ for (var i = 0; i < len; ++i) {
370
+ var mod = this.modules[i];
371
+ if (!mod.validate || mod.validate()) {
372
+ return i;
373
+ }
374
+ }
375
+ return null;
376
+ };
363
377
  /**
364
378
  * Remove all traces of keyboard navigation.
365
379
  * @private
@@ -395,6 +409,7 @@ var KeyboardNavigation = /** @class */ (function () {
395
409
  * */
396
410
  /* eslint-disable valid-jsdoc */
397
411
  /**
412
+ * Composition function.
398
413
  * @private
399
414
  */
400
415
  function compose(ChartClass) {
@@ -68,7 +68,7 @@ var langOptions = {
68
68
  * @since 8.0.0
69
69
  */
70
70
  screenReaderSection: {
71
- beforeRegionLabel: 'Chart screen reader information, {chartTitle}.',
71
+ beforeRegionLabel: '',
72
72
  afterRegionLabel: '',
73
73
  /**
74
74
  * Language options for annotation descriptions.
@@ -234,12 +234,12 @@ var langOptions = {
234
234
  xAxisDescriptionPlural: 'The chart has {numAxes} X axes displaying {#each(names, -1) }and {names[-1]}.',
235
235
  yAxisDescriptionSingular: 'The chart has 1 Y axis displaying {names[0]}. {ranges[0]}',
236
236
  yAxisDescriptionPlural: 'The chart has {numAxes} Y axes displaying {#each(names, -1) }and {names[-1]}.',
237
- timeRangeDays: 'Range: {range} days.',
238
- timeRangeHours: 'Range: {range} hours.',
239
- timeRangeMinutes: 'Range: {range} minutes.',
240
- timeRangeSeconds: 'Range: {range} seconds.',
241
- rangeFromTo: 'Range: {rangeFrom} to {rangeTo}.',
242
- rangeCategories: 'Range: {numCategories} categories.'
237
+ timeRangeDays: 'Data range: {range} days.',
238
+ timeRangeHours: 'Data range: {range} hours.',
239
+ timeRangeMinutes: 'Data range: {range} minutes.',
240
+ timeRangeSeconds: 'Data range: {range} seconds.',
241
+ rangeFromTo: 'Data ranges from {rangeFrom} to {rangeTo}.',
242
+ rangeCategories: 'Data range: {numCategories} categories.'
243
243
  },
244
244
  /**
245
245
  * Exporting menu format strings for accessibility module.
@@ -270,34 +270,39 @@ var langOptions = {
270
270
  * If a definition does not exist for the specific series type
271
271
  * and mode, the 'default' lang definitions are used.
272
272
  *
273
+ * Chart and its subproperties can be accessed with the `{chart}` variable.
274
+ * The series and its subproperties can be accessed with the `{series}` variable.
275
+ *
276
+ * The series index (starting from 1) can be accessed with the `{seriesNumber}` variable.
277
+ *
273
278
  * @since 6.0.6
274
279
  */
275
280
  summary: {
276
281
  /* eslint-disable max-len */
277
- 'default': '{name}, series {ix} of {numSeries} with {numPoints} data {#plural(numPoints, points, point)}.',
278
- defaultCombination: '{name}, series {ix} of {numSeries} with {numPoints} data {#plural(numPoints, points, point)}.',
279
- line: '{name}, line {ix} of {numSeries} with {numPoints} data {#plural(numPoints, points, point)}.',
280
- lineCombination: '{name}, series {ix} of {numSeries}. Line with {numPoints} data {#plural(numPoints, points, point)}.',
281
- spline: '{name}, line {ix} of {numSeries} with {numPoints} data {#plural(numPoints, points, point)}.',
282
- splineCombination: '{name}, series {ix} of {numSeries}. Line with {numPoints} data {#plural(numPoints, points, point)}.',
283
- column: '{name}, bar series {ix} of {numSeries} with {numPoints} {#plural(numPoints, bars, bar)}.',
284
- columnCombination: '{name}, series {ix} of {numSeries}. Bar series with {numPoints} {#plural(numPoints, bars, bar)}.',
285
- bar: '{name}, bar series {ix} of {numSeries} with {numPoints} {#plural(numPoints, bars, bar)}.',
286
- barCombination: '{name}, series {ix} of {numSeries}. Bar series with {numPoints} {#plural(numPoints, bars, bar)}.',
287
- pie: '{name}, pie {ix} of {numSeries} with {numPoints} {#plural(numPoints, slices, slice)}.',
288
- pieCombination: '{name}, series {ix} of {numSeries}. Pie with {numPoints} {#plural(numPoints, slices, slice)}.',
289
- scatter: '{name}, scatter plot {ix} of {numSeries} with {numPoints} {#plural(numPoints, points, point)}.',
290
- scatterCombination: '{name}, series {ix} of {numSeries}, scatter plot with {numPoints} {#plural(numPoints, points, point)}.',
291
- boxplot: '{name}, boxplot {ix} of {numSeries} with {numPoints} {#plural(numPoints, boxes, box)}.',
292
- boxplotCombination: '{name}, series {ix} of {numSeries}. Boxplot with {numPoints} {#plural(numPoints, boxes, box)}.',
293
- bubble: '{name}, bubble series {ix} of {numSeries} with {numPoints} {#plural(numPoints, bubbles, bubble)}.',
294
- bubbleCombination: '{name}, series {ix} of {numSeries}. Bubble series with {numPoints} {#plural(numPoints, bubbles, bubble)}.',
295
- map: '{name}, map {ix} of {numSeries} with {numPoints} {#plural(numPoints, areas, area)}.',
296
- mapCombination: '{name}, series {ix} of {numSeries}. Map with {numPoints} {#plural(numPoints, areas, area)}.',
297
- mapline: '{name}, line {ix} of {numSeries} with {numPoints} data {#plural(numPoints, points, point)}.',
298
- maplineCombination: '{name}, series {ix} of {numSeries}. Line with {numPoints} data {#plural(numPoints, points, point)}.',
299
- mapbubble: '{name}, bubble series {ix} of {numSeries} with {numPoints} {#plural(numPoints, bubbles, bubble)}.',
300
- mapbubbleCombination: '{name}, series {ix} of {numSeries}. Bubble series with {numPoints} {#plural(numPoints, bubbles, bubble)}.'
282
+ 'default': '{series.name}, series {seriesNumber} of {chart.series.length} with {series.points.length} data {#plural(series.points.length, points, point)}.',
283
+ defaultCombination: '{series.name}, series {seriesNumber} of {chart.series.length} with {series.points.length} data {#plural(series.points.length, points, point)}.',
284
+ line: '{series.name}, line {seriesNumber} of {chart.series.length} with {series.points.length} data {#plural(series.points.length, points, point)}.',
285
+ lineCombination: '{series.name}, series {seriesNumber} of {chart.series.length}. Line with {series.points.length} data {#plural(series.points.length, points, point)}.',
286
+ spline: '{series.name}, line {seriesNumber} of {chart.series.length} with {series.points.length} data {#plural(series.points.length, points, point)}.',
287
+ splineCombination: '{series.name}, series {seriesNumber} of {chart.series.length}. Line with {series.points.length} data {#plural(series.points.length, points, point)}.',
288
+ column: '{series.name}, bar series {seriesNumber} of {chart.series.length} with {series.points.length} {#plural(series.points.length, bars, bar)}.',
289
+ columnCombination: '{series.name}, series {seriesNumber} of {chart.series.length}. Bar series with {series.points.length} {#plural(series.points.length, bars, bar)}.',
290
+ bar: '{series.name}, bar series {seriesNumber} of {chart.series.length} with {series.points.length} {#plural(series.points.length, bars, bar)}.',
291
+ barCombination: '{series.name}, series {seriesNumber} of {chart.series.length}. Bar series with {series.points.length} {#plural(series.points.length, bars, bar)}.',
292
+ pie: '{series.name}, pie {seriesNumber} of {chart.series.length} with {series.points.length} {#plural(series.points.length, slices, slice)}.',
293
+ pieCombination: '{series.name}, series {seriesNumber} of {chart.series.length}. Pie with {series.points.length} {#plural(series.points.length, slices, slice)}.',
294
+ scatter: '{series.name}, scatter plot {seriesNumber} of {chart.series.length} with {series.points.length} {#plural(series.points.length, points, point)}.',
295
+ scatterCombination: '{series.name}, series {seriesNumber} of {chart.series.length}, scatter plot with {series.points.length} {#plural(series.points.length, points, point)}.',
296
+ boxplot: '{series.name}, boxplot {seriesNumber} of {chart.series.length} with {series.points.length} {#plural(series.points.length, boxes, box)}.',
297
+ boxplotCombination: '{series.name}, series {seriesNumber} of {chart.series.length}. Boxplot with {series.points.length} {#plural(series.points.length, boxes, box)}.',
298
+ bubble: '{series.name}, bubble series {seriesNumber} of {chart.series.length} with {series.points.length} {#plural(series.points.length, bubbles, bubble)}.',
299
+ bubbleCombination: '{series.name}, series {seriesNumber} of {chart.series.length}. Bubble series with {series.points.length} {#plural(series.points.length, bubbles, bubble)}.',
300
+ map: '{series.name}, map {seriesNumber} of {chart.series.length} with {series.points.length} {#plural(series.points.length, areas, area)}.',
301
+ mapCombination: '{series.name}, series {seriesNumber} of {chart.series.length}. Map with {series.points.length} {#plural(series.points.length, areas, area)}.',
302
+ mapline: '{series.name}, line {seriesNumber} of {chart.series.length} with {series.points.length} data {#plural(series.points.length, points, point)}.',
303
+ maplineCombination: '{series.name}, series {seriesNumber} of {chart.series.length}. Line with {series.points.length} data {#plural(series.points.length, points, point)}.',
304
+ mapbubble: '{series.name}, bubble series {seriesNumber} of {chart.series.length} with {series.points.length} {#plural(series.points.length, bubbles, bubble)}.',
305
+ mapbubbleCombination: '{series.name}, series {seriesNumber} of {chart.series.length}. Bubble series with {series.points.length} {#plural(series.points.length, bubbles, bubble)}.'
301
306
  },
302
307
  /**
303
308
  * User supplied description text. This is added in the point
@@ -90,7 +90,17 @@ var Options = {
90
90
  */
91
91
  accessibility: {
92
92
  /**
93
- * Enable accessibility functionality for the chart.
93
+ * Enable accessibility functionality for the chart. For more
94
+ * information on how to include these features, and why this is
95
+ * recommended, see [Highcharts Accessibility](https://www.highcharts.com/docs/accessibility/accessibility-module).
96
+ *
97
+ * Highcharts will by default emit a warning to the console if
98
+ * the [accessibility module](https://code.highcharts.com/modules/accessibility.js)
99
+ * is not loaded. Setting this option to `false` will override
100
+ * and silence the warning.
101
+ *
102
+ * Once the module is loaded, setting this option to `false`
103
+ * will disable the module for this chart.
94
104
  *
95
105
  * @since 5.0.0
96
106
  */
@@ -204,12 +214,43 @@ var Options = {
204
214
  * of the series for a screen reader user. If `false` is returned,
205
215
  * the default formatter will be used for that series.
206
216
  *
217
+ * @see [series.descriptionFormat](#accessibility.series.descriptionFormat)
207
218
  * @see [series.description](#plotOptions.series.description)
208
219
  *
209
220
  * @type {Highcharts.ScreenReaderFormatterCallbackFunction<Highcharts.Series>}
210
221
  * @since 8.0.0
211
222
  * @apioption accessibility.series.descriptionFormatter
212
223
  */
224
+ /**
225
+ * Format to use for describing the data series group to assistive
226
+ * technology - including screen readers.
227
+ *
228
+ * The series context and its subproperties are available under the
229
+ * variable `{series}`, for example `{series.name}` for the series
230
+ * name, and `{series.points.length}` for the number of data points.
231
+ *
232
+ * The chart context and its subproperties are available under the
233
+ * variable `{chart}`, for example `{chart.series.length}` for the
234
+ * number of series in the chart.
235
+ *
236
+ * `{seriesDescription}` refers to the automatic description of the
237
+ * series type and number of points added by Highcharts by default.
238
+ * `{authorDescription}` refers to the description added in
239
+ * [series.description](#plotOptions.series.description) if one is
240
+ * present. `{axisDescription}` refers to the description added if
241
+ * the chart has multiple X or Y axes.
242
+ *
243
+ * Note that if [series.descriptionFormatter](#accessibility.series.descriptionFormatter)
244
+ * is declared it will take precedence, and this option will be
245
+ * overridden.
246
+ *
247
+ * @sample highcharts/accessibility/advanced-accessible
248
+ * Accessible low-medium-high chart
249
+ *
250
+ * @type {string}
251
+ * @since 10.1.0
252
+ */
253
+ descriptionFormat: '{seriesDescription}{authorDescription}{axisDescription}',
213
254
  /**
214
255
  * Whether or not to add series descriptions to charts with a single
215
256
  * series.
@@ -311,6 +352,8 @@ var Options = {
311
352
  * to assistive technology - including screen readers.
312
353
  * The point context is available as `{point}`.
313
354
  *
355
+ * Other available context variables include `{index}`, `{value}`, and `{xDescription}`.
356
+ *
314
357
  * Additionally, the series name, annotation info, and
315
358
  * description added in `point.accessibility.description`
316
359
  * is added by default if relevant. To override this, use the
@@ -323,7 +366,18 @@ var Options = {
323
366
  * @type {string}
324
367
  * @since 8.0.1
325
368
  */
326
- valueDescriptionFormat: '{index}. {xDescription}{separator}{value}.'
369
+ valueDescriptionFormat: '{xDescription}{separator}{value}.',
370
+ /**
371
+ * Whether or not to describe points with the value `null` to
372
+ * assistive technology, such as screen readers.
373
+ *
374
+ * @sample {highmaps} maps/demo/all-areas-as-null
375
+ * Accessible map with null points
376
+ *
377
+ * @type {boolean}
378
+ * @since 10.1.0
379
+ */
380
+ describeNull: true
327
381
  },
328
382
  /**
329
383
  * Amount of landmarks/regions to create for screen reader users. More
@@ -567,7 +621,16 @@ var Options = {
567
621
  * @type {boolean|number}
568
622
  * @since 8.0.0
569
623
  */
570
- pointNavigationEnabledThreshold: false
624
+ pointNavigationEnabledThreshold: false,
625
+ /**
626
+ * Remember which point was focused even after navigating away
627
+ * from the series, so that when navigating back to the series
628
+ * you start at the last focused point.
629
+ *
630
+ * @type {boolean}
631
+ * @since 10.1.0
632
+ */
633
+ rememberPointFocus: false
571
634
  }
572
635
  },
573
636
  /**
@@ -90,9 +90,15 @@ var ProxyElement = /** @class */ (function () {
90
90
  ProxyElement.prototype.updateTarget = function (target, attributes) {
91
91
  this.target = target;
92
92
  this.updateCSSClassName();
93
+ var attrs = attributes || {};
94
+ Object.keys(attrs).forEach(function (a) {
95
+ if (attrs[a] === null) {
96
+ delete attrs[a];
97
+ }
98
+ });
93
99
  attr(this.buttonElement, merge({
94
100
  'aria-label': this.getTargetAttr(target.click, 'aria-label')
95
- }, attributes));
101
+ }, attrs));
96
102
  this.eventProvider.removeAddedEvents();
97
103
  this.addProxyEventsToButton(this.buttonElement, target.click);
98
104
  this.refreshPosition();
@@ -189,12 +195,14 @@ var ProxyElement = /** @class */ (function () {
189
195
  var posElement = this.target.visual || clickTargetElement;
190
196
  var chartDiv = this.chart.renderTo;
191
197
  if (chartDiv && posElement && posElement.getBoundingClientRect) {
192
- var rectEl = posElement.getBoundingClientRect(), rectDiv = chartDiv.getBoundingClientRect();
198
+ var rectEl = posElement.getBoundingClientRect(), chartPos = this.chart.pointer.getChartPosition();
193
199
  return {
194
- x: rectEl.left - rectDiv.left,
195
- y: rectEl.top - rectDiv.top,
196
- width: rectEl.right - rectEl.left,
197
- height: rectEl.bottom - rectEl.top
200
+ x: (rectEl.left - chartPos.left) / chartPos.scaleX,
201
+ y: (rectEl.top - chartPos.top) / chartPos.scaleY,
202
+ width: rectEl.right / chartPos.scaleX -
203
+ rectEl.left / chartPos.scaleX,
204
+ height: rectEl.bottom / chartPos.scaleY -
205
+ rectEl.top / chartPos.scaleY
198
206
  };
199
207
  }
200
208
  return { x: 0, y: 0, width: 1, height: 1 };
@@ -72,10 +72,13 @@ var ProxyProvider = /** @class */ (function () {
72
72
  /**
73
73
  * Create a group that will contain proxy elements. The group order is
74
74
  * automatically updated according to the last group order keys.
75
+ *
76
+ * Returns the added group.
75
77
  */
76
78
  ProxyProvider.prototype.addGroup = function (groupKey, groupType, attributes) {
77
- if (this.groups[groupKey]) {
78
- return;
79
+ var existingGroup = this.groups[groupKey];
80
+ if (existingGroup) {
81
+ return existingGroup.groupElement;
79
82
  }
80
83
  var proxyContainer = this.domElementProvider.createElement(groupType);
81
84
  // If we want to add a role to the group, and still use e.g.
@@ -104,6 +107,7 @@ var ProxyProvider = /** @class */ (function () {
104
107
  // won't have to reorder the whole set of groups.
105
108
  this.afterChartProxyPosContainer.appendChild(groupElement);
106
109
  this.updateGroupOrder(this.groupOrder);
110
+ return groupElement;
107
111
  };
108
112
  /**
109
113
  * Update HTML attributes of a group.
@@ -286,6 +290,10 @@ var ProxyProvider = /** @class */ (function () {
286
290
  */
287
291
  ProxyProvider.prototype.updatePosContainerPositions = function () {
288
292
  var chart = this.chart;
293
+ // If exporting, don't add these containers to the DOM.
294
+ if (chart.renderer.forExport) {
295
+ return;
296
+ }
289
297
  var rendererSVGEl = chart.renderer.box;
290
298
  chart.container.insertBefore(this.afterChartProxyPosContainer, rendererSVGEl.nextSibling);
291
299
  chart.container.insertBefore(this.beforeChartProxyPosContainer, rendererSVGEl);
@@ -113,9 +113,9 @@ function getCategoryAxisRangeDesc(axis) {
113
113
  * @private
114
114
  */
115
115
  function getAxisTimeLengthDesc(axis) {
116
- var chart = axis.chart, range = {};
116
+ var chart = axis.chart, range = {}, min = axis.dataMin || axis.min || 0, max = axis.dataMax || axis.max || 0;
117
117
  var rangeUnit = 'Seconds';
118
- range.Seconds = ((axis.max || 0) - (axis.min || 0)) / 1000;
118
+ range.Seconds = (max - min) / 1000;
119
119
  range.Minutes = range.Seconds / 60;
120
120
  range.Hours = range.Minutes / 60;
121
121
  range.Days = range.Hours / 24;
@@ -142,8 +142,13 @@ function getAxisFromToDescription(axis) {
142
142
  var chart = axis.chart, options = chart.options, dateRangeFormat = (options &&
143
143
  options.accessibility &&
144
144
  options.accessibility.screenReaderSection.axisRangeDateFormat ||
145
- ''), format = function (axisKey) {
146
- return axis.dateTime ? chart.time.dateFormat(dateRangeFormat, axis[axisKey]) : axis[axisKey];
145
+ ''), extremes = {
146
+ min: axis.dataMin || axis.min || 0,
147
+ max: axis.dataMax || axis.max || 0
148
+ }, format = function (key) {
149
+ return axis.dateTime ?
150
+ chart.time.dateFormat(dateRangeFormat, extremes[key]) :
151
+ extremes[key].toString();
147
152
  };
148
153
  return chart.langFormat('accessibility.axis.rangeFromTo', {
149
154
  chart: chart,