@octanejs/recharts 0.1.41 → 0.1.43
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 → LICENSE.recharts} +3 -2
- package/README.md +12 -0
- package/package.json +10 -9
- package/src/animation/AnimatedItems.tsrx +36 -3
- package/src/animation/AnimationController.ts +17 -65
- package/src/animation/{AnimationControllerImpl.js → AnimationControllerImpl.ts} +19 -12
- package/src/animation/{AnimationHandle.js → AnimationHandle.ts} +82 -65
- package/src/animation/CSSTransitionAnimate.tsrx +3 -2
- package/src/animation/JavascriptAnimate.tsrx +18 -2
- package/src/animation/easing.ts +235 -0
- package/src/animation/{matchBy.js → matchBy.ts} +76 -120
- package/src/animation/timeoutController.ts +71 -0
- package/src/animation/useAnimationController.ts +4 -1
- package/src/animation/useAnimationStartSnapshot.ts +3 -3
- package/src/animation/util.ts +12 -0
- package/src/cartesian/Area.tsrx +33 -31
- package/src/cartesian/AreaRevealShape.tsrx +4 -3
- package/src/cartesian/Bar.ts +1 -0
- package/src/cartesian/Bar.tsrx +293 -39
- package/src/cartesian/BarStack.tsrx +31 -9
- package/src/cartesian/CartesianAxis.tsrx +154 -22
- package/src/cartesian/CartesianGrid.tsrx +5 -6
- package/src/cartesian/ErrorBar.tsrx +9 -8
- package/src/cartesian/Funnel.tsrx +40 -37
- package/src/cartesian/GraphicalItemClipPath.tsrx +11 -4
- package/src/cartesian/Line.ts +1 -0
- package/src/cartesian/Line.tsrx +206 -28
- package/src/cartesian/LineDrawShape.tsrx +23 -10
- package/src/cartesian/ReferenceLine.tsrx +8 -8
- package/src/cartesian/Scatter.tsrx +61 -66
- package/src/cartesian/XAxis.tsrx +78 -9
- package/src/cartesian/YAxis.tsrx +85 -12
- package/src/cartesian/getCartesianPosition.ts +265 -0
- package/src/cartesian/getEquidistantTicks.ts +144 -0
- package/src/cartesian/getTicks.ts +221 -0
- package/src/chart/AreaChart.tsrx +5 -1
- package/src/chart/BarChart.tsrx +8 -2
- package/src/chart/CartesianChart.tsrx +17 -4
- package/src/chart/CategoricalChart.tsrx +4 -1
- package/src/chart/ComposedChart.tsrx +5 -1
- package/src/chart/FunnelChart.tsrx +5 -1
- package/src/chart/LineChart.tsrx +8 -2
- package/src/chart/PieChart.tsrx +6 -2
- package/src/chart/PolarChart.tsrx +5 -4
- package/src/chart/RadarChart.tsrx +6 -2
- package/src/chart/RadialBarChart.tsrx +6 -2
- package/src/chart/RechartsWrapper.tsrx +57 -21
- package/src/chart/Sankey.tsrx +89 -91
- package/src/chart/ScatterChart.tsrx +5 -1
- package/src/chart/SunburstChart.tsrx +21 -14
- package/src/chart/types.ts +0 -1
- package/src/component/ActivePoints.tsrx +30 -5
- package/src/component/Cell.ts +19 -1
- package/src/component/Cursor.tsrx +11 -10
- package/src/component/DefaultLegendContent.tsrx +15 -10
- package/src/component/DefaultTooltipContent.tsrx +11 -9
- package/src/component/Dots.tsrx +37 -6
- package/src/component/Label.tsrx +99 -19
- package/src/component/LabelList.tsrx +54 -5
- package/src/component/Legend.tsrx +9 -5
- package/src/component/ResponsiveContainer.tsrx +13 -10
- package/src/component/Text.tsrx +95 -32
- package/src/component/Tooltip.tsrx +11 -10
- package/src/component/TooltipBoundingBox.tsrx +4 -5
- package/src/component/{responsiveContainerUtils.js → responsiveContainerUtils.ts} +59 -36
- package/src/container/ClipPathProvider.tsrx +6 -2
- package/src/container/Layer.tsrx +8 -1
- package/src/container/RootSurface.tsrx +15 -4
- package/src/container/Surface.tsrx +15 -1
- package/src/context/CellsContext.ts +6 -5
- package/src/context/ErrorBarContext.tsrx +23 -4
- package/src/context/RegisterGraphicalItemId.tsrx +10 -2
- package/src/context/accessibilityContext.ts +5 -0
- package/src/context/brushUpdateContext.ts +11 -0
- package/src/context/chartDataContext.ts +5 -4
- package/src/context/chartLayoutContext.ts +22 -8
- package/src/context/legendPayloadContext.tsrx +1 -1
- package/src/context/tooltipContext.ts +83 -0
- package/src/{hooks.js → hooks.ts} +88 -66
- package/src/index.ts +37 -37
- package/src/legacy-props.ts +129 -0
- package/src/polar/Pie.tsrx +91 -69
- package/src/polar/PolarAngleAxis.tsrx +47 -47
- package/src/polar/PolarGrid.tsrx +7 -6
- package/src/polar/PolarRadiusAxis.tsrx +29 -21
- package/src/polar/Radar.tsrx +26 -19
- package/src/polar/RadialBar.tsrx +59 -42
- package/src/polar/{defaultPolarAngleAxisProps.js → defaultPolarAngleAxisProps.ts} +6 -6
- package/src/polar/{defaultPolarRadiusAxisProps.js → defaultPolarRadiusAxisProps.ts} +5 -4
- package/src/shape/Cross.tsrx +14 -2
- package/src/shape/Curve.tsrx +111 -23
- package/src/shape/Dot.tsrx +12 -1
- package/src/shape/Polygon.tsrx +28 -6
- package/src/shape/Rectangle.tsrx +30 -3
- package/src/shape/Sector.tsrx +48 -6
- package/src/shape/Symbols.tsrx +24 -6
- package/src/shape/Trapezoid.tsrx +33 -3
- package/src/state/RechartsStoreProvider.tsrx +11 -2
- package/src/state/ReportChartProps.ts +2 -2
- package/src/state/ReportMainChartProps.ts +2 -1
- package/src/state/SetGraphicalItem.ts +6 -4
- package/src/state/SetLegendPayload.ts +7 -4
- package/src/state/SetTooltipEntrySettings.ts +5 -2
- package/src/state/brushSlice.ts +40 -0
- package/src/state/cartesianAxisSlice.ts +291 -0
- package/src/state/chartDataSlice.ts +87 -0
- package/src/state/errorBarSlice.ts +78 -0
- package/src/state/eventSettingsSlice.ts +30 -0
- package/src/state/{externalEventsMiddleware.js → externalEventsMiddleware.ts} +55 -34
- package/src/state/graphicalItemsSlice.ts +180 -0
- package/src/state/{keyboardEventsMiddleware.js → keyboardEventsMiddleware.ts} +72 -57
- package/src/state/layoutSlice.ts +50 -0
- package/src/state/legendSlice.ts +109 -0
- package/src/state/{mouseEventsMiddleware.js → mouseEventsMiddleware.ts} +45 -35
- package/src/state/optionsSlice.ts +65 -0
- package/src/state/polarAxisSlice.ts +42 -0
- package/src/state/polarOptionsSlice.ts +43 -0
- package/src/state/reduxDevtoolsJsonStringifyReplacer.ts +13 -0
- package/src/state/referenceElementsSlice.ts +100 -0
- package/src/state/renderedTicksSlice.ts +60 -0
- package/src/state/rootPropsSlice.ts +72 -0
- package/src/state/selectors/areaSelectors.ts +1 -2
- package/src/state/selectors/{arrayEqualityCheck.js → arrayEqualityCheck.ts} +4 -5
- package/src/state/selectors/axisSelectors.ts +2502 -0
- package/src/state/selectors/barSelectors.ts +373 -0
- package/src/state/selectors/barStackSelectors.ts +99 -0
- package/src/state/selectors/brushSelectors.ts +28 -0
- package/src/state/selectors/combiners/combineActiveLabel.ts +16 -0
- package/src/state/selectors/combiners/{combineActiveTooltipIndex.js → combineActiveTooltipIndex.ts} +45 -23
- package/src/state/selectors/combiners/combineAllBarPositions.ts +130 -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 +79 -0
- package/src/state/selectors/combiners/{combineCheckedDomain.js → combineCheckedDomain.ts} +9 -6
- package/src/state/selectors/combiners/combineConfiguredScale.ts +100 -0
- package/src/state/selectors/combiners/combineCoordinateForDefaultIndex.ts +46 -0
- package/src/state/selectors/combiners/{combineDisplayedStackedData.js → combineDisplayedStackedData.ts} +23 -19
- package/src/state/selectors/combiners/combineInverseScaleFunction.ts +16 -0
- package/src/state/selectors/combiners/{combineRealScaleType.js → combineRealScaleType.ts} +16 -8
- 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 +201 -0
- package/src/state/selectors/combiners/{combineTooltipPayloadConfigurations.js → combineTooltipPayloadConfigurations.ts} +17 -18
- package/src/state/selectors/containerSelectors.ts +12 -0
- package/src/state/selectors/{dataSelectors.js → dataSelectors.ts} +43 -41
- package/src/state/selectors/funnelSelectors.ts +5 -5
- package/src/state/selectors/graphicalItemSelectors.ts +22 -0
- package/src/state/selectors/legendSelectors.ts +25 -0
- package/src/state/selectors/lineSelectors.ts +159 -0
- package/src/state/selectors/numberDomainEqualityCheck.ts +15 -0
- package/src/state/selectors/pickAxisId.ts +6 -0
- package/src/state/selectors/pickAxisType.ts +4 -0
- package/src/state/selectors/pieSelectors.ts +14 -13
- package/src/state/selectors/polarAxisSelectors.ts +223 -0
- package/src/state/selectors/polarSelectors.ts +1 -1
- package/src/state/selectors/radarSelectors.ts +1 -1
- package/src/state/selectors/radialBarSelectors.ts +17 -16
- package/src/state/selectors/rootPropsSelectors.ts +26 -0
- package/src/state/selectors/scatterSelectors.ts +11 -10
- package/src/state/selectors/{selectActivePropsFromChartPointer.js → selectActivePropsFromChartPointer.ts} +11 -4
- package/src/state/selectors/selectAllAxes.ts +20 -0
- package/src/state/selectors/selectChartOffset.ts +17 -0
- package/src/state/selectors/selectChartOffsetInternal.ts +147 -0
- package/src/state/selectors/{selectPlotArea.js → selectPlotArea.ts} +4 -3
- package/src/state/selectors/selectTooltipAxisId.ts +6 -0
- package/src/state/selectors/{selectTooltipAxisType.js → selectTooltipAxisType.ts} +10 -4
- package/src/state/selectors/selectTooltipEventType.ts +39 -0
- package/src/state/selectors/selectTooltipPayloadSearcher.ts +6 -0
- package/src/state/selectors/selectTooltipSettings.ts +6 -0
- package/src/state/selectors/selectTooltipState.ts +5 -0
- package/src/state/selectors/selectors.ts +315 -0
- package/src/state/selectors/tooltipSelectors.ts +611 -0
- package/src/state/selectors/touchSelectors.ts +52 -0
- package/src/state/{store.js → store.ts} +46 -36
- package/src/state/tooltipSlice.ts +507 -0
- package/src/state/{touchEventsMiddleware.js → touchEventsMiddleware.ts} +54 -42
- package/src/state/types/AreaSettings.ts +15 -0
- package/src/state/types/BarSettings.ts +15 -0
- package/src/state/types/LineSettings.ts +10 -0
- package/src/state/types/PieSettings.ts +32 -0
- package/src/state/types/RadarSettings.ts +6 -0
- package/src/state/types/RadialBarSettings.ts +10 -0
- package/src/state/types/ScatterSettings.ts +13 -0
- package/src/state/types/StackedGraphicalItem.ts +34 -0
- package/src/state/zIndexSlice.ts +137 -0
- package/src/synchronisation/syncSelectors.ts +7 -0
- package/src/synchronisation/types.ts +42 -0
- package/src/synchronisation/useChartSynchronisation.tsrx +26 -11
- package/src/types.ts +55 -0
- package/src/util/ActiveShapeUtils.tsrx +34 -10
- package/src/util/BarUtils.tsrx +43 -3
- package/src/util/{CartesianUtils.js → CartesianUtils.ts} +22 -39
- package/src/util/ChartUtils.ts +759 -0
- package/src/util/{Constants.js → Constants.ts} +6 -6
- package/src/util/DOMUtils.ts +135 -0
- package/src/util/{DataUtils.js → DataUtils.ts} +120 -47
- package/src/util/Events.ts +22 -0
- package/src/util/FunnelUtils.tsrx +3 -3
- package/src/util/Global.ts +13 -0
- package/src/util/IfOverflow.ts +16 -0
- package/src/util/LRUCache.ts +42 -0
- package/src/util/{LogUtils.js → LogUtils.ts} +7 -12
- package/src/util/OctaneTypes.ts +51 -0
- package/src/util/PolarUtils.ts +132 -0
- package/src/util/RadialBarUtils.tsrx +3 -3
- package/src/util/ReduceCSSCalc.ts +186 -0
- package/src/util/ScatterUtils.tsrx +9 -7
- package/src/util/{TickUtils.js → TickUtils.ts} +30 -13
- package/src/util/{YAxisUtils.js → YAxisUtils.ts} +27 -17
- package/src/util/axisPropsAreEqual.ts +49 -0
- package/src/util/createEventProxy.ts +20 -0
- package/src/util/{excludeEventProps.js → excludeEventProps.ts} +8 -6
- package/src/util/getActiveCoordinate.ts +210 -0
- package/src/util/{getAxisTypeBasedOnLayout.js → getAxisTypeBasedOnLayout.ts} +7 -3
- package/src/util/getClassNameFromUnknown.ts +7 -0
- package/src/util/{getEveryNth.js → getEveryNth.ts} +5 -6
- package/src/util/getRadiusAndStrokeWidthFromDot.ts +31 -0
- package/src/util/{getRelativeCoordinate.js → getRelativeCoordinate.ts} +26 -9
- package/src/util/getSliced.ts +14 -0
- package/src/util/{isDomainSpecifiedByUser.js → isDomainSpecifiedByUser.ts} +46 -100
- package/src/util/isWellBehavedNumber.ts +8 -0
- package/src/util/payload/getUniqPayload.ts +1 -1
- package/src/util/{propsAreEqual.js → propsAreEqual.ts} +10 -8
- package/src/util/{resolveDefaultProps.js → resolveDefaultProps.ts} +35 -57
- package/src/util/round.ts +33 -0
- package/src/util/scale/CustomScaleDefinition.ts +82 -0
- package/src/util/scale/RechartsScale.ts +131 -0
- package/src/util/scale/{createCategoricalInverse.js → createCategoricalInverse.ts} +24 -29
- package/src/util/scale/{getNiceTickValues.js → getNiceTickValues.ts} +125 -146
- package/src/util/scale/index.ts +2 -0
- package/src/util/scale/util/{arithmetic.js → arithmetic.ts} +12 -8
- package/src/util/stacks/getStackSeriesIdentifier.ts +21 -0
- package/src/util/stacks/stackTypes.ts +58 -0
- package/src/util/{svgPropertiesNoEvents.js → svgPropertiesNoEvents.ts} +52 -27
- package/src/util/tooltip/translate.ts +2 -1
- package/src/util/typedDataKey.ts +49 -0
- package/src/util/types.ts +1265 -7
- package/src/util/{useUniqueId.js → useUniqueId.ts} +9 -5
- package/src/zIndex/{DefaultZIndexes.js → DefaultZIndexes.ts} +13 -4
- package/src/zIndex/ZIndexLayer.tsrx +13 -4
- package/src/zIndex/ZIndexPortal.tsrx +14 -4
- package/src/zIndex/{getZIndexFromUnknown.js → getZIndexFromUnknown.ts} +3 -3
- package/src/zIndex/{zIndexSelectors.js → zIndexSelectors.ts} +17 -11
- package/src/animation/easing.js +0 -193
- package/src/animation/timeoutController.js +0 -49
- package/src/animation/util.js +0 -11
- package/src/cartesian/Area.tsrx.d.ts +0 -340
- package/src/cartesian/Bar.tsrx.d.ts +0 -4
- package/src/cartesian/BarStack.tsrx.d.ts +0 -6
- package/src/cartesian/CartesianAxis.tsrx.d.ts +0 -3
- package/src/cartesian/CartesianGrid.tsrx.d.ts +0 -219
- package/src/cartesian/ErrorBar.tsrx.d.ts +0 -131
- package/src/cartesian/Funnel.tsrx.d.ts +0 -274
- package/src/cartesian/Line.tsrx.d.ts +0 -4
- package/src/cartesian/LineDrawShape.tsrx.d.ts +0 -2
- package/src/cartesian/ReferenceLine.tsrx.d.ts +0 -178
- package/src/cartesian/Scatter.tsrx.d.ts +0 -351
- package/src/cartesian/XAxis.tsrx.d.ts +0 -3
- package/src/cartesian/YAxis.tsrx.d.ts +0 -3
- package/src/cartesian/ZAxis.tsrx.d.ts +0 -102
- package/src/cartesian/getCartesianPosition.js +0 -277
- package/src/cartesian/getEquidistantTicks.js +0 -133
- package/src/cartesian/getTicks.js +0 -280
- package/src/chart/AreaChart.tsrx.d.ts +0 -12
- package/src/chart/BarChart.tsrx.d.ts +0 -2
- package/src/chart/CartesianChart.tsrx.d.ts +0 -10
- package/src/chart/ComposedChart.tsrx.d.ts +0 -12
- package/src/chart/FunnelChart.tsrx.d.ts +0 -12
- package/src/chart/LineChart.tsrx.d.ts +0 -2
- package/src/chart/PieChart.tsrx.d.ts +0 -31
- package/src/chart/RadarChart.tsrx.d.ts +0 -31
- package/src/chart/RadialBarChart.tsrx.d.ts +0 -31
- package/src/chart/Sankey.tsrx.d.ts +0 -253
- package/src/chart/ScatterChart.tsrx.d.ts +0 -12
- package/src/chart/SunburstChart.tsrx.d.ts +0 -146
- package/src/component/DefaultLegendContent.tsrx.d.ts +0 -125
- package/src/component/DefaultTooltipContent.tsrx.d.ts +0 -87
- package/src/component/Label.tsrx.d.ts +0 -12
- package/src/component/LabelList.tsrx.d.ts +0 -8
- package/src/component/Legend.tsrx.d.ts +0 -88
- package/src/component/ResponsiveContainer.tsrx.d.ts +0 -81
- package/src/component/Text.tsrx.d.ts +0 -9
- package/src/component/Tooltip.tsrx.d.ts +0 -246
- package/src/container/Layer.tsrx.d.ts +0 -6
- package/src/container/Surface.tsrx.d.ts +0 -12
- package/src/context/accessibilityContext.js +0 -10
- package/src/context/tooltipContext.js +0 -55
- package/src/index.d.ts +0 -281
- package/src/polar/Pie.tsrx.d.ts +0 -436
- package/src/polar/PolarAngleAxis.tsrx.d.ts +0 -215
- package/src/polar/PolarGrid.tsrx.d.ts +0 -117
- package/src/polar/PolarRadiusAxis.tsrx.d.ts +0 -209
- package/src/polar/Radar.tsrx.d.ts +0 -215
- package/src/polar/RadialBar.tsrx.d.ts +0 -340
- package/src/shape/Cross.tsrx.d.ts +0 -12
- package/src/shape/Curve.tsrx.d.ts +0 -42
- package/src/shape/Dot.tsrx.d.ts +0 -9
- package/src/shape/Polygon.tsrx.d.ts +0 -13
- package/src/shape/Rectangle.tsrx.d.ts +0 -31
- package/src/shape/Sector.tsrx.d.ts +0 -29
- package/src/shape/Symbols.tsrx.d.ts +0 -15
- package/src/shape/Trapezoid.tsrx.d.ts +0 -29
- package/src/state/brushSlice.js +0 -36
- package/src/state/cartesianAxisSlice.js +0 -256
- package/src/state/chartDataSlice.js +0 -67
- package/src/state/errorBarSlice.js +0 -53
- package/src/state/eventSettingsSlice.js +0 -25
- package/src/state/graphicalItemsSlice.js +0 -91
- package/src/state/layoutSlice.js +0 -57
- package/src/state/legendSlice.js +0 -83
- package/src/state/optionsSlice.js +0 -45
- package/src/state/polarAxisSlice.js +0 -33
- package/src/state/polarOptionsSlice.js +0 -26
- package/src/state/reduxDevtoolsJsonStringifyReplacer.js +0 -14
- package/src/state/referenceElementsSlice.js +0 -51
- package/src/state/renderedTicksSlice.js +0 -41
- package/src/state/rootPropsSlice.js +0 -48
- package/src/state/selectors/axisSelectors.js +0 -2113
- package/src/state/selectors/barSelectors.js +0 -263
- package/src/state/selectors/barStackSelectors.js +0 -65
- package/src/state/selectors/brushSelectors.js +0 -21
- package/src/state/selectors/combiners/combineActiveLabel.js +0 -18
- package/src/state/selectors/combiners/combineAllBarPositions.js +0 -169
- package/src/state/selectors/combiners/combineAxisRangeWithReverse.js +0 -11
- package/src/state/selectors/combiners/combineBarPosition.js +0 -17
- package/src/state/selectors/combiners/combineBarSizeList.js +0 -115
- package/src/state/selectors/combiners/combineConfiguredScale.js +0 -46
- package/src/state/selectors/combiners/combineCoordinateForDefaultIndex.js +0 -48
- package/src/state/selectors/combiners/combineInverseScaleFunction.js +0 -12
- package/src/state/selectors/combiners/combineStackedData.js +0 -22
- package/src/state/selectors/combiners/combineTooltipInteractionState.js +0 -121
- package/src/state/selectors/combiners/combineTooltipPayload.js +0 -248
- package/src/state/selectors/containerSelectors.js +0 -6
- package/src/state/selectors/graphicalItemSelectors.js +0 -25
- package/src/state/selectors/legendSelectors.js +0 -18
- package/src/state/selectors/lineSelectors.js +0 -106
- package/src/state/selectors/numberDomainEqualityCheck.js +0 -11
- package/src/state/selectors/pickAxisId.js +0 -3
- package/src/state/selectors/pickAxisType.js +0 -3
- package/src/state/selectors/polarAxisSelectors.js +0 -237
- package/src/state/selectors/rootPropsSelectors.js +0 -13
- package/src/state/selectors/selectAllAxes.js +0 -15
- package/src/state/selectors/selectChartOffset.js +0 -12
- package/src/state/selectors/selectChartOffsetInternal.js +0 -174
- package/src/state/selectors/selectTooltipAxisId.js +0 -3
- package/src/state/selectors/selectTooltipEventType.js +0 -27
- package/src/state/selectors/selectTooltipPayloadSearcher.js +0 -3
- package/src/state/selectors/selectTooltipSettings.js +0 -3
- package/src/state/selectors/selectTooltipState.js +0 -3
- package/src/state/selectors/selectors.js +0 -222
- package/src/state/selectors/tooltipSelectors.js +0 -471
- package/src/state/selectors/touchSelectors.js +0 -31
- package/src/state/tooltipSlice.js +0 -237
- package/src/state/types/StackedGraphicalItem.js +0 -18
- package/src/state/zIndexSlice.js +0 -167
- package/src/synchronisation/syncSelectors.js +0 -5
- package/src/util/ChartUtils.js +0 -630
- package/src/util/DOMUtils.js +0 -180
- package/src/util/Events.js +0 -7
- package/src/util/Global.js +0 -13
- package/src/util/LRUCache.js +0 -58
- package/src/util/PolarUtils.js +0 -190
- package/src/util/ReduceCSSCalc.js +0 -260
- package/src/util/axisPropsAreEqual.js +0 -63
- package/src/util/createEventProxy.js +0 -18
- package/src/util/getActiveCoordinate.js +0 -253
- package/src/util/getClassNameFromUnknown.js +0 -8
- package/src/util/getRadiusAndStrokeWidthFromDot.js +0 -28
- package/src/util/getSliced.js +0 -11
- package/src/util/isWellBehavedNumber.js +0 -8
- package/src/util/round.js +0 -39
- package/src/util/scale/RechartsScale.js +0 -68
- package/src/util/scale/index.js +0 -3
- package/src/util/stacks/getStackSeriesIdentifier.js +0 -10
- package/src/zIndex/ZIndexLayer.tsrx.d.ts +0 -2
package/src/index.ts
CHANGED
|
@@ -3,15 +3,12 @@
|
|
|
3
3
|
// Recharts 3 splits cleanly along the same seam as the other octane bindings:
|
|
4
4
|
// its chart STATE is framework-agnostic (Redux Toolkit slices + reselect
|
|
5
5
|
// selectors; d3 math via victory-vendor; es-toolkit utilities) and its React
|
|
6
|
-
// layer is components + hooks over an isolated redux store.
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
//
|
|
13
|
-
// Port status: Phase 1 (static BarChart + LineChart pipeline) — see
|
|
14
|
-
// docs/recharts-port-plan.md for the phase map.
|
|
6
|
+
// layer is components + hooks over an isolated redux store. The authored
|
|
7
|
+
// TypeScript modules retain the reviewed upstream layout and native Octane
|
|
8
|
+
// component contracts. The store runs through @octanejs/redux, and consumers
|
|
9
|
+
// typecheck and compile the same .ts/.tsrx source that is executed.
|
|
10
|
+
import type { Props as NativeAreaProps } from './cartesian/Area.tsrx';
|
|
11
|
+
import type { Props as NativePieProps } from './polar/Pie.tsrx';
|
|
15
12
|
export { Surface } from './container/Surface.tsrx';
|
|
16
13
|
export { Layer } from './container/Layer.tsrx';
|
|
17
14
|
export { Cell } from './component/Cell';
|
|
@@ -71,34 +68,37 @@ export { PolarRadiusAxis } from './polar/PolarRadiusAxis.tsrx';
|
|
|
71
68
|
export { Sankey } from './chart/Sankey.tsrx';
|
|
72
69
|
export { SunburstChart } from './chart/SunburstChart.tsrx';
|
|
73
70
|
|
|
74
|
-
// Public
|
|
75
|
-
//
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
export type
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
export type
|
|
85
|
-
export type
|
|
86
|
-
export type
|
|
87
|
-
export type
|
|
88
|
-
export type
|
|
89
|
-
export type
|
|
90
|
-
export type
|
|
91
|
-
export type
|
|
92
|
-
export type
|
|
93
|
-
export type
|
|
94
|
-
export type
|
|
95
|
-
export type
|
|
96
|
-
export type
|
|
97
|
-
export type
|
|
98
|
-
export type
|
|
99
|
-
export type
|
|
100
|
-
export type
|
|
101
|
-
export type
|
|
71
|
+
// Public aliases come from each component's implementation, not a parallel
|
|
72
|
+
// declaration facade. Keep the previously defaulted Area/Pie generic aliases.
|
|
73
|
+
export type AreaProps<DataPointType = unknown, ValueAxisType = unknown> = NativeAreaProps<
|
|
74
|
+
DataPointType,
|
|
75
|
+
ValueAxisType
|
|
76
|
+
>;
|
|
77
|
+
export type PieProps<DataPointType = unknown, DataValueType = unknown> = NativePieProps<
|
|
78
|
+
DataPointType,
|
|
79
|
+
DataValueType
|
|
80
|
+
>;
|
|
81
|
+
export type { Props as BarProps, BarShapeProps } from './cartesian/Bar.tsrx';
|
|
82
|
+
export type { Props as CartesianGridProps } from './cartesian/CartesianGrid.tsrx';
|
|
83
|
+
export type { Props as DotProps } from './shape/Dot.tsrx';
|
|
84
|
+
export type { Props as FunnelProps } from './cartesian/Funnel.tsrx';
|
|
85
|
+
export type { Props as LabelListProps } from './component/LabelList.tsrx';
|
|
86
|
+
export type { Props as LabelProps } from './component/Label.tsrx';
|
|
87
|
+
export type { Props as LineProps } from './cartesian/Line.tsrx';
|
|
88
|
+
export type { PieLabel, PieLabelRenderProps } from './polar/Pie.tsrx';
|
|
89
|
+
export type { Props as PolarAngleAxisProps } from './polar/PolarAngleAxis.tsrx';
|
|
90
|
+
export type { Props as PolarGridProps } from './polar/PolarGrid.tsrx';
|
|
91
|
+
export type { Props as PolarRadiusAxisProps } from './polar/PolarRadiusAxis.tsrx';
|
|
92
|
+
export type { Props as RadarProps } from './polar/Radar.tsrx';
|
|
93
|
+
export type { RadialBarProps } from './polar/RadialBar.tsrx';
|
|
94
|
+
export type { Props as ReferenceLineProps } from './cartesian/ReferenceLine.tsrx';
|
|
95
|
+
export type { Props as SankeyProps } from './chart/Sankey.tsrx';
|
|
96
|
+
export type { Props as ScatterProps } from './cartesian/Scatter.tsrx';
|
|
97
|
+
export type { SunburstChartProps } from './chart/SunburstChart.tsrx';
|
|
98
|
+
export type { Props as XAxisProps } from './cartesian/XAxis.tsrx';
|
|
99
|
+
export type { Props as YAxisProps } from './cartesian/YAxis.tsrx';
|
|
100
|
+
export type { Props as ZAxisProps } from './cartesian/ZAxis.tsrx';
|
|
101
|
+
export type { RechartsProps, BrushProps, TreemapProps } from './legacy-props';
|
|
102
102
|
export { CartesianAxis } from './cartesian/CartesianAxis.tsrx';
|
|
103
103
|
export { BarStack } from './cartesian/BarStack.tsrx';
|
|
104
104
|
export { LineDrawShape } from './cartesian/LineDrawShape.tsrx';
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import type { OctaneNode } from 'octane';
|
|
2
|
+
|
|
3
|
+
type Render = OctaneNode | ((...args: any[]) => OctaneNode);
|
|
4
|
+
type Handler = (...args: any[]) => void;
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Legacy broad prop bag retained for source compatibility only.
|
|
8
|
+
* @deprecated Use the specific exported component prop type instead.
|
|
9
|
+
* No rendered component uses this interface as its props contract.
|
|
10
|
+
*/
|
|
11
|
+
export interface RechartsProps {
|
|
12
|
+
accessibilityLayer?: boolean;
|
|
13
|
+
allowDecimals?: boolean;
|
|
14
|
+
activeBar?: Render | Record<string, unknown>;
|
|
15
|
+
activeDot?: Render;
|
|
16
|
+
activeIndex?: number;
|
|
17
|
+
activeShape?: Render | Record<string, unknown>;
|
|
18
|
+
angle?: number;
|
|
19
|
+
animationBegin?: number;
|
|
20
|
+
animationDuration?: number;
|
|
21
|
+
animationEasing?: string;
|
|
22
|
+
aspect?: number;
|
|
23
|
+
axisLine?: boolean | Record<string, unknown>;
|
|
24
|
+
barCategoryGap?: number | string;
|
|
25
|
+
barGap?: number | string;
|
|
26
|
+
barSize?: number | string;
|
|
27
|
+
baseValue?: number | 'dataMin' | 'dataMax';
|
|
28
|
+
background?: Render | Record<string, unknown>;
|
|
29
|
+
children?: OctaneNode;
|
|
30
|
+
className?: string;
|
|
31
|
+
color?: string;
|
|
32
|
+
connectNulls?: boolean;
|
|
33
|
+
content?: Render | Record<string, unknown>;
|
|
34
|
+
cursor?: Render | Record<string, unknown>;
|
|
35
|
+
cx?: number | string;
|
|
36
|
+
cy?: number | string;
|
|
37
|
+
data?: readonly unknown[];
|
|
38
|
+
dataKey?: string | number | ((entry: unknown) => unknown);
|
|
39
|
+
debounce?: number;
|
|
40
|
+
domain?: readonly unknown[];
|
|
41
|
+
dot?: Render | Record<string, unknown>;
|
|
42
|
+
dy?: number | string;
|
|
43
|
+
endAngle?: number;
|
|
44
|
+
fill?: string;
|
|
45
|
+
fillOpacity?: number;
|
|
46
|
+
fontFamily?: string;
|
|
47
|
+
fontSize?: number | string;
|
|
48
|
+
formatter?: (...args: any[]) => OctaneNode;
|
|
49
|
+
height?: number | string;
|
|
50
|
+
hide?: boolean;
|
|
51
|
+
horizontal?: boolean;
|
|
52
|
+
id?: string;
|
|
53
|
+
innerRadius?: number | string;
|
|
54
|
+
interval?: number | string;
|
|
55
|
+
isAnimationActive?: boolean;
|
|
56
|
+
label?: Render | Record<string, unknown>;
|
|
57
|
+
labelLine?: boolean | Record<string, unknown>;
|
|
58
|
+
labelFormatter?: (...args: any[]) => OctaneNode;
|
|
59
|
+
layout?: 'horizontal' | 'vertical' | 'centric' | 'radial';
|
|
60
|
+
legendType?: string;
|
|
61
|
+
line?: boolean | Record<string, unknown>;
|
|
62
|
+
link?: Render | Record<string, unknown>;
|
|
63
|
+
linkCurvature?: number;
|
|
64
|
+
margin?: number | { top?: number; right?: number; bottom?: number; left?: number };
|
|
65
|
+
maxBarSize?: number;
|
|
66
|
+
maxHeight?: number;
|
|
67
|
+
minTickGap?: number;
|
|
68
|
+
minHeight?: number | string;
|
|
69
|
+
minPointSize?: number | ((value: unknown) => number);
|
|
70
|
+
minWidth?: number | string;
|
|
71
|
+
name?: string | number;
|
|
72
|
+
nameKey?: string | number | ((entry: unknown) => unknown);
|
|
73
|
+
node?: Render | Record<string, unknown>;
|
|
74
|
+
nodePadding?: number;
|
|
75
|
+
nodeWidth?: number;
|
|
76
|
+
onAnimationEnd?: Handler;
|
|
77
|
+
onAnimationStart?: Handler;
|
|
78
|
+
onClick?: Handler;
|
|
79
|
+
onMouseEnter?: Handler;
|
|
80
|
+
onMouseLeave?: Handler;
|
|
81
|
+
onResize?: (width: number, height: number) => void;
|
|
82
|
+
orientation?: string;
|
|
83
|
+
outerRadius?: number | string;
|
|
84
|
+
offset?: number;
|
|
85
|
+
paddingAngle?: number;
|
|
86
|
+
padding?: number | { top?: number; right?: number; bottom?: number; left?: number };
|
|
87
|
+
payload?: Record<string, any> | readonly Record<string, any>[];
|
|
88
|
+
position?: string | { x?: number; y?: number };
|
|
89
|
+
radius?: number | readonly number[];
|
|
90
|
+
range?: readonly number[];
|
|
91
|
+
ref?: unknown;
|
|
92
|
+
reversed?: boolean;
|
|
93
|
+
ringPadding?: number;
|
|
94
|
+
scale?: string | ((value: unknown) => unknown);
|
|
95
|
+
shape?: Render | Record<string, unknown>;
|
|
96
|
+
stackId?: string | number;
|
|
97
|
+
stackOffset?: string;
|
|
98
|
+
startAngle?: number;
|
|
99
|
+
stroke?: string;
|
|
100
|
+
strokeDasharray?: string | number;
|
|
101
|
+
strokeOpacity?: number;
|
|
102
|
+
strokeWidth?: number;
|
|
103
|
+
style?: object;
|
|
104
|
+
syncId?: string | number;
|
|
105
|
+
textAnchor?: string;
|
|
106
|
+
textOptions?: Record<string, unknown>;
|
|
107
|
+
tick?: Render | Record<string, unknown>;
|
|
108
|
+
tickCount?: number;
|
|
109
|
+
tickFormatter?: (value: any, index: number) => string;
|
|
110
|
+
tickLine?: boolean | Record<string, unknown>;
|
|
111
|
+
ticks?: readonly unknown[];
|
|
112
|
+
tooltipType?: string;
|
|
113
|
+
type?: string;
|
|
114
|
+
unit?: string | number;
|
|
115
|
+
valueKey?: string | number | ((entry: unknown) => unknown);
|
|
116
|
+
vertical?: boolean;
|
|
117
|
+
verticalAlign?: 'top' | 'middle' | 'bottom';
|
|
118
|
+
iterations?: number;
|
|
119
|
+
width?: number | string;
|
|
120
|
+
xAxisId?: string | number;
|
|
121
|
+
yAxisId?: string | number;
|
|
122
|
+
zAxisId?: string | number;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/** @deprecated Brush is not implemented by the Octane runtime port. */
|
|
126
|
+
export type BrushProps = RechartsProps;
|
|
127
|
+
|
|
128
|
+
/** @deprecated Treemap is not implemented by the Octane runtime port. */
|
|
129
|
+
export type TreemapProps = RechartsProps;
|
package/src/polar/Pie.tsrx
CHANGED
|
@@ -1,14 +1,24 @@
|
|
|
1
|
+
import type { RegisteredCell } from '../context/CellsContext.ts';
|
|
2
|
+
|
|
3
|
+
import type {
|
|
4
|
+
MutableRefObject,
|
|
5
|
+
NativeMouseEvent,
|
|
6
|
+
NativeTouchEvent,
|
|
7
|
+
OctaneElement,
|
|
8
|
+
OctaneNode,
|
|
9
|
+
SVGProps,
|
|
10
|
+
} from '../util/OctaneTypes.ts';
|
|
1
11
|
import * as React from 'octane';
|
|
2
|
-
import {
|
|
12
|
+
import { useMemo, useRef } from 'octane';
|
|
3
13
|
import get from 'es-toolkit/compat/get';
|
|
4
14
|
|
|
5
15
|
import { clsx } from 'clsx';
|
|
6
16
|
import { selectPieLegend, selectPieSectors } from '../state/selectors/pieSelectors';
|
|
7
17
|
import { useAppSelector } from '../state/hooks';
|
|
8
|
-
import { Layer } from '../container/Layer';
|
|
9
|
-
import { Curve, Props as CurveProps } from '../shape/Curve';
|
|
10
|
-
import { Sector } from '../shape/Sector';
|
|
11
|
-
import { Text } from '../component/Text';
|
|
18
|
+
import { Layer } from '../container/Layer.tsrx';
|
|
19
|
+
import { Curve, Props as CurveProps } from '../shape/Curve.tsrx';
|
|
20
|
+
import { Sector } from '../shape/Sector.tsrx';
|
|
21
|
+
import { Text, type RenderableText, type TextAnchor } from '../component/Text.tsrx';
|
|
12
22
|
import { getMaxRadius, polarToCartesian } from '../util/PolarUtils';
|
|
13
23
|
import { getPercentValue, interpolate, isNumber, mathSign } from '../util/DataUtils';
|
|
14
24
|
import { getTooltipNameProp, getValueByDataKey } from '../util/ChartUtils';
|
|
@@ -29,7 +39,7 @@ import {
|
|
|
29
39
|
ShapeAnimationProps,
|
|
30
40
|
TooltipType,
|
|
31
41
|
} from '../util/types';
|
|
32
|
-
import { Shape } from '../util/ActiveShapeUtils';
|
|
42
|
+
import { Shape } from '../util/ActiveShapeUtils.tsrx';
|
|
33
43
|
import {
|
|
34
44
|
TooltipTriggerInfo,
|
|
35
45
|
useMouseClickItemDispatch,
|
|
@@ -38,7 +48,7 @@ import {
|
|
|
38
48
|
} from '../context/tooltipContext';
|
|
39
49
|
import { TooltipPayload, TooltipPayloadConfiguration } from '../state/tooltipSlice';
|
|
40
50
|
import { SetTooltipEntrySettings } from '../state/SetTooltipEntrySettings';
|
|
41
|
-
import { Formatter } from '../component/DefaultTooltipContent';
|
|
51
|
+
import { Formatter } from '../component/DefaultTooltipContent.tsrx';
|
|
42
52
|
import {
|
|
43
53
|
selectActiveTooltipDataKey,
|
|
44
54
|
selectActiveTooltipGraphicalItemId,
|
|
@@ -53,10 +63,10 @@ import {
|
|
|
53
63
|
AnimatedItems,
|
|
54
64
|
AnimationInterpolateFn,
|
|
55
65
|
useAnimationCallbacks,
|
|
56
|
-
} from '../animation/AnimatedItems';
|
|
66
|
+
} from '../animation/AnimatedItems.tsrx';
|
|
57
67
|
import { AnimationMatchByProp, matchAppend } from '../animation/matchBy';
|
|
58
68
|
import { RequiresDefaultProps, resolveDefaultProps } from '../util/resolveDefaultProps';
|
|
59
|
-
import { RegisterGraphicalItemId } from '../context/RegisterGraphicalItemId';
|
|
69
|
+
import { RegisterGraphicalItemId } from '../context/RegisterGraphicalItemId.tsrx';
|
|
60
70
|
import { SetPolarGraphicalItem } from '../state/SetGraphicalItem';
|
|
61
71
|
import type { PiePresentationProps, PieSettings } from '../state/types/PieSettings';
|
|
62
72
|
import {
|
|
@@ -69,9 +79,9 @@ import {
|
|
|
69
79
|
PolarLabelListContextProvider,
|
|
70
80
|
PolarLabelListEntry,
|
|
71
81
|
Props as LabelListProps,
|
|
72
|
-
} from '../component/LabelList';
|
|
82
|
+
} from '../component/LabelList.tsrx';
|
|
73
83
|
import { GraphicalItemId } from '../state/graphicalItemsSlice';
|
|
74
|
-
import { ZIndexable, ZIndexLayer } from '../zIndex/ZIndexLayer';
|
|
84
|
+
import { ZIndexable, ZIndexLayer } from '../zIndex/ZIndexLayer.tsrx';
|
|
75
85
|
import { DefaultZIndexes } from '../zIndex/DefaultZIndexes';
|
|
76
86
|
import { ChartData } from '../state/chartDataSlice';
|
|
77
87
|
import { getClassNameFromUnknown } from '../util/getClassNameFromUnknown';
|
|
@@ -118,24 +128,27 @@ interface PieDef {
|
|
|
118
128
|
}
|
|
119
129
|
|
|
120
130
|
type PieLabelLine =
|
|
121
|
-
|
|
|
122
|
-
| ((props:
|
|
131
|
+
| OctaneElement<CurveProps>
|
|
132
|
+
| ((props: CurveProps & { index: number }) => OctaneNode)
|
|
123
133
|
| SVGProps<SVGPathElement>
|
|
124
134
|
| boolean;
|
|
125
135
|
|
|
126
136
|
interface PieLabelExtraProps {
|
|
127
137
|
stroke: string;
|
|
128
138
|
index: number;
|
|
129
|
-
textAnchor:
|
|
139
|
+
textAnchor: TextAnchor;
|
|
130
140
|
}
|
|
131
141
|
|
|
132
142
|
export type PieLabelRenderProps =
|
|
133
143
|
Omit<SVGPropsNoEvents<PieSvgAttributes>, 'offset'> & Omit<
|
|
134
144
|
PieSectorDataItem,
|
|
135
|
-
'offset'
|
|
136
|
-
> & PieLabelExtraProps & Coordinate;
|
|
145
|
+
'offset' | 'ref'
|
|
146
|
+
> & Pick<SVGProps<SVGTextElement>, 'ref'> & PieLabelExtraProps & Coordinate;
|
|
137
147
|
|
|
138
|
-
export type LabelListPropsWithPosition =
|
|
148
|
+
export type LabelListPropsWithPosition =
|
|
149
|
+
Omit<LabelListProps, keyof PieCoordinate> & Partial<PieCoordinate> & {
|
|
150
|
+
position: LabelListProps['position'];
|
|
151
|
+
};
|
|
139
152
|
|
|
140
153
|
/**
|
|
141
154
|
* The `label` prop in Pie accepts a variety of alternatives.
|
|
@@ -161,12 +174,12 @@ export type PieLabel =
|
|
|
161
174
|
* If label prop is a function, or a React component, it will be called once for each label.
|
|
162
175
|
* The result of each call will be rendered.
|
|
163
176
|
*/
|
|
164
|
-
((props: PieLabelRenderProps) =>
|
|
177
|
+
((props: PieLabelRenderProps) => RenderableText | OctaneElement<PieLabelRenderProps>)
|
|
165
178
|
| /*
|
|
166
|
-
* If label prop is a
|
|
179
|
+
* If label prop is a OctaneElement, it will get cloned and receive brand-new surprise props.
|
|
167
180
|
* I do not recommend this variant
|
|
168
181
|
*/
|
|
169
|
-
|
|
182
|
+
OctaneElement<PieLabelRenderProps>;
|
|
170
183
|
|
|
171
184
|
export type PieSectorData =
|
|
172
185
|
GeometrySector & TooltipTriggerInfo & {
|
|
@@ -208,58 +221,58 @@ interface PieEvents {
|
|
|
208
221
|
/**
|
|
209
222
|
* The customized event handler of click on the sectors in this group.
|
|
210
223
|
*/
|
|
211
|
-
onClick?: (data: PieSectorDataItem, index: number, e:
|
|
224
|
+
onClick?: (data: PieSectorDataItem, index: number, e: NativeMouseEvent<
|
|
212
225
|
SVGGraphicsElement
|
|
213
226
|
>) => void;
|
|
214
227
|
/**
|
|
215
228
|
* The customized event handler of mousedown on the sectors in this group.
|
|
216
229
|
*/
|
|
217
|
-
onMouseDown?: (data: PieSectorDataItem, index: number, e:
|
|
230
|
+
onMouseDown?: (data: PieSectorDataItem, index: number, e: NativeMouseEvent<
|
|
218
231
|
SVGGraphicsElement
|
|
219
232
|
>) => void;
|
|
220
233
|
/**
|
|
221
234
|
* The customized event handler of mouseup on the sectors in this group.
|
|
222
235
|
*/
|
|
223
|
-
onMouseUp?: (data: PieSectorDataItem, index: number, e:
|
|
236
|
+
onMouseUp?: (data: PieSectorDataItem, index: number, e: NativeMouseEvent<
|
|
224
237
|
SVGGraphicsElement
|
|
225
238
|
>) => void;
|
|
226
239
|
/**
|
|
227
240
|
* The customized event handler of mousemove on the sectors in this group.
|
|
228
241
|
*/
|
|
229
|
-
onMouseMove?: (data: PieSectorDataItem, index: number, e:
|
|
242
|
+
onMouseMove?: (data: PieSectorDataItem, index: number, e: NativeMouseEvent<
|
|
230
243
|
SVGGraphicsElement
|
|
231
244
|
>) => void;
|
|
232
245
|
/**
|
|
233
246
|
* The customized event handler of mouseover on the sectors in this group.
|
|
234
247
|
*/
|
|
235
|
-
onMouseOver?: (data: PieSectorDataItem, index: number, e:
|
|
248
|
+
onMouseOver?: (data: PieSectorDataItem, index: number, e: NativeMouseEvent<
|
|
236
249
|
SVGGraphicsElement
|
|
237
250
|
>) => void;
|
|
238
251
|
/**
|
|
239
252
|
* The customized event handler of mouseout on the sectors in this group.
|
|
240
253
|
*/
|
|
241
|
-
onMouseOut?: (data: PieSectorDataItem, index: number, e:
|
|
254
|
+
onMouseOut?: (data: PieSectorDataItem, index: number, e: NativeMouseEvent<
|
|
242
255
|
SVGGraphicsElement
|
|
243
256
|
>) => void;
|
|
244
257
|
/**
|
|
245
258
|
* The customized event handler of mouseenter on the sectors in this group.
|
|
246
259
|
*/
|
|
247
|
-
onMouseEnter?: (data: PieSectorDataItem, index: number, e:
|
|
260
|
+
onMouseEnter?: (data: PieSectorDataItem, index: number, e: NativeMouseEvent<
|
|
248
261
|
SVGGraphicsElement
|
|
249
262
|
>) => void;
|
|
250
263
|
/**
|
|
251
264
|
* The customized event handler of mouseleave on the sectors in this group.
|
|
252
265
|
*/
|
|
253
|
-
onMouseLeave?: (data: PieSectorDataItem, index: number, e:
|
|
266
|
+
onMouseLeave?: (data: PieSectorDataItem, index: number, e: NativeMouseEvent<
|
|
254
267
|
SVGGraphicsElement
|
|
255
268
|
>) => void;
|
|
256
|
-
onTouchStart?: (data: PieSectorDataItem, index: number, e:
|
|
269
|
+
onTouchStart?: (data: PieSectorDataItem, index: number, e: NativeTouchEvent<
|
|
257
270
|
SVGGraphicsElement
|
|
258
271
|
>) => void;
|
|
259
|
-
onTouchMove?: (data: PieSectorDataItem, index: number, e:
|
|
272
|
+
onTouchMove?: (data: PieSectorDataItem, index: number, e: NativeTouchEvent<
|
|
260
273
|
SVGGraphicsElement
|
|
261
274
|
>) => void;
|
|
262
|
-
onTouchEnd?: (data: PieSectorDataItem, index: number, e:
|
|
275
|
+
onTouchEnd?: (data: PieSectorDataItem, index: number, e: NativeTouchEvent<
|
|
263
276
|
SVGGraphicsElement
|
|
264
277
|
>) => void;
|
|
265
278
|
}
|
|
@@ -283,7 +296,7 @@ interface PieProps<DataPointType = any, DataValueType = any> extends DataProvide
|
|
|
283
296
|
* @example <Pie activeShape={<CustomActiveShape />} />
|
|
284
297
|
* @example https://recharts.github.io/examples/CustomActiveShapePieChart
|
|
285
298
|
*/
|
|
286
|
-
activeShape?: ActiveShape<PieSectorDataItem>;
|
|
299
|
+
activeShape?: ActiveShape<PieSectorDataItem, SVGPathElement>;
|
|
287
300
|
/**
|
|
288
301
|
* Specifies when the animation should begin, the unit of this option is ms.
|
|
289
302
|
* @defaultValue 400
|
|
@@ -348,7 +361,7 @@ interface PieProps<DataPointType = any, DataValueType = any> extends DataProvide
|
|
|
348
361
|
* The shape of inactive sector.
|
|
349
362
|
* @deprecated Use the `shape` prop to modify each sector.
|
|
350
363
|
*/
|
|
351
|
-
inactiveShape?: ActiveShape<PieSectorDataItem>;
|
|
364
|
+
inactiveShape?: ActiveShape<PieSectorDataItem, SVGPathElement>;
|
|
352
365
|
/**
|
|
353
366
|
* If set false, animation will be disabled.
|
|
354
367
|
* If set "auto", the animation will be disabled in SSR and will respect the user's prefers-reduced-motion system preference for accessibility.
|
|
@@ -361,7 +374,7 @@ interface PieProps<DataPointType = any, DataValueType = any> extends DataProvide
|
|
|
361
374
|
* - `false`: no labels are rendered;
|
|
362
375
|
* - `object` that has `position` prop: the props of LabelList component;
|
|
363
376
|
* - `object` that does not have `position` prop: the props of a custom Pie label (similar to Label with position "outside"); this variant supports `labelLine`
|
|
364
|
-
* - `
|
|
377
|
+
* - `OctaneElement`: a custom SVG label element, such as `<text>` or `<g>`.
|
|
365
378
|
* HTML elements such as `<div>` are not valid inside the chart SVG and may trigger React DOM warnings.
|
|
366
379
|
* - `function`: a render function of custom label.
|
|
367
380
|
*
|
|
@@ -375,7 +388,7 @@ interface PieProps<DataPointType = any, DataValueType = any> extends DataProvide
|
|
|
375
388
|
/**
|
|
376
389
|
* If false set, label lines will not be drawn. If true set, label lines will be drawn which have the props calculated internally.
|
|
377
390
|
* If object set, label lines will be drawn which have the props merged by the internal calculated props and the option.
|
|
378
|
-
* If
|
|
391
|
+
* If OctaneElement set, the option can be the custom label line element.
|
|
379
392
|
* If set a function, the function will be called to render customized label line.
|
|
380
393
|
* @defaultValue true
|
|
381
394
|
* @example <Pie labelLine={<CustomizedLabelLine />} />
|
|
@@ -456,9 +469,10 @@ export type PieCoordinate = {
|
|
|
456
469
|
};
|
|
457
470
|
|
|
458
471
|
const defaultPieSectorShape = Sector;
|
|
472
|
+
const PieSectorShape = Shape<PieSectorShapeProps, SVGPathElement>;
|
|
459
473
|
|
|
460
474
|
function SetPiePayloadLegend(props: {
|
|
461
|
-
cells: ReadonlyArray<
|
|
475
|
+
cells: ReadonlyArray<RegisteredCell> | undefined;
|
|
462
476
|
id: GraphicalItemId;
|
|
463
477
|
}) {
|
|
464
478
|
const legendPayload = useAppSelector((state) => selectPieLegend(state, props.id, props.cells));
|
|
@@ -474,18 +488,18 @@ type PieSectorsProps =
|
|
|
474
488
|
/**
|
|
475
489
|
* @deprecated
|
|
476
490
|
*/
|
|
477
|
-
activeShape: ActiveShape<Readonly<PieSectorDataItem
|
|
491
|
+
activeShape: ActiveShape<Readonly<PieSectorDataItem>, SVGPathElement> | undefined;
|
|
478
492
|
/**
|
|
479
493
|
* @deprecated
|
|
480
494
|
*/
|
|
481
|
-
inactiveShape: ActiveShape<Readonly<PieSectorDataItem
|
|
495
|
+
inactiveShape: ActiveShape<Readonly<PieSectorDataItem>, SVGPathElement> | undefined;
|
|
482
496
|
shape: PieShape;
|
|
483
497
|
allOtherPieProps: WithoutId<InternalProps>;
|
|
484
498
|
id: GraphicalItemId;
|
|
485
499
|
};
|
|
486
500
|
|
|
487
501
|
function getActiveShapeFill(
|
|
488
|
-
activeShape: ActiveShape<Readonly<PieSectorDataItem
|
|
502
|
+
activeShape: ActiveShape<Readonly<PieSectorDataItem>, SVGPathElement> | undefined,
|
|
489
503
|
): string | undefined {
|
|
490
504
|
// activeShape can be boolean/function/element/object; only element/object can carry a static fill value.
|
|
491
505
|
if (
|
|
@@ -494,7 +508,11 @@ function getActiveShapeFill(
|
|
|
494
508
|
return undefined;
|
|
495
509
|
}
|
|
496
510
|
|
|
497
|
-
if (
|
|
511
|
+
if (
|
|
512
|
+
React.isValidElement<Partial<Readonly<PieSectorDataItem>> & SVGProps<SVGPathElement>>(
|
|
513
|
+
activeShape,
|
|
514
|
+
)
|
|
515
|
+
) {
|
|
498
516
|
// React element form: <Sector fill="..."/> or custom element with fill prop.
|
|
499
517
|
const fill = activeShape.props?.fill;
|
|
500
518
|
return typeof fill === 'string' ? fill : undefined;
|
|
@@ -617,9 +635,8 @@ const parseDeltaAngle = (startAngle: number, endAngle: number) => {
|
|
|
617
635
|
return sign * deltaAngle;
|
|
618
636
|
};
|
|
619
637
|
|
|
620
|
-
const renderLabelLineItem = (option: PieLabelLine, props: CurveProps) => {
|
|
621
|
-
if (React.isValidElement(option)) {
|
|
622
|
-
// @ts-expect-error we can't know if the type of props matches the element
|
|
638
|
+
const renderLabelLineItem = (option: PieLabelLine, props: CurveProps & { index: number }) => {
|
|
639
|
+
if (React.isValidElement<CurveProps>(option)) {
|
|
623
640
|
return React.cloneElement(option, props);
|
|
624
641
|
}
|
|
625
642
|
if (typeof option === 'function') {
|
|
@@ -635,24 +652,20 @@ const renderLabelLineItem = (option: PieLabelLine, props: CurveProps) => {
|
|
|
635
652
|
return <Curve {...otherProps} type="linear" className={className} />;
|
|
636
653
|
};
|
|
637
654
|
|
|
638
|
-
const renderLabelItem = (option: PieLabel, props: PieLabelRenderProps, value:
|
|
639
|
-
if (React.isValidElement(option)) {
|
|
640
|
-
// @ts-expect-error element cloning is not typed
|
|
655
|
+
const renderLabelItem = (option: PieLabel, props: PieLabelRenderProps, value: RenderableText) => {
|
|
656
|
+
if (React.isValidElement<PieLabelRenderProps>(option)) {
|
|
641
657
|
return React.cloneElement(option, props);
|
|
642
658
|
}
|
|
643
|
-
let label = value;
|
|
659
|
+
let label: RenderableText | OctaneElement<PieLabelRenderProps> = value;
|
|
644
660
|
if (typeof option === 'function') {
|
|
645
661
|
label = option(props);
|
|
646
|
-
if (React.isValidElement(label)) {
|
|
662
|
+
if (React.isValidElement<PieLabelRenderProps>(label)) {
|
|
647
663
|
return label;
|
|
648
664
|
}
|
|
649
665
|
}
|
|
650
666
|
|
|
651
667
|
const className = clsx('recharts-pie-label-text', getClassNameFromUnknown(option));
|
|
652
|
-
return <Text {...props} alignmentBaseline="middle" className={className}>
|
|
653
|
-
{/* @ts-expect-error we pass unknown but Text expects string | number */}
|
|
654
|
-
{label}
|
|
655
|
-
</Text>;
|
|
668
|
+
return <Text {...props} alignmentBaseline="middle" className={className}>{label}</Text>;
|
|
656
669
|
};
|
|
657
670
|
|
|
658
671
|
function PieLabels({
|
|
@@ -678,6 +691,9 @@ function PieLabels({
|
|
|
678
691
|
20;
|
|
679
692
|
|
|
680
693
|
const labels = sectors.map((entry, i) => {
|
|
694
|
+
// The Cell ref belongs to its sector, not to the label or connector.
|
|
695
|
+
// Label and labelLine options may supply their own native refs below.
|
|
696
|
+
const { ref: sectorRef, ...labelEntry } = entry;
|
|
681
697
|
const midAngle = (entry.startAngle + entry.endAngle) / 2;
|
|
682
698
|
const endPoint = polarToCartesian(
|
|
683
699
|
entry.cx,
|
|
@@ -687,20 +703,17 @@ function PieLabels({
|
|
|
687
703
|
);
|
|
688
704
|
const labelProps: PieLabelRenderProps = {
|
|
689
705
|
...pieProps,
|
|
690
|
-
...
|
|
691
|
-
// @ts-expect-error customLabelProps is contributing unknown props
|
|
706
|
+
...labelEntry,
|
|
692
707
|
stroke: 'none',
|
|
693
708
|
...customLabelProps,
|
|
694
709
|
index: i,
|
|
695
710
|
textAnchor: getTextAnchor(endPoint.x, entry.cx),
|
|
696
711
|
...endPoint,
|
|
697
712
|
};
|
|
698
|
-
const lineProps: CurveProps = {
|
|
713
|
+
const lineProps: CurveProps & { index: number } = {
|
|
699
714
|
...pieProps,
|
|
700
|
-
...
|
|
701
|
-
// @ts-expect-error customLabelLineProps is contributing unknown props
|
|
715
|
+
...labelEntry,
|
|
702
716
|
fill: 'none',
|
|
703
|
-
// @ts-expect-error customLabelLineProps is contributing unknown props
|
|
704
717
|
stroke: entry.fill,
|
|
705
718
|
...customLabelLineProps,
|
|
706
719
|
index: i,
|
|
@@ -714,8 +727,11 @@ function PieLabels({
|
|
|
714
727
|
>
|
|
715
728
|
<Layer>
|
|
716
729
|
{labelLine && renderLabelLineItem(labelLine, lineProps)}
|
|
717
|
-
{
|
|
718
|
-
|
|
730
|
+
{renderLabelItem(
|
|
731
|
+
label,
|
|
732
|
+
labelProps,
|
|
733
|
+
getValueByDataKey<unknown, RenderableText>(entry, dataKey),
|
|
734
|
+
)}
|
|
719
735
|
</Layer>
|
|
720
736
|
</ZIndexLayer>;
|
|
721
737
|
});
|
|
@@ -815,7 +831,7 @@ function PieSectors(props: PieSectorsProps) {
|
|
|
815
831
|
onMouseLeave={onMouseLeaveFromContext(entry, i)}
|
|
816
832
|
onClick={onClickFromContext(entry, i)}
|
|
817
833
|
>
|
|
818
|
-
<
|
|
834
|
+
<PieSectorShape
|
|
819
835
|
option={sectorOptions ?? shape}
|
|
820
836
|
DefaultShape={defaultPieSectorShape}
|
|
821
837
|
shapeProps={sectorProps}
|
|
@@ -833,7 +849,7 @@ export function computePieSectors({
|
|
|
833
849
|
}: {
|
|
834
850
|
pieSettings: PieSettings;
|
|
835
851
|
displayedData: ChartData;
|
|
836
|
-
cells: ReadonlyArray<
|
|
852
|
+
cells: ReadonlyArray<RegisteredCell> | undefined;
|
|
837
853
|
offset: ChartOffsetInternal;
|
|
838
854
|
}): ReadonlyArray<PieSectorDataItem> | undefined {
|
|
839
855
|
const { cornerRadius, startAngle, endAngle, dataKey, nameKey, tooltipType } = pieSettings;
|
|
@@ -877,8 +893,10 @@ export function computePieSectors({
|
|
|
877
893
|
const percent = (isNumber(val) ? val : 0) / sum;
|
|
878
894
|
let tempStartAngle;
|
|
879
895
|
|
|
880
|
-
|
|
881
|
-
|
|
896
|
+
const entryWithCellInfo: RealPieData = {
|
|
897
|
+
...entry as Record<string, unknown>,
|
|
898
|
+
...cells && cells[i] && cells[i].props,
|
|
899
|
+
};
|
|
882
900
|
const sectorColor =
|
|
883
901
|
entryWithCellInfo != null && 'fill' in entryWithCellInfo &&
|
|
884
902
|
typeof entryWithCellInfo.fill === 'string'
|
|
@@ -947,7 +965,7 @@ function PieLabelListProvider({
|
|
|
947
965
|
}: {
|
|
948
966
|
showLabels: boolean;
|
|
949
967
|
sectors: ReadonlyArray<PieSectorDataItem>;
|
|
950
|
-
children:
|
|
968
|
+
children: OctaneNode;
|
|
951
969
|
}) {
|
|
952
970
|
const labelListEntries: ReadonlyArray<PolarLabelListEntry> = useMemo(() => {
|
|
953
971
|
if (!showLabels || !sectors) {
|
|
@@ -1183,8 +1201,13 @@ type PropsWithResolvedDefaults = RequiresDefaultProps<Props, typeof defaultPiePr
|
|
|
1183
1201
|
* @provides LabelListContext
|
|
1184
1202
|
* @provides CellReader
|
|
1185
1203
|
*/
|
|
1186
|
-
function PieFn
|
|
1187
|
-
|
|
1204
|
+
function PieFn<DataPointType = any, DataValueType = any>(
|
|
1205
|
+
outsideProps: Props<DataPointType, DataValueType>,
|
|
1206
|
+
) {
|
|
1207
|
+
const props: PropsWithResolvedDefaults = resolveDefaultProps<Props, typeof defaultPieProps>(
|
|
1208
|
+
outsideProps,
|
|
1209
|
+
defaultPieProps,
|
|
1210
|
+
);
|
|
1188
1211
|
const { id: externalId, ...propsWithoutId } = props;
|
|
1189
1212
|
const presentationProps: PiePresentationProps | null = svgPropertiesNoEvents(propsWithoutId);
|
|
1190
1213
|
|
|
@@ -1219,6 +1242,5 @@ function PieFn(outsideProps: Props) {
|
|
|
1219
1242
|
</>}
|
|
1220
1243
|
</RegisterGraphicalItemId>;
|
|
1221
1244
|
}
|
|
1222
|
-
export const Pie = PieFn as
|
|
1223
|
-
// @ts-expect-error we need to set the displayName for debugging purposes
|
|
1245
|
+
export const Pie = PieFn as typeof PieFn & { displayName?: string };
|
|
1224
1246
|
Pie.displayName = 'Pie';
|