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/cartesian/Line.tsx
CHANGED
|
@@ -20,12 +20,16 @@
|
|
|
20
20
|
// `any`); the value comes from `getValueByDataKey`, which is genuinely
|
|
21
21
|
// untyped, and only x/y are needed to draw. It flows through `scale.map`
|
|
22
22
|
// (which accepts `unknown`) unchanged.
|
|
23
|
-
import {
|
|
23
|
+
import { createMemo, createSignal, Show, untrack, mergeProps, createEffect, on } from "solid-js";
|
|
24
24
|
import { useActiveTooltipDataPoints } from "../hooks";
|
|
25
25
|
import { selectActiveTooltipIndex } from "../state/selectors/tooltipSelectors";
|
|
26
|
-
import type { JSX } from "
|
|
26
|
+
import type { JSX } from "solid-js";
|
|
27
27
|
import { useAppSelector, useAppStore } from "../state/hooks";
|
|
28
|
-
import {
|
|
28
|
+
import {
|
|
29
|
+
AnimatedItems,
|
|
30
|
+
useAnimationCallbacks,
|
|
31
|
+
type AnimationInterpolateFn,
|
|
32
|
+
} from "../animation/AnimatedItems";
|
|
29
33
|
import { matchByIndex, type AnimationItem, type AnimationMatchByProp } from "../animation/matchBy";
|
|
30
34
|
import type { MutableRef } from "../animation/useAnimationStartSnapshot";
|
|
31
35
|
import { LineDrawShape, type LineDrawShapeProps } from "./LineDrawShape";
|
|
@@ -80,7 +84,7 @@ import { BaseAxisWithScale } from "../state/selectors/axisSelectors";
|
|
|
80
84
|
import { GraphicalItemClipPath, useNeedsClip } from "./GraphicalItemClipPath";
|
|
81
85
|
import { DefaultZIndexes } from "../zIndex/DefaultZIndexes";
|
|
82
86
|
import { ZIndexLayer } from "../zIndex/ZIndexLayer";
|
|
83
|
-
import {
|
|
87
|
+
import { registerInStore } from "../state/registerInStore";
|
|
84
88
|
|
|
85
89
|
export interface LinePointItem {
|
|
86
90
|
readonly value: unknown;
|
|
@@ -337,44 +341,32 @@ export const lineDefaultProps = {
|
|
|
337
341
|
|
|
338
342
|
export const Line = (props: LineProps): JSX.Element => {
|
|
339
343
|
const store = useAppStore();
|
|
340
|
-
const merged =
|
|
344
|
+
const merged = mergeProps(lineDefaultProps, props);
|
|
341
345
|
const isPanorama = useIsPanorama();
|
|
342
346
|
const layout = useCartesianChartLayout();
|
|
343
347
|
const id = useUniqueId("recharts-line", props.id);
|
|
344
348
|
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
store.actions.graphicalItems.replaceCartesianGraphicalItem({ prev, next: settings });
|
|
367
|
-
}
|
|
368
|
-
prev = settings;
|
|
369
|
-
},
|
|
370
|
-
);
|
|
371
|
-
|
|
372
|
-
unregisterOnCleanup(() => {
|
|
373
|
-
if (prev && store != null) {
|
|
374
|
-
store.actions.graphicalItems.removeCartesianGraphicalItem(prev);
|
|
375
|
-
prev = null;
|
|
376
|
-
}
|
|
377
|
-
});
|
|
349
|
+
if (store != null) {
|
|
350
|
+
registerInStore<LineSettings>(
|
|
351
|
+
() => ({
|
|
352
|
+
id,
|
|
353
|
+
type: "line",
|
|
354
|
+
isPanorama,
|
|
355
|
+
data: merged.data,
|
|
356
|
+
dataKey: merged.dataKey,
|
|
357
|
+
xAxisId: merged.xAxisId,
|
|
358
|
+
yAxisId: merged.yAxisId,
|
|
359
|
+
zAxisId: 0,
|
|
360
|
+
hide: merged.hide,
|
|
361
|
+
}),
|
|
362
|
+
{
|
|
363
|
+
add: (next) => store.actions.graphicalItems.addCartesianGraphicalItem(next),
|
|
364
|
+
replace: (prev, next) =>
|
|
365
|
+
store.actions.graphicalItems.replaceCartesianGraphicalItem({ prev, next }),
|
|
366
|
+
remove: (prev) => store.actions.graphicalItems.removeCartesianGraphicalItem(prev),
|
|
367
|
+
},
|
|
368
|
+
);
|
|
369
|
+
}
|
|
378
370
|
|
|
379
371
|
const points = useAppSelector((state) =>
|
|
380
372
|
selectLinePoints(state, merged.xAxisId, merged.yAxisId, isPanorama, id),
|
|
@@ -494,19 +486,11 @@ export const Line = (props: LineProps): JSX.Element => {
|
|
|
494
486
|
});
|
|
495
487
|
// Labels are hidden while the entrance animation runs and shown once it ends
|
|
496
488
|
// (matching recharts: showLabels = !isAnimating).
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
const labelContextEntries = createMemo(() => (
|
|
502
|
-
const handleAnimationStart = (): void => {
|
|
503
|
-
props.onAnimationStart?.();
|
|
504
|
-
setShowLabels(false);
|
|
505
|
-
};
|
|
506
|
-
const handleAnimationEnd = (): void => {
|
|
507
|
-
props.onAnimationEnd?.();
|
|
508
|
-
setShowLabels(true);
|
|
509
|
-
};
|
|
489
|
+
const { isAnimating, handleAnimationStart, handleAnimationEnd } = useAnimationCallbacks(
|
|
490
|
+
() => props.onAnimationStart?.(),
|
|
491
|
+
() => props.onAnimationEnd?.(),
|
|
492
|
+
);
|
|
493
|
+
const labelContextEntries = createMemo(() => (isAnimating() ? undefined : labelListEntries()));
|
|
510
494
|
|
|
511
495
|
// Measure on data change AND on animation start/end (showLabels flips): a
|
|
512
496
|
// data-change morph alters the path geometry per frame, so the length taken
|
|
@@ -515,19 +499,21 @@ export const Line = (props: LineProps): JSX.Element => {
|
|
|
515
499
|
// settled dasharray the new curve's true length — mirroring recharts, which
|
|
516
500
|
// recomputes totalLength on the post-animation re-render.
|
|
517
501
|
createEffect(
|
|
518
|
-
(
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
502
|
+
on(
|
|
503
|
+
() => ({ points: points(), showLabels: !isAnimating() }),
|
|
504
|
+
() => {
|
|
505
|
+
if (curveEl?.getTotalLength == null) {
|
|
506
|
+
return;
|
|
507
|
+
}
|
|
508
|
+
let length = 0;
|
|
509
|
+
try {
|
|
510
|
+
length = curveEl.getTotalLength() || 0;
|
|
511
|
+
} catch {
|
|
512
|
+
return; // getTotalLength can throw on detached/empty paths — keep the last value.
|
|
513
|
+
}
|
|
514
|
+
setTotalLength(length);
|
|
515
|
+
},
|
|
516
|
+
),
|
|
531
517
|
);
|
|
532
518
|
|
|
533
519
|
// Raw user event handlers forwarded to the curve. recharts' StaticCurve spreads
|
|
@@ -627,8 +613,7 @@ export const Line = (props: LineProps): JSX.Element => {
|
|
|
627
613
|
// recharts: visibleLength is computed only while the animation is
|
|
628
614
|
// active; once settled it is null so no entrance dasharray remains.
|
|
629
615
|
const len = untrack(totalLength);
|
|
630
|
-
const animationActive =
|
|
631
|
-
untrack(showLabels) === false || animationElapsedTime < 1;
|
|
616
|
+
const animationActive = untrack(isAnimating) || animationElapsedTime < 1;
|
|
632
617
|
const visibleLength = animationActive
|
|
633
618
|
? animatedLineLength.getVisibleLength(animationElapsedTime, len)
|
|
634
619
|
: null;
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
// forwards the element to the parent-supplied `forwardPathRef` so the parent
|
|
17
17
|
// (<Line>) can drive `shouldUpdatePreviousRef`/`getVisibleLength` off the same
|
|
18
18
|
// measured length.
|
|
19
|
-
import {
|
|
20
|
-
import type { JSX } from "
|
|
19
|
+
import { createSignal, splitProps, createEffect, on } from "solid-js";
|
|
20
|
+
import type { JSX } from "solid-js";
|
|
21
21
|
import { Curve, type CurveProps } from "../shape/Curve";
|
|
22
22
|
import type { ShapeAnimationProps } from "../util/types";
|
|
23
23
|
|
|
@@ -138,19 +138,23 @@ export function LineDrawShape(props: LineDrawShapeProps): JSX.Element {
|
|
|
138
138
|
props.forwardPathRef?.(el);
|
|
139
139
|
};
|
|
140
140
|
|
|
141
|
-
// Re-measure
|
|
142
|
-
//
|
|
143
|
-
//
|
|
144
|
-
//
|
|
141
|
+
// Re-measure the path length only while the entrance dash is actually being
|
|
142
|
+
// drawn (`visibleLength != null`). `totalLength` feeds `strokeDasharray` ONLY on
|
|
143
|
+
// that branch (see below), so once the reveal is done — including every
|
|
144
|
+
// subsequent data-change morph, where `frame` changes per frame — measuring
|
|
145
|
+
// would force a synchronous SVG layout (reflow) each frame for a value nothing
|
|
146
|
+
// reads. Guarding on visibleLength drops those per-frame reflows.
|
|
145
147
|
createEffect(
|
|
146
|
-
(
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
148
|
+
on(
|
|
149
|
+
() => ({ points: props.points, visibleLength: props.visibleLength }),
|
|
150
|
+
(deps) => {
|
|
151
|
+
if (deps.visibleLength == null || pathEl?.getTotalLength == null) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
const length = getTotalLength(pathEl);
|
|
155
|
+
setTotalLength(length);
|
|
156
|
+
},
|
|
157
|
+
),
|
|
154
158
|
);
|
|
155
159
|
|
|
156
160
|
const strokeDasharray = (): string | undefined => {
|
|
@@ -168,8 +172,7 @@ export function LineDrawShape(props: LineDrawShapeProps): JSX.Element {
|
|
|
168
172
|
// Strip the animation-only props before forwarding to <Curve>; we set
|
|
169
173
|
// connectNulls/strokeDasharray/pathRef explicitly below. `omit` keeps the
|
|
170
174
|
// remaining props reactive (no destructuring of `props`).
|
|
171
|
-
const curveProps =
|
|
172
|
-
props,
|
|
175
|
+
const curveProps = splitProps(props, [
|
|
173
176
|
"animationElapsedTime",
|
|
174
177
|
"isAnimating",
|
|
175
178
|
"isEntrance",
|
|
@@ -177,7 +180,7 @@ export function LineDrawShape(props: LineDrawShapeProps): JSX.Element {
|
|
|
177
180
|
"forwardPathRef",
|
|
178
181
|
"strokeDasharray",
|
|
179
182
|
"connectNulls",
|
|
180
|
-
);
|
|
183
|
+
])[1];
|
|
181
184
|
|
|
182
185
|
return (
|
|
183
186
|
<Curve
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
// - PERMANENT-N/A (by design, NOT deferred): the custom-element `shape` branch
|
|
17
17
|
// (React.cloneElement — use the render-function form). <Label>
|
|
18
18
|
// CHILDREN are not rendered (the `label` prop is).
|
|
19
|
-
import {
|
|
20
|
-
import type { JSX } from "
|
|
19
|
+
import { createMemo, Show, mergeProps } from "solid-js";
|
|
20
|
+
import type { JSX } from "solid-js";
|
|
21
21
|
import { Layer } from "../container/Layer";
|
|
22
22
|
import {
|
|
23
23
|
CartesianLabelContextProvider,
|
|
@@ -41,7 +41,7 @@ import { CartesianScaleHelperImpl } from "../util/scale/CartesianScaleHelper";
|
|
|
41
41
|
import type { AxisId } from "../state/cartesianAxisSlice";
|
|
42
42
|
import { DefaultZIndexes } from "../zIndex/DefaultZIndexes";
|
|
43
43
|
import { ZIndexLayer } from "../zIndex/ZIndexLayer";
|
|
44
|
-
import {
|
|
44
|
+
import { registerInStore } from "../state/registerInStore";
|
|
45
45
|
|
|
46
46
|
type ReferenceCoordinateValue = number | string;
|
|
47
47
|
|
|
@@ -124,39 +124,29 @@ const renderRect = (option: ReferenceAreaProps["shape"], props: RectangleProps):
|
|
|
124
124
|
|
|
125
125
|
function ReportReferenceArea(props: ReferenceAreaSettings): JSX.Element {
|
|
126
126
|
const store = useAppStore();
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
prev = settings;
|
|
151
|
-
},
|
|
152
|
-
);
|
|
153
|
-
|
|
154
|
-
unregisterOnCleanup(() => {
|
|
155
|
-
if (prev && store != null) {
|
|
156
|
-
store.actions.referenceElements.removeArea(prev);
|
|
157
|
-
prev = null;
|
|
158
|
-
}
|
|
159
|
-
});
|
|
127
|
+
if (store != null) {
|
|
128
|
+
registerInStore<ReferenceAreaSettings>(
|
|
129
|
+
() => ({
|
|
130
|
+
id: props.id,
|
|
131
|
+
xAxisId: props.xAxisId,
|
|
132
|
+
yAxisId: props.yAxisId,
|
|
133
|
+
ifOverflow: props.ifOverflow,
|
|
134
|
+
x1: props.x1,
|
|
135
|
+
x2: props.x2,
|
|
136
|
+
y1: props.y1,
|
|
137
|
+
y2: props.y2,
|
|
138
|
+
}),
|
|
139
|
+
{
|
|
140
|
+
add: (next) => store.actions.referenceElements.addArea(next),
|
|
141
|
+
// No replace action on the slice; a change is remove-then-add (recharts idiom).
|
|
142
|
+
replace: (prev, next) => {
|
|
143
|
+
store.actions.referenceElements.removeArea(prev);
|
|
144
|
+
store.actions.referenceElements.addArea(next);
|
|
145
|
+
},
|
|
146
|
+
remove: (prev) => store.actions.referenceElements.removeArea(prev),
|
|
147
|
+
},
|
|
148
|
+
);
|
|
149
|
+
}
|
|
160
150
|
|
|
161
151
|
return null;
|
|
162
152
|
}
|
|
@@ -174,7 +164,7 @@ const referenceAreaDefaultProps = {
|
|
|
174
164
|
} as const satisfies Partial<Props>;
|
|
175
165
|
|
|
176
166
|
function ReferenceAreaImpl(props: Props): JSX.Element {
|
|
177
|
-
const merged =
|
|
167
|
+
const merged = mergeProps(referenceAreaDefaultProps, props);
|
|
178
168
|
const clipPathId = useClipPathId();
|
|
179
169
|
const isPanorama = useIsPanorama();
|
|
180
170
|
const xAxisScale = useAppSelector((s) => selectAxisScale(s, "xAxis", merged.xAxisId, isPanorama));
|
|
@@ -253,7 +243,7 @@ export function ReferenceArea<
|
|
|
253
243
|
XValueType extends ReferenceCoordinateValue = ReferenceCoordinateValue,
|
|
254
244
|
YValueType extends ReferenceCoordinateValue = ReferenceCoordinateValue,
|
|
255
245
|
>(props: Props<XValueType, YValueType>): JSX.Element {
|
|
256
|
-
const merged =
|
|
246
|
+
const merged = mergeProps(referenceAreaDefaultProps, props);
|
|
257
247
|
const id = useUniqueId("recharts-reference-area");
|
|
258
248
|
return (
|
|
259
249
|
<>
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
// - PERMANENT-N/A (by design, NOT deferred): the custom-element `shape` branch
|
|
13
13
|
// (React.cloneElement — use the render-function form);
|
|
14
14
|
// `children` is not rendered (CartesianLabelContext).
|
|
15
|
-
import {
|
|
16
|
-
import type { JSX } from "
|
|
15
|
+
import { createMemo, Show, mergeProps } from "solid-js";
|
|
16
|
+
import type { JSX } from "solid-js";
|
|
17
17
|
import { Layer } from "../container/Layer";
|
|
18
18
|
import { Dot, type DotProps } from "../shape/Dot";
|
|
19
19
|
import {
|
|
@@ -36,7 +36,7 @@ import { DefaultZIndexes } from "../zIndex/DefaultZIndexes";
|
|
|
36
36
|
import { ZIndexLayer } from "../zIndex/ZIndexLayer";
|
|
37
37
|
import { Coordinate } from "../util/types";
|
|
38
38
|
import { CartesianScaleHelperImpl } from "../util/scale/CartesianScaleHelper";
|
|
39
|
-
import {
|
|
39
|
+
import { registerInStore } from "../state/registerInStore";
|
|
40
40
|
|
|
41
41
|
type ReferenceCoordinateValue = number | string;
|
|
42
42
|
|
|
@@ -130,38 +130,28 @@ export type Props<
|
|
|
130
130
|
|
|
131
131
|
function ReportReferenceDot(props: ReferenceDotSettings): JSX.Element {
|
|
132
132
|
const store = useAppStore();
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
prev = settings;
|
|
156
|
-
},
|
|
157
|
-
);
|
|
158
|
-
|
|
159
|
-
unregisterOnCleanup(() => {
|
|
160
|
-
if (prev && store != null) {
|
|
161
|
-
store.actions.referenceElements.removeDot(prev);
|
|
162
|
-
prev = null;
|
|
163
|
-
}
|
|
164
|
-
});
|
|
133
|
+
if (store != null) {
|
|
134
|
+
registerInStore<ReferenceDotSettings>(
|
|
135
|
+
() => ({
|
|
136
|
+
id: props.id,
|
|
137
|
+
xAxisId: props.xAxisId,
|
|
138
|
+
yAxisId: props.yAxisId,
|
|
139
|
+
ifOverflow: props.ifOverflow,
|
|
140
|
+
x: props.x,
|
|
141
|
+
y: props.y,
|
|
142
|
+
r: props.r,
|
|
143
|
+
}),
|
|
144
|
+
{
|
|
145
|
+
add: (next) => store.actions.referenceElements.addDot(next),
|
|
146
|
+
// No replace action on the slice; a change is remove-then-add (recharts idiom).
|
|
147
|
+
replace: (prev, next) => {
|
|
148
|
+
store.actions.referenceElements.removeDot(prev);
|
|
149
|
+
store.actions.referenceElements.addDot(next);
|
|
150
|
+
},
|
|
151
|
+
remove: (prev) => store.actions.referenceElements.removeDot(prev),
|
|
152
|
+
},
|
|
153
|
+
);
|
|
154
|
+
}
|
|
165
155
|
|
|
166
156
|
return null;
|
|
167
157
|
}
|
|
@@ -193,7 +183,7 @@ const referenceDotDefaultProps = {
|
|
|
193
183
|
} as const satisfies Partial<Props>;
|
|
194
184
|
|
|
195
185
|
function ReferenceDotImpl(props: Props): JSX.Element {
|
|
196
|
-
const merged =
|
|
186
|
+
const merged = mergeProps(referenceDotDefaultProps, props);
|
|
197
187
|
const clipPathId = useClipPathId();
|
|
198
188
|
const isPanorama = useIsPanorama();
|
|
199
189
|
const xAxisScale = useAppSelector((s) => selectAxisScale(s, "xAxis", merged.xAxisId, isPanorama));
|
|
@@ -265,7 +255,7 @@ export function ReferenceDot<
|
|
|
265
255
|
XValueType extends ReferenceCoordinateValue = ReferenceCoordinateValue,
|
|
266
256
|
YValueType extends ReferenceCoordinateValue = ReferenceCoordinateValue,
|
|
267
257
|
>(props: Props<XValueType, YValueType>): JSX.Element {
|
|
268
|
-
const merged =
|
|
258
|
+
const merged = mergeProps(referenceDotDefaultProps, props);
|
|
269
259
|
const id = useUniqueId("recharts-reference-dot");
|
|
270
260
|
return (
|
|
271
261
|
<>
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
// render-function form; the default-`<line>` branch is kept). <Label> CHILDREN
|
|
17
17
|
// are not rendered (the `label` prop is).
|
|
18
18
|
import { type CamelSvgProps } from "../util/svgPropertiesNoEvents";
|
|
19
|
-
import {
|
|
20
|
-
import type { JSX } from "
|
|
19
|
+
import { createMemo, Show, mergeProps } from "solid-js";
|
|
20
|
+
import type { JSX } from "solid-js";
|
|
21
21
|
import { Layer } from "../container/Layer";
|
|
22
22
|
import {
|
|
23
23
|
CartesianLabelContextProvider,
|
|
@@ -46,7 +46,7 @@ import { CartesianScaleHelper, CartesianScaleHelperImpl } from "../util/scale/Ca
|
|
|
46
46
|
import type { AxisId } from "../state/cartesianAxisSlice";
|
|
47
47
|
import { DefaultZIndexes } from "../zIndex/DefaultZIndexes";
|
|
48
48
|
import { ZIndexLayer } from "../zIndex/ZIndexLayer";
|
|
49
|
-
import {
|
|
49
|
+
import { registerInStore } from "../state/registerInStore";
|
|
50
50
|
|
|
51
51
|
/**
|
|
52
52
|
* Single point that defines one end of a segment, in data space.
|
|
@@ -242,38 +242,29 @@ const renderLine = (
|
|
|
242
242
|
|
|
243
243
|
function ReportReferenceLine(props: ReferenceLineSettings): JSX.Element {
|
|
244
244
|
const store = useAppStore();
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
store.actions.referenceElements.removeLine(prev)
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
},
|
|
269
|
-
);
|
|
270
|
-
|
|
271
|
-
unregisterOnCleanup(() => {
|
|
272
|
-
if (prev && store != null) {
|
|
273
|
-
store.actions.referenceElements.removeLine(prev);
|
|
274
|
-
prev = null;
|
|
275
|
-
}
|
|
276
|
-
});
|
|
245
|
+
if (store != null) {
|
|
246
|
+
registerInStore<ReferenceLineSettings>(
|
|
247
|
+
() => ({
|
|
248
|
+
id: props.id,
|
|
249
|
+
xAxisId: props.xAxisId,
|
|
250
|
+
yAxisId: props.yAxisId,
|
|
251
|
+
ifOverflow: props.ifOverflow,
|
|
252
|
+
x: props.x,
|
|
253
|
+
y: props.y,
|
|
254
|
+
segment: props.segment,
|
|
255
|
+
}),
|
|
256
|
+
{
|
|
257
|
+
add: (next) => store.actions.referenceElements.addLine(next),
|
|
258
|
+
// The referenceElements slice has no replace action; the change is a
|
|
259
|
+
// remove of the old settings followed by an add of the new (recharts idiom).
|
|
260
|
+
replace: (prev, next) => {
|
|
261
|
+
store.actions.referenceElements.removeLine(prev);
|
|
262
|
+
store.actions.referenceElements.addLine(next);
|
|
263
|
+
},
|
|
264
|
+
remove: (prev) => store.actions.referenceElements.removeLine(prev),
|
|
265
|
+
},
|
|
266
|
+
);
|
|
267
|
+
}
|
|
277
268
|
|
|
278
269
|
return null;
|
|
279
270
|
}
|
|
@@ -291,7 +282,7 @@ const referenceLineDefaultProps = {
|
|
|
291
282
|
} as const satisfies Partial<Props>;
|
|
292
283
|
|
|
293
284
|
function ReferenceLineImpl(props: Props): JSX.Element {
|
|
294
|
-
const merged =
|
|
285
|
+
const merged = mergeProps(referenceLineDefaultProps, props);
|
|
295
286
|
const isPanorama = useIsPanorama();
|
|
296
287
|
const clipPathId = useClipPathId();
|
|
297
288
|
const viewBox = useViewBox();
|
|
@@ -393,7 +384,7 @@ export function ReferenceLine<
|
|
|
393
384
|
XValueType extends ReferenceCoordinateValue = ReferenceCoordinateValue,
|
|
394
385
|
YValueType extends ReferenceCoordinateValue = ReferenceCoordinateValue,
|
|
395
386
|
>(props: Props<XValueType, YValueType>): JSX.Element {
|
|
396
|
-
const merged =
|
|
387
|
+
const merged = mergeProps(referenceLineDefaultProps, props);
|
|
397
388
|
const id = useUniqueId("recharts-reference-line");
|
|
398
389
|
return (
|
|
399
390
|
<>
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createEffect, on } from "solid-js";
|
|
1
2
|
// Ported from recharts 3.8.1 src/cartesian/CartesianAxis.tsx RenderedTicksReporter
|
|
2
3
|
// (commit 7a23854).
|
|
3
4
|
//
|
|
@@ -5,8 +6,7 @@
|
|
|
5
6
|
// useXAxisTicks/useYAxisTicks hooks (and the tick-snap inverse scale) can read
|
|
6
7
|
// them. Solid deviation: useEffect add + cleanup remove → createEffect + onCleanup
|
|
7
8
|
// (the same effect-dispatch idiom the other Report* components use).
|
|
8
|
-
import {
|
|
9
|
-
import type { JSX } from "@solidjs/web";
|
|
9
|
+
import type { JSX } from "solid-js";
|
|
10
10
|
import { useAppStore } from "../state/hooks";
|
|
11
11
|
import type { AxisId } from "../state/cartesianAxisSlice";
|
|
12
12
|
import type { CartesianTickItem, TickItem } from "../util/types";
|
|
@@ -21,21 +21,23 @@ export function RenderedTicksReporter(props: {
|
|
|
21
21
|
let prev: { axisType: "xAxis" | "yAxis"; axisId: AxisId } | null = null;
|
|
22
22
|
|
|
23
23
|
createEffect(
|
|
24
|
-
(
|
|
25
|
-
axisType:
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
24
|
+
on(
|
|
25
|
+
(): { axisType: "xAxis" | "yAxis"; axisId: AxisId; ticks: ReadonlyArray<TickItem> } => ({
|
|
26
|
+
axisType: props.axisType,
|
|
27
|
+
axisId: props.axisId,
|
|
28
|
+
// Expose only the external tick shape (drop internal props).
|
|
29
|
+
ticks: props.ticks.map((t) => ({
|
|
30
|
+
value: t.value,
|
|
31
|
+
coordinate: t.coordinate,
|
|
32
|
+
offset: t.offset,
|
|
33
|
+
index: t.index,
|
|
34
|
+
})),
|
|
35
|
+
}),
|
|
36
|
+
(payload) => {
|
|
37
|
+
store?.actions.renderedTicks.setRenderedTicks(payload);
|
|
38
|
+
prev = { axisType: payload.axisType, axisId: payload.axisId };
|
|
39
|
+
},
|
|
40
|
+
),
|
|
39
41
|
);
|
|
40
42
|
|
|
41
43
|
unregisterOnCleanup(() => {
|