A tiny, simple, expressive, pragmatic Finite State Machine (FSM) library, optimized for Svelte.
1kb
(minified); zero dependencies@kineticcafe/svelte-fsm-eventless is an extension to Ken Kunz's excellent svelte-fsm. The eventless transition support should be sufficient for most purposes, but it has only been tested for our purposes. You can watch kenkunz/svelte-fsm#10 for progress on the core implementation of eventless transitions. When svelte-fsm supports eventless transitions natively, we are likely to retire this library.
npm install @kineticcafe/svelte-fsm-eventless
<script>
import fsm from '@kineticcafe/svelte-fsm-eventless';
const simpleSwitch = fsm('off', {
off: { toggle: 'on' },
on: { toggle: 'off' }
});
</script>
<button value={$simpleSwitch} on:click={simpleSwitch.toggle}>
{$simpleSwitch}
</button>
Svelte FSM's API is delightfully simple. FSM constructs are intuitively mapped to core JavaScript language features, resulting in a highly expressive API that's effortless to remember, a joy to write, and natural to read.
fsm()
function with
2 arguments: initial
and states
state
objects, which
consist of…state
state
).debounce(wait)
on any eventThis extension would not exist without the excellent base library by kenkunz.