@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.
Files changed (304) hide show
  1. package/dist/index.d.ts +40 -2
  2. package/dist/index.js +14238 -7174
  3. package/dist/{dev.js → index.jsx} +18367 -15900
  4. package/dist/server.js +48178 -0
  5. package/package.json +36 -19
  6. package/src/animation/AnimatedItems.tsx +0 -183
  7. package/src/animation/AnimationController.ts +0 -33
  8. package/src/animation/AnimationControllerImpl.ts +0 -36
  9. package/src/animation/AnimationHandle.ts +0 -307
  10. package/src/animation/CSSTransitionAnimate.tsx +0 -170
  11. package/src/animation/JavascriptAnimate.tsx +0 -119
  12. package/src/animation/easing.ts +0 -221
  13. package/src/animation/matchBy.ts +0 -164
  14. package/src/animation/timeoutController.ts +0 -70
  15. package/src/animation/useAnimationController.tsx +0 -34
  16. package/src/animation/useAnimationStartSnapshot.ts +0 -118
  17. package/src/animation/util.ts +0 -41
  18. package/src/cartesian/Area.tsx +0 -915
  19. package/src/cartesian/AreaRevealShape.tsx +0 -190
  20. package/src/cartesian/Bar.tsx +0 -1369
  21. package/src/cartesian/BarStack.tsx +0 -152
  22. package/src/cartesian/Brush.tsx +0 -951
  23. package/src/cartesian/CartesianAxis.tsx +0 -722
  24. package/src/cartesian/CartesianGrid.tsx +0 -711
  25. package/src/cartesian/ErrorBar.tsx +0 -361
  26. package/src/cartesian/Funnel.tsx +0 -803
  27. package/src/cartesian/GraphicalItemClipPath.tsx +0 -67
  28. package/src/cartesian/Line.tsx +0 -863
  29. package/src/cartesian/LineDrawShape.tsx +0 -89
  30. package/src/cartesian/ReferenceArea.tsx +0 -331
  31. package/src/cartesian/ReferenceDot.tsx +0 -304
  32. package/src/cartesian/ReferenceLine.tsx +0 -474
  33. package/src/cartesian/Scatter.tsx +0 -888
  34. package/src/cartesian/XAxis.tsx +0 -433
  35. package/src/cartesian/YAxis.tsx +0 -443
  36. package/src/cartesian/ZAxis.tsx +0 -155
  37. package/src/cartesian/cartesianPositionToCSSTranslate.tsx +0 -29
  38. package/src/cartesian/cartesianViewBoxToTrapezoid.tsx +0 -21
  39. package/src/cartesian/getCartesianPosition.tsx +0 -267
  40. package/src/cartesian/getEquidistantTicks.ts +0 -144
  41. package/src/cartesian/getTicks.ts +0 -225
  42. package/src/cartesian/isOutsidePosition.ts +0 -15
  43. package/src/cartesian/useAnimatedLineLength.ts +0 -54
  44. package/src/chart/AreaChart.tsx +0 -29
  45. package/src/chart/BarChart.tsx +0 -29
  46. package/src/chart/CartesianChart.tsx +0 -131
  47. package/src/chart/CategoricalChart.tsx +0 -94
  48. package/src/chart/ComposedChart.tsx +0 -29
  49. package/src/chart/FunnelChart.tsx +0 -29
  50. package/src/chart/LineChart.tsx +0 -29
  51. package/src/chart/PieChart.tsx +0 -50
  52. package/src/chart/PolarChart.tsx +0 -164
  53. package/src/chart/RadarChart.tsx +0 -70
  54. package/src/chart/RadialBarChart.tsx +0 -46
  55. package/src/chart/RechartsWrapper.tsx +0 -551
  56. package/src/chart/Sankey.tsx +0 -1534
  57. package/src/chart/ScatterChart.tsx +0 -29
  58. package/src/chart/SunburstChart.tsx +0 -504
  59. package/src/chart/Treemap.tsx +0 -1223
  60. package/src/chart/createInitialRootProps.ts +0 -24
  61. package/src/chart/types.ts +0 -53
  62. package/src/component/ActivePoints.tsx +0 -144
  63. package/src/component/Cell.tsx +0 -37
  64. package/src/component/Cursor.tsx +0 -185
  65. package/src/component/Customized.tsx +0 -50
  66. package/src/component/DefaultLegendContent.tsx +0 -348
  67. package/src/component/DefaultTooltipContent.tsx +0 -224
  68. package/src/component/Dots.tsx +0 -157
  69. package/src/component/Label.tsx +0 -636
  70. package/src/component/LabelList.tsx +0 -375
  71. package/src/component/Legend.tsx +0 -512
  72. package/src/component/ResponsiveContainer.tsx +0 -348
  73. package/src/component/Text.tsx +0 -541
  74. package/src/component/Tooltip.tsx +0 -470
  75. package/src/component/TooltipBoundingBox.tsx +0 -146
  76. package/src/component/responsiveContainerUtils.ts +0 -134
  77. package/src/container/ClipPathProvider.tsx +0 -51
  78. package/src/container/Layer.tsx +0 -38
  79. package/src/container/RootSurface.tsx +0 -120
  80. package/src/container/Surface.tsx +0 -61
  81. package/src/context/CellsContext.tsx +0 -54
  82. package/src/context/ErrorBarContext.tsx +0 -146
  83. package/src/context/GraphicalItemChildrenScope.tsx +0 -18
  84. package/src/context/PanoramaContext.tsx +0 -9
  85. package/src/context/RegisterGraphicalItemId.tsx +0 -30
  86. package/src/context/accessibilityContext.tsx +0 -6
  87. package/src/context/brushUpdateContext.tsx +0 -9
  88. package/src/context/chartDataContext.tsx +0 -97
  89. package/src/context/chartLayoutContext.tsx +0 -201
  90. package/src/context/legendPayloadContext.tsx +0 -20
  91. package/src/context/legendPortalContext.tsx +0 -12
  92. package/src/context/tooltipContext.tsx +0 -89
  93. package/src/context/tooltipPortalContext.tsx +0 -12
  94. package/src/context/useTooltipAxis.ts +0 -22
  95. package/src/hooks.ts +0 -476
  96. package/src/index.ts +0 -280
  97. package/src/polar/Pie.tsx +0 -1360
  98. package/src/polar/PolarAngleAxis.tsx +0 -616
  99. package/src/polar/PolarGrid.tsx +0 -312
  100. package/src/polar/PolarRadiusAxis.tsx +0 -547
  101. package/src/polar/Radar.tsx +0 -734
  102. package/src/polar/RadialBar.tsx +0 -917
  103. package/src/polar/defaultPolarAngleAxisProps.tsx +0 -27
  104. package/src/polar/defaultPolarRadiusAxisProps.tsx +0 -25
  105. package/src/shape/Cross.tsx +0 -89
  106. package/src/shape/Curve.tsx +0 -343
  107. package/src/shape/Dot.tsx +0 -70
  108. package/src/shape/Polygon.tsx +0 -195
  109. package/src/shape/Rectangle.tsx +0 -470
  110. package/src/shape/Sector.tsx +0 -347
  111. package/src/shape/Symbols.tsx +0 -139
  112. package/src/shape/Trapezoid.tsx +0 -280
  113. package/src/state/RechartsStateContext.tsx +0 -12
  114. package/src/state/RechartsStateProvider.tsx +0 -87
  115. package/src/state/RechartsStoreContext.tsx +0 -25
  116. package/src/state/RechartsStoreProvider.tsx +0 -35
  117. package/src/state/ReportChartProps.tsx +0 -40
  118. package/src/state/ReportEventSettings.tsx +0 -30
  119. package/src/state/ReportMainChartProps.tsx +0 -61
  120. package/src/state/ReportPolarOptions.tsx +0 -35
  121. package/src/state/SetGraphicalItem.ts +0 -79
  122. package/src/state/SetLegendPayload.ts +0 -134
  123. package/src/state/SetTooltipEntrySettings.tsx +0 -72
  124. package/src/state/actions.ts +0 -464
  125. package/src/state/brushSlice.ts +0 -13
  126. package/src/state/cartesianAxisSlice.ts +0 -141
  127. package/src/state/chartDataSlice.ts +0 -50
  128. package/src/state/chartState.ts +0 -297
  129. package/src/state/errorBarSlice.ts +0 -29
  130. package/src/state/eventSettingsSlice.ts +0 -8
  131. package/src/state/events.ts +0 -76
  132. package/src/state/externalEventsMiddleware.ts +0 -255
  133. package/src/state/graphicalItemsSlice.ts +0 -74
  134. package/src/state/hooks/useChartSelectors.tsx +0 -45
  135. package/src/state/keyboardEventsMiddleware.ts +0 -228
  136. package/src/state/layoutSlice.ts +0 -21
  137. package/src/state/legendSlice.ts +0 -57
  138. package/src/state/mouseEventsMiddleware.ts +0 -185
  139. package/src/state/optionsSlice.ts +0 -47
  140. package/src/state/polarAxisSlice.ts +0 -10
  141. package/src/state/polarOptionsSlice.ts +0 -12
  142. package/src/state/rawData.ts +0 -26
  143. package/src/state/referenceElementsSlice.ts +0 -40
  144. package/src/state/renderedTicksSlice.ts +0 -15
  145. package/src/state/rootPropsSlice.ts +0 -47
  146. package/src/state/selectors/areaSelectors.ts +0 -240
  147. package/src/state/selectors/arrayEqualityCheck.ts +0 -29
  148. package/src/state/selectors/axisSelectors.ts +0 -2157
  149. package/src/state/selectors/barSelectors.ts +0 -310
  150. package/src/state/selectors/barStackSelectors.ts +0 -77
  151. package/src/state/selectors/brushSelectors.ts +0 -33
  152. package/src/state/selectors/chartSelector.ts +0 -185
  153. package/src/state/selectors/combiners/combineActiveLabel.ts +0 -16
  154. package/src/state/selectors/combiners/combineActiveTooltipIndex.ts +0 -95
  155. package/src/state/selectors/combiners/combineAllBarPositions.ts +0 -122
  156. package/src/state/selectors/combiners/combineAxisRangeWithReverse.ts +0 -16
  157. package/src/state/selectors/combiners/combineBarPosition.ts +0 -23
  158. package/src/state/selectors/combiners/combineBarSizeList.ts +0 -80
  159. package/src/state/selectors/combiners/combineCheckedDomain.ts +0 -48
  160. package/src/state/selectors/combiners/combineConfiguredScale.ts +0 -111
  161. package/src/state/selectors/combiners/combineCoordinateForDefaultIndex.ts +0 -45
  162. package/src/state/selectors/combiners/combineDisplayedStackedData.ts +0 -50
  163. package/src/state/selectors/combiners/combineInverseScaleFunction.ts +0 -16
  164. package/src/state/selectors/combiners/combineRealScaleType.ts +0 -44
  165. package/src/state/selectors/combiners/combineStackedData.ts +0 -27
  166. package/src/state/selectors/combiners/combineTooltipInteractionState.ts +0 -86
  167. package/src/state/selectors/combiners/combineTooltipPayload.ts +0 -205
  168. package/src/state/selectors/combiners/combineTooltipPayloadConfigurations.ts +0 -58
  169. package/src/state/selectors/containerSelectors.ts +0 -12
  170. package/src/state/selectors/dataSelectors.ts +0 -88
  171. package/src/state/selectors/funnelSelectors.ts +0 -75
  172. package/src/state/selectors/graphicalItemSelectors.ts +0 -30
  173. package/src/state/selectors/legendSelectors.ts +0 -29
  174. package/src/state/selectors/lineSelectors.ts +0 -134
  175. package/src/state/selectors/numberDomainEqualityCheck.ts +0 -14
  176. package/src/state/selectors/pickAxisId.ts +0 -5
  177. package/src/state/selectors/pickAxisType.ts +0 -3
  178. package/src/state/selectors/pieSelectors.ts +0 -97
  179. package/src/state/selectors/polarAxisSelectors.ts +0 -201
  180. package/src/state/selectors/polarGridSelectors.ts +0 -28
  181. package/src/state/selectors/polarScaleSelectors.ts +0 -133
  182. package/src/state/selectors/polarSelectors.ts +0 -219
  183. package/src/state/selectors/radarSelectors.ts +0 -191
  184. package/src/state/selectors/radialBarSelectors.ts +0 -435
  185. package/src/state/selectors/rootPropsSelectors.ts +0 -25
  186. package/src/state/selectors/scatterSelectors.ts +0 -96
  187. package/src/state/selectors/selectActivePropsFromChartPointer.ts +0 -26
  188. package/src/state/selectors/selectAllAxes.ts +0 -17
  189. package/src/state/selectors/selectChartOffset.ts +0 -16
  190. package/src/state/selectors/selectChartOffsetInternal.ts +0 -136
  191. package/src/state/selectors/selectLegendArea.ts +0 -20
  192. package/src/state/selectors/selectPlotArea.ts +0 -22
  193. package/src/state/selectors/selectTooltipAxisId.ts +0 -7
  194. package/src/state/selectors/selectTooltipAxisType.ts +0 -32
  195. package/src/state/selectors/selectTooltipEventType.ts +0 -48
  196. package/src/state/selectors/selectTooltipPayloadSearcher.ts +0 -6
  197. package/src/state/selectors/selectTooltipSettings.ts +0 -39
  198. package/src/state/selectors/selectTooltipState.ts +0 -8
  199. package/src/state/selectors/selectors.ts +0 -271
  200. package/src/state/selectors/tooltipSelectors.ts +0 -578
  201. package/src/state/selectors/touchSelectors.ts +0 -31
  202. package/src/state/store.ts +0 -29
  203. package/src/state/storeIdentity.ts +0 -9
  204. package/src/state/teardownWrite.ts +0 -10
  205. package/src/state/tooltipInteraction.ts +0 -23
  206. package/src/state/tooltipSlice.ts +0 -334
  207. package/src/state/touchEventsMiddleware.ts +0 -214
  208. package/src/state/types/AnimationSettings.ts +0 -20
  209. package/src/state/types/AreaSettings.ts +0 -14
  210. package/src/state/types/BarSettings.ts +0 -15
  211. package/src/state/types/LineSettings.ts +0 -9
  212. package/src/state/types/PieSettings.ts +0 -34
  213. package/src/state/types/RadarSettings.ts +0 -5
  214. package/src/state/types/RadialBarSettings.ts +0 -10
  215. package/src/state/types/ScatterSettings.ts +0 -12
  216. package/src/state/types/StackedGraphicalItem.ts +0 -34
  217. package/src/state/useChartState.ts +0 -17
  218. package/src/state/zIndexSlice.ts +0 -39
  219. package/src/synchronisation/syncSelectors.ts +0 -7
  220. package/src/synchronisation/types.ts +0 -44
  221. package/src/synchronisation/useChartSynchronisation.tsx +0 -404
  222. package/src/theme/RechartsTheme.ts +0 -16
  223. package/src/theme/RechartsThemeContext.ts +0 -19
  224. package/src/theme/darkTheme.ts +0 -13
  225. package/src/theme/graphicalItemIdentity.ts +0 -70
  226. package/src/theme/legacyTheme.ts +0 -17
  227. package/src/theme/lightTheme.ts +0 -13
  228. package/src/types.ts +0 -54
  229. package/src/util/ActiveShapeUtils.tsx +0 -162
  230. package/src/util/BarUtils.tsx +0 -62
  231. package/src/util/BarePortal.tsx +0 -50
  232. package/src/util/CamelCaseSVGAttrs.ts +0 -34
  233. package/src/util/CartesianUtils.ts +0 -48
  234. package/src/util/ChartUtils.ts +0 -802
  235. package/src/util/Constants.ts +0 -42
  236. package/src/util/CssPrefixUtils.ts +0 -20
  237. package/src/util/DOMUtils.ts +0 -129
  238. package/src/util/DataUtils.ts +0 -216
  239. package/src/util/Events.ts +0 -16
  240. package/src/util/FunnelUtils.tsx +0 -15
  241. package/src/util/Global.ts +0 -12
  242. package/src/util/IfOverflow.ts +0 -15
  243. package/src/util/LRUCache.ts +0 -41
  244. package/src/util/LogUtils.ts +0 -22
  245. package/src/util/PolarUtils.ts +0 -132
  246. package/src/util/RadialBarUtils.tsx +0 -24
  247. package/src/util/ReactUtils.ts +0 -95
  248. package/src/util/ReduceCSSCalc.ts +0 -187
  249. package/src/util/ScatterUtils.tsx +0 -52
  250. package/src/util/ShapeElementProps.tsx +0 -87
  251. package/src/util/TickUtils.ts +0 -60
  252. package/src/util/XAxisUtils.ts +0 -48
  253. package/src/util/YAxisUtils.ts +0 -48
  254. package/src/util/axisPropsAreEqual.ts +0 -48
  255. package/src/util/createCartesianCharts.tsx +0 -150
  256. package/src/util/createEventProxy.ts +0 -20
  257. package/src/util/createPolarCharts.tsx +0 -112
  258. package/src/util/cursor/getCursorPoints.ts +0 -46
  259. package/src/util/cursor/getCursorRectangle.ts +0 -28
  260. package/src/util/cursor/getRadialCursorPoints.ts +0 -32
  261. package/src/util/excludeEventProps.ts +0 -171
  262. package/src/util/getActiveCoordinate.ts +0 -213
  263. package/src/util/getAxisTypeBasedOnLayout.ts +0 -21
  264. package/src/util/getClassNameFromUnknown.ts +0 -6
  265. package/src/util/getEveryNth.ts +0 -27
  266. package/src/util/getRadiusAndStrokeWidthFromDot.ts +0 -35
  267. package/src/util/getRelativeCoordinate.ts +0 -80
  268. package/src/util/getSliced.ts +0 -13
  269. package/src/util/hoverDedupe.ts +0 -41
  270. package/src/util/isDomainSpecifiedByUser.ts +0 -219
  271. package/src/util/isWellBehavedNumber.ts +0 -7
  272. package/src/util/pathTotalLength.ts +0 -25
  273. package/src/util/payload/getUniqPayload.ts +0 -28
  274. package/src/util/propsAreEqual.ts +0 -121
  275. package/src/util/resolveDefaultProps.ts +0 -161
  276. package/src/util/round.ts +0 -32
  277. package/src/util/scale/CartesianScaleHelper.ts +0 -72
  278. package/src/util/scale/CustomScaleDefinition.ts +0 -81
  279. package/src/util/scale/RechartsScale.ts +0 -130
  280. package/src/util/scale/createCategoricalInverse.ts +0 -72
  281. package/src/util/scale/getNiceTickValues.ts +0 -311
  282. package/src/util/scale/index.ts +0 -2
  283. package/src/util/scale/util/arithmetic.ts +0 -54
  284. package/src/util/solid-1-compat.ts +0 -310
  285. package/src/util/solidJsxCamelAugment.d.ts +0 -84
  286. package/src/util/stacks/getStackSeriesIdentifier.ts +0 -21
  287. package/src/util/stacks/stackTypes.ts +0 -60
  288. package/src/util/structurallyEqual.ts +0 -31
  289. package/src/util/svgPropertiesAndEvents.ts +0 -53
  290. package/src/util/svgPropertiesNoEvents.ts +0 -571
  291. package/src/util/tooltip/translate.ts +0 -171
  292. package/src/util/typedDataKey.ts +0 -48
  293. package/src/util/types.ts +0 -1560
  294. package/src/util/useAnimationId.ts +0 -31
  295. package/src/util/useElementOffset.ts +0 -110
  296. package/src/util/useId.ts +0 -8
  297. package/src/util/usePrefersReducedMotion.ts +0 -48
  298. package/src/util/useReportScale.ts +0 -24
  299. package/src/util/useUniqueId.ts +0 -30
  300. package/src/zIndex/DefaultZIndexes.ts +0 -84
  301. package/src/zIndex/ZIndexLayer.tsx +0 -121
  302. package/src/zIndex/ZIndexPortal.tsx +0 -79
  303. package/src/zIndex/getZIndexFromUnknown.ts +0 -14
  304. 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
- }