DefinitelyTyped/types/javascript-state-machine/javascript-state-machine-tests.ts
taoqf 1a4fd4ff86 rename state-machine to javascript-state-machine (#16883)
* 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
2017-06-02 06:19:50 -07:00

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();