solid-recharts 0.1.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 (639) hide show
  1. package/NEXT_SESSION_PROMPT.md +114 -0
  2. package/package.json +28 -0
  3. package/src/animation/AnimatedItems.tsx +169 -0
  4. package/src/animation/AnimationController.ts +24 -0
  5. package/src/animation/AnimationControllerImpl.ts +37 -0
  6. package/src/animation/AnimationHandle.ts +273 -0
  7. package/src/animation/CSSTransitionAnimate.tsx +142 -0
  8. package/src/animation/JavascriptAnimate.tsx +107 -0
  9. package/src/animation/easing.ts +261 -0
  10. package/src/animation/matchBy.ts +211 -0
  11. package/src/animation/timeoutController.ts +51 -0
  12. package/src/animation/useAnimationController.tsx +31 -0
  13. package/src/animation/useAnimationStartSnapshot.ts +73 -0
  14. package/src/animation/util.ts +16 -0
  15. package/src/cartesian/Area.tsx +810 -0
  16. package/src/cartesian/AreaRevealShape.tsx +250 -0
  17. package/src/cartesian/Bar.tsx +1216 -0
  18. package/src/cartesian/BarStack.tsx +148 -0
  19. package/src/cartesian/Brush.tsx +653 -0
  20. package/src/cartesian/CartesianAxis.tsx +541 -0
  21. package/src/cartesian/CartesianGrid.tsx +605 -0
  22. package/src/cartesian/ErrorBar.tsx +319 -0
  23. package/src/cartesian/Funnel.tsx +594 -0
  24. package/src/cartesian/GraphicalItemClipPath.tsx +75 -0
  25. package/src/cartesian/Line.tsx +742 -0
  26. package/src/cartesian/LineDrawShape.tsx +190 -0
  27. package/src/cartesian/ReferenceArea.tsx +275 -0
  28. package/src/cartesian/ReferenceDot.tsx +286 -0
  29. package/src/cartesian/ReferenceLine.tsx +414 -0
  30. package/src/cartesian/RenderedTicksReporter.tsx +49 -0
  31. package/src/cartesian/Scatter.tsx +741 -0
  32. package/src/cartesian/XAxis.tsx +293 -0
  33. package/src/cartesian/YAxis.tsx +333 -0
  34. package/src/cartesian/ZAxis.tsx +80 -0
  35. package/src/cartesian/getCartesianPosition.ts +255 -0
  36. package/src/cartesian/getEquidistantTicks.ts +126 -0
  37. package/src/cartesian/getTicks.ts +225 -0
  38. package/src/cartesian/useAnimatedLineLength.ts +84 -0
  39. package/src/chart/AreaChart.tsx +30 -0
  40. package/src/chart/BarChart.tsx +27 -0
  41. package/src/chart/CartesianChart.tsx +91 -0
  42. package/src/chart/CategoricalChart.tsx +60 -0
  43. package/src/chart/ComposedChart.tsx +29 -0
  44. package/src/chart/FunnelChart.tsx +29 -0
  45. package/src/chart/LineChart.tsx +29 -0
  46. package/src/chart/PieChart.tsx +41 -0
  47. package/src/chart/PolarChart.tsx +97 -0
  48. package/src/chart/RadarChart.tsx +37 -0
  49. package/src/chart/RadialBarChart.tsx +39 -0
  50. package/src/chart/RechartsWrapper.tsx +486 -0
  51. package/src/chart/Sankey.tsx +992 -0
  52. package/src/chart/ScatterChart.tsx +29 -0
  53. package/src/chart/SunburstChart.tsx +394 -0
  54. package/src/chart/Treemap.tsx +874 -0
  55. package/src/chart/types.ts +37 -0
  56. package/src/component/ActivePoints.tsx +136 -0
  57. package/src/component/Cell.tsx +72 -0
  58. package/src/component/Cursor.tsx +249 -0
  59. package/src/component/Customized.tsx +8 -0
  60. package/src/component/DefaultLegendContent.tsx +205 -0
  61. package/src/component/DefaultTooltipContent.tsx +247 -0
  62. package/src/component/Dots.tsx +128 -0
  63. package/src/component/Label.tsx +507 -0
  64. package/src/component/LabelList.tsx +270 -0
  65. package/src/component/Legend.tsx +273 -0
  66. package/src/component/ResponsiveContainer.tsx +397 -0
  67. package/src/component/Text.tsx +436 -0
  68. package/src/component/Tooltip.tsx +309 -0
  69. package/src/component/TooltipBoundingBox.tsx +152 -0
  70. package/src/component/responsiveContainerUtils.ts +128 -0
  71. package/src/container/ClipPathProvider.tsx +40 -0
  72. package/src/container/Layer.tsx +38 -0
  73. package/src/container/RootSurface.tsx +124 -0
  74. package/src/container/Surface.tsx +70 -0
  75. package/src/context/ErrorBarContext.tsx +85 -0
  76. package/src/context/PanoramaContext.tsx +13 -0
  77. package/src/context/RegisterGraphicalItemId.tsx +41 -0
  78. package/src/context/accessibilityContext.tsx +10 -0
  79. package/src/context/brushUpdateContext.ts +14 -0
  80. package/src/context/chartDataContext.tsx +79 -0
  81. package/src/context/chartLayoutContext.tsx +158 -0
  82. package/src/context/legendPayloadContext.ts +11 -0
  83. package/src/context/legendPortalContext.ts +11 -0
  84. package/src/context/tooltipContext.ts +72 -0
  85. package/src/context/tooltipPortalContext.ts +14 -0
  86. package/src/context/useTooltipAxis.ts +24 -0
  87. package/src/hooks.ts +312 -0
  88. package/src/index.ts +288 -0
  89. package/src/polar/Pie.tsx +912 -0
  90. package/src/polar/PolarAngleAxis.tsx +494 -0
  91. package/src/polar/PolarGrid.tsx +269 -0
  92. package/src/polar/PolarRadiusAxis.tsx +422 -0
  93. package/src/polar/Radar.tsx +652 -0
  94. package/src/polar/RadialBar.tsx +767 -0
  95. package/src/polar/defaultPolarAngleAxisProps.tsx +33 -0
  96. package/src/polar/defaultPolarRadiusAxisProps.tsx +28 -0
  97. package/src/shape/Cross.tsx +83 -0
  98. package/src/shape/Curve.tsx +335 -0
  99. package/src/shape/Dot.tsx +49 -0
  100. package/src/shape/Polygon.tsx +168 -0
  101. package/src/shape/Rectangle.tsx +301 -0
  102. package/src/shape/Sector.tsx +304 -0
  103. package/src/shape/Symbols.tsx +144 -0
  104. package/src/shape/Trapezoid.tsx +228 -0
  105. package/src/state/RechartsReduxContext.tsx +8 -0
  106. package/src/state/RechartsStoreContext.ts +15 -0
  107. package/src/state/RechartsStoreProvider.tsx +27 -0
  108. package/src/state/ReportChartProps.tsx +19 -0
  109. package/src/state/ReportEventSettings.tsx +19 -0
  110. package/src/state/ReportMainChartProps.tsx +35 -0
  111. package/src/state/ReportPolarOptions.tsx +28 -0
  112. package/src/state/SetLegendPayload.ts +50 -0
  113. package/src/state/SetTooltipEntrySettings.tsx +46 -0
  114. package/src/state/brushSlice.ts +60 -0
  115. package/src/state/cartesianAxisSlice.ts +288 -0
  116. package/src/state/chartDataSlice.ts +115 -0
  117. package/src/state/errorBarSlice.ts +84 -0
  118. package/src/state/eventSettingsSlice.ts +41 -0
  119. package/src/state/externalEventsMiddleware.ts +136 -0
  120. package/src/state/graphicalItemsSlice.ts +162 -0
  121. package/src/state/hooks.ts +42 -0
  122. package/src/state/keyboardEventsMiddleware.ts +213 -0
  123. package/src/state/layoutSlice.ts +71 -0
  124. package/src/state/legendSlice.ts +107 -0
  125. package/src/state/mouseEventsMiddleware.ts +103 -0
  126. package/src/state/optionsSlice.ts +64 -0
  127. package/src/state/polarAxisSlice.ts +65 -0
  128. package/src/state/polarOptionsSlice.ts +54 -0
  129. package/src/state/reduxDevtoolsJsonStringifyReplacer.ts +15 -0
  130. package/src/state/referenceElementsSlice.ts +121 -0
  131. package/src/state/renderedTicksSlice.ts +61 -0
  132. package/src/state/rootPropsSlice.ts +70 -0
  133. package/src/state/selectors/areaSelectors.ts +169 -0
  134. package/src/state/selectors/arrayEqualityCheck.ts +8 -0
  135. package/src/state/selectors/axisSelectors.ts +2196 -0
  136. package/src/state/selectors/barSelectors.ts +319 -0
  137. package/src/state/selectors/barStackSelectors.ts +79 -0
  138. package/src/state/selectors/brushSelectors.ts +40 -0
  139. package/src/state/selectors/combiners/combineActiveLabel.ts +21 -0
  140. package/src/state/selectors/combiners/combineActiveTooltipIndex.ts +93 -0
  141. package/src/state/selectors/combiners/combineAllBarPositions.ts +131 -0
  142. package/src/state/selectors/combiners/combineAxisRangeWithReverse.ts +17 -0
  143. package/src/state/selectors/combiners/combineBarPosition.ts +24 -0
  144. package/src/state/selectors/combiners/combineBarSizeList.ts +75 -0
  145. package/src/state/selectors/combiners/combineCheckedDomain.ts +49 -0
  146. package/src/state/selectors/combiners/combineConfiguredScale.ts +121 -0
  147. package/src/state/selectors/combiners/combineCoordinateForDefaultIndex.ts +43 -0
  148. package/src/state/selectors/combiners/combineDisplayedStackedData.ts +50 -0
  149. package/src/state/selectors/combiners/combineInverseScaleFunction.ts +17 -0
  150. package/src/state/selectors/combiners/combineRealScaleType.ts +48 -0
  151. package/src/state/selectors/combiners/combineStackedData.ts +28 -0
  152. package/src/state/selectors/combiners/combineTooltipInteractionState.ts +86 -0
  153. package/src/state/selectors/combiners/combineTooltipPayload.ts +203 -0
  154. package/src/state/selectors/combiners/combineTooltipPayloadConfigurations.ts +45 -0
  155. package/src/state/selectors/containerSelectors.ts +12 -0
  156. package/src/state/selectors/dataSelectors.ts +90 -0
  157. package/src/state/selectors/funnelSelectors.ts +83 -0
  158. package/src/state/selectors/graphicalItemSelectors.ts +23 -0
  159. package/src/state/selectors/legendSelectors.ts +29 -0
  160. package/src/state/selectors/lineSelectors.ts +111 -0
  161. package/src/state/selectors/numberDomainEqualityCheck.ts +8 -0
  162. package/src/state/selectors/pickAxisId.ts +6 -0
  163. package/src/state/selectors/pickAxisType.ts +4 -0
  164. package/src/state/selectors/pieSelectors.ts +103 -0
  165. package/src/state/selectors/polarAxisSelectors.ts +202 -0
  166. package/src/state/selectors/polarGridSelectors.ts +24 -0
  167. package/src/state/selectors/polarScaleSelectors.ts +149 -0
  168. package/src/state/selectors/polarSelectors.ts +211 -0
  169. package/src/state/selectors/radarSelectors.ts +152 -0
  170. package/src/state/selectors/radialBarSelectors.ts +328 -0
  171. package/src/state/selectors/rootPropsSelectors.ts +36 -0
  172. package/src/state/selectors/scatterSelectors.ts +77 -0
  173. package/src/state/selectors/selectAllAxes.ts +10 -0
  174. package/src/state/selectors/selectChartOffset.ts +15 -0
  175. package/src/state/selectors/selectChartOffsetInternal.ts +111 -0
  176. package/src/state/selectors/selectPlotArea.ts +27 -0
  177. package/src/state/selectors/selectTooltipAxisId.ts +6 -0
  178. package/src/state/selectors/selectTooltipAxisType.ts +33 -0
  179. package/src/state/selectors/selectTooltipEventType.ts +45 -0
  180. package/src/state/selectors/selectTooltipPayloadSearcher.ts +7 -0
  181. package/src/state/selectors/selectTooltipSettings.ts +6 -0
  182. package/src/state/selectors/selectTooltipState.ts +5 -0
  183. package/src/state/selectors/tooltipSelectors.ts +690 -0
  184. package/src/state/selectors/touchSelectors.ts +29 -0
  185. package/src/state/store.ts +167 -0
  186. package/src/state/tooltipSlice.ts +289 -0
  187. package/src/state/types/AreaSettings.ts +17 -0
  188. package/src/state/types/BarSettings.ts +16 -0
  189. package/src/state/types/LineSettings.ts +12 -0
  190. package/src/state/types/PieSettings.ts +32 -0
  191. package/src/state/types/RadarSettings.ts +6 -0
  192. package/src/state/types/RadialBarSettings.ts +10 -0
  193. package/src/state/types/ScatterSettings.ts +13 -0
  194. package/src/state/types/StackedGraphicalItem.ts +33 -0
  195. package/src/state/unregisterOnCleanup.ts +26 -0
  196. package/src/state/zIndexSlice.ts +128 -0
  197. package/src/synchronisation/syncRegistry.ts +131 -0
  198. package/src/synchronisation/syncSelectors.ts +7 -0
  199. package/src/synchronisation/types.ts +42 -0
  200. package/src/synchronisation/useChartSynchronisation.tsx +372 -0
  201. package/src/types.ts +39 -0
  202. package/src/util/ActiveShapeUtils.tsx +80 -0
  203. package/src/util/BarUtils.tsx +74 -0
  204. package/src/util/CartesianUtils.ts +53 -0
  205. package/src/util/ChartUtils.ts +696 -0
  206. package/src/util/Constants.ts +42 -0
  207. package/src/util/CssPrefixUtils.ts +24 -0
  208. package/src/util/DOMUtils.ts +141 -0
  209. package/src/util/DataUtils.ts +205 -0
  210. package/src/util/FunnelUtils.tsx +37 -0
  211. package/src/util/Global.ts +15 -0
  212. package/src/util/IfOverflow.ts +17 -0
  213. package/src/util/LRUCache.ts +46 -0
  214. package/src/util/LogUtils.ts +26 -0
  215. package/src/util/PolarUtils.ts +134 -0
  216. package/src/util/RadialBarUtils.tsx +35 -0
  217. package/src/util/ReduceCSSCalc.ts +186 -0
  218. package/src/util/ShallowEqual.ts +43 -0
  219. package/src/util/TickUtils.ts +61 -0
  220. package/src/util/YAxisUtils.ts +49 -0
  221. package/src/util/adaptEventHandlers.ts +69 -0
  222. package/src/util/axisPropsAreEqual.ts +42 -0
  223. package/src/util/collectionUtils.ts +83 -0
  224. package/src/util/createCartesianCharts.tsx +101 -0
  225. package/src/util/createEventProxy.ts +24 -0
  226. package/src/util/createPolarCharts.tsx +86 -0
  227. package/src/util/cursor/getCursorPoints.ts +48 -0
  228. package/src/util/cursor/getCursorRectangle.ts +31 -0
  229. package/src/util/cursor/getRadialCursorPoints.ts +34 -0
  230. package/src/util/excludeEventProps.ts +172 -0
  231. package/src/util/getActiveCoordinate.ts +205 -0
  232. package/src/util/getAxisTypeBasedOnLayout.ts +21 -0
  233. package/src/util/getEveryNth.ts +30 -0
  234. package/src/util/getRadiusAndStrokeWidthFromDot.ts +35 -0
  235. package/src/util/getRelativeCoordinate.ts +84 -0
  236. package/src/util/getSliced.ts +21 -0
  237. package/src/util/isDomainSpecifiedByUser.ts +217 -0
  238. package/src/util/isWellBehavedNumber.ts +10 -0
  239. package/src/util/objectPath.ts +129 -0
  240. package/src/util/payload/getUniqPayload.ts +31 -0
  241. package/src/util/propsAreEqual.ts +137 -0
  242. package/src/util/resolveDefaultProps.tsx +8 -0
  243. package/src/util/round.ts +35 -0
  244. package/src/util/scale/CartesianScaleHelper.ts +72 -0
  245. package/src/util/scale/CustomScaleDefinition.ts +82 -0
  246. package/src/util/scale/RechartsScale.ts +131 -0
  247. package/src/util/scale/createCategoricalInverse.ts +83 -0
  248. package/src/util/scale/getNiceTickValues.ts +334 -0
  249. package/src/util/scale/index.ts +3 -0
  250. package/src/util/scale/util/DecimalLite.ts +194 -0
  251. package/src/util/scale/util/arithmetic.ts +56 -0
  252. package/src/util/stacks/getStackSeriesIdentifier.ts +20 -0
  253. package/src/util/stacks/stackTypes.ts +53 -0
  254. package/src/util/svgPropertiesAndEvents.ts +84 -0
  255. package/src/util/svgPropertiesNoEvents.ts +520 -0
  256. package/src/util/tooltip/translate.ts +179 -0
  257. package/src/util/typedDataKey.ts +8 -0
  258. package/src/util/types.ts +724 -0
  259. package/src/util/useAnimationId.tsx +31 -0
  260. package/src/util/useElementOffset.ts +164 -0
  261. package/src/util/useId.ts +20 -0
  262. package/src/util/usePrefersReducedMotion.ts +44 -0
  263. package/src/util/useUniqueId.ts +34 -0
  264. package/src/zIndex/DefaultZIndexes.tsx +87 -0
  265. package/src/zIndex/ZIndexLayer.tsx +126 -0
  266. package/src/zIndex/ZIndexPortal.tsx +69 -0
  267. package/src/zIndex/getZIndexFromUnknown.tsx +17 -0
  268. package/src/zIndex/zIndexSelectors.ts +46 -0
  269. package/test/_data.ts +408 -0
  270. package/test/animation/AnimationController.typed.spec.ts +53 -0
  271. package/test/animation/AnimationControllerImpl.spec.ts +271 -0
  272. package/test/animation/CSSTransitionAnimate.timing.spec.tsx +473 -0
  273. package/test/animation/JavascriptAnimate.spec.tsx +62 -0
  274. package/test/animation/RechartsAnimation.spec.ts +636 -0
  275. package/test/animation/easing.spec.ts +218 -0
  276. package/test/animation/legacyAnimationLengthChange.spec.tsx +803 -0
  277. package/test/animation/matchBy.spec.ts +467 -0
  278. package/test/animation/mockAnimationController.ts +40 -0
  279. package/test/animation/mockControllerAnimationManager.ts +143 -0
  280. package/test/animation/mockTimeoutController.ts +114 -0
  281. package/test/animation/timeoutController.spec.ts +138 -0
  282. package/test/animation/useAnimationStartSnapshot.spec.ts +147 -0
  283. package/test/animation/util.spec.ts +28 -0
  284. package/test/cartesian/Area.animation.spec.tsx +363 -0
  285. package/test/cartesian/Area.range.spec.tsx +54 -0
  286. package/test/cartesian/Area.spec.tsx +1202 -0
  287. package/test/cartesian/Area.stacked.render.spec.tsx +69 -0
  288. package/test/cartesian/Area.typed.spec.tsx +209 -0
  289. package/test/cartesian/Axis.integration.spec.tsx +158 -0
  290. package/test/cartesian/Bar/Bar.csstransition.spec.tsx +299 -0
  291. package/test/cartesian/Bar/Bar.spec.tsx +2314 -0
  292. package/test/cartesian/Bar/Bar.typed.spec.tsx +192 -0
  293. package/test/cartesian/Bar.animation.spec.tsx +426 -0
  294. package/test/cartesian/Bar.stackDomain.spec.tsx +66 -0
  295. package/test/cartesian/Bar.stacked.render.spec.tsx +53 -0
  296. package/test/cartesian/Bar.truncateByDomain.spec.tsx +237 -0
  297. package/test/cartesian/Bar.zeroDimensionFiltering.spec.tsx +336 -0
  298. package/test/cartesian/BarStack.spec.tsx +91 -0
  299. package/test/cartesian/Brush.keyboard.spec.tsx +88 -0
  300. package/test/cartesian/Brush.panorama.spec.tsx +41 -0
  301. package/test/cartesian/Brush.props.spec.tsx +63 -0
  302. package/test/cartesian/Brush.render.spec.tsx +117 -0
  303. package/test/cartesian/Brush.spec.tsx +522 -0
  304. package/test/cartesian/Brush.stacked.spec.tsx +221 -0
  305. package/test/cartesian/CartesianAxis.render.spec.tsx +50 -0
  306. package/test/cartesian/CartesianAxis.spec.tsx +396 -0
  307. package/test/cartesian/CartesianGrid.render.spec.tsx +39 -0
  308. package/test/cartesian/CartesianGrid.spec.tsx +2103 -0
  309. package/test/cartesian/ErrorBar.render.spec.tsx +69 -0
  310. package/test/cartesian/ErrorBar.spec.tsx +2414 -0
  311. package/test/cartesian/Funnel.animation.spec.tsx +241 -0
  312. package/test/cartesian/Funnel.spec.tsx +226 -0
  313. package/test/cartesian/Funnel.typed.spec.tsx +221 -0
  314. package/test/cartesian/GraphicalItemClipPath.scale-behavior.spec.tsx +627 -0
  315. package/test/cartesian/GraphicalItemClipPath.spec.tsx +427 -0
  316. package/test/cartesian/Line.animation.spec.tsx +643 -0
  317. package/test/cartesian/Line.sparseAnimationPath.spec.tsx +98 -0
  318. package/test/cartesian/Line.spec.tsx +471 -0
  319. package/test/cartesian/Line.typed.spec.tsx +152 -0
  320. package/test/cartesian/ReferenceArea.render.spec.tsx +63 -0
  321. package/test/cartesian/ReferenceArea.spec.tsx +663 -0
  322. package/test/cartesian/ReferenceArea.typed.spec.tsx +74 -0
  323. package/test/cartesian/ReferenceDot.render.spec.tsx +55 -0
  324. package/test/cartesian/ReferenceDot.spec.tsx +462 -0
  325. package/test/cartesian/ReferenceDot.typed.spec.tsx +76 -0
  326. package/test/cartesian/ReferenceLine/ReferenceLine.panorama.spec.tsx +184 -0
  327. package/test/cartesian/ReferenceLine/ReferenceLine.spec.tsx +744 -0
  328. package/test/cartesian/ReferenceLine/ReferenceLine.typed.spec.tsx +74 -0
  329. package/test/cartesian/ReferenceLine/getEndPoints.spec.ts +399 -0
  330. package/test/cartesian/ReferenceLine.render.spec.tsx +134 -0
  331. package/test/cartesian/Scatter.animation.spec.tsx +381 -0
  332. package/test/cartesian/Scatter.render.spec.tsx +61 -0
  333. package/test/cartesian/Scatter.spec.tsx +406 -0
  334. package/test/cartesian/Scatter.typed.spec.tsx +153 -0
  335. package/test/cartesian/XAxis/XAxis.barSize.spec.tsx +336 -0
  336. package/test/cartesian/XAxis/XAxis.brush.spec.tsx +266 -0
  337. package/test/cartesian/XAxis/XAxis.categorydomain.spec.tsx +872 -0
  338. package/test/cartesian/XAxis/XAxis.dataKey.spec.tsx +86 -0
  339. package/test/cartesian/XAxis/XAxis.datatypes.spec.tsx +127 -0
  340. package/test/cartesian/XAxis/XAxis.hide.spec.tsx +106 -0
  341. package/test/cartesian/XAxis/XAxis.multiaxis.spec.tsx +336 -0
  342. package/test/cartesian/XAxis/XAxis.numberdomain.spec.tsx +1466 -0
  343. package/test/cartesian/XAxis/XAxis.padding.spec.tsx +758 -0
  344. package/test/cartesian/XAxis/XAxis.padding_clip.spec.tsx +65 -0
  345. package/test/cartesian/XAxis/XAxis.state.spec.tsx +355 -0
  346. package/test/cartesian/XAxis/XAxis.tick.spec.tsx +493 -0
  347. package/test/cartesian/XAxis/XAxis.timescale.spec.tsx +233 -0
  348. package/test/cartesian/XAxis/XAxis.type.spec.tsx +107 -0
  349. package/test/cartesian/XAxis/XAxis.typed.spec.tsx +102 -0
  350. package/test/cartesian/XAxis/XAxis.vertical.spec.tsx +265 -0
  351. package/test/cartesian/XAxis.tickFormatter.spec.tsx +54 -0
  352. package/test/cartesian/YAxis/YAxis.7362.derivedDomain.spec.tsx +230 -0
  353. package/test/cartesian/YAxis/YAxis.7362.spec.tsx +104 -0
  354. package/test/cartesian/YAxis/YAxis.interval-zero.spec.tsx +88 -0
  355. package/test/cartesian/YAxis/YAxis.label.spec.tsx +219 -0
  356. package/test/cartesian/YAxis/YAxis.spec.tsx +1595 -0
  357. package/test/cartesian/YAxis/YAxis.tick.spec.tsx +428 -0
  358. package/test/cartesian/YAxis/YAxis.tickFormatter.spec.tsx +54 -0
  359. package/test/cartesian/YAxis/YAxis.ticks.spec.tsx +263 -0
  360. package/test/cartesian/YAxis/YAxis.type.spec.tsx +107 -0
  361. package/test/cartesian/YAxis/YAxis.typed.spec.tsx +102 -0
  362. package/test/cartesian/ZAxis.spec.tsx +300 -0
  363. package/test/cartesian/ZAxis.typed.spec.tsx +33 -0
  364. package/test/cartesian/__snapshots__/Brush.spec.tsx.snap +5 -0
  365. package/test/cartesian/axisLineAndStroke.spec.tsx +72 -0
  366. package/test/cartesian/getCartesianPosition.spec.ts +907 -0
  367. package/test/cartesian/getEquidistantTicks.spec.ts +88 -0
  368. package/test/cartesian/getTicks.spec.ts +378 -0
  369. package/test/cartesian/miscFeatureGaps.spec.tsx +89 -0
  370. package/test/cartesian/useAnimatedLineLength.spec.ts +168 -0
  371. package/test/chart/AccessibilityLayer.spec.tsx +569 -0
  372. package/test/chart/AccessibilityScans.spec.tsx +286 -0
  373. package/test/chart/AreaChart.spec.tsx +409 -0
  374. package/test/chart/AreaChart.stacked.spec.tsx +1407 -0
  375. package/test/chart/AreaChart.typed.spec.tsx +39 -0
  376. package/test/chart/BarChart.spec.tsx +3719 -0
  377. package/test/chart/BarChart.typed.spec.tsx +60 -0
  378. package/test/chart/CategoricalChart.spec.tsx +255 -0
  379. package/test/chart/ComposedChart.spec.tsx +199 -0
  380. package/test/chart/ComposedChart.typed.spec.tsx +39 -0
  381. package/test/chart/FunnelChart.spec.tsx +215 -0
  382. package/test/chart/FunnelChart.typed.spec.tsx +39 -0
  383. package/test/chart/LineChart.multiseries.spec.tsx +50 -0
  384. package/test/chart/LineChart.smoke.spec.tsx +50 -0
  385. package/test/chart/LineChart.spec.tsx +930 -0
  386. package/test/chart/LineChart.typed.spec.tsx +39 -0
  387. package/test/chart/NicheChartTooltip.spec.tsx +81 -0
  388. package/test/chart/PieChart.spec.tsx +793 -0
  389. package/test/chart/PieChart.typed.spec.tsx +39 -0
  390. package/test/chart/RadarChart.spec.tsx +530 -0
  391. package/test/chart/RadarChart.typed.spec.tsx +39 -0
  392. package/test/chart/RadialBarChart.5966.spec.tsx +48 -0
  393. package/test/chart/RadialBarChart.spec.tsx +679 -0
  394. package/test/chart/RadialBarChart.typed.spec.tsx +39 -0
  395. package/test/chart/RechartsWrapper.spec.tsx +83 -0
  396. package/test/chart/Sankey.content.spec.tsx +46 -0
  397. package/test/chart/Sankey.spec.tsx +952 -0
  398. package/test/chart/Sankey.typed.spec.tsx +29 -0
  399. package/test/chart/ScatterChart.spec.tsx +2613 -0
  400. package/test/chart/ScatterChart.typed.spec.tsx +39 -0
  401. package/test/chart/SunburstChart.spec.tsx +146 -0
  402. package/test/chart/Treemap.animation.spec.tsx +52 -0
  403. package/test/chart/Treemap.spec.tsx +1003 -0
  404. package/test/chart/Treemap.typed.spec.tsx +26 -0
  405. package/test/chart/chartEvents.spec.tsx +127 -0
  406. package/test/chart/responsive.spec.tsx +620 -0
  407. package/test/component/Cell.render.spec.tsx +155 -0
  408. package/test/component/Cell.spec.tsx +12 -0
  409. package/test/component/Cursor.spec.tsx +186 -0
  410. package/test/component/DefaultTooltipContent.spec.tsx +102 -0
  411. package/test/component/Label.render.spec.tsx +63 -0
  412. package/test/component/Label.spec.tsx +686 -0
  413. package/test/component/Label.typed.spec.tsx +46 -0
  414. package/test/component/LabelList.spec.tsx +188 -0
  415. package/test/component/Legend.itemSorter.spec.tsx +704 -0
  416. package/test/component/Legend.render.spec.tsx +92 -0
  417. package/test/component/Legend.spec.tsx +2213 -0
  418. package/test/component/Legend.typed.spec.tsx +22 -0
  419. package/test/component/ResponsiveContainer.spec.tsx +523 -0
  420. package/test/component/ResponsiveContainerDataTest.spec.tsx +51 -0
  421. package/test/component/Text.spec.tsx +415 -0
  422. package/test/component/Text.typed.spec.tsx +46 -0
  423. package/test/component/Tooltip/ActiveDot.spec.tsx +370 -0
  424. package/test/component/Tooltip/Tooltip.animation.spec.tsx +209 -0
  425. package/test/component/Tooltip/Tooltip.content.spec.tsx +128 -0
  426. package/test/component/Tooltip/Tooltip.formatter.spec.tsx +152 -0
  427. package/test/component/Tooltip/Tooltip.includeHidden.spec.tsx +79 -0
  428. package/test/component/Tooltip/Tooltip.multipleDataArrays.spec.tsx +165 -0
  429. package/test/component/Tooltip/Tooltip.offset.spec.tsx +113 -0
  430. package/test/component/Tooltip/Tooltip.state.spec.tsx +74 -0
  431. package/test/component/Tooltip/Tooltip.sync.spec.tsx +639 -0
  432. package/test/component/Tooltip/defaultIndex.spec.tsx +227 -0
  433. package/test/component/Tooltip/graphicalItem.formatter.spec.tsx +138 -0
  434. package/test/component/Tooltip/itemSorter.spec.tsx +2815 -0
  435. package/test/component/Tooltip/tooltipEventType.spec.tsx +344 -0
  436. package/test/component/Tooltip/tooltipMouseHoverSelectors.ts +41 -0
  437. package/test/component/Tooltip/tooltipTestHelpers.tsx +162 -0
  438. package/test/component/Tooltip.defaultIndex.spec.tsx +48 -0
  439. package/test/component/Tooltip.hover.spec.tsx +61 -0
  440. package/test/component/Tooltip.item.spec.tsx +54 -0
  441. package/test/component/Tooltip.keyboard.spec.tsx +51 -0
  442. package/test/component/Tooltip.payload.spec.tsx +1716 -0
  443. package/test/component/Tooltip.touch.spec.tsx +39 -0
  444. package/test/component/Tooltip.visibility.spec.tsx +1889 -0
  445. package/test/component/TooltipBoundingBox.spec.tsx +89 -0
  446. package/test/component/responsiveContainerUtils.spec.ts +205 -0
  447. package/test/container/ClipPath.spec.tsx +602 -0
  448. package/test/container/chartDimensions.spec.tsx +368 -0
  449. package/test/context/chartLayoutContext.spec.tsx +378 -0
  450. package/test/helper/ExpectAxisDomain.tsx +27 -0
  451. package/test/helper/assertNotNull.ts +6 -0
  452. package/test/helper/assertZIndexLayerOrder.ts +19 -0
  453. package/test/helper/createSelectorTestCase.tsx +176 -0
  454. package/test/helper/expectAnimatedPieAngles.ts +100 -0
  455. package/test/helper/expectAnimatedPiePaths.ts +78 -0
  456. package/test/helper/expectAreaCurve.ts +15 -0
  457. package/test/helper/expectAxisTicks.ts +48 -0
  458. package/test/helper/expectBars.ts +54 -0
  459. package/test/helper/expectFunctionReturning.ts +58 -0
  460. package/test/helper/expectLabel.ts +32 -0
  461. package/test/helper/expectLastCalledWith.ts +48 -0
  462. package/test/helper/expectLine.ts +20 -0
  463. package/test/helper/expectPieSectors.ts +80 -0
  464. package/test/helper/expectScale.ts +37 -0
  465. package/test/helper/expectScatterPoints.ts +52 -0
  466. package/test/helper/expectStackGroups.ts +144 -0
  467. package/test/helper/mockAxes.ts +22 -0
  468. package/test/helper/mockGetBoundingClientRect.ts +66 -0
  469. package/test/helper/mockHTMLElementProperty.ts +19 -0
  470. package/test/helper/mockTouchingElement.ts +27 -0
  471. package/test/helper/offsetHelpers.ts +19 -0
  472. package/test/helper/parameterizedTestCases.tsx +99 -0
  473. package/test/helper/produceState.ts +32 -0
  474. package/test/helper/render.ts +7 -0
  475. package/test/helper/selectorTestHelpers.tsx +63 -0
  476. package/test/helper/trim.spec.ts +35 -0
  477. package/test/helper/trim.ts +11 -0
  478. package/test/hooks/useActiveTooltipDataPoints.spec.tsx +358 -0
  479. package/test/hooks/useAxisDomain.spec.tsx +361 -0
  480. package/test/hooks/useAxisScale.spec.tsx +283 -0
  481. package/test/hooks/useAxisTicks.spec.tsx +130 -0
  482. package/test/hooks/useOffset.spec.tsx +248 -0
  483. package/test/hooks/useTooltipStateHooks.spec.tsx +109 -0
  484. package/test/polar/Pie/Pie-TwoLevelPieChart.spec.tsx +135 -0
  485. package/test/polar/Pie/Pie.spec.tsx +784 -0
  486. package/test/polar/Pie/Pie.typed.spec.tsx +78 -0
  487. package/test/polar/Pie.animation.spec.tsx +529 -0
  488. package/test/polar/PieWithLegend.animation.spec.tsx +142 -0
  489. package/test/polar/PolarAngleAxis/PolarAngleAxis.events.spec.tsx +76 -0
  490. package/test/polar/PolarAngleAxis/PolarAngleAxis.spec.tsx +2079 -0
  491. package/test/polar/PolarAngleAxis/PolarAngleAxis.typed.spec.tsx +102 -0
  492. package/test/polar/PolarAngleAxis.render.spec.tsx +79 -0
  493. package/test/polar/PolarGrid.render.spec.tsx +75 -0
  494. package/test/polar/PolarGrid.spec.tsx +918 -0
  495. package/test/polar/PolarLegendPerRow.render.spec.tsx +85 -0
  496. package/test/polar/PolarRadiusAxis.events.spec.tsx +65 -0
  497. package/test/polar/PolarRadiusAxis.render.spec.tsx +52 -0
  498. package/test/polar/PolarRadiusAxis.spec.tsx +991 -0
  499. package/test/polar/PolarRadiusAxis.typed.spec.tsx +84 -0
  500. package/test/polar/PolarTooltipLegend.render.spec.tsx +80 -0
  501. package/test/polar/Radar.animation.spec.tsx +570 -0
  502. package/test/polar/Radar.render.spec.tsx +71 -0
  503. package/test/polar/Radar.spec.tsx +265 -0
  504. package/test/polar/Radar.typed.spec.tsx +119 -0
  505. package/test/polar/RadialBar/RadialBar.spec.tsx +1521 -0
  506. package/test/polar/RadialBar/RadialBar.typed.spec.tsx +132 -0
  507. package/test/polar/RadialBar.animation.spec.tsx +375 -0
  508. package/test/polar/RadialBar.render.spec.tsx +66 -0
  509. package/test/polar/RadialBar.stacked.spec.tsx +57 -0
  510. package/test/setup.ts +84 -0
  511. package/test/shape/ActiveShape.spec.tsx +181 -0
  512. package/test/shape/Cross.spec.tsx +60 -0
  513. package/test/shape/Cross.typed.spec.tsx +26 -0
  514. package/test/shape/Curve.spec.tsx +368 -0
  515. package/test/shape/Curve.typed.spec.tsx +69 -0
  516. package/test/shape/Dot.spec.tsx +73 -0
  517. package/test/shape/Dot.typed.spec.tsx +30 -0
  518. package/test/shape/Polygon.spec.tsx +357 -0
  519. package/test/shape/Polygon.typed.spec.tsx +28 -0
  520. package/test/shape/Rectangle.animation.spec.tsx +451 -0
  521. package/test/shape/Rectangle.spec.tsx +68 -0
  522. package/test/shape/Rectangle.typed.spec.tsx +24 -0
  523. package/test/shape/Sector.spec.tsx +76 -0
  524. package/test/shape/Sector.typed.spec.tsx +24 -0
  525. package/test/shape/Symbols.spec.tsx +43 -0
  526. package/test/shape/Symbols.typed.spec.tsx +24 -0
  527. package/test/shape/Trapezoid.spec.tsx +50 -0
  528. package/test/shape/Trapezoid.typed.spec.tsx +24 -0
  529. package/test/shape/__snapshots__/Cross.spec.tsx.snap +62 -0
  530. package/test/shape/__snapshots__/Curve.spec.tsx.snap +460 -0
  531. package/test/shape/__snapshots__/Polygon.spec.tsx.snap +58 -0
  532. package/test/shape/__snapshots__/Rectangle.spec.tsx.snap +117 -0
  533. package/test/shape/__snapshots__/Sector.spec.tsx.snap +71 -0
  534. package/test/shape/__snapshots__/Trapezoid.spec.tsx.snap +64 -0
  535. package/test/state/chartDataSlice.spec.ts +53 -0
  536. package/test/state/externalEventsMiddleware.spec.ts +178 -0
  537. package/test/state/graphicalItemsSlice.spec.ts +92 -0
  538. package/test/state/hooks.spec.tsx +68 -0
  539. package/test/state/legendSlice.spec.ts +44 -0
  540. package/test/state/mouseEventsMiddleware.spec.ts +75 -0
  541. package/test/state/optionsSlice.spec.ts +19 -0
  542. package/test/state/reduxDevtoolsJsonStringifyReplacer.spec.ts +25 -0
  543. package/test/state/referenceElementsSlice.spec.ts +84 -0
  544. package/test/state/selectors/areaSelectors.spec.tsx +77 -0
  545. package/test/state/selectors/axisSelectors.spec.tsx +1418 -0
  546. package/test/state/selectors/barStackSelectors.spec.tsx +752 -0
  547. package/test/state/selectors/brushSelectors.spec.tsx +30 -0
  548. package/test/state/selectors/cartesianAxisSlice.spec.ts +96 -0
  549. package/test/state/selectors/combineNiceTicks.spec.ts +207 -0
  550. package/test/state/selectors/combiners/combineActiveTooltipIndex.spec.ts +61 -0
  551. package/test/state/selectors/combiners/combineAllBarPositions.spec.ts +39 -0
  552. package/test/state/selectors/combiners/combineConfiguredScale.spec.ts +56 -0
  553. package/test/state/selectors/combiners/combineDisplayedStackedData.spec.ts +123 -0
  554. package/test/state/selectors/combiners/combineRealScaleType.spec.ts +80 -0
  555. package/test/state/selectors/containerSelectors.spec.tsx +168 -0
  556. package/test/state/selectors/dataSelectors.spec.tsx +136 -0
  557. package/test/state/selectors/legendSelectors.spec.tsx +113 -0
  558. package/test/state/selectors/lineSelectors.spec.tsx +60 -0
  559. package/test/state/selectors/pieSelectors.spec.tsx +72 -0
  560. package/test/state/selectors/radarSelectors.spec.tsx +496 -0
  561. package/test/state/selectors/rootPropsSelectors.spec.tsx +169 -0
  562. package/test/state/selectors/scatterSelectors.spec.tsx +47 -0
  563. package/test/state/selectors/selectActiveTooltipIndex.spec.tsx +234 -0
  564. package/test/state/selectors/selectAllAxes.spec.tsx +18 -0
  565. package/test/state/selectors/selectAxisDomain.spec.tsx +21 -0
  566. package/test/state/selectors/selectAxisDomainIncludingNiceTicks.spec.tsx +19 -0
  567. package/test/state/selectors/selectAxisRangeWithReverse.spec.tsx +22 -0
  568. package/test/state/selectors/selectAxisScale.spec.tsx +91 -0
  569. package/test/state/selectors/selectBarRectangles.stackOffset.spec.tsx +503 -0
  570. package/test/state/selectors/selectBaseAxis.spec.tsx +56 -0
  571. package/test/state/selectors/selectCartesianItemsSettings.spec.tsx +57 -0
  572. package/test/state/selectors/selectChartOffset.spec.tsx +26 -0
  573. package/test/state/selectors/selectDisplayedData.spec.tsx +282 -0
  574. package/test/state/selectors/selectIsTooltipActive.spec.tsx +231 -0
  575. package/test/state/selectors/selectNumericalDomain.spec.tsx +21 -0
  576. package/test/state/selectors/selectRealScaleType.spec.tsx +19 -0
  577. package/test/state/selectors/selectStackGroups.spec.tsx +322 -0
  578. package/test/state/selectors/selectXAxisPosition.spec.tsx +22 -0
  579. package/test/state/selectors/selectYAxisPosition.spec.tsx +22 -0
  580. package/test/state/selectors/selectors.spec.tsx +1613 -0
  581. package/test/state/throttling.spec.ts +200 -0
  582. package/test/state/zIndexSlice.spec.ts +85 -0
  583. package/test/synchronisation/useChartSynchronisation.spec.tsx +225 -0
  584. package/test/util/BarUtils.spec.ts +39 -0
  585. package/test/util/CartesianUtils/CartesianUtils.spec.ts +261 -0
  586. package/test/util/CartesianUtils/rectWithPoints.spec.ts +48 -0
  587. package/test/util/ChartUtils/ChartUtils.spec.ts +491 -0
  588. package/test/util/ChartUtils/appendOffsetOfLegend.spec.ts +136 -0
  589. package/test/util/ChartUtils/appendOffsetOfLegend.spec.tsx +133 -0
  590. package/test/util/ChartUtils/getCateCoordinateOfLine.spec.ts +83 -0
  591. package/test/util/ChartUtils/getStackedData.spec.ts +416 -0
  592. package/test/util/ChartUtils/truncateByDomain.spec.ts +70 -0
  593. package/test/util/DataUtils.spec.ts +385 -0
  594. package/test/util/DomUtils.spec.tsx +117 -0
  595. package/test/util/FunnelUtils.spec.tsx +70 -0
  596. package/test/util/Global.spec.ts +11 -0
  597. package/test/util/LRUCache.spec.ts +81 -0
  598. package/test/util/LogUtils.spec.ts +45 -0
  599. package/test/util/PolarUtils.spec.ts +66 -0
  600. package/test/util/ReduceCssCalcPrototype.spec.ts +141 -0
  601. package/test/util/ShallowEqual.spec.ts +102 -0
  602. package/test/util/TickUtils.spec.ts +29 -0
  603. package/test/util/axisPropsAreEqual.spec.ts +93 -0
  604. package/test/util/createChartHelpers.spec.tsx +210 -0
  605. package/test/util/cursor/getCursorPoints.spec.ts +136 -0
  606. package/test/util/cursor/getCursorRectangle.spec.ts +50 -0
  607. package/test/util/cursor/getRadialCursorPoints.spec.ts +36 -0
  608. package/test/util/errorValue.spec.ts +69 -0
  609. package/test/util/getEveryNth.spec.ts +39 -0
  610. package/test/util/getRadiusAndStrokeWidthFromDot.spec.ts +51 -0
  611. package/test/util/getRelativeCoordinate.spec.ts +250 -0
  612. package/test/util/getSliced.spec.ts +45 -0
  613. package/test/util/isDomainSpecifiedByUser.spec.ts +207 -0
  614. package/test/util/isWellBehavedNumber.spec.ts +54 -0
  615. package/test/util/payload/getUniqPayload.spec.ts +56 -0
  616. package/test/util/propsAreEqual.spec.ts +75 -0
  617. package/test/util/round.spec.ts +112 -0
  618. package/test/util/scale/arithmetic.spec.ts +61 -0
  619. package/test/util/scale/createCategoricalInverse.spec.ts +84 -0
  620. package/test/util/scale/getNiceTickValues.spec.ts +421 -0
  621. package/test/util/scale/getTickValuesFixedDomain.spec.ts +155 -0
  622. package/test/util/svgPropertiesAndEvents.spec.tsx +206 -0
  623. package/test/util/svgPropertiesNoEvents.spec.tsx +228 -0
  624. package/test/util/tooltip/translate.spec.ts +396 -0
  625. package/test/util/useAnimationId.spec.tsx +59 -0
  626. package/test/util/useElementOffset.spec.tsx +173 -0
  627. package/test/util/usePrefersReducedMotion.spec.ts +54 -0
  628. package/test/util/useUniqueId.spec.ts +99 -0
  629. package/test/utils/diagnostics-allowlist.ts +18 -0
  630. package/test/utils/diagnostics.ts +58 -0
  631. package/test/zIndex/AllZIndexPortals.spec.tsx +83 -0
  632. package/test/zIndex/DefaultZIndexes.spec.ts +80 -0
  633. package/test/zIndex/DynamicZIndex.spec.tsx +102 -0
  634. package/test/zIndex/ZIndexLayer.portalOwner.spec.tsx +125 -0
  635. package/test/zIndex/componentZIndex.spec.tsx +255 -0
  636. package/test/zIndex/getZIndexFromUnknown.spec.ts +51 -0
  637. package/test/zIndex/multiChartZIndexIsolation.spec.tsx +90 -0
  638. package/test/zIndex/zIndexSelectors.spec.ts +172 -0
  639. package/tsconfig.json +11 -0
@@ -0,0 +1,84 @@
1
+ // Ported from recharts 3.9.0 src/cartesian/useAnimatedLineLength.ts.
2
+ //
3
+ // Solid 2.0 deviation: React `useRef` + `useCallback` exist to survive re-renders
4
+ // and keep a stable callback identity. A Solid component body runs ONCE, so the
5
+ // refs become plain `let` closure variables and the returned function is naturally
6
+ // stable. The data-change detection (prevPoints !== points) that React does during
7
+ // render is moved into the returned callback's caller convention: the consumer
8
+ // calls `markDataChange(points)` once per render (cheap reference compare) before
9
+ // driving frames, mirroring the React in-render ref bookkeeping. We expose it as a
10
+ // small object so Line can both detect data changes and read the visible length.
11
+ import { round } from "../util/round";
12
+
13
+ export type AnimatedLineLength = {
14
+ /**
15
+ * Notify the hook that the point set may have changed. When `points` differs by
16
+ * reference from the previous call, the next animation resumes from the furthest
17
+ * length already drawn (so a mid-animation data change does not jump back to 0).
18
+ */
19
+ markDataChange: (points: unknown) => void;
20
+ /**
21
+ * `(animationElapsedTime, totalLength) => number | null`:
22
+ * - `animationElapsedTime` is the animation progress (0 to 1),
23
+ * - `totalLength` is the current total SVG path length in pixels,
24
+ * - returns the visible length in pixels, or `null` once the line is fully
25
+ * visible (meaning no entrance stroke-dasharray is needed any more).
26
+ */
27
+ getVisibleLength: (animationElapsedTime: number, totalLength: number) => number | null;
28
+ };
29
+
30
+ /**
31
+ * Tracks the animated visible length of a Line's SVG path across data changes.
32
+ *
33
+ * Invariants:
34
+ * 1. The visible length only grows (monotonically non-decreasing with animationElapsedTime).
35
+ * 2. The visible length changes continuously — no jumps when data changes mid-animation.
36
+ * This is achieved by tracking the maximum animated length in pixels and using it
37
+ * as the starting point for the next animation.
38
+ * 3. Once the line reaches 100% visibility, it never becomes partially visible again.
39
+ * In that case the hook returns `null`, meaning no animation stroke-dasharray is needed.
40
+ */
41
+ export function useAnimatedLineLength(): AnimatedLineLength {
42
+ let startingLength = 0;
43
+ let maxAnimatedLength = 0;
44
+ let reachedFull = false;
45
+ // `undefined` sentinel so the first markDataChange (even with `undefined` points)
46
+ // does not spuriously rebase — recharts seeds prevPointsRef with the first points.
47
+ let prevPoints: unknown;
48
+ let seeded = false;
49
+
50
+ const markDataChange = (points: unknown): void => {
51
+ if (!seeded) {
52
+ prevPoints = points;
53
+ seeded = true;
54
+ return;
55
+ }
56
+ if (prevPoints !== points) {
57
+ startingLength = maxAnimatedLength;
58
+ prevPoints = points;
59
+ }
60
+ };
61
+
62
+ const getVisibleLength = (animationElapsedTime: number, totalLength: number): number | null => {
63
+ if (reachedFull) {
64
+ return null;
65
+ }
66
+
67
+ const visibleLength = Math.min(
68
+ round(startingLength + animationElapsedTime * totalLength),
69
+ totalLength,
70
+ );
71
+
72
+ if (animationElapsedTime > 0 && totalLength > 0) {
73
+ maxAnimatedLength = Math.max(maxAnimatedLength, visibleLength);
74
+ if (visibleLength >= totalLength) {
75
+ reachedFull = true;
76
+ return null;
77
+ }
78
+ }
79
+
80
+ return visibleLength;
81
+ };
82
+
83
+ return { markDataChange, getVisibleLength };
84
+ }
@@ -0,0 +1,30 @@
1
+ // Ported from recharts 3.8.1 src/chart/AreaChart.tsx (commit 7a23854).
2
+ // `forwardRef` → `ref` prop; thin user-facing wrapper over CartesianChart
3
+ // (mirrors LineChart — differs only in chartName / allowed tooltip event types).
4
+ import type { JSX } from "@solidjs/web";
5
+ import { arrayTooltipSearcher } from "../state/optionsSlice";
6
+ import { CartesianChart } from "./CartesianChart";
7
+ import { CartesianChartProps, TooltipEventType } from "../util/types";
8
+
9
+ const allowedTooltipTypes: ReadonlyArray<TooltipEventType> = ["axis"];
10
+
11
+ export interface AreaChartProps<
12
+ DataPointType = unknown,
13
+ > extends CartesianChartProps<DataPointType> {
14
+ ref?: SVGSVGElement | ((el: SVGSVGElement) => void);
15
+ }
16
+
17
+ export function AreaChart<DataPointType = unknown>(
18
+ props: AreaChartProps<DataPointType>,
19
+ ): JSX.Element {
20
+ return (
21
+ <CartesianChart
22
+ chartName="AreaChart"
23
+ defaultTooltipEventType="axis"
24
+ validateTooltipEventTypes={allowedTooltipTypes}
25
+ tooltipPayloadSearcher={arrayTooltipSearcher}
26
+ categoricalChartProps={props}
27
+ ref={props.ref}
28
+ />
29
+ );
30
+ }
@@ -0,0 +1,27 @@
1
+ // Ported from recharts 3.8.1 src/chart/BarChart.tsx (commit 7a23854).
2
+ // `forwardRef` → `ref` prop; thin user-facing wrapper over CartesianChart.
3
+ import type { JSX } from "@solidjs/web";
4
+ import { arrayTooltipSearcher } from "../state/optionsSlice";
5
+ import { CartesianChart } from "./CartesianChart";
6
+ import { CartesianChartProps, TooltipEventType } from "../util/types";
7
+
8
+ const allowedTooltipTypes: ReadonlyArray<TooltipEventType> = ["axis", "item"];
9
+
10
+ export interface BarChartProps<DataPointType = unknown> extends CartesianChartProps<DataPointType> {
11
+ ref?: SVGSVGElement | ((el: SVGSVGElement) => void);
12
+ }
13
+
14
+ export function BarChart<DataPointType = unknown>(
15
+ props: BarChartProps<DataPointType>,
16
+ ): JSX.Element {
17
+ return (
18
+ <CartesianChart
19
+ chartName="BarChart"
20
+ defaultTooltipEventType="axis"
21
+ validateTooltipEventTypes={allowedTooltipTypes}
22
+ tooltipPayloadSearcher={arrayTooltipSearcher}
23
+ categoricalChartProps={props}
24
+ ref={props.ref}
25
+ />
26
+ );
27
+ }
@@ -0,0 +1,91 @@
1
+ // Ported from recharts 3.8.1 src/chart/CartesianChart.tsx (commit 7a23854).
2
+ //
3
+ // Solid deviations: `forwardRef` → `ref` prop; `resolveDefaultProps` → per-field
4
+ // `?? default` accessors (see the defaults-use-solid-merge memory — using
5
+ // explicit nullish-coalescing avoids `merge`'s undefined-override gotcha AND the
6
+ // required-ness typing gap). Provider + Report components mirror recharts.
7
+ import { omit } from "solid-js";
8
+ import type { JSX } from "@solidjs/web";
9
+ import { ChartOptions } from "../state/optionsSlice";
10
+ import { RechartsStoreProvider } from "../state/RechartsStoreProvider";
11
+ import { ChartDataContextProvider } from "../context/chartDataContext";
12
+ import { ReportMainChartProps } from "../state/ReportMainChartProps";
13
+ import { ReportChartProps } from "../state/ReportChartProps";
14
+ import { ReportEventSettings } from "../state/ReportEventSettings";
15
+ import { CartesianChartProps, LayoutType, Margin, TooltipEventType } from "../util/types";
16
+ import { TooltipPayloadSearcher } from "../state/tooltipSlice";
17
+ import { UpdatableChartOptions } from "../state/rootPropsSlice";
18
+ import { CategoricalChart } from "./CategoricalChart";
19
+ import { useIsPanorama } from "../context/PanoramaContext";
20
+
21
+ const defaultMargin: Margin = { top: 5, right: 5, bottom: 5, left: 5 };
22
+
23
+ /**
24
+ * One-time, immutable options that decide a Cartesian chart's behavior. Users
25
+ * usually go through a convenience component (LineChart, BarChart, …).
26
+ */
27
+ export interface CartesianChartOptions {
28
+ chartName: string;
29
+ defaultTooltipEventType: TooltipEventType;
30
+ validateTooltipEventTypes: ReadonlyArray<TooltipEventType>;
31
+ tooltipPayloadSearcher: TooltipPayloadSearcher;
32
+ categoricalChartProps: CartesianChartProps;
33
+ ref?: SVGSVGElement | ((el: SVGSVGElement) => void);
34
+ }
35
+
36
+ export const CartesianChart = (props: CartesianChartOptions): JSX.Element => {
37
+ const cp = (): CartesianChartProps => props.categoricalChartProps;
38
+
39
+ // Brush panorama: a nested `<SomeChart>` inside `<Brush>` is an overview of the
40
+ // OUTER chart's full dataset. Instead of recharts' cloneElement-into-the-main-
41
+ // surface, render this nested chart's graphical items directly into the existing
42
+ // panorama context — they register into the outer store and draw into the brush's
43
+ // panorama surface (isPanorama=true → full data range + brush viewBox). No new
44
+ // store/wrapper/surface; the chart-level props (width/height/data) are the outer's.
45
+ if (useIsPanorama()) {
46
+ return <>{cp().children}</>;
47
+ }
48
+
49
+ const options = (): ChartOptions => ({
50
+ chartName: props.chartName,
51
+ defaultTooltipEventType: props.defaultTooltipEventType,
52
+ validateTooltipEventTypes: props.validateTooltipEventTypes,
53
+ tooltipPayloadSearcher: props.tooltipPayloadSearcher,
54
+ eventEmitter: undefined,
55
+ });
56
+
57
+ const layout = (): LayoutType => cp().layout ?? "horizontal";
58
+ const margin = (): Partial<Margin> => cp().margin ?? defaultMargin;
59
+
60
+ const updatable = (): UpdatableChartOptions => ({
61
+ accessibilityLayer: cp().accessibilityLayer ?? true,
62
+ barCategoryGap: cp().barCategoryGap ?? "10%",
63
+ barGap: cp().barGap ?? 4,
64
+ barSize: cp().barSize,
65
+ class: cp().class,
66
+ maxBarSize: cp().maxBarSize,
67
+ stackOffset: cp().stackOffset ?? "none",
68
+ syncId: cp().syncId,
69
+ syncMethod: cp().syncMethod ?? "index",
70
+ baseValue: cp().baseValue,
71
+ reverseStackOrder: cp().reverseStackOrder ?? false,
72
+ });
73
+
74
+ return (
75
+ <RechartsStoreProvider preloadedState={{ options: options() }}>
76
+ <ChartDataContextProvider chartData={cp().data} />
77
+ <ReportMainChartProps layout={layout()} margin={margin()} />
78
+ <ReportEventSettings
79
+ throttleDelay={cp().throttleDelay}
80
+ throttledEvents={cp().throttledEvents}
81
+ />
82
+ <ReportChartProps {...updatable()} />
83
+ {/* Spread WITHOUT children (a `{...cp()}` spread eagerly evaluates the
84
+ children getter here, before the provider sets context — running them
85
+ outside the store); pass children as a lazy JSX child instead. */}
86
+ <CategoricalChart {...omit(cp(), "children")} ref={props.ref}>
87
+ {cp().children}
88
+ </CategoricalChart>
89
+ </RechartsStoreProvider>
90
+ );
91
+ };
@@ -0,0 +1,60 @@
1
+ // Ported from recharts 3.8.1 src/chart/CategoricalChart.tsx (commit 7a23854).
2
+ //
3
+ // Solid deviations: `forwardRef` → `ref` prop; no destructuring (omit + props);
4
+ // `className` → `class`. The `compact` (Brush panorama) branch is deferred. Event
5
+ // handlers are not forwarded yet (RechartsWrapper is render-only).
6
+ import { omit } from "solid-js";
7
+ import type { JSX } from "@solidjs/web";
8
+ import { RootSurface } from "../container/RootSurface";
9
+ import { RechartsWrapper } from "./RechartsWrapper";
10
+ import { ClipPathProvider } from "../container/ClipPathProvider";
11
+ import { CartesianChartProps } from "../util/types";
12
+ import { svgPropertiesNoEventsKeepCase } from "../util/svgPropertiesNoEvents";
13
+
14
+ export interface CategoricalChartProps extends CartesianChartProps {
15
+ ref?: SVGSVGElement | ((el: SVGSVGElement) => void);
16
+ }
17
+
18
+ export const CategoricalChart = (props: CategoricalChartProps): JSX.Element => {
19
+ const attrs = (): Record<string, unknown> =>
20
+ svgPropertiesNoEventsKeepCase({
21
+ ...omit(
22
+ props,
23
+ "width",
24
+ "height",
25
+ "responsive",
26
+ "children",
27
+ "class",
28
+ "style",
29
+ "compact",
30
+ "title",
31
+ "desc",
32
+ "ref",
33
+ ),
34
+ });
35
+
36
+ return (
37
+ <RechartsWrapper
38
+ class={props.class}
39
+ style={props.style}
40
+ width={props.width}
41
+ height={props.height}
42
+ responsive={props.responsive ?? false}
43
+ onClick={props.onClick}
44
+ onMouseLeave={props.onMouseLeave}
45
+ onMouseEnter={props.onMouseEnter}
46
+ onMouseMove={props.onMouseMove}
47
+ onMouseDown={props.onMouseDown}
48
+ onMouseUp={props.onMouseUp}
49
+ onContextMenu={props.onContextMenu}
50
+ onDoubleClick={props.onDoubleClick}
51
+ onTouchStart={props.onTouchStart}
52
+ onTouchMove={props.onTouchMove}
53
+ onTouchEnd={props.onTouchEnd}
54
+ >
55
+ <RootSurface otherAttributes={attrs()} title={props.title} desc={props.desc} ref={props.ref}>
56
+ <ClipPathProvider>{props.children}</ClipPathProvider>
57
+ </RootSurface>
58
+ </RechartsWrapper>
59
+ );
60
+ };
@@ -0,0 +1,29 @@
1
+ // Ported from recharts 3.8.1 src/chart/ComposedChart.tsx (commit 7a23854).
2
+ // `forwardRef` → `ref` prop; thin user-facing wrapper over CartesianChart.
3
+ import type { JSX } from "@solidjs/web";
4
+ import { arrayTooltipSearcher } from "../state/optionsSlice";
5
+ import { CartesianChart } from "./CartesianChart";
6
+ import { CartesianChartProps, TooltipEventType } from "../util/types";
7
+
8
+ const allowedTooltipTypes: ReadonlyArray<TooltipEventType> = ["axis"];
9
+
10
+ export interface ComposedChartProps<
11
+ DataPointType = unknown,
12
+ > extends CartesianChartProps<DataPointType> {
13
+ ref?: SVGSVGElement | ((el: SVGSVGElement) => void);
14
+ }
15
+
16
+ export function ComposedChart<DataPointType = unknown>(
17
+ props: ComposedChartProps<DataPointType>,
18
+ ): JSX.Element {
19
+ return (
20
+ <CartesianChart
21
+ chartName="ComposedChart"
22
+ defaultTooltipEventType="axis"
23
+ validateTooltipEventTypes={allowedTooltipTypes}
24
+ tooltipPayloadSearcher={arrayTooltipSearcher}
25
+ categoricalChartProps={props}
26
+ ref={props.ref}
27
+ />
28
+ );
29
+ }
@@ -0,0 +1,29 @@
1
+ // Ported from recharts 3.8.1 src/chart/FunnelChart.tsx (commit 7a23854).
2
+ // `forwardRef` → `ref` prop; thin user-facing wrapper over CartesianChart.
3
+ import type { JSX } from "@solidjs/web";
4
+ import { arrayTooltipSearcher } from "../state/optionsSlice";
5
+ import { CartesianChart } from "./CartesianChart";
6
+ import { CartesianChartProps, TooltipEventType } from "../util/types";
7
+
8
+ const allowedTooltipTypes: ReadonlyArray<TooltipEventType> = ["item"];
9
+
10
+ export interface FunnelChartProps<
11
+ DataPointType = unknown,
12
+ > extends CartesianChartProps<DataPointType> {
13
+ ref?: SVGSVGElement | ((el: SVGSVGElement) => void);
14
+ }
15
+
16
+ export function FunnelChart<DataPointType = unknown>(
17
+ props: FunnelChartProps<DataPointType>,
18
+ ): JSX.Element {
19
+ return (
20
+ <CartesianChart
21
+ chartName="FunnelChart"
22
+ defaultTooltipEventType="item"
23
+ validateTooltipEventTypes={allowedTooltipTypes}
24
+ tooltipPayloadSearcher={arrayTooltipSearcher}
25
+ categoricalChartProps={props}
26
+ ref={props.ref}
27
+ />
28
+ );
29
+ }
@@ -0,0 +1,29 @@
1
+ // Ported from recharts 3.8.1 src/chart/LineChart.tsx (commit 7a23854).
2
+ // `forwardRef` → `ref` prop; the user-facing convenience wrapper over CartesianChart.
3
+ import type { JSX } from "@solidjs/web";
4
+ import { arrayTooltipSearcher } from "../state/optionsSlice";
5
+ import { CartesianChart } from "./CartesianChart";
6
+ import { CartesianChartProps, TooltipEventType } from "../util/types";
7
+
8
+ const allowedTooltipTypes: ReadonlyArray<TooltipEventType> = ["axis"];
9
+
10
+ export interface LineChartProps<
11
+ DataPointType = unknown,
12
+ > extends CartesianChartProps<DataPointType> {
13
+ ref?: SVGSVGElement | ((el: SVGSVGElement) => void);
14
+ }
15
+
16
+ export function LineChart<DataPointType = unknown>(
17
+ props: LineChartProps<DataPointType>,
18
+ ): JSX.Element {
19
+ return (
20
+ <CartesianChart
21
+ chartName="LineChart"
22
+ defaultTooltipEventType="axis"
23
+ validateTooltipEventTypes={allowedTooltipTypes}
24
+ tooltipPayloadSearcher={arrayTooltipSearcher}
25
+ categoricalChartProps={props}
26
+ ref={props.ref}
27
+ />
28
+ );
29
+ }
@@ -0,0 +1,41 @@
1
+ // Ported from recharts 3.8.1 src/chart/PieChart.tsx (commit 7a23854).
2
+ // `forwardRef` → `ref` prop; the user-facing convenience wrapper over PolarChart.
3
+ // `resolveDefaultProps` → Solid `merge` (lazy proxy — does NOT eagerly evaluate
4
+ // the `children` getter, unlike an object spread). PieChart-specific defaults
5
+ // (layout "centric", startAngle 0, endAngle 360) win over PolarChart's polar
6
+ // defaults. `ref` is omitted from categoricalChartProps and passed separately,
7
+ // mirroring the reference's forwardRef split.
8
+ import { merge, omit } from "solid-js";
9
+ import type { JSX } from "@solidjs/web";
10
+ import { arrayTooltipSearcher } from "../state/optionsSlice";
11
+ import { PolarChart } from "./PolarChart";
12
+ import { PolarChartProps, TooltipEventType } from "../util/types";
13
+
14
+ const allowedTooltipTypes: ReadonlyArray<TooltipEventType> = ["item"];
15
+
16
+ const defaultPieChartProps = {
17
+ layout: "centric",
18
+ startAngle: 0,
19
+ endAngle: 360,
20
+ } as const satisfies Partial<PolarChartProps>;
21
+
22
+ export interface PieChartProps<DataPointType = unknown> extends PolarChartProps<DataPointType> {
23
+ ref?: SVGSVGElement | ((el: SVGSVGElement) => void);
24
+ }
25
+
26
+ export function PieChart<DataPointType = unknown>(
27
+ props: PieChartProps<DataPointType>,
28
+ ): JSX.Element {
29
+ const categoricalChartProps = merge(defaultPieChartProps, omit(props, "ref"));
30
+
31
+ return (
32
+ <PolarChart
33
+ chartName="PieChart"
34
+ defaultTooltipEventType="item"
35
+ validateTooltipEventTypes={allowedTooltipTypes}
36
+ tooltipPayloadSearcher={arrayTooltipSearcher}
37
+ categoricalChartProps={categoricalChartProps}
38
+ ref={props.ref}
39
+ />
40
+ );
41
+ }
@@ -0,0 +1,97 @@
1
+ // Ported from recharts 3.8.1 src/chart/PolarChart.tsx (commit 7a23854).
2
+ //
3
+ // Solid deviations: `forwardRef` → `ref` prop; `resolveDefaultProps` → per-field
4
+ // `?? default` accessors (see the defaults-use-solid-merge memory). Mirrors the
5
+ // Solid CartesianChart, with `layout` defaulting to "radial", `baseValue` always
6
+ // undefined for polar, and a ReportPolarOptions reporting the polar geometry.
7
+ // The polar geometry props (cx/cy/innerRadius/outerRadius/startAngle/endAngle)
8
+ // pass through to CategoricalChart exactly as in the reference — svgPropertiesNoEvents
9
+ // 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";
12
+ import { ChartOptions } from "../state/optionsSlice";
13
+ import { RechartsStoreProvider } from "../state/RechartsStoreProvider";
14
+ import { ChartDataContextProvider } from "../context/chartDataContext";
15
+ import { ReportMainChartProps } from "../state/ReportMainChartProps";
16
+ import { ReportChartProps } from "../state/ReportChartProps";
17
+ import { ReportEventSettings } from "../state/ReportEventSettings";
18
+ import { ReportPolarOptions } from "../state/ReportPolarOptions";
19
+ import { Margin, PolarChartProps, PolarLayout, TooltipEventType } from "../util/types";
20
+ import { TooltipPayloadSearcher } from "../state/tooltipSlice";
21
+ import { UpdatableChartOptions } from "../state/rootPropsSlice";
22
+ import { PolarChartOptions as PolarOptionsPayload } from "../state/polarOptionsSlice";
23
+ import { CategoricalChart } from "./CategoricalChart";
24
+
25
+ const defaultMargin: Margin = { top: 5, right: 5, bottom: 5, left: 5 };
26
+
27
+ /**
28
+ * One-time, immutable options that decide a Polar chart's behavior. Users
29
+ * usually go through a convenience component (PieChart, RadarChart, …) which
30
+ * supplies the cx/cy/innerRadius/outerRadius/startAngle/endAngle defaults.
31
+ */
32
+ export interface PolarChartOptions {
33
+ chartName: string;
34
+ defaultTooltipEventType: TooltipEventType;
35
+ validateTooltipEventTypes: ReadonlyArray<TooltipEventType>;
36
+ tooltipPayloadSearcher: TooltipPayloadSearcher;
37
+ categoricalChartProps: PolarChartProps;
38
+ ref?: SVGSVGElement | ((el: SVGSVGElement) => void);
39
+ }
40
+
41
+ export const PolarChart = (props: PolarChartOptions): JSX.Element => {
42
+ const cp = (): PolarChartProps => props.categoricalChartProps;
43
+
44
+ const options = (): ChartOptions => ({
45
+ chartName: props.chartName,
46
+ defaultTooltipEventType: props.defaultTooltipEventType,
47
+ validateTooltipEventTypes: props.validateTooltipEventTypes,
48
+ tooltipPayloadSearcher: props.tooltipPayloadSearcher,
49
+ eventEmitter: undefined,
50
+ });
51
+
52
+ const layout = (): PolarLayout => cp().layout ?? "radial";
53
+ const margin = (): Partial<Margin> => cp().margin ?? defaultMargin;
54
+
55
+ const updatable = (): UpdatableChartOptions => ({
56
+ accessibilityLayer: cp().accessibilityLayer ?? true,
57
+ barCategoryGap: cp().barCategoryGap ?? "10%",
58
+ barGap: cp().barGap ?? 4,
59
+ barSize: cp().barSize,
60
+ class: cp().class,
61
+ maxBarSize: cp().maxBarSize,
62
+ stackOffset: cp().stackOffset ?? "none",
63
+ syncId: cp().syncId,
64
+ syncMethod: cp().syncMethod ?? "index",
65
+ // Polar charts never expose a baseValue.
66
+ baseValue: undefined,
67
+ reverseStackOrder: cp().reverseStackOrder ?? false,
68
+ });
69
+
70
+ const polar = (): PolarOptionsPayload => ({
71
+ cx: cp().cx ?? "50%",
72
+ cy: cp().cy ?? "50%",
73
+ startAngle: cp().startAngle ?? 0,
74
+ endAngle: cp().endAngle ?? 360,
75
+ innerRadius: cp().innerRadius ?? 0,
76
+ outerRadius: cp().outerRadius ?? "80%",
77
+ });
78
+
79
+ return (
80
+ <RechartsStoreProvider preloadedState={{ options: options() }}>
81
+ <ChartDataContextProvider chartData={cp().data} />
82
+ <ReportMainChartProps layout={layout()} margin={margin()} />
83
+ <ReportEventSettings
84
+ throttleDelay={cp().throttleDelay}
85
+ throttledEvents={cp().throttledEvents}
86
+ />
87
+ <ReportChartProps {...updatable()} />
88
+ <ReportPolarOptions {...polar()} />
89
+ {/* Spread WITHOUT children (a `{...cp()}` spread eagerly evaluates the
90
+ children getter here, before the provider sets context — running them
91
+ outside the store); pass children as a lazy JSX child instead. */}
92
+ <CategoricalChart {...omit(cp(), "children")} ref={props.ref}>
93
+ {cp().children}
94
+ </CategoricalChart>
95
+ </RechartsStoreProvider>
96
+ );
97
+ };
@@ -0,0 +1,37 @@
1
+ // Ported from recharts 3.8.1 src/chart/RadarChart.tsx (commit 7a23854).
2
+ // `forwardRef`→`ref` prop; `resolveDefaultProps`→`merge` (lazy proxy, see PieChart).
3
+ // RadarChart-specific defaults: layout "centric", startAngle 90, endAngle -270.
4
+ import { merge, omit } from "solid-js";
5
+ import type { JSX } from "@solidjs/web";
6
+ import { arrayTooltipSearcher } from "../state/optionsSlice";
7
+ import { PolarChart } from "./PolarChart";
8
+ import { PolarChartProps, TooltipEventType } from "../util/types";
9
+
10
+ const allowedTooltipTypes: ReadonlyArray<TooltipEventType> = ["axis"];
11
+
12
+ const defaultRadarChartProps = {
13
+ layout: "centric",
14
+ startAngle: 90,
15
+ endAngle: -270,
16
+ } as const satisfies Partial<PolarChartProps>;
17
+
18
+ export interface RadarChartProps<DataPointType = unknown> extends PolarChartProps<DataPointType> {
19
+ ref?: SVGSVGElement | ((el: SVGSVGElement) => void);
20
+ }
21
+
22
+ export function RadarChart<DataPointType = unknown>(
23
+ props: RadarChartProps<DataPointType>,
24
+ ): JSX.Element {
25
+ const categoricalChartProps = merge(defaultRadarChartProps, omit(props, "ref"));
26
+
27
+ return (
28
+ <PolarChart
29
+ chartName="RadarChart"
30
+ defaultTooltipEventType="axis"
31
+ validateTooltipEventTypes={allowedTooltipTypes}
32
+ tooltipPayloadSearcher={arrayTooltipSearcher}
33
+ categoricalChartProps={categoricalChartProps}
34
+ ref={props.ref}
35
+ />
36
+ );
37
+ }
@@ -0,0 +1,39 @@
1
+ // Ported from recharts 3.8.1 src/chart/RadialBarChart.tsx (commit 7a23854).
2
+ // `forwardRef`→`ref` prop; `resolveDefaultProps`→`merge`. RadialBarChart defaults:
3
+ // 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";
6
+ import { arrayTooltipSearcher } from "../state/optionsSlice";
7
+ import { PolarChart } from "./PolarChart";
8
+ import { PolarChartProps, TooltipEventType } from "../util/types";
9
+
10
+ const allowedTooltipTypes: ReadonlyArray<TooltipEventType> = ["axis", "item"];
11
+
12
+ const defaultRadialBarChartProps = {
13
+ layout: "radial",
14
+ startAngle: 0,
15
+ endAngle: 360,
16
+ } as const satisfies Partial<PolarChartProps>;
17
+
18
+ export interface RadialBarChartProps<
19
+ DataPointType = unknown,
20
+ > extends PolarChartProps<DataPointType> {
21
+ ref?: SVGSVGElement | ((el: SVGSVGElement) => void);
22
+ }
23
+
24
+ export function RadialBarChart<DataPointType = unknown>(
25
+ props: RadialBarChartProps<DataPointType>,
26
+ ): JSX.Element {
27
+ const categoricalChartProps = merge(defaultRadialBarChartProps, omit(props, "ref"));
28
+
29
+ return (
30
+ <PolarChart
31
+ chartName="RadialBarChart"
32
+ defaultTooltipEventType="axis"
33
+ validateTooltipEventTypes={allowedTooltipTypes}
34
+ tooltipPayloadSearcher={arrayTooltipSearcher}
35
+ categoricalChartProps={categoricalChartProps}
36
+ ref={props.ref}
37
+ />
38
+ );
39
+ }