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,60 @@
|
|
|
1
|
+
// Ported from recharts 3.8.1 src/state/brushSlice.ts (commit 7a23854).
|
|
2
|
+
// FULL SOLID-NATIVE REWRITE (no Redux). Brush is a deferred vertical; this slice
|
|
3
|
+
// is wired into the store so the offset can read `brush.height` (0 by default).
|
|
4
|
+
import { createStore } from "solid-js";
|
|
5
|
+
import { Padding } from "../util/types";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Of all Brush properties, only `height` has a default and is always defined.
|
|
9
|
+
* The others are nullable and computed from offsets/margins when not set.
|
|
10
|
+
*/
|
|
11
|
+
export type BrushSettings = {
|
|
12
|
+
x: number | undefined;
|
|
13
|
+
y: number | undefined;
|
|
14
|
+
width: number | undefined;
|
|
15
|
+
height: number;
|
|
16
|
+
padding: Padding;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export const initialBrushState: BrushSettings = {
|
|
20
|
+
// x/y/width are nullable: when unset, selectBrushDimensions derives them from the
|
|
21
|
+
// chart offset (brush spans the plot width, just below the plot area).
|
|
22
|
+
x: undefined,
|
|
23
|
+
y: undefined,
|
|
24
|
+
width: undefined,
|
|
25
|
+
height: 0,
|
|
26
|
+
padding: { top: 0, right: 0, bottom: 0, left: 0 },
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export interface BrushActions {
|
|
30
|
+
setBrushSettings(payload: BrushSettings | null): void;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export interface BrushSlice {
|
|
34
|
+
readonly state: BrushSettings;
|
|
35
|
+
readonly actions: BrushActions;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export function createBrushSlice(initialState: BrushSettings = initialBrushState): BrushSlice {
|
|
39
|
+
const [state, setState] = createStore<BrushSettings>({
|
|
40
|
+
...initialState,
|
|
41
|
+
padding: { ...initialState.padding },
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
const actions: BrushActions = {
|
|
45
|
+
// The reducer replaces the whole settings object (or resets to initial when
|
|
46
|
+
// null); draft-first assignment of every field applies the full replacement.
|
|
47
|
+
setBrushSettings(payload) {
|
|
48
|
+
const next = payload ?? initialBrushState;
|
|
49
|
+
setState((s) => {
|
|
50
|
+
s.x = next.x;
|
|
51
|
+
s.y = next.y;
|
|
52
|
+
s.width = next.width;
|
|
53
|
+
s.height = next.height;
|
|
54
|
+
s.padding = { ...next.padding };
|
|
55
|
+
});
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
return { state, actions };
|
|
60
|
+
}
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
// Ported from recharts 3.8.1 src/state/cartesianAxisSlice.ts (commit 7a23854).
|
|
2
|
+
//
|
|
3
|
+
// FULL SOLID-NATIVE REWRITE of the state layer (no Redux/immer — see the
|
|
4
|
+
// state-architecture decision). recharts' `createSlice` becomes a factory
|
|
5
|
+
// returning `{ state, actions }` (a Solid store + draft-first setters); the X/Y
|
|
6
|
+
// axis maps are `Record<AxisId, …Settings>` stored as a Solid store.
|
|
7
|
+
//
|
|
8
|
+
// Deviations: `DataKey<any>`/`TickProp<any>` → `<unknown>` (this repo bans
|
|
9
|
+
// `any`). `castDraft`/immer are unnecessary — Solid's setter takes a mutable
|
|
10
|
+
// draft. The `add/replace/remove` reducers (RTK `prepareAutoBatched`) become
|
|
11
|
+
// plain action functions; batching is handled by Solid's store microtask.
|
|
12
|
+
import { createStore } from "solid-js";
|
|
13
|
+
import type {
|
|
14
|
+
AxisDomain,
|
|
15
|
+
AxisInterval,
|
|
16
|
+
AxisTick,
|
|
17
|
+
CartesianTickContentProps,
|
|
18
|
+
DataKey,
|
|
19
|
+
EvaluatedAxisDomainType,
|
|
20
|
+
ScaleType,
|
|
21
|
+
TickFormatter,
|
|
22
|
+
TickProp,
|
|
23
|
+
} from "../util/types";
|
|
24
|
+
import type { CustomScaleDefinition } from "../util/scale/CustomScaleDefinition";
|
|
25
|
+
// Type-only import; axisSelectors imports types back from here — the cycle is
|
|
26
|
+
// erased at runtime (same as the reference's `import type { AxisRange }`).
|
|
27
|
+
import type { AxisRange } from "./selectors/axisSelectors";
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Identifies an axis within a chart. Users may give an axis a string or number
|
|
31
|
+
* id; graphical items reference the axis they use by this id. Every chart has a
|
|
32
|
+
* default axis under {@link defaultAxisId}.
|
|
33
|
+
*/
|
|
34
|
+
export type AxisId = string | number;
|
|
35
|
+
|
|
36
|
+
export const defaultAxisId: AxisId = 0;
|
|
37
|
+
|
|
38
|
+
export type XAxisPadding = { left?: number; right?: number } | "gap" | "no-gap";
|
|
39
|
+
export type YAxisPadding = { top?: number; bottom?: number } | "gap" | "no-gap";
|
|
40
|
+
|
|
41
|
+
export type XAxisOrientation = "top" | "bottom";
|
|
42
|
+
export type YAxisOrientation = "left" | "right";
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Properties shared in X, Y, and Z axes. User-defined axis settings, coming
|
|
46
|
+
* from props.
|
|
47
|
+
*/
|
|
48
|
+
export type BaseCartesianAxis = {
|
|
49
|
+
id: AxisId;
|
|
50
|
+
scale:
|
|
51
|
+
| ScaleType
|
|
52
|
+
| CustomScaleDefinition
|
|
53
|
+
| CustomScaleDefinition<string>
|
|
54
|
+
| CustomScaleDefinition<number>
|
|
55
|
+
| CustomScaleDefinition<Date>;
|
|
56
|
+
/**
|
|
57
|
+
* Before creating this object, the domain type is evaluated based on the chart
|
|
58
|
+
* layout so that we have the 'auto' resolved.
|
|
59
|
+
*/
|
|
60
|
+
type: EvaluatedAxisDomainType;
|
|
61
|
+
/**
|
|
62
|
+
* The axis functionality is severely restricted without a dataKey — but there
|
|
63
|
+
* is still something left, and the prop is optional, so this can be undefined
|
|
64
|
+
* even in real charts. There are no defaults.
|
|
65
|
+
*/
|
|
66
|
+
dataKey: DataKey<never> | undefined;
|
|
67
|
+
unit: string | undefined;
|
|
68
|
+
name: string | undefined;
|
|
69
|
+
allowDuplicatedCategory: boolean;
|
|
70
|
+
allowDataOverflow: boolean;
|
|
71
|
+
reversed: boolean;
|
|
72
|
+
includeHidden: boolean;
|
|
73
|
+
domain: AxisDomain | undefined;
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Controls how Recharts calculates "nice" tick values for numerical axes.
|
|
78
|
+
*
|
|
79
|
+
* - `'none'`: no tick-rounding algorithm; positions come entirely from d3 (evenly
|
|
80
|
+
* spaced but not rounded). No domain-extension logic.
|
|
81
|
+
* - `'auto'` *(default)*: decides whether/how to apply niceties from the domain
|
|
82
|
+
* definition; `'auto'` keyword → `'adaptive'` with possible domain extension,
|
|
83
|
+
* otherwise the same algorithm within the fixed domain (mirrors Recharts v2).
|
|
84
|
+
* - `'adaptive'`: always the space-efficient algorithm (`getAdaptiveStep`).
|
|
85
|
+
* - `'snap125'`: always the round-numbers algorithm (`getSnap125Step`), snapping
|
|
86
|
+
* steps to {1, 2, 2.5, 5} × 10ⁿ.
|
|
87
|
+
*
|
|
88
|
+
* @see {@link https://recharts.github.io/guide/axisTicks/}
|
|
89
|
+
*/
|
|
90
|
+
export type NiceTicksAlgorithm = "none" | "auto" | "adaptive" | "snap125";
|
|
91
|
+
|
|
92
|
+
export type TicksSettings = {
|
|
93
|
+
allowDecimals: boolean;
|
|
94
|
+
/**
|
|
95
|
+
* Suggested number of ticks passed to d3 (a hint; d3 may return more or fewer).
|
|
96
|
+
* If undefined, d3 decides on its own (default 10, varies by domain).
|
|
97
|
+
*/
|
|
98
|
+
tickCount: number | undefined;
|
|
99
|
+
/**
|
|
100
|
+
* Ticks can be any type on a category axis; must be numbers on a number axis.
|
|
101
|
+
*/
|
|
102
|
+
ticks: ReadonlyArray<AxisTick> | undefined;
|
|
103
|
+
tick: TickProp<CartesianTickContentProps>;
|
|
104
|
+
/**
|
|
105
|
+
* Controls how Recharts calculates "nice" tick values for this axis.
|
|
106
|
+
* @defaultValue 'auto'
|
|
107
|
+
*/
|
|
108
|
+
niceTicks: NiceTicksAlgorithm;
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* External props, visible to users via the public API. All sorts of internal
|
|
113
|
+
* computed things derive from these, but they come through selectors.
|
|
114
|
+
*
|
|
115
|
+
* Properties shared between X and Y axes.
|
|
116
|
+
*/
|
|
117
|
+
export type CartesianAxisSettings = BaseCartesianAxis &
|
|
118
|
+
TicksSettings & {
|
|
119
|
+
interval: AxisInterval;
|
|
120
|
+
mirror: boolean;
|
|
121
|
+
minTickGap: number;
|
|
122
|
+
angle: number;
|
|
123
|
+
hide: boolean;
|
|
124
|
+
tickFormatter: TickFormatter | undefined;
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
export type XAxisSettings = CartesianAxisSettings & {
|
|
128
|
+
padding: XAxisPadding;
|
|
129
|
+
height: number;
|
|
130
|
+
orientation: XAxisOrientation;
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
export type YAxisWidth = number | "auto";
|
|
134
|
+
|
|
135
|
+
export type YAxisSettings = CartesianAxisSettings & {
|
|
136
|
+
padding: YAxisPadding;
|
|
137
|
+
width: YAxisWidth;
|
|
138
|
+
orientation: YAxisOrientation;
|
|
139
|
+
widthHistory?: number[];
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Z axis is special — it's never displayed. It controls the size of Scatter
|
|
144
|
+
* dots but never shows ticks anywhere.
|
|
145
|
+
*/
|
|
146
|
+
export type ZAxisSettings = BaseCartesianAxis & {
|
|
147
|
+
range: AxisRange;
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
export type AxisMapState = {
|
|
151
|
+
xAxis: Record<AxisId, XAxisSettings>;
|
|
152
|
+
yAxis: Record<AxisId, YAxisSettings>;
|
|
153
|
+
zAxis: Record<AxisId, ZAxisSettings>;
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
export const initialCartesianAxisState: AxisMapState = {
|
|
157
|
+
xAxis: {},
|
|
158
|
+
yAxis: {},
|
|
159
|
+
zAxis: {},
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
interface ReplacePayload<T> {
|
|
163
|
+
prev: T;
|
|
164
|
+
next: T;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
export interface CartesianAxisActions {
|
|
168
|
+
addXAxis(axis: XAxisSettings): void;
|
|
169
|
+
replaceXAxis(payload: ReplacePayload<XAxisSettings>): void;
|
|
170
|
+
removeXAxis(axis: XAxisSettings): void;
|
|
171
|
+
addYAxis(axis: YAxisSettings): void;
|
|
172
|
+
replaceYAxis(payload: ReplacePayload<YAxisSettings>): void;
|
|
173
|
+
removeYAxis(axis: YAxisSettings): void;
|
|
174
|
+
addZAxis(axis: ZAxisSettings): void;
|
|
175
|
+
replaceZAxis(payload: ReplacePayload<ZAxisSettings>): void;
|
|
176
|
+
removeZAxis(axis: ZAxisSettings): void;
|
|
177
|
+
updateYAxisWidth(payload: { id: AxisId; width: number }): void;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
export interface CartesianAxisSlice {
|
|
181
|
+
readonly state: AxisMapState;
|
|
182
|
+
readonly actions: CartesianAxisActions;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* This is the slice where each individual Axis element pushes its own
|
|
187
|
+
* configuration. Prefer this one over the legacy axisSlice.
|
|
188
|
+
*/
|
|
189
|
+
export function createCartesianAxisSlice(
|
|
190
|
+
initialState: AxisMapState = initialCartesianAxisState,
|
|
191
|
+
): CartesianAxisSlice {
|
|
192
|
+
const [state, setState] = createStore<AxisMapState>({
|
|
193
|
+
xAxis: { ...initialState.xAxis },
|
|
194
|
+
yAxis: { ...initialState.yAxis },
|
|
195
|
+
zAxis: { ...initialState.zAxis },
|
|
196
|
+
});
|
|
197
|
+
|
|
198
|
+
const actions: CartesianAxisActions = {
|
|
199
|
+
addXAxis(axis) {
|
|
200
|
+
setState((s) => {
|
|
201
|
+
s.xAxis[axis.id] = axis;
|
|
202
|
+
});
|
|
203
|
+
},
|
|
204
|
+
replaceXAxis({ prev, next }) {
|
|
205
|
+
setState((s) => {
|
|
206
|
+
if (s.xAxis[prev.id] !== undefined) {
|
|
207
|
+
if (prev.id !== next.id) {
|
|
208
|
+
delete s.xAxis[prev.id];
|
|
209
|
+
}
|
|
210
|
+
s.xAxis[next.id] = next;
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
},
|
|
214
|
+
removeXAxis(axis) {
|
|
215
|
+
setState((s) => {
|
|
216
|
+
delete s.xAxis[axis.id];
|
|
217
|
+
});
|
|
218
|
+
},
|
|
219
|
+
addYAxis(axis) {
|
|
220
|
+
setState((s) => {
|
|
221
|
+
s.yAxis[axis.id] = axis;
|
|
222
|
+
});
|
|
223
|
+
},
|
|
224
|
+
replaceYAxis({ prev, next }) {
|
|
225
|
+
setState((s) => {
|
|
226
|
+
if (s.yAxis[prev.id] !== undefined) {
|
|
227
|
+
if (prev.id !== next.id) {
|
|
228
|
+
delete s.yAxis[prev.id];
|
|
229
|
+
}
|
|
230
|
+
s.yAxis[next.id] = next;
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
},
|
|
234
|
+
removeYAxis(axis) {
|
|
235
|
+
setState((s) => {
|
|
236
|
+
delete s.yAxis[axis.id];
|
|
237
|
+
});
|
|
238
|
+
},
|
|
239
|
+
addZAxis(axis) {
|
|
240
|
+
setState((s) => {
|
|
241
|
+
s.zAxis[axis.id] = axis;
|
|
242
|
+
});
|
|
243
|
+
},
|
|
244
|
+
replaceZAxis({ prev, next }) {
|
|
245
|
+
setState((s) => {
|
|
246
|
+
if (s.zAxis[prev.id] !== undefined) {
|
|
247
|
+
if (prev.id !== next.id) {
|
|
248
|
+
delete s.zAxis[prev.id];
|
|
249
|
+
}
|
|
250
|
+
s.zAxis[next.id] = next;
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
},
|
|
254
|
+
removeZAxis(axis) {
|
|
255
|
+
setState((s) => {
|
|
256
|
+
delete s.zAxis[axis.id];
|
|
257
|
+
});
|
|
258
|
+
},
|
|
259
|
+
updateYAxisWidth({ id, width }) {
|
|
260
|
+
setState((s) => {
|
|
261
|
+
const axis = s.yAxis[id];
|
|
262
|
+
if (axis) {
|
|
263
|
+
const history = axis.widthHistory || [];
|
|
264
|
+
// An oscillation is detected when the new width matches the width
|
|
265
|
+
// before the last one — a simple A -> B -> A pattern. If the next
|
|
266
|
+
// width is B and the difference is under 1 pixel, we ignore it.
|
|
267
|
+
if (
|
|
268
|
+
history.length === 3 &&
|
|
269
|
+
history[0] === history[2] &&
|
|
270
|
+
width === history[1] &&
|
|
271
|
+
width !== axis.width &&
|
|
272
|
+
Math.abs(width - (history[0] ?? 0)) <= 1
|
|
273
|
+
) {
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
const newHistory = [...history, width].slice(-3);
|
|
277
|
+
s.yAxis[id] = {
|
|
278
|
+
...axis,
|
|
279
|
+
width,
|
|
280
|
+
widthHistory: newHistory,
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
});
|
|
284
|
+
},
|
|
285
|
+
};
|
|
286
|
+
|
|
287
|
+
return { state, actions };
|
|
288
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
// Ported from recharts 3.8.1 src/state/chartDataSlice.ts (commit 7a23854).
|
|
2
|
+
//
|
|
3
|
+
// FULL SOLID-NATIVE REWRITE of the state layer (no Redux — see the project's
|
|
4
|
+
// state-architecture decision). A "slice" becomes a factory that creates a Solid
|
|
5
|
+
// `createStore` plus action functions that update it with draft-first setters.
|
|
6
|
+
// The reducer + action-creator shape of RTK is gone; consumers call the action
|
|
7
|
+
// functions directly, and selectors read `state` inside a `createMemo`.
|
|
8
|
+
//
|
|
9
|
+
// `castDraft`/immer are unnecessary — Solid's store setter takes a mutable draft.
|
|
10
|
+
import { createStore } from "solid-js";
|
|
11
|
+
import { BrushStartEndIndex } from "../context/brushUpdateContext";
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* This is the data that's coming through main chart `data` prop
|
|
15
|
+
* Recharts is very flexible in what it accepts so the type is very flexible too.
|
|
16
|
+
* This will typically be an object, and various components will provide various `dataKey`
|
|
17
|
+
* that dictates how to pull data from that object.
|
|
18
|
+
*
|
|
19
|
+
* TL;DR: before dataKey
|
|
20
|
+
*
|
|
21
|
+
* @inline
|
|
22
|
+
*/
|
|
23
|
+
export type ChartData<DataPointType = unknown> = ReadonlyArray<DataPointType>;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* So this is the same unknown type as ChartData but this is after the dataKey has been applied.
|
|
27
|
+
* We still don't know what the type is - that depends on what exactly it was before the dataKey application,
|
|
28
|
+
* and the dataKey can return whatever anyway - but let's keep it separate as a form of documentation.
|
|
29
|
+
*
|
|
30
|
+
* TL;DR: ChartData after dataKey.
|
|
31
|
+
*/
|
|
32
|
+
export type AppliedChartData = ReadonlyArray<{ value: unknown }>;
|
|
33
|
+
|
|
34
|
+
export type ChartDataState = {
|
|
35
|
+
chartData: ChartData | undefined;
|
|
36
|
+
/**
|
|
37
|
+
* store a copy of chart data after it has been processed by each chart's specific
|
|
38
|
+
* compute functions. TODO: add other charts besides Sankey
|
|
39
|
+
*/
|
|
40
|
+
computedData: unknown;
|
|
41
|
+
/**
|
|
42
|
+
* Using Brush, users can choose where they want to zoom in.
|
|
43
|
+
* This is zero-based index of the starting data point.
|
|
44
|
+
*/
|
|
45
|
+
dataStartIndex: number;
|
|
46
|
+
/**
|
|
47
|
+
* Using Brush, users can choose where they want to zoom in.
|
|
48
|
+
* This is zero-based index of the last data point.
|
|
49
|
+
*/
|
|
50
|
+
dataEndIndex: number;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
export const initialChartDataState: ChartDataState = {
|
|
54
|
+
chartData: undefined,
|
|
55
|
+
computedData: undefined,
|
|
56
|
+
dataStartIndex: 0,
|
|
57
|
+
dataEndIndex: 0,
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
type BrushStartEndIndexActionPayload = Partial<BrushStartEndIndex>;
|
|
61
|
+
|
|
62
|
+
export interface ChartDataActions {
|
|
63
|
+
setChartData(chartData: ChartData | undefined): void;
|
|
64
|
+
setComputedData(computedData: unknown): void;
|
|
65
|
+
setDataStartEndIndexes(payload: BrushStartEndIndexActionPayload): void;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export interface ChartDataSlice {
|
|
69
|
+
readonly state: ChartDataState;
|
|
70
|
+
readonly actions: ChartDataActions;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Creates the chartData slice: a reactive store plus its action functions.
|
|
75
|
+
* Equivalent to recharts' `createSlice({ name: 'chartData', ... })`, but the
|
|
76
|
+
* store is a Solid store and the actions mutate it directly.
|
|
77
|
+
*/
|
|
78
|
+
export function createChartDataSlice(
|
|
79
|
+
initialState: ChartDataState = initialChartDataState,
|
|
80
|
+
): ChartDataSlice {
|
|
81
|
+
const [state, setState] = createStore<ChartDataState>({ ...initialState });
|
|
82
|
+
|
|
83
|
+
const actions: ChartDataActions = {
|
|
84
|
+
setChartData(chartData) {
|
|
85
|
+
setState((s) => {
|
|
86
|
+
s.chartData = chartData;
|
|
87
|
+
if (chartData == null) {
|
|
88
|
+
s.dataStartIndex = 0;
|
|
89
|
+
s.dataEndIndex = 0;
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
if (chartData.length > 0 && s.dataEndIndex !== chartData.length - 1) {
|
|
93
|
+
s.dataEndIndex = chartData.length - 1;
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
},
|
|
97
|
+
setComputedData(computedData) {
|
|
98
|
+
setState((s) => {
|
|
99
|
+
s.computedData = computedData;
|
|
100
|
+
});
|
|
101
|
+
},
|
|
102
|
+
setDataStartEndIndexes({ startIndex, endIndex }) {
|
|
103
|
+
setState((s) => {
|
|
104
|
+
if (startIndex != null) {
|
|
105
|
+
s.dataStartIndex = startIndex;
|
|
106
|
+
}
|
|
107
|
+
if (endIndex != null) {
|
|
108
|
+
s.dataEndIndex = endIndex;
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
return { state, actions };
|
|
115
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
// Ported from recharts 3.8.1 src/state/errorBarSlice.ts (commit 7a23854).
|
|
2
|
+
//
|
|
3
|
+
// FULL SOLID-NATIVE REWRITE (no Redux/immer). Keyed by the graphical item's id;
|
|
4
|
+
// each item holds an array of ErrorBarsSettings. recharts matches for
|
|
5
|
+
// replace/remove by (dataKey, direction) — kept verbatim (these are the error
|
|
6
|
+
// bar's identity within an item).
|
|
7
|
+
import { createStore } from "solid-js";
|
|
8
|
+
import type { ErrorBarDirection } from "../cartesian/ErrorBar";
|
|
9
|
+
import { DataKey } from "../util/types";
|
|
10
|
+
import { GraphicalItemId } from "./graphicalItemsSlice";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* ErrorBars have many settings, but only the ones an axis needs to extend its
|
|
14
|
+
* domain are reported to the store: the direction and the dataKey.
|
|
15
|
+
*/
|
|
16
|
+
export type ErrorBarsSettings = {
|
|
17
|
+
/**
|
|
18
|
+
* Only meaningful in Scatter (both directions possible); elsewhere it's derived
|
|
19
|
+
* from the chart layout.
|
|
20
|
+
*/
|
|
21
|
+
direction: ErrorBarDirection;
|
|
22
|
+
/** Which data property each ErrorBar reads; can stretch the axis domain. */
|
|
23
|
+
dataKey: DataKey<unknown>;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export type ErrorBarsState = Record<GraphicalItemId, ReadonlyArray<ErrorBarsSettings>>;
|
|
27
|
+
|
|
28
|
+
export const initialErrorBarsState: ErrorBarsState = {};
|
|
29
|
+
|
|
30
|
+
interface AddPayload {
|
|
31
|
+
itemId: GraphicalItemId;
|
|
32
|
+
errorBar: ErrorBarsSettings;
|
|
33
|
+
}
|
|
34
|
+
interface ReplacePayload {
|
|
35
|
+
itemId: GraphicalItemId;
|
|
36
|
+
prev: ErrorBarsSettings;
|
|
37
|
+
next: ErrorBarsSettings;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface ErrorBarsActions {
|
|
41
|
+
addErrorBar(payload: AddPayload): void;
|
|
42
|
+
replaceErrorBar(payload: ReplacePayload): void;
|
|
43
|
+
removeErrorBar(payload: AddPayload): void;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export interface ErrorBarsSlice {
|
|
47
|
+
readonly state: ErrorBarsState;
|
|
48
|
+
readonly actions: ErrorBarsActions;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const sameErrorBar = (a: ErrorBarsSettings, b: ErrorBarsSettings): boolean =>
|
|
52
|
+
a.dataKey === b.dataKey && a.direction === b.direction;
|
|
53
|
+
|
|
54
|
+
export function createErrorBarSlice(
|
|
55
|
+
initialState: ErrorBarsState = initialErrorBarsState,
|
|
56
|
+
): ErrorBarsSlice {
|
|
57
|
+
const [state, setState] = createStore<ErrorBarsState>({ ...initialState });
|
|
58
|
+
|
|
59
|
+
const actions: ErrorBarsActions = {
|
|
60
|
+
addErrorBar({ itemId, errorBar }) {
|
|
61
|
+
setState((s) => {
|
|
62
|
+
s[itemId] = [...(s[itemId] ?? []), errorBar];
|
|
63
|
+
});
|
|
64
|
+
},
|
|
65
|
+
replaceErrorBar({ itemId, prev, next }) {
|
|
66
|
+
setState((s) => {
|
|
67
|
+
const list = s[itemId];
|
|
68
|
+
if (list) {
|
|
69
|
+
s[itemId] = list.map((e) => (sameErrorBar(e, prev) ? next : e));
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
},
|
|
73
|
+
removeErrorBar({ itemId, errorBar }) {
|
|
74
|
+
setState((s) => {
|
|
75
|
+
const list = s[itemId];
|
|
76
|
+
if (list) {
|
|
77
|
+
s[itemId] = list.filter((e) => !sameErrorBar(e, errorBar));
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
return { state, actions };
|
|
84
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// Ported from recharts 3.8.1 src/state/eventSettingsSlice.ts (commit 7a23854).
|
|
2
|
+
// Solid-native slice; immer's `castDraft` is unnecessary with a Solid store.
|
|
3
|
+
import { createStore } from "solid-js";
|
|
4
|
+
import { EventThrottlingProps } from "../util/types";
|
|
5
|
+
|
|
6
|
+
export type EventSettingsState = Required<EventThrottlingProps>;
|
|
7
|
+
|
|
8
|
+
export const initialEventSettingsState: EventSettingsState = {
|
|
9
|
+
throttleDelay: "raf",
|
|
10
|
+
throttledEvents: ["mousemove", "touchmove", "pointermove", "scroll", "wheel"],
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export interface EventSettingsActions {
|
|
14
|
+
setEventSettings(payload: EventThrottlingProps): void;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface EventSettingsSlice {
|
|
18
|
+
readonly state: EventSettingsState;
|
|
19
|
+
readonly actions: EventSettingsActions;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function createEventSettingsSlice(
|
|
23
|
+
initialState: EventSettingsState = initialEventSettingsState,
|
|
24
|
+
): EventSettingsSlice {
|
|
25
|
+
const [state, setState] = createStore<EventSettingsState>({ ...initialState });
|
|
26
|
+
|
|
27
|
+
const actions: EventSettingsActions = {
|
|
28
|
+
setEventSettings(payload) {
|
|
29
|
+
setState((s) => {
|
|
30
|
+
if (payload.throttleDelay != null) {
|
|
31
|
+
s.throttleDelay = payload.throttleDelay;
|
|
32
|
+
}
|
|
33
|
+
if (payload.throttledEvents != null) {
|
|
34
|
+
s.throttledEvents = payload.throttledEvents;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
return { state, actions };
|
|
41
|
+
}
|