@octanejs/recharts 0.1.41 → 0.1.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{LICENSE → LICENSE.recharts} +3 -2
- package/README.md +12 -0
- package/package.json +10 -9
- package/src/animation/AnimatedItems.tsrx +36 -3
- package/src/animation/AnimationController.ts +17 -65
- package/src/animation/{AnimationControllerImpl.js → AnimationControllerImpl.ts} +19 -12
- package/src/animation/{AnimationHandle.js → AnimationHandle.ts} +82 -65
- package/src/animation/CSSTransitionAnimate.tsrx +3 -2
- package/src/animation/JavascriptAnimate.tsrx +18 -2
- package/src/animation/easing.ts +235 -0
- package/src/animation/{matchBy.js → matchBy.ts} +76 -120
- package/src/animation/timeoutController.ts +71 -0
- package/src/animation/useAnimationController.ts +4 -1
- package/src/animation/useAnimationStartSnapshot.ts +3 -3
- package/src/animation/util.ts +12 -0
- package/src/cartesian/Area.tsrx +33 -31
- package/src/cartesian/AreaRevealShape.tsrx +4 -3
- package/src/cartesian/Bar.ts +1 -0
- package/src/cartesian/Bar.tsrx +293 -39
- package/src/cartesian/BarStack.tsrx +31 -9
- package/src/cartesian/CartesianAxis.tsrx +154 -22
- package/src/cartesian/CartesianGrid.tsrx +5 -6
- package/src/cartesian/ErrorBar.tsrx +9 -8
- package/src/cartesian/Funnel.tsrx +40 -37
- package/src/cartesian/GraphicalItemClipPath.tsrx +11 -4
- package/src/cartesian/Line.ts +1 -0
- package/src/cartesian/Line.tsrx +206 -28
- package/src/cartesian/LineDrawShape.tsrx +23 -10
- package/src/cartesian/ReferenceLine.tsrx +8 -8
- package/src/cartesian/Scatter.tsrx +61 -66
- package/src/cartesian/XAxis.tsrx +78 -9
- package/src/cartesian/YAxis.tsrx +85 -12
- package/src/cartesian/getCartesianPosition.ts +265 -0
- package/src/cartesian/getEquidistantTicks.ts +144 -0
- package/src/cartesian/getTicks.ts +221 -0
- package/src/chart/AreaChart.tsrx +5 -1
- package/src/chart/BarChart.tsrx +8 -2
- package/src/chart/CartesianChart.tsrx +17 -4
- package/src/chart/CategoricalChart.tsrx +4 -1
- package/src/chart/ComposedChart.tsrx +5 -1
- package/src/chart/FunnelChart.tsrx +5 -1
- package/src/chart/LineChart.tsrx +8 -2
- package/src/chart/PieChart.tsrx +6 -2
- package/src/chart/PolarChart.tsrx +5 -4
- package/src/chart/RadarChart.tsrx +6 -2
- package/src/chart/RadialBarChart.tsrx +6 -2
- package/src/chart/RechartsWrapper.tsrx +57 -21
- package/src/chart/Sankey.tsrx +89 -91
- package/src/chart/ScatterChart.tsrx +5 -1
- package/src/chart/SunburstChart.tsrx +21 -14
- package/src/chart/types.ts +0 -1
- package/src/component/ActivePoints.tsrx +30 -5
- package/src/component/Cell.ts +19 -1
- package/src/component/Cursor.tsrx +11 -10
- package/src/component/DefaultLegendContent.tsrx +15 -10
- package/src/component/DefaultTooltipContent.tsrx +11 -9
- package/src/component/Dots.tsrx +37 -6
- package/src/component/Label.tsrx +99 -19
- package/src/component/LabelList.tsrx +54 -5
- package/src/component/Legend.tsrx +9 -5
- package/src/component/ResponsiveContainer.tsrx +13 -10
- package/src/component/Text.tsrx +95 -32
- package/src/component/Tooltip.tsrx +11 -10
- package/src/component/TooltipBoundingBox.tsrx +4 -5
- package/src/component/{responsiveContainerUtils.js → responsiveContainerUtils.ts} +59 -36
- package/src/container/ClipPathProvider.tsrx +6 -2
- package/src/container/Layer.tsrx +8 -1
- package/src/container/RootSurface.tsrx +15 -4
- package/src/container/Surface.tsrx +15 -1
- package/src/context/CellsContext.ts +6 -5
- package/src/context/ErrorBarContext.tsrx +23 -4
- package/src/context/RegisterGraphicalItemId.tsrx +10 -2
- package/src/context/accessibilityContext.ts +5 -0
- package/src/context/brushUpdateContext.ts +11 -0
- package/src/context/chartDataContext.ts +5 -4
- package/src/context/chartLayoutContext.ts +22 -8
- package/src/context/legendPayloadContext.tsrx +1 -1
- package/src/context/tooltipContext.ts +83 -0
- package/src/{hooks.js → hooks.ts} +88 -66
- package/src/index.ts +37 -37
- package/src/legacy-props.ts +129 -0
- package/src/polar/Pie.tsrx +91 -69
- package/src/polar/PolarAngleAxis.tsrx +47 -47
- package/src/polar/PolarGrid.tsrx +7 -6
- package/src/polar/PolarRadiusAxis.tsrx +29 -21
- package/src/polar/Radar.tsrx +26 -19
- package/src/polar/RadialBar.tsrx +59 -42
- package/src/polar/{defaultPolarAngleAxisProps.js → defaultPolarAngleAxisProps.ts} +6 -6
- package/src/polar/{defaultPolarRadiusAxisProps.js → defaultPolarRadiusAxisProps.ts} +5 -4
- package/src/shape/Cross.tsrx +14 -2
- package/src/shape/Curve.tsrx +111 -23
- package/src/shape/Dot.tsrx +12 -1
- package/src/shape/Polygon.tsrx +28 -6
- package/src/shape/Rectangle.tsrx +30 -3
- package/src/shape/Sector.tsrx +48 -6
- package/src/shape/Symbols.tsrx +24 -6
- package/src/shape/Trapezoid.tsrx +33 -3
- package/src/state/RechartsStoreProvider.tsrx +11 -2
- package/src/state/ReportChartProps.ts +2 -2
- package/src/state/ReportMainChartProps.ts +2 -1
- package/src/state/SetGraphicalItem.ts +6 -4
- package/src/state/SetLegendPayload.ts +7 -4
- package/src/state/SetTooltipEntrySettings.ts +5 -2
- package/src/state/brushSlice.ts +40 -0
- package/src/state/cartesianAxisSlice.ts +291 -0
- package/src/state/chartDataSlice.ts +87 -0
- package/src/state/errorBarSlice.ts +78 -0
- package/src/state/eventSettingsSlice.ts +30 -0
- package/src/state/{externalEventsMiddleware.js → externalEventsMiddleware.ts} +55 -34
- package/src/state/graphicalItemsSlice.ts +180 -0
- package/src/state/{keyboardEventsMiddleware.js → keyboardEventsMiddleware.ts} +72 -57
- package/src/state/layoutSlice.ts +50 -0
- package/src/state/legendSlice.ts +109 -0
- package/src/state/{mouseEventsMiddleware.js → mouseEventsMiddleware.ts} +45 -35
- package/src/state/optionsSlice.ts +65 -0
- package/src/state/polarAxisSlice.ts +42 -0
- package/src/state/polarOptionsSlice.ts +43 -0
- package/src/state/reduxDevtoolsJsonStringifyReplacer.ts +13 -0
- package/src/state/referenceElementsSlice.ts +100 -0
- package/src/state/renderedTicksSlice.ts +60 -0
- package/src/state/rootPropsSlice.ts +72 -0
- package/src/state/selectors/areaSelectors.ts +1 -2
- package/src/state/selectors/{arrayEqualityCheck.js → arrayEqualityCheck.ts} +4 -5
- package/src/state/selectors/axisSelectors.ts +2502 -0
- package/src/state/selectors/barSelectors.ts +373 -0
- package/src/state/selectors/barStackSelectors.ts +99 -0
- package/src/state/selectors/brushSelectors.ts +28 -0
- package/src/state/selectors/combiners/combineActiveLabel.ts +16 -0
- package/src/state/selectors/combiners/{combineActiveTooltipIndex.js → combineActiveTooltipIndex.ts} +45 -23
- package/src/state/selectors/combiners/combineAllBarPositions.ts +130 -0
- package/src/state/selectors/combiners/combineAxisRangeWithReverse.ts +16 -0
- package/src/state/selectors/combiners/combineBarPosition.ts +23 -0
- package/src/state/selectors/combiners/combineBarSizeList.ts +79 -0
- package/src/state/selectors/combiners/{combineCheckedDomain.js → combineCheckedDomain.ts} +9 -6
- package/src/state/selectors/combiners/combineConfiguredScale.ts +100 -0
- package/src/state/selectors/combiners/combineCoordinateForDefaultIndex.ts +46 -0
- package/src/state/selectors/combiners/{combineDisplayedStackedData.js → combineDisplayedStackedData.ts} +23 -19
- package/src/state/selectors/combiners/combineInverseScaleFunction.ts +16 -0
- package/src/state/selectors/combiners/{combineRealScaleType.js → combineRealScaleType.ts} +16 -8
- package/src/state/selectors/combiners/combineStackedData.ts +27 -0
- package/src/state/selectors/combiners/combineTooltipInteractionState.ts +86 -0
- package/src/state/selectors/combiners/combineTooltipPayload.ts +201 -0
- package/src/state/selectors/combiners/{combineTooltipPayloadConfigurations.js → combineTooltipPayloadConfigurations.ts} +17 -18
- package/src/state/selectors/containerSelectors.ts +12 -0
- package/src/state/selectors/{dataSelectors.js → dataSelectors.ts} +43 -41
- package/src/state/selectors/funnelSelectors.ts +5 -5
- package/src/state/selectors/graphicalItemSelectors.ts +22 -0
- package/src/state/selectors/legendSelectors.ts +25 -0
- package/src/state/selectors/lineSelectors.ts +159 -0
- package/src/state/selectors/numberDomainEqualityCheck.ts +15 -0
- package/src/state/selectors/pickAxisId.ts +6 -0
- package/src/state/selectors/pickAxisType.ts +4 -0
- package/src/state/selectors/pieSelectors.ts +14 -13
- package/src/state/selectors/polarAxisSelectors.ts +223 -0
- package/src/state/selectors/polarSelectors.ts +1 -1
- package/src/state/selectors/radarSelectors.ts +1 -1
- package/src/state/selectors/radialBarSelectors.ts +17 -16
- package/src/state/selectors/rootPropsSelectors.ts +26 -0
- package/src/state/selectors/scatterSelectors.ts +11 -10
- package/src/state/selectors/{selectActivePropsFromChartPointer.js → selectActivePropsFromChartPointer.ts} +11 -4
- package/src/state/selectors/selectAllAxes.ts +20 -0
- package/src/state/selectors/selectChartOffset.ts +17 -0
- package/src/state/selectors/selectChartOffsetInternal.ts +147 -0
- package/src/state/selectors/{selectPlotArea.js → selectPlotArea.ts} +4 -3
- package/src/state/selectors/selectTooltipAxisId.ts +6 -0
- package/src/state/selectors/{selectTooltipAxisType.js → selectTooltipAxisType.ts} +10 -4
- package/src/state/selectors/selectTooltipEventType.ts +39 -0
- package/src/state/selectors/selectTooltipPayloadSearcher.ts +6 -0
- package/src/state/selectors/selectTooltipSettings.ts +6 -0
- package/src/state/selectors/selectTooltipState.ts +5 -0
- package/src/state/selectors/selectors.ts +315 -0
- package/src/state/selectors/tooltipSelectors.ts +611 -0
- package/src/state/selectors/touchSelectors.ts +52 -0
- package/src/state/{store.js → store.ts} +46 -36
- package/src/state/tooltipSlice.ts +507 -0
- package/src/state/{touchEventsMiddleware.js → touchEventsMiddleware.ts} +54 -42
- package/src/state/types/AreaSettings.ts +15 -0
- package/src/state/types/BarSettings.ts +15 -0
- package/src/state/types/LineSettings.ts +10 -0
- package/src/state/types/PieSettings.ts +32 -0
- package/src/state/types/RadarSettings.ts +6 -0
- package/src/state/types/RadialBarSettings.ts +10 -0
- package/src/state/types/ScatterSettings.ts +13 -0
- package/src/state/types/StackedGraphicalItem.ts +34 -0
- package/src/state/zIndexSlice.ts +137 -0
- package/src/synchronisation/syncSelectors.ts +7 -0
- package/src/synchronisation/types.ts +42 -0
- package/src/synchronisation/useChartSynchronisation.tsrx +26 -11
- package/src/types.ts +55 -0
- package/src/util/ActiveShapeUtils.tsrx +34 -10
- package/src/util/BarUtils.tsrx +43 -3
- package/src/util/{CartesianUtils.js → CartesianUtils.ts} +22 -39
- package/src/util/ChartUtils.ts +759 -0
- package/src/util/{Constants.js → Constants.ts} +6 -6
- package/src/util/DOMUtils.ts +135 -0
- package/src/util/{DataUtils.js → DataUtils.ts} +120 -47
- package/src/util/Events.ts +22 -0
- package/src/util/FunnelUtils.tsrx +3 -3
- package/src/util/Global.ts +13 -0
- package/src/util/IfOverflow.ts +16 -0
- package/src/util/LRUCache.ts +42 -0
- package/src/util/{LogUtils.js → LogUtils.ts} +7 -12
- package/src/util/OctaneTypes.ts +51 -0
- package/src/util/PolarUtils.ts +132 -0
- package/src/util/RadialBarUtils.tsrx +3 -3
- package/src/util/ReduceCSSCalc.ts +186 -0
- package/src/util/ScatterUtils.tsrx +9 -7
- package/src/util/{TickUtils.js → TickUtils.ts} +30 -13
- package/src/util/{YAxisUtils.js → YAxisUtils.ts} +27 -17
- package/src/util/axisPropsAreEqual.ts +49 -0
- package/src/util/createEventProxy.ts +20 -0
- package/src/util/{excludeEventProps.js → excludeEventProps.ts} +8 -6
- package/src/util/getActiveCoordinate.ts +210 -0
- package/src/util/{getAxisTypeBasedOnLayout.js → getAxisTypeBasedOnLayout.ts} +7 -3
- package/src/util/getClassNameFromUnknown.ts +7 -0
- package/src/util/{getEveryNth.js → getEveryNth.ts} +5 -6
- package/src/util/getRadiusAndStrokeWidthFromDot.ts +31 -0
- package/src/util/{getRelativeCoordinate.js → getRelativeCoordinate.ts} +26 -9
- package/src/util/getSliced.ts +14 -0
- package/src/util/{isDomainSpecifiedByUser.js → isDomainSpecifiedByUser.ts} +46 -100
- package/src/util/isWellBehavedNumber.ts +8 -0
- package/src/util/payload/getUniqPayload.ts +1 -1
- package/src/util/{propsAreEqual.js → propsAreEqual.ts} +10 -8
- package/src/util/{resolveDefaultProps.js → resolveDefaultProps.ts} +35 -57
- package/src/util/round.ts +33 -0
- package/src/util/scale/CustomScaleDefinition.ts +82 -0
- package/src/util/scale/RechartsScale.ts +131 -0
- package/src/util/scale/{createCategoricalInverse.js → createCategoricalInverse.ts} +24 -29
- package/src/util/scale/{getNiceTickValues.js → getNiceTickValues.ts} +125 -146
- package/src/util/scale/index.ts +2 -0
- package/src/util/scale/util/{arithmetic.js → arithmetic.ts} +12 -8
- package/src/util/stacks/getStackSeriesIdentifier.ts +21 -0
- package/src/util/stacks/stackTypes.ts +58 -0
- package/src/util/{svgPropertiesNoEvents.js → svgPropertiesNoEvents.ts} +52 -27
- package/src/util/tooltip/translate.ts +2 -1
- package/src/util/typedDataKey.ts +49 -0
- package/src/util/types.ts +1265 -7
- package/src/util/{useUniqueId.js → useUniqueId.ts} +9 -5
- package/src/zIndex/{DefaultZIndexes.js → DefaultZIndexes.ts} +13 -4
- package/src/zIndex/ZIndexLayer.tsrx +13 -4
- package/src/zIndex/ZIndexPortal.tsrx +14 -4
- package/src/zIndex/{getZIndexFromUnknown.js → getZIndexFromUnknown.ts} +3 -3
- package/src/zIndex/{zIndexSelectors.js → zIndexSelectors.ts} +17 -11
- package/src/animation/easing.js +0 -193
- package/src/animation/timeoutController.js +0 -49
- package/src/animation/util.js +0 -11
- package/src/cartesian/Area.tsrx.d.ts +0 -340
- package/src/cartesian/Bar.tsrx.d.ts +0 -4
- package/src/cartesian/BarStack.tsrx.d.ts +0 -6
- package/src/cartesian/CartesianAxis.tsrx.d.ts +0 -3
- package/src/cartesian/CartesianGrid.tsrx.d.ts +0 -219
- package/src/cartesian/ErrorBar.tsrx.d.ts +0 -131
- package/src/cartesian/Funnel.tsrx.d.ts +0 -274
- package/src/cartesian/Line.tsrx.d.ts +0 -4
- package/src/cartesian/LineDrawShape.tsrx.d.ts +0 -2
- package/src/cartesian/ReferenceLine.tsrx.d.ts +0 -178
- package/src/cartesian/Scatter.tsrx.d.ts +0 -351
- package/src/cartesian/XAxis.tsrx.d.ts +0 -3
- package/src/cartesian/YAxis.tsrx.d.ts +0 -3
- package/src/cartesian/ZAxis.tsrx.d.ts +0 -102
- package/src/cartesian/getCartesianPosition.js +0 -277
- package/src/cartesian/getEquidistantTicks.js +0 -133
- package/src/cartesian/getTicks.js +0 -280
- package/src/chart/AreaChart.tsrx.d.ts +0 -12
- package/src/chart/BarChart.tsrx.d.ts +0 -2
- package/src/chart/CartesianChart.tsrx.d.ts +0 -10
- package/src/chart/ComposedChart.tsrx.d.ts +0 -12
- package/src/chart/FunnelChart.tsrx.d.ts +0 -12
- package/src/chart/LineChart.tsrx.d.ts +0 -2
- package/src/chart/PieChart.tsrx.d.ts +0 -31
- package/src/chart/RadarChart.tsrx.d.ts +0 -31
- package/src/chart/RadialBarChart.tsrx.d.ts +0 -31
- package/src/chart/Sankey.tsrx.d.ts +0 -253
- package/src/chart/ScatterChart.tsrx.d.ts +0 -12
- package/src/chart/SunburstChart.tsrx.d.ts +0 -146
- package/src/component/DefaultLegendContent.tsrx.d.ts +0 -125
- package/src/component/DefaultTooltipContent.tsrx.d.ts +0 -87
- package/src/component/Label.tsrx.d.ts +0 -12
- package/src/component/LabelList.tsrx.d.ts +0 -8
- package/src/component/Legend.tsrx.d.ts +0 -88
- package/src/component/ResponsiveContainer.tsrx.d.ts +0 -81
- package/src/component/Text.tsrx.d.ts +0 -9
- package/src/component/Tooltip.tsrx.d.ts +0 -246
- package/src/container/Layer.tsrx.d.ts +0 -6
- package/src/container/Surface.tsrx.d.ts +0 -12
- package/src/context/accessibilityContext.js +0 -10
- package/src/context/tooltipContext.js +0 -55
- package/src/index.d.ts +0 -281
- package/src/polar/Pie.tsrx.d.ts +0 -436
- package/src/polar/PolarAngleAxis.tsrx.d.ts +0 -215
- package/src/polar/PolarGrid.tsrx.d.ts +0 -117
- package/src/polar/PolarRadiusAxis.tsrx.d.ts +0 -209
- package/src/polar/Radar.tsrx.d.ts +0 -215
- package/src/polar/RadialBar.tsrx.d.ts +0 -340
- package/src/shape/Cross.tsrx.d.ts +0 -12
- package/src/shape/Curve.tsrx.d.ts +0 -42
- package/src/shape/Dot.tsrx.d.ts +0 -9
- package/src/shape/Polygon.tsrx.d.ts +0 -13
- package/src/shape/Rectangle.tsrx.d.ts +0 -31
- package/src/shape/Sector.tsrx.d.ts +0 -29
- package/src/shape/Symbols.tsrx.d.ts +0 -15
- package/src/shape/Trapezoid.tsrx.d.ts +0 -29
- package/src/state/brushSlice.js +0 -36
- package/src/state/cartesianAxisSlice.js +0 -256
- package/src/state/chartDataSlice.js +0 -67
- package/src/state/errorBarSlice.js +0 -53
- package/src/state/eventSettingsSlice.js +0 -25
- package/src/state/graphicalItemsSlice.js +0 -91
- package/src/state/layoutSlice.js +0 -57
- package/src/state/legendSlice.js +0 -83
- package/src/state/optionsSlice.js +0 -45
- package/src/state/polarAxisSlice.js +0 -33
- package/src/state/polarOptionsSlice.js +0 -26
- package/src/state/reduxDevtoolsJsonStringifyReplacer.js +0 -14
- package/src/state/referenceElementsSlice.js +0 -51
- package/src/state/renderedTicksSlice.js +0 -41
- package/src/state/rootPropsSlice.js +0 -48
- package/src/state/selectors/axisSelectors.js +0 -2113
- package/src/state/selectors/barSelectors.js +0 -263
- package/src/state/selectors/barStackSelectors.js +0 -65
- package/src/state/selectors/brushSelectors.js +0 -21
- package/src/state/selectors/combiners/combineActiveLabel.js +0 -18
- package/src/state/selectors/combiners/combineAllBarPositions.js +0 -169
- package/src/state/selectors/combiners/combineAxisRangeWithReverse.js +0 -11
- package/src/state/selectors/combiners/combineBarPosition.js +0 -17
- package/src/state/selectors/combiners/combineBarSizeList.js +0 -115
- package/src/state/selectors/combiners/combineConfiguredScale.js +0 -46
- package/src/state/selectors/combiners/combineCoordinateForDefaultIndex.js +0 -48
- package/src/state/selectors/combiners/combineInverseScaleFunction.js +0 -12
- package/src/state/selectors/combiners/combineStackedData.js +0 -22
- package/src/state/selectors/combiners/combineTooltipInteractionState.js +0 -121
- package/src/state/selectors/combiners/combineTooltipPayload.js +0 -248
- package/src/state/selectors/containerSelectors.js +0 -6
- package/src/state/selectors/graphicalItemSelectors.js +0 -25
- package/src/state/selectors/legendSelectors.js +0 -18
- package/src/state/selectors/lineSelectors.js +0 -106
- package/src/state/selectors/numberDomainEqualityCheck.js +0 -11
- package/src/state/selectors/pickAxisId.js +0 -3
- package/src/state/selectors/pickAxisType.js +0 -3
- package/src/state/selectors/polarAxisSelectors.js +0 -237
- package/src/state/selectors/rootPropsSelectors.js +0 -13
- package/src/state/selectors/selectAllAxes.js +0 -15
- package/src/state/selectors/selectChartOffset.js +0 -12
- package/src/state/selectors/selectChartOffsetInternal.js +0 -174
- package/src/state/selectors/selectTooltipAxisId.js +0 -3
- package/src/state/selectors/selectTooltipEventType.js +0 -27
- package/src/state/selectors/selectTooltipPayloadSearcher.js +0 -3
- package/src/state/selectors/selectTooltipSettings.js +0 -3
- package/src/state/selectors/selectTooltipState.js +0 -3
- package/src/state/selectors/selectors.js +0 -222
- package/src/state/selectors/tooltipSelectors.js +0 -471
- package/src/state/selectors/touchSelectors.js +0 -31
- package/src/state/tooltipSlice.js +0 -237
- package/src/state/types/StackedGraphicalItem.js +0 -18
- package/src/state/zIndexSlice.js +0 -167
- package/src/synchronisation/syncSelectors.js +0 -5
- package/src/util/ChartUtils.js +0 -630
- package/src/util/DOMUtils.js +0 -180
- package/src/util/Events.js +0 -7
- package/src/util/Global.js +0 -13
- package/src/util/LRUCache.js +0 -58
- package/src/util/PolarUtils.js +0 -190
- package/src/util/ReduceCSSCalc.js +0 -260
- package/src/util/axisPropsAreEqual.js +0 -63
- package/src/util/createEventProxy.js +0 -18
- package/src/util/getActiveCoordinate.js +0 -253
- package/src/util/getClassNameFromUnknown.js +0 -8
- package/src/util/getRadiusAndStrokeWidthFromDot.js +0 -28
- package/src/util/getSliced.js +0 -11
- package/src/util/isWellBehavedNumber.js +0 -8
- package/src/util/round.js +0 -39
- package/src/util/scale/RechartsScale.js +0 -68
- package/src/util/scale/index.js +0 -3
- package/src/util/stacks/getStackSeriesIdentifier.js +0 -10
- package/src/zIndex/ZIndexLayer.tsrx.d.ts +0 -2
|
@@ -1,16 +1,25 @@
|
|
|
1
|
+
import type { RegisteredCell } from '../context/CellsContext.ts';
|
|
2
|
+
import type { CellPropsFor } from '../component/Cell.ts';
|
|
3
|
+
|
|
4
|
+
import type {
|
|
5
|
+
MutableRefObject,
|
|
6
|
+
NativeMouseEvent,
|
|
7
|
+
OctaneElement,
|
|
8
|
+
OctaneNode,
|
|
9
|
+
} from '../util/OctaneTypes.ts';
|
|
1
10
|
import * as React from 'octane';
|
|
2
|
-
import {
|
|
11
|
+
import { useMemo, useRef } from 'octane';
|
|
3
12
|
|
|
4
13
|
import { clsx } from 'clsx';
|
|
5
|
-
import { Layer } from '../container/Layer';
|
|
14
|
+
import { Layer } from '../container/Layer.tsrx';
|
|
6
15
|
import {
|
|
7
16
|
CartesianLabelListContextProvider,
|
|
8
17
|
CartesianLabelListEntry,
|
|
9
18
|
ImplicitLabelListType,
|
|
10
19
|
LabelListFromLabelProp,
|
|
11
|
-
} from '../component/LabelList';
|
|
12
|
-
import { Curve, CurveType, Props as CurveProps } from '../shape/Curve';
|
|
13
|
-
import { ErrorBarDataItem, ErrorBarDataPointFormatter, ErrorBarDirection } from './ErrorBar';
|
|
20
|
+
} from '../component/LabelList.tsrx';
|
|
21
|
+
import { Curve, CurveType, Props as CurveProps } from '../shape/Curve.tsrx';
|
|
22
|
+
import { ErrorBarDataItem, ErrorBarDataPointFormatter, ErrorBarDirection } from './ErrorBar.tsrx';
|
|
14
23
|
import { getLinearRegression, interpolate, isNullish } from '../util/DataUtils';
|
|
15
24
|
import { getCateCoordinateOfLine, getTooltipNameProp, getValueByDataKey } from '../util/ChartUtils';
|
|
16
25
|
import {
|
|
@@ -33,10 +42,10 @@ import {
|
|
|
33
42
|
TrapezoidViewBox,
|
|
34
43
|
CartesianLayout,
|
|
35
44
|
} from '../util/types';
|
|
36
|
-
import { Formatter, TooltipType } from '../component/DefaultTooltipContent';
|
|
37
|
-
import { ScatterShapeProps, ScatterSymbol } from '../util/ScatterUtils';
|
|
38
|
-
import { InnerSymbolsProp } from '../shape/Symbols';
|
|
39
|
-
import type { LegendPayload } from '../component/DefaultLegendContent';
|
|
45
|
+
import { Formatter, TooltipType } from '../component/DefaultTooltipContent.tsrx';
|
|
46
|
+
import { ScatterShapeProps, ScatterSymbol } from '../util/ScatterUtils.tsrx';
|
|
47
|
+
import { InnerSymbolsProp } from '../shape/Symbols.tsrx';
|
|
48
|
+
import type { LegendPayload } from '../component/DefaultLegendContent.tsrx';
|
|
40
49
|
import {
|
|
41
50
|
useMouseClickItemDispatch,
|
|
42
51
|
useMouseEnterItemDispatch,
|
|
@@ -48,9 +57,9 @@ import {
|
|
|
48
57
|
TooltipPayloadEntry,
|
|
49
58
|
} from '../state/tooltipSlice';
|
|
50
59
|
import { SetTooltipEntrySettings } from '../state/SetTooltipEntrySettings';
|
|
51
|
-
import { SetErrorBarContext } from '../context/ErrorBarContext';
|
|
60
|
+
import { SetErrorBarContext } from '../context/ErrorBarContext.tsrx';
|
|
52
61
|
import { AxisId } from '../state/cartesianAxisSlice';
|
|
53
|
-
import { GraphicalItemClipPath, useNeedsClip } from './GraphicalItemClipPath';
|
|
62
|
+
import { GraphicalItemClipPath, useNeedsClip } from './GraphicalItemClipPath.tsrx';
|
|
54
63
|
import { selectScatterPoints } from '../state/selectors/scatterSelectors';
|
|
55
64
|
import { useAppSelector } from '../state/hooks';
|
|
56
65
|
import { RechartsRootState } from '../state/store';
|
|
@@ -60,7 +69,7 @@ import { selectActiveTooltipIndex } from '../state/selectors/tooltipSelectors';
|
|
|
60
69
|
import { SetLegendPayload } from '../state/SetLegendPayload';
|
|
61
70
|
import { DATA_ITEM_GRAPHICAL_ITEM_ID_ATTRIBUTE_NAME } from '../util/Constants';
|
|
62
71
|
import { resolveDefaultProps } from '../util/resolveDefaultProps';
|
|
63
|
-
import { RegisterGraphicalItemId } from '../context/RegisterGraphicalItemId';
|
|
72
|
+
import { RegisterGraphicalItemId } from '../context/RegisterGraphicalItemId.tsrx';
|
|
64
73
|
import type { ScatterSettings } from '../state/types/ScatterSettings';
|
|
65
74
|
import { SetCartesianGraphicalItem } from '../state/SetGraphicalItem';
|
|
66
75
|
import {
|
|
@@ -72,11 +81,11 @@ import {
|
|
|
72
81
|
AnimatedItems,
|
|
73
82
|
AnimationInterpolateFn,
|
|
74
83
|
useAnimationCallbacks,
|
|
75
|
-
} from '../animation/AnimatedItems';
|
|
84
|
+
} from '../animation/AnimatedItems.tsrx';
|
|
76
85
|
import { AnimationMatchByProp, matchAppend } from '../animation/matchBy';
|
|
77
86
|
import { WithIdRequired, WithoutId } from '../util/useUniqueId';
|
|
78
87
|
import { GraphicalItemId } from '../state/graphicalItemsSlice';
|
|
79
|
-
import { ZIndexable, ZIndexLayer } from '../zIndex/ZIndexLayer';
|
|
88
|
+
import { ZIndexable, ZIndexLayer } from '../zIndex/ZIndexLayer.tsrx';
|
|
80
89
|
import { DefaultZIndexes } from '../zIndex/DefaultZIndexes';
|
|
81
90
|
import { propsAreEqual } from '../util/propsAreEqual';
|
|
82
91
|
import { ChartData } from '../state/chartDataSlice';
|
|
@@ -99,11 +108,11 @@ export interface ScatterPointItem {
|
|
|
99
108
|
/**
|
|
100
109
|
* The x coordinate of the point center in pixels.
|
|
101
110
|
*/
|
|
102
|
-
cx: number | undefined;
|
|
111
|
+
cx: number | null | undefined;
|
|
103
112
|
/**
|
|
104
113
|
* The y coordinate of the point center in pixels.
|
|
105
114
|
*/
|
|
106
|
-
cy: number | undefined;
|
|
115
|
+
cy: number | null | undefined;
|
|
107
116
|
/**
|
|
108
117
|
* The x coordinate (in pixels) of the top-left corner of the rectangle that wraps the point.
|
|
109
118
|
*/
|
|
@@ -117,7 +126,7 @@ export interface ScatterPointItem {
|
|
|
117
126
|
* It's not the radius itself, but rather a value that is used to calculate the radius.
|
|
118
127
|
* Interacts with the zAxis range.
|
|
119
128
|
*/
|
|
120
|
-
size: number;
|
|
129
|
+
size: number | undefined;
|
|
121
130
|
/**
|
|
122
131
|
* Width of the point in pixels.
|
|
123
132
|
*/
|
|
@@ -129,11 +138,12 @@ export interface ScatterPointItem {
|
|
|
129
138
|
node: ScatterPointNode;
|
|
130
139
|
payload?: any;
|
|
131
140
|
tooltipPayload?: TooltipPayload;
|
|
132
|
-
tooltipPosition: Coordinate;
|
|
141
|
+
tooltipPosition: Coordinate | undefined;
|
|
133
142
|
}
|
|
134
143
|
|
|
135
144
|
export type ScatterCustomizedShape =
|
|
136
|
-
ActiveShape<ScatterShapeProps & InnerSymbolsProp, SVGPathElement>
|
|
145
|
+
| ActiveShape<ScatterShapeProps & Omit<InnerSymbolsProp, keyof ScatterShapeProps>, SVGPathElement>
|
|
146
|
+
| SymbolType;
|
|
137
147
|
|
|
138
148
|
/**
|
|
139
149
|
* Internal props, combination of external props + defaultProps + private Recharts state
|
|
@@ -144,10 +154,7 @@ interface ScatterInternalProps extends ZIndexable {
|
|
|
144
154
|
yAxisId: string | number;
|
|
145
155
|
zAxisId: string | number;
|
|
146
156
|
dataKey?: DataKey<any>;
|
|
147
|
-
line?: |
|
|
148
|
-
| ((props: any) => ReactElement<SVGElement>)
|
|
149
|
-
| CurveProps
|
|
150
|
-
| boolean;
|
|
157
|
+
line?: OctaneElement<CurveProps> | ((props: CurveProps) => OctaneNode) | CurveProps | boolean;
|
|
151
158
|
lineType: 'fitting' | 'joint';
|
|
152
159
|
lineJointType: CurveType;
|
|
153
160
|
legendType: LegendType;
|
|
@@ -170,7 +177,7 @@ interface ScatterInternalProps extends ZIndexable {
|
|
|
170
177
|
onAnimationEnd?: () => void;
|
|
171
178
|
needClip: boolean;
|
|
172
179
|
id: GraphicalItemId;
|
|
173
|
-
children?:
|
|
180
|
+
children?: OctaneNode;
|
|
174
181
|
}
|
|
175
182
|
|
|
176
183
|
/**
|
|
@@ -211,7 +218,7 @@ interface ScatterProps<DataPointType = any, DataValueType = any> extends DataPro
|
|
|
211
218
|
* Options:
|
|
212
219
|
* - `false`: no line is drawn.
|
|
213
220
|
* - `true`: a default line is drawn.
|
|
214
|
-
* - `
|
|
221
|
+
* - `OctaneElement`: the option is the custom line element.
|
|
215
222
|
* - `function`: the function will be called to render customized line.
|
|
216
223
|
* - `object`: the option is the props of Curve element.
|
|
217
224
|
*
|
|
@@ -224,10 +231,7 @@ interface ScatterProps<DataPointType = any, DataValueType = any> extends DataPro
|
|
|
224
231
|
*
|
|
225
232
|
* @see {@link https://recharts.github.io/en-US/examples/JointLineScatterChart/ Scatter chart with joint line}
|
|
226
233
|
*/
|
|
227
|
-
line?: |
|
|
228
|
-
| ((props: any) => ReactElement<SVGElement>)
|
|
229
|
-
| CurveProps
|
|
230
|
-
| boolean;
|
|
234
|
+
line?: OctaneElement<CurveProps> | ((props: CurveProps) => OctaneNode) | CurveProps | boolean;
|
|
231
235
|
/**
|
|
232
236
|
* Determines calculation method of the line if the `line` prop is set.
|
|
233
237
|
* Options:
|
|
@@ -283,7 +287,7 @@ interface ScatterProps<DataPointType = any, DataValueType = any> extends DataPro
|
|
|
283
287
|
/**
|
|
284
288
|
* Determines the shape of individual data points.
|
|
285
289
|
* - Can be one of the predefined shapes as a string, which will be passed to {@link Symbols} component.
|
|
286
|
-
* - If set a
|
|
290
|
+
* - If set a OctaneElement, the shape of point can be customized.
|
|
287
291
|
* - If set a function, the function will be called to render customized shape.
|
|
288
292
|
* - During animations, the function shape also receives `animationElapsedTime`, `isAnimating`, and `isEntrance`.
|
|
289
293
|
* @defaultValue circle
|
|
@@ -310,7 +314,7 @@ interface ScatterProps<DataPointType = any, DataValueType = any> extends DataPro
|
|
|
310
314
|
* - `true`: renders default labels;
|
|
311
315
|
* - `false`: no labels are rendered;
|
|
312
316
|
* - `object`: the props of LabelList component;
|
|
313
|
-
* - `
|
|
317
|
+
* - `OctaneElement`: a custom SVG label element, such as `<text>` or `<g>`.
|
|
314
318
|
* HTML elements such as `<div>` are not valid inside the chart SVG and may trigger React DOM warnings.
|
|
315
319
|
* - `function`: a render function of custom label.
|
|
316
320
|
*
|
|
@@ -389,7 +393,7 @@ interface ScatterProps<DataPointType = any, DataValueType = any> extends DataPro
|
|
|
389
393
|
* @see {@link https://recharts.github.io/en-US/guide/zIndex/ Z-Index and layers guide}
|
|
390
394
|
*/
|
|
391
395
|
zIndex?: number;
|
|
392
|
-
children?:
|
|
396
|
+
children?: OctaneNode;
|
|
393
397
|
}
|
|
394
398
|
|
|
395
399
|
/**
|
|
@@ -488,7 +492,7 @@ function ScatterLine({
|
|
|
488
492
|
|
|
489
493
|
const scatterProps = svgPropertiesNoEvents(props);
|
|
490
494
|
const customLineProps = svgPropertiesNoEventsFromUnknown(line);
|
|
491
|
-
let linePoints: ReadonlyArray<NullableCoordinate
|
|
495
|
+
let linePoints: ReadonlyArray<NullableCoordinate> | undefined, lineItem: OctaneNode;
|
|
492
496
|
|
|
493
497
|
if (lineType === 'joint') {
|
|
494
498
|
linePoints = points.map((entry) => ({ x: entry.cx ?? null, y: entry.cy ?? null }));
|
|
@@ -503,17 +507,14 @@ function ScatterLine({
|
|
|
503
507
|
|
|
504
508
|
const lineProps: CurveProps = {
|
|
505
509
|
...scatterProps,
|
|
506
|
-
// @ts-expect-error customLineProps is contributing unknown props
|
|
507
510
|
fill: 'none',
|
|
508
|
-
// @ts-expect-error customLineProps is contributing unknown props
|
|
509
511
|
stroke: scatterProps && scatterProps.fill,
|
|
510
512
|
...customLineProps,
|
|
511
|
-
// @ts-expect-error linePoints is used before it is assigned (???)
|
|
512
513
|
points: linePoints,
|
|
513
514
|
};
|
|
514
515
|
|
|
515
|
-
if (React.isValidElement(line)) {
|
|
516
|
-
lineItem = React.cloneElement(line
|
|
516
|
+
if (React.isValidElement<CurveProps>(line)) {
|
|
517
|
+
lineItem = React.cloneElement(line, lineProps);
|
|
517
518
|
} else if (typeof line === 'function') {
|
|
518
519
|
lineItem = line(lineProps);
|
|
519
520
|
} else {
|
|
@@ -530,7 +531,7 @@ function ScatterLabelListProvider({
|
|
|
530
531
|
}: {
|
|
531
532
|
showLabels: boolean;
|
|
532
533
|
points: ReadonlyArray<ScatterPointItem>;
|
|
533
|
-
children:
|
|
534
|
+
children: OctaneNode;
|
|
534
535
|
}) {
|
|
535
536
|
const chartViewBox = useViewBox();
|
|
536
537
|
const labelListEntries: ReadonlyArray<CartesianLabelListEntry> = useMemo(() => {
|
|
@@ -610,16 +611,16 @@ function ScatterPoint({
|
|
|
610
611
|
baseProps: ReturnType<typeof svgPropertiesNoEvents>;
|
|
611
612
|
id: GraphicalItemId;
|
|
612
613
|
restOfAllOtherProps: InternalProps;
|
|
613
|
-
onMouseEnterFromContext: (data: ScatterPointItem, index: number) => (event:
|
|
614
|
+
onMouseEnterFromContext: (data: ScatterPointItem, index: number) => (event: NativeMouseEvent<
|
|
614
615
|
SVGGraphicsElement
|
|
615
616
|
>) => void;
|
|
616
|
-
onMouseLeaveFromContext: (data: ScatterPointItem, index: number) => (event:
|
|
617
|
+
onMouseLeaveFromContext: (data: ScatterPointItem, index: number) => (event: NativeMouseEvent<
|
|
617
618
|
SVGGraphicsElement
|
|
618
619
|
>) => void;
|
|
619
|
-
onClickFromContext: (data: ScatterPointItem, index: number) => (event:
|
|
620
|
+
onClickFromContext: (data: ScatterPointItem, index: number) => (event: NativeMouseEvent<
|
|
620
621
|
SVGGraphicsElement
|
|
621
622
|
>) => void;
|
|
622
|
-
}):
|
|
623
|
+
}): OctaneElement {
|
|
623
624
|
const hasActiveShape = activeShape != null && activeShape !== false;
|
|
624
625
|
const selectIsActive = useMemo(() => {
|
|
625
626
|
const strIndex = String(index);
|
|
@@ -813,7 +814,7 @@ export function computeScatterPoints({
|
|
|
813
814
|
scatterSettings: ScatterSettings;
|
|
814
815
|
xAxisTicks: ReadonlyArray<TickItem> | undefined;
|
|
815
816
|
yAxisTicks: ReadonlyArray<TickItem> | undefined;
|
|
816
|
-
cells: ReadonlyArray<
|
|
817
|
+
cells: ReadonlyArray<RegisteredCell> | undefined;
|
|
817
818
|
}): ReadonlyArray<ScatterPointItem> {
|
|
818
819
|
const xAxisDataKey = isNullish(xAxis.dataKey) ? scatterSettings.dataKey : xAxis.dataKey;
|
|
819
820
|
const yAxisDataKey = isNullish(yAxis.dataKey) ? scatterSettings.dataKey : yAxis.dataKey;
|
|
@@ -825,17 +826,16 @@ export function computeScatterPoints({
|
|
|
825
826
|
const yBandSize =
|
|
826
827
|
yAxis.scale.bandwidth ? yAxis.scale.bandwidth() : 0;
|
|
827
828
|
return displayedData.map((entry: unknown, index): ScatterPointItem => {
|
|
828
|
-
const x
|
|
829
|
-
const y
|
|
830
|
-
const z:
|
|
829
|
+
const x = getValueByDataKey<unknown, number | string>(entry, xAxisDataKey);
|
|
830
|
+
const y = getValueByDataKey<unknown, number | string>(entry, yAxisDataKey);
|
|
831
|
+
const z: number | string = isNullish(zAxisDataKey)
|
|
831
832
|
? '-'
|
|
832
|
-
: getValueByDataKey(entry, zAxisDataKey) ?? '-';
|
|
833
|
+
: getValueByDataKey<unknown, number | string>(entry, zAxisDataKey) ?? '-';
|
|
833
834
|
|
|
834
835
|
const tooltipPayload: Array<TooltipPayloadEntry> = [
|
|
835
836
|
{
|
|
836
837
|
name: isNullish(xAxis.dataKey) ? scatterSettings.name : xAxis.name || String(xAxis.dataKey),
|
|
837
838
|
unit: xAxis.unit || '',
|
|
838
|
-
// @ts-expect-error getValueByDataKey does not validate the output type
|
|
839
839
|
value: x,
|
|
840
840
|
payload: entry,
|
|
841
841
|
dataKey: xAxisDataKey,
|
|
@@ -845,7 +845,6 @@ export function computeScatterPoints({
|
|
|
845
845
|
{
|
|
846
846
|
name: isNullish(yAxis.dataKey) ? scatterSettings.name : yAxis.name || String(yAxis.dataKey),
|
|
847
847
|
unit: yAxis.unit || '',
|
|
848
|
-
// @ts-expect-error getValueByDataKey does not validate the output type
|
|
849
848
|
value: y,
|
|
850
849
|
payload: entry,
|
|
851
850
|
dataKey: yAxisDataKey,
|
|
@@ -856,10 +855,8 @@ export function computeScatterPoints({
|
|
|
856
855
|
|
|
857
856
|
if (z !== '-' && zAxis != null) {
|
|
858
857
|
tooltipPayload.push({
|
|
859
|
-
|
|
860
|
-
name: zAxis.name || zAxis.dataKey,
|
|
858
|
+
name: zAxis.name || String(zAxis.dataKey),
|
|
861
859
|
unit: zAxis.unit || '',
|
|
862
|
-
// @ts-expect-error getValueByDataKey does not validate the output type
|
|
863
860
|
value: z,
|
|
864
861
|
payload: entry,
|
|
865
862
|
dataKey: zAxisDataKey,
|
|
@@ -890,8 +887,7 @@ export function computeScatterPoints({
|
|
|
890
887
|
size == null ? 0 : Math.sqrt(Math.max(size, 0) / Math.PI);
|
|
891
888
|
|
|
892
889
|
return {
|
|
893
|
-
|
|
894
|
-
...entry,
|
|
890
|
+
...entry as Record<string, unknown>,
|
|
895
891
|
cx,
|
|
896
892
|
cy,
|
|
897
893
|
x: cx == null ? undefined : cx - radius,
|
|
@@ -901,9 +897,9 @@ export function computeScatterPoints({
|
|
|
901
897
|
size,
|
|
902
898
|
node: { x, y, z },
|
|
903
899
|
tooltipPayload,
|
|
904
|
-
tooltipPosition: { x: cx, y: cy },
|
|
900
|
+
tooltipPosition: cx == null || cy == null ? undefined : { x: cx, y: cy },
|
|
905
901
|
payload: entry,
|
|
906
|
-
...cells && cells[index] && cells[index].props
|
|
902
|
+
...cells && cells[index] && cells[index].props as CellPropsFor<SVGPathElement>,
|
|
907
903
|
};
|
|
908
904
|
});
|
|
909
905
|
}
|
|
@@ -917,8 +913,7 @@ const errorBarDataPointFormatter: ErrorBarDataPointFormatter<ScatterPointItem> =
|
|
|
917
913
|
x: dataPoint.cx,
|
|
918
914
|
y: dataPoint.cy,
|
|
919
915
|
value: direction === 'x' ? Number(dataPoint.node.x) : Number(dataPoint.node.y),
|
|
920
|
-
|
|
921
|
-
errorVal: getValueByDataKey(dataPoint, dataKey),
|
|
916
|
+
errorVal: getValueByDataKey<unknown, ErrorBarDataItem['errorVal']>(dataPoint, dataKey),
|
|
922
917
|
};
|
|
923
918
|
};
|
|
924
919
|
|
|
@@ -1037,7 +1032,9 @@ function ScatterImpl(props: WithIdRequired<Props>) {
|
|
|
1037
1032
|
</CellsContext.Provider>;
|
|
1038
1033
|
}
|
|
1039
1034
|
|
|
1040
|
-
function ScatterFn
|
|
1035
|
+
function ScatterFn<DataPointType = any, ValueAxisType = any>(
|
|
1036
|
+
outsideProps: Props<DataPointType, ValueAxisType>,
|
|
1037
|
+
) {
|
|
1041
1038
|
const props = resolveDefaultProps(outsideProps, defaultScatterProps);
|
|
1042
1039
|
const isPanorama = useIsPanorama();
|
|
1043
1040
|
return <RegisterGraphicalItemId id={props.id} type="scatter">
|
|
@@ -1067,10 +1064,8 @@ function ScatterFn(outsideProps: Props) {
|
|
|
1067
1064
|
* @provides CellReader
|
|
1068
1065
|
* @consumes CartesianChartContext
|
|
1069
1066
|
*/
|
|
1070
|
-
export const Scatter = React.memo(ScatterFn, propsAreEqual) as
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
// @ts-expect-error we need to set the displayName for debugging purposes
|
|
1075
|
-
|
|
1067
|
+
export const Scatter = React.memo(ScatterFn, propsAreEqual) as
|
|
1068
|
+
typeof ScatterFn & {
|
|
1069
|
+
displayName?: string;
|
|
1070
|
+
};
|
|
1076
1071
|
Scatter.displayName = 'Scatter';
|
package/src/cartesian/XAxis.tsrx
CHANGED
|
@@ -1,3 +1,58 @@
|
|
|
1
|
+
import type { OctaneElement } from '../util/OctaneTypes.ts';
|
|
2
|
+
import type {
|
|
3
|
+
AxisInterval,
|
|
4
|
+
AxisTick,
|
|
5
|
+
RenderableAxisProps,
|
|
6
|
+
PresentationAttributesAdaptChildEvent,
|
|
7
|
+
AxisDomain,
|
|
8
|
+
ScaleType,
|
|
9
|
+
AxisDomainTypeInput,
|
|
10
|
+
EvaluatedAxisDomainType,
|
|
11
|
+
TickProp,
|
|
12
|
+
XAxisTickContentProps,
|
|
13
|
+
TickItem,
|
|
14
|
+
} from '../util/types';
|
|
15
|
+
import type {
|
|
16
|
+
XAxisOrientation,
|
|
17
|
+
XAxisPadding,
|
|
18
|
+
XAxisSettings,
|
|
19
|
+
NiceTicksAlgorithm,
|
|
20
|
+
} from '../state/cartesianAxisSlice';
|
|
21
|
+
import type { RequiresDefaultProps } from '../util/resolveDefaultProps';
|
|
22
|
+
import type { CustomScaleDefinition } from '../util/scale/CustomScaleDefinition';
|
|
23
|
+
|
|
24
|
+
interface XAxisProps<DataPointType = any, DataValueType = any> extends Omit<
|
|
25
|
+
RenderableAxisProps<DataPointType, DataValueType>,
|
|
26
|
+
'domain' | 'scale' | 'tick'
|
|
27
|
+
> {
|
|
28
|
+
type?: AxisDomainTypeInput;
|
|
29
|
+
xAxisId?: string | number;
|
|
30
|
+
height?: number;
|
|
31
|
+
mirror?: boolean;
|
|
32
|
+
orientation?: XAxisOrientation;
|
|
33
|
+
domain?: AxisDomain;
|
|
34
|
+
scale?: | ScaleType
|
|
35
|
+
| CustomScaleDefinition
|
|
36
|
+
| CustomScaleDefinition<string>
|
|
37
|
+
| CustomScaleDefinition<number>
|
|
38
|
+
| CustomScaleDefinition<Date>;
|
|
39
|
+
tick?: TickProp<XAxisTickContentProps>;
|
|
40
|
+
ticks?: ReadonlyArray<AxisTick>;
|
|
41
|
+
padding?: XAxisPadding;
|
|
42
|
+
minTickGap?: number;
|
|
43
|
+
interval?: AxisInterval;
|
|
44
|
+
tickMargin?: number;
|
|
45
|
+
fontSize?: number | string;
|
|
46
|
+
letterSpacing?: number | string;
|
|
47
|
+
niceTicks?: NiceTicksAlgorithm;
|
|
48
|
+
}
|
|
49
|
+
export type Props<DataPointType = any, DataValueType = any> =
|
|
50
|
+
Omit<
|
|
51
|
+
PresentationAttributesAdaptChildEvent<TickItem, SVGTextElement>,
|
|
52
|
+
'scale' | 'ref'
|
|
53
|
+
> & XAxisProps<DataPointType, DataValueType>;
|
|
54
|
+
type PropsWithDefaults<DataPointType = any, DataValueType = any> =
|
|
55
|
+
RequiresDefaultProps<Props<DataPointType, DataValueType>, typeof xAxisDefaultProps>;
|
|
1
56
|
// Port of cartesian/XAxis.tsx — registers x-axis settings in the store and
|
|
2
57
|
// renders through CartesianAxis with store-synchronized settings.
|
|
3
58
|
import { useLayoutEffect, useMemo, useRef, memo } from 'octane';
|
|
@@ -19,13 +74,19 @@ import { axisPropsAreEqual } from '../util/axisPropsAreEqual';
|
|
|
19
74
|
import { useCartesianChartLayout } from '../context/chartLayoutContext.ts';
|
|
20
75
|
import { getAxisTypeBasedOnLayout } from '../util/getAxisTypeBasedOnLayout';
|
|
21
76
|
|
|
22
|
-
function SetXAxisSettings(props
|
|
77
|
+
function SetXAxisSettings(props: Omit<XAxisSettings, 'type'> & {
|
|
78
|
+
type: AxisDomainTypeInput;
|
|
79
|
+
}) {
|
|
23
80
|
const dispatch = useAppDispatch();
|
|
24
|
-
const prevSettingsRef = useRef(null);
|
|
81
|
+
const prevSettingsRef = useRef<XAxisSettings | null>(null);
|
|
25
82
|
const layout = useCartesianChartLayout();
|
|
26
83
|
const { type: typeFromProps, ...restProps } = props;
|
|
27
|
-
const evaluatedType = getAxisTypeBasedOnLayout(
|
|
28
|
-
|
|
84
|
+
const evaluatedType: EvaluatedAxisDomainType | undefined = getAxisTypeBasedOnLayout(
|
|
85
|
+
layout,
|
|
86
|
+
'xAxis',
|
|
87
|
+
typeFromProps,
|
|
88
|
+
);
|
|
89
|
+
const settings: XAxisSettings | undefined = useMemo(() => {
|
|
29
90
|
if (evaluatedType == null) {
|
|
30
91
|
return undefined;
|
|
31
92
|
}
|
|
@@ -53,7 +114,7 @@ function SetXAxisSettings(props) {
|
|
|
53
114
|
return null;
|
|
54
115
|
}
|
|
55
116
|
|
|
56
|
-
function XAxisImpl(props) {
|
|
117
|
+
function XAxisImpl(props: PropsWithDefaults) {
|
|
57
118
|
const { xAxisId, className } = props;
|
|
58
119
|
const viewBox = useAppSelector(selectAxisViewBox);
|
|
59
120
|
const isPanorama = useIsPanorama();
|
|
@@ -112,10 +173,15 @@ export const xAxisDefaultProps = {
|
|
|
112
173
|
type: implicitXAxis.type,
|
|
113
174
|
niceTicks: implicitXAxis.niceTicks,
|
|
114
175
|
xAxisId: 0,
|
|
115
|
-
}
|
|
176
|
+
} as const satisfies Partial<Props>;
|
|
116
177
|
|
|
117
|
-
function XAxisSettingsDispatcher(
|
|
118
|
-
|
|
178
|
+
function XAxisSettingsDispatcher<DataPointType = any, DataValueType = any>(
|
|
179
|
+
outsideProps: Props<DataPointType, DataValueType>,
|
|
180
|
+
) @{
|
|
181
|
+
const props: PropsWithDefaults<DataPointType, DataValueType> = resolveDefaultProps(
|
|
182
|
+
outsideProps,
|
|
183
|
+
xAxisDefaultProps,
|
|
184
|
+
);
|
|
119
185
|
<>
|
|
120
186
|
<SetXAxisSettings
|
|
121
187
|
allowDataOverflow={props.allowDataOverflow}
|
|
@@ -152,5 +218,8 @@ function XAxisSettingsDispatcher(outsideProps) @{
|
|
|
152
218
|
* @consumes CartesianViewBoxContext
|
|
153
219
|
* @provides CartesianLabelContext
|
|
154
220
|
*/
|
|
155
|
-
export const XAxis = memo(
|
|
221
|
+
export const XAxis = memo(
|
|
222
|
+
XAxisSettingsDispatcher,
|
|
223
|
+
axisPropsAreEqual,
|
|
224
|
+
) as typeof XAxisSettingsDispatcher & { displayName?: string };
|
|
156
225
|
XAxis.displayName = 'XAxis';
|
package/src/cartesian/YAxis.tsrx
CHANGED
|
@@ -1,3 +1,62 @@
|
|
|
1
|
+
import type { OctaneElement, SVGProps } from '../util/OctaneTypes.ts';
|
|
2
|
+
import type {
|
|
3
|
+
AxisDomainTypeInput,
|
|
4
|
+
AxisInterval,
|
|
5
|
+
AxisTick,
|
|
6
|
+
RenderableAxisProps,
|
|
7
|
+
PresentationAttributesAdaptChildEvent,
|
|
8
|
+
Size,
|
|
9
|
+
AxisDomain,
|
|
10
|
+
ScaleType,
|
|
11
|
+
EvaluatedAxisDomainType,
|
|
12
|
+
TickProp,
|
|
13
|
+
YAxisTickContentProps,
|
|
14
|
+
TickItem,
|
|
15
|
+
} from '../util/types';
|
|
16
|
+
import type { CartesianAxisRef } from './CartesianAxis.tsrx';
|
|
17
|
+
import type {
|
|
18
|
+
YAxisOrientation,
|
|
19
|
+
YAxisPadding,
|
|
20
|
+
YAxisSettings,
|
|
21
|
+
YAxisWidth,
|
|
22
|
+
NiceTicksAlgorithm,
|
|
23
|
+
} from '../state/cartesianAxisSlice';
|
|
24
|
+
import type { RequiresDefaultProps } from '../util/resolveDefaultProps';
|
|
25
|
+
import type { CustomScaleDefinition } from '../util/scale/CustomScaleDefinition';
|
|
26
|
+
|
|
27
|
+
interface YAxisProps<DataPointType = any, DataValueType = any> extends Omit<
|
|
28
|
+
RenderableAxisProps<DataPointType, DataValueType>,
|
|
29
|
+
'axisLine' | 'domain' | 'scale' | 'tick'
|
|
30
|
+
> {
|
|
31
|
+
axisLine?: boolean | SVGProps<SVGLineElement>;
|
|
32
|
+
type?: AxisDomainTypeInput;
|
|
33
|
+
domain?: AxisDomain;
|
|
34
|
+
scale?: | ScaleType
|
|
35
|
+
| CustomScaleDefinition
|
|
36
|
+
| CustomScaleDefinition<string>
|
|
37
|
+
| CustomScaleDefinition<number>
|
|
38
|
+
| CustomScaleDefinition<Date>;
|
|
39
|
+
yAxisId?: string | number;
|
|
40
|
+
tick?: TickProp<YAxisTickContentProps>;
|
|
41
|
+
ticks?: ReadonlyArray<AxisTick>;
|
|
42
|
+
width?: YAxisWidth;
|
|
43
|
+
mirror?: boolean;
|
|
44
|
+
orientation?: YAxisOrientation;
|
|
45
|
+
padding?: YAxisPadding;
|
|
46
|
+
minTickGap?: number;
|
|
47
|
+
interval?: AxisInterval;
|
|
48
|
+
tickMargin?: number;
|
|
49
|
+
fontSize?: number | string;
|
|
50
|
+
letterSpacing?: number | string;
|
|
51
|
+
niceTicks?: NiceTicksAlgorithm;
|
|
52
|
+
}
|
|
53
|
+
export type Props<DataPointType = any, DataValueType = any> =
|
|
54
|
+
Omit<
|
|
55
|
+
PresentationAttributesAdaptChildEvent<TickItem, SVGTextElement>,
|
|
56
|
+
'scale' | 'ref'
|
|
57
|
+
> & YAxisProps<DataPointType, DataValueType>;
|
|
58
|
+
type PropsWithDefaults<DataPointType = any, DataValueType = any> =
|
|
59
|
+
RequiresDefaultProps<Props<DataPointType, DataValueType>, typeof yAxisDefaultProps>;
|
|
1
60
|
// Port of cartesian/YAxis.tsx — registers y-axis settings in the store,
|
|
2
61
|
// renders through CartesianAxis, and drives width="auto" via the axis
|
|
3
62
|
// component's imperative getCalculatedWidth handle.
|
|
@@ -21,13 +80,19 @@ import { axisPropsAreEqual } from '../util/axisPropsAreEqual';
|
|
|
21
80
|
import { useCartesianChartLayout } from '../context/chartLayoutContext.ts';
|
|
22
81
|
import { getAxisTypeBasedOnLayout } from '../util/getAxisTypeBasedOnLayout';
|
|
23
82
|
|
|
24
|
-
function SetYAxisSettings(props
|
|
83
|
+
function SetYAxisSettings(props: Omit<YAxisSettings, 'type'> & {
|
|
84
|
+
type: AxisDomainTypeInput;
|
|
85
|
+
}) {
|
|
25
86
|
const dispatch = useAppDispatch();
|
|
26
|
-
const prevSettingsRef = useRef(null);
|
|
87
|
+
const prevSettingsRef = useRef<YAxisSettings | null>(null);
|
|
27
88
|
const layout = useCartesianChartLayout();
|
|
28
89
|
const { type: typeFromProps, ...restProps } = props;
|
|
29
|
-
const evaluatedType = getAxisTypeBasedOnLayout(
|
|
30
|
-
|
|
90
|
+
const evaluatedType: EvaluatedAxisDomainType | undefined = getAxisTypeBasedOnLayout(
|
|
91
|
+
layout,
|
|
92
|
+
'yAxis',
|
|
93
|
+
typeFromProps,
|
|
94
|
+
);
|
|
95
|
+
const settings: YAxisSettings | undefined = useMemo(() => {
|
|
31
96
|
if (evaluatedType == null) {
|
|
32
97
|
return undefined;
|
|
33
98
|
}
|
|
@@ -55,15 +120,15 @@ function SetYAxisSettings(props) {
|
|
|
55
120
|
return null;
|
|
56
121
|
}
|
|
57
122
|
|
|
58
|
-
function YAxisImpl(props) {
|
|
123
|
+
function YAxisImpl(props: PropsWithDefaults) {
|
|
59
124
|
const { yAxisId, className, width, label } = props;
|
|
60
|
-
const cartesianAxisRef = useRef(null);
|
|
61
|
-
const labelRef = useRef(null);
|
|
125
|
+
const cartesianAxisRef = useRef<CartesianAxisRef | null>(null);
|
|
126
|
+
const labelRef = useRef<SVGTextElement | null>(null);
|
|
62
127
|
const viewBox = useAppSelector(selectAxisViewBox);
|
|
63
128
|
const isPanorama = useIsPanorama();
|
|
64
129
|
const dispatch = useAppDispatch();
|
|
65
130
|
const axisType = 'yAxis';
|
|
66
|
-
const axisSize = useAppSelector((state) => selectYAxisSize(state, yAxisId));
|
|
131
|
+
const axisSize: Size | undefined = useAppSelector((state) => selectYAxisSize(state, yAxisId));
|
|
67
132
|
const position = useAppSelector((state) => selectYAxisPosition(state, yAxisId));
|
|
68
133
|
const cartesianTickItems = useAppSelector(
|
|
69
134
|
(state) => selectTicksOfAxis(state, axisType, yAxisId, isPanorama),
|
|
@@ -139,10 +204,15 @@ export const yAxisDefaultProps = {
|
|
|
139
204
|
niceTicks: implicitYAxis.niceTicks,
|
|
140
205
|
width: implicitYAxis.width,
|
|
141
206
|
yAxisId: 0,
|
|
142
|
-
}
|
|
207
|
+
} as const satisfies Partial<Props>;
|
|
143
208
|
|
|
144
|
-
function YAxisSettingsDispatcher(
|
|
145
|
-
|
|
209
|
+
function YAxisSettingsDispatcher<DataPointType = any, DataValueType = any>(
|
|
210
|
+
outsideProps: Props<DataPointType, DataValueType>,
|
|
211
|
+
) @{
|
|
212
|
+
const props: PropsWithDefaults<DataPointType, DataValueType> = resolveDefaultProps(
|
|
213
|
+
outsideProps,
|
|
214
|
+
yAxisDefaultProps,
|
|
215
|
+
);
|
|
146
216
|
<>
|
|
147
217
|
<SetYAxisSettings
|
|
148
218
|
interval={props.interval}
|
|
@@ -179,5 +249,8 @@ function YAxisSettingsDispatcher(outsideProps) @{
|
|
|
179
249
|
* @consumes CartesianViewBoxContext
|
|
180
250
|
* @provides CartesianLabelContext
|
|
181
251
|
*/
|
|
182
|
-
export const YAxis = memo(
|
|
252
|
+
export const YAxis = memo(
|
|
253
|
+
YAxisSettingsDispatcher,
|
|
254
|
+
axisPropsAreEqual,
|
|
255
|
+
) as typeof YAxisSettingsDispatcher & { displayName?: string };
|
|
183
256
|
YAxis.displayName = 'YAxis';
|