st8

3.0.1 • Public • Published

st8 test npm

Tiny state machine for structural describing behavior of components.

Usage

$ npm install st8

Standalone state machine

import State from 'st8';

var state = new State({
	// enter, exit
	b: () => () => {},

	// enter shortcut, forwards to state d
	c: () => 'd',

	// shorter cut, redirects to state a
	d: 'a',

	// any other state
	_: 'a'
});


//enter state 'a', invoke corresponding callbacks
state.set('a');

//get current state
state.get(); // 'a'

Define stateful object property

import State from 'st8'

var state = new State({
	a() {
		// onenter
		this === target //true
	},

	b() {
		// onenter
		this === target //true
		return () => {
			// onexit
		}
	}

}, target);

Object.defineProperty(target, property, {
	set: function (value) {
		return state.set(value);
	},
	get: function () {
		return state.get();
	}
});

API

let state = new State(states [, context])

Create a new state machine based on the states object. Optionally pass a context for callbacks.

state.get()

Get current state.

state.set(value)

Transition to a new state, invoking necessary callbacks.

🕉

Package Sidebar

Install

npm i st8

Weekly Downloads

468

Version

3.0.1

License

MIT

Unpacked Size

16.6 kB

Total Files

10

Last publish

Collaborators

  • dfcreative
  • dy