UNPKG

xstate-helpers

Version:

A collection of helpers for XState (with React).

31 lines (30 loc) • 1.65 kB
import React from 'react'; import { PayloadSender, AnyStateMachine, StateFrom, EventFrom, EventObject, AnyInterpreter, AnyState } from 'xstate'; declare type MaybeLazy<T, P> = T | ((providerProps: P) => T); export declare type XStateReactContextHelpers<TInterpreter extends AnyInterpreter, ProviderProps extends Record<string, unknown>, TMachine extends AnyStateMachine = TInterpreter['machine'], TState extends AnyState = StateFrom<TMachine>, TEvent extends EventObject = EventFrom<TMachine>> = { Provider: React.FC<ProviderProps & { children?: ((params: { interpreter: TInterpreter; }) => React.ReactNode) | React.ReactNode; }>; ReactContext: React.Context<TInterpreter>; useInterpreter: () => TInterpreter; useSelector: <T>(selector: (state: TState) => T, compare?: (a: T, b: T) => boolean) => T; useActor: () => [TState, PayloadSender<TEvent>]; useSend: () => PayloadSender<TEvent>; }; export declare function createReactContextHelpers<TInterpreter extends AnyInterpreter, ProviderProps extends Record<string, unknown>, TMachine extends AnyStateMachine = TInterpreter['machine'], TState extends AnyState = StateFrom<TMachine>, TEvent extends EventObject = EventFrom<TMachine>>( /** * Display name for the react context */ displayName: string, /** * Function that provides the interpreter for your machine. * * Inside it you should use `useInterpret()` from `@xstate/react`. You can pass options to it as normal * * Example: * */ getInterpreter: MaybeLazy<TInterpreter, ProviderProps>): XStateReactContextHelpers<TInterpreter, ProviderProps, TMachine, TState, TEvent>; export {};