@gravity-ui/charts 1.46.0 → 1.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (445) hide show
  1. package/dist/cjs/components/ChartInner/index.js +1 -0
  2. package/dist/cjs/components/ChartInner/useChartInnerProps.d.ts +1 -0
  3. package/dist/cjs/components/ChartInner/useChartInnerProps.js +13 -6
  4. package/dist/cjs/components/Legend/index.js +13 -14
  5. package/dist/cjs/components/Tooltip/index.js +22 -1
  6. package/dist/cjs/core/axes/x-axis.js +1 -1
  7. package/dist/cjs/core/axes/y-axis.js +1 -1
  8. package/dist/cjs/core/brush/index.d.ts +2 -0
  9. package/dist/cjs/core/brush/index.js +2 -0
  10. package/dist/cjs/{hooks/useBrush → core/brush}/types.d.ts +2 -2
  11. package/dist/cjs/{hooks/useBrush → core/brush}/utils.d.ts +1 -1
  12. package/dist/cjs/core/chart/index.d.ts +1 -0
  13. package/dist/cjs/core/chart/index.js +1 -0
  14. package/dist/cjs/core/chart/types.d.ts +8 -0
  15. package/dist/cjs/core/index.d.ts +3 -0
  16. package/dist/cjs/core/index.js +3 -0
  17. package/dist/cjs/core/layout/chart-dimensions.d.ts +1 -1
  18. package/dist/cjs/core/range-slider/index.d.ts +2 -0
  19. package/dist/cjs/core/range-slider/index.js +2 -0
  20. package/dist/cjs/core/range-slider/types.d.ts +4 -0
  21. package/dist/{esm/hooks/useRangeSlider → cjs/core/range-slider}/utils.d.ts +5 -5
  22. package/dist/{esm/hooks/useRangeSlider → cjs/core/range-slider}/utils.js +1 -1
  23. package/dist/cjs/core/scales/utils.d.ts +1 -1
  24. package/dist/cjs/core/scales/utils.js +1 -1
  25. package/dist/cjs/core/scales/x-scale.d.ts +2 -2
  26. package/dist/cjs/core/scales/x-scale.js +2 -2
  27. package/dist/cjs/core/scales/y-scale.js +69 -4
  28. package/dist/cjs/core/series/prepare-area.js +1 -1
  29. package/dist/cjs/core/series/prepare-bar-x.js +1 -1
  30. package/dist/cjs/core/series/prepare-bar-y.js +1 -1
  31. package/dist/cjs/core/series/prepare-funnel.js +1 -1
  32. package/dist/cjs/core/series/prepare-heatmap.js +1 -1
  33. package/dist/cjs/core/series/prepare-legend.d.ts +1 -1
  34. package/dist/cjs/core/series/prepare-legend.js +2 -2
  35. package/dist/cjs/core/series/prepare-line.js +1 -1
  36. package/dist/cjs/core/series/prepare-pie.js +1 -1
  37. package/dist/cjs/core/series/prepare-radar.js +1 -1
  38. package/dist/cjs/core/series/prepare-sankey.js +1 -1
  39. package/dist/cjs/core/series/prepare-scatter.js +1 -1
  40. package/dist/cjs/core/series/prepare-treemap.js +1 -1
  41. package/dist/cjs/core/series/prepare-waterfall.js +1 -1
  42. package/dist/cjs/core/series/prepare-x-range.js +1 -1
  43. package/dist/cjs/core/series/prepareSeries.d.ts +7 -1
  44. package/dist/cjs/core/series/prepareSeries.js +31 -0
  45. package/dist/cjs/core/series/types.d.ts +5 -0
  46. package/dist/cjs/core/series/utils.d.ts +4 -0
  47. package/dist/cjs/core/series/utils.js +9 -1
  48. package/dist/cjs/{hooks/useShapes/annotation/index.d.ts → core/shapes/annotation.d.ts} +1 -7
  49. package/dist/cjs/{hooks/useShapes/annotation/index.js → core/shapes/annotation.js} +2 -2
  50. package/dist/cjs/{hooks/useShapes → core/shapes}/area/prepare-data.d.ts +4 -4
  51. package/dist/cjs/{hooks/useShapes → core/shapes}/area/prepare-data.js +9 -4
  52. package/dist/cjs/core/shapes/area/renderer.d.ts +11 -0
  53. package/dist/cjs/core/shapes/area/renderer.js +175 -0
  54. package/dist/cjs/{hooks/useShapes → core/shapes}/area/types.d.ts +7 -8
  55. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/bar-x/prepare-data.d.ts +4 -4
  56. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/bar-x/prepare-data.js +6 -6
  57. package/dist/cjs/core/shapes/bar-x/renderer.d.ts +9 -0
  58. package/dist/cjs/core/shapes/bar-x/renderer.js +104 -0
  59. package/dist/cjs/{hooks/useShapes → core/shapes}/bar-x/types.d.ts +1 -2
  60. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/bar-y/prepare-data.d.ts +3 -3
  61. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/bar-y/prepare-data.js +3 -3
  62. package/dist/cjs/core/shapes/bar-y/renderer.d.ts +6 -0
  63. package/dist/cjs/core/shapes/bar-y/renderer.js +74 -0
  64. package/dist/cjs/{hooks/useShapes → core/shapes}/bar-y/types.d.ts +1 -1
  65. package/dist/cjs/{hooks/useShapes → core/shapes}/bar-y/utils.js +1 -1
  66. package/dist/cjs/core/shapes/data-labels.d.ts +15 -0
  67. package/dist/cjs/core/shapes/data-labels.js +15 -0
  68. package/dist/cjs/{hooks/useShapes → core/shapes}/funnel/prepare-data.d.ts +1 -1
  69. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/funnel/prepare-data.js +1 -1
  70. package/dist/cjs/core/shapes/funnel/renderer.d.ts +6 -0
  71. package/dist/cjs/core/shapes/funnel/renderer.js +74 -0
  72. package/dist/cjs/{hooks/useShapes → core/shapes}/funnel/types.d.ts +2 -2
  73. package/dist/cjs/{hooks/useShapes → core/shapes}/heatmap/prepare-data.d.ts +3 -3
  74. package/dist/cjs/{hooks/useShapes → core/shapes}/heatmap/prepare-data.js +3 -2
  75. package/dist/cjs/core/shapes/heatmap/renderer.d.ts +6 -0
  76. package/dist/cjs/core/shapes/heatmap/renderer.js +50 -0
  77. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/heatmap/types.d.ts +2 -1
  78. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/line/prepare-data.d.ts +4 -4
  79. package/dist/cjs/{hooks/useShapes → core/shapes}/line/prepare-data.js +12 -4
  80. package/dist/cjs/core/shapes/line/renderer.d.ts +11 -0
  81. package/dist/cjs/core/shapes/line/renderer.js +161 -0
  82. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/line/types.d.ts +7 -8
  83. package/dist/cjs/core/shapes/marker.d.ts +45 -0
  84. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/marker.js +2 -2
  85. package/dist/cjs/{hooks/useShapes → core/shapes}/pie/prepare-data.d.ts +1 -1
  86. package/dist/cjs/{hooks/useShapes → core/shapes}/pie/prepare-data.js +3 -3
  87. package/dist/cjs/core/shapes/pie/renderer.d.ts +8 -0
  88. package/dist/cjs/core/shapes/pie/renderer.js +160 -0
  89. package/dist/cjs/{hooks/useShapes → core/shapes}/pie/types.d.ts +1 -1
  90. package/dist/cjs/{hooks/useShapes → core/shapes}/radar/prepare-data.d.ts +1 -1
  91. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/radar/prepare-data.js +2 -2
  92. package/dist/cjs/core/shapes/radar/renderer.d.ts +6 -0
  93. package/dist/cjs/core/shapes/radar/renderer.js +122 -0
  94. package/dist/cjs/{hooks/useShapes → core/shapes}/radar/types.d.ts +1 -1
  95. package/dist/cjs/{hooks/useShapes → core/shapes}/sankey/prepare-data.d.ts +1 -1
  96. package/dist/cjs/{hooks/useShapes → core/shapes}/sankey/prepare-data.js +1 -1
  97. package/dist/cjs/core/shapes/sankey/renderer.d.ts +6 -0
  98. package/dist/cjs/core/shapes/sankey/renderer.js +44 -0
  99. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/sankey/types.d.ts +1 -1
  100. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/scatter/prepare-data.d.ts +3 -3
  101. package/dist/cjs/{hooks/useShapes → core/shapes}/scatter/prepare-data.js +2 -2
  102. package/dist/cjs/core/shapes/scatter/renderer.d.ts +6 -0
  103. package/dist/cjs/core/shapes/scatter/renderer.js +52 -0
  104. package/dist/cjs/{hooks/useShapes → core/shapes}/scatter/types.d.ts +1 -1
  105. package/dist/cjs/{hooks/useShapes → core/shapes}/treemap/prepare-data.d.ts +1 -1
  106. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/treemap/prepare-data.js +3 -3
  107. package/dist/cjs/core/shapes/treemap/renderer.d.ts +6 -0
  108. package/dist/cjs/core/shapes/treemap/renderer.js +88 -0
  109. package/dist/cjs/{hooks/useShapes → core/shapes}/treemap/types.d.ts +1 -1
  110. package/dist/cjs/core/shapes/utils.d.ts +76 -0
  111. package/dist/cjs/core/shapes/utils.js +186 -0
  112. package/dist/cjs/{hooks/useShapes → core/shapes}/waterfall/prepare-data.d.ts +3 -3
  113. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/waterfall/prepare-data.js +4 -4
  114. package/dist/cjs/core/shapes/waterfall/renderer.d.ts +6 -0
  115. package/dist/cjs/core/shapes/waterfall/renderer.js +109 -0
  116. package/dist/cjs/{hooks/useShapes → core/shapes}/waterfall/types.d.ts +1 -1
  117. package/dist/cjs/{hooks/useShapes → core/shapes}/x-range/prepare-data.d.ts +3 -3
  118. package/dist/cjs/{hooks/useShapes → core/shapes}/x-range/prepare-data.js +4 -4
  119. package/dist/cjs/core/shapes/x-range/renderer.d.ts +6 -0
  120. package/dist/cjs/core/shapes/x-range/renderer.js +88 -0
  121. package/dist/cjs/{hooks/useShapes → core/shapes}/x-range/types.d.ts +1 -1
  122. package/dist/cjs/core/types/chart/area.d.ts +0 -1
  123. package/dist/cjs/core/types/chart/axis.d.ts +0 -1
  124. package/dist/cjs/core/types/chart/base.d.ts +18 -7
  125. package/dist/cjs/core/types/chart/tooltip.d.ts +3 -3
  126. package/dist/cjs/core/types/formatter.d.ts +1 -40
  127. package/dist/{esm/hooks/utils/get-band-size.js → cjs/core/utils/band-size.js} +1 -1
  128. package/dist/cjs/{hooks → core}/utils/bar-y.d.ts +3 -3
  129. package/dist/{esm/hooks → cjs/core}/utils/bar-y.js +4 -4
  130. package/dist/cjs/core/utils/format.d.ts +2 -2
  131. package/dist/cjs/core/utils/get-closest-data.d.ts +1 -1
  132. package/dist/cjs/core/utils/get-closest-data.js +13 -8
  133. package/dist/cjs/core/utils/series/sorting.js +1 -1
  134. package/dist/cjs/core/utils/text.d.ts +0 -1
  135. package/dist/cjs/core/utils/text.js +0 -1
  136. package/dist/cjs/core/zoom/index.d.ts +2 -0
  137. package/dist/cjs/core/zoom/index.js +2 -0
  138. package/dist/{esm/hooks/useZoom → cjs/core/zoom}/utils.d.ts +3 -3
  139. package/dist/{esm/hooks/useZoom → cjs/core/zoom}/utils.js +1 -1
  140. package/dist/cjs/core/zoom/zoom.d.ts +3 -3
  141. package/dist/cjs/hooks/index.d.ts +3 -3
  142. package/dist/cjs/hooks/index.js +3 -3
  143. package/dist/cjs/hooks/types.d.ts +2 -8
  144. package/dist/cjs/hooks/useBrush/index.d.ts +1 -1
  145. package/dist/cjs/hooks/useBrush/index.js +1 -1
  146. package/dist/cjs/hooks/useRangeSlider/index.js +3 -3
  147. package/dist/cjs/hooks/useRangeSlider/types.d.ts +6 -8
  148. package/dist/cjs/hooks/useShapes/area/index.d.ts +2 -2
  149. package/dist/cjs/hooks/useShapes/area/index.js +13 -185
  150. package/dist/cjs/hooks/useShapes/bar-x/index.d.ts +4 -4
  151. package/dist/cjs/hooks/useShapes/bar-x/index.js +10 -119
  152. package/dist/cjs/hooks/useShapes/bar-y/index.d.ts +3 -3
  153. package/dist/cjs/hooks/useShapes/bar-y/index.js +5 -84
  154. package/dist/cjs/hooks/useShapes/funnel/index.d.ts +4 -4
  155. package/dist/cjs/hooks/useShapes/funnel/index.js +4 -83
  156. package/dist/cjs/hooks/useShapes/heatmap/index.d.ts +4 -4
  157. package/dist/cjs/hooks/useShapes/heatmap/index.js +4 -59
  158. package/dist/cjs/hooks/useShapes/index.d.ts +15 -16
  159. package/dist/cjs/hooks/useShapes/index.js +13 -13
  160. package/dist/cjs/hooks/useShapes/line/index.d.ts +2 -2
  161. package/dist/cjs/hooks/useShapes/line/index.js +14 -172
  162. package/dist/cjs/hooks/useShapes/pie/index.d.ts +3 -5
  163. package/dist/cjs/hooks/useShapes/pie/index.js +3 -158
  164. package/dist/cjs/hooks/useShapes/radar/index.d.ts +2 -2
  165. package/dist/cjs/hooks/useShapes/radar/index.js +2 -121
  166. package/dist/cjs/hooks/useShapes/sankey/index.d.ts +2 -2
  167. package/dist/cjs/hooks/useShapes/sankey/index.js +2 -51
  168. package/dist/cjs/hooks/useShapes/scatter/index.d.ts +3 -3
  169. package/dist/cjs/hooks/useShapes/scatter/index.js +3 -58
  170. package/dist/cjs/hooks/useShapes/treemap/index.d.ts +2 -2
  171. package/dist/cjs/hooks/useShapes/treemap/index.js +2 -88
  172. package/dist/cjs/hooks/useShapes/utils.d.ts +3 -53
  173. package/dist/cjs/hooks/useShapes/utils.js +3 -140
  174. package/dist/cjs/hooks/useShapes/waterfall/index.d.ts +4 -4
  175. package/dist/cjs/hooks/useShapes/waterfall/index.js +6 -119
  176. package/dist/cjs/hooks/useShapes/x-range/index.d.ts +4 -4
  177. package/dist/cjs/hooks/useShapes/x-range/index.js +3 -98
  178. package/dist/cjs/hooks/useZoom/index.d.ts +1 -1
  179. package/dist/cjs/hooks/useZoom/index.js +1 -1
  180. package/dist/cjs/index.d.ts +1 -0
  181. package/dist/cjs/index.js +1 -0
  182. package/dist/cjs/libs/format-number/index.js +82 -14
  183. package/dist/cjs/libs/format-number/presets.d.ts +40 -0
  184. package/dist/cjs/libs/format-number/presets.js +66 -0
  185. package/dist/cjs/libs/format-number/types.d.ts +82 -3
  186. package/dist/cjs/setup-jsdom.js +7 -0
  187. package/dist/esm/components/ChartInner/index.js +1 -0
  188. package/dist/esm/components/ChartInner/useChartInnerProps.d.ts +1 -0
  189. package/dist/esm/components/ChartInner/useChartInnerProps.js +13 -6
  190. package/dist/esm/components/Legend/index.js +13 -14
  191. package/dist/esm/components/Tooltip/index.js +22 -1
  192. package/dist/esm/core/axes/x-axis.js +1 -1
  193. package/dist/esm/core/axes/y-axis.js +1 -1
  194. package/dist/esm/core/brush/index.d.ts +2 -0
  195. package/dist/esm/core/brush/index.js +2 -0
  196. package/dist/esm/{hooks/useBrush → core/brush}/types.d.ts +2 -2
  197. package/dist/esm/{hooks/useBrush → core/brush}/utils.d.ts +1 -1
  198. package/dist/esm/core/chart/index.d.ts +1 -0
  199. package/dist/esm/core/chart/index.js +1 -0
  200. package/dist/esm/core/chart/types.d.ts +8 -0
  201. package/dist/esm/core/index.d.ts +3 -0
  202. package/dist/esm/core/index.js +3 -0
  203. package/dist/esm/core/layout/chart-dimensions.d.ts +1 -1
  204. package/dist/esm/core/range-slider/index.d.ts +2 -0
  205. package/dist/esm/core/range-slider/index.js +2 -0
  206. package/dist/esm/core/range-slider/types.d.ts +4 -0
  207. package/dist/{cjs/hooks/useRangeSlider → esm/core/range-slider}/utils.d.ts +5 -5
  208. package/dist/{cjs/hooks/useRangeSlider → esm/core/range-slider}/utils.js +1 -1
  209. package/dist/esm/core/scales/utils.d.ts +1 -1
  210. package/dist/esm/core/scales/utils.js +1 -1
  211. package/dist/esm/core/scales/x-scale.d.ts +2 -2
  212. package/dist/esm/core/scales/x-scale.js +2 -2
  213. package/dist/esm/core/scales/y-scale.js +69 -4
  214. package/dist/esm/core/series/prepare-area.js +1 -1
  215. package/dist/esm/core/series/prepare-bar-x.js +1 -1
  216. package/dist/esm/core/series/prepare-bar-y.js +1 -1
  217. package/dist/esm/core/series/prepare-funnel.js +1 -1
  218. package/dist/esm/core/series/prepare-heatmap.js +1 -1
  219. package/dist/esm/core/series/prepare-legend.d.ts +1 -1
  220. package/dist/esm/core/series/prepare-legend.js +2 -2
  221. package/dist/esm/core/series/prepare-line.js +1 -1
  222. package/dist/esm/core/series/prepare-pie.js +1 -1
  223. package/dist/esm/core/series/prepare-radar.js +1 -1
  224. package/dist/esm/core/series/prepare-sankey.js +1 -1
  225. package/dist/esm/core/series/prepare-scatter.js +1 -1
  226. package/dist/esm/core/series/prepare-treemap.js +1 -1
  227. package/dist/esm/core/series/prepare-waterfall.js +1 -1
  228. package/dist/esm/core/series/prepare-x-range.js +1 -1
  229. package/dist/esm/core/series/prepareSeries.d.ts +7 -1
  230. package/dist/esm/core/series/prepareSeries.js +31 -0
  231. package/dist/esm/core/series/types.d.ts +5 -0
  232. package/dist/esm/core/series/utils.d.ts +4 -0
  233. package/dist/esm/core/series/utils.js +9 -1
  234. package/dist/esm/{hooks/useShapes/annotation/index.d.ts → core/shapes/annotation.d.ts} +1 -7
  235. package/dist/esm/{hooks/useShapes/annotation/index.js → core/shapes/annotation.js} +2 -2
  236. package/dist/esm/{hooks/useShapes → core/shapes}/area/prepare-data.d.ts +4 -4
  237. package/dist/esm/{hooks/useShapes → core/shapes}/area/prepare-data.js +9 -4
  238. package/dist/esm/core/shapes/area/renderer.d.ts +11 -0
  239. package/dist/esm/core/shapes/area/renderer.js +175 -0
  240. package/dist/esm/{hooks/useShapes → core/shapes}/area/types.d.ts +7 -8
  241. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/bar-x/prepare-data.d.ts +4 -4
  242. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/bar-x/prepare-data.js +6 -6
  243. package/dist/esm/core/shapes/bar-x/renderer.d.ts +9 -0
  244. package/dist/esm/core/shapes/bar-x/renderer.js +104 -0
  245. package/dist/esm/{hooks/useShapes → core/shapes}/bar-x/types.d.ts +1 -2
  246. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/bar-y/prepare-data.d.ts +3 -3
  247. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/bar-y/prepare-data.js +3 -3
  248. package/dist/esm/core/shapes/bar-y/renderer.d.ts +6 -0
  249. package/dist/esm/core/shapes/bar-y/renderer.js +74 -0
  250. package/dist/esm/{hooks/useShapes → core/shapes}/bar-y/types.d.ts +1 -1
  251. package/dist/esm/{hooks/useShapes → core/shapes}/bar-y/utils.js +1 -1
  252. package/dist/esm/core/shapes/data-labels.d.ts +15 -0
  253. package/dist/esm/core/shapes/data-labels.js +15 -0
  254. package/dist/esm/{hooks/useShapes → core/shapes}/funnel/prepare-data.d.ts +1 -1
  255. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/funnel/prepare-data.js +1 -1
  256. package/dist/esm/core/shapes/funnel/renderer.d.ts +6 -0
  257. package/dist/esm/core/shapes/funnel/renderer.js +74 -0
  258. package/dist/esm/{hooks/useShapes → core/shapes}/funnel/types.d.ts +2 -2
  259. package/dist/esm/{hooks/useShapes → core/shapes}/heatmap/prepare-data.d.ts +3 -3
  260. package/dist/esm/{hooks/useShapes → core/shapes}/heatmap/prepare-data.js +3 -2
  261. package/dist/esm/core/shapes/heatmap/renderer.d.ts +6 -0
  262. package/dist/esm/core/shapes/heatmap/renderer.js +50 -0
  263. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/heatmap/types.d.ts +2 -1
  264. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/line/prepare-data.d.ts +4 -4
  265. package/dist/esm/{hooks/useShapes → core/shapes}/line/prepare-data.js +12 -4
  266. package/dist/esm/core/shapes/line/renderer.d.ts +11 -0
  267. package/dist/esm/core/shapes/line/renderer.js +161 -0
  268. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/line/types.d.ts +7 -8
  269. package/dist/esm/core/shapes/marker.d.ts +45 -0
  270. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/marker.js +2 -2
  271. package/dist/esm/{hooks/useShapes → core/shapes}/pie/prepare-data.d.ts +1 -1
  272. package/dist/esm/{hooks/useShapes → core/shapes}/pie/prepare-data.js +3 -3
  273. package/dist/esm/core/shapes/pie/renderer.d.ts +8 -0
  274. package/dist/esm/core/shapes/pie/renderer.js +160 -0
  275. package/dist/esm/{hooks/useShapes → core/shapes}/pie/types.d.ts +1 -1
  276. package/dist/esm/{hooks/useShapes → core/shapes}/radar/prepare-data.d.ts +1 -1
  277. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/radar/prepare-data.js +2 -2
  278. package/dist/esm/core/shapes/radar/renderer.d.ts +6 -0
  279. package/dist/esm/core/shapes/radar/renderer.js +122 -0
  280. package/dist/esm/{hooks/useShapes → core/shapes}/radar/types.d.ts +1 -1
  281. package/dist/esm/{hooks/useShapes → core/shapes}/sankey/prepare-data.d.ts +1 -1
  282. package/dist/esm/{hooks/useShapes → core/shapes}/sankey/prepare-data.js +1 -1
  283. package/dist/esm/core/shapes/sankey/renderer.d.ts +6 -0
  284. package/dist/esm/core/shapes/sankey/renderer.js +44 -0
  285. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/sankey/types.d.ts +1 -1
  286. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/scatter/prepare-data.d.ts +3 -3
  287. package/dist/esm/{hooks/useShapes → core/shapes}/scatter/prepare-data.js +2 -2
  288. package/dist/esm/core/shapes/scatter/renderer.d.ts +6 -0
  289. package/dist/esm/core/shapes/scatter/renderer.js +52 -0
  290. package/dist/esm/{hooks/useShapes → core/shapes}/scatter/types.d.ts +1 -1
  291. package/dist/esm/{hooks/useShapes → core/shapes}/treemap/prepare-data.d.ts +1 -1
  292. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/treemap/prepare-data.js +3 -3
  293. package/dist/esm/core/shapes/treemap/renderer.d.ts +6 -0
  294. package/dist/esm/core/shapes/treemap/renderer.js +88 -0
  295. package/dist/esm/{hooks/useShapes → core/shapes}/treemap/types.d.ts +1 -1
  296. package/dist/esm/core/shapes/treemap/types.js +1 -0
  297. package/dist/esm/core/shapes/utils.d.ts +76 -0
  298. package/dist/esm/core/shapes/utils.js +186 -0
  299. package/dist/esm/{hooks/useShapes → core/shapes}/waterfall/prepare-data.d.ts +3 -3
  300. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/waterfall/prepare-data.js +4 -4
  301. package/dist/esm/core/shapes/waterfall/renderer.d.ts +6 -0
  302. package/dist/esm/core/shapes/waterfall/renderer.js +109 -0
  303. package/dist/esm/{hooks/useShapes → core/shapes}/waterfall/types.d.ts +1 -1
  304. package/dist/esm/core/shapes/waterfall/types.js +1 -0
  305. package/dist/esm/{hooks/useShapes → core/shapes}/x-range/prepare-data.d.ts +3 -3
  306. package/dist/esm/{hooks/useShapes → core/shapes}/x-range/prepare-data.js +4 -4
  307. package/dist/esm/core/shapes/x-range/renderer.d.ts +6 -0
  308. package/dist/esm/core/shapes/x-range/renderer.js +88 -0
  309. package/dist/esm/{hooks/useShapes → core/shapes}/x-range/types.d.ts +1 -1
  310. package/dist/esm/core/shapes/x-range/types.js +1 -0
  311. package/dist/esm/core/types/chart/area.d.ts +0 -1
  312. package/dist/esm/core/types/chart/axis.d.ts +0 -1
  313. package/dist/esm/core/types/chart/base.d.ts +18 -7
  314. package/dist/esm/core/types/chart/tooltip.d.ts +3 -3
  315. package/dist/esm/core/types/formatter.d.ts +1 -40
  316. package/dist/{cjs/hooks/utils/get-band-size.js → esm/core/utils/band-size.js} +1 -1
  317. package/dist/esm/{hooks → core}/utils/bar-y.d.ts +3 -3
  318. package/dist/{cjs/hooks → esm/core}/utils/bar-y.js +4 -4
  319. package/dist/esm/core/utils/format.d.ts +2 -2
  320. package/dist/esm/core/utils/get-closest-data.d.ts +1 -1
  321. package/dist/esm/core/utils/get-closest-data.js +13 -8
  322. package/dist/esm/core/utils/series/sorting.js +1 -1
  323. package/dist/esm/core/utils/text.d.ts +0 -1
  324. package/dist/esm/core/utils/text.js +0 -1
  325. package/dist/esm/core/zoom/index.d.ts +2 -0
  326. package/dist/esm/core/zoom/index.js +2 -0
  327. package/dist/esm/core/zoom/types.js +1 -0
  328. package/dist/{cjs/hooks/useZoom → esm/core/zoom}/utils.d.ts +3 -3
  329. package/dist/{cjs/hooks/useZoom → esm/core/zoom}/utils.js +1 -1
  330. package/dist/esm/core/zoom/zoom.d.ts +3 -3
  331. package/dist/esm/hooks/index.d.ts +3 -3
  332. package/dist/esm/hooks/index.js +3 -3
  333. package/dist/esm/hooks/types.d.ts +2 -8
  334. package/dist/esm/hooks/useBrush/index.d.ts +1 -1
  335. package/dist/esm/hooks/useBrush/index.js +1 -1
  336. package/dist/esm/hooks/useRangeSlider/index.js +3 -3
  337. package/dist/esm/hooks/useRangeSlider/types.d.ts +6 -8
  338. package/dist/esm/hooks/useShapes/area/index.d.ts +2 -2
  339. package/dist/esm/hooks/useShapes/area/index.js +13 -185
  340. package/dist/esm/hooks/useShapes/bar-x/index.d.ts +4 -4
  341. package/dist/esm/hooks/useShapes/bar-x/index.js +10 -119
  342. package/dist/esm/hooks/useShapes/bar-y/index.d.ts +3 -3
  343. package/dist/esm/hooks/useShapes/bar-y/index.js +5 -84
  344. package/dist/esm/hooks/useShapes/funnel/index.d.ts +4 -4
  345. package/dist/esm/hooks/useShapes/funnel/index.js +4 -83
  346. package/dist/esm/hooks/useShapes/heatmap/index.d.ts +4 -4
  347. package/dist/esm/hooks/useShapes/heatmap/index.js +4 -59
  348. package/dist/esm/hooks/useShapes/index.d.ts +15 -16
  349. package/dist/esm/hooks/useShapes/index.js +13 -13
  350. package/dist/esm/hooks/useShapes/line/index.d.ts +2 -2
  351. package/dist/esm/hooks/useShapes/line/index.js +14 -172
  352. package/dist/esm/hooks/useShapes/pie/index.d.ts +3 -5
  353. package/dist/esm/hooks/useShapes/pie/index.js +3 -158
  354. package/dist/esm/hooks/useShapes/radar/index.d.ts +2 -2
  355. package/dist/esm/hooks/useShapes/radar/index.js +2 -121
  356. package/dist/esm/hooks/useShapes/sankey/index.d.ts +2 -2
  357. package/dist/esm/hooks/useShapes/sankey/index.js +2 -51
  358. package/dist/esm/hooks/useShapes/scatter/index.d.ts +3 -3
  359. package/dist/esm/hooks/useShapes/scatter/index.js +3 -58
  360. package/dist/esm/hooks/useShapes/treemap/index.d.ts +2 -2
  361. package/dist/esm/hooks/useShapes/treemap/index.js +2 -88
  362. package/dist/esm/hooks/useShapes/utils.d.ts +3 -53
  363. package/dist/esm/hooks/useShapes/utils.js +3 -140
  364. package/dist/esm/hooks/useShapes/waterfall/index.d.ts +4 -4
  365. package/dist/esm/hooks/useShapes/waterfall/index.js +6 -119
  366. package/dist/esm/hooks/useShapes/x-range/index.d.ts +4 -4
  367. package/dist/esm/hooks/useShapes/x-range/index.js +3 -98
  368. package/dist/esm/hooks/useZoom/index.d.ts +1 -1
  369. package/dist/esm/hooks/useZoom/index.js +1 -1
  370. package/dist/esm/index.d.ts +1 -0
  371. package/dist/esm/index.js +1 -0
  372. package/dist/esm/libs/format-number/index.js +82 -14
  373. package/dist/esm/libs/format-number/presets.d.ts +40 -0
  374. package/dist/esm/libs/format-number/presets.js +66 -0
  375. package/dist/esm/libs/format-number/types.d.ts +82 -3
  376. package/dist/esm/setup-jsdom.js +7 -0
  377. package/package.json +5 -2
  378. package/dist/cjs/hooks/useSeries/index.d.ts +0 -12
  379. package/dist/cjs/hooks/useSeries/index.js +0 -40
  380. package/dist/cjs/hooks/useSeries/types.d.ts +0 -1
  381. package/dist/cjs/hooks/useSeries/types.js +0 -1
  382. package/dist/cjs/hooks/useSeries/utils.d.ts +0 -1
  383. package/dist/cjs/hooks/useSeries/utils.js +0 -1
  384. package/dist/cjs/hooks/useShapes/marker.d.ts +0 -15
  385. package/dist/cjs/hooks/utils/index.d.ts +0 -1
  386. package/dist/cjs/hooks/utils/index.js +0 -1
  387. package/dist/esm/hooks/useSeries/index.d.ts +0 -12
  388. package/dist/esm/hooks/useSeries/index.js +0 -40
  389. package/dist/esm/hooks/useSeries/types.d.ts +0 -1
  390. package/dist/esm/hooks/useSeries/types.js +0 -1
  391. package/dist/esm/hooks/useSeries/utils.d.ts +0 -1
  392. package/dist/esm/hooks/useSeries/utils.js +0 -1
  393. package/dist/esm/hooks/useShapes/marker.d.ts +0 -15
  394. package/dist/esm/hooks/utils/index.d.ts +0 -1
  395. package/dist/esm/hooks/utils/index.js +0 -1
  396. /package/dist/cjs/{hooks/useBrush → core/brush}/types.js +0 -0
  397. /package/dist/cjs/{hooks/useBrush → core/brush}/utils.js +0 -0
  398. /package/dist/cjs/{hooks/useShapes/area → core/chart}/types.js +0 -0
  399. /package/dist/cjs/{hooks/useShapes/bar-x → core/range-slider}/types.js +0 -0
  400. /package/dist/cjs/{hooks/useShapes/bar-y → core/shapes/area}/types.js +0 -0
  401. /package/dist/cjs/{hooks/constants.d.ts → core/shapes/bar-constants.d.ts} +0 -0
  402. /package/dist/cjs/{hooks/constants.js → core/shapes/bar-constants.js} +0 -0
  403. /package/dist/cjs/{hooks/useShapes/funnel → core/shapes/bar-x}/types.js +0 -0
  404. /package/dist/cjs/{hooks/useShapes/heatmap → core/shapes/bar-y}/types.js +0 -0
  405. /package/dist/cjs/{hooks/useShapes → core/shapes}/bar-y/utils.d.ts +0 -0
  406. /package/dist/cjs/{hooks/useShapes/line → core/shapes/funnel}/types.js +0 -0
  407. /package/dist/cjs/{hooks/useShapes/pie → core/shapes/heatmap}/types.js +0 -0
  408. /package/dist/cjs/{hooks/useShapes/radar → core/shapes/line}/types.js +0 -0
  409. /package/dist/cjs/{hooks/useShapes/sankey → core/shapes/pie}/types.js +0 -0
  410. /package/dist/cjs/{hooks/useShapes → core/shapes}/pie/utils.d.ts +0 -0
  411. /package/dist/cjs/{hooks/useShapes → core/shapes}/pie/utils.js +0 -0
  412. /package/dist/cjs/{hooks/useShapes/scatter → core/shapes/radar}/types.js +0 -0
  413. /package/dist/cjs/{hooks/useShapes → core/shapes}/sankey/sankey-layout.d.ts +0 -0
  414. /package/dist/cjs/{hooks/useShapes → core/shapes}/sankey/sankey-layout.js +0 -0
  415. /package/dist/cjs/{hooks/useShapes/treemap → core/shapes/sankey}/types.js +0 -0
  416. /package/dist/cjs/{hooks/useShapes/waterfall → core/shapes/scatter}/types.js +0 -0
  417. /package/dist/cjs/{hooks/useShapes/x-range → core/shapes/treemap}/types.js +0 -0
  418. /package/dist/cjs/{hooks/useZoom → core/shapes/waterfall}/types.js +0 -0
  419. /package/dist/{esm/hooks/useBrush → cjs/core/shapes/x-range}/types.js +0 -0
  420. /package/dist/cjs/{hooks/utils/get-band-size.d.ts → core/utils/band-size.d.ts} +0 -0
  421. /package/dist/cjs/{hooks/useZoom → core/zoom}/types.d.ts +0 -0
  422. /package/dist/{esm/hooks/useShapes/area → cjs/core/zoom}/types.js +0 -0
  423. /package/dist/esm/{hooks/useShapes/bar-x → core/brush}/types.js +0 -0
  424. /package/dist/esm/{hooks/useBrush → core/brush}/utils.js +0 -0
  425. /package/dist/esm/{hooks/useShapes/bar-y → core/chart}/types.js +0 -0
  426. /package/dist/esm/{hooks/useShapes/funnel → core/range-slider}/types.js +0 -0
  427. /package/dist/esm/{hooks/useShapes/heatmap → core/shapes/area}/types.js +0 -0
  428. /package/dist/esm/{hooks/constants.d.ts → core/shapes/bar-constants.d.ts} +0 -0
  429. /package/dist/esm/{hooks/constants.js → core/shapes/bar-constants.js} +0 -0
  430. /package/dist/esm/{hooks/useShapes/line → core/shapes/bar-x}/types.js +0 -0
  431. /package/dist/esm/{hooks/useShapes/pie → core/shapes/bar-y}/types.js +0 -0
  432. /package/dist/esm/{hooks/useShapes → core/shapes}/bar-y/utils.d.ts +0 -0
  433. /package/dist/esm/{hooks/useShapes/radar → core/shapes/funnel}/types.js +0 -0
  434. /package/dist/esm/{hooks/useShapes/sankey → core/shapes/heatmap}/types.js +0 -0
  435. /package/dist/esm/{hooks/useShapes/scatter → core/shapes/line}/types.js +0 -0
  436. /package/dist/esm/{hooks/useShapes/treemap → core/shapes/pie}/types.js +0 -0
  437. /package/dist/esm/{hooks/useShapes → core/shapes}/pie/utils.d.ts +0 -0
  438. /package/dist/esm/{hooks/useShapes → core/shapes}/pie/utils.js +0 -0
  439. /package/dist/esm/{hooks/useShapes/waterfall → core/shapes/radar}/types.js +0 -0
  440. /package/dist/esm/{hooks/useShapes → core/shapes}/sankey/sankey-layout.d.ts +0 -0
  441. /package/dist/esm/{hooks/useShapes → core/shapes}/sankey/sankey-layout.js +0 -0
  442. /package/dist/esm/{hooks/useShapes/x-range → core/shapes/sankey}/types.js +0 -0
  443. /package/dist/esm/{hooks/useZoom → core/shapes/scatter}/types.js +0 -0
  444. /package/dist/esm/{hooks/utils/get-band-size.d.ts → core/utils/band-size.d.ts} +0 -0
  445. /package/dist/esm/{hooks/useZoom → core/zoom}/types.d.ts +0 -0
@@ -1,40 +1 @@
1
- export interface FormatOptions {
2
- /**
3
- * Number of decimal places to display.
4
- * Use `'auto'` to determine precision automatically based on the value magnitude.
5
- */
6
- precision?: number | 'auto';
7
- /** When `true`, inserts a thousands separator (e.g. `1 500 000`). */
8
- showRankDelimiter?: boolean;
9
- /**
10
- * BCP 47 language tag used for locale-aware formatting (e.g. `'en'`, `'ru'`).
11
- * Defaults to the application locale when omitted.
12
- */
13
- lang?: string;
14
- /** Internal rendering hint for axis label layout. Not intended for public use. */
15
- labelMode?: string;
16
- }
17
- export interface FormatNumberOptions extends FormatOptions {
18
- /**
19
- * Display mode for the numeric value.
20
- * - `'number'` — plain number (default).
21
- * - `'percent'` — value is multiplied by 100 and rendered with a `%` suffix.
22
- */
23
- format?: 'number' | 'percent';
24
- /** Factor applied to the value before formatting. For example, `multiplier: 1000` converts seconds to milliseconds. */
25
- multiplier?: number;
26
- /** String prepended to the formatted value (e.g. `'$'`). */
27
- prefix?: string;
28
- /** String appended to the formatted value (e.g. `' USD'`). */
29
- postfix?: string;
30
- /**
31
- * Compact unit suffix applied to large numbers.
32
- * - `'auto'` — picks the most appropriate unit automatically (`k`, `m`, `b`, `t`).
33
- * - `'k'` — thousands (÷ 1 000).
34
- * - `'m'` — millions (÷ 1 000 000).
35
- * - `'b'` — billions (÷ 1 000 000 000).
36
- * - `'t'` — trillions (÷ 1 000 000 000 000).
37
- * - `null` — no unit suffix.
38
- */
39
- unit?: 'auto' | 'k' | 'm' | 'b' | 't' | null;
40
- }
1
+ export type { FormatNumberOptions, FormatOptions, FormatUnitScale, FormatUnitScaleEntry, } from '../../libs/format-number/types';
@@ -1,4 +1,4 @@
1
- import { isBandScale } from '../../core/utils';
1
+ import { isBandScale } from '../utils';
2
2
  export function getBandSize({ domain, scale, }) {
3
3
  if (!scale || !domain.length) {
4
4
  return 0;
@@ -1,7 +1,7 @@
1
- import type { ChartScale } from '../../core/scales/types';
2
1
  import type { BarYSeries, BarYSeriesData } from '../../types';
3
- import type { PreparedYAxis } from '../useAxis/types';
4
- import type { PreparedBarYSeries, PreparedSeriesOptions } from '../useSeries/types';
2
+ import type { PreparedYAxis } from '../axes/types';
3
+ import type { ChartScale } from '../scales/types';
4
+ import type { PreparedBarYSeries, PreparedSeriesOptions } from '../series/types';
5
5
  /**
6
6
  * BarY always filters out data with null or replace null by zero.
7
7
  */
@@ -1,9 +1,9 @@
1
1
  import { max } from 'd3-array';
2
2
  import get from 'lodash/get';
3
- import { getDataCategoryValue } from '../../core/utils';
4
- import { MIN_BAR_GAP, MIN_BAR_GROUP_GAP, MIN_BAR_WIDTH } from '../constants';
5
- import { getSeriesStackId } from '../useSeries/utils';
6
- import { getBandSize } from './get-band-size';
3
+ import { getSeriesStackId } from '../series/utils';
4
+ import { MIN_BAR_GAP, MIN_BAR_GROUP_GAP, MIN_BAR_WIDTH } from '../shapes/bar-constants';
5
+ import { getDataCategoryValue } from '../utils';
6
+ import { getBandSize } from './band-size';
7
7
  const isSeriesDataValid = (d) => d.x !== null;
8
8
  export function groupBarYDataByYValue(series, yAxis) {
9
9
  const data = {};
@@ -1,9 +1,9 @@
1
1
  import type { AxisDomain } from 'd3-axis';
2
- import type { CustomFormat, ValueFormat } from '../../types';
2
+ import type { ValueFormat } from '../../types';
3
3
  import type { PreparedAxis } from '../axes/types';
4
4
  export declare function getFormattedValue(args: {
5
5
  value: string | number | undefined | null;
6
- format?: ValueFormat | CustomFormat;
6
+ format?: ValueFormat;
7
7
  }): string;
8
8
  export declare function formatAxisTickLabel(args: {
9
9
  axis: PreparedAxis;
@@ -1,4 +1,4 @@
1
- import type { ShapeData } from '../../hooks';
1
+ import type { ShapeData } from '../../hooks/useShapes';
2
2
  import type { ChartSeries, ChartSeriesData, TooltipDataChunk } from '../../types';
3
3
  type GetClosestPointsArgs = {
4
4
  position: [number, number];
@@ -68,7 +68,7 @@ export function getClosestPoints(args) {
68
68
  case 'line': {
69
69
  const linePoints = list.reduce((acc, d) => {
70
70
  acc.push(...d.points.reduce((accPoints, p) => {
71
- if (p.y !== null && p.x !== null) {
71
+ if (p.y !== null && p.x !== null && !p.hiddenInLine) {
72
72
  accPoints.push({
73
73
  data: p.data,
74
74
  series: p.series,
@@ -86,13 +86,18 @@ export function getClosestPoints(args) {
86
86
  }
87
87
  case 'area': {
88
88
  const areaPoints = list.reduce((acc, d) => {
89
- Array.prototype.push.apply(acc, d.points.map((p) => ({
90
- data: p.data,
91
- series: p.series,
92
- x: p.x,
93
- y0: p.y0,
94
- y1: p.y,
95
- })));
89
+ for (const p of d.points) {
90
+ if (p.y === null || p.hiddenInLine) {
91
+ continue;
92
+ }
93
+ acc.push({
94
+ data: p.data,
95
+ series: p.series,
96
+ x: p.x,
97
+ y0: p.y0,
98
+ y1: p.y,
99
+ });
100
+ }
96
101
  return acc;
97
102
  }, []);
98
103
  closestPointsByXValue.push(...areaPoints);
@@ -1,8 +1,8 @@
1
1
  import { sort } from 'd3-array';
2
2
  import { isEmpty } from 'lodash';
3
3
  import get from 'lodash/get';
4
- import { getAxisCategories } from '../../utils';
5
4
  import { SERIES_TYPE } from '../../constants';
5
+ import { getAxisCategories } from '../../utils';
6
6
  function applyAxisCategoriesOrder({ series, axis, key, }) {
7
7
  var _a, _b;
8
8
  const originalCategories = (_a = axis === null || axis === void 0 ? void 0 : axis.categories) !== null && _a !== void 0 ? _a : [];
@@ -4,7 +4,6 @@ import type { BaseTextStyle, MeaningfulAny } from '../../types';
4
4
  * Approximate ratio of descenders relative to the full font em height.
5
5
  * Based on the Chromium hanging baseline algorithm where hanging offset ≈ ascent × 0.2.
6
6
  * This means ascent ≈ 80% of em height, descenders ≈ 20%.
7
- *
8
7
  * @see https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/html/canvas/text_metrics.cc;l=32
9
8
  */
10
9
  export declare const DESCENDER_RATIO = 0.2;
@@ -5,7 +5,6 @@ const b = block('chart');
5
5
  * Approximate ratio of descenders relative to the full font em height.
6
6
  * Based on the Chromium hanging baseline algorithm where hanging offset ≈ ascent × 0.2.
7
7
  * This means ascent ≈ 80% of em height, descenders ≈ 20%.
8
- *
9
8
  * @see https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/html/canvas/text_metrics.cc;l=32
10
9
  */
11
10
  export const DESCENDER_RATIO = 0.2;
@@ -1 +1,3 @@
1
+ export * from './types';
2
+ export * from './utils';
1
3
  export * from './zoom';
@@ -1 +1,3 @@
1
+ export * from './types';
2
+ export * from './utils';
1
3
  export * from './zoom';
@@ -1,7 +1,7 @@
1
1
  import type { BrushSelection } from 'd3-brush';
2
- import type { ZoomType } from '../../core/constants';
3
- import type { ChartScale } from '../../core/scales/types';
4
- import type { PreparedXAxis, PreparedYAxis } from '../useAxis/types';
2
+ import type { PreparedXAxis, PreparedYAxis } from '../axes/types';
3
+ import type { ZoomType } from '../constants';
4
+ import type { ChartScale } from '../scales/types';
5
5
  import type { ZoomState } from './types';
6
6
  export declare function selectionToZoomBounds(args: {
7
7
  selection: BrushSelection;
@@ -1,4 +1,4 @@
1
- import { ZOOM_TYPE } from '../../core/constants';
1
+ import { ZOOM_TYPE } from '../constants';
2
2
  export function selectionToZoomBounds(args) {
3
3
  const { selection, xAxis, xScale, yAxes, yScales, zoomType } = args;
4
4
  const zoomState = {};
@@ -1,8 +1,8 @@
1
- import type { RangeSliderState } from '../../hooks';
2
- import type { ZoomState } from '../../hooks/useZoom/types';
3
- import type { ChartXAxis, ChartYAxis } from '../../types';
4
1
  import type { PreparedXAxis, PreparedYAxis } from '../axes/types';
2
+ import type { RangeSliderState } from '../range-slider/types';
5
3
  import type { PreparedSeries } from '../series';
4
+ import type { ChartXAxis, ChartYAxis } from '../types';
5
+ import type { ZoomState } from './types';
6
6
  export declare function getZoomedSeriesData(args: {
7
7
  seriesData: PreparedSeries[];
8
8
  zoomState: Partial<ZoomState>;
@@ -3,17 +3,17 @@ export * from '../core/axes/types';
3
3
  export * from './useAxisScales';
4
4
  export * from '../core/scales/types';
5
5
  export * from './useBrush';
6
- export * from './useBrush/types';
6
+ export * from '../core/brush/types';
7
7
  export * from './useCrosshair';
8
8
  export * from './usePrevious';
9
9
  export * from './useRangeSlider';
10
10
  export * from './useRangeSlider/types';
11
- export * from './useSeries';
11
+ export { getPreparedSeries, getVisibleSeries } from '../core/series';
12
12
  export * from '../core/series/types';
13
13
  export * from './useShapes';
14
14
  export * from '../core/layout/split';
15
15
  export * from '../core/layout/split-types';
16
16
  export * from './useTooltip';
17
17
  export * from './useZoom';
18
- export * from './useZoom/types';
18
+ export * from '../core/zoom/types';
19
19
  export * from './types';
@@ -3,17 +3,17 @@ export * from '../core/axes/types';
3
3
  export * from './useAxisScales';
4
4
  export * from '../core/scales/types';
5
5
  export * from './useBrush';
6
- export * from './useBrush/types';
6
+ export * from '../core/brush/types';
7
7
  export * from './useCrosshair';
8
8
  export * from './usePrevious';
9
9
  export * from './useRangeSlider';
10
10
  export * from './useRangeSlider/types';
11
- export * from './useSeries';
11
+ export { getPreparedSeries, getVisibleSeries } from '../core/series';
12
12
  export * from '../core/series/types';
13
13
  export * from './useShapes';
14
14
  export * from '../core/layout/split';
15
15
  export * from '../core/layout/split-types';
16
16
  export * from './useTooltip';
17
17
  export * from './useZoom';
18
- export * from './useZoom/types';
18
+ export * from '../core/zoom/types';
19
19
  export * from './types';
@@ -1,13 +1,7 @@
1
1
  import type { TextRowData } from '../components/types';
2
- import type { BaseTextStyle, ChartBrush, ChartData, ChartMargin, ChartTitle, ChartZoom, DeepRequired } from '../types';
2
+ import type { BaseTextStyle, ChartData, ChartTitle } from '../types';
3
3
  import type { HtmlItem } from '../types/chart-ui';
4
- export type PreparedZoom = DeepRequired<Omit<ChartZoom, 'enabled' | 'brush'>> & DeepRequired<{
5
- brush: ChartBrush;
6
- }>;
7
- export type PreparedChart = {
8
- margin: ChartMargin;
9
- zoom: PreparedZoom | null;
10
- };
4
+ export type { PreparedChart, PreparedZoom } from '../core/chart/types';
11
5
  export type PreparedTitle = Omit<ChartTitle, 'margin' | 'style'> & {
12
6
  height: number;
13
7
  margin: number;
@@ -1,3 +1,3 @@
1
- import type { UseBrushProps } from './types';
1
+ import type { UseBrushProps } from '../../core/brush/types';
2
2
  import './styles.css';
3
3
  export declare function useBrush(props: UseBrushProps): void;
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
2
  import { brush, brushX, brushY } from 'd3-brush';
3
3
  import { pointer, select } from 'd3-selection';
4
+ import { getDefaultSelection, getNormalizedSelection, setBrushBorder, setBrushHandles, } from '../../core/brush/utils';
4
5
  import { block } from '../../utils';
5
- import { getDefaultSelection, getNormalizedSelection, setBrushBorder, setBrushHandles, } from './utils';
6
6
  import './styles.css';
7
7
  const b = block('brush');
8
8
  export function useBrush(props) {
@@ -1,14 +1,14 @@
1
1
  import React from 'react';
2
2
  import { pointer } from 'd3-selection';
3
3
  import { isEqual } from 'lodash';
4
+ import { getNormalizedSelection, isOneDimensionalSelection } from '../../core/brush/utils';
4
5
  import { SERIES_TYPE } from '../../core/constants';
6
+ import { getRangeSliderOffsetTop, getRangeSliderSelection } from '../../core/range-slider/utils';
5
7
  import { isBandScale } from '../../core/utils';
8
+ import { selectionToZoomBounds } from '../../core/zoom/utils';
6
9
  import { useAxis } from '../useAxis';
7
10
  import { useAxisScales } from '../useAxisScales';
8
- import { getNormalizedSelection, isOneDimensionalSelection } from '../useBrush/utils';
9
11
  import { useShapes } from '../useShapes';
10
- import { selectionToZoomBounds } from '../useZoom/utils';
11
- import { getRangeSliderOffsetTop, getRangeSliderSelection } from './utils';
12
12
  export const EMPTY_PREPARED_SPLIT = {
13
13
  plots: [],
14
14
  gap: 0,
@@ -1,13 +1,11 @@
1
+ import type { PreparedRangeSlider, PreparedXAxis, PreparedYAxis } from '../../core/axes/types';
2
+ import type { BrushSelection, UseBrushProps } from '../../core/brush/types';
3
+ import type { PreparedChart } from '../../core/chart/types';
4
+ import type { RangeSliderState } from '../../core/range-slider/types';
1
5
  import type { ChartScale } from '../../core/scales/types';
6
+ import type { PreparedLegend, PreparedSeries, PreparedSeriesOptions } from '../../core/series/types';
2
7
  import type { ChartXAxis, ChartYAxis, LegendConfig } from '../../types';
3
- import type { PreparedChart } from '../types';
4
- import type { PreparedRangeSlider, PreparedXAxis, PreparedYAxis } from '../useAxis/types';
5
- import type { BrushSelection, UseBrushProps } from '../useBrush/types';
6
- import type { PreparedLegend, PreparedSeries, PreparedSeriesOptions } from '../useSeries/types';
7
- export type RangeSliderState = {
8
- max: number;
9
- min: number;
10
- };
8
+ export type { RangeSliderState };
11
9
  export interface RangeSliderProps {
12
10
  activeLegendItems: string[];
13
11
  boundsOffsetLeft: number;
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import type { Dispatch } from 'd3-dispatch';
3
- import type { PreparedSeriesOptions } from '../../useSeries/types';
4
- import type { PreparedAreaData } from './types';
3
+ import type { PreparedSeriesOptions } from '../../../core/series/types';
4
+ import type { PreparedAreaData } from '../../../core/shapes/area/types';
5
5
  type Args = {
6
6
  boundsHeight: number;
7
7
  boundsWidth: number;
@@ -1,18 +1,11 @@
1
1
  import React from 'react';
2
- import { color } from 'd3-color';
3
- import { select } from 'd3-selection';
4
- import { area as areaGenerator, line as lineGenerator } from 'd3-shape';
5
- import get from 'lodash/get';
2
+ import { renderArea } from '../../../core/shapes/area/renderer';
6
3
  import { filterOverlappingLabels } from '../../../core/utils';
7
4
  import { block } from '../../../utils';
8
5
  import { HtmlLayer } from '../HtmlLayer';
9
- import { renderAnnotations } from '../annotation';
10
- import { getMarkerHaloVisibility, getMarkerVisibility, renderMarker, selectMarkerHalo, selectMarkerSymbol, setMarker, } from '../marker';
11
- import { setActiveState } from '../utils';
12
6
  const b = block('area');
13
7
  export const AreaSeriesShapes = (args) => {
14
8
  const { boundsHeight, boundsWidth, dispatcher, preparedData, seriesOptions, htmlLayout, clipPathId, } = args;
15
- const hoveredDataRef = React.useRef(null);
16
9
  const plotRef = React.useRef(null);
17
10
  const markersRef = React.useRef(null);
18
11
  const hoverMarkersRef = React.useRef(null);
@@ -21,185 +14,20 @@ export const AreaSeriesShapes = (args) => {
21
14
  return preparedData.some((d) => d === null || d === void 0 ? void 0 : d.series.dataLabels.allowOverlap);
22
15
  }, [preparedData]);
23
16
  React.useEffect(() => {
24
- if (!plotRef.current || !markersRef.current) {
17
+ if (!plotRef.current ||
18
+ !markersRef.current ||
19
+ !hoverMarkersRef.current ||
20
+ !annotationsRef.current) {
25
21
  return () => { };
26
22
  }
27
- const plotSvgElement = select(plotRef.current);
28
- const markersSvgElement = select(markersRef.current);
29
- const hoverMarkersSvgElement = select(hoverMarkersRef.current);
30
- const hoverOptions = get(seriesOptions, 'area.states.hover');
31
- const inactiveOptions = get(seriesOptions, 'area.states.inactive');
32
- const line = lineGenerator()
33
- .x((d) => d.x)
34
- .defined((d) => d.y !== null)
35
- .y((d) => d.y);
36
- plotSvgElement.selectAll('*').remove();
37
- markersSvgElement.selectAll('*').remove();
38
- const shapeSelection = plotSvgElement
39
- .selectAll('shape')
40
- .data(preparedData)
41
- .join('g')
42
- .attr('class', b('series'))
43
- .attr('cursor', (d) => d.series.cursor);
44
- shapeSelection
45
- .append('path')
46
- .attr('class', b('line'))
47
- .attr('d', (d) => line(d.points))
48
- .attr('fill', 'none')
49
- .attr('stroke', (d) => d.color)
50
- .attr('stroke-width', (d) => d.width)
51
- .attr('stroke-linejoin', 'round')
52
- .attr('stroke-linecap', 'round');
53
- const area = areaGenerator()
54
- .defined((d) => d.y !== null)
55
- .x((d) => d.x)
56
- .y0((d) => d.y0)
57
- .y1((d) => d.y);
58
- shapeSelection
59
- .append('path')
60
- .attr('class', b('region'))
61
- .attr('d', (d) => area(d.points))
62
- .attr('fill', (d) => d.color)
63
- .attr('opacity', (d) => d.opacity);
64
- let dataLabels = preparedData.reduce((acc, d) => {
65
- return acc.concat(d.svgLabels);
66
- }, []);
67
- if (!allowOverlapDataLabels) {
68
- dataLabels = filterOverlappingLabels(dataLabels);
69
- }
70
- const labelsSelection = plotSvgElement
71
- .selectAll('text')
72
- .data(dataLabels)
73
- .join('text')
74
- .html((d) => d.text)
75
- .attr('class', b('label'))
76
- .attr('x', (d) => d.x)
77
- .attr('y', (d) => d.y)
78
- .attr('text-anchor', (d) => d.textAnchor)
79
- .style('font-size', (d) => d.style.fontSize)
80
- .style('font-weight', (d) => d.style.fontWeight || null)
81
- .style('fill', (d) => d.style.fontColor || null);
82
- const markers = preparedData.reduce((acc, d) => acc.concat(d.markers), []);
83
- const markerSelection = markersSvgElement
84
- .selectAll('marker')
85
- .data(markers)
86
- .join('g')
87
- .call(renderMarker);
88
- if (annotationsRef.current) {
89
- const anchors = preparedData.flatMap((d) => d.annotations);
90
- renderAnnotations({
91
- anchors,
92
- container: select(annotationsRef.current),
93
- plotHeight: boundsHeight,
94
- plotWidth: boundsWidth,
95
- });
96
- }
97
- const hoverEnabled = hoverOptions === null || hoverOptions === void 0 ? void 0 : hoverOptions.enabled;
98
- const inactiveEnabled = inactiveOptions === null || inactiveOptions === void 0 ? void 0 : inactiveOptions.enabled;
99
- function handleShapeHover(data) {
100
- hoveredDataRef.current = data;
101
- const selected = (data === null || data === void 0 ? void 0 : data.filter((d) => d.series.type === 'area')) || [];
102
- const selectedDataItems = selected.map((d) => d.data);
103
- const selectedSeriesIds = selected.map((d) => { var _a; return (_a = d.series) === null || _a === void 0 ? void 0 : _a.id; });
104
- shapeSelection.datum((d, index, list) => {
105
- var _a;
106
- const elementSelection = select(list[index]);
107
- const hovered = Boolean(hoverEnabled && selectedSeriesIds.includes(d.id));
108
- if (d.hovered !== hovered) {
109
- d.hovered = hovered;
110
- let strokeColor = d.color || '';
111
- if (d.hovered) {
112
- strokeColor =
113
- ((_a = color(strokeColor)) === null || _a === void 0 ? void 0 : _a.brighter(hoverOptions === null || hoverOptions === void 0 ? void 0 : hoverOptions.brightness).toString()) ||
114
- strokeColor;
115
- }
116
- elementSelection.selectAll(`.${b('line')}`).attr('stroke', strokeColor);
117
- elementSelection.selectAll(`.${b('region')}`).attr('fill', strokeColor);
118
- }
119
- return setActiveState({
120
- element: list[index],
121
- state: inactiveOptions,
122
- active: Boolean(!inactiveEnabled ||
123
- !selectedSeriesIds.length ||
124
- selectedSeriesIds.includes(d.id)),
125
- datum: d,
126
- });
127
- });
128
- labelsSelection.datum((d, index, list) => {
129
- return setActiveState({
130
- element: list[index],
131
- state: inactiveOptions,
132
- active: Boolean(!inactiveEnabled ||
133
- !selectedSeriesIds.length ||
134
- selectedSeriesIds.includes(d.series.id)),
135
- datum: d,
136
- });
137
- });
138
- markerSelection.datum((d, index, list) => {
139
- const elementSelection = select(list[index]);
140
- const hovered = Boolean(hoverEnabled && selectedDataItems.includes(d.point.data));
141
- if (d.hovered !== hovered) {
142
- d.hovered = hovered;
143
- elementSelection.attr('visibility', getMarkerVisibility(d));
144
- selectMarkerHalo(elementSelection).attr('visibility', getMarkerHaloVisibility);
145
- selectMarkerSymbol(elementSelection).call(setMarker, hovered ? 'hover' : 'normal');
146
- }
147
- if (d.point.series.marker.states.normal.enabled) {
148
- const isActive = Boolean(!inactiveEnabled ||
149
- !selectedSeriesIds.length ||
150
- selectedSeriesIds.includes(d.point.series.id));
151
- setActiveState({
152
- element: list[index],
153
- state: inactiveOptions,
154
- active: isActive,
155
- datum: d,
156
- });
157
- }
158
- return d;
159
- });
160
- hoverMarkersSvgElement.selectAll('*').remove();
161
- if (hoverEnabled && selected.length > 0) {
162
- const hoverOnlyMarkers = [];
163
- for (const chunk of selected) {
164
- const seriesData = preparedData.find((pd) => pd.id === chunk.series.id);
165
- if (!seriesData) {
166
- continue;
167
- }
168
- const { series } = seriesData;
169
- if (series.marker.states.normal.enabled ||
170
- !series.marker.states.hover.enabled) {
171
- continue;
172
- }
173
- const point = seriesData.points.find((p) => p.data === chunk.data);
174
- if (!point || point.y === null) {
175
- continue;
176
- }
177
- hoverOnlyMarkers.push({
178
- point: point,
179
- active: true,
180
- hovered: true,
181
- clipped: false,
182
- });
183
- }
184
- if (hoverOnlyMarkers.length > 0) {
185
- hoverMarkersSvgElement
186
- .selectAll('g')
187
- .data(hoverOnlyMarkers)
188
- .join('g')
189
- .call(renderMarker)
190
- .each((_d, i, nodes) => {
191
- selectMarkerSymbol(select(nodes[i])).call(setMarker, 'hover');
192
- });
193
- }
194
- }
195
- }
196
- if (hoveredDataRef.current !== null) {
197
- handleShapeHover(hoveredDataRef.current);
198
- }
199
- dispatcher === null || dispatcher === void 0 ? void 0 : dispatcher.on('hover-shape.area', handleShapeHover);
200
- return () => {
201
- dispatcher === null || dispatcher === void 0 ? void 0 : dispatcher.on('hover-shape.area', null);
202
- };
23
+ return renderArea({
24
+ plot: plotRef.current,
25
+ markers: markersRef.current,
26
+ hoverMarkers: hoverMarkersRef.current,
27
+ annotations: annotationsRef.current,
28
+ boundsWidth,
29
+ boundsHeight,
30
+ }, preparedData, seriesOptions, allowOverlapDataLabels, dispatcher);
203
31
  }, [
204
32
  allowOverlapDataLabels,
205
33
  boundsHeight,
@@ -1,9 +1,9 @@
1
1
  import React from 'react';
2
2
  import type { Dispatch } from 'd3-dispatch';
3
- import type { PreparedSeriesOptions } from '../../useSeries/types';
4
- import type { PreparedBarXData } from './types';
5
- export { prepareBarXData } from './prepare-data';
6
- export * from './types';
3
+ import type { PreparedSeriesOptions } from '../../../core/series/types';
4
+ import type { PreparedBarXData } from '../../../core/shapes/bar-x/types';
5
+ export { prepareBarXData } from '../../../core/shapes/bar-x/prepare-data';
6
+ export * from '../../../core/shapes/bar-x/types';
7
7
  type Args = {
8
8
  boundsHeight: number;
9
9
  boundsWidth: number;