hswidget
Version:
Helpful Scripts UI widgets
20 lines • 1.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.State = void 0;
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;
}
}
exports.State = State;
State.transitions = {
cycle: (state) => state.setValue((state.getValue() + 1) % state.getNumValues()),
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3VwcG9ydC9TdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFxQ0EsTUFBYSxLQUFLO0lBZ0JkLFlBQTZCLFNBQWdCLEVBQUUsWUFBWSxHQUFDLENBQUMsRUFBWSxhQUFXLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSztRQUE5RSxjQUFTLEdBQVQsU0FBUyxDQUFPO1FBQTRCLGVBQVUsR0FBVixVQUFVLENBQXdCO1FBUmpHLFVBQUssR0FBRyxDQUFDLENBQUM7UUFXYixpQkFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDcEMsYUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDNUIsYUFBUSxHQUFHLENBQUMsUUFBZSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBRXZFLFlBQU8sR0FBRyxDQUFDLEtBQVUsRUFBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFOekQsSUFBSSxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUM7SUFDOUIsQ0FBQzs7QUFsQkwsc0JBd0JDO0FBdkJVLGlCQUFXLEdBQStCO0lBRTdDLEtBQUssRUFBRSxDQUFDLEtBQWMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsR0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7Q0FHekYsQ0FBQyJ9