solid-recharts 0.1.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/NEXT_SESSION_PROMPT.md +114 -0
- package/package.json +28 -0
- package/src/animation/AnimatedItems.tsx +169 -0
- package/src/animation/AnimationController.ts +24 -0
- package/src/animation/AnimationControllerImpl.ts +37 -0
- package/src/animation/AnimationHandle.ts +273 -0
- package/src/animation/CSSTransitionAnimate.tsx +142 -0
- package/src/animation/JavascriptAnimate.tsx +107 -0
- package/src/animation/easing.ts +261 -0
- package/src/animation/matchBy.ts +211 -0
- package/src/animation/timeoutController.ts +51 -0
- package/src/animation/useAnimationController.tsx +31 -0
- package/src/animation/useAnimationStartSnapshot.ts +73 -0
- package/src/animation/util.ts +16 -0
- package/src/cartesian/Area.tsx +810 -0
- package/src/cartesian/AreaRevealShape.tsx +250 -0
- package/src/cartesian/Bar.tsx +1216 -0
- package/src/cartesian/BarStack.tsx +148 -0
- package/src/cartesian/Brush.tsx +653 -0
- package/src/cartesian/CartesianAxis.tsx +541 -0
- package/src/cartesian/CartesianGrid.tsx +605 -0
- package/src/cartesian/ErrorBar.tsx +319 -0
- package/src/cartesian/Funnel.tsx +594 -0
- package/src/cartesian/GraphicalItemClipPath.tsx +75 -0
- package/src/cartesian/Line.tsx +742 -0
- package/src/cartesian/LineDrawShape.tsx +190 -0
- package/src/cartesian/ReferenceArea.tsx +275 -0
- package/src/cartesian/ReferenceDot.tsx +286 -0
- package/src/cartesian/ReferenceLine.tsx +414 -0
- package/src/cartesian/RenderedTicksReporter.tsx +49 -0
- package/src/cartesian/Scatter.tsx +741 -0
- package/src/cartesian/XAxis.tsx +293 -0
- package/src/cartesian/YAxis.tsx +333 -0
- package/src/cartesian/ZAxis.tsx +80 -0
- package/src/cartesian/getCartesianPosition.ts +255 -0
- package/src/cartesian/getEquidistantTicks.ts +126 -0
- package/src/cartesian/getTicks.ts +225 -0
- package/src/cartesian/useAnimatedLineLength.ts +84 -0
- package/src/chart/AreaChart.tsx +30 -0
- package/src/chart/BarChart.tsx +27 -0
- package/src/chart/CartesianChart.tsx +91 -0
- package/src/chart/CategoricalChart.tsx +60 -0
- package/src/chart/ComposedChart.tsx +29 -0
- package/src/chart/FunnelChart.tsx +29 -0
- package/src/chart/LineChart.tsx +29 -0
- package/src/chart/PieChart.tsx +41 -0
- package/src/chart/PolarChart.tsx +97 -0
- package/src/chart/RadarChart.tsx +37 -0
- package/src/chart/RadialBarChart.tsx +39 -0
- package/src/chart/RechartsWrapper.tsx +486 -0
- package/src/chart/Sankey.tsx +992 -0
- package/src/chart/ScatterChart.tsx +29 -0
- package/src/chart/SunburstChart.tsx +394 -0
- package/src/chart/Treemap.tsx +874 -0
- package/src/chart/types.ts +37 -0
- package/src/component/ActivePoints.tsx +136 -0
- package/src/component/Cell.tsx +72 -0
- package/src/component/Cursor.tsx +249 -0
- package/src/component/Customized.tsx +8 -0
- package/src/component/DefaultLegendContent.tsx +205 -0
- package/src/component/DefaultTooltipContent.tsx +247 -0
- package/src/component/Dots.tsx +128 -0
- package/src/component/Label.tsx +507 -0
- package/src/component/LabelList.tsx +270 -0
- package/src/component/Legend.tsx +273 -0
- package/src/component/ResponsiveContainer.tsx +397 -0
- package/src/component/Text.tsx +436 -0
- package/src/component/Tooltip.tsx +309 -0
- package/src/component/TooltipBoundingBox.tsx +152 -0
- package/src/component/responsiveContainerUtils.ts +128 -0
- package/src/container/ClipPathProvider.tsx +40 -0
- package/src/container/Layer.tsx +38 -0
- package/src/container/RootSurface.tsx +124 -0
- package/src/container/Surface.tsx +70 -0
- package/src/context/ErrorBarContext.tsx +85 -0
- package/src/context/PanoramaContext.tsx +13 -0
- package/src/context/RegisterGraphicalItemId.tsx +41 -0
- package/src/context/accessibilityContext.tsx +10 -0
- package/src/context/brushUpdateContext.ts +14 -0
- package/src/context/chartDataContext.tsx +79 -0
- package/src/context/chartLayoutContext.tsx +158 -0
- package/src/context/legendPayloadContext.ts +11 -0
- package/src/context/legendPortalContext.ts +11 -0
- package/src/context/tooltipContext.ts +72 -0
- package/src/context/tooltipPortalContext.ts +14 -0
- package/src/context/useTooltipAxis.ts +24 -0
- package/src/hooks.ts +312 -0
- package/src/index.ts +288 -0
- package/src/polar/Pie.tsx +912 -0
- package/src/polar/PolarAngleAxis.tsx +494 -0
- package/src/polar/PolarGrid.tsx +269 -0
- package/src/polar/PolarRadiusAxis.tsx +422 -0
- package/src/polar/Radar.tsx +652 -0
- package/src/polar/RadialBar.tsx +767 -0
- package/src/polar/defaultPolarAngleAxisProps.tsx +33 -0
- package/src/polar/defaultPolarRadiusAxisProps.tsx +28 -0
- package/src/shape/Cross.tsx +83 -0
- package/src/shape/Curve.tsx +335 -0
- package/src/shape/Dot.tsx +49 -0
- package/src/shape/Polygon.tsx +168 -0
- package/src/shape/Rectangle.tsx +301 -0
- package/src/shape/Sector.tsx +304 -0
- package/src/shape/Symbols.tsx +144 -0
- package/src/shape/Trapezoid.tsx +228 -0
- package/src/state/RechartsReduxContext.tsx +8 -0
- package/src/state/RechartsStoreContext.ts +15 -0
- package/src/state/RechartsStoreProvider.tsx +27 -0
- package/src/state/ReportChartProps.tsx +19 -0
- package/src/state/ReportEventSettings.tsx +19 -0
- package/src/state/ReportMainChartProps.tsx +35 -0
- package/src/state/ReportPolarOptions.tsx +28 -0
- package/src/state/SetLegendPayload.ts +50 -0
- package/src/state/SetTooltipEntrySettings.tsx +46 -0
- package/src/state/brushSlice.ts +60 -0
- package/src/state/cartesianAxisSlice.ts +288 -0
- package/src/state/chartDataSlice.ts +115 -0
- package/src/state/errorBarSlice.ts +84 -0
- package/src/state/eventSettingsSlice.ts +41 -0
- package/src/state/externalEventsMiddleware.ts +136 -0
- package/src/state/graphicalItemsSlice.ts +162 -0
- package/src/state/hooks.ts +42 -0
- package/src/state/keyboardEventsMiddleware.ts +213 -0
- package/src/state/layoutSlice.ts +71 -0
- package/src/state/legendSlice.ts +107 -0
- package/src/state/mouseEventsMiddleware.ts +103 -0
- package/src/state/optionsSlice.ts +64 -0
- package/src/state/polarAxisSlice.ts +65 -0
- package/src/state/polarOptionsSlice.ts +54 -0
- package/src/state/reduxDevtoolsJsonStringifyReplacer.ts +15 -0
- package/src/state/referenceElementsSlice.ts +121 -0
- package/src/state/renderedTicksSlice.ts +61 -0
- package/src/state/rootPropsSlice.ts +70 -0
- package/src/state/selectors/areaSelectors.ts +169 -0
- package/src/state/selectors/arrayEqualityCheck.ts +8 -0
- package/src/state/selectors/axisSelectors.ts +2196 -0
- package/src/state/selectors/barSelectors.ts +319 -0
- package/src/state/selectors/barStackSelectors.ts +79 -0
- package/src/state/selectors/brushSelectors.ts +40 -0
- package/src/state/selectors/combiners/combineActiveLabel.ts +21 -0
- package/src/state/selectors/combiners/combineActiveTooltipIndex.ts +93 -0
- package/src/state/selectors/combiners/combineAllBarPositions.ts +131 -0
- package/src/state/selectors/combiners/combineAxisRangeWithReverse.ts +17 -0
- package/src/state/selectors/combiners/combineBarPosition.ts +24 -0
- package/src/state/selectors/combiners/combineBarSizeList.ts +75 -0
- package/src/state/selectors/combiners/combineCheckedDomain.ts +49 -0
- package/src/state/selectors/combiners/combineConfiguredScale.ts +121 -0
- package/src/state/selectors/combiners/combineCoordinateForDefaultIndex.ts +43 -0
- package/src/state/selectors/combiners/combineDisplayedStackedData.ts +50 -0
- package/src/state/selectors/combiners/combineInverseScaleFunction.ts +17 -0
- package/src/state/selectors/combiners/combineRealScaleType.ts +48 -0
- package/src/state/selectors/combiners/combineStackedData.ts +28 -0
- package/src/state/selectors/combiners/combineTooltipInteractionState.ts +86 -0
- package/src/state/selectors/combiners/combineTooltipPayload.ts +203 -0
- package/src/state/selectors/combiners/combineTooltipPayloadConfigurations.ts +45 -0
- package/src/state/selectors/containerSelectors.ts +12 -0
- package/src/state/selectors/dataSelectors.ts +90 -0
- package/src/state/selectors/funnelSelectors.ts +83 -0
- package/src/state/selectors/graphicalItemSelectors.ts +23 -0
- package/src/state/selectors/legendSelectors.ts +29 -0
- package/src/state/selectors/lineSelectors.ts +111 -0
- package/src/state/selectors/numberDomainEqualityCheck.ts +8 -0
- package/src/state/selectors/pickAxisId.ts +6 -0
- package/src/state/selectors/pickAxisType.ts +4 -0
- package/src/state/selectors/pieSelectors.ts +103 -0
- package/src/state/selectors/polarAxisSelectors.ts +202 -0
- package/src/state/selectors/polarGridSelectors.ts +24 -0
- package/src/state/selectors/polarScaleSelectors.ts +149 -0
- package/src/state/selectors/polarSelectors.ts +211 -0
- package/src/state/selectors/radarSelectors.ts +152 -0
- package/src/state/selectors/radialBarSelectors.ts +328 -0
- package/src/state/selectors/rootPropsSelectors.ts +36 -0
- package/src/state/selectors/scatterSelectors.ts +77 -0
- package/src/state/selectors/selectAllAxes.ts +10 -0
- package/src/state/selectors/selectChartOffset.ts +15 -0
- package/src/state/selectors/selectChartOffsetInternal.ts +111 -0
- package/src/state/selectors/selectPlotArea.ts +27 -0
- package/src/state/selectors/selectTooltipAxisId.ts +6 -0
- package/src/state/selectors/selectTooltipAxisType.ts +33 -0
- package/src/state/selectors/selectTooltipEventType.ts +45 -0
- package/src/state/selectors/selectTooltipPayloadSearcher.ts +7 -0
- package/src/state/selectors/selectTooltipSettings.ts +6 -0
- package/src/state/selectors/selectTooltipState.ts +5 -0
- package/src/state/selectors/tooltipSelectors.ts +690 -0
- package/src/state/selectors/touchSelectors.ts +29 -0
- package/src/state/store.ts +167 -0
- package/src/state/tooltipSlice.ts +289 -0
- package/src/state/types/AreaSettings.ts +17 -0
- package/src/state/types/BarSettings.ts +16 -0
- package/src/state/types/LineSettings.ts +12 -0
- package/src/state/types/PieSettings.ts +32 -0
- package/src/state/types/RadarSettings.ts +6 -0
- package/src/state/types/RadialBarSettings.ts +10 -0
- package/src/state/types/ScatterSettings.ts +13 -0
- package/src/state/types/StackedGraphicalItem.ts +33 -0
- package/src/state/unregisterOnCleanup.ts +26 -0
- package/src/state/zIndexSlice.ts +128 -0
- package/src/synchronisation/syncRegistry.ts +131 -0
- package/src/synchronisation/syncSelectors.ts +7 -0
- package/src/synchronisation/types.ts +42 -0
- package/src/synchronisation/useChartSynchronisation.tsx +372 -0
- package/src/types.ts +39 -0
- package/src/util/ActiveShapeUtils.tsx +80 -0
- package/src/util/BarUtils.tsx +74 -0
- package/src/util/CartesianUtils.ts +53 -0
- package/src/util/ChartUtils.ts +696 -0
- package/src/util/Constants.ts +42 -0
- package/src/util/CssPrefixUtils.ts +24 -0
- package/src/util/DOMUtils.ts +141 -0
- package/src/util/DataUtils.ts +205 -0
- package/src/util/FunnelUtils.tsx +37 -0
- package/src/util/Global.ts +15 -0
- package/src/util/IfOverflow.ts +17 -0
- package/src/util/LRUCache.ts +46 -0
- package/src/util/LogUtils.ts +26 -0
- package/src/util/PolarUtils.ts +134 -0
- package/src/util/RadialBarUtils.tsx +35 -0
- package/src/util/ReduceCSSCalc.ts +186 -0
- package/src/util/ShallowEqual.ts +43 -0
- package/src/util/TickUtils.ts +61 -0
- package/src/util/YAxisUtils.ts +49 -0
- package/src/util/adaptEventHandlers.ts +69 -0
- package/src/util/axisPropsAreEqual.ts +42 -0
- package/src/util/collectionUtils.ts +83 -0
- package/src/util/createCartesianCharts.tsx +101 -0
- package/src/util/createEventProxy.ts +24 -0
- package/src/util/createPolarCharts.tsx +86 -0
- package/src/util/cursor/getCursorPoints.ts +48 -0
- package/src/util/cursor/getCursorRectangle.ts +31 -0
- package/src/util/cursor/getRadialCursorPoints.ts +34 -0
- package/src/util/excludeEventProps.ts +172 -0
- package/src/util/getActiveCoordinate.ts +205 -0
- package/src/util/getAxisTypeBasedOnLayout.ts +21 -0
- package/src/util/getEveryNth.ts +30 -0
- package/src/util/getRadiusAndStrokeWidthFromDot.ts +35 -0
- package/src/util/getRelativeCoordinate.ts +84 -0
- package/src/util/getSliced.ts +21 -0
- package/src/util/isDomainSpecifiedByUser.ts +217 -0
- package/src/util/isWellBehavedNumber.ts +10 -0
- package/src/util/objectPath.ts +129 -0
- package/src/util/payload/getUniqPayload.ts +31 -0
- package/src/util/propsAreEqual.ts +137 -0
- package/src/util/resolveDefaultProps.tsx +8 -0
- package/src/util/round.ts +35 -0
- package/src/util/scale/CartesianScaleHelper.ts +72 -0
- package/src/util/scale/CustomScaleDefinition.ts +82 -0
- package/src/util/scale/RechartsScale.ts +131 -0
- package/src/util/scale/createCategoricalInverse.ts +83 -0
- package/src/util/scale/getNiceTickValues.ts +334 -0
- package/src/util/scale/index.ts +3 -0
- package/src/util/scale/util/DecimalLite.ts +194 -0
- package/src/util/scale/util/arithmetic.ts +56 -0
- package/src/util/stacks/getStackSeriesIdentifier.ts +20 -0
- package/src/util/stacks/stackTypes.ts +53 -0
- package/src/util/svgPropertiesAndEvents.ts +84 -0
- package/src/util/svgPropertiesNoEvents.ts +520 -0
- package/src/util/tooltip/translate.ts +179 -0
- package/src/util/typedDataKey.ts +8 -0
- package/src/util/types.ts +724 -0
- package/src/util/useAnimationId.tsx +31 -0
- package/src/util/useElementOffset.ts +164 -0
- package/src/util/useId.ts +20 -0
- package/src/util/usePrefersReducedMotion.ts +44 -0
- package/src/util/useUniqueId.ts +34 -0
- package/src/zIndex/DefaultZIndexes.tsx +87 -0
- package/src/zIndex/ZIndexLayer.tsx +126 -0
- package/src/zIndex/ZIndexPortal.tsx +69 -0
- package/src/zIndex/getZIndexFromUnknown.tsx +17 -0
- package/src/zIndex/zIndexSelectors.ts +46 -0
- package/test/_data.ts +408 -0
- package/test/animation/AnimationController.typed.spec.ts +53 -0
- package/test/animation/AnimationControllerImpl.spec.ts +271 -0
- package/test/animation/CSSTransitionAnimate.timing.spec.tsx +473 -0
- package/test/animation/JavascriptAnimate.spec.tsx +62 -0
- package/test/animation/RechartsAnimation.spec.ts +636 -0
- package/test/animation/easing.spec.ts +218 -0
- package/test/animation/legacyAnimationLengthChange.spec.tsx +803 -0
- package/test/animation/matchBy.spec.ts +467 -0
- package/test/animation/mockAnimationController.ts +40 -0
- package/test/animation/mockControllerAnimationManager.ts +143 -0
- package/test/animation/mockTimeoutController.ts +114 -0
- package/test/animation/timeoutController.spec.ts +138 -0
- package/test/animation/useAnimationStartSnapshot.spec.ts +147 -0
- package/test/animation/util.spec.ts +28 -0
- package/test/cartesian/Area.animation.spec.tsx +363 -0
- package/test/cartesian/Area.range.spec.tsx +54 -0
- package/test/cartesian/Area.spec.tsx +1202 -0
- package/test/cartesian/Area.stacked.render.spec.tsx +69 -0
- package/test/cartesian/Area.typed.spec.tsx +209 -0
- package/test/cartesian/Axis.integration.spec.tsx +158 -0
- package/test/cartesian/Bar/Bar.csstransition.spec.tsx +299 -0
- package/test/cartesian/Bar/Bar.spec.tsx +2314 -0
- package/test/cartesian/Bar/Bar.typed.spec.tsx +192 -0
- package/test/cartesian/Bar.animation.spec.tsx +426 -0
- package/test/cartesian/Bar.stackDomain.spec.tsx +66 -0
- package/test/cartesian/Bar.stacked.render.spec.tsx +53 -0
- package/test/cartesian/Bar.truncateByDomain.spec.tsx +237 -0
- package/test/cartesian/Bar.zeroDimensionFiltering.spec.tsx +336 -0
- package/test/cartesian/BarStack.spec.tsx +91 -0
- package/test/cartesian/Brush.keyboard.spec.tsx +88 -0
- package/test/cartesian/Brush.panorama.spec.tsx +41 -0
- package/test/cartesian/Brush.props.spec.tsx +63 -0
- package/test/cartesian/Brush.render.spec.tsx +117 -0
- package/test/cartesian/Brush.spec.tsx +522 -0
- package/test/cartesian/Brush.stacked.spec.tsx +221 -0
- package/test/cartesian/CartesianAxis.render.spec.tsx +50 -0
- package/test/cartesian/CartesianAxis.spec.tsx +396 -0
- package/test/cartesian/CartesianGrid.render.spec.tsx +39 -0
- package/test/cartesian/CartesianGrid.spec.tsx +2103 -0
- package/test/cartesian/ErrorBar.render.spec.tsx +69 -0
- package/test/cartesian/ErrorBar.spec.tsx +2414 -0
- package/test/cartesian/Funnel.animation.spec.tsx +241 -0
- package/test/cartesian/Funnel.spec.tsx +226 -0
- package/test/cartesian/Funnel.typed.spec.tsx +221 -0
- package/test/cartesian/GraphicalItemClipPath.scale-behavior.spec.tsx +627 -0
- package/test/cartesian/GraphicalItemClipPath.spec.tsx +427 -0
- package/test/cartesian/Line.animation.spec.tsx +643 -0
- package/test/cartesian/Line.sparseAnimationPath.spec.tsx +98 -0
- package/test/cartesian/Line.spec.tsx +471 -0
- package/test/cartesian/Line.typed.spec.tsx +152 -0
- package/test/cartesian/ReferenceArea.render.spec.tsx +63 -0
- package/test/cartesian/ReferenceArea.spec.tsx +663 -0
- package/test/cartesian/ReferenceArea.typed.spec.tsx +74 -0
- package/test/cartesian/ReferenceDot.render.spec.tsx +55 -0
- package/test/cartesian/ReferenceDot.spec.tsx +462 -0
- package/test/cartesian/ReferenceDot.typed.spec.tsx +76 -0
- package/test/cartesian/ReferenceLine/ReferenceLine.panorama.spec.tsx +184 -0
- package/test/cartesian/ReferenceLine/ReferenceLine.spec.tsx +744 -0
- package/test/cartesian/ReferenceLine/ReferenceLine.typed.spec.tsx +74 -0
- package/test/cartesian/ReferenceLine/getEndPoints.spec.ts +399 -0
- package/test/cartesian/ReferenceLine.render.spec.tsx +134 -0
- package/test/cartesian/Scatter.animation.spec.tsx +381 -0
- package/test/cartesian/Scatter.render.spec.tsx +61 -0
- package/test/cartesian/Scatter.spec.tsx +406 -0
- package/test/cartesian/Scatter.typed.spec.tsx +153 -0
- package/test/cartesian/XAxis/XAxis.barSize.spec.tsx +336 -0
- package/test/cartesian/XAxis/XAxis.brush.spec.tsx +266 -0
- package/test/cartesian/XAxis/XAxis.categorydomain.spec.tsx +872 -0
- package/test/cartesian/XAxis/XAxis.dataKey.spec.tsx +86 -0
- package/test/cartesian/XAxis/XAxis.datatypes.spec.tsx +127 -0
- package/test/cartesian/XAxis/XAxis.hide.spec.tsx +106 -0
- package/test/cartesian/XAxis/XAxis.multiaxis.spec.tsx +336 -0
- package/test/cartesian/XAxis/XAxis.numberdomain.spec.tsx +1466 -0
- package/test/cartesian/XAxis/XAxis.padding.spec.tsx +758 -0
- package/test/cartesian/XAxis/XAxis.padding_clip.spec.tsx +65 -0
- package/test/cartesian/XAxis/XAxis.state.spec.tsx +355 -0
- package/test/cartesian/XAxis/XAxis.tick.spec.tsx +493 -0
- package/test/cartesian/XAxis/XAxis.timescale.spec.tsx +233 -0
- package/test/cartesian/XAxis/XAxis.type.spec.tsx +107 -0
- package/test/cartesian/XAxis/XAxis.typed.spec.tsx +102 -0
- package/test/cartesian/XAxis/XAxis.vertical.spec.tsx +265 -0
- package/test/cartesian/XAxis.tickFormatter.spec.tsx +54 -0
- package/test/cartesian/YAxis/YAxis.7362.derivedDomain.spec.tsx +230 -0
- package/test/cartesian/YAxis/YAxis.7362.spec.tsx +104 -0
- package/test/cartesian/YAxis/YAxis.interval-zero.spec.tsx +88 -0
- package/test/cartesian/YAxis/YAxis.label.spec.tsx +219 -0
- package/test/cartesian/YAxis/YAxis.spec.tsx +1595 -0
- package/test/cartesian/YAxis/YAxis.tick.spec.tsx +428 -0
- package/test/cartesian/YAxis/YAxis.tickFormatter.spec.tsx +54 -0
- package/test/cartesian/YAxis/YAxis.ticks.spec.tsx +263 -0
- package/test/cartesian/YAxis/YAxis.type.spec.tsx +107 -0
- package/test/cartesian/YAxis/YAxis.typed.spec.tsx +102 -0
- package/test/cartesian/ZAxis.spec.tsx +300 -0
- package/test/cartesian/ZAxis.typed.spec.tsx +33 -0
- package/test/cartesian/__snapshots__/Brush.spec.tsx.snap +5 -0
- package/test/cartesian/axisLineAndStroke.spec.tsx +72 -0
- package/test/cartesian/getCartesianPosition.spec.ts +907 -0
- package/test/cartesian/getEquidistantTicks.spec.ts +88 -0
- package/test/cartesian/getTicks.spec.ts +378 -0
- package/test/cartesian/miscFeatureGaps.spec.tsx +89 -0
- package/test/cartesian/useAnimatedLineLength.spec.ts +168 -0
- package/test/chart/AccessibilityLayer.spec.tsx +569 -0
- package/test/chart/AccessibilityScans.spec.tsx +286 -0
- package/test/chart/AreaChart.spec.tsx +409 -0
- package/test/chart/AreaChart.stacked.spec.tsx +1407 -0
- package/test/chart/AreaChart.typed.spec.tsx +39 -0
- package/test/chart/BarChart.spec.tsx +3719 -0
- package/test/chart/BarChart.typed.spec.tsx +60 -0
- package/test/chart/CategoricalChart.spec.tsx +255 -0
- package/test/chart/ComposedChart.spec.tsx +199 -0
- package/test/chart/ComposedChart.typed.spec.tsx +39 -0
- package/test/chart/FunnelChart.spec.tsx +215 -0
- package/test/chart/FunnelChart.typed.spec.tsx +39 -0
- package/test/chart/LineChart.multiseries.spec.tsx +50 -0
- package/test/chart/LineChart.smoke.spec.tsx +50 -0
- package/test/chart/LineChart.spec.tsx +930 -0
- package/test/chart/LineChart.typed.spec.tsx +39 -0
- package/test/chart/NicheChartTooltip.spec.tsx +81 -0
- package/test/chart/PieChart.spec.tsx +793 -0
- package/test/chart/PieChart.typed.spec.tsx +39 -0
- package/test/chart/RadarChart.spec.tsx +530 -0
- package/test/chart/RadarChart.typed.spec.tsx +39 -0
- package/test/chart/RadialBarChart.5966.spec.tsx +48 -0
- package/test/chart/RadialBarChart.spec.tsx +679 -0
- package/test/chart/RadialBarChart.typed.spec.tsx +39 -0
- package/test/chart/RechartsWrapper.spec.tsx +83 -0
- package/test/chart/Sankey.content.spec.tsx +46 -0
- package/test/chart/Sankey.spec.tsx +952 -0
- package/test/chart/Sankey.typed.spec.tsx +29 -0
- package/test/chart/ScatterChart.spec.tsx +2613 -0
- package/test/chart/ScatterChart.typed.spec.tsx +39 -0
- package/test/chart/SunburstChart.spec.tsx +146 -0
- package/test/chart/Treemap.animation.spec.tsx +52 -0
- package/test/chart/Treemap.spec.tsx +1003 -0
- package/test/chart/Treemap.typed.spec.tsx +26 -0
- package/test/chart/chartEvents.spec.tsx +127 -0
- package/test/chart/responsive.spec.tsx +620 -0
- package/test/component/Cell.render.spec.tsx +155 -0
- package/test/component/Cell.spec.tsx +12 -0
- package/test/component/Cursor.spec.tsx +186 -0
- package/test/component/DefaultTooltipContent.spec.tsx +102 -0
- package/test/component/Label.render.spec.tsx +63 -0
- package/test/component/Label.spec.tsx +686 -0
- package/test/component/Label.typed.spec.tsx +46 -0
- package/test/component/LabelList.spec.tsx +188 -0
- package/test/component/Legend.itemSorter.spec.tsx +704 -0
- package/test/component/Legend.render.spec.tsx +92 -0
- package/test/component/Legend.spec.tsx +2213 -0
- package/test/component/Legend.typed.spec.tsx +22 -0
- package/test/component/ResponsiveContainer.spec.tsx +523 -0
- package/test/component/ResponsiveContainerDataTest.spec.tsx +51 -0
- package/test/component/Text.spec.tsx +415 -0
- package/test/component/Text.typed.spec.tsx +46 -0
- package/test/component/Tooltip/ActiveDot.spec.tsx +370 -0
- package/test/component/Tooltip/Tooltip.animation.spec.tsx +209 -0
- package/test/component/Tooltip/Tooltip.content.spec.tsx +128 -0
- package/test/component/Tooltip/Tooltip.formatter.spec.tsx +152 -0
- package/test/component/Tooltip/Tooltip.includeHidden.spec.tsx +79 -0
- package/test/component/Tooltip/Tooltip.multipleDataArrays.spec.tsx +165 -0
- package/test/component/Tooltip/Tooltip.offset.spec.tsx +113 -0
- package/test/component/Tooltip/Tooltip.state.spec.tsx +74 -0
- package/test/component/Tooltip/Tooltip.sync.spec.tsx +639 -0
- package/test/component/Tooltip/defaultIndex.spec.tsx +227 -0
- package/test/component/Tooltip/graphicalItem.formatter.spec.tsx +138 -0
- package/test/component/Tooltip/itemSorter.spec.tsx +2815 -0
- package/test/component/Tooltip/tooltipEventType.spec.tsx +344 -0
- package/test/component/Tooltip/tooltipMouseHoverSelectors.ts +41 -0
- package/test/component/Tooltip/tooltipTestHelpers.tsx +162 -0
- package/test/component/Tooltip.defaultIndex.spec.tsx +48 -0
- package/test/component/Tooltip.hover.spec.tsx +61 -0
- package/test/component/Tooltip.item.spec.tsx +54 -0
- package/test/component/Tooltip.keyboard.spec.tsx +51 -0
- package/test/component/Tooltip.payload.spec.tsx +1716 -0
- package/test/component/Tooltip.touch.spec.tsx +39 -0
- package/test/component/Tooltip.visibility.spec.tsx +1889 -0
- package/test/component/TooltipBoundingBox.spec.tsx +89 -0
- package/test/component/responsiveContainerUtils.spec.ts +205 -0
- package/test/container/ClipPath.spec.tsx +602 -0
- package/test/container/chartDimensions.spec.tsx +368 -0
- package/test/context/chartLayoutContext.spec.tsx +378 -0
- package/test/helper/ExpectAxisDomain.tsx +27 -0
- package/test/helper/assertNotNull.ts +6 -0
- package/test/helper/assertZIndexLayerOrder.ts +19 -0
- package/test/helper/createSelectorTestCase.tsx +176 -0
- package/test/helper/expectAnimatedPieAngles.ts +100 -0
- package/test/helper/expectAnimatedPiePaths.ts +78 -0
- package/test/helper/expectAreaCurve.ts +15 -0
- package/test/helper/expectAxisTicks.ts +48 -0
- package/test/helper/expectBars.ts +54 -0
- package/test/helper/expectFunctionReturning.ts +58 -0
- package/test/helper/expectLabel.ts +32 -0
- package/test/helper/expectLastCalledWith.ts +48 -0
- package/test/helper/expectLine.ts +20 -0
- package/test/helper/expectPieSectors.ts +80 -0
- package/test/helper/expectScale.ts +37 -0
- package/test/helper/expectScatterPoints.ts +52 -0
- package/test/helper/expectStackGroups.ts +144 -0
- package/test/helper/mockAxes.ts +22 -0
- package/test/helper/mockGetBoundingClientRect.ts +66 -0
- package/test/helper/mockHTMLElementProperty.ts +19 -0
- package/test/helper/mockTouchingElement.ts +27 -0
- package/test/helper/offsetHelpers.ts +19 -0
- package/test/helper/parameterizedTestCases.tsx +99 -0
- package/test/helper/produceState.ts +32 -0
- package/test/helper/render.ts +7 -0
- package/test/helper/selectorTestHelpers.tsx +63 -0
- package/test/helper/trim.spec.ts +35 -0
- package/test/helper/trim.ts +11 -0
- package/test/hooks/useActiveTooltipDataPoints.spec.tsx +358 -0
- package/test/hooks/useAxisDomain.spec.tsx +361 -0
- package/test/hooks/useAxisScale.spec.tsx +283 -0
- package/test/hooks/useAxisTicks.spec.tsx +130 -0
- package/test/hooks/useOffset.spec.tsx +248 -0
- package/test/hooks/useTooltipStateHooks.spec.tsx +109 -0
- package/test/polar/Pie/Pie-TwoLevelPieChart.spec.tsx +135 -0
- package/test/polar/Pie/Pie.spec.tsx +784 -0
- package/test/polar/Pie/Pie.typed.spec.tsx +78 -0
- package/test/polar/Pie.animation.spec.tsx +529 -0
- package/test/polar/PieWithLegend.animation.spec.tsx +142 -0
- package/test/polar/PolarAngleAxis/PolarAngleAxis.events.spec.tsx +76 -0
- package/test/polar/PolarAngleAxis/PolarAngleAxis.spec.tsx +2079 -0
- package/test/polar/PolarAngleAxis/PolarAngleAxis.typed.spec.tsx +102 -0
- package/test/polar/PolarAngleAxis.render.spec.tsx +79 -0
- package/test/polar/PolarGrid.render.spec.tsx +75 -0
- package/test/polar/PolarGrid.spec.tsx +918 -0
- package/test/polar/PolarLegendPerRow.render.spec.tsx +85 -0
- package/test/polar/PolarRadiusAxis.events.spec.tsx +65 -0
- package/test/polar/PolarRadiusAxis.render.spec.tsx +52 -0
- package/test/polar/PolarRadiusAxis.spec.tsx +991 -0
- package/test/polar/PolarRadiusAxis.typed.spec.tsx +84 -0
- package/test/polar/PolarTooltipLegend.render.spec.tsx +80 -0
- package/test/polar/Radar.animation.spec.tsx +570 -0
- package/test/polar/Radar.render.spec.tsx +71 -0
- package/test/polar/Radar.spec.tsx +265 -0
- package/test/polar/Radar.typed.spec.tsx +119 -0
- package/test/polar/RadialBar/RadialBar.spec.tsx +1521 -0
- package/test/polar/RadialBar/RadialBar.typed.spec.tsx +132 -0
- package/test/polar/RadialBar.animation.spec.tsx +375 -0
- package/test/polar/RadialBar.render.spec.tsx +66 -0
- package/test/polar/RadialBar.stacked.spec.tsx +57 -0
- package/test/setup.ts +84 -0
- package/test/shape/ActiveShape.spec.tsx +181 -0
- package/test/shape/Cross.spec.tsx +60 -0
- package/test/shape/Cross.typed.spec.tsx +26 -0
- package/test/shape/Curve.spec.tsx +368 -0
- package/test/shape/Curve.typed.spec.tsx +69 -0
- package/test/shape/Dot.spec.tsx +73 -0
- package/test/shape/Dot.typed.spec.tsx +30 -0
- package/test/shape/Polygon.spec.tsx +357 -0
- package/test/shape/Polygon.typed.spec.tsx +28 -0
- package/test/shape/Rectangle.animation.spec.tsx +451 -0
- package/test/shape/Rectangle.spec.tsx +68 -0
- package/test/shape/Rectangle.typed.spec.tsx +24 -0
- package/test/shape/Sector.spec.tsx +76 -0
- package/test/shape/Sector.typed.spec.tsx +24 -0
- package/test/shape/Symbols.spec.tsx +43 -0
- package/test/shape/Symbols.typed.spec.tsx +24 -0
- package/test/shape/Trapezoid.spec.tsx +50 -0
- package/test/shape/Trapezoid.typed.spec.tsx +24 -0
- package/test/shape/__snapshots__/Cross.spec.tsx.snap +62 -0
- package/test/shape/__snapshots__/Curve.spec.tsx.snap +460 -0
- package/test/shape/__snapshots__/Polygon.spec.tsx.snap +58 -0
- package/test/shape/__snapshots__/Rectangle.spec.tsx.snap +117 -0
- package/test/shape/__snapshots__/Sector.spec.tsx.snap +71 -0
- package/test/shape/__snapshots__/Trapezoid.spec.tsx.snap +64 -0
- package/test/state/chartDataSlice.spec.ts +53 -0
- package/test/state/externalEventsMiddleware.spec.ts +178 -0
- package/test/state/graphicalItemsSlice.spec.ts +92 -0
- package/test/state/hooks.spec.tsx +68 -0
- package/test/state/legendSlice.spec.ts +44 -0
- package/test/state/mouseEventsMiddleware.spec.ts +75 -0
- package/test/state/optionsSlice.spec.ts +19 -0
- package/test/state/reduxDevtoolsJsonStringifyReplacer.spec.ts +25 -0
- package/test/state/referenceElementsSlice.spec.ts +84 -0
- package/test/state/selectors/areaSelectors.spec.tsx +77 -0
- package/test/state/selectors/axisSelectors.spec.tsx +1418 -0
- package/test/state/selectors/barStackSelectors.spec.tsx +752 -0
- package/test/state/selectors/brushSelectors.spec.tsx +30 -0
- package/test/state/selectors/cartesianAxisSlice.spec.ts +96 -0
- package/test/state/selectors/combineNiceTicks.spec.ts +207 -0
- package/test/state/selectors/combiners/combineActiveTooltipIndex.spec.ts +61 -0
- package/test/state/selectors/combiners/combineAllBarPositions.spec.ts +39 -0
- package/test/state/selectors/combiners/combineConfiguredScale.spec.ts +56 -0
- package/test/state/selectors/combiners/combineDisplayedStackedData.spec.ts +123 -0
- package/test/state/selectors/combiners/combineRealScaleType.spec.ts +80 -0
- package/test/state/selectors/containerSelectors.spec.tsx +168 -0
- package/test/state/selectors/dataSelectors.spec.tsx +136 -0
- package/test/state/selectors/legendSelectors.spec.tsx +113 -0
- package/test/state/selectors/lineSelectors.spec.tsx +60 -0
- package/test/state/selectors/pieSelectors.spec.tsx +72 -0
- package/test/state/selectors/radarSelectors.spec.tsx +496 -0
- package/test/state/selectors/rootPropsSelectors.spec.tsx +169 -0
- package/test/state/selectors/scatterSelectors.spec.tsx +47 -0
- package/test/state/selectors/selectActiveTooltipIndex.spec.tsx +234 -0
- package/test/state/selectors/selectAllAxes.spec.tsx +18 -0
- package/test/state/selectors/selectAxisDomain.spec.tsx +21 -0
- package/test/state/selectors/selectAxisDomainIncludingNiceTicks.spec.tsx +19 -0
- package/test/state/selectors/selectAxisRangeWithReverse.spec.tsx +22 -0
- package/test/state/selectors/selectAxisScale.spec.tsx +91 -0
- package/test/state/selectors/selectBarRectangles.stackOffset.spec.tsx +503 -0
- package/test/state/selectors/selectBaseAxis.spec.tsx +56 -0
- package/test/state/selectors/selectCartesianItemsSettings.spec.tsx +57 -0
- package/test/state/selectors/selectChartOffset.spec.tsx +26 -0
- package/test/state/selectors/selectDisplayedData.spec.tsx +282 -0
- package/test/state/selectors/selectIsTooltipActive.spec.tsx +231 -0
- package/test/state/selectors/selectNumericalDomain.spec.tsx +21 -0
- package/test/state/selectors/selectRealScaleType.spec.tsx +19 -0
- package/test/state/selectors/selectStackGroups.spec.tsx +322 -0
- package/test/state/selectors/selectXAxisPosition.spec.tsx +22 -0
- package/test/state/selectors/selectYAxisPosition.spec.tsx +22 -0
- package/test/state/selectors/selectors.spec.tsx +1613 -0
- package/test/state/throttling.spec.ts +200 -0
- package/test/state/zIndexSlice.spec.ts +85 -0
- package/test/synchronisation/useChartSynchronisation.spec.tsx +225 -0
- package/test/util/BarUtils.spec.ts +39 -0
- package/test/util/CartesianUtils/CartesianUtils.spec.ts +261 -0
- package/test/util/CartesianUtils/rectWithPoints.spec.ts +48 -0
- package/test/util/ChartUtils/ChartUtils.spec.ts +491 -0
- package/test/util/ChartUtils/appendOffsetOfLegend.spec.ts +136 -0
- package/test/util/ChartUtils/appendOffsetOfLegend.spec.tsx +133 -0
- package/test/util/ChartUtils/getCateCoordinateOfLine.spec.ts +83 -0
- package/test/util/ChartUtils/getStackedData.spec.ts +416 -0
- package/test/util/ChartUtils/truncateByDomain.spec.ts +70 -0
- package/test/util/DataUtils.spec.ts +385 -0
- package/test/util/DomUtils.spec.tsx +117 -0
- package/test/util/FunnelUtils.spec.tsx +70 -0
- package/test/util/Global.spec.ts +11 -0
- package/test/util/LRUCache.spec.ts +81 -0
- package/test/util/LogUtils.spec.ts +45 -0
- package/test/util/PolarUtils.spec.ts +66 -0
- package/test/util/ReduceCssCalcPrototype.spec.ts +141 -0
- package/test/util/ShallowEqual.spec.ts +102 -0
- package/test/util/TickUtils.spec.ts +29 -0
- package/test/util/axisPropsAreEqual.spec.ts +93 -0
- package/test/util/createChartHelpers.spec.tsx +210 -0
- package/test/util/cursor/getCursorPoints.spec.ts +136 -0
- package/test/util/cursor/getCursorRectangle.spec.ts +50 -0
- package/test/util/cursor/getRadialCursorPoints.spec.ts +36 -0
- package/test/util/errorValue.spec.ts +69 -0
- package/test/util/getEveryNth.spec.ts +39 -0
- package/test/util/getRadiusAndStrokeWidthFromDot.spec.ts +51 -0
- package/test/util/getRelativeCoordinate.spec.ts +250 -0
- package/test/util/getSliced.spec.ts +45 -0
- package/test/util/isDomainSpecifiedByUser.spec.ts +207 -0
- package/test/util/isWellBehavedNumber.spec.ts +54 -0
- package/test/util/payload/getUniqPayload.spec.ts +56 -0
- package/test/util/propsAreEqual.spec.ts +75 -0
- package/test/util/round.spec.ts +112 -0
- package/test/util/scale/arithmetic.spec.ts +61 -0
- package/test/util/scale/createCategoricalInverse.spec.ts +84 -0
- package/test/util/scale/getNiceTickValues.spec.ts +421 -0
- package/test/util/scale/getTickValuesFixedDomain.spec.ts +155 -0
- package/test/util/svgPropertiesAndEvents.spec.tsx +206 -0
- package/test/util/svgPropertiesNoEvents.spec.tsx +228 -0
- package/test/util/tooltip/translate.spec.ts +396 -0
- package/test/util/useAnimationId.spec.tsx +59 -0
- package/test/util/useElementOffset.spec.tsx +173 -0
- package/test/util/usePrefersReducedMotion.spec.ts +54 -0
- package/test/util/useUniqueId.spec.ts +99 -0
- package/test/utils/diagnostics-allowlist.ts +18 -0
- package/test/utils/diagnostics.ts +58 -0
- package/test/zIndex/AllZIndexPortals.spec.tsx +83 -0
- package/test/zIndex/DefaultZIndexes.spec.ts +80 -0
- package/test/zIndex/DynamicZIndex.spec.tsx +102 -0
- package/test/zIndex/ZIndexLayer.portalOwner.spec.tsx +125 -0
- package/test/zIndex/componentZIndex.spec.tsx +255 -0
- package/test/zIndex/getZIndexFromUnknown.spec.ts +51 -0
- package/test/zIndex/multiChartZIndexIsolation.spec.tsx +90 -0
- package/test/zIndex/zIndexSelectors.spec.ts +172 -0
- package/tsconfig.json +11 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// Ported from recharts 3.8.1 src/chart/types.ts (commit 7a23854).
|
|
2
|
+
//
|
|
3
|
+
// Deviation: recharts' React event generics become native DOM events — Solid
|
|
4
|
+
// event handlers receive native events, so `SyntheticEvent` → `Event`,
|
|
5
|
+
// `MouseEvent<SVGGraphicsElement>` → the global `MouseEvent`, and
|
|
6
|
+
// `TouchEvent<SVGGraphicsElement>` → the global `TouchEvent` (the element is on
|
|
7
|
+
// `event.currentTarget`). No React import.
|
|
8
|
+
import { MouseHandlerDataParam } from "../synchronisation/types";
|
|
9
|
+
|
|
10
|
+
export type TooltipTrigger = "hover" | "click";
|
|
11
|
+
|
|
12
|
+
export type CategoricalChartFunc<E = Event> = (nextState: MouseHandlerDataParam, event: E) => void;
|
|
13
|
+
|
|
14
|
+
export interface ExternalMouseEvents {
|
|
15
|
+
/** Customized click handler for this chart. */
|
|
16
|
+
onClick?: CategoricalChartFunc<MouseEvent>;
|
|
17
|
+
/** Customized mouseleave handler for this chart. */
|
|
18
|
+
onMouseLeave?: CategoricalChartFunc<MouseEvent>;
|
|
19
|
+
/** Customized mouseenter handler for this chart. */
|
|
20
|
+
onMouseEnter?: CategoricalChartFunc<MouseEvent>;
|
|
21
|
+
/** Customized mousemove handler for this chart. */
|
|
22
|
+
onMouseMove?: CategoricalChartFunc<MouseEvent>;
|
|
23
|
+
/** Customized mousedown handler for this chart. */
|
|
24
|
+
onMouseDown?: CategoricalChartFunc<MouseEvent>;
|
|
25
|
+
/** Customized mouseup handler for this chart. */
|
|
26
|
+
onMouseUp?: CategoricalChartFunc<MouseEvent>;
|
|
27
|
+
/** Customized contextmenu handler for this chart. */
|
|
28
|
+
onContextMenu?: CategoricalChartFunc<MouseEvent>;
|
|
29
|
+
/** Customized dblclick handler for this chart. */
|
|
30
|
+
onDoubleClick?: CategoricalChartFunc<MouseEvent>;
|
|
31
|
+
/** Customized touchstart handler for this chart. */
|
|
32
|
+
onTouchStart?: CategoricalChartFunc<TouchEvent>;
|
|
33
|
+
/** Customized touchmove handler for this chart. */
|
|
34
|
+
onTouchMove?: CategoricalChartFunc<TouchEvent>;
|
|
35
|
+
/** Customized touchend handler for this chart. */
|
|
36
|
+
onTouchEnd?: CategoricalChartFunc<TouchEvent>;
|
|
37
|
+
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
// Ported from recharts 3.8.1 src/component/ActivePoints.tsx (commit 7a23854).
|
|
2
|
+
// Solid deviations: state is computed in a parent createMemo (plain data only);
|
|
3
|
+
// JSX is built in the parent's JSX scope via `renderActivePointsLayerFromState`.
|
|
4
|
+
// Mounting a child component that subscribes to tooltip selectors trips STRICT_READ.
|
|
5
|
+
// ZIndexLayer deferred.
|
|
6
|
+
import type { JSX } from "@solidjs/web";
|
|
7
|
+
import { isNullish } from "../util/DataUtils";
|
|
8
|
+
import type { ActiveDotProps, ActiveDotType, DataKey } from "../util/types";
|
|
9
|
+
import { svgPropertiesNoEventsFromUnknownKeepCase } from "../util/svgPropertiesNoEvents";
|
|
10
|
+
import type { TooltipIndex } from "../state/tooltipSlice";
|
|
11
|
+
|
|
12
|
+
export interface PointType {
|
|
13
|
+
readonly x: number | null;
|
|
14
|
+
readonly y: number | null;
|
|
15
|
+
readonly value?: unknown;
|
|
16
|
+
readonly payload?: unknown;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface ActivePointsProps {
|
|
20
|
+
points: ReadonlyArray<PointType>;
|
|
21
|
+
mainColor: string | undefined;
|
|
22
|
+
itemDataKey: DataKey<unknown> | undefined;
|
|
23
|
+
activeDot: ActiveDotType;
|
|
24
|
+
clipPath?: string;
|
|
25
|
+
zIndex?: number;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface ActivePointsLayerArgs extends ActivePointsProps {
|
|
29
|
+
activeTooltipIndex: TooltipIndex | null | undefined;
|
|
30
|
+
activeDataPoints: ReadonlyArray<unknown> | undefined;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export interface ActivePointState {
|
|
34
|
+
point: PointType;
|
|
35
|
+
/** Narrowed coordinates of `point` (guaranteed non-null when this state exists). */
|
|
36
|
+
cx: number;
|
|
37
|
+
cy: number;
|
|
38
|
+
childIndex: number;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export function findActivePointByIndex(
|
|
42
|
+
points: ReadonlyArray<PointType>,
|
|
43
|
+
activeDot: ActiveDotType,
|
|
44
|
+
activeIndex: TooltipIndex | null | undefined,
|
|
45
|
+
): PointType | undefined {
|
|
46
|
+
if (activeDot === false || activeIndex == null) {
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
const indexNum = Number(activeIndex);
|
|
50
|
+
if (!Number.isFinite(indexNum)) {
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
return points[indexNum];
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/** Resolve the active point from plain inputs (safe inside a parent createMemo). */
|
|
57
|
+
export function computeActivePointState(args: ActivePointsLayerArgs): ActivePointState | null {
|
|
58
|
+
if (args.points == null || args.activeDataPoints == null || args.activeDot === false) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const activeDataPoints = args.activeDataPoints;
|
|
63
|
+
const activePoint = args.points.find((p) => activeDataPoints.includes(p.payload));
|
|
64
|
+
if (isNullish(activePoint) || activePoint.x == null || activePoint.y == null) {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return {
|
|
69
|
+
point: activePoint,
|
|
70
|
+
cx: activePoint.x,
|
|
71
|
+
cy: activePoint.y,
|
|
72
|
+
childIndex: Number(args.activeTooltipIndex ?? 0),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function renderActiveDot(activeDot: ActiveDotType, dotProps: ActiveDotProps): JSX.Element {
|
|
77
|
+
if (typeof activeDot === "function") {
|
|
78
|
+
return activeDot(dotProps);
|
|
79
|
+
}
|
|
80
|
+
if (typeof activeDot === "object" && activeDot != null && "type" in activeDot) {
|
|
81
|
+
return activeDot;
|
|
82
|
+
}
|
|
83
|
+
// Default <Dot> uses <Show> internally, which trips STRICT_READ when this
|
|
84
|
+
// layer mounts during tooltip effect-apply — render the circle directly instead.
|
|
85
|
+
// An object-form activeDot's `class`/`className` is dropped by the svg-prop
|
|
86
|
+
// renamer (it allowlists out `class`), so apply it explicitly here.
|
|
87
|
+
const customClass =
|
|
88
|
+
typeof activeDot === "object" && activeDot != null && "class" in activeDot
|
|
89
|
+
? activeDot.class
|
|
90
|
+
: undefined;
|
|
91
|
+
return (
|
|
92
|
+
<circle
|
|
93
|
+
class={["recharts-dot", customClass]}
|
|
94
|
+
cx={dotProps.cx}
|
|
95
|
+
cy={dotProps.cy}
|
|
96
|
+
r={dotProps.r}
|
|
97
|
+
fill={dotProps.fill}
|
|
98
|
+
stroke={dotProps.stroke}
|
|
99
|
+
stroke-width={dotProps.strokeWidth}
|
|
100
|
+
/>
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/** Render the active-dot layer from pre-resolved state (call in parent JSX). */
|
|
105
|
+
export function renderActivePointsLayerFromState(
|
|
106
|
+
state: ActivePointState,
|
|
107
|
+
args: ActivePointsProps,
|
|
108
|
+
): JSX.Element {
|
|
109
|
+
const dotProps: ActiveDotProps = {
|
|
110
|
+
index: state.childIndex,
|
|
111
|
+
dataKey: args.itemDataKey,
|
|
112
|
+
cx: state.cx,
|
|
113
|
+
cy: state.cy,
|
|
114
|
+
r: 4,
|
|
115
|
+
fill: args.mainColor ?? "none",
|
|
116
|
+
strokeWidth: 2,
|
|
117
|
+
stroke: "#fff",
|
|
118
|
+
payload: state.point.payload,
|
|
119
|
+
value: state.point.value,
|
|
120
|
+
...svgPropertiesNoEventsFromUnknownKeepCase(args.activeDot),
|
|
121
|
+
};
|
|
122
|
+
return (
|
|
123
|
+
<g class={["recharts-layer", "recharts-active-dot"]} clip-path={args.clipPath}>
|
|
124
|
+
{renderActiveDot(args.activeDot, dotProps)}
|
|
125
|
+
</g>
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/** @deprecated Use computeActivePointState + renderActivePointsLayerFromState */
|
|
130
|
+
export function renderActivePointsLayer(args: ActivePointsLayerArgs): JSX.Element | null {
|
|
131
|
+
const state = computeActivePointState(args);
|
|
132
|
+
if (state == null) {
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
return renderActivePointsLayerFromState(state, args);
|
|
136
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
// Ported from recharts 3.8.1 src/component/Cell.tsx (commit 7a23854).
|
|
2
|
+
// Deviations: React's `SVGProps<SVGElement>` → Solid's `CamelSvgProps<JSX.SVGAttributes<SVGElement>>`
|
|
3
|
+
// (which already names the class prop `class`); React's `displayName` is dropped.
|
|
4
|
+
//
|
|
5
|
+
// The CellReader pattern: recharts extracts cells by walking the React element
|
|
6
|
+
// tree (`findAllByType(children, Cell)`). Solid has no element-descriptor tree —
|
|
7
|
+
// `props.children` is already-evaluated, so `<Cell>` returns nothing renderable.
|
|
8
|
+
// Instead each <Cell> registers its props into a module-level registrar while a
|
|
9
|
+
// parent (Bar/Pie/RadialBar) synchronously resolves its children inside
|
|
10
|
+
// `collectCells`. Cells render no DOM (the standalone <Cell /> spec asserts this).
|
|
11
|
+
import { type CamelSvgProps } from "../util/svgPropertiesNoEvents";
|
|
12
|
+
import { createMemo, type Accessor } from "solid-js";
|
|
13
|
+
import type { JSX } from "@solidjs/web";
|
|
14
|
+
|
|
15
|
+
export interface CellProps extends CamelSvgProps<JSX.SVGAttributes<SVGElement>> {
|
|
16
|
+
/**
|
|
17
|
+
* The fill color.
|
|
18
|
+
*/
|
|
19
|
+
fill?: string;
|
|
20
|
+
/**
|
|
21
|
+
* The stroke color.
|
|
22
|
+
*/
|
|
23
|
+
stroke?: string;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Set while a parent collects its <Cell> children (see {@link collectCells}).
|
|
28
|
+
* A stack-discipline save/restore in collectCells keeps nested collections sound.
|
|
29
|
+
*/
|
|
30
|
+
let currentCellRegistrar: ((cell: CellProps) => void) | undefined;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Cell component used to define colors and styles of chart elements.
|
|
34
|
+
*
|
|
35
|
+
* This component is now deprecated and will be removed in Recharts 4.0.
|
|
36
|
+
*
|
|
37
|
+
* Please use the `shape` prop or `content` prop on the respective chart components
|
|
38
|
+
* to customize the rendering of chart elements instead of using `Cell`.
|
|
39
|
+
*
|
|
40
|
+
* @see {@link https://recharts.github.io/en-US/guide/cell/ Guide: Migrate from Cell component to shape prop}
|
|
41
|
+
*
|
|
42
|
+
* @deprecated
|
|
43
|
+
* @consumes CellReader
|
|
44
|
+
*/
|
|
45
|
+
export const Cell = (props: CellProps): JSX.Element => {
|
|
46
|
+
// Registers into the parent's collector when rendered inside one; renders
|
|
47
|
+
// nothing either way (standalone <Cell /> → empty DOM).
|
|
48
|
+
currentCellRegistrar?.(props);
|
|
49
|
+
return undefined;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Resolves `childrenAccessor` synchronously with the cell registrar active, so
|
|
54
|
+
* every nested <Cell> reports its (reactive) props in document order. Returns the
|
|
55
|
+
* collected cells as an accessor — recomputes if the children change, mirroring
|
|
56
|
+
* recharts' `useMemo(() => findAllByType(children, Cell), [children])`.
|
|
57
|
+
*/
|
|
58
|
+
export const collectCells = (
|
|
59
|
+
childrenAccessor: () => JSX.Element,
|
|
60
|
+
): Accessor<ReadonlyArray<CellProps>> =>
|
|
61
|
+
createMemo<ReadonlyArray<CellProps>>(() => {
|
|
62
|
+
const collected: CellProps[] = [];
|
|
63
|
+
const prev = currentCellRegistrar;
|
|
64
|
+
currentCellRegistrar = (cell) => collected.push(cell);
|
|
65
|
+
try {
|
|
66
|
+
// Accessing children evaluates each <Cell>, triggering its registration.
|
|
67
|
+
void childrenAccessor();
|
|
68
|
+
} finally {
|
|
69
|
+
currentCellRegistrar = prev;
|
|
70
|
+
}
|
|
71
|
+
return collected;
|
|
72
|
+
});
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
// Ported from recharts 3.8.1 src/component/Cursor.tsx (commit 7a23854).
|
|
2
|
+
//
|
|
3
|
+
// Draws the default cursor highlight: a Curve (line) for Line/Area/Composed
|
|
4
|
+
// charts, a band Rectangle for BarChart, a Cross for ScatterChart, and a Sector
|
|
5
|
+
// for radial-layout charts. `cursor` is acted on as a boolean (show/hide) plus an
|
|
6
|
+
// optional SVG-props object (className/styling); a custom cursor ELEMENT
|
|
7
|
+
// (recharts' `ReactElement` + cloneElement) is PERMANENT-N/A — there is no Solid
|
|
8
|
+
// equivalent of React.isValidElement/cloneElement. Solid deviations: `clsx` →
|
|
9
|
+
// `class={[...]}`; the connected `Cursor` resolves context then delegates to
|
|
10
|
+
// `CursorInternal`, which (like recharts) takes fully-resolved props so it can be
|
|
11
|
+
// rendered standalone in tests; all reactive reads live in a tracking memo that
|
|
12
|
+
// returns plain shape DATA, so the <Show> children read only plain properties.
|
|
13
|
+
import { createMemo, Show } from "solid-js";
|
|
14
|
+
import type { JSX } from "@solidjs/web";
|
|
15
|
+
import {
|
|
16
|
+
ChartOffsetInternal,
|
|
17
|
+
Coordinate,
|
|
18
|
+
isPolarCoordinate,
|
|
19
|
+
LayoutType,
|
|
20
|
+
PolarCoordinate,
|
|
21
|
+
RectanglePosition,
|
|
22
|
+
TooltipEventType,
|
|
23
|
+
} from "../util/types";
|
|
24
|
+
import { Curve } from "../shape/Curve";
|
|
25
|
+
import { Cross } from "../shape/Cross";
|
|
26
|
+
import { Rectangle } from "../shape/Rectangle";
|
|
27
|
+
import { Sector } from "../shape/Sector";
|
|
28
|
+
import { getCursorPoints } from "../util/cursor/getCursorPoints";
|
|
29
|
+
import { getCursorRectangle } from "../util/cursor/getCursorRectangle";
|
|
30
|
+
import { getRadialCursorPoints } from "../util/cursor/getRadialCursorPoints";
|
|
31
|
+
import { useChartLayout, useOffsetInternal } from "../context/chartLayoutContext";
|
|
32
|
+
import { useTooltipAxisBandSize } from "../context/useTooltipAxis";
|
|
33
|
+
import { useAppSelector } from "../state/hooks";
|
|
34
|
+
import { selectChartName } from "../state/selectors/rootPropsSelectors";
|
|
35
|
+
import { TooltipIndex, TooltipPayload } from "../state/tooltipSlice";
|
|
36
|
+
import { ZIndexLayer, type ZIndexable } from "../zIndex/ZIndexLayer";
|
|
37
|
+
import { DefaultZIndexes } from "../zIndex/DefaultZIndexes";
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* `false` hides the cursor; the default (`true`) draws the shape below. A
|
|
41
|
+
* customizing SVG-props object is accepted (its `className` is appended); a custom
|
|
42
|
+
* cursor element is deferred (see header). Deviation: recharts' union includes a
|
|
43
|
+
* `ReactElement`; the port drops it because Solid's `JSX.Element` already subsumes
|
|
44
|
+
* `boolean`, which would make the show/hide flag redundant.
|
|
45
|
+
*/
|
|
46
|
+
export type CursorDefinition = boolean | Record<string, unknown>;
|
|
47
|
+
|
|
48
|
+
export interface CursorProps extends ZIndexable {
|
|
49
|
+
cursor: CursorDefinition;
|
|
50
|
+
tooltipEventType: TooltipEventType;
|
|
51
|
+
coordinate: Coordinate | PolarCoordinate | undefined;
|
|
52
|
+
payload: TooltipPayload;
|
|
53
|
+
index: TooltipIndex | undefined;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export type CursorConnectedProps = CursorProps & {
|
|
57
|
+
tooltipAxisBandSize: number;
|
|
58
|
+
layout: LayoutType;
|
|
59
|
+
offset: ChartOffsetInternal;
|
|
60
|
+
chartName: string;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
type CursorShape =
|
|
64
|
+
| { kind: "rect"; rect: RectanglePosition & { stroke: string; fill: string } }
|
|
65
|
+
| { kind: "curve"; points: ReadonlyArray<Coordinate> }
|
|
66
|
+
| { kind: "cross"; coordinate: Coordinate }
|
|
67
|
+
| {
|
|
68
|
+
kind: "sector";
|
|
69
|
+
cx: number;
|
|
70
|
+
cy: number;
|
|
71
|
+
startAngle: number;
|
|
72
|
+
endAngle: number;
|
|
73
|
+
radius: number;
|
|
74
|
+
}
|
|
75
|
+
| null;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* The shared cursor class, with an optional extra className from an object-form
|
|
79
|
+
* `cursor` appended (the shape components type `class` as a plain string, so this
|
|
80
|
+
* is joined rather than passed as a `class={[...]}` array).
|
|
81
|
+
*/
|
|
82
|
+
function cursorClass(cursor: CursorDefinition): string {
|
|
83
|
+
if (typeof cursor === "object" && cursor != null && typeof cursor.className === "string") {
|
|
84
|
+
return `recharts-tooltip-cursor ${cursor.className}`;
|
|
85
|
+
}
|
|
86
|
+
return "recharts-tooltip-cursor";
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Connected (fully-resolved) cursor. Mirrors recharts' `CursorInternal`: takes
|
|
91
|
+
* layout/offset/chartName/tooltipAxisBandSize directly so tests can render it
|
|
92
|
+
* standalone inside an <svg>.
|
|
93
|
+
*/
|
|
94
|
+
export function CursorInternal(props: CursorConnectedProps): JSX.Element {
|
|
95
|
+
// All reactive reads happen in this memo (a tracking scope); it returns plain
|
|
96
|
+
// shape DATA so the <Show> children below only read plain object properties.
|
|
97
|
+
const cursorShape = createMemo<CursorShape>(() => {
|
|
98
|
+
const coordinate = props.coordinate;
|
|
99
|
+
if (
|
|
100
|
+
!props.cursor ||
|
|
101
|
+
coordinate == null ||
|
|
102
|
+
(props.chartName !== "ScatterChart" && props.tooltipEventType !== "axis")
|
|
103
|
+
) {
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
if (props.chartName === "ScatterChart") {
|
|
107
|
+
return { kind: "cross", coordinate };
|
|
108
|
+
}
|
|
109
|
+
if (props.chartName === "BarChart") {
|
|
110
|
+
return {
|
|
111
|
+
kind: "rect",
|
|
112
|
+
rect: getCursorRectangle(props.layout, coordinate, props.offset, props.tooltipAxisBandSize),
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
if (props.layout === "radial" && isPolarCoordinate(coordinate)) {
|
|
116
|
+
const { cx, cy, radius, startAngle, endAngle } = getRadialCursorPoints(coordinate);
|
|
117
|
+
return {
|
|
118
|
+
kind: "sector",
|
|
119
|
+
cx: cx ?? 0,
|
|
120
|
+
cy: cy ?? 0,
|
|
121
|
+
startAngle: startAngle ?? 0,
|
|
122
|
+
endAngle: endAngle ?? 0,
|
|
123
|
+
radius: radius ?? 0,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
const points = getCursorPoints(props.layout, coordinate, props.offset);
|
|
127
|
+
if (!Array.isArray(points)) {
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
return { kind: "curve", points };
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
// One derived memo per shape kind so each <Show> child reads its accessor INSIDE
|
|
134
|
+
// the returned JSX (where reads track) rather than in the callback body.
|
|
135
|
+
const rect = createMemo(() => {
|
|
136
|
+
const s = cursorShape();
|
|
137
|
+
return s?.kind === "rect" ? s.rect : null;
|
|
138
|
+
});
|
|
139
|
+
const curvePoints = createMemo(() => {
|
|
140
|
+
const s = cursorShape();
|
|
141
|
+
return s?.kind === "curve" ? s.points : null;
|
|
142
|
+
});
|
|
143
|
+
const cross = createMemo(() => {
|
|
144
|
+
const s = cursorShape();
|
|
145
|
+
return s?.kind === "cross" ? s.coordinate : null;
|
|
146
|
+
});
|
|
147
|
+
const sector = createMemo(() => {
|
|
148
|
+
const s = cursorShape();
|
|
149
|
+
return s?.kind === "sector" ? s : null;
|
|
150
|
+
});
|
|
151
|
+
const cls = (): string => cursorClass(props.cursor);
|
|
152
|
+
|
|
153
|
+
// recharts portals the cursor at a shape-dependent default z-index (the band
|
|
154
|
+
// rectangle below bars, the line/cross/sector above the series) unless the
|
|
155
|
+
// caller provides an explicit zIndex.
|
|
156
|
+
const preferredZIndex = (): number =>
|
|
157
|
+
cursorShape()?.kind === "rect" ? DefaultZIndexes.cursorRectangle : DefaultZIndexes.cursorLine;
|
|
158
|
+
|
|
159
|
+
return (
|
|
160
|
+
<Show when={cursorShape()}>
|
|
161
|
+
<ZIndexLayer zIndex={props.zIndex ?? preferredZIndex()}>
|
|
162
|
+
<Show when={rect()}>
|
|
163
|
+
{(r) => (
|
|
164
|
+
<Rectangle
|
|
165
|
+
class={cls()}
|
|
166
|
+
x={r().x}
|
|
167
|
+
y={r().y}
|
|
168
|
+
width={r().width}
|
|
169
|
+
height={r().height}
|
|
170
|
+
stroke={r().stroke}
|
|
171
|
+
fill={r().fill}
|
|
172
|
+
/>
|
|
173
|
+
)}
|
|
174
|
+
</Show>
|
|
175
|
+
<Show when={curvePoints()}>
|
|
176
|
+
{(pts) => <Curve class={cls()} points={pts()} stroke="#ccc" fill="none" />}
|
|
177
|
+
</Show>
|
|
178
|
+
<Show when={cross()}>
|
|
179
|
+
{(c) => (
|
|
180
|
+
<Cross
|
|
181
|
+
class={cls()}
|
|
182
|
+
x={c().x}
|
|
183
|
+
y={c().y}
|
|
184
|
+
top={props.offset.top}
|
|
185
|
+
left={props.offset.left}
|
|
186
|
+
width={props.offset.width}
|
|
187
|
+
height={props.offset.height}
|
|
188
|
+
stroke="#ccc"
|
|
189
|
+
/>
|
|
190
|
+
)}
|
|
191
|
+
</Show>
|
|
192
|
+
<Show when={sector()}>
|
|
193
|
+
{(s) => (
|
|
194
|
+
<Sector
|
|
195
|
+
class={cls()}
|
|
196
|
+
cx={s().cx}
|
|
197
|
+
cy={s().cy}
|
|
198
|
+
startAngle={s().startAngle}
|
|
199
|
+
endAngle={s().endAngle}
|
|
200
|
+
innerRadius={s().radius}
|
|
201
|
+
outerRadius={s().radius}
|
|
202
|
+
stroke="#ccc"
|
|
203
|
+
fill="none"
|
|
204
|
+
/>
|
|
205
|
+
)}
|
|
206
|
+
</Show>
|
|
207
|
+
</ZIndexLayer>
|
|
208
|
+
</Show>
|
|
209
|
+
);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
export const Cursor = (props: CursorProps): JSX.Element => {
|
|
213
|
+
const tooltipAxisBandSize = useTooltipAxisBandSize();
|
|
214
|
+
const offset = useOffsetInternal();
|
|
215
|
+
const layout = useChartLayout();
|
|
216
|
+
const chartName = useAppSelector(selectChartName);
|
|
217
|
+
|
|
218
|
+
// Resolve the context-derived props into one bundle; null until all are ready,
|
|
219
|
+
// so the keyed <Show> hands CursorInternal fully-typed (non-null) values.
|
|
220
|
+
const resolved = createMemo(() => {
|
|
221
|
+
const band = tooltipAxisBandSize();
|
|
222
|
+
const off = offset();
|
|
223
|
+
const lay = layout();
|
|
224
|
+
const name = chartName();
|
|
225
|
+
if (band == null || off == null || lay == null || name == null) {
|
|
226
|
+
return null;
|
|
227
|
+
}
|
|
228
|
+
return { band, off, lay, name };
|
|
229
|
+
});
|
|
230
|
+
|
|
231
|
+
return (
|
|
232
|
+
<Show when={resolved()}>
|
|
233
|
+
{(r) => (
|
|
234
|
+
<CursorInternal
|
|
235
|
+
cursor={props.cursor}
|
|
236
|
+
tooltipEventType={props.tooltipEventType}
|
|
237
|
+
coordinate={props.coordinate}
|
|
238
|
+
payload={props.payload}
|
|
239
|
+
index={props.index}
|
|
240
|
+
zIndex={props.zIndex}
|
|
241
|
+
offset={r().off}
|
|
242
|
+
layout={r().lay}
|
|
243
|
+
tooltipAxisBandSize={r().band}
|
|
244
|
+
chartName={r().name}
|
|
245
|
+
/>
|
|
246
|
+
)}
|
|
247
|
+
</Show>
|
|
248
|
+
);
|
|
249
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// SKIPPED — intentionally NOT ported to the SolidJS port.
|
|
2
|
+
//
|
|
3
|
+
// Reason: deprecated React-element-cloning shim (cloneElement/createElement/isValidElement) — Solid has no element cloning; render components directly
|
|
4
|
+
//
|
|
5
|
+
// TODO: do not port this file as-is. The Solid-native port replaces it (see the
|
|
6
|
+
// reason above). If a consumer needs this path, wire it to the Solid equivalent
|
|
7
|
+
// instead. Tracked in scripts/porting-queue.mjs SKIP list and project memory.
|
|
8
|
+
export {};
|