solid-recharts 0.2.1 → 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 +13 -11
- 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 +4 -4
- package/src/cartesian/AreaRevealShape.tsx +1 -1
- package/src/cartesian/Bar.tsx +33 -21
- package/src/cartesian/BarStack.tsx +5 -5
- package/src/cartesian/Brush.tsx +19 -15
- 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 +3 -3
- package/src/cartesian/GraphicalItemClipPath.tsx +1 -1
- package/src/cartesian/Line.tsx +18 -16
- package/src/cartesian/LineDrawShape.tsx +14 -13
- package/src/cartesian/ReferenceArea.tsx +4 -4
- package/src/cartesian/ReferenceDot.tsx +4 -4
- package/src/cartesian/ReferenceLine.tsx +4 -4
- package/src/cartesian/RenderedTicksReporter.tsx +19 -17
- package/src/cartesian/Scatter.tsx +3 -3
- package/src/cartesian/XAxis.tsx +1 -1
- package/src/cartesian/YAxis.tsx +35 -33
- package/src/cartesian/ZAxis.tsx +3 -2
- 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 +5 -4
- package/src/chart/Treemap.tsx +5 -4
- package/src/component/ActivePoints.tsx +6 -6
- 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 +5 -5
- 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 +2 -2
- 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 +13 -12
- package/src/polar/PolarAngleAxis.tsx +3 -3
- package/src/polar/PolarGrid.tsx +5 -5
- package/src/polar/PolarRadiusAxis.tsx +3 -3
- package/src/polar/Radar.tsx +3 -3
- package/src/polar/RadialBar.tsx +3 -3
- package/src/shape/Cross.tsx +5 -5
- package/src/shape/Curve.tsx +6 -7
- 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 +5 -5
- 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 +1 -1
- package/src/state/SetTooltipEntrySettings.tsx +1 -1
- package/src/state/brushSlice.ts +10 -8
- package/src/state/cartesianAxisSlice.ts +46 -38
- package/src/state/chartDataSlice.ts +29 -23
- package/src/state/errorBarSlice.ts +22 -16
- package/src/state/eventSettingsSlice.ts +11 -9
- package/src/state/graphicalItemsSlice.ts +17 -13
- package/src/state/layoutSlice.ts +27 -19
- package/src/state/legendSlice.ts +24 -18
- package/src/state/optionsSlice.ts +8 -6
- package/src/state/polarAxisSlice.ts +21 -13
- package/src/state/polarOptionsSlice.ts +16 -14
- package/src/state/referenceElementsSlice.ts +25 -19
- package/src/state/registerInStore.ts +15 -13
- package/src/state/renderedTicksSlice.ts +11 -7
- package/src/state/rootPropsSlice.ts +16 -14
- package/src/state/tooltipSlice.ts +115 -95
- 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 -2
- package/src/util/BarUtils.tsx +5 -3
- 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/svgPropertiesAndEvents.ts +1 -1
- package/src/util/tooltip/translate.ts +2 -2
- package/src/util/types.ts +2 -2
- package/src/zIndex/ZIndexLayer.tsx +39 -68
- package/src/zIndex/ZIndexPortal.tsx +29 -25
- 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/createCollectionActions.spec.ts +0 -87
- package/test/state/createSelector.spec.ts +0 -158
- 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/referenceElementsSlice.spec.ts +0 -84
- package/test/state/registerInStore.spec.tsx +0 -101
- 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/selectorMemoization.spec.tsx +0 -136
- 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 -97
- 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/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/test-results/.last-run.json +0 -4
- package/tsconfig.json +0 -11
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
// ResponsiveContainer-context sizing, and the tooltip/legend portal contexts.
|
|
6
6
|
// Renders the `recharts-wrapper` div + `ReportChartSize` (which drives the
|
|
7
7
|
// Surface dimensions) + children.
|
|
8
|
-
import { createMemo, createSignal,
|
|
9
|
-
import type { JSX } from "
|
|
8
|
+
import { batch, createMemo, createSignal, onCleanup, untrack } from "solid-js";
|
|
9
|
+
import type { JSX } from "solid-js";
|
|
10
10
|
import { ReportChartSize } from "../context/chartLayoutContext";
|
|
11
11
|
import { TooltipPortalContext } from "../context/tooltipPortalContext";
|
|
12
12
|
import { LegendPortalContext } from "../context/legendPortalContext";
|
|
@@ -95,12 +95,8 @@ export const RechartsWrapper = (props: RechartsWrapperProps): JSX.Element => {
|
|
|
95
95
|
// the same node is passed to setTooltipPortal). The ref sets a signal that the
|
|
96
96
|
// TooltipPortalContext exposes reactively, then forwards to the caller's ref.
|
|
97
97
|
const [tooltipPortal, setTooltipPortal] = createSignal<HTMLElement | null>(null);
|
|
98
|
-
const [measuredWidth, setMeasuredWidth] = createSignal<number | undefined>(undefined
|
|
99
|
-
|
|
100
|
-
});
|
|
101
|
-
const [measuredHeight, setMeasuredHeight] = createSignal<number | undefined>(undefined, {
|
|
102
|
-
ownedWrite: true,
|
|
103
|
-
});
|
|
98
|
+
const [measuredWidth, setMeasuredWidth] = createSignal<number | undefined>(undefined);
|
|
99
|
+
const [measuredHeight, setMeasuredHeight] = createSignal<number | undefined>(undefined);
|
|
104
100
|
let wrapperEl: HTMLDivElement | null = null;
|
|
105
101
|
let resizeObserver: ResizeObserver | null = null;
|
|
106
102
|
|
|
@@ -141,9 +137,10 @@ export const RechartsWrapper = (props: RechartsWrapperProps): JSX.Element => {
|
|
|
141
137
|
if (untrack(measuredWidth) === roundedWidth && untrack(measuredHeight) === roundedHeight) {
|
|
142
138
|
return;
|
|
143
139
|
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
140
|
+
batch(() => {
|
|
141
|
+
setMeasuredWidth(roundedWidth);
|
|
142
|
+
setMeasuredHeight(roundedHeight);
|
|
143
|
+
});
|
|
147
144
|
};
|
|
148
145
|
|
|
149
146
|
const measureOnce = (el: HTMLDivElement): void => {
|
|
@@ -277,7 +274,6 @@ export const RechartsWrapper = (props: RechartsWrapperProps): JSX.Element => {
|
|
|
277
274
|
|
|
278
275
|
const handleMouseLeave = (event: MouseEvent & { currentTarget: HTMLDivElement }): void => {
|
|
279
276
|
store?.actions.tooltip.mouseLeaveChart();
|
|
280
|
-
flush();
|
|
281
277
|
if (store != null) {
|
|
282
278
|
dispatchExternalMouseHandler(props.onMouseLeave, event);
|
|
283
279
|
}
|
|
@@ -300,13 +296,11 @@ export const RechartsWrapper = (props: RechartsWrapperProps): JSX.Element => {
|
|
|
300
296
|
const related = event.relatedTarget;
|
|
301
297
|
if (related == null || !(related instanceof Node) || !el.contains(related)) {
|
|
302
298
|
store?.actions.tooltip.mouseLeaveChart();
|
|
303
|
-
flush();
|
|
304
299
|
}
|
|
305
300
|
};
|
|
306
301
|
|
|
307
302
|
const handleNativeMouseLeave = (): void => {
|
|
308
303
|
store?.actions.tooltip.mouseLeaveChart();
|
|
309
|
-
flush();
|
|
310
304
|
};
|
|
311
305
|
|
|
312
306
|
const attachWrapperListeners = (el: HTMLDivElement): void => {
|
|
@@ -339,10 +333,6 @@ export const RechartsWrapper = (props: RechartsWrapperProps): JSX.Element => {
|
|
|
339
333
|
clientY: event.clientY,
|
|
340
334
|
currentTarget: event.currentTarget,
|
|
341
335
|
});
|
|
342
|
-
// Solid 2.0 defers store propagation to a flush boundary; the external
|
|
343
|
-
// handler (dispatchExternalEvent) reads store.state synchronously, so flush
|
|
344
|
-
// the click-driven active-tooltip write first or the handler sees stale state.
|
|
345
|
-
flush();
|
|
346
336
|
dispatchExternalMouseHandler(props.onClick, event);
|
|
347
337
|
};
|
|
348
338
|
|
|
@@ -451,11 +441,11 @@ export const RechartsWrapper = (props: RechartsWrapperProps): JSX.Element => {
|
|
|
451
441
|
};
|
|
452
442
|
|
|
453
443
|
return (
|
|
454
|
-
<TooltipPortalContext value={tooltipPortal}>
|
|
455
|
-
<LegendPortalContext value={tooltipPortal}>
|
|
444
|
+
<TooltipPortalContext.Provider value={tooltipPortal}>
|
|
445
|
+
<LegendPortalContext.Provider value={tooltipPortal}>
|
|
456
446
|
<ReportChartSize width={reportedWidth()} height={reportedHeight()} />
|
|
457
447
|
<div
|
|
458
|
-
class={["recharts-wrapper", props.class]}
|
|
448
|
+
class={["recharts-wrapper", props.class].filter(Boolean).join(" ")}
|
|
459
449
|
style={wrapperStyle()}
|
|
460
450
|
ref={(el) => {
|
|
461
451
|
setWrapperRef(el);
|
|
@@ -476,11 +466,11 @@ export const RechartsWrapper = (props: RechartsWrapperProps): JSX.Element => {
|
|
|
476
466
|
onKeyDown={handleKeyDown}
|
|
477
467
|
onFocus={onFocus}
|
|
478
468
|
onBlur={onBlur}
|
|
479
|
-
|
|
469
|
+
tabIndex={0}
|
|
480
470
|
>
|
|
481
471
|
{props.children}
|
|
482
472
|
</div>
|
|
483
|
-
</LegendPortalContext>
|
|
484
|
-
</TooltipPortalContext>
|
|
473
|
+
</LegendPortalContext.Provider>
|
|
474
|
+
</TooltipPortalContext.Provider>
|
|
485
475
|
);
|
|
486
476
|
};
|
package/src/chart/Sankey.tsx
CHANGED
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
// through getValueByDataKey in the payload searcher (reference parity).
|
|
19
19
|
// NON-GAPS: the reference Sankey has NO animation and hardcodes responsive={false}
|
|
20
20
|
// on its wrapper (ResponsiveContainer sizing flows via the wrapper context).
|
|
21
|
-
import {
|
|
22
|
-
import type { JSX } from "
|
|
21
|
+
import { children, createMemo, For, Show, mergeProps, createEffect, on } from "solid-js";
|
|
22
|
+
import type { JSX } from "solid-js";
|
|
23
23
|
import { Surface } from "../container/Surface";
|
|
24
24
|
import { Layer } from "../container/Layer";
|
|
25
25
|
import { Rectangle } from "../shape/Rectangle";
|
|
@@ -767,7 +767,8 @@ const sankeyOptions: ChartOptions = {
|
|
|
767
767
|
|
|
768
768
|
const SankeyImpl = (props: SankeyProps & { id: string }): JSX.Element => {
|
|
769
769
|
const store = useAppStore();
|
|
770
|
-
const merged =
|
|
770
|
+
const merged = mergeProps(sankeyDefaultProps, props);
|
|
771
|
+
const resolvedChildren = children(() => props.children);
|
|
771
772
|
const width = useChartWidth();
|
|
772
773
|
const height = useChartHeight();
|
|
773
774
|
|
|
@@ -808,8 +809,10 @@ const SankeyImpl = (props: SankeyProps & { id: string }): JSX.Element => {
|
|
|
808
809
|
|
|
809
810
|
// Publish the computed data so the tooltip searcher can resolve node-/link-N.
|
|
810
811
|
createEffect(
|
|
811
|
-
(
|
|
812
|
-
|
|
812
|
+
on(
|
|
813
|
+
() => ({ nodes: computed().nodes, links: computed().links }),
|
|
814
|
+
(cd) => store?.actions.chartData.setComputedData(cd),
|
|
815
|
+
),
|
|
813
816
|
);
|
|
814
817
|
|
|
815
818
|
const dispatchEnter = (index: TooltipIndex, coord: Coordinate): void => {
|
|
@@ -956,7 +959,7 @@ const SankeyImpl = (props: SankeyProps & { id: string }): JSX.Element => {
|
|
|
956
959
|
</Layer>
|
|
957
960
|
</Layer>
|
|
958
961
|
<SetTooltipEntrySettings tooltipEntrySettings={tooltipConfig()} />
|
|
959
|
-
{
|
|
962
|
+
{resolvedChildren()}
|
|
960
963
|
</Surface>
|
|
961
964
|
)}
|
|
962
965
|
</Show>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Ported from recharts 3.8.1 src/chart/ScatterChart.tsx (commit 7a23854).
|
|
2
2
|
// `forwardRef` → `ref` prop; thin user-facing wrapper over CartesianChart.
|
|
3
|
-
import type { JSX } from "
|
|
3
|
+
import type { JSX } from "solid-js";
|
|
4
4
|
import { arrayTooltipSearcher } from "../state/optionsSlice";
|
|
5
5
|
import { CartesianChart } from "./CartesianChart";
|
|
6
6
|
import { CartesianChartProps, TooltipEventType } from "../util/types";
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
// NON-GAP: `responsive` defaults to false in the reference too, and
|
|
13
13
|
// ResponsiveContainer sizing flows via the wrapper context.
|
|
14
14
|
// DEFERRED: event throttling nuances.
|
|
15
|
-
import { createMemo, For,
|
|
16
|
-
import type { JSX } from "
|
|
15
|
+
import { children, createMemo, For, Show, mergeProps } from "solid-js";
|
|
16
|
+
import type { JSX } from "solid-js";
|
|
17
17
|
import { scaleLinear } from "d3-scale";
|
|
18
18
|
import { Surface } from "../container/Surface";
|
|
19
19
|
import { Layer } from "../container/Layer";
|
|
@@ -166,7 +166,8 @@ const SunburstChartImpl = (
|
|
|
166
166
|
props: Required<Pick<SunburstChartProps, "data">> & SunburstChartProps & { id: string },
|
|
167
167
|
): JSX.Element => {
|
|
168
168
|
const store = useAppStore();
|
|
169
|
-
const merged =
|
|
169
|
+
const merged = mergeProps(sunburstDefaultProps, props);
|
|
170
|
+
const resolvedChildren = children(() => props.children);
|
|
170
171
|
const width = useChartWidth();
|
|
171
172
|
const height = useChartHeight();
|
|
172
173
|
|
|
@@ -348,7 +349,7 @@ const SunburstChartImpl = (
|
|
|
348
349
|
</For>
|
|
349
350
|
</Layer>
|
|
350
351
|
<SetTooltipEntrySettings tooltipEntrySettings={tooltipConfig()} />
|
|
351
|
-
{
|
|
352
|
+
{resolvedChildren()}
|
|
352
353
|
</Surface>
|
|
353
354
|
)}
|
|
354
355
|
</Show>
|
package/src/chart/Treemap.tsx
CHANGED
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
// works via the wrapper context (the reference itself hardcodes responsive={false}
|
|
19
19
|
// on its wrapper). DEFERRED: the element form of `content` & `nestIndexContent`,
|
|
20
20
|
// per-node name-fit text sizing nuances.
|
|
21
|
-
import { createMemo, createSignal, For,
|
|
22
|
-
import type { JSX } from "
|
|
21
|
+
import { children, createMemo, createSignal, For, Show, mergeProps } from "solid-js";
|
|
22
|
+
import type { JSX } from "solid-js";
|
|
23
23
|
import { Surface } from "../container/Surface";
|
|
24
24
|
import { Layer } from "../container/Layer";
|
|
25
25
|
import { Rectangle } from "../shape/Rectangle";
|
|
@@ -484,7 +484,8 @@ const flattenNodes = (node: TreemapNode | null): TreemapNode[] => {
|
|
|
484
484
|
|
|
485
485
|
const TreemapImpl = (props: TreemapProps & { id: string }): JSX.Element => {
|
|
486
486
|
const store = useAppStore();
|
|
487
|
-
const merged =
|
|
487
|
+
const merged = mergeProps(treemapDefaultProps, props);
|
|
488
|
+
const resolvedChildren = children(() => props.children);
|
|
488
489
|
const width = useChartWidth();
|
|
489
490
|
const height = useChartHeight();
|
|
490
491
|
|
|
@@ -813,7 +814,7 @@ const TreemapImpl = (props: TreemapProps & { id: string }): JSX.Element => {
|
|
|
813
814
|
</For>
|
|
814
815
|
</Layer>
|
|
815
816
|
<SetTooltipEntrySettings tooltipEntrySettings={tooltipConfig()} />
|
|
816
|
-
{
|
|
817
|
+
{resolvedChildren()}
|
|
817
818
|
</Surface>
|
|
818
819
|
{merged.type === "nest" ? (
|
|
819
820
|
<div
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// JSX is built in the parent's JSX scope via `renderActivePointsLayerFromState`.
|
|
4
4
|
// Mounting a child component that subscribes to tooltip selectors trips STRICT_READ.
|
|
5
5
|
// ZIndexLayer deferred.
|
|
6
|
-
import type { JSX } from "
|
|
6
|
+
import type { JSX } from "solid-js";
|
|
7
7
|
import { isNullish } from "../util/DataUtils";
|
|
8
8
|
import type { ActiveDotProps, ActiveDotType, DataKey } from "../util/types";
|
|
9
9
|
import { svgPropertiesNoEventsFromUnknownKeepCase } from "../util/svgPropertiesNoEvents";
|
|
@@ -77,9 +77,6 @@ function renderActiveDot(activeDot: ActiveDotType, dotProps: ActiveDotProps): JS
|
|
|
77
77
|
if (typeof activeDot === "function") {
|
|
78
78
|
return activeDot(dotProps);
|
|
79
79
|
}
|
|
80
|
-
if (typeof activeDot === "object" && activeDot != null && "type" in activeDot) {
|
|
81
|
-
return activeDot;
|
|
82
|
-
}
|
|
83
80
|
// Default <Dot> uses <Show> internally, which trips STRICT_READ when this
|
|
84
81
|
// layer mounts during tooltip effect-apply — render the circle directly instead.
|
|
85
82
|
// An object-form activeDot's `class`/`className` is dropped by the svg-prop
|
|
@@ -90,7 +87,7 @@ function renderActiveDot(activeDot: ActiveDotType, dotProps: ActiveDotProps): JS
|
|
|
90
87
|
: undefined;
|
|
91
88
|
return (
|
|
92
89
|
<circle
|
|
93
|
-
class={["recharts-dot", customClass]}
|
|
90
|
+
class={["recharts-dot", customClass].filter(Boolean).join(" ")}
|
|
94
91
|
cx={dotProps.cx}
|
|
95
92
|
cy={dotProps.cy}
|
|
96
93
|
r={dotProps.r}
|
|
@@ -120,7 +117,10 @@ export function renderActivePointsLayerFromState(
|
|
|
120
117
|
...svgPropertiesNoEventsFromUnknownKeepCase(args.activeDot),
|
|
121
118
|
};
|
|
122
119
|
return (
|
|
123
|
-
<g
|
|
120
|
+
<g
|
|
121
|
+
class={["recharts-layer", "recharts-active-dot"].filter(Boolean).join(" ")}
|
|
122
|
+
clip-path={args.clipPath}
|
|
123
|
+
>
|
|
124
124
|
{renderActiveDot(args.activeDot, dotProps)}
|
|
125
125
|
</g>
|
|
126
126
|
);
|
package/src/component/Cell.tsx
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Ported from recharts 3.8.1 src/component/Cell.tsx (commit 7a23854).
|
|
2
|
-
// Deviations: React's `SVGProps<SVGElement>` →
|
|
3
|
-
//
|
|
2
|
+
// Deviations: React's broad `SVGProps<SVGElement>` → the merged attribute surface
|
|
3
|
+
// of Solid's element-specific SVG intrinsic types (with SVGElement-typed events);
|
|
4
|
+
// React's `displayName` is dropped.
|
|
4
5
|
//
|
|
5
6
|
// The CellReader pattern: recharts extracts cells by walking the React element
|
|
6
7
|
// tree (`findAllByType(children, Cell)`). Solid has no element-descriptor tree —
|
|
@@ -10,9 +11,26 @@
|
|
|
10
11
|
// `collectCells`. Cells render no DOM (the standalone <Cell /> spec asserts this).
|
|
11
12
|
import { type CamelSvgProps } from "../util/svgPropertiesNoEvents";
|
|
12
13
|
import { createMemo, type Accessor } from "solid-js";
|
|
13
|
-
import type { JSX } from "
|
|
14
|
+
import type { JSX } from "solid-js";
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
type SVGIntrinsicTag = keyof SVGElementTagNameMap & keyof JSX.IntrinsicElements;
|
|
17
|
+
type SVGIntrinsicAttributes = JSX.IntrinsicElements[SVGIntrinsicTag];
|
|
18
|
+
type KeysOfUnion<T> = T extends T ? keyof T : never;
|
|
19
|
+
type ValueOfUnion<T, K extends PropertyKey> = T extends T
|
|
20
|
+
? K extends keyof T
|
|
21
|
+
? T[K]
|
|
22
|
+
: never
|
|
23
|
+
: never;
|
|
24
|
+
type MergedSVGIntrinsicAttributes = {
|
|
25
|
+
[K in KeysOfUnion<SVGIntrinsicAttributes>]?: ValueOfUnion<SVGIntrinsicAttributes, K>;
|
|
26
|
+
};
|
|
27
|
+
type GenericSVGAttributes = Omit<
|
|
28
|
+
MergedSVGIntrinsicAttributes,
|
|
29
|
+
keyof JSX.DOMAttributes<SVGElement>
|
|
30
|
+
> &
|
|
31
|
+
JSX.DOMAttributes<SVGElement>;
|
|
32
|
+
|
|
33
|
+
export type CellProps = CamelSvgProps<GenericSVGAttributes> & {
|
|
16
34
|
/**
|
|
17
35
|
* The fill color.
|
|
18
36
|
*/
|
|
@@ -21,7 +39,7 @@ export interface CellProps extends CamelSvgProps<JSX.SVGAttributes<SVGElement>>
|
|
|
21
39
|
* The stroke color.
|
|
22
40
|
*/
|
|
23
41
|
stroke?: string;
|
|
24
|
-
}
|
|
42
|
+
};
|
|
25
43
|
|
|
26
44
|
/**
|
|
27
45
|
* Set while a parent collects its <Cell> children (see {@link collectCells}).
|
package/src/component/Cursor.tsx
CHANGED
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
// optional SVG-props object (className/styling); a custom cursor ELEMENT
|
|
7
7
|
// (recharts' `ReactElement` + cloneElement) is PERMANENT-N/A — there is no Solid
|
|
8
8
|
// equivalent of React.isValidElement/cloneElement. Solid deviations: `clsx` →
|
|
9
|
-
// `class={[...]}`; the connected `Cursor` resolves context then delegates to
|
|
9
|
+
// `class={[...].filter(Boolean).join(" ")}`; the connected `Cursor` resolves context then delegates to
|
|
10
10
|
// `CursorInternal`, which (like recharts) takes fully-resolved props so it can be
|
|
11
11
|
// rendered standalone in tests; all reactive reads live in a tracking memo that
|
|
12
12
|
// returns plain shape DATA, so the <Show> children read only plain properties.
|
|
13
13
|
import { createMemo, Show } from "solid-js";
|
|
14
|
-
import type { JSX } from "
|
|
14
|
+
import type { JSX } from "solid-js";
|
|
15
15
|
import {
|
|
16
16
|
ChartOffsetInternal,
|
|
17
17
|
Coordinate,
|
|
@@ -77,7 +77,7 @@ type CursorShape =
|
|
|
77
77
|
/**
|
|
78
78
|
* The shared cursor class, with an optional extra className from an object-form
|
|
79
79
|
* `cursor` appended (the shape components type `class` as a plain string, so this
|
|
80
|
-
* is joined rather than passed as a `class={[...]}` array).
|
|
80
|
+
* is joined rather than passed as a `class={[...].filter(Boolean).join(" ")}` array).
|
|
81
81
|
*/
|
|
82
82
|
function cursorClass(cursor: CursorDefinition): string {
|
|
83
83
|
if (typeof cursor === "object" && cursor != null && typeof cursor.className === "string") {
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
// TYPES + component. The legend slice/selectors need these types; the component
|
|
4
4
|
// renders the legend item list. Deviations: `ReactElement`→`Element`/dropped,
|
|
5
5
|
// `DataKey<any>`→`DataKey<unknown>`, `ReactNode`→`Element`, `CSSProperties`→
|
|
6
|
-
// `JSX.CSSProperties`, `className`→`class`, clsx→`class={[...]}`; `LegendItemSorter`
|
|
6
|
+
// `JSX.CSSProperties`, `className`→`class`, clsx→`class={[...].filter(Boolean).join(" ")}`; `LegendItemSorter`
|
|
7
7
|
// is co-located here (reference keeps it in Legend.tsx) so the slice can import it
|
|
8
8
|
// without depending on the Legend component. `adaptEventsOfChild` events deferred.
|
|
9
|
-
import { For, Show,
|
|
10
|
-
|
|
11
|
-
import type { JSX } from "
|
|
9
|
+
import { For, Show, mergeProps } from "solid-js";
|
|
10
|
+
type Element = JSX.Element;
|
|
11
|
+
import type { JSX } from "solid-js";
|
|
12
12
|
import { DataKey, LegendType, MousePointer } from "../util/types";
|
|
13
13
|
import { Surface } from "../container/Surface";
|
|
14
14
|
import { Symbols } from "../shape/Symbols";
|
|
@@ -134,7 +134,7 @@ const LegendIcon = (props: {
|
|
|
134
134
|
* `content` prop to customize.
|
|
135
135
|
*/
|
|
136
136
|
export const DefaultLegendContent = (props: Props): JSX.Element => {
|
|
137
|
-
const merged =
|
|
137
|
+
const merged = mergeProps(defaultLegendContentDefaultProps, props);
|
|
138
138
|
|
|
139
139
|
const itemStyle = (): JSX.CSSProperties => ({
|
|
140
140
|
display: merged.layout === "horizontal" ? "inline-block" : "block",
|
|
@@ -173,7 +173,9 @@ export const DefaultLegendContent = (props: Props): JSX.Element => {
|
|
|
173
173
|
"recharts-legend-item",
|
|
174
174
|
`legend-item-${i()}`,
|
|
175
175
|
entry.inactive ? "inactive" : undefined,
|
|
176
|
-
]
|
|
176
|
+
]
|
|
177
|
+
.filter(Boolean)
|
|
178
|
+
.join(" ")}
|
|
177
179
|
style={itemStyle()}
|
|
178
180
|
onClick={(event) => merged.onClick?.(entry, i(), event)}
|
|
179
181
|
onMouseEnter={(event) => merged.onMouseEnter?.(entry, i(), event)}
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
// (the per-entry `formatter` is populated from the graphical items' `formatter`
|
|
6
6
|
// prop and wins over the prop-level one, per v3.9.1); `any` → `unknown`,
|
|
7
7
|
// `ReactNode` → `Element`, `CSSProperties` → `JSX.CSSProperties`; `className` →
|
|
8
|
-
// `class`, `clsx(...)` → `class={[...]}` array form (no clsx dep); `React.isValid-
|
|
8
|
+
// `class`, `clsx(...)` → `class={[...].filter(Boolean).join(" ")}` array form (no clsx dep); `React.isValid-
|
|
9
9
|
// Element` check dropped (Solid renders an Element or a string uniformly).
|
|
10
|
-
import { For, Show, createMemo,
|
|
11
|
-
|
|
12
|
-
import type { JSX } from "
|
|
10
|
+
import { For, Show, createMemo, mergeProps } from "solid-js";
|
|
11
|
+
type Element = JSX.Element;
|
|
12
|
+
import type { JSX } from "solid-js";
|
|
13
13
|
import { isNullish, isNumOrStr } from "../util/DataUtils";
|
|
14
14
|
import { DataKey, TooltipType } from "../util/types";
|
|
15
15
|
import type { TooltipPayload, TooltipPayloadEntry } from "../state/tooltipSlice";
|
|
@@ -18,9 +18,10 @@ export type ValueType = number | string | ReadonlyArray<number | string>;
|
|
|
18
18
|
export type NameType = number | string;
|
|
19
19
|
|
|
20
20
|
function defaultFormatter(value: ValueType | undefined): Element {
|
|
21
|
-
|
|
22
|
-
? value.join(" ~ ")
|
|
23
|
-
|
|
21
|
+
if (value !== undefined && typeof value !== "string" && typeof value !== "number") {
|
|
22
|
+
return isNumOrStr(value[0]) && isNumOrStr(value[1]) ? value.join(" ~ ") : [...value];
|
|
23
|
+
}
|
|
24
|
+
return value;
|
|
24
25
|
}
|
|
25
26
|
|
|
26
27
|
export type Formatter<TValue extends ValueType = ValueType, TName extends NameType = NameType> = (
|
|
@@ -151,7 +152,7 @@ function lodashLikeSortBy(
|
|
|
151
152
|
* `content` prop to customize.
|
|
152
153
|
*/
|
|
153
154
|
export const DefaultTooltipContent = (props: Props): JSX.Element => {
|
|
154
|
-
const merged =
|
|
155
|
+
const merged = mergeProps(defaultDefaultTooltipContentProps, props);
|
|
155
156
|
|
|
156
157
|
const sortedPayload = createMemo<TooltipPayload>(() => {
|
|
157
158
|
const payload = props.payload;
|
|
@@ -227,12 +228,15 @@ export const DefaultTooltipContent = (props: Props): JSX.Element => {
|
|
|
227
228
|
|
|
228
229
|
return (
|
|
229
230
|
<div
|
|
230
|
-
class={["recharts-default-tooltip", props.wrapperClass]}
|
|
231
|
+
class={["recharts-default-tooltip", props.wrapperClass].filter(Boolean).join(" ")}
|
|
231
232
|
style={finalStyle()}
|
|
232
233
|
role={merged.accessibilityLayer ? "status" : undefined}
|
|
233
234
|
aria-live={merged.accessibilityLayer ? "assertive" : undefined}
|
|
234
235
|
>
|
|
235
|
-
<p
|
|
236
|
+
<p
|
|
237
|
+
class={["recharts-tooltip-label", props.labelClass].filter(Boolean).join(" ")}
|
|
238
|
+
style={finalLabelStyle()}
|
|
239
|
+
>
|
|
236
240
|
{finalLabel()}
|
|
237
241
|
</p>
|
|
238
242
|
<Show when={sortedPayload().length > 0}>
|
package/src/component/Dots.tsx
CHANGED
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
// the default <Dot> (recharts does this via svgPropertiesAndEventsFromUnknown).
|
|
8
8
|
// - `ZIndexLayer` wrapper deferred (zIndex layering not ported) → plain <Layer>.
|
|
9
9
|
// - `clsx` → class string composed inline; `className` → `class`.
|
|
10
|
-
import { createMemo,
|
|
11
|
-
import type { JSX } from "
|
|
10
|
+
import { createMemo, Index, Show, splitProps } from "solid-js";
|
|
11
|
+
import type { JSX } from "solid-js";
|
|
12
12
|
import { Dot, type DotProps } from "../shape/Dot";
|
|
13
13
|
import { Layer } from "../container/Layer";
|
|
14
14
|
import { DataKey, DotItemDotProps, DotPoint, DotType } from "../util/types";
|
|
@@ -92,7 +92,7 @@ function DotRenderer(props: DotRendererProps): JSX.Element {
|
|
|
92
92
|
renderFn()?.(dotProps())
|
|
93
93
|
) : (
|
|
94
94
|
<Dot
|
|
95
|
-
{...
|
|
95
|
+
{...splitProps(dotProps(), ["index", "dataKey", "value", "payload", "points"])[1]}
|
|
96
96
|
class={props.dotClass}
|
|
97
97
|
/>
|
|
98
98
|
)}
|
|
@@ -113,7 +113,7 @@ export function Dots(props: DotsProps): JSX.Element {
|
|
|
113
113
|
array with fresh point objects every frame; reference-keyed <For>
|
|
114
114
|
would dispose+recreate every dot's DOM node per frame. Index-keying
|
|
115
115
|
reuses the rows and only updates cx/cy reactively. */}
|
|
116
|
-
<
|
|
116
|
+
<Index each={props.points}>
|
|
117
117
|
{(entry, i) => (
|
|
118
118
|
<DotRenderer
|
|
119
119
|
entry={entry()}
|
|
@@ -125,7 +125,7 @@ export function Dots(props: DotsProps): JSX.Element {
|
|
|
125
125
|
points={props.points}
|
|
126
126
|
/>
|
|
127
127
|
)}
|
|
128
|
-
</
|
|
128
|
+
</Index>
|
|
129
129
|
</Layer>
|
|
130
130
|
</Show>
|
|
131
131
|
);
|
package/src/component/Label.tsx
CHANGED
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
// - context value carries an `Accessor<TrapezoidViewBox>` (Solid context is fixed
|
|
17
17
|
// at provide-time; the accessor keeps the box reactive).
|
|
18
18
|
import { type CamelSvgProps } from "../util/svgPropertiesNoEvents";
|
|
19
|
-
import { createContext, createMemo,
|
|
19
|
+
import { createContext, createMemo, Show, useContext, mergeProps, splitProps } from "solid-js";
|
|
20
20
|
import type { Accessor } from "solid-js";
|
|
21
|
-
import type { JSX } from "
|
|
21
|
+
import type { JSX } from "solid-js";
|
|
22
22
|
import { type RenderableText, Text } from "./Text";
|
|
23
23
|
import { useUniqueId } from "../util/useUniqueId";
|
|
24
24
|
import { isNullish, isNumber, isNumOrStr } from "../util/DataUtils";
|
|
@@ -109,7 +109,11 @@ export function CartesianLabelContextProvider(
|
|
|
109
109
|
width: props.width,
|
|
110
110
|
height: props.height,
|
|
111
111
|
}));
|
|
112
|
-
return
|
|
112
|
+
return (
|
|
113
|
+
<CartesianLabelContext.Provider value={viewBox}>
|
|
114
|
+
{props.children}
|
|
115
|
+
</CartesianLabelContext.Provider>
|
|
116
|
+
);
|
|
113
117
|
}
|
|
114
118
|
|
|
115
119
|
export function useCartesianLabelContext(): Accessor<TrapezoidViewBox | undefined> {
|
|
@@ -141,7 +145,7 @@ export function PolarLabelContextProvider(
|
|
|
141
145
|
endAngle: props.endAngle,
|
|
142
146
|
clockWise: props.clockWise,
|
|
143
147
|
}));
|
|
144
|
-
return <PolarLabelContext value={viewBox}>{props.children}</PolarLabelContext>;
|
|
148
|
+
return <PolarLabelContext.Provider value={viewBox}>{props.children}</PolarLabelContext.Provider>;
|
|
145
149
|
}
|
|
146
150
|
|
|
147
151
|
export function usePolarLabelContext(): Accessor<PolarViewBoxRequired | undefined> {
|
|
@@ -223,7 +227,7 @@ const getDeltaAngle = (startAngle: number, endAngle: number): number => {
|
|
|
223
227
|
* @consumes CartesianLabelContext
|
|
224
228
|
*/
|
|
225
229
|
export function Label(outerProps: Props): JSX.Element {
|
|
226
|
-
const props =
|
|
230
|
+
const props = mergeProps(defaultLabelProps, outerProps);
|
|
227
231
|
const cartesianViewBox = useCartesianLabelContext();
|
|
228
232
|
const polarLabelContext = usePolarLabelContext();
|
|
229
233
|
const generatedRadialPathId = useUniqueId("recharts-radial-line");
|
|
@@ -252,8 +256,7 @@ export function Label(outerProps: Props): JSX.Element {
|
|
|
252
256
|
|
|
253
257
|
const textSvgProps = createMemo(() =>
|
|
254
258
|
svgPropertiesAndEvents(
|
|
255
|
-
|
|
256
|
-
props,
|
|
259
|
+
splitProps(props, [
|
|
257
260
|
"content",
|
|
258
261
|
"viewBox",
|
|
259
262
|
"parentViewBox",
|
|
@@ -267,7 +270,7 @@ export function Label(outerProps: Props): JSX.Element {
|
|
|
267
270
|
"index",
|
|
268
271
|
"id",
|
|
269
272
|
"class",
|
|
270
|
-
),
|
|
273
|
+
])[1],
|
|
271
274
|
),
|
|
272
275
|
);
|
|
273
276
|
|
|
@@ -389,7 +392,7 @@ export function Label(outerProps: Props): JSX.Element {
|
|
|
389
392
|
if (vb == null || typeof content !== "function") {
|
|
390
393
|
return undefined;
|
|
391
394
|
}
|
|
392
|
-
return { content, args:
|
|
395
|
+
return { content, args: splitProps({ ...props, viewBox: vb }, ["content"])[1] };
|
|
393
396
|
});
|
|
394
397
|
|
|
395
398
|
// Render the default/polar/radial text labels inline under <Show> (their render
|
|
@@ -441,7 +444,7 @@ export function Label(outerProps: Props): JSX.Element {
|
|
|
441
444
|
<text
|
|
442
445
|
{...textSvgProps()}
|
|
443
446
|
dominant-baseline="central"
|
|
444
|
-
class={["recharts-radial-bar-label", props.class]}
|
|
447
|
+
class={["recharts-radial-bar-label", props.class].filter(Boolean).join(" ")}
|
|
445
448
|
>
|
|
446
449
|
<defs>
|
|
447
450
|
<path id={radialPathId()} d={d().path} />
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
// - element `content` (React.cloneElement) DROPPED; function `content` kept.
|
|
15
15
|
// - ZIndexLayer / `fill`-passthrough deferred (Label forwards no per-label fill).
|
|
16
16
|
import { type CamelSvgProps } from "../util/svgPropertiesNoEvents";
|
|
17
|
-
import { createContext, createMemo, For,
|
|
17
|
+
import { createContext, createMemo, For, Show, useContext, splitProps } from "solid-js";
|
|
18
18
|
import type { Accessor } from "solid-js";
|
|
19
|
-
import type { JSX } from "
|
|
19
|
+
import type { JSX } from "solid-js";
|
|
20
20
|
import {
|
|
21
21
|
type LabelContentType,
|
|
22
22
|
type LabelFormatter,
|
|
@@ -135,7 +135,9 @@ export function CartesianLabelListContextProvider(props: {
|
|
|
135
135
|
children: JSX.Element;
|
|
136
136
|
}): JSX.Element {
|
|
137
137
|
return (
|
|
138
|
-
<CartesianLabelListContext value={props.value}>
|
|
138
|
+
<CartesianLabelListContext.Provider value={props.value}>
|
|
139
|
+
{props.children}
|
|
140
|
+
</CartesianLabelListContext.Provider>
|
|
139
141
|
);
|
|
140
142
|
}
|
|
141
143
|
|
|
@@ -147,7 +149,11 @@ export function PolarLabelListContextProvider(props: {
|
|
|
147
149
|
value: Accessor<ReadonlyArray<PolarLabelListEntry> | undefined>;
|
|
148
150
|
children: JSX.Element;
|
|
149
151
|
}): JSX.Element {
|
|
150
|
-
return
|
|
152
|
+
return (
|
|
153
|
+
<PolarLabelListContext.Provider value={props.value}>
|
|
154
|
+
{props.children}
|
|
155
|
+
</PolarLabelListContext.Provider>
|
|
156
|
+
);
|
|
151
157
|
}
|
|
152
158
|
|
|
153
159
|
/**
|
|
@@ -165,8 +171,7 @@ export function LabelList(props: Props): JSX.Element {
|
|
|
165
171
|
const list = cartesianData?.() ?? polarData?.();
|
|
166
172
|
return list != null && list.length > 0 ? list : undefined;
|
|
167
173
|
});
|
|
168
|
-
const others =
|
|
169
|
-
props,
|
|
174
|
+
const others = splitProps(props, [
|
|
170
175
|
"valueAccessor",
|
|
171
176
|
"clockWise",
|
|
172
177
|
"dataKey",
|
|
@@ -177,7 +182,7 @@ export function LabelList(props: Props): JSX.Element {
|
|
|
177
182
|
"offset",
|
|
178
183
|
"angle",
|
|
179
184
|
"formatter",
|
|
180
|
-
);
|
|
185
|
+
])[1];
|
|
181
186
|
|
|
182
187
|
const valueOf = (
|
|
183
188
|
entry: CartesianLabelListEntry | PolarLabelListEntry,
|