xstate-helpers
Version:
A collection of helpers for XState (with React).
31 lines (30 loc) • 1.65 kB
TypeScript
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 {};