@solidports/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 (306) hide show
  1. package/LICENSE +22 -0
  2. package/NOTICE +19 -0
  3. package/README.md +102 -0
  4. package/dist/dev.js +28564 -0
  5. package/dist/index.d.ts +7859 -0
  6. package/dist/index.js +28546 -0
  7. package/package.json +98 -0
  8. package/src/animation/AnimatedItems.tsx +183 -0
  9. package/src/animation/AnimationController.ts +33 -0
  10. package/src/animation/AnimationControllerImpl.ts +36 -0
  11. package/src/animation/AnimationHandle.ts +307 -0
  12. package/src/animation/CSSTransitionAnimate.tsx +170 -0
  13. package/src/animation/JavascriptAnimate.tsx +119 -0
  14. package/src/animation/easing.ts +221 -0
  15. package/src/animation/matchBy.ts +164 -0
  16. package/src/animation/timeoutController.ts +70 -0
  17. package/src/animation/useAnimationController.tsx +34 -0
  18. package/src/animation/useAnimationStartSnapshot.ts +118 -0
  19. package/src/animation/util.ts +41 -0
  20. package/src/cartesian/Area.tsx +915 -0
  21. package/src/cartesian/AreaRevealShape.tsx +190 -0
  22. package/src/cartesian/Bar.tsx +1369 -0
  23. package/src/cartesian/BarStack.tsx +152 -0
  24. package/src/cartesian/Brush.tsx +951 -0
  25. package/src/cartesian/CartesianAxis.tsx +722 -0
  26. package/src/cartesian/CartesianGrid.tsx +711 -0
  27. package/src/cartesian/ErrorBar.tsx +361 -0
  28. package/src/cartesian/Funnel.tsx +803 -0
  29. package/src/cartesian/GraphicalItemClipPath.tsx +67 -0
  30. package/src/cartesian/Line.tsx +863 -0
  31. package/src/cartesian/LineDrawShape.tsx +89 -0
  32. package/src/cartesian/ReferenceArea.tsx +331 -0
  33. package/src/cartesian/ReferenceDot.tsx +304 -0
  34. package/src/cartesian/ReferenceLine.tsx +474 -0
  35. package/src/cartesian/Scatter.tsx +888 -0
  36. package/src/cartesian/XAxis.tsx +433 -0
  37. package/src/cartesian/YAxis.tsx +443 -0
  38. package/src/cartesian/ZAxis.tsx +155 -0
  39. package/src/cartesian/cartesianPositionToCSSTranslate.tsx +29 -0
  40. package/src/cartesian/cartesianViewBoxToTrapezoid.tsx +21 -0
  41. package/src/cartesian/getCartesianPosition.tsx +267 -0
  42. package/src/cartesian/getEquidistantTicks.ts +144 -0
  43. package/src/cartesian/getTicks.ts +225 -0
  44. package/src/cartesian/isOutsidePosition.ts +15 -0
  45. package/src/cartesian/useAnimatedLineLength.ts +54 -0
  46. package/src/chart/AreaChart.tsx +29 -0
  47. package/src/chart/BarChart.tsx +29 -0
  48. package/src/chart/CartesianChart.tsx +131 -0
  49. package/src/chart/CategoricalChart.tsx +94 -0
  50. package/src/chart/ComposedChart.tsx +29 -0
  51. package/src/chart/FunnelChart.tsx +29 -0
  52. package/src/chart/LineChart.tsx +29 -0
  53. package/src/chart/PieChart.tsx +50 -0
  54. package/src/chart/PolarChart.tsx +164 -0
  55. package/src/chart/RadarChart.tsx +70 -0
  56. package/src/chart/RadialBarChart.tsx +46 -0
  57. package/src/chart/RechartsWrapper.tsx +551 -0
  58. package/src/chart/Sankey.tsx +1534 -0
  59. package/src/chart/ScatterChart.tsx +29 -0
  60. package/src/chart/SunburstChart.tsx +504 -0
  61. package/src/chart/Treemap.tsx +1223 -0
  62. package/src/chart/createInitialRootProps.ts +24 -0
  63. package/src/chart/types.ts +53 -0
  64. package/src/component/ActivePoints.tsx +144 -0
  65. package/src/component/Cell.tsx +37 -0
  66. package/src/component/Cursor.tsx +185 -0
  67. package/src/component/Customized.tsx +50 -0
  68. package/src/component/DefaultLegendContent.tsx +348 -0
  69. package/src/component/DefaultTooltipContent.tsx +224 -0
  70. package/src/component/Dots.tsx +157 -0
  71. package/src/component/Label.tsx +636 -0
  72. package/src/component/LabelList.tsx +375 -0
  73. package/src/component/Legend.tsx +512 -0
  74. package/src/component/ResponsiveContainer.tsx +348 -0
  75. package/src/component/Text.tsx +541 -0
  76. package/src/component/Tooltip.tsx +470 -0
  77. package/src/component/TooltipBoundingBox.tsx +146 -0
  78. package/src/component/responsiveContainerUtils.ts +134 -0
  79. package/src/container/ClipPathProvider.tsx +51 -0
  80. package/src/container/Layer.tsx +38 -0
  81. package/src/container/RootSurface.tsx +120 -0
  82. package/src/container/Surface.tsx +61 -0
  83. package/src/context/CellsContext.tsx +54 -0
  84. package/src/context/ErrorBarContext.tsx +146 -0
  85. package/src/context/GraphicalItemChildrenScope.tsx +18 -0
  86. package/src/context/PanoramaContext.tsx +9 -0
  87. package/src/context/RegisterGraphicalItemId.tsx +30 -0
  88. package/src/context/accessibilityContext.tsx +6 -0
  89. package/src/context/brushUpdateContext.tsx +9 -0
  90. package/src/context/chartDataContext.tsx +97 -0
  91. package/src/context/chartLayoutContext.tsx +201 -0
  92. package/src/context/legendPayloadContext.tsx +20 -0
  93. package/src/context/legendPortalContext.tsx +12 -0
  94. package/src/context/tooltipContext.tsx +89 -0
  95. package/src/context/tooltipPortalContext.tsx +12 -0
  96. package/src/context/useTooltipAxis.ts +22 -0
  97. package/src/hooks.ts +476 -0
  98. package/src/index.ts +280 -0
  99. package/src/polar/Pie.tsx +1360 -0
  100. package/src/polar/PolarAngleAxis.tsx +616 -0
  101. package/src/polar/PolarGrid.tsx +312 -0
  102. package/src/polar/PolarRadiusAxis.tsx +547 -0
  103. package/src/polar/Radar.tsx +734 -0
  104. package/src/polar/RadialBar.tsx +917 -0
  105. package/src/polar/defaultPolarAngleAxisProps.tsx +27 -0
  106. package/src/polar/defaultPolarRadiusAxisProps.tsx +25 -0
  107. package/src/shape/Cross.tsx +89 -0
  108. package/src/shape/Curve.tsx +343 -0
  109. package/src/shape/Dot.tsx +70 -0
  110. package/src/shape/Polygon.tsx +195 -0
  111. package/src/shape/Rectangle.tsx +470 -0
  112. package/src/shape/Sector.tsx +347 -0
  113. package/src/shape/Symbols.tsx +139 -0
  114. package/src/shape/Trapezoid.tsx +280 -0
  115. package/src/state/RechartsStateContext.tsx +12 -0
  116. package/src/state/RechartsStateProvider.tsx +87 -0
  117. package/src/state/RechartsStoreContext.tsx +25 -0
  118. package/src/state/RechartsStoreProvider.tsx +35 -0
  119. package/src/state/ReportChartProps.tsx +40 -0
  120. package/src/state/ReportEventSettings.tsx +30 -0
  121. package/src/state/ReportMainChartProps.tsx +61 -0
  122. package/src/state/ReportPolarOptions.tsx +35 -0
  123. package/src/state/SetGraphicalItem.ts +79 -0
  124. package/src/state/SetLegendPayload.ts +134 -0
  125. package/src/state/SetTooltipEntrySettings.tsx +72 -0
  126. package/src/state/actions.ts +464 -0
  127. package/src/state/brushSlice.ts +13 -0
  128. package/src/state/cartesianAxisSlice.ts +141 -0
  129. package/src/state/chartDataSlice.ts +50 -0
  130. package/src/state/chartState.ts +297 -0
  131. package/src/state/errorBarSlice.ts +29 -0
  132. package/src/state/eventSettingsSlice.ts +8 -0
  133. package/src/state/events.ts +76 -0
  134. package/src/state/externalEventsMiddleware.ts +255 -0
  135. package/src/state/graphicalItemsSlice.ts +74 -0
  136. package/src/state/hooks/useChartSelectors.tsx +45 -0
  137. package/src/state/keyboardEventsMiddleware.ts +228 -0
  138. package/src/state/layoutSlice.ts +21 -0
  139. package/src/state/legendSlice.ts +57 -0
  140. package/src/state/mouseEventsMiddleware.ts +185 -0
  141. package/src/state/optionsSlice.ts +47 -0
  142. package/src/state/polarAxisSlice.ts +10 -0
  143. package/src/state/polarOptionsSlice.ts +12 -0
  144. package/src/state/rawData.ts +26 -0
  145. package/src/state/referenceElementsSlice.ts +40 -0
  146. package/src/state/renderedTicksSlice.ts +15 -0
  147. package/src/state/rootPropsSlice.ts +47 -0
  148. package/src/state/selectors/areaSelectors.ts +240 -0
  149. package/src/state/selectors/arrayEqualityCheck.ts +29 -0
  150. package/src/state/selectors/axisSelectors.ts +2157 -0
  151. package/src/state/selectors/barSelectors.ts +310 -0
  152. package/src/state/selectors/barStackSelectors.ts +77 -0
  153. package/src/state/selectors/brushSelectors.ts +33 -0
  154. package/src/state/selectors/chartSelector.ts +185 -0
  155. package/src/state/selectors/combiners/combineActiveLabel.ts +16 -0
  156. package/src/state/selectors/combiners/combineActiveTooltipIndex.ts +95 -0
  157. package/src/state/selectors/combiners/combineAllBarPositions.ts +122 -0
  158. package/src/state/selectors/combiners/combineAxisRangeWithReverse.ts +16 -0
  159. package/src/state/selectors/combiners/combineBarPosition.ts +23 -0
  160. package/src/state/selectors/combiners/combineBarSizeList.ts +80 -0
  161. package/src/state/selectors/combiners/combineCheckedDomain.ts +48 -0
  162. package/src/state/selectors/combiners/combineConfiguredScale.ts +111 -0
  163. package/src/state/selectors/combiners/combineCoordinateForDefaultIndex.ts +45 -0
  164. package/src/state/selectors/combiners/combineDisplayedStackedData.ts +50 -0
  165. package/src/state/selectors/combiners/combineInverseScaleFunction.ts +16 -0
  166. package/src/state/selectors/combiners/combineRealScaleType.ts +44 -0
  167. package/src/state/selectors/combiners/combineStackedData.ts +27 -0
  168. package/src/state/selectors/combiners/combineTooltipInteractionState.ts +86 -0
  169. package/src/state/selectors/combiners/combineTooltipPayload.ts +205 -0
  170. package/src/state/selectors/combiners/combineTooltipPayloadConfigurations.ts +58 -0
  171. package/src/state/selectors/containerSelectors.ts +12 -0
  172. package/src/state/selectors/dataSelectors.ts +88 -0
  173. package/src/state/selectors/funnelSelectors.ts +75 -0
  174. package/src/state/selectors/graphicalItemSelectors.ts +30 -0
  175. package/src/state/selectors/legendSelectors.ts +29 -0
  176. package/src/state/selectors/lineSelectors.ts +134 -0
  177. package/src/state/selectors/numberDomainEqualityCheck.ts +14 -0
  178. package/src/state/selectors/pickAxisId.ts +5 -0
  179. package/src/state/selectors/pickAxisType.ts +3 -0
  180. package/src/state/selectors/pieSelectors.ts +97 -0
  181. package/src/state/selectors/polarAxisSelectors.ts +201 -0
  182. package/src/state/selectors/polarGridSelectors.ts +28 -0
  183. package/src/state/selectors/polarScaleSelectors.ts +133 -0
  184. package/src/state/selectors/polarSelectors.ts +219 -0
  185. package/src/state/selectors/radarSelectors.ts +191 -0
  186. package/src/state/selectors/radialBarSelectors.ts +435 -0
  187. package/src/state/selectors/rootPropsSelectors.ts +25 -0
  188. package/src/state/selectors/scatterSelectors.ts +96 -0
  189. package/src/state/selectors/selectActivePropsFromChartPointer.ts +26 -0
  190. package/src/state/selectors/selectAllAxes.ts +17 -0
  191. package/src/state/selectors/selectChartOffset.ts +16 -0
  192. package/src/state/selectors/selectChartOffsetInternal.ts +136 -0
  193. package/src/state/selectors/selectLegendArea.ts +20 -0
  194. package/src/state/selectors/selectPlotArea.ts +22 -0
  195. package/src/state/selectors/selectTooltipAxisId.ts +7 -0
  196. package/src/state/selectors/selectTooltipAxisType.ts +32 -0
  197. package/src/state/selectors/selectTooltipEventType.ts +48 -0
  198. package/src/state/selectors/selectTooltipPayloadSearcher.ts +6 -0
  199. package/src/state/selectors/selectTooltipSettings.ts +39 -0
  200. package/src/state/selectors/selectTooltipState.ts +8 -0
  201. package/src/state/selectors/selectors.ts +271 -0
  202. package/src/state/selectors/tooltipSelectors.ts +578 -0
  203. package/src/state/selectors/touchSelectors.ts +31 -0
  204. package/src/state/store.ts +29 -0
  205. package/src/state/storeIdentity.ts +9 -0
  206. package/src/state/teardownWrite.ts +10 -0
  207. package/src/state/tooltipInteraction.ts +23 -0
  208. package/src/state/tooltipSlice.ts +334 -0
  209. package/src/state/touchEventsMiddleware.ts +214 -0
  210. package/src/state/types/AnimationSettings.ts +20 -0
  211. package/src/state/types/AreaSettings.ts +14 -0
  212. package/src/state/types/BarSettings.ts +15 -0
  213. package/src/state/types/LineSettings.ts +9 -0
  214. package/src/state/types/PieSettings.ts +34 -0
  215. package/src/state/types/RadarSettings.ts +5 -0
  216. package/src/state/types/RadialBarSettings.ts +10 -0
  217. package/src/state/types/ScatterSettings.ts +12 -0
  218. package/src/state/types/StackedGraphicalItem.ts +34 -0
  219. package/src/state/useChartState.ts +17 -0
  220. package/src/state/zIndexSlice.ts +39 -0
  221. package/src/synchronisation/syncSelectors.ts +7 -0
  222. package/src/synchronisation/types.ts +44 -0
  223. package/src/synchronisation/useChartSynchronisation.tsx +404 -0
  224. package/src/theme/RechartsTheme.ts +16 -0
  225. package/src/theme/RechartsThemeContext.ts +19 -0
  226. package/src/theme/darkTheme.ts +13 -0
  227. package/src/theme/graphicalItemIdentity.ts +70 -0
  228. package/src/theme/legacyTheme.ts +17 -0
  229. package/src/theme/lightTheme.ts +13 -0
  230. package/src/types.ts +54 -0
  231. package/src/util/ActiveShapeUtils.tsx +162 -0
  232. package/src/util/BarUtils.tsx +62 -0
  233. package/src/util/BarePortal.tsx +50 -0
  234. package/src/util/CamelCaseSVGAttrs.ts +34 -0
  235. package/src/util/CartesianUtils.ts +48 -0
  236. package/src/util/ChartUtils.ts +802 -0
  237. package/src/util/Constants.ts +42 -0
  238. package/src/util/CssPrefixUtils.ts +20 -0
  239. package/src/util/DOMUtils.ts +129 -0
  240. package/src/util/DataUtils.ts +216 -0
  241. package/src/util/Events.ts +16 -0
  242. package/src/util/FunnelUtils.tsx +15 -0
  243. package/src/util/Global.ts +12 -0
  244. package/src/util/IfOverflow.ts +15 -0
  245. package/src/util/LRUCache.ts +41 -0
  246. package/src/util/LogUtils.ts +22 -0
  247. package/src/util/PolarUtils.ts +132 -0
  248. package/src/util/RadialBarUtils.tsx +24 -0
  249. package/src/util/ReactUtils.ts +95 -0
  250. package/src/util/ReduceCSSCalc.ts +187 -0
  251. package/src/util/ScatterUtils.tsx +52 -0
  252. package/src/util/ShapeElementProps.tsx +87 -0
  253. package/src/util/TickUtils.ts +60 -0
  254. package/src/util/XAxisUtils.ts +48 -0
  255. package/src/util/YAxisUtils.ts +48 -0
  256. package/src/util/axisPropsAreEqual.ts +48 -0
  257. package/src/util/createCartesianCharts.tsx +150 -0
  258. package/src/util/createEventProxy.ts +20 -0
  259. package/src/util/createPolarCharts.tsx +112 -0
  260. package/src/util/cursor/getCursorPoints.ts +46 -0
  261. package/src/util/cursor/getCursorRectangle.ts +28 -0
  262. package/src/util/cursor/getRadialCursorPoints.ts +32 -0
  263. package/src/util/excludeEventProps.ts +171 -0
  264. package/src/util/getActiveCoordinate.ts +213 -0
  265. package/src/util/getAxisTypeBasedOnLayout.ts +21 -0
  266. package/src/util/getClassNameFromUnknown.ts +6 -0
  267. package/src/util/getEveryNth.ts +27 -0
  268. package/src/util/getRadiusAndStrokeWidthFromDot.ts +35 -0
  269. package/src/util/getRelativeCoordinate.ts +80 -0
  270. package/src/util/getSliced.ts +13 -0
  271. package/src/util/hoverDedupe.ts +41 -0
  272. package/src/util/isDomainSpecifiedByUser.ts +219 -0
  273. package/src/util/isWellBehavedNumber.ts +7 -0
  274. package/src/util/pathTotalLength.ts +25 -0
  275. package/src/util/payload/getUniqPayload.ts +28 -0
  276. package/src/util/propsAreEqual.ts +121 -0
  277. package/src/util/resolveDefaultProps.ts +161 -0
  278. package/src/util/round.ts +32 -0
  279. package/src/util/scale/CartesianScaleHelper.ts +72 -0
  280. package/src/util/scale/CustomScaleDefinition.ts +81 -0
  281. package/src/util/scale/RechartsScale.ts +130 -0
  282. package/src/util/scale/createCategoricalInverse.ts +72 -0
  283. package/src/util/scale/getNiceTickValues.ts +311 -0
  284. package/src/util/scale/index.ts +2 -0
  285. package/src/util/scale/util/arithmetic.ts +54 -0
  286. package/src/util/solid-1-compat.ts +310 -0
  287. package/src/util/solidJsxCamelAugment.d.ts +84 -0
  288. package/src/util/stacks/getStackSeriesIdentifier.ts +21 -0
  289. package/src/util/stacks/stackTypes.ts +60 -0
  290. package/src/util/structurallyEqual.ts +31 -0
  291. package/src/util/svgPropertiesAndEvents.ts +53 -0
  292. package/src/util/svgPropertiesNoEvents.ts +571 -0
  293. package/src/util/tooltip/translate.ts +171 -0
  294. package/src/util/typedDataKey.ts +48 -0
  295. package/src/util/types.ts +1560 -0
  296. package/src/util/useAnimationId.ts +31 -0
  297. package/src/util/useElementOffset.ts +110 -0
  298. package/src/util/useId.ts +8 -0
  299. package/src/util/usePrefersReducedMotion.ts +48 -0
  300. package/src/util/useReportScale.ts +24 -0
  301. package/src/util/useUniqueId.ts +30 -0
  302. package/src/zIndex/DefaultZIndexes.ts +84 -0
  303. package/src/zIndex/ZIndexLayer.tsx +121 -0
  304. package/src/zIndex/ZIndexPortal.tsx +79 -0
  305. package/src/zIndex/getZIndexFromUnknown.ts +14 -0
  306. package/src/zIndex/zIndexSelectors.ts +48 -0
@@ -0,0 +1,711 @@
1
+ /* eslint-disable import/no-cycle */
2
+ import type { JSX } from '@solidjs/web';
3
+ import type { CamelCaseSVGAttrs } from "../util/CamelCaseSVGAttrs"
4
+ import type { WithoutRemoveFalse } from "../util/types"
5
+ import { createMemo, For, Show } from 'solid-js';
6
+ import { warn } from "../util/LogUtils"
7
+ import { isNumber } from "../util/DataUtils"
8
+ import { ChartOffsetInternal } from "../util/types"
9
+
10
+ import {
11
+ AxisPropsNeededForTicksGenerator,
12
+ getCoordinatesOfGrid,
13
+ getTicksOfAxis,
14
+ } from "../util/ChartUtils"
15
+ import { getTicks, GetTicksInput } from "./getTicks"
16
+ import { defaultCartesianAxisProps } from "./CartesianAxis"
17
+ import { useChartHeight, useChartWidth, useOffsetInternal } from "../context/chartLayoutContext"
18
+ import { AxisId } from "../state/cartesianAxisSlice"
19
+ import { selectAxisPropsNeededForCartesianGridTicksGenerator } from "../state/selectors/axisSelectors"
20
+ import { useChartStore } from "../state/RechartsStoreContext"
21
+ import { useIsPanorama } from "../context/PanoramaContext"
22
+ import { RequiresDefaultProps, resolveDefaultProps } from "../util/resolveDefaultProps"
23
+ import { svgPropertiesNoEvents } from "../util/svgPropertiesNoEvents"
24
+ import { isPositiveNumber } from "../util/isWellBehavedNumber"
25
+ import { ZIndexable, ZIndexLayer } from "../zIndex/ZIndexLayer"
26
+ import { DefaultZIndexes } from "../zIndex/DefaultZIndexes"
27
+
28
+ import { splitProps } from '../util/solid-1-compat';
29
+ import { useRechartsTheme } from "../theme/RechartsThemeContext"
30
+ /**
31
+ * The <CartesianGrid horizontal
32
+ */
33
+ export type GridLineTypeFunctionProps = Omit<LineItemProps, "key"> & {
34
+ key: LineItemProps["key"] | undefined
35
+ offset: ChartOffsetInternal
36
+ }
37
+
38
+ export type AxisPropsForCartesianGridTicksGeneration = AxisPropsNeededForTicksGenerator &
39
+ Omit<GetTicksInput, "ticks" | "viewBox">
40
+
41
+ type GridLineType =
42
+ | JSX.LineSVGAttributes<SVGLineElement>
43
+ | JSX.Element
44
+ | ((props: GridLineTypeFunctionProps) => JSX.Element)
45
+ | boolean
46
+
47
+ export type HorizontalCoordinatesGenerator = (
48
+ props: {
49
+ yAxis: AxisPropsForCartesianGridTicksGeneration | undefined
50
+ width: number
51
+ height: number
52
+ offset: ChartOffsetInternal
53
+ },
54
+ syncWithTicks: boolean,
55
+ ) => number[]
56
+
57
+ export type VerticalCoordinatesGenerator = (
58
+ props: {
59
+ xAxis: AxisPropsForCartesianGridTicksGeneration | undefined
60
+ width: number
61
+ height: number
62
+ offset: ChartOffsetInternal
63
+ },
64
+ syncWithTicks: boolean,
65
+ ) => number[]
66
+
67
+ interface CartesianGridProps extends ZIndexable {
68
+ /**
69
+ * The width of grid. If undefined, covers the full width of the chart plot area.
70
+ */
71
+ width?: number
72
+ /**
73
+ * The height of grid. If undefined, covers the full height of the chart plot area.
74
+ */
75
+ height?: number
76
+ /**
77
+ * A function that generates the y-coordinates of all horizontal lines.
78
+ *
79
+ * @see {@link https://codesandbox.io/p/sandbox/cartesian-grid-with-coordinate-generators-my38cg?file=%2Fsrc%2FApp.tsx Cartesian grid with coordinate generators}
80
+ */
81
+ horizontalCoordinatesGenerator?: HorizontalCoordinatesGenerator
82
+ /**
83
+ * A function that generates the x-coordinates of all vertical lines.
84
+ *
85
+ * @see {@link https://codesandbox.io/p/sandbox/cartesian-grid-with-coordinate-generators-my38cg?file=%2Fsrc%2FApp.tsx Cartesian grid with coordinate generators}
86
+ */
87
+ verticalCoordinatesGenerator?: VerticalCoordinatesGenerator
88
+ /**
89
+ * The x-coordinate of grid.
90
+ * If left undefined, it will be computed from the chart's offset and margins.
91
+ */
92
+ x?: number
93
+ /**
94
+ * The y-coordinate of grid.
95
+ * If left undefined, it will be computed from the chart's offset and margins.
96
+ */
97
+ y?: number
98
+ /**
99
+ * If set false, no horizontal grid lines will be drawn.
100
+ *
101
+ * @defaultValue true
102
+ */
103
+ horizontal?: GridLineType
104
+ /**
105
+ * If set false, no vertical grid lines will be drawn.
106
+ *
107
+ * @defaultValue true
108
+ */
109
+ vertical?: GridLineType
110
+ /**
111
+ * Array of coordinates in pixels where to draw horizontal grid lines.
112
+ * Has priority over syncWithTicks and horizontalValues.
113
+ *
114
+ * @defaultValue []
115
+ */
116
+ horizontalPoints?: number[]
117
+ /**
118
+ * Array of coordinates in pixels where to draw vertical grid lines.
119
+ * Has priority over syncWithTicks and verticalValues.
120
+ *
121
+ * @defaultValue []
122
+ */
123
+ verticalPoints?: number[]
124
+ /**
125
+ * The background color used to fill the space between grid lines
126
+ *
127
+ * @defaultValue none
128
+ * @example <CartesianGrid fill="red" />
129
+ * @example <CartesianGrid fill="#ccc" />
130
+ */
131
+ fill?: string
132
+ /**
133
+ * The opacity of the background used to fill the space between grid lines
134
+ *
135
+ * @example <CartesianGrid fill="red" fillOpacity={0.6} />
136
+ */
137
+ fillOpacity?: number | string
138
+ /**
139
+ * Defines background color of stripes.
140
+ *
141
+ * The values from this array will be passed in as the `fill` property in a `rect` SVG element.
142
+ * For possible values see: https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill#rect
143
+ *
144
+ * In case there are more stripes than colors, the colors will start from beginning.
145
+ * So for example: verticalFill['yellow', 'black'] produces a pattern of yellow|black|yellow|black
146
+ *
147
+ * If this is undefined, or an empty array, then there is no background fill.
148
+ * Note: Grid lines will be rendered above these background stripes.
149
+ *
150
+ * @defaultValue []
151
+ */
152
+ verticalFill?: string[]
153
+ /**
154
+ * Defines background color of stripes.
155
+ *
156
+ * The values from this array will be passed in as the `fill` property in a `rect` SVG element.
157
+ * For possible values see: https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill#rect
158
+ *
159
+ * In case there are more stripes than colors, the colors will start from beginning.
160
+ * So for example: horizontalFill['yellow', 'black'] produces a pattern of yellow|black|yellow|black
161
+ *
162
+ * If this is undefined, or an empty array, then there is no background fill.
163
+ * Note: Grid lines will be rendered above these background stripes.
164
+ *
165
+ * @defaultValue []
166
+ */
167
+ horizontalFill?: string[]
168
+ /**
169
+ * If true, only the lines that correspond to the axes ticks values will be drawn.
170
+ * If false, extra lines could be added for each axis (at min and max coordinates), if there will not such ticks.
171
+ * horizontalPoints, verticalPoints, horizontalValues, verticalValues have priority over syncWithTicks.
172
+ *
173
+ * @defaultValue false
174
+ */
175
+ syncWithTicks?: boolean
176
+ /**
177
+ * Array of values, where horizontal lines will be drawn. Numbers or strings, in dependence on axis type.
178
+ * Has priority over syncWithTicks but not over horizontalPoints.
179
+ */
180
+ horizontalValues?: number[] | string[]
181
+ /**
182
+ * Array of values, where vertical lines will be drawn. Numbers or strings, in dependence on axis type.
183
+ * Has priority over syncWithTicks but not over verticalPoints.
184
+ */
185
+ verticalValues?: number[] | string[]
186
+ /**
187
+ * The pattern of dashes and gaps used to paint the lines of the grid
188
+ *
189
+ * @example <CartesianGrid strokeDasharray="3 3" />
190
+ * @example <CartesianGrid strokeDasharray={[5, 5, 1, 5]} />
191
+ * @example <CartesianGrid strokeDasharray="5 5 1 5" />
192
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray stroke-dasharray on MDN}
193
+ */
194
+ strokeDasharray?: string | number | ReadonlyArray<number>
195
+ /**
196
+ * The id of XAxis which is corresponding to the data. Required when there are multiple XAxes.
197
+ * @defaultValue 0
198
+ */
199
+ xAxisId?: AxisId
200
+ /**
201
+ * The id of YAxis which is corresponding to the data. Required when there are multiple YAxes.
202
+ * @defaultValue 0
203
+ */
204
+ yAxisId?: AxisId
205
+ /**
206
+ * @defaultValue -100
207
+ */
208
+ zIndex?: number
209
+ }
210
+
211
+ type AcceptedSvgProps = WithoutRemoveFalse<Omit<JSX.LineSVGAttributes<SVGLineElement>, "offset" | "stroke-dasharray">> &
212
+ Omit<CamelCaseSVGAttrs, "strokeDasharray">
213
+
214
+ export type Props = AcceptedSvgProps & CartesianGridProps
215
+
216
+ type CartesianGridInternalProps = AcceptedSvgProps &
217
+ RequiresDefaultProps<CartesianGridProps, typeof defaultCartesianGridProps> & {
218
+ x: number
219
+ y: number
220
+ width: number
221
+ height: number
222
+ }
223
+
224
+ function Background(props: {
225
+ fill?: string | number
226
+ fillOpacity?: string | number
227
+ x?: string | number
228
+ y?: string | number
229
+ width?: string | number
230
+ height?: string | number
231
+ ry?: string | number
232
+ }) {
233
+ return (
234
+ <Show when={props.fill && props.fill !== "none"}>
235
+ <rect
236
+ x={props.x}
237
+ y={props.y}
238
+ ry={props.ry}
239
+ width={props.width}
240
+ height={props.height}
241
+ stroke="none"
242
+ fill={String(props.fill)}
243
+ fill-opacity={props.fillOpacity}
244
+ class="recharts-cartesian-grid-bg"
245
+ />
246
+ </Show>
247
+ )
248
+ }
249
+
250
+ type LineItemProps = Props & {
251
+ offset: ChartOffsetInternal
252
+ xAxis: undefined | AxisPropsForCartesianGridTicksGeneration
253
+ yAxis: undefined | AxisPropsForCartesianGridTicksGeneration
254
+ x1: number
255
+ y1: number
256
+ x2: number
257
+ y2: number
258
+ key: string
259
+ index: number
260
+ }
261
+
262
+ /* eslint-disable solid/reactivity -- plain utility fn; lineItemProps is not a Solid reactive proxy at this call site */
263
+ function renderDefaultLine(lineItemProps: LineItemProps) {
264
+ const { x1, y1, x2, y2, key: _key, ...others } = lineItemProps
265
+ const { offset: __, ...restOfFilteredProps } = svgPropertiesNoEvents(others) ?? {}
266
+ return <line {...restOfFilteredProps} x1={x1} y1={y1} x2={x2} y2={y2} fill="none" />
267
+ }
268
+ /* eslint-enable solid/reactivity */
269
+
270
+ /* React `cloneElement(option, props)` produces a fresh vNode per call; Solid
271
+ * JSX evaluates eagerly to a Node, so the same returned reference cannot be
272
+ * inserted twice (DOM moves it). When the option is a function whose return
273
+ * is a stable Node ref (e.g. `vi.fn().mockReturnValue(<g />)`, or a JSX literal
274
+ * passed as `horizontal={<X />}`), clone the resulting node so each iteration
275
+ * gets its own subtree. Returns from real component fns are usually fresh per
276
+ * call and clone is a cheap no-op shape on those. */
277
+ function cloneIfNode(value: unknown): unknown {
278
+ if (value != null && typeof value === "object" && "cloneNode" in value) {
279
+ return (value as Node).cloneNode(true)
280
+ }
281
+ return value
282
+ }
283
+
284
+ /* eslint-disable solid/reactivity -- itemProps reads are structural type checks at component setup; LineItem is called once per grid line, not in a reactive context */
285
+ function LineItem(itemProps: { option: GridLineType; lineItemProps: LineItemProps }): JSX.Element {
286
+ return <>{renderLineItem(itemProps)}</>
287
+ }
288
+
289
+ /* Runs inside LineItem's JSX expression so every reactive read is tracked. */
290
+ function renderLineItem(itemProps: { option: GridLineType; lineItemProps: LineItemProps }) {
291
+ if (typeof itemProps.option === "function") {
292
+ const fn = itemProps.option
293
+ const fnProps: GridLineTypeFunctionProps = {
294
+ ...itemProps.lineItemProps,
295
+ key: itemProps.lineItemProps.key,
296
+ offset: itemProps.lineItemProps.offset,
297
+ }
298
+ return <>{cloneIfNode(fn(fnProps)) as JSX.Element}</>
299
+ }
300
+ if (itemProps.option != null && typeof itemProps.option === "object" && "cloneNode" in (itemProps.option as object)) {
301
+ return <>{(itemProps.option as Node).cloneNode(true) as unknown as JSX.Element}</>
302
+ }
303
+
304
+ return renderDefaultLine(itemProps.lineItemProps)
305
+ }
306
+ /* eslint-enable solid/reactivity */
307
+
308
+ type GridLinesProps = CartesianGridInternalProps & {
309
+ offset: GridLineTypeFunctionProps["offset"]
310
+ xAxis: GridLineTypeFunctionProps["xAxis"]
311
+ yAxis: GridLineTypeFunctionProps["yAxis"]
312
+ }
313
+
314
+ function HorizontalGridLines(props: GridLinesProps) {
315
+ const horizontal = () => props.horizontal ?? true
316
+ const horizontalPoints = () => props.horizontalPoints
317
+ /* Mirrors upstream: `const { xAxisId, yAxisId, ...otherLineItemProps } = props`.
318
+ * The internal `LineItemProps` shape consumed by user-supplied vertical/horizontal
319
+ * render functions does not carry axis ids — those live in CartesianGrid's own
320
+ * default-resolved props and are stripped before forwarding. */
321
+ const [, otherProps] = splitProps(props, ["xAxisId", "yAxisId"])
322
+
323
+ return (
324
+ <Show when={horizontal() && horizontalPoints() && horizontalPoints()?.length}>
325
+ <g class="recharts-cartesian-grid-horizontal">
326
+ <For each={horizontalPoints()}>
327
+ {(entry, i) => {
328
+ const lineItemProps = (): LineItemProps => ({
329
+ ...otherProps,
330
+ index: i(),
331
+ key: `line-${i()}`,
332
+ x1: props.x,
333
+ x2: props.x + props.width,
334
+ y1: entry,
335
+ y2: entry,
336
+ })
337
+
338
+ return <LineItem option={horizontal()} lineItemProps={lineItemProps()} />
339
+ }}
340
+ </For>
341
+ </g>
342
+ </Show>
343
+ )
344
+ }
345
+
346
+ function VerticalGridLines(props: GridLinesProps) {
347
+ const vertical = () => props.vertical ?? true
348
+ const verticalPoints = () => props.verticalPoints
349
+ const [, otherProps] = splitProps(props, ["xAxisId", "yAxisId"])
350
+
351
+ return (
352
+ <Show when={vertical() && verticalPoints() && verticalPoints()?.length}>
353
+ <g class="recharts-cartesian-grid-vertical">
354
+ <For each={verticalPoints()}>
355
+ {(entry, i) => {
356
+ const lineItemProps = (): LineItemProps => ({
357
+ ...otherProps,
358
+ index: i(),
359
+ key: `line-${i()}`,
360
+ x1: entry,
361
+ x2: entry,
362
+ y1: props.y,
363
+ y2: props.y + props.height,
364
+ })
365
+
366
+ return <LineItem option={vertical()} lineItemProps={lineItemProps()} />
367
+ }}
368
+ </For>
369
+ </g>
370
+ </Show>
371
+ )
372
+ }
373
+
374
+ function HorizontalStripes(props: CartesianGridInternalProps) {
375
+ const horizontal = () => props.horizontal ?? true
376
+
377
+ const sortedPoints = () => {
378
+ if (
379
+ !horizontal() ||
380
+ !props.horizontalFill ||
381
+ !props.horizontalFill.length ||
382
+ props.horizontalPoints == null
383
+ ) {
384
+ return null
385
+ }
386
+ const rounded = props.horizontalPoints
387
+ .map((e) => Math.round(e + props.y - props.y))
388
+ .sort((a, b) => a - b)
389
+ if (props.y !== rounded[0]) {
390
+ rounded.unshift(0)
391
+ }
392
+ return rounded
393
+ }
394
+
395
+ /* eslint-disable solid/reactivity -- i() is the <For> index accessor; reads inside the For callback ARE tracked */
396
+ /* Runs inside a JSX expression so prop and store reads are tracked. */
397
+ const renderHorizontalStripe = (entry: number, i: number): JSX.Element => {
398
+ const pts = sortedPoints()
399
+ if (pts == null) return null
400
+ const nextPoint = pts[i + 1]
401
+ const lastStripe = nextPoint == null
402
+ const lineHeight = lastStripe ? props.y + props.height - entry : nextPoint - entry
403
+ if (lineHeight <= 0) {
404
+ return null
405
+ }
406
+ const colorIndex = i % (props.horizontalFill?.length ?? 1)
407
+ return (
408
+ <rect
409
+ y={entry}
410
+ x={props.x}
411
+ height={lineHeight}
412
+ width={props.width}
413
+ stroke="none"
414
+ fill={props.horizontalFill?.[colorIndex]}
415
+ fill-opacity={props.fillOpacity}
416
+ class="recharts-cartesian-grid-bg"
417
+ />
418
+ )
419
+ }
420
+
421
+ return (
422
+ <Show when={sortedPoints()}>
423
+ <g class="recharts-cartesian-gridstripes-horizontal">
424
+ <For each={sortedPoints()}>
425
+ {(entry, i) => <>{renderHorizontalStripe(entry, i())}</>}
426
+ </For>
427
+ </g>
428
+ </Show>
429
+ )
430
+ /* eslint-enable solid/reactivity */
431
+ }
432
+
433
+ function VerticalStripes(props: CartesianGridInternalProps) {
434
+ const vertical = () => props.vertical ?? true
435
+
436
+ const sortedPoints = () => {
437
+ if (!vertical() || !props.verticalFill || !props.verticalFill.length) {
438
+ return null
439
+ }
440
+ const rounded = props.verticalPoints
441
+ .map((e) => Math.round(e + props.x - props.x))
442
+ .sort((a, b) => a - b)
443
+ if (props.x !== rounded[0]) {
444
+ rounded.unshift(0)
445
+ }
446
+ return rounded
447
+ }
448
+
449
+ /* eslint-disable solid/reactivity -- i() is the <For> index accessor; reads inside the For callback ARE tracked */
450
+ /* Runs inside a JSX expression so prop and store reads are tracked. */
451
+ const renderVerticalStripe = (entry: number, i: number): JSX.Element => {
452
+ const pts = sortedPoints()
453
+ if (pts == null) return null
454
+ const nextPoint = pts[i + 1]
455
+ const lastStripe = nextPoint == null
456
+ const lineWidth = lastStripe ? props.x + props.width - entry : nextPoint - entry
457
+ if (lineWidth <= 0) {
458
+ return null
459
+ }
460
+ const colorIndex = i % (props.verticalFill?.length ?? 1)
461
+ return (
462
+ <rect
463
+ x={entry}
464
+ y={props.y}
465
+ width={lineWidth}
466
+ height={props.height}
467
+ stroke="none"
468
+ fill={props.verticalFill?.[colorIndex]}
469
+ fill-opacity={props.fillOpacity}
470
+ class="recharts-cartesian-grid-bg"
471
+ />
472
+ )
473
+ }
474
+
475
+ return (
476
+ <Show when={sortedPoints()}>
477
+ <g class="recharts-cartesian-gridstripes-vertical">
478
+ <For each={sortedPoints()}>
479
+ {(entry, i) => <>{renderVerticalStripe(entry, i())}</>}
480
+ </For>
481
+ </g>
482
+ </Show>
483
+ )
484
+ /* eslint-enable solid/reactivity */
485
+ }
486
+
487
+ const defaultVerticalCoordinatesGenerator: VerticalCoordinatesGenerator = (
488
+ { xAxis, width, height, offset },
489
+ syncWithTicks,
490
+ ) =>
491
+ getCoordinatesOfGrid(
492
+ getTicks({
493
+ ...defaultCartesianAxisProps,
494
+ ...xAxis,
495
+ ticks: getTicksOfAxis(xAxis, true),
496
+ viewBox: { height, width, x: 0, y: 0 },
497
+ }),
498
+ offset.left,
499
+ offset.left + offset.width,
500
+ syncWithTicks,
501
+ )
502
+
503
+ const defaultHorizontalCoordinatesGenerator: HorizontalCoordinatesGenerator = (
504
+ { yAxis, width, height, offset },
505
+ syncWithTicks,
506
+ ) =>
507
+ getCoordinatesOfGrid(
508
+ getTicks({
509
+ ...defaultCartesianAxisProps,
510
+ ...yAxis,
511
+ ticks: getTicksOfAxis(yAxis, true),
512
+ viewBox: { height, width, x: 0, y: 0 },
513
+ }),
514
+ offset.top,
515
+ offset.top + offset.height,
516
+ syncWithTicks,
517
+ )
518
+
519
+ export const defaultCartesianGridProps = {
520
+ horizontal: true,
521
+ horizontalFill: [],
522
+ horizontalPoints: [],
523
+ syncWithTicks: false,
524
+ vertical: true,
525
+ verticalFill: [],
526
+ verticalPoints: [],
527
+ xAxisId: 0,
528
+ yAxisId: 0,
529
+ zIndex: DefaultZIndexes.grid,
530
+ } as const satisfies Partial<Props>
531
+
532
+ /**
533
+ * Renders background grid with lines and fill colors in a Cartesian chart.
534
+ *
535
+ * @consumes CartesianChartContext
536
+ */
537
+ export function CartesianGrid(outsideProps: Props) {
538
+ /* All hooks now bare T (GOTCHA-011). Arrow-thunk pattern keeps existing
539
+ `()` callsites valid and re-runs the selector under each reactive scope. */
540
+ const chartWidth = createMemo(() => useChartWidth())
541
+ const chartHeight = createMemo(() => useChartHeight())
542
+ const offset = createMemo(() => useOffsetInternal())
543
+ const theme = useRechartsTheme()
544
+ const propsIncludingDefaults = createMemo((): CartesianGridInternalProps => ({
545
+ ...resolveDefaultProps(outsideProps, defaultCartesianGridProps),
546
+ /* Grid colors fall back to the active theme (legacyTheme matches the 3.x defaults). */
547
+ fill: outsideProps.fill ?? theme.grid.fill,
548
+ fillOpacity: outsideProps.fillOpacity ?? theme.grid.fillOpacity,
549
+ stroke: outsideProps.stroke ?? theme.grid.stroke,
550
+ strokeDasharray: outsideProps.strokeDasharray ?? theme.grid.strokeDasharray,
551
+ strokeOpacity: outsideProps.strokeOpacity ?? theme.grid.strokeOpacity,
552
+ strokeWidth: outsideProps.strokeWidth ?? theme.grid.strokeWidth,
553
+ height: isNumber(outsideProps.height) ? outsideProps.height : offset().height,
554
+ width: isNumber(outsideProps.width) ? outsideProps.width : offset().width,
555
+ x: isNumber(outsideProps.x) ? outsideProps.x : offset().left,
556
+ y: isNumber(outsideProps.y) ? outsideProps.y : offset().top,
557
+ }))
558
+
559
+ const isPanorama = useIsPanorama()
560
+ const ctx = useChartStore()
561
+ const xAxis = (): AxisPropsForCartesianGridTicksGeneration | undefined =>
562
+ ctx
563
+ ? selectAxisPropsNeededForCartesianGridTicksGenerator(
564
+ ctx.store,
565
+ "xAxis",
566
+ propsIncludingDefaults().xAxisId,
567
+ isPanorama,
568
+ )
569
+ : undefined
570
+ const yAxis = (): AxisPropsForCartesianGridTicksGeneration | undefined =>
571
+ ctx
572
+ ? selectAxisPropsNeededForCartesianGridTicksGenerator(
573
+ ctx.store,
574
+ "yAxis",
575
+ propsIncludingDefaults().yAxisId,
576
+ isPanorama,
577
+ )
578
+ : undefined
579
+
580
+ const computedPoints = createMemo(() => {
581
+ const p = propsIncludingDefaults()
582
+ const { x, y, width, height, syncWithTicks, horizontalValues, verticalValues } = p
583
+
584
+ if (!isPositiveNumber(width) || !isPositiveNumber(height) || !isNumber(x) || !isNumber(y)) {
585
+ return null
586
+ }
587
+
588
+ const verticalCoordinatesGenerator =
589
+ p.verticalCoordinatesGenerator || defaultVerticalCoordinatesGenerator
590
+ const horizontalCoordinatesGenerator =
591
+ p.horizontalCoordinatesGenerator || defaultHorizontalCoordinatesGenerator
592
+
593
+ let horizontalPoints = p.horizontalPoints
594
+ let verticalPoints = p.verticalPoints
595
+
596
+ if (
597
+ (!horizontalPoints || !horizontalPoints.length) &&
598
+ typeof horizontalCoordinatesGenerator === "function"
599
+ ) {
600
+ const isHorizontalValues = horizontalValues && horizontalValues.length
601
+
602
+ const generatorResult = horizontalCoordinatesGenerator(
603
+ {
604
+ height: chartHeight() ?? height,
605
+ offset: offset(),
606
+ width: chartWidth() ?? width,
607
+ yAxis: yAxis()
608
+ ? ({
609
+ ...yAxis(),
610
+ scale: yAxis()?.scale ?? undefined,
611
+ ticks: isHorizontalValues ? horizontalValues : yAxis()?.ticks,
612
+ } as AxisPropsForCartesianGridTicksGeneration)
613
+ : undefined,
614
+ },
615
+ isHorizontalValues ? true : syncWithTicks,
616
+ )
617
+
618
+ warn(
619
+ Array.isArray(generatorResult),
620
+ `horizontalCoordinatesGenerator should return Array but instead it returned [${typeof generatorResult}]`,
621
+ )
622
+ if (Array.isArray(generatorResult)) {
623
+ horizontalPoints = generatorResult
624
+ }
625
+ }
626
+
627
+ if (
628
+ (!verticalPoints || !verticalPoints.length) &&
629
+ typeof verticalCoordinatesGenerator === "function"
630
+ ) {
631
+ const isVerticalValues = verticalValues && verticalValues.length
632
+ const generatorResult = verticalCoordinatesGenerator(
633
+ {
634
+ height: chartHeight() ?? height,
635
+ offset: offset(),
636
+ width: chartWidth() ?? width,
637
+ xAxis: xAxis()
638
+ ? ({
639
+ ...xAxis(),
640
+ scale: xAxis()?.scale ?? undefined,
641
+ ticks: isVerticalValues ? verticalValues : xAxis()?.ticks,
642
+ } as AxisPropsForCartesianGridTicksGeneration)
643
+ : undefined,
644
+ },
645
+ isVerticalValues ? true : syncWithTicks,
646
+ )
647
+ warn(
648
+ Array.isArray(generatorResult),
649
+ `verticalCoordinatesGenerator should return Array but instead it returned [${typeof generatorResult}]`,
650
+ )
651
+ if (Array.isArray(generatorResult)) {
652
+ verticalPoints = generatorResult
653
+ }
654
+ }
655
+
656
+ return { horizontalPoints, verticalPoints }
657
+ })
658
+
659
+ const horizontalPointsReactive = (): number[] => computedPoints()?.horizontalPoints ?? []
660
+ const verticalPointsReactive = (): number[] => computedPoints()?.verticalPoints ?? []
661
+
662
+ return (
663
+ <Show when={computedPoints() != null}>
664
+ <ZIndexLayer zIndex={propsIncludingDefaults().zIndex}>
665
+ <g class="recharts-cartesian-grid">
666
+ <Background
667
+ fill={propsIncludingDefaults().fill}
668
+ fillOpacity={propsIncludingDefaults().fillOpacity}
669
+ x={propsIncludingDefaults().x}
670
+ y={propsIncludingDefaults().y}
671
+ width={propsIncludingDefaults().width}
672
+ height={propsIncludingDefaults().height}
673
+ ry={
674
+ (propsIncludingDefaults() as Record<string, unknown>).ry as
675
+ | string
676
+ | number
677
+ | undefined
678
+ }
679
+ />
680
+
681
+ <HorizontalStripes
682
+ {...propsIncludingDefaults()}
683
+ horizontalPoints={horizontalPointsReactive()}
684
+ />
685
+ <VerticalStripes
686
+ {...propsIncludingDefaults()}
687
+ verticalPoints={verticalPointsReactive()}
688
+ />
689
+
690
+ <HorizontalGridLines
691
+ {...propsIncludingDefaults()}
692
+ offset={offset()}
693
+ horizontalPoints={horizontalPointsReactive()}
694
+ xAxis={xAxis()}
695
+ yAxis={yAxis()}
696
+ />
697
+
698
+ <VerticalGridLines
699
+ {...propsIncludingDefaults()}
700
+ offset={offset()}
701
+ verticalPoints={verticalPointsReactive()}
702
+ xAxis={xAxis()}
703
+ yAxis={yAxis()}
704
+ />
705
+ </g>
706
+ </ZIndexLayer>
707
+ </Show>
708
+ )
709
+ }
710
+
711
+ CartesianGrid.displayName = "CartesianGrid"