hswidget
Version:
Helpful Scripts UI widgets
16 lines • 1.68 kB
JavaScript
export class State {
constructor(numValues, initialValue = 0, transition = State.transitions.cycle) {
this.numValues = numValues;
this.transition = transition;
this.state = 0;
this.getNumValues = () => this.numValues;
this.getValue = () => this.state;
this.setValue = (newValue) => this.state = newValue % this.numValues;
this.advance = (input) => this.transition(this, input);
this.state = initialValue;
}
}
State.transitions = {
cycle: (state) => state.setValue((state.getValue() + 1) % state.getNumValues()),
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3VwcG9ydC9TdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxQ0EsTUFBTSxPQUFPLEtBQUs7SUFnQmQsWUFBNkIsU0FBZ0IsRUFBRSxZQUFZLEdBQUMsQ0FBQyxFQUFZLGFBQVcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLO1FBQTlFLGNBQVMsR0FBVCxTQUFTLENBQU87UUFBNEIsZUFBVSxHQUFWLFVBQVUsQ0FBd0I7UUFSakcsVUFBSyxHQUFHLENBQUMsQ0FBQztRQVdiLGlCQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNwQyxhQUFRLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUM1QixhQUFRLEdBQUcsQ0FBQyxRQUFlLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFFdkUsWUFBTyxHQUFHLENBQUMsS0FBVSxFQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQU56RCxJQUFJLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQztJQUM5QixDQUFDOztBQWpCTSxpQkFBVyxHQUErQjtJQUU3QyxLQUFLLEVBQUUsQ0FBQyxLQUFjLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEdBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO0NBR3pGLENBQUMifQ==