@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
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
// Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
|
|
2
|
+
import {
|
|
3
|
+
ChartOffsetInternal,
|
|
4
|
+
RelativePointer,
|
|
5
|
+
Coordinate,
|
|
6
|
+
PolarViewBoxRequired,
|
|
7
|
+
RangeObj,
|
|
8
|
+
} from './types';
|
|
9
|
+
|
|
10
|
+
export const RADIAN = Math.PI / 180;
|
|
11
|
+
|
|
12
|
+
export const degreeToRadian = (angle: number) => (angle * Math.PI) / 180;
|
|
13
|
+
|
|
14
|
+
export const radianToDegree = (angleInRadian: number) => (angleInRadian * 180) / Math.PI;
|
|
15
|
+
|
|
16
|
+
export const polarToCartesian = (
|
|
17
|
+
cx: number,
|
|
18
|
+
cy: number,
|
|
19
|
+
radius: number,
|
|
20
|
+
angle: number,
|
|
21
|
+
): Coordinate => ({
|
|
22
|
+
x: cx + Math.cos(-RADIAN * angle) * radius,
|
|
23
|
+
y: cy + Math.sin(-RADIAN * angle) * radius,
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
export const getMaxRadius = (
|
|
27
|
+
width: number,
|
|
28
|
+
height: number,
|
|
29
|
+
offset: ChartOffsetInternal = {
|
|
30
|
+
top: 0,
|
|
31
|
+
right: 0,
|
|
32
|
+
bottom: 0,
|
|
33
|
+
left: 0,
|
|
34
|
+
width: 0,
|
|
35
|
+
height: 0,
|
|
36
|
+
brushBottom: 0,
|
|
37
|
+
},
|
|
38
|
+
) =>
|
|
39
|
+
Math.min(
|
|
40
|
+
Math.abs(width - (offset.left || 0) - (offset.right || 0)),
|
|
41
|
+
Math.abs(height - (offset.top || 0) - (offset.bottom || 0)),
|
|
42
|
+
) / 2;
|
|
43
|
+
|
|
44
|
+
const distanceBetweenPoints = (point: Coordinate, anotherPoint: Coordinate) => {
|
|
45
|
+
const { x: x1, y: y1 } = point;
|
|
46
|
+
const { x: x2, y: y2 } = anotherPoint;
|
|
47
|
+
|
|
48
|
+
return Math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2);
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
const getAngleOfPoint = ({ x, y }: Coordinate, { cx, cy }: PolarViewBoxRequired) => {
|
|
52
|
+
const radius = distanceBetweenPoints({ x, y }, { x: cx, y: cy });
|
|
53
|
+
|
|
54
|
+
if (radius <= 0) {
|
|
55
|
+
return { radius, angle: 0 };
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const cos = (x - cx) / radius;
|
|
59
|
+
let angleInRadian = Math.acos(cos);
|
|
60
|
+
|
|
61
|
+
if (y > cy) {
|
|
62
|
+
angleInRadian = 2 * Math.PI - angleInRadian;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return { radius, angle: radianToDegree(angleInRadian), angleInRadian };
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
const formatAngleOfSector = ({ startAngle, endAngle }: PolarViewBoxRequired) => {
|
|
69
|
+
const startCnt = Math.floor(startAngle / 360);
|
|
70
|
+
const endCnt = Math.floor(endAngle / 360);
|
|
71
|
+
const min = Math.min(startCnt, endCnt);
|
|
72
|
+
|
|
73
|
+
return {
|
|
74
|
+
startAngle: startAngle - min * 360,
|
|
75
|
+
endAngle: endAngle - min * 360,
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
const reverseFormatAngleOfSector = (
|
|
80
|
+
angle: number,
|
|
81
|
+
{ startAngle, endAngle }: PolarViewBoxRequired,
|
|
82
|
+
): number => {
|
|
83
|
+
const startCnt = Math.floor(startAngle / 360);
|
|
84
|
+
const endCnt = Math.floor(endAngle / 360);
|
|
85
|
+
const min = Math.min(startCnt, endCnt);
|
|
86
|
+
|
|
87
|
+
return angle + min * 360;
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
export const inRangeOfSector = (
|
|
91
|
+
{ relativeX: x, relativeY: y }: RelativePointer,
|
|
92
|
+
viewBox: PolarViewBoxRequired,
|
|
93
|
+
): RangeObj | null => {
|
|
94
|
+
const { radius, angle } = getAngleOfPoint({ x, y }, viewBox);
|
|
95
|
+
const { innerRadius, outerRadius } = viewBox;
|
|
96
|
+
|
|
97
|
+
if (radius < innerRadius || radius > outerRadius) {
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
if (radius === 0) {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
const { startAngle, endAngle } = formatAngleOfSector(viewBox);
|
|
106
|
+
let formatAngle = angle;
|
|
107
|
+
let inRange;
|
|
108
|
+
|
|
109
|
+
if (startAngle <= endAngle) {
|
|
110
|
+
while (formatAngle > endAngle) {
|
|
111
|
+
formatAngle -= 360;
|
|
112
|
+
}
|
|
113
|
+
while (formatAngle < startAngle) {
|
|
114
|
+
formatAngle += 360;
|
|
115
|
+
}
|
|
116
|
+
inRange = formatAngle >= startAngle && formatAngle <= endAngle;
|
|
117
|
+
} else {
|
|
118
|
+
while (formatAngle > startAngle) {
|
|
119
|
+
formatAngle -= 360;
|
|
120
|
+
}
|
|
121
|
+
while (formatAngle < endAngle) {
|
|
122
|
+
formatAngle += 360;
|
|
123
|
+
}
|
|
124
|
+
inRange = formatAngle >= endAngle && formatAngle <= startAngle;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
if (inRange) {
|
|
128
|
+
return { ...viewBox, radius, angle: reverseFormatAngleOfSector(formatAngle, viewBox) };
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
return null;
|
|
132
|
+
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as React from 'octane';
|
|
2
|
-
import { RadialBarDataItem, RadialBarProps } from '../polar/RadialBar';
|
|
3
|
-
import { Sector } from '../shape/Sector';
|
|
2
|
+
import { RadialBarDataItem, RadialBarProps } from '../polar/RadialBar.tsrx';
|
|
3
|
+
import { Sector } from '../shape/Sector.tsrx';
|
|
4
4
|
import { ShapeAnimationProps } from './types';
|
|
5
|
-
import { Shape } from './ActiveShapeUtils';
|
|
5
|
+
import { Shape } from './ActiveShapeUtils.tsrx';
|
|
6
6
|
|
|
7
7
|
export const defaultRadialBarShape = Sector;
|
|
8
8
|
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
// Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
|
|
2
|
+
import { isNan } from './DataUtils';
|
|
3
|
+
|
|
4
|
+
const MULTIPLY_OR_DIVIDE_REGEX = /(-?\d+(?:\.\d+)?[a-zA-Z%]*)([*/])(-?\d+(?:\.\d+)?[a-zA-Z%]*)/;
|
|
5
|
+
const ADD_OR_SUBTRACT_REGEX = /(-?\d+(?:\.\d+)?[a-zA-Z%]*)([+-])(-?\d+(?:\.\d+)?[a-zA-Z%]*)/;
|
|
6
|
+
const CSS_LENGTH_UNIT_REGEX = /^(px|cm|vh|vw|em|rem|%|mm|in|pt|pc|ex|ch|vmin|vmax|Q)$/;
|
|
7
|
+
const NUM_SPLIT_REGEX = /(-?\d+(?:\.\d+)?)([a-zA-Z%]+)?/;
|
|
8
|
+
|
|
9
|
+
type SupportedUnits = 'cm' | 'mm' | 'pt' | 'pc' | 'in' | 'Q' | 'px';
|
|
10
|
+
|
|
11
|
+
const CONVERSION_RATES: Record<SupportedUnits, number> = {
|
|
12
|
+
cm: 96 / 2.54,
|
|
13
|
+
mm: 96 / 25.4,
|
|
14
|
+
pt: 96 / 72,
|
|
15
|
+
pc: 96 / 6,
|
|
16
|
+
in: 96,
|
|
17
|
+
Q: 96 / (2.54 * 40),
|
|
18
|
+
px: 1,
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const FIXED_CSS_LENGTH_UNITS: ReadonlyArray<SupportedUnits> = [
|
|
22
|
+
'cm',
|
|
23
|
+
'mm',
|
|
24
|
+
'pt',
|
|
25
|
+
'pc',
|
|
26
|
+
'in',
|
|
27
|
+
'Q',
|
|
28
|
+
'px',
|
|
29
|
+
];
|
|
30
|
+
|
|
31
|
+
function isSupportedUnit(unit: string): unit is SupportedUnits {
|
|
32
|
+
return FIXED_CSS_LENGTH_UNITS.includes(unit as SupportedUnits);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const STR_NAN = 'NaN';
|
|
36
|
+
|
|
37
|
+
function convertToPx(value: number, unit: SupportedUnits): number {
|
|
38
|
+
return value * CONVERSION_RATES[unit];
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
class DecimalCSS {
|
|
42
|
+
static parse(str: string) {
|
|
43
|
+
const [, numStr, unit] = NUM_SPLIT_REGEX.exec(str) ?? [];
|
|
44
|
+
|
|
45
|
+
if (numStr == null) {
|
|
46
|
+
return DecimalCSS.NaN;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return new DecimalCSS(parseFloat(numStr), unit ?? '');
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
static NaN = new DecimalCSS(NaN, '');
|
|
53
|
+
|
|
54
|
+
constructor(
|
|
55
|
+
public num: number,
|
|
56
|
+
public unit: string,
|
|
57
|
+
) {
|
|
58
|
+
this.num = num;
|
|
59
|
+
this.unit = unit;
|
|
60
|
+
|
|
61
|
+
if (isNan(num)) {
|
|
62
|
+
this.unit = '';
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (unit !== '' && !CSS_LENGTH_UNIT_REGEX.test(unit)) {
|
|
66
|
+
this.num = NaN;
|
|
67
|
+
this.unit = '';
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if (isSupportedUnit(unit)) {
|
|
71
|
+
this.num = convertToPx(num, unit);
|
|
72
|
+
this.unit = 'px';
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
add(other: DecimalCSS) {
|
|
77
|
+
if (this.unit !== other.unit) {
|
|
78
|
+
return new DecimalCSS(NaN, '');
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return new DecimalCSS(this.num + other.num, this.unit);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
subtract(other: DecimalCSS) {
|
|
85
|
+
if (this.unit !== other.unit) {
|
|
86
|
+
return new DecimalCSS(NaN, '');
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return new DecimalCSS(this.num - other.num, this.unit);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
multiply(other: DecimalCSS) {
|
|
93
|
+
if (this.unit !== '' && other.unit !== '' && this.unit !== other.unit) {
|
|
94
|
+
return new DecimalCSS(NaN, '');
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
return new DecimalCSS(this.num * other.num, this.unit || other.unit);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
divide(other: DecimalCSS) {
|
|
101
|
+
if (this.unit !== '' && other.unit !== '' && this.unit !== other.unit) {
|
|
102
|
+
return new DecimalCSS(NaN, '');
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
return new DecimalCSS(this.num / other.num, this.unit || other.unit);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
toString() {
|
|
109
|
+
return `${this.num}${this.unit}`;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
isNaN() {
|
|
113
|
+
return isNan(this.num);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
function calculateArithmetic(expr: string | undefined): string {
|
|
118
|
+
if (expr == null || expr.includes(STR_NAN)) {
|
|
119
|
+
return STR_NAN;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
let newExpr = expr;
|
|
123
|
+
while (newExpr.includes('*') || newExpr.includes('/')) {
|
|
124
|
+
const [, leftOperand, operator, rightOperand] = MULTIPLY_OR_DIVIDE_REGEX.exec(newExpr) ?? [];
|
|
125
|
+
const lTs = DecimalCSS.parse(leftOperand ?? '');
|
|
126
|
+
const rTs = DecimalCSS.parse(rightOperand ?? '');
|
|
127
|
+
const result = operator === '*' ? lTs.multiply(rTs) : lTs.divide(rTs);
|
|
128
|
+
if (result.isNaN()) {
|
|
129
|
+
return STR_NAN;
|
|
130
|
+
}
|
|
131
|
+
newExpr = newExpr.replace(MULTIPLY_OR_DIVIDE_REGEX, result.toString());
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
while (newExpr.includes('+') || /.-\d+(?:\.\d+)?/.test(newExpr)) {
|
|
135
|
+
const [, leftOperand, operator, rightOperand] = ADD_OR_SUBTRACT_REGEX.exec(newExpr) ?? [];
|
|
136
|
+
const lTs = DecimalCSS.parse(leftOperand ?? '');
|
|
137
|
+
const rTs = DecimalCSS.parse(rightOperand ?? '');
|
|
138
|
+
const result = operator === '+' ? lTs.add(rTs) : lTs.subtract(rTs);
|
|
139
|
+
if (result.isNaN()) {
|
|
140
|
+
return STR_NAN;
|
|
141
|
+
}
|
|
142
|
+
newExpr = newExpr.replace(ADD_OR_SUBTRACT_REGEX, result.toString());
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
return newExpr;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
const PARENTHESES_REGEX = /\(([^()]*)\)/;
|
|
149
|
+
|
|
150
|
+
function calculateParentheses(expr: string): string {
|
|
151
|
+
let newExpr = expr;
|
|
152
|
+
let match: ReturnType<typeof RegExp.prototype.exec> | null;
|
|
153
|
+
// eslint-disable-next-line no-cond-assign
|
|
154
|
+
while ((match = PARENTHESES_REGEX.exec(newExpr)) != null) {
|
|
155
|
+
const [, parentheticalExpression] = match;
|
|
156
|
+
newExpr = newExpr.replace(PARENTHESES_REGEX, calculateArithmetic(parentheticalExpression));
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
return newExpr;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
function evaluateExpression(expression: string): string {
|
|
163
|
+
let newExpr = expression.replace(/\s+/g, '');
|
|
164
|
+
newExpr = calculateParentheses(newExpr);
|
|
165
|
+
newExpr = calculateArithmetic(newExpr);
|
|
166
|
+
|
|
167
|
+
return newExpr;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
export function safeEvaluateExpression(expression: string): string {
|
|
171
|
+
try {
|
|
172
|
+
return evaluateExpression(expression);
|
|
173
|
+
} catch {
|
|
174
|
+
return STR_NAN;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
export function reduceCSSCalc(expression: string): string {
|
|
179
|
+
const result = safeEvaluateExpression(expression.slice(5, -1));
|
|
180
|
+
|
|
181
|
+
if (result === STR_NAN) {
|
|
182
|
+
return '';
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
return result;
|
|
186
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as React from 'octane';
|
|
2
2
|
import { ActiveShape, ShapeAnimationProps, SymbolType } from './types';
|
|
3
|
-
import { ScatterPointItem } from '../cartesian/Scatter';
|
|
4
|
-
import { InnerSymbolsProp, Symbols } from '../shape/Symbols';
|
|
5
|
-
import { Shape } from './ActiveShapeUtils';
|
|
3
|
+
import { ScatterPointItem } from '../cartesian/Scatter.tsrx';
|
|
4
|
+
import { InnerSymbolsProp, Symbols } from '../shape/Symbols.tsrx';
|
|
5
|
+
import { Shape } from './ActiveShapeUtils.tsrx';
|
|
6
6
|
import { DATA_ITEM_GRAPHICAL_ITEM_ID_ATTRIBUTE_NAME } from './Constants';
|
|
7
7
|
import { GraphicalItemId } from '../state/graphicalItemsSlice';
|
|
8
8
|
|
|
@@ -13,22 +13,24 @@ export type ScatterShapeProps =
|
|
|
13
13
|
[DATA_ITEM_GRAPHICAL_ITEM_ID_ATTRIBUTE_NAME]: GraphicalItemId;
|
|
14
14
|
};
|
|
15
15
|
|
|
16
|
-
type ScatterSymbolShapeProps = ScatterShapeProps & InnerSymbolsProp
|
|
16
|
+
type ScatterSymbolShapeProps = ScatterShapeProps & Omit<InnerSymbolsProp, keyof ScatterShapeProps>;
|
|
17
17
|
|
|
18
18
|
function renderSymbols(props: ScatterSymbolShapeProps) {
|
|
19
19
|
return <Symbols {...props} />;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
const ScatterShape = Shape<ScatterSymbolShapeProps, SVGPathElement>;
|
|
23
|
+
|
|
22
24
|
export function ScatterSymbol({ option, ...props }: {
|
|
23
|
-
option: ActiveShape<
|
|
25
|
+
option: ActiveShape<ScatterSymbolShapeProps, SVGPathElement> | SymbolType;
|
|
24
26
|
} & ScatterShapeProps) {
|
|
25
27
|
if (typeof option === 'string') {
|
|
26
|
-
return <
|
|
28
|
+
return <ScatterShape
|
|
27
29
|
option={<Symbols type={option} {...props} />}
|
|
28
30
|
DefaultShape={renderSymbols}
|
|
29
31
|
shapeProps={props}
|
|
30
32
|
/>;
|
|
31
33
|
}
|
|
32
34
|
|
|
33
|
-
return <
|
|
35
|
+
return <ScatterShape option={option} DefaultShape={renderSymbols} shapeProps={props} />;
|
|
34
36
|
}
|
|
@@ -1,20 +1,24 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Do not edit — update by re-vendoring when the recharts devDependency moves.
|
|
1
|
+
// Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
|
|
3
2
|
import { getAngledRectangleWidth } from './CartesianUtils';
|
|
4
3
|
import { getEveryNth } from './getEveryNth';
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
import { Size, CartesianTickItem, CartesianViewBoxRequired } from './types';
|
|
5
|
+
|
|
6
|
+
export function getAngledTickWidth(contentSize: Size, unitSize: Size, angle: number | undefined) {
|
|
7
|
+
const size = {
|
|
7
8
|
width: contentSize.width + unitSize.width,
|
|
8
9
|
height: contentSize.height + unitSize.height,
|
|
9
10
|
};
|
|
11
|
+
|
|
10
12
|
return getAngledRectangleWidth(size, angle);
|
|
11
13
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
|
|
15
|
+
export function getTickBoundaries(
|
|
16
|
+
viewBox: CartesianViewBoxRequired,
|
|
17
|
+
sign: number,
|
|
18
|
+
sizeKey: string,
|
|
19
|
+
) {
|
|
20
|
+
const isWidth = sizeKey === 'width';
|
|
21
|
+
const { x, y, width, height } = viewBox;
|
|
18
22
|
if (sign === 1) {
|
|
19
23
|
return {
|
|
20
24
|
start: isWidth ? x : y,
|
|
@@ -26,18 +30,31 @@ export function getTickBoundaries(viewBox, sign, sizeKey) {
|
|
|
26
30
|
end: isWidth ? x : y,
|
|
27
31
|
};
|
|
28
32
|
}
|
|
29
|
-
|
|
33
|
+
|
|
34
|
+
export function isVisible(
|
|
35
|
+
sign: number,
|
|
36
|
+
tickPosition: number,
|
|
37
|
+
getSize: () => number,
|
|
38
|
+
start: number,
|
|
39
|
+
end: number,
|
|
40
|
+
): boolean {
|
|
30
41
|
/* Since getSize() is expensive (it reads the ticks' size from the DOM), we do this check first to avoid calculating
|
|
31
42
|
* the tick's size. */
|
|
32
43
|
if (sign * tickPosition < sign * start || sign * tickPosition > sign * end) {
|
|
33
44
|
return false;
|
|
34
45
|
}
|
|
35
|
-
|
|
46
|
+
|
|
47
|
+
const size = getSize();
|
|
48
|
+
|
|
36
49
|
return (
|
|
37
50
|
sign * (tickPosition - (sign * size) / 2 - start) >= 0 &&
|
|
38
51
|
sign * (tickPosition + (sign * size) / 2 - end) <= 0
|
|
39
52
|
);
|
|
40
53
|
}
|
|
41
|
-
|
|
54
|
+
|
|
55
|
+
export function getNumberIntervalTicks(
|
|
56
|
+
ticks: ReadonlyArray<CartesianTickItem>,
|
|
57
|
+
interval: number,
|
|
58
|
+
): ReadonlyArray<CartesianTickItem> | undefined {
|
|
42
59
|
return getEveryNth(ticks, interval + 1);
|
|
43
60
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
//
|
|
2
|
-
|
|
1
|
+
// Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
|
|
2
|
+
type IGetBoundingClient = Pick<Element, 'getBoundingClientRect'>;
|
|
3
|
+
|
|
3
4
|
/**
|
|
4
5
|
* Calculates the width of the Y-axis based on the tick labels and the axis label.
|
|
5
6
|
* @param params - The parameters object.
|
|
@@ -10,21 +11,26 @@
|
|
|
10
11
|
* @param [params.tickMargin=0] - The margin between the tick line and the tick text.
|
|
11
12
|
* @returns The calculated width of the Y-axis.
|
|
12
13
|
*/
|
|
13
|
-
export
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
14
|
+
export const getCalculatedYAxisWidth = ({
|
|
15
|
+
ticks,
|
|
16
|
+
label,
|
|
17
|
+
labelGapWithTick = 5, // Default gap between label and tick
|
|
18
|
+
tickSize = 0,
|
|
19
|
+
tickMargin = 0,
|
|
20
|
+
}: {
|
|
21
|
+
ticks: ArrayLike<IGetBoundingClient> | null;
|
|
22
|
+
label: IGetBoundingClient | null | undefined;
|
|
23
|
+
labelGapWithTick: number | undefined;
|
|
24
|
+
tickSize: number | undefined;
|
|
25
|
+
tickMargin: number | undefined;
|
|
26
|
+
}): number => {
|
|
22
27
|
// find the max width of the tick labels
|
|
23
|
-
|
|
28
|
+
let maxTickWidth = 0;
|
|
24
29
|
if (ticks) {
|
|
25
|
-
Array.from(ticks).forEach((tickNode) => {
|
|
30
|
+
Array.from(ticks).forEach((tickNode: IGetBoundingClient) => {
|
|
26
31
|
if (tickNode) {
|
|
27
|
-
|
|
32
|
+
const bbox = tickNode.getBoundingClientRect();
|
|
33
|
+
|
|
28
34
|
if (bbox.width > maxTickWidth) {
|
|
29
35
|
maxTickWidth = bbox.width;
|
|
30
36
|
}
|
|
@@ -32,12 +38,16 @@ export var getCalculatedYAxisWidth = (_ref) => {
|
|
|
32
38
|
});
|
|
33
39
|
|
|
34
40
|
// calculate width of the axis label
|
|
35
|
-
|
|
36
|
-
|
|
41
|
+
const labelWidth = label ? label.getBoundingClientRect().width : 0;
|
|
42
|
+
|
|
43
|
+
const tickWidth = tickSize + tickMargin;
|
|
37
44
|
|
|
38
45
|
// calculate the updated width of the y-axis
|
|
39
|
-
|
|
46
|
+
const updatedYAxisWidth =
|
|
47
|
+
maxTickWidth + tickWidth + labelWidth + (label ? labelGapWithTick : 0);
|
|
48
|
+
|
|
40
49
|
return Math.round(updatedYAxisWidth);
|
|
41
50
|
}
|
|
51
|
+
|
|
42
52
|
return 0;
|
|
43
53
|
};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
|
|
2
|
+
import { XAxisProps, YAxisProps } from '../index';
|
|
3
|
+
import { AxisDomain } from './types';
|
|
4
|
+
import { AxisRange } from '../state/selectors/axisSelectors';
|
|
5
|
+
import { propsAreEqual } from './propsAreEqual';
|
|
6
|
+
|
|
7
|
+
function shortArraysAreEqual(
|
|
8
|
+
arr1: AxisDomain | AxisRange | undefined,
|
|
9
|
+
arr2: AxisDomain | AxisRange | undefined,
|
|
10
|
+
): boolean {
|
|
11
|
+
if (arr1 === arr2) {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
if (Array.isArray(arr1) && arr1.length === 2 && Array.isArray(arr2) && arr2.length === 2) {
|
|
16
|
+
return arr1[0] === arr2[0] && arr1[1] === arr2[1];
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Usually we would not compare array props deeply for performance consideration.
|
|
24
|
+
* However, for axis props, domain is sometimes defined as a two-elements array, and range is always
|
|
25
|
+
* a two-elements array. So we can do a shallow comparison for the rest props and a shallow
|
|
26
|
+
* comparison for these two array props.
|
|
27
|
+
* @param prevProps
|
|
28
|
+
* @param nextProps
|
|
29
|
+
*/
|
|
30
|
+
export function axisPropsAreEqual<T extends YAxisProps | XAxisProps>(
|
|
31
|
+
prevProps: T,
|
|
32
|
+
nextProps: T,
|
|
33
|
+
): boolean {
|
|
34
|
+
if (prevProps === nextProps) {
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
const { domain: prevDomain, range: prevRange, ...prevRest } = prevProps;
|
|
38
|
+
const { domain: nextDomain, range: nextRange, ...nextRest } = nextProps;
|
|
39
|
+
|
|
40
|
+
if (!shortArraysAreEqual(prevDomain, nextDomain)) {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (!shortArraysAreEqual(prevRange, nextRange)) {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return propsAreEqual(prevRest, nextRest);
|
|
49
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
|
|
2
|
+
import type { NativeEvent } from './OctaneTypes';
|
|
3
|
+
|
|
4
|
+
export function createEventProxy<T extends NativeEvent>(reactEvent: T): T {
|
|
5
|
+
// Native events are not pooled. Capture the delegated target before a
|
|
6
|
+
// throttled callback runs, after dispatch has cleared currentTarget.
|
|
7
|
+
const { currentTarget } = reactEvent;
|
|
8
|
+
return new Proxy(reactEvent, {
|
|
9
|
+
get: (target, prop) => {
|
|
10
|
+
if (prop === 'currentTarget') {
|
|
11
|
+
return currentTarget;
|
|
12
|
+
}
|
|
13
|
+
const value = Reflect.get(target, prop);
|
|
14
|
+
if (typeof value === 'function') {
|
|
15
|
+
return value.bind(target);
|
|
16
|
+
}
|
|
17
|
+
return value;
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
//
|
|
2
|
-
|
|
3
|
-
var EventKeys = [
|
|
1
|
+
// Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
|
|
2
|
+
const EventKeys = [
|
|
4
3
|
'dangerouslySetInnerHTML',
|
|
5
4
|
'onCopy',
|
|
6
5
|
'onCopyCapture',
|
|
@@ -162,11 +161,14 @@ var EventKeys = [
|
|
|
162
161
|
'onAnimationIterationCapture',
|
|
163
162
|
'onTransitionEnd',
|
|
164
163
|
'onTransitionEndCapture',
|
|
165
|
-
];
|
|
166
|
-
|
|
164
|
+
] as const;
|
|
165
|
+
|
|
166
|
+
export type EventKeysType = (typeof EventKeys)[number];
|
|
167
|
+
|
|
168
|
+
export function isEventKey(key: PropertyKey): key is EventKeysType {
|
|
167
169
|
if (typeof key !== 'string') {
|
|
168
170
|
return false;
|
|
169
171
|
}
|
|
170
|
-
|
|
172
|
+
const allowedEventKeys: ReadonlyArray<string> = EventKeys;
|
|
171
173
|
return allowedEventKeys.includes(key);
|
|
172
174
|
}
|