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
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { Line, LineChart, ReferenceLine, getRelativeCoordinate } from "../../../src";
|
|
3
|
-
import { render } from "@solidjs/testing-library";
|
|
4
|
-
|
|
5
|
-
// Ported from recharts 3.8.1 test/cartesian/ReferenceLine/ReferenceLine.typed.spec.tsx.
|
|
6
|
-
|
|
7
|
-
type ExampleDataPoint = { value: number; name: string };
|
|
8
|
-
const data: ReadonlyArray<ExampleDataPoint> = [
|
|
9
|
-
{ value: 100, name: "a" },
|
|
10
|
-
{ value: 80, name: "b" },
|
|
11
|
-
];
|
|
12
|
-
|
|
13
|
-
describe("ReferenceLine with strong typing", () => {
|
|
14
|
-
describe("with all implicit types", () => {
|
|
15
|
-
it("should render ReferenceLine with implicit coordinate types", () => {
|
|
16
|
-
const { container } = render(() => (
|
|
17
|
-
<LineChart data={data} width={400} height={400}>
|
|
18
|
-
<Line dataKey="value" />
|
|
19
|
-
<ReferenceLine x={0} y={100} />
|
|
20
|
-
</LineChart>
|
|
21
|
-
));
|
|
22
|
-
expect(container.querySelectorAll(".recharts-reference-line-line")).toHaveLength(1);
|
|
23
|
-
});
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
describe("with explicit ReferenceLine type parameters", () => {
|
|
27
|
-
it("should allow matching explicit coordinate types", () => {
|
|
28
|
-
render(() => (
|
|
29
|
-
<LineChart data={data} width={400} height={400}>
|
|
30
|
-
<Line dataKey="value" />
|
|
31
|
-
<ReferenceLine<number, number> x={0} y={100} />
|
|
32
|
-
</LineChart>
|
|
33
|
-
));
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
it("should show errors when explicit coordinate types do not match", () => {
|
|
37
|
-
render(() => (
|
|
38
|
-
<LineChart data={data} width={400} height={400}>
|
|
39
|
-
<Line dataKey="value" />
|
|
40
|
-
{/* @ts-expect-error TypeScript is correct here - x should be number */}
|
|
41
|
-
<ReferenceLine<number, number> x="a" y={100} />
|
|
42
|
-
{/* @ts-expect-error TypeScript is correct here - y should be number */}
|
|
43
|
-
<ReferenceLine<number, number> x={0} y="a" />
|
|
44
|
-
</LineChart>
|
|
45
|
-
));
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
describe("ReferenceLine event handlers", () => {
|
|
51
|
-
// Handlers spread onto the rendered <line> are Solid single-arg DOM handlers
|
|
52
|
-
// (repo convention; see ReferenceLine.spec "events"). The event's currentTarget
|
|
53
|
-
// is the SVGLineElement, satisfying SVGMousePointer/SVGTouchPointer, so it
|
|
54
|
-
// feeds getRelativeCoordinate directly — same call shape as the reference.
|
|
55
|
-
it("should allow calling getRelativeCoordinate with the type provided by Recharts event handler", () => {
|
|
56
|
-
render(() => (
|
|
57
|
-
<LineChart width={100} height={100}>
|
|
58
|
-
<ReferenceLine
|
|
59
|
-
onClick={(e) => getRelativeCoordinate(e)}
|
|
60
|
-
onMouseDown={(e) => getRelativeCoordinate(e)}
|
|
61
|
-
onMouseUp={(e) => getRelativeCoordinate(e)}
|
|
62
|
-
onMouseMove={(e) => getRelativeCoordinate(e)}
|
|
63
|
-
onMouseLeave={(e) => getRelativeCoordinate(e)}
|
|
64
|
-
onMouseOver={(e) => getRelativeCoordinate(e)}
|
|
65
|
-
onMouseOut={(e) => getRelativeCoordinate(e)}
|
|
66
|
-
onMouseEnter={(e) => getRelativeCoordinate(e)}
|
|
67
|
-
onTouchStart={(e) => getRelativeCoordinate(e)}
|
|
68
|
-
onTouchMove={(e) => getRelativeCoordinate(e)}
|
|
69
|
-
onTouchEnd={(e) => getRelativeCoordinate(e)}
|
|
70
|
-
/>
|
|
71
|
-
</LineChart>
|
|
72
|
-
));
|
|
73
|
-
});
|
|
74
|
-
});
|
|
@@ -1,399 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { scaleLinear } from "victory-vendor/d3-scale";
|
|
3
|
-
import { getEndPoints, type ReferenceLineSegment } from "../../../src/cartesian/ReferenceLine";
|
|
4
|
-
import type { CartesianViewBoxRequired } from "../../../src/util/types";
|
|
5
|
-
import {
|
|
6
|
-
type BandPosition,
|
|
7
|
-
rechartsScaleFactory,
|
|
8
|
-
type RechartsScale,
|
|
9
|
-
} from "../../../src/util/scale/RechartsScale";
|
|
10
|
-
|
|
11
|
-
/*
|
|
12
|
-
* Ported from recharts 3.8.1 test/cartesian/ReferenceLine/getEndPoints.spec.tsx.
|
|
13
|
-
* Pure geometry tests; no Solid harness adaptation needed.
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
describe("getEndPoints", () => {
|
|
17
|
-
const throwingScale: RechartsScale = {
|
|
18
|
-
domain() {
|
|
19
|
-
throw new Error("Should not be called");
|
|
20
|
-
},
|
|
21
|
-
range() {
|
|
22
|
-
throw new Error("Should not be called");
|
|
23
|
-
},
|
|
24
|
-
rangeMax() {
|
|
25
|
-
throw new Error("Should not be called");
|
|
26
|
-
},
|
|
27
|
-
rangeMin() {
|
|
28
|
-
throw new Error("Should not be called");
|
|
29
|
-
},
|
|
30
|
-
map() {
|
|
31
|
-
throw new Error("Should not be called");
|
|
32
|
-
},
|
|
33
|
-
isInRange() {
|
|
34
|
-
throw new Error("Should not be called");
|
|
35
|
-
},
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
it("should return null if X, Y are not fixed and isSegment is false too", () => {
|
|
39
|
-
const viewBox: CartesianViewBoxRequired = {
|
|
40
|
-
y: 10,
|
|
41
|
-
height: 5,
|
|
42
|
-
x: 100,
|
|
43
|
-
width: 100,
|
|
44
|
-
};
|
|
45
|
-
const result = getEndPoints(
|
|
46
|
-
throwingScale,
|
|
47
|
-
throwingScale,
|
|
48
|
-
viewBox,
|
|
49
|
-
undefined,
|
|
50
|
-
undefined,
|
|
51
|
-
undefined,
|
|
52
|
-
{
|
|
53
|
-
ifOverflow: "discard",
|
|
54
|
-
},
|
|
55
|
-
);
|
|
56
|
-
expect(result).toEqual(null);
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
describe("fixed Y location when out of range", () => {
|
|
60
|
-
const position = "start";
|
|
61
|
-
const lineLocationY = 9;
|
|
62
|
-
const yScale = rechartsScaleFactory<number>(scaleLinear().domain([0, 5]).range([0, 50]));
|
|
63
|
-
|
|
64
|
-
it("should return null when set to discard overflow", () => {
|
|
65
|
-
const viewBox: CartesianViewBoxRequired = {
|
|
66
|
-
x: 10,
|
|
67
|
-
width: 5,
|
|
68
|
-
y: 0,
|
|
69
|
-
height: 10,
|
|
70
|
-
};
|
|
71
|
-
const result = getEndPoints(throwingScale, yScale, viewBox, position, "bottom", "left", {
|
|
72
|
-
y: lineLocationY,
|
|
73
|
-
ifOverflow: "discard",
|
|
74
|
-
});
|
|
75
|
-
expect(result).toEqual(null);
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
it("should return gibberish when viewBox is empty", () => {
|
|
79
|
-
// @ts-expect-error typescript is correct here, the function demands a CartesianViewBoxRequired.
|
|
80
|
-
const viewBox: CartesianViewBoxRequired = {};
|
|
81
|
-
const result = getEndPoints(throwingScale, yScale, viewBox, position, undefined, "left", {
|
|
82
|
-
y: lineLocationY,
|
|
83
|
-
ifOverflow: "visible",
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
const expected = [
|
|
87
|
-
{ x: undefined, y: 90 },
|
|
88
|
-
{ x: NaN, y: 90 },
|
|
89
|
-
];
|
|
90
|
-
expect(result).toEqual(expected);
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
it('should return coordinates when set to display overflow when orientation is "right"', () => {
|
|
94
|
-
const viewBox: CartesianViewBoxRequired = {
|
|
95
|
-
x: 10,
|
|
96
|
-
width: 5,
|
|
97
|
-
y: 0,
|
|
98
|
-
height: 0,
|
|
99
|
-
};
|
|
100
|
-
const result = getEndPoints(throwingScale, yScale, viewBox, position, undefined, "right", {
|
|
101
|
-
y: lineLocationY,
|
|
102
|
-
ifOverflow: "visible",
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
const expected = [
|
|
106
|
-
{ x: 15, y: 90 },
|
|
107
|
-
{ x: 10, y: 90 },
|
|
108
|
-
];
|
|
109
|
-
expect(result).toEqual(expected);
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
it('should reverse first and second point if yAxis orientation is "left"', () => {
|
|
113
|
-
const viewBox: CartesianViewBoxRequired = {
|
|
114
|
-
x: 10,
|
|
115
|
-
width: 5,
|
|
116
|
-
y: 0,
|
|
117
|
-
height: 0,
|
|
118
|
-
};
|
|
119
|
-
const result = getEndPoints(throwingScale, yScale, viewBox, position, undefined, "left", {
|
|
120
|
-
y: lineLocationY,
|
|
121
|
-
ifOverflow: "visible",
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
const expected = [
|
|
125
|
-
{ x: 10, y: 90 },
|
|
126
|
-
{ x: 15, y: 90 },
|
|
127
|
-
];
|
|
128
|
-
expect(result).toEqual(expected);
|
|
129
|
-
});
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
describe("fixed Y location when in range", () => {
|
|
133
|
-
const position = "start";
|
|
134
|
-
const lineLocationY = 9;
|
|
135
|
-
const yScale = rechartsScaleFactory<number>(scaleLinear().domain([0, 15]).range([0, 150]));
|
|
136
|
-
|
|
137
|
-
it("should return coordinates when set to discard overflow", () => {
|
|
138
|
-
const viewBox: CartesianViewBoxRequired = {
|
|
139
|
-
x: 10,
|
|
140
|
-
width: 5,
|
|
141
|
-
y: 0,
|
|
142
|
-
height: 0,
|
|
143
|
-
};
|
|
144
|
-
const result = getEndPoints(throwingScale, yScale, viewBox, position, undefined, "right", {
|
|
145
|
-
y: lineLocationY,
|
|
146
|
-
ifOverflow: "discard",
|
|
147
|
-
});
|
|
148
|
-
const expected = [
|
|
149
|
-
{ x: 15, y: 90 },
|
|
150
|
-
{ x: 10, y: 90 },
|
|
151
|
-
];
|
|
152
|
-
expect(result).toEqual(expected);
|
|
153
|
-
});
|
|
154
|
-
|
|
155
|
-
it('should return coordinates when set to display overflow when orientation is "right"', () => {
|
|
156
|
-
const viewBox: CartesianViewBoxRequired = {
|
|
157
|
-
x: 10,
|
|
158
|
-
width: 5,
|
|
159
|
-
y: 0,
|
|
160
|
-
height: 0,
|
|
161
|
-
};
|
|
162
|
-
const result = getEndPoints(throwingScale, yScale, viewBox, position, undefined, "right", {
|
|
163
|
-
y: lineLocationY,
|
|
164
|
-
ifOverflow: "visible",
|
|
165
|
-
});
|
|
166
|
-
|
|
167
|
-
const expected = [
|
|
168
|
-
{ x: 15, y: 90 },
|
|
169
|
-
{ x: 10, y: 90 },
|
|
170
|
-
];
|
|
171
|
-
expect(result).toEqual(expected);
|
|
172
|
-
});
|
|
173
|
-
|
|
174
|
-
it('should reverse first and second point if yAxis orientation is "left"', () => {
|
|
175
|
-
const viewBox: CartesianViewBoxRequired = {
|
|
176
|
-
x: 10,
|
|
177
|
-
width: 5,
|
|
178
|
-
y: 0,
|
|
179
|
-
height: 0,
|
|
180
|
-
};
|
|
181
|
-
const result = getEndPoints(throwingScale, yScale, viewBox, position, undefined, "left", {
|
|
182
|
-
y: lineLocationY,
|
|
183
|
-
ifOverflow: "visible",
|
|
184
|
-
});
|
|
185
|
-
|
|
186
|
-
const expected = [
|
|
187
|
-
{ x: 10, y: 90 },
|
|
188
|
-
{ x: 15, y: 90 },
|
|
189
|
-
];
|
|
190
|
-
expect(result).toEqual(expected);
|
|
191
|
-
});
|
|
192
|
-
});
|
|
193
|
-
|
|
194
|
-
describe("fixed X location when out of range", () => {
|
|
195
|
-
const position = "start";
|
|
196
|
-
const lineLocationX = 9;
|
|
197
|
-
const xScale = rechartsScaleFactory<number>(scaleLinear().domain([0, 5]).range([0, 50]));
|
|
198
|
-
|
|
199
|
-
it("should return null when set to discard overflow", () => {
|
|
200
|
-
const viewBox: CartesianViewBoxRequired = {
|
|
201
|
-
y: 0,
|
|
202
|
-
height: 0,
|
|
203
|
-
x: 0,
|
|
204
|
-
width: 0,
|
|
205
|
-
};
|
|
206
|
-
const result = getEndPoints(xScale, throwingScale, viewBox, position, "bottom", undefined, {
|
|
207
|
-
x: lineLocationX,
|
|
208
|
-
ifOverflow: "discard",
|
|
209
|
-
});
|
|
210
|
-
expect(result).toEqual(null);
|
|
211
|
-
});
|
|
212
|
-
|
|
213
|
-
it('should return coordinates when set to display overflow when orientation is "top"', () => {
|
|
214
|
-
const viewBox: CartesianViewBoxRequired = {
|
|
215
|
-
y: 10,
|
|
216
|
-
height: 5,
|
|
217
|
-
x: 0,
|
|
218
|
-
width: 0,
|
|
219
|
-
};
|
|
220
|
-
const result = getEndPoints(xScale, throwingScale, viewBox, position, "top", undefined, {
|
|
221
|
-
x: lineLocationX,
|
|
222
|
-
ifOverflow: "visible",
|
|
223
|
-
});
|
|
224
|
-
|
|
225
|
-
const expected = [
|
|
226
|
-
{ x: 90, y: 10 },
|
|
227
|
-
{ x: 90, y: 15 },
|
|
228
|
-
];
|
|
229
|
-
expect(result).toEqual(expected);
|
|
230
|
-
});
|
|
231
|
-
|
|
232
|
-
it('should reverse first and second point if xAxis orientation is "top"', () => {
|
|
233
|
-
const viewBox: CartesianViewBoxRequired = {
|
|
234
|
-
y: 10,
|
|
235
|
-
height: 5,
|
|
236
|
-
x: 0,
|
|
237
|
-
width: 0,
|
|
238
|
-
};
|
|
239
|
-
const result = getEndPoints(xScale, throwingScale, viewBox, position, "top", undefined, {
|
|
240
|
-
x: lineLocationX,
|
|
241
|
-
ifOverflow: "visible",
|
|
242
|
-
});
|
|
243
|
-
|
|
244
|
-
const expected = [
|
|
245
|
-
{ x: 90, y: 10 },
|
|
246
|
-
{ x: 90, y: 15 },
|
|
247
|
-
];
|
|
248
|
-
expect(result).toEqual(expected);
|
|
249
|
-
});
|
|
250
|
-
});
|
|
251
|
-
|
|
252
|
-
describe("fixed X location when in range", () => {
|
|
253
|
-
const position = "start";
|
|
254
|
-
const lineLocationX = 9;
|
|
255
|
-
const xScale = rechartsScaleFactory<number>(scaleLinear().domain([0, 15]).range([0, 150]));
|
|
256
|
-
|
|
257
|
-
it("should return coordinates when set to discard overflow", () => {
|
|
258
|
-
const viewBox: CartesianViewBoxRequired = {
|
|
259
|
-
y: 10,
|
|
260
|
-
height: 5,
|
|
261
|
-
x: 0,
|
|
262
|
-
width: 0,
|
|
263
|
-
};
|
|
264
|
-
const result = getEndPoints(xScale, throwingScale, viewBox, position, "bottom", undefined, {
|
|
265
|
-
x: lineLocationX,
|
|
266
|
-
ifOverflow: "discard",
|
|
267
|
-
});
|
|
268
|
-
const expected = [
|
|
269
|
-
{ x: 90, y: 15 },
|
|
270
|
-
{ x: 90, y: 10 },
|
|
271
|
-
];
|
|
272
|
-
expect(result).toEqual(expected);
|
|
273
|
-
});
|
|
274
|
-
|
|
275
|
-
it('should return coordinates when set to display overflow when orientation is "top"', () => {
|
|
276
|
-
const viewBox: CartesianViewBoxRequired = {
|
|
277
|
-
y: 10,
|
|
278
|
-
height: 5,
|
|
279
|
-
x: 0,
|
|
280
|
-
width: 0,
|
|
281
|
-
};
|
|
282
|
-
const result = getEndPoints(xScale, throwingScale, viewBox, position, "top", undefined, {
|
|
283
|
-
x: lineLocationX,
|
|
284
|
-
ifOverflow: "visible",
|
|
285
|
-
});
|
|
286
|
-
|
|
287
|
-
const expected = [
|
|
288
|
-
{ x: 90, y: 10 },
|
|
289
|
-
{ x: 90, y: 15 },
|
|
290
|
-
];
|
|
291
|
-
expect(result).toEqual(expected);
|
|
292
|
-
});
|
|
293
|
-
|
|
294
|
-
it('should reverse first and second point if xAxis orientation is "top"', () => {
|
|
295
|
-
const viewBox: CartesianViewBoxRequired = {
|
|
296
|
-
y: 10,
|
|
297
|
-
height: 5,
|
|
298
|
-
x: 0,
|
|
299
|
-
width: 0,
|
|
300
|
-
};
|
|
301
|
-
const result = getEndPoints(xScale, throwingScale, viewBox, position, "top", undefined, {
|
|
302
|
-
x: lineLocationX,
|
|
303
|
-
ifOverflow: "visible",
|
|
304
|
-
});
|
|
305
|
-
|
|
306
|
-
const expected = [
|
|
307
|
-
{ x: 90, y: 10 },
|
|
308
|
-
{ x: 90, y: 15 },
|
|
309
|
-
];
|
|
310
|
-
expect(result).toEqual(expected);
|
|
311
|
-
});
|
|
312
|
-
});
|
|
313
|
-
|
|
314
|
-
describe("segment", () => {
|
|
315
|
-
const viewBox: CartesianViewBoxRequired = {
|
|
316
|
-
y: 10,
|
|
317
|
-
height: 5,
|
|
318
|
-
x: 100,
|
|
319
|
-
width: 100,
|
|
320
|
-
};
|
|
321
|
-
|
|
322
|
-
it("should return null if segment array is empty", () => {
|
|
323
|
-
const result = getEndPoints(
|
|
324
|
-
throwingScale,
|
|
325
|
-
throwingScale,
|
|
326
|
-
viewBox,
|
|
327
|
-
undefined,
|
|
328
|
-
undefined,
|
|
329
|
-
undefined,
|
|
330
|
-
{
|
|
331
|
-
// @ts-expect-error TypeScript is correct here - segment should have two items always
|
|
332
|
-
segment: [],
|
|
333
|
-
ifOverflow: "visible",
|
|
334
|
-
},
|
|
335
|
-
);
|
|
336
|
-
expect(result).toEqual(null);
|
|
337
|
-
});
|
|
338
|
-
|
|
339
|
-
it("should pass every segment into scales function", () => {
|
|
340
|
-
const segment: ReferenceLineSegment = [{ x: 1 }, { x: 2 }];
|
|
341
|
-
const position: BandPosition = "middle";
|
|
342
|
-
const scaleX = rechartsScaleFactory<number>(scaleLinear().domain([0, 10]).range([0, 100]));
|
|
343
|
-
const scaleY = rechartsScaleFactory<number>(scaleLinear().domain([0, 20]).range([0, 100]));
|
|
344
|
-
const result = getEndPoints(scaleX, scaleY, viewBox, position, undefined, undefined, {
|
|
345
|
-
segment,
|
|
346
|
-
ifOverflow: "visible",
|
|
347
|
-
});
|
|
348
|
-
expect(result).toEqual([
|
|
349
|
-
{ x: 10, y: 0 },
|
|
350
|
-
{ x: 20, y: 100 },
|
|
351
|
-
]);
|
|
352
|
-
});
|
|
353
|
-
|
|
354
|
-
it("should return null if outside of range and overflow = discard", () => {
|
|
355
|
-
const segment: ReferenceLineSegment = [{ x: 11 }, { x: 21 }];
|
|
356
|
-
const scaleX = rechartsScaleFactory<number>(scaleLinear().domain([0, 10]).range([0, 100]));
|
|
357
|
-
const scaleY = rechartsScaleFactory<number>(scaleLinear().domain([0, 20]).range([0, 100]));
|
|
358
|
-
const result = getEndPoints(scaleX, scaleY, viewBox, undefined, undefined, undefined, {
|
|
359
|
-
segment,
|
|
360
|
-
ifOverflow: "discard",
|
|
361
|
-
});
|
|
362
|
-
expect(result).toEqual(null);
|
|
363
|
-
});
|
|
364
|
-
|
|
365
|
-
it.each(["hidden", "visible", "extendDomain"] as const)(
|
|
366
|
-
"should return point if outside of range and overflow = %s",
|
|
367
|
-
(ifOverflow) => {
|
|
368
|
-
const segment: ReferenceLineSegment = [{ x: 11 }, { x: 21 }];
|
|
369
|
-
const scaleX = rechartsScaleFactory<number>(scaleLinear().domain([0, 10]).range([0, 100]));
|
|
370
|
-
const scaleY = rechartsScaleFactory<number>(scaleLinear().domain([0, 20]).range([0, 100]));
|
|
371
|
-
const result = getEndPoints(scaleX, scaleY, viewBox, undefined, undefined, undefined, {
|
|
372
|
-
segment,
|
|
373
|
-
ifOverflow,
|
|
374
|
-
});
|
|
375
|
-
expect(result).toEqual([
|
|
376
|
-
{ x: 110.00000000000001, y: 0 },
|
|
377
|
-
{ x: 210, y: 100 },
|
|
378
|
-
]);
|
|
379
|
-
},
|
|
380
|
-
);
|
|
381
|
-
|
|
382
|
-
it.each(["hidden", "visible", "extendDomain", "discard"] as const)(
|
|
383
|
-
"should return whatever scales returned if in range and ifOverflow = %s",
|
|
384
|
-
(ifOverflow) => {
|
|
385
|
-
const segment: ReferenceLineSegment = [{ x: 1 }, { x: 2 }];
|
|
386
|
-
const scaleX = rechartsScaleFactory<number>(scaleLinear().domain([0, 10]).range([0, 100]));
|
|
387
|
-
const scaleY = rechartsScaleFactory<number>(scaleLinear().domain([0, 20]).range([0, 100]));
|
|
388
|
-
const result = getEndPoints(scaleX, scaleY, viewBox, undefined, undefined, undefined, {
|
|
389
|
-
segment,
|
|
390
|
-
ifOverflow,
|
|
391
|
-
});
|
|
392
|
-
expect(result).toEqual([
|
|
393
|
-
{ x: 10, y: 0 },
|
|
394
|
-
{ x: 20, y: 100 },
|
|
395
|
-
]);
|
|
396
|
-
},
|
|
397
|
-
);
|
|
398
|
-
});
|
|
399
|
-
});
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
// Spec for the ReferenceLine vertical: a data-coordinate line mapped to pixels
|
|
2
|
-
// through the cartesian scale spine (selectAxisScale → RechartsScale). Geometry
|
|
3
|
-
// is exact — the scale spine is byte-identical to recharts, so a horizontal line
|
|
4
|
-
// at y=value spans the full plot width at the y the Y scale maps `value` to, and
|
|
5
|
-
// a vertical line at x=category spans the full plot height at that band's x.
|
|
6
|
-
import { describe, expect, it } from "vitest";
|
|
7
|
-
import { flush } from "solid-js";
|
|
8
|
-
import { render } from "@solidjs/testing-library";
|
|
9
|
-
import { LineChart, Line, XAxis, YAxis, ReferenceLine } from "../../src";
|
|
10
|
-
|
|
11
|
-
const data = [
|
|
12
|
-
{ name: "A", uv: 10 },
|
|
13
|
-
{ name: "B", uv: 30 },
|
|
14
|
-
{ name: "C", uv: 50 },
|
|
15
|
-
{ name: "D", uv: 70 },
|
|
16
|
-
];
|
|
17
|
-
|
|
18
|
-
function lineCoords(container: Element) {
|
|
19
|
-
return Array.from(container.querySelectorAll(".recharts-reference-line-line")).map((l) => ({
|
|
20
|
-
x1: l.getAttribute("x1"),
|
|
21
|
-
y1: l.getAttribute("y1"),
|
|
22
|
-
x2: l.getAttribute("x2"),
|
|
23
|
-
y2: l.getAttribute("y2"),
|
|
24
|
-
}));
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
describe("<ReferenceLine />", () => {
|
|
28
|
-
it("draws a horizontal line at y=value spanning the full plot width", () => {
|
|
29
|
-
const { container } = render(() => (
|
|
30
|
-
<LineChart
|
|
31
|
-
width={500}
|
|
32
|
-
height={500}
|
|
33
|
-
data={data}
|
|
34
|
-
margin={{ top: 5, right: 5, bottom: 5, left: 5 }}
|
|
35
|
-
>
|
|
36
|
-
<XAxis dataKey="name" />
|
|
37
|
-
<YAxis type="number" domain={[0, 100]} />
|
|
38
|
-
<Line dataKey="uv" />
|
|
39
|
-
<ReferenceLine y={50} stroke="#ff0000" />
|
|
40
|
-
</LineChart>
|
|
41
|
-
));
|
|
42
|
-
flush();
|
|
43
|
-
|
|
44
|
-
// viewBox: x=65 (margin.left 5 + Y axis width 60), width=430 (500-5-65);
|
|
45
|
-
// Y scale [0,100] → range [465, 5], so y=50 maps to 235. Orientation 'left'
|
|
46
|
-
// reverses the points → [{x:65}, {x:495}].
|
|
47
|
-
expect(lineCoords(container)).toEqual([{ x1: "65", y1: "235", x2: "495", y2: "235" }]);
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
it("draws a vertical line at x=category spanning the full plot height", () => {
|
|
51
|
-
const { container } = render(() => (
|
|
52
|
-
<LineChart
|
|
53
|
-
width={500}
|
|
54
|
-
height={500}
|
|
55
|
-
data={data}
|
|
56
|
-
margin={{ top: 5, right: 5, bottom: 5, left: 5 }}
|
|
57
|
-
>
|
|
58
|
-
<XAxis dataKey="name" />
|
|
59
|
-
<YAxis type="number" domain={[0, 100]} />
|
|
60
|
-
<Line dataKey="uv" />
|
|
61
|
-
<ReferenceLine x="B" stroke="#0000ff" />
|
|
62
|
-
</LineChart>
|
|
63
|
-
));
|
|
64
|
-
flush();
|
|
65
|
-
|
|
66
|
-
const coords = lineCoords(container);
|
|
67
|
-
expect(coords).toHaveLength(1);
|
|
68
|
-
// Vertical line: x1 === x2 (one band position), spanning the plot height
|
|
69
|
-
// (top y=5 .. bottom y=465). Orientation 'bottom' keeps points unreversed.
|
|
70
|
-
const c = coords[0];
|
|
71
|
-
expect(c?.x1).toBe(c?.x2);
|
|
72
|
-
expect(new Set([c?.y1, c?.y2])).toEqual(new Set(["5", "465"]));
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
it("extends the axis domain so an out-of-range line renders when ifOverflow='extendDomain'", () => {
|
|
76
|
-
// uv max is 70; with a default auto Y domain, y=200 is far out of range.
|
|
77
|
-
// ifOverflow='extendDomain' grows the numerical domain to include 200, so the
|
|
78
|
-
// line falls in range and renders (this exercises the un-deferred
|
|
79
|
-
// selectReferenceElementsDomain → combineNumericalDomain path).
|
|
80
|
-
const { container } = render(() => (
|
|
81
|
-
<LineChart width={500} height={500} data={data}>
|
|
82
|
-
<XAxis dataKey="name" />
|
|
83
|
-
<YAxis type="number" />
|
|
84
|
-
<Line dataKey="uv" />
|
|
85
|
-
<ReferenceLine y={200} ifOverflow="extendDomain" stroke="#ff0000" />
|
|
86
|
-
</LineChart>
|
|
87
|
-
));
|
|
88
|
-
flush();
|
|
89
|
-
|
|
90
|
-
expect(container.querySelectorAll(".recharts-reference-line-line")).toHaveLength(1);
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
it("renders nothing when the value overflows the domain and ifOverflow='discard'", () => {
|
|
94
|
-
const { container } = render(() => (
|
|
95
|
-
<LineChart width={500} height={500} data={data}>
|
|
96
|
-
<XAxis dataKey="name" />
|
|
97
|
-
<YAxis type="number" domain={[0, 100]} />
|
|
98
|
-
<Line dataKey="uv" />
|
|
99
|
-
{/* 500 is outside [0,100]; default ifOverflow='discard' drops it */}
|
|
100
|
-
<ReferenceLine y={500} stroke="#ff0000" />
|
|
101
|
-
</LineChart>
|
|
102
|
-
));
|
|
103
|
-
flush();
|
|
104
|
-
|
|
105
|
-
expect(container.querySelectorAll(".recharts-reference-line-line")).toHaveLength(0);
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
it("forwards compound kebab presentation attrs onto the line (allowlist fix)", () => {
|
|
109
|
-
// Regression: ReferenceLine props are kebab (JSX.LineSVGAttributes). Before the
|
|
110
|
-
// svgPropertiesAndEvents fix, compound attrs like stroke-dasharray/stroke-width
|
|
111
|
-
// were dropped by the camelCase-only allowlist; now they forward verbatim.
|
|
112
|
-
const { container } = render(() => (
|
|
113
|
-
<LineChart
|
|
114
|
-
width={500}
|
|
115
|
-
height={500}
|
|
116
|
-
data={data}
|
|
117
|
-
margin={{ top: 5, right: 5, bottom: 5, left: 5 }}
|
|
118
|
-
>
|
|
119
|
-
<XAxis dataKey="name" />
|
|
120
|
-
<YAxis type="number" domain={[0, 100]} />
|
|
121
|
-
<Line dataKey="uv" />
|
|
122
|
-
<ReferenceLine y={50} stroke="#ff0000" strokeWidth={3} strokeDasharray="4 2" />
|
|
123
|
-
</LineChart>
|
|
124
|
-
));
|
|
125
|
-
flush();
|
|
126
|
-
|
|
127
|
-
const line = container.querySelector(".recharts-reference-line-line");
|
|
128
|
-
expect(line).not.toBeNull();
|
|
129
|
-
expect(line).toHaveAttribute("stroke-width", "3");
|
|
130
|
-
expect(line).toHaveAttribute("stroke-dasharray", "4 2");
|
|
131
|
-
// No broken camelCase attribute leaked through.
|
|
132
|
-
expect(line?.getAttribute("strokeWidth")).toBeNull();
|
|
133
|
-
});
|
|
134
|
-
});
|