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,144 @@
1
+ /**
2
+ * @fileOverview Symbols
3
+ *
4
+ * Ported from recharts 3.8.1 src/shape/Symbols.tsx (commit 7a23854).
5
+ * Pure d3-shape symbol math copied verbatim. Solid deviations: `className` →
6
+ * `class` (Omit the wide SVG `class`); destructuring defaults → `?? default`
7
+ * accessors; `clsx` → `class={[...]}`; `return null` → `<Show>`; the
8
+ * `registerSymbol` static is attached via `Object.assign` (no `as`).
9
+ */
10
+ import { type CamelSvgProps } from "../util/svgPropertiesNoEvents";
11
+ import { Show, omit } from "solid-js";
12
+ import type { JSX } from "@solidjs/web";
13
+ import {
14
+ symbol as shapeSymbol,
15
+ symbolCircle,
16
+ symbolCross,
17
+ symbolDiamond,
18
+ symbolSquare,
19
+ symbolStar,
20
+ symbolTriangle,
21
+ symbolWye,
22
+ type SymbolType as D3SymbolType,
23
+ } from "victory-vendor/d3-shape";
24
+ import { SymbolType } from "../util/types";
25
+ import { isNumber, upperFirst } from "../util/DataUtils";
26
+ import { svgPropertiesAndEvents } from "../util/svgPropertiesAndEvents";
27
+
28
+ type SizeType = "area" | "diameter";
29
+
30
+ interface SymbolFactory {
31
+ [type: string]: D3SymbolType;
32
+ }
33
+
34
+ const symbolFactories: SymbolFactory = {
35
+ symbolCircle,
36
+ symbolCross,
37
+ symbolDiamond,
38
+ symbolSquare,
39
+ symbolStar,
40
+ symbolTriangle,
41
+ symbolWye,
42
+ };
43
+ const RADIAN = Math.PI / 180;
44
+
45
+ const getSymbolFactory = (type: SymbolType): D3SymbolType => {
46
+ const name = `symbol${upperFirst(type)}`;
47
+
48
+ return symbolFactories[name] || symbolCircle;
49
+ };
50
+
51
+ const calculateAreaSize = (size: number, sizeType: SizeType, type: SymbolType): number => {
52
+ if (sizeType === "area") {
53
+ return size;
54
+ }
55
+
56
+ switch (type) {
57
+ case "cross":
58
+ return (5 * size * size) / 9;
59
+ case "diamond":
60
+ return (0.5 * size * size) / Math.sqrt(3);
61
+ case "square":
62
+ return size * size;
63
+ case "star": {
64
+ const angle = 18 * RADIAN;
65
+
66
+ return 1.25 * size * size * (Math.tan(angle) - Math.tan(angle * 2) * Math.tan(angle) ** 2);
67
+ }
68
+ case "triangle":
69
+ return (Math.sqrt(3) * size * size) / 4;
70
+ case "wye":
71
+ return ((21 - 10 * Math.sqrt(3)) * size * size) / 8;
72
+ default:
73
+ return (Math.PI * size * size) / 4;
74
+ }
75
+ };
76
+
77
+ export interface InnerSymbolsProp {
78
+ class?: string;
79
+ type?: SymbolType;
80
+ cx?: number;
81
+ cy?: number;
82
+ width?: number;
83
+ height?: number;
84
+ size?: number;
85
+ sizeType?: SizeType;
86
+ /** A data row's `name` rides through onto the symbol (recharts spreads `...entry`). */
87
+ name?: string | number;
88
+ }
89
+
90
+ export type SymbolsProps = Omit<
91
+ CamelSvgProps<JSX.PathSVGAttributes<SVGPathElement>>,
92
+ "type" | "class"
93
+ > &
94
+ InnerSymbolsProp;
95
+
96
+ const registerSymbol = (key: string, factory: D3SymbolType): void => {
97
+ symbolFactories[`symbol${upperFirst(key)}`] = factory;
98
+ };
99
+
100
+ /**
101
+ * Renders a symbol from a set of predefined shapes.
102
+ */
103
+ const SymbolsComponent = (props: SymbolsProps): JSX.Element => {
104
+ const type = (): SymbolType => props.type ?? "circle";
105
+ const size = (): number => props.size ?? 64;
106
+ const sizeType = (): SizeType => props.sizeType ?? "area";
107
+
108
+ // Runtime guard: despite the type, `type` can be anything at runtime
109
+ // (https://github.com/recharts/recharts/issues/6197); fall back to 'circle'.
110
+ const realType = (): SymbolType => (typeof type() === "string" ? type() : "circle");
111
+
112
+ const getPath = (): string | undefined => {
113
+ const symbolFactory = getSymbolFactory(realType());
114
+ const symbol = shapeSymbol()
115
+ .type(symbolFactory)
116
+ .size(calculateAreaSize(size(), sizeType(), realType()));
117
+
118
+ const s = symbol();
119
+ if (s === null) {
120
+ return undefined;
121
+ }
122
+ return s;
123
+ };
124
+
125
+ const passthrough = (): Record<string, unknown> => ({
126
+ ...omit(props, "class", "type", "size", "sizeType"),
127
+ type: type(),
128
+ size: size(),
129
+ sizeType: sizeType(),
130
+ });
131
+
132
+ return (
133
+ <Show when={isNumber(props.cx) && isNumber(props.cy) && isNumber(size())}>
134
+ <path
135
+ {...svgPropertiesAndEvents(passthrough())}
136
+ class={["recharts-symbols", props.class]}
137
+ transform={`translate(${props.cx}, ${props.cy})`}
138
+ d={getPath()}
139
+ />
140
+ </Show>
141
+ );
142
+ };
143
+
144
+ export const Symbols = Object.assign(SymbolsComponent, { registerSymbol });
@@ -0,0 +1,228 @@
1
+ /**
2
+ * @fileOverview Trapezoid
3
+ *
4
+ * Ported from recharts 3.8.1 src/shape/Trapezoid.tsx (commit 7a23854).
5
+ * Pure `getTrapezoidPath` copied verbatim. Solid deviations: `className` →
6
+ * `class` (Omit the wide SVG `class`); destructuring defaults → `?? default`;
7
+ * `clsx` → `class={[...]}`; `return null` → `<Show>`.
8
+ *
9
+ * The update-animation path (`isUpdateAnimationActive`) is WIRED, mirroring the
10
+ * Rectangle port: JavascriptAnimate keyed on a geometry animationId, per-frame
11
+ * geometry interpolation from prev-value closures, and the strokeDasharray
12
+ * fade-in driven by a CSS transition. It defaults to false, so the common path
13
+ * stays the static shape.
14
+ */
15
+ import { type CamelSvgProps } from "../util/svgPropertiesNoEvents";
16
+ import { createEffect, createSignal, Show, omit, untrack } from "solid-js";
17
+ import type { JSX } from "@solidjs/web";
18
+ import type { AnimationDuration } from "../util/types";
19
+ import type { EasingInput } from "../animation/easing";
20
+ import { svgPropertiesAndEvents } from "../util/svgPropertiesAndEvents";
21
+ import { roundTemplateLiteral } from "../util/round";
22
+ import { interpolate } from "../util/DataUtils";
23
+ import { useAnimationId } from "../util/useAnimationId";
24
+ import { getTransitionVal } from "../animation/util";
25
+ import { JavascriptAnimate } from "../animation/JavascriptAnimate";
26
+
27
+ const getTrapezoidPath = (
28
+ x: number,
29
+ y: number,
30
+ upperWidth: number,
31
+ lowerWidth: number,
32
+ height: number,
33
+ ): string => {
34
+ const widthGap = upperWidth - lowerWidth;
35
+ let path;
36
+ path = roundTemplateLiteral`M ${x},${y}`;
37
+ path += roundTemplateLiteral`L ${x + upperWidth},${y}`;
38
+ path += roundTemplateLiteral`L ${x + upperWidth - widthGap / 2},${y + height}`;
39
+ path += roundTemplateLiteral`L ${x + upperWidth - widthGap / 2 - lowerWidth},${y + height}`;
40
+ path += roundTemplateLiteral`L ${x},${y} Z`;
41
+ return path;
42
+ };
43
+
44
+ interface TrapezoidOwnProps {
45
+ class?: string;
46
+ /** Rides through to the <path> as a bare `name` attribute (React's SVGProps
47
+ * accepts it; Solid's PathSVGAttributes doesn't, so it's declared here). */
48
+ name?: string | number;
49
+ /** The x-coordinate of top left point of the trapezoid. @default 0 */
50
+ x?: number;
51
+ /** The y-coordinate of top left point of the trapezoid. @default 0 */
52
+ y?: number;
53
+ /** Width of the upper horizontal side of the trapezoid in pixels. @default 0 */
54
+ upperWidth?: number;
55
+ /** Width of the lower horizontal side of the trapezoid in pixels. @default 0 */
56
+ lowerWidth?: number;
57
+ /** Height of the trapezoid in pixels. @default 0 */
58
+ height?: number;
59
+ /** If true, the trapezoid updates and renders with a gradual fade-in animation. @default false */
60
+ isUpdateAnimationActive?: boolean;
61
+ animationBegin?: number;
62
+ animationDuration?: AnimationDuration;
63
+ animationEasing?: EasingInput;
64
+ }
65
+
66
+ export type TrapezoidProps = Omit<CamelSvgProps<JSX.PathSVGAttributes<SVGPathElement>>, "class"> &
67
+ TrapezoidOwnProps;
68
+
69
+ export const Trapezoid = (props: TrapezoidProps): JSX.Element => {
70
+ const x = (): number => props.x ?? 0;
71
+ const y = (): number => props.y ?? 0;
72
+ const upperWidth = (): number => props.upperWidth ?? 0;
73
+ const lowerWidth = (): number => props.lowerWidth ?? 0;
74
+ const height = (): number => props.height ?? 0;
75
+
76
+ const valid = (): boolean =>
77
+ !(
78
+ x() !== +x() ||
79
+ y() !== +y() ||
80
+ upperWidth() !== +upperWidth() ||
81
+ lowerWidth() !== +lowerWidth() ||
82
+ height() !== +height() ||
83
+ (upperWidth() === 0 && lowerWidth() === 0) ||
84
+ height() === 0
85
+ );
86
+
87
+ const isUpdateAnimationActive = (): boolean => props.isUpdateAnimationActive ?? false;
88
+ const animationDuration = (): AnimationDuration => props.animationDuration ?? 1500;
89
+ const animationEasing = (): EasingInput => props.animationEasing ?? "ease";
90
+ const animationBegin = (): number => props.animationBegin ?? 0;
91
+
92
+ const layerClass = (): Array<string | undefined> => ["recharts-trapezoid", props.class];
93
+
94
+ // Animation (update path) state: a ref to read the path length + prev-value
95
+ // closures the animation interpolates from. The ref only captures the element
96
+ // (refs fire before the dynamic `d` lands, where getTotalLength() is 0/throws);
97
+ // the measuring effect runs after attributes land and re-measures on geometry
98
+ // change.
99
+ let pathEl: SVGPathElement | undefined;
100
+ const [totalLength, setTotalLength] = createSignal(-1);
101
+ const measurePath = (el: SVGPathElement): void => {
102
+ pathEl = el;
103
+ };
104
+ createEffect(
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
+ },
126
+ );
127
+
128
+ const animationId = useAnimationId(
129
+ () => ({
130
+ x: x(),
131
+ y: y(),
132
+ upperWidth: upperWidth(),
133
+ lowerWidth: lowerWidth(),
134
+ height: height(),
135
+ }),
136
+ "trapezoid-",
137
+ );
138
+
139
+ // Seed prev-values without a tracked top-level read (untrack avoids STRICT_READ).
140
+ let prevUpperWidth = untrack(upperWidth);
141
+ let prevLowerWidth = untrack(lowerWidth);
142
+ let prevHeight = untrack(height);
143
+ let prevX = untrack(x);
144
+ let prevY = untrack(y);
145
+
146
+ const staticPath = (): JSX.Element => (
147
+ <path
148
+ {...svgPropertiesAndEvents({ ...omit(props, "class") })}
149
+ class={layerClass()}
150
+ d={getTrapezoidPath(x(), y(), upperWidth(), lowerWidth(), height())}
151
+ />
152
+ );
153
+
154
+ return (
155
+ <Show when={valid()}>
156
+ <g>
157
+ <Show when={isUpdateAnimationActive()} fallback={staticPath()}>
158
+ {/* Keyed on animationId: a geometry change → new id → this recreates
159
+ the JavascriptAnimate, restarting the animation from the (updated)
160
+ prev values — the Solid equivalent of recharts' key={animationId}. */}
161
+ <Show when={animationId()} keyed>
162
+ {(animId) => (
163
+ <JavascriptAnimate
164
+ animationId={animId}
165
+ canBegin={totalLength() > 0}
166
+ duration={animationDuration()}
167
+ easing={animationEasing()}
168
+ isActive={isUpdateAnimationActive()}
169
+ begin={animationBegin()}
170
+ >
171
+ {(t) => {
172
+ // The render-prop child is NOT an auto-tracking scope: read a
173
+ // per-frame SNAPSHOT via untrack (prop changes restart the
174
+ // animation via the keyed id, so each invocation sees fresh
175
+ // values; untrack also clears STRICT_READ).
176
+ const snap = untrack(() => ({
177
+ uw: upperWidth(),
178
+ lw: lowerWidth(),
179
+ h: height(),
180
+ cx: x(),
181
+ cy: y(),
182
+ len: totalLength(),
183
+ dur: animationDuration(),
184
+ easing: animationEasing(),
185
+ }));
186
+ const currUpperWidth = interpolate(prevUpperWidth, snap.uw, t);
187
+ const currLowerWidth = interpolate(prevLowerWidth, snap.lw, t);
188
+ const currHeight = interpolate(prevHeight, snap.h, t);
189
+ const currX = interpolate(prevX, snap.cx, t);
190
+ const currY = interpolate(prevY, snap.cy, t);
191
+ if (pathEl) {
192
+ prevUpperWidth = currUpperWidth;
193
+ prevLowerWidth = currLowerWidth;
194
+ prevHeight = currHeight;
195
+ prevX = currX;
196
+ prevY = currY;
197
+ }
198
+ const len = snap.len;
199
+ const from = `0px ${len === -1 ? 1 : len}px`;
200
+ const to = `${len}px ${len}px`;
201
+ const transition = getTransitionVal(
202
+ ["strokeDasharray"],
203
+ snap.dur,
204
+ typeof snap.easing === "string" ? snap.easing : "ease",
205
+ );
206
+ const dashStyle: JSX.CSSProperties =
207
+ t > 0 ? { transition, "stroke-dasharray": to } : { "stroke-dasharray": from };
208
+ // `props.style` may be a string in Solid JSX; only merge object styles.
209
+ const userStyle: JSX.CSSProperties =
210
+ typeof props.style === "object" && props.style != null ? props.style : {};
211
+ return (
212
+ <path
213
+ {...svgPropertiesAndEvents({ ...omit(props, "class", "style") })}
214
+ ref={measurePath}
215
+ class={layerClass()}
216
+ d={getTrapezoidPath(currX, currY, currUpperWidth, currLowerWidth, currHeight)}
217
+ style={{ ...dashStyle, ...userStyle }}
218
+ />
219
+ );
220
+ }}
221
+ </JavascriptAnimate>
222
+ )}
223
+ </Show>
224
+ </Show>
225
+ </g>
226
+ </Show>
227
+ );
228
+ };
@@ -0,0 +1,8 @@
1
+ // SKIPPED — intentionally NOT ported to the SolidJS port.
2
+ //
3
+ // Reason: Redux react-redux context — Solid-native store, no Redux
4
+ //
5
+ // TODO: do not port this file as-is. The Solid-native port replaces it (see the
6
+ // reason above). If a consumer needs this path, wire it to the Solid equivalent
7
+ // instead. Tracked in scripts/porting-queue.mjs SKIP list and project memory.
8
+ export {};
@@ -0,0 +1,15 @@
1
+ // Solid-native replacement for recharts 3.8.1 src/state/RechartsReduxContext.tsx.
2
+ //
3
+ // recharts used a dedicated react-redux context (so embedding Recharts inside a
4
+ // host app's own Redux store wouldn't clash). The Solid-native equivalent is a
5
+ // context carrying the composed `{ state, actions }` store.
6
+ //
7
+ // The default is `null` (a real value), NOT `undefined`: Solid treats an
8
+ // `undefined` default as "no default" and makes `useContext` THROW
9
+ // `ContextNotFoundError` outside a Provider. recharts' `useAppSelector`
10
+ // deliberately returns `undefined` outside a chart (so a component works
11
+ // standalone), so we default to `null` and the hooks map `null` → `undefined`.
12
+ import { createContext } from "solid-js";
13
+ import type { RechartsStore } from "./store";
14
+
15
+ export const RechartsStoreContext = createContext<RechartsStore | null>(null);
@@ -0,0 +1,27 @@
1
+ // Solid-native replacement for recharts 3.8.1 src/state/RechartsStoreProvider.tsx.
2
+ //
3
+ // recharts created the store once in a `useRef` and provided it via react-redux's
4
+ // <Provider>. In Solid the component body runs once, so creating the store in the
5
+ // body is the natural "create once per chart instance" — each chart gets its own
6
+ // independent store (recharts supports many charts per page). The context value
7
+ // IS the provider in Solid 2.0: `<RechartsStoreContext value={store}>`.
8
+ //
9
+ // NOTE: the panorama branch (Brush's preview chart reuses the parent store by
10
+ // rendering no Provider) is deferred until PanoramaContext is ported.
11
+ import { untrack } from "solid-js";
12
+ import type { JSX } from "@solidjs/web";
13
+ import { RechartsStoreContext } from "./RechartsStoreContext";
14
+ import { createRechartsStore, type RechartsRootState } from "./store";
15
+
16
+ export interface RechartsStoreProviderProps {
17
+ children: JSX.Element;
18
+ preloadedState?: Partial<RechartsRootState>;
19
+ }
20
+
21
+ export function RechartsStoreProvider(props: RechartsStoreProviderProps): JSX.Element {
22
+ // Create the store once. `preloadedState` is one-time config, so read it
23
+ // untracked (it should not make store creation reactive).
24
+ const store = createRechartsStore(untrack(() => props.preloadedState));
25
+
26
+ return <RechartsStoreContext value={store}>{props.children}</RechartsStoreContext>;
27
+ }
@@ -0,0 +1,19 @@
1
+ // Ported from recharts 3.8.1 src/state/ReportChartProps.tsx (commit 7a23854).
2
+ // useAppDispatch → useAppStore().actions; useEffect → createEffect.
3
+ import { createEffect } from "solid-js";
4
+ import type { JSX } from "@solidjs/web";
5
+ import { UpdatableChartOptions } from "./rootPropsSlice";
6
+ import { useAppStore } from "./hooks";
7
+
8
+ export const ReportChartProps = (props: UpdatableChartOptions): JSX.Element => {
9
+ const store = useAppStore();
10
+
11
+ createEffect(
12
+ () => ({ ...props }),
13
+ (options) => {
14
+ store?.actions.rootProps.updateOptions(options);
15
+ },
16
+ );
17
+
18
+ return null;
19
+ };
@@ -0,0 +1,19 @@
1
+ // Ported from recharts 3.8.1 src/state/ReportEventSettings.tsx (commit 7a23854).
2
+ // memo/propsAreEqual dropped; useAppDispatch → useAppStore().actions; useEffect → createEffect.
3
+ import { createEffect } from "solid-js";
4
+ import type { JSX } from "@solidjs/web";
5
+ import { useAppStore } from "./hooks";
6
+ import { EventThrottlingProps } from "../util/types";
7
+
8
+ export const ReportEventSettings = (props: EventThrottlingProps): JSX.Element => {
9
+ const store = useAppStore();
10
+
11
+ createEffect(
12
+ () => ({ throttleDelay: props.throttleDelay, throttledEvents: props.throttledEvents }),
13
+ (settings) => {
14
+ store?.actions.eventSettings.setEventSettings(settings);
15
+ },
16
+ );
17
+
18
+ return null;
19
+ };
@@ -0,0 +1,35 @@
1
+ // Ported from recharts 3.8.1 src/state/ReportMainChartProps.tsx (commit 7a23854).
2
+ //
3
+ // Solid deviations: `memo(..., propsAreEqual)` is dropped (Solid doesn't
4
+ // re-render; the comparator has no equivalent); `useAppDispatch` + action
5
+ // creators → `useAppStore().actions`; `useEffect` → two-arg `createEffect`.
6
+ import { createEffect } from "solid-js";
7
+ import type { JSX } from "@solidjs/web";
8
+ import { LayoutType, Margin } from "../util/types";
9
+ import { useIsPanorama } from "../context/PanoramaContext";
10
+ import { useAppStore } from "./hooks";
11
+
12
+ /** Props accepted only on the main chart (not the Brush panorama). */
13
+ interface MainChartProps {
14
+ layout: LayoutType;
15
+ margin: Partial<Margin>;
16
+ }
17
+
18
+ export const ReportMainChartProps = (props: MainChartProps): JSX.Element => {
19
+ const store = useAppStore();
20
+ // Skip in panorama: the root chart owns these, and Brush reads them from the
21
+ // store, so they must stay stable to avoid a re-render loop.
22
+ const isPanorama = useIsPanorama();
23
+
24
+ createEffect(
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
+ },
32
+ );
33
+
34
+ return null;
35
+ };
@@ -0,0 +1,28 @@
1
+ // Ported from recharts 3.8.1 src/state/ReportPolarOptions.tsx (commit 7a23854).
2
+ //
3
+ // Solid deviations: `useAppDispatch` + action creator → `useAppStore().actions`;
4
+ // `useEffect` → two-arg `createEffect` (compute the payload, dispatch in apply).
5
+ import { createEffect } from "solid-js";
6
+ import type { JSX } from "@solidjs/web";
7
+ import { PolarChartOptions } from "./polarOptionsSlice";
8
+ import { useAppStore } from "./hooks";
9
+
10
+ export const ReportPolarOptions = (props: PolarChartOptions): JSX.Element => {
11
+ const store = useAppStore();
12
+
13
+ createEffect(
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
+ },
25
+ );
26
+
27
+ return null;
28
+ };
@@ -0,0 +1,50 @@
1
+ // Ported from recharts 3.8.1 src/state/SetLegendPayload.tsx (commit 7a23854).
2
+ //
3
+ // Registers a graphical item's legend payload. Deviations: the two useLayoutEffects
4
+ // → createEffect (add/replace) + onCleanup (remove), the effect-dispatch idiom; an
5
+ // explicit `id` prop (the graphical item's id) keys the entry so replace/remove are
6
+ // proxy-safe (recharts matches the array by reference, which Solid stores break).
7
+ // `SetPolarLegendPayload` lands with the polar vertical. Returns nothing.
8
+ import { createEffect } from "solid-js";
9
+ import type { JSX } from "@solidjs/web";
10
+ import { useAppStore } from "./hooks";
11
+ import { useIsPanorama } from "../context/PanoramaContext";
12
+ import { LegendPayload } from "../component/DefaultLegendContent";
13
+ import { unregisterOnCleanup } from "./unregisterOnCleanup";
14
+
15
+ export function SetLegendPayload(props: {
16
+ id: string;
17
+ legendPayload: ReadonlyArray<LegendPayload>;
18
+ }): JSX.Element {
19
+ const store = useAppStore();
20
+ const isPanorama = useIsPanorama();
21
+
22
+ let prevId: string | null = null;
23
+
24
+ createEffect(
25
+ () => ({ id: props.id, items: props.legendPayload }),
26
+ (entry) => {
27
+ if (store == null || isPanorama) {
28
+ return;
29
+ }
30
+ if (prevId === null) {
31
+ store.actions.legend.addLegendPayload(entry);
32
+ } else {
33
+ store.actions.legend.replaceLegendPayload({
34
+ prev: { id: prevId, items: [] },
35
+ next: entry,
36
+ });
37
+ }
38
+ prevId = entry.id;
39
+ },
40
+ );
41
+
42
+ unregisterOnCleanup(() => {
43
+ if (prevId != null && store != null) {
44
+ store.actions.legend.removeLegendPayload({ id: prevId, items: [] });
45
+ prevId = null;
46
+ }
47
+ });
48
+
49
+ return null;
50
+ }
@@ -0,0 +1,46 @@
1
+ // Ported from recharts 3.8.1 src/state/SetTooltipEntrySettings.tsx (commit 7a23854).
2
+ //
3
+ // Deviations: the two useLayoutEffects become a single createEffect (add/replace
4
+ // on change) + onCleanup (remove), the same effect-dispatch idiom Line/Bar/Area
5
+ // use for their graphical-item registration. Returns null (renders nothing) — it
6
+ // exists purely to register the item's tooltip payload entry in the store.
7
+ import { createEffect } from "solid-js";
8
+ import type { JSX } from "@solidjs/web";
9
+ import { useAppStore } from "./hooks";
10
+ import { TooltipPayloadConfiguration } from "./tooltipSlice";
11
+ import { useIsPanorama } from "../context/PanoramaContext";
12
+ import { unregisterOnCleanup } from "./unregisterOnCleanup";
13
+
14
+ export function SetTooltipEntrySettings(props: {
15
+ tooltipEntrySettings: TooltipPayloadConfiguration;
16
+ }): JSX.Element {
17
+ const store = useAppStore();
18
+ const isPanorama = useIsPanorama();
19
+
20
+ let prev: TooltipPayloadConfiguration | null = null;
21
+
22
+ createEffect(
23
+ () => props.tooltipEntrySettings,
24
+ (settings) => {
25
+ if (store == null || isPanorama) {
26
+ // Panorama graphical items never contribute to the Tooltip payload.
27
+ return;
28
+ }
29
+ if (prev === null) {
30
+ store.actions.tooltip.addTooltipEntrySettings(settings);
31
+ } else if (prev !== settings) {
32
+ store.actions.tooltip.replaceTooltipEntrySettings({ prev, next: settings });
33
+ }
34
+ prev = settings;
35
+ },
36
+ );
37
+
38
+ unregisterOnCleanup(() => {
39
+ if (prev && store != null) {
40
+ store.actions.tooltip.removeTooltipEntrySettings(prev);
41
+ prev = null;
42
+ }
43
+ });
44
+
45
+ return null;
46
+ }