@ntlab/ntjs-assets 2.0.21 → 2.0.23

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 (434) hide show
  1. package/assets/js/DataTables/DataTables/js/dataTables.js +32 -15
  2. package/assets/js/DataTables/DataTables/js/dataTables.min.js +2 -2
  3. package/assets/js/DataTables/Extensions/ColReorder/js/dataTables.colReorder.js +13 -6
  4. package/assets/js/DataTables/Extensions/ColReorder/js/dataTables.colReorder.min.js +4 -4
  5. package/assets/js/DataTables/Extensions/KeyTable/js/dataTables.keyTable.js +4 -4
  6. package/assets/js/DataTables/Extensions/KeyTable/js/dataTables.keyTable.min.js +2 -2
  7. package/assets/js/DataTables/Extensions/Scroller/js/dataTables.scroller.js +7 -3
  8. package/assets/js/DataTables/Extensions/Scroller/js/dataTables.scroller.min.js +2 -2
  9. package/assets/js/DataTables/Extensions/Select/js/dataTables.select.js +22 -8
  10. package/assets/js/DataTables/Extensions/Select/js/dataTables.select.min.js +2 -2
  11. package/assets/js/cdn.json +7 -7
  12. package/assets/js/highcharts/css/highcharts.css +74 -0
  13. package/assets/js/highcharts/es-modules/Accessibility/Components/LegendComponent.js +1 -1
  14. package/assets/js/highcharts/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +1 -1
  15. package/assets/js/highcharts/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +9 -2
  16. package/assets/js/highcharts/es-modules/Core/Axis/Axis.js +25 -15
  17. package/assets/js/highcharts/es-modules/Core/Axis/AxisDefaults.js +3 -2
  18. package/assets/js/highcharts/es-modules/Core/Axis/Color/ColorAxis.js +1 -1
  19. package/assets/js/highcharts/es-modules/Core/Axis/Color/ColorAxisDefaults.js +2 -2
  20. package/assets/js/highcharts/es-modules/Core/Axis/GridAxis.js +1 -1
  21. package/assets/js/highcharts/es-modules/Core/Axis/OrdinalAxis.js +1 -1
  22. package/assets/js/highcharts/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +10 -0
  23. package/assets/js/highcharts/es-modules/Core/Axis/RadialAxis.js +19 -113
  24. package/assets/js/highcharts/es-modules/Core/Axis/RadialAxisDefaults.js +128 -0
  25. package/assets/js/highcharts/es-modules/Core/Axis/Tick.js +9 -13
  26. package/assets/js/highcharts/es-modules/Core/Chart/Chart.js +21 -17
  27. package/assets/js/highcharts/es-modules/Core/Chart/ChartDefaults.js +4 -2
  28. package/assets/js/highcharts/es-modules/Core/Chart/StockChart.js +5 -9
  29. package/assets/js/highcharts/es-modules/Core/Defaults.js +180 -91
  30. package/assets/js/highcharts/es-modules/Core/Renderer/SVG/SVGElement.js +50 -28
  31. package/assets/js/highcharts/es-modules/Core/Renderer/SVG/SVGLabel.js +6 -3
  32. package/assets/js/highcharts/es-modules/Core/Renderer/SVG/SVGRenderer.js +38 -80
  33. package/assets/js/highcharts/es-modules/Core/Renderer/SVG/Symbols.js +9 -5
  34. package/assets/js/highcharts/es-modules/Core/Series/DataLabel.js +17 -10
  35. package/assets/js/highcharts/es-modules/Core/Series/Point.js +4 -3
  36. package/assets/js/highcharts/es-modules/Core/Series/Series.js +24 -15
  37. package/assets/js/highcharts/es-modules/Core/Series/SeriesDefaults.js +15 -0
  38. package/assets/js/highcharts/es-modules/Core/Templating.js +4 -1
  39. package/assets/js/highcharts/es-modules/Core/Tooltip.js +17 -55
  40. package/assets/js/highcharts/es-modules/Core/Utilities.js +16 -0
  41. package/assets/js/highcharts/es-modules/Data/Converters/CSVConverter.js +1 -1
  42. package/assets/js/highcharts/es-modules/Data/DataCursor.js +34 -16
  43. package/assets/js/highcharts/es-modules/Data/DataPool.js +1 -1
  44. package/assets/js/highcharts/es-modules/Extensions/Annotations/Controllables/Controllable.js +3 -0
  45. package/assets/js/highcharts/es-modules/Extensions/Annotations/Controllables/ControllableLabel.js +0 -3
  46. package/assets/js/highcharts/es-modules/Extensions/Annotations/Controllables/ControllablePath.js +0 -3
  47. package/assets/js/highcharts/es-modules/Extensions/Annotations/EventEmitter.js +6 -6
  48. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/BasicAnnotation.js +2 -0
  49. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/CrookedLine.js +1 -0
  50. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/Fibonacci.js +4 -2
  51. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/FibonacciTimeZones.js +2 -1
  52. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/InfinityLine.js +2 -1
  53. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/Measure.js +4 -3
  54. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/Pitchfork.js +11 -5
  55. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/TimeCycles.js +2 -1
  56. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/Tunnel.js +4 -2
  57. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/VerticalLine.js +2 -1
  58. package/assets/js/highcharts/es-modules/Extensions/Boost/BoostChart.js +11 -3
  59. package/assets/js/highcharts/es-modules/Extensions/Boost/BoostSeries.js +7 -4
  60. package/assets/js/highcharts/es-modules/Extensions/Boost/WGLRenderer.js +11 -2
  61. package/assets/js/highcharts/es-modules/Extensions/Data.js +3 -3
  62. package/assets/js/highcharts/es-modules/Extensions/DataGrouping/DataGroupingSeriesComposition.js +1 -0
  63. package/assets/js/highcharts/es-modules/Extensions/DownloadURL.js +3 -0
  64. package/assets/js/highcharts/es-modules/Extensions/DragPanes/AxisResizer.js +1 -2
  65. package/assets/js/highcharts/es-modules/Extensions/DraggablePoints/DragDropProps.js +17 -0
  66. package/assets/js/highcharts/es-modules/Extensions/DraggablePoints/DraggablePoints.js +1 -0
  67. package/assets/js/highcharts/es-modules/Extensions/Drilldown/Drilldown.js +14 -14
  68. package/assets/js/highcharts/es-modules/Extensions/Exporting/Exporting.js +13 -18
  69. package/assets/js/highcharts/es-modules/Extensions/Exporting/ExportingDefaults.js +8 -6
  70. package/assets/js/highcharts/es-modules/Extensions/OfflineExporting/OfflineExporting.js +38 -30
  71. package/assets/js/highcharts/es-modules/Extensions/Pane/PaneDefaults.js +11 -0
  72. package/assets/js/highcharts/es-modules/Extensions/RegexLimits.js +1 -0
  73. package/assets/js/highcharts/es-modules/Extensions/ScrollablePlotArea.js +19 -17
  74. package/assets/js/highcharts/es-modules/Extensions/Themes/BrandDark.js +13 -1
  75. package/assets/js/highcharts/es-modules/Maps/MapNavigation.js +5 -3
  76. package/assets/js/highcharts/es-modules/Maps/MapView.js +5 -5
  77. package/assets/js/highcharts/es-modules/Maps/Projection.js +39 -20
  78. package/assets/js/highcharts/es-modules/Series/ArcDiagram/ArcDiagramSeries.js +10 -231
  79. package/assets/js/highcharts/es-modules/Series/ArcDiagram/ArcDiagramSeriesDefaults.js +245 -0
  80. package/assets/js/highcharts/es-modules/Series/Area/AreaSeries.js +2 -222
  81. package/assets/js/highcharts/es-modules/Series/Area/AreaSeriesDefaults.js +239 -0
  82. package/assets/js/highcharts/es-modules/Series/AreaRange/AreaRangeSeries.js +0 -133
  83. package/assets/js/highcharts/es-modules/Series/AreaRange/AreaRangeSeriesDefaults.js +273 -0
  84. package/assets/js/highcharts/es-modules/Series/BoxPlot/BoxPlotSeries.js +36 -38
  85. package/assets/js/highcharts/es-modules/Series/Bubble/BubbleSeries.js +17 -6
  86. package/assets/js/highcharts/es-modules/Series/Candlestick/CandlestickSeries.js +9 -11
  87. package/assets/js/highcharts/es-modules/Series/ColorMapComposition.js +28 -4
  88. package/assets/js/highcharts/es-modules/Series/Column/ColumnDataLabel.js +1 -1
  89. package/assets/js/highcharts/es-modules/Series/Column/ColumnSeries.js +25 -30
  90. package/assets/js/highcharts/es-modules/Series/DataModifyComposition.js +26 -2
  91. package/assets/js/highcharts/es-modules/Series/DotPlot/DotPlotSeries.js +37 -27
  92. package/assets/js/highcharts/es-modules/Series/DotPlot/DotPlotSeriesDefaults.js +3 -2
  93. package/assets/js/highcharts/es-modules/Series/Dumbbell/DumbbellSeries.js +1 -39
  94. package/assets/js/highcharts/es-modules/Series/Dumbbell/DumbbellSeriesDefaults.js +29 -0
  95. package/assets/js/highcharts/es-modules/Series/Flags/FlagsSeries.js +2 -1
  96. package/assets/js/highcharts/es-modules/Series/GeoHeatmap/GeoHeatmapSeries.js +3 -10
  97. package/assets/js/highcharts/es-modules/Series/HLC/HLCSeries.js +4 -5
  98. package/assets/js/highcharts/es-modules/Series/MapLine/MapLineSeriesDefaults.js +7 -6
  99. package/assets/js/highcharts/es-modules/Series/MapPoint/MapPointSeriesDefaults.js +17 -11
  100. package/assets/js/highcharts/es-modules/Series/Networkgraph/NetworkgraphSeriesDefaults.js +1 -1
  101. package/assets/js/highcharts/es-modules/Series/Networkgraph/ReingoldFruchtermanLayout.js +1 -1
  102. package/assets/js/highcharts/es-modules/Series/OHLC/OHLCSeries.js +3 -5
  103. package/assets/js/highcharts/es-modules/Series/Organization/OrganizationSeries.js +17 -19
  104. package/assets/js/highcharts/es-modules/Series/Organization/OrganizationSeriesDefaults.js +1 -1
  105. package/assets/js/highcharts/es-modules/Series/PackedBubble/PackedBubbleLayout.js +3 -3
  106. package/assets/js/highcharts/es-modules/Series/PackedBubble/PackedBubbleSeries.js +3 -3
  107. package/assets/js/highcharts/es-modules/Series/PackedBubble/PackedBubbleSeriesDefaults.js +0 -1
  108. package/assets/js/highcharts/es-modules/Series/Pyramid/PyramidSeriesDefaults.js +3 -3
  109. package/assets/js/highcharts/es-modules/Series/Sankey/SankeySeries.js +5 -6
  110. package/assets/js/highcharts/es-modules/Series/Sankey/SankeySeriesDefaults.js +1 -1
  111. package/assets/js/highcharts/es-modules/Series/SeriesOnPointComposition.js +2 -2
  112. package/assets/js/highcharts/es-modules/Series/Sunburst/SunburstSeriesDefaults.js +1 -1
  113. package/assets/js/highcharts/es-modules/Series/Treegraph/TreegraphLink.js +12 -7
  114. package/assets/js/highcharts/es-modules/Series/Treegraph/TreegraphSeries.js +8 -9
  115. package/assets/js/highcharts/es-modules/Series/Treemap/TreemapSeries.js +8 -8
  116. package/assets/js/highcharts/es-modules/Series/Treemap/TreemapSeriesDefaults.js +1 -1
  117. package/assets/js/highcharts/es-modules/Series/Variwide/VariwideSeries.js +4 -4
  118. package/assets/js/highcharts/es-modules/Series/Venn/VennSeriesDefaults.js +2 -2
  119. package/assets/js/highcharts/es-modules/Series/Waterfall/WaterfallSeries.js +11 -12
  120. package/assets/js/highcharts/es-modules/Series/XRange/XRangeSeries.js +4 -4
  121. package/assets/js/highcharts/es-modules/Stock/Navigator/Navigator.js +2 -5
  122. package/assets/js/highcharts/es-modules/Stock/Navigator/NavigatorDefaults.js +11 -0
  123. package/assets/js/highcharts/es-modules/Stock/Navigator/NavigatorSymbols.js +9 -10
  124. package/assets/js/highcharts/es-modules/Stock/RangeSelector/RangeSelector.js +162 -187
  125. package/assets/js/highcharts/es-modules/Stock/RangeSelector/RangeSelectorComposition.js +32 -74
  126. package/assets/js/highcharts/es-modules/Stock/Scrollbar/Scrollbar.js +6 -7
  127. package/assets/js/highcharts/es-modules/masters/highcharts-more.src.js +2 -0
  128. package/assets/js/highcharts/highcharts-3d.js +1 -1
  129. package/assets/js/highcharts/highcharts-3d.src.js +1 -1
  130. package/assets/js/highcharts/highcharts-gantt.js +3 -3
  131. package/assets/js/highcharts/highcharts-gantt.src.js +2008 -906
  132. package/assets/js/highcharts/highcharts-more.js +2 -2
  133. package/assets/js/highcharts/highcharts-more.src.js +234 -313
  134. package/assets/js/highcharts/highcharts.js +3 -3
  135. package/assets/js/highcharts/highcharts.src.js +743 -616
  136. package/assets/js/highcharts/highmaps.js +3 -3
  137. package/assets/js/highcharts/highmaps.src.js +862 -673
  138. package/assets/js/highcharts/highstock.js +3 -3
  139. package/assets/js/highcharts/highstock.src.js +1016 -935
  140. package/assets/js/highcharts/indicators/acceleration-bands.js +1 -1
  141. package/assets/js/highcharts/indicators/acceleration-bands.src.js +1 -1
  142. package/assets/js/highcharts/indicators/accumulation-distribution.js +1 -1
  143. package/assets/js/highcharts/indicators/accumulation-distribution.src.js +1 -1
  144. package/assets/js/highcharts/indicators/ao.js +1 -1
  145. package/assets/js/highcharts/indicators/ao.src.js +1 -1
  146. package/assets/js/highcharts/indicators/apo.js +1 -1
  147. package/assets/js/highcharts/indicators/apo.src.js +1 -1
  148. package/assets/js/highcharts/indicators/aroon-oscillator.js +1 -1
  149. package/assets/js/highcharts/indicators/aroon-oscillator.src.js +1 -1
  150. package/assets/js/highcharts/indicators/aroon.js +1 -1
  151. package/assets/js/highcharts/indicators/aroon.src.js +1 -1
  152. package/assets/js/highcharts/indicators/atr.js +1 -1
  153. package/assets/js/highcharts/indicators/atr.src.js +1 -1
  154. package/assets/js/highcharts/indicators/bollinger-bands.js +1 -1
  155. package/assets/js/highcharts/indicators/bollinger-bands.src.js +1 -1
  156. package/assets/js/highcharts/indicators/cci.js +1 -1
  157. package/assets/js/highcharts/indicators/cci.src.js +1 -1
  158. package/assets/js/highcharts/indicators/chaikin.js +1 -1
  159. package/assets/js/highcharts/indicators/chaikin.src.js +1 -1
  160. package/assets/js/highcharts/indicators/cmf.js +1 -1
  161. package/assets/js/highcharts/indicators/cmf.src.js +1 -1
  162. package/assets/js/highcharts/indicators/cmo.js +1 -1
  163. package/assets/js/highcharts/indicators/cmo.src.js +1 -1
  164. package/assets/js/highcharts/indicators/dema.js +1 -1
  165. package/assets/js/highcharts/indicators/dema.src.js +1 -1
  166. package/assets/js/highcharts/indicators/disparity-index.js +1 -1
  167. package/assets/js/highcharts/indicators/disparity-index.src.js +1 -1
  168. package/assets/js/highcharts/indicators/dmi.js +1 -1
  169. package/assets/js/highcharts/indicators/dmi.src.js +1 -1
  170. package/assets/js/highcharts/indicators/dpo.js +1 -1
  171. package/assets/js/highcharts/indicators/dpo.src.js +1 -1
  172. package/assets/js/highcharts/indicators/ichimoku-kinko-hyo.js +1 -1
  173. package/assets/js/highcharts/indicators/ichimoku-kinko-hyo.src.js +1 -1
  174. package/assets/js/highcharts/indicators/indicators-all.js +1 -1
  175. package/assets/js/highcharts/indicators/indicators-all.src.js +1 -1
  176. package/assets/js/highcharts/indicators/indicators.js +1 -1
  177. package/assets/js/highcharts/indicators/indicators.src.js +1 -1
  178. package/assets/js/highcharts/indicators/keltner-channels.js +1 -1
  179. package/assets/js/highcharts/indicators/keltner-channels.src.js +1 -1
  180. package/assets/js/highcharts/indicators/klinger.js +1 -1
  181. package/assets/js/highcharts/indicators/klinger.src.js +1 -1
  182. package/assets/js/highcharts/indicators/macd.js +1 -1
  183. package/assets/js/highcharts/indicators/macd.src.js +1 -1
  184. package/assets/js/highcharts/indicators/mfi.js +1 -1
  185. package/assets/js/highcharts/indicators/mfi.src.js +1 -1
  186. package/assets/js/highcharts/indicators/momentum.js +1 -1
  187. package/assets/js/highcharts/indicators/momentum.src.js +1 -1
  188. package/assets/js/highcharts/indicators/natr.js +1 -1
  189. package/assets/js/highcharts/indicators/natr.src.js +1 -1
  190. package/assets/js/highcharts/indicators/obv.js +1 -1
  191. package/assets/js/highcharts/indicators/obv.src.js +1 -1
  192. package/assets/js/highcharts/indicators/pivot-points.js +1 -1
  193. package/assets/js/highcharts/indicators/pivot-points.src.js +1 -1
  194. package/assets/js/highcharts/indicators/ppo.js +1 -1
  195. package/assets/js/highcharts/indicators/ppo.src.js +1 -1
  196. package/assets/js/highcharts/indicators/price-channel.js +1 -1
  197. package/assets/js/highcharts/indicators/price-channel.src.js +1 -1
  198. package/assets/js/highcharts/indicators/price-envelopes.js +1 -1
  199. package/assets/js/highcharts/indicators/price-envelopes.src.js +1 -1
  200. package/assets/js/highcharts/indicators/psar.js +1 -1
  201. package/assets/js/highcharts/indicators/psar.src.js +1 -1
  202. package/assets/js/highcharts/indicators/regressions.js +1 -1
  203. package/assets/js/highcharts/indicators/regressions.src.js +1 -1
  204. package/assets/js/highcharts/indicators/roc.js +1 -1
  205. package/assets/js/highcharts/indicators/roc.src.js +1 -1
  206. package/assets/js/highcharts/indicators/rsi.js +1 -1
  207. package/assets/js/highcharts/indicators/rsi.src.js +1 -1
  208. package/assets/js/highcharts/indicators/slow-stochastic.js +1 -1
  209. package/assets/js/highcharts/indicators/slow-stochastic.src.js +1 -1
  210. package/assets/js/highcharts/indicators/stochastic.js +1 -1
  211. package/assets/js/highcharts/indicators/stochastic.src.js +1 -1
  212. package/assets/js/highcharts/indicators/supertrend.js +1 -1
  213. package/assets/js/highcharts/indicators/supertrend.src.js +1 -1
  214. package/assets/js/highcharts/indicators/tema.js +1 -1
  215. package/assets/js/highcharts/indicators/tema.src.js +1 -1
  216. package/assets/js/highcharts/indicators/trendline.js +1 -1
  217. package/assets/js/highcharts/indicators/trendline.src.js +1 -1
  218. package/assets/js/highcharts/indicators/trix.js +1 -1
  219. package/assets/js/highcharts/indicators/trix.src.js +1 -1
  220. package/assets/js/highcharts/indicators/volume-by-price.js +1 -1
  221. package/assets/js/highcharts/indicators/volume-by-price.src.js +1 -1
  222. package/assets/js/highcharts/indicators/vwap.js +1 -1
  223. package/assets/js/highcharts/indicators/vwap.src.js +1 -1
  224. package/assets/js/highcharts/indicators/williams-r.js +1 -1
  225. package/assets/js/highcharts/indicators/williams-r.src.js +1 -1
  226. package/assets/js/highcharts/indicators/wma.js +1 -1
  227. package/assets/js/highcharts/indicators/wma.src.js +1 -1
  228. package/assets/js/highcharts/indicators/zigzag.js +1 -1
  229. package/assets/js/highcharts/indicators/zigzag.src.js +1 -1
  230. package/assets/js/highcharts/modules/accessibility.js +2 -2
  231. package/assets/js/highcharts/modules/accessibility.src.js +39 -28
  232. package/assets/js/highcharts/modules/annotations-advanced.js +2 -2
  233. package/assets/js/highcharts/modules/annotations-advanced.src.js +46 -31
  234. package/assets/js/highcharts/modules/annotations.js +2 -2
  235. package/assets/js/highcharts/modules/annotations.src.js +12 -15
  236. package/assets/js/highcharts/modules/arc-diagram.js +2 -2
  237. package/assets/js/highcharts/modules/arc-diagram.src.js +258 -233
  238. package/assets/js/highcharts/modules/arrow-symbols.js +1 -1
  239. package/assets/js/highcharts/modules/arrow-symbols.src.js +1 -1
  240. package/assets/js/highcharts/modules/boost-canvas.js +2 -2
  241. package/assets/js/highcharts/modules/boost-canvas.src.js +30 -10
  242. package/assets/js/highcharts/modules/boost.js +2 -2
  243. package/assets/js/highcharts/modules/boost.src.js +30 -10
  244. package/assets/js/highcharts/modules/broken-axis.js +1 -1
  245. package/assets/js/highcharts/modules/broken-axis.src.js +1 -1
  246. package/assets/js/highcharts/modules/bullet.js +1 -1
  247. package/assets/js/highcharts/modules/bullet.src.js +1 -1
  248. package/assets/js/highcharts/modules/coloraxis.js +2 -2
  249. package/assets/js/highcharts/modules/coloraxis.src.js +4 -4
  250. package/assets/js/highcharts/modules/current-date-indicator.js +1 -1
  251. package/assets/js/highcharts/modules/current-date-indicator.src.js +1 -1
  252. package/assets/js/highcharts/modules/cylinder.js +1 -1
  253. package/assets/js/highcharts/modules/cylinder.src.js +1 -1
  254. package/assets/js/highcharts/modules/data-tools.js +2 -2
  255. package/assets/js/highcharts/modules/data-tools.src.js +37 -19
  256. package/assets/js/highcharts/modules/data.js +1 -1
  257. package/assets/js/highcharts/modules/data.src.js +4 -4
  258. package/assets/js/highcharts/modules/datagrouping.js +2 -2
  259. package/assets/js/highcharts/modules/datagrouping.src.js +2 -1
  260. package/assets/js/highcharts/modules/debugger.js +1 -1
  261. package/assets/js/highcharts/modules/debugger.src.js +1 -1
  262. package/assets/js/highcharts/modules/dependency-wheel.js +1 -1
  263. package/assets/js/highcharts/modules/dependency-wheel.src.js +1 -1
  264. package/assets/js/highcharts/modules/dotplot.js +2 -2
  265. package/assets/js/highcharts/modules/dotplot.src.js +41 -30
  266. package/assets/js/highcharts/modules/drag-panes.js +2 -2
  267. package/assets/js/highcharts/modules/drag-panes.src.js +2 -3
  268. package/assets/js/highcharts/modules/draggable-points.js +2 -2
  269. package/assets/js/highcharts/modules/draggable-points.src.js +19 -1
  270. package/assets/js/highcharts/modules/drilldown.js +2 -2
  271. package/assets/js/highcharts/modules/drilldown.src.js +15 -15
  272. package/assets/js/highcharts/modules/dumbbell.js +2 -2
  273. package/assets/js/highcharts/modules/dumbbell.src.js +31 -40
  274. package/assets/js/highcharts/modules/export-data.js +2 -2
  275. package/assets/js/highcharts/modules/export-data.src.js +4 -1
  276. package/assets/js/highcharts/modules/exporting.js +2 -2
  277. package/assets/js/highcharts/modules/exporting.src.js +22 -25
  278. package/assets/js/highcharts/modules/flowmap.js +1 -1
  279. package/assets/js/highcharts/modules/flowmap.src.js +1 -1
  280. package/assets/js/highcharts/modules/full-screen.js +1 -1
  281. package/assets/js/highcharts/modules/full-screen.src.js +1 -1
  282. package/assets/js/highcharts/modules/funnel.js +2 -2
  283. package/assets/js/highcharts/modules/funnel.src.js +4 -4
  284. package/assets/js/highcharts/modules/funnel3d.js +1 -1
  285. package/assets/js/highcharts/modules/funnel3d.src.js +1 -1
  286. package/assets/js/highcharts/modules/gantt.js +2 -2
  287. package/assets/js/highcharts/modules/gantt.src.js +1266 -291
  288. package/assets/js/highcharts/modules/geoheatmap.js +1 -1
  289. package/assets/js/highcharts/modules/geoheatmap.src.js +4 -11
  290. package/assets/js/highcharts/modules/grid-axis.js +2 -2
  291. package/assets/js/highcharts/modules/grid-axis.src.js +2 -2
  292. package/assets/js/highcharts/modules/heatmap.js +2 -2
  293. package/assets/js/highcharts/modules/heatmap.src.js +32 -9
  294. package/assets/js/highcharts/modules/heikinashi.js +1 -1
  295. package/assets/js/highcharts/modules/heikinashi.src.js +1 -1
  296. package/assets/js/highcharts/modules/histogram-bellcurve.js +1 -1
  297. package/assets/js/highcharts/modules/histogram-bellcurve.src.js +1 -1
  298. package/assets/js/highcharts/modules/hollowcandlestick.js +1 -1
  299. package/assets/js/highcharts/modules/hollowcandlestick.src.js +1 -1
  300. package/assets/js/highcharts/modules/item-series.js +1 -1
  301. package/assets/js/highcharts/modules/item-series.src.js +1 -1
  302. package/assets/js/highcharts/modules/lollipop.js +1 -1
  303. package/assets/js/highcharts/modules/lollipop.src.js +1 -1
  304. package/assets/js/highcharts/modules/map.js +2 -2
  305. package/assets/js/highcharts/modules/map.src.js +120 -58
  306. package/assets/js/highcharts/modules/marker-clusters.js +1 -1
  307. package/assets/js/highcharts/modules/marker-clusters.src.js +1 -1
  308. package/assets/js/highcharts/modules/mouse-wheel-zoom.js +1 -1
  309. package/assets/js/highcharts/modules/mouse-wheel-zoom.src.js +1 -1
  310. package/assets/js/highcharts/modules/navigator.js +2 -2
  311. package/assets/js/highcharts/modules/navigator.src.js +28 -24
  312. package/assets/js/highcharts/modules/networkgraph.js +2 -2
  313. package/assets/js/highcharts/modules/networkgraph.src.js +3 -3
  314. package/assets/js/highcharts/modules/no-data-to-display.js +1 -1
  315. package/assets/js/highcharts/modules/no-data-to-display.src.js +1 -1
  316. package/assets/js/highcharts/modules/offline-exporting.js +2 -2
  317. package/assets/js/highcharts/modules/offline-exporting.src.js +43 -32
  318. package/assets/js/highcharts/modules/organization.js +2 -2
  319. package/assets/js/highcharts/modules/organization.src.js +19 -21
  320. package/assets/js/highcharts/modules/overlapping-datalabels.js +1 -1
  321. package/assets/js/highcharts/modules/overlapping-datalabels.src.js +1 -1
  322. package/assets/js/highcharts/modules/parallel-coordinates.js +1 -1
  323. package/assets/js/highcharts/modules/parallel-coordinates.src.js +1 -1
  324. package/assets/js/highcharts/modules/pareto.js +1 -1
  325. package/assets/js/highcharts/modules/pareto.src.js +1 -1
  326. package/assets/js/highcharts/modules/pathfinder.js +1 -1
  327. package/assets/js/highcharts/modules/pathfinder.src.js +1 -1
  328. package/assets/js/highcharts/modules/pattern-fill.js +1 -1
  329. package/assets/js/highcharts/modules/pattern-fill.src.js +1 -1
  330. package/assets/js/highcharts/modules/pictorial.js +1 -1
  331. package/assets/js/highcharts/modules/pictorial.src.js +1 -1
  332. package/assets/js/highcharts/modules/price-indicator.js +1 -1
  333. package/assets/js/highcharts/modules/price-indicator.src.js +1 -1
  334. package/assets/js/highcharts/modules/pyramid3d.js +1 -1
  335. package/assets/js/highcharts/modules/pyramid3d.src.js +1 -1
  336. package/assets/js/highcharts/modules/sankey.js +2 -2
  337. package/assets/js/highcharts/modules/sankey.src.js +7 -8
  338. package/assets/js/highcharts/modules/series-label.js +1 -1
  339. package/assets/js/highcharts/modules/series-label.src.js +1 -1
  340. package/assets/js/highcharts/modules/series-on-point.js +2 -2
  341. package/assets/js/highcharts/modules/series-on-point.src.js +3 -3
  342. package/assets/js/highcharts/modules/solid-gauge.js +1 -1
  343. package/assets/js/highcharts/modules/solid-gauge.src.js +1 -1
  344. package/assets/js/highcharts/modules/sonification.js +2 -2
  345. package/assets/js/highcharts/modules/sonification.src.js +4 -1
  346. package/assets/js/highcharts/modules/static-scale.js +1 -1
  347. package/assets/js/highcharts/modules/static-scale.src.js +1 -1
  348. package/assets/js/highcharts/modules/stock-tools.js +2 -2
  349. package/assets/js/highcharts/modules/stock-tools.src.js +3 -3
  350. package/assets/js/highcharts/modules/stock.js +2 -2
  351. package/assets/js/highcharts/modules/stock.src.js +274 -320
  352. package/assets/js/highcharts/modules/streamgraph.js +1 -1
  353. package/assets/js/highcharts/modules/streamgraph.src.js +1 -1
  354. package/assets/js/highcharts/modules/sunburst.js +2 -2
  355. package/assets/js/highcharts/modules/sunburst.src.js +39 -16
  356. package/assets/js/highcharts/modules/tiledwebmap.js +1 -1
  357. package/assets/js/highcharts/modules/tiledwebmap.src.js +1 -1
  358. package/assets/js/highcharts/modules/tilemap.js +1 -1
  359. package/assets/js/highcharts/modules/tilemap.src.js +1 -1
  360. package/assets/js/highcharts/modules/timeline.js +1 -1
  361. package/assets/js/highcharts/modules/timeline.src.js +1 -1
  362. package/assets/js/highcharts/modules/treegraph.js +2 -2
  363. package/assets/js/highcharts/modules/treegraph.src.js +21 -17
  364. package/assets/js/highcharts/modules/treegrid.js +2 -2
  365. package/assets/js/highcharts/modules/treegrid.src.js +2 -2
  366. package/assets/js/highcharts/modules/treemap.js +2 -2
  367. package/assets/js/highcharts/modules/treemap.src.js +38 -15
  368. package/assets/js/highcharts/modules/variable-pie.js +1 -1
  369. package/assets/js/highcharts/modules/variable-pie.src.js +1 -1
  370. package/assets/js/highcharts/modules/variwide.js +2 -2
  371. package/assets/js/highcharts/modules/variwide.src.js +5 -5
  372. package/assets/js/highcharts/modules/vector.js +1 -1
  373. package/assets/js/highcharts/modules/vector.src.js +1 -1
  374. package/assets/js/highcharts/modules/venn.js +1 -1
  375. package/assets/js/highcharts/modules/venn.src.js +3 -3
  376. package/assets/js/highcharts/modules/windbarb.js +1 -1
  377. package/assets/js/highcharts/modules/windbarb.src.js +1 -1
  378. package/assets/js/highcharts/modules/wordcloud.js +1 -1
  379. package/assets/js/highcharts/modules/wordcloud.src.js +1 -1
  380. package/assets/js/highcharts/modules/xrange.js +2 -2
  381. package/assets/js/highcharts/modules/xrange.src.js +5 -5
  382. package/assets/js/highcharts/standalone-navigator.js +2 -2
  383. package/assets/js/highcharts/standalone-navigator.src.js +769 -638
  384. package/assets/js/highcharts/themes/avocado.js +1 -1
  385. package/assets/js/highcharts/themes/avocado.src.js +1 -1
  386. package/assets/js/highcharts/themes/brand-dark.js +2 -2
  387. package/assets/js/highcharts/themes/brand-dark.src.js +14 -2
  388. package/assets/js/highcharts/themes/brand-light.js +1 -1
  389. package/assets/js/highcharts/themes/brand-light.src.js +1 -1
  390. package/assets/js/highcharts/themes/dark-blue.js +1 -1
  391. package/assets/js/highcharts/themes/dark-blue.src.js +1 -1
  392. package/assets/js/highcharts/themes/dark-green.js +1 -1
  393. package/assets/js/highcharts/themes/dark-green.src.js +1 -1
  394. package/assets/js/highcharts/themes/dark-unica.js +1 -1
  395. package/assets/js/highcharts/themes/dark-unica.src.js +1 -1
  396. package/assets/js/highcharts/themes/gray.js +1 -1
  397. package/assets/js/highcharts/themes/gray.src.js +1 -1
  398. package/assets/js/highcharts/themes/grid-light.js +1 -1
  399. package/assets/js/highcharts/themes/grid-light.src.js +1 -1
  400. package/assets/js/highcharts/themes/grid.js +1 -1
  401. package/assets/js/highcharts/themes/grid.src.js +1 -1
  402. package/assets/js/highcharts/themes/high-contrast-dark.js +1 -1
  403. package/assets/js/highcharts/themes/high-contrast-dark.src.js +1 -1
  404. package/assets/js/highcharts/themes/high-contrast-light.js +1 -1
  405. package/assets/js/highcharts/themes/high-contrast-light.src.js +1 -1
  406. package/assets/js/highcharts/themes/sand-signika.js +1 -1
  407. package/assets/js/highcharts/themes/sand-signika.src.js +1 -1
  408. package/assets/js/highcharts/themes/skies.js +1 -1
  409. package/assets/js/highcharts/themes/skies.src.js +1 -1
  410. package/assets/js/highcharts/themes/sunset.js +1 -1
  411. package/assets/js/highcharts/themes/sunset.src.js +1 -1
  412. package/assets/js/pdfjs/build/pdf.mjs +18706 -19098
  413. package/assets/js/pdfjs/build/pdf.mjs.map +1 -1
  414. package/assets/js/pdfjs/build/pdf.sandbox.mjs +3 -3
  415. package/assets/js/pdfjs/build/pdf.sandbox.mjs.map +1 -1
  416. package/assets/js/pdfjs/build/pdf.worker.mjs +292 -234
  417. package/assets/js/pdfjs/build/pdf.worker.mjs.map +1 -1
  418. package/assets/js/pdfjs/web/locale/eo/viewer.ftl +4 -6
  419. package/assets/js/pdfjs/web/locale/hy-AM/viewer.ftl +22 -1
  420. package/assets/js/pdfjs/web/locale/ia/viewer.ftl +2 -10
  421. package/assets/js/pdfjs/web/locale/it/viewer.ftl +0 -2
  422. package/assets/js/pdfjs/web/locale/ja/viewer.ftl +0 -6
  423. package/assets/js/pdfjs/web/locale/pa-IN/viewer.ftl +13 -6
  424. package/assets/js/pdfjs/web/locale/rm/viewer.ftl +4 -6
  425. package/assets/js/pdfjs/web/locale/sl/viewer.ftl +2 -2
  426. package/assets/js/pdfjs/web/locale/sq/viewer.ftl +13 -6
  427. package/assets/js/pdfjs/web/locale/tg/viewer.ftl +13 -6
  428. package/assets/js/pdfjs/web/locale/tr/viewer.ftl +3 -9
  429. package/assets/js/pdfjs/web/locale/zh-CN/viewer.ftl +0 -6
  430. package/assets/js/pdfjs/web/viewer.css +281 -270
  431. package/assets/js/pdfjs/web/viewer.html +4 -4
  432. package/assets/js/pdfjs/web/viewer.mjs +11114 -12057
  433. package/assets/js/pdfjs/web/viewer.mjs.map +1 -1
  434. package/package.json +1 -1
@@ -56,7 +56,7 @@
56
56
  * Constants
57
57
  *
58
58
  * */
59
- Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '11.4.1', Globals.win = (typeof window !== 'undefined' ?
59
+ Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '11.4.3', Globals.win = (typeof window !== 'undefined' ?
60
60
  window :
61
61
  {}), // eslint-disable-line node/no-unsupported-features/es-builtins
62
62
  Globals.doc = Globals.win.document, Globals.svg = (Globals.doc &&
@@ -333,6 +333,21 @@
333
333
  function clamp(value, min, max) {
334
334
  return value > min ? value < max ? value : max : min;
335
335
  }
336
+ /**
337
+ * Utility for crisping a line position to the nearest full pixel depening on
338
+ * the line width
339
+ * @param {number} value The raw pixel position
340
+ * @param {number} lineWidth The line width
341
+ * @param {boolean} [inverted] Whether the containing group is inverted.
342
+ * Crisping round numbers on the y-scale need to go
343
+ * to the other side because the coordinate system
344
+ * is flipped (scaleY is -1)
345
+ * @return {number} The pixel position to use for a crisp display
346
+ */
347
+ const crisp = (value, lineWidth = 0, inverted) => {
348
+ const mod = lineWidth % 2 / 2, inverter = inverted ? -1 : 1;
349
+ return (Math.round(value * inverter - mod) + mod) * inverter;
350
+ };
336
351
  // eslint-disable-next-line valid-jsdoc
337
352
  /**
338
353
  * Return the deep difference between two objects. It can either return the new
@@ -1898,6 +1913,7 @@
1898
1913
  clearTimeout: internalClearTimeout,
1899
1914
  correctFloat,
1900
1915
  createElement,
1916
+ crisp,
1901
1917
  css,
1902
1918
  defined,
1903
1919
  destroyObjectProperties,
@@ -2686,7 +2702,7 @@
2686
2702
  *
2687
2703
  * @type {number}
2688
2704
  * @default 2
2689
- * @since @next
2705
+ * @since 11.3.0
2690
2706
  * @apioption chart.axisLayoutRuns
2691
2707
  */
2692
2708
  /**
@@ -3428,13 +3444,15 @@
3428
3444
  * element's height is 0.
3429
3445
  *
3430
3446
  * @sample {highcharts} highcharts/chart/height/
3431
- * 500px height
3447
+ * Forced 200px height
3432
3448
  * @sample {highstock} stock/chart/height/
3433
3449
  * 300px height
3434
3450
  * @sample {highmaps} maps/chart/size/
3435
3451
  * Chart with explicit size
3436
3452
  * @sample highcharts/chart/height-percent/
3437
3453
  * Highcharts with percentage height
3454
+ * @sample highcharts/chart/height-inherited/
3455
+ * Chart with inherited height
3438
3456
  *
3439
3457
  * @type {null|number|string}
3440
3458
  */
@@ -4333,8 +4351,8 @@
4333
4351
  * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
4334
4352
  *
4335
4353
  * */
4336
- const { isTouchDevice, svg } = H;
4337
- const { merge } = U;
4354
+ const { isTouchDevice } = H;
4355
+ const { fireEvent, merge } = U;
4338
4356
  /* *
4339
4357
  *
4340
4358
  * API Options
@@ -4565,84 +4583,163 @@
4565
4583
  * ```js
4566
4584
  * Highcharts.setOptions({
4567
4585
  * global: {
4568
- * useUTC: false
4586
+ * buttonTheme: {
4587
+ * fill: '#d0d0d0'
4588
+ * }
4569
4589
  * }
4570
4590
  * });
4571
4591
  * ```
4572
4592
  */
4573
- /**
4574
- * _Canvg rendering for Android 2.x is removed as of Highcharts 5.0\.
4575
- * Use the [libURL](#exporting.libURL) option to configure exporting._
4576
- *
4577
- * The URL to the additional file to lazy load for Android 2.x devices.
4578
- * These devices don't support SVG, so we download a helper file that
4579
- * contains [canvg](https://github.com/canvg/canvg), its dependency
4580
- * rbcolor, and our own CanVG Renderer class. To avoid hotlinking to
4581
- * our site, you can install canvas-tools.js on your own server and
4582
- * change this option accordingly.
4583
- *
4584
- * @deprecated
4585
- *
4586
- * @type {string}
4587
- * @default https://code.highcharts.com/{version}/modules/canvas-tools.js
4588
- * @product highcharts highmaps
4589
- * @apioption global.canvasToolsURL
4590
- */
4591
- /**
4592
- * This option is deprecated since v6.0.5. Instead, use
4593
- * [time.useUTC](#time.useUTC) that supports individual time settings
4594
- * per chart.
4595
- *
4596
- * @deprecated
4597
- *
4598
- * @type {boolean}
4599
- * @apioption global.useUTC
4600
- */
4601
- /**
4602
- * This option is deprecated since v6.0.5. Instead, use
4603
- * [time.Date](#time.Date) that supports individual time settings
4604
- * per chart.
4605
- *
4606
- * @deprecated
4607
- *
4608
- * @type {Function}
4609
- * @product highcharts highstock
4610
- * @apioption global.Date
4611
- */
4612
- /**
4613
- * This option is deprecated since v6.0.5. Instead, use
4614
- * [time.getTimezoneOffset](#time.getTimezoneOffset) that supports
4615
- * individual time settings per chart.
4616
- *
4617
- * @deprecated
4618
- *
4619
- * @type {Function}
4620
- * @product highcharts highstock
4621
- * @apioption global.getTimezoneOffset
4622
- */
4623
- /**
4624
- * This option is deprecated since v6.0.5. Instead, use
4625
- * [time.timezone](#time.timezone) that supports individual time
4626
- * settings per chart.
4627
- *
4628
- * @deprecated
4629
- *
4630
- * @type {string}
4631
- * @product highcharts highstock
4632
- * @apioption global.timezone
4633
- */
4634
- /**
4635
- * This option is deprecated since v6.0.5. Instead, use
4636
- * [time.timezoneOffset](#time.timezoneOffset) that supports individual
4637
- * time settings per chart.
4638
- *
4639
- * @deprecated
4640
- *
4641
- * @type {number}
4642
- * @product highcharts highstock
4643
- * @apioption global.timezoneOffset
4644
- */
4645
- global: {},
4593
+ global: {
4594
+ /**
4595
+ * _Canvg rendering for Android 2.x is removed as of Highcharts 5.0\.
4596
+ * Use the [libURL](#exporting.libURL) option to configure exporting._
4597
+ *
4598
+ * The URL to the additional file to lazy load for Android 2.x devices.
4599
+ * These devices don't support SVG, so we download a helper file that
4600
+ * contains [canvg](https://github.com/canvg/canvg), its dependency
4601
+ * rbcolor, and our own CanVG Renderer class. To avoid hotlinking to
4602
+ * our site, you can install canvas-tools.js on your own server and
4603
+ * change this option accordingly.
4604
+ *
4605
+ * @deprecated
4606
+ *
4607
+ * @type {string}
4608
+ * @default https://code.highcharts.com/{version}/modules/canvas-tools.js
4609
+ * @product highcharts highmaps
4610
+ * @apioption global.canvasToolsURL
4611
+ */
4612
+ /**
4613
+ * This option is deprecated since v6.0.5. Instead, use
4614
+ * [time.useUTC](#time.useUTC) that supports individual time settings
4615
+ * per chart.
4616
+ *
4617
+ * @deprecated
4618
+ *
4619
+ * @type {boolean}
4620
+ * @apioption global.useUTC
4621
+ */
4622
+ /**
4623
+ * This option is deprecated since v6.0.5. Instead, use
4624
+ * [time.Date](#time.Date) that supports individual time settings
4625
+ * per chart.
4626
+ *
4627
+ * @deprecated
4628
+ *
4629
+ * @type {Function}
4630
+ * @product highcharts highstock
4631
+ * @apioption global.Date
4632
+ */
4633
+ /**
4634
+ * This option is deprecated since v6.0.5. Instead, use
4635
+ * [time.getTimezoneOffset](#time.getTimezoneOffset) that supports
4636
+ * individual time settings per chart.
4637
+ *
4638
+ * @deprecated
4639
+ *
4640
+ * @type {Function}
4641
+ * @product highcharts highstock
4642
+ * @apioption global.getTimezoneOffset
4643
+ */
4644
+ /**
4645
+ * This option is deprecated since v6.0.5. Instead, use
4646
+ * [time.timezone](#time.timezone) that supports individual time
4647
+ * settings per chart.
4648
+ *
4649
+ * @deprecated
4650
+ *
4651
+ * @type {string}
4652
+ * @product highcharts highstock
4653
+ * @apioption global.timezone
4654
+ */
4655
+ /**
4656
+ * This option is deprecated since v6.0.5. Instead, use
4657
+ * [time.timezoneOffset](#time.timezoneOffset) that supports individual
4658
+ * time settings per chart.
4659
+ *
4660
+ * @deprecated
4661
+ *
4662
+ * @type {number}
4663
+ * @product highcharts highstock
4664
+ * @apioption global.timezoneOffset
4665
+ */
4666
+ /**
4667
+ * General theme for buttons. This applies to the zoom button, exporting
4668
+ * context menu, map navigation, range selector buttons and custom
4669
+ * buttons generated using the `SVGRenderer.button` function. However,
4670
+ * each of these may be overridden with more specific options.
4671
+ *
4672
+ * @sample highcharts/global/buttontheme
4673
+ * General button theme
4674
+ * @since 11.4.2
4675
+ */
4676
+ buttonTheme: {
4677
+ /**
4678
+ * The fill color for buttons
4679
+ */
4680
+ fill: "#f7f7f7" /* Palette.neutralColor3 */,
4681
+ /**
4682
+ * The padding of buttons
4683
+ */
4684
+ padding: 8,
4685
+ /**
4686
+ * The border radius for buttons
4687
+ */
4688
+ r: 2,
4689
+ /**
4690
+ * The stroke color for buttons
4691
+ */
4692
+ stroke: "#cccccc" /* Palette.neutralColor20 */,
4693
+ /**
4694
+ * The stroke width for buttons
4695
+ */
4696
+ 'stroke-width': 1,
4697
+ /**
4698
+ * CSS styling for the buttons' text
4699
+ */
4700
+ style: {
4701
+ color: "#333333" /* Palette.neutralColor80 */,
4702
+ cursor: 'pointer',
4703
+ fontSize: '0.8em',
4704
+ fontWeight: 'normal'
4705
+ },
4706
+ /**
4707
+ * State overrides for the buttons
4708
+ */
4709
+ states: {
4710
+ /**
4711
+ * Hover state overrides for the buttons are applied in addition
4712
+ * to the normal state options
4713
+ */
4714
+ hover: {
4715
+ fill: "#e6e6e6" /* Palette.neutralColor10 */
4716
+ },
4717
+ /**
4718
+ * Select state overrides for the buttons are applied in
4719
+ * addition to the normal state options
4720
+ */
4721
+ select: {
4722
+ fill: "#e6e9ff" /* Palette.highlightColor10 */,
4723
+ style: {
4724
+ color: "#000000" /* Palette.neutralColor100 */,
4725
+ fontWeight: 'bold'
4726
+ }
4727
+ },
4728
+ /**
4729
+ * Disabled state overrides for the buttons are applied in
4730
+ * addition to the normal state options
4731
+ */
4732
+ disabled: {
4733
+ /**
4734
+ * Disabled state CSS style overrides for the buttons' text
4735
+ */
4736
+ style: {
4737
+ color: "#cccccc" /* Palette.neutralColor20 */
4738
+ }
4739
+ }
4740
+ }
4741
+ }
4742
+ },
4646
4743
  /**
4647
4744
  * Time options that can apply globally or to individual charts. These
4648
4745
  * settings affect how `datetime` axes are laid out, how tooltips are
@@ -4712,13 +4809,16 @@
4712
4809
  * for drawing time based charts in specific time zones using their
4713
4810
  * local DST crossover dates, with the help of external libraries.
4714
4811
  *
4715
- * @see [global.timezoneOffset](#global.timezoneOffset)
4812
+ * This option is deprecated as of v11.4.1 and will be removed in a
4813
+ * future release. Use the [time.timezone](#time.timezone) option
4814
+ * instead.
4716
4815
  *
4717
4816
  * @sample {highcharts|highstock} highcharts/time/gettimezoneoffset/
4718
4817
  * Use moment.js to draw Oslo time regardless of browser locale
4719
4818
  *
4720
4819
  * @type {Highcharts.TimezoneOffsetCallbackFunction}
4721
4820
  * @since 4.1.0
4821
+ * @deprecated 11.4.2
4722
4822
  * @product highcharts highstock gantt
4723
4823
  */
4724
4824
  getTimezoneOffset: void 0,
@@ -4728,12 +4828,10 @@
4728
4828
  * docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#timezone).
4729
4829
  * If the given time zone is not recognized by the browser, Highcharts
4730
4830
  * provides a warning and falls back to returning a 0 offset,
4731
- * corresponding to the UCT time zone.
4831
+ * corresponding to the UTC time zone.
4732
4832
  *
4733
4833
  * Until v11.2.0, this option depended on moment.js.
4734
4834
  *
4735
- * @see [getTimezoneOffset](#time.getTimezoneOffset)
4736
- *
4737
4835
  * @sample {highcharts|highstock} highcharts/time/timezone/ Europe/Oslo
4738
4836
  *
4739
4837
  * @type {string}
@@ -4747,12 +4845,17 @@
4747
4845
  * [getTimezoneOffset](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset)
4748
4846
  * method. Use this to display UTC based data in a predefined time zone.
4749
4847
  *
4848
+ * This option is deprecated as of v11.4.1 and will be removed in a
4849
+ * future release. Use the [time.timezone](#time.timezone) option
4850
+ * instead.
4851
+ *
4750
4852
  * @see [time.getTimezoneOffset](#time.getTimezoneOffset)
4751
4853
  *
4752
4854
  * @sample {highcharts|highstock} highcharts/time/timezoneoffset/
4753
4855
  * Timezone offset
4754
4856
  *
4755
4857
  * @since 3.0.8
4858
+ * @deprecated 11.4.2
4756
4859
  * @product highcharts highstock gantt
4757
4860
  */
4758
4861
  timezoneOffset: 0,
@@ -5638,7 +5741,7 @@
5638
5741
  * Item text styles
5639
5742
  *
5640
5743
  * @type {Highcharts.CSSObject}
5641
- * @default {"color": "#333333", "cursor": "pointer", "fontSize": "0.75em", "fontWeight": "bold", "textOverflow": "ellipsis"}
5744
+ * @default {"color": "#333333", "cursor": "pointer", "fontSize": "0.8em", "fontWeight": "bold", "textOverflow": "ellipsis"}
5642
5745
  */
5643
5746
  itemStyle: {
5644
5747
  /**
@@ -5950,7 +6053,7 @@
5950
6053
  * `.highcharts-legend-title` class.
5951
6054
  *
5952
6055
  * @type {Highcharts.CSSObject}
5953
- * @default {"fontSize": "0.75em", "fontWeight": "bold"}
6056
+ * @default {"fontSize": "0.8em", "fontWeight": "bold"}
5954
6057
  * @since 3.0
5955
6058
  */
5956
6059
  style: {
@@ -6157,20 +6260,20 @@
6157
6260
  */
6158
6261
  /**
6159
6262
  * A [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)
6160
- * for the whole tooltip. When format strings are a requirement, it is
6161
- * usually more convenient to use `headerFormat`, `pointFormat` and
6162
- * `footerFormat`, but the `format` option allows combining them into
6163
- * one setting.
6263
+ * for the whole shared tooltip. When format strings are a requirement,
6264
+ * it is usually more convenient to use `headerFormat`, `pointFormat`
6265
+ * and `footerFormat`, but the `format` option allows combining them
6266
+ * into one setting.
6164
6267
  *
6165
6268
  * The context of the format string is the same as that of the
6166
- * `formatter` callback.
6269
+ * `tooltip.formatter` callback.
6167
6270
  *
6168
6271
  * @sample {highcharts} highcharts/tooltip/format-shared/
6169
6272
  * Format for shared tooltip
6170
6273
  *
6171
6274
  * @type {string}
6172
6275
  * @default undefined
6173
- * @since 11.1.0
6276
+ * @since 11.1.0
6174
6277
  * @apioption tooltip.format
6175
6278
  */
6176
6279
  /**
@@ -6443,11 +6546,14 @@
6443
6546
  /**
6444
6547
  * Enable or disable animation of the tooltip.
6445
6548
  *
6446
- * @type {boolean}
6447
- * @default true
6549
+ * @type {boolean|Partial<Highcharts.AnimationOptionsObject>}
6448
6550
  * @since 2.3.0
6449
6551
  */
6450
- animation: svg,
6552
+ animation: {
6553
+ duration: 300,
6554
+ // EaseOutCirc
6555
+ easing: (x) => Math.sqrt(1 - Math.pow(x - 1, 2))
6556
+ },
6451
6557
  /**
6452
6558
  * The radius of the rounded border corners.
6453
6559
  *
@@ -6902,6 +7008,7 @@
6902
7008
  * Updated options.
6903
7009
  */
6904
7010
  function setOptions(options) {
7011
+ fireEvent(H, 'setOptions', { options });
6905
7012
  // Copy in the default options
6906
7013
  merge(true, defaultOptions, options);
6907
7014
  // Update the time object
@@ -8851,7 +8958,7 @@
8851
8958
  // Block helpers may return true or false. They may also return a
8852
8959
  // string, like the `each` helper.
8853
8960
  if (match.isBlock && typeof replacement === 'boolean') {
8854
- replacement = format(replacement ? body : elseBody, ctx);
8961
+ replacement = format(replacement ? body : elseBody, ctx, chart);
8855
8962
  }
8856
8963
  // Simple variable replacement
8857
8964
  }
@@ -8968,6 +9075,9 @@
8968
9075
  // Get the decimal component
8969
9076
  ret += decimalPoint + roundedNumber.slice(-decimals);
8970
9077
  }
9078
+ else if (+ret === 0) { // Remove signed minus #20564
9079
+ ret = '0';
9080
+ }
8971
9081
  if (exponent[1] && +ret !== 0) {
8972
9082
  ret += 'e' + exponent[1];
8973
9083
  }
@@ -9249,7 +9359,7 @@
9249
9359
  * */
9250
9360
  const { animate, animObject, stop } = A;
9251
9361
  const { deg2rad, doc, svg, SVG_NS, win } = H;
9252
- const { addEvent, attr, createElement, css, defined, erase, extend, fireEvent, isArray, isFunction, isObject, isString, merge, objectEach, pick, pInt, replaceNested, syncTimeout, uniqueKey } = U;
9362
+ const { addEvent, attr, createElement, crisp, css, defined, erase, extend, fireEvent, isArray, isFunction, isObject, isString, merge, objectEach, pick, pInt, pushUnique, replaceNested, syncTimeout, uniqueKey } = U;
9253
9363
  /* *
9254
9364
  *
9255
9365
  * Class
@@ -9435,7 +9545,7 @@
9435
9545
  * @param {boolean} [alignByTranslate]
9436
9546
  * Align element by translation.
9437
9547
  *
9438
- * @param {string|Highcharts.BBoxObject} [box]
9548
+ * @param {string|Highcharts.BBoxObject} [alignTo]
9439
9549
  * The box to align to, needs a width and height. When the box is a
9440
9550
  * string, it refers to an object in the Renderer. For example, when
9441
9551
  * box is `spacingBox`, it refers to `Renderer.spacingBox` which
@@ -9447,34 +9557,39 @@
9447
9557
  *
9448
9558
  * @return {Highcharts.SVGElement} Returns the SVGElement for chaining.
9449
9559
  */
9450
- align(alignOptions, alignByTranslate, box, redraw = true) {
9451
- const attribs = {}, renderer = this.renderer, alignedObjects = renderer.alignedObjects;
9452
- let x, y, alignTo, alignFactor, vAlignFactor;
9560
+ align(alignOptions, alignByTranslate, alignTo, redraw = true) {
9561
+ const attribs = {}, renderer = this.renderer, alignedObjects = renderer.alignedObjects, initialAlignment = Boolean(alignOptions);
9562
+ let x, y, alignFactor, vAlignFactor;
9453
9563
  // First call on instanciate
9454
9564
  if (alignOptions) {
9455
9565
  this.alignOptions = alignOptions;
9456
9566
  this.alignByTranslate = alignByTranslate;
9457
- if (!box || isString(box)) {
9458
- this.alignTo = alignTo = box || 'renderer';
9459
- // Prevent duplicates, like legendGroup after resize
9460
- erase(alignedObjects, this);
9461
- alignedObjects.push(this);
9462
- box = void 0; // Reassign it below
9463
- }
9567
+ this.alignTo = alignTo;
9464
9568
  // When called on resize, no arguments are supplied
9465
9569
  }
9466
9570
  else {
9467
- alignOptions = this.alignOptions;
9571
+ alignOptions = this.alignOptions || {};
9468
9572
  alignByTranslate = this.alignByTranslate;
9469
9573
  alignTo = this.alignTo;
9470
9574
  }
9471
- box = pick(box, renderer[alignTo], renderer);
9575
+ const alignToKey = !alignTo || isString(alignTo) ?
9576
+ alignTo || 'renderer' :
9577
+ void 0;
9578
+ // When aligned to a key, automatically re-align on redraws
9579
+ if (alignToKey) {
9580
+ // Prevent duplicates, like legendGroup after resize
9581
+ if (initialAlignment) {
9582
+ pushUnique(alignedObjects, this);
9583
+ }
9584
+ alignTo = void 0; // Do not use the box
9585
+ }
9586
+ const alignToBox = pick(alignTo, renderer[alignToKey], renderer);
9472
9587
  // Assign variables
9473
9588
  const align = alignOptions.align, vAlign = alignOptions.verticalAlign;
9474
9589
  // Default: left align
9475
- x = (box.x || 0) + (alignOptions.x || 0);
9590
+ x = (alignToBox.x || 0) + (alignOptions.x || 0);
9476
9591
  // Default: top align
9477
- y = (box.y || 0) + (alignOptions.y || 0);
9592
+ y = (alignToBox.y || 0) + (alignOptions.y || 0);
9478
9593
  // Align
9479
9594
  if (align === 'right') {
9480
9595
  alignFactor = 1;
@@ -9483,7 +9598,7 @@
9483
9598
  alignFactor = 2;
9484
9599
  }
9485
9600
  if (alignFactor) {
9486
- x += (box.width - (alignOptions.width || 0)) /
9601
+ x += ((alignToBox.width || 0) - (alignOptions.width || 0)) /
9487
9602
  alignFactor;
9488
9603
  }
9489
9604
  attribs[alignByTranslate ? 'translateX' : 'x'] = Math.round(x);
@@ -9495,7 +9610,7 @@
9495
9610
  vAlignFactor = 2;
9496
9611
  }
9497
9612
  if (vAlignFactor) {
9498
- y += (box.height - (alignOptions.height || 0)) /
9613
+ y += ((alignToBox.height || 0) - (alignOptions.height || 0)) /
9499
9614
  vAlignFactor;
9500
9615
  }
9501
9616
  attribs[alignByTranslate ? 'translateY' : 'y'] = Math.round(y);
@@ -9715,7 +9830,7 @@
9715
9830
  * used as a getter, the current value of the attribute is returned.
9716
9831
  */
9717
9832
  attr(hash, val, complete, continueAnimation) {
9718
- const element = this.element, symbolCustomAttribs = SVGElement.symbolCustomAttribs;
9833
+ const { element } = this, symbolCustomAttribs = SVGElement.symbolCustomAttribs;
9719
9834
  let key, hasSetSymbolSize, ret = this, skipAttr, setter;
9720
9835
  // Single key-value pair
9721
9836
  if (typeof hash === 'string' && typeof val !== 'undefined') {
@@ -9805,15 +9920,17 @@
9805
9920
  * The modified rectangle arguments.
9806
9921
  */
9807
9922
  crisp(rect, strokeWidth) {
9808
- const wrapper = this;
9809
- strokeWidth = strokeWidth || rect.strokeWidth || 0;
9810
9923
  // Math.round because strokeWidth can sometimes have roundoff errors
9811
- const normalizer = Math.round(strokeWidth) % 2 / 2;
9812
- // Normalize for crisp edges
9813
- rect.x = Math.floor(rect.x || wrapper.x || 0) + normalizer;
9814
- rect.y = Math.floor(rect.y || wrapper.y || 0) + normalizer;
9815
- rect.width = Math.floor((rect.width || wrapper.width || 0) - 2 * normalizer);
9816
- rect.height = Math.floor((rect.height || wrapper.height || 0) - 2 * normalizer);
9924
+ strokeWidth = Math.round(strokeWidth || rect.strokeWidth || 0);
9925
+ const x1 = rect.x || this.x || 0, y1 = rect.y || this.y || 0, x2 = (rect.width || this.width || 0) + x1, y2 = (rect.height || this.height || 0) + y1,
9926
+ // Find all the rounded coordinates for corners
9927
+ x = crisp(x1, strokeWidth), y = crisp(y1, strokeWidth), x2Crisp = crisp(x2, strokeWidth), y2Crisp = crisp(y2, strokeWidth);
9928
+ extend(rect, {
9929
+ x,
9930
+ y,
9931
+ width: x2Crisp - x,
9932
+ height: y2Crisp - y
9933
+ });
9817
9934
  if (defined(rect.strokeWidth)) {
9818
9935
  rect.strokeWidth = strokeWidth;
9819
9936
  }
@@ -10088,7 +10205,7 @@
10088
10205
  parentToClean = grandParent;
10089
10206
  }
10090
10207
  // Remove from alignObjects
10091
- if (wrapper.alignTo) {
10208
+ if (wrapper.alignOptions) {
10092
10209
  erase(renderer.alignedObjects, wrapper);
10093
10210
  }
10094
10211
  objectEach(wrapper, function (val, key) {
@@ -10463,6 +10580,20 @@
10463
10580
  this.opacity = opacity;
10464
10581
  element.setAttribute(key, opacity);
10465
10582
  }
10583
+ /**
10584
+ * Re-align an aligned text or label after setting the text.
10585
+ *
10586
+ * @private
10587
+ * @function Highcharts.SVGElement#reAlign
10588
+ *
10589
+ */
10590
+ reAlign() {
10591
+ if (this.alignOptions?.width && this.alignOptions.align !== 'left') {
10592
+ this.alignOptions.width = this.getBBox().width;
10593
+ this.placed = false; // Block animation
10594
+ this.align();
10595
+ }
10596
+ }
10466
10597
  /**
10467
10598
  * Remove a class name from the element.
10468
10599
  *
@@ -10762,6 +10893,7 @@
10762
10893
  if (this.added) {
10763
10894
  this.renderer.buildText(this);
10764
10895
  }
10896
+ this.reAlign();
10765
10897
  }
10766
10898
  }
10767
10899
  /**
@@ -11354,9 +11486,11 @@
11354
11486
  return bBox;
11355
11487
  }
11356
11488
  getCrispAdjust() {
11357
- return this.renderer.styledMode && this.box ?
11358
- this.box.strokeWidth() % 2 / 2 :
11359
- (this['stroke-width'] ? parseInt(this['stroke-width'], 10) : 0) % 2 / 2;
11489
+ return (this.renderer.styledMode && this.box ?
11490
+ this.box.strokeWidth() :
11491
+ (this['stroke-width'] ?
11492
+ parseInt(this['stroke-width'], 10) :
11493
+ 0)) % 2 / 2;
11360
11494
  }
11361
11495
  heightSetter(value) {
11362
11496
  this.heightSetting = value;
@@ -11414,6 +11548,7 @@
11414
11548
  this.text.attr({ text });
11415
11549
  }
11416
11550
  this.updateTextPadding();
11551
+ this.reAlign();
11417
11552
  }
11418
11553
  /*
11419
11554
  * This function runs after the label is added to the DOM (when the bounding
@@ -11585,11 +11720,15 @@
11585
11720
  function arc(cx, cy, w, h, options) {
11586
11721
  const arc = [];
11587
11722
  if (options) {
11588
- const start = options.start || 0, rx = pick(options.r, w), ry = pick(options.r, h || w), proximity = 0.001, fullCircle = (Math.abs((options.end || 0) - start - 2 * Math.PI) <
11589
- proximity),
11590
- // Subtract a small number to prevent cos and sin of start
11591
- // and end from becoming equal on 360 arcs (related: #1561)
11592
- end = (options.end || 0) - proximity, innerRadius = options.innerR, open = pick(options.open, fullCircle), cosStart = Math.cos(start), sinStart = Math.sin(start), cosEnd = Math.cos(end), sinEnd = Math.sin(end),
11723
+ const start = options.start || 0, rx = pick(options.r, w), ry = pick(options.r, h || w),
11724
+ // Subtract a small number to prevent cos and sin of start and end
11725
+ // from becoming equal on 360 arcs (#1561). The size of the circle
11726
+ // affects the constant, therefore the division by `rx`. If the
11727
+ // proximity is too small, the arc disappears. If it is too great, a
11728
+ // gap appears. This can be seen in the animation of the official
11729
+ // bubble demo (#20586).
11730
+ proximity = 0.0002 / Math.max(rx, 1), fullCircle = (Math.abs((options.end || 0) - start - 2 * Math.PI) <
11731
+ proximity), end = (options.end || 0) - proximity, innerRadius = options.innerR, open = pick(options.open, fullCircle), cosStart = Math.cos(start), sinStart = Math.sin(start), cosEnd = Math.cos(end), sinEnd = Math.sin(end),
11593
11732
  // Proximity takes care of rounding errors around PI (#6971)
11594
11733
  longArc = pick(options.longArc, end - start - Math.PI < proximity ? 0 : 1);
11595
11734
  let arcSegment = [
@@ -12237,7 +12376,7 @@
12237
12376
 
12238
12377
  return TextBuilder;
12239
12378
  });
12240
- _registerModule(_modules, 'Core/Renderer/SVG/SVGRenderer.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Renderer/SVG/SVGLabel.js'], _modules['Core/Renderer/SVG/Symbols.js'], _modules['Core/Renderer/SVG/TextBuilder.js'], _modules['Core/Utilities.js']], function (AST, Color, H, RendererRegistry, SVGElement, SVGLabel, Symbols, TextBuilder, U) {
12379
+ _registerModule(_modules, 'Core/Renderer/SVG/SVGRenderer.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Defaults.js'], _modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Renderer/SVG/SVGLabel.js'], _modules['Core/Renderer/SVG/Symbols.js'], _modules['Core/Renderer/SVG/TextBuilder.js'], _modules['Core/Utilities.js']], function (AST, D, Color, H, RendererRegistry, SVGElement, SVGLabel, Symbols, TextBuilder, U) {
12241
12380
  /* *
12242
12381
  *
12243
12382
  * (c) 2010-2024 Torstein Honsi
@@ -12247,8 +12386,9 @@
12247
12386
  * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
12248
12387
  *
12249
12388
  * */
12389
+ const { defaultOptions } = D;
12250
12390
  const { charts, deg2rad, doc, isFirefox, isMS, isWebKit, noop, SVG_NS, symbolSizes, win } = H;
12251
- const { addEvent, attr, createElement, css, defined, destroyObjectProperties, extend, isArray, isNumber, isObject, isString, merge, pick, pInt, replaceNested, uniqueKey } = U;
12391
+ const { addEvent, attr, createElement, crisp, css, defined, destroyObjectProperties, extend, isArray, isNumber, isObject, isString, merge, pick, pInt, replaceNested, uniqueKey } = U;
12252
12392
  /* *
12253
12393
  *
12254
12394
  * Variables
@@ -12397,7 +12537,7 @@
12397
12537
  this.url = this.getReferenceURL();
12398
12538
  // Add description
12399
12539
  const desc = this.createElement('desc').add();
12400
- desc.element.appendChild(doc.createTextNode('Created with Highcharts 11.4.1'));
12540
+ desc.element.appendChild(doc.createTextNode('Created with Highcharts 11.4.3'));
12401
12541
  this.defs = this.createElement('defs').add();
12402
12542
  this.allowHTML = allowHTML;
12403
12543
  this.forExport = forExport;
@@ -12730,7 +12870,9 @@
12730
12870
  return 1.05 / (l + 0.05) > (l + 0.05) / 0.05 ? '#FFFFFF' : '#000000';
12731
12871
  }
12732
12872
  /**
12733
- * Create a button with preset states.
12873
+ * Create a button with preset states. Styles for the button can either be
12874
+ * set as arguments, or a general theme for all buttons can be set by the
12875
+ * `global.buttonTheme` option.
12734
12876
  *
12735
12877
  * @function Highcharts.SVGRenderer#button
12736
12878
  *
@@ -12768,56 +12910,31 @@
12768
12910
  * The button element.
12769
12911
  */
12770
12912
  button(text, x, y, callback, theme = {}, hoverState, selectState, disabledState, shape, useHTML) {
12771
- const label = this.label(text, x, y, shape, void 0, void 0, useHTML, void 0, 'button'), styledMode = this.styledMode, states = theme.states || {};
12913
+ const label = this.label(text, x, y, shape, void 0, void 0, useHTML, void 0, 'button'), styledMode = this.styledMode, args = arguments;
12772
12914
  let curState = 0;
12773
- theme = merge(theme);
12915
+ theme = merge(defaultOptions.global.buttonTheme, theme);
12916
+ // @todo Consider moving this to a lower level, like .attr
12917
+ if (styledMode) {
12918
+ delete theme.fill;
12919
+ delete theme.stroke;
12920
+ delete theme['stroke-width'];
12921
+ }
12922
+ const states = theme.states || {}, normalStyle = theme.style || {};
12774
12923
  delete theme.states;
12775
- const normalStyle = merge({
12776
- color: "#333333" /* Palette.neutralColor80 */,
12777
- cursor: 'pointer',
12778
- fontSize: '0.8em',
12779
- fontWeight: 'normal'
12780
- }, theme.style);
12781
12924
  delete theme.style;
12782
- // Remove stylable attributes. Pass in the ButtonThemeObject and get the
12783
- // SVGAttributes subset back.
12784
- let normalState = AST.filterUserAttributes(theme);
12785
- // Default, non-stylable attributes
12786
- label.attr(merge({ padding: 8, r: 2 }, normalState));
12787
- // Presentational. The string type is a mistake, it is just for
12788
- // compliance with SVGAttribute and is not used in button theme.
12789
- let hoverStyle, selectStyle, disabledStyle;
12925
+ // Presentational
12926
+ const stateAttribs = [
12927
+ AST.filterUserAttributes(theme)
12928
+ ],
12929
+ // The string type is a mistake, it is just for compliance with
12930
+ // SVGAttribute and is not used in button theme.
12931
+ stateStyles = [normalStyle];
12790
12932
  if (!styledMode) {
12791
- // Normal state - prepare the attributes
12792
- normalState = merge({
12793
- fill: "#f7f7f7" /* Palette.neutralColor3 */,
12794
- stroke: "#cccccc" /* Palette.neutralColor20 */,
12795
- 'stroke-width': 1
12796
- }, normalState);
12797
- // Hover state
12798
- hoverState = merge(normalState, {
12799
- fill: "#e6e6e6" /* Palette.neutralColor10 */
12800
- }, AST.filterUserAttributes(hoverState || states.hover || {}));
12801
- hoverStyle = hoverState.style;
12802
- delete hoverState.style;
12803
- // Pressed state
12804
- selectState = merge(normalState, {
12805
- fill: "#e6e9ff" /* Palette.highlightColor10 */,
12806
- style: {
12807
- color: "#000000" /* Palette.neutralColor100 */,
12808
- fontWeight: 'bold'
12809
- }
12810
- }, AST.filterUserAttributes(selectState || states.select || {}));
12811
- selectStyle = selectState.style;
12812
- delete selectState.style;
12813
- // Disabled state
12814
- disabledState = merge(normalState, {
12815
- style: {
12816
- color: "#cccccc" /* Palette.neutralColor20 */
12817
- }
12818
- }, AST.filterUserAttributes(disabledState || states.disabled || {}));
12819
- disabledStyle = disabledState.style;
12820
- delete disabledState.style;
12933
+ ['hover', 'select', 'disabled'].forEach((stateName, i) => {
12934
+ stateAttribs.push(merge(stateAttribs[0], AST.filterUserAttributes(args[i + 5] || states[stateName] || {})));
12935
+ stateStyles.push(stateAttribs[i + 1].style);
12936
+ delete stateAttribs[i + 1].style;
12937
+ });
12821
12938
  }
12822
12939
  // Add the events. IE9 and IE10 need mouseover and mouseout to function
12823
12940
  // (#667).
@@ -12831,7 +12948,7 @@
12831
12948
  label.setState(curState);
12832
12949
  }
12833
12950
  });
12834
- label.setState = function (state) {
12951
+ label.setState = (state = 0) => {
12835
12952
  // Hover state is temporary, don't record it
12836
12953
  if (state !== 1) {
12837
12954
  label.state = curState = state;
@@ -12840,31 +12957,19 @@
12840
12957
  label
12841
12958
  .removeClass(/highcharts-button-(normal|hover|pressed|disabled)/)
12842
12959
  .addClass('highcharts-button-' +
12843
- ['normal', 'hover', 'pressed', 'disabled'][state || 0]);
12960
+ ['normal', 'hover', 'pressed', 'disabled'][state]);
12844
12961
  if (!styledMode) {
12845
- label
12846
- .attr([
12847
- normalState,
12848
- hoverState,
12849
- selectState,
12850
- disabledState
12851
- ][state || 0]);
12852
- const css = [
12853
- normalStyle,
12854
- hoverStyle,
12855
- selectStyle,
12856
- disabledStyle
12857
- ][state || 0];
12962
+ label.attr(stateAttribs[state]);
12963
+ const css = stateStyles[state];
12858
12964
  if (isObject(css)) {
12859
12965
  label.css(css);
12860
12966
  }
12861
12967
  }
12862
12968
  };
12969
+ label.attr(stateAttribs[0]);
12863
12970
  // Presentational attributes
12864
12971
  if (!styledMode) {
12865
- label
12866
- .attr(normalState)
12867
- .css(extend({ cursor: 'default' }, normalStyle));
12972
+ label.css(extend({ cursor: 'default' }, normalStyle));
12868
12973
  // HTML labels don't need to handle pointer events because click and
12869
12974
  // mouseenter/mouseleave is bound to the underlying <g> element.
12870
12975
  // Should this be reconsidered, we need more complex logic to share
@@ -12894,26 +12999,17 @@
12894
12999
  * @param {number} width
12895
13000
  * The width of the line.
12896
13001
  *
12897
- * @param {string} [roundingFunction=round]
12898
- * The rounding function name on the `Math` object, can be one of
12899
- * `round`, `floor` or `ceil`.
12900
- *
12901
13002
  * @return {Highcharts.SVGPathArray}
12902
13003
  * The original points array, but modified to render crisply.
12903
13004
  */
12904
- crispLine(points, width, roundingFunction = 'round') {
12905
- const start = points[0];
12906
- const end = points[1];
13005
+ crispLine(points, width) {
13006
+ const [start, end] = points;
12907
13007
  // Normalize to a crisp line
12908
13008
  if (defined(start[1]) && start[1] === end[1]) {
12909
- // Subtract due to #1129. Now bottom and left axis gridlines behave
12910
- // the same.
12911
- start[1] = end[1] =
12912
- Math[roundingFunction](start[1]) - (width % 2 / 2);
13009
+ start[1] = end[1] = crisp(start[1], width);
12913
13010
  }
12914
13011
  if (defined(start[2]) && start[2] === end[2]) {
12915
- start[2] = end[2] =
12916
- Math[roundingFunction](start[2]) + (width % 2 / 2);
13012
+ start[2] = end[2] = crisp(start[2], width);
12917
13013
  }
12918
13014
  return points;
12919
13015
  }
@@ -13312,7 +13408,7 @@
13312
13408
  if (symbolFn) {
13313
13409
  // Check if there's a path defined for this symbol
13314
13410
  if (typeof x === 'number') {
13315
- path = symbolFn.call(this.symbols, Math.round(x || 0), Math.round(y || 0), width || 0, height || 0, options);
13411
+ path = symbolFn.call(this.symbols, x || 0, y || 0, width || 0, height || 0, options);
13316
13412
  }
13317
13413
  obj = this.path(path);
13318
13414
  if (!ren.styledMode) {
@@ -15471,11 +15567,12 @@
15471
15567
  overflow: 'justify',
15472
15568
  /**
15473
15569
  * The pixel padding for axis labels, to ensure white space between
15474
- * them.
15570
+ * them. Defaults to 4 for horizontal axes, 1 for vertical.
15475
15571
  *
15572
+ * @default undefined
15476
15573
  * @product highcharts gantt
15574
+ * @apioption xAxis.labels.padding
15477
15575
  */
15478
- padding: 5,
15479
15576
  /**
15480
15577
  * Whether to reserve space for the labels. By default, space is
15481
15578
  * reserved for the labels in these cases:
@@ -17786,7 +17883,7 @@
17786
17883
  });
17787
17884
  if (label.getBBox().width <
17788
17885
  axis.getSlotWidth(tick) - 2 *
17789
- labelOptions.padding) {
17886
+ (labelOptions.padding || 0)) {
17790
17887
  return;
17791
17888
  }
17792
17889
  }
@@ -17975,7 +18072,7 @@
17975
18072
  * Extendible method to return the path of the marker
17976
18073
  * @private
17977
18074
  */
17978
- getMarkPath(x, y, tickLength, tickWidth, horiz, renderer) {
18075
+ getMarkPath(x, y, tickLength, tickWidth, horiz = false, renderer) {
17979
18076
  return renderer.crispLine([[
17980
18077
  'M',
17981
18078
  x,
@@ -18103,9 +18200,7 @@
18103
18200
  * @param {number} [opacity]
18104
18201
  */
18105
18202
  render(index, old, opacity) {
18106
- 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, reverseCrisp = ((horiz && x === axisEnd) ||
18107
- (!horiz && y === axisStart)) ? -1 : 1, // #1480, #1687
18108
- pxPos = horiz ? x : y;
18203
+ 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;
18109
18204
  // Anything that is not between `axis.pos` and `axis.pos + axis.length`
18110
18205
  // should not be visible (#20166). The `correctFloat` is for reversed
18111
18206
  // axes in Safari.
@@ -18119,9 +18214,9 @@
18119
18214
  opacity = pick(opacity, 1);
18120
18215
  this.isActive = true;
18121
18216
  // Create the grid line
18122
- this.renderGridLine(old, opacity, reverseCrisp);
18217
+ this.renderGridLine(old, opacity);
18123
18218
  // Create the tick mark
18124
- this.renderMark(xy, opacity, reverseCrisp);
18219
+ this.renderMark(xy, opacity);
18125
18220
  // The label is created on init - now move it into place
18126
18221
  this.renderLabel(xy, old, labelOpacity, index);
18127
18222
  tick.isNew = false;
@@ -18134,9 +18229,8 @@
18134
18229
  * @function Highcharts.Tick#renderGridLine
18135
18230
  * @param {boolean} old Whether or not the tick is old
18136
18231
  * @param {number} opacity The opacity of the grid line
18137
- * @param {number} reverseCrisp Modifier for avoiding overlapping 1 or -1
18138
18232
  */
18139
- renderGridLine(old, opacity, reverseCrisp) {
18233
+ renderGridLine(old, opacity) {
18140
18234
  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;
18141
18235
  let gridLine = tick.gridLine, gridLinePath, gridLineWidth = options.gridLineWidth, gridLineColor = options.gridLineColor, dashStyle = options.gridLineDashStyle;
18142
18236
  if (tick.type === 'minor') {
@@ -18169,7 +18263,7 @@
18169
18263
  if (gridLine) {
18170
18264
  gridLinePath = axis.getPlotLinePath({
18171
18265
  value: pos + tickmarkOffset,
18172
- lineWidth: gridLine.strokeWidth() * reverseCrisp,
18266
+ lineWidth: gridLine.strokeWidth(),
18173
18267
  force: 'pass',
18174
18268
  old: old,
18175
18269
  acrossPanes: false // #18025
@@ -18191,9 +18285,8 @@
18191
18285
  * @function Highcharts.Tick#renderMark
18192
18286
  * @param {Highcharts.PositionObject} xy The position vector of the mark
18193
18287
  * @param {number} opacity The opacity of the mark
18194
- * @param {number} reverseCrisp Modifier for avoiding overlapping 1 or -1
18195
18288
  */
18196
- renderMark(xy, opacity, reverseCrisp) {
18289
+ renderMark(xy, opacity) {
18197
18290
  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
18198
18291
  tickColor = options[type !== 'minor' ? 'tickColor' : 'minorTickColor'];
18199
18292
  let mark = tick.mark;
@@ -18221,7 +18314,7 @@
18221
18314
  }
18222
18315
  }
18223
18316
  mark[isNewMark ? 'attr' : 'animate']({
18224
- d: tick.getMarkPath(x, y, tickSize[0], mark.strokeWidth() * reverseCrisp, axis.horiz, renderer),
18317
+ d: tick.getMarkPath(x, y, tickSize[0], mark.strokeWidth(), axis.horiz, renderer),
18225
18318
  opacity: opacity
18226
18319
  });
18227
18320
  }
@@ -18561,7 +18654,7 @@
18561
18654
  * @name Highcharts.Axis#len
18562
18655
  * @type {number}
18563
18656
  */
18564
- axis.len = 0;
18657
+ axis.len ?? (axis.len = 0);
18565
18658
  axis.minRange = axis.userMinRange = options.minRange || options.maxZoom;
18566
18659
  axis.range = options.range;
18567
18660
  axis.offset = options.offset || 0;
@@ -18639,13 +18732,17 @@
18639
18732
  // Top and bottom axis defaults
18640
18733
  {
18641
18734
  labels: {
18642
- autoRotation: [-45]
18735
+ autoRotation: [-45],
18736
+ padding: 4
18643
18737
  },
18644
18738
  margin: 15
18645
18739
  } :
18646
18740
  // Left and right axis, title rotated 90 or 270 degrees
18647
18741
  // respectively
18648
18742
  {
18743
+ labels: {
18744
+ padding: 1
18745
+ },
18649
18746
  title: {
18650
18747
  rotation: 90 * this.side
18651
18748
  }
@@ -18855,10 +18952,13 @@
18855
18952
  val = axis.val2lin(val);
18856
18953
  }
18857
18954
  const value = sign * (val - localMin) * localA;
18858
- returnValue = (!axis.isRadial ? correctFloat(value) : value) +
18955
+ returnValue = value +
18859
18956
  cvsOffset +
18860
18957
  (sign * minPixelPadding) +
18861
18958
  (isNumber(pointPlacement) ? localA * pointPlacement : 0);
18959
+ if (!axis.isRadial) {
18960
+ returnValue = correctFloat(returnValue);
18961
+ }
18862
18962
  }
18863
18963
  return returnValue;
18864
18964
  }
@@ -18946,8 +19046,8 @@
18946
19046
  // Keep the translated value within sane bounds, and avoid Infinity
18947
19047
  // to fail the isNumber test (#7709).
18948
19048
  translatedValue = clamp(translatedValue, -1e5, 1e5);
18949
- x1 = x2 = Math.round(translatedValue + transB);
18950
- y1 = y2 = Math.round(cHeight - translatedValue - transB);
19049
+ x1 = x2 = translatedValue + transB;
19050
+ y1 = y2 = cHeight - translatedValue - transB;
18951
19051
  if (!isNumber(translatedValue)) { // No min or max
18952
19052
  skip = true;
18953
19053
  force = false; // #7175, don't force it when path is invalid
@@ -20278,17 +20378,17 @@
20278
20378
  * @function Highcharts.Axis#unsquish
20279
20379
  */
20280
20380
  unsquish() {
20281
- const labelOptions = this.options.labels, horiz = this.horiz, tickInterval = this.tickInterval, slotSize = this.len / (((this.categories ? 1 : 0) +
20381
+ const labelOptions = this.options.labels, padding = labelOptions.padding || 0, horiz = this.horiz, tickInterval = this.tickInterval, slotSize = this.len / (((this.categories ? 1 : 0) +
20282
20382
  this.max -
20283
20383
  this.min) /
20284
20384
  tickInterval), rotationOption = labelOptions.rotation,
20285
20385
  // We don't know the actual rendered line height at this point, but
20286
- // it defaults to 0.75em
20287
- lineHeight = this.labelMetrics().h, range = Math.max(this.max - this.min, 0),
20386
+ // it defaults to 0.8em
20387
+ lineHeight = correctFloat(this.labelMetrics().h * 0.8), range = Math.max(this.max - this.min, 0),
20288
20388
  // Return the multiple of tickInterval that is needed to avoid
20289
20389
  // collision
20290
20390
  getStep = function (spaceNeeded) {
20291
- let step = spaceNeeded / (slotSize || 1);
20391
+ let step = (spaceNeeded + 2 * padding) / (slotSize || 1);
20292
20392
  step = step > 1 ? Math.ceil(step) : 1;
20293
20393
  // Guard for very small or negative angles (#9835)
20294
20394
  if (step * tickInterval > range &&
@@ -20384,7 +20484,10 @@
20384
20484
  * @function Highcharts.Axis#renderUnsquish
20385
20485
  */
20386
20486
  renderUnsquish() {
20387
- const chart = this.chart, renderer = chart.renderer, tickPositions = this.tickPositions, ticks = this.ticks, labelOptions = this.options.labels, labelStyleOptions = labelOptions.style, horiz = this.horiz, slotWidth = this.getSlotWidth(), innerWidth = Math.max(1, Math.round(slotWidth - 2 * labelOptions.padding)), attr = {}, labelMetrics = this.labelMetrics(), textOverflowOption = labelStyleOptions.textOverflow;
20487
+ const chart = this.chart, renderer = chart.renderer, tickPositions = this.tickPositions, ticks = this.ticks, labelOptions = this.options.labels, labelStyleOptions = labelOptions.style, horiz = this.horiz, slotWidth = this.getSlotWidth(), innerWidth = Math.max(1, Math.round(slotWidth - (horiz ?
20488
+ 2 * (labelOptions.padding || 0) :
20489
+ labelOptions.distance || 0 // #21172
20490
+ ))), attr = {}, labelMetrics = this.labelMetrics(), textOverflowOption = labelStyleOptions.textOverflow;
20388
20491
  let commonWidth, commonTextOverflow, maxLabelLength = 0, label, i, pos;
20389
20492
  // Set rotation option unless it is "auto", like in gauges
20390
20493
  if (!isString(labelOptions.rotation)) {
@@ -20701,7 +20804,7 @@
20701
20804
  }
20702
20805
  // Due to GridAxis.tickSize, tickSize should be calculated after ticks
20703
20806
  // has rendered.
20704
- if (coll !== 'colorAxis') {
20807
+ if (coll !== 'colorAxis' && clipOffset) {
20705
20808
  const tickSize = this.tickSize('tick');
20706
20809
  axisOffset[side] = Math.max(axisOffset[side], (axis.axisTitleMargin || 0) + titleOffset +
20707
20810
  directionFactor * axis.offset, labelOffsetPadded, // #3027
@@ -20713,10 +20816,9 @@
20713
20816
  // the plot area and axis lines
20714
20817
  const clip = !axis.axisLine || options.offset ?
20715
20818
  0 :
20716
- // #4308, #4371:
20717
- Math.floor(axis.axisLine.strokeWidth() / 2) * 2;
20718
- clipOffset[invertedSide] =
20719
- Math.max(clipOffset[invertedSide], clip);
20819
+ // #4308, #4371
20820
+ axis.axisLine.strokeWidth() / 2;
20821
+ clipOffset[invertedSide] = Math.max(clipOffset[invertedSide], clip);
20720
20822
  }
20721
20823
  fireEvent(this, 'afterGetOffset');
20722
20824
  }
@@ -21351,6 +21453,7 @@
21351
21453
  'coll',
21352
21454
  'extKey',
21353
21455
  'hcEvents',
21456
+ 'len',
21354
21457
  'names',
21355
21458
  'series',
21356
21459
  'userMax',
@@ -22571,6 +22674,16 @@
22571
22674
  * @type {Highcharts.ColorString}
22572
22675
  * @apioption xAxis.plotBands.borderColor
22573
22676
  */
22677
+ /**
22678
+ * Border radius for the plot band. Applies only to gauges. Can be a pixel
22679
+ * value or a percentage, for example `50%`.
22680
+ *
22681
+ * @type {number|string}
22682
+ * @since 11.4.2
22683
+ * @sample {highcharts} highcharts/xaxis/plotbands-gauge-borderradius
22684
+ * Angular gauge with rounded plot bands
22685
+ * @apioption xAxis.plotBands.borderRadius
22686
+ */
22574
22687
  /**
22575
22688
  * Border width for the plot band. Also requires `borderColor` to be set.
22576
22689
  *
@@ -23128,7 +23241,7 @@
23128
23241
 
23129
23242
  return PlotLineOrBand;
23130
23243
  });
23131
- _registerModule(_modules, 'Core/Tooltip.js', [_modules['Core/Templating.js'], _modules['Core/Globals.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Utilities.js']], function (F, H, R, RendererRegistry, U) {
23244
+ _registerModule(_modules, 'Core/Tooltip.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Templating.js'], _modules['Core/Globals.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Utilities.js']], function (A, F, H, R, RendererRegistry, U) {
23132
23245
  /* *
23133
23246
  *
23134
23247
  * (c) 2010-2024 Torstein Honsi
@@ -23138,6 +23251,7 @@
23138
23251
  * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
23139
23252
  *
23140
23253
  * */
23254
+ const { animObject } = A;
23141
23255
  const { format } = F;
23142
23256
  const { composed, doc, isSafari } = H;
23143
23257
  const { distribute } = R;
@@ -23177,7 +23291,6 @@
23177
23291
  this.distance = 0;
23178
23292
  this.isHidden = true;
23179
23293
  this.isSticky = false;
23180
- this.now = {};
23181
23294
  this.options = {};
23182
23295
  this.outside = false;
23183
23296
  this.chart = chart;
@@ -23271,7 +23384,6 @@
23271
23384
  discardElement(this.container);
23272
23385
  }
23273
23386
  U.clearTimeout(this.hideTimer);
23274
- U.clearTimeout(this.tooltipTimeout);
23275
23387
  }
23276
23388
  /**
23277
23389
  * Extendable method to get the anchor position of the tooltip
@@ -23432,19 +23544,15 @@
23432
23544
  // container.
23433
23545
  if (tooltip.outside) {
23434
23546
  const label = this.label;
23435
- const { xSetter, ySetter } = label;
23436
- label.xSetter = function (value) {
23437
- xSetter.call(label, tooltip.distance);
23438
- if (container) {
23439
- container.style.left = value + 'px';
23440
- }
23441
- };
23442
- label.ySetter = function (value) {
23443
- ySetter.call(label, tooltip.distance);
23444
- if (container) {
23445
- container.style.top = value + 'px';
23446
- }
23447
- };
23547
+ [label.xSetter, label.ySetter].forEach((setter, i) => {
23548
+ label[i ? 'ySetter' : 'xSetter'] = (value) => {
23549
+ setter.call(label, tooltip.distance);
23550
+ label[i ? 'y' : 'x'] = value;
23551
+ if (container) {
23552
+ container.style[i ? 'top' : 'left'] = `${value}px`;
23553
+ }
23554
+ };
23555
+ });
23448
23556
  }
23449
23557
  this.label
23450
23558
  .attr({ zIndex: 8 })
@@ -23695,15 +23803,6 @@
23695
23803
  * @type {Array<null>}
23696
23804
  */
23697
23805
  this.crosshairs = [];
23698
- /**
23699
- * Current values of x and y when animating.
23700
- *
23701
- * @private
23702
- * @readonly
23703
- * @name Highcharts.Tooltip#now
23704
- * @type {Highcharts.PositionObject}
23705
- */
23706
- this.now = { x: 0, y: 0 };
23707
23806
  /**
23708
23807
  * Tooltips are initially hidden.
23709
23808
  *
@@ -23767,38 +23866,13 @@
23767
23866
  * @param {number} anchorY
23768
23867
  */
23769
23868
  move(x, y, anchorX, anchorY) {
23770
- const tooltip = this, now = tooltip.now, animate = tooltip.options.animation !== false &&
23771
- !tooltip.isHidden &&
23772
- // When we get close to the target position, abort animation and
23773
- // land on the right place (#3056)
23774
- (Math.abs(x - now.x) > 1 || Math.abs(y - now.y) > 1), skipAnchor = tooltip.followPointer || tooltip.len > 1;
23775
- // Get intermediate values for animation
23776
- extend(now, {
23777
- x: animate ? (2 * now.x + x) / 3 : x,
23778
- y: animate ? (now.y + y) / 2 : y,
23779
- anchorX: skipAnchor ?
23780
- void 0 :
23781
- animate ? (2 * now.anchorX + anchorX) / 3 : anchorX,
23782
- anchorY: skipAnchor ?
23783
- void 0 :
23784
- animate ? (now.anchorY + anchorY) / 2 : anchorY
23785
- });
23786
- // Move to the intermediate value
23787
- tooltip.getLabel().attr(now);
23788
- tooltip.drawTracker();
23789
- // Run on next tick of the mouse tracker
23790
- if (animate) {
23791
- // Never allow two timeouts
23792
- U.clearTimeout(this.tooltipTimeout);
23793
- // Set the fixed interval ticking for the smooth tooltip
23794
- this.tooltipTimeout = setTimeout(function () {
23795
- // The interval function may still be running during destroy,
23796
- // so check that the chart is really there before calling.
23797
- if (tooltip) {
23798
- tooltip.move(x, y, anchorX, anchorY);
23799
- }
23800
- }, 32);
23869
+ const tooltip = this, animation = animObject(!tooltip.isHidden && tooltip.options.animation), skipAnchor = tooltip.followPointer || (tooltip.len || 0) > 1, attr = { x, y };
23870
+ if (!skipAnchor) {
23871
+ attr.anchorX = anchorX;
23872
+ attr.anchorY = anchorY;
23801
23873
  }
23874
+ animation.step = () => tooltip.drawTracker();
23875
+ tooltip.getLabel().animate(attr, animation);
23802
23876
  }
23803
23877
  /**
23804
23878
  * Refresh the tooltip's text and position.
@@ -24521,7 +24595,7 @@
24521
24595
  const { animObject } = A;
24522
24596
  const { defaultOptions } = D;
24523
24597
  const { format } = F;
24524
- const { addEvent, erase, extend, fireEvent, getNestedProperty, isArray, isFunction, isNumber, isObject, merge, pick, syncTimeout, removeEvent, uniqueKey } = U;
24598
+ const { addEvent, crisp, erase, extend, fireEvent, getNestedProperty, isArray, isFunction, isNumber, isObject, merge, pick, syncTimeout, removeEvent, uniqueKey } = U;
24525
24599
  /* eslint-disable no-invalid-this, valid-jsdoc */
24526
24600
  /* *
24527
24601
  *
@@ -25629,7 +25703,8 @@
25629
25703
  }, AST.filterUserAttributes(haloOptions.attributes || {})));
25630
25704
  }
25631
25705
  }
25632
- else if (halo && halo.point && halo.point.haloPath) {
25706
+ else if (halo?.point?.haloPath &&
25707
+ !halo.point.destroyed) {
25633
25708
  // Animate back to 0 on the current halo point (#6055)
25634
25709
  halo.animate({ d: halo.point.haloPath(0) }, null,
25635
25710
  // Hide after unhovering. The `complete` callback runs in the
@@ -25652,7 +25727,7 @@
25652
25727
  */
25653
25728
  haloPath(size) {
25654
25729
  const pos = this.pos();
25655
- return pos ? this.series.chart.renderer.symbols.circle(Math.floor(pos[0]) - size, pos[1] - size, size * 2, size * 2) : [];
25730
+ return pos ? this.series.chart.renderer.symbols.circle(crisp(pos[0], 1) - size, pos[1] - size, size * 2, size * 2) : [];
25656
25731
  }
25657
25732
  }
25658
25733
  /* *
@@ -30351,6 +30426,21 @@
30351
30426
  * @type {Highcharts.AlignValue|null}
30352
30427
  */
30353
30428
  align: 'center',
30429
+ /**
30430
+ * Alignment method for data labels. If set to `plotEdges`, the labels
30431
+ * are aligned within the plot area in the direction of the y-axis. So
30432
+ * in a regular column chart, the labels are aligned vertically
30433
+ * according to the `verticalAlign` setting. In a bar chart, which is
30434
+ * inverted, the labels are aligned horizontally according to the
30435
+ * `align` setting. Applies to cartesian series only.
30436
+ *
30437
+ * @sample {highcharts} highcharts/series-bar/datalabels-alignto/
30438
+ * Align to plot edges
30439
+ *
30440
+ * @type {string}
30441
+ * @since 11.4.2
30442
+ * @apioption plotOptions.series.dataLabels.alignTo
30443
+ */
30354
30444
  /**
30355
30445
  * Whether to allow data labels to overlap. To make the labels less
30356
30446
  * sensitive for overlapping, the
@@ -31408,7 +31498,7 @@
31408
31498
  const { registerEventOptions } = F;
31409
31499
  const { svg, win } = H;
31410
31500
  const { seriesTypes } = SeriesRegistry;
31411
- const { arrayMax, arrayMin, clamp, correctFloat, defined, destroyObjectProperties, diffObjects, erase, error, extend, find, fireEvent, getClosestDistance, getNestedProperty, insertItem, isArray, isNumber, isString, merge, objectEach, pick, removeEvent, splat, syncTimeout } = U;
31501
+ const { arrayMax, arrayMin, clamp, correctFloat, crisp, defined, destroyObjectProperties, diffObjects, erase, error, extend, find, fireEvent, getClosestDistance, getNestedProperty, insertItem, isArray, isNumber, isString, merge, objectEach, pick, removeEvent, splat, syncTimeout } = U;
31412
31502
  /* *
31413
31503
  *
31414
31504
  * Class
@@ -32372,10 +32462,7 @@
32372
32462
  * Force getting extremes of a total series data range.
32373
32463
  */
32374
32464
  getProcessedData(forceExtremesFromAll) {
32375
- const series = this, xAxis = series.xAxis, options = series.options, cropThreshold = options.cropThreshold, getExtremesFromAll = forceExtremesFromAll ||
32376
- series.getExtremesFromAll ||
32377
- options.getExtremesFromAll, // #4599
32378
- logarithmic = xAxis?.logarithmic, isCartesian = series.isCartesian;
32465
+ const series = this, xAxis = series.xAxis, options = series.options, cropThreshold = options.cropThreshold, logarithmic = xAxis?.logarithmic, isCartesian = series.isCartesian;
32379
32466
  let croppedData, cropped, cropStart = 0, xExtremes, min, max,
32380
32467
  // Copied during slice operation:
32381
32468
  processedXData = series.xData, processedYData = series.yData, updatingNames = false;
@@ -32390,7 +32477,7 @@
32390
32477
  // Optionally filter out points outside the plot area
32391
32478
  if (isCartesian &&
32392
32479
  series.sorted &&
32393
- !getExtremesFromAll &&
32480
+ !forceExtremesFromAll &&
32394
32481
  (!cropThreshold ||
32395
32482
  dataLength > cropThreshold ||
32396
32483
  series.forceCrop)) {
@@ -32631,16 +32718,24 @@
32631
32718
  * Force getting extremes of a total series data range.
32632
32719
  */
32633
32720
  getExtremes(yData, forceExtremesFromAll) {
32634
- const xAxis = this.xAxis, yAxis = this.yAxis, xData = this.processedXData || this.xData, activeYData = [],
32721
+ const xAxis = this.xAxis, yAxis = this.yAxis, activeYData = [],
32635
32722
  // Handle X outside the viewed area. This does not work with
32636
32723
  // non-sorted data like scatter (#7639).
32637
32724
  shoulder = this.requireSorting && !this.is('column') ?
32638
32725
  1 : 0,
32639
32726
  // #2117, need to compensate for log X axis
32640
- positiveValuesOnly = yAxis ? yAxis.positiveValuesOnly : false;
32641
- let xExtremes, validValue, withinRange, x, y, i, j, xMin = 0, xMax = 0, activeCounter = 0;
32642
- yData = yData || this.stackedYData || this.processedYData || [];
32643
- const yDataLength = yData.length;
32727
+ positiveValuesOnly = yAxis ? yAxis.positiveValuesOnly : false, getExtremesFromAll = forceExtremesFromAll ||
32728
+ this.getExtremesFromAll ||
32729
+ this.options.getExtremesFromAll; // #4599
32730
+ let { processedXData, processedYData } = this, xExtremes, validValue, withinRange, x, y, i, j, xMin = 0, xMax = 0, activeCounter = 0;
32731
+ // Get the processed data from the full range (#21003)
32732
+ if (this.cropped && getExtremesFromAll) {
32733
+ const processedData = this.getProcessedData(true);
32734
+ processedXData = processedData.xData;
32735
+ processedYData = processedData.yData;
32736
+ }
32737
+ yData = yData || this.stackedYData || processedYData || [];
32738
+ const yDataLength = yData.length, xData = processedXData || this.xData;
32644
32739
  if (xAxis) {
32645
32740
  xExtremes = xAxis.getExtremes();
32646
32741
  xMin = xExtremes.min;
@@ -33210,12 +33305,16 @@
33210
33305
  }
33211
33306
  const pos = point.pos();
33212
33307
  if (isNumber(radius) && pos) {
33213
- attribs.x = pos[0] - radius;
33214
- attribs.y = pos[1] - radius;
33215
33308
  if (seriesOptions.crisp) {
33216
- // Math.floor for #1843:
33217
- attribs.x = Math.floor(attribs.x);
33309
+ pos[0] = crisp(pos[0], point.hasImage ?
33310
+ 0 :
33311
+ symbol === 'rect' ?
33312
+ // Rectangle symbols need crisp edges, others don't
33313
+ seriesMarkerOptions?.lineWidth || 0 :
33314
+ 1);
33218
33315
  }
33316
+ attribs.x = pos[0] - radius;
33317
+ attribs.y = pos[1] - radius;
33219
33318
  }
33220
33319
  if (radius) {
33221
33320
  attribs.width = attribs.height = 2 * radius;
@@ -36387,7 +36486,7 @@
36387
36486
  * @emits Highcharts.Chart#event:afterSetChartSize
36388
36487
  */
36389
36488
  setChartSize(skipAxes) {
36390
- const chart = this, inverted = chart.inverted, renderer = chart.renderer, chartWidth = chart.chartWidth, chartHeight = chart.chartHeight, optionsChart = chart.options.chart, spacing = chart.spacing, clipOffset = chart.clipOffset;
36489
+ const chart = this, { chartHeight, chartWidth, inverted, spacing, renderer } = chart, clipOffset = chart.clipOffset, clipRoundFunc = Math[inverted ? 'floor' : 'round'];
36391
36490
  let plotLeft, plotTop, plotWidth, plotHeight;
36392
36491
  /**
36393
36492
  * The current left position of the plot area in pixels.
@@ -36419,7 +36518,6 @@
36419
36518
  chart.plotHeight = plotHeight = Math.max(0, Math.round(chartHeight - plotTop - chart.marginBottom));
36420
36519
  chart.plotSizeX = inverted ? plotHeight : plotWidth;
36421
36520
  chart.plotSizeY = inverted ? plotWidth : plotHeight;
36422
- chart.plotBorderWidth = optionsChart.plotBorderWidth || 0;
36423
36521
  // Set boxes used for alignment
36424
36522
  chart.spacingBox = renderer.spacingBox = {
36425
36523
  x: spacing[3],
@@ -36433,17 +36531,15 @@
36433
36531
  width: plotWidth,
36434
36532
  height: plotHeight
36435
36533
  };
36436
- const plotBorderWidth = 2 * Math.floor(chart.plotBorderWidth / 2), clipX = Math.ceil(Math.max(plotBorderWidth, clipOffset[3]) / 2), clipY = Math.ceil(Math.max(plotBorderWidth, clipOffset[0]) / 2);
36437
- chart.clipBox = {
36438
- x: clipX,
36439
- y: clipY,
36440
- width: Math.floor(chart.plotSizeX -
36441
- Math.max(plotBorderWidth, clipOffset[1]) / 2 -
36442
- clipX),
36443
- height: Math.max(0, Math.floor(chart.plotSizeY -
36444
- Math.max(plotBorderWidth, clipOffset[2]) / 2 -
36445
- clipY))
36446
- };
36534
+ // Compute the clipping box
36535
+ if (clipOffset) {
36536
+ chart.clipBox = {
36537
+ x: clipRoundFunc(clipOffset[3]),
36538
+ y: clipRoundFunc(clipOffset[0]),
36539
+ width: clipRoundFunc(chart.plotSizeX - clipOffset[1] - clipOffset[3]),
36540
+ height: clipRoundFunc(chart.plotSizeY - clipOffset[0] - clipOffset[2])
36541
+ };
36542
+ }
36447
36543
  if (!skipAxes) {
36448
36544
  chart.axes.forEach(function (axis) {
36449
36545
  axis.setAxisSize();
@@ -36461,7 +36557,7 @@
36461
36557
  */
36462
36558
  resetMargins() {
36463
36559
  fireEvent(this, 'resetMargins');
36464
- const chart = this, chartOptions = chart.options.chart;
36560
+ const chart = this, chartOptions = chart.options.chart, plotBorderWidth = chartOptions.plotBorderWidth || 0, halfWidth = plotBorderWidth / 2;
36465
36561
  // Create margin and spacing array
36466
36562
  ['margin', 'spacing'].forEach(function splashArrays(target) {
36467
36563
  const value = chartOptions[target], values = isObject(value) ? value : [value, value, value, value];
@@ -36480,7 +36576,13 @@
36480
36576
  chart[m] = pick(chart.margin[side], chart.spacing[side]);
36481
36577
  });
36482
36578
  chart.axisOffset = [0, 0, 0, 0]; // Top, right, bottom, left
36483
- chart.clipOffset = [0, 0, 0, 0];
36579
+ chart.clipOffset = [
36580
+ halfWidth,
36581
+ halfWidth,
36582
+ halfWidth,
36583
+ halfWidth
36584
+ ];
36585
+ chart.plotBorderWidth = plotBorderWidth;
36484
36586
  }
36485
36587
  /**
36486
36588
  * Internal function to draw or redraw the borders and backgrounds for chart
@@ -36723,7 +36825,8 @@
36723
36825
  chart.setChartSize();
36724
36826
  for (const axis of axes) {
36725
36827
  const { options } = axis, { labels } = options;
36726
- if (axis.horiz &&
36828
+ if (chart.hasCartesianSeries && // #20948
36829
+ axis.horiz &&
36727
36830
  axis.visible &&
36728
36831
  labels.enabled &&
36729
36832
  axis.series.length &&
@@ -37645,7 +37748,7 @@
37645
37748
  // Remove active points for shared tooltip
37646
37749
  this.hoverPoints?.forEach((point) => point.setState());
37647
37750
  for (const axis of axes) {
37648
- 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,
37751
+ 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),
37649
37752
  // If fingers pinched very close on this axis, treat as pan
37650
37753
  scale = Math.abs(toLength) < 10 ?
37651
37754
  1 :
@@ -38211,23 +38314,7 @@
38211
38314
  * @private
38212
38315
  */
38213
38316
  moveFixedElements() {
38214
- const { container, inverted, scrollablePixelsX, scrollablePixelsY } = this.chart, fixedRenderer = this.fixedRenderer, fixedSelectors = [
38215
- '.highcharts-breadcrumbs-group',
38216
- '.highcharts-contextbutton',
38217
- '.highcharts-caption',
38218
- '.highcharts-credits',
38219
- '.highcharts-legend',
38220
- '.highcharts-legend-checkbox',
38221
- '.highcharts-navigator-series',
38222
- '.highcharts-navigator-xaxis',
38223
- '.highcharts-navigator-yaxis',
38224
- '.highcharts-navigator',
38225
- '.highcharts-reset-zoom',
38226
- '.highcharts-drillup-button',
38227
- '.highcharts-scrollbar',
38228
- '.highcharts-subtitle',
38229
- '.highcharts-title'
38230
- ];
38317
+ const { container, inverted, scrollablePixelsX, scrollablePixelsY } = this.chart, fixedRenderer = this.fixedRenderer, fixedSelectors = ScrollablePlotArea.fixedSelectors;
38231
38318
  let axisClass;
38232
38319
  if (scrollablePixelsX && !inverted) {
38233
38320
  axisClass = '.highcharts-yaxis';
@@ -38254,6 +38341,24 @@
38254
38341
  }
38255
38342
  }
38256
38343
  }
38344
+ ScrollablePlotArea.fixedSelectors = [
38345
+ '.highcharts-breadcrumbs-group',
38346
+ '.highcharts-contextbutton',
38347
+ '.highcharts-caption',
38348
+ '.highcharts-credits',
38349
+ '.highcharts-drillup-button',
38350
+ '.highcharts-legend',
38351
+ '.highcharts-legend-checkbox',
38352
+ '.highcharts-navigator-series',
38353
+ '.highcharts-navigator-xaxis',
38354
+ '.highcharts-navigator-yaxis',
38355
+ '.highcharts-navigator',
38356
+ '.highcharts-range-selector-group',
38357
+ '.highcharts-reset-zoom',
38358
+ '.highcharts-scrollbar',
38359
+ '.highcharts-subtitle',
38360
+ '.highcharts-title'
38361
+ ];
38257
38362
  /* *
38258
38363
  *
38259
38364
  * Default Export
@@ -39547,7 +39652,248 @@
39547
39652
 
39548
39653
  return LineSeries;
39549
39654
  });
39550
- _registerModule(_modules, 'Series/Area/AreaSeries.js', [_modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (SeriesRegistry, U) {
39655
+ _registerModule(_modules, 'Series/Area/AreaSeriesDefaults.js', [], function () {
39656
+ /* *
39657
+ *
39658
+ * (c) 2010-2024 Torstein Honsi
39659
+ *
39660
+ * License: www.highcharts.com/license
39661
+ *
39662
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
39663
+ *
39664
+ * */
39665
+ /* *
39666
+ *
39667
+ * API Options
39668
+ *
39669
+ * */
39670
+ /**
39671
+ * The area series type.
39672
+ *
39673
+ * @sample {highcharts} highcharts/demo/area-basic/
39674
+ * Area chart
39675
+ * @sample {highstock} stock/demo/area/
39676
+ * Area chart
39677
+ *
39678
+ * @extends plotOptions.line
39679
+ * @excluding useOhlcData
39680
+ * @product highcharts highstock
39681
+ * @optionparent plotOptions.area
39682
+ */
39683
+ const AreaSeriesDefaults = {
39684
+ /**
39685
+ * @see [fillColor](#plotOptions.area.fillColor)
39686
+ * @see [fillOpacity](#plotOptions.area.fillOpacity)
39687
+ *
39688
+ * @apioption plotOptions.area.color
39689
+ */
39690
+ /**
39691
+ * Fill color or gradient for the area. When `undefined`, the series'
39692
+ * `color` is used with the series' `fillOpacity`.
39693
+ *
39694
+ * In styled mode, the fill color can be set with the `.highcharts-area`
39695
+ * class name.
39696
+ *
39697
+ * @see [color](#plotOptions.area.color)
39698
+ * @see [fillOpacity](#plotOptions.area.fillOpacity)
39699
+ *
39700
+ * @sample {highcharts} highcharts/plotoptions/area-fillcolor-default/
39701
+ * Undefined by default
39702
+ * @sample {highcharts} highcharts/plotoptions/area-fillcolor-gradient/
39703
+ * Gradient
39704
+ *
39705
+ * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
39706
+ * @product highcharts highstock
39707
+ * @apioption plotOptions.area.fillColor
39708
+ */
39709
+ /**
39710
+ * Fill opacity for the area. When you set an explicit `fillColor`,
39711
+ * the `fillOpacity` is not applied. Instead, you should define the
39712
+ * opacity in the `fillColor` with an rgba color definition. The
39713
+ * `fillOpacity` setting, also the default setting, overrides the alpha
39714
+ * component of the `color` setting.
39715
+ *
39716
+ * In styled mode, the fill opacity can be set with the
39717
+ * `.highcharts-area` class name.
39718
+ *
39719
+ * @see [color](#plotOptions.area.color)
39720
+ * @see [fillColor](#plotOptions.area.fillColor)
39721
+ *
39722
+ * @sample {highcharts} highcharts/plotoptions/area-fillopacity/
39723
+ * Automatic fill color and fill opacity of 0.1
39724
+ *
39725
+ * @type {number}
39726
+ * @default {highcharts} 0.75
39727
+ * @default {highstock} 0.75
39728
+ * @product highcharts highstock
39729
+ * @apioption plotOptions.area.fillOpacity
39730
+ */
39731
+ /**
39732
+ * A separate color for the graph line. By default the line takes the
39733
+ * `color` of the series, but the lineColor setting allows setting a
39734
+ * separate color for the line without altering the `fillColor`.
39735
+ *
39736
+ * In styled mode, the line stroke can be set with the
39737
+ * `.highcharts-graph` class name.
39738
+ *
39739
+ * @sample {highcharts} highcharts/plotoptions/area-linecolor/
39740
+ * Dark gray line
39741
+ *
39742
+ * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
39743
+ * @product highcharts highstock
39744
+ * @apioption plotOptions.area.lineColor
39745
+ */
39746
+ /**
39747
+ * A separate color for the negative part of the area. Note that `zones`
39748
+ * takes precedence over the negative fill color.
39749
+ *
39750
+ * In styled mode, a negative color is set with the
39751
+ * `.highcharts-negative` class name.
39752
+ *
39753
+ * @see [negativeColor](#plotOptions.area.negativeColor)
39754
+ *
39755
+ * @sample {highcharts} highcharts/css/series-negative-color/
39756
+ * Negative color in styled mode
39757
+ *
39758
+ * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
39759
+ * @since 3.0
39760
+ * @product highcharts
39761
+ * @apioption plotOptions.area.negativeFillColor
39762
+ */
39763
+ /**
39764
+ * Whether the whole area or just the line should respond to mouseover
39765
+ * tooltips and other mouse or touch events.
39766
+ *
39767
+ * @sample {highcharts|highstock} highcharts/plotoptions/area-trackbyarea/
39768
+ * Display the tooltip when the area is hovered
39769
+ *
39770
+ * @type {boolean}
39771
+ * @default false
39772
+ * @since 1.1.6
39773
+ * @product highcharts highstock
39774
+ * @apioption plotOptions.area.trackByArea
39775
+ */
39776
+ /**
39777
+ * The Y axis value to serve as the base for the area, for
39778
+ * distinguishing between values above and below a threshold. The area
39779
+ * between the graph and the threshold is filled.
39780
+ *
39781
+ * * If a number is given, the Y axis will scale to the threshold.
39782
+ * * If `null`, the scaling behaves like a line series with fill between
39783
+ * the graph and the Y axis minimum.
39784
+ * * If `Infinity` or `-Infinity`, the area between the graph and the
39785
+ * corresponding Y axis extreme is filled (since v6.1.0).
39786
+ *
39787
+ * @sample {highcharts} highcharts/plotoptions/area-threshold/
39788
+ * A threshold of 100
39789
+ * @sample {highcharts} highcharts/plotoptions/area-threshold-infinity/
39790
+ * A threshold of Infinity
39791
+ *
39792
+ * @type {number|null}
39793
+ * @since 2.0
39794
+ * @product highcharts highstock
39795
+ */
39796
+ threshold: 0,
39797
+ legendSymbol: 'areaMarker'
39798
+ };
39799
+ /**
39800
+ * A `area` series. If the [type](#series.area.type) option is not
39801
+ * specified, it is inherited from [chart.type](#chart.type).
39802
+ *
39803
+ * @extends series,plotOptions.area
39804
+ * @excluding dataParser, dataURL, useOhlcData
39805
+ * @product highcharts highstock
39806
+ * @apioption series.area
39807
+ */
39808
+ /**
39809
+ * @see [fillColor](#series.area.fillColor)
39810
+ * @see [fillOpacity](#series.area.fillOpacity)
39811
+ *
39812
+ * @apioption series.area.color
39813
+ */
39814
+ /**
39815
+ * An array of data points for the series. For the `area` series type,
39816
+ * points can be given in the following ways:
39817
+ *
39818
+ * 1. An array of numerical values. In this case, the numerical values will be
39819
+ * interpreted as `y` options. The `x` values will be automatically
39820
+ * calculated, either starting at 0 and incremented by 1, or from
39821
+ * `pointStart` * and `pointInterval` given in the series options. If the
39822
+ * axis has categories, these will be used. Example:
39823
+ * ```js
39824
+ * data: [0, 5, 3, 5]
39825
+ * ```
39826
+ *
39827
+ * 2. An array of arrays with 2 values. In this case, the values correspond to
39828
+ * `x,y`. If the first value is a string, it is applied as the name of the
39829
+ * point, and the `x` value is inferred.
39830
+ * ```js
39831
+ * data: [
39832
+ * [0, 9],
39833
+ * [1, 7],
39834
+ * [2, 6]
39835
+ * ]
39836
+ * ```
39837
+ *
39838
+ * 3. An array of objects with named values. The following snippet shows only a
39839
+ * few settings, see the complete options set below. If the total number of
39840
+ * data points exceeds the series'
39841
+ * [turboThreshold](#series.area.turboThreshold), this option is not
39842
+ * available.
39843
+ * ```js
39844
+ * data: [{
39845
+ * x: 1,
39846
+ * y: 9,
39847
+ * name: "Point2",
39848
+ * color: "#00FF00"
39849
+ * }, {
39850
+ * x: 1,
39851
+ * y: 6,
39852
+ * name: "Point1",
39853
+ * color: "#FF00FF"
39854
+ * }]
39855
+ * ```
39856
+ *
39857
+ * @sample {highcharts} highcharts/chart/reflow-true/
39858
+ * Numerical values
39859
+ * @sample {highcharts} highcharts/series/data-array-of-arrays/
39860
+ * Arrays of numeric x and y
39861
+ * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/
39862
+ * Arrays of datetime x and y
39863
+ * @sample {highcharts} highcharts/series/data-array-of-name-value/
39864
+ * Arrays of point.name and y
39865
+ * @sample {highcharts} highcharts/series/data-array-of-objects/
39866
+ * Config objects
39867
+ *
39868
+ * @type {Array<number|Array<(number|string),(number|null)>|null|*>}
39869
+ * @extends series.line.data
39870
+ * @product highcharts highstock
39871
+ * @apioption series.area.data
39872
+ */
39873
+ /**
39874
+ * @see [color](#series.area.color)
39875
+ * @see [fillOpacity](#series.area.fillOpacity)
39876
+ *
39877
+ * @apioption series.area.fillColor
39878
+ */
39879
+ /**
39880
+ * @see [color](#series.area.color)
39881
+ * @see [fillColor](#series.area.fillColor)
39882
+ *
39883
+ * @default {highcharts} 0.75
39884
+ * @default {highstock} 0.75
39885
+ * @apioption series.area.fillOpacity
39886
+ */
39887
+ ''; // Adds doclets above to transpiled
39888
+ /* *
39889
+ *
39890
+ * Default Export
39891
+ *
39892
+ * */
39893
+
39894
+ return AreaSeriesDefaults;
39895
+ });
39896
+ _registerModule(_modules, 'Series/Area/AreaSeries.js', [_modules['Series/Area/AreaSeriesDefaults.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (AreaSeriesDefaults, SeriesRegistry, U) {
39551
39897
  /* *
39552
39898
  *
39553
39899
  * (c) 2010-2024 Torstein Honsi
@@ -39860,134 +40206,7 @@
39860
40206
  * Static Properties
39861
40207
  *
39862
40208
  * */
39863
- /**
39864
- * The area series type.
39865
- *
39866
- * @sample {highcharts} highcharts/demo/area-basic/
39867
- * Area chart
39868
- * @sample {highstock} stock/demo/area/
39869
- * Area chart
39870
- *
39871
- * @extends plotOptions.line
39872
- * @excluding useOhlcData
39873
- * @product highcharts highstock
39874
- * @optionparent plotOptions.area
39875
- */
39876
- AreaSeries.defaultOptions = merge(LineSeries.defaultOptions, {
39877
- /**
39878
- * @see [fillColor](#plotOptions.area.fillColor)
39879
- * @see [fillOpacity](#plotOptions.area.fillOpacity)
39880
- *
39881
- * @apioption plotOptions.area.color
39882
- */
39883
- /**
39884
- * Fill color or gradient for the area. When `undefined`, the series'
39885
- * `color` is used with the series' `fillOpacity`.
39886
- *
39887
- * In styled mode, the fill color can be set with the `.highcharts-area`
39888
- * class name.
39889
- *
39890
- * @see [color](#plotOptions.area.color)
39891
- * @see [fillOpacity](#plotOptions.area.fillOpacity)
39892
- *
39893
- * @sample {highcharts} highcharts/plotoptions/area-fillcolor-default/
39894
- * Undefined by default
39895
- * @sample {highcharts} highcharts/plotoptions/area-fillcolor-gradient/
39896
- * Gradient
39897
- *
39898
- * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
39899
- * @product highcharts highstock
39900
- * @apioption plotOptions.area.fillColor
39901
- */
39902
- /**
39903
- * Fill opacity for the area. When you set an explicit `fillColor`,
39904
- * the `fillOpacity` is not applied. Instead, you should define the
39905
- * opacity in the `fillColor` with an rgba color definition. The
39906
- * `fillOpacity` setting, also the default setting, overrides the alpha
39907
- * component of the `color` setting.
39908
- *
39909
- * In styled mode, the fill opacity can be set with the
39910
- * `.highcharts-area` class name.
39911
- *
39912
- * @see [color](#plotOptions.area.color)
39913
- * @see [fillColor](#plotOptions.area.fillColor)
39914
- *
39915
- * @sample {highcharts} highcharts/plotoptions/area-fillopacity/
39916
- * Automatic fill color and fill opacity of 0.1
39917
- *
39918
- * @type {number}
39919
- * @default {highcharts} 0.75
39920
- * @default {highstock} 0.75
39921
- * @product highcharts highstock
39922
- * @apioption plotOptions.area.fillOpacity
39923
- */
39924
- /**
39925
- * A separate color for the graph line. By default the line takes the
39926
- * `color` of the series, but the lineColor setting allows setting a
39927
- * separate color for the line without altering the `fillColor`.
39928
- *
39929
- * In styled mode, the line stroke can be set with the
39930
- * `.highcharts-graph` class name.
39931
- *
39932
- * @sample {highcharts} highcharts/plotoptions/area-linecolor/
39933
- * Dark gray line
39934
- *
39935
- * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
39936
- * @product highcharts highstock
39937
- * @apioption plotOptions.area.lineColor
39938
- */
39939
- /**
39940
- * A separate color for the negative part of the area.
39941
- *
39942
- * In styled mode, a negative color is set with the
39943
- * `.highcharts-negative` class name.
39944
- *
39945
- * @see [negativeColor](#plotOptions.area.negativeColor)
39946
- *
39947
- * @sample {highcharts} highcharts/css/series-negative-color/
39948
- * Negative color in styled mode
39949
- *
39950
- * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
39951
- * @since 3.0
39952
- * @product highcharts
39953
- * @apioption plotOptions.area.negativeFillColor
39954
- */
39955
- /**
39956
- * Whether the whole area or just the line should respond to mouseover
39957
- * tooltips and other mouse or touch events.
39958
- *
39959
- * @sample {highcharts|highstock} highcharts/plotoptions/area-trackbyarea/
39960
- * Display the tooltip when the area is hovered
39961
- *
39962
- * @type {boolean}
39963
- * @default false
39964
- * @since 1.1.6
39965
- * @product highcharts highstock
39966
- * @apioption plotOptions.area.trackByArea
39967
- */
39968
- /**
39969
- * The Y axis value to serve as the base for the area, for
39970
- * distinguishing between values above and below a threshold. The area
39971
- * between the graph and the threshold is filled.
39972
- *
39973
- * * If a number is given, the Y axis will scale to the threshold.
39974
- * * If `null`, the scaling behaves like a line series with fill between
39975
- * the graph and the Y axis minimum.
39976
- * * If `Infinity` or `-Infinity`, the area between the graph and the
39977
- * corresponding Y axis extreme is filled (since v6.1.0).
39978
- *
39979
- * @sample {highcharts} highcharts/plotoptions/area-threshold/
39980
- * A threshold of 100
39981
- * @sample {highcharts} highcharts/plotoptions/area-threshold-infinity/
39982
- * A threshold of Infinity
39983
- *
39984
- * @type {number|null}
39985
- * @since 2.0
39986
- * @product highcharts highstock
39987
- */
39988
- threshold: 0,
39989
- legendSymbol: 'areaMarker'
39990
- });
40209
+ AreaSeries.defaultOptions = merge(LineSeries.defaultOptions, AreaSeriesDefaults);
39991
40210
  extend(AreaSeries.prototype, {
39992
40211
  singleStacks: false
39993
40212
  });
@@ -39997,100 +40216,6 @@
39997
40216
  * Default Export
39998
40217
  *
39999
40218
  * */
40000
- /* *
40001
- *
40002
- * API Options
40003
- *
40004
- * */
40005
- /**
40006
- * A `area` series. If the [type](#series.area.type) option is not
40007
- * specified, it is inherited from [chart.type](#chart.type).
40008
- *
40009
- * @extends series,plotOptions.area
40010
- * @excluding dataParser, dataURL, useOhlcData
40011
- * @product highcharts highstock
40012
- * @apioption series.area
40013
- */
40014
- /**
40015
- * @see [fillColor](#series.area.fillColor)
40016
- * @see [fillOpacity](#series.area.fillOpacity)
40017
- *
40018
- * @apioption series.area.color
40019
- */
40020
- /**
40021
- * An array of data points for the series. For the `area` series type,
40022
- * points can be given in the following ways:
40023
- *
40024
- * 1. An array of numerical values. In this case, the numerical values will be
40025
- * interpreted as `y` options. The `x` values will be automatically
40026
- * calculated, either starting at 0 and incremented by 1, or from
40027
- * `pointStart` * and `pointInterval` given in the series options. If the
40028
- * axis has categories, these will be used. Example:
40029
- * ```js
40030
- * data: [0, 5, 3, 5]
40031
- * ```
40032
- *
40033
- * 2. An array of arrays with 2 values. In this case, the values correspond to
40034
- * `x,y`. If the first value is a string, it is applied as the name of the
40035
- * point, and the `x` value is inferred.
40036
- * ```js
40037
- * data: [
40038
- * [0, 9],
40039
- * [1, 7],
40040
- * [2, 6]
40041
- * ]
40042
- * ```
40043
- *
40044
- * 3. An array of objects with named values. The following snippet shows only a
40045
- * few settings, see the complete options set below. If the total number of
40046
- * data points exceeds the series'
40047
- * [turboThreshold](#series.area.turboThreshold), this option is not
40048
- * available.
40049
- * ```js
40050
- * data: [{
40051
- * x: 1,
40052
- * y: 9,
40053
- * name: "Point2",
40054
- * color: "#00FF00"
40055
- * }, {
40056
- * x: 1,
40057
- * y: 6,
40058
- * name: "Point1",
40059
- * color: "#FF00FF"
40060
- * }]
40061
- * ```
40062
- *
40063
- * @sample {highcharts} highcharts/chart/reflow-true/
40064
- * Numerical values
40065
- * @sample {highcharts} highcharts/series/data-array-of-arrays/
40066
- * Arrays of numeric x and y
40067
- * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/
40068
- * Arrays of datetime x and y
40069
- * @sample {highcharts} highcharts/series/data-array-of-name-value/
40070
- * Arrays of point.name and y
40071
- * @sample {highcharts} highcharts/series/data-array-of-objects/
40072
- * Config objects
40073
- *
40074
- * @type {Array<number|Array<(number|string),(number|null)>|null|*>}
40075
- * @extends series.line.data
40076
- * @product highcharts highstock
40077
- * @apioption series.area.data
40078
- */
40079
- /**
40080
- * @see [color](#series.area.color)
40081
- * @see [fillOpacity](#series.area.fillOpacity)
40082
- *
40083
- * @apioption series.area.fillColor
40084
- */
40085
- /**
40086
- * @see [color](#series.area.color)
40087
- * @see [fillColor](#series.area.fillColor)
40088
- *
40089
- * @default {highcharts} 0.75
40090
- * @default {highstock} 0.75
40091
- * @apioption series.area.fillOpacity
40092
- */
40093
- ''; // Adds doclets above to transpiled
40094
40219
 
40095
40220
  return AreaSeries;
40096
40221
  });
@@ -41049,7 +41174,7 @@
41049
41174
  const { animObject } = A;
41050
41175
  const { parse: color } = Color;
41051
41176
  const { noop } = H;
41052
- const { clamp, defined, extend, fireEvent, isArray, isNumber, merge, pick, objectEach } = U;
41177
+ const { clamp, crisp, defined, extend, fireEvent, isArray, isNumber, merge, pick, objectEach } = U;
41053
41178
  /* *
41054
41179
  *
41055
41180
  * Class
@@ -41081,17 +41206,27 @@
41081
41206
  * Whether to initialize the animation or run it
41082
41207
  */
41083
41208
  animate(init) {
41084
- const series = this, yAxis = this.yAxis, yAxisPos = yAxis.pos, options = series.options, inverted = this.chart.inverted, attr = {}, translateProp = inverted ?
41209
+ const series = this, yAxis = this.yAxis, yAxisPos = yAxis.pos, reversed = yAxis.reversed, options = series.options, { clipOffset, inverted } = this.chart, attr = {}, translateProp = inverted ?
41085
41210
  'translateX' :
41086
41211
  'translateY';
41087
41212
  let translateStart, translatedThreshold;
41088
- if (init) {
41213
+ if (init && clipOffset) {
41089
41214
  attr.scaleY = 0.001;
41090
41215
  translatedThreshold = clamp(yAxis.toPixels(options.threshold), yAxisPos, yAxisPos + yAxis.len);
41091
41216
  if (inverted) {
41217
+ // Make sure the columns don't cover the axis line during
41218
+ // entrance animation
41219
+ translatedThreshold += reversed ?
41220
+ -Math.floor(clipOffset[0]) :
41221
+ Math.ceil(clipOffset[2]);
41092
41222
  attr.translateX = translatedThreshold - yAxis.len;
41093
41223
  }
41094
41224
  else {
41225
+ // Make sure the columns don't cover the axis line during
41226
+ // entrance animation
41227
+ translatedThreshold += reversed ?
41228
+ Math.ceil(clipOffset[0]) :
41229
+ -Math.floor(clipOffset[2]);
41095
41230
  attr.translateY = translatedThreshold;
41096
41231
  }
41097
41232
  // Apply final clipping (used in Highcharts Stock) (#7083)
@@ -41211,31 +41346,19 @@
41211
41346
  * @private
41212
41347
  * @function Highcharts.seriesTypes.column#crispCol
41213
41348
  */
41214
- crispCol(x, y, w, h) {
41215
- const borderWidth = this.borderWidth, xCrisp = -(borderWidth % 2 ? 0.5 : 0), yCrisp = borderWidth % 2 ? 0.5 : 1;
41216
- let right;
41349
+ crispCol(x, y, width, height) {
41350
+ const borderWidth = this.borderWidth, inverted = this.chart.inverted, bottom = crisp(y + height, borderWidth, inverted);
41351
+ // Vertical
41352
+ y = crisp(y, borderWidth, inverted);
41353
+ height = bottom - y;
41217
41354
  // Horizontal. We need to first compute the exact right edge, then
41218
41355
  // round it and compute the width from there.
41219
41356
  if (this.options.crisp) {
41220
- right = Math.round(x + w) + xCrisp;
41221
- x = Math.round(x) + xCrisp;
41222
- w = right - x;
41223
- }
41224
- // Vertical
41225
- const bottom = Math.round(y + h) + yCrisp, fromTop = Math.abs(y) <= 0.5 && bottom > 0.5; // #4504, #4656
41226
- y = Math.round(y) + yCrisp;
41227
- h = bottom - y;
41228
- // Top edges are exceptions
41229
- if (fromTop && h) { // #5146
41230
- y -= 1;
41231
- h += 1;
41357
+ const right = crisp(x + width, borderWidth);
41358
+ x = crisp(x, borderWidth);
41359
+ width = right - x;
41232
41360
  }
41233
- return {
41234
- x: x,
41235
- y: y,
41236
- width: w,
41237
- height: h
41238
- };
41361
+ return { x, y, width, height };
41239
41362
  }
41240
41363
  /**
41241
41364
  * Adjust for missing columns, according to the `centerInCategory`
@@ -41317,14 +41440,11 @@
41317
41440
  translate() {
41318
41441
  const series = this, chart = series.chart, options = series.options, dense = series.dense =
41319
41442
  series.closestPointRange * series.xAxis.transA < 2, borderWidth = series.borderWidth = pick(options.borderWidth, dense ? 0 : 1 // #3635
41320
- ), xAxis = series.xAxis, yAxis = series.yAxis, threshold = options.threshold, minPointLength = pick(options.minPointLength, 5), metrics = series.getColumnMetrics(), seriesPointWidth = metrics.width, seriesXOffset = series.pointXOffset = metrics.offset, dataMin = series.dataMin, dataMax = series.dataMax;
41443
+ ), xAxis = series.xAxis, yAxis = series.yAxis, threshold = options.threshold, minPointLength = pick(options.minPointLength, 5), metrics = series.getColumnMetrics(), seriesPointWidth = metrics.width, seriesXOffset = series.pointXOffset = metrics.offset, dataMin = series.dataMin, dataMax = series.dataMax, translatedThreshold = series.translatedThreshold =
41444
+ yAxis.getThreshold(threshold);
41321
41445
  // Postprocessed for border width
41322
41446
  let seriesBarW = series.barW =
41323
- Math.max(seriesPointWidth, 1 + 2 * borderWidth), translatedThreshold = series.translatedThreshold =
41324
- yAxis.getThreshold(threshold);
41325
- if (chart.inverted) {
41326
- translatedThreshold -= 0.5; // #3355
41327
- }
41447
+ Math.max(seriesPointWidth, 1 + 2 * borderWidth);
41328
41448
  // When the pointPadding is 0, we want the columns to be packed
41329
41449
  // tightly, so we allow individual columns to have individual sizes.
41330
41450
  // When pointPadding is greater, we strive for equal-width columns
@@ -41704,7 +41824,7 @@
41704
41824
  * @private
41705
41825
  */
41706
41826
  function alignDataLabel(point, dataLabel, options, alignTo, isNew) {
41707
- const series = this, chart = this.chart, inverted = this.isCartesian && chart.inverted, enabledDataSorting = this.enabledDataSorting, plotX = point.plotX, plotY = point.plotY, rotation = options.rotation || 0, isInsidePlot = defined(plotX) &&
41827
+ const series = this, { chart, enabledDataSorting } = this, inverted = this.isCartesian && chart.inverted, plotX = point.plotX, plotY = point.plotY, rotation = options.rotation || 0, isInsidePlot = defined(plotX) &&
41708
41828
  defined(plotY) &&
41709
41829
  chart.isInsidePlot(plotX, Math.round(plotY), {
41710
41830
  inverted,
@@ -41724,10 +41844,10 @@
41724
41844
  (enabledDataSorting && !justify) ||
41725
41845
  isInsidePlot ||
41726
41846
  (
41727
- // If the data label is inside the align box, it is
41728
- // enough that parts of the align box is inside the
41729
- // plot area (#12370). When stacking, it is always
41730
- // inside regardless of the option (#15148).
41847
+ // If the data label is inside the align box, it is enough
41848
+ // that parts of the align box is inside the plot area
41849
+ // (#12370). When stacking, it is always inside regardless
41850
+ // of the option (#15148).
41731
41851
  pick(options.inside, !!this.options.stacking) &&
41732
41852
  alignTo &&
41733
41853
  chart.isInsidePlot(plotX, inverted ?
@@ -41753,6 +41873,11 @@
41753
41873
  width: 0,
41754
41874
  height: 0
41755
41875
  }, alignTo || {});
41876
+ // Align to plot edges
41877
+ if (options.alignTo === 'plotEdges' && series.isCartesian) {
41878
+ alignTo[inverted ? 'x' : 'y'] = 0;
41879
+ alignTo[inverted ? 'width' : 'height'] = this.yAxis?.len || 0;
41880
+ }
41756
41881
  // Add the text size for alignment calculation
41757
41882
  extend(options, {
41758
41883
  width: bBox.width,
@@ -42090,10 +42215,12 @@
42090
42215
  * @private
42091
42216
  */
42092
42217
  function justifyDataLabel(dataLabel, options, alignAttr, bBox, alignTo, isNew) {
42093
- const chart = this.chart, align = options.align, verticalAlign = options.verticalAlign, padding = dataLabel.box ? 0 : (dataLabel.padding || 0);
42218
+ const chart = this.chart, align = options.align, verticalAlign = options.verticalAlign, padding = dataLabel.box ? 0 : (dataLabel.padding || 0), horizontalAxis = chart.inverted ? this.yAxis : this.xAxis, horizontalAxisShift = horizontalAxis ?
42219
+ horizontalAxis.left - chart.plotLeft : 0, verticalAxis = chart.inverted ? this.xAxis : this.yAxis, verticalAxisShift = verticalAxis ?
42220
+ verticalAxis.top - chart.plotTop : 0;
42094
42221
  let { x = 0, y = 0 } = options, off, justified;
42095
42222
  // Off left
42096
- off = (alignAttr.x || 0) + padding;
42223
+ off = (alignAttr.x || 0) + padding + horizontalAxisShift;
42097
42224
  if (off < 0) {
42098
42225
  if (align === 'right' && x >= 0) {
42099
42226
  options.align = 'left';
@@ -42105,7 +42232,7 @@
42105
42232
  justified = true;
42106
42233
  }
42107
42234
  // Off right
42108
- off = (alignAttr.x || 0) + bBox.width - padding;
42235
+ off = (alignAttr.x || 0) + bBox.width - padding + horizontalAxisShift;
42109
42236
  if (off > chart.plotWidth) {
42110
42237
  if (align === 'left' && x <= 0) {
42111
42238
  options.align = 'right';
@@ -42117,7 +42244,7 @@
42117
42244
  justified = true;
42118
42245
  }
42119
42246
  // Off top
42120
- off = alignAttr.y + padding;
42247
+ off = alignAttr.y + padding + verticalAxisShift;
42121
42248
  if (off < 0) {
42122
42249
  if (verticalAlign === 'bottom' && y >= 0) {
42123
42250
  options.verticalAlign = 'top';
@@ -42129,7 +42256,7 @@
42129
42256
  justified = true;
42130
42257
  }
42131
42258
  // Off bottom
42132
- off = (alignAttr.y || 0) + bBox.height - padding;
42259
+ off = (alignAttr.y || 0) + bBox.height - padding + verticalAxisShift;
42133
42260
  if (off > chart.plotHeight) {
42134
42261
  if (verticalAlign === 'top' && y <= 0) {
42135
42262
  options.verticalAlign = 'bottom';
@@ -42309,7 +42436,7 @@
42309
42436
  // If parts of the box overshoots outside the plot area, modify
42310
42437
  // the box to center the label inside
42311
42438
  const overshoot = alignTo.y + alignTo.height - yLen;
42312
- if (overshoot > 0 && overshoot < alignTo.height) {
42439
+ if (overshoot > 0 && overshoot < alignTo.height - 1) {
42313
42440
  alignTo.height -= overshoot;
42314
42441
  }
42315
42442
  }
@@ -46020,6 +46147,15 @@
46020
46147
  * @since 6.0.0
46021
46148
  */
46022
46149
  width: 7,
46150
+ /**
46151
+ * Border radius of the handles.
46152
+ *
46153
+ * @sample {highstock} stock/navigator/handles-border-radius/
46154
+ * Border radius on the navigator handles.
46155
+ *
46156
+ * @since 11.4.2
46157
+ */
46158
+ borderRadius: 0,
46023
46159
  /**
46024
46160
  * Height for handles.
46025
46161
  *
@@ -46331,6 +46467,7 @@
46331
46467
  tickLength: 0,
46332
46468
  lineWidth: 0,
46333
46469
  gridLineColor: "#e6e6e6" /* Palette.neutralColor10 */,
46470
+ id: 'navigator-x-axis',
46334
46471
  gridLineWidth: 1,
46335
46472
  tickPixelInterval: 200,
46336
46473
  labels: {
@@ -46384,6 +46521,7 @@
46384
46521
  startOnTick: false,
46385
46522
  endOnTick: false,
46386
46523
  minPadding: 0.1,
46524
+ id: 'navigator-y-axis',
46387
46525
  maxPadding: 0.1,
46388
46526
  labels: {
46389
46527
  enabled: false
@@ -46422,7 +46560,7 @@
46422
46560
 
46423
46561
  return NavigatorDefaults;
46424
46562
  });
46425
- _registerModule(_modules, 'Stock/Navigator/NavigatorSymbols.js', [], function () {
46563
+ _registerModule(_modules, 'Stock/Navigator/NavigatorSymbols.js', [_modules['Core/Renderer/SVG/Symbols.js'], _modules['Core/Utilities.js']], function (rect, U) {
46426
46564
  /* *
46427
46565
  *
46428
46566
  * (c) 2010-2024 Torstein Honsi
@@ -46432,6 +46570,7 @@
46432
46570
  * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
46433
46571
  *
46434
46572
  * */
46573
+ const { relativeLength } = U;
46435
46574
  /* *
46436
46575
  *
46437
46576
  * Constants
@@ -46442,18 +46581,14 @@
46442
46581
  * @private
46443
46582
  */
46444
46583
  function navigatorHandle(_x, _y, width, height, options = {}) {
46445
- const halfWidth = options.width ? options.width / 2 : width, markerPosition = Math.round(halfWidth / 3) + 0.5;
46584
+ const halfWidth = options.width ? options.width / 2 : width, markerPosition = 1.5, r = relativeLength(options.borderRadius || 0, Math.min(halfWidth * 2, height));
46446
46585
  height = options.height || height;
46447
46586
  return [
46448
- ['M', -halfWidth - 1, 0.5],
46449
- ['L', halfWidth, 0.5],
46450
- ['L', halfWidth, height + 0.5],
46451
- ['L', -halfWidth - 1, height + 0.5],
46452
- ['L', -halfWidth - 1, 0.5],
46453
- ['M', -markerPosition, 4],
46454
- ['L', -markerPosition, height - 3],
46455
- ['M', markerPosition - 1, 4],
46456
- ['L', markerPosition - 1, height - 3]
46587
+ ['M', -markerPosition, height / 2 - 3.5],
46588
+ ['L', -markerPosition, height / 2 + 4.5],
46589
+ ['M', markerPosition - 1, height / 2 - 3.5],
46590
+ ['L', markerPosition - 1, height / 2 + 4.5],
46591
+ ...rect.rect(-halfWidth - 1, 0.5, halfWidth * 2 + 1, height, { r })
46457
46592
  ];
46458
46593
  }
46459
46594
  /* *
@@ -47006,7 +47141,7 @@
47006
47141
  *
47007
47142
  * */
47008
47143
  const { defaultOptions } = D;
47009
- const { addEvent, correctFloat, defined, destroyObjectProperties, fireEvent, merge, pick, removeEvent } = U;
47144
+ const { addEvent, correctFloat, crisp, defined, destroyObjectProperties, fireEvent, merge, pick, removeEvent } = U;
47010
47145
  /* *
47011
47146
  *
47012
47147
  * Constants
@@ -47238,9 +47373,8 @@
47238
47373
  rect.attr(rect.crisp({
47239
47374
  x: -0.5,
47240
47375
  y: -0.5,
47241
- // +1 to compensate for crispifying in rect method
47242
- width: size + 1,
47243
- height: size + 1,
47376
+ width: size,
47377
+ height: size,
47244
47378
  r: options.buttonBorderRadius
47245
47379
  }, rect.strokeWidth()));
47246
47380
  // Button arrow
@@ -47450,8 +47584,8 @@
47450
47584
  const trackBorderWidth = scroller.trackBorderWidth =
47451
47585
  scroller.track.strokeWidth();
47452
47586
  scroller.track.attr({
47453
- x: -trackBorderWidth % 2 / 2,
47454
- y: -trackBorderWidth % 2 / 2
47587
+ x: -crisp(0, trackBorderWidth),
47588
+ y: -crisp(0, trackBorderWidth)
47455
47589
  });
47456
47590
  // Draw the scrollbar itself
47457
47591
  scroller.scrollbarGroup = renderer.g().add(group);
@@ -47485,7 +47619,7 @@
47485
47619
  });
47486
47620
  }
47487
47621
  scroller.scrollbarStrokeWidth = scroller.scrollbar.strokeWidth();
47488
- scroller.scrollbarGroup.translate(-scroller.scrollbarStrokeWidth % 2 / 2, -scroller.scrollbarStrokeWidth % 2 / 2);
47622
+ scroller.scrollbarGroup.translate(-crisp(0, scroller.scrollbarStrokeWidth), -crisp(0, scroller.scrollbarStrokeWidth));
47489
47623
  // Draw the buttons:
47490
47624
  scroller.drawScrollbarButton(0);
47491
47625
  scroller.drawScrollbarButton(1);
@@ -48487,8 +48621,6 @@
48487
48621
  ordinal: baseXaxis.options.ordinal,
48488
48622
  overscroll: baseXaxis.options.overscroll
48489
48623
  }, navigatorOptions.xAxis, {
48490
- id: 'navigator-x-axis',
48491
- yAxis: 'navigator-y-axis',
48492
48624
  type: 'datetime',
48493
48625
  index: xAxisIndex,
48494
48626
  isInternal: true,
@@ -48507,7 +48639,6 @@
48507
48639
  height: height
48508
48640
  }), 'xAxis');
48509
48641
  navigator.yAxis = new Axis(chart, merge(navigatorOptions.yAxis, {
48510
- id: 'navigator-y-axis',
48511
48642
  alignTicks: false,
48512
48643
  offset: 0,
48513
48644
  index: yAxisIndex,
@@ -48659,8 +48790,8 @@
48659
48790
  linkedTo: null,
48660
48791
  group: 'nav',
48661
48792
  padXAxis: false,
48662
- xAxis: 'navigator-x-axis',
48663
- yAxis: 'navigator-y-axis',
48793
+ xAxis: this.navigatorOptions.xAxis?.id,
48794
+ yAxis: this.navigatorOptions.yAxis?.id,
48664
48795
  showInLegend: false,
48665
48796
  stacking: void 0,
48666
48797
  isInternal: true,