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
@@ -1,14 +1,15 @@
1
1
  // Ported from recharts 3.8.1 src/context/chartDataContext.tsx (commit 7a23854).
2
2
  //
3
3
  // Solid deviations: `useAppDispatch` + action creators → `useAppStore()` + slice
4
- // actions (`store.actions.chartData.*`); `useEffect` → `createEffect` + `onCleanup`;
5
- // selector hooks return
4
+ // actions (`store.actions.chartData.*`); `useEffect` → two-arg `createEffect`
5
+ // (the cleanup is returned from the apply phase); selector hooks return
6
6
  // Accessors (since `useAppSelector` does). `SetComputedData` and the BrushStartEndIndex
7
7
  // type are kept local; the latter re-homes to brushUpdateContext when ported.
8
- import { type Accessor, createEffect, on, onCleanup } from "solid-js";
9
- import type { JSX } from "solid-js";
8
+ import { createEffect, type Accessor } from "solid-js";
9
+ import type { JSX } from "@solidjs/web";
10
10
  import { ChartData } from "../state/chartDataSlice";
11
11
  import { useAppSelector, useAppStore } from "../state/hooks";
12
+ import { unregisterCleanup } from "../state/unregisterOnCleanup";
12
13
  import { RechartsRootState } from "../state/store";
13
14
  import { useIsPanorama } from "./PanoramaContext";
14
15
 
@@ -24,19 +25,17 @@ export const ChartDataContextProvider = (props: {
24
25
  const isPanorama = useIsPanorama();
25
26
 
26
27
  createEffect(
27
- on(
28
- () => props.chartData,
29
- (chartData) => {
30
- // Panorama mode reuses the main chart's data — don't overwrite it.
31
- if (isPanorama) {
32
- return undefined;
33
- }
34
- store?.actions.chartData.setChartData(chartData);
35
- onCleanup(() => {
36
- store?.actions.chartData.setChartData(undefined);
37
- });
38
- },
39
- ),
28
+ () => props.chartData,
29
+ (chartData) => {
30
+ // Panorama mode reuses the main chart's data — don't overwrite it.
31
+ if (isPanorama) {
32
+ return undefined;
33
+ }
34
+ store?.actions.chartData.setChartData(chartData);
35
+ return unregisterCleanup(() => {
36
+ store?.actions.chartData.setChartData(undefined);
37
+ });
38
+ },
40
39
  );
41
40
 
42
41
  return null;
@@ -46,15 +45,13 @@ export const SetComputedData = (props: { computedData: unknown }): JSX.Element =
46
45
  const store = useAppStore();
47
46
 
48
47
  createEffect(
49
- on(
50
- () => props.computedData,
51
- (computedData) => {
52
- store?.actions.chartData.setComputedData(computedData);
53
- onCleanup(() => {
54
- store?.actions.chartData.setChartData(undefined);
55
- });
56
- },
57
- ),
48
+ () => props.computedData,
49
+ (computedData) => {
50
+ store?.actions.chartData.setComputedData(computedData);
51
+ return unregisterCleanup(() => {
52
+ store?.actions.chartData.setChartData(undefined);
53
+ });
54
+ },
58
55
  );
59
56
 
60
57
  return null;
@@ -3,8 +3,8 @@
3
3
  // Solid deviations: selector hooks return Accessors (since `useAppSelector`
4
4
  // does); `useAppDispatch` + action creators → `useAppStore().actions` +
5
5
  // `createEffect`. Brush/responsive reads go through the current stubs.
6
- import { type Accessor, createEffect, on } from "solid-js";
7
- import type { JSX } from "solid-js";
6
+ import { createEffect, type Accessor } from "solid-js";
7
+ import type { JSX } from "@solidjs/web";
8
8
  import {
9
9
  CartesianLayout,
10
10
  CartesianViewBoxRequired,
@@ -135,14 +135,12 @@ export const ReportChartSize = (props: {
135
135
  responsive && responsive.height > 0 ? responsive.height : props.height;
136
136
 
137
137
  createEffect(
138
- on(
139
- () => ({ width: width(), height: height() }),
140
- ({ width: w, height: h }) => {
141
- if (!isPanorama && isPositiveNumber(w) && isPositiveNumber(h)) {
142
- store?.actions.layout.setChartSize({ width: w, height: h });
143
- }
144
- },
145
- ),
138
+ () => ({ width: width(), height: height() }),
139
+ ({ width: w, height: h }) => {
140
+ if (!isPanorama && isPositiveNumber(w) && isPositiveNumber(h)) {
141
+ store?.actions.layout.setChartSize({ width: w, height: h });
142
+ }
143
+ },
146
144
  );
147
145
 
148
146
  return null;
@@ -151,12 +149,10 @@ export const ReportChartSize = (props: {
151
149
  export const ReportChartMargin = (props: { margin: Partial<Margin> }): JSX.Element => {
152
150
  const store = useAppStore();
153
151
  createEffect(
154
- on(
155
- () => props.margin,
156
- (margin) => {
157
- store?.actions.layout.setMargin(margin);
158
- },
159
- ),
152
+ () => props.margin,
153
+ (margin) => {
154
+ store?.actions.layout.setMargin(margin);
155
+ },
160
156
  );
161
157
  return null;
162
158
  };
package/src/polar/Pie.tsx CHANGED
@@ -31,8 +31,8 @@
31
31
  // recharts (the empty/hidden root Layer stays inline, mounting no portal).
32
32
  // DEFERRED: `maxRadius`/`cornerRadius` rounding edge cases, float-precise per-frame
33
33
  // animation angle matrices.
34
- import { createMemo, For, Show, untrack, mergeProps, createEffect, on } from "solid-js";
35
- import type { JSX } from "solid-js";
34
+ import { createEffect, createMemo, For, merge, Show, untrack } from "solid-js";
35
+ import type { JSX } from "@solidjs/web";
36
36
  import { useAppSelector, useAppStore } from "../state/hooks";
37
37
  import { useUniqueId } from "../util/useUniqueId";
38
38
  import {
@@ -580,7 +580,7 @@ export function Pie<DataPointType = Record<string, unknown>, DataValueType = unk
580
580
  props: PieProps<DataPointType, DataValueType>,
581
581
  ): JSX.Element {
582
582
  const store = useAppStore();
583
- const merged = mergeProps(pieDefaultProps, props);
583
+ const merged = merge(pieDefaultProps, props);
584
584
  const id = useUniqueId("recharts-pie", props.id);
585
585
 
586
586
  if (store != null) {
@@ -703,19 +703,18 @@ export function Pie<DataPointType = Record<string, unknown>, DataValueType = unk
703
703
  // re-appears re-runs the ENTER animation from a collapsed state instead of resuming the
704
704
  // tween from the last visible (mid-progress) frame. Plain-ref write (no reactive graph).
705
705
  createEffect(
706
- on(
707
- () => merged.hide || sectors() == null,
708
- (shouldReset) => {
709
- if (shouldReset) {
710
- previousSectorsRef.current = null;
711
- }
712
- },
713
- ),
706
+ () => merged.hide || sectors() == null,
707
+ (shouldReset) => {
708
+ if (shouldReset) {
709
+ previousSectorsRef.current = null;
710
+ }
711
+ },
714
712
  );
715
713
  const polarLayout = usePolarChartLayout();
716
714
 
717
- // Tracks animation in-progress (gates the labels). handleAnimationEnd can fire
718
- // from the driver's cleanup when a mid-animation chart is disposed.
715
+ // Tracks animation in-progress (gates the labels). ownedWrite: handleAnimationEnd
716
+ // can fire from the driver's effect-cleanup when a mid-animation chart is disposed
717
+ // (route/soft navigation) — a legal teardown write.
719
718
  const { isAnimating, handleAnimationStart, handleAnimationEnd } = useAnimationCallbacks(
720
719
  () => props.onAnimationStart?.(),
721
720
  () => props.onAnimationEnd?.(),
@@ -17,8 +17,8 @@
17
17
  // evaluated element to inject computed x/y/payload — use the function form
18
18
  // instead). NOTE: the reference PolarAngleAxis renders no axis `label` title
19
19
  // either (only PolarRadiusAxis does) — no gap there.
20
- import { For, Show, mergeProps } from "solid-js";
21
- import type { JSX } from "solid-js";
20
+ import { For, merge, Show } from "solid-js";
21
+ import type { JSX } from "@solidjs/web";
22
22
  import { svgPropertiesNoEvents } from "../util/svgPropertiesNoEvents";
23
23
  import { useAppSelector, useAppStore } from "../state/hooks";
24
24
  import { Layer } from "../container/Layer";
@@ -331,7 +331,7 @@ export function PolarAngleAxis<DataPointType = unknown, DataValueType = unknown>
331
331
  ): JSX.Element {
332
332
  const store = useAppStore();
333
333
  const layout = usePolarChartLayout();
334
- const merged = mergeProps(polarAngleAxisDefaultProps, props);
334
+ const merged = merge(polarAngleAxisDefaultProps, props);
335
335
  const isPanorama = useIsPanorama();
336
336
 
337
337
  if (store != null) {
@@ -10,8 +10,8 @@
10
10
  // default DefaultZIndexes.grid). DEFERRED (documented): background fill rect (fill
11
11
  // defaults to "none"), generic SVG-prop passthrough beyond
12
12
  // stroke/strokeWidth/strokeDasharray.
13
- import { For, Show, mergeProps } from "solid-js";
14
- import type { JSX } from "solid-js";
13
+ import { For, merge, Show } from "solid-js";
14
+ import type { JSX } from "@solidjs/web";
15
15
  import { useAppSelector } from "../state/hooks";
16
16
  import { AxisId } from "../state/cartesianAxisSlice";
17
17
  import { selectPolarGridAngles, selectPolarGridRadii } from "../state/selectors/polarGridSelectors";
@@ -107,7 +107,7 @@ const ConcentricRing = (
107
107
  fallback={
108
108
  <path
109
109
  {...concentricPolygonAttrs(props.cx, props.cy)}
110
- class={["recharts-polar-grid-concentric-polygon", props.class].filter(Boolean).join(" ")}
110
+ class={["recharts-polar-grid-concentric-polygon", props.class]}
111
111
  fill={props.fill ?? "none"}
112
112
  fill-opacity={props.fillOpacity}
113
113
  stroke={props.stroke}
@@ -118,7 +118,7 @@ const ConcentricRing = (
118
118
  }
119
119
  >
120
120
  <circle
121
- class={["recharts-polar-grid-concentric-circle", props.class].filter(Boolean).join(" ")}
121
+ class={["recharts-polar-grid-concentric-circle", props.class]}
122
122
  fill={props.fill ?? "none"}
123
123
  fill-opacity={props.fillOpacity}
124
124
  stroke={props.stroke}
@@ -155,7 +155,7 @@ const RadialLine = (
155
155
  };
156
156
 
157
157
  export const PolarGrid = (props: PolarGridProps): JSX.Element => {
158
- const merged = mergeProps(polarGridDefaultProps, props);
158
+ const merged = merge(polarGridDefaultProps, props);
159
159
  const polarViewBox = useAppSelector(selectPolarViewBox);
160
160
  const anglesFromStore = useAppSelector((state) =>
161
161
  selectPolarGridAngles(state, merged.angleAxisId),
@@ -14,8 +14,8 @@
14
14
  // DefaultZIndexes.axis).
15
15
  // DEFERRED (documented): ELEMENT-form `tick` (Solid can't clone-and-inject
16
16
  // computed props into an evaluated node — use the function form instead).
17
- import { For, Show, mergeProps } from "solid-js";
18
- import type { JSX } from "solid-js";
17
+ import { For, merge, Show } from "solid-js";
18
+ import type { JSX } from "@solidjs/web";
19
19
  import { svgPropertiesNoEvents } from "../util/svgPropertiesNoEvents";
20
20
  import { useAppSelector, useAppStore } from "../state/hooks";
21
21
  import { Layer } from "../container/Layer";
@@ -263,7 +263,7 @@ export function PolarRadiusAxis<DataPointType = unknown, DataValueType = unknown
263
263
  ): JSX.Element {
264
264
  const store = useAppStore();
265
265
  const layout = usePolarChartLayout();
266
- const merged = mergeProps(polarRadiusAxisDefaultProps, props);
266
+ const merged = merge(polarRadiusAxisDefaultProps, props);
267
267
 
268
268
  if (store != null) {
269
269
  registerInStore<RadiusAxisSettings>(
@@ -21,8 +21,8 @@
21
21
  // cloneElement). PERMANENT-N/A: element-form `shape`. DEFERRED: object-form
22
22
  // `shape`. zIndex relayering IS wired: the `.recharts-radar` Layer is wrapped in
23
23
  // <ZIndexLayer> (default DefaultZIndexes.area = 100), matching recharts.
24
- import { createMemo, Show, mergeProps } from "solid-js";
25
- import type { JSX } from "solid-js";
24
+ import { createMemo, merge, Show } from "solid-js";
25
+ import type { JSX } from "@solidjs/web";
26
26
  import { useAppSelector, useAppStore } from "../state/hooks";
27
27
  import { useIsPanorama } from "../context/PanoramaContext";
28
28
  import { useUniqueId } from "../util/useUniqueId";
@@ -291,7 +291,7 @@ export function Radar<DataPointType = Record<string, unknown>, DataValueType = u
291
291
  props: RadarProps<DataPointType, DataValueType>,
292
292
  ): JSX.Element {
293
293
  const store = useAppStore();
294
- const merged = mergeProps(radarDefaultProps, props);
294
+ const merged = merge(radarDefaultProps, props);
295
295
  const isPanorama = useIsPanorama();
296
296
  const id = useUniqueId("recharts-radar", props.id);
297
297
 
@@ -30,8 +30,8 @@
30
30
  // (final frame), element-form shape, per-sector item-hover dispatch (sectors lack
31
31
  // tooltipPosition).
32
32
  // Cells ARE wired: a <Cell> child overrides the per-sector fill/stroke/class.
33
- import { createMemo, For, Show, untrack, mergeProps } from "solid-js";
34
- import type { JSX } from "solid-js";
33
+ import { createMemo, For, merge, Show, untrack } from "solid-js";
34
+ import type { JSX } from "@solidjs/web";
35
35
  import { useAppSelector, useAppStore } from "../state/hooks";
36
36
  import { useUniqueId } from "../util/useUniqueId";
37
37
  import {
@@ -481,7 +481,7 @@ export function RadialBar<DataPointType = Record<string, unknown>, DataValueType
481
481
  props: RadialBarProps<DataPointType, DataValueType>,
482
482
  ): JSX.Element {
483
483
  const store = useAppStore();
484
- const merged = mergeProps(radialBarDefaultProps, props);
484
+ const merged = merge(radialBarDefaultProps, props);
485
485
  const id = useUniqueId("recharts-radial-bar", props.id);
486
486
 
487
487
  const settings = (): RadialBarSettings => ({
@@ -4,11 +4,11 @@
4
4
  * Ported from recharts 3.8.1 src/shape/Cross.tsx (commit 7a23854).
5
5
  * Solid deviations: `className` (recharts) → `class: string` (and Omit the wide
6
6
  * SVG `class` so the array form typechecks); destructuring defaults → `?? 0`
7
- * accessors; `clsx` → `class={[...].filter(Boolean).join(" ")}`; `return null` → `<Show>`.
7
+ * accessors; `clsx` → `class={[...]}`; `return null` → `<Show>`.
8
8
  */
9
9
  import { type CamelSvgProps } from "../util/svgPropertiesNoEvents";
10
- import { Show, splitProps } from "solid-js";
11
- import type { JSX } from "solid-js";
10
+ import { Show, omit } from "solid-js";
11
+ import type { JSX } from "@solidjs/web";
12
12
  import { isNumber } from "../util/DataUtils";
13
13
  import { svgPropertiesAndEvents } from "../util/svgPropertiesAndEvents";
14
14
 
@@ -62,7 +62,7 @@ export const Cross = (props: CrossProps): JSX.Element => {
62
62
  // SVG-prop filter; only allowlisted keys (x, y, width, height, …) survive onto
63
63
  // the <path>. `top`/`left`/`class` are filtered/handled separately.
64
64
  const passthrough = (): Record<string, unknown> => ({
65
- ...splitProps(props, ["class"])[1],
65
+ ...omit(props, "class"),
66
66
  x: x(),
67
67
  y: y(),
68
68
  top: top(),
@@ -75,7 +75,7 @@ export const Cross = (props: CrossProps): JSX.Element => {
75
75
  <Show when={valid()}>
76
76
  <path
77
77
  {...svgPropertiesAndEvents(passthrough())}
78
- class={["recharts-cross", props.class].filter(Boolean).join(" ")}
78
+ class={["recharts-cross", props.class]}
79
79
  d={getPath(x(), y(), width(), height(), top(), left())}
80
80
  />
81
81
  </Show>
@@ -4,7 +4,7 @@
4
4
  * Ported from recharts 3.8.1 src/shape/Curve.tsx (commit 7a23854).
5
5
  * Pure `getPath`/`getCurveFactory` helpers copied verbatim (modulo type
6
6
  * adjustments). Solid deviations:
7
- * - `className` → `class` (Omit the wide SVG `class`); `clsx` → `class={[...].filter(Boolean).join(" ")}`.
7
+ * - `className` → `class` (Omit the wide SVG `class`); `clsx` → `class={[...]}`.
8
8
  * - `resolveDefaultProps` → `merge()` defaults via per-prop `?? default`.
9
9
  * - `React.forwardRef` → `ref?: SVGPathElement | ((el: SVGPathElement) => void)`.
10
10
  * - `return null` → `<Show>`.
@@ -17,8 +17,8 @@
17
17
  * generic type internally but its typings don't reflect that.
18
18
  */
19
19
  import { type CamelSvgProps } from "../util/svgPropertiesNoEvents";
20
- import { Show, splitProps } from "solid-js";
21
- import type { JSX } from "solid-js";
20
+ import { Show, omit } from "solid-js";
21
+ import type { JSX } from "@solidjs/web";
22
22
  import {
23
23
  area as shapeArea,
24
24
  type Area as D3AreaCurve,
@@ -303,7 +303,8 @@ export const Curve = (props: CurveProps): JSX.Element => {
303
303
  // `strokeDasharray` (camelCase) is forwarded by the spread — svgPropertiesNoEvents
304
304
  // renames it to the kebab `stroke-dasharray` DOM attribute (see svg-attribute-rename).
305
305
  const others = (): Record<string, unknown> => ({
306
- ...splitProps(props, [
306
+ ...omit(
307
+ props,
307
308
  "class",
308
309
  "type",
309
310
  "layout",
@@ -312,7 +313,7 @@ export const Curve = (props: CurveProps): JSX.Element => {
312
313
  "connectNulls",
313
314
  "path",
314
315
  "pathRef",
315
- ])[1],
316
+ ),
316
317
  });
317
318
 
318
319
  // recharts Curve spreads `svgPropertiesNoEvents(props)` for attributes and
@@ -325,7 +326,7 @@ export const Curve = (props: CurveProps): JSX.Element => {
325
326
  <path
326
327
  {...svgPropertiesNoEvents(others())}
327
328
  {...(adaptEventHandlers(props) ?? {})}
328
- class={["recharts-curve", props.class].filter(Boolean).join(" ")}
329
+ class={["recharts-curve", props.class]}
329
330
  d={dAttr()}
330
331
  ref={props.pathRef}
331
332
  />
package/src/shape/Dot.tsx CHANGED
@@ -1,7 +1,7 @@
1
1
  import { type CamelSvgProps } from "../util/svgPropertiesNoEvents";
2
2
  import { svgPropertiesAndEvents } from "../util/svgPropertiesAndEvents";
3
- import { Show, splitProps } from "solid-js";
4
- import type { JSX } from "solid-js";
3
+ import { Show, omit } from "solid-js";
4
+ import type { JSX } from "@solidjs/web";
5
5
  import { isNumber } from "../util/DataUtils";
6
6
 
7
7
  interface DotOwnProps {
@@ -33,13 +33,13 @@ export type DotProps = Omit<
33
33
  * because it is not a valid SVG attribute.
34
34
  */
35
35
  export const Dot = (props: DotProps) => {
36
- const rest = splitProps(props, ["class", "cx", "cy", "r", "clipDot"])[1];
36
+ const rest = omit(props, "class", "cx", "cy", "r", "clipDot");
37
37
 
38
38
  return (
39
39
  <Show when={isNumber(props.cx) && isNumber(props.cy) && isNumber(props.r)}>
40
40
  <circle
41
41
  {...svgPropertiesAndEvents({ ...rest })}
42
- class={["recharts-dot", props.class].filter(Boolean).join(" ")}
42
+ class={["recharts-dot", props.class]}
43
43
  cx={props.cx}
44
44
  cy={props.cy}
45
45
  r={props.r}
@@ -4,12 +4,12 @@
4
4
  * Ported from recharts 3.8.1 src/shape/Polygon.tsx (commit 7a23854).
5
5
  * Pure path helpers are copied verbatim. Solid deviations: `className` → `class`
6
6
  * (Omit the wide SVG `class`); no destructuring (use `omit` + a keyed `<Show>`
7
- * to narrow `points` without a non-null `!`); `clsx` → `class={[...].filter(Boolean).join(" ")}`;
7
+ * to narrow `points` without a non-null `!`); `clsx` → `class={[...]}`;
8
8
  * `return null` → `<Show>`.
9
9
  */
10
10
  import { type CamelSvgProps } from "../util/svgPropertiesNoEvents";
11
- import { Show, splitProps } from "solid-js";
12
- import type { JSX } from "solid-js";
11
+ import { Show, omit } from "solid-js";
12
+ import type { JSX } from "@solidjs/web";
13
13
  import { Coordinate } from "../util/types";
14
14
  import { svgPropertiesAndEvents } from "../util/svgPropertiesAndEvents";
15
15
  import { roundTemplateLiteral } from "../util/round";
@@ -103,9 +103,9 @@ export type PolygonProps = Omit<
103
103
 
104
104
  export const Polygon = (props: PolygonProps): JSX.Element => {
105
105
  const others = (): Record<string, unknown> => ({
106
- ...splitProps(props, ["class", "points", "baseLinePoints", "connectNulls"])[1],
106
+ ...omit(props, "class", "points", "baseLinePoints", "connectNulls"),
107
107
  });
108
- const layerClass = (): string => ["recharts-polygon", props.class].filter(Boolean).join(" ");
108
+ const layerClass = (): Array<string | undefined> => ["recharts-polygon", props.class];
109
109
 
110
110
  // Narrow `points` to a non-empty array via keyed Show (no non-null assertion).
111
111
  const validPoints = (): ReadonlyArray<Coordinate> | undefined =>
@@ -4,7 +4,7 @@
4
4
  * Ported from recharts 3.8.1 src/shape/Rectangle.tsx (commit 7a23854).
5
5
  * Pure `getRectanglePath` copied verbatim. Solid deviations: `className` →
6
6
  * `class` (Omit the wide SVG `class`); destructuring defaults → `?? default`;
7
- * `clsx` → `class={[...].filter(Boolean).join(" ")}`; `return null` → `<Show>`; the radius is rendered as
7
+ * `clsx` → `class={[...]}`; `return null` → `<Show>`; the radius is rendered as
8
8
  * a number-or-undefined attribute (overriding the spread).
9
9
  *
10
10
  * The update-animation path (`isUpdateAnimationActive`) is WIRED: it drives
@@ -14,8 +14,8 @@
14
14
  * (e.g. Bar's rectangles) stays static — wiring is regression-safe.
15
15
  */
16
16
  import { type CamelSvgProps } from "../util/svgPropertiesNoEvents";
17
- import { createSignal, Show, untrack, splitProps, createEffect, on } from "solid-js";
18
- import type { JSX } from "solid-js";
17
+ import { createEffect, createSignal, Show, omit, untrack } from "solid-js";
18
+ import type { JSX } from "@solidjs/web";
19
19
  import type { AnimationDuration } from "../util/types";
20
20
  import type { EasingInput } from "../animation/easing";
21
21
  import { svgPropertiesAndEvents } from "../util/svgPropertiesAndEvents";
@@ -154,14 +154,14 @@ export const Rectangle = (props: RectangleProps): JSX.Element => {
154
154
  const animationEasing = (): EasingInput => props.animationEasing ?? "ease";
155
155
  const animationBegin = (): number => props.animationBegin ?? 0;
156
156
 
157
- const layerClass = (): string => ["recharts-rectangle", props.class].filter(Boolean).join(" ");
157
+ const layerClass = (): Array<string | undefined> => ["recharts-rectangle", props.class];
158
158
 
159
159
  // recharts renders x/y/width/height/radius on the <path> (React allows extra
160
160
  // attrs). Solid's PathSVGAttributes is stricter, so route them through the
161
161
  // (loosely-typed) svgPropertiesAndEvents spread rather than explicit attrs.
162
162
  // `radius` is rendered only when it's a number (array radius → undefined).
163
163
  const basePathProps = (): Record<string, unknown> => ({
164
- ...splitProps(props, ["class", "style"])[1],
164
+ ...omit(props, "class", "style"),
165
165
  radius: typeof radius() === "number" ? radius() : undefined,
166
166
  });
167
167
 
@@ -178,23 +178,21 @@ export const Rectangle = (props: RectangleProps): JSX.Element => {
178
178
  pathEl = el;
179
179
  };
180
180
  createEffect(
181
- on(
182
- () => ({ x: x(), y: y(), width: width(), height: height(), radius: radius() }),
183
- () => {
184
- if (pathEl?.getTotalLength == null) {
185
- return;
186
- }
187
- let len = 0;
188
- try {
189
- len = pathEl.getTotalLength();
190
- } catch {
191
- return; // getTotalLength can throw on detached/empty paths — keep the last value.
192
- }
193
- if (len) {
194
- setTotalLength(len);
195
- }
196
- },
197
- ),
181
+ () => ({ x: x(), y: y(), width: width(), height: height(), radius: radius() }),
182
+ () => {
183
+ if (pathEl?.getTotalLength == null) {
184
+ return;
185
+ }
186
+ let len = 0;
187
+ try {
188
+ len = pathEl.getTotalLength();
189
+ } catch {
190
+ return; // getTotalLength can throw on detached/empty paths — keep the last value.
191
+ }
192
+ if (len) {
193
+ setTotalLength(len);
194
+ }
195
+ },
198
196
  );
199
197
 
200
198
  const animationId = useAnimationId(
@@ -4,11 +4,11 @@
4
4
  * Ported from recharts 3.8.1 src/shape/Sector.tsx (commit 7a23854).
5
5
  * Pure geometry helpers copied verbatim. Solid deviations: `resolveDefaultProps`
6
6
  * → per-prop `?? default` accessors; `className` → `class` (Omit the wide SVG
7
- * `class`); `clsx` → `class={[...].filter(Boolean).join(" ")}`; `return null` → `<Show>`.
7
+ * `class`); `clsx` → `class={[...]}`; `return null` → `<Show>`.
8
8
  */
9
9
  import { type CamelSvgProps } from "../util/svgPropertiesNoEvents";
10
- import { Show, splitProps } from "solid-js";
11
- import type { JSX } from "solid-js";
10
+ import { Show, omit } from "solid-js";
11
+ import type { JSX } from "@solidjs/web";
12
12
  import { GeometrySector, GeometrySectorWithCornerRadius } from "../util/types";
13
13
  import { polarToCartesian, RADIAN } from "../util/PolarUtils";
14
14
  import { getPercentValue, mathSign } from "../util/DataUtils";
@@ -280,7 +280,7 @@ export const Sector = (props: SectorProps): JSX.Element => {
280
280
  };
281
281
 
282
282
  const passthrough = (): Record<string, unknown> => ({
283
- ...splitProps(props, ["class"])[1],
283
+ ...omit(props, "class"),
284
284
  cx: cx(),
285
285
  cy: cy(),
286
286
  innerRadius: innerRadius(),
@@ -296,7 +296,7 @@ export const Sector = (props: SectorProps): JSX.Element => {
296
296
  <Show when={valid()}>
297
297
  <path
298
298
  {...svgPropertiesAndEvents(passthrough())}
299
- class={["recharts-sector", props.class].filter(Boolean).join(" ")}
299
+ class={["recharts-sector", props.class]}
300
300
  d={path()}
301
301
  />
302
302
  </Show>
@@ -4,12 +4,12 @@
4
4
  * Ported from recharts 3.8.1 src/shape/Symbols.tsx (commit 7a23854).
5
5
  * Pure d3-shape symbol math copied verbatim. Solid deviations: `className` →
6
6
  * `class` (Omit the wide SVG `class`); destructuring defaults → `?? default`
7
- * accessors; `clsx` → `class={[...].filter(Boolean).join(" ")}`; `return null` → `<Show>`; the
7
+ * accessors; `clsx` → `class={[...]}`; `return null` → `<Show>`; the
8
8
  * `registerSymbol` static is attached via `Object.assign` (no `as`).
9
9
  */
10
10
  import { type CamelSvgProps } from "../util/svgPropertiesNoEvents";
11
- import { Show, splitProps } from "solid-js";
12
- import type { JSX } from "solid-js";
11
+ import { Show, omit } from "solid-js";
12
+ import type { JSX } from "@solidjs/web";
13
13
  import {
14
14
  symbol as shapeSymbol,
15
15
  symbolCircle,
@@ -123,7 +123,7 @@ const SymbolsComponent = (props: SymbolsProps): JSX.Element => {
123
123
  };
124
124
 
125
125
  const passthrough = (): Record<string, unknown> => ({
126
- ...splitProps(props, ["class", "type", "size", "sizeType"])[1],
126
+ ...omit(props, "class", "type", "size", "sizeType"),
127
127
  type: type(),
128
128
  size: size(),
129
129
  sizeType: sizeType(),
@@ -133,7 +133,7 @@ const SymbolsComponent = (props: SymbolsProps): JSX.Element => {
133
133
  <Show when={isNumber(props.cx) && isNumber(props.cy) && isNumber(size())}>
134
134
  <path
135
135
  {...svgPropertiesAndEvents(passthrough())}
136
- class={["recharts-symbols", props.class].filter(Boolean).join(" ")}
136
+ class={["recharts-symbols", props.class]}
137
137
  transform={`translate(${props.cx}, ${props.cy})`}
138
138
  d={getPath()}
139
139
  />