@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
package/src/hooks.ts
DELETED
|
@@ -1,476 +0,0 @@
|
|
|
1
|
-
/* eslint-disable import/no-cycle */
|
|
2
|
-
import type { AxisId } from "./state/cartesianAxisSlice"
|
|
3
|
-
import { defaultAxisId } from "./state/cartesianAxisSlice"
|
|
4
|
-
import {
|
|
5
|
-
type BaseAxisWithScale,
|
|
6
|
-
selectAxisDomain,
|
|
7
|
-
selectAxisInverseScale,
|
|
8
|
-
selectAxisInverseDataSnapScale,
|
|
9
|
-
selectAxisInverseTickSnapScale,
|
|
10
|
-
selectAxisScale,
|
|
11
|
-
selectAxisWithScale,
|
|
12
|
-
selectTicksOfAxis,
|
|
13
|
-
} from "./state/selectors/axisSelectors"
|
|
14
|
-
import { useOptionalChartState } from "./state/useChartState"
|
|
15
|
-
import type { ChartState } from "./state/chartState"
|
|
16
|
-
import { useIsPanorama } from "./context/PanoramaContext"
|
|
17
|
-
import {
|
|
18
|
-
selectActiveLabel,
|
|
19
|
-
selectActiveTooltipCoordinate,
|
|
20
|
-
selectActiveTooltipDataPoints,
|
|
21
|
-
} from "./state/selectors/tooltipSelectors"
|
|
22
|
-
import type { ChartOffset, PlotArea } from "./types"
|
|
23
|
-
import { selectChartOffset } from "./state/selectors/selectChartOffset"
|
|
24
|
-
import { selectPlotArea } from "./state/selectors/selectPlotArea"
|
|
25
|
-
import type { CategoricalDomain, Coordinate, NumberDomain, CartesianTickItem } from "./util/types"
|
|
26
|
-
import type { ActiveLabel } from "./synchronisation/types"
|
|
27
|
-
import type { BandPosition } from "./util/scale/RechartsScale"
|
|
28
|
-
|
|
29
|
-
function useSelectorState(): ChartState | undefined {
|
|
30
|
-
const chart = useOptionalChartState()
|
|
31
|
-
if (chart == null) return undefined
|
|
32
|
-
return chart.state
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export const useXAxis = (xAxisId: AxisId): BaseAxisWithScale | undefined => {
|
|
36
|
-
const state = useSelectorState()
|
|
37
|
-
const isPanorama = useIsPanorama()
|
|
38
|
-
if (state == null) return undefined
|
|
39
|
-
return selectAxisWithScale(state, "xAxis", xAxisId, isPanorama)
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export const useYAxis = (yAxisId: AxisId): BaseAxisWithScale | undefined => {
|
|
43
|
-
const state = useSelectorState()
|
|
44
|
-
const isPanorama = useIsPanorama()
|
|
45
|
-
if (state == null) return undefined
|
|
46
|
-
return selectAxisWithScale(state, "yAxis", yAxisId, isPanorama)
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* A function that converts data values to pixel coordinates.
|
|
51
|
-
* @param value - The data value to convert (number, string, or category).
|
|
52
|
-
* @param options - Optional configuration for banded scales.
|
|
53
|
-
* @param options.position - Position within a band: 'start', 'middle', or 'end'.
|
|
54
|
-
* @returns The pixel coordinate, or `undefined` if the value is not in the domain.
|
|
55
|
-
*/
|
|
56
|
-
export type ScaleFunction = (
|
|
57
|
-
value: unknown,
|
|
58
|
-
options?: { position?: BandPosition },
|
|
59
|
-
) => number | undefined
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* A function that converts pixel coordinates back to data values.
|
|
63
|
-
* @param pixelValue - The pixel coordinate to convert.
|
|
64
|
-
* @returns The closest data value in the domain.
|
|
65
|
-
*/
|
|
66
|
-
export type InverseScaleFunction = (pixelValue: number) => unknown
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Returns a function to convert data values to pixel coordinates for an {@link XAxis}.
|
|
70
|
-
*
|
|
71
|
-
* This is useful for positioning annotations, custom shapes, or other elements
|
|
72
|
-
* at specific data points on the chart.
|
|
73
|
-
*
|
|
74
|
-
* This hook must be used within a chart context (inside a {@link LineChart}, {@link BarChart}, etc.).
|
|
75
|
-
* Returns `undefined` if used outside a chart context, or if the axes don't exist.
|
|
76
|
-
*
|
|
77
|
-
* Reactive when called inside a tracked scope (JSX, `createMemo`, `createEffect`).
|
|
78
|
-
* See GOTCHA-011.
|
|
79
|
-
*
|
|
80
|
-
* @example
|
|
81
|
-
* ```tsx
|
|
82
|
-
* const xScale = useXAxisScale()
|
|
83
|
-
* if (xScale) {
|
|
84
|
-
* const pixelX = xScale('Page A')
|
|
85
|
-
* }
|
|
86
|
-
* ```
|
|
87
|
-
*
|
|
88
|
-
* @param xAxisId The `xAxisId` of the XAxis. Defaults to `0` if not provided.
|
|
89
|
-
* @returns A scale function that maps data values to pixel coordinates, or `undefined`.
|
|
90
|
-
* @since 3.8
|
|
91
|
-
*/
|
|
92
|
-
export const useXAxisScale = (
|
|
93
|
-
xAxisId: AxisId = defaultAxisId,
|
|
94
|
-
): ScaleFunction | undefined => {
|
|
95
|
-
const state = useSelectorState()
|
|
96
|
-
const isPanorama = useIsPanorama()
|
|
97
|
-
if (state == null) return undefined
|
|
98
|
-
const scale = selectAxisScale(state, "xAxis", xAxisId, isPanorama)
|
|
99
|
-
return scale?.map
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* Returns a function to convert data values to pixel coordinates for a {@link YAxis}.
|
|
104
|
-
*
|
|
105
|
-
* This is useful for positioning annotations, custom shapes, or other elements
|
|
106
|
-
* at specific data points on the chart.
|
|
107
|
-
*
|
|
108
|
-
* This hook must be used within a chart context (inside a {@link LineChart}, {@link BarChart}, etc.).
|
|
109
|
-
* Returns `undefined` if used outside a chart context, or if the axes don't exist.
|
|
110
|
-
*
|
|
111
|
-
* @example
|
|
112
|
-
* ```tsx
|
|
113
|
-
* const yScale = useYAxisScale()
|
|
114
|
-
* if (yScale) {
|
|
115
|
-
* const pixelY = yScale(1500)
|
|
116
|
-
* }
|
|
117
|
-
* ```
|
|
118
|
-
*
|
|
119
|
-
* @param yAxisId The `yAxisId` of the YAxis. Defaults to `0` if not provided.
|
|
120
|
-
* @returns A scale function that maps data values to pixel coordinates, or `undefined`.
|
|
121
|
-
* @since 3.8
|
|
122
|
-
*/
|
|
123
|
-
export const useYAxisScale = (
|
|
124
|
-
yAxisId: AxisId = defaultAxisId,
|
|
125
|
-
): ScaleFunction | undefined => {
|
|
126
|
-
const state = useSelectorState()
|
|
127
|
-
const isPanorama = useIsPanorama()
|
|
128
|
-
if (state == null) return undefined
|
|
129
|
-
const scale = selectAxisScale(state, "yAxis", yAxisId, isPanorama)
|
|
130
|
-
return scale?.map
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
/**
|
|
134
|
-
* Returns a function to convert pixel coordinates back to data values for an {@link XAxis}.
|
|
135
|
-
*
|
|
136
|
-
* For continuous (numerical) scales, returns an interpolated value.
|
|
137
|
-
* For categorical scales, returns the closest category in the domain - which is the same behaviour as {@link useXAxisInverseDataSnapScale}.
|
|
138
|
-
*
|
|
139
|
-
* This hook must be used within a chart context (inside a {@link LineChart}, {@link BarChart}, etc.).
|
|
140
|
-
* Returns `undefined` if used outside a chart context, or if the axes don't exist.
|
|
141
|
-
*
|
|
142
|
-
* @param xAxisId The `xAxisId` of the XAxis. Defaults to `0` if not provided.
|
|
143
|
-
* @returns An inverse scale function that maps pixel coordinates to data values, or `undefined`.
|
|
144
|
-
* @since 3.8
|
|
145
|
-
*/
|
|
146
|
-
export const useXAxisInverseScale = (
|
|
147
|
-
xAxisId: AxisId = defaultAxisId,
|
|
148
|
-
): InverseScaleFunction | undefined => {
|
|
149
|
-
const state = useSelectorState()
|
|
150
|
-
const isPanorama = useIsPanorama()
|
|
151
|
-
if (state == null) return undefined
|
|
152
|
-
return selectAxisInverseScale(state, "xAxis", xAxisId, isPanorama)
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* Returns a function to convert pixel coordinates back to data values for an {@link XAxis},
|
|
157
|
-
* but snapping to the closest data point.
|
|
158
|
-
*
|
|
159
|
-
* @param xAxisId The `xAxisId` of the XAxis. Defaults to `0` if not provided.
|
|
160
|
-
* @returns An inverse scale function that maps pixel coordinates to the closest data value, or `undefined`.
|
|
161
|
-
* @since 3.8
|
|
162
|
-
*/
|
|
163
|
-
export const useXAxisInverseDataSnapScale = (
|
|
164
|
-
xAxisId: AxisId = defaultAxisId,
|
|
165
|
-
): InverseScaleFunction | undefined => {
|
|
166
|
-
const state = useSelectorState()
|
|
167
|
-
const isPanorama = useIsPanorama()
|
|
168
|
-
if (state == null) return undefined
|
|
169
|
-
return selectAxisInverseDataSnapScale(state, "xAxis", xAxisId, isPanorama)
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
/**
|
|
173
|
-
* Returns a function to convert pixel coordinates back to data values for an {@link XAxis},
|
|
174
|
-
* but snapping to the closest axis tick.
|
|
175
|
-
*
|
|
176
|
-
* @param xAxisId The `xAxisId` of the XAxis. Defaults to `0` if not provided.
|
|
177
|
-
* @returns An inverse scale function that maps pixel coordinates to the closest tick value, or `undefined`.
|
|
178
|
-
* @since 3.8
|
|
179
|
-
*/
|
|
180
|
-
export const useXAxisInverseTickSnapScale = (
|
|
181
|
-
xAxisId: AxisId = defaultAxisId,
|
|
182
|
-
): InverseScaleFunction | undefined => {
|
|
183
|
-
const state = useSelectorState()
|
|
184
|
-
const isPanorama = useIsPanorama()
|
|
185
|
-
if (state == null) return undefined
|
|
186
|
-
return selectAxisInverseTickSnapScale(state, "xAxis", xAxisId, isPanorama)
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
/**
|
|
190
|
-
* Returns a function to convert pixel coordinates back to data values for a {@link YAxis}.
|
|
191
|
-
*
|
|
192
|
-
* @param yAxisId The `yAxisId` of the YAxis. Defaults to `0` if not provided.
|
|
193
|
-
* @returns An inverse scale function that maps pixel coordinates to data values, or `undefined`.
|
|
194
|
-
* @since 3.8
|
|
195
|
-
*/
|
|
196
|
-
export const useYAxisInverseScale = (
|
|
197
|
-
yAxisId: AxisId = defaultAxisId,
|
|
198
|
-
): InverseScaleFunction | undefined => {
|
|
199
|
-
const state = useSelectorState()
|
|
200
|
-
const isPanorama = useIsPanorama()
|
|
201
|
-
if (state == null) return undefined
|
|
202
|
-
return selectAxisInverseScale(state, "yAxis", yAxisId, isPanorama)
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
/**
|
|
206
|
-
* Returns a function to convert pixel coordinates back to data values for a {@link YAxis},
|
|
207
|
-
* but snapping to the closest data point.
|
|
208
|
-
*
|
|
209
|
-
* @param yAxisId The `yAxisId` of the YAxis. Defaults to `0` if not provided.
|
|
210
|
-
* @returns An inverse scale function that maps pixel coordinates to the closest data value, or `undefined`.
|
|
211
|
-
* @since 3.8
|
|
212
|
-
*/
|
|
213
|
-
export const useYAxisInverseDataSnapScale = (
|
|
214
|
-
yAxisId: AxisId = defaultAxisId,
|
|
215
|
-
): InverseScaleFunction | undefined => {
|
|
216
|
-
const state = useSelectorState()
|
|
217
|
-
const isPanorama = useIsPanorama()
|
|
218
|
-
if (state == null) return undefined
|
|
219
|
-
return selectAxisInverseDataSnapScale(state, "yAxis", yAxisId, isPanorama)
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
/**
|
|
223
|
-
* Returns a function to convert pixel coordinates back to data values for a {@link YAxis},
|
|
224
|
-
* but snapping to the closest axis tick.
|
|
225
|
-
*
|
|
226
|
-
* @param yAxisId The `yAxisId` of the YAxis. Defaults to `0` if not provided.
|
|
227
|
-
* @returns An inverse scale function that maps pixel coordinates to the closest tick value, or `undefined`.
|
|
228
|
-
* @since 3.8
|
|
229
|
-
*/
|
|
230
|
-
export const useYAxisInverseTickSnapScale = (
|
|
231
|
-
yAxisId: AxisId = defaultAxisId,
|
|
232
|
-
): InverseScaleFunction | undefined => {
|
|
233
|
-
const state = useSelectorState()
|
|
234
|
-
const isPanorama = useIsPanorama()
|
|
235
|
-
if (state == null) return undefined
|
|
236
|
-
return selectAxisInverseTickSnapScale(state, "yAxis", yAxisId, isPanorama)
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
/**
|
|
240
|
-
* Returns the ticks of an {@link XAxis}.
|
|
241
|
-
*
|
|
242
|
-
* @param xAxisId The `xAxisId` of the XAxis. Defaults to `0` if not provided.
|
|
243
|
-
* @returns An array of ticks, or `undefined` if the axis doesn't exist or hasn't been calculated yet.
|
|
244
|
-
* @since 3.8
|
|
245
|
-
*/
|
|
246
|
-
export const useXAxisTicks = (
|
|
247
|
-
xAxisId: AxisId = defaultAxisId,
|
|
248
|
-
): ReadonlyArray<CartesianTickItem> | undefined => {
|
|
249
|
-
const state = useSelectorState()
|
|
250
|
-
const isPanorama = useIsPanorama()
|
|
251
|
-
if (state == null) return undefined
|
|
252
|
-
return selectTicksOfAxis(state, "xAxis", xAxisId, isPanorama)
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
/**
|
|
256
|
-
* Returns the ticks of a {@link YAxis}.
|
|
257
|
-
*
|
|
258
|
-
* @param yAxisId The `yAxisId` of the YAxis. Defaults to `0` if not provided.
|
|
259
|
-
* @returns An array of ticks, or `undefined` if the axis doesn't exist or hasn't been calculated yet.
|
|
260
|
-
* @since 3.8
|
|
261
|
-
*/
|
|
262
|
-
export const useYAxisTicks = (
|
|
263
|
-
yAxisId: AxisId = defaultAxisId,
|
|
264
|
-
): ReadonlyArray<CartesianTickItem> | undefined => {
|
|
265
|
-
const state = useSelectorState()
|
|
266
|
-
const isPanorama = useIsPanorama()
|
|
267
|
-
if (state == null) return undefined
|
|
268
|
-
return selectTicksOfAxis(state, "yAxis", yAxisId, isPanorama)
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
/**
|
|
272
|
-
* Data point with x and y values that can be converted to pixel coordinates.
|
|
273
|
-
* The x and y values should be in the same format as your chart data.
|
|
274
|
-
*/
|
|
275
|
-
export type CartesianDataPoint = {
|
|
276
|
-
x: number | string
|
|
277
|
-
y: number | string
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
/**
|
|
281
|
-
* Converts a data point (in data coordinates) to pixel coordinates.
|
|
282
|
-
*
|
|
283
|
-
* This is a convenience hook that combines {@link useXAxisScale} and {@link useYAxisScale} together in a single call.
|
|
284
|
-
*
|
|
285
|
-
* @example
|
|
286
|
-
* ```tsx
|
|
287
|
-
* const coords = useCartesianScale({ x: 'Page C', y: 2500 })
|
|
288
|
-
* if (coords) {
|
|
289
|
-
* return <circle cx={coords.x} cy={coords.y} r={5} fill="red" />
|
|
290
|
-
* }
|
|
291
|
-
* ```
|
|
292
|
-
*
|
|
293
|
-
* @param dataPoint The data point with x and y values in data coordinates.
|
|
294
|
-
* @param xAxisId The `xAxisId` of the X-axis. Defaults to `0` if not provided.
|
|
295
|
-
* @param yAxisId The `yAxisId` of the Y-axis. Defaults to `0` if not provided.
|
|
296
|
-
* @returns The pixel x,y coordinates, or `undefined` if conversion is not possible.
|
|
297
|
-
* @since 3.8
|
|
298
|
-
*/
|
|
299
|
-
export const useCartesianScale = (
|
|
300
|
-
dataPoint: CartesianDataPoint,
|
|
301
|
-
xAxisId: AxisId = defaultAxisId,
|
|
302
|
-
yAxisId: AxisId = defaultAxisId,
|
|
303
|
-
): Coordinate | undefined => {
|
|
304
|
-
const xFn = useXAxisScale(xAxisId)
|
|
305
|
-
const yFn = useYAxisScale(yAxisId)
|
|
306
|
-
|
|
307
|
-
if (xFn == null || yFn == null) {
|
|
308
|
-
return undefined
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
const pixelX = xFn(dataPoint.x)
|
|
312
|
-
const pixelY = yFn(dataPoint.y)
|
|
313
|
-
|
|
314
|
-
if (pixelX == null || pixelY == null) {
|
|
315
|
-
return undefined
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
return { x: pixelX, y: pixelY }
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
/**
|
|
322
|
-
* Returns the active tooltip label. The label is one of the values from the chart data,
|
|
323
|
-
* and is used to display in the tooltip content.
|
|
324
|
-
*
|
|
325
|
-
* Returns undefined if there is no active user interaction or if used outside a chart context.
|
|
326
|
-
*
|
|
327
|
-
* @returns ActiveLabel
|
|
328
|
-
* @since 3.0
|
|
329
|
-
*/
|
|
330
|
-
export const useActiveTooltipLabel = (): ActiveLabel => {
|
|
331
|
-
const state = useSelectorState()
|
|
332
|
-
if (state == null) return undefined
|
|
333
|
-
return selectActiveLabel(state)
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
/**
|
|
337
|
-
* Returns the offset of the chart in pixels.
|
|
338
|
-
*
|
|
339
|
-
* Offset defines the blank space between the chart and the plot area.
|
|
340
|
-
* This blank space is occupied by supporting elements like axes, legends, and brushes.
|
|
341
|
-
*
|
|
342
|
-
* The offset includes:
|
|
343
|
-
*
|
|
344
|
-
* - Margins
|
|
345
|
-
* - Width and height of the axes
|
|
346
|
-
* - Width and height of the legend
|
|
347
|
-
* - Brush height
|
|
348
|
-
*
|
|
349
|
-
* If you are interested in the margin alone, use {@link useMargin} instead.
|
|
350
|
-
*
|
|
351
|
-
* The offset is independent of charts position on the page, meaning it does not change as the chart is scrolled or resized.
|
|
352
|
-
*
|
|
353
|
-
* It is also independent of the scale and zoom, meaning that as the user zooms in and out,
|
|
354
|
-
* the numbers will not change as the chart gets visually larger or smaller.
|
|
355
|
-
*
|
|
356
|
-
* This hook must be used within a chart context (inside a `<LineChart>`, `<BarChart>`, etc.).
|
|
357
|
-
* This hook returns `undefined` if used outside a chart context.
|
|
358
|
-
*
|
|
359
|
-
* @returns The chart offset in pixels, or undefined if used outside a chart context.
|
|
360
|
-
* @since 3.1
|
|
361
|
-
*/
|
|
362
|
-
export const useOffset = (): ChartOffset | undefined => {
|
|
363
|
-
const state = useSelectorState()
|
|
364
|
-
if (state == null) return undefined
|
|
365
|
-
return selectChartOffset(state)
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
/**
|
|
369
|
-
* Plot area is the area where the actual chart data is rendered.
|
|
370
|
-
* This means: bars, lines, scatter points, etc.
|
|
371
|
-
*
|
|
372
|
-
* The plot area is calculated based on the chart dimensions and the offset.
|
|
373
|
-
*
|
|
374
|
-
* Plot area `width` and `height` are the dimensions in pixels;
|
|
375
|
-
* `x` and `y` are the coordinates of the top-left corner of the plot area relative to the chart container.
|
|
376
|
-
*
|
|
377
|
-
* They are also independent of the scale and zoom, meaning that as the user zooms in and out,
|
|
378
|
-
* the plot area dimensions will not change as the chart gets visually larger or smaller.
|
|
379
|
-
*
|
|
380
|
-
* This hook must be used within a chart context (inside a `<LineChart>`, `<BarChart>`, etc.).
|
|
381
|
-
* This hook returns `undefined` if used outside a chart context.
|
|
382
|
-
*
|
|
383
|
-
* @returns The plot area of the chart in pixels, or undefined if used outside a chart context.
|
|
384
|
-
* @since 3.1
|
|
385
|
-
*/
|
|
386
|
-
export const usePlotArea = (): PlotArea | undefined => {
|
|
387
|
-
const state = useSelectorState()
|
|
388
|
-
if (state == null) return undefined
|
|
389
|
-
return selectPlotArea(state)
|
|
390
|
-
}
|
|
391
|
-
|
|
392
|
-
/**
|
|
393
|
-
* Returns the currently active data points being displayed in the Tooltip.
|
|
394
|
-
* Active means that it is currently visible; this hook will return `undefined` if there is no current interaction.
|
|
395
|
-
*
|
|
396
|
-
* This follows the `<Tooltip />` props, if the Tooltip element is present in the chart.
|
|
397
|
-
* If there is no `<Tooltip />` then this hook will follow the default Tooltip props.
|
|
398
|
-
*
|
|
399
|
-
* Data point is whatever you pass as an input to the chart using the `data={}` prop.
|
|
400
|
-
*
|
|
401
|
-
* This returns an array because a chart can have multiple graphical items in it (multiple Lines for example)
|
|
402
|
-
* and tooltip with `shared={true}` will display all items at the same time.
|
|
403
|
-
*
|
|
404
|
-
* Returns undefined when used outside a chart context.
|
|
405
|
-
*
|
|
406
|
-
* @returns Data points that are currently visible in a Tooltip
|
|
407
|
-
*/
|
|
408
|
-
export const useActiveTooltipDataPoints = <T = unknown>(): ReadonlyArray<T> | undefined => {
|
|
409
|
-
const state = useSelectorState()
|
|
410
|
-
if (state == null) return undefined
|
|
411
|
-
return selectActiveTooltipDataPoints(state) as ReadonlyArray<T> | undefined
|
|
412
|
-
}
|
|
413
|
-
|
|
414
|
-
/**
|
|
415
|
-
* Returns the calculated domain of an X-axis.
|
|
416
|
-
*
|
|
417
|
-
* The domain can be numerical: `[min, max]`, or categorical: `['a', 'b', 'c']`.
|
|
418
|
-
*
|
|
419
|
-
* @param xAxisId The `xAxisId` of the X-axis. Defaults to `0` if not provided.
|
|
420
|
-
* @returns The domain of the X-axis, or `undefined` if it cannot be calculated or if used outside a chart context.
|
|
421
|
-
* @since 3.2
|
|
422
|
-
*/
|
|
423
|
-
export const useXAxisDomain = (
|
|
424
|
-
xAxisId: AxisId = defaultAxisId,
|
|
425
|
-
): NumberDomain | CategoricalDomain | undefined => {
|
|
426
|
-
const state = useSelectorState()
|
|
427
|
-
const isPanorama = useIsPanorama()
|
|
428
|
-
if (state == null) return undefined
|
|
429
|
-
return selectAxisDomain(state, "xAxis", xAxisId, isPanorama)
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
/**
|
|
433
|
-
* Returns the calculated domain of a Y-axis.
|
|
434
|
-
*
|
|
435
|
-
* @param yAxisId The `yAxisId` of the Y-axis. Defaults to `0` if not provided.
|
|
436
|
-
* @returns The domain of the Y-axis, or `undefined` if it cannot be calculated or if used outside a chart context.
|
|
437
|
-
* @since 3.2
|
|
438
|
-
*/
|
|
439
|
-
export const useYAxisDomain = (
|
|
440
|
-
yAxisId: AxisId = defaultAxisId,
|
|
441
|
-
): NumberDomain | CategoricalDomain | undefined => {
|
|
442
|
-
const state = useSelectorState()
|
|
443
|
-
const isPanorama = useIsPanorama()
|
|
444
|
-
if (state == null) return undefined
|
|
445
|
-
return selectAxisDomain(state, "yAxis", yAxisId, isPanorama)
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
/**
|
|
449
|
-
* Returns true if the {@link Tooltip} is currently active (visible).
|
|
450
|
-
*
|
|
451
|
-
* Returns false if the Tooltip is not active or if used outside a chart context.
|
|
452
|
-
*
|
|
453
|
-
* @returns True if the Tooltip is active, false otherwise.
|
|
454
|
-
* @since 3.7
|
|
455
|
-
*/
|
|
456
|
-
export const useIsTooltipActive = (): boolean => {
|
|
457
|
-
const chart = useOptionalChartState()
|
|
458
|
-
if (chart == null) return false
|
|
459
|
-
return chart.state.tooltip.settings.active === true
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
/**
|
|
463
|
-
* Returns the Cartesian `x` + `y` coordinates of the active {@link Tooltip}.
|
|
464
|
-
*
|
|
465
|
-
* Returns undefined if there is no active user interaction or if used outside a chart context.
|
|
466
|
-
*
|
|
467
|
-
* @returns The coordinate of the active Tooltip, or undefined.
|
|
468
|
-
* @since 3.7
|
|
469
|
-
*/
|
|
470
|
-
export const useActiveTooltipCoordinate = (): Coordinate | undefined => {
|
|
471
|
-
const chart = useOptionalChartState()
|
|
472
|
-
if (chart == null) return undefined
|
|
473
|
-
if (chart.state.tooltip.settings.active !== true) return undefined
|
|
474
|
-
const coordinate = selectActiveTooltipCoordinate(chart.state)
|
|
475
|
-
return coordinate != null ? { x: coordinate.x, y: coordinate.y } : { x: 0, y: 0 }
|
|
476
|
-
}
|