@gravity-ui/charts 1.45.0 → 1.46.1

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 (371) hide show
  1. package/dist/cjs/components/ChartInner/index.js +2 -2
  2. package/dist/cjs/components/ChartInner/styles.css +2 -2
  3. package/dist/cjs/components/ChartInner/useChartInnerProps.js +2 -2
  4. package/dist/cjs/components/ChartInner/utils/title.d.ts +2 -1
  5. package/dist/cjs/components/ChartInner/utils/title.js +51 -14
  6. package/dist/cjs/components/Legend/index.js +13 -14
  7. package/dist/cjs/components/Title/index.d.ts +4 -2
  8. package/dist/cjs/components/Title/index.js +9 -2
  9. package/dist/cjs/components/Tooltip/index.js +22 -1
  10. package/dist/cjs/core/axes/x-axis.js +1 -1
  11. package/dist/cjs/core/axes/y-axis.js +1 -1
  12. package/dist/cjs/core/scales/utils.d.ts +1 -1
  13. package/dist/cjs/core/scales/utils.js +1 -1
  14. package/dist/cjs/core/scales/x-scale.js +2 -2
  15. package/dist/cjs/core/scales/y-scale.js +48 -4
  16. package/dist/cjs/core/series/prepare-area.js +1 -1
  17. package/dist/cjs/core/series/prepare-bar-x.js +1 -1
  18. package/dist/cjs/core/series/prepare-bar-y.js +1 -1
  19. package/dist/cjs/core/series/prepare-funnel.js +1 -1
  20. package/dist/cjs/core/series/prepare-heatmap.js +1 -1
  21. package/dist/cjs/core/series/prepare-legend.js +2 -2
  22. package/dist/cjs/core/series/prepare-line.js +1 -1
  23. package/dist/cjs/core/series/prepare-pie.js +1 -1
  24. package/dist/cjs/core/series/prepare-radar.js +1 -1
  25. package/dist/cjs/core/series/prepare-sankey.js +1 -1
  26. package/dist/cjs/core/series/prepare-scatter.js +1 -1
  27. package/dist/cjs/core/series/prepare-treemap.js +1 -1
  28. package/dist/cjs/core/series/prepare-waterfall.js +1 -1
  29. package/dist/cjs/core/series/prepare-x-range.js +1 -1
  30. package/dist/cjs/core/series/prepareSeries.d.ts +7 -1
  31. package/dist/cjs/core/series/prepareSeries.js +31 -0
  32. package/dist/cjs/core/series/types.d.ts +5 -0
  33. package/dist/cjs/core/series/utils.d.ts +4 -0
  34. package/dist/cjs/core/series/utils.js +9 -1
  35. package/dist/cjs/{hooks/useShapes/annotation/index.d.ts → core/shapes/annotation.d.ts} +1 -7
  36. package/dist/cjs/{hooks/useShapes/annotation/index.js → core/shapes/annotation.js} +2 -2
  37. package/dist/cjs/{hooks/useShapes → core/shapes}/area/prepare-data.d.ts +4 -4
  38. package/dist/cjs/{hooks/useShapes → core/shapes}/area/prepare-data.js +4 -4
  39. package/dist/cjs/core/shapes/area/renderer.d.ts +11 -0
  40. package/dist/cjs/core/shapes/area/renderer.js +181 -0
  41. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/area/types.d.ts +1 -3
  42. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/bar-x/prepare-data.d.ts +4 -4
  43. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/bar-x/prepare-data.js +6 -6
  44. package/dist/cjs/core/shapes/bar-x/renderer.d.ts +9 -0
  45. package/dist/cjs/core/shapes/bar-x/renderer.js +110 -0
  46. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/bar-x/types.d.ts +1 -2
  47. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/bar-y/prepare-data.d.ts +3 -3
  48. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/bar-y/prepare-data.js +3 -3
  49. package/dist/cjs/core/shapes/bar-y/renderer.d.ts +6 -0
  50. package/dist/cjs/core/shapes/bar-y/renderer.js +80 -0
  51. package/dist/cjs/{hooks/useShapes → core/shapes}/bar-y/types.d.ts +1 -1
  52. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/bar-y/utils.js +1 -1
  53. package/dist/cjs/{hooks/useShapes → core/shapes}/funnel/prepare-data.d.ts +1 -1
  54. package/dist/cjs/{hooks/useShapes → core/shapes}/funnel/prepare-data.js +1 -1
  55. package/dist/cjs/core/shapes/funnel/renderer.d.ts +6 -0
  56. package/dist/cjs/core/shapes/funnel/renderer.js +79 -0
  57. package/dist/cjs/{hooks/useShapes → core/shapes}/funnel/types.d.ts +2 -2
  58. package/dist/cjs/{hooks/useShapes → core/shapes}/heatmap/prepare-data.d.ts +3 -3
  59. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/heatmap/prepare-data.js +2 -2
  60. package/dist/cjs/core/shapes/heatmap/renderer.d.ts +6 -0
  61. package/dist/cjs/core/shapes/heatmap/renderer.js +55 -0
  62. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/heatmap/types.d.ts +1 -1
  63. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/line/prepare-data.d.ts +4 -4
  64. package/dist/cjs/{hooks/useShapes → core/shapes}/line/prepare-data.js +3 -3
  65. package/dist/cjs/core/shapes/line/renderer.d.ts +11 -0
  66. package/dist/cjs/core/shapes/line/renderer.js +167 -0
  67. package/dist/cjs/{hooks/useShapes → core/shapes}/line/types.d.ts +2 -4
  68. package/dist/cjs/core/shapes/marker.d.ts +45 -0
  69. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/marker.js +2 -2
  70. package/dist/cjs/{hooks/useShapes → core/shapes}/pie/prepare-data.d.ts +1 -1
  71. package/dist/cjs/{hooks/useShapes → core/shapes}/pie/prepare-data.js +3 -3
  72. package/dist/cjs/core/shapes/pie/renderer.d.ts +8 -0
  73. package/dist/cjs/core/shapes/pie/renderer.js +160 -0
  74. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/pie/types.d.ts +1 -1
  75. package/dist/cjs/{hooks/useShapes → core/shapes}/radar/prepare-data.d.ts +1 -1
  76. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/radar/prepare-data.js +2 -2
  77. package/dist/cjs/core/shapes/radar/renderer.d.ts +6 -0
  78. package/dist/cjs/core/shapes/radar/renderer.js +126 -0
  79. package/dist/cjs/{hooks/useShapes → core/shapes}/radar/types.d.ts +1 -1
  80. package/dist/cjs/{hooks/useShapes → core/shapes}/sankey/prepare-data.d.ts +1 -1
  81. package/dist/cjs/{hooks/useShapes → core/shapes}/sankey/prepare-data.js +1 -1
  82. package/dist/cjs/core/shapes/sankey/renderer.d.ts +6 -0
  83. package/dist/cjs/core/shapes/sankey/renderer.js +50 -0
  84. package/dist/cjs/{hooks/useShapes → core/shapes}/sankey/types.d.ts +1 -1
  85. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/scatter/prepare-data.d.ts +3 -3
  86. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/scatter/prepare-data.js +2 -2
  87. package/dist/cjs/core/shapes/scatter/renderer.d.ts +6 -0
  88. package/dist/cjs/core/shapes/scatter/renderer.js +52 -0
  89. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/scatter/types.d.ts +1 -1
  90. package/dist/cjs/{hooks/useShapes → core/shapes}/treemap/prepare-data.d.ts +1 -1
  91. package/dist/cjs/{hooks/useShapes → core/shapes}/treemap/prepare-data.js +3 -3
  92. package/dist/cjs/core/shapes/treemap/renderer.d.ts +6 -0
  93. package/dist/cjs/core/shapes/treemap/renderer.js +88 -0
  94. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/treemap/types.d.ts +1 -1
  95. package/dist/cjs/core/shapes/utils.d.ts +52 -0
  96. package/dist/cjs/core/shapes/utils.js +138 -0
  97. package/dist/cjs/{hooks/useShapes → core/shapes}/waterfall/prepare-data.d.ts +3 -3
  98. package/dist/cjs/{hooks/useShapes → core/shapes}/waterfall/prepare-data.js +4 -4
  99. package/dist/cjs/core/shapes/waterfall/renderer.d.ts +6 -0
  100. package/dist/cjs/core/shapes/waterfall/renderer.js +115 -0
  101. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/waterfall/types.d.ts +1 -1
  102. package/dist/cjs/{hooks/useShapes → core/shapes}/x-range/prepare-data.d.ts +3 -3
  103. package/dist/cjs/{hooks/useShapes → core/shapes}/x-range/prepare-data.js +4 -4
  104. package/dist/cjs/core/shapes/x-range/renderer.d.ts +6 -0
  105. package/dist/cjs/core/shapes/x-range/renderer.js +94 -0
  106. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/x-range/types.d.ts +1 -1
  107. package/dist/cjs/core/types/chart/area.d.ts +0 -1
  108. package/dist/cjs/core/types/chart/axis.d.ts +0 -1
  109. package/dist/cjs/core/types/chart/base.d.ts +1 -4
  110. package/dist/cjs/core/types/chart/title.d.ts +18 -0
  111. package/dist/cjs/{hooks/utils/get-band-size.js → core/utils/band-size.js} +1 -1
  112. package/dist/{esm/hooks → cjs/core}/utils/bar-y.d.ts +3 -3
  113. package/dist/cjs/{hooks → core}/utils/bar-y.js +4 -4
  114. package/dist/cjs/core/utils/get-closest-data.d.ts +1 -1
  115. package/dist/cjs/core/utils/series/sorting.js +1 -1
  116. package/dist/cjs/core/utils/text.d.ts +0 -1
  117. package/dist/cjs/core/utils/text.js +0 -1
  118. package/dist/cjs/hooks/index.d.ts +1 -1
  119. package/dist/cjs/hooks/index.js +1 -1
  120. package/dist/cjs/hooks/types.d.ts +6 -3
  121. package/dist/cjs/hooks/useRangeSlider/types.d.ts +1 -1
  122. package/dist/cjs/hooks/useRangeSlider/utils.d.ts +1 -1
  123. package/dist/cjs/hooks/useShapes/HtmlLayer.js +4 -3
  124. package/dist/cjs/hooks/useShapes/area/index.d.ts +2 -2
  125. package/dist/cjs/hooks/useShapes/area/index.js +13 -185
  126. package/dist/cjs/hooks/useShapes/bar-x/index.d.ts +4 -4
  127. package/dist/cjs/hooks/useShapes/bar-x/index.js +10 -119
  128. package/dist/cjs/hooks/useShapes/bar-y/index.d.ts +3 -3
  129. package/dist/cjs/hooks/useShapes/bar-y/index.js +5 -84
  130. package/dist/cjs/hooks/useShapes/funnel/index.d.ts +4 -4
  131. package/dist/cjs/hooks/useShapes/funnel/index.js +4 -83
  132. package/dist/cjs/hooks/useShapes/heatmap/index.d.ts +4 -4
  133. package/dist/cjs/hooks/useShapes/heatmap/index.js +4 -59
  134. package/dist/cjs/hooks/useShapes/index.d.ts +14 -15
  135. package/dist/cjs/hooks/useShapes/index.js +13 -13
  136. package/dist/cjs/hooks/useShapes/line/index.d.ts +2 -2
  137. package/dist/cjs/hooks/useShapes/line/index.js +14 -172
  138. package/dist/cjs/hooks/useShapes/pie/index.d.ts +3 -5
  139. package/dist/cjs/hooks/useShapes/pie/index.js +3 -158
  140. package/dist/cjs/hooks/useShapes/radar/index.d.ts +2 -2
  141. package/dist/cjs/hooks/useShapes/radar/index.js +2 -121
  142. package/dist/cjs/hooks/useShapes/sankey/index.d.ts +2 -2
  143. package/dist/cjs/hooks/useShapes/sankey/index.js +2 -51
  144. package/dist/cjs/hooks/useShapes/scatter/index.d.ts +3 -3
  145. package/dist/cjs/hooks/useShapes/scatter/index.js +3 -58
  146. package/dist/cjs/hooks/useShapes/treemap/index.d.ts +2 -2
  147. package/dist/cjs/hooks/useShapes/treemap/index.js +2 -88
  148. package/dist/cjs/hooks/useShapes/utils.d.ts +2 -52
  149. package/dist/cjs/hooks/useShapes/utils.js +3 -140
  150. package/dist/cjs/hooks/useShapes/waterfall/index.d.ts +4 -4
  151. package/dist/cjs/hooks/useShapes/waterfall/index.js +6 -119
  152. package/dist/cjs/hooks/useShapes/x-range/index.d.ts +4 -4
  153. package/dist/cjs/hooks/useShapes/x-range/index.js +3 -98
  154. package/dist/cjs/setup-jsdom.js +7 -0
  155. package/dist/cjs/types/chart-ui.d.ts +2 -0
  156. package/dist/esm/components/ChartInner/index.js +2 -2
  157. package/dist/esm/components/ChartInner/styles.css +2 -2
  158. package/dist/esm/components/ChartInner/useChartInnerProps.js +2 -2
  159. package/dist/esm/components/ChartInner/utils/title.d.ts +2 -1
  160. package/dist/esm/components/ChartInner/utils/title.js +51 -14
  161. package/dist/esm/components/Legend/index.js +13 -14
  162. package/dist/esm/components/Title/index.d.ts +4 -2
  163. package/dist/esm/components/Title/index.js +9 -2
  164. package/dist/esm/components/Tooltip/index.js +22 -1
  165. package/dist/esm/core/axes/x-axis.js +1 -1
  166. package/dist/esm/core/axes/y-axis.js +1 -1
  167. package/dist/esm/core/scales/utils.d.ts +1 -1
  168. package/dist/esm/core/scales/utils.js +1 -1
  169. package/dist/esm/core/scales/x-scale.js +2 -2
  170. package/dist/esm/core/scales/y-scale.js +48 -4
  171. package/dist/esm/core/series/prepare-area.js +1 -1
  172. package/dist/esm/core/series/prepare-bar-x.js +1 -1
  173. package/dist/esm/core/series/prepare-bar-y.js +1 -1
  174. package/dist/esm/core/series/prepare-funnel.js +1 -1
  175. package/dist/esm/core/series/prepare-heatmap.js +1 -1
  176. package/dist/esm/core/series/prepare-legend.js +2 -2
  177. package/dist/esm/core/series/prepare-line.js +1 -1
  178. package/dist/esm/core/series/prepare-pie.js +1 -1
  179. package/dist/esm/core/series/prepare-radar.js +1 -1
  180. package/dist/esm/core/series/prepare-sankey.js +1 -1
  181. package/dist/esm/core/series/prepare-scatter.js +1 -1
  182. package/dist/esm/core/series/prepare-treemap.js +1 -1
  183. package/dist/esm/core/series/prepare-waterfall.js +1 -1
  184. package/dist/esm/core/series/prepare-x-range.js +1 -1
  185. package/dist/esm/core/series/prepareSeries.d.ts +7 -1
  186. package/dist/esm/core/series/prepareSeries.js +31 -0
  187. package/dist/esm/core/series/types.d.ts +5 -0
  188. package/dist/esm/core/series/utils.d.ts +4 -0
  189. package/dist/esm/core/series/utils.js +9 -1
  190. package/dist/esm/{hooks/useShapes/annotation/index.d.ts → core/shapes/annotation.d.ts} +1 -7
  191. package/dist/esm/{hooks/useShapes/annotation/index.js → core/shapes/annotation.js} +2 -2
  192. package/dist/esm/{hooks/useShapes → core/shapes}/area/prepare-data.d.ts +4 -4
  193. package/dist/esm/{hooks/useShapes → core/shapes}/area/prepare-data.js +4 -4
  194. package/dist/esm/core/shapes/area/renderer.d.ts +11 -0
  195. package/dist/esm/core/shapes/area/renderer.js +181 -0
  196. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/area/types.d.ts +1 -3
  197. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/bar-x/prepare-data.d.ts +4 -4
  198. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/bar-x/prepare-data.js +6 -6
  199. package/dist/esm/core/shapes/bar-x/renderer.d.ts +9 -0
  200. package/dist/esm/core/shapes/bar-x/renderer.js +110 -0
  201. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/bar-x/types.d.ts +1 -2
  202. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/bar-y/prepare-data.d.ts +3 -3
  203. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/bar-y/prepare-data.js +3 -3
  204. package/dist/esm/core/shapes/bar-y/renderer.d.ts +6 -0
  205. package/dist/esm/core/shapes/bar-y/renderer.js +80 -0
  206. package/dist/esm/{hooks/useShapes → core/shapes}/bar-y/types.d.ts +1 -1
  207. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/bar-y/utils.js +1 -1
  208. package/dist/esm/{hooks/useShapes → core/shapes}/funnel/prepare-data.d.ts +1 -1
  209. package/dist/esm/{hooks/useShapes → core/shapes}/funnel/prepare-data.js +1 -1
  210. package/dist/esm/core/shapes/funnel/renderer.d.ts +6 -0
  211. package/dist/esm/core/shapes/funnel/renderer.js +79 -0
  212. package/dist/esm/{hooks/useShapes → core/shapes}/funnel/types.d.ts +2 -2
  213. package/dist/esm/{hooks/useShapes → core/shapes}/heatmap/prepare-data.d.ts +3 -3
  214. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/heatmap/prepare-data.js +2 -2
  215. package/dist/esm/core/shapes/heatmap/renderer.d.ts +6 -0
  216. package/dist/esm/core/shapes/heatmap/renderer.js +55 -0
  217. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/heatmap/types.d.ts +1 -1
  218. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/line/prepare-data.d.ts +4 -4
  219. package/dist/esm/{hooks/useShapes → core/shapes}/line/prepare-data.js +3 -3
  220. package/dist/esm/core/shapes/line/renderer.d.ts +11 -0
  221. package/dist/esm/core/shapes/line/renderer.js +167 -0
  222. package/dist/esm/{hooks/useShapes → core/shapes}/line/types.d.ts +2 -4
  223. package/dist/esm/core/shapes/marker.d.ts +45 -0
  224. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/marker.js +2 -2
  225. package/dist/esm/{hooks/useShapes → core/shapes}/pie/prepare-data.d.ts +1 -1
  226. package/dist/esm/{hooks/useShapes → core/shapes}/pie/prepare-data.js +3 -3
  227. package/dist/esm/core/shapes/pie/renderer.d.ts +8 -0
  228. package/dist/esm/core/shapes/pie/renderer.js +160 -0
  229. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/pie/types.d.ts +1 -1
  230. package/dist/esm/{hooks/useShapes → core/shapes}/radar/prepare-data.d.ts +1 -1
  231. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/radar/prepare-data.js +2 -2
  232. package/dist/esm/core/shapes/radar/renderer.d.ts +6 -0
  233. package/dist/esm/core/shapes/radar/renderer.js +126 -0
  234. package/dist/esm/{hooks/useShapes → core/shapes}/radar/types.d.ts +1 -1
  235. package/dist/esm/{hooks/useShapes → core/shapes}/sankey/prepare-data.d.ts +1 -1
  236. package/dist/esm/{hooks/useShapes → core/shapes}/sankey/prepare-data.js +1 -1
  237. package/dist/esm/core/shapes/sankey/renderer.d.ts +6 -0
  238. package/dist/esm/core/shapes/sankey/renderer.js +50 -0
  239. package/dist/esm/{hooks/useShapes → core/shapes}/sankey/types.d.ts +1 -1
  240. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/scatter/prepare-data.d.ts +3 -3
  241. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/scatter/prepare-data.js +2 -2
  242. package/dist/esm/core/shapes/scatter/renderer.d.ts +6 -0
  243. package/dist/esm/core/shapes/scatter/renderer.js +52 -0
  244. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/scatter/types.d.ts +1 -1
  245. package/dist/esm/{hooks/useShapes → core/shapes}/treemap/prepare-data.d.ts +1 -1
  246. package/dist/esm/{hooks/useShapes → core/shapes}/treemap/prepare-data.js +3 -3
  247. package/dist/esm/core/shapes/treemap/renderer.d.ts +6 -0
  248. package/dist/esm/core/shapes/treemap/renderer.js +88 -0
  249. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/treemap/types.d.ts +1 -1
  250. package/dist/esm/core/shapes/utils.d.ts +52 -0
  251. package/dist/esm/core/shapes/utils.js +138 -0
  252. package/dist/esm/{hooks/useShapes → core/shapes}/waterfall/prepare-data.d.ts +3 -3
  253. package/dist/esm/{hooks/useShapes → core/shapes}/waterfall/prepare-data.js +4 -4
  254. package/dist/esm/core/shapes/waterfall/renderer.d.ts +6 -0
  255. package/dist/esm/core/shapes/waterfall/renderer.js +115 -0
  256. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/waterfall/types.d.ts +1 -1
  257. package/dist/esm/{hooks/useShapes → core/shapes}/x-range/prepare-data.d.ts +3 -3
  258. package/dist/esm/{hooks/useShapes → core/shapes}/x-range/prepare-data.js +4 -4
  259. package/dist/esm/core/shapes/x-range/renderer.d.ts +6 -0
  260. package/dist/esm/core/shapes/x-range/renderer.js +94 -0
  261. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/x-range/types.d.ts +1 -1
  262. package/dist/esm/core/types/chart/area.d.ts +0 -1
  263. package/dist/esm/core/types/chart/axis.d.ts +0 -1
  264. package/dist/esm/core/types/chart/base.d.ts +1 -4
  265. package/dist/esm/core/types/chart/title.d.ts +18 -0
  266. package/dist/esm/{hooks/utils/get-band-size.js → core/utils/band-size.js} +1 -1
  267. package/dist/{cjs/hooks → esm/core}/utils/bar-y.d.ts +3 -3
  268. package/dist/esm/{hooks → core}/utils/bar-y.js +4 -4
  269. package/dist/esm/core/utils/get-closest-data.d.ts +1 -1
  270. package/dist/esm/core/utils/series/sorting.js +1 -1
  271. package/dist/esm/core/utils/text.d.ts +0 -1
  272. package/dist/esm/core/utils/text.js +0 -1
  273. package/dist/esm/hooks/index.d.ts +1 -1
  274. package/dist/esm/hooks/index.js +1 -1
  275. package/dist/esm/hooks/types.d.ts +6 -3
  276. package/dist/esm/hooks/useRangeSlider/types.d.ts +1 -1
  277. package/dist/esm/hooks/useRangeSlider/utils.d.ts +1 -1
  278. package/dist/esm/hooks/useShapes/HtmlLayer.js +4 -3
  279. package/dist/esm/hooks/useShapes/area/index.d.ts +2 -2
  280. package/dist/esm/hooks/useShapes/area/index.js +13 -185
  281. package/dist/esm/hooks/useShapes/bar-x/index.d.ts +4 -4
  282. package/dist/esm/hooks/useShapes/bar-x/index.js +10 -119
  283. package/dist/esm/hooks/useShapes/bar-y/index.d.ts +3 -3
  284. package/dist/esm/hooks/useShapes/bar-y/index.js +5 -84
  285. package/dist/esm/hooks/useShapes/funnel/index.d.ts +4 -4
  286. package/dist/esm/hooks/useShapes/funnel/index.js +4 -83
  287. package/dist/esm/hooks/useShapes/heatmap/index.d.ts +4 -4
  288. package/dist/esm/hooks/useShapes/heatmap/index.js +4 -59
  289. package/dist/esm/hooks/useShapes/index.d.ts +14 -15
  290. package/dist/esm/hooks/useShapes/index.js +13 -13
  291. package/dist/esm/hooks/useShapes/line/index.d.ts +2 -2
  292. package/dist/esm/hooks/useShapes/line/index.js +14 -172
  293. package/dist/esm/hooks/useShapes/pie/index.d.ts +3 -5
  294. package/dist/esm/hooks/useShapes/pie/index.js +3 -158
  295. package/dist/esm/hooks/useShapes/radar/index.d.ts +2 -2
  296. package/dist/esm/hooks/useShapes/radar/index.js +2 -121
  297. package/dist/esm/hooks/useShapes/sankey/index.d.ts +2 -2
  298. package/dist/esm/hooks/useShapes/sankey/index.js +2 -51
  299. package/dist/esm/hooks/useShapes/scatter/index.d.ts +3 -3
  300. package/dist/esm/hooks/useShapes/scatter/index.js +3 -58
  301. package/dist/esm/hooks/useShapes/treemap/index.d.ts +2 -2
  302. package/dist/esm/hooks/useShapes/treemap/index.js +2 -88
  303. package/dist/esm/hooks/useShapes/utils.d.ts +2 -52
  304. package/dist/esm/hooks/useShapes/utils.js +3 -140
  305. package/dist/esm/hooks/useShapes/waterfall/index.d.ts +4 -4
  306. package/dist/esm/hooks/useShapes/waterfall/index.js +6 -119
  307. package/dist/esm/hooks/useShapes/x-range/index.d.ts +4 -4
  308. package/dist/esm/hooks/useShapes/x-range/index.js +3 -98
  309. package/dist/esm/setup-jsdom.js +7 -0
  310. package/dist/esm/types/chart-ui.d.ts +2 -0
  311. package/package.json +5 -2
  312. package/dist/cjs/hooks/useSeries/index.d.ts +0 -12
  313. package/dist/cjs/hooks/useSeries/index.js +0 -40
  314. package/dist/cjs/hooks/useSeries/types.d.ts +0 -1
  315. package/dist/cjs/hooks/useSeries/types.js +0 -1
  316. package/dist/cjs/hooks/useSeries/utils.d.ts +0 -1
  317. package/dist/cjs/hooks/useSeries/utils.js +0 -1
  318. package/dist/cjs/hooks/useShapes/marker.d.ts +0 -15
  319. package/dist/cjs/hooks/utils/index.d.ts +0 -1
  320. package/dist/cjs/hooks/utils/index.js +0 -1
  321. package/dist/esm/hooks/useSeries/index.d.ts +0 -12
  322. package/dist/esm/hooks/useSeries/index.js +0 -40
  323. package/dist/esm/hooks/useSeries/types.d.ts +0 -1
  324. package/dist/esm/hooks/useSeries/types.js +0 -1
  325. package/dist/esm/hooks/useSeries/utils.d.ts +0 -1
  326. package/dist/esm/hooks/useSeries/utils.js +0 -1
  327. package/dist/esm/hooks/useShapes/marker.d.ts +0 -15
  328. package/dist/esm/hooks/utils/index.d.ts +0 -1
  329. package/dist/esm/hooks/utils/index.js +0 -1
  330. /package/dist/cjs/{hooks/useShapes → core/shapes}/area/types.js +0 -0
  331. /package/dist/cjs/{hooks/constants.d.ts → core/shapes/bar-constants.d.ts} +0 -0
  332. /package/dist/cjs/{hooks/constants.js → core/shapes/bar-constants.js} +0 -0
  333. /package/dist/cjs/{hooks/useShapes → core/shapes}/bar-x/types.js +0 -0
  334. /package/dist/cjs/{hooks/useShapes → core/shapes}/bar-y/types.js +0 -0
  335. /package/dist/cjs/{hooks/useShapes → core/shapes}/bar-y/utils.d.ts +0 -0
  336. /package/dist/cjs/{hooks/useShapes → core/shapes}/funnel/types.js +0 -0
  337. /package/dist/cjs/{hooks/useShapes → core/shapes}/heatmap/types.js +0 -0
  338. /package/dist/cjs/{hooks/useShapes → core/shapes}/line/types.js +0 -0
  339. /package/dist/cjs/{hooks/useShapes → core/shapes}/pie/types.js +0 -0
  340. /package/dist/cjs/{hooks/useShapes → core/shapes}/pie/utils.d.ts +0 -0
  341. /package/dist/cjs/{hooks/useShapes → core/shapes}/pie/utils.js +0 -0
  342. /package/dist/cjs/{hooks/useShapes → core/shapes}/radar/types.js +0 -0
  343. /package/dist/cjs/{hooks/useShapes → core/shapes}/sankey/sankey-layout.d.ts +0 -0
  344. /package/dist/cjs/{hooks/useShapes → core/shapes}/sankey/sankey-layout.js +0 -0
  345. /package/dist/cjs/{hooks/useShapes → core/shapes}/sankey/types.js +0 -0
  346. /package/dist/cjs/{hooks/useShapes → core/shapes}/scatter/types.js +0 -0
  347. /package/dist/cjs/{hooks/useShapes → core/shapes}/treemap/types.js +0 -0
  348. /package/dist/cjs/{hooks/useShapes → core/shapes}/waterfall/types.js +0 -0
  349. /package/dist/cjs/{hooks/useShapes → core/shapes}/x-range/types.js +0 -0
  350. /package/dist/cjs/{hooks/utils/get-band-size.d.ts → core/utils/band-size.d.ts} +0 -0
  351. /package/dist/esm/{hooks/useShapes → core/shapes}/area/types.js +0 -0
  352. /package/dist/esm/{hooks/constants.d.ts → core/shapes/bar-constants.d.ts} +0 -0
  353. /package/dist/esm/{hooks/constants.js → core/shapes/bar-constants.js} +0 -0
  354. /package/dist/esm/{hooks/useShapes → core/shapes}/bar-x/types.js +0 -0
  355. /package/dist/esm/{hooks/useShapes → core/shapes}/bar-y/types.js +0 -0
  356. /package/dist/esm/{hooks/useShapes → core/shapes}/bar-y/utils.d.ts +0 -0
  357. /package/dist/esm/{hooks/useShapes → core/shapes}/funnel/types.js +0 -0
  358. /package/dist/esm/{hooks/useShapes → core/shapes}/heatmap/types.js +0 -0
  359. /package/dist/esm/{hooks/useShapes → core/shapes}/line/types.js +0 -0
  360. /package/dist/esm/{hooks/useShapes → core/shapes}/pie/types.js +0 -0
  361. /package/dist/esm/{hooks/useShapes → core/shapes}/pie/utils.d.ts +0 -0
  362. /package/dist/esm/{hooks/useShapes → core/shapes}/pie/utils.js +0 -0
  363. /package/dist/esm/{hooks/useShapes → core/shapes}/radar/types.js +0 -0
  364. /package/dist/esm/{hooks/useShapes → core/shapes}/sankey/sankey-layout.d.ts +0 -0
  365. /package/dist/esm/{hooks/useShapes → core/shapes}/sankey/sankey-layout.js +0 -0
  366. /package/dist/esm/{hooks/useShapes → core/shapes}/sankey/types.js +0 -0
  367. /package/dist/esm/{hooks/useShapes → core/shapes}/scatter/types.js +0 -0
  368. /package/dist/esm/{hooks/useShapes → core/shapes}/treemap/types.js +0 -0
  369. /package/dist/esm/{hooks/useShapes → core/shapes}/waterfall/types.js +0 -0
  370. /package/dist/esm/{hooks/useShapes → core/shapes}/x-range/types.js +0 -0
  371. /package/dist/esm/{hooks/utils/get-band-size.d.ts → core/utils/band-size.d.ts} +0 -0
@@ -256,7 +256,7 @@ export const ChartInner = (props) => {
256
256
  React.createElement("rect", { x: 0, y: 0, width: boundsWidth, height: boundsHeight })),
257
257
  React.createElement("clipPath", { id: getClipPathIdByBounds({ clipPathId, bounds: 'horizontal' }) },
258
258
  React.createElement("rect", { x: 0, y: -boundsHeight, width: boundsWidth, height: boundsHeight * 3 }))),
259
- preparedTitle && React.createElement(Title, Object.assign({}, preparedTitle)),
259
+ preparedTitle && React.createElement(Title, Object.assign({}, preparedTitle, { htmlLayout: htmlLayout })),
260
260
  React.createElement("g", { transform: `translate(0, ${boundsOffsetTop})` }, preparedSplit === null || preparedSplit === void 0 ? void 0 : preparedSplit.plots.map((plot, index) => {
261
261
  return React.createElement(PlotTitle, { key: `plot-${index}`, title: plot.title });
262
262
  })),
@@ -285,7 +285,7 @@ export const ChartInner = (props) => {
285
285
  // when starting to select an area, the tooltip remains in the position where the selection began
286
286
  onPointerMove: throttledHandlePointerMove, onPointerLeave: handlePointerLeave, onTouchStart: throttledHandleTouchMove, onTouchMove: throttledHandleTouchMove, onClick: handleChartClick }, initialized ? chartContent : null),
287
287
  React.createElement("div", { className: b('html-layer'), ref: setHtmlLayout, style: {
288
- '--g-html-layout-transform': `translate(${boundsOffsetLeft}px, ${boundsOffsetTop}px)`,
288
+ '--g-html-layout-plot-transform': `translate(${boundsOffsetLeft}px, ${boundsOffsetTop}px)`,
289
289
  } }),
290
290
  Object.keys(zoomState).length > 0 && (preparedChart === null || preparedChart === void 0 ? void 0 : preparedChart.zoom) && (React.createElement(Button, { className: b('reset-zoom-button'), onClick: () => {
291
291
  var _a;
@@ -10,6 +10,6 @@
10
10
  .gcharts-chart__html-layer {
11
11
  display: contents;
12
12
  }
13
- .gcharts-chart__html-layer-item {
14
- transform: var(--g-html-layout-transform);
13
+ .gcharts-chart__html-layer-item_plot {
14
+ transform: var(--g-html-layout-plot-transform);
15
15
  }
@@ -3,9 +3,9 @@ import isEqual from 'lodash/isEqual';
3
3
  import { DEFAULT_PALETTE, SERIES_TYPE } from '../../core/constants';
4
4
  import { getLegendComponents, getPreparedLegend } from '../../core/series/prepare-legend';
5
5
  import { getPreparedOptions } from '../../core/series/prepare-options';
6
+ import { getActiveLegendItems, getAllLegendItems } from '../../core/series/utils';
6
7
  import { getChartDimensions, getEffectiveXRange, getSortedSeriesData, getYAxisWidth, getZoomedSeriesData, isAxisRelatedSeries, } from '../../core/utils';
7
8
  import { createScales, getAxes, getPreparedSeries, getShapes, getSplit, getVisibleSeries, useZoom, } from '../../hooks';
8
- import { getActiveLegendItems, getAllLegendItems } from '../../hooks/useSeries/utils';
9
9
  import { getNormalizedXAxis, getNormalizedYAxis, getPreparedChart, getPreparedTitle, recalculateYAxisLabelsWidth, } from './utils';
10
10
  import { hasAtLeastOneSeriesDataPerPlot } from './utils/common';
11
11
  const CLIP_PATH_BY_SERIES_TYPE = {
@@ -53,6 +53,7 @@ export function useChartInnerProps(props) {
53
53
  const preparedTitle = await getPreparedTitle({
54
54
  title: data.title,
55
55
  chartWidth: width,
56
+ chartHeight: height,
56
57
  chartMargin: (_a = data.chart) === null || _a === void 0 ? void 0 : _a.margin,
57
58
  });
58
59
  const preparedChart = getPreparedChart({
@@ -203,7 +204,6 @@ export function useChartInnerProps(props) {
203
204
  getYAxisWidth,
204
205
  legendConfig,
205
206
  });
206
- //end
207
207
  const newStateValue = {
208
208
  allPreparedSeries,
209
209
  boundsHeight,
@@ -1,7 +1,8 @@
1
1
  import type { PreparedTitle } from '../../../hooks/types';
2
2
  import type { ChartData, ChartMargin } from '../../../types';
3
- export declare const getPreparedTitle: ({ title, chartWidth, chartMargin, }: {
3
+ export declare const getPreparedTitle: ({ title, chartWidth, chartHeight, chartMargin, }: {
4
4
  title: ChartData["title"];
5
5
  chartWidth: number;
6
+ chartHeight: number;
6
7
  chartMargin?: Partial<ChartMargin>;
7
8
  }) => Promise<PreparedTitle | undefined>;
@@ -1,26 +1,64 @@
1
- import get from 'lodash/get';
2
- import { getTextSizeFn, getTextWithElipsis, wrapText } from '../../../core/utils';
1
+ import { calculateNumericProperty, getLabelsSize, getTextSizeFn, getTextWithElipsis, wrapText, } from '../../../core/utils';
3
2
  const DEFAULT_TITLE_FONT_SIZE = '15px';
4
3
  const DEFAULT_TITLE_MARGIN = 10;
5
- export const getPreparedTitle = async ({ title, chartWidth, chartMargin, }) => {
6
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
4
+ const DEFAULT_TITLE_MAX_HEIGHT = '50%';
5
+ export const getPreparedTitle = async ({ title, chartWidth, chartHeight, chartMargin, }) => {
6
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
7
+ const titleText = title === null || title === void 0 ? void 0 : title.text;
8
+ if (!titleText) {
9
+ return undefined;
10
+ }
7
11
  const chartMarginTop = (_a = chartMargin === null || chartMargin === void 0 ? void 0 : chartMargin.top) !== null && _a !== void 0 ? _a : 0;
8
12
  const chartMarginLeft = (_b = chartMargin === null || chartMargin === void 0 ? void 0 : chartMargin.left) !== null && _b !== void 0 ? _b : 0;
9
13
  const chartMarginRight = (_c = chartMargin === null || chartMargin === void 0 ? void 0 : chartMargin.right) !== null && _c !== void 0 ? _c : 0;
10
- const titleText = get(title, 'text');
11
14
  const titleStyle = {
12
15
  fontSize: (_e = (_d = title === null || title === void 0 ? void 0 : title.style) === null || _d === void 0 ? void 0 : _d.fontSize) !== null && _e !== void 0 ? _e : DEFAULT_TITLE_FONT_SIZE,
13
16
  fontWeight: (_g = (_f = title === null || title === void 0 ? void 0 : title.style) === null || _f === void 0 ? void 0 : _f.fontWeight) !== null && _g !== void 0 ? _g : 'var(--g-text-subheader-font-weight)',
14
17
  fontColor: (_j = (_h = title === null || title === void 0 ? void 0 : title.style) === null || _h === void 0 ? void 0 : _h.fontColor) !== null && _j !== void 0 ? _j : 'var(--g-color-text-primary)',
15
18
  };
16
- if (!titleText) {
17
- return undefined;
19
+ const usableWidth = chartWidth - chartMarginLeft - chartMarginRight;
20
+ const titleMargin = (_k = title === null || title === void 0 ? void 0 : title.margin) !== null && _k !== void 0 ? _k : DEFAULT_TITLE_MARGIN;
21
+ if (title === null || title === void 0 ? void 0 : title.html) {
22
+ const titleSize = await getLabelsSize({
23
+ labels: [titleText],
24
+ style: Object.assign(Object.assign({}, titleStyle), { maxWidth: `${usableWidth}px` }),
25
+ html: true,
26
+ });
27
+ const resolvedMaxHeight = calculateNumericProperty({
28
+ value: (_l = title.maxHeight) !== null && _l !== void 0 ? _l : DEFAULT_TITLE_MAX_HEIGHT,
29
+ base: chartHeight,
30
+ });
31
+ const titleHeight = resolvedMaxHeight === undefined
32
+ ? titleSize.maxHeight
33
+ : Math.min(titleSize.maxHeight, resolvedMaxHeight);
34
+ const qa = title === null || title === void 0 ? void 0 : title.qa;
35
+ const qaAttr = qa ? ` data-qa="${qa}"` : '';
36
+ const maxHeightStyle = resolvedMaxHeight === undefined ? '' : ` max-height: ${resolvedMaxHeight}px;`;
37
+ const htmlContent = `<div${qaAttr} style="max-width: ${usableWidth}px; overflow: hidden;${maxHeightStyle}">${titleText}</div>`;
38
+ const titleWidth = Math.min(titleSize.maxWidth, usableWidth);
39
+ return {
40
+ text: titleText,
41
+ style: titleStyle,
42
+ height: titleHeight,
43
+ margin: titleMargin,
44
+ qa,
45
+ html: true,
46
+ htmlElements: [
47
+ {
48
+ x: chartMarginLeft + (usableWidth - titleWidth) / 2,
49
+ y: chartMarginTop,
50
+ content: htmlContent,
51
+ size: { width: titleWidth, height: titleHeight },
52
+ style: titleStyle,
53
+ scope: 'chart',
54
+ },
55
+ ],
56
+ };
18
57
  }
58
+ const xCenter = chartMarginLeft + usableWidth / 2;
19
59
  const getTitleTextSize = getTextSizeFn({ style: titleStyle });
20
- const maxRowCount = (_k = title === null || title === void 0 ? void 0 : title.maxRowCount) !== null && _k !== void 0 ? _k : 1;
60
+ const maxRowCount = (_m = title === null || title === void 0 ? void 0 : title.maxRowCount) !== null && _m !== void 0 ? _m : 1;
21
61
  const contentRows = [];
22
- const usableWidth = chartWidth - chartMarginLeft - chartMarginRight;
23
- const xCenter = chartMarginLeft + usableWidth / 2;
24
62
  if (maxRowCount > 1) {
25
63
  let titleTextRows = await wrapText({
26
64
  text: titleText,
@@ -33,7 +71,7 @@ export const getPreparedTitle = async ({ title, chartWidth, chartMargin, }) => {
33
71
  acc.push(row);
34
72
  }
35
73
  else {
36
- acc[maxRowCount - 1].text += row.text;
74
+ acc[maxRowCount - 1] = Object.assign(Object.assign({}, acc[maxRowCount - 1]), { text: acc[maxRowCount - 1].text + row.text });
37
75
  }
38
76
  return acc;
39
77
  }, []);
@@ -71,12 +109,11 @@ export const getPreparedTitle = async ({ title, chartWidth, chartMargin, }) => {
71
109
  });
72
110
  }
73
111
  const totalTextHeight = contentRows.reduce((acc, row) => acc + row.size.height, 0);
74
- const titleHeight = totalTextHeight;
75
112
  return {
76
113
  text: titleText,
77
114
  style: titleStyle,
78
- height: titleHeight,
79
- margin: (_l = title === null || title === void 0 ? void 0 : title.margin) !== null && _l !== void 0 ? _l : DEFAULT_TITLE_MARGIN,
115
+ height: totalTextHeight,
116
+ margin: titleMargin,
80
117
  qa: title === null || title === void 0 ? void 0 : title.qa,
81
118
  contentRows,
82
119
  };
@@ -24,11 +24,16 @@ const getLegendPosition = (args) => {
24
24
  const { offsetLeft, offsetTop, contentWidth, width } = args;
25
25
  return { top: offsetTop, left: offsetLeft + width / 2 - contentWidth / 2 };
26
26
  };
27
- const appendPaginator = (args) => {
27
+ async function appendPaginator(args) {
28
28
  const { container, pageIndex, legend, transform, pages, onArrowClick } = args;
29
29
  const paginationLine = container.append('g').attr('class', b('pagination'));
30
30
  const maxPage = pages.length;
31
- let computedWidth = 0;
31
+ const paginationCounterText = `${pageIndex + 1}/${maxPage}`;
32
+ const getTextSize = getTextSizeFn({ style: legend.itemStyle });
33
+ const [arrowIcon, counter] = await Promise.all([
34
+ getTextSize('▲'),
35
+ getTextSize(paginationCounterText),
36
+ ]);
32
37
  paginationLine
33
38
  .append('text')
34
39
  .text('▲')
@@ -36,9 +41,6 @@ const appendPaginator = (args) => {
36
41
  return b('pagination-arrow', { inactive: pageIndex === 0 });
37
42
  })
38
43
  .style('font-size', legend.itemStyle.fontSize)
39
- .each(function () {
40
- computedWidth += this.getComputedTextLength();
41
- })
42
44
  .on('click', function () {
43
45
  if (pageIndex - 1 >= 0) {
44
46
  onArrowClick(pageIndex - 1);
@@ -46,20 +48,17 @@ const appendPaginator = (args) => {
46
48
  });
47
49
  paginationLine
48
50
  .append('text')
49
- .text(`${pageIndex + 1}/${maxPage}`)
51
+ .text(paginationCounterText)
50
52
  .attr('class', b('pagination-counter'))
51
- .attr('x', computedWidth)
52
- .style('font-size', legend.itemStyle.fontSize)
53
- .each(function () {
54
- computedWidth += this.getComputedTextLength();
55
- });
53
+ .attr('x', arrowIcon.width)
54
+ .style('font-size', legend.itemStyle.fontSize);
56
55
  paginationLine
57
56
  .append('text')
58
57
  .text('▼')
59
58
  .attr('class', function () {
60
59
  return b('pagination-arrow', { inactive: pageIndex === maxPage - 1 });
61
60
  })
62
- .attr('x', computedWidth)
61
+ .attr('x', arrowIcon.width + counter.width)
63
62
  .style('font-size', legend.itemStyle.fontSize)
64
63
  .on('click', function () {
65
64
  if (pageIndex + 1 < maxPage) {
@@ -67,7 +66,7 @@ const appendPaginator = (args) => {
67
66
  }
68
67
  });
69
68
  paginationLine.attr('transform', transform);
70
- };
69
+ }
71
70
  function renderLegendSymbol(args) {
72
71
  const { selection, legend, legendLineHeight } = args;
73
72
  const line = selection.data();
@@ -277,7 +276,7 @@ export const Legend = (props) => {
277
276
  });
278
277
  if (config.pagination) {
279
278
  const transform = `translate(${[0, legend.height - legend.lineHeight / 2].join(',')})`;
280
- appendPaginator({
279
+ await appendPaginator({
281
280
  container: svgElement,
282
281
  pageIndex: pageIndex,
283
282
  legend,
@@ -1,5 +1,7 @@
1
1
  import React from 'react';
2
2
  import type { PreparedTitle } from '../../hooks';
3
- type Props = PreparedTitle;
4
- export declare const Title: (props: Props) => React.JSX.Element;
3
+ type Props = PreparedTitle & {
4
+ htmlLayout?: HTMLElement | null;
5
+ };
6
+ export declare const Title: (props: Props) => React.JSX.Element | null;
5
7
  export {};
@@ -1,9 +1,16 @@
1
1
  import React from 'react';
2
+ import { HtmlLayer } from '../../hooks/useShapes/HtmlLayer';
2
3
  export const Title = (props) => {
3
- const { style, qa, contentRows } = props;
4
+ const { style, qa, contentRows, html, htmlElements, htmlLayout } = props;
5
+ if (html) {
6
+ if (!htmlLayout || !htmlElements) {
7
+ return null;
8
+ }
9
+ return React.createElement(HtmlLayer, { htmlLayout: htmlLayout, preparedData: { htmlElements } });
10
+ }
4
11
  return (React.createElement("text", { dominantBaseline: "hanging", textAnchor: "middle", style: {
5
12
  fill: style === null || style === void 0 ? void 0 : style.fontColor,
6
13
  fontSize: style === null || style === void 0 ? void 0 : style.fontSize,
7
14
  fontWeight: style === null || style === void 0 ? void 0 : style.fontWeight,
8
- }, "data-qa": qa }, contentRows.map((row, i) => (React.createElement("tspan", { key: i, x: row.x, y: row.y, dominantBaseline: "hanging", dangerouslySetInnerHTML: { __html: row.text } })))));
15
+ }, "data-qa": qa }, contentRows === null || contentRows === void 0 ? void 0 : contentRows.map((row, i) => (React.createElement("tspan", { key: i, x: row.x, y: row.y, dominantBaseline: "hanging", dangerouslySetInnerHTML: { __html: row.text } })))));
9
16
  };
@@ -13,7 +13,28 @@ export const Tooltip = (props) => {
13
13
  xAxis,
14
14
  yAxis,
15
15
  });
16
- const containerRect = (svgContainer === null || svgContainer === void 0 ? void 0 : svgContainer.getBoundingClientRect()) || { left: 0, top: 0 };
16
+ const containerRectRef = React.useRef({ left: 0, top: 0 });
17
+ React.useEffect(() => {
18
+ if (!svgContainer)
19
+ return undefined;
20
+ const updateRect = (e) => {
21
+ // Skip synthetic events (e.g. the CustomEvent('scroll') dispatched by the
22
+ // sibling useEffect below to reposition the Popup). Only native browser
23
+ // scroll events have isTrusted === true, so those still update the rect.
24
+ if (e && !e.isTrusted)
25
+ return;
26
+ containerRectRef.current = svgContainer.getBoundingClientRect();
27
+ };
28
+ updateRect();
29
+ const resizeObserver = new ResizeObserver(() => updateRect());
30
+ resizeObserver.observe(svgContainer);
31
+ window.addEventListener('scroll', updateRect, { passive: true, capture: true });
32
+ return () => {
33
+ resizeObserver.disconnect();
34
+ window.removeEventListener('scroll', updateRect, { capture: true });
35
+ };
36
+ }, [svgContainer]);
37
+ const containerRect = containerRectRef.current;
17
38
  const left = ((pointerPosition === null || pointerPosition === void 0 ? void 0 : pointerPosition[0]) || 0) + containerRect.left;
18
39
  const top = ((pointerPosition === null || pointerPosition === void 0 ? void 0 : pointerPosition[1]) || 0) + containerRect.top;
19
40
  const { anchor } = useVirtualElement({ left, top });
@@ -1,7 +1,7 @@
1
1
  import get from 'lodash/get';
2
- import { TIME_UNITS, calculateCos, calculateNumericProperty, calculateSin, formatAxisTickLabel, getDefaultDateFormat, getHorizontalHtmlTextHeight, getLabelsSize, getMinSpaceBetween, getTextSizeFn, isAxisRelatedSeries, wrapText, } from '../utils';
3
2
  import { DASH_STYLE, DEFAULT_AXIS_LABEL_FONT_SIZE, PLOT_LINE_HOVER_THRESHOLD, SERIES_TYPE, axisCrosshairDefaults, axisLabelsDefaults, axisTickMarksDefaults, xAxisTitleDefaults, } from '../constants';
4
3
  import { createXScale } from '../scales/x-scale';
4
+ import { TIME_UNITS, calculateCos, calculateNumericProperty, calculateSin, formatAxisTickLabel, getDefaultDateFormat, getHorizontalHtmlTextHeight, getLabelsSize, getMinSpaceBetween, getTextSizeFn, isAxisRelatedSeries, wrapText, } from '../utils';
5
5
  import { getXAxisTickValues } from '../utils/axis/x-axis';
6
6
  import { getPreparedRangeSlider } from './range-slider';
7
7
  import { prepareAxisPlotLabel } from './utils';
@@ -1,8 +1,8 @@
1
1
  import get from 'lodash/get';
2
- import { calculateNumericProperty, formatAxisTickLabel, getDefaultDateFormat, getHorizontalHtmlTextHeight, getLabelsSize, getMinSpaceBetween, getTextSizeFn, isAxisRelatedSeries, shouldSyncAxisWithPrimary, wrapText, } from '../utils';
3
2
  import { getTickValues } from '../../components/AxisY/utils';
4
3
  import { DASH_STYLE, DEFAULT_AXIS_LABEL_FONT_SIZE, DEFAULT_AXIS_TYPE, PLOT_LINE_HOVER_THRESHOLD, SERIES_TYPE, axisCrosshairDefaults, axisLabelsDefaults, axisTickMarksDefaults, yAxisTitleDefaults, } from '../constants';
5
4
  import { createYScale } from '../scales/y-scale';
5
+ import { calculateNumericProperty, formatAxisTickLabel, getDefaultDateFormat, getHorizontalHtmlTextHeight, getLabelsSize, getMinSpaceBetween, getTextSizeFn, isAxisRelatedSeries, shouldSyncAxisWithPrimary, wrapText, } from '../utils';
6
6
  import { prepareAxisPlotLabel } from './utils';
7
7
  export const getYAxisLabelMaxWidth = async (args) => {
8
8
  const { axis, scale, seriesData } = args;
@@ -1,7 +1,7 @@
1
- import type { AxisDirection } from '../utils';
2
1
  import type { ChartAxis, ChartSeries } from '../../types';
3
2
  import type { PreparedAxis, PreparedYAxis } from '../axes/types';
4
3
  import type { PreparedSeries } from '../series';
4
+ import type { AxisDirection } from '../utils';
5
5
  type OptionalNumber = number | undefined;
6
6
  export declare function getMinMaxPropsOrState(args: {
7
7
  axis: PreparedAxis | ChartAxis;
@@ -1,6 +1,6 @@
1
1
  import get from 'lodash/get';
2
- import { getDataCategoryValue, isSeriesWithCategoryValues } from '../utils';
3
2
  import { SERIES_TYPE } from '../constants';
3
+ import { getDataCategoryValue, isSeriesWithCategoryValues } from '../utils';
4
4
  const MARKER_SERIES_TYPES = [SERIES_TYPE.Area, SERIES_TYPE.Line, SERIES_TYPE.Scatter];
5
5
  function getNormilizedMinMax(args) {
6
6
  const { maxValues, minValues } = args;
@@ -1,9 +1,9 @@
1
1
  import { extent } from 'd3-array';
2
2
  import { scaleBand, scaleLinear, scaleLog, scaleUtc } from 'd3-scale';
3
3
  import get from 'lodash/get';
4
- import { getDefaultMaxXAxisValue, getDefaultMinXAxisValue, getDomainDataXBySeries, getEffectiveXRange, } from '../utils';
5
- import { getBandSize } from '../../hooks/utils/get-band-size';
6
4
  import { DEFAULT_AXIS_TYPE, SERIES_TYPE } from '../constants';
5
+ import { getDefaultMaxXAxisValue, getDefaultMinXAxisValue, getDomainDataXBySeries, getEffectiveXRange, } from '../utils';
6
+ import { getBandSize } from '../utils/band-size';
7
7
  import { checkIsPointDomain, filterCategoriesByVisibleSeries, getMinMaxPropsOrState, hasOnlyMarkerSeries, validateArrayData, } from './utils';
8
8
  const X_AXIS_ZOOM_PADDING = 0.02;
9
9
  function calculateXAxisPadding(series) {
@@ -1,10 +1,10 @@
1
1
  import { extent, tickStep, ticks } from 'd3-array';
2
2
  import { scaleBand, scaleLinear, scaleLog, scaleUtc } from 'd3-scale';
3
3
  import get from 'lodash/get';
4
- import { CHART_SERIES_WITH_VOLUME_ON_Y_AXIS, getDefaultMinYAxisValue, getDomainDataYBySeries, shouldSyncAxisWithPrimary, } from '../utils';
5
4
  import { getTickValues } from '../../components/AxisY/utils';
6
- import { getBandSize } from '../../hooks/utils/get-band-size';
7
5
  import { SERIES_TYPE } from '../constants';
6
+ import { CHART_SERIES_WITH_VOLUME_ON_Y_AXIS, getDefaultMinYAxisValue, getDomainDataYBySeries, shouldSyncAxisWithPrimary, } from '../utils';
7
+ import { getBandSize } from '../utils/band-size';
8
8
  import { checkIsPointDomain, filterCategoriesByVisibleSeries, getMinMaxPropsOrState, hasOnlyMarkerSeries, validateArrayData, } from './utils';
9
9
  // axis is validated in `validation/index.ts`, so the value of `axis.type` is definitely valid.
10
10
  // eslint-disable-next-line consistent-return
@@ -70,6 +70,34 @@ function getDomainSyncedToPrimaryTicks(args) {
70
70
  }
71
71
  return [secondaryTicks[0], secondaryTicks[secondaryTicks.length - 1]];
72
72
  }
73
+ function getLogarithmicYMin(args) {
74
+ var _a;
75
+ const { axis, domain, yMinDomain, hasSeriesWithVolumeOnYAxis } = args;
76
+ // scaleLog cannot represent values <= 0. Pick the smallest positive value
77
+ // present in the domain, falling back to 1 if there is none.
78
+ const smallestPositive = yMinDomain > 0
79
+ ? yMinDomain
80
+ : ((_a = domain.reduce((min, v) => {
81
+ if (typeof v === 'number' && v > 0) {
82
+ return min === null ? v : Math.min(min, v);
83
+ }
84
+ return min;
85
+ }, null)) !== null && _a !== void 0 ? _a : 1);
86
+ if (!hasSeriesWithVolumeOnYAxis) {
87
+ return smallestPositive;
88
+ }
89
+ // Volume series (bar-x, area, waterfall) draw bars from yMin up to the
90
+ // value, so a bar whose value equals yMin collapses to zero height. Drop
91
+ // the baseline one decade below to give it visible space — but only when
92
+ // the later `nice()` pass (triggered by startOnTick) won't supply that
93
+ // headroom on its own. nice() rounds down to the previous decade, which
94
+ // covers any value strictly between two decades; it has nothing to round
95
+ // when the smallest value already sits on a decade (e.g. 1, 10, 100).
96
+ const startOnTick = get(axis, 'startOnTick', false);
97
+ const isOnDecade = Number.isInteger(Math.log10(smallestPositive));
98
+ const needsHeadroom = !startOnTick || isOnDecade;
99
+ return needsHeadroom ? smallestPositive / 10 : smallestPositive;
100
+ }
73
101
  function getDomainMinAlignedToStartTick(args) {
74
102
  var _a, _b;
75
103
  const { axis, range, scale, series } = args;
@@ -80,6 +108,9 @@ function getDomainMinAlignedToStartTick(args) {
80
108
  labelLineHeight: axis.labels.lineHeight,
81
109
  series,
82
110
  });
111
+ if (tickValues.length === 0) {
112
+ return dMin;
113
+ }
83
114
  const isStartOnTick = tickValues[0].y === range[0];
84
115
  let dNewMin = dMin;
85
116
  if (!isStartOnTick) {
@@ -111,6 +142,9 @@ function getDomainMaxAlignedToEndTick(args) {
111
142
  labelLineHeight: axis.labels.lineHeight,
112
143
  series,
113
144
  });
145
+ if (tickValues.length === 0) {
146
+ return dMax;
147
+ }
114
148
  let dNewMax = dMax;
115
149
  const isEndOnTick = tickValues[tickValues.length - 1].y === range[1];
116
150
  if (!isEndOnTick) {
@@ -155,12 +189,18 @@ export function createYScale(args) {
155
189
  }
156
190
  if (hasNumberAndNullValues) {
157
191
  const [yMinDomain, yMaxDomain] = extent(domain);
192
+ const hasSeriesWithVolumeOnYAxis = series.some((s) => CHART_SERIES_WITH_VOLUME_ON_Y_AXIS.includes(s.type));
158
193
  let yMin;
159
194
  if (typeof yMinPropsOrState === 'number') {
160
195
  yMin = yMinPropsOrState;
161
196
  }
162
197
  else if (axis.type === 'logarithmic') {
163
- yMin = yMinDomain;
198
+ yMin = getLogarithmicYMin({
199
+ axis,
200
+ domain,
201
+ yMinDomain,
202
+ hasSeriesWithVolumeOnYAxis,
203
+ });
164
204
  }
165
205
  else {
166
206
  const yMinDefault = getDefaultMinYAxisValue(series);
@@ -170,8 +210,12 @@ export function createYScale(args) {
170
210
  if (typeof yMaxPropsOrState === 'number') {
171
211
  yMax = yMaxPropsOrState;
172
212
  }
213
+ else if (axis.type === 'logarithmic') {
214
+ // scaleLog cannot represent values <= 0; ensure yMax is strictly
215
+ // greater than yMin so the resulting domain stays valid.
216
+ yMax = yMaxDomain > yMin ? yMaxDomain : yMin * 10;
217
+ }
173
218
  else {
174
- const hasSeriesWithVolumeOnYAxis = series.some((s) => CHART_SERIES_WITH_VOLUME_ON_Y_AXIS.includes(s.type));
175
219
  yMax = hasSeriesWithVolumeOnYAxis ? Math.max(yMaxDomain, 0) : yMaxDomain;
176
220
  }
177
221
  const scaleFn = axis.type === 'logarithmic' ? scaleLog : scaleLinear;
@@ -1,7 +1,7 @@
1
1
  import get from 'lodash/get';
2
2
  import merge from 'lodash/merge';
3
- import { getUniqId } from '../utils';
4
3
  import { DEFAULT_DATALABELS_STYLE, seriesRangeSliderOptionsDefaults } from '../constants';
4
+ import { getUniqId } from '../utils';
5
5
  import { DEFAULT_DATALABELS_PADDING, DEFAULT_HALO_OPTIONS, DEFAULT_POINT_MARKER_OPTIONS, } from './constants';
6
6
  import { getSeriesStackId, prepareLegendSymbol } from './utils';
7
7
  export const DEFAULT_LINE_WIDTH = 1;
@@ -1,6 +1,6 @@
1
1
  import get from 'lodash/get';
2
- import { getUniqId } from '../utils';
3
2
  import { DEFAULT_DATALABELS_STYLE, seriesRangeSliderOptionsDefaults } from '../constants';
3
+ import { getUniqId } from '../utils';
4
4
  import { DEFAULT_DATALABELS_PADDING } from './constants';
5
5
  import { getSeriesStackId, prepareLegendSymbol } from './utils';
6
6
  function prepareSeriesData(series) {
@@ -1,6 +1,6 @@
1
1
  import get from 'lodash/get';
2
- import { getLabelsSize, getUniqId } from '../utils';
3
2
  import { DEFAULT_DATALABELS_STYLE } from '../constants';
3
+ import { getLabelsSize, getUniqId } from '../utils';
4
4
  import { getFormattedValue } from '../utils/format';
5
5
  import { getSeriesStackId, prepareLegendSymbol } from './utils';
6
6
  const DEFAULT_LABEL_PADDING = 7;
@@ -1,7 +1,7 @@
1
1
  import { scaleOrdinal } from 'd3-scale';
2
2
  import get from 'lodash/get';
3
- import { getUniqId } from '../utils';
4
3
  import { DEFAULT_DATALABELS_STYLE } from '../constants';
4
+ import { getUniqId } from '../utils';
5
5
  import { prepareLegendSymbol } from './utils';
6
6
  export function prepareFunnelSeries(args) {
7
7
  var _a, _b;
@@ -1,6 +1,6 @@
1
1
  import get from 'lodash/get';
2
- import { getUniqId } from '../utils';
3
2
  import { DEFAULT_DATALABELS_STYLE } from '../constants';
3
+ import { getUniqId } from '../utils';
4
4
  import { DEFAULT_DATALABELS_PADDING } from './constants';
5
5
  import { prepareLegendSymbol } from './utils';
6
6
  function prepareSeriesData(series) {
@@ -2,8 +2,8 @@ import { groupBy } from 'lodash';
2
2
  import clone from 'lodash/clone';
3
3
  import get from 'lodash/get';
4
4
  import merge from 'lodash/merge';
5
- import { getDefaultColorStops, getDomainForContinuousColorScale, getLabelsSize, getTextSizeFn, getTextWithElipsis, } from '../utils';
6
5
  import { CONTINUOUS_LEGEND_SIZE, legendDefaults } from '../constants';
6
+ import { getDefaultColorStops, getDomainForContinuousColorScale, getLabelsSize, getTextSizeFn, getTextWithElipsis, } from '../utils';
7
7
  export async function getPreparedLegend(args) {
8
8
  var _a, _b, _c, _d, _e, _f, _g;
9
9
  const { legend, series } = args;
@@ -120,8 +120,8 @@ async function getGroupedLegendItems(args) {
120
120
  }
121
121
  resultItem.height = textHeight;
122
122
  if (textWidth > maxTextWidth) {
123
+ resultItem.overflowed = true;
123
124
  if (preparedLegend.html) {
124
- resultItem.overflowed = true;
125
125
  resultItem.textWidth = maxTextWidth;
126
126
  }
127
127
  else {
@@ -1,7 +1,7 @@
1
1
  import get from 'lodash/get';
2
2
  import merge from 'lodash/merge';
3
- import { getUniqId } from '../utils';
4
3
  import { DASH_STYLE, DEFAULT_DATALABELS_STYLE, LineCap, LineJoin, seriesRangeSliderOptionsDefaults, } from '../constants';
4
+ import { getUniqId } from '../utils';
5
5
  import { DEFAULT_DATALABELS_PADDING, DEFAULT_HALO_OPTIONS, DEFAULT_LEGEND_SYMBOL_PADDING, DEFAULT_POINT_MARKER_OPTIONS, } from './constants';
6
6
  export const DEFAULT_LEGEND_SYMBOL_SIZE = 16;
7
7
  export const DEFAULT_LINE_WIDTH = 1;
@@ -1,7 +1,7 @@
1
1
  import { scaleOrdinal } from 'd3-scale';
2
2
  import get from 'lodash/get';
3
- import { getUniqId } from '../utils';
4
3
  import { DEFAULT_DATALABELS_STYLE } from '../constants';
4
+ import { getUniqId } from '../utils';
5
5
  import { DEFAULT_DATALABELS_PADDING } from './constants';
6
6
  import { prepareLegendSymbol } from './utils';
7
7
  function prepareSeriesData(series) {
@@ -1,8 +1,8 @@
1
1
  import { scaleOrdinal } from 'd3-scale';
2
2
  import get from 'lodash/get';
3
3
  import merge from 'lodash/merge';
4
- import { getUniqId } from '../utils';
5
4
  import { DEFAULT_DATALABELS_STYLE } from '../constants';
5
+ import { getUniqId } from '../utils';
6
6
  import { DEFAULT_DATALABELS_PADDING, DEFAULT_HALO_OPTIONS, DEFAULT_POINT_MARKER_OPTIONS, } from './constants';
7
7
  import { prepareLegendSymbol } from './utils';
8
8
  export const DEFAULT_MARKER = Object.assign(Object.assign({}, DEFAULT_POINT_MARKER_OPTIONS), { enabled: true, radius: 2 });
@@ -1,6 +1,6 @@
1
1
  import get from 'lodash/get';
2
- import { getUniqId } from '../utils';
3
2
  import { DEFAULT_DATALABELS_STYLE } from '../constants';
3
+ import { getUniqId } from '../utils';
4
4
  import { prepareLegendSymbol } from './utils';
5
5
  export function prepareSankeySeries(args) {
6
6
  const { colorScale, legend, series } = args;
@@ -1,7 +1,7 @@
1
1
  import get from 'lodash/get';
2
2
  import merge from 'lodash/merge';
3
- import { getSymbolType, getUniqId } from '../utils';
4
3
  import { seriesRangeSliderOptionsDefaults } from '../constants';
4
+ import { getSymbolType, getUniqId } from '../utils';
5
5
  import { DEFAULT_HALO_OPTIONS, DEFAULT_POINT_MARKER_OPTIONS } from './constants';
6
6
  import { prepareLegendSymbol } from './utils';
7
7
  function prepareMarker(series, seriesOptions, index) {
@@ -1,6 +1,6 @@
1
1
  import get from 'lodash/get';
2
- import { getUniqId } from '../utils';
3
2
  import { DEFAULT_DATALABELS_STYLE, LayoutAlgorithm } from '../constants';
3
+ import { getUniqId } from '../utils';
4
4
  import { DEFAULT_DATALABELS_PADDING } from './constants';
5
5
  import { prepareLegendSymbol } from './utils';
6
6
  export function prepareTreemap(args) {
@@ -1,6 +1,6 @@
1
1
  import get from 'lodash/get';
2
- import { getUniqId } from '../utils';
3
2
  import { DEFAULT_DATALABELS_STYLE } from '../constants';
3
+ import { getUniqId } from '../utils';
4
4
  import { DEFAULT_DATALABELS_PADDING } from './constants';
5
5
  import { prepareLegendSymbol } from './utils';
6
6
  function prepareSeriesData(series) {
@@ -1,6 +1,6 @@
1
1
  import get from 'lodash/get';
2
- import { getUniqId } from '../utils';
3
2
  import { DASH_STYLE, DEFAULT_DATALABELS_STYLE } from '../constants';
3
+ import { getUniqId } from '../utils';
4
4
  import { DEFAULT_DATALABELS_PADDING } from './constants';
5
5
  import { prepareLegendSymbol } from './utils';
6
6
  export function prepareXRangeSeries(args) {
@@ -1,6 +1,12 @@
1
1
  import type { ScaleOrdinal } from 'd3-scale';
2
- import type { ChartSeries, ChartSeriesOptions } from '../../types';
2
+ import type { ChartData, ChartSeries, ChartSeriesOptions } from '../../types';
3
3
  import type { PreparedLegend, PreparedSeries } from './types';
4
+ export declare const getPreparedSeries: ({ seriesData, seriesOptions, colors, preparedLegend, }: {
5
+ seriesData: ChartData["series"]["data"];
6
+ seriesOptions: ChartData["series"]["options"];
7
+ colors: string[];
8
+ preparedLegend?: PreparedLegend | null;
9
+ }) => Promise<PreparedSeries[]>;
4
10
  export declare function prepareSeries(args: {
5
11
  type: ChartSeries['type'];
6
12
  series: ChartSeries[];