@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
@@ -1,547 +0,0 @@
1
- /* eslint-disable import/no-cycle, sort-keys */
2
- import type { AxisTick } from "../util/types"
3
- import type { JSX } from '@solidjs/web';
4
- import { createMemo, Show, useContext, createEffect } from 'solid-js';
5
- import maxBy from "es-toolkit/compat/maxBy"
6
- import minBy from "es-toolkit/compat/minBy"
7
- import { clsx } from "clsx"
8
- import { cloneJsxNodeWithProps, isJsxNode } from "../util/ReactUtils"
9
- import { Text } from "../component/Text"
10
- import { PolarLabelContextProvider, PolarLabelFromLabelProp } from "../component/Label"
11
- import { Layer } from "../container/Layer"
12
- import { polarToCartesian } from "../util/PolarUtils"
13
- import {
14
- adaptEventsOfChild,
15
- RenderableAxisProps,
16
- Coordinate,
17
- PolarViewBoxRequired,
18
- PresentationAttributesAdaptChildEvent,
19
- TickItem,
20
- AxisDomain,
21
- ScaleType,
22
- AxisDomainTypeInput,
23
- EvaluatedAxisDomainType,
24
- TickProp,
25
- BaseTickContentProps,
26
- } from "../util/types"
27
- import type { RadiusAxisSettings } from "../state/polarAxisSlice"
28
- import { useChartStore } from "../state/RechartsStoreContext"
29
- import { RechartsStateContext } from "../state/RechartsStateContext"
30
- import { selectPolarAxisScale, selectPolarAxisTicks } from "../state/selectors/polarScaleSelectors"
31
- import { selectPolarViewBox } from "../state/selectors/polarAxisSelectors"
32
- import { defaultPolarRadiusAxisProps } from "./defaultPolarRadiusAxisProps"
33
- import {
34
- svgPropertiesNoEvents,
35
- svgPropertiesNoEventsFromUnknown,
36
- } from "../util/svgPropertiesNoEvents"
37
- import { RequiresDefaultProps, resolveDefaultProps } from "../util/resolveDefaultProps"
38
- import { ZIndexable, ZIndexLayer } from "../zIndex/ZIndexLayer"
39
- import { RechartsScale } from "../util/scale/RechartsScale"
40
- import { CustomScaleDefinition } from "../util/scale/CustomScaleDefinition"
41
- import { usePolarChartLayout } from "../context/chartLayoutContext"
42
- import { getAxisTypeBasedOnLayout } from "../util/getAxisTypeBasedOnLayout"
43
- import { getClassNameFromUnknown } from "../util/getClassNameFromUnknown"
44
- import { teardownWrite } from "../state/teardownWrite"
45
-
46
- type TickOrientation = "left" | "right" | "middle"
47
-
48
- export interface PolarRadiusAxisProps<DataPointType = unknown, DataValueType = unknown>
49
- extends
50
- Omit<
51
- RenderableAxisProps<DataPointType, DataValueType>,
52
- "axisLine" | "angle" | "type" | "tickSize" | "domain" | "scale" | "tick"
53
- >,
54
- ZIndexable {
55
- /**
56
- * Determines how the axis line is drawn. Options:
57
- * - `true`: the axis line is drawn with default props;
58
- * - `false`: the axis line is not visible;
59
- * - `object`: passed as props to SVG `<line>` element representing the axis line.
60
- *
61
- * @example <PolarRadiusAxis axisLine={false} />
62
- * @example <PolarRadiusAxis axisLine={{ stroke: 'red', strokeWidth: 2 }} />
63
- * @defaultValue true
64
- */
65
- axisLine?: boolean | JSX.LineSVGAttributes<SVGLineElement>
66
- /**
67
- * The angle of the whole axis: the line, ticks and labels, everything.
68
- *
69
- * This is different from other graphical elements where angle usually means
70
- * the angle of text. Here, it means the angle of everything.
71
- *
72
- * @defaultValue 0
73
- */
74
- angle?: number
75
- /**
76
- * The type of axis.
77
- *
78
- * `category`: Treats data as distinct values.
79
- * Each value is in the same distance from its neighbors, regardless of their actual numeric difference.
80
- *
81
- * `number`: Treats data as continuous range.
82
- * Values that are numerically closer are placed closer together on the axis.
83
- *
84
- * `auto`: the type is inferred based on the chart layout.
85
- *
86
- * @defaultValue auto
87
- */
88
- type?: AxisDomainTypeInput
89
- /**
90
- * The orientation of axis text.
91
- * @defaultValue right
92
- */
93
- orientation?: TickOrientation
94
- /**
95
- * Specify the domain of axis when the axis is a number axis.
96
- *
97
- * If undefined, then the domain is calculated based on the data and dataKeys.
98
- *
99
- * The length of domain should be 2, and we will validate the values in domain.
100
- *
101
- * Each element in the array can be a number, 'auto', 'dataMin', 'dataMax', a string like 'dataMin - 20', 'dataMax + 100',
102
- * or a function that accepts a single argument and returns a number.
103
- *
104
- * If any element of domain is set to be 'auto', comprehensible scale ticks will be calculated, and the final domain of axis is generated by the ticks.
105
- * If a function, receives '[dataMin, dataMax]', and must return a computed domain as '[min, max]'.
106
- *
107
- * @example <PolarRadiusAxis type="number" domain={['dataMin', 'dataMax']} />
108
- * @example <PolarRadiusAxis type="number" domain={[0, 'dataMax']} />
109
- * @example <PolarRadiusAxis type="number" domain={['auto', 'auto']} />
110
- * @example <PolarRadiusAxis type="number" domain={[0, 'dataMax + 1000']} />
111
- * @example <PolarRadiusAxis type="number" domain={['dataMin - 100', 'dataMax + 100']} />
112
- * @example <PolarRadiusAxis type="number" domain={[dataMin => (0 - Math.abs(dataMin)), dataMax => (dataMax * 2)]} />
113
- * @example <PolarRadiusAxis type="number" domain={([dataMin, dataMax]) => { const absMax = Math.max(Math.abs(dataMin), Math.abs(dataMax)); return [-absMax, absMax]; }} />
114
- * @example <PolarRadiusAxis type="number" domain={[0, 100]} allowDataOverflow />
115
- */
116
- domain?: AxisDomain
117
- /**
118
- * Scale function determines how data values are mapped to visual values.
119
- * In other words, decided the mapping between data domain and coordinate range.
120
- *
121
- * If undefined, or 'auto', the scale function is created internally according to the type of axis and data.
122
- *
123
- * You can define a custom scale, either as a string shortcut to a d3 scale, or as a complete scale definition object.
124
- *
125
- * @defaultValue auto
126
- * @example <PolarRadiusAxis scale="log" />
127
- * @example
128
- * import { scaleLog } from 'd3-scale';
129
- * const scale = scaleLog().base(Math.E);
130
- * <PolarRadiusAxis scale={scale} />
131
- */
132
- scale?:
133
- | ScaleType
134
- | CustomScaleDefinition
135
- | CustomScaleDefinition<string>
136
- | CustomScaleDefinition<number>
137
- | CustomScaleDefinition<Date>
138
- /**
139
- * The customized event handler of click on the ticks of this axis
140
- */
141
- onClick?: (
142
- /* eslint-disable-next-line typescript-eslint/no-explicit-any -- upstream contract */
143
- data: any,
144
- index: number,
145
- e: MouseEvent & { currentTarget: SVGTextElement },
146
- ) => void
147
- /**
148
- * The customized event handler of mousedown on the ticks of this axis
149
- */
150
- onMouseDown?: (
151
- /* eslint-disable-next-line typescript-eslint/no-explicit-any -- upstream contract */
152
- data: any,
153
- index: number,
154
- e: MouseEvent & { currentTarget: SVGTextElement },
155
- ) => void
156
- /**
157
- * The customized event handler of mouseup on the ticks of this axis
158
- */
159
- onMouseUp?: (
160
- /* eslint-disable-next-line typescript-eslint/no-explicit-any -- upstream contract */
161
- data: any,
162
- index: number,
163
- e: MouseEvent & { currentTarget: SVGTextElement },
164
- ) => void
165
- /**
166
- * The customized event handler of mousemove on the ticks of this axis
167
- */
168
- onMouseMove?: (
169
- /* eslint-disable-next-line typescript-eslint/no-explicit-any -- upstream contract */
170
- data: any,
171
- index: number,
172
- e: MouseEvent & { currentTarget: SVGTextElement },
173
- ) => void
174
- /**
175
- * The customized event handler of mouseover on the ticks of this axis
176
- */
177
- onMouseOver?: (
178
- /* eslint-disable-next-line typescript-eslint/no-explicit-any -- upstream contract */
179
- data: any,
180
- index: number,
181
- e: MouseEvent & { currentTarget: SVGTextElement },
182
- ) => void
183
- /**
184
- * The customized event handler of mouseout on the ticks of this axis
185
- */
186
- onMouseOut?: (
187
- /* eslint-disable-next-line typescript-eslint/no-explicit-any -- upstream contract */
188
- data: any,
189
- index: number,
190
- e: MouseEvent & { currentTarget: SVGTextElement },
191
- ) => void
192
- /**
193
- * The customized event handler of mouseenter on the ticks of this axis
194
- */
195
- onMouseEnter?: (
196
- /* eslint-disable-next-line typescript-eslint/no-explicit-any -- upstream contract */
197
- data: any,
198
- index: number,
199
- e: MouseEvent & { currentTarget: SVGTextElement },
200
- ) => void
201
- /**
202
- * The customized event handler of mouseleave on the ticks of this axis
203
- */
204
- onMouseLeave?: (
205
- /* eslint-disable-next-line typescript-eslint/no-explicit-any -- upstream contract */
206
- data: any,
207
- index: number,
208
- e: MouseEvent & { currentTarget: SVGTextElement },
209
- ) => void
210
- /**
211
- * Allow the ticks of axis to be decimals or not.
212
- *
213
- * @defaultValue false
214
- */
215
- allowDecimals?: boolean
216
- /**
217
- * @defaultValue 0
218
- */
219
- radiusAxisId?: string | number
220
- /**
221
- * Defines how the individual label text is rendered.
222
- * This controls the settings for individual ticks; on a typical axis, there are multiple ticks, depending on your data.
223
- *
224
- * If you want to customize the overall axis label, use the `label` prop instead.
225
- *
226
- * Options:
227
- * - `false`: Do not render any tick labels.
228
- * - `true`: Render tick labels with default settings.
229
- * - `object`: An object of props to be merged into the internally calculated tick props.
230
- * - `Element`: A custom element to be used as the tick label.
231
- * - `function`: A function that returns an element for custom rendering of tick labels.
232
- *
233
- * @defaultValue true
234
- */
235
- tick?: TickProp<BaseTickContentProps>
236
- ticks?: ReadonlyArray<TickItem>
237
- /**
238
- * Z-Index of this component and its children. The higher the value,
239
- * the more on top it will be rendered.
240
- * Components with higher zIndex will appear in front of components with lower zIndex.
241
- * If undefined or 0, the content is rendered in the default layer without portals.
242
- *
243
- * @since 3.4
244
- * @defaultValue 500
245
- * @see {@link https://recharts.github.io/en-US/guide/zIndex/ Z-Index and layers guide}
246
- */
247
- zIndex?: number
248
- }
249
-
250
- type AxisSvgProps = Omit<
251
- /* eslint-disable-next-line typescript-eslint/no-explicit-any -- upstream contract: tick handlers receive untyped data */
252
- PresentationAttributesAdaptChildEvent<any, SVGTextElement>,
253
- "scale" | "type"
254
- >
255
-
256
- /* eslint-disable-next-line typescript-eslint/no-explicit-any -- upstream contract: untyped axes accept any data */
257
- export type Props<DataPointType = any, DataValueType = any> = AxisSvgProps &
258
- PolarRadiusAxisProps<DataPointType, DataValueType>
259
-
260
- type PropsWithDefaults = RequiresDefaultProps<Props, typeof defaultPolarRadiusAxisProps>
261
-
262
- type InsideProps = Omit<PropsWithDefaults, "scale"> &
263
- PolarViewBoxRequired & {
264
- scale: RechartsScale
265
- }
266
-
267
- const AXIS_TYPE = "radiusAxis"
268
-
269
- function SetRadiusAxisSettings(
270
- props: Omit<RadiusAxisSettings, "type"> & { type: AxisDomainTypeInput },
271
- ): null {
272
- const ctx = useChartStore()
273
- const stateCtx = useContext(RechartsStateContext)
274
- const settings = createMemo((): RadiusAxisSettings | undefined => {
275
- const evaluatedType: EvaluatedAxisDomainType | undefined = getAxisTypeBasedOnLayout(
276
- usePolarChartLayout(),
277
- "radiusAxis",
278
- props.type,
279
- )
280
- if (evaluatedType == null) {
281
- return undefined
282
- }
283
- return {
284
- allowDataOverflow: props.allowDataOverflow,
285
- allowDecimals: props.allowDecimals,
286
- allowDuplicatedCategory: props.allowDuplicatedCategory,
287
- dataKey: props.dataKey,
288
- domain: props.domain,
289
- id: props.id,
290
- includeHidden: props.includeHidden,
291
- name: props.name,
292
- reversed: props.reversed,
293
- scale: props.scale,
294
- tick: props.tick,
295
- tickCount: props.tickCount,
296
- niceTicks: props.niceTicks,
297
- ticks: props.ticks,
298
- type: evaluatedType,
299
- unit: props.unit,
300
- }
301
- })
302
- createEffect(settings, (s) => {
303
- if (s == null) {
304
- return
305
- }
306
- const id = String(s.id)
307
- if (stateCtx != null) {
308
- stateCtx.setState("polarAxes", "radiusAxis", id, { settings: s })
309
- return () => {
310
- teardownWrite(() => {
311
- stateCtx.setState(
312
- "polarAxes",
313
- (polar) => {
314
- delete (polar.radiusAxis as Record<string, unknown>)[id]
315
- },
316
- )
317
- })
318
- }
319
- }
320
-
321
- })
322
- return null
323
- }
324
-
325
- /**
326
- * Calculate the coordinate of tick
327
- * @param coordinate The radius of tick
328
- * @param angle from props
329
- * @param cx from chart
330
- * @param cy from chart
331
- * @return (x, y)
332
- */
333
- const getTickValueCoord = (
334
- { coordinate }: TickItem,
335
- angle: number,
336
- cx: number,
337
- cy: number,
338
- ): Coordinate => {
339
- return polarToCartesian(cx, cy, coordinate, angle)
340
- }
341
-
342
- const getTickTextAnchor = (orientation: TickOrientation): string => {
343
- let textAnchor
344
-
345
- switch (orientation) {
346
- case "left":
347
- textAnchor = "end"
348
- break
349
- case "right":
350
- textAnchor = "start"
351
- break
352
- default:
353
- textAnchor = "middle"
354
- break
355
- }
356
-
357
- return textAnchor
358
- }
359
-
360
- const getViewBox = (
361
- angle: number,
362
- cx: number,
363
- cy: number,
364
- ticks: ReadonlyArray<TickItem>,
365
- ): PolarViewBoxRequired => {
366
- const maxRadiusTick = maxBy(ticks, (entry: TickItem) => entry.coordinate || 0)
367
- const minRadiusTick = minBy(ticks, (entry: TickItem) => entry.coordinate || 0)
368
-
369
- return {
370
- clockWise: false,
371
- cx,
372
- cy,
373
- endAngle: angle,
374
- innerRadius: minRadiusTick?.coordinate || 0,
375
- outerRadius: maxRadiusTick?.coordinate || 0,
376
- startAngle: angle,
377
- }
378
- }
379
-
380
- function renderAxisLine(props: InsideProps, ticks: ReadonlyArray<TickItem>): JSX.Element {
381
- const extent: [number, number] = ticks.reduce(
382
- (result: [number, number], entry: TickItem): [number, number] => [
383
- Math.min(result[0], entry.coordinate),
384
- Math.max(result[1], entry.coordinate),
385
- ],
386
- [Infinity, -Infinity],
387
- )
388
- const point0 = polarToCartesian(props.cx, props.cy, extent[0], props.angle)
389
- const point1 = polarToCartesian(props.cx, props.cy, extent[1], props.angle)
390
-
391
- const { ref: _ref, ...baseSvgProps } = svgPropertiesNoEvents(props)
392
- const axisLineProps = {
393
- ...baseSvgProps,
394
- fill: "none",
395
- ...svgPropertiesNoEvents(props.axisLine),
396
- x1: point0.x,
397
- y1: point0.y,
398
- x2: point1.x,
399
- y2: point1.y,
400
- }
401
-
402
- return <line class="recharts-polar-radius-axis-line" {...axisLineProps} />
403
- }
404
-
405
- function renderTickItem(
406
- option: Props["tick"],
407
- tickProps: Record<string, unknown>,
408
- value: string | number,
409
- ): JSX.Element {
410
- if (typeof option === "function") {
411
- return (option as (p: Record<string, unknown>) => JSX.Element)(tickProps)
412
- }
413
- if (isJsxNode(option)) {
414
- return <>{cloneJsxNodeWithProps(option, tickProps) as unknown as JSX.Element}</>
415
- }
416
- return (
417
- <Text {...tickProps} className="recharts-polar-radius-axis-tick-value">
418
- {value}
419
- </Text>
420
- )
421
- }
422
-
423
- function renderTicks(props: InsideProps, ticks: ReadonlyArray<TickItem>): JSX.Element {
424
- const textAnchor = getTickTextAnchor(props.orientation)
425
- const axisProps = svgPropertiesNoEvents(props)
426
- const customTickProps = svgPropertiesNoEventsFromUnknown(props.tick)
427
-
428
- const items = ticks.map((entry, i) => {
429
- const coord = getTickValueCoord(entry, props.angle, props.cx, props.cy)
430
- const tickProps = {
431
- textAnchor,
432
- transform: `rotate(${90 - props.angle}, ${coord.x}, ${coord.y})`,
433
- ...axisProps,
434
- stroke: "none",
435
- fill: props.stroke,
436
- ...customTickProps,
437
- index: i,
438
- ...coord,
439
- payload: entry,
440
- }
441
-
442
- return (
443
- <Layer
444
- class={clsx("recharts-polar-radius-axis-tick", getClassNameFromUnknown(props.tick))}
445
- {...adaptEventsOfChild(props, entry, i)}
446
- >
447
- {renderTickItem(
448
- props.tick,
449
- tickProps,
450
- props.tickFormatter ? props.tickFormatter(entry.value, i) : entry.value,
451
- )}
452
- </Layer>
453
- )
454
- })
455
-
456
- return <Layer class="recharts-polar-radius-axis-ticks">{items}</Layer>
457
- }
458
-
459
- export function PolarRadiusAxisWrapper(defaultsAndInputs: PropsWithDefaults): JSX.Element {
460
- const ctx = useChartStore()
461
- const viewBox = createMemo(() => (ctx ? selectPolarViewBox(ctx.store) : undefined))
462
- const scale = createMemo(() =>
463
- ctx
464
- ? selectPolarAxisScale(ctx.store, "radiusAxis", defaultsAndInputs.radiusAxisId)
465
- : undefined,
466
- )
467
- const ticks = createMemo(() =>
468
- ctx
469
- ? selectPolarAxisTicks(ctx.store, "radiusAxis", defaultsAndInputs.radiusAxisId, false)
470
- : undefined,
471
- )
472
-
473
- /* resolved is null until every dep is present; Show + Show.children-as-fn rerenders
474
- when the memo flips truthy. IIFE-in-JSX would freeze body at first eval. */
475
- const resolved = createMemo<{ props: InsideProps; ticks: ReadonlyArray<TickItem> } | null>(
476
- () => {
477
- const vb = viewBox()
478
- const t = ticks()
479
- const s = scale()
480
- if (vb == null || t == null || t.length === 0 || s == null) {
481
- return null
482
- }
483
- const props: InsideProps = {
484
- ...defaultsAndInputs,
485
- scale: s,
486
- ...vb,
487
- }
488
- return { props, ticks: t }
489
- },
490
- )
491
-
492
- return (
493
- <Show when={resolved()}>
494
- {(r) => (
495
- <ZIndexLayer zIndex={r().props.zIndex}>
496
- <Layer
497
- class={clsx("recharts-polar-radius-axis", AXIS_TYPE, r().props.className)}
498
- >
499
- <Show when={r().props.axisLine}>{renderAxisLine(r().props, r().ticks)}</Show>
500
- <Show when={r().props.tick}>{renderTicks(r().props, r().ticks)}</Show>
501
- <PolarLabelContextProvider
502
- {...getViewBox(r().props.angle, r().props.cx, r().props.cy, r().ticks)}
503
- >
504
- <PolarLabelFromLabelProp label={r().props.label} />
505
- {r().props.children}
506
- </PolarLabelContextProvider>
507
- </Layer>
508
- </ZIndexLayer>
509
- )}
510
- </Show>
511
- )
512
- }
513
-
514
- /**
515
- * @provides PolarLabelContext
516
- * @consumes PolarViewBoxContext
517
- */
518
- /* eslint-disable-next-line typescript-eslint/no-explicit-any -- upstream contract: untyped axes accept any data */
519
- export function PolarRadiusAxis<DataPointType = any, DataValueType = any>(
520
- outsideProps: Props<DataPointType, DataValueType>,
521
- ): JSX.Element {
522
- const props: PropsWithDefaults = resolveDefaultProps(outsideProps, defaultPolarRadiusAxisProps)
523
- return (
524
- <>
525
- <SetRadiusAxisSettings
526
- domain={props.domain}
527
- id={props.radiusAxisId}
528
- scale={props.scale}
529
- type={props.type}
530
- dataKey={props.dataKey}
531
- unit={undefined}
532
- name={props.name}
533
- allowDuplicatedCategory={props.allowDuplicatedCategory}
534
- allowDataOverflow={props.allowDataOverflow}
535
- reversed={props.reversed}
536
- includeHidden={props.includeHidden}
537
- allowDecimals={props.allowDecimals}
538
- /* passed through unchanged like upstream, whose TickItem prop and AxisTick setting types disagree */
539
- ticks={props.ticks as unknown as ReadonlyArray<AxisTick> | undefined}
540
- tickCount={props.tickCount}
541
- niceTicks={props.niceTicks}
542
- tick={props.tick as TickProp<unknown>}
543
- />
544
- <PolarRadiusAxisWrapper {...props} />
545
- </>
546
- )
547
- }