Guest User

Untitled

a guest
Oct 21st, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.65 KB | None | 0 0
  1. const state = faste()
  2. .withPhases(['red', 'yellow', 'green'])
  3. .withMessages(['tick','next'])
  4.  
  5. .on('tick',['green'], ({transit}) => transit('yellow'))
  6. .on('tick',['yellow'], ({transit}) => transit('red'))
  7. .on('tick',['red'], ({transit}) => transit('green'))
  8. // just rethrow next as tick
  9. .on('next',[], ({trigger}) => trigger('tick'))
  10.  
  11. .on('@enter',['green'], ({setState, attrs, trigger}) => setState({
  12. // timer "ticks" by "tick", as it should
  13. interval: setInterval(() => trigger('next'), attrs.duration)
  14. }))
  15. .on('@leave',['red'], ({state}) => clearInterval(state.interval))
  16.  
  17. state
  18. .create()
  19. .attrs({duration: 1000})
  20. .start('green');
Add Comment
Please, Sign In to add comment