solid-recharts 0.2.0 → 1.0.0
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/package.json +17 -13
- package/src/animation/AnimatedItems.tsx +2 -4
- package/src/animation/CSSTransitionAnimate.tsx +41 -39
- package/src/animation/JavascriptAnimate.tsx +45 -41
- package/src/cartesian/Area.tsx +43 -58
- package/src/cartesian/AreaRevealShape.tsx +1 -1
- package/src/cartesian/Bar.tsx +98 -78
- package/src/cartesian/BarStack.tsx +10 -7
- package/src/cartesian/Brush.tsx +20 -16
- package/src/cartesian/CartesianAxis.tsx +4 -4
- package/src/cartesian/CartesianGrid.tsx +5 -5
- package/src/cartesian/ErrorBar.tsx +9 -7
- package/src/cartesian/Funnel.tsx +17 -21
- package/src/cartesian/GraphicalItemClipPath.tsx +1 -1
- package/src/cartesian/Line.tsx +51 -66
- package/src/cartesian/LineDrawShape.tsx +20 -17
- package/src/cartesian/ReferenceArea.tsx +28 -38
- package/src/cartesian/ReferenceDot.tsx +27 -37
- package/src/cartesian/ReferenceLine.tsx +28 -37
- package/src/cartesian/RenderedTicksReporter.tsx +19 -17
- package/src/cartesian/Scatter.tsx +27 -39
- package/src/cartesian/XAxis.tsx +55 -68
- package/src/cartesian/YAxis.tsx +88 -99
- package/src/cartesian/ZAxis.tsx +29 -41
- package/src/chart/AreaChart.tsx +1 -1
- package/src/chart/BarChart.tsx +1 -1
- package/src/chart/CartesianChart.tsx +4 -3
- package/src/chart/CategoricalChart.tsx +5 -5
- package/src/chart/ComposedChart.tsx +1 -1
- package/src/chart/FunnelChart.tsx +1 -1
- package/src/chart/LineChart.tsx +1 -1
- package/src/chart/PieChart.tsx +4 -3
- package/src/chart/PolarChart.tsx +4 -3
- package/src/chart/RadarChart.tsx +4 -3
- package/src/chart/RadialBarChart.tsx +7 -3
- package/src/chart/RechartsWrapper.tsx +14 -24
- package/src/chart/Sankey.tsx +9 -6
- package/src/chart/ScatterChart.tsx +1 -1
- package/src/chart/SunburstChart.tsx +6 -5
- package/src/chart/Treemap.tsx +5 -4
- package/src/component/ActivePoints.tsx +6 -15
- package/src/component/Cell.tsx +23 -5
- package/src/component/Cursor.tsx +3 -3
- package/src/component/DefaultLegendContent.tsx +8 -6
- package/src/component/DefaultTooltipContent.tsx +14 -10
- package/src/component/Dots.tsx +11 -7
- package/src/component/Label.tsx +13 -10
- package/src/component/LabelList.tsx +12 -7
- package/src/component/Legend.tsx +26 -21
- package/src/component/ResponsiveContainer.tsx +52 -49
- package/src/component/Text.tsx +5 -5
- package/src/component/Tooltip.tsx +21 -18
- package/src/component/TooltipBoundingBox.tsx +18 -16
- package/src/component/responsiveContainerUtils.ts +1 -1
- package/src/container/ClipPathProvider.tsx +3 -3
- package/src/container/Layer.tsx +5 -5
- package/src/container/RootSurface.tsx +1 -1
- package/src/container/Surface.tsx +5 -6
- package/src/context/ErrorBarContext.tsx +17 -26
- package/src/context/PanoramaContext.tsx +2 -2
- package/src/context/RegisterGraphicalItemId.tsx +4 -2
- package/src/context/chartDataContext.tsx +26 -23
- package/src/context/chartLayoutContext.tsx +16 -12
- package/src/polar/Pie.tsx +49 -60
- package/src/polar/PolarAngleAxis.tsx +43 -52
- package/src/polar/PolarGrid.tsx +5 -5
- package/src/polar/PolarRadiusAxis.tsx +42 -50
- package/src/polar/Radar.tsx +24 -36
- package/src/polar/RadialBar.tsx +23 -41
- package/src/shape/Cross.tsx +5 -5
- package/src/shape/Curve.tsx +7 -8
- package/src/shape/Dot.tsx +4 -4
- package/src/shape/Polygon.tsx +5 -5
- package/src/shape/Rectangle.tsx +22 -20
- package/src/shape/Sector.tsx +5 -5
- package/src/shape/Symbols.tsx +6 -6
- package/src/shape/Trapezoid.tsx +29 -27
- package/src/state/RechartsStoreProvider.tsx +5 -3
- package/src/state/ReportChartProps.tsx +8 -6
- package/src/state/ReportEventSettings.tsx +8 -6
- package/src/state/ReportMainChartProps.tsx +11 -9
- package/src/state/ReportPolarOptions.tsx +15 -13
- package/src/state/SetLegendPayload.ts +20 -28
- package/src/state/SetTooltipEntrySettings.tsx +10 -27
- package/src/state/brushSlice.ts +10 -8
- package/src/state/cartesianAxisSlice.ts +72 -84
- package/src/state/chartDataSlice.ts +29 -23
- package/src/state/createCollectionActions.ts +51 -0
- package/src/state/createSelector.ts +97 -0
- package/src/state/errorBarSlice.ts +22 -16
- package/src/state/eventSettingsSlice.ts +11 -9
- package/src/state/externalEventsMiddleware.ts +2 -11
- package/src/state/graphicalItemsSlice.ts +35 -44
- package/src/state/isEventThrottled.ts +12 -0
- package/src/state/keyboardEventsMiddleware.ts +2 -8
- package/src/state/layoutSlice.ts +29 -17
- package/src/state/legendSlice.ts +35 -31
- package/src/state/mouseEventsMiddleware.ts +2 -13
- package/src/state/optionsSlice.ts +8 -6
- package/src/state/patched.ts +19 -0
- package/src/state/polarAxisSlice.ts +21 -13
- package/src/state/polarOptionsSlice.ts +16 -14
- package/src/state/referenceElementsSlice.ts +49 -34
- package/src/state/registerInStore.ts +70 -0
- package/src/state/renderedTicksSlice.ts +11 -7
- package/src/state/rootPropsSlice.ts +16 -14
- package/src/state/selectors/areaSelectors.ts +13 -36
- package/src/state/selectors/arrayEqualityCheck.ts +32 -7
- package/src/state/selectors/axisSelectors.ts +215 -169
- package/src/state/selectors/barSelectors.ts +8 -36
- package/src/state/selectors/combiners/combineConfiguredScale.ts +1 -1
- package/src/state/selectors/combiners/combineRealScaleType.ts +1 -1
- package/src/state/selectors/dataSelectors.ts +35 -16
- package/src/state/selectors/numberDomainEqualityCheck.ts +16 -8
- package/src/state/selectors/selectAxisForGraphicalItem.ts +52 -0
- package/src/state/tooltipSlice.ts +135 -86
- package/src/state/unregisterOnCleanup.ts +5 -20
- package/src/state/zIndexSlice.ts +50 -42
- package/src/synchronisation/useChartSynchronisation.tsx +213 -217
- package/src/util/ActiveShapeUtils.tsx +2 -9
- package/src/util/BarUtils.tsx +30 -23
- package/src/util/ChartUtils.ts +69 -25
- package/src/util/DirectPortal.tsx +107 -0
- package/src/util/FunnelUtils.tsx +1 -1
- package/src/util/RadialBarUtils.tsx +4 -3
- package/src/util/createCartesianCharts.tsx +1 -1
- package/src/util/createPolarCharts.tsx +1 -1
- package/src/util/propsAreEqual.ts +3 -33
- package/src/util/stacks/stackTypes.ts +1 -1
- package/src/util/svgPropertiesAndEvents.ts +1 -1
- package/src/util/tooltip/translate.ts +2 -2
- package/src/util/types.ts +3 -3
- package/src/zIndex/ZIndexLayer.tsx +39 -68
- package/src/zIndex/ZIndexPortal.tsx +29 -25
- package/src/state/reduxDevtoolsJsonStringifyReplacer.ts +0 -15
- package/src/util/axisPropsAreEqual.ts +0 -42
- package/src/util/resolveDefaultProps.tsx +0 -8
- package/src/util/typedDataKey.ts +0 -8
- package/test/_data.ts +0 -408
- package/test/animation/AnimationController.typed.spec.ts +0 -53
- package/test/animation/AnimationControllerImpl.spec.ts +0 -271
- package/test/animation/CSSTransitionAnimate.timing.spec.tsx +0 -473
- package/test/animation/JavascriptAnimate.spec.tsx +0 -62
- package/test/animation/RechartsAnimation.spec.ts +0 -636
- package/test/animation/easing.spec.ts +0 -218
- package/test/animation/legacyAnimationLengthChange.spec.tsx +0 -803
- package/test/animation/matchBy.spec.ts +0 -467
- package/test/animation/mockAnimationController.ts +0 -40
- package/test/animation/mockControllerAnimationManager.ts +0 -143
- package/test/animation/mockTimeoutController.ts +0 -114
- package/test/animation/timeoutController.spec.ts +0 -138
- package/test/animation/useAnimationStartSnapshot.spec.ts +0 -147
- package/test/animation/util.spec.ts +0 -28
- package/test/cartesian/Area.animation.spec.tsx +0 -363
- package/test/cartesian/Area.range.spec.tsx +0 -54
- package/test/cartesian/Area.spec.tsx +0 -1202
- package/test/cartesian/Area.stacked.render.spec.tsx +0 -69
- package/test/cartesian/Area.typed.spec.tsx +0 -209
- package/test/cartesian/Axis.integration.spec.tsx +0 -158
- package/test/cartesian/Bar/Bar.csstransition.spec.tsx +0 -299
- package/test/cartesian/Bar/Bar.spec.tsx +0 -2314
- package/test/cartesian/Bar/Bar.typed.spec.tsx +0 -192
- package/test/cartesian/Bar.animation.spec.tsx +0 -426
- package/test/cartesian/Bar.stackDomain.spec.tsx +0 -66
- package/test/cartesian/Bar.stacked.render.spec.tsx +0 -53
- package/test/cartesian/Bar.truncateByDomain.spec.tsx +0 -237
- package/test/cartesian/Bar.zeroDimensionFiltering.spec.tsx +0 -336
- package/test/cartesian/BarStack.spec.tsx +0 -91
- package/test/cartesian/Brush.keyboard.spec.tsx +0 -88
- package/test/cartesian/Brush.panorama.spec.tsx +0 -41
- package/test/cartesian/Brush.props.spec.tsx +0 -63
- package/test/cartesian/Brush.render.spec.tsx +0 -117
- package/test/cartesian/Brush.spec.tsx +0 -522
- package/test/cartesian/Brush.stacked.spec.tsx +0 -221
- package/test/cartesian/CartesianAxis.render.spec.tsx +0 -50
- package/test/cartesian/CartesianAxis.spec.tsx +0 -396
- package/test/cartesian/CartesianGrid.render.spec.tsx +0 -39
- package/test/cartesian/CartesianGrid.spec.tsx +0 -2103
- package/test/cartesian/ErrorBar.render.spec.tsx +0 -69
- package/test/cartesian/ErrorBar.spec.tsx +0 -2414
- package/test/cartesian/Funnel.animation.spec.tsx +0 -241
- package/test/cartesian/Funnel.spec.tsx +0 -226
- package/test/cartesian/Funnel.typed.spec.tsx +0 -221
- package/test/cartesian/GraphicalItemClipPath.scale-behavior.spec.tsx +0 -627
- package/test/cartesian/GraphicalItemClipPath.spec.tsx +0 -427
- package/test/cartesian/Line.animation.spec.tsx +0 -643
- package/test/cartesian/Line.sparseAnimationPath.spec.tsx +0 -98
- package/test/cartesian/Line.spec.tsx +0 -471
- package/test/cartesian/Line.typed.spec.tsx +0 -152
- package/test/cartesian/ReferenceArea.render.spec.tsx +0 -63
- package/test/cartesian/ReferenceArea.spec.tsx +0 -663
- package/test/cartesian/ReferenceArea.typed.spec.tsx +0 -74
- package/test/cartesian/ReferenceDot.render.spec.tsx +0 -55
- package/test/cartesian/ReferenceDot.spec.tsx +0 -462
- package/test/cartesian/ReferenceDot.typed.spec.tsx +0 -76
- package/test/cartesian/ReferenceLine/ReferenceLine.panorama.spec.tsx +0 -184
- package/test/cartesian/ReferenceLine/ReferenceLine.spec.tsx +0 -744
- package/test/cartesian/ReferenceLine/ReferenceLine.typed.spec.tsx +0 -74
- package/test/cartesian/ReferenceLine/getEndPoints.spec.ts +0 -399
- package/test/cartesian/ReferenceLine.render.spec.tsx +0 -134
- package/test/cartesian/Scatter.animation.spec.tsx +0 -381
- package/test/cartesian/Scatter.render.spec.tsx +0 -61
- package/test/cartesian/Scatter.spec.tsx +0 -406
- package/test/cartesian/Scatter.typed.spec.tsx +0 -153
- package/test/cartesian/XAxis/XAxis.barSize.spec.tsx +0 -336
- package/test/cartesian/XAxis/XAxis.brush.spec.tsx +0 -266
- package/test/cartesian/XAxis/XAxis.categorydomain.spec.tsx +0 -872
- package/test/cartesian/XAxis/XAxis.dataKey.spec.tsx +0 -86
- package/test/cartesian/XAxis/XAxis.datatypes.spec.tsx +0 -127
- package/test/cartesian/XAxis/XAxis.hide.spec.tsx +0 -106
- package/test/cartesian/XAxis/XAxis.multiaxis.spec.tsx +0 -336
- package/test/cartesian/XAxis/XAxis.numberdomain.spec.tsx +0 -1466
- package/test/cartesian/XAxis/XAxis.padding.spec.tsx +0 -758
- package/test/cartesian/XAxis/XAxis.padding_clip.spec.tsx +0 -65
- package/test/cartesian/XAxis/XAxis.state.spec.tsx +0 -355
- package/test/cartesian/XAxis/XAxis.tick.spec.tsx +0 -493
- package/test/cartesian/XAxis/XAxis.timescale.spec.tsx +0 -233
- package/test/cartesian/XAxis/XAxis.type.spec.tsx +0 -107
- package/test/cartesian/XAxis/XAxis.typed.spec.tsx +0 -102
- package/test/cartesian/XAxis/XAxis.vertical.spec.tsx +0 -265
- package/test/cartesian/XAxis.tickFormatter.spec.tsx +0 -54
- package/test/cartesian/YAxis/YAxis.7362.derivedDomain.spec.tsx +0 -230
- package/test/cartesian/YAxis/YAxis.7362.spec.tsx +0 -104
- package/test/cartesian/YAxis/YAxis.interval-zero.spec.tsx +0 -88
- package/test/cartesian/YAxis/YAxis.label.spec.tsx +0 -219
- package/test/cartesian/YAxis/YAxis.spec.tsx +0 -1595
- package/test/cartesian/YAxis/YAxis.tick.spec.tsx +0 -428
- package/test/cartesian/YAxis/YAxis.tickFormatter.spec.tsx +0 -54
- package/test/cartesian/YAxis/YAxis.ticks.spec.tsx +0 -263
- package/test/cartesian/YAxis/YAxis.type.spec.tsx +0 -107
- package/test/cartesian/YAxis/YAxis.typed.spec.tsx +0 -102
- package/test/cartesian/ZAxis.spec.tsx +0 -300
- package/test/cartesian/ZAxis.typed.spec.tsx +0 -33
- package/test/cartesian/__snapshots__/Brush.spec.tsx.snap +0 -5
- package/test/cartesian/axisLineAndStroke.spec.tsx +0 -72
- package/test/cartesian/getCartesianPosition.spec.ts +0 -907
- package/test/cartesian/getEquidistantTicks.spec.ts +0 -88
- package/test/cartesian/getTicks.spec.ts +0 -378
- package/test/cartesian/miscFeatureGaps.spec.tsx +0 -89
- package/test/cartesian/useAnimatedLineLength.spec.ts +0 -168
- package/test/chart/AccessibilityLayer.spec.tsx +0 -569
- package/test/chart/AccessibilityScans.spec.tsx +0 -286
- package/test/chart/AreaChart.spec.tsx +0 -409
- package/test/chart/AreaChart.stacked.spec.tsx +0 -1407
- package/test/chart/AreaChart.typed.spec.tsx +0 -39
- package/test/chart/BarChart.spec.tsx +0 -3719
- package/test/chart/BarChart.typed.spec.tsx +0 -60
- package/test/chart/CategoricalChart.spec.tsx +0 -255
- package/test/chart/ComposedChart.spec.tsx +0 -199
- package/test/chart/ComposedChart.typed.spec.tsx +0 -39
- package/test/chart/FunnelChart.spec.tsx +0 -215
- package/test/chart/FunnelChart.typed.spec.tsx +0 -39
- package/test/chart/LineChart.multiseries.spec.tsx +0 -50
- package/test/chart/LineChart.smoke.spec.tsx +0 -50
- package/test/chart/LineChart.spec.tsx +0 -930
- package/test/chart/LineChart.typed.spec.tsx +0 -39
- package/test/chart/NicheChartTooltip.spec.tsx +0 -81
- package/test/chart/PieChart.spec.tsx +0 -793
- package/test/chart/PieChart.typed.spec.tsx +0 -39
- package/test/chart/RadarChart.spec.tsx +0 -530
- package/test/chart/RadarChart.typed.spec.tsx +0 -39
- package/test/chart/RadialBarChart.5966.spec.tsx +0 -48
- package/test/chart/RadialBarChart.spec.tsx +0 -679
- package/test/chart/RadialBarChart.typed.spec.tsx +0 -39
- package/test/chart/RechartsWrapper.spec.tsx +0 -83
- package/test/chart/Sankey.content.spec.tsx +0 -46
- package/test/chart/Sankey.spec.tsx +0 -952
- package/test/chart/Sankey.typed.spec.tsx +0 -29
- package/test/chart/ScatterChart.spec.tsx +0 -2613
- package/test/chart/ScatterChart.typed.spec.tsx +0 -39
- package/test/chart/SunburstChart.spec.tsx +0 -146
- package/test/chart/Treemap.animation.spec.tsx +0 -52
- package/test/chart/Treemap.spec.tsx +0 -1003
- package/test/chart/Treemap.typed.spec.tsx +0 -26
- package/test/chart/chartEvents.spec.tsx +0 -127
- package/test/chart/responsive.spec.tsx +0 -620
- package/test/component/Cell.render.spec.tsx +0 -155
- package/test/component/Cell.spec.tsx +0 -12
- package/test/component/Cursor.spec.tsx +0 -186
- package/test/component/DefaultTooltipContent.spec.tsx +0 -102
- package/test/component/Label.render.spec.tsx +0 -63
- package/test/component/Label.spec.tsx +0 -686
- package/test/component/Label.typed.spec.tsx +0 -46
- package/test/component/LabelList.spec.tsx +0 -188
- package/test/component/Legend.itemSorter.spec.tsx +0 -704
- package/test/component/Legend.render.spec.tsx +0 -92
- package/test/component/Legend.spec.tsx +0 -2213
- package/test/component/Legend.typed.spec.tsx +0 -22
- package/test/component/ResponsiveContainer.spec.tsx +0 -523
- package/test/component/ResponsiveContainerDataTest.spec.tsx +0 -51
- package/test/component/Text.spec.tsx +0 -415
- package/test/component/Text.typed.spec.tsx +0 -46
- package/test/component/Tooltip/ActiveDot.spec.tsx +0 -370
- package/test/component/Tooltip/Tooltip.animation.spec.tsx +0 -209
- package/test/component/Tooltip/Tooltip.content.spec.tsx +0 -128
- package/test/component/Tooltip/Tooltip.formatter.spec.tsx +0 -152
- package/test/component/Tooltip/Tooltip.includeHidden.spec.tsx +0 -79
- package/test/component/Tooltip/Tooltip.multipleDataArrays.spec.tsx +0 -165
- package/test/component/Tooltip/Tooltip.offset.spec.tsx +0 -113
- package/test/component/Tooltip/Tooltip.state.spec.tsx +0 -74
- package/test/component/Tooltip/Tooltip.sync.spec.tsx +0 -639
- package/test/component/Tooltip/defaultIndex.spec.tsx +0 -227
- package/test/component/Tooltip/graphicalItem.formatter.spec.tsx +0 -138
- package/test/component/Tooltip/itemSorter.spec.tsx +0 -2815
- package/test/component/Tooltip/tooltipEventType.spec.tsx +0 -344
- package/test/component/Tooltip/tooltipMouseHoverSelectors.ts +0 -41
- package/test/component/Tooltip/tooltipTestHelpers.tsx +0 -162
- package/test/component/Tooltip.defaultIndex.spec.tsx +0 -48
- package/test/component/Tooltip.hover.spec.tsx +0 -61
- package/test/component/Tooltip.item.spec.tsx +0 -54
- package/test/component/Tooltip.keyboard.spec.tsx +0 -51
- package/test/component/Tooltip.payload.spec.tsx +0 -1716
- package/test/component/Tooltip.touch.spec.tsx +0 -39
- package/test/component/Tooltip.visibility.spec.tsx +0 -1889
- package/test/component/TooltipBoundingBox.spec.tsx +0 -89
- package/test/component/responsiveContainerUtils.spec.ts +0 -205
- package/test/container/ClipPath.spec.tsx +0 -602
- package/test/container/chartDimensions.spec.tsx +0 -368
- package/test/context/chartLayoutContext.spec.tsx +0 -378
- package/test/helper/ExpectAxisDomain.tsx +0 -27
- package/test/helper/assertNotNull.ts +0 -6
- package/test/helper/assertZIndexLayerOrder.ts +0 -19
- package/test/helper/createSelectorTestCase.tsx +0 -176
- package/test/helper/expectAnimatedPieAngles.ts +0 -100
- package/test/helper/expectAnimatedPiePaths.ts +0 -78
- package/test/helper/expectAreaCurve.ts +0 -15
- package/test/helper/expectAxisTicks.ts +0 -48
- package/test/helper/expectBars.ts +0 -54
- package/test/helper/expectFunctionReturning.ts +0 -58
- package/test/helper/expectLabel.ts +0 -32
- package/test/helper/expectLastCalledWith.ts +0 -48
- package/test/helper/expectLine.ts +0 -20
- package/test/helper/expectPieSectors.ts +0 -80
- package/test/helper/expectScale.ts +0 -37
- package/test/helper/expectScatterPoints.ts +0 -52
- package/test/helper/expectStackGroups.ts +0 -144
- package/test/helper/mockAxes.ts +0 -22
- package/test/helper/mockGetBoundingClientRect.ts +0 -66
- package/test/helper/mockHTMLElementProperty.ts +0 -19
- package/test/helper/mockTouchingElement.ts +0 -27
- package/test/helper/offsetHelpers.ts +0 -19
- package/test/helper/parameterizedTestCases.tsx +0 -99
- package/test/helper/produceState.ts +0 -32
- package/test/helper/selectorTestHelpers.tsx +0 -63
- package/test/helper/trim.spec.ts +0 -35
- package/test/helper/trim.ts +0 -11
- package/test/hooks/useActiveTooltipDataPoints.spec.tsx +0 -358
- package/test/hooks/useAxisDomain.spec.tsx +0 -361
- package/test/hooks/useAxisScale.spec.tsx +0 -283
- package/test/hooks/useAxisTicks.spec.tsx +0 -130
- package/test/hooks/useOffset.spec.tsx +0 -248
- package/test/hooks/useTooltipStateHooks.spec.tsx +0 -109
- package/test/polar/Pie/Pie-TwoLevelPieChart.spec.tsx +0 -135
- package/test/polar/Pie/Pie.spec.tsx +0 -784
- package/test/polar/Pie/Pie.typed.spec.tsx +0 -78
- package/test/polar/Pie.animation.spec.tsx +0 -529
- package/test/polar/PieWithLegend.animation.spec.tsx +0 -142
- package/test/polar/PolarAngleAxis/PolarAngleAxis.events.spec.tsx +0 -76
- package/test/polar/PolarAngleAxis/PolarAngleAxis.spec.tsx +0 -2079
- package/test/polar/PolarAngleAxis/PolarAngleAxis.typed.spec.tsx +0 -102
- package/test/polar/PolarAngleAxis.render.spec.tsx +0 -79
- package/test/polar/PolarGrid.render.spec.tsx +0 -75
- package/test/polar/PolarGrid.spec.tsx +0 -918
- package/test/polar/PolarLegendPerRow.render.spec.tsx +0 -85
- package/test/polar/PolarRadiusAxis.events.spec.tsx +0 -65
- package/test/polar/PolarRadiusAxis.render.spec.tsx +0 -52
- package/test/polar/PolarRadiusAxis.spec.tsx +0 -991
- package/test/polar/PolarRadiusAxis.typed.spec.tsx +0 -84
- package/test/polar/PolarTooltipLegend.render.spec.tsx +0 -80
- package/test/polar/Radar.animation.spec.tsx +0 -570
- package/test/polar/Radar.render.spec.tsx +0 -71
- package/test/polar/Radar.spec.tsx +0 -265
- package/test/polar/Radar.typed.spec.tsx +0 -119
- package/test/polar/RadialBar/RadialBar.spec.tsx +0 -1521
- package/test/polar/RadialBar/RadialBar.typed.spec.tsx +0 -132
- package/test/polar/RadialBar.animation.spec.tsx +0 -375
- package/test/polar/RadialBar.render.spec.tsx +0 -66
- package/test/polar/RadialBar.stacked.spec.tsx +0 -57
- package/test/setup.ts +0 -84
- package/test/shape/ActiveShape.spec.tsx +0 -181
- package/test/shape/Cross.spec.tsx +0 -60
- package/test/shape/Cross.typed.spec.tsx +0 -26
- package/test/shape/Curve.spec.tsx +0 -368
- package/test/shape/Curve.typed.spec.tsx +0 -69
- package/test/shape/Dot.spec.tsx +0 -73
- package/test/shape/Dot.typed.spec.tsx +0 -30
- package/test/shape/Polygon.spec.tsx +0 -357
- package/test/shape/Polygon.typed.spec.tsx +0 -28
- package/test/shape/Rectangle.animation.spec.tsx +0 -451
- package/test/shape/Rectangle.spec.tsx +0 -68
- package/test/shape/Rectangle.typed.spec.tsx +0 -24
- package/test/shape/Sector.spec.tsx +0 -76
- package/test/shape/Sector.typed.spec.tsx +0 -24
- package/test/shape/Symbols.spec.tsx +0 -43
- package/test/shape/Symbols.typed.spec.tsx +0 -24
- package/test/shape/Trapezoid.spec.tsx +0 -50
- package/test/shape/Trapezoid.typed.spec.tsx +0 -24
- package/test/shape/__snapshots__/Cross.spec.tsx.snap +0 -62
- package/test/shape/__snapshots__/Curve.spec.tsx.snap +0 -460
- package/test/shape/__snapshots__/Polygon.spec.tsx.snap +0 -58
- package/test/shape/__snapshots__/Rectangle.spec.tsx.snap +0 -117
- package/test/shape/__snapshots__/Sector.spec.tsx.snap +0 -71
- package/test/shape/__snapshots__/Trapezoid.spec.tsx.snap +0 -64
- package/test/state/chartDataSlice.spec.ts +0 -53
- package/test/state/externalEventsMiddleware.spec.ts +0 -178
- package/test/state/graphicalItemsSlice.spec.ts +0 -92
- package/test/state/hooks.spec.tsx +0 -68
- package/test/state/legendSlice.spec.ts +0 -44
- package/test/state/mouseEventsMiddleware.spec.ts +0 -75
- package/test/state/optionsSlice.spec.ts +0 -19
- package/test/state/reduxDevtoolsJsonStringifyReplacer.spec.ts +0 -25
- package/test/state/referenceElementsSlice.spec.ts +0 -84
- package/test/state/selectors/areaSelectors.spec.tsx +0 -77
- package/test/state/selectors/axisSelectors.spec.tsx +0 -1418
- package/test/state/selectors/barStackSelectors.spec.tsx +0 -752
- package/test/state/selectors/brushSelectors.spec.tsx +0 -30
- package/test/state/selectors/cartesianAxisSlice.spec.ts +0 -96
- package/test/state/selectors/combineNiceTicks.spec.ts +0 -207
- package/test/state/selectors/combiners/combineActiveTooltipIndex.spec.ts +0 -61
- package/test/state/selectors/combiners/combineAllBarPositions.spec.ts +0 -39
- package/test/state/selectors/combiners/combineConfiguredScale.spec.ts +0 -56
- package/test/state/selectors/combiners/combineDisplayedStackedData.spec.ts +0 -123
- package/test/state/selectors/combiners/combineRealScaleType.spec.ts +0 -80
- package/test/state/selectors/containerSelectors.spec.tsx +0 -168
- package/test/state/selectors/dataSelectors.spec.tsx +0 -136
- package/test/state/selectors/legendSelectors.spec.tsx +0 -113
- package/test/state/selectors/lineSelectors.spec.tsx +0 -60
- package/test/state/selectors/pieSelectors.spec.tsx +0 -72
- package/test/state/selectors/radarSelectors.spec.tsx +0 -496
- package/test/state/selectors/rootPropsSelectors.spec.tsx +0 -169
- package/test/state/selectors/scatterSelectors.spec.tsx +0 -47
- package/test/state/selectors/selectActiveTooltipIndex.spec.tsx +0 -234
- package/test/state/selectors/selectAllAxes.spec.tsx +0 -18
- package/test/state/selectors/selectAxisDomain.spec.tsx +0 -21
- package/test/state/selectors/selectAxisDomainIncludingNiceTicks.spec.tsx +0 -19
- package/test/state/selectors/selectAxisRangeWithReverse.spec.tsx +0 -22
- package/test/state/selectors/selectAxisScale.spec.tsx +0 -91
- package/test/state/selectors/selectBarRectangles.stackOffset.spec.tsx +0 -503
- package/test/state/selectors/selectBaseAxis.spec.tsx +0 -56
- package/test/state/selectors/selectCartesianItemsSettings.spec.tsx +0 -57
- package/test/state/selectors/selectChartOffset.spec.tsx +0 -26
- package/test/state/selectors/selectDisplayedData.spec.tsx +0 -282
- package/test/state/selectors/selectIsTooltipActive.spec.tsx +0 -231
- package/test/state/selectors/selectNumericalDomain.spec.tsx +0 -21
- package/test/state/selectors/selectRealScaleType.spec.tsx +0 -19
- package/test/state/selectors/selectStackGroups.spec.tsx +0 -322
- package/test/state/selectors/selectXAxisPosition.spec.tsx +0 -22
- package/test/state/selectors/selectYAxisPosition.spec.tsx +0 -22
- package/test/state/selectors/selectors.spec.tsx +0 -1613
- package/test/state/throttling.spec.ts +0 -200
- package/test/state/zIndexSlice.spec.ts +0 -85
- package/test/synchronisation/useChartSynchronisation.spec.tsx +0 -225
- package/test/util/BarUtils.spec.ts +0 -39
- package/test/util/CartesianUtils/CartesianUtils.spec.ts +0 -261
- package/test/util/CartesianUtils/rectWithPoints.spec.ts +0 -48
- package/test/util/ChartUtils/ChartUtils.spec.ts +0 -491
- package/test/util/ChartUtils/appendOffsetOfLegend.spec.ts +0 -136
- package/test/util/ChartUtils/appendOffsetOfLegend.spec.tsx +0 -133
- package/test/util/ChartUtils/getCateCoordinateOfLine.spec.ts +0 -83
- package/test/util/ChartUtils/getStackedData.spec.ts +0 -416
- package/test/util/ChartUtils/truncateByDomain.spec.ts +0 -70
- package/test/util/DataUtils.spec.ts +0 -385
- package/test/util/DomUtils.spec.tsx +0 -117
- package/test/util/FunnelUtils.spec.tsx +0 -70
- package/test/util/Global.spec.ts +0 -11
- package/test/util/LRUCache.spec.ts +0 -81
- package/test/util/LogUtils.spec.ts +0 -45
- package/test/util/PolarUtils.spec.ts +0 -66
- package/test/util/ReduceCssCalcPrototype.spec.ts +0 -141
- package/test/util/ShallowEqual.spec.ts +0 -102
- package/test/util/TickUtils.spec.ts +0 -29
- package/test/util/axisPropsAreEqual.spec.ts +0 -93
- package/test/util/createChartHelpers.spec.tsx +0 -210
- package/test/util/cursor/getCursorPoints.spec.ts +0 -136
- package/test/util/cursor/getCursorRectangle.spec.ts +0 -50
- package/test/util/cursor/getRadialCursorPoints.spec.ts +0 -36
- package/test/util/errorValue.spec.ts +0 -69
- package/test/util/getEveryNth.spec.ts +0 -39
- package/test/util/getRadiusAndStrokeWidthFromDot.spec.ts +0 -51
- package/test/util/getRelativeCoordinate.spec.ts +0 -250
- package/test/util/getSliced.spec.ts +0 -45
- package/test/util/isDomainSpecifiedByUser.spec.ts +0 -207
- package/test/util/isWellBehavedNumber.spec.ts +0 -54
- package/test/util/payload/getUniqPayload.spec.ts +0 -56
- package/test/util/propsAreEqual.spec.ts +0 -75
- package/test/util/round.spec.ts +0 -112
- package/test/util/scale/arithmetic.spec.ts +0 -61
- package/test/util/scale/createCategoricalInverse.spec.ts +0 -84
- package/test/util/scale/getNiceTickValues.spec.ts +0 -421
- package/test/util/scale/getTickValuesFixedDomain.spec.ts +0 -155
- package/test/util/svgPropertiesAndEvents.spec.tsx +0 -206
- package/test/util/svgPropertiesNoEvents.spec.tsx +0 -228
- package/test/util/tooltip/translate.spec.ts +0 -396
- package/test/util/useAnimationId.spec.tsx +0 -59
- package/test/util/useElementOffset.spec.tsx +0 -173
- package/test/util/usePrefersReducedMotion.spec.ts +0 -54
- package/test/util/useUniqueId.spec.ts +0 -99
- package/test/utils/diagnostics-allowlist.ts +0 -18
- package/test/utils/diagnostics.ts +0 -58
- package/test/zIndex/AllZIndexPortals.spec.tsx +0 -83
- package/test/zIndex/DefaultZIndexes.spec.ts +0 -80
- package/test/zIndex/DynamicZIndex.spec.tsx +0 -102
- package/test/zIndex/ZIndexLayer.portalOwner.spec.tsx +0 -125
- package/test/zIndex/componentZIndex.spec.tsx +0 -255
- package/test/zIndex/getZIndexFromUnknown.spec.ts +0 -51
- package/test/zIndex/multiChartZIndexIsolation.spec.tsx +0 -90
- package/test/zIndex/zIndexSelectors.spec.ts +0 -172
- package/tsconfig.json +0 -11
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
// DefaultZIndexes.axis).
|
|
15
15
|
// DEFERRED (documented): ELEMENT-form `tick` (Solid can't clone-and-inject
|
|
16
16
|
// computed props into an evaluated node — use the function form instead).
|
|
17
|
-
import {
|
|
18
|
-
import type { JSX } from "
|
|
17
|
+
import { For, Show, mergeProps } from "solid-js";
|
|
18
|
+
import type { JSX } from "solid-js";
|
|
19
19
|
import { svgPropertiesNoEvents } from "../util/svgPropertiesNoEvents";
|
|
20
20
|
import { useAppSelector, useAppStore } from "../state/hooks";
|
|
21
21
|
import { Layer } from "../container/Layer";
|
|
@@ -47,7 +47,7 @@ import { usePolarChartLayout } from "../context/chartLayoutContext";
|
|
|
47
47
|
import { getAxisTypeBasedOnLayout } from "../util/getAxisTypeBasedOnLayout";
|
|
48
48
|
import { CustomScaleDefinition } from "../util/scale/CustomScaleDefinition";
|
|
49
49
|
import type { PolarAxisLineObjectProps, PolarTickEventHandler } from "./PolarAngleAxis";
|
|
50
|
-
import {
|
|
50
|
+
import { registerInStore } from "../state/registerInStore";
|
|
51
51
|
|
|
52
52
|
type TickOrientation = "left" | "right" | "middle";
|
|
53
53
|
|
|
@@ -263,54 +263,46 @@ export function PolarRadiusAxis<DataPointType = unknown, DataValueType = unknown
|
|
|
263
263
|
): JSX.Element {
|
|
264
264
|
const store = useAppStore();
|
|
265
265
|
const layout = usePolarChartLayout();
|
|
266
|
-
const merged =
|
|
266
|
+
const merged = mergeProps(polarRadiusAxisDefaultProps, props);
|
|
267
267
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
);
|
|
307
|
-
|
|
308
|
-
unregisterOnCleanup(() => {
|
|
309
|
-
if (prev && store != null) {
|
|
310
|
-
store.actions.polarAxis.removeRadiusAxis(prev);
|
|
311
|
-
prev = null;
|
|
312
|
-
}
|
|
313
|
-
});
|
|
268
|
+
if (store != null) {
|
|
269
|
+
registerInStore<RadiusAxisSettings>(
|
|
270
|
+
(): RadiusAxisSettings | undefined => {
|
|
271
|
+
const evaluatedType = getAxisTypeBasedOnLayout(layout(), "radiusAxis", merged.type);
|
|
272
|
+
if (evaluatedType == null) {
|
|
273
|
+
return undefined;
|
|
274
|
+
}
|
|
275
|
+
return {
|
|
276
|
+
id: merged.radiusAxisId,
|
|
277
|
+
scale: merged.scale,
|
|
278
|
+
type: evaluatedType,
|
|
279
|
+
dataKey: merged.dataKey,
|
|
280
|
+
unit: undefined,
|
|
281
|
+
name: merged.name,
|
|
282
|
+
allowDuplicatedCategory: merged.allowDuplicatedCategory,
|
|
283
|
+
allowDataOverflow: merged.allowDataOverflow,
|
|
284
|
+
reversed: merged.reversed,
|
|
285
|
+
includeHidden: merged.includeHidden,
|
|
286
|
+
domain: merged.domain,
|
|
287
|
+
allowDecimals: merged.allowDecimals,
|
|
288
|
+
tickCount: merged.tickCount,
|
|
289
|
+
ticks: merged.ticks,
|
|
290
|
+
// DEVIATION: the settings slice shares the cartesian tick renderer type,
|
|
291
|
+
// so a polar function-form renderer is recorded as `true` (presence only —
|
|
292
|
+
// the renderer itself stays local to this component's render; no selector
|
|
293
|
+
// reads the function back out of the store).
|
|
294
|
+
tick: typeof merged.tick === "function" ? true : merged.tick,
|
|
295
|
+
niceTicks: merged.niceTicks,
|
|
296
|
+
};
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
// addRadiusAxis overwrites by id, so it doubles as replace-on-change.
|
|
300
|
+
add: (next) => store.actions.polarAxis.addRadiusAxis(next),
|
|
301
|
+
replace: (_prev, next) => store.actions.polarAxis.addRadiusAxis(next),
|
|
302
|
+
remove: (prev) => store.actions.polarAxis.removeRadiusAxis(prev),
|
|
303
|
+
},
|
|
304
|
+
);
|
|
305
|
+
}
|
|
314
306
|
|
|
315
307
|
const viewBox = useAppSelector(selectPolarViewBox);
|
|
316
308
|
const scale = useAppSelector((state) =>
|
package/src/polar/Radar.tsx
CHANGED
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
// cloneElement). PERMANENT-N/A: element-form `shape`. DEFERRED: object-form
|
|
22
22
|
// `shape`. zIndex relayering IS wired: the `.recharts-radar` Layer is wrapped in
|
|
23
23
|
// <ZIndexLayer> (default DefaultZIndexes.area = 100), matching recharts.
|
|
24
|
-
import {
|
|
25
|
-
import type { JSX } from "
|
|
24
|
+
import { createMemo, Show, mergeProps } from "solid-js";
|
|
25
|
+
import type { JSX } from "solid-js";
|
|
26
26
|
import { useAppSelector, useAppStore } from "../state/hooks";
|
|
27
27
|
import { useIsPanorama } from "../context/PanoramaContext";
|
|
28
28
|
import { useUniqueId } from "../util/useUniqueId";
|
|
@@ -74,7 +74,7 @@ import { SetTooltipEntrySettings } from "../state/SetTooltipEntrySettings";
|
|
|
74
74
|
import { SetLegendPayload } from "../state/SetLegendPayload";
|
|
75
75
|
import { LegendPayload } from "../component/DefaultLegendContent";
|
|
76
76
|
import { TooltipPayloadConfiguration } from "../state/tooltipSlice";
|
|
77
|
-
import {
|
|
77
|
+
import { registerInStore } from "../state/registerInStore";
|
|
78
78
|
|
|
79
79
|
/** recharts: stroke (if not "none") wins as the legend/tooltip color, else fill. */
|
|
80
80
|
const getLegendItemColor = (
|
|
@@ -291,42 +291,30 @@ export function Radar<DataPointType = Record<string, unknown>, DataValueType = u
|
|
|
291
291
|
props: RadarProps<DataPointType, DataValueType>,
|
|
292
292
|
): JSX.Element {
|
|
293
293
|
const store = useAppStore();
|
|
294
|
-
const merged =
|
|
294
|
+
const merged = mergeProps(radarDefaultProps, props);
|
|
295
295
|
const isPanorama = useIsPanorama();
|
|
296
296
|
const id = useUniqueId("recharts-radar", props.id);
|
|
297
297
|
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
store.actions.graphicalItems.replacePolarGraphicalItem({ prev, next: settings });
|
|
319
|
-
}
|
|
320
|
-
prev = settings;
|
|
321
|
-
},
|
|
322
|
-
);
|
|
323
|
-
|
|
324
|
-
unregisterOnCleanup(() => {
|
|
325
|
-
if (prev && store != null) {
|
|
326
|
-
store.actions.graphicalItems.removePolarGraphicalItem(prev);
|
|
327
|
-
prev = null;
|
|
328
|
-
}
|
|
329
|
-
});
|
|
298
|
+
if (store != null) {
|
|
299
|
+
registerInStore<RadarSettings>(
|
|
300
|
+
() => ({
|
|
301
|
+
id,
|
|
302
|
+
type: "radar",
|
|
303
|
+
// Radar has no own data prop — it always reads the chart data.
|
|
304
|
+
data: undefined,
|
|
305
|
+
dataKey: merged.dataKey,
|
|
306
|
+
hide: merged.hide,
|
|
307
|
+
angleAxisId: merged.angleAxisId,
|
|
308
|
+
radiusAxisId: merged.radiusAxisId,
|
|
309
|
+
}),
|
|
310
|
+
{
|
|
311
|
+
add: (next) => store.actions.graphicalItems.addPolarGraphicalItem(next),
|
|
312
|
+
replace: (prev, next) =>
|
|
313
|
+
store.actions.graphicalItems.replacePolarGraphicalItem({ prev, next }),
|
|
314
|
+
remove: (prev) => store.actions.graphicalItems.removePolarGraphicalItem(prev),
|
|
315
|
+
},
|
|
316
|
+
);
|
|
317
|
+
}
|
|
330
318
|
|
|
331
319
|
const radar = useAppSelector((state) =>
|
|
332
320
|
selectRadarPoints(state, merged.radiusAxisId, merged.angleAxisId, isPanorama, id),
|
package/src/polar/RadialBar.tsx
CHANGED
|
@@ -30,11 +30,15 @@
|
|
|
30
30
|
// (final frame), element-form shape, per-sector item-hover dispatch (sectors lack
|
|
31
31
|
// tooltipPosition).
|
|
32
32
|
// Cells ARE wired: a <Cell> child overrides the per-sector fill/stroke/class.
|
|
33
|
-
import {
|
|
34
|
-
import type { JSX } from "
|
|
33
|
+
import { createMemo, For, Show, untrack, mergeProps } from "solid-js";
|
|
34
|
+
import type { JSX } from "solid-js";
|
|
35
35
|
import { useAppSelector, useAppStore } from "../state/hooks";
|
|
36
36
|
import { useUniqueId } from "../util/useUniqueId";
|
|
37
|
-
import {
|
|
37
|
+
import {
|
|
38
|
+
AnimatedItems,
|
|
39
|
+
useAnimationCallbacks,
|
|
40
|
+
type AnimationInterpolateFn,
|
|
41
|
+
} from "../animation/AnimatedItems";
|
|
38
42
|
import { matchAppend, type AnimationMatchByProp } from "../animation/matchBy";
|
|
39
43
|
import type { MutableRef } from "../animation/useAnimationStartSnapshot";
|
|
40
44
|
import { usePolarChartLayout } from "../context/chartLayoutContext";
|
|
@@ -96,7 +100,7 @@ import {
|
|
|
96
100
|
} from "../util/ChartUtils";
|
|
97
101
|
import { interpolate, isNumber, mathSign } from "../util/DataUtils";
|
|
98
102
|
import type { StackSeries } from "../util/stacks/stackTypes";
|
|
99
|
-
import {
|
|
103
|
+
import { registerInStore } from "../state/registerInStore";
|
|
100
104
|
|
|
101
105
|
export type RadialBarDataItem = SectorProps &
|
|
102
106
|
PolarViewBoxRequired &
|
|
@@ -477,7 +481,7 @@ export function RadialBar<DataPointType = Record<string, unknown>, DataValueType
|
|
|
477
481
|
props: RadialBarProps<DataPointType, DataValueType>,
|
|
478
482
|
): JSX.Element {
|
|
479
483
|
const store = useAppStore();
|
|
480
|
-
const merged =
|
|
484
|
+
const merged = mergeProps(radialBarDefaultProps, props);
|
|
481
485
|
const id = useUniqueId("recharts-radial-bar", props.id);
|
|
482
486
|
|
|
483
487
|
const settings = (): RadialBarSettings => ({
|
|
@@ -494,29 +498,14 @@ export function RadialBar<DataPointType = Record<string, unknown>, DataValueType
|
|
|
494
498
|
maxBarSize: merged.maxBarSize,
|
|
495
499
|
});
|
|
496
500
|
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
if (prev === null) {
|
|
506
|
-
store.actions.graphicalItems.addPolarGraphicalItem(s);
|
|
507
|
-
} else if (prev !== s) {
|
|
508
|
-
store.actions.graphicalItems.replacePolarGraphicalItem({ prev, next: s });
|
|
509
|
-
}
|
|
510
|
-
prev = s;
|
|
511
|
-
},
|
|
512
|
-
);
|
|
513
|
-
|
|
514
|
-
unregisterOnCleanup(() => {
|
|
515
|
-
if (prev && store != null) {
|
|
516
|
-
store.actions.graphicalItems.removePolarGraphicalItem(prev);
|
|
517
|
-
prev = null;
|
|
518
|
-
}
|
|
519
|
-
});
|
|
501
|
+
if (store != null) {
|
|
502
|
+
registerInStore<RadialBarSettings>(() => settings(), {
|
|
503
|
+
add: (next) => store.actions.graphicalItems.addPolarGraphicalItem(next),
|
|
504
|
+
replace: (prev, next) =>
|
|
505
|
+
store.actions.graphicalItems.replacePolarGraphicalItem({ prev, next }),
|
|
506
|
+
remove: (prev) => store.actions.graphicalItems.removePolarGraphicalItem(prev),
|
|
507
|
+
});
|
|
508
|
+
}
|
|
520
509
|
|
|
521
510
|
// Per-sector <Cell> overrides (collected from children, in data order).
|
|
522
511
|
const cells = collectCells(() => props.children);
|
|
@@ -574,17 +563,10 @@ export function RadialBar<DataPointType = Record<string, unknown>, DataValueType
|
|
|
574
563
|
current: null,
|
|
575
564
|
};
|
|
576
565
|
// Labels are hidden while the sectors animate (recharts' showLabels={!isAnimating}).
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
props.onAnimationStart?.();
|
|
582
|
-
setShowLabels(false);
|
|
583
|
-
};
|
|
584
|
-
const handleAnimationEnd = (): void => {
|
|
585
|
-
props.onAnimationEnd?.();
|
|
586
|
-
setShowLabels(true);
|
|
587
|
-
};
|
|
566
|
+
const { isAnimating, handleAnimationStart, handleAnimationEnd } = useAnimationCallbacks(
|
|
567
|
+
() => props.onAnimationStart?.(),
|
|
568
|
+
() => props.onAnimationEnd?.(),
|
|
569
|
+
);
|
|
588
570
|
|
|
589
571
|
// User pointer handlers are forwarded to each sector's wrapping <Layer>: the
|
|
590
572
|
// mouse handlers wrap into the tooltip-item dispatch (called props-first), and
|
|
@@ -669,7 +651,7 @@ export function RadialBar<DataPointType = Record<string, unknown>, DataValueType
|
|
|
669
651
|
<Layer class={layerClass()}>
|
|
670
652
|
<PolarLabelListContextProvider
|
|
671
653
|
value={() =>
|
|
672
|
-
|
|
654
|
+
!isAnimating()
|
|
673
655
|
? secs().map(
|
|
674
656
|
(sector): PolarLabelListEntry => ({
|
|
675
657
|
value: sector.value,
|
|
@@ -730,7 +712,7 @@ export function RadialBar<DataPointType = Record<string, unknown>, DataValueType
|
|
|
730
712
|
isActive={isSectorActiveShape(i())}
|
|
731
713
|
option={sectorOption(i())}
|
|
732
714
|
animationElapsedTime={animationElapsedTime}
|
|
733
|
-
isAnimating={
|
|
715
|
+
isAnimating={isAnimating() || animationElapsedTime < 1}
|
|
734
716
|
isEntrance={isEntrance}
|
|
735
717
|
class={`recharts-radial-bar-sector ${entry.class ?? ""}`}
|
|
736
718
|
fill={entry.fill ?? merged.fill}
|
package/src/shape/Cross.tsx
CHANGED
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
* Ported from recharts 3.8.1 src/shape/Cross.tsx (commit 7a23854).
|
|
5
5
|
* Solid deviations: `className` (recharts) → `class: string` (and Omit the wide
|
|
6
6
|
* SVG `class` so the array form typechecks); destructuring defaults → `?? 0`
|
|
7
|
-
* accessors; `clsx` → `class={[...]}`; `return null` → `<Show>`.
|
|
7
|
+
* accessors; `clsx` → `class={[...].filter(Boolean).join(" ")}`; `return null` → `<Show>`.
|
|
8
8
|
*/
|
|
9
9
|
import { type CamelSvgProps } from "../util/svgPropertiesNoEvents";
|
|
10
|
-
import { Show,
|
|
11
|
-
import type { JSX } from "
|
|
10
|
+
import { Show, splitProps } from "solid-js";
|
|
11
|
+
import type { JSX } from "solid-js";
|
|
12
12
|
import { isNumber } from "../util/DataUtils";
|
|
13
13
|
import { svgPropertiesAndEvents } from "../util/svgPropertiesAndEvents";
|
|
14
14
|
|
|
@@ -62,7 +62,7 @@ export const Cross = (props: CrossProps): JSX.Element => {
|
|
|
62
62
|
// SVG-prop filter; only allowlisted keys (x, y, width, height, …) survive onto
|
|
63
63
|
// the <path>. `top`/`left`/`class` are filtered/handled separately.
|
|
64
64
|
const passthrough = (): Record<string, unknown> => ({
|
|
65
|
-
...
|
|
65
|
+
...splitProps(props, ["class"])[1],
|
|
66
66
|
x: x(),
|
|
67
67
|
y: y(),
|
|
68
68
|
top: top(),
|
|
@@ -75,7 +75,7 @@ export const Cross = (props: CrossProps): JSX.Element => {
|
|
|
75
75
|
<Show when={valid()}>
|
|
76
76
|
<path
|
|
77
77
|
{...svgPropertiesAndEvents(passthrough())}
|
|
78
|
-
class={["recharts-cross", props.class]}
|
|
78
|
+
class={["recharts-cross", props.class].filter(Boolean).join(" ")}
|
|
79
79
|
d={getPath(x(), y(), width(), height(), top(), left())}
|
|
80
80
|
/>
|
|
81
81
|
</Show>
|
package/src/shape/Curve.tsx
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Ported from recharts 3.8.1 src/shape/Curve.tsx (commit 7a23854).
|
|
5
5
|
* Pure `getPath`/`getCurveFactory` helpers copied verbatim (modulo type
|
|
6
6
|
* adjustments). Solid deviations:
|
|
7
|
-
* - `className` → `class` (Omit the wide SVG `class`); `clsx` → `class={[...]}`.
|
|
7
|
+
* - `className` → `class` (Omit the wide SVG `class`); `clsx` → `class={[...].filter(Boolean).join(" ")}`.
|
|
8
8
|
* - `resolveDefaultProps` → `merge()` defaults via per-prop `?? default`.
|
|
9
9
|
* - `React.forwardRef` → `ref?: SVGPathElement | ((el: SVGPathElement) => void)`.
|
|
10
10
|
* - `return null` → `<Show>`.
|
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
* generic type internally but its typings don't reflect that.
|
|
18
18
|
*/
|
|
19
19
|
import { type CamelSvgProps } from "../util/svgPropertiesNoEvents";
|
|
20
|
-
import { Show,
|
|
21
|
-
import type { JSX } from "
|
|
20
|
+
import { Show, splitProps } from "solid-js";
|
|
21
|
+
import type { JSX } from "solid-js";
|
|
22
22
|
import {
|
|
23
23
|
area as shapeArea,
|
|
24
24
|
type Area as D3AreaCurve,
|
|
@@ -38,7 +38,7 @@ import {
|
|
|
38
38
|
curveStepBefore,
|
|
39
39
|
line as shapeLine,
|
|
40
40
|
type Line as D3LineCurve,
|
|
41
|
-
} from "
|
|
41
|
+
} from "d3-shape";
|
|
42
42
|
import { isNumber, upperFirst } from "../util/DataUtils";
|
|
43
43
|
import { isWellBehavedNumber } from "../util/isWellBehavedNumber";
|
|
44
44
|
import { svgPropertiesNoEvents } from "../util/svgPropertiesNoEvents";
|
|
@@ -303,8 +303,7 @@ export const Curve = (props: CurveProps): JSX.Element => {
|
|
|
303
303
|
// `strokeDasharray` (camelCase) is forwarded by the spread — svgPropertiesNoEvents
|
|
304
304
|
// renames it to the kebab `stroke-dasharray` DOM attribute (see svg-attribute-rename).
|
|
305
305
|
const others = (): Record<string, unknown> => ({
|
|
306
|
-
...
|
|
307
|
-
props,
|
|
306
|
+
...splitProps(props, [
|
|
308
307
|
"class",
|
|
309
308
|
"type",
|
|
310
309
|
"layout",
|
|
@@ -313,7 +312,7 @@ export const Curve = (props: CurveProps): JSX.Element => {
|
|
|
313
312
|
"connectNulls",
|
|
314
313
|
"path",
|
|
315
314
|
"pathRef",
|
|
316
|
-
),
|
|
315
|
+
])[1],
|
|
317
316
|
});
|
|
318
317
|
|
|
319
318
|
// recharts Curve spreads `svgPropertiesNoEvents(props)` for attributes and
|
|
@@ -326,7 +325,7 @@ export const Curve = (props: CurveProps): JSX.Element => {
|
|
|
326
325
|
<path
|
|
327
326
|
{...svgPropertiesNoEvents(others())}
|
|
328
327
|
{...(adaptEventHandlers(props) ?? {})}
|
|
329
|
-
class={["recharts-curve", props.class]}
|
|
328
|
+
class={["recharts-curve", props.class].filter(Boolean).join(" ")}
|
|
330
329
|
d={dAttr()}
|
|
331
330
|
ref={props.pathRef}
|
|
332
331
|
/>
|
package/src/shape/Dot.tsx
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type CamelSvgProps } from "../util/svgPropertiesNoEvents";
|
|
2
2
|
import { svgPropertiesAndEvents } from "../util/svgPropertiesAndEvents";
|
|
3
|
-
import { Show,
|
|
4
|
-
import type { JSX } from "
|
|
3
|
+
import { Show, splitProps } from "solid-js";
|
|
4
|
+
import type { JSX } from "solid-js";
|
|
5
5
|
import { isNumber } from "../util/DataUtils";
|
|
6
6
|
|
|
7
7
|
interface DotOwnProps {
|
|
@@ -33,13 +33,13 @@ export type DotProps = Omit<
|
|
|
33
33
|
* because it is not a valid SVG attribute.
|
|
34
34
|
*/
|
|
35
35
|
export const Dot = (props: DotProps) => {
|
|
36
|
-
const rest =
|
|
36
|
+
const rest = splitProps(props, ["class", "cx", "cy", "r", "clipDot"])[1];
|
|
37
37
|
|
|
38
38
|
return (
|
|
39
39
|
<Show when={isNumber(props.cx) && isNumber(props.cy) && isNumber(props.r)}>
|
|
40
40
|
<circle
|
|
41
41
|
{...svgPropertiesAndEvents({ ...rest })}
|
|
42
|
-
class={["recharts-dot", props.class]}
|
|
42
|
+
class={["recharts-dot", props.class].filter(Boolean).join(" ")}
|
|
43
43
|
cx={props.cx}
|
|
44
44
|
cy={props.cy}
|
|
45
45
|
r={props.r}
|
package/src/shape/Polygon.tsx
CHANGED
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
* Ported from recharts 3.8.1 src/shape/Polygon.tsx (commit 7a23854).
|
|
5
5
|
* Pure path helpers are copied verbatim. Solid deviations: `className` → `class`
|
|
6
6
|
* (Omit the wide SVG `class`); no destructuring (use `omit` + a keyed `<Show>`
|
|
7
|
-
* to narrow `points` without a non-null `!`); `clsx` → `class={[...]}`;
|
|
7
|
+
* to narrow `points` without a non-null `!`); `clsx` → `class={[...].filter(Boolean).join(" ")}`;
|
|
8
8
|
* `return null` → `<Show>`.
|
|
9
9
|
*/
|
|
10
10
|
import { type CamelSvgProps } from "../util/svgPropertiesNoEvents";
|
|
11
|
-
import { Show,
|
|
12
|
-
import type { JSX } from "
|
|
11
|
+
import { Show, splitProps } from "solid-js";
|
|
12
|
+
import type { JSX } from "solid-js";
|
|
13
13
|
import { Coordinate } from "../util/types";
|
|
14
14
|
import { svgPropertiesAndEvents } from "../util/svgPropertiesAndEvents";
|
|
15
15
|
import { roundTemplateLiteral } from "../util/round";
|
|
@@ -103,9 +103,9 @@ export type PolygonProps = Omit<
|
|
|
103
103
|
|
|
104
104
|
export const Polygon = (props: PolygonProps): JSX.Element => {
|
|
105
105
|
const others = (): Record<string, unknown> => ({
|
|
106
|
-
...
|
|
106
|
+
...splitProps(props, ["class", "points", "baseLinePoints", "connectNulls"])[1],
|
|
107
107
|
});
|
|
108
|
-
const layerClass = ():
|
|
108
|
+
const layerClass = (): string => ["recharts-polygon", props.class].filter(Boolean).join(" ");
|
|
109
109
|
|
|
110
110
|
// Narrow `points` to a non-empty array via keyed Show (no non-null assertion).
|
|
111
111
|
const validPoints = (): ReadonlyArray<Coordinate> | undefined =>
|
package/src/shape/Rectangle.tsx
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Ported from recharts 3.8.1 src/shape/Rectangle.tsx (commit 7a23854).
|
|
5
5
|
* Pure `getRectanglePath` copied verbatim. Solid deviations: `className` →
|
|
6
6
|
* `class` (Omit the wide SVG `class`); destructuring defaults → `?? default`;
|
|
7
|
-
* `clsx` → `class={[...]}`; `return null` → `<Show>`; the radius is rendered as
|
|
7
|
+
* `clsx` → `class={[...].filter(Boolean).join(" ")}`; `return null` → `<Show>`; the radius is rendered as
|
|
8
8
|
* a number-or-undefined attribute (overriding the spread).
|
|
9
9
|
*
|
|
10
10
|
* The update-animation path (`isUpdateAnimationActive`) is WIRED: it drives
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
* (e.g. Bar's rectangles) stays static — wiring is regression-safe.
|
|
15
15
|
*/
|
|
16
16
|
import { type CamelSvgProps } from "../util/svgPropertiesNoEvents";
|
|
17
|
-
import {
|
|
18
|
-
import type { JSX } from "
|
|
17
|
+
import { createSignal, Show, untrack, splitProps, createEffect, on } from "solid-js";
|
|
18
|
+
import type { JSX } from "solid-js";
|
|
19
19
|
import type { AnimationDuration } from "../util/types";
|
|
20
20
|
import type { EasingInput } from "../animation/easing";
|
|
21
21
|
import { svgPropertiesAndEvents } from "../util/svgPropertiesAndEvents";
|
|
@@ -154,14 +154,14 @@ export const Rectangle = (props: RectangleProps): JSX.Element => {
|
|
|
154
154
|
const animationEasing = (): EasingInput => props.animationEasing ?? "ease";
|
|
155
155
|
const animationBegin = (): number => props.animationBegin ?? 0;
|
|
156
156
|
|
|
157
|
-
const layerClass = ():
|
|
157
|
+
const layerClass = (): string => ["recharts-rectangle", props.class].filter(Boolean).join(" ");
|
|
158
158
|
|
|
159
159
|
// recharts renders x/y/width/height/radius on the <path> (React allows extra
|
|
160
160
|
// attrs). Solid's PathSVGAttributes is stricter, so route them through the
|
|
161
161
|
// (loosely-typed) svgPropertiesAndEvents spread rather than explicit attrs.
|
|
162
162
|
// `radius` is rendered only when it's a number (array radius → undefined).
|
|
163
163
|
const basePathProps = (): Record<string, unknown> => ({
|
|
164
|
-
...
|
|
164
|
+
...splitProps(props, ["class", "style"])[1],
|
|
165
165
|
radius: typeof radius() === "number" ? radius() : undefined,
|
|
166
166
|
});
|
|
167
167
|
|
|
@@ -178,21 +178,23 @@ export const Rectangle = (props: RectangleProps): JSX.Element => {
|
|
|
178
178
|
pathEl = el;
|
|
179
179
|
};
|
|
180
180
|
createEffect(
|
|
181
|
-
(
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
181
|
+
on(
|
|
182
|
+
() => ({ x: x(), y: y(), width: width(), height: height(), radius: radius() }),
|
|
183
|
+
() => {
|
|
184
|
+
if (pathEl?.getTotalLength == null) {
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
let len = 0;
|
|
188
|
+
try {
|
|
189
|
+
len = pathEl.getTotalLength();
|
|
190
|
+
} catch {
|
|
191
|
+
return; // getTotalLength can throw on detached/empty paths — keep the last value.
|
|
192
|
+
}
|
|
193
|
+
if (len) {
|
|
194
|
+
setTotalLength(len);
|
|
195
|
+
}
|
|
196
|
+
},
|
|
197
|
+
),
|
|
196
198
|
);
|
|
197
199
|
|
|
198
200
|
const animationId = useAnimationId(
|
package/src/shape/Sector.tsx
CHANGED
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
* Ported from recharts 3.8.1 src/shape/Sector.tsx (commit 7a23854).
|
|
5
5
|
* Pure geometry helpers copied verbatim. Solid deviations: `resolveDefaultProps`
|
|
6
6
|
* → per-prop `?? default` accessors; `className` → `class` (Omit the wide SVG
|
|
7
|
-
* `class`); `clsx` → `class={[...]}`; `return null` → `<Show>`.
|
|
7
|
+
* `class`); `clsx` → `class={[...].filter(Boolean).join(" ")}`; `return null` → `<Show>`.
|
|
8
8
|
*/
|
|
9
9
|
import { type CamelSvgProps } from "../util/svgPropertiesNoEvents";
|
|
10
|
-
import { Show,
|
|
11
|
-
import type { JSX } from "
|
|
10
|
+
import { Show, splitProps } from "solid-js";
|
|
11
|
+
import type { JSX } from "solid-js";
|
|
12
12
|
import { GeometrySector, GeometrySectorWithCornerRadius } from "../util/types";
|
|
13
13
|
import { polarToCartesian, RADIAN } from "../util/PolarUtils";
|
|
14
14
|
import { getPercentValue, mathSign } from "../util/DataUtils";
|
|
@@ -280,7 +280,7 @@ export const Sector = (props: SectorProps): JSX.Element => {
|
|
|
280
280
|
};
|
|
281
281
|
|
|
282
282
|
const passthrough = (): Record<string, unknown> => ({
|
|
283
|
-
...
|
|
283
|
+
...splitProps(props, ["class"])[1],
|
|
284
284
|
cx: cx(),
|
|
285
285
|
cy: cy(),
|
|
286
286
|
innerRadius: innerRadius(),
|
|
@@ -296,7 +296,7 @@ export const Sector = (props: SectorProps): JSX.Element => {
|
|
|
296
296
|
<Show when={valid()}>
|
|
297
297
|
<path
|
|
298
298
|
{...svgPropertiesAndEvents(passthrough())}
|
|
299
|
-
class={["recharts-sector", props.class]}
|
|
299
|
+
class={["recharts-sector", props.class].filter(Boolean).join(" ")}
|
|
300
300
|
d={path()}
|
|
301
301
|
/>
|
|
302
302
|
</Show>
|
package/src/shape/Symbols.tsx
CHANGED
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
* Ported from recharts 3.8.1 src/shape/Symbols.tsx (commit 7a23854).
|
|
5
5
|
* Pure d3-shape symbol math copied verbatim. Solid deviations: `className` →
|
|
6
6
|
* `class` (Omit the wide SVG `class`); destructuring defaults → `?? default`
|
|
7
|
-
* accessors; `clsx` → `class={[...]}`; `return null` → `<Show>`; the
|
|
7
|
+
* accessors; `clsx` → `class={[...].filter(Boolean).join(" ")}`; `return null` → `<Show>`; the
|
|
8
8
|
* `registerSymbol` static is attached via `Object.assign` (no `as`).
|
|
9
9
|
*/
|
|
10
10
|
import { type CamelSvgProps } from "../util/svgPropertiesNoEvents";
|
|
11
|
-
import { Show,
|
|
12
|
-
import type { JSX } from "
|
|
11
|
+
import { Show, splitProps } from "solid-js";
|
|
12
|
+
import type { JSX } from "solid-js";
|
|
13
13
|
import {
|
|
14
14
|
symbol as shapeSymbol,
|
|
15
15
|
symbolCircle,
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
symbolTriangle,
|
|
21
21
|
symbolWye,
|
|
22
22
|
type SymbolType as D3SymbolType,
|
|
23
|
-
} from "
|
|
23
|
+
} from "d3-shape";
|
|
24
24
|
import { SymbolType } from "../util/types";
|
|
25
25
|
import { isNumber, upperFirst } from "../util/DataUtils";
|
|
26
26
|
import { svgPropertiesAndEvents } from "../util/svgPropertiesAndEvents";
|
|
@@ -123,7 +123,7 @@ const SymbolsComponent = (props: SymbolsProps): JSX.Element => {
|
|
|
123
123
|
};
|
|
124
124
|
|
|
125
125
|
const passthrough = (): Record<string, unknown> => ({
|
|
126
|
-
...
|
|
126
|
+
...splitProps(props, ["class", "type", "size", "sizeType"])[1],
|
|
127
127
|
type: type(),
|
|
128
128
|
size: size(),
|
|
129
129
|
sizeType: sizeType(),
|
|
@@ -133,7 +133,7 @@ const SymbolsComponent = (props: SymbolsProps): JSX.Element => {
|
|
|
133
133
|
<Show when={isNumber(props.cx) && isNumber(props.cy) && isNumber(size())}>
|
|
134
134
|
<path
|
|
135
135
|
{...svgPropertiesAndEvents(passthrough())}
|
|
136
|
-
class={["recharts-symbols", props.class]}
|
|
136
|
+
class={["recharts-symbols", props.class].filter(Boolean).join(" ")}
|
|
137
137
|
transform={`translate(${props.cx}, ${props.cy})`}
|
|
138
138
|
d={getPath()}
|
|
139
139
|
/>
|