mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2025-10-16 12:05:41 +00:00
* rename state-machine to javascript-state-machine * add state-machine to notNeededPackages.json * update version of javascript-state-machine * remove state-machine from notNeededPackes.json
33 lines
1.1 KiB
TypeScript
33 lines
1.1 KiB
TypeScript
import { StateMachine, StateMachineEvent, create } from 'javascript-state-machine';
|
|
|
|
interface StateMachineTest extends StateMachine {
|
|
warn?: StateMachineEvent;
|
|
panic?: StateMachineEvent;
|
|
calm?: StateMachineEvent;
|
|
clear?: StateMachineEvent;
|
|
}
|
|
|
|
const fsm: StateMachineTest = StateMachine.create({
|
|
initial: 'green',
|
|
events: [
|
|
{ name: 'warn', from: 'green', to: 'yellow' },
|
|
{ name: 'panic', from: 'yellow', to: 'red' },
|
|
{ name: 'calm', from: 'red', to: 'yellow' },
|
|
{ name: 'clear', from: 'yellow', to: 'green' }
|
|
],
|
|
callbacks: {
|
|
onpanic(event?, from?, to?, msg?) { alert('panic! ' + msg); },
|
|
onclear(event?, from?, to?, msg?) { alert('thanks to ' + msg); },
|
|
ongreen(event?, from?, to?) { document.body.className = 'green'; },
|
|
onyellow(event?, from?, to?) { document.body.className = 'yellow'; },
|
|
onred(event?, from?, to?) { document.body.className = 'red'; },
|
|
}
|
|
});
|
|
|
|
// fsm.warn(); // transition from green to yellow
|
|
// fsm.panic("ERROR ALERT"); // transition from yellow to red
|
|
// fsm.calm(); // transition from red to yellow
|
|
// fsm.clear("All clear"); // transition from yellow to green
|
|
|
|
const transitions = fsm.transitions();
|