INIT
CI / build (push) Has been skipped
CI / deploy (push) Successful in 1m11s

This commit is contained in:
eewing
2026-02-18 15:17:47 -06:00
parent e74c106f85
commit ec317eb17c
11532 changed files with 1631690 additions and 1 deletions
+18
View File
@@ -0,0 +1,18 @@
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);
}
}