UNPKG

keypad-fsm

Version:

Finite State Machine for a Keypad

3 lines (2 loc) 1.71 kB
import{COMMAND_RENDER}from"kingly";function _defineProperty(t,n,e){return n in t?Object.defineProperty(t,n,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[n]=e,t}var _states,INIT="OFF",PIN="PIN",NO_PIN="NO_PIN",DONE="DONE",START="START",CLEAR_CLICKED="CLEAR_CLICKED",SUBMIT_CLICKED="SUBMIT_CLICKED",NUM_KEY_CLICKED="NUM_KEY_CLICKED",SUBMIT="SUBMIT",commands=[COMMAND_RENDER,SUBMIT];function updateState(t,n){var e=Object.assign({},t);return n.reduce(function(t,n){return Object.assign(t,n)},e)}var events=[NUM_KEY_CLICKED,SUBMIT_CLICKED,CLEAR_CLICKED,START],states=(_defineProperty(_states={},INIT,""),_defineProperty(_states,PIN,""),_defineProperty(_states,NO_PIN,""),_defineProperty(_states,DONE,""),_states),initialControlState=INIT,initialExtendedState={pin:""},transitions=[{from:INIT,event:START,to:NO_PIN,action:displayAndEmitNoPin},{from:NO_PIN,event:NUM_KEY_CLICKED,to:PIN,action:displayAndEmitPin},{from:PIN,event:CLEAR_CLICKED,to:NO_PIN,action:displayAndEmitNoPin},{from:PIN,event:NUM_KEY_CLICKED,to:PIN,action:displayAndEmitPin},{from:PIN,event:SUBMIT_CLICKED,to:DONE,action:displayAndSubmitPin}];function displayAndEmitNoPin(t,n,e){return{updates:[{pin:""}],outputs:[{command:COMMAND_RENDER,params:{pin:""}}]}}function displayAndEmitPin(t,n,e){var i=t.pin+n;return{updates:[{pin:i}],outputs:[{command:COMMAND_RENDER,params:{pin:i}}]}}function displayAndSubmitPin(t,n,e){var i=t.pin;return{updates:[],outputs:[{command:SUBMIT,params:{pin:i}}]}}var fsmDef={initialControlState:initialControlState,initialExtendedState:initialExtendedState,states:states,events:events,transitions:transitions,updateState:updateState};export{commands,events,fsmDef}; //# sourceMappingURL=keypad-fsm.es.min.js.map