comfey
Version:
Tiny micro mini data binding library inspired by react hook useState
20 lines (15 loc) • 502 B
JavaScript
export default function fsm(app, state, config, watcher) {
const [getState, setState] = app.useState(state, config.start, watcher);
const _transitions = () => {
return config[getState()];
};
const getTransitions = () => {
return Object.keys(_transitions());
};
const transition = (key) => {
if (!_transitions().hasOwnProperty(key))
throw new Error("Invalid transition key");
setState(_transitions()[key]);
};
return { getState, getTransitions, transition };
}