@solidports/recharts 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +40 -2
- package/dist/index.js +14238 -7174
- package/dist/{dev.js → index.jsx} +18367 -15900
- package/dist/server.js +48178 -0
- package/package.json +36 -19
- package/src/animation/AnimatedItems.tsx +0 -183
- package/src/animation/AnimationController.ts +0 -33
- package/src/animation/AnimationControllerImpl.ts +0 -36
- package/src/animation/AnimationHandle.ts +0 -307
- package/src/animation/CSSTransitionAnimate.tsx +0 -170
- package/src/animation/JavascriptAnimate.tsx +0 -119
- package/src/animation/easing.ts +0 -221
- package/src/animation/matchBy.ts +0 -164
- package/src/animation/timeoutController.ts +0 -70
- package/src/animation/useAnimationController.tsx +0 -34
- package/src/animation/useAnimationStartSnapshot.ts +0 -118
- package/src/animation/util.ts +0 -41
- package/src/cartesian/Area.tsx +0 -915
- package/src/cartesian/AreaRevealShape.tsx +0 -190
- package/src/cartesian/Bar.tsx +0 -1369
- package/src/cartesian/BarStack.tsx +0 -152
- package/src/cartesian/Brush.tsx +0 -951
- package/src/cartesian/CartesianAxis.tsx +0 -722
- package/src/cartesian/CartesianGrid.tsx +0 -711
- package/src/cartesian/ErrorBar.tsx +0 -361
- package/src/cartesian/Funnel.tsx +0 -803
- package/src/cartesian/GraphicalItemClipPath.tsx +0 -67
- package/src/cartesian/Line.tsx +0 -863
- package/src/cartesian/LineDrawShape.tsx +0 -89
- package/src/cartesian/ReferenceArea.tsx +0 -331
- package/src/cartesian/ReferenceDot.tsx +0 -304
- package/src/cartesian/ReferenceLine.tsx +0 -474
- package/src/cartesian/Scatter.tsx +0 -888
- package/src/cartesian/XAxis.tsx +0 -433
- package/src/cartesian/YAxis.tsx +0 -443
- package/src/cartesian/ZAxis.tsx +0 -155
- package/src/cartesian/cartesianPositionToCSSTranslate.tsx +0 -29
- package/src/cartesian/cartesianViewBoxToTrapezoid.tsx +0 -21
- package/src/cartesian/getCartesianPosition.tsx +0 -267
- package/src/cartesian/getEquidistantTicks.ts +0 -144
- package/src/cartesian/getTicks.ts +0 -225
- package/src/cartesian/isOutsidePosition.ts +0 -15
- package/src/cartesian/useAnimatedLineLength.ts +0 -54
- package/src/chart/AreaChart.tsx +0 -29
- package/src/chart/BarChart.tsx +0 -29
- package/src/chart/CartesianChart.tsx +0 -131
- package/src/chart/CategoricalChart.tsx +0 -94
- package/src/chart/ComposedChart.tsx +0 -29
- package/src/chart/FunnelChart.tsx +0 -29
- package/src/chart/LineChart.tsx +0 -29
- package/src/chart/PieChart.tsx +0 -50
- package/src/chart/PolarChart.tsx +0 -164
- package/src/chart/RadarChart.tsx +0 -70
- package/src/chart/RadialBarChart.tsx +0 -46
- package/src/chart/RechartsWrapper.tsx +0 -551
- package/src/chart/Sankey.tsx +0 -1534
- package/src/chart/ScatterChart.tsx +0 -29
- package/src/chart/SunburstChart.tsx +0 -504
- package/src/chart/Treemap.tsx +0 -1223
- package/src/chart/createInitialRootProps.ts +0 -24
- package/src/chart/types.ts +0 -53
- package/src/component/ActivePoints.tsx +0 -144
- package/src/component/Cell.tsx +0 -37
- package/src/component/Cursor.tsx +0 -185
- package/src/component/Customized.tsx +0 -50
- package/src/component/DefaultLegendContent.tsx +0 -348
- package/src/component/DefaultTooltipContent.tsx +0 -224
- package/src/component/Dots.tsx +0 -157
- package/src/component/Label.tsx +0 -636
- package/src/component/LabelList.tsx +0 -375
- package/src/component/Legend.tsx +0 -512
- package/src/component/ResponsiveContainer.tsx +0 -348
- package/src/component/Text.tsx +0 -541
- package/src/component/Tooltip.tsx +0 -470
- package/src/component/TooltipBoundingBox.tsx +0 -146
- package/src/component/responsiveContainerUtils.ts +0 -134
- package/src/container/ClipPathProvider.tsx +0 -51
- package/src/container/Layer.tsx +0 -38
- package/src/container/RootSurface.tsx +0 -120
- package/src/container/Surface.tsx +0 -61
- package/src/context/CellsContext.tsx +0 -54
- package/src/context/ErrorBarContext.tsx +0 -146
- package/src/context/GraphicalItemChildrenScope.tsx +0 -18
- package/src/context/PanoramaContext.tsx +0 -9
- package/src/context/RegisterGraphicalItemId.tsx +0 -30
- package/src/context/accessibilityContext.tsx +0 -6
- package/src/context/brushUpdateContext.tsx +0 -9
- package/src/context/chartDataContext.tsx +0 -97
- package/src/context/chartLayoutContext.tsx +0 -201
- package/src/context/legendPayloadContext.tsx +0 -20
- package/src/context/legendPortalContext.tsx +0 -12
- package/src/context/tooltipContext.tsx +0 -89
- package/src/context/tooltipPortalContext.tsx +0 -12
- package/src/context/useTooltipAxis.ts +0 -22
- package/src/hooks.ts +0 -476
- package/src/index.ts +0 -280
- package/src/polar/Pie.tsx +0 -1360
- package/src/polar/PolarAngleAxis.tsx +0 -616
- package/src/polar/PolarGrid.tsx +0 -312
- package/src/polar/PolarRadiusAxis.tsx +0 -547
- package/src/polar/Radar.tsx +0 -734
- package/src/polar/RadialBar.tsx +0 -917
- package/src/polar/defaultPolarAngleAxisProps.tsx +0 -27
- package/src/polar/defaultPolarRadiusAxisProps.tsx +0 -25
- package/src/shape/Cross.tsx +0 -89
- package/src/shape/Curve.tsx +0 -343
- package/src/shape/Dot.tsx +0 -70
- package/src/shape/Polygon.tsx +0 -195
- package/src/shape/Rectangle.tsx +0 -470
- package/src/shape/Sector.tsx +0 -347
- package/src/shape/Symbols.tsx +0 -139
- package/src/shape/Trapezoid.tsx +0 -280
- package/src/state/RechartsStateContext.tsx +0 -12
- package/src/state/RechartsStateProvider.tsx +0 -87
- package/src/state/RechartsStoreContext.tsx +0 -25
- package/src/state/RechartsStoreProvider.tsx +0 -35
- package/src/state/ReportChartProps.tsx +0 -40
- package/src/state/ReportEventSettings.tsx +0 -30
- package/src/state/ReportMainChartProps.tsx +0 -61
- package/src/state/ReportPolarOptions.tsx +0 -35
- package/src/state/SetGraphicalItem.ts +0 -79
- package/src/state/SetLegendPayload.ts +0 -134
- package/src/state/SetTooltipEntrySettings.tsx +0 -72
- package/src/state/actions.ts +0 -464
- package/src/state/brushSlice.ts +0 -13
- package/src/state/cartesianAxisSlice.ts +0 -141
- package/src/state/chartDataSlice.ts +0 -50
- package/src/state/chartState.ts +0 -297
- package/src/state/errorBarSlice.ts +0 -29
- package/src/state/eventSettingsSlice.ts +0 -8
- package/src/state/events.ts +0 -76
- package/src/state/externalEventsMiddleware.ts +0 -255
- package/src/state/graphicalItemsSlice.ts +0 -74
- package/src/state/hooks/useChartSelectors.tsx +0 -45
- package/src/state/keyboardEventsMiddleware.ts +0 -228
- package/src/state/layoutSlice.ts +0 -21
- package/src/state/legendSlice.ts +0 -57
- package/src/state/mouseEventsMiddleware.ts +0 -185
- package/src/state/optionsSlice.ts +0 -47
- package/src/state/polarAxisSlice.ts +0 -10
- package/src/state/polarOptionsSlice.ts +0 -12
- package/src/state/rawData.ts +0 -26
- package/src/state/referenceElementsSlice.ts +0 -40
- package/src/state/renderedTicksSlice.ts +0 -15
- package/src/state/rootPropsSlice.ts +0 -47
- package/src/state/selectors/areaSelectors.ts +0 -240
- package/src/state/selectors/arrayEqualityCheck.ts +0 -29
- package/src/state/selectors/axisSelectors.ts +0 -2157
- package/src/state/selectors/barSelectors.ts +0 -310
- package/src/state/selectors/barStackSelectors.ts +0 -77
- package/src/state/selectors/brushSelectors.ts +0 -33
- package/src/state/selectors/chartSelector.ts +0 -185
- package/src/state/selectors/combiners/combineActiveLabel.ts +0 -16
- package/src/state/selectors/combiners/combineActiveTooltipIndex.ts +0 -95
- package/src/state/selectors/combiners/combineAllBarPositions.ts +0 -122
- package/src/state/selectors/combiners/combineAxisRangeWithReverse.ts +0 -16
- package/src/state/selectors/combiners/combineBarPosition.ts +0 -23
- package/src/state/selectors/combiners/combineBarSizeList.ts +0 -80
- package/src/state/selectors/combiners/combineCheckedDomain.ts +0 -48
- package/src/state/selectors/combiners/combineConfiguredScale.ts +0 -111
- package/src/state/selectors/combiners/combineCoordinateForDefaultIndex.ts +0 -45
- package/src/state/selectors/combiners/combineDisplayedStackedData.ts +0 -50
- package/src/state/selectors/combiners/combineInverseScaleFunction.ts +0 -16
- package/src/state/selectors/combiners/combineRealScaleType.ts +0 -44
- package/src/state/selectors/combiners/combineStackedData.ts +0 -27
- package/src/state/selectors/combiners/combineTooltipInteractionState.ts +0 -86
- package/src/state/selectors/combiners/combineTooltipPayload.ts +0 -205
- package/src/state/selectors/combiners/combineTooltipPayloadConfigurations.ts +0 -58
- package/src/state/selectors/containerSelectors.ts +0 -12
- package/src/state/selectors/dataSelectors.ts +0 -88
- package/src/state/selectors/funnelSelectors.ts +0 -75
- package/src/state/selectors/graphicalItemSelectors.ts +0 -30
- package/src/state/selectors/legendSelectors.ts +0 -29
- package/src/state/selectors/lineSelectors.ts +0 -134
- package/src/state/selectors/numberDomainEqualityCheck.ts +0 -14
- package/src/state/selectors/pickAxisId.ts +0 -5
- package/src/state/selectors/pickAxisType.ts +0 -3
- package/src/state/selectors/pieSelectors.ts +0 -97
- package/src/state/selectors/polarAxisSelectors.ts +0 -201
- package/src/state/selectors/polarGridSelectors.ts +0 -28
- package/src/state/selectors/polarScaleSelectors.ts +0 -133
- package/src/state/selectors/polarSelectors.ts +0 -219
- package/src/state/selectors/radarSelectors.ts +0 -191
- package/src/state/selectors/radialBarSelectors.ts +0 -435
- package/src/state/selectors/rootPropsSelectors.ts +0 -25
- package/src/state/selectors/scatterSelectors.ts +0 -96
- package/src/state/selectors/selectActivePropsFromChartPointer.ts +0 -26
- package/src/state/selectors/selectAllAxes.ts +0 -17
- package/src/state/selectors/selectChartOffset.ts +0 -16
- package/src/state/selectors/selectChartOffsetInternal.ts +0 -136
- package/src/state/selectors/selectLegendArea.ts +0 -20
- package/src/state/selectors/selectPlotArea.ts +0 -22
- package/src/state/selectors/selectTooltipAxisId.ts +0 -7
- package/src/state/selectors/selectTooltipAxisType.ts +0 -32
- package/src/state/selectors/selectTooltipEventType.ts +0 -48
- package/src/state/selectors/selectTooltipPayloadSearcher.ts +0 -6
- package/src/state/selectors/selectTooltipSettings.ts +0 -39
- package/src/state/selectors/selectTooltipState.ts +0 -8
- package/src/state/selectors/selectors.ts +0 -271
- package/src/state/selectors/tooltipSelectors.ts +0 -578
- package/src/state/selectors/touchSelectors.ts +0 -31
- package/src/state/store.ts +0 -29
- package/src/state/storeIdentity.ts +0 -9
- package/src/state/teardownWrite.ts +0 -10
- package/src/state/tooltipInteraction.ts +0 -23
- package/src/state/tooltipSlice.ts +0 -334
- package/src/state/touchEventsMiddleware.ts +0 -214
- package/src/state/types/AnimationSettings.ts +0 -20
- package/src/state/types/AreaSettings.ts +0 -14
- package/src/state/types/BarSettings.ts +0 -15
- package/src/state/types/LineSettings.ts +0 -9
- package/src/state/types/PieSettings.ts +0 -34
- package/src/state/types/RadarSettings.ts +0 -5
- package/src/state/types/RadialBarSettings.ts +0 -10
- package/src/state/types/ScatterSettings.ts +0 -12
- package/src/state/types/StackedGraphicalItem.ts +0 -34
- package/src/state/useChartState.ts +0 -17
- package/src/state/zIndexSlice.ts +0 -39
- package/src/synchronisation/syncSelectors.ts +0 -7
- package/src/synchronisation/types.ts +0 -44
- package/src/synchronisation/useChartSynchronisation.tsx +0 -404
- package/src/theme/RechartsTheme.ts +0 -16
- package/src/theme/RechartsThemeContext.ts +0 -19
- package/src/theme/darkTheme.ts +0 -13
- package/src/theme/graphicalItemIdentity.ts +0 -70
- package/src/theme/legacyTheme.ts +0 -17
- package/src/theme/lightTheme.ts +0 -13
- package/src/types.ts +0 -54
- package/src/util/ActiveShapeUtils.tsx +0 -162
- package/src/util/BarUtils.tsx +0 -62
- package/src/util/BarePortal.tsx +0 -50
- package/src/util/CamelCaseSVGAttrs.ts +0 -34
- package/src/util/CartesianUtils.ts +0 -48
- package/src/util/ChartUtils.ts +0 -802
- package/src/util/Constants.ts +0 -42
- package/src/util/CssPrefixUtils.ts +0 -20
- package/src/util/DOMUtils.ts +0 -129
- package/src/util/DataUtils.ts +0 -216
- package/src/util/Events.ts +0 -16
- package/src/util/FunnelUtils.tsx +0 -15
- package/src/util/Global.ts +0 -12
- package/src/util/IfOverflow.ts +0 -15
- package/src/util/LRUCache.ts +0 -41
- package/src/util/LogUtils.ts +0 -22
- package/src/util/PolarUtils.ts +0 -132
- package/src/util/RadialBarUtils.tsx +0 -24
- package/src/util/ReactUtils.ts +0 -95
- package/src/util/ReduceCSSCalc.ts +0 -187
- package/src/util/ScatterUtils.tsx +0 -52
- package/src/util/ShapeElementProps.tsx +0 -87
- package/src/util/TickUtils.ts +0 -60
- package/src/util/XAxisUtils.ts +0 -48
- package/src/util/YAxisUtils.ts +0 -48
- package/src/util/axisPropsAreEqual.ts +0 -48
- package/src/util/createCartesianCharts.tsx +0 -150
- package/src/util/createEventProxy.ts +0 -20
- package/src/util/createPolarCharts.tsx +0 -112
- package/src/util/cursor/getCursorPoints.ts +0 -46
- package/src/util/cursor/getCursorRectangle.ts +0 -28
- package/src/util/cursor/getRadialCursorPoints.ts +0 -32
- package/src/util/excludeEventProps.ts +0 -171
- package/src/util/getActiveCoordinate.ts +0 -213
- package/src/util/getAxisTypeBasedOnLayout.ts +0 -21
- package/src/util/getClassNameFromUnknown.ts +0 -6
- package/src/util/getEveryNth.ts +0 -27
- package/src/util/getRadiusAndStrokeWidthFromDot.ts +0 -35
- package/src/util/getRelativeCoordinate.ts +0 -80
- package/src/util/getSliced.ts +0 -13
- package/src/util/hoverDedupe.ts +0 -41
- package/src/util/isDomainSpecifiedByUser.ts +0 -219
- package/src/util/isWellBehavedNumber.ts +0 -7
- package/src/util/pathTotalLength.ts +0 -25
- package/src/util/payload/getUniqPayload.ts +0 -28
- package/src/util/propsAreEqual.ts +0 -121
- package/src/util/resolveDefaultProps.ts +0 -161
- package/src/util/round.ts +0 -32
- package/src/util/scale/CartesianScaleHelper.ts +0 -72
- package/src/util/scale/CustomScaleDefinition.ts +0 -81
- package/src/util/scale/RechartsScale.ts +0 -130
- package/src/util/scale/createCategoricalInverse.ts +0 -72
- package/src/util/scale/getNiceTickValues.ts +0 -311
- package/src/util/scale/index.ts +0 -2
- package/src/util/scale/util/arithmetic.ts +0 -54
- package/src/util/solid-1-compat.ts +0 -310
- package/src/util/solidJsxCamelAugment.d.ts +0 -84
- package/src/util/stacks/getStackSeriesIdentifier.ts +0 -21
- package/src/util/stacks/stackTypes.ts +0 -60
- package/src/util/structurallyEqual.ts +0 -31
- package/src/util/svgPropertiesAndEvents.ts +0 -53
- package/src/util/svgPropertiesNoEvents.ts +0 -571
- package/src/util/tooltip/translate.ts +0 -171
- package/src/util/typedDataKey.ts +0 -48
- package/src/util/types.ts +0 -1560
- package/src/util/useAnimationId.ts +0 -31
- package/src/util/useElementOffset.ts +0 -110
- package/src/util/useId.ts +0 -8
- package/src/util/usePrefersReducedMotion.ts +0 -48
- package/src/util/useReportScale.ts +0 -24
- package/src/util/useUniqueId.ts +0 -30
- package/src/zIndex/DefaultZIndexes.ts +0 -84
- package/src/zIndex/ZIndexLayer.tsx +0 -121
- package/src/zIndex/ZIndexPortal.tsx +0 -79
- package/src/zIndex/getZIndexFromUnknown.ts +0 -14
- package/src/zIndex/zIndexSelectors.ts +0 -48
|
@@ -1,711 +0,0 @@
|
|
|
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"
|