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,133 +0,0 @@
|
|
|
1
|
-
// Port of recharts 3.8.1 test/util/ChartUtils/appendOffsetOfLegend.spec.tsx (commit 7a23854).
|
|
2
|
-
// Harness deltas: dropped the `vi.mock('.../ReactUtils')` (Solid ChartUtils does not
|
|
3
|
-
// import ReactUtils); `OffsetVertical & OffsetHorizontal` → the local `OffsetSides` shape
|
|
4
|
-
// (ChartUtils' offset type; not exported).
|
|
5
|
-
import { describe, it, expect } from "vitest";
|
|
6
|
-
import { appendOffsetOfLegend } from "../../../src/util/ChartUtils";
|
|
7
|
-
import { Size } from "../../../src/util/types";
|
|
8
|
-
import { LegendSettings } from "../../../src/state/legendSlice";
|
|
9
|
-
|
|
10
|
-
type OffsetSides = { top: number; right: number; bottom: number; left: number };
|
|
11
|
-
|
|
12
|
-
const emptyOffset: OffsetSides = {
|
|
13
|
-
top: 1,
|
|
14
|
-
right: 2,
|
|
15
|
-
bottom: 9,
|
|
16
|
-
left: 5,
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
describe("appendOffsetOfLegend", () => {
|
|
20
|
-
it("should add extra space for a vertical legend", () => {
|
|
21
|
-
const settings: LegendSettings = {
|
|
22
|
-
verticalAlign: "bottom",
|
|
23
|
-
layout: "vertical",
|
|
24
|
-
align: "left",
|
|
25
|
-
itemSorter: "value",
|
|
26
|
-
};
|
|
27
|
-
const size: Size = {
|
|
28
|
-
width: 100,
|
|
29
|
-
height: 200,
|
|
30
|
-
};
|
|
31
|
-
const result = appendOffsetOfLegend(emptyOffset, settings, size);
|
|
32
|
-
expect(result).toEqual({
|
|
33
|
-
...emptyOffset,
|
|
34
|
-
left: 105,
|
|
35
|
-
});
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
it("should add extra space for a horizontal legend, middle aligned", () => {
|
|
39
|
-
const settings: LegendSettings = {
|
|
40
|
-
layout: "horizontal",
|
|
41
|
-
verticalAlign: "middle",
|
|
42
|
-
align: "left",
|
|
43
|
-
itemSorter: "value",
|
|
44
|
-
};
|
|
45
|
-
const size: Size = {
|
|
46
|
-
width: 100,
|
|
47
|
-
height: 200,
|
|
48
|
-
};
|
|
49
|
-
const result = appendOffsetOfLegend(emptyOffset, settings, size);
|
|
50
|
-
expect(result).toEqual({
|
|
51
|
-
...emptyOffset,
|
|
52
|
-
left: 105,
|
|
53
|
-
});
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
it("should not modify the original offset that was passed as an argument", () => {
|
|
57
|
-
const clone: OffsetSides = { ...emptyOffset };
|
|
58
|
-
const settings: LegendSettings = {
|
|
59
|
-
layout: "horizontal",
|
|
60
|
-
verticalAlign: "middle",
|
|
61
|
-
align: "left",
|
|
62
|
-
itemSorter: "value",
|
|
63
|
-
};
|
|
64
|
-
const size: Size = {
|
|
65
|
-
width: 100,
|
|
66
|
-
height: 200,
|
|
67
|
-
};
|
|
68
|
-
appendOffsetOfLegend(emptyOffset, settings, size);
|
|
69
|
-
|
|
70
|
-
expect(emptyOffset).toEqual(clone);
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
it("should add extra space for a horizontal legend", () => {
|
|
74
|
-
const settings: LegendSettings = {
|
|
75
|
-
align: "left",
|
|
76
|
-
layout: "horizontal",
|
|
77
|
-
verticalAlign: "bottom",
|
|
78
|
-
itemSorter: "value",
|
|
79
|
-
};
|
|
80
|
-
const size: Size = {
|
|
81
|
-
width: 100,
|
|
82
|
-
height: 200,
|
|
83
|
-
};
|
|
84
|
-
const result = appendOffsetOfLegend(emptyOffset, settings, size);
|
|
85
|
-
expect(result).toEqual({ ...emptyOffset, bottom: 209 });
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
it("should add extra space for a vertical legend, center aligned", () => {
|
|
89
|
-
const settings: LegendSettings = {
|
|
90
|
-
align: "center",
|
|
91
|
-
layout: "vertical",
|
|
92
|
-
verticalAlign: "bottom",
|
|
93
|
-
itemSorter: "value",
|
|
94
|
-
};
|
|
95
|
-
const size: Size = {
|
|
96
|
-
width: 100,
|
|
97
|
-
height: 200,
|
|
98
|
-
};
|
|
99
|
-
const result = appendOffsetOfLegend(emptyOffset, settings, size);
|
|
100
|
-
expect(result).toEqual({ ...emptyOffset, bottom: 209 });
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
it("should do nothing for vertical legend with align: center", () => {
|
|
104
|
-
const settings: LegendSettings = {
|
|
105
|
-
align: "center",
|
|
106
|
-
layout: "vertical",
|
|
107
|
-
verticalAlign: "middle",
|
|
108
|
-
itemSorter: "value",
|
|
109
|
-
};
|
|
110
|
-
const size: Size = {
|
|
111
|
-
width: 100,
|
|
112
|
-
height: 200,
|
|
113
|
-
};
|
|
114
|
-
const result = appendOffsetOfLegend(emptyOffset, settings, size);
|
|
115
|
-
expect(result).toEqual(emptyOffset);
|
|
116
|
-
});
|
|
117
|
-
|
|
118
|
-
it("should add space for horizontal legend with verticalAlign: middle and align:left", () => {
|
|
119
|
-
const settings: LegendSettings = {
|
|
120
|
-
align: "left",
|
|
121
|
-
layout: "horizontal",
|
|
122
|
-
verticalAlign: "middle",
|
|
123
|
-
itemSorter: "value",
|
|
124
|
-
};
|
|
125
|
-
const size: Size = {
|
|
126
|
-
width: 100,
|
|
127
|
-
height: 200,
|
|
128
|
-
};
|
|
129
|
-
|
|
130
|
-
const result = appendOffsetOfLegend(emptyOffset, settings, size);
|
|
131
|
-
expect(result).toEqual({ ...emptyOffset, left: 105 });
|
|
132
|
-
});
|
|
133
|
-
});
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from "vitest";
|
|
2
|
-
import { getCateCoordinateOfLine } from "../../../src/util/ChartUtils";
|
|
3
|
-
import { RechartsScale } from "../../../src/util/scale/RechartsScale";
|
|
4
|
-
|
|
5
|
-
// @ts-expect-error incomplete mock data
|
|
6
|
-
const mockScale: RechartsScale = { map: (v: number) => v * 2 };
|
|
7
|
-
|
|
8
|
-
describe("getCateCoordinateOfLine", () => {
|
|
9
|
-
describe("numerical axis", () => {
|
|
10
|
-
it("should return null when passed empty params", () => {
|
|
11
|
-
// @ts-expect-error incomplete mock data
|
|
12
|
-
const actual = getCateCoordinateOfLine({
|
|
13
|
-
axis: { scale: mockScale },
|
|
14
|
-
});
|
|
15
|
-
expect(actual).toBeNull();
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
it("should return scaled value", () => {
|
|
19
|
-
// @ts-expect-error incomplete mock data
|
|
20
|
-
const actual = getCateCoordinateOfLine({
|
|
21
|
-
axis: { scale: mockScale },
|
|
22
|
-
entry: { x: 1 },
|
|
23
|
-
dataKey: "x",
|
|
24
|
-
});
|
|
25
|
-
expect(actual).toBe(2);
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
it("should use axis.dataKey if the root dataKey is undefined", () => {
|
|
29
|
-
// @ts-expect-error incomplete mock data
|
|
30
|
-
const actual = getCateCoordinateOfLine({
|
|
31
|
-
axis: { scale: mockScale, dataKey: "x" },
|
|
32
|
-
entry: { x: 1 },
|
|
33
|
-
});
|
|
34
|
-
expect(actual).toBe(2);
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
it("should use root dataKey if two dataKeys are defined", () => {
|
|
38
|
-
// @ts-expect-error incomplete mock data
|
|
39
|
-
const actual = getCateCoordinateOfLine({
|
|
40
|
-
axis: { scale: mockScale, dataKey: "x" },
|
|
41
|
-
entry: { x: 1, y: 3 },
|
|
42
|
-
dataKey: "y",
|
|
43
|
-
});
|
|
44
|
-
expect(actual).toBe(6);
|
|
45
|
-
});
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
describe("category axis", () => {
|
|
49
|
-
it("should return null if there are no ticks", () => {
|
|
50
|
-
// @ts-expect-error incomplete mock data
|
|
51
|
-
const actual = getCateCoordinateOfLine({
|
|
52
|
-
axis: { type: "category", scale: mockScale },
|
|
53
|
-
ticks: [],
|
|
54
|
-
});
|
|
55
|
-
expect(actual).toBeNull();
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
it("should return first tick coordinate with half of bandSize added, if axis.dataKey is undefined", () => {
|
|
59
|
-
// @ts-expect-error incomplete mock data
|
|
60
|
-
const actual = getCateCoordinateOfLine({
|
|
61
|
-
axis: { type: "category", scale: mockScale },
|
|
62
|
-
bandSize: 2,
|
|
63
|
-
index: 0,
|
|
64
|
-
ticks: [{ coordinate: 8, index: 0, value: "foo" }],
|
|
65
|
-
});
|
|
66
|
-
expect(actual).toBe(9);
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
it("should follow axis.dataKey -> ticks.value -> tick.coordinate and return that", () => {
|
|
70
|
-
// @ts-expect-error incomplete mock data
|
|
71
|
-
const actual = getCateCoordinateOfLine({
|
|
72
|
-
axis: { type: "category", dataKey: "foo", scale: mockScale },
|
|
73
|
-
bandSize: 4,
|
|
74
|
-
entry: { foo: "bar" },
|
|
75
|
-
ticks: [
|
|
76
|
-
{ coordinate: 8, index: 0, value: "foo" },
|
|
77
|
-
{ coordinate: 16, index: 1, value: "bar" },
|
|
78
|
-
],
|
|
79
|
-
});
|
|
80
|
-
expect(actual).toBe(18);
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
});
|
|
@@ -1,416 +0,0 @@
|
|
|
1
|
-
import type { Series, SeriesPoint } from "victory-vendor/d3-shape";
|
|
2
|
-
import { getStackedData, offsetSign } from "../../../src/util/ChartUtils";
|
|
3
|
-
import type { StackOffsetType } from "../../../src/util/types";
|
|
4
|
-
|
|
5
|
-
// Ported from recharts 3.8.1 test/util/ChartUtils/getStackedData.spec.ts.
|
|
6
|
-
// Deviation from the reference: array index accesses carry `!` and the
|
|
7
|
-
// function-form dataKeys are typed `(o: any)` to satisfy this port's stricter
|
|
8
|
-
// tsconfig (`noUncheckedIndexedAccess`) and `DataKey<unknown>` stack-key type.
|
|
9
|
-
|
|
10
|
-
export function createSeries(
|
|
11
|
-
key: string,
|
|
12
|
-
index: number,
|
|
13
|
-
data: Array<SeriesPoint<Record<string, unknown>>> = [],
|
|
14
|
-
): Series<Record<string, unknown>, string> {
|
|
15
|
-
return Object.assign(data, { key, index });
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export function createSeriesPoint(
|
|
19
|
-
first: number,
|
|
20
|
-
second: number,
|
|
21
|
-
data: Record<string, unknown>,
|
|
22
|
-
): SeriesPoint<Record<string, unknown>> {
|
|
23
|
-
return Object.assign([], { data, 0: first, 1: second });
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const mockData = [
|
|
27
|
-
{
|
|
28
|
-
name: "Page A",
|
|
29
|
-
uv: 590,
|
|
30
|
-
pv: 800,
|
|
31
|
-
amt: 1400,
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
name: "Page B",
|
|
35
|
-
uv: 868,
|
|
36
|
-
pv: 967,
|
|
37
|
-
amt: 1506,
|
|
38
|
-
},
|
|
39
|
-
];
|
|
40
|
-
|
|
41
|
-
const dataWithNegativeNumbers = [
|
|
42
|
-
{
|
|
43
|
-
name: "Page A",
|
|
44
|
-
uv: 4000,
|
|
45
|
-
pv: 2400,
|
|
46
|
-
amt: 2400,
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
name: "Page B",
|
|
50
|
-
uv: -3000,
|
|
51
|
-
pv: 1398,
|
|
52
|
-
amt: 2210,
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
name: "Page C",
|
|
56
|
-
uv: -2000,
|
|
57
|
-
pv: -9800,
|
|
58
|
-
amt: 2290,
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
name: "Page D",
|
|
62
|
-
uv: 2780,
|
|
63
|
-
pv: 3908,
|
|
64
|
-
amt: 2000,
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
name: "Page E",
|
|
68
|
-
uv: -1890,
|
|
69
|
-
pv: 4800,
|
|
70
|
-
amt: 2181,
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
name: "Page F",
|
|
74
|
-
uv: 2390,
|
|
75
|
-
pv: -3800,
|
|
76
|
-
amt: 2500,
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
name: "Page G",
|
|
80
|
-
uv: 3490,
|
|
81
|
-
pv: 4300,
|
|
82
|
-
amt: 2100,
|
|
83
|
-
},
|
|
84
|
-
];
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* If you see one of these tests failing with a message "serializes to the same string",
|
|
88
|
-
* that is because the d3-shape library assigns arbitrary property keys to an array.
|
|
89
|
-
*
|
|
90
|
-
* Jest doesn't like that. When it compares the two arrays it can see that it has extra property,
|
|
91
|
-
* and if that extra property is different then it fails.
|
|
92
|
-
* But when printing the array, it only prints the usual array elements, and ignores the extra properties.
|
|
93
|
-
* Therefore, the "serializes to the same string" problem.
|
|
94
|
-
*
|
|
95
|
-
* So when you see that error, try to compare the other properties, like `Series.key` and `SeriesPoint.data`.
|
|
96
|
-
* Or print them with console.log, that will show the difference.
|
|
97
|
-
*/
|
|
98
|
-
describe("getStackedData", () => {
|
|
99
|
-
it("should return empty array if there is no data", () => {
|
|
100
|
-
expect(getStackedData([], [], "none")).toEqual([]);
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
it("should return empty array if there is some data but no data keys", () => {
|
|
104
|
-
expect(getStackedData([{ x: 1 }], [], "none")).toEqual([]);
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
it("should return one empty array for each dataKey even if it is not part of the data", () => {
|
|
108
|
-
const result = getStackedData([], ["x", "y", "z"], "none");
|
|
109
|
-
const expected = [createSeries("x", 0), createSeries("y", 1), createSeries("z", 2)];
|
|
110
|
-
expect(result).toEqual(expected);
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
it("should return one empty array for each data key even if it is not part of the data", () => {
|
|
114
|
-
const result = getStackedData([], ["x", "y", "z"], "none");
|
|
115
|
-
const expected = [createSeries("x", 0), createSeries("y", 1), createSeries("z", 2)];
|
|
116
|
-
expect(result).toEqual(expected);
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
const allOffsets: StackOffsetType[] = [
|
|
120
|
-
"expand",
|
|
121
|
-
"none",
|
|
122
|
-
"positive",
|
|
123
|
-
"sign",
|
|
124
|
-
"silhouette",
|
|
125
|
-
"wiggle",
|
|
126
|
-
];
|
|
127
|
-
describe.each(allOffsets)("with offset %s", (offset) => {
|
|
128
|
-
it("should stack numerical data", () => {
|
|
129
|
-
const dataKeys = ["uv", "pv"];
|
|
130
|
-
const result = getStackedData(mockData, dataKeys, offset);
|
|
131
|
-
expect(result).toHaveLength(dataKeys.length);
|
|
132
|
-
result.forEach((series) => {
|
|
133
|
-
expect(series).toHaveLength(mockData.length);
|
|
134
|
-
series.forEach((point) => {
|
|
135
|
-
expect(point[0]).toEqual(expect.any(Number));
|
|
136
|
-
expect(point[1]).toEqual(expect.any(Number));
|
|
137
|
-
expect(point[0]).not.toBeNaN();
|
|
138
|
-
expect(point[1]).not.toBeNaN();
|
|
139
|
-
});
|
|
140
|
-
});
|
|
141
|
-
});
|
|
142
|
-
|
|
143
|
-
it("should stack data when dataKey is a function", () => {
|
|
144
|
-
const dataKeys = [(o: any) => o.uv + 100, (o: any) => o.pv - 100];
|
|
145
|
-
const result = getStackedData(mockData, dataKeys, offset);
|
|
146
|
-
expect(result).toHaveLength(dataKeys.length);
|
|
147
|
-
result.forEach((series) => {
|
|
148
|
-
expect(series).toHaveLength(mockData.length);
|
|
149
|
-
series.forEach((point) => {
|
|
150
|
-
expect(point[0]).toEqual(expect.any(Number));
|
|
151
|
-
expect(point[1]).toEqual(expect.any(Number));
|
|
152
|
-
expect(point[0]).not.toBeNaN();
|
|
153
|
-
expect(point[1]).not.toBeNaN();
|
|
154
|
-
});
|
|
155
|
-
});
|
|
156
|
-
});
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
it("should stack numerical data with offset: none", () => {
|
|
160
|
-
const result = getStackedData(mockData, ["uv", "pv"], "none");
|
|
161
|
-
const firstSeries = createSeries("uv", 0, [
|
|
162
|
-
createSeriesPoint(0, 590, mockData[0]!), // first bar is always from 0 to its value, 'uv' data point
|
|
163
|
-
createSeriesPoint(0, 868, mockData[1]!), // first bar is always from 0 to its value, 'uv' data point from second object
|
|
164
|
-
]);
|
|
165
|
-
const secondSeries = createSeries("pv", 1, [
|
|
166
|
-
createSeriesPoint(590, 1390, mockData[0]!), // second bar adds the 'pv' value on top of the 'uv' value 590 + 800 = 1390
|
|
167
|
-
createSeriesPoint(868, 1835, mockData[1]!), // second bar adds the 'pv' value on top of the 'uv' value 868 + 967 = 1835
|
|
168
|
-
]);
|
|
169
|
-
const expected = [firstSeries, secondSeries];
|
|
170
|
-
expect(result).toEqual(expected);
|
|
171
|
-
});
|
|
172
|
-
|
|
173
|
-
it("should stack numerical data with offset: sign", () => {
|
|
174
|
-
const result = getStackedData(dataWithNegativeNumbers, ["uv", "pv"], "sign");
|
|
175
|
-
const uvSeries = createSeries("uv", 0, [
|
|
176
|
-
createSeriesPoint(0, 4000, dataWithNegativeNumbers[0]!),
|
|
177
|
-
createSeriesPoint(0, -3000, dataWithNegativeNumbers[1]!),
|
|
178
|
-
createSeriesPoint(0, -2000, dataWithNegativeNumbers[2]!),
|
|
179
|
-
createSeriesPoint(0, 2780, dataWithNegativeNumbers[3]!),
|
|
180
|
-
createSeriesPoint(0, -1890, dataWithNegativeNumbers[4]!),
|
|
181
|
-
createSeriesPoint(0, 2390, dataWithNegativeNumbers[5]!),
|
|
182
|
-
createSeriesPoint(0, 3490, dataWithNegativeNumbers[6]!),
|
|
183
|
-
]);
|
|
184
|
-
const pvSeries = createSeries("pv", 1, [
|
|
185
|
-
createSeriesPoint(4000, 6400, dataWithNegativeNumbers[0]!),
|
|
186
|
-
createSeriesPoint(0, 1398, dataWithNegativeNumbers[1]!),
|
|
187
|
-
createSeriesPoint(-2000, -11800, dataWithNegativeNumbers[2]!),
|
|
188
|
-
createSeriesPoint(2780, 6688, dataWithNegativeNumbers[3]!),
|
|
189
|
-
createSeriesPoint(0, 4800, dataWithNegativeNumbers[4]!),
|
|
190
|
-
createSeriesPoint(0, -3800, dataWithNegativeNumbers[5]!),
|
|
191
|
-
createSeriesPoint(3490, 7790, dataWithNegativeNumbers[6]!),
|
|
192
|
-
]);
|
|
193
|
-
const expected = [uvSeries, pvSeries];
|
|
194
|
-
expect(result).toEqual(expected);
|
|
195
|
-
});
|
|
196
|
-
|
|
197
|
-
it("with offset: positive should ignore all negative data points", () => {
|
|
198
|
-
const dataKeys = ["uv", "pv"];
|
|
199
|
-
const result = getStackedData(dataWithNegativeNumbers, dataKeys, "positive");
|
|
200
|
-
const uvSeries = createSeries("uv", 0, [
|
|
201
|
-
createSeriesPoint(0, 4000, dataWithNegativeNumbers[0]!),
|
|
202
|
-
createSeriesPoint(0, 0, dataWithNegativeNumbers[1]!),
|
|
203
|
-
createSeriesPoint(0, 0, dataWithNegativeNumbers[2]!),
|
|
204
|
-
createSeriesPoint(0, 2780, dataWithNegativeNumbers[3]!),
|
|
205
|
-
createSeriesPoint(0, 0, dataWithNegativeNumbers[4]!),
|
|
206
|
-
createSeriesPoint(0, 2390, dataWithNegativeNumbers[5]!),
|
|
207
|
-
createSeriesPoint(0, 3490, dataWithNegativeNumbers[6]!),
|
|
208
|
-
]);
|
|
209
|
-
const pvSeries = createSeries("pv", 1, [
|
|
210
|
-
createSeriesPoint(4000, 6400, dataWithNegativeNumbers[0]!),
|
|
211
|
-
createSeriesPoint(0, 1398, dataWithNegativeNumbers[1]!),
|
|
212
|
-
createSeriesPoint(0, 0, dataWithNegativeNumbers[2]!),
|
|
213
|
-
createSeriesPoint(2780, 6688, dataWithNegativeNumbers[3]!),
|
|
214
|
-
createSeriesPoint(0, 4800, dataWithNegativeNumbers[4]!),
|
|
215
|
-
createSeriesPoint(0, 0, dataWithNegativeNumbers[5]!),
|
|
216
|
-
createSeriesPoint(3490, 7790, dataWithNegativeNumbers[6]!),
|
|
217
|
-
]);
|
|
218
|
-
const expected = [uvSeries, pvSeries];
|
|
219
|
-
expect(result).toEqual(expected);
|
|
220
|
-
});
|
|
221
|
-
|
|
222
|
-
it("should stack data when dataKey is a function with offset: none", () => {
|
|
223
|
-
const result = getStackedData(
|
|
224
|
-
mockData,
|
|
225
|
-
[(o: any) => o.uv + 100, (o: any) => o.pv - 100],
|
|
226
|
-
"none",
|
|
227
|
-
);
|
|
228
|
-
const firstSeries = createSeries("uv", 0, [
|
|
229
|
-
createSeriesPoint(0, 690, mockData[0]!),
|
|
230
|
-
createSeriesPoint(0, 968, mockData[1]!),
|
|
231
|
-
]);
|
|
232
|
-
const secondSeries = createSeries("pv", 1, [
|
|
233
|
-
createSeriesPoint(690, 1390, mockData[0]!),
|
|
234
|
-
createSeriesPoint(968, 1835, mockData[1]!),
|
|
235
|
-
]);
|
|
236
|
-
const expected = [firstSeries, secondSeries];
|
|
237
|
-
/*
|
|
238
|
-
* Direct comparison with .toEqual doesn't work because the `key` property is a function
|
|
239
|
-
* and jest always rejects when comparing functions.
|
|
240
|
-
*/
|
|
241
|
-
expect(result).toHaveLength(expected.length);
|
|
242
|
-
expect(result[0]).toHaveLength(firstSeries.length);
|
|
243
|
-
expect(result[1]).toHaveLength(secondSeries.length);
|
|
244
|
-
result[0]!.forEach((point, index) => {
|
|
245
|
-
expect(point).toEqual(firstSeries[index]);
|
|
246
|
-
});
|
|
247
|
-
result[1]!.forEach((point, index) => {
|
|
248
|
-
expect(point).toEqual(secondSeries[index]);
|
|
249
|
-
});
|
|
250
|
-
});
|
|
251
|
-
|
|
252
|
-
test("offset: positive should turn data that are not numbers to zero", () => {
|
|
253
|
-
const mockCategoryData = [
|
|
254
|
-
{
|
|
255
|
-
name: "x",
|
|
256
|
-
},
|
|
257
|
-
{
|
|
258
|
-
name: "y",
|
|
259
|
-
},
|
|
260
|
-
{
|
|
261
|
-
name: "z",
|
|
262
|
-
},
|
|
263
|
-
];
|
|
264
|
-
const result = getStackedData(mockCategoryData, ["x"], "positive");
|
|
265
|
-
const expected = [
|
|
266
|
-
createSeries("x", 0, [
|
|
267
|
-
createSeriesPoint(0, 0, mockCategoryData[0]!),
|
|
268
|
-
createSeriesPoint(0, 0, mockCategoryData[1]!),
|
|
269
|
-
createSeriesPoint(0, 0, mockCategoryData[2]!),
|
|
270
|
-
]),
|
|
271
|
-
];
|
|
272
|
-
expect(result).toEqual(expected);
|
|
273
|
-
});
|
|
274
|
-
|
|
275
|
-
test("offset: sign should turn data that are not numbers to zero", () => {
|
|
276
|
-
const mockCategoryData = [
|
|
277
|
-
{
|
|
278
|
-
name: "x",
|
|
279
|
-
},
|
|
280
|
-
{
|
|
281
|
-
name: "",
|
|
282
|
-
},
|
|
283
|
-
{
|
|
284
|
-
name: NaN,
|
|
285
|
-
},
|
|
286
|
-
{
|
|
287
|
-
name: function anon() {
|
|
288
|
-
return 0;
|
|
289
|
-
},
|
|
290
|
-
},
|
|
291
|
-
];
|
|
292
|
-
const result = getStackedData(mockCategoryData, ["x"], "sign");
|
|
293
|
-
const expected = [
|
|
294
|
-
createSeries("x", 0, [
|
|
295
|
-
createSeriesPoint(0, 0, mockCategoryData[0]!),
|
|
296
|
-
createSeriesPoint(0, 0, mockCategoryData[1]!),
|
|
297
|
-
createSeriesPoint(0, 0, mockCategoryData[2]!),
|
|
298
|
-
createSeriesPoint(0, 0, mockCategoryData[3]!),
|
|
299
|
-
]),
|
|
300
|
-
];
|
|
301
|
-
expect(result).toEqual(expected);
|
|
302
|
-
});
|
|
303
|
-
|
|
304
|
-
test("offsetSign should mutate data in place", () => {
|
|
305
|
-
const data = [
|
|
306
|
-
createSeries("", 0, [
|
|
307
|
-
createSeriesPoint(0, 1, {}),
|
|
308
|
-
createSeriesPoint(0, 2, {}),
|
|
309
|
-
createSeriesPoint(0, -5, {}),
|
|
310
|
-
]),
|
|
311
|
-
createSeries("", 1, [
|
|
312
|
-
createSeriesPoint(0, -1, {}),
|
|
313
|
-
createSeriesPoint(0, 2, {}),
|
|
314
|
-
createSeriesPoint(0, -5, {}),
|
|
315
|
-
]),
|
|
316
|
-
];
|
|
317
|
-
const expected = [
|
|
318
|
-
createSeries("", 0, [
|
|
319
|
-
createSeriesPoint(0, 1, {}),
|
|
320
|
-
createSeriesPoint(0, 2, {}),
|
|
321
|
-
createSeriesPoint(0, -5, {}),
|
|
322
|
-
]),
|
|
323
|
-
createSeries("", 1, [
|
|
324
|
-
createSeriesPoint(0, -1, {}),
|
|
325
|
-
createSeriesPoint(2, 4, {}),
|
|
326
|
-
createSeriesPoint(-5, -10, {}),
|
|
327
|
-
]),
|
|
328
|
-
];
|
|
329
|
-
offsetSign(data, []);
|
|
330
|
-
expect(data).toEqual(expected);
|
|
331
|
-
});
|
|
332
|
-
|
|
333
|
-
test("stacking numbers encoded as strings produces numbers", () => {
|
|
334
|
-
const data = [
|
|
335
|
-
{ name: "A", uv: "1", pv: "2" },
|
|
336
|
-
{ name: "B", uv: "3", pv: "4" },
|
|
337
|
-
];
|
|
338
|
-
const result = getStackedData(data, ["uv", "pv"], "none");
|
|
339
|
-
const expected = [
|
|
340
|
-
createSeries("uv", 0, [createSeriesPoint(0, 1, data[0]!), createSeriesPoint(0, 3, data[1]!)]),
|
|
341
|
-
createSeries("pv", 1, [createSeriesPoint(1, 3, data[0]!), createSeriesPoint(3, 7, data[1]!)]),
|
|
342
|
-
];
|
|
343
|
-
expect(result).toEqual(expected);
|
|
344
|
-
});
|
|
345
|
-
|
|
346
|
-
test("stacking strings that are not numbers produces NaN - this is a bug if you ask me, we should reject non-numerical data", () => {
|
|
347
|
-
const data = [
|
|
348
|
-
{ name: "A", uv: "a", pv: "b" },
|
|
349
|
-
{ name: "B", uv: "c", pv: "d" },
|
|
350
|
-
];
|
|
351
|
-
const result = getStackedData(data, ["uv", "pv"], "none");
|
|
352
|
-
const expected = [
|
|
353
|
-
createSeries("uv", 0, [
|
|
354
|
-
createSeriesPoint(0, NaN, data[0]!),
|
|
355
|
-
createSeriesPoint(0, NaN, data[1]!),
|
|
356
|
-
]),
|
|
357
|
-
createSeries("pv", 1, [
|
|
358
|
-
createSeriesPoint(0, NaN, data[0]!),
|
|
359
|
-
createSeriesPoint(0, NaN, data[1]!),
|
|
360
|
-
]),
|
|
361
|
-
];
|
|
362
|
-
expect(result).toEqual(expected);
|
|
363
|
-
});
|
|
364
|
-
|
|
365
|
-
it("should stack ranged data", () => {
|
|
366
|
-
const displayedData = [
|
|
367
|
-
{
|
|
368
|
-
key1: [100, 200],
|
|
369
|
-
key2: [150, 250],
|
|
370
|
-
key3: [200, 300],
|
|
371
|
-
},
|
|
372
|
-
{
|
|
373
|
-
key1: [120, 180],
|
|
374
|
-
key2: [130, 230],
|
|
375
|
-
key3: [170, 270],
|
|
376
|
-
},
|
|
377
|
-
{
|
|
378
|
-
key1: [90, 160],
|
|
379
|
-
key2: [110, 210],
|
|
380
|
-
key3: [140, 240],
|
|
381
|
-
},
|
|
382
|
-
{
|
|
383
|
-
key1: [80, 140],
|
|
384
|
-
key2: [100, 200],
|
|
385
|
-
key3: [130, 220],
|
|
386
|
-
},
|
|
387
|
-
];
|
|
388
|
-
const result = getStackedData(displayedData, ["key1", "key2", "key3"], "none");
|
|
389
|
-
const firstSeries = createSeries("key1", 0, [
|
|
390
|
-
createSeriesPoint(100, 200, displayedData[0]!), // with ranged data, first point is the range start, second point is the range end
|
|
391
|
-
createSeriesPoint(120, 180, displayedData[1]!), // and so on for each data point in the `key1` series
|
|
392
|
-
createSeriesPoint(90, 160, displayedData[2]!),
|
|
393
|
-
createSeriesPoint(80, 140, displayedData[3]!),
|
|
394
|
-
]);
|
|
395
|
-
const secondSeries = createSeries("key2", 1, [
|
|
396
|
-
/*
|
|
397
|
-
* Second series starts where the data defined it: key2: [150, 250]
|
|
398
|
-
* This means from 150 to 250! it will overlap the first bar - but this is a choice of the user.
|
|
399
|
-
*/
|
|
400
|
-
createSeriesPoint(150, 250, displayedData[0]!),
|
|
401
|
-
// likewise for all other data points
|
|
402
|
-
createSeriesPoint(130, 230, displayedData[1]!),
|
|
403
|
-
createSeriesPoint(110, 210, displayedData[2]!),
|
|
404
|
-
createSeriesPoint(100, 200, displayedData[3]!),
|
|
405
|
-
]);
|
|
406
|
-
const thirdSeries = createSeries("key3", 2, [
|
|
407
|
-
// the for the third series - it just follows the ranged data as is, does not attempt to stack on top of previous series
|
|
408
|
-
createSeriesPoint(200, 300, displayedData[0]!),
|
|
409
|
-
createSeriesPoint(170, 270, displayedData[1]!),
|
|
410
|
-
createSeriesPoint(140, 240, displayedData[2]!),
|
|
411
|
-
createSeriesPoint(130, 220, displayedData[3]!),
|
|
412
|
-
]);
|
|
413
|
-
const expected = [firstSeries, secondSeries, thirdSeries];
|
|
414
|
-
expect(result).toEqual(expected);
|
|
415
|
-
});
|
|
416
|
-
});
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import type { SeriesPoint } from "victory-vendor/d3-shape";
|
|
2
|
-
import { truncateByDomain } from "../../../src/util/ChartUtils";
|
|
3
|
-
|
|
4
|
-
function createMockSeriesPoint(val: [number, number]): SeriesPoint<Record<number, number>> {
|
|
5
|
-
// @ts-expect-error just can't make ts happy with custom properties on an array can I
|
|
6
|
-
const seriesPoint: SeriesPoint<Record<number, number>> = [...val];
|
|
7
|
-
seriesPoint.data = val;
|
|
8
|
-
return seriesPoint;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
describe("truncateByDomain", () => {
|
|
12
|
-
test.each([{ domain: [] }, { domain: [1] }, { domain: ["", ""] }])(
|
|
13
|
-
"should return value without change if domain is %o",
|
|
14
|
-
({ domain }) => {
|
|
15
|
-
const value = createMockSeriesPoint([1, 2]);
|
|
16
|
-
const result = truncateByDomain(value, domain as never);
|
|
17
|
-
expect(result).toBe(value);
|
|
18
|
-
expect(result).toEqual(createMockSeriesPoint([1, 2]));
|
|
19
|
-
},
|
|
20
|
-
);
|
|
21
|
-
|
|
22
|
-
it("should return value if it fits the domain", () => {
|
|
23
|
-
const value = createMockSeriesPoint([10, 20]);
|
|
24
|
-
const domain = [0, 30];
|
|
25
|
-
const result = truncateByDomain(value, domain);
|
|
26
|
-
expect(result).toEqual([10, 20]);
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
it("should return value if it same as the domain", () => {
|
|
30
|
-
const value = createMockSeriesPoint([10, 20]);
|
|
31
|
-
const domain = [10, 20];
|
|
32
|
-
const result = truncateByDomain(value, domain);
|
|
33
|
-
expect(result).toEqual([10, 20]);
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
it("should truncate when value overflows from both ends", () => {
|
|
37
|
-
const value = createMockSeriesPoint([0, 30]);
|
|
38
|
-
const domain = [10, 20];
|
|
39
|
-
const result = truncateByDomain(value, domain);
|
|
40
|
-
expect(result).toEqual([10, 20]);
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
it("should truncate when value is larger than domain", () => {
|
|
44
|
-
const value = createMockSeriesPoint([100, 300]);
|
|
45
|
-
const domain = [10, 20];
|
|
46
|
-
const result = truncateByDomain(value, domain);
|
|
47
|
-
expect(result).toEqual([20, 20]);
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
it("should truncate when value is smaller than domain", () => {
|
|
51
|
-
const value = createMockSeriesPoint([10, 20]);
|
|
52
|
-
const domain = [100, 200];
|
|
53
|
-
const result = truncateByDomain(value, domain);
|
|
54
|
-
expect(result).toEqual([100, 100]);
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
it("should not change value if domain has NaN in it", () => {
|
|
58
|
-
const value = createMockSeriesPoint([0, 30]);
|
|
59
|
-
const domain = [NaN, NaN];
|
|
60
|
-
const result = truncateByDomain(value, domain);
|
|
61
|
-
expect(result).toEqual(createMockSeriesPoint([0, 30]));
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
it("should return domain if value has NaN in it", () => {
|
|
65
|
-
const value = createMockSeriesPoint([NaN, NaN]);
|
|
66
|
-
const domain = [10, 20];
|
|
67
|
-
const result = truncateByDomain(value, domain);
|
|
68
|
-
expect(result).toEqual([10, 20]);
|
|
69
|
-
});
|
|
70
|
-
});
|