UNPKG

state-machine

Version:

An expressive, feature-rich, event-driven JavaScript finite-state machine

1 lines 25.3 kB
!function(t,n){if("object"==typeof exports&&"object"==typeof module)module.exports=n();else if("function"==typeof define&&define.amd)define([],n);else{var e=n();for(var i in e)("object"==typeof exports?exports:t)[i]=e[i]}}(this,function(){return function(t){function n(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}var e={};return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:i})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},n.p="",n(n.s=5)}([function(t,n,e){"use strict";function i(t){return"[object Object]"===Object.prototype.toString.call(t)}function r(t){return t instanceof Array}function s(t){return"string"==typeof t}function a(t){return t instanceof Function}function o(t){return void 0!==t}function u(t){return void 0===t}function c(t){return String(t||"").replace(/^\s+|\s+$/g,"")}function f(t,n){var e=n.filter(function(n){return t.indexOf(n)<0});return t.filter(function(t){return n.indexOf(t)<0}).concat(e)}function h(t){return t.reduce(function(t,n){return t[n]=!0,t},{})}Object.defineProperty(n,"__esModule",{value:!0}),n.isObject=i,n.isArray=r,n.isString=s,n.isFunction=a,n.isDefined=o,n.isUndefined=u,n.trim=c,n.diff=f,n.toHash=h},function(t,n,e){"use strict";function i(t){return t&&t.__esModule?t:{default:t}}function r(t){this.transitions=new l.default,this.handlers=new f.default(this),this.initialize(t)}function s(t,n,e){var i=t.transitions.getStates(),r=t.transitions.getActions();e();var s=t.transitions.getStates(),a=t.transitions.getActions(),o=(0,v.diff)(i,s),u=(0,v.diff)(r,a);o.forEach(function(e){return t.handlers.trigger("system.state."+n,e)}),u.forEach(function(e){return t.handlers.trigger("system.action."+n,e)})}Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function t(t,n){var e=[],i=!0,r=!1,s=void 0;try{for(var a,o=t[Symbol.iterator]();!(i=(a=o.next()).done)&&(e.push(a.value),!n||e.length!==n);i=!0);}catch(t){r=!0,s=t}finally{try{!i&&o.return&&o.return()}finally{if(r)throw s}}return e}return function(n,e){if(Array.isArray(n))return n;if(Symbol.iterator in Object(n))return t(n,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=e(6),u=i(o),c=e(7),f=i(c),h=e(13),l=i(h),d=e(16),p=i(d),v=e(0);r.prototype={config:null,transitions:null,handlers:null,transition:null,state:"",initialize:function(t){var n=this;this.state="";var e=new u.default(t);this.config=e;var i=[];if(Array.isArray(t.transitions)&&t.transitions.forEach(function(t){i=i.concat(n.transitions.parse(t))}),i.forEach(function(t){n.transitions.add(t.action,t.from,t.to)}),e.initial||(e.initial=this.transitions.getStates()[0]),t.handlers)for(var r in t.handlers)t.handlers.hasOwnProperty(r)&&this.on(r,t.handlers[r]);if(t.methods){this.config.scope||(this.config.scope=this);for(var s in t.methods)t.methods.hasOwnProperty(s)&&!this.hasOwnProperty(s)&&(this[s]=t.methods[s])}return this.config.start&&this.start(),this},start:function(){return this.state=this.config.initial,this.handlers.trigger("system.start"),this.state&&this.handlers.trigger("system.change",this.state),this},reset:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=t||this.config.initial;return this.handlers.trigger("system.reset"),this.transition&&(this.transition.cancel(),delete this.transition),this.state!==n&&(this.state=n,this.handlers.trigger("system.change",this.state)),this},do:function(t){if(this.canDo(t)&&!this.isPaused()){for(var n=arguments.length,e=Array(n>1?n-1:0),i=1;i<n;i++)e[i-1]=arguments[i];return this.transition=p.default.create(this,t,e),this.transition.exec(),!0}return!1},go:function(t){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.has(t)){if(n)return this.transition&&this.transition.clear(),this.transition=p.default.force(this,t),this.end();var e=this.transitions.getActionFor(this.state,t);return e?this.do(e):(this.config.errors>0&&console.warn('No transition exists from "%s" to "%s"',this.state,t),!1)}return this.config.errors>0&&console.warn('No such state "%s"',t),!1},canDo:function(t){return-1!==this.transitions.getActionsFrom(this.state).indexOf(t)},canGo:function(t){return null!==this.transitions.getActionFor(this.state,t)},has:function(t){return this.transitions.hasState(t)},is:function(t){return t===this.state},isStarted:function(){return""!==this.state},isTransitioning:function(){return!!this.transition},isPaused:function(){return!!this.transition&&this.transition.paused},isComplete:function(){return this.state===this.config.final},pause:function(){return this.transition&&!this.isPaused()&&this.transition.pause(),this},resume:function(){return this.transition&&this.isPaused()&&this.transition.resume(),this},cancel:function(){return this.transition&&(this.state=this.transition.from,this.transition.cancel(),delete this.transition),this},end:function(){return this.transition&&(this.state=this.transition.to,this.transition.clear(),delete this.transition,this.handlers.trigger("system.change",this.state),this.isComplete()&&this.handlers.trigger("system.complete")),this},add:function(t,n,e){var i=this;if(1===arguments.length){return this.transitions.parse(t).forEach(function(t){return i.add(t.action,t.from,t.to)}),this}return s(this,"add",function(){return i.transitions.add(t,n,e)}),this},remove:function(t){var n=this;return this.handlers.remove("state."+t),s(this,"remove",function(){return n.transitions.remove(t)}),this},on:function(t,n){var e=this;return this.parse(t,this.config.invalid,this.config.errors).forEach(function(t){return e.handlers.add(t.path,n)}),this},off:function(t,n){var e=this;return this.parse(t,this.config.invalid,this.config.errors).forEach(function(t){return e.handlers.remove(t.path,n)}),this},parse:function(t){var n=this,e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return this.handlers.parse(t).filter(function(t){if(t instanceof Error){if(2==i)throw t;return 1==i&&console.warn(t.message),!1}if("*"!==t.target){var r="";if("state"===t.namespace)n.transitions.hasState(t.target)||(r='Unrecognised state "'+t.target+'" in handler "'+t.id+'"');else if("action"===t.namespace)n.transitions.hasAction(t.target)||(r='Unrecognised action "'+t.target+'" in handler "'+t.id+'"');else if("state/action"===t.namespace){var s=t.target.split("@"),o=a(s,2),u=o[0],c=o[1];n.transitions.hasState(u)||(r='Unrecognised state "'+u+'" in handler "'+t.id+'"'),n.transitions.hasAction(c)||(r='Unrecognised action "'+c+'" in handler "'+t.id+'"')}if(r){if(2==i)throw new Error(r);return 1==i&&console.warn(r),!!e}}return!0})},trigger:function(t){for(var n=this,e=arguments.length,i=Array(e>1?e-1:0),r=1;r<e;r++)i[r-1]=arguments[r];return this.handlers.parse(t).forEach(function(t){return n.handlers.trigger.apply(n.handlers,[t.path].concat(i))}),this}},r.prototype.constructor=r,n.default=r,r.create=function(t){return new r(t)},r.getDefaultOrder=function(){return["action.*.start","action.{action}.start","state.*.{action}","state.{from}.{action}","state.{from}.leave","state.*.leave","state.*.enter","state.{to}.enter","action.{action}.end","action.*.end"]}},function(t,n,e){"use strict";function i(t){this.data=t||{}}function r(t,n){for(var e=void 0;n.length;)e=n.shift(),(0,d.isObject)(t[e])||(t[e]={}),t=t[e];return t}function s(t,n,e){var i=(arguments.length>3&&void 0!==arguments[3]&&arguments[3],String(n).split(".")),s=i.pop();t=r(t,i),t[s]=e}function a(t,n,e){var i=String(n).split("."),s=i.pop();t=r(t,i),(0,d.isArray)(t[s])||(t[s]=[]),t[s].push(e)}function o(t,n,e){var i=String(n).split("."),s=i.pop();t=r(t,i),(0,d.isArray)(t[s])||(t[s]=[]);var a=t[s],o=a.indexOf(e);-1===o?a.push(e):a[o]=e}function u(t,n){if((0,d.isUndefined)(n)||""==n)return t;for(var e=void 0,i=String(n).split(".");i.length>1;){if(e=i.shift(),!t.hasOwnProperty(e))return;t=t[e]}return e=i.shift(),t[e]}function c(t,n,e){var i=u(t,n);return!!((0,d.isArray)(i)&&(0,d.isDefined)(e)?-1!==i.indexOf(e):(0,d.isUndefined)(e)?(0,d.isDefined)(i):i===e)}function f(t,n,e){var i=u(t,n);return(0,d.isArray)(i)?i.indexOf(e):-1}function h(t,n,e){var i=t,r=String(n||"").split("."),s=r.pop();if(r.length&&(i=u(t,r.join("."))),(0,d.isDefined)(e)&&(0,d.isArray)(i[s])){var a=i[s],o=a.indexOf(e);return o>-1&&(a.splice(o,1),0===a.length&&delete i[s],!0)}return!(!(0,d.isObject)(i)||!t.hasOwnProperty(s))&&(delete i[s],!0)}function l(t,n){var e=[],i=u(t,n);if((0,d.isObject)(i))for(var r in i)i.hasOwnProperty(r)&&e.push(i[r]);return e}Object.defineProperty(n,"__esModule",{value:!0}),n.values=n.remove=n.indexOf=n.has=n.get=n.set=void 0,n.default=i;var d=e(0);i.prototype={data:null,set:function(t,n){return s(this.data,t,n),this},add:function(t,n){return a(this.data,t,n),this},insert:function(t,n){return o(this.data,t,n),this},get:function(t){return u(this.data,t)},has:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;return c(this.data,t,n)},indexOf:function(t,n){return f(this.data,t,n)},remove:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;return h(this.data,t,n),this},keys:function(t){return Object.keys(u(this.data,t))},values:function(t){return l(this.data,t)}},n.set=s,n.get=u,n.has=c,n.indexOf=f,n.remove=h,n.values=l},function(t,n,e){"use strict";function i(t,n,e,i,r){t.namespace=n,t.type=e,t.target=i,t.transition=r}function r(t,n,e){i(this,"action",t,n,e)}function s(t,n,e){i(this,"state",t,n,e)}function a(t,n){this.type=t,this.value=n}function o(t){this.type=t}Object.defineProperty(n,"__esModule",{value:!0}),n.ActionEvent=r,n.StateEvent=s,n.SystemEvent=a,n.TransitionEvent=o;var u={namespace:null,type:null,target:null,transition:null};r.prototype=u,s.prototype=u,a.prototype={namespace:"system",type:"",value:null},o.prototype={namespace:"transition",type:""}},function(t,n,e){"use strict";function i(t,n,e){this.message=t,this.path=n,this.id=e}Object.defineProperty(n,"__esModule",{value:!0}),n.ParseError=i,i.prototype=Error.prototype,i.prototype.name="ParseError",i.prototype.constructor=i},function(t,n,e){"use strict";function i(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(n,"__esModule",{value:!0}),n.StateHelper=n.StateMachine=void 0;var r=e(1),s=i(r),a=e(17),o=i(a);n.default=s.default,n.StateMachine=s.default,n.StateHelper=o.default},function(t,n,e){"use strict";function i(t){var n=this;"scope start initial final invalid errors".match(/\w+/g).forEach(function(e){t.hasOwnProperty(e)&&(n[e]=t[e])}),this.order=t.order||s.default.getDefaultOrder(),this.defaults=Object.assign({action:"start",state:"enter"},t.defaults)}Object.defineProperty(n,"__esModule",{value:!0}),n.default=i;var r=e(1),s=function(t){return t&&t.__esModule?t:{default:t}}(r);i.prototype={scope:null,start:!0,initial:"",final:"",invalid:!1,errors:1,order:null,defaults:null}},function(t,n,e){"use strict";function i(t){return t&&t.__esModule?t:{default:t}}function r(t){this.fsm=t,this.map=new o.default}Object.defineProperty(n,"__esModule",{value:!0});var s=function(){function t(t,n){var e=[],i=!0,r=!1,s=void 0;try{for(var a,o=t[Symbol.iterator]();!(i=(a=o.next()).done)&&(e.push(a.value),!n||e.length!==n);i=!0);}catch(t){r=!0,s=t}finally{try{!i&&o.return&&o.return()}finally{if(r)throw s}}return e}return function(n,e){if(Array.isArray(n))return n;if(Symbol.iterator in Object(n))return t(n,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=e(2),o=i(a),u=e(3),c=e(0),f=e(8),h=i(f);r.prototype={fsm:null,map:null,parse:function(t){return(0,h.default)(t,this.fsm.config.defaults)},add:function(t,n){if(!(0,c.isFunction)(n))throw new Error('Error assigning "'+t+'" handler; callback is not a function',n);return this.map.insert(t,n),this},remove:function(t,n){return this.map.remove(t,n),this},get:function(t){return this.map.get(t)},trigger:function(t){var n=this,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=t.match(/\w+/g),r=s(i,3),a=r[0],o=r[1],c=r[2],f=void 0;f=/^system\.(state|action)\./.test(t)?"state"===o?new u.StateEvent(c,e):new u.ActionEvent(c,e):"system"===a?new u.SystemEvent(o,e):new u.TransitionEvent(o);var h=this.map.get(t);h&&h.forEach(function(t){return t(f,n.fsm)})}},n.default=r},function(t,n,e){"use strict";function i(t){return t&&t.__esModule?t:{default:t}}function r(t){return/^(start|change|complete|reset)$/.test(t)}function s(t){return/^(pause|resume|cancel)$/.test(t)}function a(t){var n=/\((.+?)\)/,e=t.match(n);if(e){var i=e[0],r=e[1].match(/\S+/g);if(r)return r=r.map(function(n){return t.replace(i,n)}),n.test(r[0])?r.reduce(function(t,n){return t.concat(a(n))},[]):r}return[t]}function o(t,n,e){return m.push(new h.default(g,t,n,e)),!0}function u(t,n){var e=new v.ParseError(t,n,g);return m.push(e),!1}function c(t,n){return t=(0,p.trim)(t),g=t,y=n,m=[],O.parse(t,n),m}Object.defineProperty(n,"__esModule",{value:!0}),n.default=c;var f=e(9),h=i(f),l=e(10),d=i(l),p=e(0),v=e(4),m=void 0,y=void 0,g=void 0,w={alias:/^(\w+)$/,namespaced:/^(system|transition|state|action)\.(\w+)$/,oneAction:/^@(\w+)$/,oneActionEvent:/^@(\w+):(start|end)$/,anyActionEvent:/^:(start|end)$/,oneState:/^#(\w+)$/,oneStateEvent:/^#?(\w+):(leave|enter)$/,anyStateEvent:/^:(enter|leave)$/,oneStateAction:/^#?(\w+)@(\w+)$/},b=new d.default(w),O={parse:function(t,n){var e=this;a(t).forEach(function(t){return e.parsePath(t)})},parsePath:function(t){var n=void 0;try{n=b.process(t)}catch(n){return u('Unrecognised pattern "'+t+'"',t)}if(n&&n.length){var e=n.shift(),i=this[e.type];return i?i.apply(this,e.values):u('Unknown token type "'+e.type+'"',t)}},alias:function(t){return r(t)?o("system."+t,"system"):s(t)?o("transition."+t,"transition"):this.oneState(t)},namespaced:function(t,n){var e=t+"."+n;return"system"===t&&r(n)||"transition"===t&&s(n)?o(e,t):/^(state|action)$/.test(t)&&/^(add|remove)$/.test(n)?o("system."+e,"system"):void u('Unrecognised type "'+n+'" for namespace "'+t+'"',g)},oneState:function(t){return o("state."+t+"."+y.state,"state",t)},oneAction:function(t){return o("action."+t+"."+y.action,"action",t)},anyActionEvent:function(t){return o("action.*."+t,"action","*")},oneActionEvent:function(t,n){return o("action."+t+"."+n,"action",t)},anyStateEvent:function(t){return o("state.*."+t,"state","*")},oneStateEvent:function(t,n){return o("state."+t+"."+n,"state",t)},oneStateAction:function(t,n){return o("state."+t+"."+n,"state/action",t+"@"+n)}}},function(t,n,e){"use strict";function i(t,n){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";this.id=t,this.path=n,e&&(this.namespace=e),i&&(this.target=i)}Object.defineProperty(n,"__esModule",{value:!0}),i.prototype={id:"",path:"",namespace:"",target:""},n.default=i},function(t,n,e){"use strict";function i(t){return t&&t.__esModule?t:{default:t}}function r(t){var n=this;this.rules=[],t&&Object.keys(t).forEach(function(e){return n.addRule(e,t[e])})}function s(t,n,e){this.message=t,this.source=n,this.index=e}Object.defineProperty(n,"__esModule",{value:!0}),n.default=r;var a=e(11),o=i(a),u=e(12),c=i(u);r.prototype={source:null,rules:null,tokens:null,index:0,process:function(t){return this.source=t,this.tokens=[],this.index=0,this.next(),this.tokens},addRule:function(t,n){this.rules.push(new o.default(t,n))},next:function(){var t=this;if(this.index<this.source.length){var n=this.source.substr(this.index);if(!this.rules.some(function(e){var i=n.match(e.rx);return!!i&&(t.tokens.push(new c.default(e.name,i)),t.index+=i[0].length,!0)}))throw new s("Unable to match source at position "+this.index+': "'+n+'"',this.source,this.index);this.next()}}},s.prototype=new Error,s.prototype.constructor=s},function(t,n,e){"use strict";function i(t,n){this.name=t,this.rx=n}Object.defineProperty(n,"__esModule",{value:!0}),n.default=i},function(t,n,e){"use strict";function i(t,n){this.type=t,this.match=n[0],this.values=n.slice(1)}Object.defineProperty(n,"__esModule",{value:!0}),n.default=i},function(t,n,e){"use strict";function i(t){return t&&t.__esModule?t:{default:t}}function r(t){if(Array.isArray(t)){for(var n=0,e=Array(t.length);n<t.length;n++)e[n]=t[n];return e}return Array.from(t)}function s(){this.map=new u.default,this.states=[],this.actions=[]}function a(t){var n,e={},i={},r=t.map.data;for(var s in r){i[s]=!0;for(var a in r[s])e[a]=!0,"function"!=typeof(n=r[s][a])&&(i[n]=!0)}return t.states=Object.keys(i).filter(function(t){return"*"!==t}),t.actions=Object.keys(e),t}Object.defineProperty(n,"__esModule",{value:!0});var o=e(2),u=i(o),c=e(14),f=i(c),h=e(0);s.prototype={map:null,states:null,actions:null,parse:function(t){return(0,f.default)(t)},add:function(t,n,e){if(t=(0,h.trim)(t),n=(0,h.trim)(n),"*"===(e="string"==typeof e?(0,h.trim)(e):e))throw new Error("Transitioning to a wildcard doesn't make sense");return this.map.set(n+"."+t,e),a(this)},remove:function(t){this.map.remove(t);var n=this.map.data;for(var e in n){var i=n[e];for(var r in i)i[r]===t&&delete i[r]}return a(this)},getActionsFrom:function(t){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.has(t)||this.has("*")){var e=this.map.get(t)||{},i=this.map.get("*"),r=Object.assign({},e);if(i)for(var s in i){var a=i[s];a===t||e[s]||(r[s]=a)}return r?n?r:Object.keys(r):[]}return[]},getActionFor:function(t,n){var e=this.map.get(t);for(var i in e)if(e[i]===n)return i;return null},getStatesFrom:function(t){if(this.hasState(t)){var n=this.getActionsFrom(t,!0);return Object.keys(n).map(function(t){return n[t]})}return null},getStateFor:function(t,n){return(this.getActionsFrom(t,!0)||{})[n]},getStates:function(){return[].concat(this.states)},getActions:function(){return[].concat(this.actions)},get:function(){for(var t=arguments.length,n=Array(t),e=0;e<t;e++)n[e]=arguments[e];return n=[].concat(r(n)).join("."),this.map.get(n)},hasState:function(t){return-1!==this.states.indexOf(t)},hasAction:function(t){return-1!==this.actions.indexOf(t)},hasTransition:function(t,n,e){return this.map.get(n+"."+t)===e},has:function(){for(var t=arguments.length,n=Array(t),e=0;e<t;e++)n[e]=arguments[e];return!!(n=[].concat(r(n)).join("."))&&this.map.has(n)}},s.prototype.constructor=s,n.default=s},function(t,n,e){"use strict";function i(t,n){return'Invalid transition shorthand pattern "'+t+'" - '+n}function r(t,n,e,i){t.push(new h.default(n,e,i))}function s(t){if((0,u.isString)(t)){var n=function(){if(t=t.replace(/([|=:<>])/g," $1 ").replace(/\s+/g," ").replace(/^\s+|\s+$/g,""),!/^\w+ [:=] [*\w][\w ]*[|<>] [*\w][\w ]*/.test(t))throw new c.ParseError(i(t,"cannot determine action and states"));for(var n=[],e=t.match(/([*\w ]+|[|<>])/g),s=e.shift().replace(/\s+/g,""),a=[],u="",f="",h="",l="";e.length;)if(u=e.shift(),"|"===u&&(a=[],u=e.shift()),/[<>]/.test(u)?f=u:(u=u.match(/[*\w]+/g),u=1===u.length?u[0]:u,a.push(u)),2===a.length){var d="<"===f?[a[1],a[0]]:a,p=o(d,2);if(h=p[0],l=p[1],Array.isArray(h)&&Array.isArray(l))throw new c.ParseError(i(t,"transitioning between 2 arrays doesn't make sense"));if("*"===l)throw new c.ParseError(i(t,"transitioning to a wildcard doesn't make sense"));Array.isArray(h)?h.forEach(function(t){return r(n,s,t,l)}):Array.isArray(l)?l.forEach(function(t){return r(n,s,h,t)}):r(n,s,h,l),a.shift()}return{v:n}}();if("object"===(void 0===n?"undefined":a(n)))return n.v}return[t]}Object.defineProperty(n,"__esModule",{value:!0});var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o=function(){function t(t,n){var e=[],i=!0,r=!1,s=void 0;try{for(var a,o=t[Symbol.iterator]();!(i=(a=o.next()).done)&&(e.push(a.value),!n||e.length!==n);i=!0);}catch(t){r=!0,s=t}finally{try{!i&&o.return&&o.return()}finally{if(r)throw s}}return e}return function(n,e){if(Array.isArray(n))return n;if(Symbol.iterator in Object(n))return t(n,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();n.default=s;var u=e(0),c=e(4),f=e(15),h=function(t){return t&&t.__esModule?t:{default:t}}(f)},function(t,n,e){"use strict";function i(t,n,e){this.action=t,this.from=n,this.to=e}Object.defineProperty(n,"__esModule",{value:!0}),n.default=i},function(t,n,e){"use strict";function i(t,n,e,i){this.fsm=t,this.action=n,this.from=e,this.to=i,this.clear()}function r(t){t.paused||(t.paused=!0,t.fsm.handlers.trigger("transition.pause",!0))}function s(t){t.paused&&(t.paused=!1,t.fsm.handlers.trigger("transition.resume",!1))}Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function t(t,n){var e=[],i=!0,r=!1,s=void 0;try{for(var a,o=t[Symbol.iterator]();!(i=(a=o.next()).done)&&(e.push(a.value),!n||e.length!==n);i=!0);}catch(t){r=!0,s=t}finally{try{!i&&o.return&&o.return()}finally{if(r)throw s}}return e}return function(n,e){if(Array.isArray(n))return n;if(Symbol.iterator in Object(n))return t(n,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=e(3),u=e(0);i.prototype={fsm:null,action:"",from:"",to:"",paused:!1,handlers:null,clear:function(){s(this),this.handlers=[]},exec:function(){if(!this.paused)if(this.handlers.length){var t=this.handlers.shift(),n=t();if(!1===n)return this.fsm.cancel();if(!0===n)return this.fsm.pause();this.exec()}else this.fsm.end();return this},pause:function(){return r(this),this},resume:function(){return s(this),this.exec()},cancel:function(){this.paused=!1,this.fsm.handlers.trigger("transition.cancel",!1)}},n.default={create:function(t,n,e){var r=t.config.scope,s=t.state,c=t.transitions.getStateFor(s,n);if((0,u.isFunction)(c)&&(c=c.apply(r,[t].concat(e)),!t.transitions.hasState(c)))throw new Error('Invalid "to" state "'+c+'"');var f={action:n,to:c,from:s},h=[],l=new i(t,n,s,c);return t.config.order.forEach(function(n){n=n.replace(/{(\w+)}/g,function(t,n){return f[n]});var i=t.handlers.get(n);if(i){var s=n.split("."),u=a(s,3),c=u[0],d=u[1],p=u[2];i=i.map(function(n){var i="state"===c?o.StateEvent:o.ActionEvent,s=new i(p,d,l);return function(){return n.apply(r,[s,t].concat(e))}}),h=h.concat(i)}}),l.handlers=h,l},force:function(t,n){var e=new i(t,"",t.state,n);return e.paused=!!t.transition&&t.transition.paused,e}}},function(t,n,e){"use strict";function i(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(n,"__esModule",{value:!0});var r=e(18),s=i(r),a=e(19),o=i(a),u=e(20),c=i(u);n.default={object:s.default,jQuery:o.default,vueRouter:c.default}},function(t,n,e){"use strict";function i(t){this.data={},this.fsm=t,this.fsm.on("change",this.onChange.bind(this)).on("(pause resume cancel)",this.onPause.bind(this)).on("(state.add state.remove action.add action.remove)",this.onModify.bind(this)),this.reset(),this.update()}function r(t){return new i(t)}Object.defineProperty(n,"__esModule",{value:!0}),n.default=r;var s=e(0);i.prototype={fsm:null,data:null,update:function(){this.onChange(),this.onPause(),this.onModify()},reset:function(){this.data={name:"",index:-1,paused:!1,is:{},actions:{},states:{},all:{states:[],actions:[]}}},onPause:function(t){this.data.paused=this.fsm.isPaused()},onModify:function(t){this.data.all.states=this.fsm.transitions.getStates(),this.data.all.actions=this.fsm.transitions.getActions()},onChange:function(t){var n=this.fsm;this.data.name=n.state,this.data.index=this.fsm.transitions.states.indexOf(this.data.name),this.data.states=(0,s.toHash)(n.transitions.getStatesFrom(n.state)||[]),this.data.actions=(0,s.toHash)(n.transitions.getActionsFrom(n.state)||[]),this.data.is={},this.data.is[n.state]=!0}}},function(t,n,e){"use strict";function i(t,n,e,i,r){var s=this;this.fsm=t,this.selectors={state:i||"[id]",control:r||"[name]"},this.elements={states:$(n||"#states"),controls:$(e||"#controls")},this.elements.controls.on("click",this.selectors.control,function(t){s.fsm.do(t.target.name)}),this.fsm.on("change",this.onChange.bind(this)).on("(pause resume cancel)",this.onPause.bind(this)).on("(state.add state.remove)",this.onModifyStates.bind(this)).on("(action.add action.remove)",this.onModifyActions.bind(this)),this.update()}function r(t,n,e,r,s){return new i(t,n,e,r,s)}Object.defineProperty(n,"__esModule",{value:!0}),n.default=r,i.prototype={fsm:null,elements:null,selectors:null,update:function(){this.updateStates(),this.updateButtons()},updateStates:function(){var t=this.fsm.state;t&&(this.elements.states.attr("data-state",t),this.elements.states.find(this.selectors.state).removeClass("active").filter("#"+t).addClass("active"))},updateButtons:function(){var t=this,n=this.fsm.isPaused();this.elements.controls.find(this.selectors.control).each(function(e,i){i.disabled=!t.fsm.canDo(i.name)||n})},onChange:function(t){this.updateStates(),this.updateButtons()},onPause:function(t){this.elements.states.toggleClass("paused",this.fsm.isPaused()),this.updateButtons()},onModifyStates:function(t){this.updateStates()},onModifyActions:function(t){this.updateButtons()}}},function(t,n,e){"use strict";function i(t,n){function e(){t.push({name:n.fsm.state})}n.fsm.on("change",e),t.afterEach(function(t){n.fsm.state=t.name,n.update()}),e()}Object.defineProperty(n,"__esModule",{value:!0}),n.default=i}])});