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,84 @@
|
|
|
1
|
+
// Ported from recharts 3.9.0 src/cartesian/useAnimatedLineLength.ts.
|
|
2
|
+
//
|
|
3
|
+
// Solid 2.0 deviation: React `useRef` + `useCallback` exist to survive re-renders
|
|
4
|
+
// and keep a stable callback identity. A Solid component body runs ONCE, so the
|
|
5
|
+
// refs become plain `let` closure variables and the returned function is naturally
|
|
6
|
+
// stable. The data-change detection (prevPoints !== points) that React does during
|
|
7
|
+
// render is moved into the returned callback's caller convention: the consumer
|
|
8
|
+
// calls `markDataChange(points)` once per render (cheap reference compare) before
|
|
9
|
+
// driving frames, mirroring the React in-render ref bookkeeping. We expose it as a
|
|
10
|
+
// small object so Line can both detect data changes and read the visible length.
|
|
11
|
+
import { round } from "../util/round";
|
|
12
|
+
|
|
13
|
+
export type AnimatedLineLength = {
|
|
14
|
+
/**
|
|
15
|
+
* Notify the hook that the point set may have changed. When `points` differs by
|
|
16
|
+
* reference from the previous call, the next animation resumes from the furthest
|
|
17
|
+
* length already drawn (so a mid-animation data change does not jump back to 0).
|
|
18
|
+
*/
|
|
19
|
+
markDataChange: (points: unknown) => void;
|
|
20
|
+
/**
|
|
21
|
+
* `(animationElapsedTime, totalLength) => number | null`:
|
|
22
|
+
* - `animationElapsedTime` is the animation progress (0 to 1),
|
|
23
|
+
* - `totalLength` is the current total SVG path length in pixels,
|
|
24
|
+
* - returns the visible length in pixels, or `null` once the line is fully
|
|
25
|
+
* visible (meaning no entrance stroke-dasharray is needed any more).
|
|
26
|
+
*/
|
|
27
|
+
getVisibleLength: (animationElapsedTime: number, totalLength: number) => number | null;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Tracks the animated visible length of a Line's SVG path across data changes.
|
|
32
|
+
*
|
|
33
|
+
* Invariants:
|
|
34
|
+
* 1. The visible length only grows (monotonically non-decreasing with animationElapsedTime).
|
|
35
|
+
* 2. The visible length changes continuously — no jumps when data changes mid-animation.
|
|
36
|
+
* This is achieved by tracking the maximum animated length in pixels and using it
|
|
37
|
+
* as the starting point for the next animation.
|
|
38
|
+
* 3. Once the line reaches 100% visibility, it never becomes partially visible again.
|
|
39
|
+
* In that case the hook returns `null`, meaning no animation stroke-dasharray is needed.
|
|
40
|
+
*/
|
|
41
|
+
export function useAnimatedLineLength(): AnimatedLineLength {
|
|
42
|
+
let startingLength = 0;
|
|
43
|
+
let maxAnimatedLength = 0;
|
|
44
|
+
let reachedFull = false;
|
|
45
|
+
// `undefined` sentinel so the first markDataChange (even with `undefined` points)
|
|
46
|
+
// does not spuriously rebase — recharts seeds prevPointsRef with the first points.
|
|
47
|
+
let prevPoints: unknown;
|
|
48
|
+
let seeded = false;
|
|
49
|
+
|
|
50
|
+
const markDataChange = (points: unknown): void => {
|
|
51
|
+
if (!seeded) {
|
|
52
|
+
prevPoints = points;
|
|
53
|
+
seeded = true;
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
if (prevPoints !== points) {
|
|
57
|
+
startingLength = maxAnimatedLength;
|
|
58
|
+
prevPoints = points;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const getVisibleLength = (animationElapsedTime: number, totalLength: number): number | null => {
|
|
63
|
+
if (reachedFull) {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const visibleLength = Math.min(
|
|
68
|
+
round(startingLength + animationElapsedTime * totalLength),
|
|
69
|
+
totalLength,
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
if (animationElapsedTime > 0 && totalLength > 0) {
|
|
73
|
+
maxAnimatedLength = Math.max(maxAnimatedLength, visibleLength);
|
|
74
|
+
if (visibleLength >= totalLength) {
|
|
75
|
+
reachedFull = true;
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
return visibleLength;
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
return { markDataChange, getVisibleLength };
|
|
84
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// Ported from recharts 3.8.1 src/chart/AreaChart.tsx (commit 7a23854).
|
|
2
|
+
// `forwardRef` → `ref` prop; thin user-facing wrapper over CartesianChart
|
|
3
|
+
// (mirrors LineChart — differs only in chartName / allowed tooltip event types).
|
|
4
|
+
import type { JSX } from "@solidjs/web";
|
|
5
|
+
import { arrayTooltipSearcher } from "../state/optionsSlice";
|
|
6
|
+
import { CartesianChart } from "./CartesianChart";
|
|
7
|
+
import { CartesianChartProps, TooltipEventType } from "../util/types";
|
|
8
|
+
|
|
9
|
+
const allowedTooltipTypes: ReadonlyArray<TooltipEventType> = ["axis"];
|
|
10
|
+
|
|
11
|
+
export interface AreaChartProps<
|
|
12
|
+
DataPointType = unknown,
|
|
13
|
+
> extends CartesianChartProps<DataPointType> {
|
|
14
|
+
ref?: SVGSVGElement | ((el: SVGSVGElement) => void);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function AreaChart<DataPointType = unknown>(
|
|
18
|
+
props: AreaChartProps<DataPointType>,
|
|
19
|
+
): JSX.Element {
|
|
20
|
+
return (
|
|
21
|
+
<CartesianChart
|
|
22
|
+
chartName="AreaChart"
|
|
23
|
+
defaultTooltipEventType="axis"
|
|
24
|
+
validateTooltipEventTypes={allowedTooltipTypes}
|
|
25
|
+
tooltipPayloadSearcher={arrayTooltipSearcher}
|
|
26
|
+
categoricalChartProps={props}
|
|
27
|
+
ref={props.ref}
|
|
28
|
+
/>
|
|
29
|
+
);
|
|
30
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// Ported from recharts 3.8.1 src/chart/BarChart.tsx (commit 7a23854).
|
|
2
|
+
// `forwardRef` → `ref` prop; thin user-facing wrapper over CartesianChart.
|
|
3
|
+
import type { JSX } from "@solidjs/web";
|
|
4
|
+
import { arrayTooltipSearcher } from "../state/optionsSlice";
|
|
5
|
+
import { CartesianChart } from "./CartesianChart";
|
|
6
|
+
import { CartesianChartProps, TooltipEventType } from "../util/types";
|
|
7
|
+
|
|
8
|
+
const allowedTooltipTypes: ReadonlyArray<TooltipEventType> = ["axis", "item"];
|
|
9
|
+
|
|
10
|
+
export interface BarChartProps<DataPointType = unknown> extends CartesianChartProps<DataPointType> {
|
|
11
|
+
ref?: SVGSVGElement | ((el: SVGSVGElement) => void);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function BarChart<DataPointType = unknown>(
|
|
15
|
+
props: BarChartProps<DataPointType>,
|
|
16
|
+
): JSX.Element {
|
|
17
|
+
return (
|
|
18
|
+
<CartesianChart
|
|
19
|
+
chartName="BarChart"
|
|
20
|
+
defaultTooltipEventType="axis"
|
|
21
|
+
validateTooltipEventTypes={allowedTooltipTypes}
|
|
22
|
+
tooltipPayloadSearcher={arrayTooltipSearcher}
|
|
23
|
+
categoricalChartProps={props}
|
|
24
|
+
ref={props.ref}
|
|
25
|
+
/>
|
|
26
|
+
);
|
|
27
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
// Ported from recharts 3.8.1 src/chart/CartesianChart.tsx (commit 7a23854).
|
|
2
|
+
//
|
|
3
|
+
// Solid deviations: `forwardRef` → `ref` prop; `resolveDefaultProps` → per-field
|
|
4
|
+
// `?? default` accessors (see the defaults-use-solid-merge memory — using
|
|
5
|
+
// explicit nullish-coalescing avoids `merge`'s undefined-override gotcha AND the
|
|
6
|
+
// required-ness typing gap). Provider + Report components mirror recharts.
|
|
7
|
+
import { omit } from "solid-js";
|
|
8
|
+
import type { JSX } from "@solidjs/web";
|
|
9
|
+
import { ChartOptions } from "../state/optionsSlice";
|
|
10
|
+
import { RechartsStoreProvider } from "../state/RechartsStoreProvider";
|
|
11
|
+
import { ChartDataContextProvider } from "../context/chartDataContext";
|
|
12
|
+
import { ReportMainChartProps } from "../state/ReportMainChartProps";
|
|
13
|
+
import { ReportChartProps } from "../state/ReportChartProps";
|
|
14
|
+
import { ReportEventSettings } from "../state/ReportEventSettings";
|
|
15
|
+
import { CartesianChartProps, LayoutType, Margin, TooltipEventType } from "../util/types";
|
|
16
|
+
import { TooltipPayloadSearcher } from "../state/tooltipSlice";
|
|
17
|
+
import { UpdatableChartOptions } from "../state/rootPropsSlice";
|
|
18
|
+
import { CategoricalChart } from "./CategoricalChart";
|
|
19
|
+
import { useIsPanorama } from "../context/PanoramaContext";
|
|
20
|
+
|
|
21
|
+
const defaultMargin: Margin = { top: 5, right: 5, bottom: 5, left: 5 };
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* One-time, immutable options that decide a Cartesian chart's behavior. Users
|
|
25
|
+
* usually go through a convenience component (LineChart, BarChart, …).
|
|
26
|
+
*/
|
|
27
|
+
export interface CartesianChartOptions {
|
|
28
|
+
chartName: string;
|
|
29
|
+
defaultTooltipEventType: TooltipEventType;
|
|
30
|
+
validateTooltipEventTypes: ReadonlyArray<TooltipEventType>;
|
|
31
|
+
tooltipPayloadSearcher: TooltipPayloadSearcher;
|
|
32
|
+
categoricalChartProps: CartesianChartProps;
|
|
33
|
+
ref?: SVGSVGElement | ((el: SVGSVGElement) => void);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export const CartesianChart = (props: CartesianChartOptions): JSX.Element => {
|
|
37
|
+
const cp = (): CartesianChartProps => props.categoricalChartProps;
|
|
38
|
+
|
|
39
|
+
// Brush panorama: a nested `<SomeChart>` inside `<Brush>` is an overview of the
|
|
40
|
+
// OUTER chart's full dataset. Instead of recharts' cloneElement-into-the-main-
|
|
41
|
+
// surface, render this nested chart's graphical items directly into the existing
|
|
42
|
+
// panorama context — they register into the outer store and draw into the brush's
|
|
43
|
+
// panorama surface (isPanorama=true → full data range + brush viewBox). No new
|
|
44
|
+
// store/wrapper/surface; the chart-level props (width/height/data) are the outer's.
|
|
45
|
+
if (useIsPanorama()) {
|
|
46
|
+
return <>{cp().children}</>;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const options = (): ChartOptions => ({
|
|
50
|
+
chartName: props.chartName,
|
|
51
|
+
defaultTooltipEventType: props.defaultTooltipEventType,
|
|
52
|
+
validateTooltipEventTypes: props.validateTooltipEventTypes,
|
|
53
|
+
tooltipPayloadSearcher: props.tooltipPayloadSearcher,
|
|
54
|
+
eventEmitter: undefined,
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
const layout = (): LayoutType => cp().layout ?? "horizontal";
|
|
58
|
+
const margin = (): Partial<Margin> => cp().margin ?? defaultMargin;
|
|
59
|
+
|
|
60
|
+
const updatable = (): UpdatableChartOptions => ({
|
|
61
|
+
accessibilityLayer: cp().accessibilityLayer ?? true,
|
|
62
|
+
barCategoryGap: cp().barCategoryGap ?? "10%",
|
|
63
|
+
barGap: cp().barGap ?? 4,
|
|
64
|
+
barSize: cp().barSize,
|
|
65
|
+
class: cp().class,
|
|
66
|
+
maxBarSize: cp().maxBarSize,
|
|
67
|
+
stackOffset: cp().stackOffset ?? "none",
|
|
68
|
+
syncId: cp().syncId,
|
|
69
|
+
syncMethod: cp().syncMethod ?? "index",
|
|
70
|
+
baseValue: cp().baseValue,
|
|
71
|
+
reverseStackOrder: cp().reverseStackOrder ?? false,
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
return (
|
|
75
|
+
<RechartsStoreProvider preloadedState={{ options: options() }}>
|
|
76
|
+
<ChartDataContextProvider chartData={cp().data} />
|
|
77
|
+
<ReportMainChartProps layout={layout()} margin={margin()} />
|
|
78
|
+
<ReportEventSettings
|
|
79
|
+
throttleDelay={cp().throttleDelay}
|
|
80
|
+
throttledEvents={cp().throttledEvents}
|
|
81
|
+
/>
|
|
82
|
+
<ReportChartProps {...updatable()} />
|
|
83
|
+
{/* Spread WITHOUT children (a `{...cp()}` spread eagerly evaluates the
|
|
84
|
+
children getter here, before the provider sets context — running them
|
|
85
|
+
outside the store); pass children as a lazy JSX child instead. */}
|
|
86
|
+
<CategoricalChart {...omit(cp(), "children")} ref={props.ref}>
|
|
87
|
+
{cp().children}
|
|
88
|
+
</CategoricalChart>
|
|
89
|
+
</RechartsStoreProvider>
|
|
90
|
+
);
|
|
91
|
+
};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// Ported from recharts 3.8.1 src/chart/CategoricalChart.tsx (commit 7a23854).
|
|
2
|
+
//
|
|
3
|
+
// Solid deviations: `forwardRef` → `ref` prop; no destructuring (omit + props);
|
|
4
|
+
// `className` → `class`. The `compact` (Brush panorama) branch is deferred. Event
|
|
5
|
+
// handlers are not forwarded yet (RechartsWrapper is render-only).
|
|
6
|
+
import { omit } from "solid-js";
|
|
7
|
+
import type { JSX } from "@solidjs/web";
|
|
8
|
+
import { RootSurface } from "../container/RootSurface";
|
|
9
|
+
import { RechartsWrapper } from "./RechartsWrapper";
|
|
10
|
+
import { ClipPathProvider } from "../container/ClipPathProvider";
|
|
11
|
+
import { CartesianChartProps } from "../util/types";
|
|
12
|
+
import { svgPropertiesNoEventsKeepCase } from "../util/svgPropertiesNoEvents";
|
|
13
|
+
|
|
14
|
+
export interface CategoricalChartProps extends CartesianChartProps {
|
|
15
|
+
ref?: SVGSVGElement | ((el: SVGSVGElement) => void);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export const CategoricalChart = (props: CategoricalChartProps): JSX.Element => {
|
|
19
|
+
const attrs = (): Record<string, unknown> =>
|
|
20
|
+
svgPropertiesNoEventsKeepCase({
|
|
21
|
+
...omit(
|
|
22
|
+
props,
|
|
23
|
+
"width",
|
|
24
|
+
"height",
|
|
25
|
+
"responsive",
|
|
26
|
+
"children",
|
|
27
|
+
"class",
|
|
28
|
+
"style",
|
|
29
|
+
"compact",
|
|
30
|
+
"title",
|
|
31
|
+
"desc",
|
|
32
|
+
"ref",
|
|
33
|
+
),
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
return (
|
|
37
|
+
<RechartsWrapper
|
|
38
|
+
class={props.class}
|
|
39
|
+
style={props.style}
|
|
40
|
+
width={props.width}
|
|
41
|
+
height={props.height}
|
|
42
|
+
responsive={props.responsive ?? false}
|
|
43
|
+
onClick={props.onClick}
|
|
44
|
+
onMouseLeave={props.onMouseLeave}
|
|
45
|
+
onMouseEnter={props.onMouseEnter}
|
|
46
|
+
onMouseMove={props.onMouseMove}
|
|
47
|
+
onMouseDown={props.onMouseDown}
|
|
48
|
+
onMouseUp={props.onMouseUp}
|
|
49
|
+
onContextMenu={props.onContextMenu}
|
|
50
|
+
onDoubleClick={props.onDoubleClick}
|
|
51
|
+
onTouchStart={props.onTouchStart}
|
|
52
|
+
onTouchMove={props.onTouchMove}
|
|
53
|
+
onTouchEnd={props.onTouchEnd}
|
|
54
|
+
>
|
|
55
|
+
<RootSurface otherAttributes={attrs()} title={props.title} desc={props.desc} ref={props.ref}>
|
|
56
|
+
<ClipPathProvider>{props.children}</ClipPathProvider>
|
|
57
|
+
</RootSurface>
|
|
58
|
+
</RechartsWrapper>
|
|
59
|
+
);
|
|
60
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Ported from recharts 3.8.1 src/chart/ComposedChart.tsx (commit 7a23854).
|
|
2
|
+
// `forwardRef` → `ref` prop; thin user-facing wrapper over CartesianChart.
|
|
3
|
+
import type { JSX } from "@solidjs/web";
|
|
4
|
+
import { arrayTooltipSearcher } from "../state/optionsSlice";
|
|
5
|
+
import { CartesianChart } from "./CartesianChart";
|
|
6
|
+
import { CartesianChartProps, TooltipEventType } from "../util/types";
|
|
7
|
+
|
|
8
|
+
const allowedTooltipTypes: ReadonlyArray<TooltipEventType> = ["axis"];
|
|
9
|
+
|
|
10
|
+
export interface ComposedChartProps<
|
|
11
|
+
DataPointType = unknown,
|
|
12
|
+
> extends CartesianChartProps<DataPointType> {
|
|
13
|
+
ref?: SVGSVGElement | ((el: SVGSVGElement) => void);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export function ComposedChart<DataPointType = unknown>(
|
|
17
|
+
props: ComposedChartProps<DataPointType>,
|
|
18
|
+
): JSX.Element {
|
|
19
|
+
return (
|
|
20
|
+
<CartesianChart
|
|
21
|
+
chartName="ComposedChart"
|
|
22
|
+
defaultTooltipEventType="axis"
|
|
23
|
+
validateTooltipEventTypes={allowedTooltipTypes}
|
|
24
|
+
tooltipPayloadSearcher={arrayTooltipSearcher}
|
|
25
|
+
categoricalChartProps={props}
|
|
26
|
+
ref={props.ref}
|
|
27
|
+
/>
|
|
28
|
+
);
|
|
29
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Ported from recharts 3.8.1 src/chart/FunnelChart.tsx (commit 7a23854).
|
|
2
|
+
// `forwardRef` → `ref` prop; thin user-facing wrapper over CartesianChart.
|
|
3
|
+
import type { JSX } from "@solidjs/web";
|
|
4
|
+
import { arrayTooltipSearcher } from "../state/optionsSlice";
|
|
5
|
+
import { CartesianChart } from "./CartesianChart";
|
|
6
|
+
import { CartesianChartProps, TooltipEventType } from "../util/types";
|
|
7
|
+
|
|
8
|
+
const allowedTooltipTypes: ReadonlyArray<TooltipEventType> = ["item"];
|
|
9
|
+
|
|
10
|
+
export interface FunnelChartProps<
|
|
11
|
+
DataPointType = unknown,
|
|
12
|
+
> extends CartesianChartProps<DataPointType> {
|
|
13
|
+
ref?: SVGSVGElement | ((el: SVGSVGElement) => void);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export function FunnelChart<DataPointType = unknown>(
|
|
17
|
+
props: FunnelChartProps<DataPointType>,
|
|
18
|
+
): JSX.Element {
|
|
19
|
+
return (
|
|
20
|
+
<CartesianChart
|
|
21
|
+
chartName="FunnelChart"
|
|
22
|
+
defaultTooltipEventType="item"
|
|
23
|
+
validateTooltipEventTypes={allowedTooltipTypes}
|
|
24
|
+
tooltipPayloadSearcher={arrayTooltipSearcher}
|
|
25
|
+
categoricalChartProps={props}
|
|
26
|
+
ref={props.ref}
|
|
27
|
+
/>
|
|
28
|
+
);
|
|
29
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Ported from recharts 3.8.1 src/chart/LineChart.tsx (commit 7a23854).
|
|
2
|
+
// `forwardRef` → `ref` prop; the user-facing convenience wrapper over CartesianChart.
|
|
3
|
+
import type { JSX } from "@solidjs/web";
|
|
4
|
+
import { arrayTooltipSearcher } from "../state/optionsSlice";
|
|
5
|
+
import { CartesianChart } from "./CartesianChart";
|
|
6
|
+
import { CartesianChartProps, TooltipEventType } from "../util/types";
|
|
7
|
+
|
|
8
|
+
const allowedTooltipTypes: ReadonlyArray<TooltipEventType> = ["axis"];
|
|
9
|
+
|
|
10
|
+
export interface LineChartProps<
|
|
11
|
+
DataPointType = unknown,
|
|
12
|
+
> extends CartesianChartProps<DataPointType> {
|
|
13
|
+
ref?: SVGSVGElement | ((el: SVGSVGElement) => void);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export function LineChart<DataPointType = unknown>(
|
|
17
|
+
props: LineChartProps<DataPointType>,
|
|
18
|
+
): JSX.Element {
|
|
19
|
+
return (
|
|
20
|
+
<CartesianChart
|
|
21
|
+
chartName="LineChart"
|
|
22
|
+
defaultTooltipEventType="axis"
|
|
23
|
+
validateTooltipEventTypes={allowedTooltipTypes}
|
|
24
|
+
tooltipPayloadSearcher={arrayTooltipSearcher}
|
|
25
|
+
categoricalChartProps={props}
|
|
26
|
+
ref={props.ref}
|
|
27
|
+
/>
|
|
28
|
+
);
|
|
29
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// Ported from recharts 3.8.1 src/chart/PieChart.tsx (commit 7a23854).
|
|
2
|
+
// `forwardRef` → `ref` prop; the user-facing convenience wrapper over PolarChart.
|
|
3
|
+
// `resolveDefaultProps` → Solid `merge` (lazy proxy — does NOT eagerly evaluate
|
|
4
|
+
// the `children` getter, unlike an object spread). PieChart-specific defaults
|
|
5
|
+
// (layout "centric", startAngle 0, endAngle 360) win over PolarChart's polar
|
|
6
|
+
// defaults. `ref` is omitted from categoricalChartProps and passed separately,
|
|
7
|
+
// mirroring the reference's forwardRef split.
|
|
8
|
+
import { merge, omit } from "solid-js";
|
|
9
|
+
import type { JSX } from "@solidjs/web";
|
|
10
|
+
import { arrayTooltipSearcher } from "../state/optionsSlice";
|
|
11
|
+
import { PolarChart } from "./PolarChart";
|
|
12
|
+
import { PolarChartProps, TooltipEventType } from "../util/types";
|
|
13
|
+
|
|
14
|
+
const allowedTooltipTypes: ReadonlyArray<TooltipEventType> = ["item"];
|
|
15
|
+
|
|
16
|
+
const defaultPieChartProps = {
|
|
17
|
+
layout: "centric",
|
|
18
|
+
startAngle: 0,
|
|
19
|
+
endAngle: 360,
|
|
20
|
+
} as const satisfies Partial<PolarChartProps>;
|
|
21
|
+
|
|
22
|
+
export interface PieChartProps<DataPointType = unknown> extends PolarChartProps<DataPointType> {
|
|
23
|
+
ref?: SVGSVGElement | ((el: SVGSVGElement) => void);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function PieChart<DataPointType = unknown>(
|
|
27
|
+
props: PieChartProps<DataPointType>,
|
|
28
|
+
): JSX.Element {
|
|
29
|
+
const categoricalChartProps = merge(defaultPieChartProps, omit(props, "ref"));
|
|
30
|
+
|
|
31
|
+
return (
|
|
32
|
+
<PolarChart
|
|
33
|
+
chartName="PieChart"
|
|
34
|
+
defaultTooltipEventType="item"
|
|
35
|
+
validateTooltipEventTypes={allowedTooltipTypes}
|
|
36
|
+
tooltipPayloadSearcher={arrayTooltipSearcher}
|
|
37
|
+
categoricalChartProps={categoricalChartProps}
|
|
38
|
+
ref={props.ref}
|
|
39
|
+
/>
|
|
40
|
+
);
|
|
41
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
// Ported from recharts 3.8.1 src/chart/PolarChart.tsx (commit 7a23854).
|
|
2
|
+
//
|
|
3
|
+
// Solid deviations: `forwardRef` → `ref` prop; `resolveDefaultProps` → per-field
|
|
4
|
+
// `?? default` accessors (see the defaults-use-solid-merge memory). Mirrors the
|
|
5
|
+
// Solid CartesianChart, with `layout` defaulting to "radial", `baseValue` always
|
|
6
|
+
// undefined for polar, and a ReportPolarOptions reporting the polar geometry.
|
|
7
|
+
// The polar geometry props (cx/cy/innerRadius/outerRadius/startAngle/endAngle)
|
|
8
|
+
// pass through to CategoricalChart exactly as in the reference — svgPropertiesNoEvents
|
|
9
|
+
// forwards cx/cy onto the root <svg> (faithful) and drops the rest.
|
|
10
|
+
import { omit } from "solid-js";
|
|
11
|
+
import type { JSX } from "@solidjs/web";
|
|
12
|
+
import { ChartOptions } from "../state/optionsSlice";
|
|
13
|
+
import { RechartsStoreProvider } from "../state/RechartsStoreProvider";
|
|
14
|
+
import { ChartDataContextProvider } from "../context/chartDataContext";
|
|
15
|
+
import { ReportMainChartProps } from "../state/ReportMainChartProps";
|
|
16
|
+
import { ReportChartProps } from "../state/ReportChartProps";
|
|
17
|
+
import { ReportEventSettings } from "../state/ReportEventSettings";
|
|
18
|
+
import { ReportPolarOptions } from "../state/ReportPolarOptions";
|
|
19
|
+
import { Margin, PolarChartProps, PolarLayout, TooltipEventType } from "../util/types";
|
|
20
|
+
import { TooltipPayloadSearcher } from "../state/tooltipSlice";
|
|
21
|
+
import { UpdatableChartOptions } from "../state/rootPropsSlice";
|
|
22
|
+
import { PolarChartOptions as PolarOptionsPayload } from "../state/polarOptionsSlice";
|
|
23
|
+
import { CategoricalChart } from "./CategoricalChart";
|
|
24
|
+
|
|
25
|
+
const defaultMargin: Margin = { top: 5, right: 5, bottom: 5, left: 5 };
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* One-time, immutable options that decide a Polar chart's behavior. Users
|
|
29
|
+
* usually go through a convenience component (PieChart, RadarChart, …) which
|
|
30
|
+
* supplies the cx/cy/innerRadius/outerRadius/startAngle/endAngle defaults.
|
|
31
|
+
*/
|
|
32
|
+
export interface PolarChartOptions {
|
|
33
|
+
chartName: string;
|
|
34
|
+
defaultTooltipEventType: TooltipEventType;
|
|
35
|
+
validateTooltipEventTypes: ReadonlyArray<TooltipEventType>;
|
|
36
|
+
tooltipPayloadSearcher: TooltipPayloadSearcher;
|
|
37
|
+
categoricalChartProps: PolarChartProps;
|
|
38
|
+
ref?: SVGSVGElement | ((el: SVGSVGElement) => void);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export const PolarChart = (props: PolarChartOptions): JSX.Element => {
|
|
42
|
+
const cp = (): PolarChartProps => props.categoricalChartProps;
|
|
43
|
+
|
|
44
|
+
const options = (): ChartOptions => ({
|
|
45
|
+
chartName: props.chartName,
|
|
46
|
+
defaultTooltipEventType: props.defaultTooltipEventType,
|
|
47
|
+
validateTooltipEventTypes: props.validateTooltipEventTypes,
|
|
48
|
+
tooltipPayloadSearcher: props.tooltipPayloadSearcher,
|
|
49
|
+
eventEmitter: undefined,
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
const layout = (): PolarLayout => cp().layout ?? "radial";
|
|
53
|
+
const margin = (): Partial<Margin> => cp().margin ?? defaultMargin;
|
|
54
|
+
|
|
55
|
+
const updatable = (): UpdatableChartOptions => ({
|
|
56
|
+
accessibilityLayer: cp().accessibilityLayer ?? true,
|
|
57
|
+
barCategoryGap: cp().barCategoryGap ?? "10%",
|
|
58
|
+
barGap: cp().barGap ?? 4,
|
|
59
|
+
barSize: cp().barSize,
|
|
60
|
+
class: cp().class,
|
|
61
|
+
maxBarSize: cp().maxBarSize,
|
|
62
|
+
stackOffset: cp().stackOffset ?? "none",
|
|
63
|
+
syncId: cp().syncId,
|
|
64
|
+
syncMethod: cp().syncMethod ?? "index",
|
|
65
|
+
// Polar charts never expose a baseValue.
|
|
66
|
+
baseValue: undefined,
|
|
67
|
+
reverseStackOrder: cp().reverseStackOrder ?? false,
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
const polar = (): PolarOptionsPayload => ({
|
|
71
|
+
cx: cp().cx ?? "50%",
|
|
72
|
+
cy: cp().cy ?? "50%",
|
|
73
|
+
startAngle: cp().startAngle ?? 0,
|
|
74
|
+
endAngle: cp().endAngle ?? 360,
|
|
75
|
+
innerRadius: cp().innerRadius ?? 0,
|
|
76
|
+
outerRadius: cp().outerRadius ?? "80%",
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
return (
|
|
80
|
+
<RechartsStoreProvider preloadedState={{ options: options() }}>
|
|
81
|
+
<ChartDataContextProvider chartData={cp().data} />
|
|
82
|
+
<ReportMainChartProps layout={layout()} margin={margin()} />
|
|
83
|
+
<ReportEventSettings
|
|
84
|
+
throttleDelay={cp().throttleDelay}
|
|
85
|
+
throttledEvents={cp().throttledEvents}
|
|
86
|
+
/>
|
|
87
|
+
<ReportChartProps {...updatable()} />
|
|
88
|
+
<ReportPolarOptions {...polar()} />
|
|
89
|
+
{/* Spread WITHOUT children (a `{...cp()}` spread eagerly evaluates the
|
|
90
|
+
children getter here, before the provider sets context — running them
|
|
91
|
+
outside the store); pass children as a lazy JSX child instead. */}
|
|
92
|
+
<CategoricalChart {...omit(cp(), "children")} ref={props.ref}>
|
|
93
|
+
{cp().children}
|
|
94
|
+
</CategoricalChart>
|
|
95
|
+
</RechartsStoreProvider>
|
|
96
|
+
);
|
|
97
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// Ported from recharts 3.8.1 src/chart/RadarChart.tsx (commit 7a23854).
|
|
2
|
+
// `forwardRef`→`ref` prop; `resolveDefaultProps`→`merge` (lazy proxy, see PieChart).
|
|
3
|
+
// RadarChart-specific defaults: layout "centric", startAngle 90, endAngle -270.
|
|
4
|
+
import { merge, omit } from "solid-js";
|
|
5
|
+
import type { JSX } from "@solidjs/web";
|
|
6
|
+
import { arrayTooltipSearcher } from "../state/optionsSlice";
|
|
7
|
+
import { PolarChart } from "./PolarChart";
|
|
8
|
+
import { PolarChartProps, TooltipEventType } from "../util/types";
|
|
9
|
+
|
|
10
|
+
const allowedTooltipTypes: ReadonlyArray<TooltipEventType> = ["axis"];
|
|
11
|
+
|
|
12
|
+
const defaultRadarChartProps = {
|
|
13
|
+
layout: "centric",
|
|
14
|
+
startAngle: 90,
|
|
15
|
+
endAngle: -270,
|
|
16
|
+
} as const satisfies Partial<PolarChartProps>;
|
|
17
|
+
|
|
18
|
+
export interface RadarChartProps<DataPointType = unknown> extends PolarChartProps<DataPointType> {
|
|
19
|
+
ref?: SVGSVGElement | ((el: SVGSVGElement) => void);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function RadarChart<DataPointType = unknown>(
|
|
23
|
+
props: RadarChartProps<DataPointType>,
|
|
24
|
+
): JSX.Element {
|
|
25
|
+
const categoricalChartProps = merge(defaultRadarChartProps, omit(props, "ref"));
|
|
26
|
+
|
|
27
|
+
return (
|
|
28
|
+
<PolarChart
|
|
29
|
+
chartName="RadarChart"
|
|
30
|
+
defaultTooltipEventType="axis"
|
|
31
|
+
validateTooltipEventTypes={allowedTooltipTypes}
|
|
32
|
+
tooltipPayloadSearcher={arrayTooltipSearcher}
|
|
33
|
+
categoricalChartProps={categoricalChartProps}
|
|
34
|
+
ref={props.ref}
|
|
35
|
+
/>
|
|
36
|
+
);
|
|
37
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// Ported from recharts 3.8.1 src/chart/RadialBarChart.tsx (commit 7a23854).
|
|
2
|
+
// `forwardRef`→`ref` prop; `resolveDefaultProps`→`merge`. RadialBarChart defaults:
|
|
3
|
+
// layout "radial", startAngle 0, endAngle 360 (PolarChart fills cx/cy/radii).
|
|
4
|
+
import { merge, omit } from "solid-js";
|
|
5
|
+
import type { JSX } from "@solidjs/web";
|
|
6
|
+
import { arrayTooltipSearcher } from "../state/optionsSlice";
|
|
7
|
+
import { PolarChart } from "./PolarChart";
|
|
8
|
+
import { PolarChartProps, TooltipEventType } from "../util/types";
|
|
9
|
+
|
|
10
|
+
const allowedTooltipTypes: ReadonlyArray<TooltipEventType> = ["axis", "item"];
|
|
11
|
+
|
|
12
|
+
const defaultRadialBarChartProps = {
|
|
13
|
+
layout: "radial",
|
|
14
|
+
startAngle: 0,
|
|
15
|
+
endAngle: 360,
|
|
16
|
+
} as const satisfies Partial<PolarChartProps>;
|
|
17
|
+
|
|
18
|
+
export interface RadialBarChartProps<
|
|
19
|
+
DataPointType = unknown,
|
|
20
|
+
> extends PolarChartProps<DataPointType> {
|
|
21
|
+
ref?: SVGSVGElement | ((el: SVGSVGElement) => void);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export function RadialBarChart<DataPointType = unknown>(
|
|
25
|
+
props: RadialBarChartProps<DataPointType>,
|
|
26
|
+
): JSX.Element {
|
|
27
|
+
const categoricalChartProps = merge(defaultRadialBarChartProps, omit(props, "ref"));
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
<PolarChart
|
|
31
|
+
chartName="RadialBarChart"
|
|
32
|
+
defaultTooltipEventType="axis"
|
|
33
|
+
validateTooltipEventTypes={allowedTooltipTypes}
|
|
34
|
+
tooltipPayloadSearcher={arrayTooltipSearcher}
|
|
35
|
+
categoricalChartProps={categoricalChartProps}
|
|
36
|
+
ref={props.ref}
|
|
37
|
+
/>
|
|
38
|
+
);
|
|
39
|
+
}
|