@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
|
@@ -1,68 +1,4 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Do not edit — update by re-vendoring when the recharts devDependency moves.
|
|
3
|
-
function _slicedToArray(r, e) {
|
|
4
|
-
return (
|
|
5
|
-
_arrayWithHoles(r) ||
|
|
6
|
-
_iterableToArrayLimit(r, e) ||
|
|
7
|
-
_unsupportedIterableToArray(r, e) ||
|
|
8
|
-
_nonIterableRest()
|
|
9
|
-
);
|
|
10
|
-
}
|
|
11
|
-
function _nonIterableRest() {
|
|
12
|
-
throw new TypeError(
|
|
13
|
-
'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
|
|
14
|
-
);
|
|
15
|
-
}
|
|
16
|
-
function _unsupportedIterableToArray(r, a) {
|
|
17
|
-
if (r) {
|
|
18
|
-
if ('string' == typeof r) return _arrayLikeToArray(r, a);
|
|
19
|
-
var t = {}.toString.call(r).slice(8, -1);
|
|
20
|
-
return (
|
|
21
|
-
'Object' === t && r.constructor && (t = r.constructor.name),
|
|
22
|
-
'Map' === t || 'Set' === t
|
|
23
|
-
? Array.from(r)
|
|
24
|
-
: 'Arguments' === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)
|
|
25
|
-
? _arrayLikeToArray(r, a)
|
|
26
|
-
: void 0
|
|
27
|
-
);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
function _arrayLikeToArray(r, a) {
|
|
31
|
-
(null == a || a > r.length) && (a = r.length);
|
|
32
|
-
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
|
|
33
|
-
return n;
|
|
34
|
-
}
|
|
35
|
-
function _iterableToArrayLimit(r, l) {
|
|
36
|
-
var t =
|
|
37
|
-
null == r ? null : ('undefined' != typeof Symbol && r[Symbol.iterator]) || r['@@iterator'];
|
|
38
|
-
if (null != t) {
|
|
39
|
-
var e,
|
|
40
|
-
n,
|
|
41
|
-
i,
|
|
42
|
-
u,
|
|
43
|
-
a = [],
|
|
44
|
-
f = !0,
|
|
45
|
-
o = !1;
|
|
46
|
-
try {
|
|
47
|
-
if (((i = (t = t.call(r)).next), 0 === l)) {
|
|
48
|
-
if (Object(t) !== t) return;
|
|
49
|
-
f = !1;
|
|
50
|
-
} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
|
|
51
|
-
} catch (r) {
|
|
52
|
-
((o = !0), (n = r));
|
|
53
|
-
} finally {
|
|
54
|
-
try {
|
|
55
|
-
if (!f && null != t.return && ((u = t.return()), Object(u) !== u)) return;
|
|
56
|
-
} finally {
|
|
57
|
-
if (o) throw n;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
return a;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
function _arrayWithHoles(r) {
|
|
64
|
-
if (Array.isArray(r)) return r;
|
|
65
|
-
}
|
|
1
|
+
// Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
|
|
66
2
|
/**
|
|
67
3
|
* @fileOverview calculate tick values of scale
|
|
68
4
|
* @author xile611, arcthur
|
|
@@ -70,6 +6,9 @@ function _arrayWithHoles(r) {
|
|
|
70
6
|
*/
|
|
71
7
|
import Decimal from 'decimal.js-light';
|
|
72
8
|
import { getDigitCount, rangeStep } from './util/arithmetic';
|
|
9
|
+
import { NumberDomain } from '../types';
|
|
10
|
+
import { NiceTicksAlgorithm } from '../../state/cartesianAxisSlice';
|
|
11
|
+
|
|
73
12
|
/**
|
|
74
13
|
* Calculate a interval of a minimum value and a maximum value
|
|
75
14
|
*
|
|
@@ -77,18 +16,14 @@ import { getDigitCount, rangeStep } from './util/arithmetic';
|
|
|
77
16
|
* @param {Number} max The maximum value
|
|
78
17
|
* @return {Array} An interval
|
|
79
18
|
*/
|
|
80
|
-
export
|
|
81
|
-
|
|
82
|
-
min = _ref2[0],
|
|
83
|
-
max = _ref2[1];
|
|
84
|
-
var validMin = min,
|
|
85
|
-
validMax = max;
|
|
19
|
+
export const getValidInterval = ([min, max]: [number, number]): [number, number] => {
|
|
20
|
+
let [validMin, validMax] = [min, max];
|
|
86
21
|
|
|
87
22
|
// exchange
|
|
88
23
|
if (min > max) {
|
|
89
|
-
validMin = max;
|
|
90
|
-
validMax = min;
|
|
24
|
+
[validMin, validMax] = [max, min];
|
|
91
25
|
}
|
|
26
|
+
|
|
92
27
|
return [validMin, validMax];
|
|
93
28
|
};
|
|
94
29
|
|
|
@@ -100,25 +35,39 @@ export var getValidInterval = (_ref) => {
|
|
|
100
35
|
* @param correctionFactor A correction factor
|
|
101
36
|
* @return The step which is easy to understand between two ticks
|
|
102
37
|
*/
|
|
103
|
-
export
|
|
38
|
+
export const getAdaptiveStep = (
|
|
39
|
+
roughStep: Decimal,
|
|
40
|
+
allowDecimals: boolean,
|
|
41
|
+
correctionFactor: number,
|
|
42
|
+
) => {
|
|
104
43
|
if (roughStep.lte(0)) {
|
|
105
44
|
return new Decimal(0);
|
|
106
45
|
}
|
|
107
|
-
|
|
46
|
+
|
|
47
|
+
const digitCount = getDigitCount(roughStep.toNumber());
|
|
108
48
|
// The ratio between the rough step and the smallest number which has a bigger
|
|
109
49
|
// order of magnitudes than the rough step
|
|
110
|
-
|
|
111
|
-
|
|
50
|
+
const digitCountValue = new Decimal(10).pow(digitCount);
|
|
51
|
+
const stepRatio = roughStep.div(digitCountValue);
|
|
112
52
|
// When an integer and a float multiplied, the accuracy of result may be wrong
|
|
113
|
-
|
|
114
|
-
|
|
53
|
+
const stepRatioScale = digitCount !== 1 ? 0.05 : 0.1;
|
|
54
|
+
const amendStepRatio = new Decimal(Math.ceil(stepRatio.div(stepRatioScale).toNumber()))
|
|
115
55
|
.add(correctionFactor)
|
|
116
56
|
.mul(stepRatioScale);
|
|
117
|
-
|
|
57
|
+
|
|
58
|
+
const formatStep = amendStepRatio.mul(digitCountValue);
|
|
59
|
+
|
|
118
60
|
return allowDecimals
|
|
119
61
|
? new Decimal(formatStep.toNumber())
|
|
120
62
|
: new Decimal(Math.ceil(formatStep.toNumber()));
|
|
121
63
|
};
|
|
64
|
+
|
|
65
|
+
type StepFunction = (
|
|
66
|
+
roughStep: Decimal,
|
|
67
|
+
allowDecimals: boolean,
|
|
68
|
+
correctionFactor: number,
|
|
69
|
+
) => Decimal;
|
|
70
|
+
|
|
122
71
|
/**
|
|
123
72
|
* The snap125 step algorithm snaps to nice numbers (1, 2, 2.5, 5) at each
|
|
124
73
|
* order of magnitude, producing human-friendly tick intervals like
|
|
@@ -131,21 +80,26 @@ export var getAdaptiveStep = (roughStep, allowDecimals, correctionFactor) => {
|
|
|
131
80
|
* @param correctionFactor A correction factor
|
|
132
81
|
* @return The step which is easy to understand between two ticks
|
|
133
82
|
*/
|
|
134
|
-
export
|
|
135
|
-
|
|
83
|
+
export const getSnap125Step: StepFunction = (
|
|
84
|
+
roughStep: Decimal,
|
|
85
|
+
allowDecimals: boolean,
|
|
86
|
+
correctionFactor: number,
|
|
87
|
+
) => {
|
|
136
88
|
if (roughStep.lte(0)) {
|
|
137
89
|
return new Decimal(0);
|
|
138
90
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
91
|
+
|
|
92
|
+
const NICE_STEPS = [1, 2, 2.5, 5];
|
|
93
|
+
|
|
94
|
+
const roughNum = roughStep.toNumber();
|
|
95
|
+
const exponent = Math.floor(new Decimal(roughNum).abs().log(10).toNumber());
|
|
96
|
+
let magnitude = new Decimal(10).pow(exponent);
|
|
143
97
|
|
|
144
98
|
// normalized is in the range [1, 10)
|
|
145
|
-
|
|
99
|
+
const normalized = roughStep.div(magnitude).toNumber();
|
|
146
100
|
|
|
147
101
|
// Find the smallest nice step >= normalized (ceiling)
|
|
148
|
-
|
|
102
|
+
let niceIdx = NICE_STEPS.findIndex((s) => s >= normalized - 1e-10);
|
|
149
103
|
if (niceIdx === -1) {
|
|
150
104
|
// normalized > 5 (e.g. 7.3), move to next order of magnitude
|
|
151
105
|
magnitude = magnitude.mul(10);
|
|
@@ -155,15 +109,14 @@ export var getSnap125Step = (roughStep, allowDecimals, correctionFactor) => {
|
|
|
155
109
|
// Apply correction factor by stepping through the nice number sequence
|
|
156
110
|
niceIdx += correctionFactor;
|
|
157
111
|
if (niceIdx >= NICE_STEPS.length) {
|
|
158
|
-
|
|
112
|
+
const extraMag = Math.floor(niceIdx / NICE_STEPS.length);
|
|
159
113
|
niceIdx %= NICE_STEPS.length;
|
|
160
114
|
magnitude = magnitude.mul(new Decimal(10).pow(extraMag));
|
|
161
115
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
var formatStep = new Decimal(niceStep).mul(magnitude);
|
|
116
|
+
|
|
117
|
+
const niceStep = NICE_STEPS[niceIdx] ?? 1;
|
|
118
|
+
const formatStep = new Decimal(niceStep).mul(magnitude);
|
|
119
|
+
|
|
167
120
|
return allowDecimals ? formatStep : new Decimal(Math.ceil(formatStep.toNumber()));
|
|
168
121
|
};
|
|
169
122
|
|
|
@@ -175,15 +128,22 @@ export var getSnap125Step = (roughStep, allowDecimals, correctionFactor) => {
|
|
|
175
128
|
* @param allowDecimals Allow the ticks to be decimals or not
|
|
176
129
|
* @return array of ticks
|
|
177
130
|
*/
|
|
178
|
-
export
|
|
179
|
-
|
|
131
|
+
export const getTickOfSingleValue = (
|
|
132
|
+
value: number,
|
|
133
|
+
tickCount: number,
|
|
134
|
+
allowDecimals: boolean,
|
|
135
|
+
): Array<number> => {
|
|
136
|
+
let step: Decimal = new Decimal(1);
|
|
180
137
|
// calculate the middle value of ticks
|
|
181
|
-
|
|
138
|
+
let middle = new Decimal(value);
|
|
139
|
+
|
|
182
140
|
if (!middle.isint() && allowDecimals) {
|
|
183
|
-
|
|
141
|
+
const absVal = Math.abs(value);
|
|
142
|
+
|
|
184
143
|
if (absVal < 1) {
|
|
185
144
|
// The step should be a float number when the difference is smaller than 1
|
|
186
145
|
step = new Decimal(10).pow(getDigitCount(value) - 1);
|
|
146
|
+
|
|
187
147
|
middle = new Decimal(Math.floor(middle.div(step).toNumber())).mul(step);
|
|
188
148
|
} else if (absVal > 1) {
|
|
189
149
|
// Return the maximum integer which is smaller than 'value' when 'value' is greater than 1
|
|
@@ -194,11 +154,14 @@ export var getTickOfSingleValue = (value, tickCount, allowDecimals) => {
|
|
|
194
154
|
} else if (!allowDecimals) {
|
|
195
155
|
middle = new Decimal(Math.floor(value));
|
|
196
156
|
}
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
157
|
+
|
|
158
|
+
const middleIndex = Math.floor((tickCount - 1) / 2);
|
|
159
|
+
const ticks: Array<number> = [];
|
|
160
|
+
|
|
161
|
+
for (let i = 0; i < tickCount; i++) {
|
|
200
162
|
ticks.push(middle.add(new Decimal(i - middleIndex).mul(step)).toNumber());
|
|
201
163
|
}
|
|
164
|
+
|
|
202
165
|
return ticks;
|
|
203
166
|
};
|
|
204
167
|
|
|
@@ -212,9 +175,18 @@ export var getTickOfSingleValue = (value, tickCount, allowDecimals) => {
|
|
|
212
175
|
* @param correctionFactor A correction factor
|
|
213
176
|
* @return The step, minimum value of ticks, maximum value of ticks
|
|
214
177
|
*/
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
178
|
+
export const calculateStep = (
|
|
179
|
+
min: number,
|
|
180
|
+
max: number,
|
|
181
|
+
tickCount: number,
|
|
182
|
+
allowDecimals: boolean,
|
|
183
|
+
correctionFactor: number = 0,
|
|
184
|
+
stepFn: StepFunction = getAdaptiveStep,
|
|
185
|
+
): {
|
|
186
|
+
step: Decimal;
|
|
187
|
+
tickMin: Decimal;
|
|
188
|
+
tickMax: Decimal;
|
|
189
|
+
} => {
|
|
218
190
|
// dirty hack (for recharts' test)
|
|
219
191
|
if (!Number.isFinite((max - min) / (tickCount - 1))) {
|
|
220
192
|
return {
|
|
@@ -225,10 +197,14 @@ var _calculateStep = function calculateStep(min, max, tickCount, allowDecimals)
|
|
|
225
197
|
}
|
|
226
198
|
|
|
227
199
|
// The step which is easy to understand between two ticks
|
|
228
|
-
|
|
200
|
+
const step = stepFn(
|
|
201
|
+
new Decimal(max).sub(min).div(tickCount - 1),
|
|
202
|
+
allowDecimals,
|
|
203
|
+
correctionFactor,
|
|
204
|
+
);
|
|
229
205
|
|
|
230
206
|
// A medial value of ticks
|
|
231
|
-
|
|
207
|
+
let middle;
|
|
232
208
|
|
|
233
209
|
// When 0 is inside the interval, 0 should be a tick
|
|
234
210
|
if (min <= 0 && max >= 0) {
|
|
@@ -239,18 +215,21 @@ var _calculateStep = function calculateStep(min, max, tickCount, allowDecimals)
|
|
|
239
215
|
// minus modulo value
|
|
240
216
|
middle = middle.sub(new Decimal(middle).mod(step));
|
|
241
217
|
}
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
218
|
+
|
|
219
|
+
let belowCount = Math.ceil(middle.sub(min).div(step).toNumber());
|
|
220
|
+
let upCount = Math.ceil(new Decimal(max).sub(middle).div(step).toNumber());
|
|
221
|
+
const scaleCount = belowCount + upCount + 1;
|
|
222
|
+
|
|
245
223
|
if (scaleCount > tickCount) {
|
|
246
224
|
// When more ticks need to cover the interval, step should be bigger.
|
|
247
|
-
return
|
|
225
|
+
return calculateStep(min, max, tickCount, allowDecimals, correctionFactor + 1, stepFn);
|
|
248
226
|
}
|
|
249
227
|
if (scaleCount < tickCount) {
|
|
250
228
|
// When less ticks can cover the interval, we should add some additional ticks
|
|
251
229
|
upCount = max > 0 ? upCount + (tickCount - scaleCount) : upCount;
|
|
252
230
|
belowCount = max > 0 ? belowCount : belowCount + (tickCount - scaleCount);
|
|
253
231
|
}
|
|
232
|
+
|
|
254
233
|
return {
|
|
255
234
|
step,
|
|
256
235
|
tickMin: middle.sub(new Decimal(belowCount).mul(step)),
|
|
@@ -268,38 +247,36 @@ var _calculateStep = function calculateStep(min, max, tickCount, allowDecimals)
|
|
|
268
247
|
* @param niceTicksMode The algorithm to use for calculating nice ticks.
|
|
269
248
|
* @return array of ticks
|
|
270
249
|
*/
|
|
271
|
-
export
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
278
|
-
var niceTicksMode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'auto';
|
|
250
|
+
export const getNiceTickValues = (
|
|
251
|
+
[min, max]: NumberDomain,
|
|
252
|
+
tickCount = 6,
|
|
253
|
+
allowDecimals = true,
|
|
254
|
+
niceTicksMode: NiceTicksAlgorithm = 'auto',
|
|
255
|
+
): number[] => {
|
|
279
256
|
// More than two ticks should be return
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
cormin = _getValidInterval2[0],
|
|
284
|
-
cormax = _getValidInterval2[1];
|
|
257
|
+
const count = Math.max(tickCount, 2);
|
|
258
|
+
const [cormin, cormax] = getValidInterval([min, max]);
|
|
259
|
+
|
|
285
260
|
if (cormin === -Infinity || cormax === Infinity) {
|
|
286
|
-
|
|
261
|
+
const values: Array<number> =
|
|
287
262
|
cormax === Infinity
|
|
288
263
|
? [cormin, ...Array(tickCount - 1).fill(Infinity)]
|
|
289
264
|
: [...Array(tickCount - 1).fill(-Infinity), cormax];
|
|
290
|
-
|
|
265
|
+
|
|
266
|
+
return min > max ? values.reverse() : values;
|
|
291
267
|
}
|
|
268
|
+
|
|
292
269
|
if (cormin === cormax) {
|
|
293
270
|
return getTickOfSingleValue(cormin, tickCount, allowDecimals);
|
|
294
271
|
}
|
|
295
|
-
|
|
272
|
+
|
|
273
|
+
const stepFn = niceTicksMode === 'snap125' ? getSnap125Step : getAdaptiveStep;
|
|
296
274
|
|
|
297
275
|
// Get the step between two ticks
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
var values = rangeStep(tickMin, tickMax.add(new Decimal(0.1).mul(step)), step);
|
|
276
|
+
const { step, tickMin, tickMax } = calculateStep(cormin, cormax, count, allowDecimals, 0, stepFn);
|
|
277
|
+
|
|
278
|
+
const values = rangeStep(tickMin, tickMax.add(new Decimal(0.1).mul(step)), step);
|
|
279
|
+
|
|
303
280
|
return min > max ? values.reverse() : values;
|
|
304
281
|
};
|
|
305
282
|
|
|
@@ -313,27 +290,28 @@ export var getNiceTickValues = function getNiceTickValues(_ref3) {
|
|
|
313
290
|
* @param niceTicksMode The algorithm to use for calculating nice ticks. See {@link NiceTicksAlgorithm}.
|
|
314
291
|
* @return array of ticks
|
|
315
292
|
*/
|
|
316
|
-
export
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
293
|
+
export const getTickValuesFixedDomain = (
|
|
294
|
+
[min, max]: NumberDomain,
|
|
295
|
+
tickCount: number,
|
|
296
|
+
allowDecimals = true,
|
|
297
|
+
niceTicksMode: NiceTicksAlgorithm = 'auto',
|
|
298
|
+
) => {
|
|
322
299
|
// More than two ticks should be return
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
cormin = _getValidInterval4[0],
|
|
326
|
-
cormax = _getValidInterval4[1];
|
|
300
|
+
const [cormin, cormax] = getValidInterval([min, max]);
|
|
301
|
+
|
|
327
302
|
if (cormin === -Infinity || cormax === Infinity) {
|
|
328
303
|
return [min, max];
|
|
329
304
|
}
|
|
305
|
+
|
|
330
306
|
if (cormin === cormax) {
|
|
331
307
|
return [cormin];
|
|
332
308
|
}
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
309
|
+
|
|
310
|
+
const stepFn = niceTicksMode === 'snap125' ? getSnap125Step : getAdaptiveStep;
|
|
311
|
+
const count = Math.max(tickCount, 2);
|
|
312
|
+
const step = stepFn(new Decimal(cormax).sub(cormin).div(count - 1), allowDecimals, 0);
|
|
313
|
+
let values = [...rangeStep(new Decimal(cormin), new Decimal(cormax), step), cormax];
|
|
314
|
+
|
|
337
315
|
if (allowDecimals === false) {
|
|
338
316
|
/*
|
|
339
317
|
* allowDecimals is false means that we want to have integer ticks.
|
|
@@ -345,10 +323,11 @@ export var getTickValuesFixedDomain = function getTickValuesFixedDomain(_ref5, t
|
|
|
345
323
|
* with a duplicate trailing tick. Remove it.
|
|
346
324
|
*/
|
|
347
325
|
values = values.map((value) => Math.round(value));
|
|
348
|
-
|
|
326
|
+
const last = values.length - 1;
|
|
349
327
|
if (last > 0 && values[last] === values[last - 1]) {
|
|
350
328
|
values = values.slice(0, last);
|
|
351
329
|
}
|
|
352
330
|
}
|
|
331
|
+
|
|
353
332
|
return min > max ? values.reverse() : values;
|
|
354
333
|
};
|
|
@@ -1,5 +1,4 @@
|
|
|
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
|
/**
|
|
4
3
|
* @fileOverview Some common arithmetic methods
|
|
5
4
|
* @author xile611
|
|
@@ -16,13 +15,15 @@ import Decimal from 'decimal.js-light';
|
|
|
16
15
|
* @param {Number} value The number
|
|
17
16
|
* @return {Integer} Digit count
|
|
18
17
|
*/
|
|
19
|
-
function getDigitCount(value) {
|
|
20
|
-
|
|
18
|
+
function getDigitCount(value: number) {
|
|
19
|
+
let result;
|
|
20
|
+
|
|
21
21
|
if (value === 0) {
|
|
22
22
|
result = 1;
|
|
23
23
|
} else {
|
|
24
24
|
result = Math.floor(new Decimal(value).abs().log(10).toNumber()) + 1;
|
|
25
25
|
}
|
|
26
|
+
|
|
26
27
|
return result;
|
|
27
28
|
}
|
|
28
29
|
|
|
@@ -35,17 +36,20 @@ function getDigitCount(value) {
|
|
|
35
36
|
* @param {Decimal} step Step size
|
|
36
37
|
* @return {Array} Array of numbers
|
|
37
38
|
*/
|
|
38
|
-
function rangeStep(start, end, step) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
function rangeStep(start: Decimal, end: Decimal, step: Decimal): Array<number> {
|
|
40
|
+
let num = new Decimal(start);
|
|
41
|
+
let i = 0;
|
|
42
|
+
const result: Array<number> = [];
|
|
42
43
|
|
|
43
44
|
// magic number to prevent infinite loop
|
|
44
45
|
while (num.lt(end) && i < 100000) {
|
|
45
46
|
result.push(num.toNumber());
|
|
47
|
+
|
|
46
48
|
num = num.add(step);
|
|
47
49
|
i++;
|
|
48
50
|
}
|
|
51
|
+
|
|
49
52
|
return result;
|
|
50
53
|
}
|
|
54
|
+
|
|
51
55
|
export { rangeStep, getDigitCount };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
|
|
2
|
+
import { StackSeriesIdentifier } from './stackTypes';
|
|
3
|
+
import { MaybeStackedGraphicalItem } from '../../state/types/StackedGraphicalItem';
|
|
4
|
+
|
|
5
|
+
export function getStackSeriesIdentifier(
|
|
6
|
+
graphicalItem: MaybeStackedGraphicalItem,
|
|
7
|
+
): StackSeriesIdentifier;
|
|
8
|
+
export function getStackSeriesIdentifier(graphicalItem: undefined): undefined;
|
|
9
|
+
export function getStackSeriesIdentifier(
|
|
10
|
+
graphicalItem: MaybeStackedGraphicalItem | undefined,
|
|
11
|
+
): StackSeriesIdentifier | undefined;
|
|
12
|
+
/**
|
|
13
|
+
* Returns identifier for stack series which is one individual graphical item in the stack.
|
|
14
|
+
* @param graphicalItem - The graphical item representing the series in the stack.
|
|
15
|
+
* @return The identifier for the series in the stack
|
|
16
|
+
*/
|
|
17
|
+
export function getStackSeriesIdentifier(
|
|
18
|
+
graphicalItem: MaybeStackedGraphicalItem | undefined,
|
|
19
|
+
): StackSeriesIdentifier | undefined {
|
|
20
|
+
return graphicalItem?.id;
|
|
21
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
|
|
2
|
+
import { Series } from 'victory-vendor/d3-shape';
|
|
3
|
+
import { StackId } from '../ChartUtils';
|
|
4
|
+
import { GraphicalItemId } from '../../state/graphicalItemsSlice';
|
|
5
|
+
import { MaybeStackedGraphicalItem } from '../../state/types/StackedGraphicalItem';
|
|
6
|
+
|
|
7
|
+
/*
|
|
8
|
+
* So chart stacks come in layers:
|
|
9
|
+
*
|
|
10
|
+
* - The top layer is the stack itself, which is a collection of series. The stack is identified by the `StackId` of the stack.
|
|
11
|
+
* The StackId is defined by the `stackId` prop of the graphical items.
|
|
12
|
+
* A typical stacked chart will have a single stack, but Recharts allows for multiple stacks.
|
|
13
|
+
*
|
|
14
|
+
* - One stack will have multiple series, which are the individual data series that make up the stack.
|
|
15
|
+
* This is the second layer of the stack.
|
|
16
|
+
* One series is represented by a single `GraphicalItem` in the stack.
|
|
17
|
+
* This function returns the identifier for the series.
|
|
18
|
+
*
|
|
19
|
+
* - Finally the third layer is the data point itself, which is a tuple of two numbers.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Collection of all stacks in the chart.
|
|
24
|
+
* A simple stacked chart will have a single stack. Recharts allows for multiple stacks.
|
|
25
|
+
* In a chart without stacks, this will be an empty object.
|
|
26
|
+
*/
|
|
27
|
+
export type AllStackGroups = Record<StackId, StackGroup>;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* One stack group is a collection of series that are stacked together.
|
|
31
|
+
* The stack series and graphical items are joined by the StackSeriesIdentifier.
|
|
32
|
+
*/
|
|
33
|
+
export type StackGroup = {
|
|
34
|
+
readonly stackedData: ReadonlyArray<StackSeries>;
|
|
35
|
+
readonly graphicalItems: ReadonlyArray<MaybeStackedGraphicalItem>;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Stack series is a collection of data points. This represents one individual graphical item in the stack.
|
|
40
|
+
* There are presumably other series in the stack, which are represented by other `StackSeries` objects
|
|
41
|
+
* that this object will not know about.
|
|
42
|
+
* The coordinates of the data points in the series already include the baseline of the previous series in the stack.
|
|
43
|
+
*/
|
|
44
|
+
export type StackSeries = Series<StackDataPoint, StackSeriesIdentifier>;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Stack data point is a tuple of two numbers:
|
|
48
|
+
* first, where the previous stack series ended,
|
|
49
|
+
* and second, where the current stack series ends.
|
|
50
|
+
* This allows for setting the baseline of the next series in the stack.
|
|
51
|
+
*/
|
|
52
|
+
export type StackDataPoint = [number, number];
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Identifier for a series in the stack.
|
|
56
|
+
* Used to join the stack series with the graphical items in the stack.
|
|
57
|
+
*/
|
|
58
|
+
export type StackSeriesIdentifier = GraphicalItemId;
|