@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/shape/Rectangle.tsrx
CHANGED
|
@@ -1,3 +1,30 @@
|
|
|
1
|
+
import type { NativeMouseEvent, SVGProps } from '../util/OctaneTypes.ts';
|
|
2
|
+
import type { AnimationDuration } from '../util/types';
|
|
3
|
+
import type { EasingInput } from '../animation/easing';
|
|
4
|
+
|
|
5
|
+
export type RectRadius = number | [number, number, number, number];
|
|
6
|
+
interface RectangleProps {
|
|
7
|
+
className?: SVGProps<SVGPathElement>['className'];
|
|
8
|
+
x?: number;
|
|
9
|
+
y?: number;
|
|
10
|
+
width?: number;
|
|
11
|
+
height?: number;
|
|
12
|
+
radius?: RectRadius;
|
|
13
|
+
isAnimationActive?: boolean;
|
|
14
|
+
isUpdateAnimationActive?: boolean;
|
|
15
|
+
animationBegin?: number;
|
|
16
|
+
animationDuration?: AnimationDuration;
|
|
17
|
+
animationEasing?: EasingInput;
|
|
18
|
+
onClick?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
19
|
+
onMouseDown?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
20
|
+
onMouseUp?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
21
|
+
onMouseMove?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
22
|
+
onMouseOver?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
23
|
+
onMouseOut?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
24
|
+
onMouseEnter?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
25
|
+
onMouseLeave?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
26
|
+
}
|
|
27
|
+
export type Props = Omit<SVGProps<SVGPathElement>, 'radius'> & RectangleProps;
|
|
1
28
|
// Port of shape/Rectangle.tsx — a rectangle path with per-corner rounding.
|
|
2
29
|
// Phase 0 ports the STATIC path (isUpdateAnimationActive defaults false, and
|
|
3
30
|
// standalone Rectangles never animate); the width/height update animation and
|
|
@@ -10,7 +37,7 @@ import { resolveDefaultProps } from '../util/resolveDefaultProps';
|
|
|
10
37
|
import { round } from '../util/round';
|
|
11
38
|
import { svgPropertiesAndEvents } from '../util/svgPropertiesAndEvents.ts';
|
|
12
39
|
|
|
13
|
-
function getRectanglePath(x, y, width, height, radius) {
|
|
40
|
+
function getRectanglePath(x: number, y: number, width: number, height: number, radius: RectRadius) {
|
|
14
41
|
const roundedWidth = round(width);
|
|
15
42
|
const roundedHeight = round(height);
|
|
16
43
|
const maxRadius = Math.min(Math.abs(roundedWidth) / 2, Math.abs(roundedHeight) / 2);
|
|
@@ -134,9 +161,9 @@ export const defaultRectangleProps = {
|
|
|
134
161
|
animationBegin: 0,
|
|
135
162
|
animationDuration: 1500,
|
|
136
163
|
animationEasing: 'ease',
|
|
137
|
-
}
|
|
164
|
+
} as const satisfies Partial<Props>;
|
|
138
165
|
|
|
139
|
-
export function Rectangle(rectangleProps) {
|
|
166
|
+
export function Rectangle(rectangleProps: Props) {
|
|
140
167
|
const props = resolveDefaultProps(rectangleProps, defaultRectangleProps);
|
|
141
168
|
const { x, y, width, height, radius, className } = props;
|
|
142
169
|
|
package/src/shape/Sector.tsrx
CHANGED
|
@@ -1,3 +1,38 @@
|
|
|
1
|
+
import type { NativeMouseEvent, SVGProps } from '../util/OctaneTypes.ts';
|
|
2
|
+
import type { GeometrySector, GeometrySectorWithCornerRadius } from '../util/types';
|
|
3
|
+
|
|
4
|
+
interface TangentCircleDef {
|
|
5
|
+
cx: number;
|
|
6
|
+
cy: number;
|
|
7
|
+
radius: number;
|
|
8
|
+
angle: number;
|
|
9
|
+
sign: number;
|
|
10
|
+
isExternal?: boolean;
|
|
11
|
+
cornerRadius: number;
|
|
12
|
+
cornerIsExternal?: boolean;
|
|
13
|
+
}
|
|
14
|
+
interface SectorProps {
|
|
15
|
+
className?: SVGProps<SVGPathElement>['className'];
|
|
16
|
+
cx?: number;
|
|
17
|
+
cy?: number;
|
|
18
|
+
innerRadius?: number;
|
|
19
|
+
outerRadius?: number;
|
|
20
|
+
startAngle?: number;
|
|
21
|
+
endAngle?: number;
|
|
22
|
+
cornerRadius?: number;
|
|
23
|
+
forceCornerRadius?: boolean;
|
|
24
|
+
cornerIsExternal?: boolean;
|
|
25
|
+
onClick?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
26
|
+
onMouseDown?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
27
|
+
onMouseUp?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
28
|
+
onMouseMove?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
29
|
+
onMouseOver?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
30
|
+
onMouseOut?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
31
|
+
onMouseEnter?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
32
|
+
onMouseLeave?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
33
|
+
}
|
|
34
|
+
export type Props =
|
|
35
|
+
Omit<SVGProps<SVGPathElement>, 'cx' | 'cy' | 'dangerouslySetInnerHTML'> & Partial<SectorProps>;
|
|
1
36
|
// Port of shape/Sector.tsx — the pie/radial-bar wedge (arc path with optional
|
|
2
37
|
// per-corner rounding). Path strings must be BYTE-IDENTICAL to upstream:
|
|
3
38
|
// recharts builds them with roundTemplateLiteral (every interpolated number
|
|
@@ -11,7 +46,7 @@ import { resolveDefaultProps } from '../util/resolveDefaultProps';
|
|
|
11
46
|
import { svgPropertiesAndEvents } from '../util/svgPropertiesAndEvents.ts';
|
|
12
47
|
import { roundTemplateLiteral } from '../util/round';
|
|
13
48
|
|
|
14
|
-
const getDeltaAngle = (startAngle, endAngle) => {
|
|
49
|
+
const getDeltaAngle = (startAngle: number, endAngle: number) => {
|
|
15
50
|
const sign = mathSign(endAngle - startAngle);
|
|
16
51
|
const deltaAngle = Math.min(Math.abs(endAngle - startAngle), 359.999);
|
|
17
52
|
return sign * deltaAngle;
|
|
@@ -26,7 +61,7 @@ const getTangentCircle = ({
|
|
|
26
61
|
isExternal,
|
|
27
62
|
cornerRadius,
|
|
28
63
|
cornerIsExternal,
|
|
29
|
-
}) => {
|
|
64
|
+
}: TangentCircleDef) => {
|
|
30
65
|
const centerRadius = cornerRadius * (isExternal ? 1 : -1) + radius;
|
|
31
66
|
const theta = Math.asin(cornerRadius / centerRadius) / RADIAN;
|
|
32
67
|
const centerAngle = cornerIsExternal ? angle : angle + sign * theta;
|
|
@@ -44,7 +79,14 @@ const getTangentCircle = ({
|
|
|
44
79
|
return { center, circleTangency, lineTangency, theta };
|
|
45
80
|
};
|
|
46
81
|
|
|
47
|
-
const getSectorPath = ({
|
|
82
|
+
const getSectorPath = ({
|
|
83
|
+
cx,
|
|
84
|
+
cy,
|
|
85
|
+
innerRadius,
|
|
86
|
+
outerRadius,
|
|
87
|
+
startAngle,
|
|
88
|
+
endAngle,
|
|
89
|
+
}: GeometrySector) => {
|
|
48
90
|
const angle = getDeltaAngle(startAngle, endAngle);
|
|
49
91
|
|
|
50
92
|
// When the angle of sector equals to 360, start point and end point coincide
|
|
@@ -85,7 +127,7 @@ const getSectorWithCorner = ({
|
|
|
85
127
|
cornerIsExternal,
|
|
86
128
|
startAngle,
|
|
87
129
|
endAngle,
|
|
88
|
-
}) => {
|
|
130
|
+
}: GeometrySectorWithCornerRadius) => {
|
|
89
131
|
const sign = mathSign(endAngle - startAngle);
|
|
90
132
|
const { circleTangency: soct, lineTangency: solt, theta: sot } = getTangentCircle({
|
|
91
133
|
cx,
|
|
@@ -177,9 +219,9 @@ export const defaultSectorProps = {
|
|
|
177
219
|
cornerRadius: 0,
|
|
178
220
|
forceCornerRadius: false,
|
|
179
221
|
cornerIsExternal: false,
|
|
180
|
-
}
|
|
222
|
+
} as const satisfies Partial<Props>;
|
|
181
223
|
|
|
182
|
-
export function Sector(sectorProps) {
|
|
224
|
+
export function Sector(sectorProps: Props) {
|
|
183
225
|
const props = resolveDefaultProps(sectorProps, defaultSectorProps);
|
|
184
226
|
const {
|
|
185
227
|
cx,
|
package/src/shape/Symbols.tsrx
CHANGED
|
@@ -1,3 +1,21 @@
|
|
|
1
|
+
import type { SVGProps } from '../util/OctaneTypes.ts';
|
|
2
|
+
import type { SymbolType as D3SymbolType } from 'victory-vendor/d3-shape';
|
|
3
|
+
import type { SymbolType } from '../util/types';
|
|
4
|
+
|
|
5
|
+
type SizeType = 'area' | 'diameter';
|
|
6
|
+
interface SymbolFactory {
|
|
7
|
+
[type: string]: D3SymbolType;
|
|
8
|
+
}
|
|
9
|
+
export interface InnerSymbolsProp {
|
|
10
|
+
className?: SVGProps<SVGPathElement>['className'];
|
|
11
|
+
type?: SymbolType;
|
|
12
|
+
cx?: number | null;
|
|
13
|
+
cy?: number | null;
|
|
14
|
+
size?: number;
|
|
15
|
+
sizeType?: SizeType;
|
|
16
|
+
}
|
|
17
|
+
export type SymbolsProps =
|
|
18
|
+
Omit<SVGProps<SVGPathElement>, keyof InnerSymbolsProp> & InnerSymbolsProp;
|
|
1
19
|
// Port of shape/Symbols.tsx — the scatter/legend marker shapes, drawn by
|
|
2
20
|
// victory-vendor's d3-shape symbol generators (byte-identical `d` output).
|
|
3
21
|
import {
|
|
@@ -14,7 +32,7 @@ import { clsx } from 'clsx';
|
|
|
14
32
|
import { isNumber, upperFirst } from '../util/DataUtils';
|
|
15
33
|
import { svgPropertiesAndEvents } from '../util/svgPropertiesAndEvents.ts';
|
|
16
34
|
|
|
17
|
-
const symbolFactories = {
|
|
35
|
+
const symbolFactories: SymbolFactory = {
|
|
18
36
|
symbolCircle,
|
|
19
37
|
symbolCross,
|
|
20
38
|
symbolDiamond,
|
|
@@ -25,12 +43,12 @@ const symbolFactories = {
|
|
|
25
43
|
};
|
|
26
44
|
const RADIAN = Math.PI / 180;
|
|
27
45
|
|
|
28
|
-
const getSymbolFactory = (type) => {
|
|
46
|
+
const getSymbolFactory = (type: SymbolType) => {
|
|
29
47
|
const name = 'symbol' + upperFirst(type);
|
|
30
48
|
return symbolFactories[name] || symbolCircle;
|
|
31
49
|
};
|
|
32
50
|
|
|
33
|
-
const calculateAreaSize = (size, sizeType, type) => {
|
|
51
|
+
const calculateAreaSize = (size: number, sizeType: SizeType, type: SymbolType) => {
|
|
34
52
|
if (sizeType === 'area') {
|
|
35
53
|
return size;
|
|
36
54
|
}
|
|
@@ -54,17 +72,17 @@ const calculateAreaSize = (size, sizeType, type) => {
|
|
|
54
72
|
}
|
|
55
73
|
};
|
|
56
74
|
|
|
57
|
-
const registerSymbol = (key, factory) => {
|
|
75
|
+
const registerSymbol = (key: string, factory: D3SymbolType) => {
|
|
58
76
|
symbolFactories['symbol' + upperFirst(key)] = factory;
|
|
59
77
|
};
|
|
60
78
|
|
|
61
79
|
/** Renders a symbol from a set of predefined shapes. */
|
|
62
|
-
export function Symbols(symbolsProps) {
|
|
80
|
+
export function Symbols(symbolsProps: SymbolsProps) {
|
|
63
81
|
const { type = 'circle', size = 64, sizeType = 'area', ...rest } = symbolsProps;
|
|
64
82
|
const props = { ...rest, type, size, sizeType };
|
|
65
83
|
// Runtime guard (recharts#6197): `type` can arrive as a non-string despite
|
|
66
84
|
// the declared union; fall back to 'circle'.
|
|
67
|
-
let realType = 'circle';
|
|
85
|
+
let realType: SymbolType = 'circle';
|
|
68
86
|
if (typeof type === 'string') {
|
|
69
87
|
realType = type;
|
|
70
88
|
}
|
package/src/shape/Trapezoid.tsrx
CHANGED
|
@@ -1,3 +1,27 @@
|
|
|
1
|
+
import type { NativeMouseEvent, SVGProps } from '../util/OctaneTypes.ts';
|
|
2
|
+
import type { AnimationDuration, EasingInput } from '../util/types';
|
|
3
|
+
|
|
4
|
+
interface TrapezoidProps {
|
|
5
|
+
className?: SVGProps<SVGPathElement>['className'];
|
|
6
|
+
x?: number;
|
|
7
|
+
y?: number;
|
|
8
|
+
upperWidth?: number;
|
|
9
|
+
lowerWidth?: number;
|
|
10
|
+
height?: number;
|
|
11
|
+
isUpdateAnimationActive?: boolean;
|
|
12
|
+
animationBegin?: number;
|
|
13
|
+
animationDuration?: AnimationDuration;
|
|
14
|
+
animationEasing?: EasingInput;
|
|
15
|
+
onClick?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
16
|
+
onMouseDown?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
17
|
+
onMouseUp?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
18
|
+
onMouseMove?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
19
|
+
onMouseOver?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
20
|
+
onMouseOut?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
21
|
+
onMouseEnter?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
22
|
+
onMouseLeave?: (e: NativeMouseEvent<SVGPathElement>) => void;
|
|
23
|
+
}
|
|
24
|
+
export type Props = SVGProps<SVGPathElement> & TrapezoidProps;
|
|
1
25
|
// Port of shape/Trapezoid.tsx — the funnel-chart segment. Phase 0 ports the
|
|
2
26
|
// STATIC path (isUpdateAnimationActive defaults false); the update animation
|
|
3
27
|
// and the getTotalLength entrance dash arrive with the Phase 5 animation port.
|
|
@@ -7,7 +31,13 @@ import { resolveDefaultProps } from '../util/resolveDefaultProps';
|
|
|
7
31
|
import { svgPropertiesAndEvents } from '../util/svgPropertiesAndEvents.ts';
|
|
8
32
|
import { roundTemplateLiteral } from '../util/round';
|
|
9
33
|
|
|
10
|
-
const getTrapezoidPath = (
|
|
34
|
+
const getTrapezoidPath = (
|
|
35
|
+
x: number,
|
|
36
|
+
y: number,
|
|
37
|
+
upperWidth: number,
|
|
38
|
+
lowerWidth: number,
|
|
39
|
+
height: number,
|
|
40
|
+
) => {
|
|
11
41
|
const widthGap = upperWidth - lowerWidth;
|
|
12
42
|
let path;
|
|
13
43
|
path = roundTemplateLiteral`M ${x},${y}`;
|
|
@@ -28,9 +58,9 @@ export const defaultTrapezoidProps = {
|
|
|
28
58
|
animationBegin: 0,
|
|
29
59
|
animationDuration: 1500,
|
|
30
60
|
animationEasing: 'ease',
|
|
31
|
-
}
|
|
61
|
+
} as const satisfies Partial<Props>;
|
|
32
62
|
|
|
33
|
-
export function Trapezoid(outsideProps) {
|
|
63
|
+
export function Trapezoid(outsideProps: Props) {
|
|
34
64
|
const trapezoidProps = resolveDefaultProps(outsideProps, defaultTrapezoidProps);
|
|
35
65
|
const { x, y, upperWidth, lowerWidth, height, className } = trapezoidProps;
|
|
36
66
|
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
import type { MutableRefObject, OctaneNode } from '../util/OctaneTypes.ts';
|
|
2
|
+
import type { Action, Store } from '@reduxjs/toolkit';
|
|
3
|
+
import type { RechartsRootState } from './store';
|
|
4
|
+
|
|
5
|
+
type RechartsStoreProviderProps = {
|
|
6
|
+
children: OctaneNode;
|
|
7
|
+
preloadedState?: Partial<RechartsRootState>;
|
|
8
|
+
reduxStoreName?: string;
|
|
9
|
+
};
|
|
1
10
|
// Port of state/RechartsStoreProvider.tsx — one isolated RTK store per chart,
|
|
2
11
|
// provided through the custom RechartsReduxContext (via @octanejs/redux's
|
|
3
12
|
// Provider). A PANORAMA chart (the Brush preview) renders NO provider and
|
|
@@ -8,12 +17,12 @@ import { createRechartsStore } from './store';
|
|
|
8
17
|
import { useIsPanorama } from '../context/PanoramaContext';
|
|
9
18
|
import { RechartsReduxContext } from './RechartsReduxContext';
|
|
10
19
|
|
|
11
|
-
export function RechartsStoreProvider(props) {
|
|
20
|
+
export function RechartsStoreProvider(props: RechartsStoreProviderProps) {
|
|
12
21
|
const { preloadedState, children, reduxStoreName } = props;
|
|
13
22
|
const isPanorama = useIsPanorama();
|
|
14
23
|
// One store per CHART (not per page): recharts supports multiple independent
|
|
15
24
|
// charts, so the store rides a ref, created on first render.
|
|
16
|
-
const storeRef = useRef(null);
|
|
25
|
+
const storeRef: MutableRefObject<Store<RechartsRootState, Action> | null> = useRef(null);
|
|
17
26
|
if (isPanorama) {
|
|
18
27
|
return children;
|
|
19
28
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// Port of state/ReportChartProps.tsx — publishes the chart root's props into
|
|
2
2
|
// the rootProps slice.
|
|
3
3
|
import { useEffect } from 'octane';
|
|
4
|
-
import { updateOptions } from './rootPropsSlice';
|
|
4
|
+
import { updateOptions, type UpdatableChartOptions } from './rootPropsSlice';
|
|
5
5
|
import { useAppDispatch } from './hooks';
|
|
6
6
|
|
|
7
|
-
export function ReportChartProps(props:
|
|
7
|
+
export function ReportChartProps(props: UpdatableChartOptions): null {
|
|
8
8
|
const dispatch = useAppDispatch();
|
|
9
9
|
useEffect(() => {
|
|
10
10
|
dispatch(updateOptions(props));
|
|
@@ -5,8 +5,9 @@ import { useIsPanorama } from '../context/PanoramaContext';
|
|
|
5
5
|
import { setLayout, setMargin } from './layoutSlice';
|
|
6
6
|
import { useAppDispatch } from './hooks';
|
|
7
7
|
import { propsAreEqual } from '../util/propsAreEqual';
|
|
8
|
+
import type { LayoutType, Margin } from '../util/types';
|
|
8
9
|
|
|
9
|
-
function ReportMainChartPropsImpl(props: { layout:
|
|
10
|
+
function ReportMainChartPropsImpl(props: { layout: LayoutType; margin: Partial<Margin> }): null {
|
|
10
11
|
const { layout, margin } = props;
|
|
11
12
|
const dispatch = useAppDispatch();
|
|
12
13
|
const isPanorama = useIsPanorama();
|
|
@@ -10,11 +10,13 @@ import {
|
|
|
10
10
|
removePolarGraphicalItem,
|
|
11
11
|
replaceCartesianGraphicalItem,
|
|
12
12
|
replacePolarGraphicalItem,
|
|
13
|
+
type CartesianGraphicalItemSettings,
|
|
14
|
+
type PolarGraphicalItemSettings,
|
|
13
15
|
} from './graphicalItemsSlice';
|
|
14
16
|
|
|
15
|
-
const SetCartesianGraphicalItemImpl = (props:
|
|
17
|
+
const SetCartesianGraphicalItemImpl = (props: CartesianGraphicalItemSettings): null => {
|
|
16
18
|
const dispatch = useAppDispatch();
|
|
17
|
-
const prevPropsRef = useRef<
|
|
19
|
+
const prevPropsRef = useRef<CartesianGraphicalItemSettings | null>(null);
|
|
18
20
|
useLayoutEffect(() => {
|
|
19
21
|
if (prevPropsRef.current === null) {
|
|
20
22
|
dispatch(addCartesianGraphicalItem(props));
|
|
@@ -36,9 +38,9 @@ const SetCartesianGraphicalItemImpl = (props: Record<string, unknown>): null =>
|
|
|
36
38
|
|
|
37
39
|
export const SetCartesianGraphicalItem = memo(SetCartesianGraphicalItemImpl);
|
|
38
40
|
|
|
39
|
-
const SetPolarGraphicalItemImpl = (props:
|
|
41
|
+
const SetPolarGraphicalItemImpl = (props: PolarGraphicalItemSettings): null => {
|
|
40
42
|
const dispatch = useAppDispatch();
|
|
41
|
-
const prevPropsRef = useRef<
|
|
43
|
+
const prevPropsRef = useRef<PolarGraphicalItemSettings | null>(null);
|
|
42
44
|
useLayoutEffect(() => {
|
|
43
45
|
if (prevPropsRef.current === null) {
|
|
44
46
|
dispatch(addPolarGraphicalItem(props));
|
|
@@ -5,12 +5,13 @@ import { useIsPanorama } from '../context/PanoramaContext';
|
|
|
5
5
|
import { selectChartLayout } from '../context/chartLayoutContext';
|
|
6
6
|
import { useAppDispatch, useAppSelector } from './hooks';
|
|
7
7
|
import { addLegendPayload, replaceLegendPayload, removeLegendPayload } from './legendSlice';
|
|
8
|
+
import type { LegendPayload } from '../component/DefaultLegendContent.tsrx';
|
|
8
9
|
|
|
9
|
-
export function SetLegendPayload(props: { legendPayload:
|
|
10
|
+
export function SetLegendPayload(props: { legendPayload: ReadonlyArray<LegendPayload> }): null {
|
|
10
11
|
const { legendPayload } = props;
|
|
11
12
|
const dispatch = useAppDispatch();
|
|
12
13
|
const isPanorama = useIsPanorama();
|
|
13
|
-
const prevPayloadRef = useRef<
|
|
14
|
+
const prevPayloadRef = useRef<ReadonlyArray<LegendPayload> | null>(null);
|
|
14
15
|
useLayoutEffect(() => {
|
|
15
16
|
if (isPanorama) {
|
|
16
17
|
return;
|
|
@@ -33,11 +34,13 @@ export function SetLegendPayload(props: { legendPayload: unknown }): null {
|
|
|
33
34
|
return null;
|
|
34
35
|
}
|
|
35
36
|
|
|
36
|
-
export function SetPolarLegendPayload(props: {
|
|
37
|
+
export function SetPolarLegendPayload(props: {
|
|
38
|
+
legendPayload: ReadonlyArray<LegendPayload>;
|
|
39
|
+
}): null {
|
|
37
40
|
const { legendPayload } = props;
|
|
38
41
|
const dispatch = useAppDispatch();
|
|
39
42
|
const layout = useAppSelector(selectChartLayout);
|
|
40
|
-
const prevPayloadRef = useRef<
|
|
43
|
+
const prevPayloadRef = useRef<ReadonlyArray<LegendPayload> | null>(null);
|
|
41
44
|
useLayoutEffect(() => {
|
|
42
45
|
if (layout !== 'centric' && layout !== 'radial') {
|
|
43
46
|
return;
|
|
@@ -6,14 +6,17 @@ import {
|
|
|
6
6
|
addTooltipEntrySettings,
|
|
7
7
|
removeTooltipEntrySettings,
|
|
8
8
|
replaceTooltipEntrySettings,
|
|
9
|
+
type TooltipPayloadConfiguration,
|
|
9
10
|
} from './tooltipSlice';
|
|
10
11
|
import { useIsPanorama } from '../context/PanoramaContext';
|
|
11
12
|
|
|
12
|
-
export function SetTooltipEntrySettings(props: {
|
|
13
|
+
export function SetTooltipEntrySettings(props: {
|
|
14
|
+
tooltipEntrySettings: TooltipPayloadConfiguration;
|
|
15
|
+
}): null {
|
|
13
16
|
const { tooltipEntrySettings } = props;
|
|
14
17
|
const dispatch = useAppDispatch();
|
|
15
18
|
const isPanorama = useIsPanorama();
|
|
16
|
-
const prevSettingsRef = useRef<
|
|
19
|
+
const prevSettingsRef = useRef<TooltipPayloadConfiguration | null>(null);
|
|
17
20
|
useLayoutEffect(() => {
|
|
18
21
|
if (isPanorama) {
|
|
19
22
|
// Panorama graphical items should never contribute to Tooltip payload.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
|
|
2
|
+
import { createSlice, PayloadAction } from '@reduxjs/toolkit';
|
|
3
|
+
import { Padding } from '../util/types';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* From all Brush properties, only height has a default value and will always be defined.
|
|
7
|
+
* Other properties are nullable and will be computed from offsets and margins if they are not set.
|
|
8
|
+
*/
|
|
9
|
+
export type BrushSettings = {
|
|
10
|
+
x: number | undefined;
|
|
11
|
+
y: number | undefined;
|
|
12
|
+
width: number | undefined;
|
|
13
|
+
height: number;
|
|
14
|
+
padding: Padding;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
const initialState: BrushSettings = {
|
|
18
|
+
x: 0,
|
|
19
|
+
y: 0,
|
|
20
|
+
width: 0,
|
|
21
|
+
height: 0,
|
|
22
|
+
padding: { top: 0, right: 0, bottom: 0, left: 0 },
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export const brushSlice = createSlice({
|
|
26
|
+
name: 'brush',
|
|
27
|
+
initialState,
|
|
28
|
+
reducers: {
|
|
29
|
+
setBrushSettings(_state: BrushSettings, action: PayloadAction<BrushSettings | null>) {
|
|
30
|
+
if (action.payload == null) {
|
|
31
|
+
return initialState;
|
|
32
|
+
}
|
|
33
|
+
return action.payload;
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
export const { setBrushSettings } = brushSlice.actions;
|
|
39
|
+
|
|
40
|
+
export const brushReducer = brushSlice.reducer;
|