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
package/src/chart/LineChart.tsx
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Ported from recharts 3.8.1 src/chart/LineChart.tsx (commit 7a23854).
|
|
2
2
|
// `forwardRef` → `ref` prop; the user-facing convenience 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";
|
package/src/chart/PieChart.tsx
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { mergeProps, splitProps } from "solid-js";
|
|
1
2
|
// Ported from recharts 3.8.1 src/chart/PieChart.tsx (commit 7a23854).
|
|
2
3
|
// `forwardRef` → `ref` prop; the user-facing convenience wrapper over PolarChart.
|
|
3
4
|
// `resolveDefaultProps` → Solid `merge` (lazy proxy — does NOT eagerly evaluate
|
|
@@ -5,8 +6,8 @@
|
|
|
5
6
|
// (layout "centric", startAngle 0, endAngle 360) win over PolarChart's polar
|
|
6
7
|
// defaults. `ref` is omitted from categoricalChartProps and passed separately,
|
|
7
8
|
// mirroring the reference's forwardRef split.
|
|
8
|
-
|
|
9
|
-
import type { JSX } from "
|
|
9
|
+
|
|
10
|
+
import type { JSX } from "solid-js";
|
|
10
11
|
import { arrayTooltipSearcher } from "../state/optionsSlice";
|
|
11
12
|
import { PolarChart } from "./PolarChart";
|
|
12
13
|
import { PolarChartProps, TooltipEventType } from "../util/types";
|
|
@@ -26,7 +27,7 @@ export interface PieChartProps<DataPointType = unknown> extends PolarChartProps<
|
|
|
26
27
|
export function PieChart<DataPointType = unknown>(
|
|
27
28
|
props: PieChartProps<DataPointType>,
|
|
28
29
|
): JSX.Element {
|
|
29
|
-
const categoricalChartProps =
|
|
30
|
+
const categoricalChartProps = mergeProps(defaultPieChartProps, splitProps(props, ["ref"])[1]);
|
|
30
31
|
|
|
31
32
|
return (
|
|
32
33
|
<PolarChart
|
package/src/chart/PolarChart.tsx
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { splitProps } from "solid-js";
|
|
1
2
|
// Ported from recharts 3.8.1 src/chart/PolarChart.tsx (commit 7a23854).
|
|
2
3
|
//
|
|
3
4
|
// Solid deviations: `forwardRef` → `ref` prop; `resolveDefaultProps` → per-field
|
|
@@ -7,8 +8,8 @@
|
|
|
7
8
|
// The polar geometry props (cx/cy/innerRadius/outerRadius/startAngle/endAngle)
|
|
8
9
|
// pass through to CategoricalChart exactly as in the reference — svgPropertiesNoEvents
|
|
9
10
|
// forwards cx/cy onto the root <svg> (faithful) and drops the rest.
|
|
10
|
-
|
|
11
|
-
import type { JSX } from "
|
|
11
|
+
|
|
12
|
+
import type { JSX } from "solid-js";
|
|
12
13
|
import { ChartOptions } from "../state/optionsSlice";
|
|
13
14
|
import { RechartsStoreProvider } from "../state/RechartsStoreProvider";
|
|
14
15
|
import { ChartDataContextProvider } from "../context/chartDataContext";
|
|
@@ -89,7 +90,7 @@ export const PolarChart = (props: PolarChartOptions): JSX.Element => {
|
|
|
89
90
|
{/* Spread WITHOUT children (a `{...cp()}` spread eagerly evaluates the
|
|
90
91
|
children getter here, before the provider sets context — running them
|
|
91
92
|
outside the store); pass children as a lazy JSX child instead. */}
|
|
92
|
-
<CategoricalChart {...
|
|
93
|
+
<CategoricalChart {...splitProps(cp(), ["children"])[1]} ref={props.ref}>
|
|
93
94
|
{cp().children}
|
|
94
95
|
</CategoricalChart>
|
|
95
96
|
</RechartsStoreProvider>
|
package/src/chart/RadarChart.tsx
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { mergeProps, splitProps } from "solid-js";
|
|
1
2
|
// Ported from recharts 3.8.1 src/chart/RadarChart.tsx (commit 7a23854).
|
|
2
3
|
// `forwardRef`→`ref` prop; `resolveDefaultProps`→`merge` (lazy proxy, see PieChart).
|
|
3
4
|
// RadarChart-specific defaults: layout "centric", startAngle 90, endAngle -270.
|
|
4
|
-
|
|
5
|
-
import type { JSX } from "
|
|
5
|
+
|
|
6
|
+
import type { JSX } from "solid-js";
|
|
6
7
|
import { arrayTooltipSearcher } from "../state/optionsSlice";
|
|
7
8
|
import { PolarChart } from "./PolarChart";
|
|
8
9
|
import { PolarChartProps, TooltipEventType } from "../util/types";
|
|
@@ -22,7 +23,7 @@ export interface RadarChartProps<DataPointType = unknown> extends PolarChartProp
|
|
|
22
23
|
export function RadarChart<DataPointType = unknown>(
|
|
23
24
|
props: RadarChartProps<DataPointType>,
|
|
24
25
|
): JSX.Element {
|
|
25
|
-
const categoricalChartProps =
|
|
26
|
+
const categoricalChartProps = mergeProps(defaultRadarChartProps, splitProps(props, ["ref"])[1]);
|
|
26
27
|
|
|
27
28
|
return (
|
|
28
29
|
<PolarChart
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { mergeProps, splitProps } from "solid-js";
|
|
1
2
|
// Ported from recharts 3.8.1 src/chart/RadialBarChart.tsx (commit 7a23854).
|
|
2
3
|
// `forwardRef`→`ref` prop; `resolveDefaultProps`→`merge`. RadialBarChart defaults:
|
|
3
4
|
// layout "radial", startAngle 0, endAngle 360 (PolarChart fills cx/cy/radii).
|
|
4
|
-
|
|
5
|
-
import type { JSX } from "
|
|
5
|
+
|
|
6
|
+
import type { JSX } from "solid-js";
|
|
6
7
|
import { arrayTooltipSearcher } from "../state/optionsSlice";
|
|
7
8
|
import { PolarChart } from "./PolarChart";
|
|
8
9
|
import { PolarChartProps, TooltipEventType } from "../util/types";
|
|
@@ -24,7 +25,10 @@ export interface RadialBarChartProps<
|
|
|
24
25
|
export function RadialBarChart<DataPointType = unknown>(
|
|
25
26
|
props: RadialBarChartProps<DataPointType>,
|
|
26
27
|
): JSX.Element {
|
|
27
|
-
const categoricalChartProps =
|
|
28
|
+
const categoricalChartProps = mergeProps(
|
|
29
|
+
defaultRadialBarChartProps,
|
|
30
|
+
splitProps(props, ["ref"])[1],
|
|
31
|
+
);
|
|
28
32
|
|
|
29
33
|
return (
|
|
30
34
|
<PolarChart
|
|
@@ -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,9 +12,9 @@
|
|
|
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 "
|
|
17
|
-
import { scaleLinear } from "
|
|
15
|
+
import { children, createMemo, For, Show, mergeProps } from "solid-js";
|
|
16
|
+
import type { JSX } from "solid-js";
|
|
17
|
+
import { scaleLinear } from "d3-scale";
|
|
18
18
|
import { Surface } from "../container/Surface";
|
|
19
19
|
import { Layer } from "../container/Layer";
|
|
20
20
|
import { Sector } from "../shape/Sector";
|
|
@@ -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,17 +117,11 @@ 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
|
);
|
|
127
127
|
}
|
|
128
|
-
|
|
129
|
-
/** @deprecated Use computeActivePointState + renderActivePointsLayerFromState */
|
|
130
|
-
export function renderActivePointsLayer(args: ActivePointsLayerArgs): JSX.Element | null {
|
|
131
|
-
const state = computeActivePointState(args);
|
|
132
|
-
if (state == null) {
|
|
133
|
-
return null;
|
|
134
|
-
}
|
|
135
|
-
return renderActivePointsLayerFromState(state, args);
|
|
136
|
-
}
|
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
|
)}
|
|
@@ -109,11 +109,15 @@ export function Dots(props: DotsProps): JSX.Element {
|
|
|
109
109
|
return (
|
|
110
110
|
<Show when={shouldRenderDots(props.points, props.dot)}>
|
|
111
111
|
<Layer class={props.class} clipPath={layerClip()}>
|
|
112
|
-
|
|
112
|
+
{/* keyed={false} (index-keyed): during animation `points` is a fresh
|
|
113
|
+
array with fresh point objects every frame; reference-keyed <For>
|
|
114
|
+
would dispose+recreate every dot's DOM node per frame. Index-keying
|
|
115
|
+
reuses the rows and only updates cx/cy reactively. */}
|
|
116
|
+
<Index each={props.points}>
|
|
113
117
|
{(entry, i) => (
|
|
114
118
|
<DotRenderer
|
|
115
|
-
entry={entry}
|
|
116
|
-
index={i
|
|
119
|
+
entry={entry()}
|
|
120
|
+
index={i}
|
|
117
121
|
dot={props.dot}
|
|
118
122
|
baseProps={props.baseProps}
|
|
119
123
|
dataKey={props.dataKey}
|
|
@@ -121,7 +125,7 @@ export function Dots(props: DotsProps): JSX.Element {
|
|
|
121
125
|
points={props.points}
|
|
122
126
|
/>
|
|
123
127
|
)}
|
|
124
|
-
</
|
|
128
|
+
</Index>
|
|
125
129
|
</Layer>
|
|
126
130
|
</Show>
|
|
127
131
|
);
|