Comparing version 0.20.6 to 0.20.7
@@ -1,2 +0,2 @@ | ||
function _typeof(t){return(_typeof="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})(t)}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _defineProperties(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function _createClass(t,e,n){return e&&_defineProperties(t.prototype,e),n&&_defineProperties(t,n),t}function _defineProperty(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&_setPrototypeOf(t,e)}function _getPrototypeOf(t){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function _setPrototypeOf(t,e){return(_setPrototypeOf=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(t){return!1}}function _construct(t,e,n){return(_construct=isNativeReflectConstruct()?Reflect.construct:function(t,e,n){var r=[null];r.push.apply(r,e);var i=new(Function.bind.apply(t,r));return n&&_setPrototypeOf(i,n.prototype),i}).apply(null,arguments)}function _isNativeFunction(t){return-1!==Function.toString.call(t).indexOf("[native code]")}function _wrapNativeSuper(t){var e="function"==typeof Map?new Map:void 0;return(_wrapNativeSuper=function(t){if(null===t||!_isNativeFunction(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return _construct(t,arguments,_getPrototypeOf(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),_setPrototypeOf(n,t)})(t)}function _objectDestructuringEmpty(t){if(null==t)throw new TypeError("Cannot destructure undefined")}function _assertThisInitialized(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function _possibleConstructorReturn(t,e){return!e||"object"!=typeof e&&"function"!=typeof e?_assertThisInitialized(t):e}function _slicedToArray(t,e){return _arrayWithHoles(t)||_iterableToArrayLimit(t,e)||_nonIterableRest()}function _toConsumableArray(t){return _arrayWithoutHoles(t)||_iterableToArray(t)||_nonIterableSpread()}function _arrayWithoutHoles(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}function _arrayWithHoles(t){if(Array.isArray(t))return t}function _iterableToArray(t){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}function _iterableToArrayLimit(t,e){var n=[],r=!0,i=!1,a=void 0;try{for(var o,s=t[Symbol.iterator]();!(r=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);r=!0);}catch(t){i=!0,a=t}finally{try{r||null==s.return||s.return()}finally{if(i)throw a}}return n}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}var CONTRACT_MODEL_UPDATE_FN_RETURN_VALUE="Model update function must return valid update operations!",SEP=".",TRANSITION_SYMBOL="--\x3e",TRANSITION_LABEL_START_SYMBOL=":",HISTORY_STATE_NAME="H",HISTORY_PREFIX="history.",INIT_STATE="nok",INIT_EVENT="init",AUTO_EVENT="auto",STATE_PROTOTYPE_NAME="State",NO_STATE_UPDATE=[],NO_OUTPUT=null,ACTION_IDENTITY=function(){return{outputs:NO_OUTPUT,updates:NO_STATE_UPDATE}},history_symbol={},SHALLOW="shallow",DEEP="deep",WRONG_EVENT_FORMAT_ERROR="The machine received an event which does not have the proper format. Expecting an object whose unique key is the event name, and value is the event data.",FUNCTION_THREW_ERROR=function(t,e){return"Exception thrown when executing ".concat(e," ").concat(t||"")},INVALID_ACTION_FACTORY_EXECUTED=function(t,e){return"".concat(FUNCTION_THREW_ERROR(t,e),"\nThe ").concat(e," returned a value which is not an action.")},INVALID_PREDICATE_EXECUTED=function(t,e){return"".concat(FUNCTION_THREW_ERROR(t,e),"\nThe ").concat(e," returned a value which is not a boolean.")},ACTION_FACTORY_DESC="action factory",ENTRY_ACTION_FACTORY_DESC="(decorating) entry action",UPDATE_STATE_FN_DESC="update state function",PREDICATE_DESC="predicate",COMMAND_RENDER="render",CONTRACTS_EVAL="CONTRACTS_EVAL";const PATH_ROOT=[0],PRE_ORDER="PRE_ORDER";function clone(t){return void 0===t?void 0:JSON.parse(JSON.stringify(t))}function merge(t,e){return Object.assign({},t,e)}function updatePathInTraversalState(t,e,n){n.forEach((n,r)=>{const i=t.get(e),a=t.get(n),o=a&&a.path;t.set(n,merge(a,{isAdded:!0,isVisited:!1,path:o||i.path.concat(r)}))})}function updateVisitInTraversalState(t,e){t.set(e,merge(t.get(e),{isVisited:!0}))}function visitTree(t,e){const{store:n,lenses:r,traverse:i}=t,{empty:a,add:o,takeAndRemoveOne:s,isEmpty:c}=n,{getChildren:u}=r,{visit:l,seed:f}=i,d=new Map,T="function"==typeof f?new(f()):clone(f);let p="function"==typeof a?new(a()):clone(a),y=T;for(o([e],p),d.set(e,{isAdded:!0,isVisited:!1,path:PATH_ROOT});!c(p);){const t=s(p),e=u(d,t);o(e,p),updatePathInTraversalState(d,t,e),y=l(y,d,t),updateVisitInTraversalState(d,t)}return d.clear(),y}function breadthFirstTraverseTree(t,e,n){const{getChildren:r}=t;return visitTree({store:{empty:[],takeAndRemoveOne:t=>t.shift(),isEmpty:t=>0===t.length,add:(t,e)=>e.push.apply(e,t)},lenses:{getChildren:(t,e)=>r(e)},traverse:e},n)}function preorderTraverseTree(t,e,n){const{getChildren:r}=t;return visitTree({store:{empty:[],takeAndRemoveOne:t=>t.shift(),isEmpty:t=>0===t.length,add:(t,e)=>e.unshift(...t)},lenses:{getChildren:(t,e)=>r(e)},traverse:e},n)}function postOrderTraverseTree(t,e,n){const{getChildren:r}=t,{seed:i,visit:a}=e,o=(t,e)=>e.get(t).isVisited||((t,e)=>0===r(t,e).length)(t,e);return visitTree({store:{empty:[],takeAndRemoveOne:t=>t.shift(),isEmpty:t=>0===t.length,add:(t,e)=>e.unshift(...t)},lenses:{getChildren:(t,e)=>o(e,t)?[]:r(e,t).concat([e])},traverse:{seed:i,visit:(t,e,n)=>o(n,e)?a(t,e,n):t}},n)}function isLeafLabel(t){return 0===objectTreeLenses.getChildren(t).length}const objectTreeLenses={isLeafLabel:isLeafLabel,getLabel:t=>{if("object"!=typeof t||Array.isArray(t)||1!==Object.keys(t).length)throw"getLabel > unexpected object tree value";return t},getChildren:t=>{if("object"!=typeof t||Array.isArray(t)||1!==Object.keys(t).length)throw"getChildren > unexpected value";{let e=Object.values(t)[0];return e&&"object"==typeof e&&!Array.isArray(e)?Object.keys(e).map(t=>({[t]:e[t]})):[]}},constructTree:(t,e)=>{const n=t&&Object.keys(t)&&Object.keys(t)[0];return 0===e.length?t:{[n]:Object.assign.apply(null,e)}}};function traverseObj(t,e){const n={root:e},{strategy:r,seed:i,visit:a}=t;return({BFS:breadthFirstTraverseTree,PRE_ORDER:preorderTraverseTree,POST_ORDER:postOrderTraverseTree}[r]||preorderTraverseTree)(objectTreeLenses,{seed:i,visit:function(t,e,n){const{path:r}=e.get(n);return JSON.stringify(r)===JSON.stringify(PATH_ROOT)?t:a(t,e,n)}},n)}const arrayTreeLenses={getLabel:t=>Array.isArray(t)?t[0]:t,getChildren:t=>Array.isArray(t)?t[1]:[],constructTree:(t,e)=>e&&Array.isArray(e)&&e.length>0?[t,e]:t};var emptyTrace,noop=function(){},emptyConsole={log:noop,warn:noop,info:noop,debug:noop,error:noop,trace:noop};function isBoolean(t){return"boolean"==typeof t}function isFunction(t){return"function"==typeof t}function isControlState(t){return t&&"string"==typeof t||isHistoryControlState(t)}function isEvent(t){return void 0===t||"string"==typeof t}function isActionFactory(t){return t&&"function"==typeof t}function make_states(t){return t.reduce(function(t,e){return t[e]="",t},{})}function make_events(t){return t}function get_fn_name(t){return/^[\s\r\n]*function[\s\r\n]*([^\(\s\r\n]*?)[\s\r\n]*\([^\)\s\r\n]*\)[\s\r\n]*\{((?:[^}]*\}?)+)\}\s*$/.exec(t.toString())[1]}function wrap(t){return["-",t,"-"].join("")}function times$1(t,e){return Array.apply(null,{length:e}).map(Number.call,Number).map(t)}function always(t){return t}function keys(t){return Object.keys(t)}function merge$1(t,e){return Object.assign({},t,e)}function is_history_transition(t){return t.to.startsWith(HISTORY_PREFIX)}function is_entry_transition(t){return t.event===INIT_EVENT}function is_from_control_state(t){return function(e){return e.from===t}}function is_to_history_control_state_of(t){return function(e){return is_history_control_state_of(t,e.to)}}function is_history_control_state_of(t,e){return e.substring(HISTORY_PREFIX.length)===t}function format_transition_label(t,e,n){var r=t||"";return e&&n?"".concat(r," [").concat(e.name,"] / ").concat(n.name):e?"".concat(r," [").concat(e.name,"]}"):n?"".concat(r," / ").concat(n.name):"".concat(r)}function format_history_transition_state_name(t){var e=t.from,n=t.to;return"".concat(e,".").concat(n.substring(HISTORY_PREFIX.length),".").concat(HISTORY_STATE_NAME)}function get_all_transitions(t){var e=t.from,n=t.event,r=t.guards;return r?r.map(function(t){var r=t.predicate,i=t.to,a=t.action;return{from:e,event:n,predicate:r,to:i,action:a}}):[t]}function getDisplayName(t){return t.replace(/_/g," ")}function mergeModelUpdates(t){return function(e,n,r){return{updates:t.reduce(function(t,i){var a=i(e,n,r).updates;return a?t.concat(a):t},[]),outputs:NO_OUTPUT}}}function chainModelUpdates(t){return function(e,n,r){var i=r.updateState;return{updates:t.reduce(function(t,e){var a=t.extendedState,o=t.updates,s=e(a,n,r).updates;return{extendedState:i(a,o),updates:s}},{extendedState:e,updates:[]}).updates||[],outputs:NO_OUTPUT}}}function mergeActionFactories(t,e){return function(n,r,i){var a,o=e.map(function(t){return t(n,r,i)}),s=o.map(function(t){return t.updates||[]}),c=o.map(function(t){return t.outputs||{}});return{updates:(a=[]).concat.apply(a,_toConsumableArray(s)),outputs:t(c)}}}function identity(t,e,n){return{updates:[],outputs:NO_OUTPUT}}function lastOf(t){return t[t.length-1]}function formatActionName(t,e,n,r,i){var a=i?i.name:"",o=a?"[".concat(a,"]"):"",s=t?t.name:"identity";return"".concat(s||"unnamed action",":").concat(e,"-").concat(n,"->").concat(r," ").concat(o)}function getFsmStateList(t){var e=objectTreeLenses.getLabel;return traverseObj({strategy:PRE_ORDER,seed:{},visit:function(t,n,r){var i=e(r);return t[Object.keys(i)[0]]="",t}},t)}function getStatesType(t){var e=objectTreeLenses.getLabel,n=objectTreeLenses.isLeafLabel;return traverseObj({strategy:PRE_ORDER,seed:{},visit:function(t,r,i){var a=e(i),o=Object.keys(a)[0];return n(a)?(t[o]=!1,t):(t[o]=!0,t)}},t)}function getStatesPath(t){var e=objectTreeLenses.getLabel;return traverseObj({strategy:PRE_ORDER,seed:{},visit:function(t,n,r){var i=n.get(r).path.join("."),a=e(r);return t[Object.keys(a)[0]]=i,t}},t)}function getStatesTransitionsMap(t){return t.reduce(function(t,e){var n=e.from,r=e.event;return isHistoryControlState(n)?t:(t[n]=t[n]||{},t[n][r]=e,t)},{})||{}}function getStatesTransitionsMaps(t){return t.reduce(function(t,e){var n=e.from,r=e.event;return isHistoryControlState(n)?t:(t[n]=t[n]||{},t[n][r]=t[n][r]?t[n][r].concat(e):[e],t)},{})||{}}function getEventTransitionsMaps(t){return t.reduce(function(t,e){var n=e.from,r=e.event;return isHistoryControlState(n)?t:(t[r]=t[r]||{},t[r][n]=t[r][n]?t[r][n].concat(e):[e],t)},{})||{}}function getHistoryStatesMap(t){return reduceTransitions(function(t,e,n,r){var i=e.from,a=(e.event,e.to);e.action,e.predicate,e.gen;if(isHistoryControlState(i)){var o=getHistoryUnderlyingState(i);t.set(o,(t.get(o)||[]).concat([e]))}else if(isHistoryControlState(a)){var s=getHistoryUnderlyingState(a);t.set(s,(t.get(s)||[]).concat([e]))}return t},new Map,t)||{}}function getTargetStatesMap(t){return reduceTransitions(function(t,e,n,r){var i=e.to;return t.set(i,(t.get(i)||[]).concat([e])),t},new Map,t)||{}}function getAncestorMap(t){var e=objectTreeLenses.getLabel,n=objectTreeLenses.getChildren;return traverseObj({strategy:PRE_ORDER,seed:{},visit:function(t,r,i){var a=e(i),o=Object.keys(a)[0];return n(i).map(function(t){return Object.keys(e(t))[0]}).forEach(function(e){t[e]=t[e]||[],t[e]=t[e].concat(o)}),t}},t)}function computeHistoryMaps(t){var e;if(0===Object.keys(t).length)throw"computeHistoryMaps : passed empty control states parameter?";var n=objectTreeLenses.getLabel,r=traverseObj({strategy:PRE_ORDER,seed:{stateList:[],stateAncestors:(e={},_defineProperty(e,DEEP,{}),_defineProperty(e,SHALLOW,{}),e)},visit:function(t,e,r){var i=n(r),a=Object.keys(i)[0];t.stateList=t.stateList.concat(a);var o=e.get(r).path;e.set(JSON.stringify(o),a);var s=o.slice(0,-1);if(1===s.length)e.set(JSON.stringify(s),INIT_STATE);else{var c=e.get(JSON.stringify(s));t.stateAncestors[SHALLOW][a]=[c];var u=o.reduce(function(t,n){var r=t.path.slice(0,-1);if(t.path=r,r.length>1){var i=e.get(JSON.stringify(r));t.ancestors=t.ancestors.concat(i)}return t},{ancestors:[],path:o}).ancestors;t.stateAncestors[DEEP][a]=u}return t}},t);return{stateList:r.stateList,stateAncestors:r.stateAncestors}}function mapOverTransitionsActions(t,e){return reduceTransitions(function(e,n,r,i){var a=n.from,o=n.event,s=n.to,c=n.action,u=n.predicate,l=t(c,n,r,i);return l.displayName=l.displayName||c&&(c.name||c.displayName||formatActionName(c,a,o,s,u)),void 0===u?e.push({from:a,event:o,to:s,action:l}):0===r?e.push({from:a,event:o,guards:[{to:s,predicate:u,action:l}]}):e[e.length-1].guards.push({to:s,predicate:u,action:l}),e},[],e)}function reduceTransitions(t,e,n){return n.reduce(function(e,n,r){var i=n.from,a=n.event,o=n.to,s=n.gen,c=n.action,u=n.guards;return u||(u=s?[{to:o,action:c,gen:s,predicate:void 0}]:[{to:o,action:c,predicate:void 0}]),u.reduce(function(e,n,o){var s=n.to,c=n.action,u=n.gen,l=n.predicate;return t(e,u?{from:i,event:a,to:s,action:c,predicate:l,gen:u}:{from:i,event:a,to:s,action:c,predicate:l},o,r)},e)},e)}function everyTransition(t,e){return reduceTransitions(function(e,n){return e&&t(n)},!0,[e])}function computeTimesCircledOn(t,e){return t.reduce(function(t,n){return n===e?t+1:t},0)}function isInitState(t){return t===INIT_STATE}function isInitEvent(t){return t===INIT_EVENT}function isEventless(t){return void 0===t}function arrayizeOutput(t){return t===NO_OUTPUT?NO_OUTPUT:Array.isArray(t)?t:[t]}function isHistoryControlState(t){return"object"===_typeof(t)&&(DEEP in t||SHALLOW in t)}function getHistoryParentState(t){return t[SHALLOW]||t[DEEP]}function isShallowHistory(t){return t[SHALLOW]}function isDeepHistory(t){return t[DEEP]}function getHistoryType(t){return t[DEEP]?DEEP:SHALLOW}function getHistoryUnderlyingState(t){return t[getHistoryType(t)]}function isHistoryStateEdge(t){return void 0!==t.history}function initHistoryDataStructure(t){var e,n=function(){return t.reduce(function(t,e){return t[e]="",t},{})};return _defineProperty(e={},DEEP,n()),_defineProperty(e,SHALLOW,n()),e}function isCompoundState(t,e){var n=t.statesAdjacencyList;return n[e]&&0!==n[e].length}function isAtomicState(t,e){return!isCompoundState(t,e)}function updateHistory(t,e,n){return n===INIT_STATE?t:([SHALLOW,DEEP].forEach(function(r){(e[r][n]||[]).forEach(function(e){t[r][e]=n})}),t)}function computeHistoryState(t,e,n,r){var i=computeHistoryMaps(t),a=i.stateList,o=i.stateAncestors,s=initHistoryDataStructure(a);return(s=e.reduce(function(t,e){return updateHistory(t,o,e)},s))[n][r]}function findInitTransition(t){return t.find(function(t){return t.from===INIT_STATE&&t.event===INIT_EVENT})}function tryCatch(t,e){return function(){for(var n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];try{return t.apply(t,r)}catch(t){return e(t,r)}}}function tryCatchMachineFn(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return tryCatch(e,function(r,i){var a=new Error(r),o=getFunctionName(e),s=FUNCTION_THREW_ERROR(o,t);a.probableCause=r.probableCause?[r.probableCause,s].join("\n"):s;var c={fnName:o,params:n.reduce(function(t,e,n){return t[e]=i[n],t},{})};return a.info=r.info?[].concat([r.info]).concat([c]):c,a})}function getFunctionName(t){return t.name||t.displayName||"anonymous"}function assert(t,e){var n=t.apply(null,e);if(!0!==n){var r=n.info;throw console.error("ERROR: failed contract ".concat(t.name||"",". ").concat(r?"Error info:":""),n.info),n}}function notifyThrows(t,e){t.error(e),e.probableCause&&t.error("Probable cause: ".concat(e.probableCause)),e.info&&t.error("ERROR: additional info",e.info)}function handleFnExecError(t,e,n,r,i,a){var o=t.debug,s=t.console;return o&&n instanceof Error?(i({debug:o,console:s},n,e),!0):!(!o||r(n))&&(a({debug:o,console:s},n,e),!0)}function notifyAndRethrow(t,e){t.debug;throw notifyThrows(t.console,e),e}function throwIfInvalidActionResult(t,e,n){t.debug;var r=t.console,i=n.action,a=n.extendedState,o=n.eventData,s=n.settings,c=getFunctionName(i),u=new Error(INVALID_ACTION_FACTORY_EXECUTED(c,ACTION_FACTORY_DESC));throw u.info={fnName:getFunctionName(i),params:{updatedExtendedState:a,eventData:o,settings:s},returned:e},notifyThrows(r,u),u}function throwIfInvalidGuardResult(t,e,n){t.debug;var r=t.console,i=getFunctionName(n.predicate),a=new Error(INVALID_PREDICATE_EXECUTED(i,PREDICATE_DESC));throw a.info={predicateName:i,params:n,returned:e},notifyThrows(r,a),a}function throwIfInvalidEntryActionResult(t,e,n){t.debug;var r=t.console,i=n.action,a=n.extendedState,o=n.eventData,s=n.settings,c=getFunctionName(i),u=new Error(INVALID_ACTION_FACTORY_EXECUTED(c,ENTRY_ACTION_FACTORY_DESC));throw u.info={fnName:getFunctionName(i),params:{updatedExtendedState:a,eventData:o,settings:s},returned:e},notifyThrows(r,u),u}function isActions(t){return t&&"updates"in t&&"outputs"in t&&(t.outputs===NO_OUTPUT||Array.isArray(t.outputs))&&Array.isArray(t.updates)}function isEventStruct(t){var e;return t&&"object"===_typeof(t)?Object.keys(t).length>1?(e=new Error(WRONG_EVENT_FORMAT_ERROR)).info={event:t,cause:"Event objects must have only one key which is the event name!"}:e=!0:(e=new Error(WRONG_EVENT_FORMAT_ERROR)).info={event:t,cause:"not an object!"},e}function isError(t){return t instanceof Error}function destructureEvent(t){var e=Object.keys(t)[0];return{eventName:e,eventData:t[e]}}var noDuplicatedStates={name:"noDuplicatedStates",shouldThrow:!1,predicate:function(t,e){var n=objectTreeLenses.getLabel,r=traverseObj({strategy:PRE_ORDER,seed:{duplicatedStates:[],statesHashMap:{}},visit:function(t,e,r){var i=t.duplicatedStates,a=t.statesHashMap,o=n(r),s=Object.keys(o)[0];return s in a?{duplicatedStates:i.concat(s),statesHashMap:a}:{duplicatedStates:i,statesHashMap:(a[s]="",a)}}},t.states).duplicatedStates;return{isFulfilled:0===r.length,blame:{message:"State names must be unique! Found duplicated state names. Cf. log",info:{duplicatedStates:r}}}}},noReservedStates={name:"noReservedStates",shouldThrow:!1,predicate:function(t,e,n){var r=n.statesType;return{isFulfilled:-1===Object.keys(r).indexOf(INIT_STATE),blame:{message:"You cannot use a reserved control state name for any of the configured control states for the machine! Cf. log",info:{reservedStates:[INIT_STATE],statesType:r}}}}},atLeastOneState={name:"atLeastOneState",shouldThrow:!1,predicate:function(t,e,n){var r=n.statesType;return{isFulfilled:Object.keys(r).length>0,blame:{message:"Machine configuration must define at least one control state! Cf. log",info:{statesType:r}}}}},isInitialControlStateDeclared={name:"isInitialControlStateDeclared",shouldThrow:!1,predicate:function(t,e,n){n.initTransition;var r=n.statesType,i=t.initialControlState,a=(t.transitions,Object.keys(r));return i?{isFulfilled:a.indexOf(i)>-1,blame:{message:"Configured initial control state must be a declared state. Cf. log",info:{initialControlState:i,declaredStates:a}}}:{isFulfilled:!0,blame:void 0}}},eventsAreStrings={name:"eventsAreStrings",shouldThrow:!1,predicate:function(t,e){return{isFulfilled:t.events.every(function(t){return"string"==typeof t}),blame:{message:"Events must be an array of strings!",info:{events:t.events}}}}},validInitialConfig={name:"validInitialConfig",shouldThrow:!1,predicate:function(t,e,n){var r=n.initTransition,i=t.initialControlState;return r&&i?{isFulfilled:!1,blame:{message:"Invalid machine configuration : defining an initial control state and an initial transition at the same time may lead to ambiguity and is forbidden!",info:{initialControlState:i,initTransition:r}}}:r||i?{isFulfilled:!0,blame:void 0}:{isFulfilled:!1,blame:{message:"Invalid machine configuration : you must define EITHER an initial control state OR an initial transition! Else in which state is the machine supposed to start?",info:{initialControlState:i,initTransition:r}}}}},validInitialTransition={name:"validInitialTransition",shouldThrow:!1,predicate:function(t,e,n){var r=n.initTransition,i=t.initialControlState,a=t.transitions.reduce(function(t,e){return e.from===INIT_STATE&&t.push(e),t},[]);return{isFulfilled:i&&!r||!i&&r&&1===a.length&&r.event===INIT_EVENT&&(isInconditionalTransition(r)||areCconditionalTransitions(r)),blame:{message:"Invalid configuration for initial transition! Cf. log",info:{initTransition:r,initTransitions:a,initialControlState:i}}}}},initEventOnlyInCompoundStates={name:"initEventOnlyInCompoundStates",shouldThrow:!1,predicate:function(t,e,n){var r=n.statesTransitionsMap,i=n.statesType,a=(n.statesPath,Object.keys(i).filter(function(t){return!i[t]}).map(function(t){return _defineProperty({},t,r[t]&&r[t][INIT_EVENT])}).filter(function(t){return Object.values(t)[0]}));return{isFulfilled:0===a.length,blame:{message:"Found at least one atomic state with an entry transition! That is forbidden! Cf. log",info:{initTransitions:a}}}}},validInitialTransitionForCompoundState={name:"validInitialTransitionForCompoundState",shouldThrow:!1,predicate:function(t,e,n){var r=n.statesTransitionsMap,i=n.statesType,a=n.statesPath,o=Object.keys(i).filter(function(t){return i[t]}),s=o.map(function(t){return r[t]&&r[t][INIT_EVENT]}),c=s.every(Boolean);if(!c)return{isFulfilled:!1,blame:{message:"Found at least one compound state without an entry transition! Cf. log",info:{hasEntryTransitions:o.map(function(t){return _defineProperty({},t,!(!r[t]||!r[t][INIT_EVENT]))})}}};var u=c&&s.every(function(t){var e=t.guards,n=t.to;return!e&&"string"==typeof n});return u?u&&s.every(function(t){var e=t.from,n=t.to;return e!==n&&a[n]&&a[n].startsWith(a[e])})?{isFulfilled:!0,blame:void 0}:{isFulfilled:!1,blame:{message:"Found at least one compound state with an invalid entry transition! Entry transitions for compound states must have a target state which is strictly below the compound state in the state hierarchy! ",info:{states:t.states,statesPath:a,entryTransitions:s}}}:{isFulfilled:!1,blame:{message:"Found at least one compound state with an invalid entry transition! Entry transitions for compound states must be inconditional and the associated target control state cannot be a history pseudo-state. Cf. log",info:{entryTransitions:s}}}}},validEventLessTransitions={name:"validEventLessTransitions",shouldThrow:!1,predicate:function(t,e,n){var r=n.statesTransitionsMap,i=n.statesType,a=(n.statesPath,Object.keys(i).map(function(t){return _defineProperty({},t,r[t]&&"".concat(void 0)in r[t]&&1!==Object.keys(r[t]).length)}).filter(function(t){return void 0!==Object.values(t)[0]&&Object.values(t)[0]}));return{isFulfilled:0===a.length,blame:{message:"Found at least one control state without both an eventless transition and a competing transition! Cf. log",info:{failingOriginControlStates:a}}}}},allStateTransitionsOnOneSingleRow={name:"allStateTransitionsOnOneSingleRow",shouldThrow:!1,predicate:function(t,e,n){var r=n.statesTransitionsMaps,i=Object.keys(r).reduce(function(t,e){var n=Object.keys(r[e]).filter(function(t){return r[e][t].length>1});return n.length>0&&(t[e]=n),t},{});return{isFulfilled:0===Object.keys(i).length,blame:{message:"Found at least one control state and one event for which the associated transition are not condensated under a unique row! Cf. log",info:{statesTransitionsInfo:i}}}}},noConflictingTransitionsWithAncestorState={name:"noConflictingTransitionsWithAncestorState",shouldThrow:!1,predicate:function(t,e,n){n.statesTransitionsMaps;var r=n.eventTransitionsMaps,i=n.ancestorMap,a=Object.keys(r).reduce(function(t,e){var n=Object.keys(r[e]),a=n.filter(function(t){return t!==INIT_STATE}).map(function(t){return i[t]&&_defineProperty({},t,i[t].find(function(t){return n.indexOf(t)>-1}))}).filter(function(t){return t&&Object.values(t).filter(Boolean).length>0});return a.length>0&&(t[e]=a),t},{});return{isFulfilled:0===Object.keys(a).length,blame:{message:"Found two conflicting transitions! A -ev-> X, and B -ev-> Y leads to ambiguity if A < B or B < A. Cf. log",info:{eventTransitionsInfo:a}}}}},isHistoryStatesTargetStates={name:"isHistoryStatesTargetStates",shouldThrow:!1,predicate:function(t,e,n){_objectDestructuringEmpty(n);var r=t.transitions.reduce(function(t,e){return isHistoryControlState(e.from)?t.concat(e):t},[]);return{isFulfilled:0===Object.keys(r).length,blame:{message:"Found a history pseudo state configured as the origin control state for a transition. History pseudo states should only be target control states. Cf. log",info:{wrongHistoryStates:r}}}}},isHistoryStatesCompoundStates={name:"isHistoryStatesCompoundStates",shouldThrow:!1,predicate:function(t,e,n){var r=n.statesTransitionsMaps,i=n.statesType,a=Object.keys(r).map(function(t){return t===INIT_STATE?[]:Object.keys(r[t]).reduce(function(e,n){var a=r[t][n][0],o=a.guards,s=a.to;return o?o.reduce(function(t,e){var n=e.to;return isHistoryControlState(n)&&!i[getHistoryUnderlyingState(n)]?t.concat(a):t},e):isHistoryControlState(s)&&!i[getHistoryUnderlyingState(s)]?e.concat(a):e},[])}).reduce(function(t,e){return t.concat(e)},[]);return{isFulfilled:0===Object.keys(a).length,blame:{message:"Found a history pseudo state connected to an atomic state! History pseudo states only refer to compound states. Cf. log",info:{wrongHistoryStates:a,states:t.states}}}}},isHistoryStatesExisting={name:"isHistoryStatesExisting",shouldThrow:!1,predicate:function(t,e,n){var r=n.historyStatesMap,i=n.statesType,a=Array.from(r.entries()).map(function(t){var e=_slicedToArray(t,2),n=e[0],r=e[1];return!(n in i)&&{historyState:n,flatTransitions:r}}).filter(Boolean),o=Object.keys(a).length;return{isFulfilled:0===o,blame:{message:"Found ".concat(o," history pseudo state referring to a control state that is not declared! Check the states property of the state machine definition."),info:{invalidTransitions:a,states:t.states}}}}};function isInconditionalTransition(t){var e=t.from,n=t.event,r=t.guards,i=t.to,a=t.action;return typeof r==="".concat(void 0)&&i&&isControlState(e)&&isEvent(n)&&isControlState(i)&&isActionFactory(a)}function isValidGuard(t){var e=t.to,n=t.predicate,r=t.action;return e&&isControlState(e)&&isFunction(n)&&isActionFactory(r)}function areCconditionalTransitions(t){var e=t.from,n=t.event,r=t.guards,i=t.to;return r&&Array.isArray(r)&&r.length>0&&!i&&isControlState(e)&&isEvent(n)&&r.every(isValidGuard)}var isValidFsmDef={name:"isValidFsmDef",shouldThrow:!1,predicate:function(t,e){var n=t.transitions,r=t.states,i=t.events,a=(t.initialExtendedState,n&&Array.isArray(n)),o=r&&"object"===_typeof(r),s=i&&Array.isArray(i);return a?o?s?{isFulfilled:!0,blame:void 0}:{isFulfilled:!1,blame:{message:"The events property for a machine definition must be an array!",info:{events:i}}}:{isFulfilled:!1,blame:{message:"The states property for a machine definition must be an object!",info:{states:r}}}:{isFulfilled:!1,blame:{message:"The transitions property for a machine definition must be an array!",info:{transitions:n}}}}},haveTransitionsValidTypes={name:"haveTransitionsValidTypes",shouldThrow:!1,predicate:function(t,e){var n=t.transitions,r=n.map(function(t,e){return!isInconditionalTransition(t)&&!areCconditionalTransitions(t)&&{transition:t,index:e}}).filter(Boolean),i=Object.keys(r).length;return{isFulfilled:0===i,blame:{message:"Found ".concat(i," transitions with invalid format! Check logs for more details."),info:{wrongTransitions:r,transitions:n}}}}},areEventsDeclared={name:"areEventsDeclared",shouldThrow:!1,predicate:function(t,e,n){var r=n.eventTransitionsMaps,i=Object.keys(r),a=t.events,o=a.map(function(t){return-1===i.indexOf(t)&&t}).filter(Boolean),s=i.map(function(t){return-1===a.indexOf(t)&&t}).filter(Boolean).filter(function(t){return t!==INIT_EVENT}).filter(function(t){return"undefined"!==t});return{isFulfilled:0===o.length&&0===s.length,blame:{message:"All declared events must be used in transitions. All events used in transition must be declared! Cf. log",info:{eventsDeclaredButNotTriggeringTransitions:o,eventsNotDeclaredButTriggeringTransitions:s}}}}},areStatesDeclared={name:"areStatesDeclared",shouldThrow:!1,predicate:function(t,e,n){var r=n.statesTransitionsMaps,i=n.targetStatesMap,a=n.statesType,o=Object.keys(r),s=Array.from(i.keys()),c=Object.keys([o,s].reduce(function(t,e){return e.forEach(function(e){return t[e]=!0}),t},{})),u=Object.keys(a),l=u.map(function(t){return-1===c.indexOf(t)&&t}).filter(Boolean),f=c.map(function(t){return t!==INIT_STATE&&-1===u.indexOf(t)&&t}).filter(Boolean);return{isFulfilled:0===l.length&&0===l.length,blame:{message:"All declared states must be used in transitions. All states used in transition must be declared! Cf. log",info:{statesDeclaredButNotTriggeringTransitions:l,statesNotDeclaredButTriggeringTransitions:f}}}}},isValidSettings={name:"isValidSettings",shouldThrow:!1,predicate:function(t){return{isFulfilled:!0,blame:void 0}}},isInitialStateOriginState={name:"isInitialStateOriginState",shouldThrow:!1,predicate:function(t,e,n){var r=n.targetStatesMap;return Array.from(r.keys()).indexOf(INIT_STATE)>-1?{isFulfilled:!1,blame:{message:"Found at least one transition with the initial state as target state! CF. log",info:{targetStates:Array.from(r.keys()),transitions:t.transitions}}}:{isFulfilled:!0,blame:void 0}}},isValidSelfTransition={name:"isValidSelfTransition",shouldThrow:!1,predicate:function(t,e,n){var r=n.targetStatesMap,i=n.statesType,a=Array.from(r.keys()).map(function(t){return r.get(t).map(function(e){var n=e.from,r=e.event;if(t in i&&!i[t]&&n&&n===t&&!r)return{state:t,flatTransition:e}}).filter(Boolean)}).filter(function(t){return t.length>0});return{isFulfilled:0===a.length,blame:{message:"Found at least one eventless self-transition involving an atomic state! This is forbidden to avoid infinity loop! Cf. log",info:{wrongSelfTransitions:a}}}}},fsmContracts={computed:function(t,e){return{statesType:getStatesType(t.states),initTransition:findInitTransition(t.transitions),statesTransitionsMap:getStatesTransitionsMap(t.transitions),statesTransitionsMaps:getStatesTransitionsMaps(t.transitions),eventTransitionsMaps:getEventTransitionsMaps(t.transitions),ancestorMap:getAncestorMap(t.states),statesPath:getStatesPath(t.states),historyStatesMap:getHistoryStatesMap(t.transitions),targetStatesMap:getTargetStatesMap(t.transitions)}},description:"FSM structure",contracts:[isValidFsmDef,isValidSettings,isInitialControlStateDeclared,isInitialStateOriginState,eventsAreStrings,haveTransitionsValidTypes,noDuplicatedStates,noReservedStates,atLeastOneState,areEventsDeclared,areStatesDeclared,validInitialConfig,validInitialTransition,initEventOnlyInCompoundStates,validInitialTransitionForCompoundState,validEventLessTransitions,isValidSelfTransition,allStateTransitionsOnOneSingleRow,noConflictingTransitionsWithAncestorState,isHistoryStatesExisting,isHistoryStatesTargetStates,isHistoryStatesCompoundStates]};function makeContractHandler(t,e){var n=e&&e.debug&&e.debug.console||emptyConsole,r=e&&e.debug&&e.debug.trace||noop,i=t.description;return function(){for(var e=arguments.length,a=new Array(e),o=0;o<e;o++)a[o]=arguments[o];var s=[],c=t.computed.apply(null,a),u={isFulfilled:t.contracts.reduce(function(t,e){var r=e.name,o=e.predicate,u=e.shouldThrow,l=a.concat(c),f=o.apply(null,l),d=f.isFulfilled,T=f.blame,p="".concat(i," FAILS ").concat(r,"!"),y=T||{},m=y.message,_=y.info;if(d)return t;if(s.push({name:r,message:m,info:_}),n.error(p),n.error([r,m].join(": ")),n.debug("Supporting error data:",_),u)throw new Error([p,"check console for information!"].join("\n"));return!1},!0),failingContracts:s};return r(_defineProperty({},CONTRACTS_EVAL,u)),u}}var fsmContractChecker=function(t,e,n){return makeContractHandler(n,e)(t,e)},alwaysTrue=function(){return!0};function build_event_enum(t){return(t=t.reduce?t:Array.prototype.slice.call(arguments)).push(INIT_EVENT),t.reduce(function(t,e){return t[e]=e,t},{})}function build_nested_state_structure(t){var e="State",n={},r={};function i(){}return t={nok:t},i.prototype={current_state_name:INIT_STATE},n[INIT_STATE]=new i,n[STATE_PROTOTYPE_NAME]=new i,function t(i,a){keys(i).forEach(function(o){var s=i[o];if(n[o]=new a,n[o].name=o,n[o].parent_name=get_fn_name(a),n[o].root_name=e,"object"===_typeof(s)){r[o]=!0;var c=function(){};c.displayName=o,c.prototype=n[o],t(s,c)}})}(t,i),{hash_states:n,is_group_state:r}}function build_state_enum(t){var e={history:{}};return e.NOK=INIT_STATE,function t(n){keys(n).forEach(function(r){var i=n[r];e[r]=r,"object"===_typeof(i)&&t(i)})}(t),e}function normalizeTransitions(t){var e=t.initialControlState,n=t.transitions,r=findInitTransition(n);return e?n.concat([{from:INIT_STATE,event:INIT_EVENT,to:e,action:ACTION_IDENTITY}]):r?n:void 0}function normalizeFsmDef(t){return Object.assign({},t,{transitions:normalizeTransitions(t)})}function create_state_machine(t,e){return createStateMachine(t,e)}function createStateMachine(t,e){var n=t.states,r=t.events,i=t.initialExtendedState,a=t.updateState,o=(e||{}).debug,s=o&&o.checkContracts||void 0,c=o&&o.console?o.console:emptyConsole;o&&o.trace&&o.trace;if(s&&fsmContractChecker(t,e,s).failingContracts.length>0)throw new Error("createStateMachine: called with wrong parameters! Cf. logs for failing contracts.");var u=tryCatchMachineFn(UPDATE_STATE_FN_DESC,a,["extendedState, updates"]),l=build_event_enum(r),f=normalizeTransitions(t),d=build_nested_state_structure(n),T=i,p=computeHistoryMaps(n),y=p.stateList,m=p.stateAncestors,_=initHistoryDataStructure(y),h={},v={},g=d.is_group_state,E=d.hash_states;function S(t,e){var n,r;c.debug("send event",t),n=isEventStruct,r=[t],s&&assert(n,r);var i=destructureEvent(t),a=i.eventName,u=i.eventData,l=E[INIT_STATE].current_state_name;return e&&a===INIT_EVENT&&l!==INIT_STATE?(c.warn("The external event INIT_EVENT can only be sent when starting the machine!"),NO_OUTPUT):function(t,e,n,r){var i=t[INIT_STATE].current_state_name,a=t[i][e];if(a){c.log("found event handler!"),c.info("WHEN EVENT ",e);var s=a(r,n,i),u=s.stop,l=s.outputs;o&&!u&&c.warn("No guards have been fulfilled! We recommend to configure guards explicitly to cover the full state space!");var f=arrayizeOutput(l),d=t[INIT_STATE].current_state_name;if(v[d]&&d!==i){var T=h[d]?INIT_EVENT:AUTO_EVENT;return[].concat(f).concat(S(_defineProperty({},T,n),!1))}return f}return c.warn("There is no transition associated to the event |".concat(e,"| in state |").concat(i,"|!")),NO_OUTPUT}(d.hash_states,a,u,T)}return f.forEach(function(t){var n=t.from,r=t.to,i=t.action,s=t.event,f=t.guards;f||(f=[{predicate:alwaysTrue,to:r,action:i}]),s===INIT_EVENT&&(h[n]=!0);var d=E[n];if(s&&!(s in l))throw"unknown event ".concat(s," found in state machine definition!");s||(s=AUTO_EVENT,v[n]=!0),g[n]&&h[n]&&(v[n]=!0),d[s]=f.reduce(function(t,r,i){var s=r.action||ACTION_IDENTITY,l=s.name||s.displayName,f=function(t,e){var r="",f=function(f,d,p){n=p||n;var y=t.predicate,v=y||alwaysTrue,g=!y||tryCatchMachineFn(PREDICATE_DESC,v,["extendedState","eventData","settings"])(f,d,e),S=t.to;if(r=v?"_checking_condition_"+i:"",handleFnExecError({debug:o,console:c},{predicate:t.predicate,extendedState:f,eventData:d,settings:e},g,isBoolean,notifyAndRethrow,throwIfInvalidGuardResult),g){c.info("IN STATE ",n),y&&c.info("CASE: guard ".concat(v.name," for transition is fulfilled")),!y&&c.info("CASE: unguarded transition"),c.info("THEN : we execute the action "+l);var O=tryCatchMachineFn(ACTION_FACTORY_DESC,s,["extendedState","eventData","settings"])(f,d,e);handleFnExecError({debug:o,console:c},{action:s,extendedState:f,eventData:d,settings:e},O,isActions,notifyAndRethrow,throwIfInvalidActionResult);var b=O.updates,A=O.outputs;!function(t,e,n){var r=n[t].name;_=updateHistory(_,m,r),c.info("left state",wrap(t))}(n,0,E);var N=u(f,b);handleFnExecError({debug:o,console:c},{updateStateFn:a,extendedState:f,updates:b},N,alwaysTrue,notifyAndRethrow,noop),T=N;var I=function(t,e,n){var r,i;if(isHistoryControlState(t)){var a=t.deep?DEEP:t.shallow?SHALLOW:void 0,s=t[a];o&&c&&!h[s]&&c.warn("Configured a history state which does not relate to a compound state! The behaviour of the machine is thus unspecified. Please review your machine configuration"),i=_[a][s]||s,r=n[i]}else{if(!t)throw"enter_state : unknown case! Not a state name, and not a history state to enter!";r=n[t],i=r.name}return n[INIT_STATE].current_state_name=i,o&&c.info("AND TRANSITION TO STATE",i),i}(S,0,E);return c.info("ENTERING NEXT STATE: ",I),isError(N)&&c.error("with error: ",N),isError(N)||c.info("with extended state: ",T),{stop:!0,outputs:A}}return{stop:!1,outputs:NO_OUTPUT}};return f.displayName=n+r,f}(r,e);return function(e,n,r){var i=t(e,n,r);return i.stop?i:f(e,n,r)}},function(){return{stop:!1,outputs:NO_OUTPUT}})}),S(_defineProperty({},INIT_EVENT,i),!0),function(t){return S(t,!0)}}function makeWebComponentFromFsm(t){var e=t.name,n=t.eventHandler,r=t.fsm,i=t.commandHandlers,a=t.effectHandlers,o=t.options,s=function(t){function s(){var t;if(_classCallCheck(this,s),e.split("-").length<=1)throw"makeWebComponentFromFsm : web component's name MUST include a dash! Please review the name property passed as parameter to the function!";var c=_assertThisInitialized(_assertThisInitialized(t=_possibleConstructorReturn(this,_getPrototypeOf(s).call(this))));t.eventSubject=n,t.options=Object.assign({},o);var u=t.options.NO_ACTION||NO_OUTPUT;return t.eventSubject.subscribe({next:function(e){var n=r(e);n!==u&&n.forEach(function(e){if(e!==u){var n=e.command,r=e.params;i[n](t.eventSubject.next,r,a,c)}})}}),t}return _inherits(s,_wrapNativeSuper(HTMLElement)),_createClass(s,[{key:"connectedCallback",value:function(){this.options.initialEvent&&this.eventSubject.next(this.options.initialEvent)}},{key:"disconnectedCallback",value:function(){this.options.terminalEvent&&this.eventSubject.next(this.options.terminalEvent),this.eventSubject.complete()}},{key:"attributeChangedCallback",value:function(t,e,n){this.constructor(),this.connectedCallback()}}],[{key:"observedAttributes",get:function(){return[]}}]),s}();return customElements.define(e,s)}function makeNamedActionsFactory(t){return Object.keys(t).reduce(function(e,n){var r=t[n];return r.displayName=n,e[n]=r,e},{})}function mergeOutputsFn(t){return t.reduce(function(t,e){return t.concat(e)},[])}function decorateWithEntryActions(t,e,n){if(!e)return t;var r=t.transitions,i=t.states,a=t.initialExtendedState,o=t.initialControlState,s=t.events,c=t.updateState,u=t.settings,l=getFsmStateList(i),f=Object.keys(e).every(function(t){return null!=l[t]}),d=n||mergeOutputsFn;if(f)return{initialExtendedState:a,initialControlState:o,states:i,events:s,transitions:mapOverTransitionsActions(function(t,n,r,i){var a=n.to,o=e[a];return o?decorateWithExitAction(t,o,d,c):t},r),updateState:c,settings:u};throw"decorateWithEntryActions : found control states for which entry actions are defined, and yet do not exist in the state machine!"}function decorateWithExitAction(t,e,n,r){var i=function(i,a,o){var s=o.debug,c=tryCatchMachineFn(ENTRY_ACTION_FACTORY_DESC,e,["extendedState","eventData","settings"]),u=t(i,a,o),l=u.updates,f=tryCatchMachineFn(UPDATE_STATE_FN_DESC,r,["extendedState, updates"])(i,l);handleFnExecError({debug:s,console:console},{updateStateFn:r,extendedState:i,actionUpdate:l},f,alwaysTrue,notifyAndRethrow,noop);var d=f,T=c(d,a,o);if(!handleFnExecError({debug:s,console:console},{action:e,extendedState:d,eventData:a,settings:o},T,isActions,notifyAndRethrow,throwIfInvalidEntryActionResult))return{updates:[].concat(l,T.updates),outputs:n([u.outputs,T.outputs])}};return i.displayName="Entry_Action_After_".concat(getFunctionName(t)),i}function traceFSM(t,e){var n=e.initialExtendedState,r=e.initialControlState,i=e.events,a=e.states,o=e.transitions,s=e.updateState;return{initialExtendedState:n,initialControlState:r,events:i,states:a,updateState:s,transitions:mapOverTransitionsActions(function(t,e,n,r){return function(i,a,o){var c=e.from,u=e.event,l=e.to,f=e.predicate,d=tryCatchMachineFn(ACTION_FACTORY_DESC,t,["extendedState","eventData","settings"])(i,a,o),T=d.outputs,p=d.updates;return{updates:p,outputs:[{outputs:T,updates:p,extendedState:i,newExtendedState:tryCatchMachineFn(UPDATE_STATE_FN_DESC,s,["extendedState, updates"])(i,p||[]),controlState:c,event:{eventLabel:u,eventData:a},settings:o,targetControlState:l,predicate:f,actionFactory:t,guardIndex:n,transitionIndex:r}]}}},o)}}function makeHistoryStates(t){var e=Object.keys(getFsmStateList(t));return function(t,n){var r;if(!e.includes(n))throw"makeHistoryStates: the state for which a history state must be constructed is not a configured state for the state machine under implementation!!";return _defineProperty(r={},t,n),_defineProperty(r,"type",history_symbol),r}}function historyState(t,e){return _defineProperty({},t,e)}function generateStatePlantUmlHeader(t,e){return e?'state "'.concat(e,'" as ').concat(t," <<NoContent>>"):'state "'.concat(getDisplayName(t),'" as ').concat(t," <<NoContent>>")}function toPlantUml(t,e){var n=t.states,r=t.transitions,i=objectTreeLenses.getChildren,a=objectTreeLenses.getLabel,o=function(t){return t.join(SEP)},s=postOrderTraverseTree(objectTreeLenses,{seed:function(){return Map},visit:function(t,e,n){var s=e.get(n).path,c=a(n),u=stateToPlantUML(Object.keys(c)[0],times$1(function(e){return t.get(o(s.concat(e)))},function(t,e){return i(t,e).length}(n,e)),r);return t.set(o(s),u),t}},_defineProperty({},INIT_STATE,n)),c=s.get("0");return s.clear(),c}function stateToPlantUML(t,e,n){return["".concat(generateStatePlantUmlHeader(t,"")," {"),e.join("\n"),format_history_states(t,n),format_entry_transitions(t,n),"}",translate_transitions(t,n)].filter(function(t){return"\n"!==t&&""!==t}).join("\n")}function format_history_states(t,e){var n=e.reduce(function(e,n){return get_all_transitions(n).filter(is_history_transition).filter(is_to_history_control_state_of(t)).reduce(function(t,e){return t[format_history_transition_state_name(e)]=void 0,t},e)},{});return Object.keys(n).map(function(t){return"".concat(generateStatePlantUmlHeader(t,HISTORY_STATE_NAME))}).join("\n")}function translate_transitions(t,e){return[format_history_transitions(t,e),format_standard_transitions(t,e)].filter(Boolean).join("\n")}function format_standard_transitions(t,e){return t===INIT_STATE?"":e.map(function(e){return get_all_transitions(e).filter(is_from_control_state(t)).filter(function(t){return!is_entry_transition(t)}).filter(function(t){return!is_history_transition(t)}).map(function(t){var e=t.from,n=t.event,r=t.predicate,i=t.to,a=t.action;return[e,TRANSITION_SYMBOL,i,TRANSITION_LABEL_START_SYMBOL,format_transition_label(n,r,a)].join(" ")}).join("\n")}).filter(Boolean).join("\n")}function format_entry_transitions(t,e){return e.reduce(function(e,n){return get_all_transitions(n).filter(is_entry_transition).filter(is_from_control_state(t)).reduce(function(t,e){e.from;var n=e.to,r=e.predicate,i=e.action;return t.push("[*] ".concat(TRANSITION_SYMBOL," ").concat(n," ").concat(TRANSITION_LABEL_START_SYMBOL," ").concat(format_transition_label("",r,i))),t},e)},[]).join("\n")}function format_history_transitions(t,e){return e.map(function(e){return get_all_transitions(e).filter(is_from_control_state(t)).filter(is_history_transition).map(function(t){var e=t.from,n=t.event,r=t.predicate,i=t.to,a=t.action;return[e,TRANSITION_SYMBOL,format_history_transition_state_name({from:e,to:i}),TRANSITION_LABEL_START_SYMBOL,format_transition_label(n,r,a)].join(" ")}).join("\n")}).filter(Boolean).join("\n")}function toDagreVisualizerFormat(t){var e=t.states,n=t.transitions,r=objectTreeLenses.getLabel,i=objectTreeLenses.getChildren,a=arrayTreeLenses.constructTree,o=function(t){return t.join(SEP)},s=postOrderTraverseTree(objectTreeLenses,{seed:function(){return Map},visit:function(t,e,n){var s=e.get(n).path,c=r(n),u=Object.keys(c)[0],l=times$1(function(e){return t.get(o(s.concat(e)))},function(t,e){return i(t,e).length}(n,e));return t.set(o(s),a(u,l)),t}},_defineProperty({},INIT_STATE,e)).get("0"),c=n.map(function(t){var e=t.from,n=t.to,r=t.event,i=t.guards,a=t.action;return i?{from:e,event:r,guards:i.map(function(t){var e=t.predicate,n=t.to,r=t.action;return{predicate:e.name,to:n,action:r.name}})}:{from:e,to:n,event:r,action:a.name||"no action name?"}});return JSON.stringify({states:s,transitions:c})}export{fsmContracts,build_state_enum,normalizeTransitions,normalizeFsmDef,create_state_machine,createStateMachine,makeWebComponentFromFsm,makeNamedActionsFactory,mergeOutputsFn,decorateWithEntryActions,traceFSM,makeHistoryStates,historyState,toPlantUml,toDagreVisualizerFormat,CONTRACT_MODEL_UPDATE_FN_RETURN_VALUE,SEP,TRANSITION_SYMBOL,TRANSITION_LABEL_START_SYMBOL,HISTORY_STATE_NAME,HISTORY_PREFIX,INIT_STATE,INIT_EVENT,AUTO_EVENT,STATE_PROTOTYPE_NAME,NO_STATE_UPDATE,NO_OUTPUT,ACTION_IDENTITY,history_symbol,SHALLOW,DEEP,WRONG_EVENT_FORMAT_ERROR,FUNCTION_THREW_ERROR,INVALID_ACTION_FACTORY_EXECUTED,INVALID_PREDICATE_EXECUTED,ACTION_FACTORY_DESC,ENTRY_ACTION_FACTORY_DESC,UPDATE_STATE_FN_DESC,PREDICATE_DESC,COMMAND_RENDER,CONTRACTS_EVAL,noop,emptyConsole,noop as emptyTrace,isBoolean,isFunction,isControlState,isEvent,isActionFactory,make_states,make_events,get_fn_name,wrap,times$1 as times,always,keys,merge$1 as merge,is_history_transition,is_entry_transition,is_from_control_state,is_to_history_control_state_of,is_history_control_state_of,format_transition_label,format_history_transition_state_name,get_all_transitions,getDisplayName,mergeModelUpdates,chainModelUpdates,mergeActionFactories,identity,lastOf,getFsmStateList,getStatesType,getStatesPath,getStatesTransitionsMap,getStatesTransitionsMaps,getEventTransitionsMaps,getHistoryStatesMap,getTargetStatesMap,getAncestorMap,computeHistoryMaps,mapOverTransitionsActions,reduceTransitions,everyTransition,computeTimesCircledOn,isInitState,isInitEvent,isEventless,arrayizeOutput,isHistoryControlState,getHistoryParentState,isShallowHistory,isDeepHistory,getHistoryType,getHistoryUnderlyingState,isHistoryStateEdge,initHistoryDataStructure,isCompoundState,isAtomicState,updateHistory,computeHistoryState,findInitTransition,tryCatch,tryCatchMachineFn,getFunctionName,assert,notifyThrows,handleFnExecError,notifyAndRethrow,throwIfInvalidActionResult,throwIfInvalidGuardResult,throwIfInvalidEntryActionResult,isActions,isEventStruct,isError,destructureEvent}; | ||
function _typeof(t){return(_typeof="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})(t)}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _defineProperties(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function _createClass(t,e,n){return e&&_defineProperties(t.prototype,e),n&&_defineProperties(t,n),t}function _defineProperty(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&_setPrototypeOf(t,e)}function _getPrototypeOf(t){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function _setPrototypeOf(t,e){return(_setPrototypeOf=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(t){return!1}}function _construct(t,e,n){return(_construct=isNativeReflectConstruct()?Reflect.construct:function(t,e,n){var r=[null];r.push.apply(r,e);var a=new(Function.bind.apply(t,r));return n&&_setPrototypeOf(a,n.prototype),a}).apply(null,arguments)}function _isNativeFunction(t){return-1!==Function.toString.call(t).indexOf("[native code]")}function _wrapNativeSuper(t){var e="function"==typeof Map?new Map:void 0;return(_wrapNativeSuper=function(t){if(null===t||!_isNativeFunction(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return _construct(t,arguments,_getPrototypeOf(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),_setPrototypeOf(n,t)})(t)}function _objectDestructuringEmpty(t){if(null==t)throw new TypeError("Cannot destructure undefined")}function _assertThisInitialized(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function _possibleConstructorReturn(t,e){return!e||"object"!=typeof e&&"function"!=typeof e?_assertThisInitialized(t):e}function _slicedToArray(t,e){return _arrayWithHoles(t)||_iterableToArrayLimit(t,e)||_nonIterableRest()}function _toConsumableArray(t){return _arrayWithoutHoles(t)||_iterableToArray(t)||_nonIterableSpread()}function _arrayWithoutHoles(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}function _arrayWithHoles(t){if(Array.isArray(t))return t}function _iterableToArray(t){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}function _iterableToArrayLimit(t,e){var n=[],r=!0,a=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(r=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);r=!0);}catch(t){a=!0,i=t}finally{try{r||null==s.return||s.return()}finally{if(a)throw i}}return n}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}var CONTRACT_MODEL_UPDATE_FN_RETURN_VALUE="Model update function must return valid update operations!",SEP=".",TRANSITION_SYMBOL="--\x3e",TRANSITION_LABEL_START_SYMBOL=":",HISTORY_STATE_NAME="H",HISTORY_PREFIX="history.",INIT_STATE="nok",INIT_EVENT="init",AUTO_EVENT="auto",STATE_PROTOTYPE_NAME="State",NO_STATE_UPDATE=[],NO_OUTPUT=null,ACTION_IDENTITY=function(){return{outputs:NO_OUTPUT,updates:NO_STATE_UPDATE}},history_symbol={},SHALLOW="shallow",DEEP="deep",WRONG_EVENT_FORMAT_ERROR="The machine received an event which does not have the proper format. Expecting an object whose unique key is the event name, and value is the event data.",FUNCTION_THREW_ERROR=function(t,e){return"Exception thrown when executing ".concat(e," ").concat(t||"")},INVALID_ACTION_FACTORY_EXECUTED=function(t,e){return"".concat(FUNCTION_THREW_ERROR(t,e),"\nThe ").concat(e," returned a value which is not an action.")},INVALID_PREDICATE_EXECUTED=function(t,e){return"".concat(FUNCTION_THREW_ERROR(t,e),"\nThe ").concat(e," returned a value which is not a boolean.")},ACTION_FACTORY_DESC="action factory",ENTRY_ACTION_FACTORY_DESC="(decorating) entry action",UPDATE_STATE_FN_DESC="update state function",PREDICATE_DESC="predicate",COMMAND_RENDER="render",CONTRACTS_EVAL="CONTRACTS_EVAL";const PATH_ROOT=[0],PRE_ORDER="PRE_ORDER";function clone(t){return void 0===t?void 0:JSON.parse(JSON.stringify(t))}function merge(t,e){return Object.assign({},t,e)}function updatePathInTraversalState(t,e,n){n.forEach((n,r)=>{const a=t.get(e),i=t.get(n),o=i&&i.path;t.set(n,merge(i,{isAdded:!0,isVisited:!1,path:o||a.path.concat(r)}))})}function updateVisitInTraversalState(t,e){t.set(e,merge(t.get(e),{isVisited:!0}))}function visitTree(t,e){const{store:n,lenses:r,traverse:a}=t,{empty:i,add:o,takeAndRemoveOne:s,isEmpty:c}=n,{getChildren:u}=r,{visit:l,seed:f}=a,d=new Map,T="function"==typeof f?new(f()):clone(f);let p="function"==typeof i?new(i()):clone(i),y=T;for(o([e],p),d.set(e,{isAdded:!0,isVisited:!1,path:PATH_ROOT});!c(p);){const t=s(p),e=u(d,t);o(e,p),updatePathInTraversalState(d,t,e),y=l(y,d,t),updateVisitInTraversalState(d,t)}return d.clear(),y}function breadthFirstTraverseTree(t,e,n){const{getChildren:r}=t;return visitTree({store:{empty:[],takeAndRemoveOne:t=>t.shift(),isEmpty:t=>0===t.length,add:(t,e)=>e.push.apply(e,t)},lenses:{getChildren:(t,e)=>r(e)},traverse:e},n)}function preorderTraverseTree(t,e,n){const{getChildren:r}=t;return visitTree({store:{empty:[],takeAndRemoveOne:t=>t.shift(),isEmpty:t=>0===t.length,add:(t,e)=>e.unshift(...t)},lenses:{getChildren:(t,e)=>r(e)},traverse:e},n)}function postOrderTraverseTree(t,e,n){const{getChildren:r}=t,{seed:a,visit:i}=e,o=(t,e)=>e.get(t).isVisited||((t,e)=>0===r(t,e).length)(t,e);return visitTree({store:{empty:[],takeAndRemoveOne:t=>t.shift(),isEmpty:t=>0===t.length,add:(t,e)=>e.unshift(...t)},lenses:{getChildren:(t,e)=>o(e,t)?[]:r(e,t).concat([e])},traverse:{seed:a,visit:(t,e,n)=>o(n,e)?i(t,e,n):t}},n)}function isLeafLabel(t){return 0===objectTreeLenses.getChildren(t).length}const objectTreeLenses={isLeafLabel:isLeafLabel,getLabel:t=>{if("object"!=typeof t||Array.isArray(t)||1!==Object.keys(t).length)throw"getLabel > unexpected object tree value";return t},getChildren:t=>{if("object"!=typeof t||Array.isArray(t)||1!==Object.keys(t).length)throw"getChildren > unexpected value";{let e=Object.values(t)[0];return e&&"object"==typeof e&&!Array.isArray(e)?Object.keys(e).map(t=>({[t]:e[t]})):[]}},constructTree:(t,e)=>{const n=t&&Object.keys(t)&&Object.keys(t)[0];return 0===e.length?t:{[n]:Object.assign.apply(null,e)}}};function traverseObj(t,e){const n={root:e},{strategy:r,seed:a,visit:i}=t;return({BFS:breadthFirstTraverseTree,PRE_ORDER:preorderTraverseTree,POST_ORDER:postOrderTraverseTree}[r]||preorderTraverseTree)(objectTreeLenses,{seed:a,visit:function(t,e,n){const{path:r}=e.get(n);return JSON.stringify(r)===JSON.stringify(PATH_ROOT)?t:i(t,e,n)}},n)}const arrayTreeLenses={getLabel:t=>Array.isArray(t)?t[0]:t,getChildren:t=>Array.isArray(t)?t[1]:[],constructTree:(t,e)=>e&&Array.isArray(e)&&e.length>0?[t,e]:t};var emptyTrace,noop=function(){},emptyConsole={log:noop,warn:noop,info:noop,debug:noop,error:noop,trace:noop};function isBoolean(t){return"boolean"==typeof t}function isFunction(t){return"function"==typeof t}function isControlState(t){return t&&"string"==typeof t||isHistoryControlState(t)}function isEvent(t){return void 0===t||"string"==typeof t}function isActionFactory(t){return t&&"function"==typeof t}function make_states(t){return t.reduce(function(t,e){return t[e]="",t},{})}function make_events(t){return t}function get_fn_name(t){return/^[\s\r\n]*function[\s\r\n]*([^\(\s\r\n]*?)[\s\r\n]*\([^\)\s\r\n]*\)[\s\r\n]*\{((?:[^}]*\}?)+)\}\s*$/.exec(t.toString())[1]}function wrap(t){return["-",t,"-"].join("")}function times$1(t,e){return Array.apply(null,{length:e}).map(Number.call,Number).map(t)}function always(t){return t}function keys(t){return Object.keys(t)}function merge$1(t,e){return Object.assign({},t,e)}function is_history_transition(t){return t.to.startsWith(HISTORY_PREFIX)}function is_entry_transition(t){return t.event===INIT_EVENT}function is_from_control_state(t){return function(e){return e.from===t}}function is_to_history_control_state_of(t){return function(e){return is_history_control_state_of(t,e.to)}}function is_history_control_state_of(t,e){return e.substring(HISTORY_PREFIX.length)===t}function format_transition_label(t,e,n){var r=t||"";return e&&n?"".concat(r," [").concat(e.name,"] / ").concat(n.name):e?"".concat(r," [").concat(e.name,"]}"):n?"".concat(r," / ").concat(n.name):"".concat(r)}function format_history_transition_state_name(t){var e=t.from,n=t.to;return"".concat(e,".").concat(n.substring(HISTORY_PREFIX.length),".").concat(HISTORY_STATE_NAME)}function get_all_transitions(t){var e=t.from,n=t.event,r=t.guards;return r?r.map(function(t){var r=t.predicate,a=t.to,i=t.action;return{from:e,event:n,predicate:r,to:a,action:i}}):[t]}function getDisplayName(t){return t.replace(/_/g," ")}function mergeModelUpdates(t){return function(e,n,r){return{updates:t.reduce(function(t,a){var i=a(e,n,r).updates;return i?t.concat(i):t},[]),outputs:NO_OUTPUT}}}function chainModelUpdates(t){return function(e,n,r){var a=r.updateState;return{updates:t.reduce(function(t,e){var i=t.extendedState,o=t.updates,s=e(i,n,r).updates;return{extendedState:a(i,o),updates:s}},{extendedState:e,updates:[]}).updates||[],outputs:NO_OUTPUT}}}function mergeActionFactories(t,e){return function(n,r,a){var i,o=e.map(function(t){return t(n,r,a)}),s=o.map(function(t){return t.updates||[]}),c=o.map(function(t){return t.outputs||{}});return{updates:(i=[]).concat.apply(i,_toConsumableArray(s)),outputs:t(c)}}}function identity(t,e,n){return{updates:[],outputs:NO_OUTPUT}}function lastOf(t){return t[t.length-1]}function formatActionName(t,e,n,r,a){var i=a?a.name:"",o=i?"[".concat(i,"]"):"",s=t?t.name:"identity";return"".concat(s||"unnamed action",":").concat(e,"-").concat(n,"->").concat(r," ").concat(o)}function getFsmStateList(t){var e=objectTreeLenses.getLabel;return traverseObj({strategy:PRE_ORDER,seed:{},visit:function(t,n,r){var a=e(r);return t[Object.keys(a)[0]]="",t}},t)}function getStatesType(t){var e=objectTreeLenses.getLabel,n=objectTreeLenses.isLeafLabel;return traverseObj({strategy:PRE_ORDER,seed:{},visit:function(t,r,a){var i=e(a),o=Object.keys(i)[0];return n(i)?(t[o]=!1,t):(t[o]=!0,t)}},t)}function getStatesPath(t){var e=objectTreeLenses.getLabel;return traverseObj({strategy:PRE_ORDER,seed:{},visit:function(t,n,r){var a=n.get(r).path.join("."),i=e(r);return t[Object.keys(i)[0]]=a,t}},t)}function getStatesTransitionsMap(t){return t.reduce(function(t,e){var n=e.from,r=e.event;return isHistoryControlState(n)?t:(t[n]=t[n]||{},t[n][r]=e,t)},{})||{}}function getStatesTransitionsMaps(t){return t.reduce(function(t,e){var n=e.from,r=e.event;return isHistoryControlState(n)?t:(t[n]=t[n]||{},t[n][r]=t[n][r]?t[n][r].concat(e):[e],t)},{})||{}}function getEventTransitionsMaps(t){return t.reduce(function(t,e){var n=e.from,r=e.event;return isHistoryControlState(n)?t:(t[r]=t[r]||{},t[r][n]=t[r][n]?t[r][n].concat(e):[e],t)},{})||{}}function getHistoryStatesMap(t){return reduceTransitions(function(t,e,n,r){var a=e.from,i=(e.event,e.to);e.action,e.predicate,e.gen;if(isHistoryControlState(a)){var o=getHistoryUnderlyingState(a);t.set(o,(t.get(o)||[]).concat([e]))}else if(isHistoryControlState(i)){var s=getHistoryUnderlyingState(i);t.set(s,(t.get(s)||[]).concat([e]))}return t},new Map,t)||{}}function getTargetStatesMap(t){return reduceTransitions(function(t,e,n,r){var a=e.to;return t.set(a,(t.get(a)||[]).concat([e])),t},new Map,t)||{}}function getAncestorMap(t){var e=objectTreeLenses.getLabel,n=objectTreeLenses.getChildren;return traverseObj({strategy:PRE_ORDER,seed:{},visit:function(t,r,a){var i=e(a),o=Object.keys(i)[0];return n(a).map(function(t){return Object.keys(e(t))[0]}).forEach(function(e){t[e]=t[e]||[],t[e]=t[e].concat(o)}),t}},t)}function computeHistoryMaps(t){var e;if(0===Object.keys(t).length)throw"computeHistoryMaps : passed empty control states parameter?";var n=objectTreeLenses.getLabel,r=traverseObj({strategy:PRE_ORDER,seed:{stateList:[],stateAncestors:(e={},_defineProperty(e,DEEP,{}),_defineProperty(e,SHALLOW,{}),e)},visit:function(t,e,r){var a=n(r),i=Object.keys(a)[0];t.stateList=t.stateList.concat(i);var o=e.get(r).path;e.set(JSON.stringify(o),i);var s=o.slice(0,-1);if(1===s.length)e.set(JSON.stringify(s),INIT_STATE);else{var c=e.get(JSON.stringify(s));t.stateAncestors[SHALLOW][i]=[c];var u=o.reduce(function(t,n){var r=t.path.slice(0,-1);if(t.path=r,r.length>1){var a=e.get(JSON.stringify(r));t.ancestors=t.ancestors.concat(a)}return t},{ancestors:[],path:o}).ancestors;t.stateAncestors[DEEP][i]=u}return t}},t);return{stateList:r.stateList,stateAncestors:r.stateAncestors}}function mapOverTransitionsActions(t,e){return reduceTransitions(function(e,n,r,a){var i=n.from,o=n.event,s=n.to,c=n.action,u=n.predicate,l=t(c,n,r,a);return l.displayName=l.displayName||c&&(c.name||c.displayName||formatActionName(c,i,o,s,u)),void 0===u?e.push({from:i,event:o,to:s,action:l}):0===r?e.push({from:i,event:o,guards:[{to:s,predicate:u,action:l}]}):e[e.length-1].guards.push({to:s,predicate:u,action:l}),e},[],e)}function reduceTransitions(t,e,n){return n.reduce(function(e,n,r){var a=n.from,i=n.event,o=n.to,s=n.gen,c=n.action,u=n.guards;return u||(u=s?[{to:o,action:c,gen:s,predicate:void 0}]:[{to:o,action:c,predicate:void 0}]),u.reduce(function(e,n,o){var s=n.to,c=n.action,u=n.gen,l=n.predicate;return t(e,u?{from:a,event:i,to:s,action:c,predicate:l,gen:u}:{from:a,event:i,to:s,action:c,predicate:l},o,r)},e)},e)}function everyTransition(t,e){return reduceTransitions(function(e,n){return e&&t(n)},!0,[e])}function computeTimesCircledOn(t,e){return t.reduce(function(t,n){return n===e?t+1:t},0)}function isInitState(t){return t===INIT_STATE}function isInitEvent(t){return t===INIT_EVENT}function isEventless(t){return void 0===t}function arrayizeOutput(t){return t===NO_OUTPUT?NO_OUTPUT:Array.isArray(t)?t:[t]}function isHistoryControlState(t){return"object"===_typeof(t)&&(DEEP in t||SHALLOW in t)}function getHistoryParentState(t){return t[SHALLOW]||t[DEEP]}function isShallowHistory(t){return t[SHALLOW]}function isDeepHistory(t){return t[DEEP]}function getHistoryType(t){return t[DEEP]?DEEP:SHALLOW}function getHistoryUnderlyingState(t){return t[getHistoryType(t)]}function isHistoryStateEdge(t){return void 0!==t.history}function initHistoryDataStructure(t){var e,n=function(){return t.reduce(function(t,e){return t[e]="",t},{})};return _defineProperty(e={},DEEP,n()),_defineProperty(e,SHALLOW,n()),e}function isCompoundState(t,e){var n=t.statesAdjacencyList;return n[e]&&0!==n[e].length}function isAtomicState(t,e){return!isCompoundState(t,e)}function updateHistory(t,e,n){return n===INIT_STATE?t:([SHALLOW,DEEP].forEach(function(r){(e[r][n]||[]).forEach(function(e){t[r][e]=n})}),t)}function computeHistoryState(t,e,n,r){var a=computeHistoryMaps(t),i=a.stateList,o=a.stateAncestors,s=initHistoryDataStructure(i);return(s=e.reduce(function(t,e){return updateHistory(t,o,e)},s))[n][r]}function findInitTransition(t){return t.find(function(t){return t.from===INIT_STATE&&t.event===INIT_EVENT})}function tryCatch(t,e){return function(){for(var n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];try{return t.apply(t,r)}catch(t){return e(t,r)}}}function tryCatchMachineFn(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return tryCatch(e,function(r,a){var i=new Error(r),o=getFunctionName(e),s=FUNCTION_THREW_ERROR(o,t);i.probableCause=r.probableCause?[r.probableCause,s].join("\n"):s;var c={fnName:o,params:n.reduce(function(t,e,n){return t[e]=a[n],t},{})};return i.info=r.info?[].concat([r.info]).concat([c]):c,i})}function getFunctionName(t){return t.name||t.displayName||"anonymous"}function assert(t,e){var n=t.apply(null,e);if(!0!==n){var r=n.info;throw console.error("ERROR: failed contract ".concat(t.name||"",". ").concat(r?"Error info:":""),n.info),n}}function notifyThrows(t,e){t.error(e),e.probableCause&&t.error("Probable cause: ".concat(e.probableCause)),e.info&&t.error("ERROR: additional info",e.info)}function handleFnExecError(t,e,n,r,a,i){var o=t.debug,s=t.console;return o&&n instanceof Error?(a({debug:o,console:s},n,e),!0):!(!o||r(n))&&(i({debug:o,console:s},n,e),!0)}function notifyAndRethrow(t,e){t.debug;throw notifyThrows(t.console,e),e}function throwIfInvalidActionResult(t,e,n){t.debug;var r=t.console,a=n.action,i=n.extendedState,o=n.eventData,s=n.settings,c=getFunctionName(a),u=new Error(INVALID_ACTION_FACTORY_EXECUTED(c,ACTION_FACTORY_DESC));throw u.info={fnName:getFunctionName(a),params:{updatedExtendedState:i,eventData:o,settings:s},returned:e},notifyThrows(r,u),u}function throwIfInvalidGuardResult(t,e,n){t.debug;var r=t.console,a=getFunctionName(n.predicate),i=new Error(INVALID_PREDICATE_EXECUTED(a,PREDICATE_DESC));throw i.info={predicateName:a,params:n,returned:e},notifyThrows(r,i),i}function throwIfInvalidEntryActionResult(t,e,n){t.debug;var r=t.console,a=n.action,i=n.extendedState,o=n.eventData,s=n.settings,c=getFunctionName(a),u=new Error(INVALID_ACTION_FACTORY_EXECUTED(c,ENTRY_ACTION_FACTORY_DESC));throw u.info={fnName:getFunctionName(a),params:{updatedExtendedState:i,eventData:o,settings:s},returned:e},notifyThrows(r,u),u}function isActions(t){return t&&"updates"in t&&"outputs"in t&&(t.outputs===NO_OUTPUT||Array.isArray(t.outputs))&&Array.isArray(t.updates)}function isEventStruct(t){var e;return t&&"object"===_typeof(t)?Object.keys(t).length>1?(e=new Error(WRONG_EVENT_FORMAT_ERROR)).info={event:t,cause:"Event objects must have only one key which is the event name!"}:e=!0:(e=new Error(WRONG_EVENT_FORMAT_ERROR)).info={event:t,cause:"not an object!"},e}function isError(t){return t instanceof Error}function destructureEvent(t){var e=Object.keys(t)[0];return{eventName:e,eventData:t[e]}}var noDuplicatedStates={name:"noDuplicatedStates",shouldThrow:!1,predicate:function(t,e){var n=objectTreeLenses.getLabel,r=traverseObj({strategy:PRE_ORDER,seed:{duplicatedStates:[],statesHashMap:{}},visit:function(t,e,r){var a=t.duplicatedStates,i=t.statesHashMap,o=n(r),s=Object.keys(o)[0];return s in i?{duplicatedStates:a.concat(s),statesHashMap:i}:{duplicatedStates:a,statesHashMap:(i[s]="",i)}}},t.states).duplicatedStates;return{isFulfilled:0===r.length,blame:{message:"State names must be unique! Found duplicated state names. Cf. log",info:{duplicatedStates:r}}}}},noReservedStates={name:"noReservedStates",shouldThrow:!1,predicate:function(t,e,n){var r=n.statesType;return{isFulfilled:-1===Object.keys(r).indexOf(INIT_STATE),blame:{message:"You cannot use a reserved control state name for any of the configured control states for the machine! Cf. log",info:{reservedStates:[INIT_STATE],statesType:r}}}}},atLeastOneState={name:"atLeastOneState",shouldThrow:!1,predicate:function(t,e,n){var r=n.statesType;return{isFulfilled:Object.keys(r).length>0,blame:{message:"Machine configuration must define at least one control state! Cf. log",info:{statesType:r}}}}},isInitialControlStateDeclared={name:"isInitialControlStateDeclared",shouldThrow:!1,predicate:function(t,e,n){n.initTransition;var r=n.statesType,a=t.initialControlState,i=(t.transitions,Object.keys(r));return a?{isFulfilled:i.indexOf(a)>-1,blame:{message:"Configured initial control state must be a declared state. Cf. log",info:{initialControlState:a,declaredStates:i}}}:{isFulfilled:!0,blame:void 0}}},eventsAreStrings={name:"eventsAreStrings",shouldThrow:!1,predicate:function(t,e){return{isFulfilled:t.events.every(function(t){return"string"==typeof t}),blame:{message:"Events must be an array of strings!",info:{events:t.events}}}}},validInitialConfig={name:"validInitialConfig",shouldThrow:!1,predicate:function(t,e,n){var r=n.initTransition,a=t.initialControlState;return r&&a?{isFulfilled:!1,blame:{message:"Invalid machine configuration : defining an initial control state and an initial transition at the same time may lead to ambiguity and is forbidden!",info:{initialControlState:a,initTransition:r}}}:r||a?{isFulfilled:!0,blame:void 0}:{isFulfilled:!1,blame:{message:"Invalid machine configuration : you must define EITHER an initial control state OR an initial transition! Else in which state is the machine supposed to start?",info:{initialControlState:a,initTransition:r}}}}},validInitialTransition={name:"validInitialTransition",shouldThrow:!1,predicate:function(t,e,n){var r=n.initTransition,a=t.initialControlState,i=t.transitions.reduce(function(t,e){return e.from===INIT_STATE&&t.push(e),t},[]);return{isFulfilled:a&&!r||!a&&r&&1===i.length&&r.event===INIT_EVENT&&(isInconditionalTransition(r)||areCconditionalTransitions(r)),blame:{message:"Invalid configuration for initial transition! Cf. log",info:{initTransition:r,initTransitions:i,initialControlState:a}}}}},initEventOnlyInCompoundStates={name:"initEventOnlyInCompoundStates",shouldThrow:!1,predicate:function(t,e,n){var r=n.statesTransitionsMap,a=n.statesType,i=(n.statesPath,Object.keys(a).filter(function(t){return!a[t]}).map(function(t){return _defineProperty({},t,r[t]&&r[t][INIT_EVENT])}).filter(function(t){return Object.values(t)[0]}));return{isFulfilled:0===i.length,blame:{message:"Found at least one atomic state with an entry transition! That is forbidden! Cf. log",info:{initTransitions:i}}}}},validInitialTransitionForCompoundState={name:"validInitialTransitionForCompoundState",shouldThrow:!1,predicate:function(t,e,n){var r=n.statesTransitionsMap,a=n.statesType,i=n.statesPath,o=Object.keys(a).filter(function(t){return a[t]}),s=o.map(function(t){return r[t]&&r[t][INIT_EVENT]}),c=s.every(Boolean);if(!c)return{isFulfilled:!1,blame:{message:"Found at least one compound state without an entry transition! Cf. log",info:{hasEntryTransitions:o.map(function(t){return _defineProperty({},t,!(!r[t]||!r[t][INIT_EVENT]))})}}};var u=c&&s.every(function(t){var e=t.guards,n=t.to;return!e&&"string"==typeof n});return u?u&&s.every(function(t){var e=t.from,n=t.to;return e!==n&&i[n]&&i[n].startsWith(i[e])})?{isFulfilled:!0,blame:void 0}:{isFulfilled:!1,blame:{message:"Found at least one compound state with an invalid entry transition! Entry transitions for compound states must have a target state which is strictly below the compound state in the state hierarchy! ",info:{states:t.states,statesPath:i,entryTransitions:s}}}:{isFulfilled:!1,blame:{message:"Found at least one compound state with an invalid entry transition! Entry transitions for compound states must be inconditional and the associated target control state cannot be a history pseudo-state. Cf. log",info:{entryTransitions:s}}}}},validEventLessTransitions={name:"validEventLessTransitions",shouldThrow:!1,predicate:function(t,e,n){var r=n.statesTransitionsMap,a=n.statesType,i=(n.statesPath,Object.keys(a).map(function(t){return _defineProperty({},t,r[t]&&"".concat(void 0)in r[t]&&1!==Object.keys(r[t]).length)}).filter(function(t){return void 0!==Object.values(t)[0]&&Object.values(t)[0]}));return{isFulfilled:0===i.length,blame:{message:"Found at least one control state without both an eventless transition and a competing transition! Cf. log",info:{failingOriginControlStates:i}}}}},allStateTransitionsOnOneSingleRow={name:"allStateTransitionsOnOneSingleRow",shouldThrow:!1,predicate:function(t,e,n){var r=n.statesTransitionsMaps,a=Object.keys(r).reduce(function(t,e){var n=Object.keys(r[e]).filter(function(t){return r[e][t].length>1});return n.length>0&&(t[e]=n),t},{});return{isFulfilled:0===Object.keys(a).length,blame:{message:"Found at least one control state and one event for which the associated transition are not condensated under a unique row! Cf. log",info:{statesTransitionsInfo:a}}}}},noConflictingTransitionsWithAncestorState={name:"noConflictingTransitionsWithAncestorState",shouldThrow:!1,predicate:function(t,e,n){n.statesTransitionsMaps;var r=n.eventTransitionsMaps,a=n.ancestorMap,i=Object.keys(r).reduce(function(t,e){var n=Object.keys(r[e]),i=n.filter(function(t){return t!==INIT_STATE}).map(function(t){return a[t]&&_defineProperty({},t,a[t].find(function(t){return n.indexOf(t)>-1}))}).filter(function(t){return t&&Object.values(t).filter(Boolean).length>0});return i.length>0&&(t[e]=i),t},{});return{isFulfilled:0===Object.keys(i).length,blame:{message:"Found two conflicting transitions! A -ev-> X, and B -ev-> Y leads to ambiguity if A < B or B < A. Cf. log",info:{eventTransitionsInfo:i}}}}},isHistoryStatesTargetStates={name:"isHistoryStatesTargetStates",shouldThrow:!1,predicate:function(t,e,n){_objectDestructuringEmpty(n);var r=t.transitions.reduce(function(t,e){return isHistoryControlState(e.from)?t.concat(e):t},[]);return{isFulfilled:0===Object.keys(r).length,blame:{message:"Found a history pseudo state configured as the origin control state for a transition. History pseudo states should only be target control states. Cf. log",info:{wrongHistoryStates:r}}}}},isHistoryStatesCompoundStates={name:"isHistoryStatesCompoundStates",shouldThrow:!1,predicate:function(t,e,n){var r=n.statesTransitionsMaps,a=n.statesType,i=Object.keys(r).map(function(t){return t===INIT_STATE?[]:Object.keys(r[t]).reduce(function(e,n){var i=r[t][n][0],o=i.guards,s=i.to;return o?o.reduce(function(t,e){var n=e.to;return isHistoryControlState(n)&&!a[getHistoryUnderlyingState(n)]?t.concat(i):t},e):isHistoryControlState(s)&&!a[getHistoryUnderlyingState(s)]?e.concat(i):e},[])}).reduce(function(t,e){return t.concat(e)},[]);return{isFulfilled:0===Object.keys(i).length,blame:{message:"Found a history pseudo state connected to an atomic state! History pseudo states only refer to compound states. Cf. log",info:{wrongHistoryStates:i,states:t.states}}}}},isHistoryStatesExisting={name:"isHistoryStatesExisting",shouldThrow:!1,predicate:function(t,e,n){var r=n.historyStatesMap,a=n.statesType,i=Array.from(r.entries()).map(function(t){var e=_slicedToArray(t,2),n=e[0],r=e[1];return!(n in a)&&{historyState:n,flatTransitions:r}}).filter(Boolean),o=Object.keys(i).length;return{isFulfilled:0===o,blame:{message:"Found ".concat(o," history pseudo state referring to a control state that is not declared! Check the states property of the state machine definition."),info:{invalidTransitions:i,states:t.states}}}}};function isInconditionalTransition(t){var e=t.from,n=t.event,r=t.guards,a=t.to,i=t.action;return typeof r==="".concat(void 0)&&a&&isControlState(e)&&isEvent(n)&&isControlState(a)&&isActionFactory(i)}function isValidGuard(t){var e=t.to,n=t.predicate,r=t.action;return e&&isControlState(e)&&isFunction(n)&&isActionFactory(r)}function areCconditionalTransitions(t){var e=t.from,n=t.event,r=t.guards,a=t.to;return r&&Array.isArray(r)&&r.length>0&&!a&&isControlState(e)&&isEvent(n)&&r.every(isValidGuard)}var isValidFsmDef={name:"isValidFsmDef",shouldThrow:!1,predicate:function(t,e){var n=t.transitions,r=t.states,a=t.events,i=(t.initialExtendedState,n&&Array.isArray(n)),o=r&&"object"===_typeof(r),s=a&&Array.isArray(a);return i?o?s?{isFulfilled:!0,blame:void 0}:{isFulfilled:!1,blame:{message:"The events property for a machine definition must be an array!",info:{events:a}}}:{isFulfilled:!1,blame:{message:"The states property for a machine definition must be an object!",info:{states:r}}}:{isFulfilled:!1,blame:{message:"The transitions property for a machine definition must be an array!",info:{transitions:n}}}}},haveTransitionsValidTypes={name:"haveTransitionsValidTypes",shouldThrow:!1,predicate:function(t,e){var n=t.transitions,r=n.map(function(t,e){return!isInconditionalTransition(t)&&!areCconditionalTransitions(t)&&{transition:t,index:e}}).filter(Boolean),a=Object.keys(r).length;return{isFulfilled:0===a,blame:{message:"Found ".concat(a," transitions with invalid format! Check logs for more details."),info:{wrongTransitions:r,transitions:n}}}}},areEventsDeclared={name:"areEventsDeclared",shouldThrow:!1,predicate:function(t,e,n){var r=n.eventTransitionsMaps,a=Object.keys(r),i=t.events,o=i.map(function(t){return-1===a.indexOf(t)&&t}).filter(Boolean),s=a.map(function(t){return-1===i.indexOf(t)&&t}).filter(Boolean).filter(function(t){return t!==INIT_EVENT&&"undefined"!==t});return{isFulfilled:0===o.length&&0===s.length,blame:{message:"All declared events must be used in transitions. All events used in transition must be declared! Cf. log",info:{eventsDeclaredButNotTriggeringTransitions:o,eventsNotDeclaredButTriggeringTransitions:s}}}}},areStatesDeclared={name:"areStatesDeclared",shouldThrow:!1,predicate:function(t,e,n){var r=n.statesTransitionsMaps,a=n.targetStatesMap,i=n.statesType,o=Object.keys(r),s=Array.from(a.keys()),c=Object.keys([o,s].reduce(function(t,e){return e.forEach(function(e){return t[e]=!0}),t},{})),u=Object.keys(i),l=u.map(function(t){return-1===c.indexOf(t)&&t}).filter(Boolean),f=c.map(function(t){return t!==INIT_STATE&&-1===u.indexOf(t)&&t}).filter(Boolean);return{isFulfilled:0===l.length&&0===l.length,blame:{message:"All declared states must be used in transitions. All states used in transition must be declared! Cf. log",info:{statesDeclaredButNotTriggeringTransitions:l,statesNotDeclaredButTriggeringTransitions:f}}}}},isValidSettings={name:"isValidSettings",shouldThrow:!1,predicate:function(t){return{isFulfilled:!0,blame:void 0}}},isInitialStateOriginState={name:"isInitialStateOriginState",shouldThrow:!1,predicate:function(t,e,n){var r=n.targetStatesMap;return Array.from(r.keys()).indexOf(INIT_STATE)>-1?{isFulfilled:!1,blame:{message:"Found at least one transition with the initial state as target state! CF. log",info:{targetStates:Array.from(r.keys()),transitions:t.transitions}}}:{isFulfilled:!0,blame:void 0}}},isValidSelfTransition={name:"isValidSelfTransition",shouldThrow:!1,predicate:function(t,e,n){var r=n.targetStatesMap,a=n.statesType,i=Array.from(r.keys()).map(function(t){return r.get(t).map(function(e){var n=e.from,r=e.event;if(t in a&&!a[t]&&n&&n===t&&!r)return{state:t,flatTransition:e}}).filter(Boolean)}).filter(function(t){return t.length>0});return{isFulfilled:0===i.length,blame:{message:"Found at least one eventless self-transition involving an atomic state! This is forbidden to avoid infinity loop! Cf. log",info:{wrongSelfTransitions:i}}}}},fsmContracts={computed:function(t,e){return{statesType:getStatesType(t.states),initTransition:findInitTransition(t.transitions),statesTransitionsMap:getStatesTransitionsMap(t.transitions),statesTransitionsMaps:getStatesTransitionsMaps(t.transitions),eventTransitionsMaps:getEventTransitionsMaps(t.transitions),ancestorMap:getAncestorMap(t.states),statesPath:getStatesPath(t.states),historyStatesMap:getHistoryStatesMap(t.transitions),targetStatesMap:getTargetStatesMap(t.transitions)}},description:"FSM structure",contracts:[isValidFsmDef,isValidSettings,isInitialControlStateDeclared,isInitialStateOriginState,eventsAreStrings,haveTransitionsValidTypes,noDuplicatedStates,noReservedStates,atLeastOneState,areEventsDeclared,areStatesDeclared,validInitialConfig,validInitialTransition,initEventOnlyInCompoundStates,validInitialTransitionForCompoundState,validEventLessTransitions,isValidSelfTransition,allStateTransitionsOnOneSingleRow,noConflictingTransitionsWithAncestorState,isHistoryStatesExisting,isHistoryStatesTargetStates,isHistoryStatesCompoundStates]};function makeContractHandler(t,e){var n=e&&e.debug&&e.debug.console||emptyConsole,r=e&&e.debug&&e.debug.trace||noop,a=t.description;return function(){for(var e=arguments.length,i=new Array(e),o=0;o<e;o++)i[o]=arguments[o];var s=[],c=t.computed.apply(null,i),u={isFulfilled:t.contracts.reduce(function(t,e){var r=e.name,o=e.predicate,u=e.shouldThrow,l=i.concat(c),f=o.apply(null,l),d=f.isFulfilled,T=f.blame,p="".concat(a," FAILS ").concat(r,"!"),y=T||{},m=y.message,_=y.info;if(d)return t;if(s.push({name:r,message:m,info:_}),n.error(p),n.error([r,m].join(": ")),n.debug("Supporting error data:",_),u)throw new Error([p,"check console for information!"].join("\n"));return!1},!0),failingContracts:s};return r(_defineProperty({},CONTRACTS_EVAL,u)),u}}var fsmContractChecker=function(t,e,n){return makeContractHandler(n,e)(t,e)},alwaysTrue=function(){return!0};function build_event_enum(t){return(t=t.reduce?t:Array.prototype.slice.call(arguments)).push(INIT_EVENT),t.reduce(function(t,e){return t[e]=e,t},{})}function build_nested_state_structure(t){var e="State",n={},r={};function a(){}return t={nok:t},a.prototype={current_state_name:INIT_STATE},n[INIT_STATE]=new a,n[STATE_PROTOTYPE_NAME]=new a,function t(a,i){keys(a).forEach(function(o){var s=a[o];if(n[o]=new i,n[o].name=o,n[o].parent_name=get_fn_name(i),n[o].root_name=e,"object"===_typeof(s)){r[o]=!0;var c=function(){};c.displayName=o,c.prototype=n[o],t(s,c)}})}(t,a),{hash_states:n,is_group_state:r}}function build_state_enum(t){var e={history:{}};return e.NOK=INIT_STATE,function t(n){keys(n).forEach(function(r){var a=n[r];e[r]=r,"object"===_typeof(a)&&t(a)})}(t),e}function normalizeTransitions(t){var e=t.initialControlState,n=t.transitions,r=findInitTransition(n);return e?n.concat([{from:INIT_STATE,event:INIT_EVENT,to:e,action:ACTION_IDENTITY}]):r?n:void 0}function normalizeFsmDef(t){return Object.assign({},t,{transitions:normalizeTransitions(t)})}function create_state_machine(t,e){return createStateMachine(t,e)}function createStateMachine(t,e){var n=t.states,r=t.events,a=t.initialExtendedState,i=t.updateState,o=(e||{}).debug,s=o&&o.checkContracts||void 0,c=o&&o.console?o.console:emptyConsole;o&&o.trace&&o.trace;if(s&&fsmContractChecker(t,e,s).failingContracts.length>0)throw new Error("createStateMachine: called with wrong parameters! Cf. logs for failing contracts.");var u=tryCatchMachineFn(UPDATE_STATE_FN_DESC,i,["extendedState, updates"]),l=build_event_enum(r),f=normalizeTransitions(t),d=build_nested_state_structure(n),T=a,p=computeHistoryMaps(n),y=p.stateList,m=p.stateAncestors,_=initHistoryDataStructure(y),h={},v={},g=d.is_group_state,E=d.hash_states;function S(t,e){var n,r;c.debug("send event",t),n=isEventStruct,r=[t],s&&assert(n,r);var a=destructureEvent(t),i=a.eventName,u=a.eventData,l=E[INIT_STATE].current_state_name;return e&&i===INIT_EVENT&&l!==INIT_STATE?(c.warn("The external event INIT_EVENT can only be sent when starting the machine!"),NO_OUTPUT):function(t,e,n,r){var a=t[INIT_STATE].current_state_name,i=t[a][e];if(i){c.log("found event handler!"),c.info("WHEN EVENT ",e);var s=i(r,n,a),u=s.stop,l=s.outputs;o&&!u&&c.warn("No guards have been fulfilled! We recommend to configure guards explicitly to cover the full state space!");var f=arrayizeOutput(l),d=t[INIT_STATE].current_state_name;if(v[d]&&d!==a){var T=h[d]?INIT_EVENT:AUTO_EVENT;return[].concat(f).concat(S(_defineProperty({},T,n),!1))}return f}return c.warn("There is no transition associated to the event |".concat(e,"| in state |").concat(a,"|!")),NO_OUTPUT}(d.hash_states,i,u,T)}return f.forEach(function(t){var n=t.from,r=t.to,a=t.action,s=t.event,f=t.guards;f||(f=[{predicate:alwaysTrue,to:r,action:a}]),s===INIT_EVENT&&(h[n]=!0);var d=E[n];if(s&&!(s in l))throw"unknown event ".concat(s," found in state machine definition!");s||(s=AUTO_EVENT,v[n]=!0),g[n]&&h[n]&&(v[n]=!0),d[s]=f.reduce(function(t,r,a){var s=r.action||ACTION_IDENTITY,l=s.name||s.displayName,f=function(t,e){var r="",f=function(f,d,p){n=p||n;var y=t.predicate,v=y||alwaysTrue,g=!y||tryCatchMachineFn(PREDICATE_DESC,v,["extendedState","eventData","settings"])(f,d,e),S=t.to;if(r=v?"_checking_condition_"+a:"",handleFnExecError({debug:o,console:c},{predicate:t.predicate,extendedState:f,eventData:d,settings:e},g,isBoolean,notifyAndRethrow,throwIfInvalidGuardResult),g){c.info("IN STATE ",n),y&&c.info("CASE: guard ".concat(v.name," for transition is fulfilled")),!y&&c.info("CASE: unguarded transition"),c.info("THEN : we execute the action "+l);var O=tryCatchMachineFn(ACTION_FACTORY_DESC,s,["extendedState","eventData","settings"])(f,d,e);handleFnExecError({debug:o,console:c},{action:s,extendedState:f,eventData:d,settings:e},O,isActions,notifyAndRethrow,throwIfInvalidActionResult);var b=O.updates,A=O.outputs;!function(t,e,n){var r=n[t].name;_=updateHistory(_,m,r),c.info("left state",wrap(t))}(n,0,E);var N=u(f,b);handleFnExecError({debug:o,console:c},{updateStateFn:i,extendedState:f,updates:b},N,alwaysTrue,notifyAndRethrow,noop),T=N;var I=function(t,e,n){var r,a;if(isHistoryControlState(t)){var i=t.deep?DEEP:t.shallow?SHALLOW:void 0,s=t[i];o&&c&&!h[s]&&c.warn("Configured a history state which does not relate to a compound state! The behaviour of the machine is thus unspecified. Please review your machine configuration"),a=_[i][s]||s,r=n[a]}else{if(!t)throw"enter_state : unknown case! Not a state name, and not a history state to enter!";r=n[t],a=r.name}return n[INIT_STATE].current_state_name=a,o&&c.info("AND TRANSITION TO STATE",a),a}(S,0,E);return c.info("ENTERING NEXT STATE: ",I),isError(N)&&c.error("with error: ",N),isError(N)||c.info("with extended state: ",T),{stop:!0,outputs:A}}return{stop:!1,outputs:NO_OUTPUT}};return f.displayName=n+r,f}(r,e);return function(e,n,r){var a=t(e,n,r);return a.stop?a:f(e,n,r)}},function(){return{stop:!1,outputs:NO_OUTPUT}})}),S(_defineProperty({},INIT_EVENT,a),!0),function(t){return S(t,!0)}}function makeWebComponentFromFsm(t){var e=t.name,n=t.eventHandler,r=t.fsm,a=t.commandHandlers,i=t.effectHandlers,o=t.options,s=function(t){function s(){var t;if(_classCallCheck(this,s),e.split("-").length<=1)throw"makeWebComponentFromFsm : web component's name MUST include a dash! Please review the name property passed as parameter to the function!";var c=_assertThisInitialized(_assertThisInitialized(t=_possibleConstructorReturn(this,_getPrototypeOf(s).call(this))));t.eventSubject=n,t.options=Object.assign({},o);var u=t.options.NO_ACTION||NO_OUTPUT;return t.eventSubject.subscribe({next:function(e){var n=r(e);n!==u&&n.forEach(function(e){if(e!==u){var n=e.command,r=e.params;a[n](t.eventSubject.next,r,i,c)}})}}),t}return _inherits(s,_wrapNativeSuper(HTMLElement)),_createClass(s,[{key:"connectedCallback",value:function(){this.options.initialEvent&&this.eventSubject.next(this.options.initialEvent)}},{key:"disconnectedCallback",value:function(){this.options.terminalEvent&&this.eventSubject.next(this.options.terminalEvent),this.eventSubject.complete()}},{key:"attributeChangedCallback",value:function(t,e,n){this.constructor(),this.connectedCallback()}}],[{key:"observedAttributes",get:function(){return[]}}]),s}();return customElements.define(e,s)}function makeNamedActionsFactory(t){return Object.keys(t).reduce(function(e,n){var r=t[n];return r.displayName=n,e[n]=r,e},{})}function mergeOutputsFn(t){return t.reduce(function(t,e){return t.concat(e)},[])}function decorateWithEntryActions(t,e,n){if(!e)return t;var r=t.transitions,a=t.states,i=t.initialExtendedState,o=t.initialControlState,s=t.events,c=t.updateState,u=t.settings,l=getFsmStateList(a),f=Object.keys(e).every(function(t){return null!=l[t]}),d=n||mergeOutputsFn;if(f)return{initialExtendedState:i,initialControlState:o,states:a,events:s,transitions:mapOverTransitionsActions(function(t,n,r,a){var i=n.to,o=e[i];return o?decorateWithExitAction(t,o,d,c):t},r),updateState:c,settings:u};throw"decorateWithEntryActions : found control states for which entry actions are defined, and yet do not exist in the state machine!"}function decorateWithExitAction(t,e,n,r){var a=function(a,i,o){var s=o.debug,c=tryCatchMachineFn(ENTRY_ACTION_FACTORY_DESC,e,["extendedState","eventData","settings"]),u=t(a,i,o),l=u.updates,f=tryCatchMachineFn(UPDATE_STATE_FN_DESC,r,["extendedState, updates"])(a,l);handleFnExecError({debug:s,console:console},{updateStateFn:r,extendedState:a,actionUpdate:l},f,alwaysTrue,notifyAndRethrow,noop);var d=f,T=c(d,i,o);if(!handleFnExecError({debug:s,console:console},{action:e,extendedState:d,eventData:i,settings:o},T,isActions,notifyAndRethrow,throwIfInvalidEntryActionResult))return{updates:[].concat(l,T.updates),outputs:n([u.outputs,T.outputs])}};return a.displayName="Entry_Action_After_".concat(getFunctionName(t)),a}function traceFSM(t,e){var n=e.initialExtendedState,r=e.initialControlState,a=e.events,i=e.states,o=e.transitions,s=e.updateState;return{initialExtendedState:n,initialControlState:r,events:a,states:i,updateState:s,transitions:mapOverTransitionsActions(function(t,e,n,r){return function(a,i,o){var c=e.from,u=e.event,l=e.to,f=e.predicate,d=tryCatchMachineFn(ACTION_FACTORY_DESC,t,["extendedState","eventData","settings"])(a,i,o),T=d.outputs,p=d.updates;return{updates:p,outputs:[{outputs:T,updates:p,extendedState:a,newExtendedState:tryCatchMachineFn(UPDATE_STATE_FN_DESC,s,["extendedState, updates"])(a,p||[]),controlState:c,event:{eventLabel:u,eventData:i},settings:o,targetControlState:l,predicate:f,actionFactory:t,guardIndex:n,transitionIndex:r}]}}},o)}}function makeHistoryStates(t){var e=Object.keys(getFsmStateList(t));return function(t,n){var r;if(!e.includes(n))throw"makeHistoryStates: the state for which a history state must be constructed is not a configured state for the state machine under implementation!!";return _defineProperty(r={},t,n),_defineProperty(r,"type",history_symbol),r}}function historyState(t,e){return _defineProperty({},t,e)}function generateStatePlantUmlHeader(t,e){return e?'state "'.concat(e,'" as ').concat(t," <<NoContent>>"):'state "'.concat(getDisplayName(t),'" as ').concat(t," <<NoContent>>")}function toPlantUml(t,e){var n=t.states,r=t.transitions,a=objectTreeLenses.getChildren,i=objectTreeLenses.getLabel,o=function(t){return t.join(SEP)},s=postOrderTraverseTree(objectTreeLenses,{seed:function(){return Map},visit:function(t,e,n){var s=e.get(n).path,c=i(n),u=stateToPlantUML(Object.keys(c)[0],times$1(function(e){return t.get(o(s.concat(e)))},function(t,e){return a(t,e).length}(n,e)),r);return t.set(o(s),u),t}},_defineProperty({},INIT_STATE,n)),c=s.get("0");return s.clear(),c}function stateToPlantUML(t,e,n){return["".concat(generateStatePlantUmlHeader(t,"")," {"),e.join("\n"),format_history_states(t,n),format_entry_transitions(t,n),"}",translate_transitions(t,n)].filter(function(t){return"\n"!==t&&""!==t}).join("\n")}function format_history_states(t,e){var n=e.reduce(function(e,n){return get_all_transitions(n).filter(is_history_transition).filter(is_to_history_control_state_of(t)).reduce(function(t,e){return t[format_history_transition_state_name(e)]=void 0,t},e)},{});return Object.keys(n).map(function(t){return"".concat(generateStatePlantUmlHeader(t,HISTORY_STATE_NAME))}).join("\n")}function translate_transitions(t,e){return[format_history_transitions(t,e),format_standard_transitions(t,e)].filter(Boolean).join("\n")}function format_standard_transitions(t,e){return t===INIT_STATE?"":e.map(function(e){return get_all_transitions(e).filter(is_from_control_state(t)).filter(function(t){return!is_entry_transition(t)}).filter(function(t){return!is_history_transition(t)}).map(function(t){var e=t.from,n=t.event,r=t.predicate,a=t.to,i=t.action;return[e,TRANSITION_SYMBOL,a,TRANSITION_LABEL_START_SYMBOL,format_transition_label(n,r,i)].join(" ")}).join("\n")}).filter(Boolean).join("\n")}function format_entry_transitions(t,e){return e.reduce(function(e,n){return get_all_transitions(n).filter(is_entry_transition).filter(is_from_control_state(t)).reduce(function(t,e){e.from;var n=e.to,r=e.predicate,a=e.action;return t.push("[*] ".concat(TRANSITION_SYMBOL," ").concat(n," ").concat(TRANSITION_LABEL_START_SYMBOL," ").concat(format_transition_label("",r,a))),t},e)},[]).join("\n")}function format_history_transitions(t,e){return e.map(function(e){return get_all_transitions(e).filter(is_from_control_state(t)).filter(is_history_transition).map(function(t){var e=t.from,n=t.event,r=t.predicate,a=t.to,i=t.action;return[e,TRANSITION_SYMBOL,format_history_transition_state_name({from:e,to:a}),TRANSITION_LABEL_START_SYMBOL,format_transition_label(n,r,i)].join(" ")}).join("\n")}).filter(Boolean).join("\n")}function toDagreVisualizerFormat(t){var e=t.states,n=t.transitions,r=objectTreeLenses.getLabel,a=objectTreeLenses.getChildren,i=arrayTreeLenses.constructTree,o=function(t){return t.join(SEP)},s=postOrderTraverseTree(objectTreeLenses,{seed:function(){return Map},visit:function(t,e,n){var s=e.get(n).path,c=r(n),u=Object.keys(c)[0],l=times$1(function(e){return t.get(o(s.concat(e)))},function(t,e){return a(t,e).length}(n,e));return t.set(o(s),i(u,l)),t}},_defineProperty({},INIT_STATE,e)).get("0"),c=n.map(function(t){var e=t.from,n=t.to,r=t.event,a=t.guards,i=t.action;return a?{from:e,event:r,guards:a.map(function(t){var e=t.predicate,n=t.to,r=t.action;return{predicate:e.name,to:n,action:r.name}})}:{from:e,to:n,event:r,action:i.name||"no action name?"}});return JSON.stringify({states:s,transitions:c})}export{fsmContracts,build_state_enum,normalizeTransitions,normalizeFsmDef,create_state_machine,createStateMachine,makeWebComponentFromFsm,makeNamedActionsFactory,mergeOutputsFn,decorateWithEntryActions,traceFSM,makeHistoryStates,historyState,toPlantUml,toDagreVisualizerFormat,CONTRACT_MODEL_UPDATE_FN_RETURN_VALUE,SEP,TRANSITION_SYMBOL,TRANSITION_LABEL_START_SYMBOL,HISTORY_STATE_NAME,HISTORY_PREFIX,INIT_STATE,INIT_EVENT,AUTO_EVENT,STATE_PROTOTYPE_NAME,NO_STATE_UPDATE,NO_OUTPUT,ACTION_IDENTITY,history_symbol,SHALLOW,DEEP,WRONG_EVENT_FORMAT_ERROR,FUNCTION_THREW_ERROR,INVALID_ACTION_FACTORY_EXECUTED,INVALID_PREDICATE_EXECUTED,ACTION_FACTORY_DESC,ENTRY_ACTION_FACTORY_DESC,UPDATE_STATE_FN_DESC,PREDICATE_DESC,COMMAND_RENDER,CONTRACTS_EVAL,noop,emptyConsole,noop as emptyTrace,isBoolean,isFunction,isControlState,isEvent,isActionFactory,make_states,make_events,get_fn_name,wrap,times$1 as times,always,keys,merge$1 as merge,is_history_transition,is_entry_transition,is_from_control_state,is_to_history_control_state_of,is_history_control_state_of,format_transition_label,format_history_transition_state_name,get_all_transitions,getDisplayName,mergeModelUpdates,chainModelUpdates,mergeActionFactories,identity,lastOf,getFsmStateList,getStatesType,getStatesPath,getStatesTransitionsMap,getStatesTransitionsMaps,getEventTransitionsMaps,getHistoryStatesMap,getTargetStatesMap,getAncestorMap,computeHistoryMaps,mapOverTransitionsActions,reduceTransitions,everyTransition,computeTimesCircledOn,isInitState,isInitEvent,isEventless,arrayizeOutput,isHistoryControlState,getHistoryParentState,isShallowHistory,isDeepHistory,getHistoryType,getHistoryUnderlyingState,isHistoryStateEdge,initHistoryDataStructure,isCompoundState,isAtomicState,updateHistory,computeHistoryState,findInitTransition,tryCatch,tryCatchMachineFn,getFunctionName,assert,notifyThrows,handleFnExecError,notifyAndRethrow,throwIfInvalidActionResult,throwIfInvalidGuardResult,throwIfInvalidEntryActionResult,isActions,isEventStruct,isError,destructureEvent}; | ||
//# sourceMappingURL=kingly.es.min.js.map |
@@ -1,2 +0,2 @@ | ||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.Kingly={})}(this,function(t){"use strict";function e(t){return(e="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})(t)}function n(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function a(t){return(a=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function i(t,e){return(i=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function o(t,e,n){return(o=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(t){return!1}}()?Reflect.construct:function(t,e,n){var r=[null];r.push.apply(r,e);var a=new(Function.bind.apply(t,r));return n&&i(a,n.prototype),a}).apply(null,arguments)}function s(t){var e="function"==typeof Map?new Map:void 0;return(s=function(t){if(null===t||(n=t,-1===Function.toString.call(n).indexOf("[native code]")))return t;var n;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,r)}function r(){return o(t,arguments,a(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),i(r,t)})(t)}function u(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function c(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,a=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(r=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);r=!0);}catch(t){a=!0,i=t}finally{try{r||null==s.return||s.return()}finally{if(a)throw i}}return n}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function f(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}(t)||function(t){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}var l=".",d="--\x3e",p=":",v="H",m="history.",h="nok",g="init",y="auto",b="State",T=[],S=null,O=function(){return{outputs:S,updates:T}},E={},w="shallow",A="deep",_="The machine received an event which does not have the proper format. Expecting an object whose unique key is the event name, and value is the event data.",C=function(t,e){return"Exception thrown when executing ".concat(e," ").concat(t||"")},j=function(t,e){return"".concat(C(t,e),"\nThe ").concat(e," returned a value which is not an action.")},N=function(t,e){return"".concat(C(t,e),"\nThe ").concat(e," returned a value which is not a boolean.")},F="action factory",k="(decorating) entry action",x="update state function",R="predicate",M="CONTRACTS_EVAL";const I=[0],D="PRE_ORDER";function L(t){return void 0===t?void 0:JSON.parse(JSON.stringify(t))}function H(t,e){return Object.assign({},t,e)}function P(t,e,n){n.forEach((n,r)=>{const a=t.get(e),i=t.get(n),o=i&&i.path;t.set(n,H(i,{isAdded:!0,isVisited:!1,path:o||a.path.concat(r)}))})}function B(t,e){t.set(e,H(t.get(e),{isVisited:!0}))}function V(t,e){const{store:n,lenses:r,traverse:a}=t,{empty:i,add:o,takeAndRemoveOne:s,isEmpty:u}=n,{getChildren:c}=r,{visit:f,seed:l}=a,d=new Map,p="function"==typeof l?new(l()):L(l);let v="function"==typeof i?new(i()):L(i),m=p;for(o([e],v),d.set(e,{isAdded:!0,isVisited:!1,path:I});!u(v);){const t=s(v),e=c(d,t);o(e,v),P(d,t,e),m=f(m,d,t),B(d,t)}return d.clear(),m}function U(t,e,n){const{getChildren:r}=t;return V({store:{empty:[],takeAndRemoveOne:t=>t.shift(),isEmpty:t=>0===t.length,add:(t,e)=>e.push.apply(e,t)},lenses:{getChildren:(t,e)=>r(e)},traverse:e},n)}function W(t,e,n){const{getChildren:r}=t;return V({store:{empty:[],takeAndRemoveOne:t=>t.shift(),isEmpty:t=>0===t.length,add:(t,e)=>e.unshift(...t)},lenses:{getChildren:(t,e)=>r(e)},traverse:e},n)}function Y(t,e,n){const{getChildren:r}=t,{seed:a,visit:i}=e,o=(t,e)=>e.get(t).isVisited||((t,e)=>0===r(t,e).length)(t,e);return V({store:{empty:[],takeAndRemoveOne:t=>t.shift(),isEmpty:t=>0===t.length,add:(t,e)=>e.unshift(...t)},lenses:{getChildren:(t,e)=>o(e,t)?[]:r(e,t).concat([e])},traverse:{seed:a,visit:(t,e,n)=>o(n,e)?i(t,e,n):t}},n)}const J={isLeafLabel:function(t){return 0===J.getChildren(t).length},getLabel:t=>{if("object"!=typeof t||Array.isArray(t)||1!==Object.keys(t).length)throw"getLabel > unexpected object tree value";return t},getChildren:t=>{if("object"!=typeof t||Array.isArray(t)||1!==Object.keys(t).length)throw"getChildren > unexpected value";{let e=Object.values(t)[0];return e&&"object"==typeof e&&!Array.isArray(e)?Object.keys(e).map(t=>({[t]:e[t]})):[]}},constructTree:(t,e)=>{const n=t&&Object.keys(t)&&Object.keys(t)[0];return 0===e.length?t:{[n]:Object.assign.apply(null,e)}}};function X(t,e){const n={root:e},{strategy:r,seed:a,visit:i}=t;return({BFS:U,PRE_ORDER:W,POST_ORDER:Y}[r]||W)(J,{seed:a,visit:function(t,e,n){const{path:r}=e.get(n);return JSON.stringify(r)===JSON.stringify(I)?t:i(t,e,n)}},n)}const z={getLabel:t=>Array.isArray(t)?t[0]:t,getChildren:t=>Array.isArray(t)?t[1]:[],constructTree:(t,e)=>e&&Array.isArray(e)&&e.length>0?[t,e]:t};var q=function(){},G={log:q,warn:q,info:q,debug:q,error:q,trace:q},K=q;function $(t){return"boolean"==typeof t}function Q(t){return"function"==typeof t}function Z(t){return t&&"string"==typeof t||jt(t)}function tt(t){return void 0===t||"string"==typeof t}function et(t){return t&&"function"==typeof t}function nt(t){return/^[\s\r\n]*function[\s\r\n]*([^\(\s\r\n]*?)[\s\r\n]*\([^\)\s\r\n]*\)[\s\r\n]*\{((?:[^}]*\}?)+)\}\s*$/.exec(t.toString())[1]}function rt(t){return["-",t,"-"].join("")}function at(t,e){return Array.apply(null,{length:e}).map(Number.call,Number).map(t)}function it(t){return Object.keys(t)}function ot(t){return t.to.startsWith(m)}function st(t){return t.event===g}function ut(t){return function(e){return e.from===t}}function ct(t){return function(e){return ft(t,e.to)}}function ft(t,e){return e.substring(m.length)===t}function lt(t,e,n){var r=t||"";return e&&n?"".concat(r," [").concat(e.name,"] / ").concat(n.name):e?"".concat(r," [").concat(e.name,"]}"):n?"".concat(r," / ").concat(n.name):"".concat(r)}function dt(t){var e=t.from,n=t.to;return"".concat(e,".").concat(n.substring(m.length),".").concat(v)}function pt(t){var e=t.from,n=t.event,r=t.guards;return r?r.map(function(t){var r=t.predicate,a=t.to,i=t.action;return{from:e,event:n,predicate:r,to:a,action:i}}):[t]}function vt(t){return t.replace(/_/g," ")}function mt(t){var e=J.getLabel;return X({strategy:D,seed:{},visit:function(t,n,r){var a=e(r);return t[Object.keys(a)[0]]="",t}},t)}function ht(t){var e=J.getLabel,n=J.isLeafLabel;return X({strategy:D,seed:{},visit:function(t,r,a){var i=e(a),o=Object.keys(i)[0];return n(i)?(t[o]=!1,t):(t[o]=!0,t)}},t)}function gt(t){var e=J.getLabel;return X({strategy:D,seed:{},visit:function(t,n,r){var a=n.get(r).path.join("."),i=e(r);return t[Object.keys(i)[0]]=a,t}},t)}function yt(t){return t.reduce(function(t,e){var n=e.from,r=e.event;return jt(n)?t:(t[n]=t[n]||{},t[n][r]=e,t)},{})||{}}function bt(t){return t.reduce(function(t,e){var n=e.from,r=e.event;return jt(n)?t:(t[n]=t[n]||{},t[n][r]=t[n][r]?t[n][r].concat(e):[e],t)},{})||{}}function Tt(t){return t.reduce(function(t,e){var n=e.from,r=e.event;return jt(n)?t:(t[r]=t[r]||{},t[r][n]=t[r][n]?t[r][n].concat(e):[e],t)},{})||{}}function St(t){return _t(function(t,e,n,r){var a=e.from,i=(e.event,e.to);e.action,e.predicate,e.gen;if(jt(a)){var o=Ft(a);t.set(o,(t.get(o)||[]).concat([e]))}else if(jt(i)){var s=Ft(i);t.set(s,(t.get(s)||[]).concat([e]))}return t},new Map,t)||{}}function Ot(t){return _t(function(t,e,n,r){var a=e.to;return t.set(a,(t.get(a)||[]).concat([e])),t},new Map,t)||{}}function Et(t){var e=J.getLabel,n=J.getChildren;return X({strategy:D,seed:{},visit:function(t,r,a){var i=e(a),o=Object.keys(i)[0];return n(a).map(function(t){return Object.keys(e(t))[0]}).forEach(function(e){t[e]=t[e]||[],t[e]=t[e].concat(o)}),t}},t)}function wt(t){var e;if(0===Object.keys(t).length)throw"computeHistoryMaps : passed empty control states parameter?";var n=J.getLabel,a=X({strategy:D,seed:{stateList:[],stateAncestors:(e={},r(e,A,{}),r(e,w,{}),e)},visit:function(t,e,r){var a=n(r),i=Object.keys(a)[0];t.stateList=t.stateList.concat(i);var o=e.get(r).path;e.set(JSON.stringify(o),i);var s=o.slice(0,-1);if(1===s.length)e.set(JSON.stringify(s),h);else{var u=e.get(JSON.stringify(s));t.stateAncestors[w][i]=[u];var c=o.reduce(function(t,n){var r=t.path.slice(0,-1);if(t.path=r,r.length>1){var a=e.get(JSON.stringify(r));t.ancestors=t.ancestors.concat(a)}return t},{ancestors:[],path:o}).ancestors;t.stateAncestors[A][i]=c}return t}},t);return{stateList:a.stateList,stateAncestors:a.stateAncestors}}function At(t,e){return _t(function(e,n,r,a){var i=n.from,o=n.event,s=n.to,u=n.action,c=n.predicate,f=t(u,n,r,a);return f.displayName=f.displayName||u&&(u.name||u.displayName||function(t,e,n,r,a){var i=a?a.name:"",o=i?"[".concat(i,"]"):"",s=t?t.name:"identity";return"".concat(s||"unnamed action",":").concat(e,"-").concat(n,"->").concat(r," ").concat(o)}(u,i,o,s,c)),void 0===c?e.push({from:i,event:o,to:s,action:f}):0===r?e.push({from:i,event:o,guards:[{to:s,predicate:c,action:f}]}):e[e.length-1].guards.push({to:s,predicate:c,action:f}),e},[],e)}function _t(t,e,n){return n.reduce(function(e,n,r){var a=n.from,i=n.event,o=n.to,s=n.gen,u=n.action,c=n.guards;return c||(c=s?[{to:o,action:u,gen:s,predicate:void 0}]:[{to:o,action:u,predicate:void 0}]),c.reduce(function(e,n,o){var s=n.to,u=n.action,c=n.gen,f=n.predicate;return t(e,c?{from:a,event:i,to:s,action:u,predicate:f,gen:c}:{from:a,event:i,to:s,action:u,predicate:f},o,r)},e)},e)}function Ct(t){return t===S?S:Array.isArray(t)?t:[t]}function jt(t){return"object"===e(t)&&(A in t||w in t)}function Nt(t){return t[A]?A:w}function Ft(t){return t[Nt(t)]}function kt(t){var e,n=function(){return t.reduce(function(t,e){return t[e]="",t},{})};return r(e={},A,n()),r(e,w,n()),e}function xt(t,e){var n=t.statesAdjacencyList;return n[e]&&0!==n[e].length}function Rt(t,e,n){return n===h?t:([w,A].forEach(function(r){(e[r][n]||[]).forEach(function(e){t[r][e]=n})}),t)}function Mt(t){return t.find(function(t){return t.from===h&&t.event===g})}function It(t,e){return function(){for(var n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];try{return t.apply(t,r)}catch(t){return e(t,r)}}}function Dt(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return It(e,function(r,a){var i=new Error(r),o=Lt(e),s=C(o,t);i.probableCause=r.probableCause?[r.probableCause,s].join("\n"):s;var u={fnName:o,params:n.reduce(function(t,e,n){return t[e]=a[n],t},{})};return i.info=r.info?[].concat([r.info]).concat([u]):u,i})}function Lt(t){return t.name||t.displayName||"anonymous"}function Ht(t,e){var n=t.apply(null,e);if(!0!==n){var r=n.info;throw console.error("ERROR: failed contract ".concat(t.name||"",". ").concat(r?"Error info:":""),n.info),n}}function Pt(t,e){t.error(e),e.probableCause&&t.error("Probable cause: ".concat(e.probableCause)),e.info&&t.error("ERROR: additional info",e.info)}function Bt(t,e,n,r,a,i){var o=t.debug,s=t.console;return o&&n instanceof Error?(a({debug:o,console:s},n,e),!0):!(!o||r(n))&&(i({debug:o,console:s},n,e),!0)}function Vt(t,e){t.debug;throw Pt(t.console,e),e}function Ut(t,e,n){t.debug;var r=t.console,a=n.action,i=n.extendedState,o=n.eventData,s=n.settings,u=Lt(a),c=new Error(j(u,F));throw c.info={fnName:Lt(a),params:{updatedExtendedState:i,eventData:o,settings:s},returned:e},Pt(r,c),c}function Wt(t,e,n){t.debug;var r=t.console,a=Lt(n.predicate),i=new Error(N(a,R));throw i.info={predicateName:a,params:n,returned:e},Pt(r,i),i}function Yt(t,e,n){t.debug;var r=t.console,a=n.action,i=n.extendedState,o=n.eventData,s=n.settings,u=Lt(a),c=new Error(j(u,k));throw c.info={fnName:Lt(a),params:{updatedExtendedState:i,eventData:o,settings:s},returned:e},Pt(r,c),c}function Jt(t){return t&&"updates"in t&&"outputs"in t&&(t.outputs===S||Array.isArray(t.outputs))&&Array.isArray(t.updates)}function Xt(t){var n;return t&&"object"===e(t)?Object.keys(t).length>1?(n=new Error(_)).info={event:t,cause:"Event objects must have only one key which is the event name!"}:n=!0:(n=new Error(_)).info={event:t,cause:"not an object!"},n}function zt(t){return t instanceof Error}function qt(t){var e=Object.keys(t)[0];return{eventName:e,eventData:t[e]}}function Gt(t){var e=t.from,n=t.event,r=t.guards,a=t.to,i=t.action;return typeof r==="".concat(void 0)&&a&&Z(e)&&tt(n)&&Z(a)&&et(i)}function Kt(t){var e=t.to,n=t.predicate,r=t.action;return e&&Z(e)&&Q(n)&&et(r)}function $t(t){var e=t.from,n=t.event,r=t.guards,a=t.to;return r&&Array.isArray(r)&&r.length>0&&!a&&Z(e)&&tt(n)&&r.every(Kt)}var Qt={computed:function(t,e){return{statesType:ht(t.states),initTransition:Mt(t.transitions),statesTransitionsMap:yt(t.transitions),statesTransitionsMaps:bt(t.transitions),eventTransitionsMaps:Tt(t.transitions),ancestorMap:Et(t.states),statesPath:gt(t.states),historyStatesMap:St(t.transitions),targetStatesMap:Ot(t.transitions)}},description:"FSM structure",contracts:[{name:"isValidFsmDef",shouldThrow:!1,predicate:function(t,n){var r=t.transitions,a=t.states,i=t.events,o=(t.initialExtendedState,r&&Array.isArray(r)),s=a&&"object"===e(a),u=i&&Array.isArray(i);return o?s?u?{isFulfilled:!0,blame:void 0}:{isFulfilled:!1,blame:{message:"The events property for a machine definition must be an array!",info:{events:i}}}:{isFulfilled:!1,blame:{message:"The states property for a machine definition must be an object!",info:{states:a}}}:{isFulfilled:!1,blame:{message:"The transitions property for a machine definition must be an array!",info:{transitions:r}}}}},{name:"isValidSettings",shouldThrow:!1,predicate:function(t){return{isFulfilled:!0,blame:void 0}}},{name:"isInitialControlStateDeclared",shouldThrow:!1,predicate:function(t,e,n){n.initTransition;var r=n.statesType,a=t.initialControlState,i=(t.transitions,Object.keys(r));return a?{isFulfilled:i.indexOf(a)>-1,blame:{message:"Configured initial control state must be a declared state. Cf. log",info:{initialControlState:a,declaredStates:i}}}:{isFulfilled:!0,blame:void 0}}},{name:"isInitialStateOriginState",shouldThrow:!1,predicate:function(t,e,n){var r=n.targetStatesMap;return Array.from(r.keys()).indexOf(h)>-1?{isFulfilled:!1,blame:{message:"Found at least one transition with the initial state as target state! CF. log",info:{targetStates:Array.from(r.keys()),transitions:t.transitions}}}:{isFulfilled:!0,blame:void 0}}},{name:"eventsAreStrings",shouldThrow:!1,predicate:function(t,e){return{isFulfilled:t.events.every(function(t){return"string"==typeof t}),blame:{message:"Events must be an array of strings!",info:{events:t.events}}}}},{name:"haveTransitionsValidTypes",shouldThrow:!1,predicate:function(t,e){var n=t.transitions,r=n.map(function(t,e){return!Gt(t)&&!$t(t)&&{transition:t,index:e}}).filter(Boolean),a=Object.keys(r).length;return{isFulfilled:0===a,blame:{message:"Found ".concat(a," transitions with invalid format! Check logs for more details."),info:{wrongTransitions:r,transitions:n}}}}},{name:"noDuplicatedStates",shouldThrow:!1,predicate:function(t,e){var n=J.getLabel,r=X({strategy:D,seed:{duplicatedStates:[],statesHashMap:{}},visit:function(t,e,r){var a=t.duplicatedStates,i=t.statesHashMap,o=n(r),s=Object.keys(o)[0];return s in i?{duplicatedStates:a.concat(s),statesHashMap:i}:{duplicatedStates:a,statesHashMap:(i[s]="",i)}}},t.states).duplicatedStates;return{isFulfilled:0===r.length,blame:{message:"State names must be unique! Found duplicated state names. Cf. log",info:{duplicatedStates:r}}}}},{name:"noReservedStates",shouldThrow:!1,predicate:function(t,e,n){var r=n.statesType;return{isFulfilled:-1===Object.keys(r).indexOf(h),blame:{message:"You cannot use a reserved control state name for any of the configured control states for the machine! Cf. log",info:{reservedStates:[h],statesType:r}}}}},{name:"atLeastOneState",shouldThrow:!1,predicate:function(t,e,n){var r=n.statesType;return{isFulfilled:Object.keys(r).length>0,blame:{message:"Machine configuration must define at least one control state! Cf. log",info:{statesType:r}}}}},{name:"areEventsDeclared",shouldThrow:!1,predicate:function(t,e,n){var r=n.eventTransitionsMaps,a=Object.keys(r),i=t.events,o=i.map(function(t){return-1===a.indexOf(t)&&t}).filter(Boolean),s=a.map(function(t){return-1===i.indexOf(t)&&t}).filter(Boolean).filter(function(t){return t!==g}).filter(function(t){return"undefined"!==t});return{isFulfilled:0===o.length&&0===s.length,blame:{message:"All declared events must be used in transitions. All events used in transition must be declared! Cf. log",info:{eventsDeclaredButNotTriggeringTransitions:o,eventsNotDeclaredButTriggeringTransitions:s}}}}},{name:"areStatesDeclared",shouldThrow:!1,predicate:function(t,e,n){var r=n.statesTransitionsMaps,a=n.targetStatesMap,i=n.statesType,o=Object.keys(r),s=Array.from(a.keys()),u=Object.keys([o,s].reduce(function(t,e){return e.forEach(function(e){return t[e]=!0}),t},{})),c=Object.keys(i),f=c.map(function(t){return-1===u.indexOf(t)&&t}).filter(Boolean),l=u.map(function(t){return t!==h&&-1===c.indexOf(t)&&t}).filter(Boolean);return{isFulfilled:0===f.length&&0===f.length,blame:{message:"All declared states must be used in transitions. All states used in transition must be declared! Cf. log",info:{statesDeclaredButNotTriggeringTransitions:f,statesNotDeclaredButTriggeringTransitions:l}}}}},{name:"validInitialConfig",shouldThrow:!1,predicate:function(t,e,n){var r=n.initTransition,a=t.initialControlState;return r&&a?{isFulfilled:!1,blame:{message:"Invalid machine configuration : defining an initial control state and an initial transition at the same time may lead to ambiguity and is forbidden!",info:{initialControlState:a,initTransition:r}}}:r||a?{isFulfilled:!0,blame:void 0}:{isFulfilled:!1,blame:{message:"Invalid machine configuration : you must define EITHER an initial control state OR an initial transition! Else in which state is the machine supposed to start?",info:{initialControlState:a,initTransition:r}}}}},{name:"validInitialTransition",shouldThrow:!1,predicate:function(t,e,n){var r=n.initTransition,a=t.initialControlState,i=t.transitions.reduce(function(t,e){return e.from===h&&t.push(e),t},[]);return{isFulfilled:a&&!r||!a&&r&&1===i.length&&r.event===g&&(Gt(r)||$t(r)),blame:{message:"Invalid configuration for initial transition! Cf. log",info:{initTransition:r,initTransitions:i,initialControlState:a}}}}},{name:"initEventOnlyInCompoundStates",shouldThrow:!1,predicate:function(t,e,n){var a=n.statesTransitionsMap,i=n.statesType,o=(n.statesPath,Object.keys(i).filter(function(t){return!i[t]}).map(function(t){return r({},t,a[t]&&a[t][g])}).filter(function(t){return Object.values(t)[0]}));return{isFulfilled:0===o.length,blame:{message:"Found at least one atomic state with an entry transition! That is forbidden! Cf. log",info:{initTransitions:o}}}}},{name:"validInitialTransitionForCompoundState",shouldThrow:!1,predicate:function(t,e,n){var a=n.statesTransitionsMap,i=n.statesType,o=n.statesPath,s=Object.keys(i).filter(function(t){return i[t]}),u=s.map(function(t){return a[t]&&a[t][g]}),c=u.every(Boolean);if(!c)return{isFulfilled:!1,blame:{message:"Found at least one compound state without an entry transition! Cf. log",info:{hasEntryTransitions:s.map(function(t){return r({},t,!(!a[t]||!a[t][g]))})}}};var f=c&&u.every(function(t){var e=t.guards,n=t.to;return!e&&"string"==typeof n});return f?f&&u.every(function(t){var e=t.from,n=t.to;return e!==n&&o[n]&&o[n].startsWith(o[e])})?{isFulfilled:!0,blame:void 0}:{isFulfilled:!1,blame:{message:"Found at least one compound state with an invalid entry transition! Entry transitions for compound states must have a target state which is strictly below the compound state in the state hierarchy! ",info:{states:t.states,statesPath:o,entryTransitions:u}}}:{isFulfilled:!1,blame:{message:"Found at least one compound state with an invalid entry transition! Entry transitions for compound states must be inconditional and the associated target control state cannot be a history pseudo-state. Cf. log",info:{entryTransitions:u}}}}},{name:"validEventLessTransitions",shouldThrow:!1,predicate:function(t,e,n){var a=n.statesTransitionsMap,i=n.statesType,o=(n.statesPath,Object.keys(i).map(function(t){return r({},t,a[t]&&"".concat(void 0)in a[t]&&1!==Object.keys(a[t]).length)}).filter(function(t){return void 0!==Object.values(t)[0]&&Object.values(t)[0]}));return{isFulfilled:0===o.length,blame:{message:"Found at least one control state without both an eventless transition and a competing transition! Cf. log",info:{failingOriginControlStates:o}}}}},{name:"isValidSelfTransition",shouldThrow:!1,predicate:function(t,e,n){var r=n.targetStatesMap,a=n.statesType,i=Array.from(r.keys()).map(function(t){return r.get(t).map(function(e){var n=e.from,r=e.event;if(t in a&&!a[t]&&n&&n===t&&!r)return{state:t,flatTransition:e}}).filter(Boolean)}).filter(function(t){return t.length>0});return{isFulfilled:0===i.length,blame:{message:"Found at least one eventless self-transition involving an atomic state! This is forbidden to avoid infinity loop! Cf. log",info:{wrongSelfTransitions:i}}}}},{name:"allStateTransitionsOnOneSingleRow",shouldThrow:!1,predicate:function(t,e,n){var r=n.statesTransitionsMaps,a=Object.keys(r).reduce(function(t,e){var n=Object.keys(r[e]).filter(function(t){return r[e][t].length>1});return n.length>0&&(t[e]=n),t},{});return{isFulfilled:0===Object.keys(a).length,blame:{message:"Found at least one control state and one event for which the associated transition are not condensated under a unique row! Cf. log",info:{statesTransitionsInfo:a}}}}},{name:"noConflictingTransitionsWithAncestorState",shouldThrow:!1,predicate:function(t,e,n){n.statesTransitionsMaps;var a=n.eventTransitionsMaps,i=n.ancestorMap,o=Object.keys(a).reduce(function(t,e){var n=Object.keys(a[e]),o=n.filter(function(t){return t!==h}).map(function(t){return i[t]&&r({},t,i[t].find(function(t){return n.indexOf(t)>-1}))}).filter(function(t){return t&&Object.values(t).filter(Boolean).length>0});return o.length>0&&(t[e]=o),t},{});return{isFulfilled:0===Object.keys(o).length,blame:{message:"Found two conflicting transitions! A -ev-> X, and B -ev-> Y leads to ambiguity if A < B or B < A. Cf. log",info:{eventTransitionsInfo:o}}}}},{name:"isHistoryStatesExisting",shouldThrow:!1,predicate:function(t,e,n){var r=n.historyStatesMap,a=n.statesType,i=Array.from(r.entries()).map(function(t){var e=c(t,2),n=e[0],r=e[1];return!(n in a)&&{historyState:n,flatTransitions:r}}).filter(Boolean),o=Object.keys(i).length;return{isFulfilled:0===o,blame:{message:"Found ".concat(o," history pseudo state referring to a control state that is not declared! Check the states property of the state machine definition."),info:{invalidTransitions:i,states:t.states}}}}},{name:"isHistoryStatesTargetStates",shouldThrow:!1,predicate:function(t,e,n){!function(t){if(null==t)throw new TypeError("Cannot destructure undefined")}(n);var r=t.transitions.reduce(function(t,e){return jt(e.from)?t.concat(e):t},[]);return{isFulfilled:0===Object.keys(r).length,blame:{message:"Found a history pseudo state configured as the origin control state for a transition. History pseudo states should only be target control states. Cf. log",info:{wrongHistoryStates:r}}}}},{name:"isHistoryStatesCompoundStates",shouldThrow:!1,predicate:function(t,e,n){var r=n.statesTransitionsMaps,a=n.statesType,i=Object.keys(r).map(function(t){return t===h?[]:Object.keys(r[t]).reduce(function(e,n){var i=r[t][n][0],o=i.guards,s=i.to;return o?o.reduce(function(t,e){var n=e.to;return jt(n)&&!a[Ft(n)]?t.concat(i):t},e):jt(s)&&!a[Ft(s)]?e.concat(i):e},[])}).reduce(function(t,e){return t.concat(e)},[]);return{isFulfilled:0===Object.keys(i).length,blame:{message:"Found a history pseudo state connected to an atomic state! History pseudo states only refer to compound states. Cf. log",info:{wrongHistoryStates:i,states:t.states}}}}}]};var Zt=function(t,e,n){return function(t,e){var n=e&&e.debug&&e.debug.console||G,a=e&&e.debug&&e.debug.trace||q,i=t.description;return function(){for(var e=arguments.length,o=new Array(e),s=0;s<e;s++)o[s]=arguments[s];var u=[],c=t.computed.apply(null,o),f={isFulfilled:t.contracts.reduce(function(t,e){var r=e.name,a=e.predicate,s=e.shouldThrow,f=o.concat(c),l=a.apply(null,f),d=l.isFulfilled,p=l.blame,v="".concat(i," FAILS ").concat(r,"!"),m=p||{},h=m.message,g=m.info;if(d)return t;if(u.push({name:r,message:h,info:g}),n.error(v),n.error([r,h].join(": ")),n.debug("Supporting error data:",g),s)throw new Error([v,"check console for information!"].join("\n"));return!1},!0),failingContracts:u};return a(r({},M,f)),f}}(n,e)(t,e)},te=function(){return!0};function ee(t){var e=t.initialControlState,n=t.transitions,r=Mt(n);return e?n.concat([{from:h,event:g,to:e,action:O}]):r?n:void 0}function ne(t,n){var a=t.states,i=t.events,o=t.initialExtendedState,s=t.updateState,u=(n||{}).debug,c=u&&u.checkContracts||void 0,f=u&&u.console?u.console:G;u&&u.trace&&u.trace;if(c&&Zt(t,n,c).failingContracts.length>0)throw new Error("createStateMachine: called with wrong parameters! Cf. logs for failing contracts.");var l=Dt(x,s,["extendedState, updates"]),d=function(t){return(t=t.reduce?t:Array.prototype.slice.call(arguments)).push(g),t.reduce(function(t,e){return t[e]=e,t},{})}(i),p=ee(t),v=function(t){var n="State",r={},a={};function i(){}return t={nok:t},i.prototype={current_state_name:h},r[h]=new i,r[b]=new i,function t(i,o){it(i).forEach(function(s){var u=i[s];if(r[s]=new o,r[s].name=s,r[s].parent_name=nt(o),r[s].root_name=n,"object"===e(u)){a[s]=!0;var c=function(){};c.displayName=s,c.prototype=r[s],t(u,c)}})}(t,i),{hash_states:r,is_group_state:a}}(a),m=o,T=wt(a),E=T.stateList,_=T.stateAncestors,C=kt(E),j={},N={},k=v.is_group_state,M=v.hash_states;function I(t,e){var n,a;f.debug("send event",t),n=Xt,a=[t],c&&Ht(n,a);var i=qt(t),o=i.eventName,s=i.eventData,l=M[h].current_state_name;return e&&o===g&&l!==h?(f.warn("The external event INIT_EVENT can only be sent when starting the machine!"),S):function(t,e,n,a){var i=t[h].current_state_name,o=t[i][e];if(o){f.log("found event handler!"),f.info("WHEN EVENT ",e);var s=o(a,n,i),c=s.stop,l=s.outputs;u&&!c&&f.warn("No guards have been fulfilled! We recommend to configure guards explicitly to cover the full state space!");var d=Ct(l),p=t[h].current_state_name;if(N[p]&&p!==i){var v=j[p]?g:y;return[].concat(d).concat(I(r({},v,n),!1))}return d}return f.warn("There is no transition associated to the event |".concat(e,"| in state |").concat(i,"|!")),S}(v.hash_states,o,s,m)}return p.forEach(function(t){var e=t.from,r=t.to,a=t.action,i=t.event,o=t.guards;o||(o=[{predicate:te,to:r,action:a}]),i===g&&(j[e]=!0);var c=M[e];if(i&&!(i in d))throw"unknown event ".concat(i," found in state machine definition!");i||(i=y,N[e]=!0),k[e]&&j[e]&&(N[e]=!0),c[i]=o.reduce(function(t,r,a){var i=r.action||O,o=i.name||i.displayName,c=function(t,n){var r="",c=function(c,d,p){e=p||e;var v=t.predicate,g=v||te,y=!v||Dt(R,g,["extendedState","eventData","settings"])(c,d,n),b=t.to;if(r=g?"_checking_condition_"+a:"",Bt({debug:u,console:f},{predicate:t.predicate,extendedState:c,eventData:d,settings:n},y,$,Vt,Wt),y){f.info("IN STATE ",e),v&&f.info("CASE: guard ".concat(g.name," for transition is fulfilled")),!v&&f.info("CASE: unguarded transition"),f.info("THEN : we execute the action "+o);var T=Dt(F,i,["extendedState","eventData","settings"])(c,d,n);Bt({debug:u,console:f},{action:i,extendedState:c,eventData:d,settings:n},T,Jt,Vt,Ut);var O=T.updates,E=T.outputs;!function(t,e,n){var r=n[t].name;C=Rt(C,_,r),f.info("left state",rt(t))}(e,0,M);var N=l(c,O);Bt({debug:u,console:f},{updateStateFn:s,extendedState:c,updates:O},N,te,Vt,q),m=N;var k=function(t,e,n){var r,a;if(jt(t)){var i=t.deep?A:t.shallow?w:void 0,o=t[i];u&&f&&!j[o]&&f.warn("Configured a history state which does not relate to a compound state! The behaviour of the machine is thus unspecified. Please review your machine configuration"),a=C[i][o]||o,r=n[a]}else{if(!t)throw"enter_state : unknown case! Not a state name, and not a history state to enter!";r=n[t],a=r.name}return n[h].current_state_name=a,u&&f.info("AND TRANSITION TO STATE",a),a}(b,0,M);return f.info("ENTERING NEXT STATE: ",k),zt(N)&&f.error("with error: ",N),zt(N)||f.info("with extended state: ",m),{stop:!0,outputs:E}}return{stop:!1,outputs:S}};return c.displayName=e+r,c}(r,n);return function(e,n,r){var a=t(e,n,r);return a.stop?a:c(e,n,r)}},function(){return{stop:!1,outputs:S}})}),I(r({},g,o),!0),function(t){return I(t,!0)}}function re(t){return t.reduce(function(t,e){return t.concat(e)},[])}function ae(t,e){return e?'state "'.concat(e,'" as ').concat(t," <<NoContent>>"):'state "'.concat(vt(t),'" as ').concat(t," <<NoContent>>")}t.fsmContracts=Qt,t.build_state_enum=function(t){var n={history:{}};return n.NOK=h,function t(r){it(r).forEach(function(a){var i=r[a];n[a]=a,"object"===e(i)&&t(i)})}(t),n},t.normalizeTransitions=ee,t.normalizeFsmDef=function(t){return Object.assign({},t,{transitions:ee(t)})},t.create_state_machine=function(t,e){return ne(t,e)},t.createStateMachine=ne,t.makeWebComponentFromFsm=function(t){var e=t.name,r=t.eventHandler,o=t.fsm,c=t.commandHandlers,f=t.effectHandlers,l=t.options,d=function(t){function d(){var t,n,i;if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,d),e.split("-").length<=1)throw"makeWebComponentFromFsm : web component's name MUST include a dash! Please review the name property passed as parameter to the function!";n=this,i=a(d).call(this),t=!i||"object"!=typeof i&&"function"!=typeof i?u(n):i;var s=u(u(t));t.eventSubject=r,t.options=Object.assign({},l);var p=t.options.NO_ACTION||S;return t.eventSubject.subscribe({next:function(e){var n=o(e);n!==p&&n.forEach(function(e){if(e!==p){var n=e.command,r=e.params;c[n](t.eventSubject.next,r,f,s)}})}}),t}var p,v,m;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&i(t,e)}(d,s(HTMLElement)),p=d,m=[{key:"observedAttributes",get:function(){return[]}}],(v=[{key:"connectedCallback",value:function(){this.options.initialEvent&&this.eventSubject.next(this.options.initialEvent)}},{key:"disconnectedCallback",value:function(){this.options.terminalEvent&&this.eventSubject.next(this.options.terminalEvent),this.eventSubject.complete()}},{key:"attributeChangedCallback",value:function(t,e,n){this.constructor(),this.connectedCallback()}}])&&n(p.prototype,v),m&&n(p,m),d}();return customElements.define(e,d)},t.makeNamedActionsFactory=function(t){return Object.keys(t).reduce(function(e,n){var r=t[n];return r.displayName=n,e[n]=r,e},{})},t.mergeOutputsFn=re,t.decorateWithEntryActions=function(t,e,n){if(!e)return t;var r=t.transitions,a=t.states,i=t.initialExtendedState,o=t.initialControlState,s=t.events,u=t.updateState,c=t.settings,f=mt(a),l=Object.keys(e).every(function(t){return null!=f[t]}),d=n||re;if(l)return{initialExtendedState:i,initialControlState:o,states:a,events:s,transitions:At(function(t,n,r,a){var i=n.to,o=e[i];return o?function(t,e,n,r){var a=function(a,i,o){var s=o.debug,u=Dt(k,e,["extendedState","eventData","settings"]),c=t(a,i,o),f=c.updates,l=Dt(x,r,["extendedState, updates"]),d=l(a,f);Bt({debug:s,console:console},{updateStateFn:r,extendedState:a,actionUpdate:f},d,te,Vt,q);var p=d,v=u(p,i,o),m=Bt({debug:s,console:console},{action:e,extendedState:p,eventData:i,settings:o},v,Jt,Vt,Yt);if(!m)return{updates:[].concat(f,v.updates),outputs:n([c.outputs,v.outputs])}};return a.displayName="Entry_Action_After_".concat(Lt(t)),a}(t,o,d,u):t},r),updateState:u,settings:c};throw"decorateWithEntryActions : found control states for which entry actions are defined, and yet do not exist in the state machine!"},t.traceFSM=function(t,e){var n=e.initialExtendedState,r=e.initialControlState,a=e.events,i=e.states,o=e.transitions,s=e.updateState;return{initialExtendedState:n,initialControlState:r,events:a,states:i,updateState:s,transitions:At(function(t,e,n,r){return function(a,i,o){var u=e.from,c=e.event,f=e.to,l=e.predicate,d=Dt(F,t,["extendedState","eventData","settings"])(a,i,o),p=d.outputs,v=d.updates;return{updates:v,outputs:[{outputs:p,updates:v,extendedState:a,newExtendedState:Dt(x,s,["extendedState, updates"])(a,v||[]),controlState:u,event:{eventLabel:c,eventData:i},settings:o,targetControlState:f,predicate:l,actionFactory:t,guardIndex:n,transitionIndex:r}]}}},o)}},t.makeHistoryStates=function(t){var e=Object.keys(mt(t));return function(t,n){var a;if(!e.includes(n))throw"makeHistoryStates: the state for which a history state must be constructed is not a configured state for the state machine under implementation!!";return r(a={},t,n),r(a,"type",E),a}},t.historyState=function(t,e){return r({},t,e)},t.toPlantUml=function(t,e){var n=t.states,a=t.transitions,i=J.getChildren,o=J.getLabel,s=function(t){return t.join(l)},u=Y(J,{seed:function(){return Map},visit:function(t,e,n){var r=e.get(n).path,u=o(n),c=function(t,e,n){return["".concat(ae(t,"")," {"),e.join("\n"),function(t,e){var n=e.reduce(function(e,n){var r=pt(n);return r.filter(ot).filter(ct(t)).reduce(function(t,e){return t[dt(e)]=void 0,t},e)},{});return Object.keys(n).map(function(t){return"".concat(ae(t,v))}).join("\n")}(t,n),function(t,e){return e.reduce(function(e,n){var r=pt(n);return r.filter(st).filter(ut(t)).reduce(function(t,e){e.from;var n=e.to,r=e.predicate,a=e.action;return t.push("[*] ".concat(d," ").concat(n," ").concat(p," ").concat(lt("",r,a))),t},e)},[]).join("\n")}(t,n),"}",function(t,e){var n=function(t,e){return e.map(function(e){var n=pt(e);return n.filter(ut(t)).filter(ot).map(function(t){var e=t.from,n=t.event,r=t.predicate,a=t.to,i=t.action;return[e,d,dt({from:e,to:a}),p,lt(n,r,i)].join(" ")}).join("\n")}).filter(Boolean).join("\n")}(t,e),r=function(t,e){return t===h?"":e.map(function(e){var n=pt(e);return n.filter(ut(t)).filter(function(t){return!st(t)}).filter(function(t){return!ot(t)}).map(function(t){var e=t.from,n=t.event,r=t.predicate,a=t.to,i=t.action;return[e,d,a,p,lt(n,r,i)].join(" ")}).join("\n")}).filter(Boolean).join("\n")}(t,e);return[n,r].filter(Boolean).join("\n")}(t,n)].filter(function(t){return"\n"!==t&&""!==t}).join("\n")}(Object.keys(u)[0],at(function(e){return t.get(s(r.concat(e)))},function(t,e){return i(t,e).length}(n,e)),a);return t.set(s(r),c),t}},r({},h,n)),c=u.get("0");return u.clear(),c},t.toDagreVisualizerFormat=function(t){var e=t.states,n=t.transitions,a=J.getLabel,i=J.getChildren,o=z.constructTree,s=function(t){return t.join(l)},u=Y(J,{seed:function(){return Map},visit:function(t,e,n){var r=e.get(n).path,u=a(n),c=Object.keys(u)[0],f=at(function(e){return t.get(s(r.concat(e)))},function(t,e){return i(t,e).length}(n,e));return t.set(s(r),o(c,f)),t}},r({},h,e)).get("0"),c=n.map(function(t){var e=t.from,n=t.to,r=t.event,a=t.guards,i=t.action;return a?{from:e,event:r,guards:a.map(function(t){var e=t.predicate,n=t.to,r=t.action;return{predicate:e.name,to:n,action:r.name}})}:{from:e,to:n,event:r,action:i.name||"no action name?"}});return JSON.stringify({states:u,transitions:c})},t.CONTRACT_MODEL_UPDATE_FN_RETURN_VALUE="Model update function must return valid update operations!",t.SEP=l,t.TRANSITION_SYMBOL=d,t.TRANSITION_LABEL_START_SYMBOL=p,t.HISTORY_STATE_NAME=v,t.HISTORY_PREFIX=m,t.INIT_STATE=h,t.INIT_EVENT=g,t.AUTO_EVENT=y,t.STATE_PROTOTYPE_NAME=b,t.NO_STATE_UPDATE=T,t.NO_OUTPUT=S,t.ACTION_IDENTITY=O,t.history_symbol=E,t.SHALLOW=w,t.DEEP=A,t.WRONG_EVENT_FORMAT_ERROR=_,t.FUNCTION_THREW_ERROR=C,t.INVALID_ACTION_FACTORY_EXECUTED=j,t.INVALID_PREDICATE_EXECUTED=N,t.ACTION_FACTORY_DESC=F,t.ENTRY_ACTION_FACTORY_DESC=k,t.UPDATE_STATE_FN_DESC=x,t.PREDICATE_DESC=R,t.COMMAND_RENDER="render",t.CONTRACTS_EVAL=M,t.noop=q,t.emptyConsole=G,t.emptyTrace=K,t.isBoolean=$,t.isFunction=Q,t.isControlState=Z,t.isEvent=tt,t.isActionFactory=et,t.make_states=function(t){return t.reduce(function(t,e){return t[e]="",t},{})},t.make_events=function(t){return t},t.get_fn_name=nt,t.wrap=rt,t.times=at,t.always=function(t){return t},t.keys=it,t.merge=function(t,e){return Object.assign({},t,e)},t.is_history_transition=ot,t.is_entry_transition=st,t.is_from_control_state=ut,t.is_to_history_control_state_of=ct,t.is_history_control_state_of=ft,t.format_transition_label=lt,t.format_history_transition_state_name=dt,t.get_all_transitions=pt,t.getDisplayName=vt,t.mergeModelUpdates=function(t){return function(e,n,r){return{updates:t.reduce(function(t,a){var i=a(e,n,r).updates;return i?t.concat(i):t},[]),outputs:S}}},t.chainModelUpdates=function(t){return function(e,n,r){var a=r.updateState;return{updates:t.reduce(function(t,e){var i=t.extendedState,o=t.updates,s=e(i,n,r).updates;return{extendedState:a(i,o),updates:s}},{extendedState:e,updates:[]}).updates||[],outputs:S}}},t.mergeActionFactories=function(t,e){return function(n,r,a){var i,o=e.map(function(t){return t(n,r,a)}),s=o.map(function(t){return t.updates||[]}),u=o.map(function(t){return t.outputs||{}});return{updates:(i=[]).concat.apply(i,f(s)),outputs:t(u)}}},t.identity=function(t,e,n){return{updates:[],outputs:S}},t.lastOf=function(t){return t[t.length-1]},t.getFsmStateList=mt,t.getStatesType=ht,t.getStatesPath=gt,t.getStatesTransitionsMap=yt,t.getStatesTransitionsMaps=bt,t.getEventTransitionsMaps=Tt,t.getHistoryStatesMap=St,t.getTargetStatesMap=Ot,t.getAncestorMap=Et,t.computeHistoryMaps=wt,t.mapOverTransitionsActions=At,t.reduceTransitions=_t,t.everyTransition=function(t,e){return _t(function(e,n){return e&&t(n)},!0,[e])},t.computeTimesCircledOn=function(t,e){return t.reduce(function(t,n){return n===e?t+1:t},0)},t.isInitState=function(t){return t===h},t.isInitEvent=function(t){return t===g},t.isEventless=function(t){return void 0===t},t.arrayizeOutput=Ct,t.isHistoryControlState=jt,t.getHistoryParentState=function(t){return t[w]||t[A]},t.isShallowHistory=function(t){return t[w]},t.isDeepHistory=function(t){return t[A]},t.getHistoryType=Nt,t.getHistoryUnderlyingState=Ft,t.isHistoryStateEdge=function(t){return void 0!==t.history},t.initHistoryDataStructure=kt,t.isCompoundState=xt,t.isAtomicState=function(t,e){return!xt(t,e)},t.updateHistory=Rt,t.computeHistoryState=function(t,e,n,r){var a=wt(t),i=a.stateList,o=a.stateAncestors,s=kt(i);return(s=e.reduce(function(t,e){return Rt(t,o,e)},s))[n][r]},t.findInitTransition=Mt,t.tryCatch=It,t.tryCatchMachineFn=Dt,t.getFunctionName=Lt,t.assert=Ht,t.notifyThrows=Pt,t.handleFnExecError=Bt,t.notifyAndRethrow=Vt,t.throwIfInvalidActionResult=Ut,t.throwIfInvalidGuardResult=Wt,t.throwIfInvalidEntryActionResult=Yt,t.isActions=Jt,t.isEventStruct=Xt,t.isError=zt,t.destructureEvent=qt,Object.defineProperty(t,"__esModule",{value:!0})}); | ||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.Kingly={})}(this,function(t){"use strict";function e(t){return(e="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})(t)}function n(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function a(t){return(a=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function i(t,e){return(i=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function o(t,e,n){return(o=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(t){return!1}}()?Reflect.construct:function(t,e,n){var r=[null];r.push.apply(r,e);var a=new(Function.bind.apply(t,r));return n&&i(a,n.prototype),a}).apply(null,arguments)}function s(t){var e="function"==typeof Map?new Map:void 0;return(s=function(t){if(null===t||(n=t,-1===Function.toString.call(n).indexOf("[native code]")))return t;var n;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,r)}function r(){return o(t,arguments,a(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),i(r,t)})(t)}function u(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function c(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],r=!0,a=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(r=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);r=!0);}catch(t){a=!0,i=t}finally{try{r||null==s.return||s.return()}finally{if(a)throw i}}return n}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function f(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}(t)||function(t){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}var l=".",d="--\x3e",p=":",v="H",m="history.",h="nok",g="init",y="auto",b="State",T=[],S=null,O=function(){return{outputs:S,updates:T}},E={},w="shallow",A="deep",_="The machine received an event which does not have the proper format. Expecting an object whose unique key is the event name, and value is the event data.",C=function(t,e){return"Exception thrown when executing ".concat(e," ").concat(t||"")},j=function(t,e){return"".concat(C(t,e),"\nThe ").concat(e," returned a value which is not an action.")},N=function(t,e){return"".concat(C(t,e),"\nThe ").concat(e," returned a value which is not a boolean.")},F="action factory",k="(decorating) entry action",x="update state function",R="predicate",M="CONTRACTS_EVAL";const I=[0],D="PRE_ORDER";function L(t){return void 0===t?void 0:JSON.parse(JSON.stringify(t))}function H(t,e){return Object.assign({},t,e)}function P(t,e,n){n.forEach((n,r)=>{const a=t.get(e),i=t.get(n),o=i&&i.path;t.set(n,H(i,{isAdded:!0,isVisited:!1,path:o||a.path.concat(r)}))})}function B(t,e){t.set(e,H(t.get(e),{isVisited:!0}))}function V(t,e){const{store:n,lenses:r,traverse:a}=t,{empty:i,add:o,takeAndRemoveOne:s,isEmpty:u}=n,{getChildren:c}=r,{visit:f,seed:l}=a,d=new Map,p="function"==typeof l?new(l()):L(l);let v="function"==typeof i?new(i()):L(i),m=p;for(o([e],v),d.set(e,{isAdded:!0,isVisited:!1,path:I});!u(v);){const t=s(v),e=c(d,t);o(e,v),P(d,t,e),m=f(m,d,t),B(d,t)}return d.clear(),m}function U(t,e,n){const{getChildren:r}=t;return V({store:{empty:[],takeAndRemoveOne:t=>t.shift(),isEmpty:t=>0===t.length,add:(t,e)=>e.push.apply(e,t)},lenses:{getChildren:(t,e)=>r(e)},traverse:e},n)}function W(t,e,n){const{getChildren:r}=t;return V({store:{empty:[],takeAndRemoveOne:t=>t.shift(),isEmpty:t=>0===t.length,add:(t,e)=>e.unshift(...t)},lenses:{getChildren:(t,e)=>r(e)},traverse:e},n)}function Y(t,e,n){const{getChildren:r}=t,{seed:a,visit:i}=e,o=(t,e)=>e.get(t).isVisited||((t,e)=>0===r(t,e).length)(t,e);return V({store:{empty:[],takeAndRemoveOne:t=>t.shift(),isEmpty:t=>0===t.length,add:(t,e)=>e.unshift(...t)},lenses:{getChildren:(t,e)=>o(e,t)?[]:r(e,t).concat([e])},traverse:{seed:a,visit:(t,e,n)=>o(n,e)?i(t,e,n):t}},n)}const J={isLeafLabel:function(t){return 0===J.getChildren(t).length},getLabel:t=>{if("object"!=typeof t||Array.isArray(t)||1!==Object.keys(t).length)throw"getLabel > unexpected object tree value";return t},getChildren:t=>{if("object"!=typeof t||Array.isArray(t)||1!==Object.keys(t).length)throw"getChildren > unexpected value";{let e=Object.values(t)[0];return e&&"object"==typeof e&&!Array.isArray(e)?Object.keys(e).map(t=>({[t]:e[t]})):[]}},constructTree:(t,e)=>{const n=t&&Object.keys(t)&&Object.keys(t)[0];return 0===e.length?t:{[n]:Object.assign.apply(null,e)}}};function X(t,e){const n={root:e},{strategy:r,seed:a,visit:i}=t;return({BFS:U,PRE_ORDER:W,POST_ORDER:Y}[r]||W)(J,{seed:a,visit:function(t,e,n){const{path:r}=e.get(n);return JSON.stringify(r)===JSON.stringify(I)?t:i(t,e,n)}},n)}const z={getLabel:t=>Array.isArray(t)?t[0]:t,getChildren:t=>Array.isArray(t)?t[1]:[],constructTree:(t,e)=>e&&Array.isArray(e)&&e.length>0?[t,e]:t};var q=function(){},G={log:q,warn:q,info:q,debug:q,error:q,trace:q},K=q;function $(t){return"boolean"==typeof t}function Q(t){return"function"==typeof t}function Z(t){return t&&"string"==typeof t||jt(t)}function tt(t){return void 0===t||"string"==typeof t}function et(t){return t&&"function"==typeof t}function nt(t){return/^[\s\r\n]*function[\s\r\n]*([^\(\s\r\n]*?)[\s\r\n]*\([^\)\s\r\n]*\)[\s\r\n]*\{((?:[^}]*\}?)+)\}\s*$/.exec(t.toString())[1]}function rt(t){return["-",t,"-"].join("")}function at(t,e){return Array.apply(null,{length:e}).map(Number.call,Number).map(t)}function it(t){return Object.keys(t)}function ot(t){return t.to.startsWith(m)}function st(t){return t.event===g}function ut(t){return function(e){return e.from===t}}function ct(t){return function(e){return ft(t,e.to)}}function ft(t,e){return e.substring(m.length)===t}function lt(t,e,n){var r=t||"";return e&&n?"".concat(r," [").concat(e.name,"] / ").concat(n.name):e?"".concat(r," [").concat(e.name,"]}"):n?"".concat(r," / ").concat(n.name):"".concat(r)}function dt(t){var e=t.from,n=t.to;return"".concat(e,".").concat(n.substring(m.length),".").concat(v)}function pt(t){var e=t.from,n=t.event,r=t.guards;return r?r.map(function(t){var r=t.predicate,a=t.to,i=t.action;return{from:e,event:n,predicate:r,to:a,action:i}}):[t]}function vt(t){return t.replace(/_/g," ")}function mt(t){var e=J.getLabel;return X({strategy:D,seed:{},visit:function(t,n,r){var a=e(r);return t[Object.keys(a)[0]]="",t}},t)}function ht(t){var e=J.getLabel,n=J.isLeafLabel;return X({strategy:D,seed:{},visit:function(t,r,a){var i=e(a),o=Object.keys(i)[0];return n(i)?(t[o]=!1,t):(t[o]=!0,t)}},t)}function gt(t){var e=J.getLabel;return X({strategy:D,seed:{},visit:function(t,n,r){var a=n.get(r).path.join("."),i=e(r);return t[Object.keys(i)[0]]=a,t}},t)}function yt(t){return t.reduce(function(t,e){var n=e.from,r=e.event;return jt(n)?t:(t[n]=t[n]||{},t[n][r]=e,t)},{})||{}}function bt(t){return t.reduce(function(t,e){var n=e.from,r=e.event;return jt(n)?t:(t[n]=t[n]||{},t[n][r]=t[n][r]?t[n][r].concat(e):[e],t)},{})||{}}function Tt(t){return t.reduce(function(t,e){var n=e.from,r=e.event;return jt(n)?t:(t[r]=t[r]||{},t[r][n]=t[r][n]?t[r][n].concat(e):[e],t)},{})||{}}function St(t){return _t(function(t,e,n,r){var a=e.from,i=(e.event,e.to);e.action,e.predicate,e.gen;if(jt(a)){var o=Ft(a);t.set(o,(t.get(o)||[]).concat([e]))}else if(jt(i)){var s=Ft(i);t.set(s,(t.get(s)||[]).concat([e]))}return t},new Map,t)||{}}function Ot(t){return _t(function(t,e,n,r){var a=e.to;return t.set(a,(t.get(a)||[]).concat([e])),t},new Map,t)||{}}function Et(t){var e=J.getLabel,n=J.getChildren;return X({strategy:D,seed:{},visit:function(t,r,a){var i=e(a),o=Object.keys(i)[0];return n(a).map(function(t){return Object.keys(e(t))[0]}).forEach(function(e){t[e]=t[e]||[],t[e]=t[e].concat(o)}),t}},t)}function wt(t){var e;if(0===Object.keys(t).length)throw"computeHistoryMaps : passed empty control states parameter?";var n=J.getLabel,a=X({strategy:D,seed:{stateList:[],stateAncestors:(e={},r(e,A,{}),r(e,w,{}),e)},visit:function(t,e,r){var a=n(r),i=Object.keys(a)[0];t.stateList=t.stateList.concat(i);var o=e.get(r).path;e.set(JSON.stringify(o),i);var s=o.slice(0,-1);if(1===s.length)e.set(JSON.stringify(s),h);else{var u=e.get(JSON.stringify(s));t.stateAncestors[w][i]=[u];var c=o.reduce(function(t,n){var r=t.path.slice(0,-1);if(t.path=r,r.length>1){var a=e.get(JSON.stringify(r));t.ancestors=t.ancestors.concat(a)}return t},{ancestors:[],path:o}).ancestors;t.stateAncestors[A][i]=c}return t}},t);return{stateList:a.stateList,stateAncestors:a.stateAncestors}}function At(t,e){return _t(function(e,n,r,a){var i=n.from,o=n.event,s=n.to,u=n.action,c=n.predicate,f=t(u,n,r,a);return f.displayName=f.displayName||u&&(u.name||u.displayName||function(t,e,n,r,a){var i=a?a.name:"",o=i?"[".concat(i,"]"):"",s=t?t.name:"identity";return"".concat(s||"unnamed action",":").concat(e,"-").concat(n,"->").concat(r," ").concat(o)}(u,i,o,s,c)),void 0===c?e.push({from:i,event:o,to:s,action:f}):0===r?e.push({from:i,event:o,guards:[{to:s,predicate:c,action:f}]}):e[e.length-1].guards.push({to:s,predicate:c,action:f}),e},[],e)}function _t(t,e,n){return n.reduce(function(e,n,r){var a=n.from,i=n.event,o=n.to,s=n.gen,u=n.action,c=n.guards;return c||(c=s?[{to:o,action:u,gen:s,predicate:void 0}]:[{to:o,action:u,predicate:void 0}]),c.reduce(function(e,n,o){var s=n.to,u=n.action,c=n.gen,f=n.predicate;return t(e,c?{from:a,event:i,to:s,action:u,predicate:f,gen:c}:{from:a,event:i,to:s,action:u,predicate:f},o,r)},e)},e)}function Ct(t){return t===S?S:Array.isArray(t)?t:[t]}function jt(t){return"object"===e(t)&&(A in t||w in t)}function Nt(t){return t[A]?A:w}function Ft(t){return t[Nt(t)]}function kt(t){var e,n=function(){return t.reduce(function(t,e){return t[e]="",t},{})};return r(e={},A,n()),r(e,w,n()),e}function xt(t,e){var n=t.statesAdjacencyList;return n[e]&&0!==n[e].length}function Rt(t,e,n){return n===h?t:([w,A].forEach(function(r){(e[r][n]||[]).forEach(function(e){t[r][e]=n})}),t)}function Mt(t){return t.find(function(t){return t.from===h&&t.event===g})}function It(t,e){return function(){for(var n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];try{return t.apply(t,r)}catch(t){return e(t,r)}}}function Dt(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return It(e,function(r,a){var i=new Error(r),o=Lt(e),s=C(o,t);i.probableCause=r.probableCause?[r.probableCause,s].join("\n"):s;var u={fnName:o,params:n.reduce(function(t,e,n){return t[e]=a[n],t},{})};return i.info=r.info?[].concat([r.info]).concat([u]):u,i})}function Lt(t){return t.name||t.displayName||"anonymous"}function Ht(t,e){var n=t.apply(null,e);if(!0!==n){var r=n.info;throw console.error("ERROR: failed contract ".concat(t.name||"",". ").concat(r?"Error info:":""),n.info),n}}function Pt(t,e){t.error(e),e.probableCause&&t.error("Probable cause: ".concat(e.probableCause)),e.info&&t.error("ERROR: additional info",e.info)}function Bt(t,e,n,r,a,i){var o=t.debug,s=t.console;return o&&n instanceof Error?(a({debug:o,console:s},n,e),!0):!(!o||r(n))&&(i({debug:o,console:s},n,e),!0)}function Vt(t,e){t.debug;throw Pt(t.console,e),e}function Ut(t,e,n){t.debug;var r=t.console,a=n.action,i=n.extendedState,o=n.eventData,s=n.settings,u=Lt(a),c=new Error(j(u,F));throw c.info={fnName:Lt(a),params:{updatedExtendedState:i,eventData:o,settings:s},returned:e},Pt(r,c),c}function Wt(t,e,n){t.debug;var r=t.console,a=Lt(n.predicate),i=new Error(N(a,R));throw i.info={predicateName:a,params:n,returned:e},Pt(r,i),i}function Yt(t,e,n){t.debug;var r=t.console,a=n.action,i=n.extendedState,o=n.eventData,s=n.settings,u=Lt(a),c=new Error(j(u,k));throw c.info={fnName:Lt(a),params:{updatedExtendedState:i,eventData:o,settings:s},returned:e},Pt(r,c),c}function Jt(t){return t&&"updates"in t&&"outputs"in t&&(t.outputs===S||Array.isArray(t.outputs))&&Array.isArray(t.updates)}function Xt(t){var n;return t&&"object"===e(t)?Object.keys(t).length>1?(n=new Error(_)).info={event:t,cause:"Event objects must have only one key which is the event name!"}:n=!0:(n=new Error(_)).info={event:t,cause:"not an object!"},n}function zt(t){return t instanceof Error}function qt(t){var e=Object.keys(t)[0];return{eventName:e,eventData:t[e]}}function Gt(t){var e=t.from,n=t.event,r=t.guards,a=t.to,i=t.action;return typeof r==="".concat(void 0)&&a&&Z(e)&&tt(n)&&Z(a)&&et(i)}function Kt(t){var e=t.to,n=t.predicate,r=t.action;return e&&Z(e)&&Q(n)&&et(r)}function $t(t){var e=t.from,n=t.event,r=t.guards,a=t.to;return r&&Array.isArray(r)&&r.length>0&&!a&&Z(e)&&tt(n)&&r.every(Kt)}var Qt={computed:function(t,e){return{statesType:ht(t.states),initTransition:Mt(t.transitions),statesTransitionsMap:yt(t.transitions),statesTransitionsMaps:bt(t.transitions),eventTransitionsMaps:Tt(t.transitions),ancestorMap:Et(t.states),statesPath:gt(t.states),historyStatesMap:St(t.transitions),targetStatesMap:Ot(t.transitions)}},description:"FSM structure",contracts:[{name:"isValidFsmDef",shouldThrow:!1,predicate:function(t,n){var r=t.transitions,a=t.states,i=t.events,o=(t.initialExtendedState,r&&Array.isArray(r)),s=a&&"object"===e(a),u=i&&Array.isArray(i);return o?s?u?{isFulfilled:!0,blame:void 0}:{isFulfilled:!1,blame:{message:"The events property for a machine definition must be an array!",info:{events:i}}}:{isFulfilled:!1,blame:{message:"The states property for a machine definition must be an object!",info:{states:a}}}:{isFulfilled:!1,blame:{message:"The transitions property for a machine definition must be an array!",info:{transitions:r}}}}},{name:"isValidSettings",shouldThrow:!1,predicate:function(t){return{isFulfilled:!0,blame:void 0}}},{name:"isInitialControlStateDeclared",shouldThrow:!1,predicate:function(t,e,n){n.initTransition;var r=n.statesType,a=t.initialControlState,i=(t.transitions,Object.keys(r));return a?{isFulfilled:i.indexOf(a)>-1,blame:{message:"Configured initial control state must be a declared state. Cf. log",info:{initialControlState:a,declaredStates:i}}}:{isFulfilled:!0,blame:void 0}}},{name:"isInitialStateOriginState",shouldThrow:!1,predicate:function(t,e,n){var r=n.targetStatesMap;return Array.from(r.keys()).indexOf(h)>-1?{isFulfilled:!1,blame:{message:"Found at least one transition with the initial state as target state! CF. log",info:{targetStates:Array.from(r.keys()),transitions:t.transitions}}}:{isFulfilled:!0,blame:void 0}}},{name:"eventsAreStrings",shouldThrow:!1,predicate:function(t,e){return{isFulfilled:t.events.every(function(t){return"string"==typeof t}),blame:{message:"Events must be an array of strings!",info:{events:t.events}}}}},{name:"haveTransitionsValidTypes",shouldThrow:!1,predicate:function(t,e){var n=t.transitions,r=n.map(function(t,e){return!Gt(t)&&!$t(t)&&{transition:t,index:e}}).filter(Boolean),a=Object.keys(r).length;return{isFulfilled:0===a,blame:{message:"Found ".concat(a," transitions with invalid format! Check logs for more details."),info:{wrongTransitions:r,transitions:n}}}}},{name:"noDuplicatedStates",shouldThrow:!1,predicate:function(t,e){var n=J.getLabel,r=X({strategy:D,seed:{duplicatedStates:[],statesHashMap:{}},visit:function(t,e,r){var a=t.duplicatedStates,i=t.statesHashMap,o=n(r),s=Object.keys(o)[0];return s in i?{duplicatedStates:a.concat(s),statesHashMap:i}:{duplicatedStates:a,statesHashMap:(i[s]="",i)}}},t.states).duplicatedStates;return{isFulfilled:0===r.length,blame:{message:"State names must be unique! Found duplicated state names. Cf. log",info:{duplicatedStates:r}}}}},{name:"noReservedStates",shouldThrow:!1,predicate:function(t,e,n){var r=n.statesType;return{isFulfilled:-1===Object.keys(r).indexOf(h),blame:{message:"You cannot use a reserved control state name for any of the configured control states for the machine! Cf. log",info:{reservedStates:[h],statesType:r}}}}},{name:"atLeastOneState",shouldThrow:!1,predicate:function(t,e,n){var r=n.statesType;return{isFulfilled:Object.keys(r).length>0,blame:{message:"Machine configuration must define at least one control state! Cf. log",info:{statesType:r}}}}},{name:"areEventsDeclared",shouldThrow:!1,predicate:function(t,e,n){var r=n.eventTransitionsMaps,a=Object.keys(r),i=t.events,o=i.map(function(t){return-1===a.indexOf(t)&&t}).filter(Boolean),s=a.map(function(t){return-1===i.indexOf(t)&&t}).filter(Boolean).filter(function(t){return t!==g&&"undefined"!==t});return{isFulfilled:0===o.length&&0===s.length,blame:{message:"All declared events must be used in transitions. All events used in transition must be declared! Cf. log",info:{eventsDeclaredButNotTriggeringTransitions:o,eventsNotDeclaredButTriggeringTransitions:s}}}}},{name:"areStatesDeclared",shouldThrow:!1,predicate:function(t,e,n){var r=n.statesTransitionsMaps,a=n.targetStatesMap,i=n.statesType,o=Object.keys(r),s=Array.from(a.keys()),u=Object.keys([o,s].reduce(function(t,e){return e.forEach(function(e){return t[e]=!0}),t},{})),c=Object.keys(i),f=c.map(function(t){return-1===u.indexOf(t)&&t}).filter(Boolean),l=u.map(function(t){return t!==h&&-1===c.indexOf(t)&&t}).filter(Boolean);return{isFulfilled:0===f.length&&0===f.length,blame:{message:"All declared states must be used in transitions. All states used in transition must be declared! Cf. log",info:{statesDeclaredButNotTriggeringTransitions:f,statesNotDeclaredButTriggeringTransitions:l}}}}},{name:"validInitialConfig",shouldThrow:!1,predicate:function(t,e,n){var r=n.initTransition,a=t.initialControlState;return r&&a?{isFulfilled:!1,blame:{message:"Invalid machine configuration : defining an initial control state and an initial transition at the same time may lead to ambiguity and is forbidden!",info:{initialControlState:a,initTransition:r}}}:r||a?{isFulfilled:!0,blame:void 0}:{isFulfilled:!1,blame:{message:"Invalid machine configuration : you must define EITHER an initial control state OR an initial transition! Else in which state is the machine supposed to start?",info:{initialControlState:a,initTransition:r}}}}},{name:"validInitialTransition",shouldThrow:!1,predicate:function(t,e,n){var r=n.initTransition,a=t.initialControlState,i=t.transitions.reduce(function(t,e){return e.from===h&&t.push(e),t},[]);return{isFulfilled:a&&!r||!a&&r&&1===i.length&&r.event===g&&(Gt(r)||$t(r)),blame:{message:"Invalid configuration for initial transition! Cf. log",info:{initTransition:r,initTransitions:i,initialControlState:a}}}}},{name:"initEventOnlyInCompoundStates",shouldThrow:!1,predicate:function(t,e,n){var a=n.statesTransitionsMap,i=n.statesType,o=(n.statesPath,Object.keys(i).filter(function(t){return!i[t]}).map(function(t){return r({},t,a[t]&&a[t][g])}).filter(function(t){return Object.values(t)[0]}));return{isFulfilled:0===o.length,blame:{message:"Found at least one atomic state with an entry transition! That is forbidden! Cf. log",info:{initTransitions:o}}}}},{name:"validInitialTransitionForCompoundState",shouldThrow:!1,predicate:function(t,e,n){var a=n.statesTransitionsMap,i=n.statesType,o=n.statesPath,s=Object.keys(i).filter(function(t){return i[t]}),u=s.map(function(t){return a[t]&&a[t][g]}),c=u.every(Boolean);if(!c)return{isFulfilled:!1,blame:{message:"Found at least one compound state without an entry transition! Cf. log",info:{hasEntryTransitions:s.map(function(t){return r({},t,!(!a[t]||!a[t][g]))})}}};var f=c&&u.every(function(t){var e=t.guards,n=t.to;return!e&&"string"==typeof n});return f?f&&u.every(function(t){var e=t.from,n=t.to;return e!==n&&o[n]&&o[n].startsWith(o[e])})?{isFulfilled:!0,blame:void 0}:{isFulfilled:!1,blame:{message:"Found at least one compound state with an invalid entry transition! Entry transitions for compound states must have a target state which is strictly below the compound state in the state hierarchy! ",info:{states:t.states,statesPath:o,entryTransitions:u}}}:{isFulfilled:!1,blame:{message:"Found at least one compound state with an invalid entry transition! Entry transitions for compound states must be inconditional and the associated target control state cannot be a history pseudo-state. Cf. log",info:{entryTransitions:u}}}}},{name:"validEventLessTransitions",shouldThrow:!1,predicate:function(t,e,n){var a=n.statesTransitionsMap,i=n.statesType,o=(n.statesPath,Object.keys(i).map(function(t){return r({},t,a[t]&&"".concat(void 0)in a[t]&&1!==Object.keys(a[t]).length)}).filter(function(t){return void 0!==Object.values(t)[0]&&Object.values(t)[0]}));return{isFulfilled:0===o.length,blame:{message:"Found at least one control state without both an eventless transition and a competing transition! Cf. log",info:{failingOriginControlStates:o}}}}},{name:"isValidSelfTransition",shouldThrow:!1,predicate:function(t,e,n){var r=n.targetStatesMap,a=n.statesType,i=Array.from(r.keys()).map(function(t){return r.get(t).map(function(e){var n=e.from,r=e.event;if(t in a&&!a[t]&&n&&n===t&&!r)return{state:t,flatTransition:e}}).filter(Boolean)}).filter(function(t){return t.length>0});return{isFulfilled:0===i.length,blame:{message:"Found at least one eventless self-transition involving an atomic state! This is forbidden to avoid infinity loop! Cf. log",info:{wrongSelfTransitions:i}}}}},{name:"allStateTransitionsOnOneSingleRow",shouldThrow:!1,predicate:function(t,e,n){var r=n.statesTransitionsMaps,a=Object.keys(r).reduce(function(t,e){var n=Object.keys(r[e]).filter(function(t){return r[e][t].length>1});return n.length>0&&(t[e]=n),t},{});return{isFulfilled:0===Object.keys(a).length,blame:{message:"Found at least one control state and one event for which the associated transition are not condensated under a unique row! Cf. log",info:{statesTransitionsInfo:a}}}}},{name:"noConflictingTransitionsWithAncestorState",shouldThrow:!1,predicate:function(t,e,n){n.statesTransitionsMaps;var a=n.eventTransitionsMaps,i=n.ancestorMap,o=Object.keys(a).reduce(function(t,e){var n=Object.keys(a[e]),o=n.filter(function(t){return t!==h}).map(function(t){return i[t]&&r({},t,i[t].find(function(t){return n.indexOf(t)>-1}))}).filter(function(t){return t&&Object.values(t).filter(Boolean).length>0});return o.length>0&&(t[e]=o),t},{});return{isFulfilled:0===Object.keys(o).length,blame:{message:"Found two conflicting transitions! A -ev-> X, and B -ev-> Y leads to ambiguity if A < B or B < A. Cf. log",info:{eventTransitionsInfo:o}}}}},{name:"isHistoryStatesExisting",shouldThrow:!1,predicate:function(t,e,n){var r=n.historyStatesMap,a=n.statesType,i=Array.from(r.entries()).map(function(t){var e=c(t,2),n=e[0],r=e[1];return!(n in a)&&{historyState:n,flatTransitions:r}}).filter(Boolean),o=Object.keys(i).length;return{isFulfilled:0===o,blame:{message:"Found ".concat(o," history pseudo state referring to a control state that is not declared! Check the states property of the state machine definition."),info:{invalidTransitions:i,states:t.states}}}}},{name:"isHistoryStatesTargetStates",shouldThrow:!1,predicate:function(t,e,n){!function(t){if(null==t)throw new TypeError("Cannot destructure undefined")}(n);var r=t.transitions.reduce(function(t,e){return jt(e.from)?t.concat(e):t},[]);return{isFulfilled:0===Object.keys(r).length,blame:{message:"Found a history pseudo state configured as the origin control state for a transition. History pseudo states should only be target control states. Cf. log",info:{wrongHistoryStates:r}}}}},{name:"isHistoryStatesCompoundStates",shouldThrow:!1,predicate:function(t,e,n){var r=n.statesTransitionsMaps,a=n.statesType,i=Object.keys(r).map(function(t){return t===h?[]:Object.keys(r[t]).reduce(function(e,n){var i=r[t][n][0],o=i.guards,s=i.to;return o?o.reduce(function(t,e){var n=e.to;return jt(n)&&!a[Ft(n)]?t.concat(i):t},e):jt(s)&&!a[Ft(s)]?e.concat(i):e},[])}).reduce(function(t,e){return t.concat(e)},[]);return{isFulfilled:0===Object.keys(i).length,blame:{message:"Found a history pseudo state connected to an atomic state! History pseudo states only refer to compound states. Cf. log",info:{wrongHistoryStates:i,states:t.states}}}}}]};var Zt=function(t,e,n){return function(t,e){var n=e&&e.debug&&e.debug.console||G,a=e&&e.debug&&e.debug.trace||q,i=t.description;return function(){for(var e=arguments.length,o=new Array(e),s=0;s<e;s++)o[s]=arguments[s];var u=[],c=t.computed.apply(null,o),f={isFulfilled:t.contracts.reduce(function(t,e){var r=e.name,a=e.predicate,s=e.shouldThrow,f=o.concat(c),l=a.apply(null,f),d=l.isFulfilled,p=l.blame,v="".concat(i," FAILS ").concat(r,"!"),m=p||{},h=m.message,g=m.info;if(d)return t;if(u.push({name:r,message:h,info:g}),n.error(v),n.error([r,h].join(": ")),n.debug("Supporting error data:",g),s)throw new Error([v,"check console for information!"].join("\n"));return!1},!0),failingContracts:u};return a(r({},M,f)),f}}(n,e)(t,e)},te=function(){return!0};function ee(t){var e=t.initialControlState,n=t.transitions,r=Mt(n);return e?n.concat([{from:h,event:g,to:e,action:O}]):r?n:void 0}function ne(t,n){var a=t.states,i=t.events,o=t.initialExtendedState,s=t.updateState,u=(n||{}).debug,c=u&&u.checkContracts||void 0,f=u&&u.console?u.console:G;u&&u.trace&&u.trace;if(c&&Zt(t,n,c).failingContracts.length>0)throw new Error("createStateMachine: called with wrong parameters! Cf. logs for failing contracts.");var l=Dt(x,s,["extendedState, updates"]),d=function(t){return(t=t.reduce?t:Array.prototype.slice.call(arguments)).push(g),t.reduce(function(t,e){return t[e]=e,t},{})}(i),p=ee(t),v=function(t){var n="State",r={},a={};function i(){}return t={nok:t},i.prototype={current_state_name:h},r[h]=new i,r[b]=new i,function t(i,o){it(i).forEach(function(s){var u=i[s];if(r[s]=new o,r[s].name=s,r[s].parent_name=nt(o),r[s].root_name=n,"object"===e(u)){a[s]=!0;var c=function(){};c.displayName=s,c.prototype=r[s],t(u,c)}})}(t,i),{hash_states:r,is_group_state:a}}(a),m=o,T=wt(a),E=T.stateList,_=T.stateAncestors,C=kt(E),j={},N={},k=v.is_group_state,M=v.hash_states;function I(t,e){var n,a;f.debug("send event",t),n=Xt,a=[t],c&&Ht(n,a);var i=qt(t),o=i.eventName,s=i.eventData,l=M[h].current_state_name;return e&&o===g&&l!==h?(f.warn("The external event INIT_EVENT can only be sent when starting the machine!"),S):function(t,e,n,a){var i=t[h].current_state_name,o=t[i][e];if(o){f.log("found event handler!"),f.info("WHEN EVENT ",e);var s=o(a,n,i),c=s.stop,l=s.outputs;u&&!c&&f.warn("No guards have been fulfilled! We recommend to configure guards explicitly to cover the full state space!");var d=Ct(l),p=t[h].current_state_name;if(N[p]&&p!==i){var v=j[p]?g:y;return[].concat(d).concat(I(r({},v,n),!1))}return d}return f.warn("There is no transition associated to the event |".concat(e,"| in state |").concat(i,"|!")),S}(v.hash_states,o,s,m)}return p.forEach(function(t){var e=t.from,r=t.to,a=t.action,i=t.event,o=t.guards;o||(o=[{predicate:te,to:r,action:a}]),i===g&&(j[e]=!0);var c=M[e];if(i&&!(i in d))throw"unknown event ".concat(i," found in state machine definition!");i||(i=y,N[e]=!0),k[e]&&j[e]&&(N[e]=!0),c[i]=o.reduce(function(t,r,a){var i=r.action||O,o=i.name||i.displayName,c=function(t,n){var r="",c=function(c,d,p){e=p||e;var v=t.predicate,g=v||te,y=!v||Dt(R,g,["extendedState","eventData","settings"])(c,d,n),b=t.to;if(r=g?"_checking_condition_"+a:"",Bt({debug:u,console:f},{predicate:t.predicate,extendedState:c,eventData:d,settings:n},y,$,Vt,Wt),y){f.info("IN STATE ",e),v&&f.info("CASE: guard ".concat(g.name," for transition is fulfilled")),!v&&f.info("CASE: unguarded transition"),f.info("THEN : we execute the action "+o);var T=Dt(F,i,["extendedState","eventData","settings"])(c,d,n);Bt({debug:u,console:f},{action:i,extendedState:c,eventData:d,settings:n},T,Jt,Vt,Ut);var O=T.updates,E=T.outputs;!function(t,e,n){var r=n[t].name;C=Rt(C,_,r),f.info("left state",rt(t))}(e,0,M);var N=l(c,O);Bt({debug:u,console:f},{updateStateFn:s,extendedState:c,updates:O},N,te,Vt,q),m=N;var k=function(t,e,n){var r,a;if(jt(t)){var i=t.deep?A:t.shallow?w:void 0,o=t[i];u&&f&&!j[o]&&f.warn("Configured a history state which does not relate to a compound state! The behaviour of the machine is thus unspecified. Please review your machine configuration"),a=C[i][o]||o,r=n[a]}else{if(!t)throw"enter_state : unknown case! Not a state name, and not a history state to enter!";r=n[t],a=r.name}return n[h].current_state_name=a,u&&f.info("AND TRANSITION TO STATE",a),a}(b,0,M);return f.info("ENTERING NEXT STATE: ",k),zt(N)&&f.error("with error: ",N),zt(N)||f.info("with extended state: ",m),{stop:!0,outputs:E}}return{stop:!1,outputs:S}};return c.displayName=e+r,c}(r,n);return function(e,n,r){var a=t(e,n,r);return a.stop?a:c(e,n,r)}},function(){return{stop:!1,outputs:S}})}),I(r({},g,o),!0),function(t){return I(t,!0)}}function re(t){return t.reduce(function(t,e){return t.concat(e)},[])}function ae(t,e){return e?'state "'.concat(e,'" as ').concat(t," <<NoContent>>"):'state "'.concat(vt(t),'" as ').concat(t," <<NoContent>>")}t.fsmContracts=Qt,t.build_state_enum=function(t){var n={history:{}};return n.NOK=h,function t(r){it(r).forEach(function(a){var i=r[a];n[a]=a,"object"===e(i)&&t(i)})}(t),n},t.normalizeTransitions=ee,t.normalizeFsmDef=function(t){return Object.assign({},t,{transitions:ee(t)})},t.create_state_machine=function(t,e){return ne(t,e)},t.createStateMachine=ne,t.makeWebComponentFromFsm=function(t){var e=t.name,r=t.eventHandler,o=t.fsm,c=t.commandHandlers,f=t.effectHandlers,l=t.options,d=function(t){function d(){var t,n,i;if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,d),e.split("-").length<=1)throw"makeWebComponentFromFsm : web component's name MUST include a dash! Please review the name property passed as parameter to the function!";n=this,i=a(d).call(this),t=!i||"object"!=typeof i&&"function"!=typeof i?u(n):i;var s=u(u(t));t.eventSubject=r,t.options=Object.assign({},l);var p=t.options.NO_ACTION||S;return t.eventSubject.subscribe({next:function(e){var n=o(e);n!==p&&n.forEach(function(e){if(e!==p){var n=e.command,r=e.params;c[n](t.eventSubject.next,r,f,s)}})}}),t}var p,v,m;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&i(t,e)}(d,s(HTMLElement)),p=d,m=[{key:"observedAttributes",get:function(){return[]}}],(v=[{key:"connectedCallback",value:function(){this.options.initialEvent&&this.eventSubject.next(this.options.initialEvent)}},{key:"disconnectedCallback",value:function(){this.options.terminalEvent&&this.eventSubject.next(this.options.terminalEvent),this.eventSubject.complete()}},{key:"attributeChangedCallback",value:function(t,e,n){this.constructor(),this.connectedCallback()}}])&&n(p.prototype,v),m&&n(p,m),d}();return customElements.define(e,d)},t.makeNamedActionsFactory=function(t){return Object.keys(t).reduce(function(e,n){var r=t[n];return r.displayName=n,e[n]=r,e},{})},t.mergeOutputsFn=re,t.decorateWithEntryActions=function(t,e,n){if(!e)return t;var r=t.transitions,a=t.states,i=t.initialExtendedState,o=t.initialControlState,s=t.events,u=t.updateState,c=t.settings,f=mt(a),l=Object.keys(e).every(function(t){return null!=f[t]}),d=n||re;if(l)return{initialExtendedState:i,initialControlState:o,states:a,events:s,transitions:At(function(t,n,r,a){var i=n.to,o=e[i];return o?function(t,e,n,r){var a=function(a,i,o){var s=o.debug,u=Dt(k,e,["extendedState","eventData","settings"]),c=t(a,i,o),f=c.updates,l=Dt(x,r,["extendedState, updates"]),d=l(a,f);Bt({debug:s,console:console},{updateStateFn:r,extendedState:a,actionUpdate:f},d,te,Vt,q);var p=d,v=u(p,i,o),m=Bt({debug:s,console:console},{action:e,extendedState:p,eventData:i,settings:o},v,Jt,Vt,Yt);if(!m)return{updates:[].concat(f,v.updates),outputs:n([c.outputs,v.outputs])}};return a.displayName="Entry_Action_After_".concat(Lt(t)),a}(t,o,d,u):t},r),updateState:u,settings:c};throw"decorateWithEntryActions : found control states for which entry actions are defined, and yet do not exist in the state machine!"},t.traceFSM=function(t,e){var n=e.initialExtendedState,r=e.initialControlState,a=e.events,i=e.states,o=e.transitions,s=e.updateState;return{initialExtendedState:n,initialControlState:r,events:a,states:i,updateState:s,transitions:At(function(t,e,n,r){return function(a,i,o){var u=e.from,c=e.event,f=e.to,l=e.predicate,d=Dt(F,t,["extendedState","eventData","settings"])(a,i,o),p=d.outputs,v=d.updates;return{updates:v,outputs:[{outputs:p,updates:v,extendedState:a,newExtendedState:Dt(x,s,["extendedState, updates"])(a,v||[]),controlState:u,event:{eventLabel:c,eventData:i},settings:o,targetControlState:f,predicate:l,actionFactory:t,guardIndex:n,transitionIndex:r}]}}},o)}},t.makeHistoryStates=function(t){var e=Object.keys(mt(t));return function(t,n){var a;if(!e.includes(n))throw"makeHistoryStates: the state for which a history state must be constructed is not a configured state for the state machine under implementation!!";return r(a={},t,n),r(a,"type",E),a}},t.historyState=function(t,e){return r({},t,e)},t.toPlantUml=function(t,e){var n=t.states,a=t.transitions,i=J.getChildren,o=J.getLabel,s=function(t){return t.join(l)},u=Y(J,{seed:function(){return Map},visit:function(t,e,n){var r=e.get(n).path,u=o(n),c=function(t,e,n){return["".concat(ae(t,"")," {"),e.join("\n"),function(t,e){var n=e.reduce(function(e,n){var r=pt(n);return r.filter(ot).filter(ct(t)).reduce(function(t,e){return t[dt(e)]=void 0,t},e)},{});return Object.keys(n).map(function(t){return"".concat(ae(t,v))}).join("\n")}(t,n),function(t,e){return e.reduce(function(e,n){var r=pt(n);return r.filter(st).filter(ut(t)).reduce(function(t,e){e.from;var n=e.to,r=e.predicate,a=e.action;return t.push("[*] ".concat(d," ").concat(n," ").concat(p," ").concat(lt("",r,a))),t},e)},[]).join("\n")}(t,n),"}",function(t,e){var n=function(t,e){return e.map(function(e){var n=pt(e);return n.filter(ut(t)).filter(ot).map(function(t){var e=t.from,n=t.event,r=t.predicate,a=t.to,i=t.action;return[e,d,dt({from:e,to:a}),p,lt(n,r,i)].join(" ")}).join("\n")}).filter(Boolean).join("\n")}(t,e),r=function(t,e){return t===h?"":e.map(function(e){var n=pt(e);return n.filter(ut(t)).filter(function(t){return!st(t)}).filter(function(t){return!ot(t)}).map(function(t){var e=t.from,n=t.event,r=t.predicate,a=t.to,i=t.action;return[e,d,a,p,lt(n,r,i)].join(" ")}).join("\n")}).filter(Boolean).join("\n")}(t,e);return[n,r].filter(Boolean).join("\n")}(t,n)].filter(function(t){return"\n"!==t&&""!==t}).join("\n")}(Object.keys(u)[0],at(function(e){return t.get(s(r.concat(e)))},function(t,e){return i(t,e).length}(n,e)),a);return t.set(s(r),c),t}},r({},h,n)),c=u.get("0");return u.clear(),c},t.toDagreVisualizerFormat=function(t){var e=t.states,n=t.transitions,a=J.getLabel,i=J.getChildren,o=z.constructTree,s=function(t){return t.join(l)},u=Y(J,{seed:function(){return Map},visit:function(t,e,n){var r=e.get(n).path,u=a(n),c=Object.keys(u)[0],f=at(function(e){return t.get(s(r.concat(e)))},function(t,e){return i(t,e).length}(n,e));return t.set(s(r),o(c,f)),t}},r({},h,e)).get("0"),c=n.map(function(t){var e=t.from,n=t.to,r=t.event,a=t.guards,i=t.action;return a?{from:e,event:r,guards:a.map(function(t){var e=t.predicate,n=t.to,r=t.action;return{predicate:e.name,to:n,action:r.name}})}:{from:e,to:n,event:r,action:i.name||"no action name?"}});return JSON.stringify({states:u,transitions:c})},t.CONTRACT_MODEL_UPDATE_FN_RETURN_VALUE="Model update function must return valid update operations!",t.SEP=l,t.TRANSITION_SYMBOL=d,t.TRANSITION_LABEL_START_SYMBOL=p,t.HISTORY_STATE_NAME=v,t.HISTORY_PREFIX=m,t.INIT_STATE=h,t.INIT_EVENT=g,t.AUTO_EVENT=y,t.STATE_PROTOTYPE_NAME=b,t.NO_STATE_UPDATE=T,t.NO_OUTPUT=S,t.ACTION_IDENTITY=O,t.history_symbol=E,t.SHALLOW=w,t.DEEP=A,t.WRONG_EVENT_FORMAT_ERROR=_,t.FUNCTION_THREW_ERROR=C,t.INVALID_ACTION_FACTORY_EXECUTED=j,t.INVALID_PREDICATE_EXECUTED=N,t.ACTION_FACTORY_DESC=F,t.ENTRY_ACTION_FACTORY_DESC=k,t.UPDATE_STATE_FN_DESC=x,t.PREDICATE_DESC=R,t.COMMAND_RENDER="render",t.CONTRACTS_EVAL=M,t.noop=q,t.emptyConsole=G,t.emptyTrace=K,t.isBoolean=$,t.isFunction=Q,t.isControlState=Z,t.isEvent=tt,t.isActionFactory=et,t.make_states=function(t){return t.reduce(function(t,e){return t[e]="",t},{})},t.make_events=function(t){return t},t.get_fn_name=nt,t.wrap=rt,t.times=at,t.always=function(t){return t},t.keys=it,t.merge=function(t,e){return Object.assign({},t,e)},t.is_history_transition=ot,t.is_entry_transition=st,t.is_from_control_state=ut,t.is_to_history_control_state_of=ct,t.is_history_control_state_of=ft,t.format_transition_label=lt,t.format_history_transition_state_name=dt,t.get_all_transitions=pt,t.getDisplayName=vt,t.mergeModelUpdates=function(t){return function(e,n,r){return{updates:t.reduce(function(t,a){var i=a(e,n,r).updates;return i?t.concat(i):t},[]),outputs:S}}},t.chainModelUpdates=function(t){return function(e,n,r){var a=r.updateState;return{updates:t.reduce(function(t,e){var i=t.extendedState,o=t.updates,s=e(i,n,r).updates;return{extendedState:a(i,o),updates:s}},{extendedState:e,updates:[]}).updates||[],outputs:S}}},t.mergeActionFactories=function(t,e){return function(n,r,a){var i,o=e.map(function(t){return t(n,r,a)}),s=o.map(function(t){return t.updates||[]}),u=o.map(function(t){return t.outputs||{}});return{updates:(i=[]).concat.apply(i,f(s)),outputs:t(u)}}},t.identity=function(t,e,n){return{updates:[],outputs:S}},t.lastOf=function(t){return t[t.length-1]},t.getFsmStateList=mt,t.getStatesType=ht,t.getStatesPath=gt,t.getStatesTransitionsMap=yt,t.getStatesTransitionsMaps=bt,t.getEventTransitionsMaps=Tt,t.getHistoryStatesMap=St,t.getTargetStatesMap=Ot,t.getAncestorMap=Et,t.computeHistoryMaps=wt,t.mapOverTransitionsActions=At,t.reduceTransitions=_t,t.everyTransition=function(t,e){return _t(function(e,n){return e&&t(n)},!0,[e])},t.computeTimesCircledOn=function(t,e){return t.reduce(function(t,n){return n===e?t+1:t},0)},t.isInitState=function(t){return t===h},t.isInitEvent=function(t){return t===g},t.isEventless=function(t){return void 0===t},t.arrayizeOutput=Ct,t.isHistoryControlState=jt,t.getHistoryParentState=function(t){return t[w]||t[A]},t.isShallowHistory=function(t){return t[w]},t.isDeepHistory=function(t){return t[A]},t.getHistoryType=Nt,t.getHistoryUnderlyingState=Ft,t.isHistoryStateEdge=function(t){return void 0!==t.history},t.initHistoryDataStructure=kt,t.isCompoundState=xt,t.isAtomicState=function(t,e){return!xt(t,e)},t.updateHistory=Rt,t.computeHistoryState=function(t,e,n,r){var a=wt(t),i=a.stateList,o=a.stateAncestors,s=kt(i);return(s=e.reduce(function(t,e){return Rt(t,o,e)},s))[n][r]},t.findInitTransition=Mt,t.tryCatch=It,t.tryCatchMachineFn=Dt,t.getFunctionName=Lt,t.assert=Ht,t.notifyThrows=Pt,t.handleFnExecError=Bt,t.notifyAndRethrow=Vt,t.throwIfInvalidActionResult=Ut,t.throwIfInvalidGuardResult=Wt,t.throwIfInvalidEntryActionResult=Yt,t.isActions=Jt,t.isEventStruct=Xt,t.isError=zt,t.destructureEvent=qt,Object.defineProperty(t,"__esModule",{value:!0})}); | ||
//# sourceMappingURL=kingly.umd.min.js.map |
{ | ||
"name": "kingly", | ||
"sideEffects": false, | ||
"version": "0.20.6", | ||
"version": "0.20.7", | ||
"description": "Extended Hierarchical State Transducer library", | ||
@@ -6,0 +6,0 @@ "repository": { |
197356