solid-recharts 1.0.0 → 2.0.0-beta.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 (488) hide show
  1. package/package.json +4 -6
  2. package/src/animation/AnimatedItems.tsx +4 -2
  3. package/src/animation/CSSTransitionAnimate.tsx +39 -41
  4. package/src/animation/JavascriptAnimate.tsx +41 -45
  5. package/src/cartesian/Area.tsx +4 -4
  6. package/src/cartesian/AreaRevealShape.tsx +1 -1
  7. package/src/cartesian/Bar.tsx +21 -33
  8. package/src/cartesian/BarStack.tsx +5 -5
  9. package/src/cartesian/Brush.tsx +15 -19
  10. package/src/cartesian/CartesianAxis.tsx +4 -4
  11. package/src/cartesian/CartesianGrid.tsx +5 -5
  12. package/src/cartesian/ErrorBar.tsx +7 -9
  13. package/src/cartesian/Funnel.tsx +3 -3
  14. package/src/cartesian/GraphicalItemClipPath.tsx +1 -1
  15. package/src/cartesian/Line.tsx +16 -18
  16. package/src/cartesian/LineDrawShape.tsx +13 -14
  17. package/src/cartesian/ReferenceArea.tsx +4 -4
  18. package/src/cartesian/ReferenceDot.tsx +4 -4
  19. package/src/cartesian/ReferenceLine.tsx +4 -4
  20. package/src/cartesian/RenderedTicksReporter.tsx +17 -19
  21. package/src/cartesian/Scatter.tsx +3 -3
  22. package/src/cartesian/XAxis.tsx +1 -1
  23. package/src/cartesian/YAxis.tsx +33 -35
  24. package/src/cartesian/ZAxis.tsx +2 -3
  25. package/src/chart/AreaChart.tsx +1 -1
  26. package/src/chart/BarChart.tsx +1 -1
  27. package/src/chart/CartesianChart.tsx +3 -4
  28. package/src/chart/CategoricalChart.tsx +5 -5
  29. package/src/chart/ComposedChart.tsx +1 -1
  30. package/src/chart/FunnelChart.tsx +1 -1
  31. package/src/chart/LineChart.tsx +1 -1
  32. package/src/chart/PieChart.tsx +3 -4
  33. package/src/chart/PolarChart.tsx +3 -4
  34. package/src/chart/RadarChart.tsx +3 -4
  35. package/src/chart/RadialBarChart.tsx +3 -7
  36. package/src/chart/RechartsWrapper.tsx +24 -14
  37. package/src/chart/Sankey.tsx +6 -9
  38. package/src/chart/ScatterChart.tsx +1 -1
  39. package/src/chart/SunburstChart.tsx +4 -5
  40. package/src/chart/Treemap.tsx +4 -5
  41. package/src/component/ActivePoints.tsx +6 -6
  42. package/src/component/Cell.tsx +5 -23
  43. package/src/component/Cursor.tsx +3 -3
  44. package/src/component/DefaultLegendContent.tsx +6 -8
  45. package/src/component/DefaultTooltipContent.tsx +10 -14
  46. package/src/component/Dots.tsx +5 -5
  47. package/src/component/Label.tsx +10 -13
  48. package/src/component/LabelList.tsx +7 -12
  49. package/src/component/Legend.tsx +21 -26
  50. package/src/component/ResponsiveContainer.tsx +49 -52
  51. package/src/component/Text.tsx +5 -5
  52. package/src/component/Tooltip.tsx +18 -21
  53. package/src/component/TooltipBoundingBox.tsx +16 -18
  54. package/src/component/responsiveContainerUtils.ts +1 -1
  55. package/src/container/ClipPathProvider.tsx +3 -3
  56. package/src/container/Layer.tsx +5 -5
  57. package/src/container/RootSurface.tsx +1 -1
  58. package/src/container/Surface.tsx +6 -5
  59. package/src/context/ErrorBarContext.tsx +2 -2
  60. package/src/context/PanoramaContext.tsx +2 -2
  61. package/src/context/RegisterGraphicalItemId.tsx +2 -4
  62. package/src/context/chartDataContext.tsx +23 -26
  63. package/src/context/chartLayoutContext.tsx +12 -16
  64. package/src/polar/Pie.tsx +12 -13
  65. package/src/polar/PolarAngleAxis.tsx +3 -3
  66. package/src/polar/PolarGrid.tsx +5 -5
  67. package/src/polar/PolarRadiusAxis.tsx +3 -3
  68. package/src/polar/Radar.tsx +3 -3
  69. package/src/polar/RadialBar.tsx +3 -3
  70. package/src/shape/Cross.tsx +5 -5
  71. package/src/shape/Curve.tsx +7 -6
  72. package/src/shape/Dot.tsx +4 -4
  73. package/src/shape/Polygon.tsx +5 -5
  74. package/src/shape/Rectangle.tsx +20 -22
  75. package/src/shape/Sector.tsx +5 -5
  76. package/src/shape/Symbols.tsx +5 -5
  77. package/src/shape/Trapezoid.tsx +27 -29
  78. package/src/state/RechartsStoreProvider.tsx +3 -5
  79. package/src/state/ReportChartProps.tsx +6 -8
  80. package/src/state/ReportEventSettings.tsx +6 -8
  81. package/src/state/ReportMainChartProps.tsx +9 -11
  82. package/src/state/ReportPolarOptions.tsx +13 -15
  83. package/src/state/SetLegendPayload.ts +1 -1
  84. package/src/state/SetTooltipEntrySettings.tsx +1 -1
  85. package/src/state/brushSlice.ts +8 -10
  86. package/src/state/cartesianAxisSlice.ts +38 -46
  87. package/src/state/chartDataSlice.ts +23 -29
  88. package/src/state/errorBarSlice.ts +16 -22
  89. package/src/state/eventSettingsSlice.ts +9 -11
  90. package/src/state/graphicalItemsSlice.ts +13 -17
  91. package/src/state/layoutSlice.ts +19 -27
  92. package/src/state/legendSlice.ts +18 -24
  93. package/src/state/optionsSlice.ts +6 -8
  94. package/src/state/polarAxisSlice.ts +13 -21
  95. package/src/state/polarOptionsSlice.ts +14 -16
  96. package/src/state/referenceElementsSlice.ts +19 -25
  97. package/src/state/registerInStore.ts +13 -15
  98. package/src/state/renderedTicksSlice.ts +7 -11
  99. package/src/state/rootPropsSlice.ts +14 -16
  100. package/src/state/tooltipSlice.ts +95 -115
  101. package/src/state/unregisterOnCleanup.ts +20 -5
  102. package/src/state/zIndexSlice.ts +42 -50
  103. package/src/synchronisation/useChartSynchronisation.tsx +217 -213
  104. package/src/util/ActiveShapeUtils.tsx +2 -2
  105. package/src/util/BarUtils.tsx +3 -5
  106. package/src/util/FunnelUtils.tsx +1 -1
  107. package/src/util/RadialBarUtils.tsx +3 -4
  108. package/src/util/createCartesianCharts.tsx +1 -1
  109. package/src/util/createPolarCharts.tsx +1 -1
  110. package/src/util/svgPropertiesAndEvents.ts +1 -1
  111. package/src/util/tooltip/translate.ts +2 -2
  112. package/src/util/types.ts +2 -2
  113. package/src/zIndex/ZIndexLayer.tsx +68 -39
  114. package/src/zIndex/ZIndexPortal.tsx +25 -29
  115. package/test/_data.ts +408 -0
  116. package/test/animation/AnimationController.typed.spec.ts +53 -0
  117. package/test/animation/AnimationControllerImpl.spec.ts +271 -0
  118. package/test/animation/CSSTransitionAnimate.timing.spec.tsx +473 -0
  119. package/test/animation/JavascriptAnimate.spec.tsx +62 -0
  120. package/test/animation/RechartsAnimation.spec.ts +636 -0
  121. package/test/animation/easing.spec.ts +218 -0
  122. package/test/animation/legacyAnimationLengthChange.spec.tsx +803 -0
  123. package/test/animation/matchBy.spec.ts +467 -0
  124. package/test/animation/mockAnimationController.ts +40 -0
  125. package/test/animation/mockControllerAnimationManager.ts +143 -0
  126. package/test/animation/mockTimeoutController.ts +114 -0
  127. package/test/animation/timeoutController.spec.ts +138 -0
  128. package/test/animation/useAnimationStartSnapshot.spec.ts +147 -0
  129. package/test/animation/util.spec.ts +28 -0
  130. package/test/cartesian/Area.animation.spec.tsx +363 -0
  131. package/test/cartesian/Area.range.spec.tsx +54 -0
  132. package/test/cartesian/Area.spec.tsx +1202 -0
  133. package/test/cartesian/Area.stacked.render.spec.tsx +69 -0
  134. package/test/cartesian/Area.typed.spec.tsx +209 -0
  135. package/test/cartesian/Axis.integration.spec.tsx +158 -0
  136. package/test/cartesian/Bar/Bar.csstransition.spec.tsx +299 -0
  137. package/test/cartesian/Bar/Bar.spec.tsx +2314 -0
  138. package/test/cartesian/Bar/Bar.typed.spec.tsx +192 -0
  139. package/test/cartesian/Bar.animation.spec.tsx +426 -0
  140. package/test/cartesian/Bar.stackDomain.spec.tsx +66 -0
  141. package/test/cartesian/Bar.stacked.render.spec.tsx +53 -0
  142. package/test/cartesian/Bar.truncateByDomain.spec.tsx +237 -0
  143. package/test/cartesian/Bar.zeroDimensionFiltering.spec.tsx +336 -0
  144. package/test/cartesian/BarStack.spec.tsx +91 -0
  145. package/test/cartesian/Brush.keyboard.spec.tsx +88 -0
  146. package/test/cartesian/Brush.panorama.spec.tsx +41 -0
  147. package/test/cartesian/Brush.props.spec.tsx +63 -0
  148. package/test/cartesian/Brush.render.spec.tsx +117 -0
  149. package/test/cartesian/Brush.spec.tsx +522 -0
  150. package/test/cartesian/Brush.stacked.spec.tsx +221 -0
  151. package/test/cartesian/CartesianAxis.render.spec.tsx +50 -0
  152. package/test/cartesian/CartesianAxis.spec.tsx +396 -0
  153. package/test/cartesian/CartesianGrid.render.spec.tsx +39 -0
  154. package/test/cartesian/CartesianGrid.spec.tsx +2103 -0
  155. package/test/cartesian/ErrorBar.render.spec.tsx +69 -0
  156. package/test/cartesian/ErrorBar.spec.tsx +2414 -0
  157. package/test/cartesian/Funnel.animation.spec.tsx +241 -0
  158. package/test/cartesian/Funnel.spec.tsx +226 -0
  159. package/test/cartesian/Funnel.typed.spec.tsx +221 -0
  160. package/test/cartesian/GraphicalItemClipPath.scale-behavior.spec.tsx +627 -0
  161. package/test/cartesian/GraphicalItemClipPath.spec.tsx +427 -0
  162. package/test/cartesian/Line.animation.spec.tsx +643 -0
  163. package/test/cartesian/Line.sparseAnimationPath.spec.tsx +98 -0
  164. package/test/cartesian/Line.spec.tsx +471 -0
  165. package/test/cartesian/Line.typed.spec.tsx +152 -0
  166. package/test/cartesian/ReferenceArea.render.spec.tsx +63 -0
  167. package/test/cartesian/ReferenceArea.spec.tsx +663 -0
  168. package/test/cartesian/ReferenceArea.typed.spec.tsx +74 -0
  169. package/test/cartesian/ReferenceDot.render.spec.tsx +55 -0
  170. package/test/cartesian/ReferenceDot.spec.tsx +462 -0
  171. package/test/cartesian/ReferenceDot.typed.spec.tsx +76 -0
  172. package/test/cartesian/ReferenceLine/ReferenceLine.panorama.spec.tsx +184 -0
  173. package/test/cartesian/ReferenceLine/ReferenceLine.spec.tsx +744 -0
  174. package/test/cartesian/ReferenceLine/ReferenceLine.typed.spec.tsx +74 -0
  175. package/test/cartesian/ReferenceLine/getEndPoints.spec.ts +399 -0
  176. package/test/cartesian/ReferenceLine.render.spec.tsx +134 -0
  177. package/test/cartesian/Scatter.animation.spec.tsx +381 -0
  178. package/test/cartesian/Scatter.render.spec.tsx +61 -0
  179. package/test/cartesian/Scatter.spec.tsx +406 -0
  180. package/test/cartesian/Scatter.typed.spec.tsx +153 -0
  181. package/test/cartesian/XAxis/XAxis.barSize.spec.tsx +336 -0
  182. package/test/cartesian/XAxis/XAxis.brush.spec.tsx +266 -0
  183. package/test/cartesian/XAxis/XAxis.categorydomain.spec.tsx +872 -0
  184. package/test/cartesian/XAxis/XAxis.dataKey.spec.tsx +86 -0
  185. package/test/cartesian/XAxis/XAxis.datatypes.spec.tsx +127 -0
  186. package/test/cartesian/XAxis/XAxis.hide.spec.tsx +106 -0
  187. package/test/cartesian/XAxis/XAxis.multiaxis.spec.tsx +336 -0
  188. package/test/cartesian/XAxis/XAxis.numberdomain.spec.tsx +1466 -0
  189. package/test/cartesian/XAxis/XAxis.padding.spec.tsx +758 -0
  190. package/test/cartesian/XAxis/XAxis.padding_clip.spec.tsx +65 -0
  191. package/test/cartesian/XAxis/XAxis.state.spec.tsx +355 -0
  192. package/test/cartesian/XAxis/XAxis.tick.spec.tsx +493 -0
  193. package/test/cartesian/XAxis/XAxis.timescale.spec.tsx +233 -0
  194. package/test/cartesian/XAxis/XAxis.type.spec.tsx +107 -0
  195. package/test/cartesian/XAxis/XAxis.typed.spec.tsx +102 -0
  196. package/test/cartesian/XAxis/XAxis.vertical.spec.tsx +265 -0
  197. package/test/cartesian/XAxis.tickFormatter.spec.tsx +54 -0
  198. package/test/cartesian/YAxis/YAxis.7362.derivedDomain.spec.tsx +230 -0
  199. package/test/cartesian/YAxis/YAxis.7362.spec.tsx +104 -0
  200. package/test/cartesian/YAxis/YAxis.interval-zero.spec.tsx +88 -0
  201. package/test/cartesian/YAxis/YAxis.label.spec.tsx +219 -0
  202. package/test/cartesian/YAxis/YAxis.spec.tsx +1595 -0
  203. package/test/cartesian/YAxis/YAxis.tick.spec.tsx +428 -0
  204. package/test/cartesian/YAxis/YAxis.tickFormatter.spec.tsx +54 -0
  205. package/test/cartesian/YAxis/YAxis.ticks.spec.tsx +263 -0
  206. package/test/cartesian/YAxis/YAxis.type.spec.tsx +107 -0
  207. package/test/cartesian/YAxis/YAxis.typed.spec.tsx +102 -0
  208. package/test/cartesian/ZAxis.spec.tsx +300 -0
  209. package/test/cartesian/ZAxis.typed.spec.tsx +33 -0
  210. package/test/cartesian/__snapshots__/Brush.spec.tsx.snap +5 -0
  211. package/test/cartesian/axisLineAndStroke.spec.tsx +72 -0
  212. package/test/cartesian/getCartesianPosition.spec.ts +907 -0
  213. package/test/cartesian/getEquidistantTicks.spec.ts +88 -0
  214. package/test/cartesian/getTicks.spec.ts +378 -0
  215. package/test/cartesian/miscFeatureGaps.spec.tsx +89 -0
  216. package/test/cartesian/useAnimatedLineLength.spec.ts +168 -0
  217. package/test/chart/AccessibilityLayer.spec.tsx +569 -0
  218. package/test/chart/AccessibilityScans.spec.tsx +286 -0
  219. package/test/chart/AreaChart.spec.tsx +409 -0
  220. package/test/chart/AreaChart.stacked.spec.tsx +1407 -0
  221. package/test/chart/AreaChart.typed.spec.tsx +39 -0
  222. package/test/chart/BarChart.spec.tsx +3719 -0
  223. package/test/chart/BarChart.typed.spec.tsx +60 -0
  224. package/test/chart/CategoricalChart.spec.tsx +255 -0
  225. package/test/chart/ComposedChart.spec.tsx +199 -0
  226. package/test/chart/ComposedChart.typed.spec.tsx +39 -0
  227. package/test/chart/FunnelChart.spec.tsx +215 -0
  228. package/test/chart/FunnelChart.typed.spec.tsx +39 -0
  229. package/test/chart/LineChart.multiseries.spec.tsx +50 -0
  230. package/test/chart/LineChart.smoke.spec.tsx +50 -0
  231. package/test/chart/LineChart.spec.tsx +930 -0
  232. package/test/chart/LineChart.typed.spec.tsx +39 -0
  233. package/test/chart/NicheChartTooltip.spec.tsx +81 -0
  234. package/test/chart/PieChart.spec.tsx +793 -0
  235. package/test/chart/PieChart.typed.spec.tsx +39 -0
  236. package/test/chart/RadarChart.spec.tsx +530 -0
  237. package/test/chart/RadarChart.typed.spec.tsx +39 -0
  238. package/test/chart/RadialBarChart.5966.spec.tsx +48 -0
  239. package/test/chart/RadialBarChart.spec.tsx +679 -0
  240. package/test/chart/RadialBarChart.typed.spec.tsx +39 -0
  241. package/test/chart/RechartsWrapper.spec.tsx +83 -0
  242. package/test/chart/Sankey.content.spec.tsx +46 -0
  243. package/test/chart/Sankey.spec.tsx +952 -0
  244. package/test/chart/Sankey.typed.spec.tsx +29 -0
  245. package/test/chart/ScatterChart.spec.tsx +2613 -0
  246. package/test/chart/ScatterChart.typed.spec.tsx +39 -0
  247. package/test/chart/SunburstChart.spec.tsx +146 -0
  248. package/test/chart/Treemap.animation.spec.tsx +52 -0
  249. package/test/chart/Treemap.spec.tsx +1003 -0
  250. package/test/chart/Treemap.typed.spec.tsx +26 -0
  251. package/test/chart/chartEvents.spec.tsx +127 -0
  252. package/test/chart/responsive.spec.tsx +620 -0
  253. package/test/component/Cell.render.spec.tsx +155 -0
  254. package/test/component/Cell.spec.tsx +12 -0
  255. package/test/component/Cursor.spec.tsx +186 -0
  256. package/test/component/DefaultTooltipContent.spec.tsx +102 -0
  257. package/test/component/Label.render.spec.tsx +63 -0
  258. package/test/component/Label.spec.tsx +686 -0
  259. package/test/component/Label.typed.spec.tsx +46 -0
  260. package/test/component/LabelList.spec.tsx +188 -0
  261. package/test/component/Legend.itemSorter.spec.tsx +704 -0
  262. package/test/component/Legend.render.spec.tsx +92 -0
  263. package/test/component/Legend.spec.tsx +2213 -0
  264. package/test/component/Legend.typed.spec.tsx +22 -0
  265. package/test/component/ResponsiveContainer.spec.tsx +523 -0
  266. package/test/component/ResponsiveContainerDataTest.spec.tsx +51 -0
  267. package/test/component/Text.spec.tsx +415 -0
  268. package/test/component/Text.typed.spec.tsx +46 -0
  269. package/test/component/Tooltip/ActiveDot.spec.tsx +370 -0
  270. package/test/component/Tooltip/Tooltip.animation.spec.tsx +209 -0
  271. package/test/component/Tooltip/Tooltip.content.spec.tsx +128 -0
  272. package/test/component/Tooltip/Tooltip.formatter.spec.tsx +152 -0
  273. package/test/component/Tooltip/Tooltip.includeHidden.spec.tsx +79 -0
  274. package/test/component/Tooltip/Tooltip.multipleDataArrays.spec.tsx +165 -0
  275. package/test/component/Tooltip/Tooltip.offset.spec.tsx +113 -0
  276. package/test/component/Tooltip/Tooltip.state.spec.tsx +74 -0
  277. package/test/component/Tooltip/Tooltip.sync.spec.tsx +639 -0
  278. package/test/component/Tooltip/defaultIndex.spec.tsx +227 -0
  279. package/test/component/Tooltip/graphicalItem.formatter.spec.tsx +138 -0
  280. package/test/component/Tooltip/itemSorter.spec.tsx +2815 -0
  281. package/test/component/Tooltip/tooltipEventType.spec.tsx +344 -0
  282. package/test/component/Tooltip/tooltipMouseHoverSelectors.ts +41 -0
  283. package/test/component/Tooltip/tooltipTestHelpers.tsx +162 -0
  284. package/test/component/Tooltip.defaultIndex.spec.tsx +48 -0
  285. package/test/component/Tooltip.hover.spec.tsx +61 -0
  286. package/test/component/Tooltip.item.spec.tsx +54 -0
  287. package/test/component/Tooltip.keyboard.spec.tsx +51 -0
  288. package/test/component/Tooltip.payload.spec.tsx +1716 -0
  289. package/test/component/Tooltip.touch.spec.tsx +39 -0
  290. package/test/component/Tooltip.visibility.spec.tsx +1889 -0
  291. package/test/component/TooltipBoundingBox.spec.tsx +89 -0
  292. package/test/component/responsiveContainerUtils.spec.ts +205 -0
  293. package/test/container/ClipPath.spec.tsx +602 -0
  294. package/test/container/chartDimensions.spec.tsx +368 -0
  295. package/test/context/chartLayoutContext.spec.tsx +378 -0
  296. package/test/helper/ExpectAxisDomain.tsx +27 -0
  297. package/test/helper/assertNotNull.ts +6 -0
  298. package/test/helper/assertZIndexLayerOrder.ts +19 -0
  299. package/test/helper/createSelectorTestCase.tsx +176 -0
  300. package/test/helper/expectAnimatedPieAngles.ts +100 -0
  301. package/test/helper/expectAnimatedPiePaths.ts +78 -0
  302. package/test/helper/expectAreaCurve.ts +15 -0
  303. package/test/helper/expectAxisTicks.ts +48 -0
  304. package/test/helper/expectBars.ts +54 -0
  305. package/test/helper/expectFunctionReturning.ts +58 -0
  306. package/test/helper/expectLabel.ts +32 -0
  307. package/test/helper/expectLastCalledWith.ts +48 -0
  308. package/test/helper/expectLine.ts +20 -0
  309. package/test/helper/expectPieSectors.ts +80 -0
  310. package/test/helper/expectScale.ts +37 -0
  311. package/test/helper/expectScatterPoints.ts +52 -0
  312. package/test/helper/expectStackGroups.ts +144 -0
  313. package/test/helper/mockAxes.ts +22 -0
  314. package/test/helper/mockGetBoundingClientRect.ts +66 -0
  315. package/test/helper/mockHTMLElementProperty.ts +19 -0
  316. package/test/helper/mockTouchingElement.ts +27 -0
  317. package/test/helper/offsetHelpers.ts +19 -0
  318. package/test/helper/parameterizedTestCases.tsx +99 -0
  319. package/test/helper/produceState.ts +32 -0
  320. package/test/helper/selectorTestHelpers.tsx +63 -0
  321. package/test/helper/trim.spec.ts +35 -0
  322. package/test/helper/trim.ts +11 -0
  323. package/test/hooks/useActiveTooltipDataPoints.spec.tsx +358 -0
  324. package/test/hooks/useAxisDomain.spec.tsx +361 -0
  325. package/test/hooks/useAxisScale.spec.tsx +283 -0
  326. package/test/hooks/useAxisTicks.spec.tsx +130 -0
  327. package/test/hooks/useOffset.spec.tsx +248 -0
  328. package/test/hooks/useTooltipStateHooks.spec.tsx +109 -0
  329. package/test/polar/Pie/Pie-TwoLevelPieChart.spec.tsx +135 -0
  330. package/test/polar/Pie/Pie.spec.tsx +784 -0
  331. package/test/polar/Pie/Pie.typed.spec.tsx +78 -0
  332. package/test/polar/Pie.animation.spec.tsx +529 -0
  333. package/test/polar/PieWithLegend.animation.spec.tsx +142 -0
  334. package/test/polar/PolarAngleAxis/PolarAngleAxis.events.spec.tsx +76 -0
  335. package/test/polar/PolarAngleAxis/PolarAngleAxis.spec.tsx +2079 -0
  336. package/test/polar/PolarAngleAxis/PolarAngleAxis.typed.spec.tsx +102 -0
  337. package/test/polar/PolarAngleAxis.render.spec.tsx +79 -0
  338. package/test/polar/PolarGrid.render.spec.tsx +75 -0
  339. package/test/polar/PolarGrid.spec.tsx +918 -0
  340. package/test/polar/PolarLegendPerRow.render.spec.tsx +85 -0
  341. package/test/polar/PolarRadiusAxis.events.spec.tsx +65 -0
  342. package/test/polar/PolarRadiusAxis.render.spec.tsx +52 -0
  343. package/test/polar/PolarRadiusAxis.spec.tsx +991 -0
  344. package/test/polar/PolarRadiusAxis.typed.spec.tsx +84 -0
  345. package/test/polar/PolarTooltipLegend.render.spec.tsx +80 -0
  346. package/test/polar/Radar.animation.spec.tsx +570 -0
  347. package/test/polar/Radar.render.spec.tsx +71 -0
  348. package/test/polar/Radar.spec.tsx +265 -0
  349. package/test/polar/Radar.typed.spec.tsx +119 -0
  350. package/test/polar/RadialBar/RadialBar.spec.tsx +1521 -0
  351. package/test/polar/RadialBar/RadialBar.typed.spec.tsx +132 -0
  352. package/test/polar/RadialBar.animation.spec.tsx +375 -0
  353. package/test/polar/RadialBar.render.spec.tsx +66 -0
  354. package/test/polar/RadialBar.stacked.spec.tsx +57 -0
  355. package/test/setup.ts +84 -0
  356. package/test/shape/ActiveShape.spec.tsx +181 -0
  357. package/test/shape/Cross.spec.tsx +60 -0
  358. package/test/shape/Cross.typed.spec.tsx +26 -0
  359. package/test/shape/Curve.spec.tsx +368 -0
  360. package/test/shape/Curve.typed.spec.tsx +69 -0
  361. package/test/shape/Dot.spec.tsx +73 -0
  362. package/test/shape/Dot.typed.spec.tsx +30 -0
  363. package/test/shape/Polygon.spec.tsx +357 -0
  364. package/test/shape/Polygon.typed.spec.tsx +28 -0
  365. package/test/shape/Rectangle.animation.spec.tsx +451 -0
  366. package/test/shape/Rectangle.spec.tsx +68 -0
  367. package/test/shape/Rectangle.typed.spec.tsx +24 -0
  368. package/test/shape/Sector.spec.tsx +76 -0
  369. package/test/shape/Sector.typed.spec.tsx +24 -0
  370. package/test/shape/Symbols.spec.tsx +43 -0
  371. package/test/shape/Symbols.typed.spec.tsx +24 -0
  372. package/test/shape/Trapezoid.spec.tsx +50 -0
  373. package/test/shape/Trapezoid.typed.spec.tsx +24 -0
  374. package/test/shape/__snapshots__/Cross.spec.tsx.snap +62 -0
  375. package/test/shape/__snapshots__/Curve.spec.tsx.snap +460 -0
  376. package/test/shape/__snapshots__/Polygon.spec.tsx.snap +58 -0
  377. package/test/shape/__snapshots__/Rectangle.spec.tsx.snap +117 -0
  378. package/test/shape/__snapshots__/Sector.spec.tsx.snap +71 -0
  379. package/test/shape/__snapshots__/Trapezoid.spec.tsx.snap +64 -0
  380. package/test/state/chartDataSlice.spec.ts +53 -0
  381. package/test/state/createCollectionActions.spec.ts +87 -0
  382. package/test/state/createSelector.spec.ts +158 -0
  383. package/test/state/externalEventsMiddleware.spec.ts +178 -0
  384. package/test/state/graphicalItemsSlice.spec.ts +92 -0
  385. package/test/state/hooks.spec.tsx +68 -0
  386. package/test/state/legendSlice.spec.ts +44 -0
  387. package/test/state/mouseEventsMiddleware.spec.ts +75 -0
  388. package/test/state/optionsSlice.spec.ts +19 -0
  389. package/test/state/referenceElementsSlice.spec.ts +84 -0
  390. package/test/state/registerInStore.spec.tsx +101 -0
  391. package/test/state/selectors/areaSelectors.spec.tsx +77 -0
  392. package/test/state/selectors/axisSelectors.spec.tsx +1418 -0
  393. package/test/state/selectors/barStackSelectors.spec.tsx +752 -0
  394. package/test/state/selectors/brushSelectors.spec.tsx +30 -0
  395. package/test/state/selectors/cartesianAxisSlice.spec.ts +96 -0
  396. package/test/state/selectors/combineNiceTicks.spec.ts +207 -0
  397. package/test/state/selectors/combiners/combineActiveTooltipIndex.spec.ts +61 -0
  398. package/test/state/selectors/combiners/combineAllBarPositions.spec.ts +39 -0
  399. package/test/state/selectors/combiners/combineConfiguredScale.spec.ts +56 -0
  400. package/test/state/selectors/combiners/combineDisplayedStackedData.spec.ts +123 -0
  401. package/test/state/selectors/combiners/combineRealScaleType.spec.ts +80 -0
  402. package/test/state/selectors/containerSelectors.spec.tsx +168 -0
  403. package/test/state/selectors/dataSelectors.spec.tsx +136 -0
  404. package/test/state/selectors/legendSelectors.spec.tsx +113 -0
  405. package/test/state/selectors/lineSelectors.spec.tsx +60 -0
  406. package/test/state/selectors/pieSelectors.spec.tsx +72 -0
  407. package/test/state/selectors/radarSelectors.spec.tsx +496 -0
  408. package/test/state/selectors/rootPropsSelectors.spec.tsx +169 -0
  409. package/test/state/selectors/scatterSelectors.spec.tsx +47 -0
  410. package/test/state/selectors/selectActiveTooltipIndex.spec.tsx +234 -0
  411. package/test/state/selectors/selectAllAxes.spec.tsx +18 -0
  412. package/test/state/selectors/selectAxisDomain.spec.tsx +21 -0
  413. package/test/state/selectors/selectAxisDomainIncludingNiceTicks.spec.tsx +19 -0
  414. package/test/state/selectors/selectAxisRangeWithReverse.spec.tsx +22 -0
  415. package/test/state/selectors/selectAxisScale.spec.tsx +91 -0
  416. package/test/state/selectors/selectBarRectangles.stackOffset.spec.tsx +503 -0
  417. package/test/state/selectors/selectBaseAxis.spec.tsx +56 -0
  418. package/test/state/selectors/selectCartesianItemsSettings.spec.tsx +57 -0
  419. package/test/state/selectors/selectChartOffset.spec.tsx +26 -0
  420. package/test/state/selectors/selectDisplayedData.spec.tsx +282 -0
  421. package/test/state/selectors/selectIsTooltipActive.spec.tsx +231 -0
  422. package/test/state/selectors/selectNumericalDomain.spec.tsx +21 -0
  423. package/test/state/selectors/selectRealScaleType.spec.tsx +19 -0
  424. package/test/state/selectors/selectStackGroups.spec.tsx +322 -0
  425. package/test/state/selectors/selectXAxisPosition.spec.tsx +22 -0
  426. package/test/state/selectors/selectYAxisPosition.spec.tsx +22 -0
  427. package/test/state/selectors/selectorMemoization.spec.tsx +136 -0
  428. package/test/state/selectors/selectors.spec.tsx +1613 -0
  429. package/test/state/throttling.spec.ts +200 -0
  430. package/test/state/zIndexSlice.spec.ts +85 -0
  431. package/test/synchronisation/useChartSynchronisation.spec.tsx +225 -0
  432. package/test/util/BarUtils.spec.ts +39 -0
  433. package/test/util/CartesianUtils/CartesianUtils.spec.ts +261 -0
  434. package/test/util/CartesianUtils/rectWithPoints.spec.ts +48 -0
  435. package/test/util/ChartUtils/ChartUtils.spec.ts +491 -0
  436. package/test/util/ChartUtils/appendOffsetOfLegend.spec.ts +136 -0
  437. package/test/util/ChartUtils/appendOffsetOfLegend.spec.tsx +133 -0
  438. package/test/util/ChartUtils/getCateCoordinateOfLine.spec.ts +97 -0
  439. package/test/util/ChartUtils/getStackedData.spec.ts +416 -0
  440. package/test/util/ChartUtils/truncateByDomain.spec.ts +70 -0
  441. package/test/util/DataUtils.spec.ts +385 -0
  442. package/test/util/DomUtils.spec.tsx +117 -0
  443. package/test/util/FunnelUtils.spec.tsx +70 -0
  444. package/test/util/Global.spec.ts +11 -0
  445. package/test/util/LRUCache.spec.ts +81 -0
  446. package/test/util/LogUtils.spec.ts +45 -0
  447. package/test/util/PolarUtils.spec.ts +66 -0
  448. package/test/util/ReduceCssCalcPrototype.spec.ts +141 -0
  449. package/test/util/ShallowEqual.spec.ts +102 -0
  450. package/test/util/TickUtils.spec.ts +29 -0
  451. package/test/util/createChartHelpers.spec.tsx +210 -0
  452. package/test/util/cursor/getCursorPoints.spec.ts +136 -0
  453. package/test/util/cursor/getCursorRectangle.spec.ts +50 -0
  454. package/test/util/cursor/getRadialCursorPoints.spec.ts +36 -0
  455. package/test/util/errorValue.spec.ts +69 -0
  456. package/test/util/getEveryNth.spec.ts +39 -0
  457. package/test/util/getRadiusAndStrokeWidthFromDot.spec.ts +51 -0
  458. package/test/util/getRelativeCoordinate.spec.ts +250 -0
  459. package/test/util/getSliced.spec.ts +45 -0
  460. package/test/util/isDomainSpecifiedByUser.spec.ts +207 -0
  461. package/test/util/isWellBehavedNumber.spec.ts +54 -0
  462. package/test/util/payload/getUniqPayload.spec.ts +56 -0
  463. package/test/util/propsAreEqual.spec.ts +75 -0
  464. package/test/util/round.spec.ts +112 -0
  465. package/test/util/scale/arithmetic.spec.ts +61 -0
  466. package/test/util/scale/createCategoricalInverse.spec.ts +84 -0
  467. package/test/util/scale/getNiceTickValues.spec.ts +421 -0
  468. package/test/util/scale/getTickValuesFixedDomain.spec.ts +155 -0
  469. package/test/util/svgPropertiesAndEvents.spec.tsx +206 -0
  470. package/test/util/svgPropertiesNoEvents.spec.tsx +228 -0
  471. package/test/util/tooltip/translate.spec.ts +396 -0
  472. package/test/util/useAnimationId.spec.tsx +59 -0
  473. package/test/util/useElementOffset.spec.tsx +173 -0
  474. package/test/util/usePrefersReducedMotion.spec.ts +54 -0
  475. package/test/util/useUniqueId.spec.ts +99 -0
  476. package/test/utils/diagnostics-allowlist.ts +18 -0
  477. package/test/utils/diagnostics.ts +58 -0
  478. package/test/zIndex/AllZIndexPortals.spec.tsx +83 -0
  479. package/test/zIndex/DefaultZIndexes.spec.ts +80 -0
  480. package/test/zIndex/DynamicZIndex.spec.tsx +102 -0
  481. package/test/zIndex/ZIndexLayer.portalOwner.spec.tsx +125 -0
  482. package/test/zIndex/componentZIndex.spec.tsx +255 -0
  483. package/test/zIndex/getZIndexFromUnknown.spec.ts +51 -0
  484. package/test/zIndex/multiChartZIndexIsolation.spec.tsx +90 -0
  485. package/test/zIndex/zIndexSelectors.spec.ts +172 -0
  486. package/test-results/.last-run.json +4 -0
  487. package/tsconfig.json +11 -0
  488. package/src/util/DirectPortal.tsx +0 -107
@@ -20,10 +20,10 @@
20
20
  // `any`); the value comes from `getValueByDataKey`, which is genuinely
21
21
  // untyped, and only x/y are needed to draw. It flows through `scale.map`
22
22
  // (which accepts `unknown`) unchanged.
23
- import { createMemo, createSignal, Show, untrack, mergeProps, createEffect, on } from "solid-js";
23
+ import { createEffect, createMemo, createSignal, merge, Show, untrack } from "solid-js";
24
24
  import { useActiveTooltipDataPoints } from "../hooks";
25
25
  import { selectActiveTooltipIndex } from "../state/selectors/tooltipSelectors";
26
- import type { JSX } from "solid-js";
26
+ import type { JSX } from "@solidjs/web";
27
27
  import { useAppSelector, useAppStore } from "../state/hooks";
28
28
  import {
29
29
  AnimatedItems,
@@ -341,7 +341,7 @@ export const lineDefaultProps = {
341
341
 
342
342
  export const Line = (props: LineProps): JSX.Element => {
343
343
  const store = useAppStore();
344
- const merged = mergeProps(lineDefaultProps, props);
344
+ const merged = merge(lineDefaultProps, props);
345
345
  const isPanorama = useIsPanorama();
346
346
  const layout = useCartesianChartLayout();
347
347
  const id = useUniqueId("recharts-line", props.id);
@@ -499,21 +499,19 @@ export const Line = (props: LineProps): JSX.Element => {
499
499
  // settled dasharray the new curve's true length — mirroring recharts, which
500
500
  // recomputes totalLength on the post-animation re-render.
501
501
  createEffect(
502
- on(
503
- () => ({ points: points(), showLabels: !isAnimating() }),
504
- () => {
505
- if (curveEl?.getTotalLength == null) {
506
- return;
507
- }
508
- let length = 0;
509
- try {
510
- length = curveEl.getTotalLength() || 0;
511
- } catch {
512
- return; // getTotalLength can throw on detached/empty paths — keep the last value.
513
- }
514
- setTotalLength(length);
515
- },
516
- ),
502
+ () => ({ points: points(), showLabels: !isAnimating() }),
503
+ () => {
504
+ if (curveEl?.getTotalLength == null) {
505
+ return;
506
+ }
507
+ let length = 0;
508
+ try {
509
+ length = curveEl.getTotalLength() || 0;
510
+ } catch {
511
+ return; // getTotalLength can throw on detached/empty paths — keep the last value.
512
+ }
513
+ setTotalLength(length);
514
+ },
517
515
  );
518
516
 
519
517
  // Raw user event handlers forwarded to the curve. recharts' StaticCurve spreads
@@ -16,8 +16,8 @@
16
16
  // forwards the element to the parent-supplied `forwardPathRef` so the parent
17
17
  // (<Line>) can drive `shouldUpdatePreviousRef`/`getVisibleLength` off the same
18
18
  // measured length.
19
- import { createSignal, splitProps, createEffect, on } from "solid-js";
20
- import type { JSX } from "solid-js";
19
+ import { createEffect, createSignal, omit } from "solid-js";
20
+ import type { JSX } from "@solidjs/web";
21
21
  import { Curve, type CurveProps } from "../shape/Curve";
22
22
  import type { ShapeAnimationProps } from "../util/types";
23
23
 
@@ -145,16 +145,14 @@ export function LineDrawShape(props: LineDrawShapeProps): JSX.Element {
145
145
  // would force a synchronous SVG layout (reflow) each frame for a value nothing
146
146
  // reads. Guarding on visibleLength drops those per-frame reflows.
147
147
  createEffect(
148
- on(
149
- () => ({ points: props.points, visibleLength: props.visibleLength }),
150
- (deps) => {
151
- if (deps.visibleLength == null || pathEl?.getTotalLength == null) {
152
- return;
153
- }
154
- const length = getTotalLength(pathEl);
155
- setTotalLength(length);
156
- },
157
- ),
148
+ () => ({ points: props.points, visibleLength: props.visibleLength }),
149
+ (deps) => {
150
+ if (deps.visibleLength == null || pathEl?.getTotalLength == null) {
151
+ return;
152
+ }
153
+ const length = getTotalLength(pathEl);
154
+ setTotalLength(length);
155
+ },
158
156
  );
159
157
 
160
158
  const strokeDasharray = (): string | undefined => {
@@ -172,7 +170,8 @@ export function LineDrawShape(props: LineDrawShapeProps): JSX.Element {
172
170
  // Strip the animation-only props before forwarding to <Curve>; we set
173
171
  // connectNulls/strokeDasharray/pathRef explicitly below. `omit` keeps the
174
172
  // remaining props reactive (no destructuring of `props`).
175
- const curveProps = splitProps(props, [
173
+ const curveProps = omit(
174
+ props,
176
175
  "animationElapsedTime",
177
176
  "isAnimating",
178
177
  "isEntrance",
@@ -180,7 +179,7 @@ export function LineDrawShape(props: LineDrawShapeProps): JSX.Element {
180
179
  "forwardPathRef",
181
180
  "strokeDasharray",
182
181
  "connectNulls",
183
- ])[1];
182
+ );
184
183
 
185
184
  return (
186
185
  <Curve
@@ -16,8 +16,8 @@
16
16
  // - PERMANENT-N/A (by design, NOT deferred): the custom-element `shape` branch
17
17
  // (React.cloneElement — use the render-function form). <Label>
18
18
  // CHILDREN are not rendered (the `label` prop is).
19
- import { createMemo, Show, mergeProps } from "solid-js";
20
- import type { JSX } from "solid-js";
19
+ import { createMemo, merge, Show } from "solid-js";
20
+ import type { JSX } from "@solidjs/web";
21
21
  import { Layer } from "../container/Layer";
22
22
  import {
23
23
  CartesianLabelContextProvider,
@@ -164,7 +164,7 @@ const referenceAreaDefaultProps = {
164
164
  } as const satisfies Partial<Props>;
165
165
 
166
166
  function ReferenceAreaImpl(props: Props): JSX.Element {
167
- const merged = mergeProps(referenceAreaDefaultProps, props);
167
+ const merged = merge(referenceAreaDefaultProps, props);
168
168
  const clipPathId = useClipPathId();
169
169
  const isPanorama = useIsPanorama();
170
170
  const xAxisScale = useAppSelector((s) => selectAxisScale(s, "xAxis", merged.xAxisId, isPanorama));
@@ -243,7 +243,7 @@ export function ReferenceArea<
243
243
  XValueType extends ReferenceCoordinateValue = ReferenceCoordinateValue,
244
244
  YValueType extends ReferenceCoordinateValue = ReferenceCoordinateValue,
245
245
  >(props: Props<XValueType, YValueType>): JSX.Element {
246
- const merged = mergeProps(referenceAreaDefaultProps, props);
246
+ const merged = merge(referenceAreaDefaultProps, props);
247
247
  const id = useUniqueId("recharts-reference-area");
248
248
  return (
249
249
  <>
@@ -12,8 +12,8 @@
12
12
  // - PERMANENT-N/A (by design, NOT deferred): the custom-element `shape` branch
13
13
  // (React.cloneElement — use the render-function form);
14
14
  // `children` is not rendered (CartesianLabelContext).
15
- import { createMemo, Show, mergeProps } from "solid-js";
16
- import type { JSX } from "solid-js";
15
+ import { createMemo, merge, Show } from "solid-js";
16
+ import type { JSX } from "@solidjs/web";
17
17
  import { Layer } from "../container/Layer";
18
18
  import { Dot, type DotProps } from "../shape/Dot";
19
19
  import {
@@ -183,7 +183,7 @@ const referenceDotDefaultProps = {
183
183
  } as const satisfies Partial<Props>;
184
184
 
185
185
  function ReferenceDotImpl(props: Props): JSX.Element {
186
- const merged = mergeProps(referenceDotDefaultProps, props);
186
+ const merged = merge(referenceDotDefaultProps, props);
187
187
  const clipPathId = useClipPathId();
188
188
  const isPanorama = useIsPanorama();
189
189
  const xAxisScale = useAppSelector((s) => selectAxisScale(s, "xAxis", merged.xAxisId, isPanorama));
@@ -255,7 +255,7 @@ export function ReferenceDot<
255
255
  XValueType extends ReferenceCoordinateValue = ReferenceCoordinateValue,
256
256
  YValueType extends ReferenceCoordinateValue = ReferenceCoordinateValue,
257
257
  >(props: Props<XValueType, YValueType>): JSX.Element {
258
- const merged = mergeProps(referenceDotDefaultProps, props);
258
+ const merged = merge(referenceDotDefaultProps, props);
259
259
  const id = useUniqueId("recharts-reference-dot");
260
260
  return (
261
261
  <>
@@ -16,8 +16,8 @@
16
16
  // render-function form; the default-`<line>` branch is kept). <Label> CHILDREN
17
17
  // are not rendered (the `label` prop is).
18
18
  import { type CamelSvgProps } from "../util/svgPropertiesNoEvents";
19
- import { createMemo, Show, mergeProps } from "solid-js";
20
- import type { JSX } from "solid-js";
19
+ import { createMemo, merge, Show } from "solid-js";
20
+ import type { JSX } from "@solidjs/web";
21
21
  import { Layer } from "../container/Layer";
22
22
  import {
23
23
  CartesianLabelContextProvider,
@@ -282,7 +282,7 @@ const referenceLineDefaultProps = {
282
282
  } as const satisfies Partial<Props>;
283
283
 
284
284
  function ReferenceLineImpl(props: Props): JSX.Element {
285
- const merged = mergeProps(referenceLineDefaultProps, props);
285
+ const merged = merge(referenceLineDefaultProps, props);
286
286
  const isPanorama = useIsPanorama();
287
287
  const clipPathId = useClipPathId();
288
288
  const viewBox = useViewBox();
@@ -384,7 +384,7 @@ export function ReferenceLine<
384
384
  XValueType extends ReferenceCoordinateValue = ReferenceCoordinateValue,
385
385
  YValueType extends ReferenceCoordinateValue = ReferenceCoordinateValue,
386
386
  >(props: Props<XValueType, YValueType>): JSX.Element {
387
- const merged = mergeProps(referenceLineDefaultProps, props);
387
+ const merged = merge(referenceLineDefaultProps, props);
388
388
  const id = useUniqueId("recharts-reference-line");
389
389
  return (
390
390
  <>
@@ -1,4 +1,3 @@
1
- import { createEffect, on } from "solid-js";
2
1
  // Ported from recharts 3.8.1 src/cartesian/CartesianAxis.tsx RenderedTicksReporter
3
2
  // (commit 7a23854).
4
3
  //
@@ -6,7 +5,8 @@ import { createEffect, on } from "solid-js";
6
5
  // useXAxisTicks/useYAxisTicks hooks (and the tick-snap inverse scale) can read
7
6
  // them. Solid deviation: useEffect add + cleanup remove → createEffect + onCleanup
8
7
  // (the same effect-dispatch idiom the other Report* components use).
9
- import type { JSX } from "solid-js";
8
+ import { createEffect } from "solid-js";
9
+ import type { JSX } from "@solidjs/web";
10
10
  import { useAppStore } from "../state/hooks";
11
11
  import type { AxisId } from "../state/cartesianAxisSlice";
12
12
  import type { CartesianTickItem, TickItem } from "../util/types";
@@ -21,23 +21,21 @@ export function RenderedTicksReporter(props: {
21
21
  let prev: { axisType: "xAxis" | "yAxis"; axisId: AxisId } | null = null;
22
22
 
23
23
  createEffect(
24
- on(
25
- (): { axisType: "xAxis" | "yAxis"; axisId: AxisId; ticks: ReadonlyArray<TickItem> } => ({
26
- axisType: props.axisType,
27
- axisId: props.axisId,
28
- // Expose only the external tick shape (drop internal props).
29
- ticks: props.ticks.map((t) => ({
30
- value: t.value,
31
- coordinate: t.coordinate,
32
- offset: t.offset,
33
- index: t.index,
34
- })),
35
- }),
36
- (payload) => {
37
- store?.actions.renderedTicks.setRenderedTicks(payload);
38
- prev = { axisType: payload.axisType, axisId: payload.axisId };
39
- },
40
- ),
24
+ (): { axisType: "xAxis" | "yAxis"; axisId: AxisId; ticks: ReadonlyArray<TickItem> } => ({
25
+ axisType: props.axisType,
26
+ axisId: props.axisId,
27
+ // Expose only the external tick shape (drop internal props).
28
+ ticks: props.ticks.map((t) => ({
29
+ value: t.value,
30
+ coordinate: t.coordinate,
31
+ offset: t.offset,
32
+ index: t.index,
33
+ })),
34
+ }),
35
+ (payload) => {
36
+ store?.actions.renderedTicks.setRenderedTicks(payload);
37
+ prev = { axisType: payload.axisType, axisId: payload.axisId };
38
+ },
41
39
  );
42
40
 
43
41
  unregisterOnCleanup(() => {
@@ -10,8 +10,8 @@
10
10
  // joint/fitting line) are wired.) Solid deviations:
11
11
  // resolveDefaultProps→merge; effect-dispatch registration → createEffect/onCleanup;
12
12
  // the `@ts-expect-error`-laden value plumbing is replaced with typed coercion.
13
- import { createMemo, For, Show, mergeProps } from "solid-js";
14
- import type { JSX } from "solid-js";
13
+ import { createMemo, For, merge, Show } from "solid-js";
14
+ import type { JSX } from "@solidjs/web";
15
15
  import { useAppSelector, useAppStore } from "../state/hooks";
16
16
  import { useIsPanorama } from "../context/PanoramaContext";
17
17
  import { useUniqueId } from "../util/useUniqueId";
@@ -383,7 +383,7 @@ const scatterErrorBarFormatter: ErrorBarDataPointFormatter = (
383
383
 
384
384
  export const Scatter = (props: ScatterProps): JSX.Element => {
385
385
  const store = useAppStore();
386
- const merged = mergeProps(scatterDefaultProps, props);
386
+ const merged = merge(scatterDefaultProps, props);
387
387
  const isPanorama = useIsPanorama();
388
388
  const id = useUniqueId("recharts-scatter", props.id);
389
389
  // `shape` is either a built-in symbol type or a custom render fn; resolve once.
@@ -11,7 +11,7 @@
11
11
  // recharts' `resolveDefaultProps`: explicit `undefined` falls back to defaults.
12
12
  import { type CamelSvgProps } from "../util/svgPropertiesNoEvents";
13
13
  import { createMemo, Show } from "solid-js";
14
- import type { JSX } from "solid-js";
14
+ import type { JSX } from "@solidjs/web";
15
15
  import { useAppSelector, useAppStore } from "../state/hooks";
16
16
  import {
17
17
  NiceTicksAlgorithm,
@@ -4,8 +4,8 @@
4
4
  // via createEffect + defaults resolved like recharts' resolveDefaultProps); the
5
5
  // visual `<CartesianAxis>` IS rendered at the bottom of this file.
6
6
  import { type CamelSvgProps } from "../util/svgPropertiesNoEvents";
7
- import { createMemo, Show, createEffect, on } from "solid-js";
8
- import type { JSX } from "solid-js";
7
+ import { createEffect, createMemo, Show } from "solid-js";
8
+ import type { JSX } from "@solidjs/web";
9
9
  import { useAppSelector, useAppStore } from "../state/hooks";
10
10
  import {
11
11
  NiceTicksAlgorithm,
@@ -225,44 +225,42 @@ export function YAxis<DataPointType = unknown, DataValueType = unknown>(
225
225
  // Dynamic Y-axis width: when `width="auto"` (and the label is not a function/element),
226
226
  // recharts measures the rendered tick-value DOM via `getCalculatedYAxisWidth` and feeds
227
227
  // the result back into the store with `updateYAxisWidth`. Mirror that with the codebase's
228
- // two-arg createEffect(on(compute, apply)): the compute tracks the reactive inputs (ticks +
228
+ // two-arg createEffect(compute, apply): the compute tracks the reactive inputs (ticks +
229
229
  // size), the apply does the DOM measurement and the store write (untracked — so it cannot
230
230
  // re-trigger itself; the slice's `updateYAxisWidth` + the Math.round equality also guard
231
231
  // oscillation).
232
232
  let layerEl: SVGGElement | null = null;
233
233
  createEffect(
234
- on(
235
- () => ({
236
- ticks: ticks(),
237
- size: size(),
238
- width: props.width,
239
- label: props.label,
240
- id: yAxisId(),
241
- }),
242
- (inputs) => {
243
- if (inputs.width !== "auto" || isLabelContentAFunction(inputs.label)) {
244
- return;
245
- }
246
- const el = layerEl;
247
- if (el == null || inputs.ticks == null || inputs.size == null || store == null) {
248
- return;
249
- }
250
- const tickNodes = el.getElementsByClassName("recharts-cartesian-axis-tick-value");
251
- if (tickNodes.length === 0) {
252
- return;
253
- }
254
- const updatedYAxisWidth = getCalculatedYAxisWidth({
255
- ticks: tickNodes,
256
- label: undefined,
257
- labelGapWithTick: 5,
258
- tickSize: 6,
259
- tickMargin: 2,
260
- });
261
- if (Math.round(inputs.size.width) !== Math.round(updatedYAxisWidth)) {
262
- store.actions.cartesianAxis.updateYAxisWidth({ id: inputs.id, width: updatedYAxisWidth });
263
- }
264
- },
265
- ),
234
+ () => ({
235
+ ticks: ticks(),
236
+ size: size(),
237
+ width: props.width,
238
+ label: props.label,
239
+ id: yAxisId(),
240
+ }),
241
+ (inputs) => {
242
+ if (inputs.width !== "auto" || isLabelContentAFunction(inputs.label)) {
243
+ return;
244
+ }
245
+ const el = layerEl;
246
+ if (el == null || inputs.ticks == null || inputs.size == null || store == null) {
247
+ return;
248
+ }
249
+ const tickNodes = el.getElementsByClassName("recharts-cartesian-axis-tick-value");
250
+ if (tickNodes.length === 0) {
251
+ return;
252
+ }
253
+ const updatedYAxisWidth = getCalculatedYAxisWidth({
254
+ ticks: tickNodes,
255
+ label: undefined,
256
+ labelGapWithTick: 5,
257
+ tickSize: 6,
258
+ tickMargin: 2,
259
+ });
260
+ if (Math.round(inputs.size.width) !== Math.round(updatedYAxisWidth)) {
261
+ store.actions.cartesianAxis.updateYAxisWidth({ id: inputs.id, width: updatedYAxisWidth });
262
+ }
263
+ },
266
264
  );
267
265
 
268
266
  return (
@@ -1,11 +1,10 @@
1
- import { mergeProps } from "solid-js";
2
1
  // Ported from recharts 3.8.1 src/cartesian/ZAxis.tsx (commit 7a23854).
3
2
  //
4
3
  // REGISTRATION-ONLY: ZAxis never renders (it has no ticks/line); it only pushes
5
4
  // settings into the cartesianAxis slice so Scatter can size its points by the z
6
5
  // value. Solid deviations: useLayoutEffect/prevRef → createEffect add/replace +
7
6
  // onCleanup remove (the XAxis/YAxis idiom); defaults via merge.
8
-
7
+ import { merge } from "solid-js";
9
8
  import { useAppStore } from "../state/hooks";
10
9
  import { AxisId, ZAxisSettings } from "../state/cartesianAxisSlice";
11
10
  import { implicitZAxis } from "../state/selectors/axisSelectors";
@@ -36,7 +35,7 @@ export function ZAxis<DataPointType = unknown, DataValueType = unknown>(
36
35
  props: ZAxisProps<DataPointType, DataValueType>,
37
36
  ): null {
38
37
  const store = useAppStore();
39
- const merged = mergeProps(zAxisDefaultProps, props);
38
+ const merged = merge(zAxisDefaultProps, props);
40
39
 
41
40
  if (store != null) {
42
41
  registerInStore<ZAxisSettings>(
@@ -1,7 +1,7 @@
1
1
  // Ported from recharts 3.8.1 src/chart/AreaChart.tsx (commit 7a23854).
2
2
  // `forwardRef` → `ref` prop; thin user-facing wrapper over CartesianChart
3
3
  // (mirrors LineChart — differs only in chartName / allowed tooltip event types).
4
- import type { JSX } from "solid-js";
4
+ import type { JSX } from "@solidjs/web";
5
5
  import { arrayTooltipSearcher } from "../state/optionsSlice";
6
6
  import { CartesianChart } from "./CartesianChart";
7
7
  import { CartesianChartProps, TooltipEventType } from "../util/types";
@@ -1,6 +1,6 @@
1
1
  // Ported from recharts 3.8.1 src/chart/BarChart.tsx (commit 7a23854).
2
2
  // `forwardRef` → `ref` prop; thin user-facing wrapper over CartesianChart.
3
- import type { JSX } from "solid-js";
3
+ import type { JSX } from "@solidjs/web";
4
4
  import { arrayTooltipSearcher } from "../state/optionsSlice";
5
5
  import { CartesianChart } from "./CartesianChart";
6
6
  import { CartesianChartProps, TooltipEventType } from "../util/types";
@@ -1,12 +1,11 @@
1
- import { splitProps } from "solid-js";
2
1
  // Ported from recharts 3.8.1 src/chart/CartesianChart.tsx (commit 7a23854).
3
2
  //
4
3
  // Solid deviations: `forwardRef` → `ref` prop; `resolveDefaultProps` → per-field
5
4
  // `?? default` accessors (see the defaults-use-solid-merge memory — using
6
5
  // explicit nullish-coalescing avoids `merge`'s undefined-override gotcha AND the
7
6
  // required-ness typing gap). Provider + Report components mirror recharts.
8
-
9
- import type { JSX } from "solid-js";
7
+ import { omit } from "solid-js";
8
+ import type { JSX } from "@solidjs/web";
10
9
  import { ChartOptions } from "../state/optionsSlice";
11
10
  import { RechartsStoreProvider } from "../state/RechartsStoreProvider";
12
11
  import { ChartDataContextProvider } from "../context/chartDataContext";
@@ -84,7 +83,7 @@ export const CartesianChart = (props: CartesianChartOptions): JSX.Element => {
84
83
  {/* Spread WITHOUT children (a `{...cp()}` spread eagerly evaluates the
85
84
  children getter here, before the provider sets context — running them
86
85
  outside the store); pass children as a lazy JSX child instead. */}
87
- <CategoricalChart {...splitProps(cp(), ["children"])[1]} ref={props.ref}>
86
+ <CategoricalChart {...omit(cp(), "children")} ref={props.ref}>
88
87
  {cp().children}
89
88
  </CategoricalChart>
90
89
  </RechartsStoreProvider>
@@ -1,11 +1,10 @@
1
- import { splitProps } from "solid-js";
2
1
  // Ported from recharts 3.8.1 src/chart/CategoricalChart.tsx (commit 7a23854).
3
2
  //
4
3
  // Solid deviations: `forwardRef` → `ref` prop; no destructuring (omit + props);
5
4
  // `className` → `class`. The `compact` (Brush panorama) branch is deferred. Event
6
5
  // handlers are not forwarded yet (RechartsWrapper is render-only).
7
-
8
- import type { JSX } from "solid-js";
6
+ import { omit } from "solid-js";
7
+ import type { JSX } from "@solidjs/web";
9
8
  import { RootSurface } from "../container/RootSurface";
10
9
  import { RechartsWrapper } from "./RechartsWrapper";
11
10
  import { ClipPathProvider } from "../container/ClipPathProvider";
@@ -19,7 +18,8 @@ export interface CategoricalChartProps extends CartesianChartProps {
19
18
  export const CategoricalChart = (props: CategoricalChartProps): JSX.Element => {
20
19
  const attrs = (): Record<string, unknown> =>
21
20
  svgPropertiesNoEventsKeepCase({
22
- ...splitProps(props, [
21
+ ...omit(
22
+ props,
23
23
  "width",
24
24
  "height",
25
25
  "responsive",
@@ -30,7 +30,7 @@ export const CategoricalChart = (props: CategoricalChartProps): JSX.Element => {
30
30
  "title",
31
31
  "desc",
32
32
  "ref",
33
- ])[1],
33
+ ),
34
34
  });
35
35
 
36
36
  return (
@@ -1,6 +1,6 @@
1
1
  // Ported from recharts 3.8.1 src/chart/ComposedChart.tsx (commit 7a23854).
2
2
  // `forwardRef` → `ref` prop; thin user-facing wrapper over CartesianChart.
3
- import type { JSX } from "solid-js";
3
+ import type { JSX } from "@solidjs/web";
4
4
  import { arrayTooltipSearcher } from "../state/optionsSlice";
5
5
  import { CartesianChart } from "./CartesianChart";
6
6
  import { CartesianChartProps, TooltipEventType } from "../util/types";
@@ -1,6 +1,6 @@
1
1
  // Ported from recharts 3.8.1 src/chart/FunnelChart.tsx (commit 7a23854).
2
2
  // `forwardRef` → `ref` prop; thin user-facing wrapper over CartesianChart.
3
- import type { JSX } from "solid-js";
3
+ import type { JSX } from "@solidjs/web";
4
4
  import { arrayTooltipSearcher } from "../state/optionsSlice";
5
5
  import { CartesianChart } from "./CartesianChart";
6
6
  import { CartesianChartProps, TooltipEventType } from "../util/types";
@@ -1,6 +1,6 @@
1
1
  // Ported from recharts 3.8.1 src/chart/LineChart.tsx (commit 7a23854).
2
2
  // `forwardRef` → `ref` prop; the user-facing convenience wrapper over CartesianChart.
3
- import type { JSX } from "solid-js";
3
+ import type { JSX } from "@solidjs/web";
4
4
  import { arrayTooltipSearcher } from "../state/optionsSlice";
5
5
  import { CartesianChart } from "./CartesianChart";
6
6
  import { CartesianChartProps, TooltipEventType } from "../util/types";
@@ -1,4 +1,3 @@
1
- import { mergeProps, splitProps } from "solid-js";
2
1
  // Ported from recharts 3.8.1 src/chart/PieChart.tsx (commit 7a23854).
3
2
  // `forwardRef` → `ref` prop; the user-facing convenience wrapper over PolarChart.
4
3
  // `resolveDefaultProps` → Solid `merge` (lazy proxy — does NOT eagerly evaluate
@@ -6,8 +5,8 @@ import { mergeProps, splitProps } from "solid-js";
6
5
  // (layout "centric", startAngle 0, endAngle 360) win over PolarChart's polar
7
6
  // defaults. `ref` is omitted from categoricalChartProps and passed separately,
8
7
  // mirroring the reference's forwardRef split.
9
-
10
- import type { JSX } from "solid-js";
8
+ import { merge, omit } from "solid-js";
9
+ import type { JSX } from "@solidjs/web";
11
10
  import { arrayTooltipSearcher } from "../state/optionsSlice";
12
11
  import { PolarChart } from "./PolarChart";
13
12
  import { PolarChartProps, TooltipEventType } from "../util/types";
@@ -27,7 +26,7 @@ export interface PieChartProps<DataPointType = unknown> extends PolarChartProps<
27
26
  export function PieChart<DataPointType = unknown>(
28
27
  props: PieChartProps<DataPointType>,
29
28
  ): JSX.Element {
30
- const categoricalChartProps = mergeProps(defaultPieChartProps, splitProps(props, ["ref"])[1]);
29
+ const categoricalChartProps = merge(defaultPieChartProps, omit(props, "ref"));
31
30
 
32
31
  return (
33
32
  <PolarChart
@@ -1,4 +1,3 @@
1
- import { splitProps } from "solid-js";
2
1
  // Ported from recharts 3.8.1 src/chart/PolarChart.tsx (commit 7a23854).
3
2
  //
4
3
  // Solid deviations: `forwardRef` → `ref` prop; `resolveDefaultProps` → per-field
@@ -8,8 +7,8 @@ import { splitProps } from "solid-js";
8
7
  // The polar geometry props (cx/cy/innerRadius/outerRadius/startAngle/endAngle)
9
8
  // pass through to CategoricalChart exactly as in the reference — svgPropertiesNoEvents
10
9
  // forwards cx/cy onto the root <svg> (faithful) and drops the rest.
11
-
12
- import type { JSX } from "solid-js";
10
+ import { omit } from "solid-js";
11
+ import type { JSX } from "@solidjs/web";
13
12
  import { ChartOptions } from "../state/optionsSlice";
14
13
  import { RechartsStoreProvider } from "../state/RechartsStoreProvider";
15
14
  import { ChartDataContextProvider } from "../context/chartDataContext";
@@ -90,7 +89,7 @@ export const PolarChart = (props: PolarChartOptions): JSX.Element => {
90
89
  {/* Spread WITHOUT children (a `{...cp()}` spread eagerly evaluates the
91
90
  children getter here, before the provider sets context — running them
92
91
  outside the store); pass children as a lazy JSX child instead. */}
93
- <CategoricalChart {...splitProps(cp(), ["children"])[1]} ref={props.ref}>
92
+ <CategoricalChart {...omit(cp(), "children")} ref={props.ref}>
94
93
  {cp().children}
95
94
  </CategoricalChart>
96
95
  </RechartsStoreProvider>
@@ -1,9 +1,8 @@
1
- import { mergeProps, splitProps } from "solid-js";
2
1
  // Ported from recharts 3.8.1 src/chart/RadarChart.tsx (commit 7a23854).
3
2
  // `forwardRef`→`ref` prop; `resolveDefaultProps`→`merge` (lazy proxy, see PieChart).
4
3
  // RadarChart-specific defaults: layout "centric", startAngle 90, endAngle -270.
5
-
6
- import type { JSX } from "solid-js";
4
+ import { merge, omit } from "solid-js";
5
+ import type { JSX } from "@solidjs/web";
7
6
  import { arrayTooltipSearcher } from "../state/optionsSlice";
8
7
  import { PolarChart } from "./PolarChart";
9
8
  import { PolarChartProps, TooltipEventType } from "../util/types";
@@ -23,7 +22,7 @@ export interface RadarChartProps<DataPointType = unknown> extends PolarChartProp
23
22
  export function RadarChart<DataPointType = unknown>(
24
23
  props: RadarChartProps<DataPointType>,
25
24
  ): JSX.Element {
26
- const categoricalChartProps = mergeProps(defaultRadarChartProps, splitProps(props, ["ref"])[1]);
25
+ const categoricalChartProps = merge(defaultRadarChartProps, omit(props, "ref"));
27
26
 
28
27
  return (
29
28
  <PolarChart
@@ -1,9 +1,8 @@
1
- import { mergeProps, splitProps } from "solid-js";
2
1
  // Ported from recharts 3.8.1 src/chart/RadialBarChart.tsx (commit 7a23854).
3
2
  // `forwardRef`→`ref` prop; `resolveDefaultProps`→`merge`. RadialBarChart defaults:
4
3
  // layout "radial", startAngle 0, endAngle 360 (PolarChart fills cx/cy/radii).
5
-
6
- import type { JSX } from "solid-js";
4
+ import { merge, omit } from "solid-js";
5
+ import type { JSX } from "@solidjs/web";
7
6
  import { arrayTooltipSearcher } from "../state/optionsSlice";
8
7
  import { PolarChart } from "./PolarChart";
9
8
  import { PolarChartProps, TooltipEventType } from "../util/types";
@@ -25,10 +24,7 @@ export interface RadialBarChartProps<
25
24
  export function RadialBarChart<DataPointType = unknown>(
26
25
  props: RadialBarChartProps<DataPointType>,
27
26
  ): JSX.Element {
28
- const categoricalChartProps = mergeProps(
29
- defaultRadialBarChartProps,
30
- splitProps(props, ["ref"])[1],
31
- );
27
+ const categoricalChartProps = merge(defaultRadialBarChartProps, omit(props, "ref"));
32
28
 
33
29
  return (
34
30
  <PolarChart