@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,6 +1,5 @@
|
|
|
1
|
-
//
|
|
2
|
-
|
|
3
|
-
export var COLOR_PANEL = [
|
|
1
|
+
// Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
|
|
2
|
+
export const COLOR_PANEL = [
|
|
4
3
|
'#1890FF',
|
|
5
4
|
'#66B5FF',
|
|
6
5
|
'#41D9C7',
|
|
@@ -32,11 +31,12 @@ export var COLOR_PANEL = [
|
|
|
32
31
|
* The index is the position of the element in the data array.
|
|
33
32
|
* This can be either a number (for array-based charts) or a string (for the charts that have a matrix-shaped data).
|
|
34
33
|
*/
|
|
35
|
-
export
|
|
34
|
+
export const DATA_ITEM_INDEX_ATTRIBUTE_NAME = 'data-recharts-item-index';
|
|
36
35
|
|
|
37
36
|
/**
|
|
38
37
|
* We use this attribute to identify which element is the one that the user is touching.
|
|
39
38
|
* Unlike dataKey, or name, it is always unique.
|
|
40
39
|
*/
|
|
41
|
-
export
|
|
42
|
-
|
|
40
|
+
export const DATA_ITEM_GRAPHICAL_ITEM_ID_ATTRIBUTE_NAME = 'data-recharts-item-id';
|
|
41
|
+
|
|
42
|
+
export const DEFAULT_Y_AXIS_WIDTH = 60;
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
// Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
|
|
2
|
+
import type { CSSProperties } from './OctaneTypes';
|
|
3
|
+
|
|
4
|
+
import { Global } from './Global';
|
|
5
|
+
import { Size } from './types';
|
|
6
|
+
import { LRUCache } from './LRUCache';
|
|
7
|
+
|
|
8
|
+
export interface TextMeasurementConfig {
|
|
9
|
+
/** Maximum number of items to cache */
|
|
10
|
+
cacheSize: number;
|
|
11
|
+
/** Whether to enable caching */
|
|
12
|
+
enableCache: boolean;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const defaultConfig: TextMeasurementConfig = {
|
|
16
|
+
cacheSize: 2000,
|
|
17
|
+
enableCache: true,
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
let currentConfig = { ...defaultConfig };
|
|
21
|
+
|
|
22
|
+
let stringCache = new LRUCache<string, Size>(currentConfig.cacheSize);
|
|
23
|
+
const SPAN_STYLE = {
|
|
24
|
+
position: 'absolute',
|
|
25
|
+
top: '-20000px',
|
|
26
|
+
left: 0,
|
|
27
|
+
padding: 0,
|
|
28
|
+
margin: 0,
|
|
29
|
+
border: 'none',
|
|
30
|
+
whiteSpace: 'pre',
|
|
31
|
+
};
|
|
32
|
+
const MEASUREMENT_SPAN_ID = 'recharts_measurement_span';
|
|
33
|
+
|
|
34
|
+
function createCacheKey(text: string | number, style: CSSProperties): string {
|
|
35
|
+
// Simple string concatenation for better performance than JSON.stringify
|
|
36
|
+
const fontSize = style.fontSize || '';
|
|
37
|
+
const fontFamily = style.fontFamily || '';
|
|
38
|
+
const fontWeight = style.fontWeight || '';
|
|
39
|
+
const fontStyle = style.fontStyle || '';
|
|
40
|
+
const letterSpacing = style.letterSpacing || '';
|
|
41
|
+
const textTransform = style.textTransform || '';
|
|
42
|
+
|
|
43
|
+
return `${text}|${fontSize}|${fontFamily}|${fontWeight}|${fontStyle}|${letterSpacing}|${textTransform}`;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Measure text using DOM (accurate but slower)
|
|
48
|
+
* @param text - The text to measure
|
|
49
|
+
* @param style - CSS style properties to apply
|
|
50
|
+
* @returns The size of the text
|
|
51
|
+
*/
|
|
52
|
+
const measureTextWithDOM = (text: string | number, style: CSSProperties): Size => {
|
|
53
|
+
try {
|
|
54
|
+
let measurementSpan = document.getElementById(MEASUREMENT_SPAN_ID);
|
|
55
|
+
if (!measurementSpan) {
|
|
56
|
+
measurementSpan = document.createElement('span');
|
|
57
|
+
measurementSpan.setAttribute('id', MEASUREMENT_SPAN_ID);
|
|
58
|
+
measurementSpan.setAttribute('aria-hidden', 'true');
|
|
59
|
+
document.body.appendChild(measurementSpan);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Apply styles directly without unnecessary object creation
|
|
63
|
+
Object.assign(measurementSpan.style, SPAN_STYLE, style);
|
|
64
|
+
measurementSpan.textContent = `${text}`;
|
|
65
|
+
|
|
66
|
+
const rect = measurementSpan.getBoundingClientRect();
|
|
67
|
+
return { width: rect.width, height: rect.height };
|
|
68
|
+
} catch {
|
|
69
|
+
return { width: 0, height: 0 };
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
export const getStringSize = (text: string | number, style: CSSProperties = {}): Size => {
|
|
74
|
+
if (text === undefined || text === null || Global.isSsr) {
|
|
75
|
+
return { width: 0, height: 0 };
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// If caching is disabled, measure directly
|
|
79
|
+
if (!currentConfig.enableCache) {
|
|
80
|
+
return measureTextWithDOM(text, style);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const cacheKey = createCacheKey(text, style);
|
|
84
|
+
const cachedResult = stringCache.get(cacheKey);
|
|
85
|
+
|
|
86
|
+
if (cachedResult) {
|
|
87
|
+
return cachedResult;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// Measure using DOM
|
|
91
|
+
const result = measureTextWithDOM(text, style);
|
|
92
|
+
|
|
93
|
+
// Store in LRU cache
|
|
94
|
+
stringCache.set(cacheKey, result);
|
|
95
|
+
|
|
96
|
+
return result;
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Configure text measurement behavior
|
|
101
|
+
* @param config - Partial configuration to apply
|
|
102
|
+
* @returns void
|
|
103
|
+
*/
|
|
104
|
+
export const configureTextMeasurement = (config: Partial<TextMeasurementConfig>): void => {
|
|
105
|
+
const newConfig = { ...currentConfig, ...config };
|
|
106
|
+
|
|
107
|
+
if (newConfig.cacheSize !== currentConfig.cacheSize) {
|
|
108
|
+
stringCache = new LRUCache<string, Size>(newConfig.cacheSize);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
currentConfig = newConfig;
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Get current text measurement configuration
|
|
116
|
+
* @returns Current configuration
|
|
117
|
+
*/
|
|
118
|
+
export const getTextMeasurementConfig = (): TextMeasurementConfig => ({ ...currentConfig });
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Clear the string size cache. Useful for testing or memory management.
|
|
122
|
+
* @returns void
|
|
123
|
+
*/
|
|
124
|
+
export const clearStringCache = (): void => {
|
|
125
|
+
stringCache.clear();
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Get cache statistics for debugging purposes.
|
|
130
|
+
* @returns Cache statistics including size and max size
|
|
131
|
+
*/
|
|
132
|
+
export const getStringCacheStats = () => ({
|
|
133
|
+
size: stringCache.size(),
|
|
134
|
+
maxSize: currentConfig.cacheSize,
|
|
135
|
+
});
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Do not edit — update by re-vendoring when the recharts devDependency moves.
|
|
3
|
-
// Sanctioned deviation: es-toolkit compat imports normalized to the ESM barrel
|
|
4
|
-
// ('es-toolkit/compat') — the per-function subpaths are CJS-only and break
|
|
5
|
-
// consumers that compile this binding from source (vite dev prebundle).
|
|
1
|
+
// Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
|
|
6
2
|
import { get } from 'es-toolkit/compat';
|
|
3
|
+
import { NonEmptyArray, Percent } from './types';
|
|
7
4
|
import { round } from './round';
|
|
8
|
-
|
|
5
|
+
|
|
6
|
+
export const mathSign = (value: number) => {
|
|
9
7
|
if (value === 0) {
|
|
10
8
|
return 0;
|
|
11
9
|
}
|
|
12
10
|
if (value > 0) {
|
|
13
11
|
return 1;
|
|
14
12
|
}
|
|
13
|
+
|
|
15
14
|
return -1;
|
|
16
15
|
};
|
|
17
|
-
|
|
16
|
+
|
|
17
|
+
export const isNan = (value: unknown): value is number => {
|
|
18
18
|
// eslint-disable-next-line eqeqeq
|
|
19
19
|
return typeof value == 'number' && value != +value;
|
|
20
20
|
};
|
|
@@ -26,15 +26,20 @@ export var isNan = (value) => {
|
|
|
26
26
|
* @param {string | number | undefined} value The value to check
|
|
27
27
|
* @returns {boolean} true if the value is a percent string
|
|
28
28
|
*/
|
|
29
|
-
export
|
|
29
|
+
export const isPercent = (value: string | number | undefined): value is Percent =>
|
|
30
30
|
typeof value === 'string' && value.length > 1 && value.indexOf('%') === value.length - 1;
|
|
31
|
-
|
|
31
|
+
|
|
32
|
+
export const isNumber = (value: unknown): value is number =>
|
|
32
33
|
(typeof value === 'number' || value instanceof Number) && !isNan(value);
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
|
|
35
|
+
export const isNumOrStr = (value: unknown): value is number | string =>
|
|
36
|
+
isNumber(value) || typeof value === 'string';
|
|
37
|
+
|
|
38
|
+
let idCounter = 0;
|
|
39
|
+
export const uniqueId = (prefix?: string) => {
|
|
40
|
+
const id = ++idCounter;
|
|
41
|
+
|
|
42
|
+
return `${prefix || ''}${id}`;
|
|
38
43
|
};
|
|
39
44
|
|
|
40
45
|
/**
|
|
@@ -52,43 +57,55 @@ export var uniqueId = (prefix) => {
|
|
|
52
57
|
* @param validate - If true, ensures the result does not exceed `totalValue` (when provided).
|
|
53
58
|
* @returns The calculated value, or `defaultValue` for invalid input.
|
|
54
59
|
*/
|
|
55
|
-
export
|
|
56
|
-
|
|
57
|
-
|
|
60
|
+
export const getPercentValue = (
|
|
61
|
+
percent: number | string | undefined,
|
|
62
|
+
totalValue: number | undefined,
|
|
63
|
+
defaultValue = 0,
|
|
64
|
+
validate = false,
|
|
65
|
+
) => {
|
|
58
66
|
if (!isNumber(percent) && typeof percent !== 'string') {
|
|
59
67
|
return defaultValue;
|
|
60
68
|
}
|
|
61
|
-
|
|
69
|
+
|
|
70
|
+
let value: number;
|
|
71
|
+
|
|
62
72
|
if (isPercent(percent)) {
|
|
63
73
|
if (totalValue == null) {
|
|
64
74
|
return defaultValue;
|
|
65
75
|
}
|
|
66
|
-
|
|
67
|
-
value = (totalValue * parseFloat(percent.slice(0, index))) / 100;
|
|
76
|
+
const index = percent.indexOf('%');
|
|
77
|
+
value = (totalValue * parseFloat((percent as string).slice(0, index))) / 100;
|
|
68
78
|
} else {
|
|
69
79
|
value = +percent;
|
|
70
80
|
}
|
|
81
|
+
|
|
71
82
|
if (isNan(value)) {
|
|
72
83
|
value = defaultValue;
|
|
73
84
|
}
|
|
85
|
+
|
|
74
86
|
if (validate && totalValue != null && value > totalValue) {
|
|
75
87
|
value = totalValue;
|
|
76
88
|
}
|
|
89
|
+
|
|
77
90
|
return value;
|
|
78
91
|
};
|
|
79
|
-
|
|
92
|
+
|
|
93
|
+
export const hasDuplicate = (ary: ReadonlyArray<unknown>): boolean => {
|
|
80
94
|
if (!Array.isArray(ary)) {
|
|
81
95
|
return false;
|
|
82
96
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
97
|
+
|
|
98
|
+
const len = ary.length;
|
|
99
|
+
const cache: Record<string, boolean> = {};
|
|
100
|
+
|
|
101
|
+
for (let i = 0; i < len; i++) {
|
|
86
102
|
if (!cache[String(ary[i])]) {
|
|
87
103
|
cache[String(ary[i])] = true;
|
|
88
104
|
} else {
|
|
89
105
|
return true;
|
|
90
106
|
}
|
|
91
107
|
}
|
|
108
|
+
|
|
92
109
|
return false;
|
|
93
110
|
};
|
|
94
111
|
|
|
@@ -109,17 +126,56 @@ export var hasDuplicate = (ary) => {
|
|
|
109
126
|
*
|
|
110
127
|
* @since 3.9
|
|
111
128
|
*/
|
|
112
|
-
|
|
113
|
-
|
|
129
|
+
export function interpolate(
|
|
130
|
+
start: number | null | undefined,
|
|
131
|
+
end: number,
|
|
132
|
+
animationElapsedTime: number,
|
|
133
|
+
): number;
|
|
134
|
+
export function interpolate(
|
|
135
|
+
start: number | null | undefined,
|
|
136
|
+
end: null,
|
|
137
|
+
animationElapsedTime: number,
|
|
138
|
+
): null;
|
|
139
|
+
export function interpolate(
|
|
140
|
+
start: number | null | undefined,
|
|
141
|
+
end: undefined,
|
|
142
|
+
animationElapsedTime: number,
|
|
143
|
+
): undefined;
|
|
144
|
+
export function interpolate(
|
|
145
|
+
start: number | null | undefined,
|
|
146
|
+
end: number | null,
|
|
147
|
+
animationElapsedTime: number,
|
|
148
|
+
): number | null;
|
|
149
|
+
export function interpolate(
|
|
150
|
+
start: number | null | undefined,
|
|
151
|
+
end: number | undefined,
|
|
152
|
+
animationElapsedTime: number,
|
|
153
|
+
): number | undefined;
|
|
154
|
+
export function interpolate(
|
|
155
|
+
start: number | null | undefined,
|
|
156
|
+
end: number | null | undefined,
|
|
157
|
+
animationElapsedTime: number,
|
|
158
|
+
): number | null | undefined;
|
|
159
|
+
export function interpolate(
|
|
160
|
+
start: number | null | undefined,
|
|
161
|
+
end: number | null | undefined,
|
|
162
|
+
animationElapsedTime: number,
|
|
163
|
+
): number | null | undefined {
|
|
114
164
|
if (isNumber(start) && isNumber(end)) {
|
|
115
165
|
return round(start + animationElapsedTime * (end - start));
|
|
116
166
|
}
|
|
117
167
|
return end;
|
|
118
168
|
}
|
|
119
|
-
|
|
169
|
+
|
|
170
|
+
export function findEntryInArray<T>(
|
|
171
|
+
ary: ReadonlyArray<T>,
|
|
172
|
+
specifiedKey: number | string | ((entry: T) => unknown),
|
|
173
|
+
specifiedValue: unknown,
|
|
174
|
+
): T | undefined {
|
|
120
175
|
if (!ary || !ary.length) {
|
|
121
176
|
return undefined;
|
|
122
177
|
}
|
|
178
|
+
|
|
123
179
|
return ary.find(
|
|
124
180
|
(entry) =>
|
|
125
181
|
entry &&
|
|
@@ -127,25 +183,36 @@ export function findEntryInArray(ary, specifiedKey, specifiedValue) {
|
|
|
127
183
|
specifiedValue,
|
|
128
184
|
);
|
|
129
185
|
}
|
|
186
|
+
|
|
187
|
+
type LinearRegressionResult = {
|
|
188
|
+
xmin: number;
|
|
189
|
+
xmax: number;
|
|
190
|
+
a: number;
|
|
191
|
+
b: number;
|
|
192
|
+
};
|
|
193
|
+
|
|
130
194
|
/**
|
|
131
195
|
* The least square linear regression
|
|
132
196
|
* @param {Array} data The array of points
|
|
133
197
|
* @returns {Object} The domain of x, and the parameter of linear function
|
|
134
198
|
*/
|
|
135
|
-
export
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
199
|
+
export const getLinearRegression = (
|
|
200
|
+
data: NonEmptyArray<{ cx?: number | null; cy?: number | null }>,
|
|
201
|
+
): LinearRegressionResult => {
|
|
202
|
+
const len = data.length;
|
|
203
|
+
let xsum = 0;
|
|
204
|
+
let ysum = 0;
|
|
205
|
+
let xysum = 0;
|
|
206
|
+
let xxsum = 0;
|
|
207
|
+
let xmin = Infinity;
|
|
208
|
+
let xmax = -Infinity;
|
|
209
|
+
let xcurrent = 0;
|
|
210
|
+
let ycurrent = 0;
|
|
211
|
+
|
|
212
|
+
for (let i = 0; i < len; i++) {
|
|
213
|
+
xcurrent = data[i]?.cx || 0;
|
|
214
|
+
ycurrent = data[i]?.cy || 0;
|
|
215
|
+
|
|
149
216
|
xsum += xcurrent;
|
|
150
217
|
ysum += ycurrent;
|
|
151
218
|
xysum += xcurrent * ycurrent;
|
|
@@ -153,8 +220,10 @@ export var getLinearRegression = (data) => {
|
|
|
153
220
|
xmin = Math.min(xmin, xcurrent);
|
|
154
221
|
xmax = Math.max(xmax, xcurrent);
|
|
155
222
|
}
|
|
156
|
-
|
|
223
|
+
|
|
224
|
+
const a =
|
|
157
225
|
len * xxsum !== xsum * xsum ? (len * xysum - xsum * ysum) / (len * xxsum - xsum * xsum) : 0;
|
|
226
|
+
|
|
158
227
|
return {
|
|
159
228
|
xmin,
|
|
160
229
|
xmax,
|
|
@@ -162,12 +231,15 @@ export var getLinearRegression = (data) => {
|
|
|
162
231
|
b: (ysum - a * xsum) / len,
|
|
163
232
|
};
|
|
164
233
|
};
|
|
234
|
+
|
|
235
|
+
type Nullish = null | undefined;
|
|
236
|
+
|
|
165
237
|
/**
|
|
166
238
|
* Checks if the value is null or undefined
|
|
167
239
|
* @param value The value to check
|
|
168
240
|
* @returns true if the value is null or undefined
|
|
169
241
|
*/
|
|
170
|
-
export
|
|
242
|
+
export const isNullish = (value: unknown): value is Nullish => {
|
|
171
243
|
return value === null || typeof value === 'undefined';
|
|
172
244
|
};
|
|
173
245
|
|
|
@@ -176,11 +248,12 @@ export var isNullish = (value) => {
|
|
|
176
248
|
* @param {string} value The string to uppercase
|
|
177
249
|
* @returns {string} The uppercased string
|
|
178
250
|
*/
|
|
179
|
-
export
|
|
251
|
+
export const upperFirst = (value: string): string => {
|
|
180
252
|
if (isNullish(value)) {
|
|
181
253
|
return value;
|
|
182
254
|
}
|
|
183
|
-
|
|
255
|
+
|
|
256
|
+
return `${value.charAt(0).toUpperCase()}${value.slice(1)}`;
|
|
184
257
|
};
|
|
185
258
|
|
|
186
259
|
/**
|
|
@@ -188,7 +261,7 @@ export var upperFirst = (value) => {
|
|
|
188
261
|
* @param value The value to check
|
|
189
262
|
* @returns true if the value is not null nor undefined
|
|
190
263
|
*/
|
|
191
|
-
export function isNotNil(value) {
|
|
264
|
+
export function isNotNil<T>(value: T): value is NonNullable<T> {
|
|
192
265
|
return value != null;
|
|
193
266
|
}
|
|
194
267
|
|
|
@@ -196,4 +269,4 @@ export function isNotNil(value) {
|
|
|
196
269
|
* No-operation function that does nothing.
|
|
197
270
|
* Useful as a placeholder or default callback function.
|
|
198
271
|
*/
|
|
199
|
-
export function noop() {}
|
|
272
|
+
export function noop(): undefined {}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
|
|
2
|
+
import EventEmitter from 'eventemitter3';
|
|
3
|
+
import { PayloadAction } from '@reduxjs/toolkit';
|
|
4
|
+
import { TooltipSyncState } from '../state/tooltipSlice';
|
|
5
|
+
import { BrushStartEndIndex } from '../context/brushUpdateContext';
|
|
6
|
+
|
|
7
|
+
const eventCenter: EventEmitter<EventTypes> = new EventEmitter();
|
|
8
|
+
|
|
9
|
+
export { eventCenter };
|
|
10
|
+
|
|
11
|
+
export const TOOLTIP_SYNC_EVENT = 'recharts.syncEvent.tooltip';
|
|
12
|
+
|
|
13
|
+
export const BRUSH_SYNC_EVENT = 'recharts.syncEvent.brush';
|
|
14
|
+
|
|
15
|
+
interface EventTypes {
|
|
16
|
+
[TOOLTIP_SYNC_EVENT](
|
|
17
|
+
syncId: number | string,
|
|
18
|
+
data: PayloadAction<TooltipSyncState>,
|
|
19
|
+
emitter: symbol,
|
|
20
|
+
): void;
|
|
21
|
+
[BRUSH_SYNC_EVENT](syncId: number | string, data: BrushStartEndIndex, emitter: symbol): void;
|
|
22
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as React from 'octane';
|
|
2
|
-
import { Props as FunnelProps, FunnelTrapezoidItem } from '../cartesian/Funnel';
|
|
3
|
-
import { Trapezoid } from '../shape/Trapezoid';
|
|
2
|
+
import { Props as FunnelProps, FunnelTrapezoidItem } from '../cartesian/Funnel.tsrx';
|
|
3
|
+
import { Trapezoid } from '../shape/Trapezoid.tsrx';
|
|
4
4
|
import { ShapeAnimationProps } from './types';
|
|
5
|
-
import { Shape } from './ActiveShapeUtils';
|
|
5
|
+
import { Shape } from './ActiveShapeUtils.tsrx';
|
|
6
6
|
|
|
7
7
|
export const defaultFunnelShape = Trapezoid;
|
|
8
8
|
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
|
|
2
|
+
const parseIsSsrByDefault = (): boolean =>
|
|
3
|
+
!(
|
|
4
|
+
typeof window !== 'undefined' &&
|
|
5
|
+
window.document &&
|
|
6
|
+
Boolean(window.document.createElement) &&
|
|
7
|
+
window.setTimeout
|
|
8
|
+
);
|
|
9
|
+
|
|
10
|
+
export const Global = {
|
|
11
|
+
devToolsEnabled: true,
|
|
12
|
+
isSsr: parseIsSsrByDefault(),
|
|
13
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
|
|
2
|
+
export type IfOverflow = 'hidden' | 'visible' | 'discard' | 'extendDomain';
|
|
3
|
+
|
|
4
|
+
export interface Overflowable {
|
|
5
|
+
/**
|
|
6
|
+
* Defines how to draw this component if it falls partly outside the canvas:
|
|
7
|
+
*
|
|
8
|
+
* - `discard`: the whole component will not be drawn at all
|
|
9
|
+
* - `hidden`: the component will be clipped to the chart plot area
|
|
10
|
+
* - `visible`: the component will be drawn completely
|
|
11
|
+
* - `extendDomain`: the domain of the overflown axis will be extended such that the whole component fits into the plot area
|
|
12
|
+
*
|
|
13
|
+
* @defaultValue discard
|
|
14
|
+
*/
|
|
15
|
+
ifOverflow?: IfOverflow;
|
|
16
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
|
|
2
|
+
/**
|
|
3
|
+
* Simple LRU (Least Recently Used) cache implementation
|
|
4
|
+
*/
|
|
5
|
+
export class LRUCache<K, V> {
|
|
6
|
+
private cache = new Map<K, V>();
|
|
7
|
+
|
|
8
|
+
private maxSize: number;
|
|
9
|
+
|
|
10
|
+
constructor(maxSize: number) {
|
|
11
|
+
this.maxSize = maxSize;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
get(key: K): V | undefined {
|
|
15
|
+
const value = this.cache.get(key);
|
|
16
|
+
if (value !== undefined) {
|
|
17
|
+
this.cache.delete(key);
|
|
18
|
+
this.cache.set(key, value);
|
|
19
|
+
}
|
|
20
|
+
return value;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
set(key: K, value: V): void {
|
|
24
|
+
if (this.cache.has(key)) {
|
|
25
|
+
this.cache.delete(key);
|
|
26
|
+
} else if (this.cache.size >= this.maxSize) {
|
|
27
|
+
const firstKey = this.cache.keys().next().value;
|
|
28
|
+
if (firstKey != null) {
|
|
29
|
+
this.cache.delete(firstKey);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
this.cache.set(key, value);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
clear(): void {
|
|
36
|
+
this.cache.clear();
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
size(): number {
|
|
40
|
+
return this.cache.size;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -1,19 +1,13 @@
|
|
|
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
|
/* eslint no-console: 0 */
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2;
|
|
8
|
-
_key < _len;
|
|
9
|
-
_key++
|
|
10
|
-
) {
|
|
11
|
-
args[_key - 2] = arguments[_key];
|
|
12
|
-
}
|
|
3
|
+
const isDev = true;
|
|
4
|
+
|
|
5
|
+
export const warn = (condition: boolean, format: string, ...args: any[]) => {
|
|
13
6
|
if (isDev && typeof console !== 'undefined' && console.warn) {
|
|
14
7
|
if (format === undefined) {
|
|
15
8
|
console.warn('LogUtils requires an error message argument');
|
|
16
9
|
}
|
|
10
|
+
|
|
17
11
|
if (!condition) {
|
|
18
12
|
if (format === undefined) {
|
|
19
13
|
console.warn(
|
|
@@ -21,7 +15,8 @@ export var warn = function warn(condition, format) {
|
|
|
21
15
|
'for the full error message and additional helpful warnings.',
|
|
22
16
|
);
|
|
23
17
|
} else {
|
|
24
|
-
|
|
18
|
+
let argIndex = 0;
|
|
19
|
+
|
|
25
20
|
console.warn(format.replace(/%s/g, () => args[argIndex++]));
|
|
26
21
|
}
|
|
27
22
|
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// DOM contracts shared by the authored Recharts port. Events are native,
|
|
2
|
+
// while element props and refs follow Octane's public JSX type surface.
|
|
3
|
+
import type { OctaneNode } from 'octane';
|
|
4
|
+
import type { Octane } from 'octane/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
export type { OctaneNode } from 'octane';
|
|
7
|
+
export type { OctaneElement } from 'octane/jsx-runtime';
|
|
8
|
+
export type CSSProperties = Exclude<NonNullable<Octane.HTMLAttributes<Element>['style']>, string>;
|
|
9
|
+
export type SVGProps<T> = Octane.SVGProps<T>;
|
|
10
|
+
export type SVGAttributes<T> = Octane.SVGAttributes<T>;
|
|
11
|
+
export type HTMLAttributes<T> = Octane.HTMLAttributes<T>;
|
|
12
|
+
export type AriaAttributes = Pick<
|
|
13
|
+
Octane.SVGAttributes<Element>,
|
|
14
|
+
Extract<keyof Octane.SVGAttributes<Element>, `aria-${string}`>
|
|
15
|
+
>;
|
|
16
|
+
export type Ref<T> = Octane.Ref<T>;
|
|
17
|
+
// A renderer only writes its actual host into a broader SVG ref sink. This
|
|
18
|
+
// type-only view preserves the ref while narrowing that write at the boundary.
|
|
19
|
+
export type SVGPropsForHost<P, T extends SVGElement> = Omit<P, 'ref'> & { ref?: Ref<T> };
|
|
20
|
+
export type RefCallback<T> = (instance: T | null) => void | (() => void);
|
|
21
|
+
export type RefAttributes<T> = Octane.RefAttributes<T>;
|
|
22
|
+
export type PropsWithoutRef<P> = P extends unknown ? Omit<P, 'ref'> : never;
|
|
23
|
+
export type MutableRefObject<T> = { current: T };
|
|
24
|
+
export type RefObject<T> = { current: T };
|
|
25
|
+
export type ComponentType<P = {}> = ((props: P) => OctaneNode) & { displayName?: string };
|
|
26
|
+
export type FunctionComponent<P = {}> = ComponentType<P>;
|
|
27
|
+
export type FC<P = {}> = ComponentType<P>;
|
|
28
|
+
export type ComponentProps<C> = C extends (props: infer P) => unknown
|
|
29
|
+
? P
|
|
30
|
+
: C extends keyof Octane.JSX.IntrinsicElements
|
|
31
|
+
? Octane.JSX.IntrinsicElements[C]
|
|
32
|
+
: never;
|
|
33
|
+
|
|
34
|
+
export type NativeEvent<T = Element> = Event & { currentTarget: EventTarget & T };
|
|
35
|
+
export type NativeAnimationEvent<T = Element> = AnimationEvent & { currentTarget: EventTarget & T };
|
|
36
|
+
export type NativeClipboardEvent<T = Element> = ClipboardEvent & { currentTarget: EventTarget & T };
|
|
37
|
+
export type NativeCompositionEvent<T = Element> = CompositionEvent & {
|
|
38
|
+
currentTarget: EventTarget & T;
|
|
39
|
+
};
|
|
40
|
+
export type NativeDragEvent<T = Element> = DragEvent & { currentTarget: EventTarget & T };
|
|
41
|
+
export type NativeFocusEvent<T = Element> = FocusEvent & { currentTarget: EventTarget & T };
|
|
42
|
+
export type NativeFormEvent<T = Element> = Event & { currentTarget: EventTarget & T };
|
|
43
|
+
export type NativeKeyboardEvent<T = Element> = KeyboardEvent & { currentTarget: EventTarget & T };
|
|
44
|
+
export type NativeMouseEvent<T = Element> = MouseEvent & { currentTarget: EventTarget & T };
|
|
45
|
+
export type NativePointerEvent<T = Element> = PointerEvent & { currentTarget: EventTarget & T };
|
|
46
|
+
export type NativeTouchEvent<T = Element> = TouchEvent & { currentTarget: EventTarget & T };
|
|
47
|
+
export type NativeTransitionEvent<T = Element> = TransitionEvent & {
|
|
48
|
+
currentTarget: EventTarget & T;
|
|
49
|
+
};
|
|
50
|
+
export type NativeUIEvent<T = Element> = UIEvent & { currentTarget: EventTarget & T };
|
|
51
|
+
export type NativeWheelEvent<T = Element> = WheelEvent & { currentTarget: EventTarget & T };
|