solid-recharts 0.2.0 → 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 (508) hide show
  1. package/package.json +17 -13
  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 +43 -58
  6. package/src/cartesian/AreaRevealShape.tsx +1 -1
  7. package/src/cartesian/Bar.tsx +98 -78
  8. package/src/cartesian/BarStack.tsx +10 -7
  9. package/src/cartesian/Brush.tsx +20 -16
  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 +17 -21
  14. package/src/cartesian/GraphicalItemClipPath.tsx +1 -1
  15. package/src/cartesian/Line.tsx +51 -66
  16. package/src/cartesian/LineDrawShape.tsx +20 -17
  17. package/src/cartesian/ReferenceArea.tsx +28 -38
  18. package/src/cartesian/ReferenceDot.tsx +27 -37
  19. package/src/cartesian/ReferenceLine.tsx +28 -37
  20. package/src/cartesian/RenderedTicksReporter.tsx +19 -17
  21. package/src/cartesian/Scatter.tsx +27 -39
  22. package/src/cartesian/XAxis.tsx +55 -68
  23. package/src/cartesian/YAxis.tsx +88 -99
  24. package/src/cartesian/ZAxis.tsx +29 -41
  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 +6 -5
  40. package/src/chart/Treemap.tsx +5 -4
  41. package/src/component/ActivePoints.tsx +6 -15
  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 +11 -7
  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 +17 -26
  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 +49 -60
  65. package/src/polar/PolarAngleAxis.tsx +43 -52
  66. package/src/polar/PolarGrid.tsx +5 -5
  67. package/src/polar/PolarRadiusAxis.tsx +42 -50
  68. package/src/polar/Radar.tsx +24 -36
  69. package/src/polar/RadialBar.tsx +23 -41
  70. package/src/shape/Cross.tsx +5 -5
  71. package/src/shape/Curve.tsx +7 -8
  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 +6 -6
  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 +20 -28
  84. package/src/state/SetTooltipEntrySettings.tsx +10 -27
  85. package/src/state/brushSlice.ts +10 -8
  86. package/src/state/cartesianAxisSlice.ts +72 -84
  87. package/src/state/chartDataSlice.ts +29 -23
  88. package/src/state/createCollectionActions.ts +51 -0
  89. package/src/state/createSelector.ts +97 -0
  90. package/src/state/errorBarSlice.ts +22 -16
  91. package/src/state/eventSettingsSlice.ts +11 -9
  92. package/src/state/externalEventsMiddleware.ts +2 -11
  93. package/src/state/graphicalItemsSlice.ts +35 -44
  94. package/src/state/isEventThrottled.ts +12 -0
  95. package/src/state/keyboardEventsMiddleware.ts +2 -8
  96. package/src/state/layoutSlice.ts +29 -17
  97. package/src/state/legendSlice.ts +35 -31
  98. package/src/state/mouseEventsMiddleware.ts +2 -13
  99. package/src/state/optionsSlice.ts +8 -6
  100. package/src/state/patched.ts +19 -0
  101. package/src/state/polarAxisSlice.ts +21 -13
  102. package/src/state/polarOptionsSlice.ts +16 -14
  103. package/src/state/referenceElementsSlice.ts +49 -34
  104. package/src/state/registerInStore.ts +70 -0
  105. package/src/state/renderedTicksSlice.ts +11 -7
  106. package/src/state/rootPropsSlice.ts +16 -14
  107. package/src/state/selectors/areaSelectors.ts +13 -36
  108. package/src/state/selectors/arrayEqualityCheck.ts +32 -7
  109. package/src/state/selectors/axisSelectors.ts +215 -169
  110. package/src/state/selectors/barSelectors.ts +8 -36
  111. package/src/state/selectors/combiners/combineConfiguredScale.ts +1 -1
  112. package/src/state/selectors/combiners/combineRealScaleType.ts +1 -1
  113. package/src/state/selectors/dataSelectors.ts +35 -16
  114. package/src/state/selectors/numberDomainEqualityCheck.ts +16 -8
  115. package/src/state/selectors/selectAxisForGraphicalItem.ts +52 -0
  116. package/src/state/tooltipSlice.ts +135 -86
  117. package/src/state/unregisterOnCleanup.ts +5 -20
  118. package/src/state/zIndexSlice.ts +50 -42
  119. package/src/synchronisation/useChartSynchronisation.tsx +213 -217
  120. package/src/util/ActiveShapeUtils.tsx +2 -9
  121. package/src/util/BarUtils.tsx +30 -23
  122. package/src/util/ChartUtils.ts +69 -25
  123. package/src/util/DirectPortal.tsx +107 -0
  124. package/src/util/FunnelUtils.tsx +1 -1
  125. package/src/util/RadialBarUtils.tsx +4 -3
  126. package/src/util/createCartesianCharts.tsx +1 -1
  127. package/src/util/createPolarCharts.tsx +1 -1
  128. package/src/util/propsAreEqual.ts +3 -33
  129. package/src/util/stacks/stackTypes.ts +1 -1
  130. package/src/util/svgPropertiesAndEvents.ts +1 -1
  131. package/src/util/tooltip/translate.ts +2 -2
  132. package/src/util/types.ts +3 -3
  133. package/src/zIndex/ZIndexLayer.tsx +39 -68
  134. package/src/zIndex/ZIndexPortal.tsx +29 -25
  135. package/src/state/reduxDevtoolsJsonStringifyReplacer.ts +0 -15
  136. package/src/util/axisPropsAreEqual.ts +0 -42
  137. package/src/util/resolveDefaultProps.tsx +0 -8
  138. package/src/util/typedDataKey.ts +0 -8
  139. package/test/_data.ts +0 -408
  140. package/test/animation/AnimationController.typed.spec.ts +0 -53
  141. package/test/animation/AnimationControllerImpl.spec.ts +0 -271
  142. package/test/animation/CSSTransitionAnimate.timing.spec.tsx +0 -473
  143. package/test/animation/JavascriptAnimate.spec.tsx +0 -62
  144. package/test/animation/RechartsAnimation.spec.ts +0 -636
  145. package/test/animation/easing.spec.ts +0 -218
  146. package/test/animation/legacyAnimationLengthChange.spec.tsx +0 -803
  147. package/test/animation/matchBy.spec.ts +0 -467
  148. package/test/animation/mockAnimationController.ts +0 -40
  149. package/test/animation/mockControllerAnimationManager.ts +0 -143
  150. package/test/animation/mockTimeoutController.ts +0 -114
  151. package/test/animation/timeoutController.spec.ts +0 -138
  152. package/test/animation/useAnimationStartSnapshot.spec.ts +0 -147
  153. package/test/animation/util.spec.ts +0 -28
  154. package/test/cartesian/Area.animation.spec.tsx +0 -363
  155. package/test/cartesian/Area.range.spec.tsx +0 -54
  156. package/test/cartesian/Area.spec.tsx +0 -1202
  157. package/test/cartesian/Area.stacked.render.spec.tsx +0 -69
  158. package/test/cartesian/Area.typed.spec.tsx +0 -209
  159. package/test/cartesian/Axis.integration.spec.tsx +0 -158
  160. package/test/cartesian/Bar/Bar.csstransition.spec.tsx +0 -299
  161. package/test/cartesian/Bar/Bar.spec.tsx +0 -2314
  162. package/test/cartesian/Bar/Bar.typed.spec.tsx +0 -192
  163. package/test/cartesian/Bar.animation.spec.tsx +0 -426
  164. package/test/cartesian/Bar.stackDomain.spec.tsx +0 -66
  165. package/test/cartesian/Bar.stacked.render.spec.tsx +0 -53
  166. package/test/cartesian/Bar.truncateByDomain.spec.tsx +0 -237
  167. package/test/cartesian/Bar.zeroDimensionFiltering.spec.tsx +0 -336
  168. package/test/cartesian/BarStack.spec.tsx +0 -91
  169. package/test/cartesian/Brush.keyboard.spec.tsx +0 -88
  170. package/test/cartesian/Brush.panorama.spec.tsx +0 -41
  171. package/test/cartesian/Brush.props.spec.tsx +0 -63
  172. package/test/cartesian/Brush.render.spec.tsx +0 -117
  173. package/test/cartesian/Brush.spec.tsx +0 -522
  174. package/test/cartesian/Brush.stacked.spec.tsx +0 -221
  175. package/test/cartesian/CartesianAxis.render.spec.tsx +0 -50
  176. package/test/cartesian/CartesianAxis.spec.tsx +0 -396
  177. package/test/cartesian/CartesianGrid.render.spec.tsx +0 -39
  178. package/test/cartesian/CartesianGrid.spec.tsx +0 -2103
  179. package/test/cartesian/ErrorBar.render.spec.tsx +0 -69
  180. package/test/cartesian/ErrorBar.spec.tsx +0 -2414
  181. package/test/cartesian/Funnel.animation.spec.tsx +0 -241
  182. package/test/cartesian/Funnel.spec.tsx +0 -226
  183. package/test/cartesian/Funnel.typed.spec.tsx +0 -221
  184. package/test/cartesian/GraphicalItemClipPath.scale-behavior.spec.tsx +0 -627
  185. package/test/cartesian/GraphicalItemClipPath.spec.tsx +0 -427
  186. package/test/cartesian/Line.animation.spec.tsx +0 -643
  187. package/test/cartesian/Line.sparseAnimationPath.spec.tsx +0 -98
  188. package/test/cartesian/Line.spec.tsx +0 -471
  189. package/test/cartesian/Line.typed.spec.tsx +0 -152
  190. package/test/cartesian/ReferenceArea.render.spec.tsx +0 -63
  191. package/test/cartesian/ReferenceArea.spec.tsx +0 -663
  192. package/test/cartesian/ReferenceArea.typed.spec.tsx +0 -74
  193. package/test/cartesian/ReferenceDot.render.spec.tsx +0 -55
  194. package/test/cartesian/ReferenceDot.spec.tsx +0 -462
  195. package/test/cartesian/ReferenceDot.typed.spec.tsx +0 -76
  196. package/test/cartesian/ReferenceLine/ReferenceLine.panorama.spec.tsx +0 -184
  197. package/test/cartesian/ReferenceLine/ReferenceLine.spec.tsx +0 -744
  198. package/test/cartesian/ReferenceLine/ReferenceLine.typed.spec.tsx +0 -74
  199. package/test/cartesian/ReferenceLine/getEndPoints.spec.ts +0 -399
  200. package/test/cartesian/ReferenceLine.render.spec.tsx +0 -134
  201. package/test/cartesian/Scatter.animation.spec.tsx +0 -381
  202. package/test/cartesian/Scatter.render.spec.tsx +0 -61
  203. package/test/cartesian/Scatter.spec.tsx +0 -406
  204. package/test/cartesian/Scatter.typed.spec.tsx +0 -153
  205. package/test/cartesian/XAxis/XAxis.barSize.spec.tsx +0 -336
  206. package/test/cartesian/XAxis/XAxis.brush.spec.tsx +0 -266
  207. package/test/cartesian/XAxis/XAxis.categorydomain.spec.tsx +0 -872
  208. package/test/cartesian/XAxis/XAxis.dataKey.spec.tsx +0 -86
  209. package/test/cartesian/XAxis/XAxis.datatypes.spec.tsx +0 -127
  210. package/test/cartesian/XAxis/XAxis.hide.spec.tsx +0 -106
  211. package/test/cartesian/XAxis/XAxis.multiaxis.spec.tsx +0 -336
  212. package/test/cartesian/XAxis/XAxis.numberdomain.spec.tsx +0 -1466
  213. package/test/cartesian/XAxis/XAxis.padding.spec.tsx +0 -758
  214. package/test/cartesian/XAxis/XAxis.padding_clip.spec.tsx +0 -65
  215. package/test/cartesian/XAxis/XAxis.state.spec.tsx +0 -355
  216. package/test/cartesian/XAxis/XAxis.tick.spec.tsx +0 -493
  217. package/test/cartesian/XAxis/XAxis.timescale.spec.tsx +0 -233
  218. package/test/cartesian/XAxis/XAxis.type.spec.tsx +0 -107
  219. package/test/cartesian/XAxis/XAxis.typed.spec.tsx +0 -102
  220. package/test/cartesian/XAxis/XAxis.vertical.spec.tsx +0 -265
  221. package/test/cartesian/XAxis.tickFormatter.spec.tsx +0 -54
  222. package/test/cartesian/YAxis/YAxis.7362.derivedDomain.spec.tsx +0 -230
  223. package/test/cartesian/YAxis/YAxis.7362.spec.tsx +0 -104
  224. package/test/cartesian/YAxis/YAxis.interval-zero.spec.tsx +0 -88
  225. package/test/cartesian/YAxis/YAxis.label.spec.tsx +0 -219
  226. package/test/cartesian/YAxis/YAxis.spec.tsx +0 -1595
  227. package/test/cartesian/YAxis/YAxis.tick.spec.tsx +0 -428
  228. package/test/cartesian/YAxis/YAxis.tickFormatter.spec.tsx +0 -54
  229. package/test/cartesian/YAxis/YAxis.ticks.spec.tsx +0 -263
  230. package/test/cartesian/YAxis/YAxis.type.spec.tsx +0 -107
  231. package/test/cartesian/YAxis/YAxis.typed.spec.tsx +0 -102
  232. package/test/cartesian/ZAxis.spec.tsx +0 -300
  233. package/test/cartesian/ZAxis.typed.spec.tsx +0 -33
  234. package/test/cartesian/__snapshots__/Brush.spec.tsx.snap +0 -5
  235. package/test/cartesian/axisLineAndStroke.spec.tsx +0 -72
  236. package/test/cartesian/getCartesianPosition.spec.ts +0 -907
  237. package/test/cartesian/getEquidistantTicks.spec.ts +0 -88
  238. package/test/cartesian/getTicks.spec.ts +0 -378
  239. package/test/cartesian/miscFeatureGaps.spec.tsx +0 -89
  240. package/test/cartesian/useAnimatedLineLength.spec.ts +0 -168
  241. package/test/chart/AccessibilityLayer.spec.tsx +0 -569
  242. package/test/chart/AccessibilityScans.spec.tsx +0 -286
  243. package/test/chart/AreaChart.spec.tsx +0 -409
  244. package/test/chart/AreaChart.stacked.spec.tsx +0 -1407
  245. package/test/chart/AreaChart.typed.spec.tsx +0 -39
  246. package/test/chart/BarChart.spec.tsx +0 -3719
  247. package/test/chart/BarChart.typed.spec.tsx +0 -60
  248. package/test/chart/CategoricalChart.spec.tsx +0 -255
  249. package/test/chart/ComposedChart.spec.tsx +0 -199
  250. package/test/chart/ComposedChart.typed.spec.tsx +0 -39
  251. package/test/chart/FunnelChart.spec.tsx +0 -215
  252. package/test/chart/FunnelChart.typed.spec.tsx +0 -39
  253. package/test/chart/LineChart.multiseries.spec.tsx +0 -50
  254. package/test/chart/LineChart.smoke.spec.tsx +0 -50
  255. package/test/chart/LineChart.spec.tsx +0 -930
  256. package/test/chart/LineChart.typed.spec.tsx +0 -39
  257. package/test/chart/NicheChartTooltip.spec.tsx +0 -81
  258. package/test/chart/PieChart.spec.tsx +0 -793
  259. package/test/chart/PieChart.typed.spec.tsx +0 -39
  260. package/test/chart/RadarChart.spec.tsx +0 -530
  261. package/test/chart/RadarChart.typed.spec.tsx +0 -39
  262. package/test/chart/RadialBarChart.5966.spec.tsx +0 -48
  263. package/test/chart/RadialBarChart.spec.tsx +0 -679
  264. package/test/chart/RadialBarChart.typed.spec.tsx +0 -39
  265. package/test/chart/RechartsWrapper.spec.tsx +0 -83
  266. package/test/chart/Sankey.content.spec.tsx +0 -46
  267. package/test/chart/Sankey.spec.tsx +0 -952
  268. package/test/chart/Sankey.typed.spec.tsx +0 -29
  269. package/test/chart/ScatterChart.spec.tsx +0 -2613
  270. package/test/chart/ScatterChart.typed.spec.tsx +0 -39
  271. package/test/chart/SunburstChart.spec.tsx +0 -146
  272. package/test/chart/Treemap.animation.spec.tsx +0 -52
  273. package/test/chart/Treemap.spec.tsx +0 -1003
  274. package/test/chart/Treemap.typed.spec.tsx +0 -26
  275. package/test/chart/chartEvents.spec.tsx +0 -127
  276. package/test/chart/responsive.spec.tsx +0 -620
  277. package/test/component/Cell.render.spec.tsx +0 -155
  278. package/test/component/Cell.spec.tsx +0 -12
  279. package/test/component/Cursor.spec.tsx +0 -186
  280. package/test/component/DefaultTooltipContent.spec.tsx +0 -102
  281. package/test/component/Label.render.spec.tsx +0 -63
  282. package/test/component/Label.spec.tsx +0 -686
  283. package/test/component/Label.typed.spec.tsx +0 -46
  284. package/test/component/LabelList.spec.tsx +0 -188
  285. package/test/component/Legend.itemSorter.spec.tsx +0 -704
  286. package/test/component/Legend.render.spec.tsx +0 -92
  287. package/test/component/Legend.spec.tsx +0 -2213
  288. package/test/component/Legend.typed.spec.tsx +0 -22
  289. package/test/component/ResponsiveContainer.spec.tsx +0 -523
  290. package/test/component/ResponsiveContainerDataTest.spec.tsx +0 -51
  291. package/test/component/Text.spec.tsx +0 -415
  292. package/test/component/Text.typed.spec.tsx +0 -46
  293. package/test/component/Tooltip/ActiveDot.spec.tsx +0 -370
  294. package/test/component/Tooltip/Tooltip.animation.spec.tsx +0 -209
  295. package/test/component/Tooltip/Tooltip.content.spec.tsx +0 -128
  296. package/test/component/Tooltip/Tooltip.formatter.spec.tsx +0 -152
  297. package/test/component/Tooltip/Tooltip.includeHidden.spec.tsx +0 -79
  298. package/test/component/Tooltip/Tooltip.multipleDataArrays.spec.tsx +0 -165
  299. package/test/component/Tooltip/Tooltip.offset.spec.tsx +0 -113
  300. package/test/component/Tooltip/Tooltip.state.spec.tsx +0 -74
  301. package/test/component/Tooltip/Tooltip.sync.spec.tsx +0 -639
  302. package/test/component/Tooltip/defaultIndex.spec.tsx +0 -227
  303. package/test/component/Tooltip/graphicalItem.formatter.spec.tsx +0 -138
  304. package/test/component/Tooltip/itemSorter.spec.tsx +0 -2815
  305. package/test/component/Tooltip/tooltipEventType.spec.tsx +0 -344
  306. package/test/component/Tooltip/tooltipMouseHoverSelectors.ts +0 -41
  307. package/test/component/Tooltip/tooltipTestHelpers.tsx +0 -162
  308. package/test/component/Tooltip.defaultIndex.spec.tsx +0 -48
  309. package/test/component/Tooltip.hover.spec.tsx +0 -61
  310. package/test/component/Tooltip.item.spec.tsx +0 -54
  311. package/test/component/Tooltip.keyboard.spec.tsx +0 -51
  312. package/test/component/Tooltip.payload.spec.tsx +0 -1716
  313. package/test/component/Tooltip.touch.spec.tsx +0 -39
  314. package/test/component/Tooltip.visibility.spec.tsx +0 -1889
  315. package/test/component/TooltipBoundingBox.spec.tsx +0 -89
  316. package/test/component/responsiveContainerUtils.spec.ts +0 -205
  317. package/test/container/ClipPath.spec.tsx +0 -602
  318. package/test/container/chartDimensions.spec.tsx +0 -368
  319. package/test/context/chartLayoutContext.spec.tsx +0 -378
  320. package/test/helper/ExpectAxisDomain.tsx +0 -27
  321. package/test/helper/assertNotNull.ts +0 -6
  322. package/test/helper/assertZIndexLayerOrder.ts +0 -19
  323. package/test/helper/createSelectorTestCase.tsx +0 -176
  324. package/test/helper/expectAnimatedPieAngles.ts +0 -100
  325. package/test/helper/expectAnimatedPiePaths.ts +0 -78
  326. package/test/helper/expectAreaCurve.ts +0 -15
  327. package/test/helper/expectAxisTicks.ts +0 -48
  328. package/test/helper/expectBars.ts +0 -54
  329. package/test/helper/expectFunctionReturning.ts +0 -58
  330. package/test/helper/expectLabel.ts +0 -32
  331. package/test/helper/expectLastCalledWith.ts +0 -48
  332. package/test/helper/expectLine.ts +0 -20
  333. package/test/helper/expectPieSectors.ts +0 -80
  334. package/test/helper/expectScale.ts +0 -37
  335. package/test/helper/expectScatterPoints.ts +0 -52
  336. package/test/helper/expectStackGroups.ts +0 -144
  337. package/test/helper/mockAxes.ts +0 -22
  338. package/test/helper/mockGetBoundingClientRect.ts +0 -66
  339. package/test/helper/mockHTMLElementProperty.ts +0 -19
  340. package/test/helper/mockTouchingElement.ts +0 -27
  341. package/test/helper/offsetHelpers.ts +0 -19
  342. package/test/helper/parameterizedTestCases.tsx +0 -99
  343. package/test/helper/produceState.ts +0 -32
  344. package/test/helper/selectorTestHelpers.tsx +0 -63
  345. package/test/helper/trim.spec.ts +0 -35
  346. package/test/helper/trim.ts +0 -11
  347. package/test/hooks/useActiveTooltipDataPoints.spec.tsx +0 -358
  348. package/test/hooks/useAxisDomain.spec.tsx +0 -361
  349. package/test/hooks/useAxisScale.spec.tsx +0 -283
  350. package/test/hooks/useAxisTicks.spec.tsx +0 -130
  351. package/test/hooks/useOffset.spec.tsx +0 -248
  352. package/test/hooks/useTooltipStateHooks.spec.tsx +0 -109
  353. package/test/polar/Pie/Pie-TwoLevelPieChart.spec.tsx +0 -135
  354. package/test/polar/Pie/Pie.spec.tsx +0 -784
  355. package/test/polar/Pie/Pie.typed.spec.tsx +0 -78
  356. package/test/polar/Pie.animation.spec.tsx +0 -529
  357. package/test/polar/PieWithLegend.animation.spec.tsx +0 -142
  358. package/test/polar/PolarAngleAxis/PolarAngleAxis.events.spec.tsx +0 -76
  359. package/test/polar/PolarAngleAxis/PolarAngleAxis.spec.tsx +0 -2079
  360. package/test/polar/PolarAngleAxis/PolarAngleAxis.typed.spec.tsx +0 -102
  361. package/test/polar/PolarAngleAxis.render.spec.tsx +0 -79
  362. package/test/polar/PolarGrid.render.spec.tsx +0 -75
  363. package/test/polar/PolarGrid.spec.tsx +0 -918
  364. package/test/polar/PolarLegendPerRow.render.spec.tsx +0 -85
  365. package/test/polar/PolarRadiusAxis.events.spec.tsx +0 -65
  366. package/test/polar/PolarRadiusAxis.render.spec.tsx +0 -52
  367. package/test/polar/PolarRadiusAxis.spec.tsx +0 -991
  368. package/test/polar/PolarRadiusAxis.typed.spec.tsx +0 -84
  369. package/test/polar/PolarTooltipLegend.render.spec.tsx +0 -80
  370. package/test/polar/Radar.animation.spec.tsx +0 -570
  371. package/test/polar/Radar.render.spec.tsx +0 -71
  372. package/test/polar/Radar.spec.tsx +0 -265
  373. package/test/polar/Radar.typed.spec.tsx +0 -119
  374. package/test/polar/RadialBar/RadialBar.spec.tsx +0 -1521
  375. package/test/polar/RadialBar/RadialBar.typed.spec.tsx +0 -132
  376. package/test/polar/RadialBar.animation.spec.tsx +0 -375
  377. package/test/polar/RadialBar.render.spec.tsx +0 -66
  378. package/test/polar/RadialBar.stacked.spec.tsx +0 -57
  379. package/test/setup.ts +0 -84
  380. package/test/shape/ActiveShape.spec.tsx +0 -181
  381. package/test/shape/Cross.spec.tsx +0 -60
  382. package/test/shape/Cross.typed.spec.tsx +0 -26
  383. package/test/shape/Curve.spec.tsx +0 -368
  384. package/test/shape/Curve.typed.spec.tsx +0 -69
  385. package/test/shape/Dot.spec.tsx +0 -73
  386. package/test/shape/Dot.typed.spec.tsx +0 -30
  387. package/test/shape/Polygon.spec.tsx +0 -357
  388. package/test/shape/Polygon.typed.spec.tsx +0 -28
  389. package/test/shape/Rectangle.animation.spec.tsx +0 -451
  390. package/test/shape/Rectangle.spec.tsx +0 -68
  391. package/test/shape/Rectangle.typed.spec.tsx +0 -24
  392. package/test/shape/Sector.spec.tsx +0 -76
  393. package/test/shape/Sector.typed.spec.tsx +0 -24
  394. package/test/shape/Symbols.spec.tsx +0 -43
  395. package/test/shape/Symbols.typed.spec.tsx +0 -24
  396. package/test/shape/Trapezoid.spec.tsx +0 -50
  397. package/test/shape/Trapezoid.typed.spec.tsx +0 -24
  398. package/test/shape/__snapshots__/Cross.spec.tsx.snap +0 -62
  399. package/test/shape/__snapshots__/Curve.spec.tsx.snap +0 -460
  400. package/test/shape/__snapshots__/Polygon.spec.tsx.snap +0 -58
  401. package/test/shape/__snapshots__/Rectangle.spec.tsx.snap +0 -117
  402. package/test/shape/__snapshots__/Sector.spec.tsx.snap +0 -71
  403. package/test/shape/__snapshots__/Trapezoid.spec.tsx.snap +0 -64
  404. package/test/state/chartDataSlice.spec.ts +0 -53
  405. package/test/state/externalEventsMiddleware.spec.ts +0 -178
  406. package/test/state/graphicalItemsSlice.spec.ts +0 -92
  407. package/test/state/hooks.spec.tsx +0 -68
  408. package/test/state/legendSlice.spec.ts +0 -44
  409. package/test/state/mouseEventsMiddleware.spec.ts +0 -75
  410. package/test/state/optionsSlice.spec.ts +0 -19
  411. package/test/state/reduxDevtoolsJsonStringifyReplacer.spec.ts +0 -25
  412. package/test/state/referenceElementsSlice.spec.ts +0 -84
  413. package/test/state/selectors/areaSelectors.spec.tsx +0 -77
  414. package/test/state/selectors/axisSelectors.spec.tsx +0 -1418
  415. package/test/state/selectors/barStackSelectors.spec.tsx +0 -752
  416. package/test/state/selectors/brushSelectors.spec.tsx +0 -30
  417. package/test/state/selectors/cartesianAxisSlice.spec.ts +0 -96
  418. package/test/state/selectors/combineNiceTicks.spec.ts +0 -207
  419. package/test/state/selectors/combiners/combineActiveTooltipIndex.spec.ts +0 -61
  420. package/test/state/selectors/combiners/combineAllBarPositions.spec.ts +0 -39
  421. package/test/state/selectors/combiners/combineConfiguredScale.spec.ts +0 -56
  422. package/test/state/selectors/combiners/combineDisplayedStackedData.spec.ts +0 -123
  423. package/test/state/selectors/combiners/combineRealScaleType.spec.ts +0 -80
  424. package/test/state/selectors/containerSelectors.spec.tsx +0 -168
  425. package/test/state/selectors/dataSelectors.spec.tsx +0 -136
  426. package/test/state/selectors/legendSelectors.spec.tsx +0 -113
  427. package/test/state/selectors/lineSelectors.spec.tsx +0 -60
  428. package/test/state/selectors/pieSelectors.spec.tsx +0 -72
  429. package/test/state/selectors/radarSelectors.spec.tsx +0 -496
  430. package/test/state/selectors/rootPropsSelectors.spec.tsx +0 -169
  431. package/test/state/selectors/scatterSelectors.spec.tsx +0 -47
  432. package/test/state/selectors/selectActiveTooltipIndex.spec.tsx +0 -234
  433. package/test/state/selectors/selectAllAxes.spec.tsx +0 -18
  434. package/test/state/selectors/selectAxisDomain.spec.tsx +0 -21
  435. package/test/state/selectors/selectAxisDomainIncludingNiceTicks.spec.tsx +0 -19
  436. package/test/state/selectors/selectAxisRangeWithReverse.spec.tsx +0 -22
  437. package/test/state/selectors/selectAxisScale.spec.tsx +0 -91
  438. package/test/state/selectors/selectBarRectangles.stackOffset.spec.tsx +0 -503
  439. package/test/state/selectors/selectBaseAxis.spec.tsx +0 -56
  440. package/test/state/selectors/selectCartesianItemsSettings.spec.tsx +0 -57
  441. package/test/state/selectors/selectChartOffset.spec.tsx +0 -26
  442. package/test/state/selectors/selectDisplayedData.spec.tsx +0 -282
  443. package/test/state/selectors/selectIsTooltipActive.spec.tsx +0 -231
  444. package/test/state/selectors/selectNumericalDomain.spec.tsx +0 -21
  445. package/test/state/selectors/selectRealScaleType.spec.tsx +0 -19
  446. package/test/state/selectors/selectStackGroups.spec.tsx +0 -322
  447. package/test/state/selectors/selectXAxisPosition.spec.tsx +0 -22
  448. package/test/state/selectors/selectYAxisPosition.spec.tsx +0 -22
  449. package/test/state/selectors/selectors.spec.tsx +0 -1613
  450. package/test/state/throttling.spec.ts +0 -200
  451. package/test/state/zIndexSlice.spec.ts +0 -85
  452. package/test/synchronisation/useChartSynchronisation.spec.tsx +0 -225
  453. package/test/util/BarUtils.spec.ts +0 -39
  454. package/test/util/CartesianUtils/CartesianUtils.spec.ts +0 -261
  455. package/test/util/CartesianUtils/rectWithPoints.spec.ts +0 -48
  456. package/test/util/ChartUtils/ChartUtils.spec.ts +0 -491
  457. package/test/util/ChartUtils/appendOffsetOfLegend.spec.ts +0 -136
  458. package/test/util/ChartUtils/appendOffsetOfLegend.spec.tsx +0 -133
  459. package/test/util/ChartUtils/getCateCoordinateOfLine.spec.ts +0 -83
  460. package/test/util/ChartUtils/getStackedData.spec.ts +0 -416
  461. package/test/util/ChartUtils/truncateByDomain.spec.ts +0 -70
  462. package/test/util/DataUtils.spec.ts +0 -385
  463. package/test/util/DomUtils.spec.tsx +0 -117
  464. package/test/util/FunnelUtils.spec.tsx +0 -70
  465. package/test/util/Global.spec.ts +0 -11
  466. package/test/util/LRUCache.spec.ts +0 -81
  467. package/test/util/LogUtils.spec.ts +0 -45
  468. package/test/util/PolarUtils.spec.ts +0 -66
  469. package/test/util/ReduceCssCalcPrototype.spec.ts +0 -141
  470. package/test/util/ShallowEqual.spec.ts +0 -102
  471. package/test/util/TickUtils.spec.ts +0 -29
  472. package/test/util/axisPropsAreEqual.spec.ts +0 -93
  473. package/test/util/createChartHelpers.spec.tsx +0 -210
  474. package/test/util/cursor/getCursorPoints.spec.ts +0 -136
  475. package/test/util/cursor/getCursorRectangle.spec.ts +0 -50
  476. package/test/util/cursor/getRadialCursorPoints.spec.ts +0 -36
  477. package/test/util/errorValue.spec.ts +0 -69
  478. package/test/util/getEveryNth.spec.ts +0 -39
  479. package/test/util/getRadiusAndStrokeWidthFromDot.spec.ts +0 -51
  480. package/test/util/getRelativeCoordinate.spec.ts +0 -250
  481. package/test/util/getSliced.spec.ts +0 -45
  482. package/test/util/isDomainSpecifiedByUser.spec.ts +0 -207
  483. package/test/util/isWellBehavedNumber.spec.ts +0 -54
  484. package/test/util/payload/getUniqPayload.spec.ts +0 -56
  485. package/test/util/propsAreEqual.spec.ts +0 -75
  486. package/test/util/round.spec.ts +0 -112
  487. package/test/util/scale/arithmetic.spec.ts +0 -61
  488. package/test/util/scale/createCategoricalInverse.spec.ts +0 -84
  489. package/test/util/scale/getNiceTickValues.spec.ts +0 -421
  490. package/test/util/scale/getTickValuesFixedDomain.spec.ts +0 -155
  491. package/test/util/svgPropertiesAndEvents.spec.tsx +0 -206
  492. package/test/util/svgPropertiesNoEvents.spec.tsx +0 -228
  493. package/test/util/tooltip/translate.spec.ts +0 -396
  494. package/test/util/useAnimationId.spec.tsx +0 -59
  495. package/test/util/useElementOffset.spec.tsx +0 -173
  496. package/test/util/usePrefersReducedMotion.spec.ts +0 -54
  497. package/test/util/useUniqueId.spec.ts +0 -99
  498. package/test/utils/diagnostics-allowlist.ts +0 -18
  499. package/test/utils/diagnostics.ts +0 -58
  500. package/test/zIndex/AllZIndexPortals.spec.tsx +0 -83
  501. package/test/zIndex/DefaultZIndexes.spec.ts +0 -80
  502. package/test/zIndex/DynamicZIndex.spec.tsx +0 -102
  503. package/test/zIndex/ZIndexLayer.portalOwner.spec.tsx +0 -125
  504. package/test/zIndex/componentZIndex.spec.tsx +0 -255
  505. package/test/zIndex/getZIndexFromUnknown.spec.ts +0 -51
  506. package/test/zIndex/multiChartZIndexIsolation.spec.tsx +0 -90
  507. package/test/zIndex/zIndexSelectors.spec.ts +0 -172
  508. package/tsconfig.json +0 -11
@@ -1,6 +1,6 @@
1
1
  // Ported from recharts 3.8.1 src/chart/LineChart.tsx (commit 7a23854).
2
2
  // `forwardRef` → `ref` prop; the user-facing convenience wrapper over CartesianChart.
3
- import type { JSX } from "@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";
@@ -1,3 +1,4 @@
1
+ import { mergeProps, splitProps } from "solid-js";
1
2
  // Ported from recharts 3.8.1 src/chart/PieChart.tsx (commit 7a23854).
2
3
  // `forwardRef` → `ref` prop; the user-facing convenience wrapper over PolarChart.
3
4
  // `resolveDefaultProps` → Solid `merge` (lazy proxy — does NOT eagerly evaluate
@@ -5,8 +6,8 @@
5
6
  // (layout "centric", startAngle 0, endAngle 360) win over PolarChart's polar
6
7
  // defaults. `ref` is omitted from categoricalChartProps and passed separately,
7
8
  // mirroring the reference's forwardRef split.
8
- import { merge, omit } from "solid-js";
9
- import type { JSX } from "@solidjs/web";
9
+
10
+ import type { JSX } from "solid-js";
10
11
  import { arrayTooltipSearcher } from "../state/optionsSlice";
11
12
  import { PolarChart } from "./PolarChart";
12
13
  import { PolarChartProps, TooltipEventType } from "../util/types";
@@ -26,7 +27,7 @@ export interface PieChartProps<DataPointType = unknown> extends PolarChartProps<
26
27
  export function PieChart<DataPointType = unknown>(
27
28
  props: PieChartProps<DataPointType>,
28
29
  ): JSX.Element {
29
- const categoricalChartProps = merge(defaultPieChartProps, omit(props, "ref"));
30
+ const categoricalChartProps = mergeProps(defaultPieChartProps, splitProps(props, ["ref"])[1]);
30
31
 
31
32
  return (
32
33
  <PolarChart
@@ -1,3 +1,4 @@
1
+ import { splitProps } from "solid-js";
1
2
  // Ported from recharts 3.8.1 src/chart/PolarChart.tsx (commit 7a23854).
2
3
  //
3
4
  // Solid deviations: `forwardRef` → `ref` prop; `resolveDefaultProps` → per-field
@@ -7,8 +8,8 @@
7
8
  // The polar geometry props (cx/cy/innerRadius/outerRadius/startAngle/endAngle)
8
9
  // pass through to CategoricalChart exactly as in the reference — svgPropertiesNoEvents
9
10
  // forwards cx/cy onto the root <svg> (faithful) and drops the rest.
10
- import { omit } from "solid-js";
11
- import type { JSX } from "@solidjs/web";
11
+
12
+ import type { JSX } from "solid-js";
12
13
  import { ChartOptions } from "../state/optionsSlice";
13
14
  import { RechartsStoreProvider } from "../state/RechartsStoreProvider";
14
15
  import { ChartDataContextProvider } from "../context/chartDataContext";
@@ -89,7 +90,7 @@ export const PolarChart = (props: PolarChartOptions): JSX.Element => {
89
90
  {/* Spread WITHOUT children (a `{...cp()}` spread eagerly evaluates the
90
91
  children getter here, before the provider sets context — running them
91
92
  outside the store); pass children as a lazy JSX child instead. */}
92
- <CategoricalChart {...omit(cp(), "children")} ref={props.ref}>
93
+ <CategoricalChart {...splitProps(cp(), ["children"])[1]} ref={props.ref}>
93
94
  {cp().children}
94
95
  </CategoricalChart>
95
96
  </RechartsStoreProvider>
@@ -1,8 +1,9 @@
1
+ import { mergeProps, splitProps } from "solid-js";
1
2
  // Ported from recharts 3.8.1 src/chart/RadarChart.tsx (commit 7a23854).
2
3
  // `forwardRef`→`ref` prop; `resolveDefaultProps`→`merge` (lazy proxy, see PieChart).
3
4
  // RadarChart-specific defaults: layout "centric", startAngle 90, endAngle -270.
4
- import { merge, omit } from "solid-js";
5
- import type { JSX } from "@solidjs/web";
5
+
6
+ import type { JSX } from "solid-js";
6
7
  import { arrayTooltipSearcher } from "../state/optionsSlice";
7
8
  import { PolarChart } from "./PolarChart";
8
9
  import { PolarChartProps, TooltipEventType } from "../util/types";
@@ -22,7 +23,7 @@ export interface RadarChartProps<DataPointType = unknown> extends PolarChartProp
22
23
  export function RadarChart<DataPointType = unknown>(
23
24
  props: RadarChartProps<DataPointType>,
24
25
  ): JSX.Element {
25
- const categoricalChartProps = merge(defaultRadarChartProps, omit(props, "ref"));
26
+ const categoricalChartProps = mergeProps(defaultRadarChartProps, splitProps(props, ["ref"])[1]);
26
27
 
27
28
  return (
28
29
  <PolarChart
@@ -1,8 +1,9 @@
1
+ import { mergeProps, splitProps } from "solid-js";
1
2
  // Ported from recharts 3.8.1 src/chart/RadialBarChart.tsx (commit 7a23854).
2
3
  // `forwardRef`→`ref` prop; `resolveDefaultProps`→`merge`. RadialBarChart defaults:
3
4
  // layout "radial", startAngle 0, endAngle 360 (PolarChart fills cx/cy/radii).
4
- import { merge, omit } from "solid-js";
5
- import type { JSX } from "@solidjs/web";
5
+
6
+ import type { JSX } from "solid-js";
6
7
  import { arrayTooltipSearcher } from "../state/optionsSlice";
7
8
  import { PolarChart } from "./PolarChart";
8
9
  import { PolarChartProps, TooltipEventType } from "../util/types";
@@ -24,7 +25,10 @@ export interface RadialBarChartProps<
24
25
  export function RadialBarChart<DataPointType = unknown>(
25
26
  props: RadialBarChartProps<DataPointType>,
26
27
  ): JSX.Element {
27
- const categoricalChartProps = merge(defaultRadialBarChartProps, omit(props, "ref"));
28
+ const categoricalChartProps = mergeProps(
29
+ defaultRadialBarChartProps,
30
+ splitProps(props, ["ref"])[1],
31
+ );
28
32
 
29
33
  return (
30
34
  <PolarChart
@@ -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,9 +12,9 @@
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";
17
- import { scaleLinear } from "victory-vendor/d3-scale";
15
+ import { children, createMemo, For, Show, mergeProps } from "solid-js";
16
+ import type { JSX } from "solid-js";
17
+ import { scaleLinear } from "d3-scale";
18
18
  import { Surface } from "../container/Surface";
19
19
  import { Layer } from "../container/Layer";
20
20
  import { Sector } from "../shape/Sector";
@@ -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,17 +117,11 @@ 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
  );
127
127
  }
128
-
129
- /** @deprecated Use computeActivePointState + renderActivePointsLayerFromState */
130
- export function renderActivePointsLayer(args: ActivePointsLayerArgs): JSX.Element | null {
131
- const state = computeActivePointState(args);
132
- if (state == null) {
133
- return null;
134
- }
135
- return renderActivePointsLayerFromState(state, args);
136
- }
@@ -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
  )}
@@ -109,11 +109,15 @@ export function Dots(props: DotsProps): JSX.Element {
109
109
  return (
110
110
  <Show when={shouldRenderDots(props.points, props.dot)}>
111
111
  <Layer class={props.class} clipPath={layerClip()}>
112
- <For each={props.points}>
112
+ {/* keyed={false} (index-keyed): during animation `points` is a fresh
113
+ array with fresh point objects every frame; reference-keyed <For>
114
+ would dispose+recreate every dot's DOM node per frame. Index-keying
115
+ reuses the rows and only updates cx/cy reactively. */}
116
+ <Index each={props.points}>
113
117
  {(entry, i) => (
114
118
  <DotRenderer
115
- entry={entry}
116
- index={i()}
119
+ entry={entry()}
120
+ index={i}
117
121
  dot={props.dot}
118
122
  baseProps={props.baseProps}
119
123
  dataKey={props.dataKey}
@@ -121,7 +125,7 @@ export function Dots(props: DotsProps): JSX.Element {
121
125
  points={props.points}
122
126
  />
123
127
  )}
124
- </For>
128
+ </Index>
125
129
  </Layer>
126
130
  </Show>
127
131
  );