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