@octanejs/recharts 0.1.41 → 0.1.42
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/polar/RadialBar.tsrx
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
|
+
import type { CellPropsFor } from '../component/Cell';
|
|
2
|
+
import type { RegisteredCell } from '../context/CellsContext.ts';
|
|
3
|
+
|
|
4
|
+
import type {
|
|
5
|
+
ComponentProps,
|
|
6
|
+
MutableRefObject,
|
|
7
|
+
NativeMouseEvent,
|
|
8
|
+
NativeTouchEvent,
|
|
9
|
+
OctaneElement,
|
|
10
|
+
OctaneNode,
|
|
11
|
+
} from '../util/OctaneTypes.ts';
|
|
1
12
|
import * as React from 'octane';
|
|
2
|
-
import {
|
|
13
|
+
import { useRef } from 'octane';
|
|
3
14
|
import { clsx } from 'clsx';
|
|
4
15
|
|
|
5
16
|
import { Series } from 'victory-vendor/d3-shape';
|
|
@@ -8,15 +19,15 @@ import {
|
|
|
8
19
|
parseCornerRadius,
|
|
9
20
|
RadialBarSector,
|
|
10
21
|
RadialBarSectorProps,
|
|
11
|
-
} from '../util/RadialBarUtils';
|
|
12
|
-
import { Props as SectorProps } from '../shape/Sector';
|
|
13
|
-
import { Layer } from '../container/Layer';
|
|
22
|
+
} from '../util/RadialBarUtils.tsrx';
|
|
23
|
+
import { defaultSectorProps, type Props as SectorProps } from '../shape/Sector.tsrx';
|
|
24
|
+
import { Layer } from '../container/Layer.tsrx';
|
|
14
25
|
import {
|
|
15
26
|
ImplicitLabelListType,
|
|
16
27
|
LabelListFromLabelProp,
|
|
17
28
|
PolarLabelListContextProvider,
|
|
18
29
|
PolarLabelListEntry,
|
|
19
|
-
} from '../component/LabelList';
|
|
30
|
+
} from '../component/LabelList.tsrx';
|
|
20
31
|
import { interpolate, mathSign, noop } from '../util/DataUtils';
|
|
21
32
|
import {
|
|
22
33
|
BarPositionPosition,
|
|
@@ -33,9 +44,9 @@ import {
|
|
|
33
44
|
EasingInput,
|
|
34
45
|
DataConsumer,
|
|
35
46
|
DataKey,
|
|
47
|
+
GeometrySector,
|
|
36
48
|
LayoutType,
|
|
37
49
|
LegendType,
|
|
38
|
-
PolarViewBoxRequired,
|
|
39
50
|
PresentationAttributesAdaptChildEvent,
|
|
40
51
|
ShapeAnimationProps,
|
|
41
52
|
TickItem,
|
|
@@ -50,7 +61,7 @@ import {
|
|
|
50
61
|
} from '../context/tooltipContext';
|
|
51
62
|
import { TooltipPayloadConfiguration } from '../state/tooltipSlice';
|
|
52
63
|
import { SetTooltipEntrySettings } from '../state/SetTooltipEntrySettings';
|
|
53
|
-
import { Formatter } from '../component/DefaultTooltipContent';
|
|
64
|
+
import { Formatter } from '../component/DefaultTooltipContent.tsrx';
|
|
54
65
|
import { BaseAxisWithScale } from '../state/selectors/axisSelectors';
|
|
55
66
|
import { ChartData } from '../state/chartDataSlice';
|
|
56
67
|
import {
|
|
@@ -64,10 +75,10 @@ import {
|
|
|
64
75
|
AnimatedItems,
|
|
65
76
|
AnimationInterpolateFn,
|
|
66
77
|
useAnimationCallbacks,
|
|
67
|
-
} from '../animation/AnimatedItems';
|
|
78
|
+
} from '../animation/AnimatedItems.tsrx';
|
|
68
79
|
import { AnimationMatchByProp, matchAppend } from '../animation/matchBy';
|
|
69
80
|
import { AxisId } from '../state/cartesianAxisSlice';
|
|
70
|
-
import { RegisterGraphicalItemId } from '../context/RegisterGraphicalItemId';
|
|
81
|
+
import { RegisterGraphicalItemId } from '../context/RegisterGraphicalItemId.tsrx';
|
|
71
82
|
import type { RadialBarSettings } from '../state/types/RadialBarSettings';
|
|
72
83
|
import { SetPolarGraphicalItem } from '../state/SetGraphicalItem';
|
|
73
84
|
import {
|
|
@@ -76,7 +87,7 @@ import {
|
|
|
76
87
|
} from '../util/svgPropertiesNoEvents';
|
|
77
88
|
import { RequiresDefaultProps, resolveDefaultProps } from '../util/resolveDefaultProps';
|
|
78
89
|
import { WithIdRequired } from '../util/useUniqueId';
|
|
79
|
-
import { ZIndexable, ZIndexLayer } from '../zIndex/ZIndexLayer';
|
|
90
|
+
import { ZIndexable, ZIndexLayer } from '../zIndex/ZIndexLayer.tsrx';
|
|
80
91
|
import { DefaultZIndexes } from '../zIndex/DefaultZIndexes';
|
|
81
92
|
import { getZIndexFromUnknown } from '../zIndex/getZIndexFromUnknown';
|
|
82
93
|
import { usePolarChartLayout } from '../context/chartLayoutContext';
|
|
@@ -85,7 +96,7 @@ import { CellsContext, useCellRegistry } from '../context/CellsContext';
|
|
|
85
96
|
const STABLE_EMPTY_ARRAY: readonly RadialBarDataItem[] = [];
|
|
86
97
|
|
|
87
98
|
export type RadialBarDataItem =
|
|
88
|
-
SectorProps &
|
|
99
|
+
SectorProps & GeometrySector & TooltipTriggerInfo & {
|
|
89
100
|
value?: any;
|
|
90
101
|
payload?: any;
|
|
91
102
|
background?: SectorProps;
|
|
@@ -107,7 +118,7 @@ function RadialBarLabelListProvider({
|
|
|
107
118
|
}: {
|
|
108
119
|
showLabels: boolean;
|
|
109
120
|
sectors: ReadonlyArray<RadialBarDataItem>;
|
|
110
|
-
children:
|
|
121
|
+
children: OctaneNode;
|
|
111
122
|
}) {
|
|
112
123
|
const labelListEntries: ReadonlyArray<PolarLabelListEntry> = sectors.map(
|
|
113
124
|
(sector: RadialBarDataItem): PolarLabelListEntry => ({
|
|
@@ -175,7 +186,7 @@ function RadialBarSectors({
|
|
|
175
186
|
const onMouseLeave = onMouseLeaveFromContext(entry, i);
|
|
176
187
|
const onClick = onClickFromContext(entry, i);
|
|
177
188
|
|
|
178
|
-
const radialBarSectorProps:
|
|
189
|
+
const radialBarSectorProps: ComponentProps<typeof RadialBarSector> = {
|
|
179
190
|
...baseProps,
|
|
180
191
|
cornerRadius: parseCornerRadius(cornerRadius),
|
|
181
192
|
...entry,
|
|
@@ -371,7 +382,7 @@ interface InternalRadialBarProps<DataPointType = any, DataValueType = any> exten
|
|
|
371
382
|
* - `false`: no background;
|
|
372
383
|
* - `true`: renders default background;
|
|
373
384
|
* - `object`: the props of background rectangle;
|
|
374
|
-
* - `
|
|
385
|
+
* - `OctaneElement`: a custom background element;
|
|
375
386
|
* - `function`: a render function of custom background.
|
|
376
387
|
*
|
|
377
388
|
* @defaultValue false
|
|
@@ -413,7 +424,7 @@ interface InternalRadialBarProps<DataPointType = any, DataValueType = any> exten
|
|
|
413
424
|
* - `true`: renders default labels;
|
|
414
425
|
* - `false`: no labels are rendered;
|
|
415
426
|
* - `object`: the props of LabelList component;
|
|
416
|
-
* - `
|
|
427
|
+
* - `OctaneElement`: a custom SVG label element, such as `<text>` or `<g>`.
|
|
417
428
|
* HTML elements such as `<div>` are not valid inside the chart SVG and may trigger React DOM warnings.
|
|
418
429
|
* - `function`: a render function of custom label.
|
|
419
430
|
*
|
|
@@ -441,58 +452,58 @@ interface InternalRadialBarProps<DataPointType = any, DataValueType = any> exten
|
|
|
441
452
|
/**
|
|
442
453
|
* The customized event handler of click in this chart.
|
|
443
454
|
*/
|
|
444
|
-
onClick?: (data: RadialBarDataItem, index: number, e:
|
|
455
|
+
onClick?: (data: RadialBarDataItem, index: number, e: NativeMouseEvent<
|
|
445
456
|
SVGGraphicsElement
|
|
446
457
|
>) => void;
|
|
447
458
|
/**
|
|
448
459
|
* The customized event handler of mousedown in this chart.
|
|
449
460
|
*/
|
|
450
|
-
onMouseDown?: (data: RadialBarDataItem, index: number, e:
|
|
461
|
+
onMouseDown?: (data: RadialBarDataItem, index: number, e: NativeMouseEvent<
|
|
451
462
|
SVGGraphicsElement
|
|
452
463
|
>) => void;
|
|
453
464
|
/**
|
|
454
465
|
* The customized event handler of mouseup in this chart.
|
|
455
466
|
*/
|
|
456
|
-
onMouseUp?: (data: RadialBarDataItem, index: number, e:
|
|
467
|
+
onMouseUp?: (data: RadialBarDataItem, index: number, e: NativeMouseEvent<
|
|
457
468
|
SVGGraphicsElement
|
|
458
469
|
>) => void;
|
|
459
470
|
/**
|
|
460
471
|
* The customized event handler of mousemove in this chart.
|
|
461
472
|
*/
|
|
462
|
-
onMouseMove?: (data: RadialBarDataItem, index: number, e:
|
|
473
|
+
onMouseMove?: (data: RadialBarDataItem, index: number, e: NativeMouseEvent<
|
|
463
474
|
SVGGraphicsElement
|
|
464
475
|
>) => void;
|
|
465
476
|
/**
|
|
466
477
|
* The customized event handler of mouseover in this chart.
|
|
467
478
|
*/
|
|
468
|
-
onMouseOver?: (data: RadialBarDataItem, index: number, e:
|
|
479
|
+
onMouseOver?: (data: RadialBarDataItem, index: number, e: NativeMouseEvent<
|
|
469
480
|
SVGGraphicsElement
|
|
470
481
|
>) => void;
|
|
471
482
|
/**
|
|
472
483
|
* The customized event handler of mouseout in this chart.
|
|
473
484
|
*/
|
|
474
|
-
onMouseOut?: (data: RadialBarDataItem, index: number, e:
|
|
485
|
+
onMouseOut?: (data: RadialBarDataItem, index: number, e: NativeMouseEvent<
|
|
475
486
|
SVGGraphicsElement
|
|
476
487
|
>) => void;
|
|
477
488
|
/**
|
|
478
489
|
* The customized event handler of mouseenter in this chart.
|
|
479
490
|
*/
|
|
480
|
-
onMouseEnter?: (data: RadialBarDataItem, index: number, e:
|
|
491
|
+
onMouseEnter?: (data: RadialBarDataItem, index: number, e: NativeMouseEvent<
|
|
481
492
|
SVGGraphicsElement
|
|
482
493
|
>) => void;
|
|
483
494
|
/**
|
|
484
495
|
* The customized event handler of mouseleave in this chart.
|
|
485
496
|
*/
|
|
486
|
-
onMouseLeave?: (data: RadialBarDataItem, index: number, e:
|
|
497
|
+
onMouseLeave?: (data: RadialBarDataItem, index: number, e: NativeMouseEvent<
|
|
487
498
|
SVGGraphicsElement
|
|
488
499
|
>) => void;
|
|
489
|
-
onTouchStart?: (data: RadialBarDataItem, index: number, e:
|
|
500
|
+
onTouchStart?: (data: RadialBarDataItem, index: number, e: NativeTouchEvent<
|
|
490
501
|
SVGGraphicsElement
|
|
491
502
|
>) => void;
|
|
492
|
-
onTouchMove?: (data: RadialBarDataItem, index: number, e:
|
|
503
|
+
onTouchMove?: (data: RadialBarDataItem, index: number, e: NativeTouchEvent<
|
|
493
504
|
SVGGraphicsElement
|
|
494
505
|
>) => void;
|
|
495
|
-
onTouchEnd?: (data: RadialBarDataItem, index: number, e:
|
|
506
|
+
onTouchEnd?: (data: RadialBarDataItem, index: number, e: NativeTouchEvent<
|
|
496
507
|
SVGGraphicsElement
|
|
497
508
|
>) => void;
|
|
498
509
|
/**
|
|
@@ -500,7 +511,7 @@ interface InternalRadialBarProps<DataPointType = any, DataValueType = any> exten
|
|
|
500
511
|
*/
|
|
501
512
|
radiusAxisId?: AxisId;
|
|
502
513
|
/**
|
|
503
|
-
* If set a
|
|
514
|
+
* If set a OctaneElement, the shape of radial bar sectors can be customized.
|
|
504
515
|
* If set a function, the function will be called to render customized shape.
|
|
505
516
|
* During animations, the function shape also receives `animationElapsedTime`, `isAnimating`, and `isEntrance`.
|
|
506
517
|
* By default, renders a sector.
|
|
@@ -594,10 +605,9 @@ function renderBackground(props: InternalProps, sectors?: ReadonlyArray<RadialBa
|
|
|
594
605
|
return null;
|
|
595
606
|
}
|
|
596
607
|
|
|
597
|
-
const sectorProps:
|
|
608
|
+
const sectorProps: ComponentProps<typeof RadialBarSector> = {
|
|
598
609
|
cornerRadius: parseCornerRadius(cornerRadius),
|
|
599
610
|
...rest,
|
|
600
|
-
// @ts-expect-error backgroundProps is contributing unknown props
|
|
601
611
|
fill: '#eee',
|
|
602
612
|
...background,
|
|
603
613
|
...backgroundProps,
|
|
@@ -755,7 +765,7 @@ export function computeRadialBarDataItems({
|
|
|
755
765
|
cx: number;
|
|
756
766
|
cy: number;
|
|
757
767
|
angleAxisTicks: ReadonlyArray<TickItem> | undefined;
|
|
758
|
-
cells: ReadonlyArray<
|
|
768
|
+
cells: ReadonlyArray<RegisteredCell> | undefined;
|
|
759
769
|
startAngle: number;
|
|
760
770
|
endAngle: number;
|
|
761
771
|
}): ReadonlyArray<RadialBarDataItem> {
|
|
@@ -764,12 +774,18 @@ export function computeRadialBarDataItems({
|
|
|
764
774
|
}
|
|
765
775
|
|
|
766
776
|
return (displayedData ?? []).map((entry: unknown, index: number) => {
|
|
767
|
-
let value
|
|
768
|
-
|
|
777
|
+
let value;
|
|
778
|
+
let innerRadius: number | null | undefined;
|
|
779
|
+
let outerRadius: number | undefined;
|
|
780
|
+
let startAngle: number | null;
|
|
781
|
+
let endAngle: number | undefined;
|
|
782
|
+
let backgroundSector;
|
|
769
783
|
|
|
770
784
|
if (stackedData) {
|
|
771
|
-
|
|
772
|
-
|
|
785
|
+
value = truncateByDomain(
|
|
786
|
+
stackedData[dataStartIndex + index],
|
|
787
|
+
stackedDomain as readonly number[],
|
|
788
|
+
);
|
|
773
789
|
} else {
|
|
774
790
|
value = getValueByDataKey(entry, dataKey);
|
|
775
791
|
if (!Array.isArray(value)) {
|
|
@@ -833,20 +849,21 @@ export function computeRadialBarDataItems({
|
|
|
833
849
|
}
|
|
834
850
|
}
|
|
835
851
|
|
|
852
|
+
// Unresolved scale values use the same zero geometry as the default
|
|
853
|
+
// Sector. Keep the row so custom shapes, Cell overrides, and tooltip
|
|
854
|
+
// indices still refer to the original datum.
|
|
836
855
|
return {
|
|
837
|
-
|
|
838
|
-
...entry,
|
|
856
|
+
...entry as Record<string, unknown>,
|
|
839
857
|
...backgroundSector,
|
|
840
858
|
payload: entry,
|
|
841
859
|
value: stackedData ? value : value[1],
|
|
842
860
|
cx,
|
|
843
861
|
cy,
|
|
844
|
-
innerRadius,
|
|
845
|
-
outerRadius,
|
|
846
|
-
startAngle,
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
...cells && cells[index] && cells[index].props,
|
|
862
|
+
innerRadius: innerRadius ?? defaultSectorProps.innerRadius,
|
|
863
|
+
outerRadius: outerRadius ?? defaultSectorProps.outerRadius,
|
|
864
|
+
startAngle: startAngle ?? defaultSectorProps.startAngle,
|
|
865
|
+
endAngle: endAngle ?? defaultSectorProps.endAngle,
|
|
866
|
+
...cells && cells[index] && cells[index].props as CellPropsFor<SVGPathElement>,
|
|
850
867
|
} satisfies RadialBarDataItem;
|
|
851
868
|
});
|
|
852
869
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
//
|
|
2
|
-
|
|
1
|
+
// Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
|
|
2
|
+
import { Props } from './PolarAngleAxis.tsrx';
|
|
3
3
|
import { DefaultZIndexes } from '../zIndex/DefaultZIndexes';
|
|
4
|
-
|
|
4
|
+
|
|
5
|
+
export const defaultPolarAngleAxisProps = {
|
|
5
6
|
allowDecimals: false,
|
|
6
|
-
allowDuplicatedCategory: true,
|
|
7
|
-
// if I set this to false then Tooltip synchronisation stops working in Radar, wtf
|
|
7
|
+
allowDuplicatedCategory: true, // if I set this to false then Tooltip synchronisation stops working in Radar, wtf
|
|
8
8
|
allowDataOverflow: false,
|
|
9
9
|
angle: 0,
|
|
10
10
|
angleAxisId: 0,
|
|
@@ -24,4 +24,4 @@ export var defaultPolarAngleAxisProps = {
|
|
|
24
24
|
tickSize: 8,
|
|
25
25
|
type: 'auto',
|
|
26
26
|
zIndex: DefaultZIndexes.axis,
|
|
27
|
-
};
|
|
27
|
+
} as const satisfies Props;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
//
|
|
2
|
-
|
|
1
|
+
// Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
|
|
2
|
+
import { Props } from './PolarRadiusAxis.tsrx';
|
|
3
3
|
import { DefaultZIndexes } from '../zIndex/DefaultZIndexes';
|
|
4
|
-
|
|
4
|
+
|
|
5
|
+
export const defaultPolarRadiusAxisProps = {
|
|
5
6
|
allowDataOverflow: false,
|
|
6
7
|
allowDecimals: false,
|
|
7
8
|
allowDuplicatedCategory: true,
|
|
@@ -21,4 +22,4 @@ export var defaultPolarRadiusAxisProps = {
|
|
|
21
22
|
tickLine: true,
|
|
22
23
|
type: 'auto',
|
|
23
24
|
zIndex: DefaultZIndexes.axis,
|
|
24
|
-
};
|
|
25
|
+
} as const satisfies Props;
|
package/src/shape/Cross.tsrx
CHANGED
|
@@ -1,14 +1,26 @@
|
|
|
1
|
+
import type { SVGProps } from '../util/OctaneTypes.ts';
|
|
2
|
+
|
|
3
|
+
interface CrossProps {
|
|
4
|
+
x?: number;
|
|
5
|
+
y?: number;
|
|
6
|
+
width?: number;
|
|
7
|
+
height?: number;
|
|
8
|
+
top?: number;
|
|
9
|
+
left?: number;
|
|
10
|
+
className?: SVGProps<SVGPathElement>['className'];
|
|
11
|
+
}
|
|
12
|
+
export type Props = SVGProps<SVGPathElement> & CrossProps;
|
|
1
13
|
// Port of shape/Cross.tsx — the axis-cursor crosshair (a vertical + horizontal
|
|
2
14
|
// line pair as one path).
|
|
3
15
|
import { clsx } from 'clsx';
|
|
4
16
|
import { isNumber } from '../util/DataUtils';
|
|
5
17
|
import { svgPropertiesAndEvents } from '../util/svgPropertiesAndEvents.ts';
|
|
6
18
|
|
|
7
|
-
function getPath(x, y, width, height, top, left) {
|
|
19
|
+
function getPath(x: number, y: number, width: number, height: number, top: number, left: number) {
|
|
8
20
|
return 'M' + x + ',' + top + 'v' + height + 'M' + left + ',' + y + 'h' + width;
|
|
9
21
|
}
|
|
10
22
|
|
|
11
|
-
export function Cross(crossProps) {
|
|
23
|
+
export function Cross(crossProps: Props) {
|
|
12
24
|
const { x = 0, y = 0, top = 0, left = 0, width = 0, height = 0, className, ...rest } = crossProps;
|
|
13
25
|
const props = { x, y, top, left, width, height, ...rest };
|
|
14
26
|
if (
|
package/src/shape/Curve.tsrx
CHANGED
|
@@ -1,3 +1,83 @@
|
|
|
1
|
+
import type { Ref, SVGProps } from '../util/OctaneTypes.ts';
|
|
2
|
+
import type {
|
|
3
|
+
Area as D3AreaCurve,
|
|
4
|
+
CurveFactory,
|
|
5
|
+
Line as D3LineCurve,
|
|
6
|
+
} from 'victory-vendor/d3-shape';
|
|
7
|
+
import type {
|
|
8
|
+
Coordinate,
|
|
9
|
+
LayoutType,
|
|
10
|
+
NullableCoordinate,
|
|
11
|
+
PresentationAttributesWithProps,
|
|
12
|
+
RechartsMouseEventHandler,
|
|
13
|
+
} from '../util/types';
|
|
14
|
+
|
|
15
|
+
interface CurveFactories {
|
|
16
|
+
[index: string]: CurveFactory;
|
|
17
|
+
}
|
|
18
|
+
export type CurveType =
|
|
19
|
+
| 'basis'
|
|
20
|
+
| 'basisClosed'
|
|
21
|
+
| 'basisOpen'
|
|
22
|
+
| 'bumpX'
|
|
23
|
+
| 'bumpY'
|
|
24
|
+
| 'bump'
|
|
25
|
+
| 'linear'
|
|
26
|
+
| 'linearClosed'
|
|
27
|
+
| 'natural'
|
|
28
|
+
| 'monotoneX'
|
|
29
|
+
| 'monotoneY'
|
|
30
|
+
| 'monotone'
|
|
31
|
+
| 'step'
|
|
32
|
+
| 'stepBefore'
|
|
33
|
+
| 'stepAfter'
|
|
34
|
+
| CurveFactory;
|
|
35
|
+
type AreaPoint =
|
|
36
|
+
Coordinate & {
|
|
37
|
+
base: Coordinate;
|
|
38
|
+
};
|
|
39
|
+
type NullableAreaPoint =
|
|
40
|
+
NullableCoordinate & {
|
|
41
|
+
base?: NullableCoordinate;
|
|
42
|
+
};
|
|
43
|
+
export type BaseLineType = number | ReadonlyArray<NullableCoordinate>;
|
|
44
|
+
interface CurveProps {
|
|
45
|
+
className?: SVGProps<SVGPathElement>['className'];
|
|
46
|
+
type?: CurveType;
|
|
47
|
+
layout?: LayoutType;
|
|
48
|
+
baseLine?: BaseLineType;
|
|
49
|
+
points?: ReadonlyArray<NullableCoordinate>;
|
|
50
|
+
connectNulls?: boolean;
|
|
51
|
+
path?: string;
|
|
52
|
+
pathRef?: Ref<SVGPathElement>;
|
|
53
|
+
strokeDasharray?: string | number;
|
|
54
|
+
}
|
|
55
|
+
export type CurveMouseEventHandler = RechartsMouseEventHandler<Props, SVGPathElement>;
|
|
56
|
+
type CurveMouseEvents = {
|
|
57
|
+
onClick?: CurveMouseEventHandler;
|
|
58
|
+
onMouseEnter?: CurveMouseEventHandler;
|
|
59
|
+
onMouseLeave?: CurveMouseEventHandler;
|
|
60
|
+
onMouseDown?: CurveMouseEventHandler;
|
|
61
|
+
onMouseUp?: CurveMouseEventHandler;
|
|
62
|
+
onMouseMove?: CurveMouseEventHandler;
|
|
63
|
+
onMouseOver?: CurveMouseEventHandler;
|
|
64
|
+
onMouseOut?: CurveMouseEventHandler;
|
|
65
|
+
};
|
|
66
|
+
export type Props =
|
|
67
|
+
Omit<
|
|
68
|
+
PresentationAttributesWithProps<CurveProps, SVGPathElement>,
|
|
69
|
+
| 'type'
|
|
70
|
+
| 'points'
|
|
71
|
+
| 'onClick'
|
|
72
|
+
| 'onMouseEnter'
|
|
73
|
+
| 'onMouseLeave'
|
|
74
|
+
| 'onMouseDown'
|
|
75
|
+
| 'onMouseUp'
|
|
76
|
+
| 'onMouseMove'
|
|
77
|
+
| 'onMouseOver'
|
|
78
|
+
| 'onMouseOut'
|
|
79
|
+
> & CurveMouseEvents & CurveProps;
|
|
80
|
+
type GetPathProps = Pick<Props, 'type' | 'points' | 'baseLine' | 'layout' | 'connectNulls'>;
|
|
1
81
|
// Port of shape/Curve.tsx — the line/area path. The `d` string comes straight
|
|
2
82
|
// from victory-vendor's d3-shape line/area generators (same dependency, same
|
|
3
83
|
// version as upstream), so output is byte-identical by construction.
|
|
@@ -25,7 +105,7 @@ import { isWellBehavedNumber } from '../util/isWellBehavedNumber';
|
|
|
25
105
|
import { svgPropertiesNoEvents } from '../util/svgPropertiesNoEvents';
|
|
26
106
|
import { useChartLayout } from '../context/chartLayoutContext.ts';
|
|
27
107
|
|
|
28
|
-
const CURVE_FACTORIES = {
|
|
108
|
+
const CURVE_FACTORIES: CurveFactories = {
|
|
29
109
|
curveBasisClosed,
|
|
30
110
|
curveBasisOpen,
|
|
31
111
|
curveBasis,
|
|
@@ -41,12 +121,12 @@ const CURVE_FACTORIES = {
|
|
|
41
121
|
curveStepBefore,
|
|
42
122
|
};
|
|
43
123
|
|
|
44
|
-
const defined = (p) => isWellBehavedNumber(p.x) && isWellBehavedNumber(p.y);
|
|
45
|
-
const areaDefined = (d) => d.base != null && defined(d.base) && defined(d);
|
|
46
|
-
const getX = (p) => p.x;
|
|
47
|
-
const getY = (p) => p.y;
|
|
124
|
+
const defined = (p: NullableCoordinate) => isWellBehavedNumber(p.x) && isWellBehavedNumber(p.y);
|
|
125
|
+
const areaDefined = (d: NullableAreaPoint) => d.base != null && defined(d.base) && defined(d);
|
|
126
|
+
const getX = (p: Coordinate) => p.x;
|
|
127
|
+
const getY = (p: Coordinate) => p.y;
|
|
48
128
|
|
|
49
|
-
const getCurveFactory = (type, layout) => {
|
|
129
|
+
const getCurveFactory = (type: CurveType, layout: LayoutType | undefined) => {
|
|
50
130
|
if (typeof type === 'function') {
|
|
51
131
|
return type;
|
|
52
132
|
}
|
|
@@ -63,7 +143,7 @@ const getCurveFactory = (type, layout) => {
|
|
|
63
143
|
export const defaultCurveProps = {
|
|
64
144
|
connectNulls: false,
|
|
65
145
|
type: 'linear',
|
|
66
|
-
}
|
|
146
|
+
} as const satisfies Partial<Props>;
|
|
67
147
|
|
|
68
148
|
/**
|
|
69
149
|
* Calculate the path of curve. Returns null if points is an empty array.
|
|
@@ -75,52 +155,60 @@ export const getPath = ({
|
|
|
75
155
|
baseLine,
|
|
76
156
|
layout,
|
|
77
157
|
connectNulls = defaultCurveProps.connectNulls,
|
|
78
|
-
}) => {
|
|
158
|
+
}: GetPathProps): string | null => {
|
|
79
159
|
const curveFactory = getCurveFactory(type, layout);
|
|
80
|
-
const formatPoints =
|
|
160
|
+
const formatPoints: ReadonlyArray<NullableCoordinate> =
|
|
81
161
|
connectNulls ? points.filter(defined) : points;
|
|
82
162
|
|
|
83
163
|
// An area chart's array `baseLine` pairs each point with its baseline
|
|
84
164
|
// counterpart FIRST, so the `defined` filter drops both sides together.
|
|
85
165
|
if (Array.isArray(baseLine)) {
|
|
86
|
-
const areaPoints = points.map(
|
|
87
|
-
|
|
166
|
+
const areaPoints: ReadonlyArray<NullableAreaPoint> = points.map(
|
|
167
|
+
(entry, index) => ({ ...entry, base: baseLine[index] }),
|
|
168
|
+
);
|
|
169
|
+
let lineFunction: D3AreaCurve<AreaPoint>;
|
|
88
170
|
if (layout === 'vertical') {
|
|
89
|
-
lineFunction = shapeArea().y(getY).x1(getX).x0((d) => d.base.x);
|
|
171
|
+
lineFunction = shapeArea<AreaPoint>().y(getY).x1(getX).x0((d) => d.base.x);
|
|
90
172
|
} else {
|
|
91
|
-
lineFunction = shapeArea().x(getX).y1(getY).y0((d) => d.base.y);
|
|
173
|
+
lineFunction = shapeArea<AreaPoint>().x(getX).y1(getY).y0((d) => d.base.y);
|
|
92
174
|
}
|
|
93
|
-
|
|
94
|
-
|
|
175
|
+
// d3 runs the defined predicate before coordinate accessors; its single
|
|
176
|
+
// generic cannot express the nullable inputs accepted after this guard.
|
|
177
|
+
const nullableLineFunction = lineFunction.defined(areaDefined).curve(
|
|
178
|
+
curveFactory,
|
|
179
|
+
) as D3AreaCurve<NullableAreaPoint>;
|
|
180
|
+
const finalPoints: ReadonlyArray<NullableAreaPoint> =
|
|
95
181
|
connectNulls ? areaPoints.filter(areaDefined) : areaPoints;
|
|
96
182
|
return nullableLineFunction(finalPoints);
|
|
97
183
|
}
|
|
98
|
-
let lineFunction
|
|
184
|
+
let lineFunction: D3LineCurve<Coordinate> | D3AreaCurve<Coordinate>;
|
|
99
185
|
if (layout === 'vertical' && isNumber(baseLine)) {
|
|
100
|
-
lineFunction = shapeArea().y(getY).x1(getX).x0(baseLine);
|
|
186
|
+
lineFunction = shapeArea<Coordinate>().y(getY).x1(getX).x0(baseLine);
|
|
101
187
|
} else if (isNumber(baseLine)) {
|
|
102
|
-
lineFunction = shapeArea().x(getX).y1(getY).y0(baseLine);
|
|
188
|
+
lineFunction = shapeArea<Coordinate>().x(getX).y1(getY).y0(baseLine);
|
|
103
189
|
} else {
|
|
104
|
-
lineFunction = shapeLine().x(getX).y(getY);
|
|
190
|
+
lineFunction = shapeLine<Coordinate>().x(getX).y(getY);
|
|
105
191
|
}
|
|
106
|
-
const nullableLineFunction = lineFunction.defined(defined).curve(curveFactory)
|
|
192
|
+
const nullableLineFunction = lineFunction.defined(defined).curve(curveFactory) as D3LineCurve<
|
|
193
|
+
NullableCoordinate
|
|
194
|
+
>;
|
|
107
195
|
return nullableLineFunction(formatPoints);
|
|
108
196
|
};
|
|
109
197
|
|
|
110
|
-
export function Curve(props) {
|
|
198
|
+
export function Curve(props: Props) {
|
|
111
199
|
const { className, points, path, pathRef } = props;
|
|
112
200
|
const layout = useChartLayout();
|
|
113
201
|
if ((!points || !points.length) && !path) {
|
|
114
202
|
return null;
|
|
115
203
|
}
|
|
116
|
-
const getPathInput = {
|
|
204
|
+
const getPathInput: GetPathProps = {
|
|
117
205
|
type: props.type,
|
|
118
206
|
points: props.points,
|
|
119
207
|
baseLine: props.baseLine,
|
|
120
208
|
layout: props.layout || layout,
|
|
121
209
|
connectNulls: props.connectNulls,
|
|
122
210
|
};
|
|
123
|
-
const realPath =
|
|
211
|
+
const realPath: string | null | undefined =
|
|
124
212
|
points && points.length ? getPath(getPathInput) : path;
|
|
125
213
|
return <path
|
|
126
214
|
{...svgPropertiesNoEvents(props)}
|
package/src/shape/Dot.tsrx
CHANGED
|
@@ -1,10 +1,21 @@
|
|
|
1
|
+
import type { SVGProps } from '../util/OctaneTypes.ts';
|
|
2
|
+
import type { PresentationAttributesWithProps } from '../util/types';
|
|
3
|
+
|
|
4
|
+
interface DotProps {
|
|
5
|
+
className?: SVGProps<SVGCircleElement>['className'];
|
|
6
|
+
cx?: number;
|
|
7
|
+
cy?: number;
|
|
8
|
+
r?: number | string;
|
|
9
|
+
clipDot?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export type Props = PresentationAttributesWithProps<DotProps, SVGCircleElement> & DotProps;
|
|
1
12
|
// Port of shape/Dot.tsx — a circle marker.
|
|
2
13
|
import { clsx } from 'clsx';
|
|
3
14
|
import { adaptEventHandlers } from '../util/types.ts';
|
|
4
15
|
import { svgPropertiesNoEvents } from '../util/svgPropertiesNoEvents';
|
|
5
16
|
import { isNumber } from '../util/DataUtils';
|
|
6
17
|
|
|
7
|
-
export function Dot(props) {
|
|
18
|
+
export function Dot(props: Props) {
|
|
8
19
|
const { cx, cy, r, className } = props;
|
|
9
20
|
const layerClass = clsx('recharts-dot', className);
|
|
10
21
|
if (isNumber(cx) && isNumber(cy) && isNumber(r)) {
|
package/src/shape/Polygon.tsrx
CHANGED
|
@@ -1,15 +1,33 @@
|
|
|
1
|
+
import type { NativeMouseEvent, SVGProps } from '../util/OctaneTypes.ts';
|
|
2
|
+
import type { Coordinate } from '../util/types';
|
|
3
|
+
|
|
4
|
+
interface PolygonProps {
|
|
5
|
+
className?: SVGProps<SVGPathElement>['className'];
|
|
6
|
+
points?: ReadonlyArray<Coordinate>;
|
|
7
|
+
baseLinePoints?: ReadonlyArray<Coordinate>;
|
|
8
|
+
connectNulls?: boolean;
|
|
9
|
+
onClick?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
10
|
+
onMouseDown?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
11
|
+
onMouseUp?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
12
|
+
onMouseMove?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
13
|
+
onMouseOver?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
14
|
+
onMouseOut?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
15
|
+
onMouseEnter?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
16
|
+
onMouseLeave?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
17
|
+
}
|
|
18
|
+
export type Props = Omit<SVGProps<SVGPathElement>, 'points'> & PolygonProps;
|
|
1
19
|
// Port of shape/Polygon.tsx — closed/segmented polygon paths (Radar,
|
|
2
20
|
// PolarGrid). Path strings mirror upstream's roundTemplateLiteral output.
|
|
3
21
|
import { clsx } from 'clsx';
|
|
4
22
|
import { svgPropertiesAndEvents } from '../util/svgPropertiesAndEvents.ts';
|
|
5
23
|
import { round } from '../util/round';
|
|
6
24
|
|
|
7
|
-
function isValidatePoint(point) {
|
|
25
|
+
function isValidatePoint(point: Coordinate | undefined) {
|
|
8
26
|
return point != null && point.x === +point.x && point.y === +point.y;
|
|
9
27
|
}
|
|
10
28
|
|
|
11
|
-
function getParsedPoints(points = []) {
|
|
12
|
-
let segmentPoints = [[]];
|
|
29
|
+
function getParsedPoints(points: ReadonlyArray<Coordinate> = []) {
|
|
30
|
+
let segmentPoints: Coordinate[][] = [[]];
|
|
13
31
|
points.forEach((entry) => {
|
|
14
32
|
const lastLink = segmentPoints[segmentPoints.length - 1];
|
|
15
33
|
if (isValidatePoint(entry)) {
|
|
@@ -32,7 +50,7 @@ function getParsedPoints(points = []) {
|
|
|
32
50
|
return segmentPoints;
|
|
33
51
|
}
|
|
34
52
|
|
|
35
|
-
function getSinglePolygonPath(points
|
|
53
|
+
function getSinglePolygonPath(points: ReadonlyArray<Coordinate>, connectNulls?: boolean) {
|
|
36
54
|
let segmentPoints = getParsedPoints(points);
|
|
37
55
|
if (connectNulls) {
|
|
38
56
|
segmentPoints = [segmentPoints.reduce((res, segPoints) => [...res, ...segPoints], [])];
|
|
@@ -47,13 +65,17 @@ function getSinglePolygonPath(points, connectNulls) {
|
|
|
47
65
|
return segmentPoints.length === 1 ? polygonPath + 'Z' : polygonPath;
|
|
48
66
|
}
|
|
49
67
|
|
|
50
|
-
function getRanglePath(
|
|
68
|
+
function getRanglePath(
|
|
69
|
+
points: ReadonlyArray<Coordinate>,
|
|
70
|
+
baseLinePoints: ReadonlyArray<Coordinate>,
|
|
71
|
+
connectNulls?: boolean,
|
|
72
|
+
) {
|
|
51
73
|
const outerPath = getSinglePolygonPath(points, connectNulls);
|
|
52
74
|
return (outerPath.slice(-1) === 'Z' ? outerPath.slice(0, -1) : outerPath) + 'L' +
|
|
53
75
|
getSinglePolygonPath(Array.from(baseLinePoints).reverse(), connectNulls).slice(1);
|
|
54
76
|
}
|
|
55
77
|
|
|
56
|
-
export function Polygon(props) {
|
|
78
|
+
export function Polygon(props: Props) {
|
|
57
79
|
const { points, className, baseLinePoints, connectNulls, ...others } = props;
|
|
58
80
|
if (!points || !points.length) {
|
|
59
81
|
return null;
|