@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/chart/Sankey.tsrx
CHANGED
|
@@ -1,19 +1,18 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import type {
|
|
2
|
+
CSSProperties,
|
|
3
|
+
NativeMouseEvent,
|
|
4
|
+
OctaneElement,
|
|
5
|
+
OctaneNode,
|
|
6
6
|
SVGProps,
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
} from 'octane';
|
|
7
|
+
} from '../util/OctaneTypes.ts';
|
|
8
|
+
import * as React from 'octane';
|
|
9
|
+
import { useCallback, useMemo, useState } from 'octane';
|
|
11
10
|
import maxBy from 'es-toolkit/compat/maxBy';
|
|
12
11
|
import sumBy from 'es-toolkit/compat/sumBy';
|
|
13
12
|
import get from 'es-toolkit/compat/get';
|
|
14
|
-
import { Surface } from '../container/Surface';
|
|
15
|
-
import { Layer } from '../container/Layer';
|
|
16
|
-
import { Props as RectangleProps, Rectangle } from '../shape/Rectangle';
|
|
13
|
+
import { Surface } from '../container/Surface.tsrx';
|
|
14
|
+
import { Layer } from '../container/Layer.tsrx';
|
|
15
|
+
import { Props as RectangleProps, Rectangle } from '../shape/Rectangle.tsrx';
|
|
17
16
|
import { getValueByDataKey } from '../util/ChartUtils';
|
|
18
17
|
import {
|
|
19
18
|
Coordinate,
|
|
@@ -31,8 +30,8 @@ import {
|
|
|
31
30
|
useChartWidth,
|
|
32
31
|
} from '../context/chartLayoutContext';
|
|
33
32
|
import { TooltipPortalContext } from '../context/tooltipPortalContext';
|
|
34
|
-
import { RechartsWrapper } from './RechartsWrapper';
|
|
35
|
-
import { RechartsStoreProvider } from '../state/RechartsStoreProvider';
|
|
33
|
+
import { RechartsWrapper } from './RechartsWrapper.tsrx';
|
|
34
|
+
import { RechartsStoreProvider } from '../state/RechartsStoreProvider.tsrx';
|
|
36
35
|
import { useAppDispatch } from '../state/hooks';
|
|
37
36
|
import {
|
|
38
37
|
mouseLeaveItem,
|
|
@@ -54,7 +53,7 @@ import { RequiresDefaultProps, resolveDefaultProps } from '../util/resolveDefaul
|
|
|
54
53
|
import { isPositiveNumber } from '../util/isWellBehavedNumber';
|
|
55
54
|
import { isNotNil, noop } from '../util/DataUtils';
|
|
56
55
|
import { WithIdRequired } from '../util/useUniqueId';
|
|
57
|
-
import { RegisterGraphicalItemId } from '../context/RegisterGraphicalItemId';
|
|
56
|
+
import { RegisterGraphicalItemId } from '../context/RegisterGraphicalItemId.tsrx';
|
|
58
57
|
import { GraphicalItemId } from '../state/graphicalItemsSlice';
|
|
59
58
|
import { initialEventSettingsState } from '../state/eventSettingsSlice';
|
|
60
59
|
|
|
@@ -412,7 +411,10 @@ const relaxRightToLeft = (
|
|
|
412
411
|
}
|
|
413
412
|
};
|
|
414
413
|
|
|
415
|
-
const updateYOfLinks
|
|
414
|
+
const updateYOfLinks: (tree: SankeyNode[], links: LinkDataItemDy[]) => asserts links is SankeyLink[] = (
|
|
415
|
+
tree,
|
|
416
|
+
links,
|
|
417
|
+
) => {
|
|
416
418
|
for (let i = 0, len = tree.length; i < len; i++) {
|
|
417
419
|
const node = tree[i];
|
|
418
420
|
if (node == null) {
|
|
@@ -662,7 +664,6 @@ export const computeData = ({
|
|
|
662
664
|
resolveNodeLinkCollisions(tree, depthTree, linksWithDy, height, nodePadding);
|
|
663
665
|
updateYOfLinks(tree, linksWithDy);
|
|
664
666
|
|
|
665
|
-
// @ts-expect-error updateYOfLinks modifies the links array to add sy and ty in place
|
|
666
667
|
const newLinks: ReadonlyArray<SankeyLink> = linksWithDy;
|
|
667
668
|
|
|
668
669
|
return { nodes: tree, links: newLinks };
|
|
@@ -681,12 +682,24 @@ const getLinkCoordinateOfTooltip = (item: LinkProps): Coordinate | undefined =>
|
|
|
681
682
|
: undefined;
|
|
682
683
|
};
|
|
683
684
|
|
|
684
|
-
|
|
685
|
+
// Layout augments the user's data records, retaining arbitrary fields selected
|
|
686
|
+
// by nameKey. Computed link payloads contain node objects, not source indices.
|
|
687
|
+
type SankeyTooltipNode = SankeyNode & Record<string | number, unknown>;
|
|
688
|
+
type SankeyTooltipLink =
|
|
689
|
+
Omit<LinkProps['payload'], 'source' | 'target'> & {
|
|
690
|
+
source: SankeyTooltipNode;
|
|
691
|
+
target: SankeyTooltipNode;
|
|
692
|
+
} & Record<string | number, unknown>;
|
|
693
|
+
type SankeyTooltipPayload = {
|
|
694
|
+
payload: SankeyTooltipNode | SankeyTooltipLink;
|
|
695
|
+
name: unknown;
|
|
696
|
+
value: unknown;
|
|
697
|
+
};
|
|
685
698
|
|
|
686
699
|
const getPayloadOfTooltip = (
|
|
687
|
-
item: { payload:
|
|
700
|
+
item: { payload: SankeyTooltipPayload['payload'] },
|
|
688
701
|
type: SankeyElementType,
|
|
689
|
-
nameKey:
|
|
702
|
+
nameKey: Parameters<TooltipPayloadSearcher>[3],
|
|
690
703
|
): SankeyTooltipPayload | undefined => {
|
|
691
704
|
const { payload } = item;
|
|
692
705
|
if (type === 'node') {
|
|
@@ -697,10 +710,8 @@ const getPayloadOfTooltip = (
|
|
|
697
710
|
};
|
|
698
711
|
}
|
|
699
712
|
if ('source' in payload && payload.source && payload.target) {
|
|
700
|
-
|
|
701
|
-
const
|
|
702
|
-
// @ts-expect-error we're sending number indexes as source and target, but getValueByDataKey expects objects
|
|
703
|
-
const targetName = getValueByDataKey(payload.target, nameKey, '');
|
|
713
|
+
const sourceName = getValueByDataKey(payload.source as SankeyTooltipNode, nameKey, '');
|
|
714
|
+
const targetName = getValueByDataKey(payload.target as SankeyTooltipNode, nameKey, '');
|
|
704
715
|
|
|
705
716
|
return {
|
|
706
717
|
payload,
|
|
@@ -716,7 +727,7 @@ export const sankeyPayloadSearcher: TooltipPayloadSearcher = (
|
|
|
716
727
|
_: unknown,
|
|
717
728
|
activeIndex: TooltipIndex,
|
|
718
729
|
computedData?: unknown,
|
|
719
|
-
nameKey,
|
|
730
|
+
nameKey?: Parameters<TooltipPayloadSearcher>[3],
|
|
720
731
|
): SankeyTooltipPayload | undefined => {
|
|
721
732
|
if (activeIndex == null || typeof activeIndex !== 'string') {
|
|
722
733
|
return undefined;
|
|
@@ -728,7 +739,6 @@ export const sankeyPayloadSearcher: TooltipPayloadSearcher = (
|
|
|
728
739
|
const [targetType, index] = splitIndex;
|
|
729
740
|
const item = get(computedData, `${targetType}s[${index}]`);
|
|
730
741
|
if (item) {
|
|
731
|
-
// @ts-expect-error nameKey type does not match SankeyElementType
|
|
732
742
|
const payload = getPayloadOfTooltip(item, targetType as SankeyElementType, nameKey);
|
|
733
743
|
return payload;
|
|
734
744
|
}
|
|
@@ -782,7 +792,7 @@ interface LinkDataItem {
|
|
|
782
792
|
value: number;
|
|
783
793
|
}
|
|
784
794
|
|
|
785
|
-
export interface NodeProps extends Omit<
|
|
795
|
+
export interface NodeProps extends Omit<RectangleProps, 'height' | 'width'> {
|
|
786
796
|
height: number;
|
|
787
797
|
width: number;
|
|
788
798
|
payload: SankeyNode;
|
|
@@ -813,12 +823,18 @@ export interface SankeyData {
|
|
|
813
823
|
|
|
814
824
|
// TODO: improve types - NodeOptions uses SankeyNode, LinkOptions uses LinkProps. Standardize.
|
|
815
825
|
export type SankeyNodeOptions =
|
|
816
|
-
|
|
826
|
+
OctaneElement<RectangleProps> | ((props: NodeProps) => OctaneNode) | RectangleProps;
|
|
827
|
+
|
|
828
|
+
type SankeyLinkSvgProps =
|
|
829
|
+
Omit<SVGProps<SVGPathElement>, 'targetX' | 'targetY'> & {
|
|
830
|
+
targetX?: number;
|
|
831
|
+
targetY?: number;
|
|
832
|
+
};
|
|
817
833
|
|
|
818
834
|
type SankeyLinkOptions =
|
|
819
|
-
|
|
|
820
|
-
| ((props: LinkProps) =>
|
|
821
|
-
|
|
|
835
|
+
| OctaneElement<SankeyLinkSvgProps>
|
|
836
|
+
| ((props: LinkProps) => OctaneElement<SVGProps<SVGPathElement>>)
|
|
837
|
+
| SankeyLinkSvgProps;
|
|
822
838
|
|
|
823
839
|
interface SankeyProps extends EventThrottlingProps {
|
|
824
840
|
/**
|
|
@@ -914,9 +930,9 @@ interface SankeyProps extends EventThrottlingProps {
|
|
|
914
930
|
* @example <Sankey link={{ fill: #77c878 }} />
|
|
915
931
|
*/
|
|
916
932
|
link?: SankeyLinkOptions;
|
|
917
|
-
style?:
|
|
933
|
+
style?: CSSProperties;
|
|
918
934
|
className?: string;
|
|
919
|
-
children?:
|
|
935
|
+
children?: OctaneNode;
|
|
920
936
|
/**
|
|
921
937
|
* Empty space around the container.
|
|
922
938
|
*
|
|
@@ -926,19 +942,19 @@ interface SankeyProps extends EventThrottlingProps {
|
|
|
926
942
|
/**
|
|
927
943
|
* The customized event handler of click on the area in this group
|
|
928
944
|
*/
|
|
929
|
-
onClick?: (item: NodeProps | LinkProps, type: SankeyElementType, e:
|
|
945
|
+
onClick?: (item: NodeProps | LinkProps, type: SankeyElementType, e: NativeMouseEvent<
|
|
930
946
|
SVGGraphicsElement
|
|
931
947
|
>) => void;
|
|
932
948
|
/**
|
|
933
949
|
* The customized event handler of mouseenter on the area in this group
|
|
934
950
|
*/
|
|
935
|
-
onMouseEnter?: (item: NodeProps | LinkProps, type: SankeyElementType, e:
|
|
951
|
+
onMouseEnter?: (item: NodeProps | LinkProps, type: SankeyElementType, e: NativeMouseEvent<
|
|
936
952
|
SVGGraphicsElement
|
|
937
953
|
>) => void;
|
|
938
954
|
/**
|
|
939
955
|
* The customized event handler of mouseleave on the area in this group
|
|
940
956
|
*/
|
|
941
|
-
onMouseLeave?: (item: NodeProps | LinkProps, type: SankeyElementType, e:
|
|
957
|
+
onMouseLeave?: (item: NodeProps | LinkProps, type: SankeyElementType, e: NativeMouseEvent<
|
|
942
958
|
SVGGraphicsElement
|
|
943
959
|
>) => void;
|
|
944
960
|
/**
|
|
@@ -1028,10 +1044,8 @@ const buildLinkProps = ({
|
|
|
1028
1044
|
|
|
1029
1045
|
const linkProps: LinkProps = {
|
|
1030
1046
|
sourceX,
|
|
1031
|
-
// @ts-expect-error the linkContent from below is contributing unknown props
|
|
1032
1047
|
targetX,
|
|
1033
1048
|
sourceY,
|
|
1034
|
-
// @ts-expect-error the linkContent from below is contributing unknown props
|
|
1035
1049
|
targetY,
|
|
1036
1050
|
sourceControlX,
|
|
1037
1051
|
targetControlX,
|
|
@@ -1060,9 +1074,9 @@ function SankeyLinkElement({
|
|
|
1060
1074
|
props: LinkProps;
|
|
1061
1075
|
i: number;
|
|
1062
1076
|
linkContent: SankeyLinkOptions | undefined;
|
|
1063
|
-
onMouseEnter: (linkProps: LinkProps, e:
|
|
1064
|
-
onMouseLeave: (linkProps: LinkProps, e:
|
|
1065
|
-
onClick: (linkProps: LinkProps, e:
|
|
1077
|
+
onMouseEnter: (linkProps: LinkProps, e: NativeMouseEvent<SVGGraphicsElement>) => void;
|
|
1078
|
+
onMouseLeave: (linkProps: LinkProps, e: NativeMouseEvent<SVGGraphicsElement>) => void;
|
|
1079
|
+
onClick: (linkProps: LinkProps, e: NativeMouseEvent<SVGGraphicsElement>) => void;
|
|
1066
1080
|
dataKey: DataKey<any>;
|
|
1067
1081
|
}) {
|
|
1068
1082
|
const activeCoordinate = getLinkCoordinateOfTooltip(props);
|
|
@@ -1071,7 +1085,7 @@ function SankeyLinkElement({
|
|
|
1071
1085
|
const dispatch = useAppDispatch();
|
|
1072
1086
|
|
|
1073
1087
|
const events = {
|
|
1074
|
-
onMouseEnter: (e:
|
|
1088
|
+
onMouseEnter: (e: NativeMouseEvent<SVGGraphicsElement>) => {
|
|
1075
1089
|
dispatch(
|
|
1076
1090
|
setActiveMouseOverItemIndex({
|
|
1077
1091
|
activeIndex,
|
|
@@ -1082,11 +1096,11 @@ function SankeyLinkElement({
|
|
|
1082
1096
|
);
|
|
1083
1097
|
onMouseEnter(props, e);
|
|
1084
1098
|
},
|
|
1085
|
-
onMouseLeave: (e:
|
|
1099
|
+
onMouseLeave: (e: NativeMouseEvent<SVGGraphicsElement>) => {
|
|
1086
1100
|
dispatch(mouseLeaveItem());
|
|
1087
1101
|
onMouseLeave(props, e);
|
|
1088
1102
|
},
|
|
1089
|
-
onClick: (e:
|
|
1103
|
+
onClick: (e: NativeMouseEvent<SVGGraphicsElement>) => {
|
|
1090
1104
|
dispatch(
|
|
1091
1105
|
setActiveClickItemIndex({
|
|
1092
1106
|
activeIndex,
|
|
@@ -1116,9 +1130,9 @@ function AllSankeyLinkElements({
|
|
|
1116
1130
|
modifiedLinks: ReadonlyArray<LinkProps>;
|
|
1117
1131
|
links: ReadonlyArray<SankeyLink>;
|
|
1118
1132
|
linkContent: SankeyLinkOptions | undefined;
|
|
1119
|
-
onMouseEnter: (linkProps: LinkProps, e:
|
|
1120
|
-
onMouseLeave: (linkProps: LinkProps, e:
|
|
1121
|
-
onClick: (linkProps: LinkProps, e:
|
|
1133
|
+
onMouseEnter: (linkProps: LinkProps, e: NativeMouseEvent<SVGGraphicsElement>) => void;
|
|
1134
|
+
onMouseLeave: (linkProps: LinkProps, e: NativeMouseEvent<SVGGraphicsElement>) => void;
|
|
1135
|
+
onClick: (linkProps: LinkProps, e: NativeMouseEvent<SVGGraphicsElement>) => void;
|
|
1122
1136
|
dataKey: DataKey<any>;
|
|
1123
1137
|
}) {
|
|
1124
1138
|
return <Layer className="recharts-sankey-links" key="recharts-sankey-links">{links.map((
|
|
@@ -1151,15 +1165,12 @@ function renderNodeItem(option: SankeyNodeOptions | undefined, props: NodeProps)
|
|
|
1151
1165
|
return option(props);
|
|
1152
1166
|
}
|
|
1153
1167
|
|
|
1154
|
-
return
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
{...svgPropertiesNoEvents(props)}
|
|
1161
|
-
/>
|
|
1162
|
-
);
|
|
1168
|
+
return <Rectangle
|
|
1169
|
+
className="recharts-sankey-node"
|
|
1170
|
+
fill="#0088fe"
|
|
1171
|
+
fillOpacity="0.8"
|
|
1172
|
+
{...svgPropertiesNoEvents(props)}
|
|
1173
|
+
/>;
|
|
1163
1174
|
}
|
|
1164
1175
|
|
|
1165
1176
|
const buildNodeProps = ({
|
|
@@ -1176,7 +1187,6 @@ const buildNodeProps = ({
|
|
|
1176
1187
|
i: number;
|
|
1177
1188
|
}) => {
|
|
1178
1189
|
const { x, y, dx, dy } = node;
|
|
1179
|
-
// @ts-expect-error nodeContent is passing in unknown props
|
|
1180
1190
|
const nodeProps: NodeProps = {
|
|
1181
1191
|
...svgPropertiesNoEventsFromUnknown(nodeContent),
|
|
1182
1192
|
x: x + left,
|
|
@@ -1203,9 +1213,9 @@ function NodeElement({
|
|
|
1203
1213
|
props: NodeProps;
|
|
1204
1214
|
nodeContent: SankeyNodeOptions | undefined;
|
|
1205
1215
|
i: number;
|
|
1206
|
-
onMouseEnter: (nodeProps: NodeProps, e:
|
|
1207
|
-
onMouseLeave: (nodeProps: NodeProps, e:
|
|
1208
|
-
onClick: (nodeProps: NodeProps, e:
|
|
1216
|
+
onMouseEnter: (nodeProps: NodeProps, e: NativeMouseEvent<SVGGraphicsElement>) => void;
|
|
1217
|
+
onMouseLeave: (nodeProps: NodeProps, e: NativeMouseEvent<SVGGraphicsElement>) => void;
|
|
1218
|
+
onClick: (nodeProps: NodeProps, e: NativeMouseEvent<SVGGraphicsElement>) => void;
|
|
1209
1219
|
dataKey: DataKey<any>;
|
|
1210
1220
|
}) {
|
|
1211
1221
|
const dispatch = useAppDispatch();
|
|
@@ -1214,7 +1224,7 @@ function NodeElement({
|
|
|
1214
1224
|
const activeIndex = `node-${i}`;
|
|
1215
1225
|
|
|
1216
1226
|
const events = {
|
|
1217
|
-
onMouseEnter: (e:
|
|
1227
|
+
onMouseEnter: (e: NativeMouseEvent<SVGGraphicsElement>) => {
|
|
1218
1228
|
dispatch(
|
|
1219
1229
|
setActiveMouseOverItemIndex({
|
|
1220
1230
|
activeIndex,
|
|
@@ -1225,11 +1235,11 @@ function NodeElement({
|
|
|
1225
1235
|
);
|
|
1226
1236
|
onMouseEnter(props, e);
|
|
1227
1237
|
},
|
|
1228
|
-
onMouseLeave: (e:
|
|
1238
|
+
onMouseLeave: (e: NativeMouseEvent<SVGGraphicsElement>) => {
|
|
1229
1239
|
dispatch(mouseLeaveItem());
|
|
1230
1240
|
onMouseLeave(props, e);
|
|
1231
1241
|
},
|
|
1232
|
-
onClick: (e:
|
|
1242
|
+
onClick: (e: NativeMouseEvent<SVGGraphicsElement>) => {
|
|
1233
1243
|
dispatch(
|
|
1234
1244
|
setActiveClickItemIndex({
|
|
1235
1245
|
activeIndex,
|
|
@@ -1257,9 +1267,9 @@ function AllNodeElements({
|
|
|
1257
1267
|
graphicalItemId: GraphicalItemId;
|
|
1258
1268
|
modifiedNodes: ReadonlyArray<NodeProps>;
|
|
1259
1269
|
nodeContent: SankeyNodeOptions | undefined;
|
|
1260
|
-
onMouseEnter: (nodeProps: NodeProps, e:
|
|
1261
|
-
onMouseLeave: (nodeProps: NodeProps, e:
|
|
1262
|
-
onClick: (nodeProps: NodeProps, e:
|
|
1270
|
+
onMouseEnter: (nodeProps: NodeProps, e: NativeMouseEvent<SVGGraphicsElement>) => void;
|
|
1271
|
+
onMouseLeave: (nodeProps: NodeProps, e: NativeMouseEvent<SVGGraphicsElement>) => void;
|
|
1272
|
+
onClick: (nodeProps: NodeProps, e: NativeMouseEvent<SVGGraphicsElement>) => void;
|
|
1263
1273
|
dataKey: DataKey<any>;
|
|
1264
1274
|
}) {
|
|
1265
1275
|
return <Layer className="recharts-sankey-nodes" key="recharts-sankey-nodes">{modifiedNodes.map((
|
|
@@ -1390,7 +1400,7 @@ function SankeyImpl(props: InternalSankeyProps) {
|
|
|
1390
1400
|
const handleMouseEnter = useCallback((
|
|
1391
1401
|
item: NodeProps | LinkProps,
|
|
1392
1402
|
type: SankeyElementType,
|
|
1393
|
-
e:
|
|
1403
|
+
e: NativeMouseEvent<SVGGraphicsElement>,
|
|
1394
1404
|
) => {
|
|
1395
1405
|
if (onMouseEnter) {
|
|
1396
1406
|
onMouseEnter(item, type, e);
|
|
@@ -1400,7 +1410,7 @@ function SankeyImpl(props: InternalSankeyProps) {
|
|
|
1400
1410
|
const handleMouseLeave = useCallback((
|
|
1401
1411
|
item: NodeProps | LinkProps,
|
|
1402
1412
|
type: SankeyElementType,
|
|
1403
|
-
e:
|
|
1413
|
+
e: NativeMouseEvent<SVGGraphicsElement>,
|
|
1404
1414
|
) => {
|
|
1405
1415
|
if (onMouseLeave) {
|
|
1406
1416
|
onMouseLeave(item, type, e);
|
|
@@ -1410,7 +1420,7 @@ function SankeyImpl(props: InternalSankeyProps) {
|
|
|
1410
1420
|
const handleClick = useCallback((
|
|
1411
1421
|
item: NodeProps | LinkProps,
|
|
1412
1422
|
type: SankeyElementType,
|
|
1413
|
-
e:
|
|
1423
|
+
e: NativeMouseEvent<SVGGraphicsElement>,
|
|
1414
1424
|
) => {
|
|
1415
1425
|
if (onClick) {
|
|
1416
1426
|
onClick(item, type, e);
|
|
@@ -1433,17 +1443,11 @@ function SankeyImpl(props: InternalSankeyProps) {
|
|
|
1433
1443
|
modifiedLinks={modifiedLinks}
|
|
1434
1444
|
linkContent={link}
|
|
1435
1445
|
dataKey={dataKey}
|
|
1436
|
-
onMouseEnter={(linkProps: LinkProps, e:
|
|
1437
|
-
linkProps,
|
|
1438
|
-
|
|
1439
|
-
e
|
|
1440
|
-
)
|
|
1441
|
-
onMouseLeave={(linkProps: LinkProps, e: MouseEvent<SVGGraphicsElement>) => handleMouseLeave(
|
|
1442
|
-
linkProps,
|
|
1443
|
-
'link',
|
|
1444
|
-
e,
|
|
1445
|
-
)}
|
|
1446
|
-
onClick={(linkProps: LinkProps, e: MouseEvent<SVGGraphicsElement>) => handleClick(
|
|
1446
|
+
onMouseEnter={(linkProps: LinkProps, e: NativeMouseEvent<SVGGraphicsElement>) =>
|
|
1447
|
+
handleMouseEnter(linkProps, 'link', e)}
|
|
1448
|
+
onMouseLeave={(linkProps: LinkProps, e: NativeMouseEvent<SVGGraphicsElement>) =>
|
|
1449
|
+
handleMouseLeave(linkProps, 'link', e)}
|
|
1450
|
+
onClick={(linkProps: LinkProps, e: NativeMouseEvent<SVGGraphicsElement>) => handleClick(
|
|
1447
1451
|
linkProps,
|
|
1448
1452
|
'link',
|
|
1449
1453
|
e,
|
|
@@ -1454,17 +1458,11 @@ function SankeyImpl(props: InternalSankeyProps) {
|
|
|
1454
1458
|
modifiedNodes={modifiedNodes}
|
|
1455
1459
|
nodeContent={node}
|
|
1456
1460
|
dataKey={dataKey}
|
|
1457
|
-
onMouseEnter={(nodeProps: NodeProps, e:
|
|
1458
|
-
nodeProps,
|
|
1459
|
-
|
|
1460
|
-
e
|
|
1461
|
-
)
|
|
1462
|
-
onMouseLeave={(nodeProps: NodeProps, e: MouseEvent<SVGGraphicsElement>) => handleMouseLeave(
|
|
1463
|
-
nodeProps,
|
|
1464
|
-
'node',
|
|
1465
|
-
e,
|
|
1466
|
-
)}
|
|
1467
|
-
onClick={(nodeProps: NodeProps, e: MouseEvent<SVGGraphicsElement>) => handleClick(
|
|
1461
|
+
onMouseEnter={(nodeProps: NodeProps, e: NativeMouseEvent<SVGGraphicsElement>) =>
|
|
1462
|
+
handleMouseEnter(nodeProps, 'node', e)}
|
|
1463
|
+
onMouseLeave={(nodeProps: NodeProps, e: NativeMouseEvent<SVGGraphicsElement>) =>
|
|
1464
|
+
handleMouseLeave(nodeProps, 'node', e)}
|
|
1465
|
+
onClick={(nodeProps: NodeProps, e: NativeMouseEvent<SVGGraphicsElement>) => handleClick(
|
|
1468
1466
|
nodeProps,
|
|
1469
1467
|
'node',
|
|
1470
1468
|
e,
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { Ref } from '../util/OctaneTypes.ts';
|
|
2
|
+
|
|
1
3
|
import { arrayTooltipSearcher } from '../state/optionsSlice';
|
|
2
4
|
import { CartesianChart } from './CartesianChart.tsrx';
|
|
3
5
|
import { CartesianChartProps, TooltipEventType } from '../util/types';
|
|
@@ -9,7 +11,9 @@ const allowedTooltipTypes: ReadonlyArray<TooltipEventType> = ['item'];
|
|
|
9
11
|
* @provides CartesianViewBoxContext
|
|
10
12
|
* @provides CartesianChartContext
|
|
11
13
|
*/
|
|
12
|
-
export function ScatterChart(props: CartesianChartProps<
|
|
14
|
+
export function ScatterChart<DataPointType = unknown>(props: CartesianChartProps<DataPointType> & {
|
|
15
|
+
ref?: Ref<SVGSVGElement>;
|
|
16
|
+
}) {
|
|
13
17
|
const { ref, ...rest } = props;
|
|
14
18
|
return <CartesianChart
|
|
15
19
|
chartName="ScatterChart"
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
+
import type { CSSProperties, NativeMouseEvent, OctaneNode } from '../util/OctaneTypes.ts';
|
|
1
2
|
import * as React from 'octane';
|
|
2
|
-
import {
|
|
3
|
+
import { useState } from 'octane';
|
|
3
4
|
import { scaleLinear } from 'victory-vendor/d3-scale';
|
|
4
5
|
import { clsx } from 'clsx';
|
|
5
6
|
import get from 'es-toolkit/compat/get';
|
|
6
|
-
import { Surface } from '../container/Surface';
|
|
7
|
-
import { Layer } from '../container/Layer';
|
|
8
|
-
import { Sector } from '../shape/Sector';
|
|
9
|
-
import { Text, Props as TextProps } from '../component/Text';
|
|
7
|
+
import { Surface } from '../container/Surface.tsrx';
|
|
8
|
+
import { Layer } from '../container/Layer.tsrx';
|
|
9
|
+
import { Sector } from '../shape/Sector.tsrx';
|
|
10
|
+
import { Text, Props as TextProps } from '../component/Text.tsrx';
|
|
10
11
|
import { polarToCartesian } from '../util/PolarUtils';
|
|
11
12
|
import {
|
|
12
13
|
ReportChartMargin,
|
|
@@ -15,7 +16,7 @@ import {
|
|
|
15
16
|
useChartWidth,
|
|
16
17
|
} from '../context/chartLayoutContext';
|
|
17
18
|
import { TooltipPortalContext } from '../context/tooltipPortalContext';
|
|
18
|
-
import { RechartsWrapper } from './RechartsWrapper';
|
|
19
|
+
import { RechartsWrapper } from './RechartsWrapper.tsrx';
|
|
19
20
|
import {
|
|
20
21
|
mouseLeaveItem,
|
|
21
22
|
setActiveClickItemIndex,
|
|
@@ -25,12 +26,12 @@ import {
|
|
|
25
26
|
TooltipPayloadSearcher,
|
|
26
27
|
} from '../state/tooltipSlice';
|
|
27
28
|
import { SetTooltipEntrySettings } from '../state/SetTooltipEntrySettings';
|
|
28
|
-
import { RechartsStoreProvider } from '../state/RechartsStoreProvider';
|
|
29
|
+
import { RechartsStoreProvider } from '../state/RechartsStoreProvider.tsrx';
|
|
29
30
|
import { ReportEventSettings } from '../state/ReportEventSettings';
|
|
30
31
|
import { ChartCoordinate, DataKey, EventThrottlingProps, Margin, Percent } from '../util/types';
|
|
31
32
|
import { useAppDispatch } from '../state/hooks';
|
|
32
33
|
import { RechartsRootState } from '../state/store';
|
|
33
|
-
import { RegisterGraphicalItemId } from '../context/RegisterGraphicalItemId';
|
|
34
|
+
import { RegisterGraphicalItemId } from '../context/RegisterGraphicalItemId.tsrx';
|
|
34
35
|
import { WithIdRequired } from '../util/useUniqueId';
|
|
35
36
|
import { RequiresDefaultProps, resolveDefaultProps } from '../util/resolveDefaultProps';
|
|
36
37
|
import { initialEventSettingsState } from '../state/eventSettingsSlice';
|
|
@@ -146,8 +147,8 @@ export interface SunburstChartProps extends EventThrottlingProps {
|
|
|
146
147
|
* An object with svg text options to control the appearance of the chart labels.
|
|
147
148
|
*/
|
|
148
149
|
textOptions?: TextProps;
|
|
149
|
-
onMouseEnter?: (node: SunburstData, e:
|
|
150
|
-
onMouseLeave?: (node: SunburstData, e:
|
|
150
|
+
onMouseEnter?: (node: SunburstData, e: NativeMouseEvent) => void;
|
|
151
|
+
onMouseLeave?: (node: SunburstData, e: NativeMouseEvent) => void;
|
|
151
152
|
onClick?: (node: SunburstData) => void;
|
|
152
153
|
style?: CSSProperties;
|
|
153
154
|
id?: string;
|
|
@@ -312,7 +313,7 @@ const SunburstChartImpl = ({
|
|
|
312
313
|
const positions: SunburstPositionMap = new Map<string, ChartCoordinate>([]);
|
|
313
314
|
|
|
314
315
|
// event handlers
|
|
315
|
-
function handleMouseEnter(node: SunburstNode, e:
|
|
316
|
+
function handleMouseEnter(node: SunburstNode, e: NativeMouseEvent) {
|
|
316
317
|
if (onMouseEnter) onMouseEnter(node, e);
|
|
317
318
|
|
|
318
319
|
dispatch(
|
|
@@ -325,7 +326,7 @@ const SunburstChartImpl = ({
|
|
|
325
326
|
);
|
|
326
327
|
}
|
|
327
328
|
|
|
328
|
-
function handleMouseLeave(node: SunburstNode, e:
|
|
329
|
+
function handleMouseLeave(node: SunburstNode, e: NativeMouseEvent) {
|
|
329
330
|
if (onMouseLeave) onMouseLeave(node, e);
|
|
330
331
|
|
|
331
332
|
dispatch(mouseLeaveItem());
|
|
@@ -376,8 +377,14 @@ const SunburstChartImpl = ({
|
|
|
376
377
|
<g key={`sunburst-sector-${d.name}-${i}`}>
|
|
377
378
|
<Sector
|
|
378
379
|
onClick={() => handleClick(nodeWithIndex)}
|
|
379
|
-
onMouseEnter={(e) => handleMouseEnter(
|
|
380
|
-
|
|
380
|
+
onMouseEnter={(e: NativeMouseEvent<SVGPathElement>) => handleMouseEnter(
|
|
381
|
+
nodeWithIndex,
|
|
382
|
+
e,
|
|
383
|
+
)}
|
|
384
|
+
onMouseLeave={(e: NativeMouseEvent<SVGPathElement>) => handleMouseLeave(
|
|
385
|
+
nodeWithIndex,
|
|
386
|
+
e,
|
|
387
|
+
)}
|
|
381
388
|
fill={fillColor}
|
|
382
389
|
stroke={stroke}
|
|
383
390
|
strokeWidth={padding}
|
package/src/chart/types.ts
CHANGED
|
@@ -1,3 +1,19 @@
|
|
|
1
|
+
import type { ActiveDotProps, ActiveDotType, DataKey } from '../util/types';
|
|
2
|
+
import type { ZIndexable } from '../zIndex/ZIndexLayer.tsrx';
|
|
3
|
+
|
|
4
|
+
export interface PointType {
|
|
5
|
+
readonly x: number | null;
|
|
6
|
+
readonly y: number | null;
|
|
7
|
+
readonly value?: any;
|
|
8
|
+
readonly payload?: any;
|
|
9
|
+
}
|
|
10
|
+
interface ActivePointsProps extends ZIndexable {
|
|
11
|
+
points: ReadonlyArray<PointType>;
|
|
12
|
+
mainColor: string | undefined;
|
|
13
|
+
itemDataKey: DataKey<any> | undefined;
|
|
14
|
+
activeDot: ActiveDotType;
|
|
15
|
+
clipPath?: string;
|
|
16
|
+
}
|
|
1
17
|
// Port of component/ActivePoints.tsx — the highlighted dot on the active
|
|
2
18
|
// tooltip data point (Line/Area/Scatter).
|
|
3
19
|
import { cloneElement, isValidElement } from 'octane';
|
|
@@ -12,12 +28,19 @@ import { svgPropertiesNoEventsFromUnknown } from '../util/svgPropertiesNoEvents'
|
|
|
12
28
|
import { ZIndexLayer } from '../zIndex/ZIndexLayer.tsrx';
|
|
13
29
|
import { DefaultZIndexes } from '../zIndex/DefaultZIndexes';
|
|
14
30
|
|
|
15
|
-
function ActivePoint(activePointProps
|
|
31
|
+
function ActivePoint(activePointProps: {
|
|
32
|
+
point: PointType;
|
|
33
|
+
activeDot: ActiveDotType;
|
|
34
|
+
childIndex: number;
|
|
35
|
+
dataKey: DataKey<any> | undefined;
|
|
36
|
+
mainColor: string | undefined;
|
|
37
|
+
clipPath?: string;
|
|
38
|
+
}) {
|
|
16
39
|
const { point, childIndex, mainColor, activeDot, dataKey, clipPath } = activePointProps;
|
|
17
40
|
if (activeDot === false || point.x == null || point.y == null) {
|
|
18
41
|
return null;
|
|
19
42
|
}
|
|
20
|
-
const dotPropsTyped = {
|
|
43
|
+
const dotPropsTyped: ActiveDotProps = {
|
|
21
44
|
index: childIndex,
|
|
22
45
|
dataKey,
|
|
23
46
|
cx: point.x,
|
|
@@ -29,7 +52,7 @@ function ActivePoint(activePointProps) {
|
|
|
29
52
|
payload: point.payload,
|
|
30
53
|
value: point.value,
|
|
31
54
|
};
|
|
32
|
-
const dotProps = {
|
|
55
|
+
const dotProps: ActiveDotProps = {
|
|
33
56
|
...dotPropsTyped,
|
|
34
57
|
...svgPropertiesNoEventsFromUnknown(activeDot),
|
|
35
58
|
...adaptEventHandlers(activeDot),
|
|
@@ -45,7 +68,7 @@ function ActivePoint(activePointProps) {
|
|
|
45
68
|
return <Layer className="recharts-active-dot" clipPath={clipPath}>{dot}</Layer>;
|
|
46
69
|
}
|
|
47
70
|
|
|
48
|
-
export function ActivePoints(props) {
|
|
71
|
+
export function ActivePoints(props: ActivePointsProps) {
|
|
49
72
|
const {
|
|
50
73
|
points,
|
|
51
74
|
mainColor,
|
|
@@ -59,7 +82,9 @@ export function ActivePoints(props) {
|
|
|
59
82
|
if (points == null || activeDataPoints == null) {
|
|
60
83
|
return null;
|
|
61
84
|
}
|
|
62
|
-
const activePoint = points.find(
|
|
85
|
+
const activePoint: PointType | undefined = points.find(
|
|
86
|
+
(p) => activeDataPoints.includes(p.payload),
|
|
87
|
+
);
|
|
63
88
|
if (isNullish(activePoint)) {
|
|
64
89
|
return null;
|
|
65
90
|
}
|
package/src/component/Cell.ts
CHANGED
|
@@ -14,8 +14,26 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import { useLayoutEffect, useRef } from 'octane';
|
|
16
16
|
import { useCellsRegistry } from '../context/CellsContext';
|
|
17
|
+
import type { SVGProps, SVGPropsForHost } from '../util/OctaneTypes';
|
|
17
18
|
|
|
18
|
-
|
|
19
|
+
type CellGeometry = {
|
|
20
|
+
x?: number;
|
|
21
|
+
y?: number;
|
|
22
|
+
cx?: number;
|
|
23
|
+
cy?: number;
|
|
24
|
+
width?: number;
|
|
25
|
+
height?: number;
|
|
26
|
+
radius?: number;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
// Cell geometry feeds calculated chart paths, whose coordinates are numeric.
|
|
30
|
+
export type Props = Omit<SVGProps<SVGElement>, keyof CellGeometry> & CellGeometry;
|
|
31
|
+
|
|
32
|
+
// A shape writes its narrower host into the Cell's broader SVG ref sink.
|
|
33
|
+
// This write-only view is used at the renderer boundary; refs are never dropped.
|
|
34
|
+
export type CellPropsFor<T extends SVGElement> = SVGPropsForHost<Props, T>;
|
|
35
|
+
|
|
36
|
+
export function Cell(props: Props): null {
|
|
19
37
|
const registry = useCellsRegistry();
|
|
20
38
|
const token = useRef({});
|
|
21
39
|
useLayoutEffect(() => {
|