UNPKG

xstate

Version:

Finite State Machines and Statecharts for the Modern Web.

130 lines (129 loc) 4.42 kB
import type { StateMachine } from "./StateMachine.js"; import type { DelayedTransitionDefinition, EventObject, InitialTransitionDefinition, InvokeDefinition, MachineContext, Mapper, StateNodeConfig, StateNodeDefinition, StateNodesConfig, TransitionDefinition, TransitionDefinitionMap, TODO, UnknownAction, ParameterizedObject, AnyStateMachine, ProvidedActor, NonReducibleUnknown, EventDescriptor } from "./types.js"; interface StateNodeOptions<TContext extends MachineContext, TEvent extends EventObject> { _key: string; _parent?: StateNode<TContext, TEvent>; _machine: AnyStateMachine; } export declare class StateNode<TContext extends MachineContext = MachineContext, TEvent extends EventObject = EventObject> { /** * The raw config used to create the machine. */ config: StateNodeConfig<TContext, TEvent, TODO, // actors TODO, // actions TODO, // guards TODO, // delays TODO, // tags TODO, // output TODO>; /** * The relative key of the state node, which represents its location in the overall state value. */ key: string; /** * The unique ID of the state node. */ id: string; /** * The type of this state node: * * - `'atomic'` - no child state nodes * - `'compound'` - nested child state nodes (XOR) * - `'parallel'` - orthogonal nested child state nodes (AND) * - `'history'` - history state node * - `'final'` - final state node */ type: 'atomic' | 'compound' | 'parallel' | 'final' | 'history'; /** * The string path from the root machine node to this node. */ path: string[]; /** * The child state nodes. */ states: StateNodesConfig<TContext, TEvent>; /** * The type of history on this state node. Can be: * * - `'shallow'` - recalls only top-level historical state value * - `'deep'` - recalls historical state value at all levels */ history: false | 'shallow' | 'deep'; /** * The action(s) to be executed upon entering the state node. */ entry: UnknownAction[]; /** * The action(s) to be executed upon exiting the state node. */ exit: UnknownAction[]; /** * The parent state node. */ parent?: StateNode<TContext, TEvent>; /** * The root machine node. */ machine: StateMachine<TContext, TEvent, any, // children any, // actor any, // action any, // guard any, // delay any, // tag any, // input any, // output any, // emitted any>; /** * The meta data associated with this state node, which will be returned in State instances. */ meta?: any; /** * The output data sent with the "xstate.done.state._id_" event if this is a final state node. */ output?: Mapper<MachineContext, EventObject, unknown, EventObject> | NonReducibleUnknown; /** * The order this state node appears. Corresponds to the implicit document order. */ order: number; description?: string; tags: string[]; transitions: Map<string, TransitionDefinition<TContext, TEvent>[]>; always?: Array<TransitionDefinition<TContext, TEvent>>; constructor( /** * The raw config used to create the machine. */ config: StateNodeConfig<TContext, TEvent, TODO, // actors TODO, // actions TODO, // guards TODO, // delays TODO, // tags TODO, // output TODO>, options: StateNodeOptions<TContext, TEvent>); /** * The well-structured state node definition. */ get definition(): StateNodeDefinition<TContext, TEvent>; /** * The logic invoked as actors by this state node. */ get invoke(): Array<InvokeDefinition<TContext, TEvent, ProvidedActor, ParameterizedObject, ParameterizedObject, string>>; /** * The mapping of events to transitions. */ get on(): TransitionDefinitionMap<TContext, TEvent>; get after(): Array<DelayedTransitionDefinition<TContext, TEvent>>; get initial(): InitialTransitionDefinition<TContext, TEvent>; /** * All the event types accepted by this state node and its descendants. */ get events(): Array<EventDescriptor<TEvent>>; /** * All the events that have transitions directly from this state node. * * Excludes any inert events. */ get ownEvents(): Array<EventDescriptor<TEvent>>; } export {};