solid-recharts 0.2.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (488) hide show
  1. package/package.json +13 -11
  2. package/src/animation/AnimatedItems.tsx +2 -4
  3. package/src/animation/CSSTransitionAnimate.tsx +41 -39
  4. package/src/animation/JavascriptAnimate.tsx +45 -41
  5. package/src/cartesian/Area.tsx +4 -4
  6. package/src/cartesian/AreaRevealShape.tsx +1 -1
  7. package/src/cartesian/Bar.tsx +33 -21
  8. package/src/cartesian/BarStack.tsx +5 -5
  9. package/src/cartesian/Brush.tsx +19 -15
  10. package/src/cartesian/CartesianAxis.tsx +4 -4
  11. package/src/cartesian/CartesianGrid.tsx +5 -5
  12. package/src/cartesian/ErrorBar.tsx +9 -7
  13. package/src/cartesian/Funnel.tsx +3 -3
  14. package/src/cartesian/GraphicalItemClipPath.tsx +1 -1
  15. package/src/cartesian/Line.tsx +18 -16
  16. package/src/cartesian/LineDrawShape.tsx +14 -13
  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 +19 -17
  21. package/src/cartesian/Scatter.tsx +3 -3
  22. package/src/cartesian/XAxis.tsx +1 -1
  23. package/src/cartesian/YAxis.tsx +35 -33
  24. package/src/cartesian/ZAxis.tsx +3 -2
  25. package/src/chart/AreaChart.tsx +1 -1
  26. package/src/chart/BarChart.tsx +1 -1
  27. package/src/chart/CartesianChart.tsx +4 -3
  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 +4 -3
  33. package/src/chart/PolarChart.tsx +4 -3
  34. package/src/chart/RadarChart.tsx +4 -3
  35. package/src/chart/RadialBarChart.tsx +7 -3
  36. package/src/chart/RechartsWrapper.tsx +14 -24
  37. package/src/chart/Sankey.tsx +9 -6
  38. package/src/chart/ScatterChart.tsx +1 -1
  39. package/src/chart/SunburstChart.tsx +5 -4
  40. package/src/chart/Treemap.tsx +5 -4
  41. package/src/component/ActivePoints.tsx +6 -6
  42. package/src/component/Cell.tsx +23 -5
  43. package/src/component/Cursor.tsx +3 -3
  44. package/src/component/DefaultLegendContent.tsx +8 -6
  45. package/src/component/DefaultTooltipContent.tsx +14 -10
  46. package/src/component/Dots.tsx +5 -5
  47. package/src/component/Label.tsx +13 -10
  48. package/src/component/LabelList.tsx +12 -7
  49. package/src/component/Legend.tsx +26 -21
  50. package/src/component/ResponsiveContainer.tsx +52 -49
  51. package/src/component/Text.tsx +5 -5
  52. package/src/component/Tooltip.tsx +21 -18
  53. package/src/component/TooltipBoundingBox.tsx +18 -16
  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 +5 -6
  59. package/src/context/ErrorBarContext.tsx +2 -2
  60. package/src/context/PanoramaContext.tsx +2 -2
  61. package/src/context/RegisterGraphicalItemId.tsx +4 -2
  62. package/src/context/chartDataContext.tsx +26 -23
  63. package/src/context/chartLayoutContext.tsx +16 -12
  64. package/src/polar/Pie.tsx +13 -12
  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 +6 -7
  72. package/src/shape/Dot.tsx +4 -4
  73. package/src/shape/Polygon.tsx +5 -5
  74. package/src/shape/Rectangle.tsx +22 -20
  75. package/src/shape/Sector.tsx +5 -5
  76. package/src/shape/Symbols.tsx +5 -5
  77. package/src/shape/Trapezoid.tsx +29 -27
  78. package/src/state/RechartsStoreProvider.tsx +5 -3
  79. package/src/state/ReportChartProps.tsx +8 -6
  80. package/src/state/ReportEventSettings.tsx +8 -6
  81. package/src/state/ReportMainChartProps.tsx +11 -9
  82. package/src/state/ReportPolarOptions.tsx +15 -13
  83. package/src/state/SetLegendPayload.ts +1 -1
  84. package/src/state/SetTooltipEntrySettings.tsx +1 -1
  85. package/src/state/brushSlice.ts +10 -8
  86. package/src/state/cartesianAxisSlice.ts +46 -38
  87. package/src/state/chartDataSlice.ts +29 -23
  88. package/src/state/errorBarSlice.ts +22 -16
  89. package/src/state/eventSettingsSlice.ts +11 -9
  90. package/src/state/graphicalItemsSlice.ts +17 -13
  91. package/src/state/layoutSlice.ts +27 -19
  92. package/src/state/legendSlice.ts +24 -18
  93. package/src/state/optionsSlice.ts +8 -6
  94. package/src/state/polarAxisSlice.ts +21 -13
  95. package/src/state/polarOptionsSlice.ts +16 -14
  96. package/src/state/referenceElementsSlice.ts +25 -19
  97. package/src/state/registerInStore.ts +15 -13
  98. package/src/state/renderedTicksSlice.ts +11 -7
  99. package/src/state/rootPropsSlice.ts +16 -14
  100. package/src/state/tooltipSlice.ts +115 -95
  101. package/src/state/unregisterOnCleanup.ts +5 -20
  102. package/src/state/zIndexSlice.ts +50 -42
  103. package/src/synchronisation/useChartSynchronisation.tsx +213 -217
  104. package/src/util/ActiveShapeUtils.tsx +2 -2
  105. package/src/util/BarUtils.tsx +5 -3
  106. package/src/util/DirectPortal.tsx +107 -0
  107. package/src/util/FunnelUtils.tsx +1 -1
  108. package/src/util/RadialBarUtils.tsx +4 -3
  109. package/src/util/createCartesianCharts.tsx +1 -1
  110. package/src/util/createPolarCharts.tsx +1 -1
  111. package/src/util/svgPropertiesAndEvents.ts +1 -1
  112. package/src/util/tooltip/translate.ts +2 -2
  113. package/src/util/types.ts +2 -2
  114. package/src/zIndex/ZIndexLayer.tsx +39 -68
  115. package/src/zIndex/ZIndexPortal.tsx +29 -25
  116. package/test/_data.ts +0 -408
  117. package/test/animation/AnimationController.typed.spec.ts +0 -53
  118. package/test/animation/AnimationControllerImpl.spec.ts +0 -271
  119. package/test/animation/CSSTransitionAnimate.timing.spec.tsx +0 -473
  120. package/test/animation/JavascriptAnimate.spec.tsx +0 -62
  121. package/test/animation/RechartsAnimation.spec.ts +0 -636
  122. package/test/animation/easing.spec.ts +0 -218
  123. package/test/animation/legacyAnimationLengthChange.spec.tsx +0 -803
  124. package/test/animation/matchBy.spec.ts +0 -467
  125. package/test/animation/mockAnimationController.ts +0 -40
  126. package/test/animation/mockControllerAnimationManager.ts +0 -143
  127. package/test/animation/mockTimeoutController.ts +0 -114
  128. package/test/animation/timeoutController.spec.ts +0 -138
  129. package/test/animation/useAnimationStartSnapshot.spec.ts +0 -147
  130. package/test/animation/util.spec.ts +0 -28
  131. package/test/cartesian/Area.animation.spec.tsx +0 -363
  132. package/test/cartesian/Area.range.spec.tsx +0 -54
  133. package/test/cartesian/Area.spec.tsx +0 -1202
  134. package/test/cartesian/Area.stacked.render.spec.tsx +0 -69
  135. package/test/cartesian/Area.typed.spec.tsx +0 -209
  136. package/test/cartesian/Axis.integration.spec.tsx +0 -158
  137. package/test/cartesian/Bar/Bar.csstransition.spec.tsx +0 -299
  138. package/test/cartesian/Bar/Bar.spec.tsx +0 -2314
  139. package/test/cartesian/Bar/Bar.typed.spec.tsx +0 -192
  140. package/test/cartesian/Bar.animation.spec.tsx +0 -426
  141. package/test/cartesian/Bar.stackDomain.spec.tsx +0 -66
  142. package/test/cartesian/Bar.stacked.render.spec.tsx +0 -53
  143. package/test/cartesian/Bar.truncateByDomain.spec.tsx +0 -237
  144. package/test/cartesian/Bar.zeroDimensionFiltering.spec.tsx +0 -336
  145. package/test/cartesian/BarStack.spec.tsx +0 -91
  146. package/test/cartesian/Brush.keyboard.spec.tsx +0 -88
  147. package/test/cartesian/Brush.panorama.spec.tsx +0 -41
  148. package/test/cartesian/Brush.props.spec.tsx +0 -63
  149. package/test/cartesian/Brush.render.spec.tsx +0 -117
  150. package/test/cartesian/Brush.spec.tsx +0 -522
  151. package/test/cartesian/Brush.stacked.spec.tsx +0 -221
  152. package/test/cartesian/CartesianAxis.render.spec.tsx +0 -50
  153. package/test/cartesian/CartesianAxis.spec.tsx +0 -396
  154. package/test/cartesian/CartesianGrid.render.spec.tsx +0 -39
  155. package/test/cartesian/CartesianGrid.spec.tsx +0 -2103
  156. package/test/cartesian/ErrorBar.render.spec.tsx +0 -69
  157. package/test/cartesian/ErrorBar.spec.tsx +0 -2414
  158. package/test/cartesian/Funnel.animation.spec.tsx +0 -241
  159. package/test/cartesian/Funnel.spec.tsx +0 -226
  160. package/test/cartesian/Funnel.typed.spec.tsx +0 -221
  161. package/test/cartesian/GraphicalItemClipPath.scale-behavior.spec.tsx +0 -627
  162. package/test/cartesian/GraphicalItemClipPath.spec.tsx +0 -427
  163. package/test/cartesian/Line.animation.spec.tsx +0 -643
  164. package/test/cartesian/Line.sparseAnimationPath.spec.tsx +0 -98
  165. package/test/cartesian/Line.spec.tsx +0 -471
  166. package/test/cartesian/Line.typed.spec.tsx +0 -152
  167. package/test/cartesian/ReferenceArea.render.spec.tsx +0 -63
  168. package/test/cartesian/ReferenceArea.spec.tsx +0 -663
  169. package/test/cartesian/ReferenceArea.typed.spec.tsx +0 -74
  170. package/test/cartesian/ReferenceDot.render.spec.tsx +0 -55
  171. package/test/cartesian/ReferenceDot.spec.tsx +0 -462
  172. package/test/cartesian/ReferenceDot.typed.spec.tsx +0 -76
  173. package/test/cartesian/ReferenceLine/ReferenceLine.panorama.spec.tsx +0 -184
  174. package/test/cartesian/ReferenceLine/ReferenceLine.spec.tsx +0 -744
  175. package/test/cartesian/ReferenceLine/ReferenceLine.typed.spec.tsx +0 -74
  176. package/test/cartesian/ReferenceLine/getEndPoints.spec.ts +0 -399
  177. package/test/cartesian/ReferenceLine.render.spec.tsx +0 -134
  178. package/test/cartesian/Scatter.animation.spec.tsx +0 -381
  179. package/test/cartesian/Scatter.render.spec.tsx +0 -61
  180. package/test/cartesian/Scatter.spec.tsx +0 -406
  181. package/test/cartesian/Scatter.typed.spec.tsx +0 -153
  182. package/test/cartesian/XAxis/XAxis.barSize.spec.tsx +0 -336
  183. package/test/cartesian/XAxis/XAxis.brush.spec.tsx +0 -266
  184. package/test/cartesian/XAxis/XAxis.categorydomain.spec.tsx +0 -872
  185. package/test/cartesian/XAxis/XAxis.dataKey.spec.tsx +0 -86
  186. package/test/cartesian/XAxis/XAxis.datatypes.spec.tsx +0 -127
  187. package/test/cartesian/XAxis/XAxis.hide.spec.tsx +0 -106
  188. package/test/cartesian/XAxis/XAxis.multiaxis.spec.tsx +0 -336
  189. package/test/cartesian/XAxis/XAxis.numberdomain.spec.tsx +0 -1466
  190. package/test/cartesian/XAxis/XAxis.padding.spec.tsx +0 -758
  191. package/test/cartesian/XAxis/XAxis.padding_clip.spec.tsx +0 -65
  192. package/test/cartesian/XAxis/XAxis.state.spec.tsx +0 -355
  193. package/test/cartesian/XAxis/XAxis.tick.spec.tsx +0 -493
  194. package/test/cartesian/XAxis/XAxis.timescale.spec.tsx +0 -233
  195. package/test/cartesian/XAxis/XAxis.type.spec.tsx +0 -107
  196. package/test/cartesian/XAxis/XAxis.typed.spec.tsx +0 -102
  197. package/test/cartesian/XAxis/XAxis.vertical.spec.tsx +0 -265
  198. package/test/cartesian/XAxis.tickFormatter.spec.tsx +0 -54
  199. package/test/cartesian/YAxis/YAxis.7362.derivedDomain.spec.tsx +0 -230
  200. package/test/cartesian/YAxis/YAxis.7362.spec.tsx +0 -104
  201. package/test/cartesian/YAxis/YAxis.interval-zero.spec.tsx +0 -88
  202. package/test/cartesian/YAxis/YAxis.label.spec.tsx +0 -219
  203. package/test/cartesian/YAxis/YAxis.spec.tsx +0 -1595
  204. package/test/cartesian/YAxis/YAxis.tick.spec.tsx +0 -428
  205. package/test/cartesian/YAxis/YAxis.tickFormatter.spec.tsx +0 -54
  206. package/test/cartesian/YAxis/YAxis.ticks.spec.tsx +0 -263
  207. package/test/cartesian/YAxis/YAxis.type.spec.tsx +0 -107
  208. package/test/cartesian/YAxis/YAxis.typed.spec.tsx +0 -102
  209. package/test/cartesian/ZAxis.spec.tsx +0 -300
  210. package/test/cartesian/ZAxis.typed.spec.tsx +0 -33
  211. package/test/cartesian/__snapshots__/Brush.spec.tsx.snap +0 -5
  212. package/test/cartesian/axisLineAndStroke.spec.tsx +0 -72
  213. package/test/cartesian/getCartesianPosition.spec.ts +0 -907
  214. package/test/cartesian/getEquidistantTicks.spec.ts +0 -88
  215. package/test/cartesian/getTicks.spec.ts +0 -378
  216. package/test/cartesian/miscFeatureGaps.spec.tsx +0 -89
  217. package/test/cartesian/useAnimatedLineLength.spec.ts +0 -168
  218. package/test/chart/AccessibilityLayer.spec.tsx +0 -569
  219. package/test/chart/AccessibilityScans.spec.tsx +0 -286
  220. package/test/chart/AreaChart.spec.tsx +0 -409
  221. package/test/chart/AreaChart.stacked.spec.tsx +0 -1407
  222. package/test/chart/AreaChart.typed.spec.tsx +0 -39
  223. package/test/chart/BarChart.spec.tsx +0 -3719
  224. package/test/chart/BarChart.typed.spec.tsx +0 -60
  225. package/test/chart/CategoricalChart.spec.tsx +0 -255
  226. package/test/chart/ComposedChart.spec.tsx +0 -199
  227. package/test/chart/ComposedChart.typed.spec.tsx +0 -39
  228. package/test/chart/FunnelChart.spec.tsx +0 -215
  229. package/test/chart/FunnelChart.typed.spec.tsx +0 -39
  230. package/test/chart/LineChart.multiseries.spec.tsx +0 -50
  231. package/test/chart/LineChart.smoke.spec.tsx +0 -50
  232. package/test/chart/LineChart.spec.tsx +0 -930
  233. package/test/chart/LineChart.typed.spec.tsx +0 -39
  234. package/test/chart/NicheChartTooltip.spec.tsx +0 -81
  235. package/test/chart/PieChart.spec.tsx +0 -793
  236. package/test/chart/PieChart.typed.spec.tsx +0 -39
  237. package/test/chart/RadarChart.spec.tsx +0 -530
  238. package/test/chart/RadarChart.typed.spec.tsx +0 -39
  239. package/test/chart/RadialBarChart.5966.spec.tsx +0 -48
  240. package/test/chart/RadialBarChart.spec.tsx +0 -679
  241. package/test/chart/RadialBarChart.typed.spec.tsx +0 -39
  242. package/test/chart/RechartsWrapper.spec.tsx +0 -83
  243. package/test/chart/Sankey.content.spec.tsx +0 -46
  244. package/test/chart/Sankey.spec.tsx +0 -952
  245. package/test/chart/Sankey.typed.spec.tsx +0 -29
  246. package/test/chart/ScatterChart.spec.tsx +0 -2613
  247. package/test/chart/ScatterChart.typed.spec.tsx +0 -39
  248. package/test/chart/SunburstChart.spec.tsx +0 -146
  249. package/test/chart/Treemap.animation.spec.tsx +0 -52
  250. package/test/chart/Treemap.spec.tsx +0 -1003
  251. package/test/chart/Treemap.typed.spec.tsx +0 -26
  252. package/test/chart/chartEvents.spec.tsx +0 -127
  253. package/test/chart/responsive.spec.tsx +0 -620
  254. package/test/component/Cell.render.spec.tsx +0 -155
  255. package/test/component/Cell.spec.tsx +0 -12
  256. package/test/component/Cursor.spec.tsx +0 -186
  257. package/test/component/DefaultTooltipContent.spec.tsx +0 -102
  258. package/test/component/Label.render.spec.tsx +0 -63
  259. package/test/component/Label.spec.tsx +0 -686
  260. package/test/component/Label.typed.spec.tsx +0 -46
  261. package/test/component/LabelList.spec.tsx +0 -188
  262. package/test/component/Legend.itemSorter.spec.tsx +0 -704
  263. package/test/component/Legend.render.spec.tsx +0 -92
  264. package/test/component/Legend.spec.tsx +0 -2213
  265. package/test/component/Legend.typed.spec.tsx +0 -22
  266. package/test/component/ResponsiveContainer.spec.tsx +0 -523
  267. package/test/component/ResponsiveContainerDataTest.spec.tsx +0 -51
  268. package/test/component/Text.spec.tsx +0 -415
  269. package/test/component/Text.typed.spec.tsx +0 -46
  270. package/test/component/Tooltip/ActiveDot.spec.tsx +0 -370
  271. package/test/component/Tooltip/Tooltip.animation.spec.tsx +0 -209
  272. package/test/component/Tooltip/Tooltip.content.spec.tsx +0 -128
  273. package/test/component/Tooltip/Tooltip.formatter.spec.tsx +0 -152
  274. package/test/component/Tooltip/Tooltip.includeHidden.spec.tsx +0 -79
  275. package/test/component/Tooltip/Tooltip.multipleDataArrays.spec.tsx +0 -165
  276. package/test/component/Tooltip/Tooltip.offset.spec.tsx +0 -113
  277. package/test/component/Tooltip/Tooltip.state.spec.tsx +0 -74
  278. package/test/component/Tooltip/Tooltip.sync.spec.tsx +0 -639
  279. package/test/component/Tooltip/defaultIndex.spec.tsx +0 -227
  280. package/test/component/Tooltip/graphicalItem.formatter.spec.tsx +0 -138
  281. package/test/component/Tooltip/itemSorter.spec.tsx +0 -2815
  282. package/test/component/Tooltip/tooltipEventType.spec.tsx +0 -344
  283. package/test/component/Tooltip/tooltipMouseHoverSelectors.ts +0 -41
  284. package/test/component/Tooltip/tooltipTestHelpers.tsx +0 -162
  285. package/test/component/Tooltip.defaultIndex.spec.tsx +0 -48
  286. package/test/component/Tooltip.hover.spec.tsx +0 -61
  287. package/test/component/Tooltip.item.spec.tsx +0 -54
  288. package/test/component/Tooltip.keyboard.spec.tsx +0 -51
  289. package/test/component/Tooltip.payload.spec.tsx +0 -1716
  290. package/test/component/Tooltip.touch.spec.tsx +0 -39
  291. package/test/component/Tooltip.visibility.spec.tsx +0 -1889
  292. package/test/component/TooltipBoundingBox.spec.tsx +0 -89
  293. package/test/component/responsiveContainerUtils.spec.ts +0 -205
  294. package/test/container/ClipPath.spec.tsx +0 -602
  295. package/test/container/chartDimensions.spec.tsx +0 -368
  296. package/test/context/chartLayoutContext.spec.tsx +0 -378
  297. package/test/helper/ExpectAxisDomain.tsx +0 -27
  298. package/test/helper/assertNotNull.ts +0 -6
  299. package/test/helper/assertZIndexLayerOrder.ts +0 -19
  300. package/test/helper/createSelectorTestCase.tsx +0 -176
  301. package/test/helper/expectAnimatedPieAngles.ts +0 -100
  302. package/test/helper/expectAnimatedPiePaths.ts +0 -78
  303. package/test/helper/expectAreaCurve.ts +0 -15
  304. package/test/helper/expectAxisTicks.ts +0 -48
  305. package/test/helper/expectBars.ts +0 -54
  306. package/test/helper/expectFunctionReturning.ts +0 -58
  307. package/test/helper/expectLabel.ts +0 -32
  308. package/test/helper/expectLastCalledWith.ts +0 -48
  309. package/test/helper/expectLine.ts +0 -20
  310. package/test/helper/expectPieSectors.ts +0 -80
  311. package/test/helper/expectScale.ts +0 -37
  312. package/test/helper/expectScatterPoints.ts +0 -52
  313. package/test/helper/expectStackGroups.ts +0 -144
  314. package/test/helper/mockAxes.ts +0 -22
  315. package/test/helper/mockGetBoundingClientRect.ts +0 -66
  316. package/test/helper/mockHTMLElementProperty.ts +0 -19
  317. package/test/helper/mockTouchingElement.ts +0 -27
  318. package/test/helper/offsetHelpers.ts +0 -19
  319. package/test/helper/parameterizedTestCases.tsx +0 -99
  320. package/test/helper/produceState.ts +0 -32
  321. package/test/helper/selectorTestHelpers.tsx +0 -63
  322. package/test/helper/trim.spec.ts +0 -35
  323. package/test/helper/trim.ts +0 -11
  324. package/test/hooks/useActiveTooltipDataPoints.spec.tsx +0 -358
  325. package/test/hooks/useAxisDomain.spec.tsx +0 -361
  326. package/test/hooks/useAxisScale.spec.tsx +0 -283
  327. package/test/hooks/useAxisTicks.spec.tsx +0 -130
  328. package/test/hooks/useOffset.spec.tsx +0 -248
  329. package/test/hooks/useTooltipStateHooks.spec.tsx +0 -109
  330. package/test/polar/Pie/Pie-TwoLevelPieChart.spec.tsx +0 -135
  331. package/test/polar/Pie/Pie.spec.tsx +0 -784
  332. package/test/polar/Pie/Pie.typed.spec.tsx +0 -78
  333. package/test/polar/Pie.animation.spec.tsx +0 -529
  334. package/test/polar/PieWithLegend.animation.spec.tsx +0 -142
  335. package/test/polar/PolarAngleAxis/PolarAngleAxis.events.spec.tsx +0 -76
  336. package/test/polar/PolarAngleAxis/PolarAngleAxis.spec.tsx +0 -2079
  337. package/test/polar/PolarAngleAxis/PolarAngleAxis.typed.spec.tsx +0 -102
  338. package/test/polar/PolarAngleAxis.render.spec.tsx +0 -79
  339. package/test/polar/PolarGrid.render.spec.tsx +0 -75
  340. package/test/polar/PolarGrid.spec.tsx +0 -918
  341. package/test/polar/PolarLegendPerRow.render.spec.tsx +0 -85
  342. package/test/polar/PolarRadiusAxis.events.spec.tsx +0 -65
  343. package/test/polar/PolarRadiusAxis.render.spec.tsx +0 -52
  344. package/test/polar/PolarRadiusAxis.spec.tsx +0 -991
  345. package/test/polar/PolarRadiusAxis.typed.spec.tsx +0 -84
  346. package/test/polar/PolarTooltipLegend.render.spec.tsx +0 -80
  347. package/test/polar/Radar.animation.spec.tsx +0 -570
  348. package/test/polar/Radar.render.spec.tsx +0 -71
  349. package/test/polar/Radar.spec.tsx +0 -265
  350. package/test/polar/Radar.typed.spec.tsx +0 -119
  351. package/test/polar/RadialBar/RadialBar.spec.tsx +0 -1521
  352. package/test/polar/RadialBar/RadialBar.typed.spec.tsx +0 -132
  353. package/test/polar/RadialBar.animation.spec.tsx +0 -375
  354. package/test/polar/RadialBar.render.spec.tsx +0 -66
  355. package/test/polar/RadialBar.stacked.spec.tsx +0 -57
  356. package/test/setup.ts +0 -84
  357. package/test/shape/ActiveShape.spec.tsx +0 -181
  358. package/test/shape/Cross.spec.tsx +0 -60
  359. package/test/shape/Cross.typed.spec.tsx +0 -26
  360. package/test/shape/Curve.spec.tsx +0 -368
  361. package/test/shape/Curve.typed.spec.tsx +0 -69
  362. package/test/shape/Dot.spec.tsx +0 -73
  363. package/test/shape/Dot.typed.spec.tsx +0 -30
  364. package/test/shape/Polygon.spec.tsx +0 -357
  365. package/test/shape/Polygon.typed.spec.tsx +0 -28
  366. package/test/shape/Rectangle.animation.spec.tsx +0 -451
  367. package/test/shape/Rectangle.spec.tsx +0 -68
  368. package/test/shape/Rectangle.typed.spec.tsx +0 -24
  369. package/test/shape/Sector.spec.tsx +0 -76
  370. package/test/shape/Sector.typed.spec.tsx +0 -24
  371. package/test/shape/Symbols.spec.tsx +0 -43
  372. package/test/shape/Symbols.typed.spec.tsx +0 -24
  373. package/test/shape/Trapezoid.spec.tsx +0 -50
  374. package/test/shape/Trapezoid.typed.spec.tsx +0 -24
  375. package/test/shape/__snapshots__/Cross.spec.tsx.snap +0 -62
  376. package/test/shape/__snapshots__/Curve.spec.tsx.snap +0 -460
  377. package/test/shape/__snapshots__/Polygon.spec.tsx.snap +0 -58
  378. package/test/shape/__snapshots__/Rectangle.spec.tsx.snap +0 -117
  379. package/test/shape/__snapshots__/Sector.spec.tsx.snap +0 -71
  380. package/test/shape/__snapshots__/Trapezoid.spec.tsx.snap +0 -64
  381. package/test/state/chartDataSlice.spec.ts +0 -53
  382. package/test/state/createCollectionActions.spec.ts +0 -87
  383. package/test/state/createSelector.spec.ts +0 -158
  384. package/test/state/externalEventsMiddleware.spec.ts +0 -178
  385. package/test/state/graphicalItemsSlice.spec.ts +0 -92
  386. package/test/state/hooks.spec.tsx +0 -68
  387. package/test/state/legendSlice.spec.ts +0 -44
  388. package/test/state/mouseEventsMiddleware.spec.ts +0 -75
  389. package/test/state/optionsSlice.spec.ts +0 -19
  390. package/test/state/referenceElementsSlice.spec.ts +0 -84
  391. package/test/state/registerInStore.spec.tsx +0 -101
  392. package/test/state/selectors/areaSelectors.spec.tsx +0 -77
  393. package/test/state/selectors/axisSelectors.spec.tsx +0 -1418
  394. package/test/state/selectors/barStackSelectors.spec.tsx +0 -752
  395. package/test/state/selectors/brushSelectors.spec.tsx +0 -30
  396. package/test/state/selectors/cartesianAxisSlice.spec.ts +0 -96
  397. package/test/state/selectors/combineNiceTicks.spec.ts +0 -207
  398. package/test/state/selectors/combiners/combineActiveTooltipIndex.spec.ts +0 -61
  399. package/test/state/selectors/combiners/combineAllBarPositions.spec.ts +0 -39
  400. package/test/state/selectors/combiners/combineConfiguredScale.spec.ts +0 -56
  401. package/test/state/selectors/combiners/combineDisplayedStackedData.spec.ts +0 -123
  402. package/test/state/selectors/combiners/combineRealScaleType.spec.ts +0 -80
  403. package/test/state/selectors/containerSelectors.spec.tsx +0 -168
  404. package/test/state/selectors/dataSelectors.spec.tsx +0 -136
  405. package/test/state/selectors/legendSelectors.spec.tsx +0 -113
  406. package/test/state/selectors/lineSelectors.spec.tsx +0 -60
  407. package/test/state/selectors/pieSelectors.spec.tsx +0 -72
  408. package/test/state/selectors/radarSelectors.spec.tsx +0 -496
  409. package/test/state/selectors/rootPropsSelectors.spec.tsx +0 -169
  410. package/test/state/selectors/scatterSelectors.spec.tsx +0 -47
  411. package/test/state/selectors/selectActiveTooltipIndex.spec.tsx +0 -234
  412. package/test/state/selectors/selectAllAxes.spec.tsx +0 -18
  413. package/test/state/selectors/selectAxisDomain.spec.tsx +0 -21
  414. package/test/state/selectors/selectAxisDomainIncludingNiceTicks.spec.tsx +0 -19
  415. package/test/state/selectors/selectAxisRangeWithReverse.spec.tsx +0 -22
  416. package/test/state/selectors/selectAxisScale.spec.tsx +0 -91
  417. package/test/state/selectors/selectBarRectangles.stackOffset.spec.tsx +0 -503
  418. package/test/state/selectors/selectBaseAxis.spec.tsx +0 -56
  419. package/test/state/selectors/selectCartesianItemsSettings.spec.tsx +0 -57
  420. package/test/state/selectors/selectChartOffset.spec.tsx +0 -26
  421. package/test/state/selectors/selectDisplayedData.spec.tsx +0 -282
  422. package/test/state/selectors/selectIsTooltipActive.spec.tsx +0 -231
  423. package/test/state/selectors/selectNumericalDomain.spec.tsx +0 -21
  424. package/test/state/selectors/selectRealScaleType.spec.tsx +0 -19
  425. package/test/state/selectors/selectStackGroups.spec.tsx +0 -322
  426. package/test/state/selectors/selectXAxisPosition.spec.tsx +0 -22
  427. package/test/state/selectors/selectYAxisPosition.spec.tsx +0 -22
  428. package/test/state/selectors/selectorMemoization.spec.tsx +0 -136
  429. package/test/state/selectors/selectors.spec.tsx +0 -1613
  430. package/test/state/throttling.spec.ts +0 -200
  431. package/test/state/zIndexSlice.spec.ts +0 -85
  432. package/test/synchronisation/useChartSynchronisation.spec.tsx +0 -225
  433. package/test/util/BarUtils.spec.ts +0 -39
  434. package/test/util/CartesianUtils/CartesianUtils.spec.ts +0 -261
  435. package/test/util/CartesianUtils/rectWithPoints.spec.ts +0 -48
  436. package/test/util/ChartUtils/ChartUtils.spec.ts +0 -491
  437. package/test/util/ChartUtils/appendOffsetOfLegend.spec.ts +0 -136
  438. package/test/util/ChartUtils/appendOffsetOfLegend.spec.tsx +0 -133
  439. package/test/util/ChartUtils/getCateCoordinateOfLine.spec.ts +0 -97
  440. package/test/util/ChartUtils/getStackedData.spec.ts +0 -416
  441. package/test/util/ChartUtils/truncateByDomain.spec.ts +0 -70
  442. package/test/util/DataUtils.spec.ts +0 -385
  443. package/test/util/DomUtils.spec.tsx +0 -117
  444. package/test/util/FunnelUtils.spec.tsx +0 -70
  445. package/test/util/Global.spec.ts +0 -11
  446. package/test/util/LRUCache.spec.ts +0 -81
  447. package/test/util/LogUtils.spec.ts +0 -45
  448. package/test/util/PolarUtils.spec.ts +0 -66
  449. package/test/util/ReduceCssCalcPrototype.spec.ts +0 -141
  450. package/test/util/ShallowEqual.spec.ts +0 -102
  451. package/test/util/TickUtils.spec.ts +0 -29
  452. package/test/util/createChartHelpers.spec.tsx +0 -210
  453. package/test/util/cursor/getCursorPoints.spec.ts +0 -136
  454. package/test/util/cursor/getCursorRectangle.spec.ts +0 -50
  455. package/test/util/cursor/getRadialCursorPoints.spec.ts +0 -36
  456. package/test/util/errorValue.spec.ts +0 -69
  457. package/test/util/getEveryNth.spec.ts +0 -39
  458. package/test/util/getRadiusAndStrokeWidthFromDot.spec.ts +0 -51
  459. package/test/util/getRelativeCoordinate.spec.ts +0 -250
  460. package/test/util/getSliced.spec.ts +0 -45
  461. package/test/util/isDomainSpecifiedByUser.spec.ts +0 -207
  462. package/test/util/isWellBehavedNumber.spec.ts +0 -54
  463. package/test/util/payload/getUniqPayload.spec.ts +0 -56
  464. package/test/util/propsAreEqual.spec.ts +0 -75
  465. package/test/util/round.spec.ts +0 -112
  466. package/test/util/scale/arithmetic.spec.ts +0 -61
  467. package/test/util/scale/createCategoricalInverse.spec.ts +0 -84
  468. package/test/util/scale/getNiceTickValues.spec.ts +0 -421
  469. package/test/util/scale/getTickValuesFixedDomain.spec.ts +0 -155
  470. package/test/util/svgPropertiesAndEvents.spec.tsx +0 -206
  471. package/test/util/svgPropertiesNoEvents.spec.tsx +0 -228
  472. package/test/util/tooltip/translate.spec.ts +0 -396
  473. package/test/util/useAnimationId.spec.tsx +0 -59
  474. package/test/util/useElementOffset.spec.tsx +0 -173
  475. package/test/util/usePrefersReducedMotion.spec.ts +0 -54
  476. package/test/util/useUniqueId.spec.ts +0 -99
  477. package/test/utils/diagnostics-allowlist.ts +0 -18
  478. package/test/utils/diagnostics.ts +0 -58
  479. package/test/zIndex/AllZIndexPortals.spec.tsx +0 -83
  480. package/test/zIndex/DefaultZIndexes.spec.ts +0 -80
  481. package/test/zIndex/DynamicZIndex.spec.tsx +0 -102
  482. package/test/zIndex/ZIndexLayer.portalOwner.spec.tsx +0 -125
  483. package/test/zIndex/componentZIndex.spec.tsx +0 -255
  484. package/test/zIndex/getZIndexFromUnknown.spec.ts +0 -51
  485. package/test/zIndex/multiChartZIndexIsolation.spec.tsx +0 -90
  486. package/test/zIndex/zIndexSelectors.spec.ts +0 -172
  487. package/test-results/.last-run.json +0 -4
  488. package/tsconfig.json +0 -11
@@ -5,8 +5,8 @@
5
5
  // ResponsiveContainer-context sizing, and the tooltip/legend portal contexts.
6
6
  // Renders the `recharts-wrapper` div + `ReportChartSize` (which drives the
7
7
  // Surface dimensions) + children.
8
- import { createMemo, createSignal, flush, onCleanup, untrack } from "solid-js";
9
- import type { JSX } from "@solidjs/web";
8
+ import { batch, createMemo, createSignal, onCleanup, untrack } from "solid-js";
9
+ import type { JSX } from "solid-js";
10
10
  import { ReportChartSize } from "../context/chartLayoutContext";
11
11
  import { TooltipPortalContext } from "../context/tooltipPortalContext";
12
12
  import { LegendPortalContext } from "../context/legendPortalContext";
@@ -95,12 +95,8 @@ export const RechartsWrapper = (props: RechartsWrapperProps): JSX.Element => {
95
95
  // the same node is passed to setTooltipPortal). The ref sets a signal that the
96
96
  // TooltipPortalContext exposes reactively, then forwards to the caller's ref.
97
97
  const [tooltipPortal, setTooltipPortal] = createSignal<HTMLElement | null>(null);
98
- const [measuredWidth, setMeasuredWidth] = createSignal<number | undefined>(undefined, {
99
- ownedWrite: true,
100
- });
101
- const [measuredHeight, setMeasuredHeight] = createSignal<number | undefined>(undefined, {
102
- ownedWrite: true,
103
- });
98
+ const [measuredWidth, setMeasuredWidth] = createSignal<number | undefined>(undefined);
99
+ const [measuredHeight, setMeasuredHeight] = createSignal<number | undefined>(undefined);
104
100
  let wrapperEl: HTMLDivElement | null = null;
105
101
  let resizeObserver: ResizeObserver | null = null;
106
102
 
@@ -141,9 +137,10 @@ export const RechartsWrapper = (props: RechartsWrapperProps): JSX.Element => {
141
137
  if (untrack(measuredWidth) === roundedWidth && untrack(measuredHeight) === roundedHeight) {
142
138
  return;
143
139
  }
144
- setMeasuredWidth(roundedWidth);
145
- setMeasuredHeight(roundedHeight);
146
- flush();
140
+ batch(() => {
141
+ setMeasuredWidth(roundedWidth);
142
+ setMeasuredHeight(roundedHeight);
143
+ });
147
144
  };
148
145
 
149
146
  const measureOnce = (el: HTMLDivElement): void => {
@@ -277,7 +274,6 @@ export const RechartsWrapper = (props: RechartsWrapperProps): JSX.Element => {
277
274
 
278
275
  const handleMouseLeave = (event: MouseEvent & { currentTarget: HTMLDivElement }): void => {
279
276
  store?.actions.tooltip.mouseLeaveChart();
280
- flush();
281
277
  if (store != null) {
282
278
  dispatchExternalMouseHandler(props.onMouseLeave, event);
283
279
  }
@@ -300,13 +296,11 @@ export const RechartsWrapper = (props: RechartsWrapperProps): JSX.Element => {
300
296
  const related = event.relatedTarget;
301
297
  if (related == null || !(related instanceof Node) || !el.contains(related)) {
302
298
  store?.actions.tooltip.mouseLeaveChart();
303
- flush();
304
299
  }
305
300
  };
306
301
 
307
302
  const handleNativeMouseLeave = (): void => {
308
303
  store?.actions.tooltip.mouseLeaveChart();
309
- flush();
310
304
  };
311
305
 
312
306
  const attachWrapperListeners = (el: HTMLDivElement): void => {
@@ -339,10 +333,6 @@ export const RechartsWrapper = (props: RechartsWrapperProps): JSX.Element => {
339
333
  clientY: event.clientY,
340
334
  currentTarget: event.currentTarget,
341
335
  });
342
- // Solid 2.0 defers store propagation to a flush boundary; the external
343
- // handler (dispatchExternalEvent) reads store.state synchronously, so flush
344
- // the click-driven active-tooltip write first or the handler sees stale state.
345
- flush();
346
336
  dispatchExternalMouseHandler(props.onClick, event);
347
337
  };
348
338
 
@@ -451,11 +441,11 @@ export const RechartsWrapper = (props: RechartsWrapperProps): JSX.Element => {
451
441
  };
452
442
 
453
443
  return (
454
- <TooltipPortalContext value={tooltipPortal}>
455
- <LegendPortalContext value={tooltipPortal}>
444
+ <TooltipPortalContext.Provider value={tooltipPortal}>
445
+ <LegendPortalContext.Provider value={tooltipPortal}>
456
446
  <ReportChartSize width={reportedWidth()} height={reportedHeight()} />
457
447
  <div
458
- class={["recharts-wrapper", props.class]}
448
+ class={["recharts-wrapper", props.class].filter(Boolean).join(" ")}
459
449
  style={wrapperStyle()}
460
450
  ref={(el) => {
461
451
  setWrapperRef(el);
@@ -476,11 +466,11 @@ export const RechartsWrapper = (props: RechartsWrapperProps): JSX.Element => {
476
466
  onKeyDown={handleKeyDown}
477
467
  onFocus={onFocus}
478
468
  onBlur={onBlur}
479
- tabindex={0}
469
+ tabIndex={0}
480
470
  >
481
471
  {props.children}
482
472
  </div>
483
- </LegendPortalContext>
484
- </TooltipPortalContext>
473
+ </LegendPortalContext.Provider>
474
+ </TooltipPortalContext.Provider>
485
475
  );
486
476
  };
@@ -18,8 +18,8 @@
18
18
  // through getValueByDataKey in the payload searcher (reference parity).
19
19
  // NON-GAPS: the reference Sankey has NO animation and hardcodes responsive={false}
20
20
  // on its wrapper (ResponsiveContainer sizing flows via the wrapper context).
21
- import { createEffect, createMemo, For, merge, Show } from "solid-js";
22
- import type { JSX } from "@solidjs/web";
21
+ import { children, createMemo, For, Show, mergeProps, createEffect, on } from "solid-js";
22
+ import type { JSX } from "solid-js";
23
23
  import { Surface } from "../container/Surface";
24
24
  import { Layer } from "../container/Layer";
25
25
  import { Rectangle } from "../shape/Rectangle";
@@ -767,7 +767,8 @@ const sankeyOptions: ChartOptions = {
767
767
 
768
768
  const SankeyImpl = (props: SankeyProps & { id: string }): JSX.Element => {
769
769
  const store = useAppStore();
770
- const merged = merge(sankeyDefaultProps, props);
770
+ const merged = mergeProps(sankeyDefaultProps, props);
771
+ const resolvedChildren = children(() => props.children);
771
772
  const width = useChartWidth();
772
773
  const height = useChartHeight();
773
774
 
@@ -808,8 +809,10 @@ const SankeyImpl = (props: SankeyProps & { id: string }): JSX.Element => {
808
809
 
809
810
  // Publish the computed data so the tooltip searcher can resolve node-/link-N.
810
811
  createEffect(
811
- () => ({ nodes: computed().nodes, links: computed().links }),
812
- (cd) => store?.actions.chartData.setComputedData(cd),
812
+ on(
813
+ () => ({ nodes: computed().nodes, links: computed().links }),
814
+ (cd) => store?.actions.chartData.setComputedData(cd),
815
+ ),
813
816
  );
814
817
 
815
818
  const dispatchEnter = (index: TooltipIndex, coord: Coordinate): void => {
@@ -956,7 +959,7 @@ const SankeyImpl = (props: SankeyProps & { id: string }): JSX.Element => {
956
959
  </Layer>
957
960
  </Layer>
958
961
  <SetTooltipEntrySettings tooltipEntrySettings={tooltipConfig()} />
959
- {merged.children}
962
+ {resolvedChildren()}
960
963
  </Surface>
961
964
  )}
962
965
  </Show>
@@ -1,6 +1,6 @@
1
1
  // Ported from recharts 3.8.1 src/chart/ScatterChart.tsx (commit 7a23854).
2
2
  // `forwardRef` → `ref` prop; thin user-facing wrapper over CartesianChart.
3
- import type { JSX } from "@solidjs/web";
3
+ import type { JSX } from "solid-js";
4
4
  import { arrayTooltipSearcher } from "../state/optionsSlice";
5
5
  import { CartesianChart } from "./CartesianChart";
6
6
  import { CartesianChartProps, TooltipEventType } from "../util/types";
@@ -12,8 +12,8 @@
12
12
  // NON-GAP: `responsive` defaults to false in the reference too, and
13
13
  // ResponsiveContainer sizing flows via the wrapper context.
14
14
  // DEFERRED: event throttling nuances.
15
- import { createMemo, For, merge, Show } from "solid-js";
16
- import type { JSX } from "@solidjs/web";
15
+ import { children, createMemo, For, Show, mergeProps } from "solid-js";
16
+ import type { JSX } from "solid-js";
17
17
  import { scaleLinear } from "d3-scale";
18
18
  import { Surface } from "../container/Surface";
19
19
  import { Layer } from "../container/Layer";
@@ -166,7 +166,8 @@ const SunburstChartImpl = (
166
166
  props: Required<Pick<SunburstChartProps, "data">> & SunburstChartProps & { id: string },
167
167
  ): JSX.Element => {
168
168
  const store = useAppStore();
169
- const merged = merge(sunburstDefaultProps, props);
169
+ const merged = mergeProps(sunburstDefaultProps, props);
170
+ const resolvedChildren = children(() => props.children);
170
171
  const width = useChartWidth();
171
172
  const height = useChartHeight();
172
173
 
@@ -348,7 +349,7 @@ const SunburstChartImpl = (
348
349
  </For>
349
350
  </Layer>
350
351
  <SetTooltipEntrySettings tooltipEntrySettings={tooltipConfig()} />
351
- {merged.children}
352
+ {resolvedChildren()}
352
353
  </Surface>
353
354
  )}
354
355
  </Show>
@@ -18,8 +18,8 @@
18
18
  // works via the wrapper context (the reference itself hardcodes responsive={false}
19
19
  // on its wrapper). DEFERRED: the element form of `content` & `nestIndexContent`,
20
20
  // per-node name-fit text sizing nuances.
21
- import { createMemo, createSignal, For, merge, Show } from "solid-js";
22
- import type { JSX } from "@solidjs/web";
21
+ import { children, createMemo, createSignal, For, Show, mergeProps } from "solid-js";
22
+ import type { JSX } from "solid-js";
23
23
  import { Surface } from "../container/Surface";
24
24
  import { Layer } from "../container/Layer";
25
25
  import { Rectangle } from "../shape/Rectangle";
@@ -484,7 +484,8 @@ const flattenNodes = (node: TreemapNode | null): TreemapNode[] => {
484
484
 
485
485
  const TreemapImpl = (props: TreemapProps & { id: string }): JSX.Element => {
486
486
  const store = useAppStore();
487
- const merged = merge(treemapDefaultProps, props);
487
+ const merged = mergeProps(treemapDefaultProps, props);
488
+ const resolvedChildren = children(() => props.children);
488
489
  const width = useChartWidth();
489
490
  const height = useChartHeight();
490
491
 
@@ -813,7 +814,7 @@ const TreemapImpl = (props: TreemapProps & { id: string }): JSX.Element => {
813
814
  </For>
814
815
  </Layer>
815
816
  <SetTooltipEntrySettings tooltipEntrySettings={tooltipConfig()} />
816
- {merged.children}
817
+ {resolvedChildren()}
817
818
  </Surface>
818
819
  {merged.type === "nest" ? (
819
820
  <div
@@ -3,7 +3,7 @@
3
3
  // JSX is built in the parent's JSX scope via `renderActivePointsLayerFromState`.
4
4
  // Mounting a child component that subscribes to tooltip selectors trips STRICT_READ.
5
5
  // ZIndexLayer deferred.
6
- import type { JSX } from "@solidjs/web";
6
+ import type { JSX } from "solid-js";
7
7
  import { isNullish } from "../util/DataUtils";
8
8
  import type { ActiveDotProps, ActiveDotType, DataKey } from "../util/types";
9
9
  import { svgPropertiesNoEventsFromUnknownKeepCase } from "../util/svgPropertiesNoEvents";
@@ -77,9 +77,6 @@ function renderActiveDot(activeDot: ActiveDotType, dotProps: ActiveDotProps): JS
77
77
  if (typeof activeDot === "function") {
78
78
  return activeDot(dotProps);
79
79
  }
80
- if (typeof activeDot === "object" && activeDot != null && "type" in activeDot) {
81
- return activeDot;
82
- }
83
80
  // Default <Dot> uses <Show> internally, which trips STRICT_READ when this
84
81
  // layer mounts during tooltip effect-apply — render the circle directly instead.
85
82
  // An object-form activeDot's `class`/`className` is dropped by the svg-prop
@@ -90,7 +87,7 @@ function renderActiveDot(activeDot: ActiveDotType, dotProps: ActiveDotProps): JS
90
87
  : undefined;
91
88
  return (
92
89
  <circle
93
- class={["recharts-dot", customClass]}
90
+ class={["recharts-dot", customClass].filter(Boolean).join(" ")}
94
91
  cx={dotProps.cx}
95
92
  cy={dotProps.cy}
96
93
  r={dotProps.r}
@@ -120,7 +117,10 @@ export function renderActivePointsLayerFromState(
120
117
  ...svgPropertiesNoEventsFromUnknownKeepCase(args.activeDot),
121
118
  };
122
119
  return (
123
- <g class={["recharts-layer", "recharts-active-dot"]} clip-path={args.clipPath}>
120
+ <g
121
+ class={["recharts-layer", "recharts-active-dot"].filter(Boolean).join(" ")}
122
+ clip-path={args.clipPath}
123
+ >
124
124
  {renderActiveDot(args.activeDot, dotProps)}
125
125
  </g>
126
126
  );
@@ -1,6 +1,7 @@
1
1
  // Ported from recharts 3.8.1 src/component/Cell.tsx (commit 7a23854).
2
- // Deviations: React's `SVGProps<SVGElement>` → Solid's `CamelSvgProps<JSX.SVGAttributes<SVGElement>>`
3
- // (which already names the class prop `class`); React's `displayName` is dropped.
2
+ // Deviations: React's broad `SVGProps<SVGElement>` → the merged attribute surface
3
+ // of Solid's element-specific SVG intrinsic types (with SVGElement-typed events);
4
+ // React's `displayName` is dropped.
4
5
  //
5
6
  // The CellReader pattern: recharts extracts cells by walking the React element
6
7
  // tree (`findAllByType(children, Cell)`). Solid has no element-descriptor tree —
@@ -10,9 +11,26 @@
10
11
  // `collectCells`. Cells render no DOM (the standalone <Cell /> spec asserts this).
11
12
  import { type CamelSvgProps } from "../util/svgPropertiesNoEvents";
12
13
  import { createMemo, type Accessor } from "solid-js";
13
- import type { JSX } from "@solidjs/web";
14
+ import type { JSX } from "solid-js";
14
15
 
15
- export interface CellProps extends CamelSvgProps<JSX.SVGAttributes<SVGElement>> {
16
+ type SVGIntrinsicTag = keyof SVGElementTagNameMap & keyof JSX.IntrinsicElements;
17
+ type SVGIntrinsicAttributes = JSX.IntrinsicElements[SVGIntrinsicTag];
18
+ type KeysOfUnion<T> = T extends T ? keyof T : never;
19
+ type ValueOfUnion<T, K extends PropertyKey> = T extends T
20
+ ? K extends keyof T
21
+ ? T[K]
22
+ : never
23
+ : never;
24
+ type MergedSVGIntrinsicAttributes = {
25
+ [K in KeysOfUnion<SVGIntrinsicAttributes>]?: ValueOfUnion<SVGIntrinsicAttributes, K>;
26
+ };
27
+ type GenericSVGAttributes = Omit<
28
+ MergedSVGIntrinsicAttributes,
29
+ keyof JSX.DOMAttributes<SVGElement>
30
+ > &
31
+ JSX.DOMAttributes<SVGElement>;
32
+
33
+ export type CellProps = CamelSvgProps<GenericSVGAttributes> & {
16
34
  /**
17
35
  * The fill color.
18
36
  */
@@ -21,7 +39,7 @@ export interface CellProps extends CamelSvgProps<JSX.SVGAttributes<SVGElement>>
21
39
  * The stroke color.
22
40
  */
23
41
  stroke?: string;
24
- }
42
+ };
25
43
 
26
44
  /**
27
45
  * Set while a parent collects its <Cell> children (see {@link collectCells}).
@@ -6,12 +6,12 @@
6
6
  // optional SVG-props object (className/styling); a custom cursor ELEMENT
7
7
  // (recharts' `ReactElement` + cloneElement) is PERMANENT-N/A — there is no Solid
8
8
  // equivalent of React.isValidElement/cloneElement. Solid deviations: `clsx` →
9
- // `class={[...]}`; the connected `Cursor` resolves context then delegates to
9
+ // `class={[...].filter(Boolean).join(" ")}`; the connected `Cursor` resolves context then delegates to
10
10
  // `CursorInternal`, which (like recharts) takes fully-resolved props so it can be
11
11
  // rendered standalone in tests; all reactive reads live in a tracking memo that
12
12
  // returns plain shape DATA, so the <Show> children read only plain properties.
13
13
  import { createMemo, Show } from "solid-js";
14
- import type { JSX } from "@solidjs/web";
14
+ import type { JSX } from "solid-js";
15
15
  import {
16
16
  ChartOffsetInternal,
17
17
  Coordinate,
@@ -77,7 +77,7 @@ type CursorShape =
77
77
  /**
78
78
  * The shared cursor class, with an optional extra className from an object-form
79
79
  * `cursor` appended (the shape components type `class` as a plain string, so this
80
- * is joined rather than passed as a `class={[...]}` array).
80
+ * is joined rather than passed as a `class={[...].filter(Boolean).join(" ")}` array).
81
81
  */
82
82
  function cursorClass(cursor: CursorDefinition): string {
83
83
  if (typeof cursor === "object" && cursor != null && typeof cursor.className === "string") {
@@ -3,12 +3,12 @@
3
3
  // TYPES + component. The legend slice/selectors need these types; the component
4
4
  // renders the legend item list. Deviations: `ReactElement`→`Element`/dropped,
5
5
  // `DataKey<any>`→`DataKey<unknown>`, `ReactNode`→`Element`, `CSSProperties`→
6
- // `JSX.CSSProperties`, `className`→`class`, clsx→`class={[...]}`; `LegendItemSorter`
6
+ // `JSX.CSSProperties`, `className`→`class`, clsx→`class={[...].filter(Boolean).join(" ")}`; `LegendItemSorter`
7
7
  // is co-located here (reference keeps it in Legend.tsx) so the slice can import it
8
8
  // without depending on the Legend component. `adaptEventsOfChild` events deferred.
9
- import { For, Show, merge } from "solid-js";
10
- import type { Element } from "solid-js";
11
- import type { JSX } from "@solidjs/web";
9
+ import { For, Show, mergeProps } from "solid-js";
10
+ type Element = JSX.Element;
11
+ import type { JSX } from "solid-js";
12
12
  import { DataKey, LegendType, MousePointer } from "../util/types";
13
13
  import { Surface } from "../container/Surface";
14
14
  import { Symbols } from "../shape/Symbols";
@@ -134,7 +134,7 @@ const LegendIcon = (props: {
134
134
  * `content` prop to customize.
135
135
  */
136
136
  export const DefaultLegendContent = (props: Props): JSX.Element => {
137
- const merged = merge(defaultLegendContentDefaultProps, props);
137
+ const merged = mergeProps(defaultLegendContentDefaultProps, props);
138
138
 
139
139
  const itemStyle = (): JSX.CSSProperties => ({
140
140
  display: merged.layout === "horizontal" ? "inline-block" : "block",
@@ -173,7 +173,9 @@ export const DefaultLegendContent = (props: Props): JSX.Element => {
173
173
  "recharts-legend-item",
174
174
  `legend-item-${i()}`,
175
175
  entry.inactive ? "inactive" : undefined,
176
- ]}
176
+ ]
177
+ .filter(Boolean)
178
+ .join(" ")}
177
179
  style={itemStyle()}
178
180
  onClick={(event) => merged.onClick?.(entry, i(), event)}
179
181
  onMouseEnter={(event) => merged.onMouseEnter?.(entry, i(), event)}
@@ -5,11 +5,11 @@
5
5
  // (the per-entry `formatter` is populated from the graphical items' `formatter`
6
6
  // prop and wins over the prop-level one, per v3.9.1); `any` → `unknown`,
7
7
  // `ReactNode` → `Element`, `CSSProperties` → `JSX.CSSProperties`; `className` →
8
- // `class`, `clsx(...)` → `class={[...]}` array form (no clsx dep); `React.isValid-
8
+ // `class`, `clsx(...)` → `class={[...].filter(Boolean).join(" ")}` array form (no clsx dep); `React.isValid-
9
9
  // Element` check dropped (Solid renders an Element or a string uniformly).
10
- import { For, Show, createMemo, merge } from "solid-js";
11
- import type { Element } from "solid-js";
12
- import type { JSX } from "@solidjs/web";
10
+ import { For, Show, createMemo, mergeProps } from "solid-js";
11
+ type Element = JSX.Element;
12
+ import type { JSX } from "solid-js";
13
13
  import { isNullish, isNumOrStr } from "../util/DataUtils";
14
14
  import { DataKey, TooltipType } from "../util/types";
15
15
  import type { TooltipPayload, TooltipPayloadEntry } from "../state/tooltipSlice";
@@ -18,9 +18,10 @@ export type ValueType = number | string | ReadonlyArray<number | string>;
18
18
  export type NameType = number | string;
19
19
 
20
20
  function defaultFormatter(value: ValueType | undefined): Element {
21
- return Array.isArray(value) && isNumOrStr(value[0]) && isNumOrStr(value[1])
22
- ? value.join(" ~ ")
23
- : value;
21
+ if (value !== undefined && typeof value !== "string" && typeof value !== "number") {
22
+ return isNumOrStr(value[0]) && isNumOrStr(value[1]) ? value.join(" ~ ") : [...value];
23
+ }
24
+ return value;
24
25
  }
25
26
 
26
27
  export type Formatter<TValue extends ValueType = ValueType, TName extends NameType = NameType> = (
@@ -151,7 +152,7 @@ function lodashLikeSortBy(
151
152
  * `content` prop to customize.
152
153
  */
153
154
  export const DefaultTooltipContent = (props: Props): JSX.Element => {
154
- const merged = merge(defaultDefaultTooltipContentProps, props);
155
+ const merged = mergeProps(defaultDefaultTooltipContentProps, props);
155
156
 
156
157
  const sortedPayload = createMemo<TooltipPayload>(() => {
157
158
  const payload = props.payload;
@@ -227,12 +228,15 @@ export const DefaultTooltipContent = (props: Props): JSX.Element => {
227
228
 
228
229
  return (
229
230
  <div
230
- class={["recharts-default-tooltip", props.wrapperClass]}
231
+ class={["recharts-default-tooltip", props.wrapperClass].filter(Boolean).join(" ")}
231
232
  style={finalStyle()}
232
233
  role={merged.accessibilityLayer ? "status" : undefined}
233
234
  aria-live={merged.accessibilityLayer ? "assertive" : undefined}
234
235
  >
235
- <p class={["recharts-tooltip-label", props.labelClass]} style={finalLabelStyle()}>
236
+ <p
237
+ class={["recharts-tooltip-label", props.labelClass].filter(Boolean).join(" ")}
238
+ style={finalLabelStyle()}
239
+ >
236
240
  {finalLabel()}
237
241
  </p>
238
242
  <Show when={sortedPayload().length > 0}>
@@ -7,8 +7,8 @@
7
7
  // the default <Dot> (recharts does this via svgPropertiesAndEventsFromUnknown).
8
8
  // - `ZIndexLayer` wrapper deferred (zIndex layering not ported) → plain <Layer>.
9
9
  // - `clsx` → class string composed inline; `className` → `class`.
10
- import { createMemo, For, omit, Show } from "solid-js";
11
- import type { JSX } from "@solidjs/web";
10
+ import { createMemo, Index, Show, splitProps } from "solid-js";
11
+ import type { JSX } from "solid-js";
12
12
  import { Dot, type DotProps } from "../shape/Dot";
13
13
  import { Layer } from "../container/Layer";
14
14
  import { DataKey, DotItemDotProps, DotPoint, DotType } from "../util/types";
@@ -92,7 +92,7 @@ function DotRenderer(props: DotRendererProps): JSX.Element {
92
92
  renderFn()?.(dotProps())
93
93
  ) : (
94
94
  <Dot
95
- {...omit(dotProps(), "index", "dataKey", "value", "payload", "points")}
95
+ {...splitProps(dotProps(), ["index", "dataKey", "value", "payload", "points"])[1]}
96
96
  class={props.dotClass}
97
97
  />
98
98
  )}
@@ -113,7 +113,7 @@ export function Dots(props: DotsProps): JSX.Element {
113
113
  array with fresh point objects every frame; reference-keyed <For>
114
114
  would dispose+recreate every dot's DOM node per frame. Index-keying
115
115
  reuses the rows and only updates cx/cy reactively. */}
116
- <For each={props.points} keyed={false}>
116
+ <Index each={props.points}>
117
117
  {(entry, i) => (
118
118
  <DotRenderer
119
119
  entry={entry()}
@@ -125,7 +125,7 @@ export function Dots(props: DotsProps): JSX.Element {
125
125
  points={props.points}
126
126
  />
127
127
  )}
128
- </For>
128
+ </Index>
129
129
  </Layer>
130
130
  </Show>
131
131
  );
@@ -16,9 +16,9 @@
16
16
  // - context value carries an `Accessor<TrapezoidViewBox>` (Solid context is fixed
17
17
  // at provide-time; the accessor keeps the box reactive).
18
18
  import { type CamelSvgProps } from "../util/svgPropertiesNoEvents";
19
- import { createContext, createMemo, merge, omit, Show, useContext } from "solid-js";
19
+ import { createContext, createMemo, Show, useContext, mergeProps, splitProps } from "solid-js";
20
20
  import type { Accessor } from "solid-js";
21
- import type { JSX } from "@solidjs/web";
21
+ import type { JSX } from "solid-js";
22
22
  import { type RenderableText, Text } from "./Text";
23
23
  import { useUniqueId } from "../util/useUniqueId";
24
24
  import { isNullish, isNumber, isNumOrStr } from "../util/DataUtils";
@@ -109,7 +109,11 @@ export function CartesianLabelContextProvider(
109
109
  width: props.width,
110
110
  height: props.height,
111
111
  }));
112
- return <CartesianLabelContext value={viewBox}>{props.children}</CartesianLabelContext>;
112
+ return (
113
+ <CartesianLabelContext.Provider value={viewBox}>
114
+ {props.children}
115
+ </CartesianLabelContext.Provider>
116
+ );
113
117
  }
114
118
 
115
119
  export function useCartesianLabelContext(): Accessor<TrapezoidViewBox | undefined> {
@@ -141,7 +145,7 @@ export function PolarLabelContextProvider(
141
145
  endAngle: props.endAngle,
142
146
  clockWise: props.clockWise,
143
147
  }));
144
- return <PolarLabelContext value={viewBox}>{props.children}</PolarLabelContext>;
148
+ return <PolarLabelContext.Provider value={viewBox}>{props.children}</PolarLabelContext.Provider>;
145
149
  }
146
150
 
147
151
  export function usePolarLabelContext(): Accessor<PolarViewBoxRequired | undefined> {
@@ -223,7 +227,7 @@ const getDeltaAngle = (startAngle: number, endAngle: number): number => {
223
227
  * @consumes CartesianLabelContext
224
228
  */
225
229
  export function Label(outerProps: Props): JSX.Element {
226
- const props = merge(defaultLabelProps, outerProps);
230
+ const props = mergeProps(defaultLabelProps, outerProps);
227
231
  const cartesianViewBox = useCartesianLabelContext();
228
232
  const polarLabelContext = usePolarLabelContext();
229
233
  const generatedRadialPathId = useUniqueId("recharts-radial-line");
@@ -252,8 +256,7 @@ export function Label(outerProps: Props): JSX.Element {
252
256
 
253
257
  const textSvgProps = createMemo(() =>
254
258
  svgPropertiesAndEvents(
255
- omit(
256
- props,
259
+ splitProps(props, [
257
260
  "content",
258
261
  "viewBox",
259
262
  "parentViewBox",
@@ -267,7 +270,7 @@ export function Label(outerProps: Props): JSX.Element {
267
270
  "index",
268
271
  "id",
269
272
  "class",
270
- ),
273
+ ])[1],
271
274
  ),
272
275
  );
273
276
 
@@ -389,7 +392,7 @@ export function Label(outerProps: Props): JSX.Element {
389
392
  if (vb == null || typeof content !== "function") {
390
393
  return undefined;
391
394
  }
392
- return { content, args: omit({ ...props, viewBox: vb }, "content") };
395
+ return { content, args: splitProps({ ...props, viewBox: vb }, ["content"])[1] };
393
396
  });
394
397
 
395
398
  // Render the default/polar/radial text labels inline under <Show> (their render
@@ -441,7 +444,7 @@ export function Label(outerProps: Props): JSX.Element {
441
444
  <text
442
445
  {...textSvgProps()}
443
446
  dominant-baseline="central"
444
- class={["recharts-radial-bar-label", props.class]}
447
+ class={["recharts-radial-bar-label", props.class].filter(Boolean).join(" ")}
445
448
  >
446
449
  <defs>
447
450
  <path id={radialPathId()} d={d().path} />
@@ -14,9 +14,9 @@
14
14
  // - element `content` (React.cloneElement) DROPPED; function `content` kept.
15
15
  // - ZIndexLayer / `fill`-passthrough deferred (Label forwards no per-label fill).
16
16
  import { type CamelSvgProps } from "../util/svgPropertiesNoEvents";
17
- import { createContext, createMemo, For, omit, Show, useContext } from "solid-js";
17
+ import { createContext, createMemo, For, Show, useContext, splitProps } from "solid-js";
18
18
  import type { Accessor } from "solid-js";
19
- import type { JSX } from "@solidjs/web";
19
+ import type { JSX } from "solid-js";
20
20
  import {
21
21
  type LabelContentType,
22
22
  type LabelFormatter,
@@ -135,7 +135,9 @@ export function CartesianLabelListContextProvider(props: {
135
135
  children: JSX.Element;
136
136
  }): JSX.Element {
137
137
  return (
138
- <CartesianLabelListContext value={props.value}>{props.children}</CartesianLabelListContext>
138
+ <CartesianLabelListContext.Provider value={props.value}>
139
+ {props.children}
140
+ </CartesianLabelListContext.Provider>
139
141
  );
140
142
  }
141
143
 
@@ -147,7 +149,11 @@ export function PolarLabelListContextProvider(props: {
147
149
  value: Accessor<ReadonlyArray<PolarLabelListEntry> | undefined>;
148
150
  children: JSX.Element;
149
151
  }): JSX.Element {
150
- return <PolarLabelListContext value={props.value}>{props.children}</PolarLabelListContext>;
152
+ return (
153
+ <PolarLabelListContext.Provider value={props.value}>
154
+ {props.children}
155
+ </PolarLabelListContext.Provider>
156
+ );
151
157
  }
152
158
 
153
159
  /**
@@ -165,8 +171,7 @@ export function LabelList(props: Props): JSX.Element {
165
171
  const list = cartesianData?.() ?? polarData?.();
166
172
  return list != null && list.length > 0 ? list : undefined;
167
173
  });
168
- const others = omit(
169
- props,
174
+ const others = splitProps(props, [
170
175
  "valueAccessor",
171
176
  "clockWise",
172
177
  "dataKey",
@@ -177,7 +182,7 @@ export function LabelList(props: Props): JSX.Element {
177
182
  "offset",
178
183
  "angle",
179
184
  "formatter",
180
- );
185
+ ])[1];
181
186
 
182
187
  const valueOf = (
183
188
  entry: CartesianLabelListEntry | PolarLabelListEntry,