@ntlab/ntjs-assets 2.0.21 → 2.0.22

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 (402) hide show
  1. package/assets/js/cdn.json +1 -1
  2. package/assets/js/highcharts/css/highcharts.css +74 -0
  3. package/assets/js/highcharts/es-modules/Accessibility/Components/LegendComponent.js +1 -1
  4. package/assets/js/highcharts/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +1 -1
  5. package/assets/js/highcharts/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +9 -2
  6. package/assets/js/highcharts/es-modules/Core/Axis/Axis.js +25 -15
  7. package/assets/js/highcharts/es-modules/Core/Axis/AxisDefaults.js +3 -2
  8. package/assets/js/highcharts/es-modules/Core/Axis/Color/ColorAxis.js +1 -1
  9. package/assets/js/highcharts/es-modules/Core/Axis/Color/ColorAxisDefaults.js +2 -2
  10. package/assets/js/highcharts/es-modules/Core/Axis/GridAxis.js +1 -1
  11. package/assets/js/highcharts/es-modules/Core/Axis/OrdinalAxis.js +1 -1
  12. package/assets/js/highcharts/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +10 -0
  13. package/assets/js/highcharts/es-modules/Core/Axis/RadialAxis.js +19 -113
  14. package/assets/js/highcharts/es-modules/Core/Axis/RadialAxisDefaults.js +128 -0
  15. package/assets/js/highcharts/es-modules/Core/Axis/Tick.js +9 -13
  16. package/assets/js/highcharts/es-modules/Core/Chart/Chart.js +21 -17
  17. package/assets/js/highcharts/es-modules/Core/Chart/ChartDefaults.js +4 -2
  18. package/assets/js/highcharts/es-modules/Core/Chart/StockChart.js +5 -9
  19. package/assets/js/highcharts/es-modules/Core/Defaults.js +180 -91
  20. package/assets/js/highcharts/es-modules/Core/Renderer/SVG/SVGElement.js +50 -28
  21. package/assets/js/highcharts/es-modules/Core/Renderer/SVG/SVGLabel.js +6 -3
  22. package/assets/js/highcharts/es-modules/Core/Renderer/SVG/SVGRenderer.js +38 -80
  23. package/assets/js/highcharts/es-modules/Core/Renderer/SVG/Symbols.js +9 -5
  24. package/assets/js/highcharts/es-modules/Core/Series/DataLabel.js +17 -10
  25. package/assets/js/highcharts/es-modules/Core/Series/Point.js +4 -3
  26. package/assets/js/highcharts/es-modules/Core/Series/Series.js +24 -15
  27. package/assets/js/highcharts/es-modules/Core/Series/SeriesDefaults.js +15 -0
  28. package/assets/js/highcharts/es-modules/Core/Templating.js +4 -1
  29. package/assets/js/highcharts/es-modules/Core/Tooltip.js +17 -55
  30. package/assets/js/highcharts/es-modules/Core/Utilities.js +16 -0
  31. package/assets/js/highcharts/es-modules/Data/Converters/CSVConverter.js +1 -1
  32. package/assets/js/highcharts/es-modules/Data/DataCursor.js +34 -16
  33. package/assets/js/highcharts/es-modules/Data/DataPool.js +1 -1
  34. package/assets/js/highcharts/es-modules/Extensions/Annotations/Controllables/Controllable.js +3 -0
  35. package/assets/js/highcharts/es-modules/Extensions/Annotations/Controllables/ControllableLabel.js +0 -3
  36. package/assets/js/highcharts/es-modules/Extensions/Annotations/Controllables/ControllablePath.js +0 -3
  37. package/assets/js/highcharts/es-modules/Extensions/Annotations/EventEmitter.js +6 -6
  38. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/BasicAnnotation.js +2 -0
  39. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/CrookedLine.js +1 -0
  40. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/Fibonacci.js +4 -2
  41. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/FibonacciTimeZones.js +2 -1
  42. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/InfinityLine.js +2 -1
  43. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/Measure.js +4 -3
  44. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/Pitchfork.js +11 -5
  45. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/TimeCycles.js +2 -1
  46. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/Tunnel.js +4 -2
  47. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/VerticalLine.js +2 -1
  48. package/assets/js/highcharts/es-modules/Extensions/Boost/BoostChart.js +11 -3
  49. package/assets/js/highcharts/es-modules/Extensions/Boost/BoostSeries.js +7 -4
  50. package/assets/js/highcharts/es-modules/Extensions/Boost/WGLRenderer.js +11 -2
  51. package/assets/js/highcharts/es-modules/Extensions/Data.js +3 -3
  52. package/assets/js/highcharts/es-modules/Extensions/DataGrouping/DataGroupingSeriesComposition.js +1 -0
  53. package/assets/js/highcharts/es-modules/Extensions/DownloadURL.js +3 -0
  54. package/assets/js/highcharts/es-modules/Extensions/DragPanes/AxisResizer.js +1 -2
  55. package/assets/js/highcharts/es-modules/Extensions/DraggablePoints/DragDropProps.js +17 -0
  56. package/assets/js/highcharts/es-modules/Extensions/DraggablePoints/DraggablePoints.js +1 -0
  57. package/assets/js/highcharts/es-modules/Extensions/Drilldown/Drilldown.js +14 -14
  58. package/assets/js/highcharts/es-modules/Extensions/Exporting/Exporting.js +13 -18
  59. package/assets/js/highcharts/es-modules/Extensions/Exporting/ExportingDefaults.js +8 -6
  60. package/assets/js/highcharts/es-modules/Extensions/OfflineExporting/OfflineExporting.js +38 -30
  61. package/assets/js/highcharts/es-modules/Extensions/Pane/PaneDefaults.js +11 -0
  62. package/assets/js/highcharts/es-modules/Extensions/RegexLimits.js +1 -0
  63. package/assets/js/highcharts/es-modules/Extensions/ScrollablePlotArea.js +19 -17
  64. package/assets/js/highcharts/es-modules/Extensions/Themes/BrandDark.js +13 -1
  65. package/assets/js/highcharts/es-modules/Maps/MapNavigation.js +5 -3
  66. package/assets/js/highcharts/es-modules/Maps/MapView.js +5 -5
  67. package/assets/js/highcharts/es-modules/Maps/Projection.js +39 -20
  68. package/assets/js/highcharts/es-modules/Series/ArcDiagram/ArcDiagramSeries.js +10 -231
  69. package/assets/js/highcharts/es-modules/Series/ArcDiagram/ArcDiagramSeriesDefaults.js +245 -0
  70. package/assets/js/highcharts/es-modules/Series/Area/AreaSeries.js +2 -222
  71. package/assets/js/highcharts/es-modules/Series/Area/AreaSeriesDefaults.js +239 -0
  72. package/assets/js/highcharts/es-modules/Series/AreaRange/AreaRangeSeries.js +0 -133
  73. package/assets/js/highcharts/es-modules/Series/AreaRange/AreaRangeSeriesDefaults.js +273 -0
  74. package/assets/js/highcharts/es-modules/Series/BoxPlot/BoxPlotSeries.js +36 -38
  75. package/assets/js/highcharts/es-modules/Series/Bubble/BubbleSeries.js +17 -6
  76. package/assets/js/highcharts/es-modules/Series/Candlestick/CandlestickSeries.js +9 -11
  77. package/assets/js/highcharts/es-modules/Series/ColorMapComposition.js +28 -4
  78. package/assets/js/highcharts/es-modules/Series/Column/ColumnDataLabel.js +1 -1
  79. package/assets/js/highcharts/es-modules/Series/Column/ColumnSeries.js +25 -30
  80. package/assets/js/highcharts/es-modules/Series/DataModifyComposition.js +26 -2
  81. package/assets/js/highcharts/es-modules/Series/DotPlot/DotPlotSeries.js +37 -27
  82. package/assets/js/highcharts/es-modules/Series/DotPlot/DotPlotSeriesDefaults.js +3 -2
  83. package/assets/js/highcharts/es-modules/Series/Dumbbell/DumbbellSeries.js +1 -39
  84. package/assets/js/highcharts/es-modules/Series/Dumbbell/DumbbellSeriesDefaults.js +29 -0
  85. package/assets/js/highcharts/es-modules/Series/Flags/FlagsSeries.js +2 -1
  86. package/assets/js/highcharts/es-modules/Series/GeoHeatmap/GeoHeatmapSeries.js +3 -10
  87. package/assets/js/highcharts/es-modules/Series/HLC/HLCSeries.js +4 -5
  88. package/assets/js/highcharts/es-modules/Series/MapLine/MapLineSeriesDefaults.js +7 -6
  89. package/assets/js/highcharts/es-modules/Series/MapPoint/MapPointSeriesDefaults.js +17 -11
  90. package/assets/js/highcharts/es-modules/Series/Networkgraph/NetworkgraphSeriesDefaults.js +1 -1
  91. package/assets/js/highcharts/es-modules/Series/Networkgraph/ReingoldFruchtermanLayout.js +1 -1
  92. package/assets/js/highcharts/es-modules/Series/OHLC/OHLCSeries.js +3 -5
  93. package/assets/js/highcharts/es-modules/Series/Organization/OrganizationSeries.js +17 -19
  94. package/assets/js/highcharts/es-modules/Series/Organization/OrganizationSeriesDefaults.js +1 -1
  95. package/assets/js/highcharts/es-modules/Series/PackedBubble/PackedBubbleLayout.js +3 -3
  96. package/assets/js/highcharts/es-modules/Series/PackedBubble/PackedBubbleSeries.js +3 -3
  97. package/assets/js/highcharts/es-modules/Series/PackedBubble/PackedBubbleSeriesDefaults.js +0 -1
  98. package/assets/js/highcharts/es-modules/Series/Pyramid/PyramidSeriesDefaults.js +3 -3
  99. package/assets/js/highcharts/es-modules/Series/Sankey/SankeySeries.js +5 -6
  100. package/assets/js/highcharts/es-modules/Series/Sankey/SankeySeriesDefaults.js +1 -1
  101. package/assets/js/highcharts/es-modules/Series/SeriesOnPointComposition.js +2 -2
  102. package/assets/js/highcharts/es-modules/Series/Sunburst/SunburstSeriesDefaults.js +1 -1
  103. package/assets/js/highcharts/es-modules/Series/Treegraph/TreegraphLink.js +12 -7
  104. package/assets/js/highcharts/es-modules/Series/Treegraph/TreegraphSeries.js +8 -9
  105. package/assets/js/highcharts/es-modules/Series/Treemap/TreemapSeries.js +8 -8
  106. package/assets/js/highcharts/es-modules/Series/Treemap/TreemapSeriesDefaults.js +1 -1
  107. package/assets/js/highcharts/es-modules/Series/Variwide/VariwideSeries.js +4 -4
  108. package/assets/js/highcharts/es-modules/Series/Venn/VennSeriesDefaults.js +2 -2
  109. package/assets/js/highcharts/es-modules/Series/Waterfall/WaterfallSeries.js +11 -12
  110. package/assets/js/highcharts/es-modules/Series/XRange/XRangeSeries.js +4 -4
  111. package/assets/js/highcharts/es-modules/Stock/Navigator/Navigator.js +2 -5
  112. package/assets/js/highcharts/es-modules/Stock/Navigator/NavigatorDefaults.js +11 -0
  113. package/assets/js/highcharts/es-modules/Stock/Navigator/NavigatorSymbols.js +9 -10
  114. package/assets/js/highcharts/es-modules/Stock/RangeSelector/RangeSelector.js +162 -187
  115. package/assets/js/highcharts/es-modules/Stock/RangeSelector/RangeSelectorComposition.js +32 -74
  116. package/assets/js/highcharts/es-modules/Stock/Scrollbar/Scrollbar.js +6 -7
  117. package/assets/js/highcharts/es-modules/masters/highcharts-more.src.js +2 -0
  118. package/assets/js/highcharts/highcharts-3d.js +1 -1
  119. package/assets/js/highcharts/highcharts-3d.src.js +1 -1
  120. package/assets/js/highcharts/highcharts-gantt.js +3 -3
  121. package/assets/js/highcharts/highcharts-gantt.src.js +2008 -906
  122. package/assets/js/highcharts/highcharts-more.js +2 -2
  123. package/assets/js/highcharts/highcharts-more.src.js +234 -313
  124. package/assets/js/highcharts/highcharts.js +3 -3
  125. package/assets/js/highcharts/highcharts.src.js +743 -616
  126. package/assets/js/highcharts/highmaps.js +3 -3
  127. package/assets/js/highcharts/highmaps.src.js +862 -673
  128. package/assets/js/highcharts/highstock.js +3 -3
  129. package/assets/js/highcharts/highstock.src.js +1016 -935
  130. package/assets/js/highcharts/indicators/acceleration-bands.js +1 -1
  131. package/assets/js/highcharts/indicators/acceleration-bands.src.js +1 -1
  132. package/assets/js/highcharts/indicators/accumulation-distribution.js +1 -1
  133. package/assets/js/highcharts/indicators/accumulation-distribution.src.js +1 -1
  134. package/assets/js/highcharts/indicators/ao.js +1 -1
  135. package/assets/js/highcharts/indicators/ao.src.js +1 -1
  136. package/assets/js/highcharts/indicators/apo.js +1 -1
  137. package/assets/js/highcharts/indicators/apo.src.js +1 -1
  138. package/assets/js/highcharts/indicators/aroon-oscillator.js +1 -1
  139. package/assets/js/highcharts/indicators/aroon-oscillator.src.js +1 -1
  140. package/assets/js/highcharts/indicators/aroon.js +1 -1
  141. package/assets/js/highcharts/indicators/aroon.src.js +1 -1
  142. package/assets/js/highcharts/indicators/atr.js +1 -1
  143. package/assets/js/highcharts/indicators/atr.src.js +1 -1
  144. package/assets/js/highcharts/indicators/bollinger-bands.js +1 -1
  145. package/assets/js/highcharts/indicators/bollinger-bands.src.js +1 -1
  146. package/assets/js/highcharts/indicators/cci.js +1 -1
  147. package/assets/js/highcharts/indicators/cci.src.js +1 -1
  148. package/assets/js/highcharts/indicators/chaikin.js +1 -1
  149. package/assets/js/highcharts/indicators/chaikin.src.js +1 -1
  150. package/assets/js/highcharts/indicators/cmf.js +1 -1
  151. package/assets/js/highcharts/indicators/cmf.src.js +1 -1
  152. package/assets/js/highcharts/indicators/cmo.js +1 -1
  153. package/assets/js/highcharts/indicators/cmo.src.js +1 -1
  154. package/assets/js/highcharts/indicators/dema.js +1 -1
  155. package/assets/js/highcharts/indicators/dema.src.js +1 -1
  156. package/assets/js/highcharts/indicators/disparity-index.js +1 -1
  157. package/assets/js/highcharts/indicators/disparity-index.src.js +1 -1
  158. package/assets/js/highcharts/indicators/dmi.js +1 -1
  159. package/assets/js/highcharts/indicators/dmi.src.js +1 -1
  160. package/assets/js/highcharts/indicators/dpo.js +1 -1
  161. package/assets/js/highcharts/indicators/dpo.src.js +1 -1
  162. package/assets/js/highcharts/indicators/ichimoku-kinko-hyo.js +1 -1
  163. package/assets/js/highcharts/indicators/ichimoku-kinko-hyo.src.js +1 -1
  164. package/assets/js/highcharts/indicators/indicators-all.js +1 -1
  165. package/assets/js/highcharts/indicators/indicators-all.src.js +1 -1
  166. package/assets/js/highcharts/indicators/indicators.js +1 -1
  167. package/assets/js/highcharts/indicators/indicators.src.js +1 -1
  168. package/assets/js/highcharts/indicators/keltner-channels.js +1 -1
  169. package/assets/js/highcharts/indicators/keltner-channels.src.js +1 -1
  170. package/assets/js/highcharts/indicators/klinger.js +1 -1
  171. package/assets/js/highcharts/indicators/klinger.src.js +1 -1
  172. package/assets/js/highcharts/indicators/macd.js +1 -1
  173. package/assets/js/highcharts/indicators/macd.src.js +1 -1
  174. package/assets/js/highcharts/indicators/mfi.js +1 -1
  175. package/assets/js/highcharts/indicators/mfi.src.js +1 -1
  176. package/assets/js/highcharts/indicators/momentum.js +1 -1
  177. package/assets/js/highcharts/indicators/momentum.src.js +1 -1
  178. package/assets/js/highcharts/indicators/natr.js +1 -1
  179. package/assets/js/highcharts/indicators/natr.src.js +1 -1
  180. package/assets/js/highcharts/indicators/obv.js +1 -1
  181. package/assets/js/highcharts/indicators/obv.src.js +1 -1
  182. package/assets/js/highcharts/indicators/pivot-points.js +1 -1
  183. package/assets/js/highcharts/indicators/pivot-points.src.js +1 -1
  184. package/assets/js/highcharts/indicators/ppo.js +1 -1
  185. package/assets/js/highcharts/indicators/ppo.src.js +1 -1
  186. package/assets/js/highcharts/indicators/price-channel.js +1 -1
  187. package/assets/js/highcharts/indicators/price-channel.src.js +1 -1
  188. package/assets/js/highcharts/indicators/price-envelopes.js +1 -1
  189. package/assets/js/highcharts/indicators/price-envelopes.src.js +1 -1
  190. package/assets/js/highcharts/indicators/psar.js +1 -1
  191. package/assets/js/highcharts/indicators/psar.src.js +1 -1
  192. package/assets/js/highcharts/indicators/regressions.js +1 -1
  193. package/assets/js/highcharts/indicators/regressions.src.js +1 -1
  194. package/assets/js/highcharts/indicators/roc.js +1 -1
  195. package/assets/js/highcharts/indicators/roc.src.js +1 -1
  196. package/assets/js/highcharts/indicators/rsi.js +1 -1
  197. package/assets/js/highcharts/indicators/rsi.src.js +1 -1
  198. package/assets/js/highcharts/indicators/slow-stochastic.js +1 -1
  199. package/assets/js/highcharts/indicators/slow-stochastic.src.js +1 -1
  200. package/assets/js/highcharts/indicators/stochastic.js +1 -1
  201. package/assets/js/highcharts/indicators/stochastic.src.js +1 -1
  202. package/assets/js/highcharts/indicators/supertrend.js +1 -1
  203. package/assets/js/highcharts/indicators/supertrend.src.js +1 -1
  204. package/assets/js/highcharts/indicators/tema.js +1 -1
  205. package/assets/js/highcharts/indicators/tema.src.js +1 -1
  206. package/assets/js/highcharts/indicators/trendline.js +1 -1
  207. package/assets/js/highcharts/indicators/trendline.src.js +1 -1
  208. package/assets/js/highcharts/indicators/trix.js +1 -1
  209. package/assets/js/highcharts/indicators/trix.src.js +1 -1
  210. package/assets/js/highcharts/indicators/volume-by-price.js +1 -1
  211. package/assets/js/highcharts/indicators/volume-by-price.src.js +1 -1
  212. package/assets/js/highcharts/indicators/vwap.js +1 -1
  213. package/assets/js/highcharts/indicators/vwap.src.js +1 -1
  214. package/assets/js/highcharts/indicators/williams-r.js +1 -1
  215. package/assets/js/highcharts/indicators/williams-r.src.js +1 -1
  216. package/assets/js/highcharts/indicators/wma.js +1 -1
  217. package/assets/js/highcharts/indicators/wma.src.js +1 -1
  218. package/assets/js/highcharts/indicators/zigzag.js +1 -1
  219. package/assets/js/highcharts/indicators/zigzag.src.js +1 -1
  220. package/assets/js/highcharts/modules/accessibility.js +2 -2
  221. package/assets/js/highcharts/modules/accessibility.src.js +39 -28
  222. package/assets/js/highcharts/modules/annotations-advanced.js +2 -2
  223. package/assets/js/highcharts/modules/annotations-advanced.src.js +46 -31
  224. package/assets/js/highcharts/modules/annotations.js +2 -2
  225. package/assets/js/highcharts/modules/annotations.src.js +12 -15
  226. package/assets/js/highcharts/modules/arc-diagram.js +2 -2
  227. package/assets/js/highcharts/modules/arc-diagram.src.js +258 -233
  228. package/assets/js/highcharts/modules/arrow-symbols.js +1 -1
  229. package/assets/js/highcharts/modules/arrow-symbols.src.js +1 -1
  230. package/assets/js/highcharts/modules/boost-canvas.js +2 -2
  231. package/assets/js/highcharts/modules/boost-canvas.src.js +30 -10
  232. package/assets/js/highcharts/modules/boost.js +2 -2
  233. package/assets/js/highcharts/modules/boost.src.js +30 -10
  234. package/assets/js/highcharts/modules/broken-axis.js +1 -1
  235. package/assets/js/highcharts/modules/broken-axis.src.js +1 -1
  236. package/assets/js/highcharts/modules/bullet.js +1 -1
  237. package/assets/js/highcharts/modules/bullet.src.js +1 -1
  238. package/assets/js/highcharts/modules/coloraxis.js +2 -2
  239. package/assets/js/highcharts/modules/coloraxis.src.js +4 -4
  240. package/assets/js/highcharts/modules/current-date-indicator.js +1 -1
  241. package/assets/js/highcharts/modules/current-date-indicator.src.js +1 -1
  242. package/assets/js/highcharts/modules/cylinder.js +1 -1
  243. package/assets/js/highcharts/modules/cylinder.src.js +1 -1
  244. package/assets/js/highcharts/modules/data-tools.js +2 -2
  245. package/assets/js/highcharts/modules/data-tools.src.js +37 -19
  246. package/assets/js/highcharts/modules/data.js +1 -1
  247. package/assets/js/highcharts/modules/data.src.js +4 -4
  248. package/assets/js/highcharts/modules/datagrouping.js +2 -2
  249. package/assets/js/highcharts/modules/datagrouping.src.js +2 -1
  250. package/assets/js/highcharts/modules/debugger.js +1 -1
  251. package/assets/js/highcharts/modules/debugger.src.js +1 -1
  252. package/assets/js/highcharts/modules/dependency-wheel.js +1 -1
  253. package/assets/js/highcharts/modules/dependency-wheel.src.js +1 -1
  254. package/assets/js/highcharts/modules/dotplot.js +2 -2
  255. package/assets/js/highcharts/modules/dotplot.src.js +41 -30
  256. package/assets/js/highcharts/modules/drag-panes.js +2 -2
  257. package/assets/js/highcharts/modules/drag-panes.src.js +2 -3
  258. package/assets/js/highcharts/modules/draggable-points.js +2 -2
  259. package/assets/js/highcharts/modules/draggable-points.src.js +19 -1
  260. package/assets/js/highcharts/modules/drilldown.js +2 -2
  261. package/assets/js/highcharts/modules/drilldown.src.js +15 -15
  262. package/assets/js/highcharts/modules/dumbbell.js +2 -2
  263. package/assets/js/highcharts/modules/dumbbell.src.js +31 -40
  264. package/assets/js/highcharts/modules/export-data.js +2 -2
  265. package/assets/js/highcharts/modules/export-data.src.js +4 -1
  266. package/assets/js/highcharts/modules/exporting.js +2 -2
  267. package/assets/js/highcharts/modules/exporting.src.js +22 -25
  268. package/assets/js/highcharts/modules/flowmap.js +1 -1
  269. package/assets/js/highcharts/modules/flowmap.src.js +1 -1
  270. package/assets/js/highcharts/modules/full-screen.js +1 -1
  271. package/assets/js/highcharts/modules/full-screen.src.js +1 -1
  272. package/assets/js/highcharts/modules/funnel.js +2 -2
  273. package/assets/js/highcharts/modules/funnel.src.js +4 -4
  274. package/assets/js/highcharts/modules/funnel3d.js +1 -1
  275. package/assets/js/highcharts/modules/funnel3d.src.js +1 -1
  276. package/assets/js/highcharts/modules/gantt.js +2 -2
  277. package/assets/js/highcharts/modules/gantt.src.js +1266 -291
  278. package/assets/js/highcharts/modules/geoheatmap.js +1 -1
  279. package/assets/js/highcharts/modules/geoheatmap.src.js +4 -11
  280. package/assets/js/highcharts/modules/grid-axis.js +2 -2
  281. package/assets/js/highcharts/modules/grid-axis.src.js +2 -2
  282. package/assets/js/highcharts/modules/heatmap.js +2 -2
  283. package/assets/js/highcharts/modules/heatmap.src.js +32 -9
  284. package/assets/js/highcharts/modules/heikinashi.js +1 -1
  285. package/assets/js/highcharts/modules/heikinashi.src.js +1 -1
  286. package/assets/js/highcharts/modules/histogram-bellcurve.js +1 -1
  287. package/assets/js/highcharts/modules/histogram-bellcurve.src.js +1 -1
  288. package/assets/js/highcharts/modules/hollowcandlestick.js +1 -1
  289. package/assets/js/highcharts/modules/hollowcandlestick.src.js +1 -1
  290. package/assets/js/highcharts/modules/item-series.js +1 -1
  291. package/assets/js/highcharts/modules/item-series.src.js +1 -1
  292. package/assets/js/highcharts/modules/lollipop.js +1 -1
  293. package/assets/js/highcharts/modules/lollipop.src.js +1 -1
  294. package/assets/js/highcharts/modules/map.js +2 -2
  295. package/assets/js/highcharts/modules/map.src.js +120 -58
  296. package/assets/js/highcharts/modules/marker-clusters.js +1 -1
  297. package/assets/js/highcharts/modules/marker-clusters.src.js +1 -1
  298. package/assets/js/highcharts/modules/mouse-wheel-zoom.js +1 -1
  299. package/assets/js/highcharts/modules/mouse-wheel-zoom.src.js +1 -1
  300. package/assets/js/highcharts/modules/navigator.js +2 -2
  301. package/assets/js/highcharts/modules/navigator.src.js +28 -24
  302. package/assets/js/highcharts/modules/networkgraph.js +2 -2
  303. package/assets/js/highcharts/modules/networkgraph.src.js +3 -3
  304. package/assets/js/highcharts/modules/no-data-to-display.js +1 -1
  305. package/assets/js/highcharts/modules/no-data-to-display.src.js +1 -1
  306. package/assets/js/highcharts/modules/offline-exporting.js +2 -2
  307. package/assets/js/highcharts/modules/offline-exporting.src.js +43 -32
  308. package/assets/js/highcharts/modules/organization.js +2 -2
  309. package/assets/js/highcharts/modules/organization.src.js +19 -21
  310. package/assets/js/highcharts/modules/overlapping-datalabels.js +1 -1
  311. package/assets/js/highcharts/modules/overlapping-datalabels.src.js +1 -1
  312. package/assets/js/highcharts/modules/parallel-coordinates.js +1 -1
  313. package/assets/js/highcharts/modules/parallel-coordinates.src.js +1 -1
  314. package/assets/js/highcharts/modules/pareto.js +1 -1
  315. package/assets/js/highcharts/modules/pareto.src.js +1 -1
  316. package/assets/js/highcharts/modules/pathfinder.js +1 -1
  317. package/assets/js/highcharts/modules/pathfinder.src.js +1 -1
  318. package/assets/js/highcharts/modules/pattern-fill.js +1 -1
  319. package/assets/js/highcharts/modules/pattern-fill.src.js +1 -1
  320. package/assets/js/highcharts/modules/pictorial.js +1 -1
  321. package/assets/js/highcharts/modules/pictorial.src.js +1 -1
  322. package/assets/js/highcharts/modules/price-indicator.js +1 -1
  323. package/assets/js/highcharts/modules/price-indicator.src.js +1 -1
  324. package/assets/js/highcharts/modules/pyramid3d.js +1 -1
  325. package/assets/js/highcharts/modules/pyramid3d.src.js +1 -1
  326. package/assets/js/highcharts/modules/sankey.js +2 -2
  327. package/assets/js/highcharts/modules/sankey.src.js +7 -8
  328. package/assets/js/highcharts/modules/series-label.js +1 -1
  329. package/assets/js/highcharts/modules/series-label.src.js +1 -1
  330. package/assets/js/highcharts/modules/series-on-point.js +2 -2
  331. package/assets/js/highcharts/modules/series-on-point.src.js +3 -3
  332. package/assets/js/highcharts/modules/solid-gauge.js +1 -1
  333. package/assets/js/highcharts/modules/solid-gauge.src.js +1 -1
  334. package/assets/js/highcharts/modules/sonification.js +2 -2
  335. package/assets/js/highcharts/modules/sonification.src.js +4 -1
  336. package/assets/js/highcharts/modules/static-scale.js +1 -1
  337. package/assets/js/highcharts/modules/static-scale.src.js +1 -1
  338. package/assets/js/highcharts/modules/stock-tools.js +2 -2
  339. package/assets/js/highcharts/modules/stock-tools.src.js +3 -3
  340. package/assets/js/highcharts/modules/stock.js +2 -2
  341. package/assets/js/highcharts/modules/stock.src.js +274 -320
  342. package/assets/js/highcharts/modules/streamgraph.js +1 -1
  343. package/assets/js/highcharts/modules/streamgraph.src.js +1 -1
  344. package/assets/js/highcharts/modules/sunburst.js +2 -2
  345. package/assets/js/highcharts/modules/sunburst.src.js +39 -16
  346. package/assets/js/highcharts/modules/tiledwebmap.js +1 -1
  347. package/assets/js/highcharts/modules/tiledwebmap.src.js +1 -1
  348. package/assets/js/highcharts/modules/tilemap.js +1 -1
  349. package/assets/js/highcharts/modules/tilemap.src.js +1 -1
  350. package/assets/js/highcharts/modules/timeline.js +1 -1
  351. package/assets/js/highcharts/modules/timeline.src.js +1 -1
  352. package/assets/js/highcharts/modules/treegraph.js +2 -2
  353. package/assets/js/highcharts/modules/treegraph.src.js +21 -17
  354. package/assets/js/highcharts/modules/treegrid.js +2 -2
  355. package/assets/js/highcharts/modules/treegrid.src.js +2 -2
  356. package/assets/js/highcharts/modules/treemap.js +2 -2
  357. package/assets/js/highcharts/modules/treemap.src.js +38 -15
  358. package/assets/js/highcharts/modules/variable-pie.js +1 -1
  359. package/assets/js/highcharts/modules/variable-pie.src.js +1 -1
  360. package/assets/js/highcharts/modules/variwide.js +2 -2
  361. package/assets/js/highcharts/modules/variwide.src.js +5 -5
  362. package/assets/js/highcharts/modules/vector.js +1 -1
  363. package/assets/js/highcharts/modules/vector.src.js +1 -1
  364. package/assets/js/highcharts/modules/venn.js +1 -1
  365. package/assets/js/highcharts/modules/venn.src.js +3 -3
  366. package/assets/js/highcharts/modules/windbarb.js +1 -1
  367. package/assets/js/highcharts/modules/windbarb.src.js +1 -1
  368. package/assets/js/highcharts/modules/wordcloud.js +1 -1
  369. package/assets/js/highcharts/modules/wordcloud.src.js +1 -1
  370. package/assets/js/highcharts/modules/xrange.js +2 -2
  371. package/assets/js/highcharts/modules/xrange.src.js +5 -5
  372. package/assets/js/highcharts/standalone-navigator.js +2 -2
  373. package/assets/js/highcharts/standalone-navigator.src.js +769 -638
  374. package/assets/js/highcharts/themes/avocado.js +1 -1
  375. package/assets/js/highcharts/themes/avocado.src.js +1 -1
  376. package/assets/js/highcharts/themes/brand-dark.js +2 -2
  377. package/assets/js/highcharts/themes/brand-dark.src.js +14 -2
  378. package/assets/js/highcharts/themes/brand-light.js +1 -1
  379. package/assets/js/highcharts/themes/brand-light.src.js +1 -1
  380. package/assets/js/highcharts/themes/dark-blue.js +1 -1
  381. package/assets/js/highcharts/themes/dark-blue.src.js +1 -1
  382. package/assets/js/highcharts/themes/dark-green.js +1 -1
  383. package/assets/js/highcharts/themes/dark-green.src.js +1 -1
  384. package/assets/js/highcharts/themes/dark-unica.js +1 -1
  385. package/assets/js/highcharts/themes/dark-unica.src.js +1 -1
  386. package/assets/js/highcharts/themes/gray.js +1 -1
  387. package/assets/js/highcharts/themes/gray.src.js +1 -1
  388. package/assets/js/highcharts/themes/grid-light.js +1 -1
  389. package/assets/js/highcharts/themes/grid-light.src.js +1 -1
  390. package/assets/js/highcharts/themes/grid.js +1 -1
  391. package/assets/js/highcharts/themes/grid.src.js +1 -1
  392. package/assets/js/highcharts/themes/high-contrast-dark.js +1 -1
  393. package/assets/js/highcharts/themes/high-contrast-dark.src.js +1 -1
  394. package/assets/js/highcharts/themes/high-contrast-light.js +1 -1
  395. package/assets/js/highcharts/themes/high-contrast-light.src.js +1 -1
  396. package/assets/js/highcharts/themes/sand-signika.js +1 -1
  397. package/assets/js/highcharts/themes/sand-signika.src.js +1 -1
  398. package/assets/js/highcharts/themes/skies.js +1 -1
  399. package/assets/js/highcharts/themes/skies.src.js +1 -1
  400. package/assets/js/highcharts/themes/sunset.js +1 -1
  401. package/assets/js/highcharts/themes/sunset.src.js +1 -1
  402. package/package.json +1 -1
@@ -14,7 +14,7 @@ import Color from '../../Color/Color.js';
14
14
  import H from '../../Globals.js';
15
15
  const { deg2rad, doc, svg, SVG_NS, win } = H;
16
16
  import U from '../../Utilities.js';
17
- const { addEvent, attr, createElement, css, defined, erase, extend, fireEvent, isArray, isFunction, isObject, isString, merge, objectEach, pick, pInt, replaceNested, syncTimeout, uniqueKey } = U;
17
+ const { addEvent, attr, createElement, crisp, css, defined, erase, extend, fireEvent, isArray, isFunction, isObject, isString, merge, objectEach, pick, pInt, pushUnique, replaceNested, syncTimeout, uniqueKey } = U;
18
18
  /* *
19
19
  *
20
20
  * Class
@@ -200,7 +200,7 @@ class SVGElement {
200
200
  * @param {boolean} [alignByTranslate]
201
201
  * Align element by translation.
202
202
  *
203
- * @param {string|Highcharts.BBoxObject} [box]
203
+ * @param {string|Highcharts.BBoxObject} [alignTo]
204
204
  * The box to align to, needs a width and height. When the box is a
205
205
  * string, it refers to an object in the Renderer. For example, when
206
206
  * box is `spacingBox`, it refers to `Renderer.spacingBox` which
@@ -212,34 +212,39 @@ class SVGElement {
212
212
  *
213
213
  * @return {Highcharts.SVGElement} Returns the SVGElement for chaining.
214
214
  */
215
- align(alignOptions, alignByTranslate, box, redraw = true) {
216
- const attribs = {}, renderer = this.renderer, alignedObjects = renderer.alignedObjects;
217
- let x, y, alignTo, alignFactor, vAlignFactor;
215
+ align(alignOptions, alignByTranslate, alignTo, redraw = true) {
216
+ const attribs = {}, renderer = this.renderer, alignedObjects = renderer.alignedObjects, initialAlignment = Boolean(alignOptions);
217
+ let x, y, alignFactor, vAlignFactor;
218
218
  // First call on instanciate
219
219
  if (alignOptions) {
220
220
  this.alignOptions = alignOptions;
221
221
  this.alignByTranslate = alignByTranslate;
222
- if (!box || isString(box)) {
223
- this.alignTo = alignTo = box || 'renderer';
224
- // Prevent duplicates, like legendGroup after resize
225
- erase(alignedObjects, this);
226
- alignedObjects.push(this);
227
- box = void 0; // Reassign it below
228
- }
222
+ this.alignTo = alignTo;
229
223
  // When called on resize, no arguments are supplied
230
224
  }
231
225
  else {
232
- alignOptions = this.alignOptions;
226
+ alignOptions = this.alignOptions || {};
233
227
  alignByTranslate = this.alignByTranslate;
234
228
  alignTo = this.alignTo;
235
229
  }
236
- box = pick(box, renderer[alignTo], renderer);
230
+ const alignToKey = !alignTo || isString(alignTo) ?
231
+ alignTo || 'renderer' :
232
+ void 0;
233
+ // When aligned to a key, automatically re-align on redraws
234
+ if (alignToKey) {
235
+ // Prevent duplicates, like legendGroup after resize
236
+ if (initialAlignment) {
237
+ pushUnique(alignedObjects, this);
238
+ }
239
+ alignTo = void 0; // Do not use the box
240
+ }
241
+ const alignToBox = pick(alignTo, renderer[alignToKey], renderer);
237
242
  // Assign variables
238
243
  const align = alignOptions.align, vAlign = alignOptions.verticalAlign;
239
244
  // Default: left align
240
- x = (box.x || 0) + (alignOptions.x || 0);
245
+ x = (alignToBox.x || 0) + (alignOptions.x || 0);
241
246
  // Default: top align
242
- y = (box.y || 0) + (alignOptions.y || 0);
247
+ y = (alignToBox.y || 0) + (alignOptions.y || 0);
243
248
  // Align
244
249
  if (align === 'right') {
245
250
  alignFactor = 1;
@@ -248,7 +253,7 @@ class SVGElement {
248
253
  alignFactor = 2;
249
254
  }
250
255
  if (alignFactor) {
251
- x += (box.width - (alignOptions.width || 0)) /
256
+ x += ((alignToBox.width || 0) - (alignOptions.width || 0)) /
252
257
  alignFactor;
253
258
  }
254
259
  attribs[alignByTranslate ? 'translateX' : 'x'] = Math.round(x);
@@ -260,7 +265,7 @@ class SVGElement {
260
265
  vAlignFactor = 2;
261
266
  }
262
267
  if (vAlignFactor) {
263
- y += (box.height - (alignOptions.height || 0)) /
268
+ y += ((alignToBox.height || 0) - (alignOptions.height || 0)) /
264
269
  vAlignFactor;
265
270
  }
266
271
  attribs[alignByTranslate ? 'translateY' : 'y'] = Math.round(y);
@@ -480,7 +485,7 @@ class SVGElement {
480
485
  * used as a getter, the current value of the attribute is returned.
481
486
  */
482
487
  attr(hash, val, complete, continueAnimation) {
483
- const element = this.element, symbolCustomAttribs = SVGElement.symbolCustomAttribs;
488
+ const { element } = this, symbolCustomAttribs = SVGElement.symbolCustomAttribs;
484
489
  let key, hasSetSymbolSize, ret = this, skipAttr, setter;
485
490
  // Single key-value pair
486
491
  if (typeof hash === 'string' && typeof val !== 'undefined') {
@@ -570,15 +575,17 @@ class SVGElement {
570
575
  * The modified rectangle arguments.
571
576
  */
572
577
  crisp(rect, strokeWidth) {
573
- const wrapper = this;
574
- strokeWidth = strokeWidth || rect.strokeWidth || 0;
575
578
  // Math.round because strokeWidth can sometimes have roundoff errors
576
- const normalizer = Math.round(strokeWidth) % 2 / 2;
577
- // Normalize for crisp edges
578
- rect.x = Math.floor(rect.x || wrapper.x || 0) + normalizer;
579
- rect.y = Math.floor(rect.y || wrapper.y || 0) + normalizer;
580
- rect.width = Math.floor((rect.width || wrapper.width || 0) - 2 * normalizer);
581
- rect.height = Math.floor((rect.height || wrapper.height || 0) - 2 * normalizer);
579
+ strokeWidth = Math.round(strokeWidth || rect.strokeWidth || 0);
580
+ 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,
581
+ // Find all the rounded coordinates for corners
582
+ x = crisp(x1, strokeWidth), y = crisp(y1, strokeWidth), x2Crisp = crisp(x2, strokeWidth), y2Crisp = crisp(y2, strokeWidth);
583
+ extend(rect, {
584
+ x,
585
+ y,
586
+ width: x2Crisp - x,
587
+ height: y2Crisp - y
588
+ });
582
589
  if (defined(rect.strokeWidth)) {
583
590
  rect.strokeWidth = strokeWidth;
584
591
  }
@@ -853,7 +860,7 @@ class SVGElement {
853
860
  parentToClean = grandParent;
854
861
  }
855
862
  // Remove from alignObjects
856
- if (wrapper.alignTo) {
863
+ if (wrapper.alignOptions) {
857
864
  erase(renderer.alignedObjects, wrapper);
858
865
  }
859
866
  objectEach(wrapper, function (val, key) {
@@ -1228,6 +1235,20 @@ class SVGElement {
1228
1235
  this.opacity = opacity;
1229
1236
  element.setAttribute(key, opacity);
1230
1237
  }
1238
+ /**
1239
+ * Re-align an aligned text or label after setting the text.
1240
+ *
1241
+ * @private
1242
+ * @function Highcharts.SVGElement#reAlign
1243
+ *
1244
+ */
1245
+ reAlign() {
1246
+ if (this.alignOptions?.width && this.alignOptions.align !== 'left') {
1247
+ this.alignOptions.width = this.getBBox().width;
1248
+ this.placed = false; // Block animation
1249
+ this.align();
1250
+ }
1251
+ }
1231
1252
  /**
1232
1253
  * Remove a class name from the element.
1233
1254
  *
@@ -1527,6 +1548,7 @@ class SVGElement {
1527
1548
  if (this.added) {
1528
1549
  this.renderer.buildText(this);
1529
1550
  }
1551
+ this.reAlign();
1530
1552
  }
1531
1553
  }
1532
1554
  /**
@@ -176,9 +176,11 @@ class SVGLabel extends SVGElement {
176
176
  return bBox;
177
177
  }
178
178
  getCrispAdjust() {
179
- return this.renderer.styledMode && this.box ?
180
- this.box.strokeWidth() % 2 / 2 :
181
- (this['stroke-width'] ? parseInt(this['stroke-width'], 10) : 0) % 2 / 2;
179
+ return (this.renderer.styledMode && this.box ?
180
+ this.box.strokeWidth() :
181
+ (this['stroke-width'] ?
182
+ parseInt(this['stroke-width'], 10) :
183
+ 0)) % 2 / 2;
182
184
  }
183
185
  heightSetter(value) {
184
186
  this.heightSetting = value;
@@ -236,6 +238,7 @@ class SVGLabel extends SVGElement {
236
238
  this.text.attr({ text });
237
239
  }
238
240
  this.updateTextPadding();
241
+ this.reAlign();
239
242
  }
240
243
  /*
241
244
  * This function runs after the label is added to the DOM (when the bounding
@@ -9,6 +9,8 @@
9
9
  * */
10
10
  'use strict';
11
11
  import AST from '../HTML/AST.js';
12
+ import D from '../../Defaults.js';
13
+ const { defaultOptions } = D;
12
14
  import Color from '../../Color/Color.js';
13
15
  import H from '../../Globals.js';
14
16
  const { charts, deg2rad, doc, isFirefox, isMS, isWebKit, noop, SVG_NS, symbolSizes, win } = H;
@@ -18,7 +20,7 @@ import SVGLabel from './SVGLabel.js';
18
20
  import Symbols from './Symbols.js';
19
21
  import TextBuilder from './TextBuilder.js';
20
22
  import U from '../../Utilities.js';
21
- const { addEvent, attr, createElement, css, defined, destroyObjectProperties, extend, isArray, isNumber, isObject, isString, merge, pick, pInt, replaceNested, uniqueKey } = U;
23
+ const { addEvent, attr, createElement, crisp, css, defined, destroyObjectProperties, extend, isArray, isNumber, isObject, isString, merge, pick, pInt, replaceNested, uniqueKey } = U;
22
24
  /* *
23
25
  *
24
26
  * Variables
@@ -500,7 +502,9 @@ class SVGRenderer {
500
502
  return 1.05 / (l + 0.05) > (l + 0.05) / 0.05 ? '#FFFFFF' : '#000000';
501
503
  }
502
504
  /**
503
- * Create a button with preset states.
505
+ * Create a button with preset states. Styles for the button can either be
506
+ * set as arguments, or a general theme for all buttons can be set by the
507
+ * `global.buttonTheme` option.
504
508
  *
505
509
  * @function Highcharts.SVGRenderer#button
506
510
  *
@@ -538,56 +542,31 @@ class SVGRenderer {
538
542
  * The button element.
539
543
  */
540
544
  button(text, x, y, callback, theme = {}, hoverState, selectState, disabledState, shape, useHTML) {
541
- const label = this.label(text, x, y, shape, void 0, void 0, useHTML, void 0, 'button'), styledMode = this.styledMode, states = theme.states || {};
545
+ const label = this.label(text, x, y, shape, void 0, void 0, useHTML, void 0, 'button'), styledMode = this.styledMode, args = arguments;
542
546
  let curState = 0;
543
- theme = merge(theme);
547
+ theme = merge(defaultOptions.global.buttonTheme, theme);
548
+ // @todo Consider moving this to a lower level, like .attr
549
+ if (styledMode) {
550
+ delete theme.fill;
551
+ delete theme.stroke;
552
+ delete theme['stroke-width'];
553
+ }
554
+ const states = theme.states || {}, normalStyle = theme.style || {};
544
555
  delete theme.states;
545
- const normalStyle = merge({
546
- color: "#333333" /* Palette.neutralColor80 */,
547
- cursor: 'pointer',
548
- fontSize: '0.8em',
549
- fontWeight: 'normal'
550
- }, theme.style);
551
556
  delete theme.style;
552
- // Remove stylable attributes. Pass in the ButtonThemeObject and get the
553
- // SVGAttributes subset back.
554
- let normalState = AST.filterUserAttributes(theme);
555
- // Default, non-stylable attributes
556
- label.attr(merge({ padding: 8, r: 2 }, normalState));
557
- // Presentational. The string type is a mistake, it is just for
558
- // compliance with SVGAttribute and is not used in button theme.
559
- let hoverStyle, selectStyle, disabledStyle;
557
+ // Presentational
558
+ const stateAttribs = [
559
+ AST.filterUserAttributes(theme)
560
+ ],
561
+ // The string type is a mistake, it is just for compliance with
562
+ // SVGAttribute and is not used in button theme.
563
+ stateStyles = [normalStyle];
560
564
  if (!styledMode) {
561
- // Normal state - prepare the attributes
562
- normalState = merge({
563
- fill: "#f7f7f7" /* Palette.neutralColor3 */,
564
- stroke: "#cccccc" /* Palette.neutralColor20 */,
565
- 'stroke-width': 1
566
- }, normalState);
567
- // Hover state
568
- hoverState = merge(normalState, {
569
- fill: "#e6e6e6" /* Palette.neutralColor10 */
570
- }, AST.filterUserAttributes(hoverState || states.hover || {}));
571
- hoverStyle = hoverState.style;
572
- delete hoverState.style;
573
- // Pressed state
574
- selectState = merge(normalState, {
575
- fill: "#e6e9ff" /* Palette.highlightColor10 */,
576
- style: {
577
- color: "#000000" /* Palette.neutralColor100 */,
578
- fontWeight: 'bold'
579
- }
580
- }, AST.filterUserAttributes(selectState || states.select || {}));
581
- selectStyle = selectState.style;
582
- delete selectState.style;
583
- // Disabled state
584
- disabledState = merge(normalState, {
585
- style: {
586
- color: "#cccccc" /* Palette.neutralColor20 */
587
- }
588
- }, AST.filterUserAttributes(disabledState || states.disabled || {}));
589
- disabledStyle = disabledState.style;
590
- delete disabledState.style;
565
+ ['hover', 'select', 'disabled'].forEach((stateName, i) => {
566
+ stateAttribs.push(merge(stateAttribs[0], AST.filterUserAttributes(args[i + 5] || states[stateName] || {})));
567
+ stateStyles.push(stateAttribs[i + 1].style);
568
+ delete stateAttribs[i + 1].style;
569
+ });
591
570
  }
592
571
  // Add the events. IE9 and IE10 need mouseover and mouseout to function
593
572
  // (#667).
@@ -601,7 +580,7 @@ class SVGRenderer {
601
580
  label.setState(curState);
602
581
  }
603
582
  });
604
- label.setState = function (state) {
583
+ label.setState = (state = 0) => {
605
584
  // Hover state is temporary, don't record it
606
585
  if (state !== 1) {
607
586
  label.state = curState = state;
@@ -610,31 +589,19 @@ class SVGRenderer {
610
589
  label
611
590
  .removeClass(/highcharts-button-(normal|hover|pressed|disabled)/)
612
591
  .addClass('highcharts-button-' +
613
- ['normal', 'hover', 'pressed', 'disabled'][state || 0]);
592
+ ['normal', 'hover', 'pressed', 'disabled'][state]);
614
593
  if (!styledMode) {
615
- label
616
- .attr([
617
- normalState,
618
- hoverState,
619
- selectState,
620
- disabledState
621
- ][state || 0]);
622
- const css = [
623
- normalStyle,
624
- hoverStyle,
625
- selectStyle,
626
- disabledStyle
627
- ][state || 0];
594
+ label.attr(stateAttribs[state]);
595
+ const css = stateStyles[state];
628
596
  if (isObject(css)) {
629
597
  label.css(css);
630
598
  }
631
599
  }
632
600
  };
601
+ label.attr(stateAttribs[0]);
633
602
  // Presentational attributes
634
603
  if (!styledMode) {
635
- label
636
- .attr(normalState)
637
- .css(extend({ cursor: 'default' }, normalStyle));
604
+ label.css(extend({ cursor: 'default' }, normalStyle));
638
605
  // HTML labels don't need to handle pointer events because click and
639
606
  // mouseenter/mouseleave is bound to the underlying <g> element.
640
607
  // Should this be reconsidered, we need more complex logic to share
@@ -664,26 +631,17 @@ class SVGRenderer {
664
631
  * @param {number} width
665
632
  * The width of the line.
666
633
  *
667
- * @param {string} [roundingFunction=round]
668
- * The rounding function name on the `Math` object, can be one of
669
- * `round`, `floor` or `ceil`.
670
- *
671
634
  * @return {Highcharts.SVGPathArray}
672
635
  * The original points array, but modified to render crisply.
673
636
  */
674
- crispLine(points, width, roundingFunction = 'round') {
675
- const start = points[0];
676
- const end = points[1];
637
+ crispLine(points, width) {
638
+ const [start, end] = points;
677
639
  // Normalize to a crisp line
678
640
  if (defined(start[1]) && start[1] === end[1]) {
679
- // Subtract due to #1129. Now bottom and left axis gridlines behave
680
- // the same.
681
- start[1] = end[1] =
682
- Math[roundingFunction](start[1]) - (width % 2 / 2);
641
+ start[1] = end[1] = crisp(start[1], width);
683
642
  }
684
643
  if (defined(start[2]) && start[2] === end[2]) {
685
- start[2] = end[2] =
686
- Math[roundingFunction](start[2]) + (width % 2 / 2);
644
+ start[2] = end[2] = crisp(start[2], width);
687
645
  }
688
646
  return points;
689
647
  }
@@ -1082,7 +1040,7 @@ class SVGRenderer {
1082
1040
  if (symbolFn) {
1083
1041
  // Check if there's a path defined for this symbol
1084
1042
  if (typeof x === 'number') {
1085
- path = symbolFn.call(this.symbols, Math.round(x || 0), Math.round(y || 0), width || 0, height || 0, options);
1043
+ path = symbolFn.call(this.symbols, x || 0, y || 0, width || 0, height || 0, options);
1086
1044
  }
1087
1045
  obj = this.path(path);
1088
1046
  if (!ren.styledMode) {
@@ -22,11 +22,15 @@ const { defined, isNumber, pick } = U;
22
22
  function arc(cx, cy, w, h, options) {
23
23
  const arc = [];
24
24
  if (options) {
25
- 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) <
26
- proximity),
27
- // Subtract a small number to prevent cos and sin of start
28
- // and end from becoming equal on 360 arcs (related: #1561)
29
- 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),
25
+ const start = options.start || 0, rx = pick(options.r, w), ry = pick(options.r, h || w),
26
+ // Subtract a small number to prevent cos and sin of start and end
27
+ // from becoming equal on 360 arcs (#1561). The size of the circle
28
+ // affects the constant, therefore the division by `rx`. If the
29
+ // proximity is too small, the arc disappears. If it is too great, a
30
+ // gap appears. This can be seen in the animation of the official
31
+ // bubble demo (#20586).
32
+ proximity = 0.0002 / Math.max(rx, 1), fullCircle = (Math.abs((options.end || 0) - start - 2 * Math.PI) <
33
+ 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),
30
34
  // Proximity takes care of rounding errors around PI (#6971)
31
35
  longArc = pick(options.longArc, end - start - Math.PI < proximity ? 0 : 1);
32
36
  let arcSegment = [
@@ -46,7 +46,7 @@ var DataLabel;
46
46
  * @private
47
47
  */
48
48
  function alignDataLabel(point, dataLabel, options, alignTo, isNew) {
49
- 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) &&
49
+ const series = this, { chart, enabledDataSorting } = this, inverted = this.isCartesian && chart.inverted, plotX = point.plotX, plotY = point.plotY, rotation = options.rotation || 0, isInsidePlot = defined(plotX) &&
50
50
  defined(plotY) &&
51
51
  chart.isInsidePlot(plotX, Math.round(plotY), {
52
52
  inverted,
@@ -66,10 +66,10 @@ var DataLabel;
66
66
  (enabledDataSorting && !justify) ||
67
67
  isInsidePlot ||
68
68
  (
69
- // If the data label is inside the align box, it is
70
- // enough that parts of the align box is inside the
71
- // plot area (#12370). When stacking, it is always
72
- // inside regardless of the option (#15148).
69
+ // If the data label is inside the align box, it is enough
70
+ // that parts of the align box is inside the plot area
71
+ // (#12370). When stacking, it is always inside regardless
72
+ // of the option (#15148).
73
73
  pick(options.inside, !!this.options.stacking) &&
74
74
  alignTo &&
75
75
  chart.isInsidePlot(plotX, inverted ?
@@ -95,6 +95,11 @@ var DataLabel;
95
95
  width: 0,
96
96
  height: 0
97
97
  }, alignTo || {});
98
+ // Align to plot edges
99
+ if (options.alignTo === 'plotEdges' && series.isCartesian) {
100
+ alignTo[inverted ? 'x' : 'y'] = 0;
101
+ alignTo[inverted ? 'width' : 'height'] = this.yAxis?.len || 0;
102
+ }
98
103
  // Add the text size for alignment calculation
99
104
  extend(options, {
100
105
  width: bBox.width,
@@ -432,10 +437,12 @@ var DataLabel;
432
437
  * @private
433
438
  */
434
439
  function justifyDataLabel(dataLabel, options, alignAttr, bBox, alignTo, isNew) {
435
- const chart = this.chart, align = options.align, verticalAlign = options.verticalAlign, padding = dataLabel.box ? 0 : (dataLabel.padding || 0);
440
+ 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 ?
441
+ horizontalAxis.left - chart.plotLeft : 0, verticalAxis = chart.inverted ? this.xAxis : this.yAxis, verticalAxisShift = verticalAxis ?
442
+ verticalAxis.top - chart.plotTop : 0;
436
443
  let { x = 0, y = 0 } = options, off, justified;
437
444
  // Off left
438
- off = (alignAttr.x || 0) + padding;
445
+ off = (alignAttr.x || 0) + padding + horizontalAxisShift;
439
446
  if (off < 0) {
440
447
  if (align === 'right' && x >= 0) {
441
448
  options.align = 'left';
@@ -447,7 +454,7 @@ var DataLabel;
447
454
  justified = true;
448
455
  }
449
456
  // Off right
450
- off = (alignAttr.x || 0) + bBox.width - padding;
457
+ off = (alignAttr.x || 0) + bBox.width - padding + horizontalAxisShift;
451
458
  if (off > chart.plotWidth) {
452
459
  if (align === 'left' && x <= 0) {
453
460
  options.align = 'right';
@@ -459,7 +466,7 @@ var DataLabel;
459
466
  justified = true;
460
467
  }
461
468
  // Off top
462
- off = alignAttr.y + padding;
469
+ off = alignAttr.y + padding + verticalAxisShift;
463
470
  if (off < 0) {
464
471
  if (verticalAlign === 'bottom' && y >= 0) {
465
472
  options.verticalAlign = 'top';
@@ -471,7 +478,7 @@ var DataLabel;
471
478
  justified = true;
472
479
  }
473
480
  // Off bottom
474
- off = (alignAttr.y || 0) + bBox.height - padding;
481
+ off = (alignAttr.y || 0) + bBox.height - padding + verticalAxisShift;
475
482
  if (off > chart.plotHeight) {
476
483
  if (verticalAlign === 'top' && y <= 0) {
477
484
  options.verticalAlign = 'bottom';
@@ -16,7 +16,7 @@ const { defaultOptions } = D;
16
16
  import F from '../Templating.js';
17
17
  const { format } = F;
18
18
  import U from '../Utilities.js';
19
- const { addEvent, erase, extend, fireEvent, getNestedProperty, isArray, isFunction, isNumber, isObject, merge, pick, syncTimeout, removeEvent, uniqueKey } = U;
19
+ const { addEvent, crisp, erase, extend, fireEvent, getNestedProperty, isArray, isFunction, isNumber, isObject, merge, pick, syncTimeout, removeEvent, uniqueKey } = U;
20
20
  /* eslint-disable no-invalid-this, valid-jsdoc */
21
21
  /* *
22
22
  *
@@ -1124,7 +1124,8 @@ class Point {
1124
1124
  }, AST.filterUserAttributes(haloOptions.attributes || {})));
1125
1125
  }
1126
1126
  }
1127
- else if (halo && halo.point && halo.point.haloPath) {
1127
+ else if (halo?.point?.haloPath &&
1128
+ !halo.point.destroyed) {
1128
1129
  // Animate back to 0 on the current halo point (#6055)
1129
1130
  halo.animate({ d: halo.point.haloPath(0) }, null,
1130
1131
  // Hide after unhovering. The `complete` callback runs in the
@@ -1147,7 +1148,7 @@ class Point {
1147
1148
  */
1148
1149
  haloPath(size) {
1149
1150
  const pos = this.pos();
1150
- return pos ? this.series.chart.renderer.symbols.circle(Math.floor(pos[0]) - size, pos[1] - size, size * 2, size * 2) : [];
1151
+ return pos ? this.series.chart.renderer.symbols.circle(crisp(pos[0], 1) - size, pos[1] - size, size * 2, size * 2) : [];
1151
1152
  }
1152
1153
  }
1153
1154
  /* *
@@ -23,7 +23,7 @@ import SeriesRegistry from './SeriesRegistry.js';
23
23
  const { seriesTypes } = SeriesRegistry;
24
24
  import SVGElement from '../Renderer/SVG/SVGElement.js';
25
25
  import U from '../Utilities.js';
26
- 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;
26
+ 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;
27
27
  /* *
28
28
  *
29
29
  * Class
@@ -987,10 +987,7 @@ class Series {
987
987
  * Force getting extremes of a total series data range.
988
988
  */
989
989
  getProcessedData(forceExtremesFromAll) {
990
- const series = this, xAxis = series.xAxis, options = series.options, cropThreshold = options.cropThreshold, getExtremesFromAll = forceExtremesFromAll ||
991
- series.getExtremesFromAll ||
992
- options.getExtremesFromAll, // #4599
993
- logarithmic = xAxis?.logarithmic, isCartesian = series.isCartesian;
990
+ const series = this, xAxis = series.xAxis, options = series.options, cropThreshold = options.cropThreshold, logarithmic = xAxis?.logarithmic, isCartesian = series.isCartesian;
994
991
  let croppedData, cropped, cropStart = 0, xExtremes, min, max,
995
992
  // Copied during slice operation:
996
993
  processedXData = series.xData, processedYData = series.yData, updatingNames = false;
@@ -1005,7 +1002,7 @@ class Series {
1005
1002
  // Optionally filter out points outside the plot area
1006
1003
  if (isCartesian &&
1007
1004
  series.sorted &&
1008
- !getExtremesFromAll &&
1005
+ !forceExtremesFromAll &&
1009
1006
  (!cropThreshold ||
1010
1007
  dataLength > cropThreshold ||
1011
1008
  series.forceCrop)) {
@@ -1246,16 +1243,24 @@ class Series {
1246
1243
  * Force getting extremes of a total series data range.
1247
1244
  */
1248
1245
  getExtremes(yData, forceExtremesFromAll) {
1249
- const xAxis = this.xAxis, yAxis = this.yAxis, xData = this.processedXData || this.xData, activeYData = [],
1246
+ const xAxis = this.xAxis, yAxis = this.yAxis, activeYData = [],
1250
1247
  // Handle X outside the viewed area. This does not work with
1251
1248
  // non-sorted data like scatter (#7639).
1252
1249
  shoulder = this.requireSorting && !this.is('column') ?
1253
1250
  1 : 0,
1254
1251
  // #2117, need to compensate for log X axis
1255
- positiveValuesOnly = yAxis ? yAxis.positiveValuesOnly : false;
1256
- let xExtremes, validValue, withinRange, x, y, i, j, xMin = 0, xMax = 0, activeCounter = 0;
1257
- yData = yData || this.stackedYData || this.processedYData || [];
1258
- const yDataLength = yData.length;
1252
+ positiveValuesOnly = yAxis ? yAxis.positiveValuesOnly : false, getExtremesFromAll = forceExtremesFromAll ||
1253
+ this.getExtremesFromAll ||
1254
+ this.options.getExtremesFromAll; // #4599
1255
+ let { processedXData, processedYData } = this, xExtremes, validValue, withinRange, x, y, i, j, xMin = 0, xMax = 0, activeCounter = 0;
1256
+ // Get the processed data from the full range (#21003)
1257
+ if (this.cropped && getExtremesFromAll) {
1258
+ const processedData = this.getProcessedData(true);
1259
+ processedXData = processedData.xData;
1260
+ processedYData = processedData.yData;
1261
+ }
1262
+ yData = yData || this.stackedYData || processedYData || [];
1263
+ const yDataLength = yData.length, xData = processedXData || this.xData;
1259
1264
  if (xAxis) {
1260
1265
  xExtremes = xAxis.getExtremes();
1261
1266
  xMin = xExtremes.min;
@@ -1825,12 +1830,16 @@ class Series {
1825
1830
  }
1826
1831
  const pos = point.pos();
1827
1832
  if (isNumber(radius) && pos) {
1828
- attribs.x = pos[0] - radius;
1829
- attribs.y = pos[1] - radius;
1830
1833
  if (seriesOptions.crisp) {
1831
- // Math.floor for #1843:
1832
- attribs.x = Math.floor(attribs.x);
1834
+ pos[0] = crisp(pos[0], point.hasImage ?
1835
+ 0 :
1836
+ symbol === 'rect' ?
1837
+ // Rectangle symbols need crisp edges, others don't
1838
+ seriesMarkerOptions?.lineWidth || 0 :
1839
+ 1);
1833
1840
  }
1841
+ attribs.x = pos[0] - radius;
1842
+ attribs.y = pos[1] - radius;
1834
1843
  }
1835
1844
  if (radius) {
1836
1845
  attribs.width = attribs.height = 2 * radius;
@@ -1447,6 +1447,21 @@ const seriesDefaults = {
1447
1447
  * @type {Highcharts.AlignValue|null}
1448
1448
  */
1449
1449
  align: 'center',
1450
+ /**
1451
+ * Alignment method for data labels. If set to `plotEdges`, the labels
1452
+ * are aligned within the plot area in the direction of the y-axis. So
1453
+ * in a regular column chart, the labels are aligned vertically
1454
+ * according to the `verticalAlign` setting. In a bar chart, which is
1455
+ * inverted, the labels are aligned horizontally according to the
1456
+ * `align` setting. Applies to cartesian series only.
1457
+ *
1458
+ * @sample {highcharts} highcharts/series-bar/datalabels-alignto/
1459
+ * Align to plot edges
1460
+ *
1461
+ * @type {string}
1462
+ * @since 11.4.2
1463
+ * @apioption plotOptions.series.dataLabels.alignTo
1464
+ */
1450
1465
  /**
1451
1466
  * Whether to allow data labels to overlap. To make the labels less
1452
1467
  * sensitive for overlapping, the
@@ -231,7 +231,7 @@ function format(str = '', ctx, chart) {
231
231
  // Block helpers may return true or false. They may also return a
232
232
  // string, like the `each` helper.
233
233
  if (match.isBlock && typeof replacement === 'boolean') {
234
- replacement = format(replacement ? body : elseBody, ctx);
234
+ replacement = format(replacement ? body : elseBody, ctx, chart);
235
235
  }
236
236
  // Simple variable replacement
237
237
  }
@@ -348,6 +348,9 @@ function numberFormat(number, decimals, decimalPoint, thousandsSep) {
348
348
  // Get the decimal component
349
349
  ret += decimalPoint + roundedNumber.slice(-decimals);
350
350
  }
351
+ else if (+ret === 0) { // Remove signed minus #20564
352
+ ret = '0';
353
+ }
351
354
  if (exponent[1] && +ret !== 0) {
352
355
  ret += 'e' + exponent[1];
353
356
  }