solid-recharts 1.0.0 → 2.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (488) hide show
  1. package/package.json +4 -6
  2. package/src/animation/AnimatedItems.tsx +4 -2
  3. package/src/animation/CSSTransitionAnimate.tsx +39 -41
  4. package/src/animation/JavascriptAnimate.tsx +41 -45
  5. package/src/cartesian/Area.tsx +4 -4
  6. package/src/cartesian/AreaRevealShape.tsx +1 -1
  7. package/src/cartesian/Bar.tsx +21 -33
  8. package/src/cartesian/BarStack.tsx +5 -5
  9. package/src/cartesian/Brush.tsx +15 -19
  10. package/src/cartesian/CartesianAxis.tsx +4 -4
  11. package/src/cartesian/CartesianGrid.tsx +5 -5
  12. package/src/cartesian/ErrorBar.tsx +7 -9
  13. package/src/cartesian/Funnel.tsx +3 -3
  14. package/src/cartesian/GraphicalItemClipPath.tsx +1 -1
  15. package/src/cartesian/Line.tsx +16 -18
  16. package/src/cartesian/LineDrawShape.tsx +13 -14
  17. package/src/cartesian/ReferenceArea.tsx +4 -4
  18. package/src/cartesian/ReferenceDot.tsx +4 -4
  19. package/src/cartesian/ReferenceLine.tsx +4 -4
  20. package/src/cartesian/RenderedTicksReporter.tsx +17 -19
  21. package/src/cartesian/Scatter.tsx +3 -3
  22. package/src/cartesian/XAxis.tsx +1 -1
  23. package/src/cartesian/YAxis.tsx +33 -35
  24. package/src/cartesian/ZAxis.tsx +2 -3
  25. package/src/chart/AreaChart.tsx +1 -1
  26. package/src/chart/BarChart.tsx +1 -1
  27. package/src/chart/CartesianChart.tsx +3 -4
  28. package/src/chart/CategoricalChart.tsx +5 -5
  29. package/src/chart/ComposedChart.tsx +1 -1
  30. package/src/chart/FunnelChart.tsx +1 -1
  31. package/src/chart/LineChart.tsx +1 -1
  32. package/src/chart/PieChart.tsx +3 -4
  33. package/src/chart/PolarChart.tsx +3 -4
  34. package/src/chart/RadarChart.tsx +3 -4
  35. package/src/chart/RadialBarChart.tsx +3 -7
  36. package/src/chart/RechartsWrapper.tsx +24 -14
  37. package/src/chart/Sankey.tsx +6 -9
  38. package/src/chart/ScatterChart.tsx +1 -1
  39. package/src/chart/SunburstChart.tsx +4 -5
  40. package/src/chart/Treemap.tsx +4 -5
  41. package/src/component/ActivePoints.tsx +6 -6
  42. package/src/component/Cell.tsx +5 -23
  43. package/src/component/Cursor.tsx +3 -3
  44. package/src/component/DefaultLegendContent.tsx +6 -8
  45. package/src/component/DefaultTooltipContent.tsx +10 -14
  46. package/src/component/Dots.tsx +5 -5
  47. package/src/component/Label.tsx +10 -13
  48. package/src/component/LabelList.tsx +7 -12
  49. package/src/component/Legend.tsx +21 -26
  50. package/src/component/ResponsiveContainer.tsx +49 -52
  51. package/src/component/Text.tsx +5 -5
  52. package/src/component/Tooltip.tsx +18 -21
  53. package/src/component/TooltipBoundingBox.tsx +16 -18
  54. package/src/component/responsiveContainerUtils.ts +1 -1
  55. package/src/container/ClipPathProvider.tsx +3 -3
  56. package/src/container/Layer.tsx +5 -5
  57. package/src/container/RootSurface.tsx +1 -1
  58. package/src/container/Surface.tsx +6 -5
  59. package/src/context/ErrorBarContext.tsx +2 -2
  60. package/src/context/PanoramaContext.tsx +2 -2
  61. package/src/context/RegisterGraphicalItemId.tsx +2 -4
  62. package/src/context/chartDataContext.tsx +23 -26
  63. package/src/context/chartLayoutContext.tsx +12 -16
  64. package/src/polar/Pie.tsx +12 -13
  65. package/src/polar/PolarAngleAxis.tsx +3 -3
  66. package/src/polar/PolarGrid.tsx +5 -5
  67. package/src/polar/PolarRadiusAxis.tsx +3 -3
  68. package/src/polar/Radar.tsx +3 -3
  69. package/src/polar/RadialBar.tsx +3 -3
  70. package/src/shape/Cross.tsx +5 -5
  71. package/src/shape/Curve.tsx +7 -6
  72. package/src/shape/Dot.tsx +4 -4
  73. package/src/shape/Polygon.tsx +5 -5
  74. package/src/shape/Rectangle.tsx +20 -22
  75. package/src/shape/Sector.tsx +5 -5
  76. package/src/shape/Symbols.tsx +5 -5
  77. package/src/shape/Trapezoid.tsx +27 -29
  78. package/src/state/RechartsStoreProvider.tsx +3 -5
  79. package/src/state/ReportChartProps.tsx +6 -8
  80. package/src/state/ReportEventSettings.tsx +6 -8
  81. package/src/state/ReportMainChartProps.tsx +9 -11
  82. package/src/state/ReportPolarOptions.tsx +13 -15
  83. package/src/state/SetLegendPayload.ts +1 -1
  84. package/src/state/SetTooltipEntrySettings.tsx +1 -1
  85. package/src/state/brushSlice.ts +8 -10
  86. package/src/state/cartesianAxisSlice.ts +38 -46
  87. package/src/state/chartDataSlice.ts +23 -29
  88. package/src/state/errorBarSlice.ts +16 -22
  89. package/src/state/eventSettingsSlice.ts +9 -11
  90. package/src/state/graphicalItemsSlice.ts +13 -17
  91. package/src/state/layoutSlice.ts +19 -27
  92. package/src/state/legendSlice.ts +18 -24
  93. package/src/state/optionsSlice.ts +6 -8
  94. package/src/state/polarAxisSlice.ts +13 -21
  95. package/src/state/polarOptionsSlice.ts +14 -16
  96. package/src/state/referenceElementsSlice.ts +19 -25
  97. package/src/state/registerInStore.ts +13 -15
  98. package/src/state/renderedTicksSlice.ts +7 -11
  99. package/src/state/rootPropsSlice.ts +14 -16
  100. package/src/state/tooltipSlice.ts +95 -115
  101. package/src/state/unregisterOnCleanup.ts +20 -5
  102. package/src/state/zIndexSlice.ts +42 -50
  103. package/src/synchronisation/useChartSynchronisation.tsx +217 -213
  104. package/src/util/ActiveShapeUtils.tsx +2 -2
  105. package/src/util/BarUtils.tsx +3 -5
  106. package/src/util/FunnelUtils.tsx +1 -1
  107. package/src/util/RadialBarUtils.tsx +3 -4
  108. package/src/util/createCartesianCharts.tsx +1 -1
  109. package/src/util/createPolarCharts.tsx +1 -1
  110. package/src/util/svgPropertiesAndEvents.ts +1 -1
  111. package/src/util/tooltip/translate.ts +2 -2
  112. package/src/util/types.ts +2 -2
  113. package/src/zIndex/ZIndexLayer.tsx +68 -39
  114. package/src/zIndex/ZIndexPortal.tsx +25 -29
  115. package/test/_data.ts +408 -0
  116. package/test/animation/AnimationController.typed.spec.ts +53 -0
  117. package/test/animation/AnimationControllerImpl.spec.ts +271 -0
  118. package/test/animation/CSSTransitionAnimate.timing.spec.tsx +473 -0
  119. package/test/animation/JavascriptAnimate.spec.tsx +62 -0
  120. package/test/animation/RechartsAnimation.spec.ts +636 -0
  121. package/test/animation/easing.spec.ts +218 -0
  122. package/test/animation/legacyAnimationLengthChange.spec.tsx +803 -0
  123. package/test/animation/matchBy.spec.ts +467 -0
  124. package/test/animation/mockAnimationController.ts +40 -0
  125. package/test/animation/mockControllerAnimationManager.ts +143 -0
  126. package/test/animation/mockTimeoutController.ts +114 -0
  127. package/test/animation/timeoutController.spec.ts +138 -0
  128. package/test/animation/useAnimationStartSnapshot.spec.ts +147 -0
  129. package/test/animation/util.spec.ts +28 -0
  130. package/test/cartesian/Area.animation.spec.tsx +363 -0
  131. package/test/cartesian/Area.range.spec.tsx +54 -0
  132. package/test/cartesian/Area.spec.tsx +1202 -0
  133. package/test/cartesian/Area.stacked.render.spec.tsx +69 -0
  134. package/test/cartesian/Area.typed.spec.tsx +209 -0
  135. package/test/cartesian/Axis.integration.spec.tsx +158 -0
  136. package/test/cartesian/Bar/Bar.csstransition.spec.tsx +299 -0
  137. package/test/cartesian/Bar/Bar.spec.tsx +2314 -0
  138. package/test/cartesian/Bar/Bar.typed.spec.tsx +192 -0
  139. package/test/cartesian/Bar.animation.spec.tsx +426 -0
  140. package/test/cartesian/Bar.stackDomain.spec.tsx +66 -0
  141. package/test/cartesian/Bar.stacked.render.spec.tsx +53 -0
  142. package/test/cartesian/Bar.truncateByDomain.spec.tsx +237 -0
  143. package/test/cartesian/Bar.zeroDimensionFiltering.spec.tsx +336 -0
  144. package/test/cartesian/BarStack.spec.tsx +91 -0
  145. package/test/cartesian/Brush.keyboard.spec.tsx +88 -0
  146. package/test/cartesian/Brush.panorama.spec.tsx +41 -0
  147. package/test/cartesian/Brush.props.spec.tsx +63 -0
  148. package/test/cartesian/Brush.render.spec.tsx +117 -0
  149. package/test/cartesian/Brush.spec.tsx +522 -0
  150. package/test/cartesian/Brush.stacked.spec.tsx +221 -0
  151. package/test/cartesian/CartesianAxis.render.spec.tsx +50 -0
  152. package/test/cartesian/CartesianAxis.spec.tsx +396 -0
  153. package/test/cartesian/CartesianGrid.render.spec.tsx +39 -0
  154. package/test/cartesian/CartesianGrid.spec.tsx +2103 -0
  155. package/test/cartesian/ErrorBar.render.spec.tsx +69 -0
  156. package/test/cartesian/ErrorBar.spec.tsx +2414 -0
  157. package/test/cartesian/Funnel.animation.spec.tsx +241 -0
  158. package/test/cartesian/Funnel.spec.tsx +226 -0
  159. package/test/cartesian/Funnel.typed.spec.tsx +221 -0
  160. package/test/cartesian/GraphicalItemClipPath.scale-behavior.spec.tsx +627 -0
  161. package/test/cartesian/GraphicalItemClipPath.spec.tsx +427 -0
  162. package/test/cartesian/Line.animation.spec.tsx +643 -0
  163. package/test/cartesian/Line.sparseAnimationPath.spec.tsx +98 -0
  164. package/test/cartesian/Line.spec.tsx +471 -0
  165. package/test/cartesian/Line.typed.spec.tsx +152 -0
  166. package/test/cartesian/ReferenceArea.render.spec.tsx +63 -0
  167. package/test/cartesian/ReferenceArea.spec.tsx +663 -0
  168. package/test/cartesian/ReferenceArea.typed.spec.tsx +74 -0
  169. package/test/cartesian/ReferenceDot.render.spec.tsx +55 -0
  170. package/test/cartesian/ReferenceDot.spec.tsx +462 -0
  171. package/test/cartesian/ReferenceDot.typed.spec.tsx +76 -0
  172. package/test/cartesian/ReferenceLine/ReferenceLine.panorama.spec.tsx +184 -0
  173. package/test/cartesian/ReferenceLine/ReferenceLine.spec.tsx +744 -0
  174. package/test/cartesian/ReferenceLine/ReferenceLine.typed.spec.tsx +74 -0
  175. package/test/cartesian/ReferenceLine/getEndPoints.spec.ts +399 -0
  176. package/test/cartesian/ReferenceLine.render.spec.tsx +134 -0
  177. package/test/cartesian/Scatter.animation.spec.tsx +381 -0
  178. package/test/cartesian/Scatter.render.spec.tsx +61 -0
  179. package/test/cartesian/Scatter.spec.tsx +406 -0
  180. package/test/cartesian/Scatter.typed.spec.tsx +153 -0
  181. package/test/cartesian/XAxis/XAxis.barSize.spec.tsx +336 -0
  182. package/test/cartesian/XAxis/XAxis.brush.spec.tsx +266 -0
  183. package/test/cartesian/XAxis/XAxis.categorydomain.spec.tsx +872 -0
  184. package/test/cartesian/XAxis/XAxis.dataKey.spec.tsx +86 -0
  185. package/test/cartesian/XAxis/XAxis.datatypes.spec.tsx +127 -0
  186. package/test/cartesian/XAxis/XAxis.hide.spec.tsx +106 -0
  187. package/test/cartesian/XAxis/XAxis.multiaxis.spec.tsx +336 -0
  188. package/test/cartesian/XAxis/XAxis.numberdomain.spec.tsx +1466 -0
  189. package/test/cartesian/XAxis/XAxis.padding.spec.tsx +758 -0
  190. package/test/cartesian/XAxis/XAxis.padding_clip.spec.tsx +65 -0
  191. package/test/cartesian/XAxis/XAxis.state.spec.tsx +355 -0
  192. package/test/cartesian/XAxis/XAxis.tick.spec.tsx +493 -0
  193. package/test/cartesian/XAxis/XAxis.timescale.spec.tsx +233 -0
  194. package/test/cartesian/XAxis/XAxis.type.spec.tsx +107 -0
  195. package/test/cartesian/XAxis/XAxis.typed.spec.tsx +102 -0
  196. package/test/cartesian/XAxis/XAxis.vertical.spec.tsx +265 -0
  197. package/test/cartesian/XAxis.tickFormatter.spec.tsx +54 -0
  198. package/test/cartesian/YAxis/YAxis.7362.derivedDomain.spec.tsx +230 -0
  199. package/test/cartesian/YAxis/YAxis.7362.spec.tsx +104 -0
  200. package/test/cartesian/YAxis/YAxis.interval-zero.spec.tsx +88 -0
  201. package/test/cartesian/YAxis/YAxis.label.spec.tsx +219 -0
  202. package/test/cartesian/YAxis/YAxis.spec.tsx +1595 -0
  203. package/test/cartesian/YAxis/YAxis.tick.spec.tsx +428 -0
  204. package/test/cartesian/YAxis/YAxis.tickFormatter.spec.tsx +54 -0
  205. package/test/cartesian/YAxis/YAxis.ticks.spec.tsx +263 -0
  206. package/test/cartesian/YAxis/YAxis.type.spec.tsx +107 -0
  207. package/test/cartesian/YAxis/YAxis.typed.spec.tsx +102 -0
  208. package/test/cartesian/ZAxis.spec.tsx +300 -0
  209. package/test/cartesian/ZAxis.typed.spec.tsx +33 -0
  210. package/test/cartesian/__snapshots__/Brush.spec.tsx.snap +5 -0
  211. package/test/cartesian/axisLineAndStroke.spec.tsx +72 -0
  212. package/test/cartesian/getCartesianPosition.spec.ts +907 -0
  213. package/test/cartesian/getEquidistantTicks.spec.ts +88 -0
  214. package/test/cartesian/getTicks.spec.ts +378 -0
  215. package/test/cartesian/miscFeatureGaps.spec.tsx +89 -0
  216. package/test/cartesian/useAnimatedLineLength.spec.ts +168 -0
  217. package/test/chart/AccessibilityLayer.spec.tsx +569 -0
  218. package/test/chart/AccessibilityScans.spec.tsx +286 -0
  219. package/test/chart/AreaChart.spec.tsx +409 -0
  220. package/test/chart/AreaChart.stacked.spec.tsx +1407 -0
  221. package/test/chart/AreaChart.typed.spec.tsx +39 -0
  222. package/test/chart/BarChart.spec.tsx +3719 -0
  223. package/test/chart/BarChart.typed.spec.tsx +60 -0
  224. package/test/chart/CategoricalChart.spec.tsx +255 -0
  225. package/test/chart/ComposedChart.spec.tsx +199 -0
  226. package/test/chart/ComposedChart.typed.spec.tsx +39 -0
  227. package/test/chart/FunnelChart.spec.tsx +215 -0
  228. package/test/chart/FunnelChart.typed.spec.tsx +39 -0
  229. package/test/chart/LineChart.multiseries.spec.tsx +50 -0
  230. package/test/chart/LineChart.smoke.spec.tsx +50 -0
  231. package/test/chart/LineChart.spec.tsx +930 -0
  232. package/test/chart/LineChart.typed.spec.tsx +39 -0
  233. package/test/chart/NicheChartTooltip.spec.tsx +81 -0
  234. package/test/chart/PieChart.spec.tsx +793 -0
  235. package/test/chart/PieChart.typed.spec.tsx +39 -0
  236. package/test/chart/RadarChart.spec.tsx +530 -0
  237. package/test/chart/RadarChart.typed.spec.tsx +39 -0
  238. package/test/chart/RadialBarChart.5966.spec.tsx +48 -0
  239. package/test/chart/RadialBarChart.spec.tsx +679 -0
  240. package/test/chart/RadialBarChart.typed.spec.tsx +39 -0
  241. package/test/chart/RechartsWrapper.spec.tsx +83 -0
  242. package/test/chart/Sankey.content.spec.tsx +46 -0
  243. package/test/chart/Sankey.spec.tsx +952 -0
  244. package/test/chart/Sankey.typed.spec.tsx +29 -0
  245. package/test/chart/ScatterChart.spec.tsx +2613 -0
  246. package/test/chart/ScatterChart.typed.spec.tsx +39 -0
  247. package/test/chart/SunburstChart.spec.tsx +146 -0
  248. package/test/chart/Treemap.animation.spec.tsx +52 -0
  249. package/test/chart/Treemap.spec.tsx +1003 -0
  250. package/test/chart/Treemap.typed.spec.tsx +26 -0
  251. package/test/chart/chartEvents.spec.tsx +127 -0
  252. package/test/chart/responsive.spec.tsx +620 -0
  253. package/test/component/Cell.render.spec.tsx +155 -0
  254. package/test/component/Cell.spec.tsx +12 -0
  255. package/test/component/Cursor.spec.tsx +186 -0
  256. package/test/component/DefaultTooltipContent.spec.tsx +102 -0
  257. package/test/component/Label.render.spec.tsx +63 -0
  258. package/test/component/Label.spec.tsx +686 -0
  259. package/test/component/Label.typed.spec.tsx +46 -0
  260. package/test/component/LabelList.spec.tsx +188 -0
  261. package/test/component/Legend.itemSorter.spec.tsx +704 -0
  262. package/test/component/Legend.render.spec.tsx +92 -0
  263. package/test/component/Legend.spec.tsx +2213 -0
  264. package/test/component/Legend.typed.spec.tsx +22 -0
  265. package/test/component/ResponsiveContainer.spec.tsx +523 -0
  266. package/test/component/ResponsiveContainerDataTest.spec.tsx +51 -0
  267. package/test/component/Text.spec.tsx +415 -0
  268. package/test/component/Text.typed.spec.tsx +46 -0
  269. package/test/component/Tooltip/ActiveDot.spec.tsx +370 -0
  270. package/test/component/Tooltip/Tooltip.animation.spec.tsx +209 -0
  271. package/test/component/Tooltip/Tooltip.content.spec.tsx +128 -0
  272. package/test/component/Tooltip/Tooltip.formatter.spec.tsx +152 -0
  273. package/test/component/Tooltip/Tooltip.includeHidden.spec.tsx +79 -0
  274. package/test/component/Tooltip/Tooltip.multipleDataArrays.spec.tsx +165 -0
  275. package/test/component/Tooltip/Tooltip.offset.spec.tsx +113 -0
  276. package/test/component/Tooltip/Tooltip.state.spec.tsx +74 -0
  277. package/test/component/Tooltip/Tooltip.sync.spec.tsx +639 -0
  278. package/test/component/Tooltip/defaultIndex.spec.tsx +227 -0
  279. package/test/component/Tooltip/graphicalItem.formatter.spec.tsx +138 -0
  280. package/test/component/Tooltip/itemSorter.spec.tsx +2815 -0
  281. package/test/component/Tooltip/tooltipEventType.spec.tsx +344 -0
  282. package/test/component/Tooltip/tooltipMouseHoverSelectors.ts +41 -0
  283. package/test/component/Tooltip/tooltipTestHelpers.tsx +162 -0
  284. package/test/component/Tooltip.defaultIndex.spec.tsx +48 -0
  285. package/test/component/Tooltip.hover.spec.tsx +61 -0
  286. package/test/component/Tooltip.item.spec.tsx +54 -0
  287. package/test/component/Tooltip.keyboard.spec.tsx +51 -0
  288. package/test/component/Tooltip.payload.spec.tsx +1716 -0
  289. package/test/component/Tooltip.touch.spec.tsx +39 -0
  290. package/test/component/Tooltip.visibility.spec.tsx +1889 -0
  291. package/test/component/TooltipBoundingBox.spec.tsx +89 -0
  292. package/test/component/responsiveContainerUtils.spec.ts +205 -0
  293. package/test/container/ClipPath.spec.tsx +602 -0
  294. package/test/container/chartDimensions.spec.tsx +368 -0
  295. package/test/context/chartLayoutContext.spec.tsx +378 -0
  296. package/test/helper/ExpectAxisDomain.tsx +27 -0
  297. package/test/helper/assertNotNull.ts +6 -0
  298. package/test/helper/assertZIndexLayerOrder.ts +19 -0
  299. package/test/helper/createSelectorTestCase.tsx +176 -0
  300. package/test/helper/expectAnimatedPieAngles.ts +100 -0
  301. package/test/helper/expectAnimatedPiePaths.ts +78 -0
  302. package/test/helper/expectAreaCurve.ts +15 -0
  303. package/test/helper/expectAxisTicks.ts +48 -0
  304. package/test/helper/expectBars.ts +54 -0
  305. package/test/helper/expectFunctionReturning.ts +58 -0
  306. package/test/helper/expectLabel.ts +32 -0
  307. package/test/helper/expectLastCalledWith.ts +48 -0
  308. package/test/helper/expectLine.ts +20 -0
  309. package/test/helper/expectPieSectors.ts +80 -0
  310. package/test/helper/expectScale.ts +37 -0
  311. package/test/helper/expectScatterPoints.ts +52 -0
  312. package/test/helper/expectStackGroups.ts +144 -0
  313. package/test/helper/mockAxes.ts +22 -0
  314. package/test/helper/mockGetBoundingClientRect.ts +66 -0
  315. package/test/helper/mockHTMLElementProperty.ts +19 -0
  316. package/test/helper/mockTouchingElement.ts +27 -0
  317. package/test/helper/offsetHelpers.ts +19 -0
  318. package/test/helper/parameterizedTestCases.tsx +99 -0
  319. package/test/helper/produceState.ts +32 -0
  320. package/test/helper/selectorTestHelpers.tsx +63 -0
  321. package/test/helper/trim.spec.ts +35 -0
  322. package/test/helper/trim.ts +11 -0
  323. package/test/hooks/useActiveTooltipDataPoints.spec.tsx +358 -0
  324. package/test/hooks/useAxisDomain.spec.tsx +361 -0
  325. package/test/hooks/useAxisScale.spec.tsx +283 -0
  326. package/test/hooks/useAxisTicks.spec.tsx +130 -0
  327. package/test/hooks/useOffset.spec.tsx +248 -0
  328. package/test/hooks/useTooltipStateHooks.spec.tsx +109 -0
  329. package/test/polar/Pie/Pie-TwoLevelPieChart.spec.tsx +135 -0
  330. package/test/polar/Pie/Pie.spec.tsx +784 -0
  331. package/test/polar/Pie/Pie.typed.spec.tsx +78 -0
  332. package/test/polar/Pie.animation.spec.tsx +529 -0
  333. package/test/polar/PieWithLegend.animation.spec.tsx +142 -0
  334. package/test/polar/PolarAngleAxis/PolarAngleAxis.events.spec.tsx +76 -0
  335. package/test/polar/PolarAngleAxis/PolarAngleAxis.spec.tsx +2079 -0
  336. package/test/polar/PolarAngleAxis/PolarAngleAxis.typed.spec.tsx +102 -0
  337. package/test/polar/PolarAngleAxis.render.spec.tsx +79 -0
  338. package/test/polar/PolarGrid.render.spec.tsx +75 -0
  339. package/test/polar/PolarGrid.spec.tsx +918 -0
  340. package/test/polar/PolarLegendPerRow.render.spec.tsx +85 -0
  341. package/test/polar/PolarRadiusAxis.events.spec.tsx +65 -0
  342. package/test/polar/PolarRadiusAxis.render.spec.tsx +52 -0
  343. package/test/polar/PolarRadiusAxis.spec.tsx +991 -0
  344. package/test/polar/PolarRadiusAxis.typed.spec.tsx +84 -0
  345. package/test/polar/PolarTooltipLegend.render.spec.tsx +80 -0
  346. package/test/polar/Radar.animation.spec.tsx +570 -0
  347. package/test/polar/Radar.render.spec.tsx +71 -0
  348. package/test/polar/Radar.spec.tsx +265 -0
  349. package/test/polar/Radar.typed.spec.tsx +119 -0
  350. package/test/polar/RadialBar/RadialBar.spec.tsx +1521 -0
  351. package/test/polar/RadialBar/RadialBar.typed.spec.tsx +132 -0
  352. package/test/polar/RadialBar.animation.spec.tsx +375 -0
  353. package/test/polar/RadialBar.render.spec.tsx +66 -0
  354. package/test/polar/RadialBar.stacked.spec.tsx +57 -0
  355. package/test/setup.ts +84 -0
  356. package/test/shape/ActiveShape.spec.tsx +181 -0
  357. package/test/shape/Cross.spec.tsx +60 -0
  358. package/test/shape/Cross.typed.spec.tsx +26 -0
  359. package/test/shape/Curve.spec.tsx +368 -0
  360. package/test/shape/Curve.typed.spec.tsx +69 -0
  361. package/test/shape/Dot.spec.tsx +73 -0
  362. package/test/shape/Dot.typed.spec.tsx +30 -0
  363. package/test/shape/Polygon.spec.tsx +357 -0
  364. package/test/shape/Polygon.typed.spec.tsx +28 -0
  365. package/test/shape/Rectangle.animation.spec.tsx +451 -0
  366. package/test/shape/Rectangle.spec.tsx +68 -0
  367. package/test/shape/Rectangle.typed.spec.tsx +24 -0
  368. package/test/shape/Sector.spec.tsx +76 -0
  369. package/test/shape/Sector.typed.spec.tsx +24 -0
  370. package/test/shape/Symbols.spec.tsx +43 -0
  371. package/test/shape/Symbols.typed.spec.tsx +24 -0
  372. package/test/shape/Trapezoid.spec.tsx +50 -0
  373. package/test/shape/Trapezoid.typed.spec.tsx +24 -0
  374. package/test/shape/__snapshots__/Cross.spec.tsx.snap +62 -0
  375. package/test/shape/__snapshots__/Curve.spec.tsx.snap +460 -0
  376. package/test/shape/__snapshots__/Polygon.spec.tsx.snap +58 -0
  377. package/test/shape/__snapshots__/Rectangle.spec.tsx.snap +117 -0
  378. package/test/shape/__snapshots__/Sector.spec.tsx.snap +71 -0
  379. package/test/shape/__snapshots__/Trapezoid.spec.tsx.snap +64 -0
  380. package/test/state/chartDataSlice.spec.ts +53 -0
  381. package/test/state/createCollectionActions.spec.ts +87 -0
  382. package/test/state/createSelector.spec.ts +158 -0
  383. package/test/state/externalEventsMiddleware.spec.ts +178 -0
  384. package/test/state/graphicalItemsSlice.spec.ts +92 -0
  385. package/test/state/hooks.spec.tsx +68 -0
  386. package/test/state/legendSlice.spec.ts +44 -0
  387. package/test/state/mouseEventsMiddleware.spec.ts +75 -0
  388. package/test/state/optionsSlice.spec.ts +19 -0
  389. package/test/state/referenceElementsSlice.spec.ts +84 -0
  390. package/test/state/registerInStore.spec.tsx +101 -0
  391. package/test/state/selectors/areaSelectors.spec.tsx +77 -0
  392. package/test/state/selectors/axisSelectors.spec.tsx +1418 -0
  393. package/test/state/selectors/barStackSelectors.spec.tsx +752 -0
  394. package/test/state/selectors/brushSelectors.spec.tsx +30 -0
  395. package/test/state/selectors/cartesianAxisSlice.spec.ts +96 -0
  396. package/test/state/selectors/combineNiceTicks.spec.ts +207 -0
  397. package/test/state/selectors/combiners/combineActiveTooltipIndex.spec.ts +61 -0
  398. package/test/state/selectors/combiners/combineAllBarPositions.spec.ts +39 -0
  399. package/test/state/selectors/combiners/combineConfiguredScale.spec.ts +56 -0
  400. package/test/state/selectors/combiners/combineDisplayedStackedData.spec.ts +123 -0
  401. package/test/state/selectors/combiners/combineRealScaleType.spec.ts +80 -0
  402. package/test/state/selectors/containerSelectors.spec.tsx +168 -0
  403. package/test/state/selectors/dataSelectors.spec.tsx +136 -0
  404. package/test/state/selectors/legendSelectors.spec.tsx +113 -0
  405. package/test/state/selectors/lineSelectors.spec.tsx +60 -0
  406. package/test/state/selectors/pieSelectors.spec.tsx +72 -0
  407. package/test/state/selectors/radarSelectors.spec.tsx +496 -0
  408. package/test/state/selectors/rootPropsSelectors.spec.tsx +169 -0
  409. package/test/state/selectors/scatterSelectors.spec.tsx +47 -0
  410. package/test/state/selectors/selectActiveTooltipIndex.spec.tsx +234 -0
  411. package/test/state/selectors/selectAllAxes.spec.tsx +18 -0
  412. package/test/state/selectors/selectAxisDomain.spec.tsx +21 -0
  413. package/test/state/selectors/selectAxisDomainIncludingNiceTicks.spec.tsx +19 -0
  414. package/test/state/selectors/selectAxisRangeWithReverse.spec.tsx +22 -0
  415. package/test/state/selectors/selectAxisScale.spec.tsx +91 -0
  416. package/test/state/selectors/selectBarRectangles.stackOffset.spec.tsx +503 -0
  417. package/test/state/selectors/selectBaseAxis.spec.tsx +56 -0
  418. package/test/state/selectors/selectCartesianItemsSettings.spec.tsx +57 -0
  419. package/test/state/selectors/selectChartOffset.spec.tsx +26 -0
  420. package/test/state/selectors/selectDisplayedData.spec.tsx +282 -0
  421. package/test/state/selectors/selectIsTooltipActive.spec.tsx +231 -0
  422. package/test/state/selectors/selectNumericalDomain.spec.tsx +21 -0
  423. package/test/state/selectors/selectRealScaleType.spec.tsx +19 -0
  424. package/test/state/selectors/selectStackGroups.spec.tsx +322 -0
  425. package/test/state/selectors/selectXAxisPosition.spec.tsx +22 -0
  426. package/test/state/selectors/selectYAxisPosition.spec.tsx +22 -0
  427. package/test/state/selectors/selectorMemoization.spec.tsx +136 -0
  428. package/test/state/selectors/selectors.spec.tsx +1613 -0
  429. package/test/state/throttling.spec.ts +200 -0
  430. package/test/state/zIndexSlice.spec.ts +85 -0
  431. package/test/synchronisation/useChartSynchronisation.spec.tsx +225 -0
  432. package/test/util/BarUtils.spec.ts +39 -0
  433. package/test/util/CartesianUtils/CartesianUtils.spec.ts +261 -0
  434. package/test/util/CartesianUtils/rectWithPoints.spec.ts +48 -0
  435. package/test/util/ChartUtils/ChartUtils.spec.ts +491 -0
  436. package/test/util/ChartUtils/appendOffsetOfLegend.spec.ts +136 -0
  437. package/test/util/ChartUtils/appendOffsetOfLegend.spec.tsx +133 -0
  438. package/test/util/ChartUtils/getCateCoordinateOfLine.spec.ts +97 -0
  439. package/test/util/ChartUtils/getStackedData.spec.ts +416 -0
  440. package/test/util/ChartUtils/truncateByDomain.spec.ts +70 -0
  441. package/test/util/DataUtils.spec.ts +385 -0
  442. package/test/util/DomUtils.spec.tsx +117 -0
  443. package/test/util/FunnelUtils.spec.tsx +70 -0
  444. package/test/util/Global.spec.ts +11 -0
  445. package/test/util/LRUCache.spec.ts +81 -0
  446. package/test/util/LogUtils.spec.ts +45 -0
  447. package/test/util/PolarUtils.spec.ts +66 -0
  448. package/test/util/ReduceCssCalcPrototype.spec.ts +141 -0
  449. package/test/util/ShallowEqual.spec.ts +102 -0
  450. package/test/util/TickUtils.spec.ts +29 -0
  451. package/test/util/createChartHelpers.spec.tsx +210 -0
  452. package/test/util/cursor/getCursorPoints.spec.ts +136 -0
  453. package/test/util/cursor/getCursorRectangle.spec.ts +50 -0
  454. package/test/util/cursor/getRadialCursorPoints.spec.ts +36 -0
  455. package/test/util/errorValue.spec.ts +69 -0
  456. package/test/util/getEveryNth.spec.ts +39 -0
  457. package/test/util/getRadiusAndStrokeWidthFromDot.spec.ts +51 -0
  458. package/test/util/getRelativeCoordinate.spec.ts +250 -0
  459. package/test/util/getSliced.spec.ts +45 -0
  460. package/test/util/isDomainSpecifiedByUser.spec.ts +207 -0
  461. package/test/util/isWellBehavedNumber.spec.ts +54 -0
  462. package/test/util/payload/getUniqPayload.spec.ts +56 -0
  463. package/test/util/propsAreEqual.spec.ts +75 -0
  464. package/test/util/round.spec.ts +112 -0
  465. package/test/util/scale/arithmetic.spec.ts +61 -0
  466. package/test/util/scale/createCategoricalInverse.spec.ts +84 -0
  467. package/test/util/scale/getNiceTickValues.spec.ts +421 -0
  468. package/test/util/scale/getTickValuesFixedDomain.spec.ts +155 -0
  469. package/test/util/svgPropertiesAndEvents.spec.tsx +206 -0
  470. package/test/util/svgPropertiesNoEvents.spec.tsx +228 -0
  471. package/test/util/tooltip/translate.spec.ts +396 -0
  472. package/test/util/useAnimationId.spec.tsx +59 -0
  473. package/test/util/useElementOffset.spec.tsx +173 -0
  474. package/test/util/usePrefersReducedMotion.spec.ts +54 -0
  475. package/test/util/useUniqueId.spec.ts +99 -0
  476. package/test/utils/diagnostics-allowlist.ts +18 -0
  477. package/test/utils/diagnostics.ts +58 -0
  478. package/test/zIndex/AllZIndexPortals.spec.tsx +83 -0
  479. package/test/zIndex/DefaultZIndexes.spec.ts +80 -0
  480. package/test/zIndex/DynamicZIndex.spec.tsx +102 -0
  481. package/test/zIndex/ZIndexLayer.portalOwner.spec.tsx +125 -0
  482. package/test/zIndex/componentZIndex.spec.tsx +255 -0
  483. package/test/zIndex/getZIndexFromUnknown.spec.ts +51 -0
  484. package/test/zIndex/multiChartZIndexIsolation.spec.tsx +90 -0
  485. package/test/zIndex/zIndexSelectors.spec.ts +172 -0
  486. package/test-results/.last-run.json +4 -0
  487. package/tsconfig.json +11 -0
  488. package/src/util/DirectPortal.tsx +0 -107
@@ -4,7 +4,7 @@
4
4
  * Ported from recharts 3.8.1 src/shape/Trapezoid.tsx (commit 7a23854).
5
5
  * Pure `getTrapezoidPath` copied verbatim. Solid deviations: `className` →
6
6
  * `class` (Omit the wide SVG `class`); destructuring defaults → `?? default`;
7
- * `clsx` → `class={[...].filter(Boolean).join(" ")}`; `return null` → `<Show>`.
7
+ * `clsx` → `class={[...]}`; `return null` → `<Show>`.
8
8
  *
9
9
  * The update-animation path (`isUpdateAnimationActive`) is WIRED, mirroring the
10
10
  * Rectangle port: JavascriptAnimate keyed on a geometry animationId, per-frame
@@ -13,8 +13,8 @@
13
13
  * stays the static shape.
14
14
  */
15
15
  import { type CamelSvgProps } from "../util/svgPropertiesNoEvents";
16
- import { createSignal, Show, untrack, splitProps, createEffect, on } from "solid-js";
17
- import type { JSX } from "solid-js";
16
+ import { createEffect, createSignal, Show, omit, untrack } from "solid-js";
17
+ import type { JSX } from "@solidjs/web";
18
18
  import type { AnimationDuration } from "../util/types";
19
19
  import type { EasingInput } from "../animation/easing";
20
20
  import { svgPropertiesAndEvents } from "../util/svgPropertiesAndEvents";
@@ -89,7 +89,7 @@ export const Trapezoid = (props: TrapezoidProps): JSX.Element => {
89
89
  const animationEasing = (): EasingInput => props.animationEasing ?? "ease";
90
90
  const animationBegin = (): number => props.animationBegin ?? 0;
91
91
 
92
- const layerClass = (): string => ["recharts-trapezoid", props.class].filter(Boolean).join(" ");
92
+ const layerClass = (): Array<string | undefined> => ["recharts-trapezoid", props.class];
93
93
 
94
94
  // Animation (update path) state: a ref to read the path length + prev-value
95
95
  // closures the animation interpolates from. The ref only captures the element
@@ -102,29 +102,27 @@ export const Trapezoid = (props: TrapezoidProps): JSX.Element => {
102
102
  pathEl = el;
103
103
  };
104
104
  createEffect(
105
- on(
106
- () => ({
107
- x: x(),
108
- y: y(),
109
- upperWidth: upperWidth(),
110
- lowerWidth: lowerWidth(),
111
- height: height(),
112
- }),
113
- () => {
114
- if (pathEl?.getTotalLength == null) {
115
- return;
116
- }
117
- let len = 0;
118
- try {
119
- len = pathEl.getTotalLength();
120
- } catch {
121
- return; // getTotalLength can throw on detached/empty paths — keep the last value.
122
- }
123
- if (len) {
124
- setTotalLength(len);
125
- }
126
- },
127
- ),
105
+ () => ({
106
+ x: x(),
107
+ y: y(),
108
+ upperWidth: upperWidth(),
109
+ lowerWidth: lowerWidth(),
110
+ height: height(),
111
+ }),
112
+ () => {
113
+ if (pathEl?.getTotalLength == null) {
114
+ return;
115
+ }
116
+ let len = 0;
117
+ try {
118
+ len = pathEl.getTotalLength();
119
+ } catch {
120
+ return; // getTotalLength can throw on detached/empty paths — keep the last value.
121
+ }
122
+ if (len) {
123
+ setTotalLength(len);
124
+ }
125
+ },
128
126
  );
129
127
 
130
128
  const animationId = useAnimationId(
@@ -147,7 +145,7 @@ export const Trapezoid = (props: TrapezoidProps): JSX.Element => {
147
145
 
148
146
  const staticPath = (): JSX.Element => (
149
147
  <path
150
- {...svgPropertiesAndEvents({ ...splitProps(props, ["class"])[1] })}
148
+ {...svgPropertiesAndEvents({ ...omit(props, "class") })}
151
149
  class={layerClass()}
152
150
  d={getTrapezoidPath(x(), y(), upperWidth(), lowerWidth(), height())}
153
151
  />
@@ -212,7 +210,7 @@ export const Trapezoid = (props: TrapezoidProps): JSX.Element => {
212
210
  typeof props.style === "object" && props.style != null ? props.style : {};
213
211
  return (
214
212
  <path
215
- {...svgPropertiesAndEvents({ ...splitProps(props, ["class", "style"])[1] })}
213
+ {...svgPropertiesAndEvents({ ...omit(props, "class", "style") })}
216
214
  ref={measurePath}
217
215
  class={layerClass()}
218
216
  d={getTrapezoidPath(currX, currY, currUpperWidth, currLowerWidth, currHeight)}
@@ -4,12 +4,12 @@
4
4
  // <Provider>. In Solid the component body runs once, so creating the store in the
5
5
  // body is the natural "create once per chart instance" — each chart gets its own
6
6
  // independent store (recharts supports many charts per page). The context value
7
- // IS the provider in Solid 2.0: `<RechartsStoreContext.Provider value={store}>`.
7
+ // IS the provider in Solid 2.0: `<RechartsStoreContext value={store}>`.
8
8
  //
9
9
  // NOTE: the panorama branch (Brush's preview chart reuses the parent store by
10
10
  // rendering no Provider) is deferred until PanoramaContext is ported.
11
11
  import { untrack } from "solid-js";
12
- import type { JSX } from "solid-js";
12
+ import type { JSX } from "@solidjs/web";
13
13
  import { RechartsStoreContext } from "./RechartsStoreContext";
14
14
  import { createRechartsStore, type RechartsRootState } from "./store";
15
15
 
@@ -23,7 +23,5 @@ export function RechartsStoreProvider(props: RechartsStoreProviderProps): JSX.El
23
23
  // untracked (it should not make store creation reactive).
24
24
  const store = createRechartsStore(untrack(() => props.preloadedState));
25
25
 
26
- return (
27
- <RechartsStoreContext.Provider value={store}>{props.children}</RechartsStoreContext.Provider>
28
- );
26
+ return <RechartsStoreContext value={store}>{props.children}</RechartsStoreContext>;
29
27
  }
@@ -1,7 +1,7 @@
1
- import { createEffect, on } from "solid-js";
2
1
  // Ported from recharts 3.8.1 src/state/ReportChartProps.tsx (commit 7a23854).
3
2
  // useAppDispatch → useAppStore().actions; useEffect → createEffect.
4
- import type { JSX } from "solid-js";
3
+ import { createEffect } from "solid-js";
4
+ import type { JSX } from "@solidjs/web";
5
5
  import { UpdatableChartOptions } from "./rootPropsSlice";
6
6
  import { useAppStore } from "./hooks";
7
7
 
@@ -9,12 +9,10 @@ export const ReportChartProps = (props: UpdatableChartOptions): JSX.Element => {
9
9
  const store = useAppStore();
10
10
 
11
11
  createEffect(
12
- on(
13
- () => ({ ...props }),
14
- (options) => {
15
- store?.actions.rootProps.updateOptions(options);
16
- },
17
- ),
12
+ () => ({ ...props }),
13
+ (options) => {
14
+ store?.actions.rootProps.updateOptions(options);
15
+ },
18
16
  );
19
17
 
20
18
  return null;
@@ -1,7 +1,7 @@
1
- import { createEffect, on } from "solid-js";
2
1
  // Ported from recharts 3.8.1 src/state/ReportEventSettings.tsx (commit 7a23854).
3
2
  // memo/propsAreEqual dropped; useAppDispatch → useAppStore().actions; useEffect → createEffect.
4
- import type { JSX } from "solid-js";
3
+ import { createEffect } from "solid-js";
4
+ import type { JSX } from "@solidjs/web";
5
5
  import { useAppStore } from "./hooks";
6
6
  import { EventThrottlingProps } from "../util/types";
7
7
 
@@ -9,12 +9,10 @@ export const ReportEventSettings = (props: EventThrottlingProps): JSX.Element =>
9
9
  const store = useAppStore();
10
10
 
11
11
  createEffect(
12
- on(
13
- () => ({ throttleDelay: props.throttleDelay, throttledEvents: props.throttledEvents }),
14
- (settings) => {
15
- store?.actions.eventSettings.setEventSettings(settings);
16
- },
17
- ),
12
+ () => ({ throttleDelay: props.throttleDelay, throttledEvents: props.throttledEvents }),
13
+ (settings) => {
14
+ store?.actions.eventSettings.setEventSettings(settings);
15
+ },
18
16
  );
19
17
 
20
18
  return null;
@@ -1,10 +1,10 @@
1
- import { createEffect, on } from "solid-js";
2
1
  // Ported from recharts 3.8.1 src/state/ReportMainChartProps.tsx (commit 7a23854).
3
2
  //
4
3
  // Solid deviations: `memo(..., propsAreEqual)` is dropped (Solid doesn't
5
4
  // re-render; the comparator has no equivalent); `useAppDispatch` + action
6
5
  // creators → `useAppStore().actions`; `useEffect` → two-arg `createEffect`.
7
- import type { JSX } from "solid-js";
6
+ import { createEffect } from "solid-js";
7
+ import type { JSX } from "@solidjs/web";
8
8
  import { LayoutType, Margin } from "../util/types";
9
9
  import { useIsPanorama } from "../context/PanoramaContext";
10
10
  import { useAppStore } from "./hooks";
@@ -22,15 +22,13 @@ export const ReportMainChartProps = (props: MainChartProps): JSX.Element => {
22
22
  const isPanorama = useIsPanorama();
23
23
 
24
24
  createEffect(
25
- on(
26
- () => ({ layout: props.layout, margin: props.margin }),
27
- ({ layout, margin }) => {
28
- if (!isPanorama) {
29
- store?.actions.layout.setLayout(layout);
30
- store?.actions.layout.setMargin(margin);
31
- }
32
- },
33
- ),
25
+ () => ({ layout: props.layout, margin: props.margin }),
26
+ ({ layout, margin }) => {
27
+ if (!isPanorama) {
28
+ store?.actions.layout.setLayout(layout);
29
+ store?.actions.layout.setMargin(margin);
30
+ }
31
+ },
34
32
  );
35
33
 
36
34
  return null;
@@ -1,9 +1,9 @@
1
- import { createEffect, on } from "solid-js";
2
1
  // Ported from recharts 3.8.1 src/state/ReportPolarOptions.tsx (commit 7a23854).
3
2
  //
4
3
  // Solid deviations: `useAppDispatch` + action creator → `useAppStore().actions`;
5
4
  // `useEffect` → two-arg `createEffect` (compute the payload, dispatch in apply).
6
- import type { JSX } from "solid-js";
5
+ import { createEffect } from "solid-js";
6
+ import type { JSX } from "@solidjs/web";
7
7
  import { PolarChartOptions } from "./polarOptionsSlice";
8
8
  import { useAppStore } from "./hooks";
9
9
 
@@ -11,19 +11,17 @@ export const ReportPolarOptions = (props: PolarChartOptions): JSX.Element => {
11
11
  const store = useAppStore();
12
12
 
13
13
  createEffect(
14
- on(
15
- () => ({
16
- cx: props.cx,
17
- cy: props.cy,
18
- startAngle: props.startAngle,
19
- endAngle: props.endAngle,
20
- innerRadius: props.innerRadius,
21
- outerRadius: props.outerRadius,
22
- }),
23
- (payload) => {
24
- store?.actions.polarOptions.updatePolarOptions(payload);
25
- },
26
- ),
14
+ () => ({
15
+ cx: props.cx,
16
+ cy: props.cy,
17
+ startAngle: props.startAngle,
18
+ endAngle: props.endAngle,
19
+ innerRadius: props.innerRadius,
20
+ outerRadius: props.outerRadius,
21
+ }),
22
+ (payload) => {
23
+ store?.actions.polarOptions.updatePolarOptions(payload);
24
+ },
27
25
  );
28
26
 
29
27
  return null;
@@ -5,7 +5,7 @@
5
5
  // explicit `id` prop (the graphical item's id) keys the entry so replace/remove are
6
6
  // proxy-safe (recharts matches the array by reference, which Solid stores break).
7
7
  // `SetPolarLegendPayload` lands with the polar vertical. Returns nothing.
8
- import type { JSX } from "solid-js";
8
+ import type { JSX } from "@solidjs/web";
9
9
  import { useAppStore } from "./hooks";
10
10
  import { useIsPanorama } from "../context/PanoramaContext";
11
11
  import { LegendPayload } from "../component/DefaultLegendContent";
@@ -4,7 +4,7 @@
4
4
  // on change) + onCleanup (remove), the same effect-dispatch idiom Line/Bar/Area
5
5
  // use for their graphical-item registration. Returns null (renders nothing) — it
6
6
  // exists purely to register the item's tooltip payload entry in the store.
7
- import type { JSX } from "solid-js";
7
+ import type { JSX } from "@solidjs/web";
8
8
  import { useAppStore } from "./hooks";
9
9
  import { TooltipPayloadConfiguration } from "./tooltipSlice";
10
10
  import { useIsPanorama } from "../context/PanoramaContext";
@@ -1,7 +1,7 @@
1
1
  // Ported from recharts 3.8.1 src/state/brushSlice.ts (commit 7a23854).
2
2
  // FULL SOLID-NATIVE REWRITE (no Redux). Brush is a deferred vertical; this slice
3
3
  // is wired into the store so the offset can read `brush.height` (0 by default).
4
- import { createStore, produce } from "solid-js/store";
4
+ import { createStore } from "solid-js";
5
5
  import { Padding } from "../util/types";
6
6
 
7
7
  /**
@@ -46,15 +46,13 @@ export function createBrushSlice(initialState: BrushSettings = initialBrushState
46
46
  // null); draft-first assignment of every field applies the full replacement.
47
47
  setBrushSettings(payload) {
48
48
  const next = payload ?? initialBrushState;
49
- setState(
50
- produce((s) => {
51
- s.x = next.x;
52
- s.y = next.y;
53
- s.width = next.width;
54
- s.height = next.height;
55
- s.padding = { ...next.padding };
56
- }),
57
- );
49
+ setState((s) => {
50
+ s.x = next.x;
51
+ s.y = next.y;
52
+ s.width = next.width;
53
+ s.height = next.height;
54
+ s.padding = { ...next.padding };
55
+ });
58
56
  },
59
57
  };
60
58
 
@@ -9,7 +9,7 @@
9
9
  // `any`). `castDraft`/immer are unnecessary — Solid's setter takes a mutable
10
10
  // draft. The `add/replace/remove` reducers (RTK `prepareAutoBatched`) become
11
11
  // plain action functions; batching is handled by Solid's store microtask.
12
- import { createStore, produce } from "solid-js/store";
12
+ import { createStore } from "solid-js";
13
13
  import type {
14
14
  AxisDomain,
15
15
  AxisInterval,
@@ -203,29 +203,23 @@ export function createCartesianAxisSlice(
203
203
  function axisCollection<A extends { id: AxisId }>(pick: (s: AxisMapState) => Record<AxisId, A>) {
204
204
  return {
205
205
  add: (axis: A) =>
206
- setState(
207
- produce((s) => {
208
- pick(s)[axis.id] = axis;
209
- }),
210
- ),
206
+ setState((s) => {
207
+ pick(s)[axis.id] = axis;
208
+ }),
211
209
  replace: ({ prev, next }: { prev: A; next: A }) =>
212
- setState(
213
- produce((s) => {
214
- const map = pick(s);
215
- if (map[prev.id] !== undefined) {
216
- if (prev.id !== next.id) {
217
- delete map[prev.id];
218
- }
219
- map[next.id] = next;
210
+ setState((s) => {
211
+ const map = pick(s);
212
+ if (map[prev.id] !== undefined) {
213
+ if (prev.id !== next.id) {
214
+ delete map[prev.id];
220
215
  }
221
- }),
222
- ),
216
+ map[next.id] = next;
217
+ }
218
+ }),
223
219
  remove: (axis: A) =>
224
- setState(
225
- produce((s) => {
226
- delete pick(s)[axis.id];
227
- }),
228
- ),
220
+ setState((s) => {
221
+ delete pick(s)[axis.id];
222
+ }),
229
223
  };
230
224
  }
231
225
  const x = axisCollection<XAxisSettings>((s) => s.xAxis);
@@ -243,32 +237,30 @@ export function createCartesianAxisSlice(
243
237
  replaceZAxis: z.replace,
244
238
  removeZAxis: z.remove,
245
239
  updateYAxisWidth({ id, width }) {
246
- setState(
247
- produce((s) => {
248
- const axis = s.yAxis[id];
249
- if (axis) {
250
- const history = axis.widthHistory || [];
251
- // An oscillation is detected when the new width matches the width
252
- // before the last one a simple A -> B -> A pattern. If the next
253
- // width is B and the difference is under 1 pixel, we ignore it.
254
- if (
255
- history.length === 3 &&
256
- history[0] === history[2] &&
257
- width === history[1] &&
258
- width !== axis.width &&
259
- Math.abs(width - (history[0] ?? 0)) <= 1
260
- ) {
261
- return;
262
- }
263
- const newHistory = [...history, width].slice(-3);
264
- s.yAxis[id] = {
265
- ...axis,
266
- width,
267
- widthHistory: newHistory,
268
- };
240
+ setState((s) => {
241
+ const axis = s.yAxis[id];
242
+ if (axis) {
243
+ const history = axis.widthHistory || [];
244
+ // An oscillation is detected when the new width matches the width
245
+ // before the last one a simple A -> B -> A pattern. If the next
246
+ // width is B and the difference is under 1 pixel, we ignore it.
247
+ if (
248
+ history.length === 3 &&
249
+ history[0] === history[2] &&
250
+ width === history[1] &&
251
+ width !== axis.width &&
252
+ Math.abs(width - (history[0] ?? 0)) <= 1
253
+ ) {
254
+ return;
269
255
  }
270
- }),
271
- );
256
+ const newHistory = [...history, width].slice(-3);
257
+ s.yAxis[id] = {
258
+ ...axis,
259
+ width,
260
+ widthHistory: newHistory,
261
+ };
262
+ }
263
+ });
272
264
  },
273
265
  };
274
266
 
@@ -7,7 +7,7 @@
7
7
  // functions directly, and selectors read `state` inside a `createMemo`.
8
8
  //
9
9
  // `castDraft`/immer are unnecessary — Solid's store setter takes a mutable draft.
10
- import { createStore, produce } from "solid-js/store";
10
+ import { createStore } from "solid-js";
11
11
  import { BrushStartEndIndex } from "../context/brushUpdateContext";
12
12
 
13
13
  /**
@@ -82,38 +82,32 @@ export function createChartDataSlice(
82
82
 
83
83
  const actions: ChartDataActions = {
84
84
  setChartData(chartData) {
85
- setState(
86
- produce((s) => {
87
- s.chartData = chartData;
88
- if (chartData == null) {
89
- s.dataStartIndex = 0;
90
- s.dataEndIndex = 0;
91
- return;
92
- }
93
- if (chartData.length > 0 && s.dataEndIndex !== chartData.length - 1) {
94
- s.dataEndIndex = chartData.length - 1;
95
- }
96
- }),
97
- );
85
+ setState((s) => {
86
+ s.chartData = chartData;
87
+ if (chartData == null) {
88
+ s.dataStartIndex = 0;
89
+ s.dataEndIndex = 0;
90
+ return;
91
+ }
92
+ if (chartData.length > 0 && s.dataEndIndex !== chartData.length - 1) {
93
+ s.dataEndIndex = chartData.length - 1;
94
+ }
95
+ });
98
96
  },
99
97
  setComputedData(computedData) {
100
- setState(
101
- produce((s) => {
102
- s.computedData = computedData;
103
- }),
104
- );
98
+ setState((s) => {
99
+ s.computedData = computedData;
100
+ });
105
101
  },
106
102
  setDataStartEndIndexes({ startIndex, endIndex }) {
107
- setState(
108
- produce((s) => {
109
- if (startIndex != null) {
110
- s.dataStartIndex = startIndex;
111
- }
112
- if (endIndex != null) {
113
- s.dataEndIndex = endIndex;
114
- }
115
- }),
116
- );
103
+ setState((s) => {
104
+ if (startIndex != null) {
105
+ s.dataStartIndex = startIndex;
106
+ }
107
+ if (endIndex != null) {
108
+ s.dataEndIndex = endIndex;
109
+ }
110
+ });
117
111
  },
118
112
  };
119
113
 
@@ -4,7 +4,7 @@
4
4
  // each item holds an array of ErrorBarsSettings. recharts matches for
5
5
  // replace/remove by (dataKey, direction) — kept verbatim (these are the error
6
6
  // bar's identity within an item).
7
- import { createStore, produce } from "solid-js/store";
7
+ import { createStore } from "solid-js";
8
8
  import type { ErrorBarDirection } from "../cartesian/ErrorBar";
9
9
  import { DataKey } from "../util/types";
10
10
  import { GraphicalItemId } from "./graphicalItemsSlice";
@@ -58,31 +58,25 @@ export function createErrorBarSlice(
58
58
 
59
59
  const actions: ErrorBarsActions = {
60
60
  addErrorBar({ itemId, errorBar }) {
61
- setState(
62
- produce((s) => {
63
- s[itemId] = [...(s[itemId] ?? []), errorBar];
64
- }),
65
- );
61
+ setState((s) => {
62
+ s[itemId] = [...(s[itemId] ?? []), errorBar];
63
+ });
66
64
  },
67
65
  replaceErrorBar({ itemId, prev, next }) {
68
- setState(
69
- produce((s) => {
70
- const list = s[itemId];
71
- if (list) {
72
- s[itemId] = list.map((e) => (sameErrorBar(e, prev) ? next : e));
73
- }
74
- }),
75
- );
66
+ setState((s) => {
67
+ const list = s[itemId];
68
+ if (list) {
69
+ s[itemId] = list.map((e) => (sameErrorBar(e, prev) ? next : e));
70
+ }
71
+ });
76
72
  },
77
73
  removeErrorBar({ itemId, errorBar }) {
78
- setState(
79
- produce((s) => {
80
- const list = s[itemId];
81
- if (list) {
82
- s[itemId] = list.filter((e) => !sameErrorBar(e, errorBar));
83
- }
84
- }),
85
- );
74
+ setState((s) => {
75
+ const list = s[itemId];
76
+ if (list) {
77
+ s[itemId] = list.filter((e) => !sameErrorBar(e, errorBar));
78
+ }
79
+ });
86
80
  },
87
81
  };
88
82
 
@@ -1,6 +1,6 @@
1
1
  // Ported from recharts 3.8.1 src/state/eventSettingsSlice.ts (commit 7a23854).
2
2
  // Solid-native slice; immer's `castDraft` is unnecessary with a Solid store.
3
- import { createStore, produce } from "solid-js/store";
3
+ import { createStore } from "solid-js";
4
4
  import { EventThrottlingProps } from "../util/types";
5
5
 
6
6
  export type EventSettingsState = Required<EventThrottlingProps>;
@@ -26,16 +26,14 @@ export function createEventSettingsSlice(
26
26
 
27
27
  const actions: EventSettingsActions = {
28
28
  setEventSettings(payload) {
29
- setState(
30
- produce((s) => {
31
- if (payload.throttleDelay != null) {
32
- s.throttleDelay = payload.throttleDelay;
33
- }
34
- if (payload.throttledEvents != null) {
35
- s.throttledEvents = payload.throttledEvents;
36
- }
37
- }),
38
- );
29
+ setState((s) => {
30
+ if (payload.throttleDelay != null) {
31
+ s.throttleDelay = payload.throttleDelay;
32
+ }
33
+ if (payload.throttledEvents != null) {
34
+ s.throttledEvents = payload.throttledEvents;
35
+ }
36
+ });
39
37
  },
40
38
  };
41
39
 
@@ -10,7 +10,7 @@
10
10
  // the caller passed — reference matching can't work. We match by the required
11
11
  // unique `id` instead, which is the items' real identity and gives identical
12
12
  // ordering/replacement semantics.
13
- import { createStore, produce } from "solid-js/store";
13
+ import { createStore } from "solid-js";
14
14
  import { createCollectionActions } from "./createCollectionActions";
15
15
  import { ChartData } from "./chartDataSlice";
16
16
  import { AxisId } from "./cartesianAxisSlice";
@@ -117,26 +117,22 @@ export function createGraphicalItemsSlice(
117
117
  // actions reassign the whole array rather than mutate in place (see ADR-0002).
118
118
  const cartesian = createCollectionActions<CartesianGraphicalItemSettings>(
119
119
  (updater) =>
120
- setState(
121
- produce((s) => {
122
- const next = updater(s.cartesianItems);
123
- if (next !== s.cartesianItems) {
124
- s.cartesianItems = next;
125
- }
126
- }),
127
- ),
120
+ setState((s) => {
121
+ const next = updater(s.cartesianItems);
122
+ if (next !== s.cartesianItems) {
123
+ s.cartesianItems = next;
124
+ }
125
+ }),
128
126
  (it) => it.id,
129
127
  );
130
128
  const polar = createCollectionActions<PolarGraphicalItemSettings>(
131
129
  (updater) =>
132
- setState(
133
- produce((s) => {
134
- const next = updater(s.polarItems);
135
- if (next !== s.polarItems) {
136
- s.polarItems = next;
137
- }
138
- }),
139
- ),
130
+ setState((s) => {
131
+ const next = updater(s.polarItems);
132
+ if (next !== s.polarItems) {
133
+ s.polarItems = next;
134
+ }
135
+ }),
140
136
  (it) => it.id,
141
137
  );
142
138