Files
Stackq/node_modules/bits-ui/dist/internal/state-machine.js
T
eewing cf73cd3b4c INIT
2026-02-17 14:10:16 -06:00

19 lines
553 B
JavaScript

import { simpleBox } from "svelte-toolbelt";
export class StateMachine {
state;
#machine;
constructor(initialState, machine) {
this.state = simpleBox(initialState);
this.#machine = machine;
this.dispatch = this.dispatch.bind(this);
}
#reducer(event) {
// @ts-expect-error state.current is keyof M
const nextState = this.#machine[this.state.current][event];
return nextState ?? this.state.current;
}
dispatch(event) {
this.state.current = this.#reducer(event);
}
}