@gravity-ui/charts 1.46.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 (351) hide show
  1. package/dist/cjs/components/ChartInner/useChartInnerProps.js +1 -1
  2. package/dist/cjs/components/Legend/index.js +13 -14
  3. package/dist/cjs/components/Tooltip/index.js +22 -1
  4. package/dist/cjs/core/axes/x-axis.js +1 -1
  5. package/dist/cjs/core/axes/y-axis.js +1 -1
  6. package/dist/cjs/core/scales/utils.d.ts +1 -1
  7. package/dist/cjs/core/scales/utils.js +1 -1
  8. package/dist/cjs/core/scales/x-scale.js +2 -2
  9. package/dist/cjs/core/scales/y-scale.js +48 -4
  10. package/dist/cjs/core/series/prepare-area.js +1 -1
  11. package/dist/cjs/core/series/prepare-bar-x.js +1 -1
  12. package/dist/cjs/core/series/prepare-bar-y.js +1 -1
  13. package/dist/cjs/core/series/prepare-funnel.js +1 -1
  14. package/dist/cjs/core/series/prepare-heatmap.js +1 -1
  15. package/dist/cjs/core/series/prepare-legend.js +2 -2
  16. package/dist/cjs/core/series/prepare-line.js +1 -1
  17. package/dist/cjs/core/series/prepare-pie.js +1 -1
  18. package/dist/cjs/core/series/prepare-radar.js +1 -1
  19. package/dist/cjs/core/series/prepare-sankey.js +1 -1
  20. package/dist/cjs/core/series/prepare-scatter.js +1 -1
  21. package/dist/cjs/core/series/prepare-treemap.js +1 -1
  22. package/dist/cjs/core/series/prepare-waterfall.js +1 -1
  23. package/dist/cjs/core/series/prepare-x-range.js +1 -1
  24. package/dist/cjs/core/series/prepareSeries.d.ts +7 -1
  25. package/dist/cjs/core/series/prepareSeries.js +31 -0
  26. package/dist/cjs/core/series/types.d.ts +5 -0
  27. package/dist/cjs/core/series/utils.d.ts +4 -0
  28. package/dist/cjs/core/series/utils.js +9 -1
  29. package/dist/cjs/{hooks/useShapes/annotation/index.d.ts → core/shapes/annotation.d.ts} +1 -7
  30. package/dist/cjs/{hooks/useShapes/annotation/index.js → core/shapes/annotation.js} +2 -2
  31. package/dist/cjs/{hooks/useShapes → core/shapes}/area/prepare-data.d.ts +4 -4
  32. package/dist/cjs/{hooks/useShapes → core/shapes}/area/prepare-data.js +4 -4
  33. package/dist/cjs/core/shapes/area/renderer.d.ts +11 -0
  34. package/dist/cjs/core/shapes/area/renderer.js +181 -0
  35. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/area/types.d.ts +1 -3
  36. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/bar-x/prepare-data.d.ts +4 -4
  37. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/bar-x/prepare-data.js +6 -6
  38. package/dist/cjs/core/shapes/bar-x/renderer.d.ts +9 -0
  39. package/dist/cjs/core/shapes/bar-x/renderer.js +110 -0
  40. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/bar-x/types.d.ts +1 -2
  41. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/bar-y/prepare-data.d.ts +3 -3
  42. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/bar-y/prepare-data.js +3 -3
  43. package/dist/cjs/core/shapes/bar-y/renderer.d.ts +6 -0
  44. package/dist/cjs/core/shapes/bar-y/renderer.js +80 -0
  45. package/dist/cjs/{hooks/useShapes → core/shapes}/bar-y/types.d.ts +1 -1
  46. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/bar-y/utils.js +1 -1
  47. package/dist/cjs/{hooks/useShapes → core/shapes}/funnel/prepare-data.d.ts +1 -1
  48. package/dist/cjs/{hooks/useShapes → core/shapes}/funnel/prepare-data.js +1 -1
  49. package/dist/cjs/core/shapes/funnel/renderer.d.ts +6 -0
  50. package/dist/cjs/core/shapes/funnel/renderer.js +79 -0
  51. package/dist/cjs/{hooks/useShapes → core/shapes}/funnel/types.d.ts +2 -2
  52. package/dist/cjs/{hooks/useShapes → core/shapes}/heatmap/prepare-data.d.ts +3 -3
  53. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/heatmap/prepare-data.js +2 -2
  54. package/dist/cjs/core/shapes/heatmap/renderer.d.ts +6 -0
  55. package/dist/cjs/core/shapes/heatmap/renderer.js +55 -0
  56. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/heatmap/types.d.ts +1 -1
  57. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/line/prepare-data.d.ts +4 -4
  58. package/dist/cjs/{hooks/useShapes → core/shapes}/line/prepare-data.js +3 -3
  59. package/dist/cjs/core/shapes/line/renderer.d.ts +11 -0
  60. package/dist/cjs/core/shapes/line/renderer.js +167 -0
  61. package/dist/cjs/{hooks/useShapes → core/shapes}/line/types.d.ts +2 -4
  62. package/dist/cjs/core/shapes/marker.d.ts +45 -0
  63. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/marker.js +2 -2
  64. package/dist/cjs/{hooks/useShapes → core/shapes}/pie/prepare-data.d.ts +1 -1
  65. package/dist/cjs/{hooks/useShapes → core/shapes}/pie/prepare-data.js +3 -3
  66. package/dist/cjs/core/shapes/pie/renderer.d.ts +8 -0
  67. package/dist/cjs/core/shapes/pie/renderer.js +160 -0
  68. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/pie/types.d.ts +1 -1
  69. package/dist/cjs/{hooks/useShapes → core/shapes}/radar/prepare-data.d.ts +1 -1
  70. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/radar/prepare-data.js +2 -2
  71. package/dist/cjs/core/shapes/radar/renderer.d.ts +6 -0
  72. package/dist/cjs/core/shapes/radar/renderer.js +126 -0
  73. package/dist/cjs/{hooks/useShapes → core/shapes}/radar/types.d.ts +1 -1
  74. package/dist/cjs/{hooks/useShapes → core/shapes}/sankey/prepare-data.d.ts +1 -1
  75. package/dist/cjs/{hooks/useShapes → core/shapes}/sankey/prepare-data.js +1 -1
  76. package/dist/cjs/core/shapes/sankey/renderer.d.ts +6 -0
  77. package/dist/cjs/core/shapes/sankey/renderer.js +50 -0
  78. package/dist/cjs/{hooks/useShapes → core/shapes}/sankey/types.d.ts +1 -1
  79. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/scatter/prepare-data.d.ts +3 -3
  80. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/scatter/prepare-data.js +2 -2
  81. package/dist/cjs/core/shapes/scatter/renderer.d.ts +6 -0
  82. package/dist/cjs/core/shapes/scatter/renderer.js +52 -0
  83. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/scatter/types.d.ts +1 -1
  84. package/dist/cjs/{hooks/useShapes → core/shapes}/treemap/prepare-data.d.ts +1 -1
  85. package/dist/cjs/{hooks/useShapes → core/shapes}/treemap/prepare-data.js +3 -3
  86. package/dist/cjs/core/shapes/treemap/renderer.d.ts +6 -0
  87. package/dist/cjs/core/shapes/treemap/renderer.js +88 -0
  88. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/treemap/types.d.ts +1 -1
  89. package/dist/cjs/core/shapes/utils.d.ts +52 -0
  90. package/dist/cjs/core/shapes/utils.js +138 -0
  91. package/dist/cjs/{hooks/useShapes → core/shapes}/waterfall/prepare-data.d.ts +3 -3
  92. package/dist/cjs/{hooks/useShapes → core/shapes}/waterfall/prepare-data.js +4 -4
  93. package/dist/cjs/core/shapes/waterfall/renderer.d.ts +6 -0
  94. package/dist/cjs/core/shapes/waterfall/renderer.js +115 -0
  95. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/waterfall/types.d.ts +1 -1
  96. package/dist/cjs/{hooks/useShapes → core/shapes}/x-range/prepare-data.d.ts +3 -3
  97. package/dist/cjs/{hooks/useShapes → core/shapes}/x-range/prepare-data.js +4 -4
  98. package/dist/cjs/core/shapes/x-range/renderer.d.ts +6 -0
  99. package/dist/cjs/core/shapes/x-range/renderer.js +94 -0
  100. package/dist/{esm/hooks/useShapes → cjs/core/shapes}/x-range/types.d.ts +1 -1
  101. package/dist/cjs/core/types/chart/area.d.ts +0 -1
  102. package/dist/cjs/core/types/chart/axis.d.ts +0 -1
  103. package/dist/cjs/core/types/chart/base.d.ts +1 -4
  104. package/dist/cjs/{hooks/utils/get-band-size.js → core/utils/band-size.js} +1 -1
  105. package/dist/{esm/hooks → cjs/core}/utils/bar-y.d.ts +3 -3
  106. package/dist/cjs/{hooks → core}/utils/bar-y.js +4 -4
  107. package/dist/cjs/core/utils/get-closest-data.d.ts +1 -1
  108. package/dist/cjs/core/utils/series/sorting.js +1 -1
  109. package/dist/cjs/core/utils/text.d.ts +0 -1
  110. package/dist/cjs/core/utils/text.js +0 -1
  111. package/dist/cjs/hooks/index.d.ts +1 -1
  112. package/dist/cjs/hooks/index.js +1 -1
  113. package/dist/cjs/hooks/useRangeSlider/types.d.ts +1 -1
  114. package/dist/cjs/hooks/useRangeSlider/utils.d.ts +1 -1
  115. package/dist/cjs/hooks/useShapes/area/index.d.ts +2 -2
  116. package/dist/cjs/hooks/useShapes/area/index.js +13 -185
  117. package/dist/cjs/hooks/useShapes/bar-x/index.d.ts +4 -4
  118. package/dist/cjs/hooks/useShapes/bar-x/index.js +10 -119
  119. package/dist/cjs/hooks/useShapes/bar-y/index.d.ts +3 -3
  120. package/dist/cjs/hooks/useShapes/bar-y/index.js +5 -84
  121. package/dist/cjs/hooks/useShapes/funnel/index.d.ts +4 -4
  122. package/dist/cjs/hooks/useShapes/funnel/index.js +4 -83
  123. package/dist/cjs/hooks/useShapes/heatmap/index.d.ts +4 -4
  124. package/dist/cjs/hooks/useShapes/heatmap/index.js +4 -59
  125. package/dist/cjs/hooks/useShapes/index.d.ts +14 -15
  126. package/dist/cjs/hooks/useShapes/index.js +13 -13
  127. package/dist/cjs/hooks/useShapes/line/index.d.ts +2 -2
  128. package/dist/cjs/hooks/useShapes/line/index.js +14 -172
  129. package/dist/cjs/hooks/useShapes/pie/index.d.ts +3 -5
  130. package/dist/cjs/hooks/useShapes/pie/index.js +3 -158
  131. package/dist/cjs/hooks/useShapes/radar/index.d.ts +2 -2
  132. package/dist/cjs/hooks/useShapes/radar/index.js +2 -121
  133. package/dist/cjs/hooks/useShapes/sankey/index.d.ts +2 -2
  134. package/dist/cjs/hooks/useShapes/sankey/index.js +2 -51
  135. package/dist/cjs/hooks/useShapes/scatter/index.d.ts +3 -3
  136. package/dist/cjs/hooks/useShapes/scatter/index.js +3 -58
  137. package/dist/cjs/hooks/useShapes/treemap/index.d.ts +2 -2
  138. package/dist/cjs/hooks/useShapes/treemap/index.js +2 -88
  139. package/dist/cjs/hooks/useShapes/utils.d.ts +2 -52
  140. package/dist/cjs/hooks/useShapes/utils.js +3 -140
  141. package/dist/cjs/hooks/useShapes/waterfall/index.d.ts +4 -4
  142. package/dist/cjs/hooks/useShapes/waterfall/index.js +6 -119
  143. package/dist/cjs/hooks/useShapes/x-range/index.d.ts +4 -4
  144. package/dist/cjs/hooks/useShapes/x-range/index.js +3 -98
  145. package/dist/cjs/setup-jsdom.js +7 -0
  146. package/dist/esm/components/ChartInner/useChartInnerProps.js +1 -1
  147. package/dist/esm/components/Legend/index.js +13 -14
  148. package/dist/esm/components/Tooltip/index.js +22 -1
  149. package/dist/esm/core/axes/x-axis.js +1 -1
  150. package/dist/esm/core/axes/y-axis.js +1 -1
  151. package/dist/esm/core/scales/utils.d.ts +1 -1
  152. package/dist/esm/core/scales/utils.js +1 -1
  153. package/dist/esm/core/scales/x-scale.js +2 -2
  154. package/dist/esm/core/scales/y-scale.js +48 -4
  155. package/dist/esm/core/series/prepare-area.js +1 -1
  156. package/dist/esm/core/series/prepare-bar-x.js +1 -1
  157. package/dist/esm/core/series/prepare-bar-y.js +1 -1
  158. package/dist/esm/core/series/prepare-funnel.js +1 -1
  159. package/dist/esm/core/series/prepare-heatmap.js +1 -1
  160. package/dist/esm/core/series/prepare-legend.js +2 -2
  161. package/dist/esm/core/series/prepare-line.js +1 -1
  162. package/dist/esm/core/series/prepare-pie.js +1 -1
  163. package/dist/esm/core/series/prepare-radar.js +1 -1
  164. package/dist/esm/core/series/prepare-sankey.js +1 -1
  165. package/dist/esm/core/series/prepare-scatter.js +1 -1
  166. package/dist/esm/core/series/prepare-treemap.js +1 -1
  167. package/dist/esm/core/series/prepare-waterfall.js +1 -1
  168. package/dist/esm/core/series/prepare-x-range.js +1 -1
  169. package/dist/esm/core/series/prepareSeries.d.ts +7 -1
  170. package/dist/esm/core/series/prepareSeries.js +31 -0
  171. package/dist/esm/core/series/types.d.ts +5 -0
  172. package/dist/esm/core/series/utils.d.ts +4 -0
  173. package/dist/esm/core/series/utils.js +9 -1
  174. package/dist/esm/{hooks/useShapes/annotation/index.d.ts → core/shapes/annotation.d.ts} +1 -7
  175. package/dist/esm/{hooks/useShapes/annotation/index.js → core/shapes/annotation.js} +2 -2
  176. package/dist/esm/{hooks/useShapes → core/shapes}/area/prepare-data.d.ts +4 -4
  177. package/dist/esm/{hooks/useShapes → core/shapes}/area/prepare-data.js +4 -4
  178. package/dist/esm/core/shapes/area/renderer.d.ts +11 -0
  179. package/dist/esm/core/shapes/area/renderer.js +181 -0
  180. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/area/types.d.ts +1 -3
  181. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/bar-x/prepare-data.d.ts +4 -4
  182. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/bar-x/prepare-data.js +6 -6
  183. package/dist/esm/core/shapes/bar-x/renderer.d.ts +9 -0
  184. package/dist/esm/core/shapes/bar-x/renderer.js +110 -0
  185. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/bar-x/types.d.ts +1 -2
  186. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/bar-y/prepare-data.d.ts +3 -3
  187. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/bar-y/prepare-data.js +3 -3
  188. package/dist/esm/core/shapes/bar-y/renderer.d.ts +6 -0
  189. package/dist/esm/core/shapes/bar-y/renderer.js +80 -0
  190. package/dist/esm/{hooks/useShapes → core/shapes}/bar-y/types.d.ts +1 -1
  191. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/bar-y/utils.js +1 -1
  192. package/dist/esm/{hooks/useShapes → core/shapes}/funnel/prepare-data.d.ts +1 -1
  193. package/dist/esm/{hooks/useShapes → core/shapes}/funnel/prepare-data.js +1 -1
  194. package/dist/esm/core/shapes/funnel/renderer.d.ts +6 -0
  195. package/dist/esm/core/shapes/funnel/renderer.js +79 -0
  196. package/dist/esm/{hooks/useShapes → core/shapes}/funnel/types.d.ts +2 -2
  197. package/dist/esm/{hooks/useShapes → core/shapes}/heatmap/prepare-data.d.ts +3 -3
  198. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/heatmap/prepare-data.js +2 -2
  199. package/dist/esm/core/shapes/heatmap/renderer.d.ts +6 -0
  200. package/dist/esm/core/shapes/heatmap/renderer.js +55 -0
  201. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/heatmap/types.d.ts +1 -1
  202. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/line/prepare-data.d.ts +4 -4
  203. package/dist/esm/{hooks/useShapes → core/shapes}/line/prepare-data.js +3 -3
  204. package/dist/esm/core/shapes/line/renderer.d.ts +11 -0
  205. package/dist/esm/core/shapes/line/renderer.js +167 -0
  206. package/dist/esm/{hooks/useShapes → core/shapes}/line/types.d.ts +2 -4
  207. package/dist/esm/core/shapes/marker.d.ts +45 -0
  208. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/marker.js +2 -2
  209. package/dist/esm/{hooks/useShapes → core/shapes}/pie/prepare-data.d.ts +1 -1
  210. package/dist/esm/{hooks/useShapes → core/shapes}/pie/prepare-data.js +3 -3
  211. package/dist/esm/core/shapes/pie/renderer.d.ts +8 -0
  212. package/dist/esm/core/shapes/pie/renderer.js +160 -0
  213. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/pie/types.d.ts +1 -1
  214. package/dist/esm/{hooks/useShapes → core/shapes}/radar/prepare-data.d.ts +1 -1
  215. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/radar/prepare-data.js +2 -2
  216. package/dist/esm/core/shapes/radar/renderer.d.ts +6 -0
  217. package/dist/esm/core/shapes/radar/renderer.js +126 -0
  218. package/dist/esm/{hooks/useShapes → core/shapes}/radar/types.d.ts +1 -1
  219. package/dist/esm/{hooks/useShapes → core/shapes}/sankey/prepare-data.d.ts +1 -1
  220. package/dist/esm/{hooks/useShapes → core/shapes}/sankey/prepare-data.js +1 -1
  221. package/dist/esm/core/shapes/sankey/renderer.d.ts +6 -0
  222. package/dist/esm/core/shapes/sankey/renderer.js +50 -0
  223. package/dist/esm/{hooks/useShapes → core/shapes}/sankey/types.d.ts +1 -1
  224. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/scatter/prepare-data.d.ts +3 -3
  225. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/scatter/prepare-data.js +2 -2
  226. package/dist/esm/core/shapes/scatter/renderer.d.ts +6 -0
  227. package/dist/esm/core/shapes/scatter/renderer.js +52 -0
  228. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/scatter/types.d.ts +1 -1
  229. package/dist/esm/{hooks/useShapes → core/shapes}/treemap/prepare-data.d.ts +1 -1
  230. package/dist/esm/{hooks/useShapes → core/shapes}/treemap/prepare-data.js +3 -3
  231. package/dist/esm/core/shapes/treemap/renderer.d.ts +6 -0
  232. package/dist/esm/core/shapes/treemap/renderer.js +88 -0
  233. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/treemap/types.d.ts +1 -1
  234. package/dist/esm/core/shapes/utils.d.ts +52 -0
  235. package/dist/esm/core/shapes/utils.js +138 -0
  236. package/dist/esm/{hooks/useShapes → core/shapes}/waterfall/prepare-data.d.ts +3 -3
  237. package/dist/esm/{hooks/useShapes → core/shapes}/waterfall/prepare-data.js +4 -4
  238. package/dist/esm/core/shapes/waterfall/renderer.d.ts +6 -0
  239. package/dist/esm/core/shapes/waterfall/renderer.js +115 -0
  240. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/waterfall/types.d.ts +1 -1
  241. package/dist/esm/{hooks/useShapes → core/shapes}/x-range/prepare-data.d.ts +3 -3
  242. package/dist/esm/{hooks/useShapes → core/shapes}/x-range/prepare-data.js +4 -4
  243. package/dist/esm/core/shapes/x-range/renderer.d.ts +6 -0
  244. package/dist/esm/core/shapes/x-range/renderer.js +94 -0
  245. package/dist/{cjs/hooks/useShapes → esm/core/shapes}/x-range/types.d.ts +1 -1
  246. package/dist/esm/core/types/chart/area.d.ts +0 -1
  247. package/dist/esm/core/types/chart/axis.d.ts +0 -1
  248. package/dist/esm/core/types/chart/base.d.ts +1 -4
  249. package/dist/esm/{hooks/utils/get-band-size.js → core/utils/band-size.js} +1 -1
  250. package/dist/{cjs/hooks → esm/core}/utils/bar-y.d.ts +3 -3
  251. package/dist/esm/{hooks → core}/utils/bar-y.js +4 -4
  252. package/dist/esm/core/utils/get-closest-data.d.ts +1 -1
  253. package/dist/esm/core/utils/series/sorting.js +1 -1
  254. package/dist/esm/core/utils/text.d.ts +0 -1
  255. package/dist/esm/core/utils/text.js +0 -1
  256. package/dist/esm/hooks/index.d.ts +1 -1
  257. package/dist/esm/hooks/index.js +1 -1
  258. package/dist/esm/hooks/useRangeSlider/types.d.ts +1 -1
  259. package/dist/esm/hooks/useRangeSlider/utils.d.ts +1 -1
  260. package/dist/esm/hooks/useShapes/area/index.d.ts +2 -2
  261. package/dist/esm/hooks/useShapes/area/index.js +13 -185
  262. package/dist/esm/hooks/useShapes/bar-x/index.d.ts +4 -4
  263. package/dist/esm/hooks/useShapes/bar-x/index.js +10 -119
  264. package/dist/esm/hooks/useShapes/bar-y/index.d.ts +3 -3
  265. package/dist/esm/hooks/useShapes/bar-y/index.js +5 -84
  266. package/dist/esm/hooks/useShapes/funnel/index.d.ts +4 -4
  267. package/dist/esm/hooks/useShapes/funnel/index.js +4 -83
  268. package/dist/esm/hooks/useShapes/heatmap/index.d.ts +4 -4
  269. package/dist/esm/hooks/useShapes/heatmap/index.js +4 -59
  270. package/dist/esm/hooks/useShapes/index.d.ts +14 -15
  271. package/dist/esm/hooks/useShapes/index.js +13 -13
  272. package/dist/esm/hooks/useShapes/line/index.d.ts +2 -2
  273. package/dist/esm/hooks/useShapes/line/index.js +14 -172
  274. package/dist/esm/hooks/useShapes/pie/index.d.ts +3 -5
  275. package/dist/esm/hooks/useShapes/pie/index.js +3 -158
  276. package/dist/esm/hooks/useShapes/radar/index.d.ts +2 -2
  277. package/dist/esm/hooks/useShapes/radar/index.js +2 -121
  278. package/dist/esm/hooks/useShapes/sankey/index.d.ts +2 -2
  279. package/dist/esm/hooks/useShapes/sankey/index.js +2 -51
  280. package/dist/esm/hooks/useShapes/scatter/index.d.ts +3 -3
  281. package/dist/esm/hooks/useShapes/scatter/index.js +3 -58
  282. package/dist/esm/hooks/useShapes/treemap/index.d.ts +2 -2
  283. package/dist/esm/hooks/useShapes/treemap/index.js +2 -88
  284. package/dist/esm/hooks/useShapes/utils.d.ts +2 -52
  285. package/dist/esm/hooks/useShapes/utils.js +3 -140
  286. package/dist/esm/hooks/useShapes/waterfall/index.d.ts +4 -4
  287. package/dist/esm/hooks/useShapes/waterfall/index.js +6 -119
  288. package/dist/esm/hooks/useShapes/x-range/index.d.ts +4 -4
  289. package/dist/esm/hooks/useShapes/x-range/index.js +3 -98
  290. package/dist/esm/setup-jsdom.js +7 -0
  291. package/package.json +5 -2
  292. package/dist/cjs/hooks/useSeries/index.d.ts +0 -12
  293. package/dist/cjs/hooks/useSeries/index.js +0 -40
  294. package/dist/cjs/hooks/useSeries/types.d.ts +0 -1
  295. package/dist/cjs/hooks/useSeries/types.js +0 -1
  296. package/dist/cjs/hooks/useSeries/utils.d.ts +0 -1
  297. package/dist/cjs/hooks/useSeries/utils.js +0 -1
  298. package/dist/cjs/hooks/useShapes/marker.d.ts +0 -15
  299. package/dist/cjs/hooks/utils/index.d.ts +0 -1
  300. package/dist/cjs/hooks/utils/index.js +0 -1
  301. package/dist/esm/hooks/useSeries/index.d.ts +0 -12
  302. package/dist/esm/hooks/useSeries/index.js +0 -40
  303. package/dist/esm/hooks/useSeries/types.d.ts +0 -1
  304. package/dist/esm/hooks/useSeries/types.js +0 -1
  305. package/dist/esm/hooks/useSeries/utils.d.ts +0 -1
  306. package/dist/esm/hooks/useSeries/utils.js +0 -1
  307. package/dist/esm/hooks/useShapes/marker.d.ts +0 -15
  308. package/dist/esm/hooks/utils/index.d.ts +0 -1
  309. package/dist/esm/hooks/utils/index.js +0 -1
  310. /package/dist/cjs/{hooks/useShapes → core/shapes}/area/types.js +0 -0
  311. /package/dist/cjs/{hooks/constants.d.ts → core/shapes/bar-constants.d.ts} +0 -0
  312. /package/dist/cjs/{hooks/constants.js → core/shapes/bar-constants.js} +0 -0
  313. /package/dist/cjs/{hooks/useShapes → core/shapes}/bar-x/types.js +0 -0
  314. /package/dist/cjs/{hooks/useShapes → core/shapes}/bar-y/types.js +0 -0
  315. /package/dist/cjs/{hooks/useShapes → core/shapes}/bar-y/utils.d.ts +0 -0
  316. /package/dist/cjs/{hooks/useShapes → core/shapes}/funnel/types.js +0 -0
  317. /package/dist/cjs/{hooks/useShapes → core/shapes}/heatmap/types.js +0 -0
  318. /package/dist/cjs/{hooks/useShapes → core/shapes}/line/types.js +0 -0
  319. /package/dist/cjs/{hooks/useShapes → core/shapes}/pie/types.js +0 -0
  320. /package/dist/cjs/{hooks/useShapes → core/shapes}/pie/utils.d.ts +0 -0
  321. /package/dist/cjs/{hooks/useShapes → core/shapes}/pie/utils.js +0 -0
  322. /package/dist/cjs/{hooks/useShapes → core/shapes}/radar/types.js +0 -0
  323. /package/dist/cjs/{hooks/useShapes → core/shapes}/sankey/sankey-layout.d.ts +0 -0
  324. /package/dist/cjs/{hooks/useShapes → core/shapes}/sankey/sankey-layout.js +0 -0
  325. /package/dist/cjs/{hooks/useShapes → core/shapes}/sankey/types.js +0 -0
  326. /package/dist/cjs/{hooks/useShapes → core/shapes}/scatter/types.js +0 -0
  327. /package/dist/cjs/{hooks/useShapes → core/shapes}/treemap/types.js +0 -0
  328. /package/dist/cjs/{hooks/useShapes → core/shapes}/waterfall/types.js +0 -0
  329. /package/dist/cjs/{hooks/useShapes → core/shapes}/x-range/types.js +0 -0
  330. /package/dist/cjs/{hooks/utils/get-band-size.d.ts → core/utils/band-size.d.ts} +0 -0
  331. /package/dist/esm/{hooks/useShapes → core/shapes}/area/types.js +0 -0
  332. /package/dist/esm/{hooks/constants.d.ts → core/shapes/bar-constants.d.ts} +0 -0
  333. /package/dist/esm/{hooks/constants.js → core/shapes/bar-constants.js} +0 -0
  334. /package/dist/esm/{hooks/useShapes → core/shapes}/bar-x/types.js +0 -0
  335. /package/dist/esm/{hooks/useShapes → core/shapes}/bar-y/types.js +0 -0
  336. /package/dist/esm/{hooks/useShapes → core/shapes}/bar-y/utils.d.ts +0 -0
  337. /package/dist/esm/{hooks/useShapes → core/shapes}/funnel/types.js +0 -0
  338. /package/dist/esm/{hooks/useShapes → core/shapes}/heatmap/types.js +0 -0
  339. /package/dist/esm/{hooks/useShapes → core/shapes}/line/types.js +0 -0
  340. /package/dist/esm/{hooks/useShapes → core/shapes}/pie/types.js +0 -0
  341. /package/dist/esm/{hooks/useShapes → core/shapes}/pie/utils.d.ts +0 -0
  342. /package/dist/esm/{hooks/useShapes → core/shapes}/pie/utils.js +0 -0
  343. /package/dist/esm/{hooks/useShapes → core/shapes}/radar/types.js +0 -0
  344. /package/dist/esm/{hooks/useShapes → core/shapes}/sankey/sankey-layout.d.ts +0 -0
  345. /package/dist/esm/{hooks/useShapes → core/shapes}/sankey/sankey-layout.js +0 -0
  346. /package/dist/esm/{hooks/useShapes → core/shapes}/sankey/types.js +0 -0
  347. /package/dist/esm/{hooks/useShapes → core/shapes}/scatter/types.js +0 -0
  348. /package/dist/esm/{hooks/useShapes → core/shapes}/treemap/types.js +0 -0
  349. /package/dist/esm/{hooks/useShapes → core/shapes}/waterfall/types.js +0 -0
  350. /package/dist/esm/{hooks/useShapes → core/shapes}/x-range/types.js +0 -0
  351. /package/dist/esm/{hooks/utils/get-band-size.d.ts → core/utils/band-size.d.ts} +0 -0
@@ -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;
@@ -1,137 +1,28 @@
1
1
  import React from 'react';
2
- import { color } from 'd3-color';
3
- import { select } from 'd3-selection';
4
- import get from 'lodash/get';
2
+ import { renderBarX } from '../../../core/shapes/bar-x/renderer';
5
3
  import { filterOverlappingLabels } from '../../../core/utils';
6
4
  import { block } from '../../../utils';
7
5
  import { HtmlLayer } from '../HtmlLayer';
8
- import { renderAnnotations } from '../annotation';
9
- import { getRectPath } from '../utils';
10
- export { prepareBarXData } from './prepare-data';
11
- export * from './types';
6
+ export { prepareBarXData } from '../../../core/shapes/bar-x/prepare-data';
7
+ export * from '../../../core/shapes/bar-x/types';
12
8
  const b = block('bar-x');
13
9
  export const BarXSeriesShapes = (args) => {
14
10
  const { boundsHeight, boundsWidth, dispatcher, preparedData, seriesOptions, htmlLayout, clipPathId, } = args;
15
- const hoveredDataRef = React.useRef(null);
16
11
  const ref = React.useRef(null);
17
12
  const annotationsRef = React.useRef(null);
18
13
  const allowOverlapDataLabels = React.useMemo(() => {
19
14
  return preparedData.some((d) => d === null || d === void 0 ? void 0 : d.series.dataLabels.allowOverlap);
20
15
  }, [preparedData]);
21
16
  React.useEffect(() => {
22
- if (!ref.current) {
17
+ if (!ref.current || !annotationsRef.current) {
23
18
  return () => { };
24
19
  }
25
- const svgElement = select(ref.current);
26
- const hoverOptions = get(seriesOptions, 'bar-x.states.hover');
27
- const inactiveOptions = get(seriesOptions, 'bar-x.states.inactive');
28
- svgElement.selectAll('*').remove();
29
- const rectSelection = svgElement
30
- .selectAll('allRects')
31
- .data(preparedData)
32
- .join('path')
33
- .attr('d', (d) => {
34
- const borderRadius = d.isLastStackItem
35
- ? Math.min(d.height, d.width / 2, d.series.borderRadius)
36
- : 0;
37
- const p = getRectPath({
38
- x: d.x,
39
- y: d.y,
40
- width: d.width,
41
- height: d.height,
42
- borderRadius: [borderRadius, borderRadius, 0, 0],
43
- });
44
- return p.toString();
45
- })
46
- .attr('class', b('segment'))
47
- .attr('x', (d) => d.x)
48
- .attr('y', (d) => d.y)
49
- .attr('height', (d) => d.height)
50
- .attr('width', (d) => d.width)
51
- .attr('fill', (d) => d.data.color || d.series.color)
52
- .attr('opacity', (d) => d.opacity)
53
- .attr('cursor', (d) => d.series.cursor);
54
- let dataLabels = preparedData.map((d) => d.svgLabels).flat();
55
- if (!allowOverlapDataLabels) {
56
- dataLabels = filterOverlappingLabels(dataLabels);
57
- }
58
- const labelSelection = svgElement
59
- .selectAll('text')
60
- .data(dataLabels)
61
- .join('text')
62
- .html((d) => d.text)
63
- .attr('class', b('label'))
64
- .attr('x', (d) => d.x)
65
- .attr('y', (d) => d.y)
66
- .attr('text-anchor', (d) => d.textAnchor)
67
- .style('font-size', (d) => d.style.fontSize)
68
- .style('font-weight', (d) => d.style.fontWeight || null)
69
- .style('fill', (d) => d.style.fontColor || null);
70
- if (annotationsRef.current) {
71
- const anchors = [];
72
- for (const d of preparedData) {
73
- if (d.annotation) {
74
- anchors.push({
75
- annotation: d.annotation,
76
- x: d.x + d.width / 2,
77
- y: d.y,
78
- });
79
- }
80
- }
81
- renderAnnotations({
82
- anchors,
83
- container: select(annotationsRef.current),
84
- plotHeight: boundsHeight,
85
- plotWidth: boundsWidth,
86
- });
87
- }
88
- function handleShapeHover(data) {
89
- hoveredDataRef.current = data;
90
- const hoverEnabled = hoverOptions === null || hoverOptions === void 0 ? void 0 : hoverOptions.enabled;
91
- const inactiveEnabled = inactiveOptions === null || inactiveOptions === void 0 ? void 0 : inactiveOptions.enabled;
92
- if (!data) {
93
- if (hoverEnabled) {
94
- rectSelection.attr('fill', (d) => d.data.color || d.series.color);
95
- }
96
- if (inactiveEnabled) {
97
- rectSelection.attr('opacity', null);
98
- labelSelection.attr('opacity', null);
99
- }
100
- return;
101
- }
102
- if (hoverEnabled) {
103
- const hoveredValues = data.map((d) => d.data.x);
104
- rectSelection.attr('fill', (d) => {
105
- var _a;
106
- const fillColor = d.data.color || d.series.color;
107
- if (hoveredValues.includes(d.data.x)) {
108
- return (((_a = color(fillColor)) === null || _a === void 0 ? void 0 : _a.brighter(hoverOptions === null || hoverOptions === void 0 ? void 0 : hoverOptions.brightness).toString()) ||
109
- fillColor);
110
- }
111
- return fillColor;
112
- });
113
- }
114
- if (inactiveEnabled) {
115
- const hoveredSeries = data.map((d) => d.series.id);
116
- rectSelection.attr('opacity', (d) => {
117
- return hoveredSeries.includes(d.series.id)
118
- ? null
119
- : (inactiveOptions === null || inactiveOptions === void 0 ? void 0 : inactiveOptions.opacity) || null;
120
- });
121
- labelSelection.attr('opacity', (d) => {
122
- return hoveredSeries.includes(d.series.id)
123
- ? null
124
- : (inactiveOptions === null || inactiveOptions === void 0 ? void 0 : inactiveOptions.opacity) || null;
125
- });
126
- }
127
- }
128
- if (hoveredDataRef.current !== null) {
129
- handleShapeHover(hoveredDataRef.current);
130
- }
131
- dispatcher === null || dispatcher === void 0 ? void 0 : dispatcher.on('hover-shape.bar-x', handleShapeHover);
132
- return () => {
133
- dispatcher === null || dispatcher === void 0 ? void 0 : dispatcher.on('hover-shape.bar-x', null);
134
- };
20
+ return renderBarX({
21
+ plot: ref.current,
22
+ annotations: annotationsRef.current,
23
+ boundsWidth,
24
+ boundsHeight,
25
+ }, preparedData, seriesOptions, allowOverlapDataLabels, dispatcher);
135
26
  }, [
136
27
  allowOverlapDataLabels,
137
28
  boundsHeight,
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
2
  import type { Dispatch } from 'd3-dispatch';
3
- import type { PreparedSeriesOptions } from '../../useSeries/types';
4
- import type { BarYShapesArgs } from './types';
5
- export { prepareBarYData } from './prepare-data';
3
+ import type { PreparedSeriesOptions } from '../../../core/series/types';
4
+ import type { BarYShapesArgs } from '../../../core/shapes/bar-y/types';
5
+ export { prepareBarYData } from '../../../core/shapes/bar-y/prepare-data';
6
6
  type Args = {
7
7
  clipPathId: string;
8
8
  htmlLayout: HTMLElement | null;
@@ -1,97 +1,18 @@
1
1
  import React from 'react';
2
- import { color } from 'd3-color';
3
- import { select } from 'd3-selection';
4
- import get from 'lodash/get';
2
+ import { renderBarY } from '../../../core/shapes/bar-y/renderer';
5
3
  import { block } from '../../../utils';
6
4
  import { HtmlLayer } from '../HtmlLayer';
7
- import { getAdjustedRectBorderPath, getAdjustedRectPath } from './utils';
8
- export { prepareBarYData } from './prepare-data';
5
+ export { prepareBarYData } from '../../../core/shapes/bar-y/prepare-data';
9
6
  const b = block('bar-y');
10
7
  export function BarYSeriesShapes(args) {
11
- const { dispatcher, preparedData: { shapes: preparedData, labels: dataLabels, htmlElements }, seriesOptions, htmlLayout, clipPathId, } = args;
12
- const hoveredDataRef = React.useRef(null);
8
+ const { dispatcher, preparedData: { htmlElements }, seriesOptions, htmlLayout, clipPathId, } = args;
13
9
  const ref = React.useRef(null);
14
10
  React.useEffect(() => {
15
11
  if (!ref.current) {
16
12
  return () => { };
17
13
  }
18
- const svgElement = select(ref.current);
19
- svgElement.selectAll('*').remove();
20
- const segmentSelection = svgElement
21
- .selectAll(`path.${b('segment')}`)
22
- .data(preparedData)
23
- .join('path')
24
- .attr('d', (d) => getAdjustedRectPath(d))
25
- .attr('class', b('segment'))
26
- .attr('x', (d) => d.x)
27
- .attr('y', (d) => d.y)
28
- .attr('height', (d) => d.height)
29
- .attr('width', (d) => d.width)
30
- .attr('fill', (d) => d.color)
31
- .attr('opacity', (d) => d.data.opacity || null)
32
- .attr('cursor', (d) => d.series.cursor);
33
- const borderSelection = svgElement
34
- .selectAll(`path.${b('segment-border')}`)
35
- .data(preparedData.filter((d) => d.borderWidth > 0))
36
- .join('path')
37
- .attr('d', (d) => getAdjustedRectBorderPath(d))
38
- .attr('class', b('segment-border'))
39
- .attr('fill', (d) => d.borderColor)
40
- .attr('fill-rule', 'evenodd')
41
- .attr('opacity', (d) => d.data.opacity || null)
42
- .attr('pointer-events', 'none');
43
- const labelSelection = svgElement
44
- .selectAll('text')
45
- .data(dataLabels)
46
- .join('text')
47
- .html((d) => d.text)
48
- .attr('class', b('label'))
49
- .attr('x', (d) => d.x)
50
- .attr('y', (d) => d.y)
51
- .attr('text-anchor', (d) => d.textAnchor)
52
- .style('font-size', (d) => d.style.fontSize)
53
- .style('font-weight', (d) => d.style.fontWeight || null)
54
- .style('fill', (d) => d.style.fontColor || null);
55
- const hoverOptions = get(seriesOptions, 'bar-y.states.hover');
56
- const inactiveOptions = get(seriesOptions, 'bar-y.states.inactive');
57
- function handleShapeHover(data) {
58
- hoveredDataRef.current = data;
59
- if (hoverOptions === null || hoverOptions === void 0 ? void 0 : hoverOptions.enabled) {
60
- const hovered = data === null || data === void 0 ? void 0 : data.reduce((acc, d) => {
61
- acc.add(d.data.y);
62
- return acc;
63
- }, new Set());
64
- segmentSelection.attr('fill', (d) => {
65
- var _a;
66
- const fillColor = d.color;
67
- if (hovered === null || hovered === void 0 ? void 0 : hovered.has(d.data.y)) {
68
- return (((_a = color(fillColor)) === null || _a === void 0 ? void 0 : _a.brighter(hoverOptions.brightness).toString()) ||
69
- fillColor);
70
- }
71
- return fillColor;
72
- });
73
- }
74
- if (inactiveOptions === null || inactiveOptions === void 0 ? void 0 : inactiveOptions.enabled) {
75
- const hoveredSeries = data === null || data === void 0 ? void 0 : data.map((d) => d.series.id);
76
- const newOpacity = (d) => {
77
- if ((hoveredSeries === null || hoveredSeries === void 0 ? void 0 : hoveredSeries.length) && !hoveredSeries.includes(d.series.id)) {
78
- return inactiveOptions.opacity || null;
79
- }
80
- return null;
81
- };
82
- segmentSelection.attr('opacity', newOpacity);
83
- borderSelection.attr('opacity', newOpacity);
84
- labelSelection.attr('opacity', newOpacity);
85
- }
86
- }
87
- if (hoveredDataRef.current !== null) {
88
- handleShapeHover(hoveredDataRef.current);
89
- }
90
- dispatcher === null || dispatcher === void 0 ? void 0 : dispatcher.on('hover-shape.bar-y', handleShapeHover);
91
- return () => {
92
- dispatcher === null || dispatcher === void 0 ? void 0 : dispatcher.on('hover-shape.bar-y', null);
93
- };
94
- }, [dataLabels, dispatcher, preparedData, seriesOptions]);
14
+ return renderBarY({ plot: ref.current }, args.preparedData, seriesOptions, dispatcher);
15
+ }, [args.preparedData, dispatcher, seriesOptions]);
95
16
  return (React.createElement(React.Fragment, null,
96
17
  React.createElement("g", { ref: ref, className: b(), clipPath: `url(#${clipPathId})` }),
97
18
  React.createElement(HtmlLayer, { preparedData: { htmlElements }, htmlLayout: htmlLayout })));
@@ -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 { PreparedFunnelData } from './types';
5
- export { prepareFunnelData } from './prepare-data';
6
- export * from './types';
3
+ import type { PreparedSeriesOptions } from '../../../core/series/types';
4
+ import type { PreparedFunnelData } from '../../../core/shapes/funnel/types';
5
+ export { prepareFunnelData } from '../../../core/shapes/funnel/prepare-data';
6
+ export * from '../../../core/shapes/funnel/types';
7
7
  type Args = {
8
8
  dispatcher?: Dispatch<object>;
9
9
  preparedData: PreparedFunnelData;
@@ -1,96 +1,17 @@
1
1
  import React from 'react';
2
- import { color } from 'd3-color';
3
- import { select } from 'd3-selection';
4
- import { getLineDashArray } from '../../../core/utils';
2
+ import { renderFunnel } from '../../../core/shapes/funnel/renderer';
5
3
  import { block } from '../../../utils';
6
- export { prepareFunnelData } from './prepare-data';
7
- export * from './types';
4
+ export { prepareFunnelData } from '../../../core/shapes/funnel/prepare-data';
5
+ export * from '../../../core/shapes/funnel/types';
8
6
  const b = block('funnel');
9
7
  export const FunnelSeriesShapes = (args) => {
10
8
  const { dispatcher, preparedData, seriesOptions } = args;
11
- const hoveredDataRef = React.useRef(null);
12
9
  const ref = React.useRef(null);
13
10
  React.useEffect(() => {
14
- var _a, _b;
15
11
  if (!ref.current) {
16
12
  return () => { };
17
13
  }
18
- const svgElement = select(ref.current);
19
- const hoverOptions = (_b = (_a = seriesOptions.funnel) === null || _a === void 0 ? void 0 : _a.states) === null || _b === void 0 ? void 0 : _b.hover;
20
- svgElement.selectAll('*').remove();
21
- // funnel levels
22
- const cellsSelection = svgElement
23
- .selectAll('rect')
24
- .data(preparedData.items)
25
- .join('rect')
26
- .attr('x', (d) => d.x)
27
- .attr('y', (d) => d.y)
28
- .attr('height', (d) => d.height)
29
- .attr('width', (d) => d.width)
30
- .attr('fill', (d) => d.color)
31
- .attr('stroke', (d) => d.borderColor)
32
- .attr('stroke-width', (d) => d.borderWidth);
33
- // connectors
34
- const connectorAreaClassName = b('connector-area');
35
- svgElement
36
- .selectAll(`.${connectorAreaClassName}`)
37
- .data(preparedData.connectors)
38
- .join('path')
39
- .attr('d', (d) => d.areaPath.toString())
40
- .attr('class', connectorAreaClassName)
41
- .attr('fill', (d) => d.areaColor)
42
- .attr('opacity', (d) => d.areaOpacity);
43
- const connectorLineClassName = b('connector-line');
44
- const connectorLines = svgElement
45
- .selectAll(`.${connectorLineClassName}`)
46
- .data(preparedData.connectors)
47
- .join('g')
48
- .attr('class', connectorLineClassName)
49
- .attr('stroke', (d) => d.lineColor)
50
- .attr('stroke-width', (d) => d.lineWidth)
51
- .attr('stroke-dasharray', (d) => getLineDashArray(d.dashStyle, d.lineWidth))
52
- .attr('fill', 'none')
53
- .attr('opacity', (d) => d.lineOpacity);
54
- connectorLines.append('path').attr('d', (d) => d.linePath[0].toString());
55
- connectorLines.append('path').attr('d', (d) => d.linePath[1].toString());
56
- // dataLabels
57
- svgElement
58
- .selectAll('text')
59
- .data(preparedData.svgLabels)
60
- .join('text')
61
- .html((d) => d.text)
62
- .attr('class', b('label'))
63
- .attr('x', (d) => d.x)
64
- .attr('y', (d) => d.y)
65
- .style('font-size', (d) => d.style.fontSize)
66
- .style('font-weight', (d) => d.style.fontWeight || null)
67
- .style('fill', (d) => d.style.fontColor || null);
68
- function handleShapeHover(data) {
69
- hoveredDataRef.current = data;
70
- const hoverEnabled = hoverOptions === null || hoverOptions === void 0 ? void 0 : hoverOptions.enabled;
71
- if (hoverEnabled) {
72
- const hovered = data === null || data === void 0 ? void 0 : data.reduce((acc, d) => {
73
- acc.add(d.data);
74
- return acc;
75
- }, new Set());
76
- cellsSelection.attr('fill', (d) => {
77
- var _a;
78
- const fillColor = d.color;
79
- if (hovered === null || hovered === void 0 ? void 0 : hovered.has(d.data)) {
80
- return (((_a = color(fillColor)) === null || _a === void 0 ? void 0 : _a.brighter(hoverOptions.brightness).toString()) ||
81
- fillColor);
82
- }
83
- return fillColor;
84
- });
85
- }
86
- }
87
- if (hoveredDataRef.current !== null) {
88
- handleShapeHover(hoveredDataRef.current);
89
- }
90
- dispatcher === null || dispatcher === void 0 ? void 0 : dispatcher.on('hover-shape.funnel', handleShapeHover);
91
- return () => {
92
- dispatcher === null || dispatcher === void 0 ? void 0 : dispatcher.on('hover-shape.funnel', null);
93
- };
14
+ return renderFunnel({ plot: ref.current }, preparedData, seriesOptions, dispatcher);
94
15
  }, [dispatcher, preparedData, seriesOptions]);
95
16
  return (React.createElement(React.Fragment, null,
96
17
  React.createElement("g", { ref: ref, className: b() })));
@@ -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 { PreparedHeatmapData } from './types';
5
- export { prepareHeatmapData } from './prepare-data';
6
- export * from './types';
3
+ import type { PreparedSeriesOptions } from '../../../core/series/types';
4
+ import type { PreparedHeatmapData } from '../../../core/shapes/heatmap/types';
5
+ export { prepareHeatmapData } from '../../../core/shapes/heatmap/prepare-data';
6
+ export * from '../../../core/shapes/heatmap/types';
7
7
  type Args = {
8
8
  htmlLayout: HTMLElement | null;
9
9
  preparedData: PreparedHeatmapData;
@@ -1,73 +1,18 @@
1
1
  import React from 'react';
2
- import { color } from 'd3-color';
3
- import { select } from 'd3-selection';
2
+ import { renderHeatmap } from '../../../core/shapes/heatmap/renderer';
4
3
  import { block } from '../../../utils';
5
4
  import { HtmlLayer } from '../HtmlLayer';
6
- export { prepareHeatmapData } from './prepare-data';
7
- export * from './types';
5
+ export { prepareHeatmapData } from '../../../core/shapes/heatmap/prepare-data';
6
+ export * from '../../../core/shapes/heatmap/types';
8
7
  const b = block('heatmap');
9
8
  export const HeatmapSeriesShapes = (args) => {
10
9
  const { dispatcher, preparedData, seriesOptions, htmlLayout } = args;
11
- const hoveredDataRef = React.useRef(null);
12
10
  const ref = React.useRef(null);
13
11
  React.useEffect(() => {
14
- var _a, _b;
15
12
  if (!ref.current) {
16
13
  return () => { };
17
14
  }
18
- const svgElement = select(ref.current);
19
- const hoverOptions = (_b = (_a = seriesOptions.heatmap) === null || _a === void 0 ? void 0 : _a.states) === null || _b === void 0 ? void 0 : _b.hover;
20
- svgElement.selectAll('*').remove();
21
- // heatmap cells
22
- const cellsSelection = svgElement
23
- .selectAll('rect')
24
- .data(preparedData.items)
25
- .join('rect')
26
- .attr('x', (d) => d.x)
27
- .attr('y', (d) => d.y)
28
- .attr('height', (d) => d.height)
29
- .attr('width', (d) => d.width)
30
- .attr('fill', (d) => d.color)
31
- .attr('stroke', (d) => d.borderColor)
32
- .attr('stroke-width', (d) => d.borderWidth);
33
- // dataLabels
34
- svgElement
35
- .selectAll('text')
36
- .data(preparedData.labels)
37
- .join('text')
38
- .html((d) => d.text)
39
- .attr('class', b('label'))
40
- .attr('x', (d) => d.x)
41
- .attr('y', (d) => d.y)
42
- .style('font-size', (d) => d.style.fontSize)
43
- .style('font-weight', (d) => d.style.fontWeight || null)
44
- .style('fill', (d) => d.style.fontColor || null);
45
- function handleShapeHover(data) {
46
- hoveredDataRef.current = data;
47
- const hoverEnabled = hoverOptions === null || hoverOptions === void 0 ? void 0 : hoverOptions.enabled;
48
- if (hoverEnabled) {
49
- const hovered = data === null || data === void 0 ? void 0 : data.reduce((acc, d) => {
50
- acc.add(d.data);
51
- return acc;
52
- }, new Set());
53
- cellsSelection.attr('fill', (d) => {
54
- var _a;
55
- const fillColor = d.color;
56
- if (hovered === null || hovered === void 0 ? void 0 : hovered.has(d.data)) {
57
- return (((_a = color(fillColor)) === null || _a === void 0 ? void 0 : _a.brighter(hoverOptions.brightness).toString()) ||
58
- fillColor);
59
- }
60
- return fillColor;
61
- });
62
- }
63
- }
64
- if (hoveredDataRef.current !== null) {
65
- handleShapeHover(hoveredDataRef.current);
66
- }
67
- dispatcher === null || dispatcher === void 0 ? void 0 : dispatcher.on('hover-shape.heatmap', handleShapeHover);
68
- return () => {
69
- dispatcher === null || dispatcher === void 0 ? void 0 : dispatcher.on('hover-shape.heatmap', null);
70
- };
15
+ return renderHeatmap({ plot: ref.current }, preparedData, seriesOptions, dispatcher);
71
16
  }, [dispatcher, preparedData, seriesOptions]);
72
17
  return (React.createElement(React.Fragment, null,
73
18
  React.createElement("g", { ref: ref, className: b() }),
@@ -3,23 +3,21 @@ import type { Dispatch } from 'd3-dispatch';
3
3
  import type { SeriesType } from '../../core/constants';
4
4
  import type { PreparedSplit } from '../../core/layout/split-types';
5
5
  import type { ChartScale } from '../../core/scales/types';
6
+ import type { PreparedSeries, PreparedSeriesOptions } from '../../core/series/types';
7
+ import type { PreparedAreaData } from '../../core/shapes/area/types';
8
+ import type { PreparedBarXData } from '../../core/shapes/bar-x/types';
9
+ import type { PreparedBarYData } from '../../core/shapes/bar-y/types';
10
+ import type { PreparedFunnelData } from '../../core/shapes/funnel/types';
11
+ import type { PreparedHeatmapData } from '../../core/shapes/heatmap/types';
12
+ import type { PreparedLineData } from '../../core/shapes/line/types';
13
+ import type { PreparedPieData } from '../../core/shapes/pie/types';
14
+ import type { PreparedRadarData } from '../../core/shapes/radar/types';
15
+ import type { PreparedSankeyData } from '../../core/shapes/sankey/types';
16
+ import type { PreparedScatterData } from '../../core/shapes/scatter/types';
17
+ import type { PreparedWaterfallData } from '../../core/shapes/waterfall/types';
18
+ import type { PreparedXRangeData } from '../../core/shapes/x-range/types';
6
19
  import type { PreparedXAxis, PreparedYAxis } from '../useAxis/types';
7
- import type { PreparedSeries, PreparedSeriesOptions } from '../useSeries/types';
8
20
  import type { ZoomState } from '../useZoom/types';
9
- import type { PreparedAreaData } from './area/types';
10
- import type { PreparedBarXData } from './bar-x';
11
- import type { PreparedBarYData } from './bar-y/types';
12
- import type { PreparedFunnelData } from './funnel';
13
- import type { PreparedHeatmapData } from './heatmap';
14
- import type { PreparedLineData } from './line/types';
15
- import type { PreparedPieData } from './pie/types';
16
- import type { PreparedRadarData } from './radar/types';
17
- import type { PreparedSankeyData } from './sankey/types';
18
- import type { PreparedScatterData } from './scatter/types';
19
- export type { PreparedBarXData } from './bar-x';
20
- export type { PreparedScatterData } from './scatter/types';
21
- import type { PreparedWaterfallData } from './waterfall';
22
- import type { PreparedXRangeData } from './x-range';
23
21
  import './styles.css';
24
22
  export type ShapeData = PreparedBarXData | PreparedBarYData | PreparedScatterData | PreparedLineData | PreparedPieData | PreparedAreaData | PreparedWaterfallData | PreparedSankeyData | PreparedRadarData | PreparedHeatmapData | PreparedFunnelData | PreparedXRangeData;
25
23
  export type ClipPathBySeriesType = Partial<Record<SeriesType, boolean>>;
@@ -50,3 +48,4 @@ export declare const useShapes: (args: Args) => {
50
48
  shapesData: ShapeData[];
51
49
  shapesReady: boolean;
52
50
  };
51
+ export {};
@@ -1,25 +1,25 @@
1
1
  import React from 'react';
2
2
  import { group } from 'd3-array';
3
3
  import { SERIES_TYPE } from '../../core/constants';
4
+ import { prepareAreaData } from '../../core/shapes/area/prepare-data';
5
+ import { prepareLineData } from '../../core/shapes/line/prepare-data';
6
+ import { preparePieData } from '../../core/shapes/pie/prepare-data';
7
+ import { prepareRadarData } from '../../core/shapes/radar/prepare-data';
8
+ import { prepareSankeyData } from '../../core/shapes/sankey/prepare-data';
9
+ import { prepareTreemapData } from '../../core/shapes/treemap/prepare-data';
4
10
  import { getOnlyVisibleSeries } from '../../core/utils';
5
11
  import { ChartError } from '../../libs';
6
12
  import { AreaSeriesShapes } from './area';
7
- import { prepareAreaData } from './area/prepare-data';
8
13
  import { BarXSeriesShapes, prepareBarXData } from './bar-x';
9
14
  import { BarYSeriesShapes, prepareBarYData } from './bar-y';
10
15
  import { FunnelSeriesShapes, prepareFunnelData } from './funnel';
11
16
  import { HeatmapSeriesShapes, prepareHeatmapData } from './heatmap';
12
17
  import { LineSeriesShapes } from './line';
13
- import { prepareLineData } from './line/prepare-data';
14
18
  import { PieSeriesShapes } from './pie';
15
- import { preparePieData } from './pie/prepare-data';
16
19
  import { RadarSeriesShapes } from './radar';
17
- import { prepareRadarData } from './radar/prepare-data';
18
20
  import { SankeySeriesShape } from './sankey';
19
- import { prepareSankeyData } from './sankey/prepare-data';
20
21
  import { ScatterSeriesShape, prepareScatterData } from './scatter';
21
22
  import { TreemapSeriesShape } from './treemap';
22
- import { prepareTreemapData } from './treemap/prepare-data';
23
23
  import { getSeriesClipPathId } from './utils';
24
24
  import { WaterfallSeriesShapes, prepareWaterfallData } from './waterfall';
25
25
  import { XRangeSeriesShapes, prepareXRangeData } from './x-range';
@@ -217,13 +217,13 @@ export async function getShapes(args) {
217
217
  }
218
218
  break;
219
219
  }
220
- case 'funnel': {
220
+ case SERIES_TYPE.Funnel: {
221
221
  const preparedData = await prepareFunnelData({
222
222
  series: chartSeries,
223
223
  boundsWidth,
224
224
  boundsHeight,
225
225
  });
226
- shapes[index] = (React.createElement(FunnelSeriesShapes, { key: "funnel", dispatcher: dispatcher, preparedData: preparedData, seriesOptions: seriesOptions, htmlLayout: htmlLayout }));
226
+ shapes[index] = (React.createElement(FunnelSeriesShapes, { key: SERIES_TYPE.Funnel, dispatcher: dispatcher, preparedData: preparedData, seriesOptions: seriesOptions, htmlLayout: htmlLayout }));
227
227
  shapesData.splice(index, 0, preparedData);
228
228
  break;
229
229
  }
@@ -254,8 +254,8 @@ export async function getShapes(args) {
254
254
  }
255
255
  export const useShapes = (args) => {
256
256
  const { boundsWidth, boundsHeight, clipPathId, clipPathBySeriesType, dispatcher, htmlLayout, isOutsideBounds = IS_OUTSIDE_BOUNDS, isRangeSlider, series, seriesOptions, split, xAxis, xScale, yAxis, yScale, zoomState, } = args;
257
- const [shapesElemens, setShapesElements] = React.useState([]);
258
- const [shapesElemensData, setShapesElemensData] = React.useState([]);
257
+ const [shapesElements, setShapesElements] = React.useState([]);
258
+ const [shapesElementsData, setShapesElementsData] = React.useState([]);
259
259
  const shapesReadyRef = React.useRef(false);
260
260
  const countedRef = React.useRef(0);
261
261
  React.useEffect(() => {
@@ -286,7 +286,7 @@ export const useShapes = (args) => {
286
286
  if (countedRef.current === currentRun) {
287
287
  shapesReadyRef.current = true;
288
288
  setShapesElements(shapes);
289
- setShapesElemensData(shapesData);
289
+ setShapesElementsData(shapesData);
290
290
  }
291
291
  })();
292
292
  }, [
@@ -308,8 +308,8 @@ export const useShapes = (args) => {
308
308
  zoomState,
309
309
  ]);
310
310
  return {
311
- shapes: shapesElemens,
312
- shapesData: shapesElemensData,
311
+ shapes: shapesElements,
312
+ shapesData: shapesElementsData,
313
313
  shapesReady: shapesReadyRef.current,
314
314
  };
315
315
  };
@@ -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 { PreparedLineData } from './types';
3
+ import type { PreparedSeriesOptions } from '../../../core/series/types';
4
+ import type { PreparedLineData } from '../../../core/shapes/line/types';
5
5
  type Args = {
6
6
  boundsHeight: number;
7
7
  boundsWidth: number;