xstate 4.33.2 → 4.33.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- var t,e;!function(t){t.Start="xstate.start",t.Stop="xstate.stop",t.Raise="xstate.raise",t.Send="xstate.send",t.Cancel="xstate.cancel",t.NullEvent="",t.Assign="xstate.assign",t.After="xstate.after",t.DoneState="done.state",t.DoneInvoke="done.invoke",t.Log="xstate.log",t.Init="xstate.init",t.Invoke="xstate.invoke",t.ErrorExecution="error.execution",t.ErrorCommunication="error.communication",t.ErrorPlatform="error.platform",t.ErrorCustom="xstate.error",t.Update="xstate.update",t.Pure="xstate.pure",t.Choose="xstate.choose"}(t||(t={})),function(t){t.Parent="#_parent",t.Internal="#_internal"}(e||(e={}));const i=t.Start,n=t.Stop,s=t.Raise,o=t.Send,r=t.Cancel,a=t.NullEvent,c=t.Assign,h=t.After,d=t.DoneState,u=t.Log,l=t.Init,f=t.Invoke,p=t.ErrorExecution,g=t.ErrorPlatform,v=t.ErrorCustom,y=t.Update,m=t.Choose,b=t.Pure;var S=Object.freeze({__proto__:null,start:i,stop:n,raise:s,send:o,cancel:r,nullEvent:a,assign:c,after:h,doneState:d,log:u,init:l,invoke:f,errorExecution:p,errorPlatform:g,error:v,update:y,choose:m,pure:b});const O={};function x(t,e,i="."){const n=j(t,i),s=j(e,i);return U(s)?!!U(n)&&s===n:U(n)?n in s:Object.keys(n).every(t=>t in s&&x(n[t],s[t]))}function _(t){try{return U(t)||"number"==typeof t?""+t:t.type}catch(t){throw new Error("Events must be strings or objects with a string event.type property.")}}function w(t,e){try{return M(t)?t:t.toString().split(e)}catch(e){throw new Error(`'${t}' is not a valid state path.`)}}function j(t,e){if("object"==typeof(i=t)&&"value"in i&&"context"in i&&"event"in i&&"_event"in i)return t.value;var i;if(M(t))return E(t);if("string"!=typeof t)return t;return E(w(t,e))}function E(t){if(1===t.length)return t[0];const e={};let i=e;for(let e=0;e<t.length-1;e++)e===t.length-2?i[t[e]]=t[e+1]:(i[t[e]]={},i=i[t[e]]);return e}function k(t,e){const i={},n=Object.keys(t);for(let s=0;s<n.length;s++){const o=n[s];i[o]=e(t[o],o,t,s)}return i}function N(t,e,i){const n={};for(const s of Object.keys(t)){const o=t[s];i(o)&&(n[s]=e(o,s,t))}return n}const T=t=>e=>{let i=e;for(const e of t)i=i[e];return i};function $(t){if(!t)return[[]];if(U(t))return[[t]];return A(Object.keys(t).map(e=>{const i=t[e];return"string"==typeof i||i&&Object.keys(i).length?$(t[e]).map(t=>[e].concat(t)):[[e]]}))}function A(t){return[].concat(...t)}function I(t){return M(t)?t:[t]}function P(t){return void 0===t?[]:I(t)}function C(t,e,i){if(z(t))return t(e,i.data);const n={};for(const s of Object.keys(t)){const o=t[s];z(o)?n[s]=o(e,i.data):n[s]=o}return n}function V(t){return t instanceof Promise||!(null===t||!z(t)&&"object"!=typeof t||!z(t.then))}function L(t,e){const[i,n]=[[],[]];for(const s of t)e(s)?i.push(s):n.push(s);return[i,n]}function D(t,e){return k(t.states,(t,i)=>{if(!t)return;const n=(U(e)?void 0:e[i])||(t?t.current:void 0);return n?{current:n,states:D(t,n)}:void 0})}function R(t,e,i,n){return t?i.reduce((t,i)=>{const{assignment:s}=i,o={state:n,action:i,_event:e};let r={};if(z(s))r=s(t,e.data,o);else for(const i of Object.keys(s)){const n=s[i];r[i]=z(n)?n(t,e.data,o):n}return Object.assign({},t,r)},t):t}function M(t){return Array.isArray(t)}function z(t){return"function"==typeof t}function U(t){return"string"==typeof t}function B(t,e){if(t)return U(t)?{type:"xstate.guard",name:t,predicate:e?e[t]:void 0}:z(t)?{type:"xstate.guard",name:t.name,predicate:t}:t}const F=(()=>"function"==typeof Symbol&&Symbol.observable||"@@observable")();function J(t){return!!t&&"__xstatenode"in t}const q=(()=>{let t=0;return()=>(t++,t.toString(16))})();function X(t,e){return U(t)||"number"==typeof t?Object.assign({type:t},e):t}function H(t,e){if(!U(t)&&"$$type"in t&&"scxml"===t.$$type)return t;const i=X(t);return Object.assign({name:i.type,data:i,$$type:"scxml",type:"external"},e)}function G(t,e){return I(e).map(e=>void 0===e||"string"==typeof e||J(e)?{target:e,event:t}:Object.assign(Object.assign({},e),{event:t}))}function K(t,e,i,n,s){const{guards:o}=t.options,r={state:s,cond:e,_event:n};if("xstate.guard"===e.type)return((null==o?void 0:o[e.name])||e.predicate)(i,n.data,r);const a=null==o?void 0:o[e.type];if(!a)throw new Error(`Guard '${e.type}' is not implemented on machine '${t.id}'.`);return a(i,n.data,r)}function Q(t){return"string"==typeof t?{type:t}:t}function W(t,e,i){const n=()=>{},s="object"==typeof t,o=s?t:null;return{next:((s?t.next:t)||n).bind(o),error:((s?t.error:e)||n).bind(o),complete:((s?t.complete:i)||n).bind(o)}}function Y(t,e){return`${t}:invocation[${e}]`}const Z=H({type:l});function tt(t,e){return e&&e[t]||void 0}function et(t,e){let i;if(U(t)||"number"==typeof t){const n=tt(t,e);i=z(n)?{type:t,exec:n}:n||{type:t,exec:void 0}}else if(z(t))i={type:t.name||t.toString(),exec:t};else{const n=tt(t.type,e);if(z(n))i=Object.assign(Object.assign({},t),{exec:n});else if(n){const e=n.type||t.type;i=Object.assign(Object.assign(Object.assign({},n),t),{type:e})}else i=t}return i}const it=(t,e)=>{if(!t)return[];return(M(t)?t:[t]).map(t=>et(t,e))};function nt(t){const e=et(t);return Object.assign(Object.assign({id:U(t)?t:e.id},e),{type:e.type})}function st(t){return U(t)?{type:s,event:t}:rt(t,{to:e.Internal})}function ot(t){return{type:s,_event:H(t.event)}}function rt(t,e){return{to:e?e.to:void 0,type:o,event:z(t)?t:X(t),delay:e?e.delay:void 0,id:e&&void 0!==e.id?e.id:z(t)?t.name:_(t)}}function at(t,e,i,n){const s={_event:i},o=H(z(t.event)?t.event(e,i.data,s):t.event);let r;if(U(t.delay)){const o=n&&n[t.delay];r=z(o)?o(e,i.data,s):o}else r=z(t.delay)?t.delay(e,i.data,s):t.delay;const a=z(t.to)?t.to(e,i.data,s):t.to;return Object.assign(Object.assign({},t),{to:a,_event:o,event:o.data,delay:r})}function ct(t,i){return rt(t,Object.assign(Object.assign({},i),{to:e.Parent}))}const ht=(t,e)=>({context:t,event:e});const dt=(t,e,i)=>Object.assign(Object.assign({},t),{value:U(t.expr)?t.expr:t.expr(e,i.data,{_event:i})}),ut=t=>({type:r,sendId:t});function lt(e){const i=nt(e);return{type:t.Start,activity:i,exec:void 0}}function ft(e){const i=z(e)?e:nt(e);return{type:t.Stop,activity:i,exec:void 0}}function pt(e,i,n){const s=z(e.activity)?e.activity(i,n.data):e.activity,o="string"==typeof s?{id:s}:s;return{type:t.Stop,activity:o}}function gt(e,i){const n=i?"#"+i:"";return`${t.After}(${e})${n}`}function vt(e,i){const n=`${t.DoneState}.${e}`,s={type:n,data:i,toString:()=>n};return s}function yt(e,i){const n=`${t.DoneInvoke}.${e}`,s={type:n,data:i,toString:()=>n};return s}function mt(e,i){const n=`${t.ErrorPlatform}.${e}`,s={type:n,data:i,toString:()=>n};return s}function bt(t,i,r,a,h,d,l=!1){const[f,p]=l?[[],h]:L(h,t=>t.type===c);let g=f.length?R(r,a,f,i):r;const v=l?[r]:void 0;return[A(p.map(r=>{var h;switch(r.type){case s:return ot(r);case o:const f=at(r,g,a,t.options.delays);return f.to!==e.Internal&&(null==d||d(f,g,a)),f;case u:{const t=dt(r,g,a);return null==d||d(t,g,a),t}case m:{const e=null===(h=r.conds.find(e=>{const n=B(e.cond,t.options.guards);return!n||K(t,n,g,a,d?void 0:i)}))||void 0===h?void 0:h.actions;if(!e)return[];const[n,s]=bt(t,i,g,a,it(P(e),t.options.actions),d,l);return g=s,null==v||v.push(g),n}case b:{const e=r.get(g,a.data);if(!e)return[];const[n,s]=bt(t,i,g,a,it(P(e),t.options.actions),d,l);return g=s,null==v||v.push(g),n}case n:{const t=pt(r,g,a);return null==d||d(t,g,a),t}case c:g=R(g,a,[r],d?void 0:i),null==v||v.push(g);break;default:let p=et(r,t.options.actions);const{exec:y}=p;if(d)d(p,g,a);else if(y&&v){const t=v.length-1;p=Object.assign(Object.assign({},p),{exec:(e,...i)=>{y(v[t],...i)}})}return p}}).filter(t=>!!t)),g]}var St=Object.freeze({__proto__:null,actionTypes:S,initEvent:Z,getActionFunction:tt,toActionObject:et,toActionObjects:it,toActivityDefinition:nt,raise:st,resolveRaise:ot,send:rt,resolveSend:at,sendParent:ct,sendTo:function(t,e,i){return rt(e,Object.assign(Object.assign({},i),{to:t}))},sendUpdate:function(){return ct(y)},respond:function(t,e){return rt(t,Object.assign(Object.assign({},e),{to:(t,e,{_event:i})=>i.origin}))},log:function(t=ht,e){return{type:u,label:e,expr:t}},resolveLog:dt,cancel:ut,start:lt,stop:ft,resolveStop:pt,assign:t=>({type:c,assignment:t}),isActionObject:function(t){return"object"==typeof t&&"type"in t},after:gt,done:vt,doneInvoke:yt,error:mt,pure:function(e){return{type:t.Pure,get:e}},forwardTo:function(t,e){return rt((t,e)=>e,Object.assign(Object.assign({},e),{to:t}))},escalate:function(t,i){return ct((e,i,n)=>({type:v,data:z(t)?t(e,i,n):t}),Object.assign(Object.assign({},i),{to:e.Parent}))},choose:function(e){return{type:t.Choose,conds:e}},resolveActions:bt});const Ot=[],xt=(t,e)=>{Ot.push(t);const i=e(t);return Ot.pop(),i};function _t(t){return{id:t,send:()=>{},subscribe:()=>({unsubscribe:()=>{}}),getSnapshot:()=>{},toJSON:()=>({id:t}),[F]:function(){return this}}}function wt(t,e,i){const n=_t(e);if(n.deferred=!0,J(t)){const e=n.state=xt(void 0,()=>(i?t.withContext(i):t).initialState);n.getSnapshot=()=>e}return n}function jt(t){return Object.assign({subscribe:()=>({unsubscribe:()=>{}}),id:"anonymous",getSnapshot:()=>{},[F]:function(){return this}},t)}
1
+ var t,e;!function(t){t.Start="xstate.start",t.Stop="xstate.stop",t.Raise="xstate.raise",t.Send="xstate.send",t.Cancel="xstate.cancel",t.NullEvent="",t.Assign="xstate.assign",t.After="xstate.after",t.DoneState="done.state",t.DoneInvoke="done.invoke",t.Log="xstate.log",t.Init="xstate.init",t.Invoke="xstate.invoke",t.ErrorExecution="error.execution",t.ErrorCommunication="error.communication",t.ErrorPlatform="error.platform",t.ErrorCustom="xstate.error",t.Update="xstate.update",t.Pure="xstate.pure",t.Choose="xstate.choose"}(t||(t={})),function(t){t.Parent="#_parent",t.Internal="#_internal"}(e||(e={}));const i=t.Start,n=t.Stop,s=t.Raise,o=t.Send,r=t.Cancel,a=t.NullEvent,c=t.Assign,h=t.After,u=t.DoneState,d=t.Log,l=t.Init,f=t.Invoke,p=t.ErrorExecution,g=t.ErrorPlatform,v=t.ErrorCustom,y=t.Update,m=t.Choose,b=t.Pure;var S=Object.freeze({__proto__:null,start:i,stop:n,raise:s,send:o,cancel:r,nullEvent:a,assign:c,after:h,doneState:u,log:d,init:l,invoke:f,errorExecution:p,errorPlatform:g,error:v,update:y,choose:m,pure:b});const O={};function x(t,e,i="."){const n=j(t,i),s=j(e,i);return z(s)?!!z(n)&&s===n:z(n)?n in s:Object.keys(n).every(t=>t in s&&x(n[t],s[t]))}function _(t){try{return z(t)||"number"==typeof t?""+t:t.type}catch(t){throw new Error("Events must be strings or objects with a string event.type property.")}}function w(t,e){try{return R(t)?t:t.toString().split(e)}catch(e){throw new Error(`'${t}' is not a valid state path.`)}}function j(t,e){if("object"==typeof(i=t)&&"value"in i&&"context"in i&&"event"in i&&"_event"in i)return t.value;var i;if(R(t))return E(t);if("string"!=typeof t)return t;return E(w(t,e))}function E(t){if(1===t.length)return t[0];const e={};let i=e;for(let e=0;e<t.length-1;e++)e===t.length-2?i[t[e]]=t[e+1]:(i[t[e]]={},i=i[t[e]]);return e}function k(t,e){const i={},n=Object.keys(t);for(let s=0;s<n.length;s++){const o=n[s];i[o]=e(t[o],o,t,s)}return i}function N(t,e,i){const n={};for(const s of Object.keys(t)){const o=t[s];i(o)&&(n[s]=e(o,s,t))}return n}const T=t=>e=>{let i=e;for(const e of t)i=i[e];return i};function $(t){if(!t)return[[]];if(z(t))return[[t]];return A(Object.keys(t).map(e=>{const i=t[e];return"string"==typeof i||i&&Object.keys(i).length?$(t[e]).map(t=>[e].concat(t)):[[e]]}))}function A(t){return[].concat(...t)}function I(t){return R(t)?t:[t]}function P(t){return void 0===t?[]:I(t)}function C(t,e,i){if(M(t))return t(e,i.data);const n={};for(const s of Object.keys(t)){const o=t[s];M(o)?n[s]=o(e,i.data):n[s]=o}return n}function V(t){return t instanceof Promise||!(null===t||!M(t)&&"object"!=typeof t||!M(t.then))}function L(t,e){return k(t.states,(t,i)=>{if(!t)return;const n=(z(e)?void 0:e[i])||(t?t.current:void 0);return n?{current:n,states:L(t,n)}:void 0})}function D(t,e,i,n){return t?i.reduce((t,i)=>{const{assignment:s}=i,o={state:n,action:i,_event:e};let r={};if(M(s))r=s(t,e.data,o);else for(const i of Object.keys(s)){const n=s[i];r[i]=M(n)?n(t,e.data,o):n}return Object.assign({},t,r)},t):t}function R(t){return Array.isArray(t)}function M(t){return"function"==typeof t}function z(t){return"string"==typeof t}function U(t,e){if(t)return z(t)?{type:"xstate.guard",name:t,predicate:e?e[t]:void 0}:M(t)?{type:"xstate.guard",name:t.name,predicate:t}:t}const B=(()=>"function"==typeof Symbol&&Symbol.observable||"@@observable")();function F(t){return!!t&&"__xstatenode"in t}const J=(()=>{let t=0;return()=>(t++,t.toString(16))})();function q(t,e){return z(t)||"number"==typeof t?Object.assign({type:t},e):t}function Q(t,e){if(!z(t)&&"$$type"in t&&"scxml"===t.$$type)return t;const i=q(t);return Object.assign({name:i.type,data:i,$$type:"scxml",type:"external"},e)}function X(t,e){return I(e).map(e=>void 0===e||"string"==typeof e||F(e)?{target:e,event:t}:Object.assign(Object.assign({},e),{event:t}))}function H(t,e,i,n,s){const{guards:o}=t.options,r={state:s,cond:e,_event:n};if("xstate.guard"===e.type)return((null==o?void 0:o[e.name])||e.predicate)(i,n.data,r);const a=null==o?void 0:o[e.type];if(!a)throw new Error(`Guard '${e.type}' is not implemented on machine '${t.id}'.`);return a(i,n.data,r)}function G(t){return"string"==typeof t?{type:t}:t}function K(t,e,i){const n=()=>{},s="object"==typeof t,o=s?t:null;return{next:((s?t.next:t)||n).bind(o),error:((s?t.error:e)||n).bind(o),complete:((s?t.complete:i)||n).bind(o)}}function W(t,e){return`${t}:invocation[${e}]`}const Y=Q({type:l});function Z(t,e){return e&&e[t]||void 0}function tt(t,e){let i;if(z(t)||"number"==typeof t){const n=Z(t,e);i=M(n)?{type:t,exec:n}:n||{type:t,exec:void 0}}else if(M(t))i={type:t.name||t.toString(),exec:t};else{const n=Z(t.type,e);if(M(n))i=Object.assign(Object.assign({},t),{exec:n});else if(n){const e=n.type||t.type;i=Object.assign(Object.assign(Object.assign({},n),t),{type:e})}else i=t}return i}const et=(t,e)=>{if(!t)return[];return(R(t)?t:[t]).map(t=>tt(t,e))};function it(t){const e=tt(t);return Object.assign(Object.assign({id:z(t)?t:e.id},e),{type:e.type})}function nt(t){return z(t)?{type:s,event:t}:ot(t,{to:e.Internal})}function st(t){return{type:s,_event:Q(t.event)}}function ot(t,e){return{to:e?e.to:void 0,type:o,event:M(t)?t:q(t),delay:e?e.delay:void 0,id:e&&void 0!==e.id?e.id:M(t)?t.name:_(t)}}function rt(t,e,i,n){const s={_event:i},o=Q(M(t.event)?t.event(e,i.data,s):t.event);let r;if(z(t.delay)){const o=n&&n[t.delay];r=M(o)?o(e,i.data,s):o}else r=M(t.delay)?t.delay(e,i.data,s):t.delay;const a=M(t.to)?t.to(e,i.data,s):t.to;return Object.assign(Object.assign({},t),{to:a,_event:o,event:o.data,delay:r})}function at(t,i){return ot(t,Object.assign(Object.assign({},i),{to:e.Parent}))}const ct=(t,e)=>({context:t,event:e});const ht=(t,e,i)=>Object.assign(Object.assign({},t),{value:z(t.expr)?t.expr:t.expr(e,i.data,{_event:i})}),ut=t=>({type:r,sendId:t});function dt(e){const i=it(e);return{type:t.Start,activity:i,exec:void 0}}function lt(e){const i=M(e)?e:it(e);return{type:t.Stop,activity:i,exec:void 0}}function ft(e,i,n){const s=M(e.activity)?e.activity(i,n.data):e.activity,o="string"==typeof s?{id:s}:s;return{type:t.Stop,activity:o}}function pt(e,i){const n=i?"#"+i:"";return`${t.After}(${e})${n}`}function gt(e,i){const n=`${t.DoneState}.${e}`,s={type:n,data:i,toString:()=>n};return s}function vt(e,i){const n=`${t.DoneInvoke}.${e}`,s={type:n,data:i,toString:()=>n};return s}function yt(e,i){const n=`${t.ErrorPlatform}.${e}`,s={type:n,data:i,toString:()=>n};return s}function mt(t,i,r,a,h,u,l=!1){const f=l?[]:(t=>{const e=[];for(const i of t){let t=0;for(;t<i.length;)i[t].type!==c?t++:(e.push(i[t]),i.splice(t,1))}return e})(h);let p=f.length?D(r,a,f,i):r;const g=l?[r]:void 0,v=[];function y(h){var f;switch(h.type){case s:return st(h);case o:const y=rt(h,p,a,t.options.delays);return u&&y.to!==e.Internal&&v.push(y),y;case d:{const t=ht(h,p,a);return null==u||u(t,p,a),t}case m:{const e=null===(f=h.conds.find(e=>{const n=U(e.cond,t.options.guards);return!n||H(t,n,p,a,u?void 0:i)}))||void 0===f?void 0:f.actions;if(!e)return[];const[n,s]=mt(t,i,p,a,[et(P(e),t.options.actions)],u,l);return p=s,null==g||g.push(p),n}case b:{const e=h.get(p,a.data);if(!e)return[];const[n,s]=mt(t,i,p,a,[et(P(e),t.options.actions)],u,l);return p=s,null==g||g.push(p),n}case n:{const t=ft(h,p,a);return null==u||u(t,r,a),t}case c:p=D(p,a,[h],u?void 0:i),null==g||g.push(p);break;default:let S=tt(h,t.options.actions);const{exec:O}=S;if(u)u(S,p,a);else if(O&&g){const t=g.length-1;S=Object.assign(Object.assign({},S),{exec:(e,...i)=>{O(g[t],...i)}})}return S}}return[A(h.map((function(t){let e=[];for(const i of t){const t=y(i);t&&(e=e.concat(t))}return v.forEach(t=>{u(t,p,a)}),v.length=0,e}))),p]}var bt=Object.freeze({__proto__:null,actionTypes:S,initEvent:Y,getActionFunction:Z,toActionObject:tt,toActionObjects:et,toActivityDefinition:it,raise:nt,resolveRaise:st,send:ot,resolveSend:rt,sendParent:at,sendTo:function(t,e,i){return ot(e,Object.assign(Object.assign({},i),{to:t}))},sendUpdate:function(){return at(y)},respond:function(t,e){return ot(t,Object.assign(Object.assign({},e),{to:(t,e,{_event:i})=>i.origin}))},log:function(t=ct,e){return{type:d,label:e,expr:t}},resolveLog:ht,cancel:ut,start:dt,stop:lt,resolveStop:ft,assign:t=>({type:c,assignment:t}),isActionObject:function(t){return"object"==typeof t&&"type"in t},after:pt,done:gt,doneInvoke:vt,error:yt,pure:function(e){return{type:t.Pure,get:e}},forwardTo:function(t,e){return ot((t,e)=>e,Object.assign(Object.assign({},e),{to:t}))},escalate:function(t,i){return at((e,i,n)=>({type:v,data:M(t)?t(e,i,n):t}),Object.assign(Object.assign({},i),{to:e.Parent}))},choose:function(e){return{type:t.Choose,conds:e}},resolveActions:mt});const St=[],Ot=(t,e)=>{St.push(t);const i=e(t);return St.pop(),i};function xt(t){return{id:t,send:()=>{},subscribe:()=>({unsubscribe:()=>{}}),getSnapshot:()=>{},toJSON:()=>({id:t}),[B]:function(){return this}}}function _t(t,e,i){const n=xt(e);if(n.deferred=!0,F(t)){const e=n.state=Ot(void 0,()=>(i?t.withContext(i):t).initialState);n.getSnapshot=()=>e}return n}function wt(t){return Object.assign({subscribe:()=>({unsubscribe:()=>{}}),id:"anonymous",getSnapshot:()=>{},[B]:function(){return this}},t)}
2
2
  /*! *****************************************************************************
3
3
  Copyright (c) Microsoft Corporation.
4
4
 
@@ -12,4 +12,4 @@ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
12
12
  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
13
13
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
14
14
  PERFORMANCE OF THIS SOFTWARE.
15
- ***************************************************************************** */function Et(t,e){var i={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(i[n]=t[n]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var s=0;for(n=Object.getOwnPropertySymbols(t);s<n.length;s++)e.indexOf(n[s])<0&&Object.prototype.propertyIsEnumerable.call(t,n[s])&&(i[n[s]]=t[n[s]])}return i}const kt=t=>"atomic"===t.type||"final"===t.type;function Nt(t){return Object.keys(t.states).map(e=>t.states[e])}function Tt(t){return Nt(t).filter(t=>"history"!==t.type)}function $t(t){const e=[t];return kt(t)?e:e.concat(A(Tt(t).map($t)))}function At(t,e){const i=It(new Set(t)),n=new Set(e);for(const t of n){let e=t.parent;for(;e&&!n.has(e);)n.add(e),e=e.parent}const s=It(n);for(const t of n)if("compound"!==t.type||s.get(t)&&s.get(t).length){if("parallel"===t.type)for(const e of Tt(t))n.has(e)||(n.add(e),i.get(e)?i.get(e).forEach(t=>n.add(t)):e.initialStateNodes.forEach(t=>n.add(t)))}else i.get(t)?i.get(t).forEach(t=>n.add(t)):t.initialStateNodes.forEach(t=>n.add(t));for(const t of n){let e=t.parent;for(;e&&!n.has(e);)n.add(e),e=e.parent}return n}function It(t){const e=new Map;for(const i of t)e.has(i)||e.set(i,[]),i.parent&&(e.has(i.parent)||e.set(i.parent,[]),e.get(i.parent).push(i));return e}function Pt(t,e){return function t(e,i){const n=i.get(e);if(!n)return{};if("compound"===e.type){const t=n[0];if(!t)return{};if(kt(t))return t.key}const s={};return n.forEach(e=>{s[e.key]=t(e,i)}),s}(t,It(At([t],e)))}function Ct(t,e){return Array.isArray(t)?t.some(t=>t===e):t instanceof Set&&t.has(e)}function Vt(t,e){return"compound"===e.type?Tt(e).some(e=>"final"===e.type&&Ct(t,e)):"parallel"===e.type&&Tt(e).every(e=>Vt(t,e))}function Lt(t){return new Set(A(t.map(t=>t.tags)))}function Dt(t,e){const{exec:i}=t;return Object.assign(Object.assign({},t),{exec:void 0!==i?()=>i(e.context,e.event,{action:t,state:e,_event:e._event}):void 0})}class Rt{constructor(t){var e;this.actions=[],this.activities=O,this.meta={},this.events=[],this.value=t.value,this.context=t.context,this._event=t._event,this._sessionid=t._sessionid,this.event=this._event.data,this.historyValue=t.historyValue,this.history=t.history,this.actions=t.actions||[],this.activities=t.activities||O,this.meta=function(t=[]){return t.reduce((t,e)=>(void 0!==e.meta&&(t[e.id]=e.meta),t),{})}(t.configuration),this.events=t.events||[],this.matches=this.matches.bind(this),this.toStrings=this.toStrings.bind(this),this.configuration=t.configuration,this.transitions=t.transitions,this.children=t.children,this.done=!!t.done,this.tags=null!==(e=Array.isArray(t.tags)?new Set(t.tags):t.tags)&&void 0!==e?e:new Set,this.machine=t.machine,Object.defineProperty(this,"nextEvents",{get:()=>{return t=this.configuration,[...new Set(A([...t.map(t=>t.ownEvents)]))];var t}})}static from(t,e){if(t instanceof Rt)return t.context!==e?new Rt({value:t.value,context:e,_event:t._event,_sessionid:null,historyValue:t.historyValue,history:t.history,actions:[],activities:t.activities,meta:{},events:[],configuration:[],transitions:[],children:{}}):t;return new Rt({value:t,context:e,_event:Z,_sessionid:null,historyValue:void 0,history:void 0,actions:[],activities:void 0,meta:void 0,events:[],configuration:[],transitions:[],children:{}})}static create(t){return new Rt(t)}static inert(t,e){if(t instanceof Rt){if(!t.actions.length)return t;const i=Z;return new Rt({value:t.value,context:e,_event:i,_sessionid:null,historyValue:t.historyValue,history:t.history,activities:t.activities,configuration:t.configuration,transitions:[],children:{}})}return Rt.from(t,e)}toStrings(t=this.value,e="."){if(U(t))return[t];const i=Object.keys(t);return i.concat(...i.map(i=>this.toStrings(t[i],e).map(t=>i+e+t)))}toJSON(){const{configuration:t,transitions:e,tags:i,machine:n}=this,s=Et(this,["configuration","transitions","tags","machine"]);return Object.assign(Object.assign({},s),{tags:Array.from(i)})}matches(t){return x(t,this.value)}hasTag(t){return this.tags.has(t)}can(t){var e;this.machine;const i=null===(e=this.machine)||void 0===e?void 0:e.getTransitionData(this,t);return!!(null==i?void 0:i.transitions.length)&&i.transitions.some(t=>void 0!==t.target||t.actions.length)}}const Mt={deferEvents:!1};class zt{constructor(t){this.processingEvent=!1,this.queue=[],this.initialized=!1,this.options=Object.assign(Object.assign({},Mt),t)}initialize(t){if(this.initialized=!0,t){if(!this.options.deferEvents)return void this.schedule(t);this.process(t)}this.flushEvents()}schedule(t){if(this.initialized&&!this.processingEvent){if(0!==this.queue.length)throw new Error("Event queue should be empty when it is not processing events");this.process(t),this.flushEvents()}else this.queue.push(t)}clear(){this.queue=[]}flushEvents(){let t=this.queue.shift();for(;t;)this.process(t),t=this.queue.shift()}process(t){this.processingEvent=!0;try{t()}catch(t){throw this.clear(),t}finally{this.processingEvent=!1}}}const Ut=new Map;let Bt=0;const Ft={bookId:()=>"x:"+Bt++,register:(t,e)=>(Ut.set(t,e),t),get:t=>Ut.get(t),free(t){Ut.delete(t)}};function Jt(){return"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:void 0}function qt(t){if(!Jt())return;const e=function(){const t=Jt();if(t&&"__xstate__"in t)return t.__xstate__}();e&&e.register(t)}function Xt(t,e={}){let i=t.initialState;const n=new Set,s=[];let o=!1;const r=jt({id:e.id,send:e=>{s.push(e),(()=>{if(!o){for(o=!0;s.length>0;){const e=s.shift();i=t.transition(i,e,a),n.forEach(t=>t.next(i))}o=!1}})()},getSnapshot:()=>i,subscribe:(t,e,s)=>{const o=W(t,e,s);return n.add(o),o.next(i),{unsubscribe:()=>{n.delete(o)}}}}),a={parent:e.parent,self:r,id:e.id||"anonymous",observers:n};return i=t.start?t.start(a):i,r}const Ht={sync:!1,autoForward:!1};var Gt;!function(t){t[t.NotStarted=0]="NotStarted",t[t.Running=1]="Running",t[t.Stopped=2]="Stopped"}(Gt||(Gt={}));class Kt{constructor(s,a=Kt.defaultOptions){this.machine=s,this.delayedEventsMap={},this.listeners=new Set,this.contextListeners=new Set,this.stopListeners=new Set,this.doneListeners=new Set,this.eventListeners=new Set,this.sendListeners=new Set,this.initialized=!1,this.status=Gt.NotStarted,this.children=new Map,this.forwardTo=new Set,this.init=this.start,this.send=(t,e)=>{if(M(t))return this.batch(t),this.state;const i=H(X(t,e));if(this.status===Gt.Stopped)return this.state;if(this.status!==Gt.Running&&!this.options.deferEvents)throw new Error(`Event "${i.name}" was sent to uninitialized service "${this.machine.id}". Make sure .start() is called for this service, or set { deferEvents: true } in the service options.\nEvent: ${JSON.stringify(i.data)}`);return this.scheduler.schedule(()=>{this.forward(i);const t=this._nextState(i);this.update(t,i)}),this._state},this.sendTo=(t,i)=>{const n=this.parent&&(i===e.Parent||this.parent.id===i),s=n?this.parent:U(i)?this.children.get(i)||Ft.get(i):(o=i)&&"function"==typeof o.send?i:void 0;var o;if(s)"machine"in s?(this.status!==Gt.Stopped||this.parent!==s||this.state.done)&&s.send(Object.assign(Object.assign({},t),{name:t.name===v?""+mt(this.id):t.name,origin:this.sessionId})):s.send(t.data);else if(!n)throw new Error(`Unable to send event to child '${i}' from service '${this.id}'.`)},this._exec=(e,s,a,c=this.machine.options.actions)=>{const h=e.exec||tt(e.type,c),d=z(h)?h:h?h.exec:e.exec;if(d)try{return d(s,a.data,this.machine.config.predictableActionArguments?{action:e,_event:a}:{action:e,state:this.state,_event:a})}catch(t){throw this.parent&&this.parent.send({type:"xstate.error",data:t}),t}switch(e.type){case o:const c=e;if("number"==typeof c.delay)return void this.defer(c);c.to?this.sendTo(c._event,c.to):this.send(c._event);break;case r:this.cancel(e.sendId);break;case i:{if(this.status!==Gt.Running)return;const i=e.activity;if(!this.machine.config.predictableActionArguments&&!this.state.activities[i.id||i.type])break;if(i.type===t.Invoke){const t=Q(i.src),e=this.machine.options.services?this.machine.options.services[t.type]:void 0,{id:n,data:o}=i,r="autoForward"in i?i.autoForward:!!i.forward;if(!e)return;const c=o?C(o,s,a):void 0;if("string"==typeof e)return;let h,d=z(e)?e(s,a.data,{data:c,src:t,meta:i.meta}):e;if(!d)return;J(d)&&(d=c?d.withContext(c):d,h={autoForward:r}),this.spawn(d,n,h)}else this.spawnActivity(i);break}case n:this.stopChild(e.activity.id);break;case u:const{label:h,value:d}=e;h?this.logger(h,d):this.logger(d)}};const c=Object.assign(Object.assign({},Kt.defaultOptions),a),{clock:h,logger:d,parent:l,id:f}=c,p=void 0!==f?f:s.id;this.id=p,this.logger=d,this.clock=h,this.parent=l,this.options=c,this.scheduler=new zt({deferEvents:this.options.deferEvents}),this.sessionId=Ft.bookId()}get initialState(){return this._initialState?this._initialState:xt(this,()=>(this._initialState=this.machine.initialState,this._initialState))}get state(){return this._state}execute(t,e){for(const i of t.actions)this.exec(i,t,e)}update(t,e){if(t._sessionid=this.sessionId,this._state=t,this.machine.config.predictableActionArguments&&e!==Z||!this.options.execute||this.execute(this.state),this.children.forEach(t=>{this.state.children[t.id]=t}),this.devTools&&this.devTools.send(e.data,t),t.event)for(const e of this.eventListeners)e(t.event);for(const e of this.listeners)e(t,t.event);for(const t of this.contextListeners)t(this.state.context,this.state.history?this.state.history.context:void 0);if(this.state.done){const i=t.configuration.find(t=>"final"===t.type&&t.parent===this.machine),n=i&&i.doneData?C(i.doneData,t.context,e):void 0;for(const t of this.doneListeners)t(yt(this.id,n));this._stop(),this._stopChildren()}}onTransition(t){return this.listeners.add(t),this.status===Gt.Running&&t(this.state,this.state.event),this}subscribe(t,e,i){const n=W(t,e,i);this.listeners.add(n.next),this.status!==Gt.NotStarted&&n.next(this.state);const s=()=>{this.doneListeners.delete(s),this.stopListeners.delete(s),n.complete()};return this.status===Gt.Stopped?n.complete():(this.onDone(s),this.onStop(s)),{unsubscribe:()=>{this.listeners.delete(n.next),this.doneListeners.delete(s),this.stopListeners.delete(s)}}}onEvent(t){return this.eventListeners.add(t),this}onSend(t){return this.sendListeners.add(t),this}onChange(t){return this.contextListeners.add(t),this}onStop(t){return this.stopListeners.add(t),this}onDone(t){return this.doneListeners.add(t),this}off(t){return this.listeners.delete(t),this.eventListeners.delete(t),this.sendListeners.delete(t),this.stopListeners.delete(t),this.doneListeners.delete(t),this.contextListeners.delete(t),this}start(t){if(this.status===Gt.Running)return this;this.machine._init(),Ft.register(this.sessionId,this),this.initialized=!0,this.status=Gt.Running;const e=void 0===t?this.initialState:xt(this,()=>{return"object"==typeof(e=t)&&null!==e&&"value"in e&&"_event"in e?this.machine.resolveState(t):this.machine.resolveState(Rt.from(t,this.machine.context));var e});return this.options.devTools&&this.attachDev(),this.scheduler.initialize(()=>{this.update(e,Z)}),this}_stopChildren(){this.children.forEach(t=>{z(t.stop)&&t.stop()}),this.children.clear()}_stop(){for(const t of this.listeners)this.listeners.delete(t);for(const t of this.stopListeners)t(),this.stopListeners.delete(t);for(const t of this.contextListeners)this.contextListeners.delete(t);for(const t of this.doneListeners)this.doneListeners.delete(t);if(!this.initialized)return this;this.initialized=!1,this.status=Gt.Stopped,this._initialState=void 0;for(const t of Object.keys(this.delayedEventsMap))this.clock.clearTimeout(this.delayedEventsMap[t]);this.scheduler.clear(),this.scheduler=new zt({deferEvents:this.options.deferEvents})}stop(){const t=this.scheduler;return this._stop(),t.schedule(()=>{const t=H({type:"xstate.stop"}),i=xt(this,()=>{const i=A([...this.state.configuration].sort((t,e)=>e.order-t.order).map(t=>it(t.onExit,this.machine.options.actions))),[n,r]=bt(this.machine,this.state,this.state.context,t,i,this.machine.config.predictableActionArguments?this._exec:void 0,this.machine.config.predictableActionArguments||this.machine.config.preserveActionOrder),a=new Rt({value:this.state.value,context:r,_event:t,_sessionid:this.sessionId,historyValue:void 0,history:this.state,actions:n.filter(t=>t.type!==s&&(t.type!==o||!!t.to&&t.to!==e.Internal)),activities:{},events:[],configuration:[],transitions:[],children:{},done:this.state.done,tags:this.state.tags,machine:this.machine});return a.changed=!0,a});this.update(i,t),this._stopChildren(),Ft.free(this.sessionId)}),this}batch(t){if(this.status===Gt.NotStarted&&this.options.deferEvents);else if(this.status!==Gt.Running)throw new Error(`${t.length} event(s) were sent to uninitialized service "${this.machine.id}". Make sure .start() is called for this service, or set { deferEvents: true } in the service options.`);this.scheduler.schedule(()=>{let e=this.state,i=!1;const n=[];for(const s of t){const t=H(s);this.forward(t),e=xt(this,()=>this.machine.transition(e,t)),n.push(...e.actions.map(t=>Dt(t,e))),i=i||!!e.changed}e.changed=i,e.actions=n,this.update(e,H(t[t.length-1]))})}sender(t){return this.send.bind(this,t)}_nextState(t,e=!!this.machine.config.predictableActionArguments&&this._exec){const i=H(t);if(0===i.name.indexOf(g)&&!this.state.nextEvents.some(t=>0===t.indexOf(g)))throw i.data.data;return xt(this,()=>this.machine.transition(this.state,i,void 0,e||void 0))}nextState(t){return this._nextState(t,!1)}forward(t){for(const e of this.forwardTo){const i=this.children.get(e);if(!i)throw new Error(`Unable to forward event '${t}' from interpreter '${this.id}' to nonexistant child '${e}'.`);i.send(t)}}defer(t){this.delayedEventsMap[t.id]=this.clock.setTimeout(()=>{t.to?this.sendTo(t._event,t.to):this.send(t._event)},t.delay)}cancel(t){this.clock.clearTimeout(this.delayedEventsMap[t]),delete this.delayedEventsMap[t]}exec(t,e,i=this.machine.options.actions){this._exec(t,e.context,e._event,i)}removeChild(t){var e;this.children.delete(t),this.forwardTo.delete(t),null===(e=this.state)||void 0===e||delete e.children[t]}stopChild(t){const e=this.children.get(t);e&&(this.removeChild(t),z(e.stop)&&e.stop())}spawn(t,e,i){if(this.status!==Gt.Running)return wt(t,e);if(V(t))return this.spawnPromise(Promise.resolve(t),e);if(z(t))return this.spawnCallback(t,e);if(function(t){try{return"function"==typeof t.send}catch(t){return!1}}(s=t)&&"id"in s)return this.spawnActor(t,e);if(function(t){try{return"subscribe"in t&&z(t.subscribe)}catch(t){return!1}}(t))return this.spawnObservable(t,e);if(J(t))return this.spawnMachine(t,Object.assign(Object.assign({},i),{id:e}));if(null!==(n=t)&&"object"==typeof n&&"transition"in n&&"function"==typeof n.transition)return this.spawnBehavior(t,e);throw new Error(`Unable to spawn entity "${e}" of type "${typeof t}".`);var n,s}spawnMachine(t,e={}){const i=new Kt(t,Object.assign(Object.assign({},this.options),{parent:this,id:e.id||t.id})),n=Object.assign(Object.assign({},Ht),e);n.sync&&i.onTransition(t=>{this.send(y,{state:t,id:i.id})});const s=i;return this.children.set(i.id,s),n.autoForward&&this.forwardTo.add(i.id),i.onDone(t=>{this.removeChild(i.id),this.send(H(t,{origin:i.id}))}).start(),s}spawnBehavior(t,e){const i=Xt(t,{id:e,parent:this});return this.children.set(e,i),i}spawnPromise(t,e){let i,n=!1;t.then(t=>{n||(i=t,this.removeChild(e),this.send(H(yt(e,t),{origin:e})))},t=>{if(!n){this.removeChild(e);const i=mt(e,t);try{this.send(H(i,{origin:e}))}catch(t){this.devTools&&this.devTools.send(i,this.state),this.machine.strict&&this.stop()}}});const s={id:e,send:()=>{},subscribe:(e,i,n)=>{const s=W(e,i,n);let o=!1;return t.then(t=>{o||(s.next(t),o||s.complete())},t=>{o||s.error(t)}),{unsubscribe:()=>o=!0}},stop:()=>{n=!0},toJSON:()=>({id:e}),getSnapshot:()=>i,[F]:function(){return this}};return this.children.set(e,s),s}spawnCallback(t,e){let i=!1;const n=new Set,s=new Set;let o;const r=t=>{o=t,s.forEach(e=>e(t)),i||this.send(H(t,{origin:e}))};let a;try{a=t(r,t=>{n.add(t)})}catch(t){this.send(mt(e,t))}if(V(a))return this.spawnPromise(a,e);const c={id:e,send:t=>n.forEach(e=>e(t)),subscribe:t=>{const e=W(t);return s.add(e.next),{unsubscribe:()=>{s.delete(e.next)}}},stop:()=>{i=!0,z(a)&&a()},toJSON:()=>({id:e}),getSnapshot:()=>o,[F]:function(){return this}};return this.children.set(e,c),c}spawnObservable(t,e){let i;const n=t.subscribe(t=>{i=t,this.send(H(t,{origin:e}))},t=>{this.removeChild(e),this.send(H(mt(e,t),{origin:e}))},()=>{this.removeChild(e),this.send(H(yt(e),{origin:e}))}),s={id:e,send:()=>{},subscribe:(e,i,n)=>t.subscribe(e,i,n),stop:()=>n.unsubscribe(),getSnapshot:()=>i,toJSON:()=>({id:e}),[F]:function(){return this}};return this.children.set(e,s),s}spawnActor(t,e){return this.children.set(e,t),t}spawnActivity(t){const e=this.machine.options&&this.machine.options.activities?this.machine.options.activities[t.type]:void 0;if(!e)return;const i=e(this.state.context,t);this.spawnEffect(t.id,i)}spawnEffect(t,e){this.children.set(t,{id:t,send:()=>{},subscribe:()=>({unsubscribe:()=>{}}),stop:e||void 0,getSnapshot:()=>{},toJSON:()=>({id:t}),[F]:function(){return this}})}attachDev(){const t=Jt();if(this.options.devTools&&t){if(t.__REDUX_DEVTOOLS_EXTENSION__){const e="object"==typeof this.options.devTools?this.options.devTools:void 0;this.devTools=t.__REDUX_DEVTOOLS_EXTENSION__.connect(Object.assign(Object.assign({name:this.id,autoPause:!0,stateSanitizer:t=>({value:t.value,context:t.context,actions:t.actions})},e),{features:Object.assign({jump:!1,skip:!1},e?e.features:void 0)}),this.machine),this.devTools.init(this.state)}qt(this)}}toJSON(){return{id:this.id}}[F](){return this}getSnapshot(){return this.status===Gt.NotStarted?this.initialState:this._state}}Kt.defaultOptions={execute:!0,deferEvents:!0,clock:{setTimeout:(t,e)=>setTimeout(t,e),clearTimeout:t=>clearTimeout(t)},logger:console.log.bind(console),devTools:!1},Kt.interpret=Wt;function Qt(t,e){const i=(t=>U(t)?Object.assign(Object.assign({},Ht),{name:t}):Object.assign(Object.assign(Object.assign({},Ht),{name:q()}),t))(e);return(e=>e?e.spawn(t,i.name,i):wt(t,i.name))(Ot[Ot.length-1])}function Wt(t,e){return new Kt(t,e)}function Yt(t){if("string"==typeof t){const e={type:t,toString:()=>t};return e}return t}function Zt(t){return Object.assign(Object.assign({type:f},t),{toJSON(){const e=Et(t,["onDone","onError"]);return Object.assign(Object.assign({},e),{type:f,src:Yt(t.src)})}})}const te={},ee=t=>"#"===t[0];class ie{constructor(t,e,i=("context"in t?t.context:void 0),n){var s;this.config=t,this._context=i,this.order=-1,this.__xstatenode=!0,this.__cache={events:void 0,relativeValue:new Map,initialStateValue:void 0,initialState:void 0,on:void 0,transitions:void 0,candidates:{},delayedTransitions:void 0},this.idMap={},this.tags=[],this.options=Object.assign({actions:{},guards:{},services:{},activities:{},delays:{}},e),this.parent=null==n?void 0:n.parent,this.key=this.config.key||(null==n?void 0:n.key)||this.config.id||"(machine)",this.machine=this.parent?this.parent.machine:this,this.path=this.parent?this.parent.path.concat(this.key):[],this.delimiter=this.config.delimiter||(this.parent?this.parent.delimiter:"."),this.id=this.config.id||[this.machine.key,...this.path].join(this.delimiter),this.version=this.parent?this.parent.version:this.config.version,this.type=this.config.type||(this.config.parallel?"parallel":this.config.states&&Object.keys(this.config.states).length?"compound":this.config.history?"history":"atomic"),this.schema=this.parent?this.machine.schema:null!==(s=this.config.schema)&&void 0!==s?s:{},this.description=this.config.description,this.initial=this.config.initial,this.states=this.config.states?k(this.config.states,(t,e)=>{const i=new ie(t,{},void 0,{parent:this,key:e});return Object.assign(this.idMap,Object.assign({[i.id]:i},i.idMap)),i}):te;let o=0;!function t(e){e.order=o++;for(const i of Nt(e))t(i)}(this),this.history=!0===this.config.history?"shallow":this.config.history||!1,this._transient=!!this.config.always||!!this.config.on&&(Array.isArray(this.config.on)?this.config.on.some(({event:t})=>""===t):""in this.config.on),this.strict=!!this.config.strict,this.onEntry=P(this.config.entry||this.config.onEntry).map(t=>et(t)),this.onExit=P(this.config.exit||this.config.onExit).map(t=>et(t)),this.meta=this.config.meta,this.doneData="final"===this.type?this.config.data:void 0,this.invoke=P(this.config.invoke).map((t,e)=>{if(J(t)){const i=Y(this.id,e);return this.machine.options.services=Object.assign({[i]:t},this.machine.options.services),Zt({src:i,id:i})}if(U(t.src)){const i=t.id||Y(this.id,e);return Zt(Object.assign(Object.assign({},t),{id:i,src:t.src}))}if(J(t.src)||z(t.src)){const i=t.id||Y(this.id,e);return this.machine.options.services=Object.assign({[i]:t.src},this.machine.options.services),Zt(Object.assign(Object.assign({id:i},t),{src:i}))}{const i=t.src;return Zt(Object.assign(Object.assign({id:Y(this.id,e)},t),{src:i}))}}),this.activities=P(this.config.activities).concat(this.invoke).map(t=>nt(t)),this.transition=this.transition.bind(this),this.tags=P(this.config.tags)}_init(){this.__cache.transitions||$t(this).forEach(t=>t.on)}withConfig(t,e){const{actions:i,activities:n,guards:s,services:o,delays:r}=this.options;return new ie(this.config,{actions:Object.assign(Object.assign({},i),t.actions),activities:Object.assign(Object.assign({},n),t.activities),guards:Object.assign(Object.assign({},s),t.guards),services:Object.assign(Object.assign({},o),t.services),delays:Object.assign(Object.assign({},r),t.delays)},null!=e?e:this.context)}withContext(t){return new ie(this.config,this.options,t)}get context(){return z(this._context)?this._context():this._context}get definition(){return{id:this.id,key:this.key,version:this.version,context:this.context,type:this.type,initial:this.initial,history:this.history,states:k(this.states,t=>t.definition),on:this.on,transitions:this.transitions,entry:this.onEntry,exit:this.onExit,activities:this.activities||[],meta:this.meta,order:this.order||-1,data:this.doneData,invoke:this.invoke,description:this.description,tags:this.tags}}toJSON(){return this.definition}get on(){if(this.__cache.on)return this.__cache.on;const t=this.transitions;return this.__cache.on=t.reduce((t,e)=>(t[e.eventType]=t[e.eventType]||[],t[e.eventType].push(e),t),{})}get after(){return this.__cache.delayedTransitions||(this.__cache.delayedTransitions=this.getDelayedTransitions(),this.__cache.delayedTransitions)}get transitions(){return this.__cache.transitions||(this.__cache.transitions=this.formatTransitions(),this.__cache.transitions)}getCandidates(t){if(this.__cache.candidates[t])return this.__cache.candidates[t];const e=""===t,i=this.transitions.filter(i=>{const n=i.eventType===t;return e?n:n||"*"===i.eventType});return this.__cache.candidates[t]=i,i}getDelayedTransitions(){const t=this.config.after;if(!t)return[];const e=(t,e)=>{const i=gt(z(t)?`${this.id}:delay[${e}]`:t,this.id);return this.onEntry.push(rt(i,{delay:t})),this.onExit.push(ut(i)),i};return(M(t)?t.map((t,i)=>{const n=e(t.delay,i);return Object.assign(Object.assign({},t),{event:n})}):A(Object.keys(t).map((i,n)=>{const s=t[i],o=U(s)?{target:s}:s,r=isNaN(+i)?i:+i,a=e(r,n);return P(o).map(t=>Object.assign(Object.assign({},t),{event:a,delay:r}))}))).map(t=>{const{delay:e}=t;return Object.assign(Object.assign({},this.formatTransition(t)),{delay:e})})}getStateNodes(t){if(!t)return[];const e=t instanceof Rt?t.value:j(t,this.delimiter);if(U(e)){const t=this.getStateNode(e).initial;return void 0!==t?this.getStateNodes({[e]:t}):[this,this.states[e]]}const i=Object.keys(e),n=[this];return n.push(...A(i.map(t=>this.getStateNode(t).getStateNodes(e[t])))),n}handles(t){const e=_(t);return this.events.includes(e)}resolveState(t){const e=t instanceof Rt?t:Rt.create(t),i=Array.from(At([],this.getStateNodes(e.value)));return new Rt(Object.assign(Object.assign({},e),{value:this.resolve(e.value),configuration:i,done:Vt(i,this),tags:Lt(i),machine:this.machine}))}transitionLeafNode(t,e,i){const n=this.getStateNode(t).next(e,i);return n&&n.transitions.length?n:this.next(e,i)}transitionCompoundNode(t,e,i){const n=Object.keys(t),s=this.getStateNode(n[0])._transition(t[n[0]],e,i);return s&&s.transitions.length?s:this.next(e,i)}transitionParallelNode(t,e,i){const n={};for(const s of Object.keys(t)){const o=t[s];if(!o)continue;const r=this.getStateNode(s)._transition(o,e,i);r&&(n[s]=r)}const s=Object.keys(n).map(t=>n[t]),o=A(s.map(t=>t.transitions));if(!s.some(t=>t.transitions.length>0))return this.next(e,i);const r=A(s.map(t=>t.entrySet)),a=A(Object.keys(n).map(t=>n[t].configuration));return{transitions:o,entrySet:r,exitSet:A(s.map(t=>t.exitSet)),configuration:a,source:e,actions:A(Object.keys(n).map(t=>n[t].actions))}}_transition(t,e,i){return U(t)?this.transitionLeafNode(t,e,i):1===Object.keys(t).length?this.transitionCompoundNode(t,e,i):this.transitionParallelNode(t,e,i)}getTransitionData(t,e){return this._transition(t.value,t,H(e))}next(t,e){const i=e.name,n=[];let s,o=[];for(const r of this.getCandidates(i)){const{cond:a,in:c}=r,h=t.context,d=!c||(U(c)&&ee(c)?t.matches(j(this.getStateNodeById(c).path,this.delimiter)):x(j(c,this.delimiter),T(this.path.slice(0,-2))(t.value)));let u=!1;try{u=!a||K(this.machine,a,h,e,t)}catch(t){throw new Error(`Unable to evaluate guard '${a.name||a.type}' in transition for event '${i}' in state node '${this.id}':\n${t.message}`)}if(u&&d){void 0!==r.target&&(o=r.target),n.push(...r.actions),s=r;break}}if(!s)return;if(!o.length)return{transitions:[s],entrySet:[],exitSet:[],configuration:t.value?[this]:[],source:t,actions:n};const r=A(o.map(e=>this.getRelativeStateNodes(e,t.historyValue))),a=!!s.internal,c=[];return a||o.forEach(t=>{c.push(...this.getExternalReentryNodes(t))}),{transitions:[s],entrySet:c,exitSet:a?[]:[this],configuration:r,source:t,actions:n}}getExternalReentryNodes(t){const e=[];let[i,n]=t.order>this.order?[t,this]:[this,t];for(;i&&i!==n;)e.push(i),i=i.parent;return i!==n?[]:(e.push(n),e)}getActions(t,i,n,r,a,c){const h=At([],c?this.getStateNodes(c.value):[this]);for(const e of t)Ct(h,e)&&!Ct(n.entrySet,e.parent)||n.entrySet.push(e);for(const e of h)Ct(t,e)&&!Ct(n.exitSet,e.parent)||n.exitSet.push(e);const d=A(n.entrySet.map(t=>{const e=[];if("final"!==t.type)return e;const i=t.parent;if(!i.parent)return e;e.push(vt(t.id,t.doneData),vt(i.id,t.doneData?C(t.doneData,r,a):void 0));const s=i.parent;return"parallel"===s.type&&Tt(s).every(t=>Vt(n.configuration,t))&&e.push(vt(s.id)),e}));n.exitSet.sort((t,e)=>e.order-t.order),n.entrySet.sort((t,e)=>t.order-e.order);const u=new Set(n.entrySet),l=new Set(n.exitSet),[f,p]=[A(Array.from(u).map(t=>[...t.activities.map(t=>lt(t)),...t.onEntry])).concat(d.map(st)),A(Array.from(l).map(t=>[...t.onExit,...t.activities.map(t=>ft(t))]))],g=it(p.concat(n.actions).concat(f),this.machine.options.actions);if(i){const i=it(A([...t].sort((t,e)=>e.order-t.order).map(t=>t.onExit)),this.machine.options.actions).filter(t=>t.type!==s&&(t.type!==o||!!t.to&&t.to!==e.Internal));return g.concat(i)}return g}transition(t=this.initialState,e,i,n){const s=H(e);let o;if(t instanceof Rt)o=void 0===i?t:this.resolveState(Rt.from(t,i));else{const e=U(t)?this.resolve(E(this.getResolvedPath(t))):this.resolve(t),n=null!=i?i:this.machine.context;o=this.resolveState(Rt.from(e,n))}if(this.strict&&!this.events.includes(s.name)&&(r=s.name,!/^(done|error)\./.test(r)))throw new Error(`Machine '${this.id}' does not accept event '${s.name}'`);var r;const a=this._transition(o.value,o,s)||{transitions:[],configuration:[],entrySet:[],exitSet:[],source:o,actions:[]},c=At([],this.getStateNodes(o.value)),h=a.configuration.length?At(c,a.configuration):c;return a.configuration=[...h],this.resolveTransition(a,o,o.context,n,s)}resolveRaisedTransition(t,e,i,n){const s=t.actions;return(t=this.transition(t,e,void 0,n))._event=i,t.event=i.data,t.actions.unshift(...s),t}resolveTransition(t,r,c,h,d=Z){const{configuration:u}=t,l=!r||t.transitions.length>0,p=l?t.configuration:r?r.configuration:[],g=Vt(p,this),v=l?Pt(this.machine,u):void 0,m=r?r.historyValue?r.historyValue:t.source?this.machine.historyValue(r.value):void 0:void 0,b=this.getActions(new Set(p),g,t,c,d,r),S=r?Object.assign({},r.activities):{};for(const t of b)t.type===i?S[t.activity.id||t.activity.type]=t:t.type===n&&(S[t.activity.id||t.activity.type]=!1);const[O,x]=bt(this,r,c,d,b,h,this.machine.config.predictableActionArguments||this.machine.config.preserveActionOrder),[_,w]=L(O,t=>t.type===s||t.type===o&&t.to===e.Internal),j=O.filter(t=>{var e;return t.type===i&&(null===(e=t.activity)||void 0===e?void 0:e.type)===f}).reduce((t,e)=>(t[e.activity.id]=function(t,e,i,n){var s;const o=Q(t.src),r=null===(s=null==e?void 0:e.options.services)||void 0===s?void 0:s[o.type],a=t.data?C(t.data,i,n):void 0,c=r?wt(r,t.id,a):_t(t.id);return c.meta=t,c}(e.activity,this.machine,x,d),t),r?Object.assign({},r.children):{}),E=new Rt({value:v||r.value,context:x,_event:d,_sessionid:r?r._sessionid:null,historyValue:v?m?(k=m,N=v,{current:N,states:D(k,N)}):void 0:r?r.historyValue:void 0,history:!v||t.source?r:void 0,actions:v?w:[],activities:v?S:r?r.activities:{},events:[],configuration:p,transitions:t.transitions,children:j,done:g,tags:Lt(p),machine:this});var k,N;const T=c!==x;E.changed=d.name===y||T;const{history:$}=E;$&&delete $.history;const A=!g&&(this._transient||u.some(t=>t._transient));if(!(l||A&&""!==d.name))return E;let I=E;if(!g)for(A&&(I=this.resolveRaisedTransition(I,{type:a},d,h));_.length;){const t=_.shift();I=this.resolveRaisedTransition(I,t._event,d,h)}const P=I.changed||($?!!I.actions.length||T||typeof $.value!=typeof I.value||!function t(e,i){if(e===i)return!0;if(void 0===e||void 0===i)return!1;if(U(e)||U(i))return e===i;const n=Object.keys(e),s=Object.keys(i);return n.length===s.length&&n.every(n=>t(e[n],i[n]))}(I.value,$.value):void 0);return I.changed=P,I.history=$,I}getStateNode(t){if(ee(t))return this.machine.getStateNodeById(t);if(!this.states)throw new Error(`Unable to retrieve child state '${t}' from '${this.id}'; no child states exist.`);const e=this.states[t];if(!e)throw new Error(`Child state '${t}' does not exist on '${this.id}'`);return e}getStateNodeById(t){const e=ee(t)?t.slice("#".length):t;if(e===this.id)return this;const i=this.machine.idMap[e];if(!i)throw new Error(`Child state node '#${e}' does not exist on machine '${this.id}'`);return i}getStateNodeByPath(t){if("string"==typeof t&&ee(t))try{return this.getStateNodeById(t.slice(1))}catch(t){}const e=w(t,this.delimiter).slice();let i=this;for(;e.length;){const t=e.shift();if(!t.length)break;i=i.getStateNode(t)}return i}resolve(t){if(!t)return this.initialStateValue||te;switch(this.type){case"parallel":return k(this.initialStateValue,(e,i)=>e?this.getStateNode(i).resolve(t[i]||e):te);case"compound":if(U(t)){const e=this.getStateNode(t);return"parallel"===e.type||"compound"===e.type?{[t]:e.initialStateValue}:t}return Object.keys(t).length?k(t,(t,e)=>t?this.getStateNode(e).resolve(t):te):this.initialStateValue||{};default:return t||te}}getResolvedPath(t){if(ee(t)){const e=this.machine.idMap[t.slice("#".length)];if(!e)throw new Error(`Unable to find state node '${t}'`);return e.path}return w(t,this.delimiter)}get initialStateValue(){if(this.__cache.initialStateValue)return this.__cache.initialStateValue;let t;if("parallel"===this.type)t=N(this.states,t=>t.initialStateValue||te,t=>!("history"===t.type));else if(void 0!==this.initial){if(!this.states[this.initial])throw new Error(`Initial state '${this.initial}' not found on '${this.key}'`);t=kt(this.states[this.initial])?this.initial:{[this.initial]:this.states[this.initial].initialStateValue}}else t={};return this.__cache.initialStateValue=t,this.__cache.initialStateValue}getInitialState(t,e){this._init();const i=this.getStateNodes(t);return this.resolveTransition({configuration:i,entrySet:[...i],exitSet:[],transitions:[],source:void 0,actions:[]},void 0,null!=e?e:this.machine.context,void 0)}get initialState(){const{initialStateValue:t}=this;if(!t)throw new Error(`Cannot retrieve initial state from simple state '${this.id}'.`);return this.getInitialState(t)}get target(){let t;if("history"===this.type){const e=this.config;t=U(e.target)&&ee(e.target)?E(this.machine.getStateNodeById(e.target).path.slice(this.path.length-1)):e.target}return t}getRelativeStateNodes(t,e,i=!0){return i?"history"===t.type?t.resolveHistory(e):t.initialStateNodes:[t]}get initialStateNodes(){if(kt(this))return[this];if("compound"===this.type&&!this.initial)return[this];return A($(this.initialStateValue).map(t=>this.getFromRelativePath(t)))}getFromRelativePath(t){if(!t.length)return[this];const[e,...i]=t;if(!this.states)throw new Error(`Cannot retrieve subPath '${e}' from node with no states`);const n=this.getStateNode(e);if("history"===n.type)return n.resolveHistory();if(!this.states[e])throw new Error(`Child state '${e}' does not exist on '${this.id}'`);return this.states[e].getFromRelativePath(i)}historyValue(t){if(Object.keys(this.states).length)return{current:t||this.initialStateValue,states:N(this.states,(e,i)=>{if(!t)return e.historyValue();const n=U(t)?void 0:t[i];return e.historyValue(n||e.initialStateValue)},t=>!t.history)}}resolveHistory(t){if("history"!==this.type)return[this];const e=this.parent;if(!t){const t=this.target;return t?A($(t).map(t=>e.getFromRelativePath(t))):e.initialStateNodes}const i=(n=e.path,s="states",t=>{let e=t;for(const t of n)e=e[s][t];return e})(t).current;var n,s;return U(i)?[e.getStateNode(i)]:A($(i).map(t=>"deep"===this.history?e.getFromRelativePath(t):[e.states[t[0]]]))}get stateIds(){const t=A(Object.keys(this.states).map(t=>this.states[t].stateIds));return[this.id].concat(t)}get events(){if(this.__cache.events)return this.__cache.events;const{states:t}=this,e=new Set(this.ownEvents);if(t)for(const i of Object.keys(t)){const n=t[i];if(n.states)for(const t of n.events)e.add(""+t)}return this.__cache.events=Array.from(e)}get ownEvents(){const t=new Set(this.transitions.filter(t=>!(!t.target&&!t.actions.length&&t.internal)).map(t=>t.eventType));return Array.from(t)}resolveTarget(t){if(void 0!==t)return t.map(t=>{if(!U(t))return t;const e=t[0]===this.delimiter;if(e&&!this.parent)return this.getStateNodeByPath(t.slice(1));const i=e?this.key+t:t;if(!this.parent)return this.getStateNodeByPath(i);try{return this.parent.getStateNodeByPath(i)}catch(t){throw new Error(`Invalid transition definition for state node '${this.id}':\n${t.message}`)}})}formatTransition(t){const e=function(t){if(void 0!==t&&""!==t)return P(t)}(t.target),i="internal"in t?t.internal:!e||e.some(t=>U(t)&&t[0]===this.delimiter),{guards:n}=this.machine.options,s=this.resolveTarget(e),o=Object.assign(Object.assign({},t),{actions:it(P(t.actions)),cond:B(t.cond,n),target:s,source:this,internal:i,eventType:t.event,toJSON:()=>Object.assign(Object.assign({},o),{target:o.target?o.target.map(t=>"#"+t.id):void 0,source:"#"+this.id})});return o}formatTransitions(){let t;if(this.config.on)if(Array.isArray(this.config.on))t=this.config.on;else{const e=this.config.on,i="*",n=e[i],s=void 0===n?[]:n,o=Et(e,[i+""]);t=A(Object.keys(o).map(t=>G(t,o[t])).concat(G("*",s)))}else t=[];const e=this.config.always?G("",this.config.always):[],i=this.config.onDone?G(String(vt(this.id)),this.config.onDone):[],n=A(this.invoke.map(t=>{const e=[];return t.onDone&&e.push(...G(String(yt(t.id)),t.onDone)),t.onError&&e.push(...G(String(mt(t.id)),t.onError)),e})),s=this.after,o=A([...i,...n,...t,...e].map(t=>P(t).map(t=>this.formatTransition(t))));for(const t of s)o.push(t);return o}}function ne(t,e,i=t.context){return new ie(t,e,i)}function se(t,e){return new ie(t,e)}function oe(t,e){let i;for(const n of Object.keys(t))x(n,e)&&(!i||e.length>i.length)&&(i=n);return t[i]}function re(t,e,i){const n=Rt.from(t,t instanceof Rt?t.context:void 0);for(const[t,i]of e)if(n.matches(t))return i(n);return i(n)}function ae(t){return t}const ce=ae,{assign:he,send:de,sendParent:ue,sendUpdate:le,forwardTo:fe,doneInvoke:pe}=St;export{t as ActionTypes,Kt as Interpreter,Gt as InterpreterStatus,ne as Machine,e as SpecialTargets,Rt as State,ie as StateNode,St as actions,he as assign,se as createMachine,ae as createSchema,pe as doneInvoke,fe as forwardTo,Wt as interpret,oe as mapState,re as matchState,x as matchesState,de as send,ue as sendParent,le as sendUpdate,Qt as spawn,Xt as spawnBehavior,ce as t,jt as toActorRef,X as toEventObject,W as toObserver,H as toSCXMLEvent};
15
+ ***************************************************************************** */function jt(t,e){var i={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(i[n]=t[n]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var s=0;for(n=Object.getOwnPropertySymbols(t);s<n.length;s++)e.indexOf(n[s])<0&&Object.prototype.propertyIsEnumerable.call(t,n[s])&&(i[n[s]]=t[n[s]])}return i}const Et=t=>"atomic"===t.type||"final"===t.type;function kt(t){return Object.keys(t.states).map(e=>t.states[e])}function Nt(t){return kt(t).filter(t=>"history"!==t.type)}function Tt(t){const e=[t];return Et(t)?e:e.concat(A(Nt(t).map(Tt)))}function $t(t,e){const i=At(new Set(t)),n=new Set(e);for(const t of n){let e=t.parent;for(;e&&!n.has(e);)n.add(e),e=e.parent}const s=At(n);for(const t of n)if("compound"!==t.type||s.get(t)&&s.get(t).length){if("parallel"===t.type)for(const e of Nt(t))n.has(e)||(n.add(e),i.get(e)?i.get(e).forEach(t=>n.add(t)):e.initialStateNodes.forEach(t=>n.add(t)))}else i.get(t)?i.get(t).forEach(t=>n.add(t)):t.initialStateNodes.forEach(t=>n.add(t));for(const t of n){let e=t.parent;for(;e&&!n.has(e);)n.add(e),e=e.parent}return n}function At(t){const e=new Map;for(const i of t)e.has(i)||e.set(i,[]),i.parent&&(e.has(i.parent)||e.set(i.parent,[]),e.get(i.parent).push(i));return e}function It(t,e){return function t(e,i){const n=i.get(e);if(!n)return{};if("compound"===e.type){const t=n[0];if(!t)return{};if(Et(t))return t.key}const s={};return n.forEach(e=>{s[e.key]=t(e,i)}),s}(t,At($t([t],e)))}function Pt(t,e){return Array.isArray(t)?t.some(t=>t===e):t instanceof Set&&t.has(e)}function Ct(t,e){return"compound"===e.type?Nt(e).some(e=>"final"===e.type&&Pt(t,e)):"parallel"===e.type&&Nt(e).every(e=>Ct(t,e))}function Vt(t){return new Set(A(t.map(t=>t.tags)))}function Lt(t,e){const{exec:i}=t;return Object.assign(Object.assign({},t),{exec:void 0!==i?()=>i(e.context,e.event,{action:t,state:e,_event:e._event}):void 0})}class Dt{constructor(t){var e;this.actions=[],this.activities=O,this.meta={},this.events=[],this.value=t.value,this.context=t.context,this._event=t._event,this._sessionid=t._sessionid,this.event=this._event.data,this.historyValue=t.historyValue,this.history=t.history,this.actions=t.actions||[],this.activities=t.activities||O,this.meta=function(t=[]){return t.reduce((t,e)=>(void 0!==e.meta&&(t[e.id]=e.meta),t),{})}(t.configuration),this.events=t.events||[],this.matches=this.matches.bind(this),this.toStrings=this.toStrings.bind(this),this.configuration=t.configuration,this.transitions=t.transitions,this.children=t.children,this.done=!!t.done,this.tags=null!==(e=Array.isArray(t.tags)?new Set(t.tags):t.tags)&&void 0!==e?e:new Set,this.machine=t.machine,Object.defineProperty(this,"nextEvents",{get:()=>{return t=this.configuration,[...new Set(A([...t.map(t=>t.ownEvents)]))];var t}})}static from(t,e){if(t instanceof Dt)return t.context!==e?new Dt({value:t.value,context:e,_event:t._event,_sessionid:null,historyValue:t.historyValue,history:t.history,actions:[],activities:t.activities,meta:{},events:[],configuration:[],transitions:[],children:{}}):t;return new Dt({value:t,context:e,_event:Y,_sessionid:null,historyValue:void 0,history:void 0,actions:[],activities:void 0,meta:void 0,events:[],configuration:[],transitions:[],children:{}})}static create(t){return new Dt(t)}static inert(t,e){if(t instanceof Dt){if(!t.actions.length)return t;const i=Y;return new Dt({value:t.value,context:e,_event:i,_sessionid:null,historyValue:t.historyValue,history:t.history,activities:t.activities,configuration:t.configuration,transitions:[],children:{}})}return Dt.from(t,e)}toStrings(t=this.value,e="."){if(z(t))return[t];const i=Object.keys(t);return i.concat(...i.map(i=>this.toStrings(t[i],e).map(t=>i+e+t)))}toJSON(){const{configuration:t,transitions:e,tags:i,machine:n}=this,s=jt(this,["configuration","transitions","tags","machine"]);return Object.assign(Object.assign({},s),{tags:Array.from(i)})}matches(t){return x(t,this.value)}hasTag(t){return this.tags.has(t)}can(t){var e;this.machine;const i=null===(e=this.machine)||void 0===e?void 0:e.getTransitionData(this,t);return!!(null==i?void 0:i.transitions.length)&&i.transitions.some(t=>void 0!==t.target||t.actions.length)}}const Rt={deferEvents:!1};class Mt{constructor(t){this.processingEvent=!1,this.queue=[],this.initialized=!1,this.options=Object.assign(Object.assign({},Rt),t)}initialize(t){if(this.initialized=!0,t){if(!this.options.deferEvents)return void this.schedule(t);this.process(t)}this.flushEvents()}schedule(t){if(this.initialized&&!this.processingEvent){if(0!==this.queue.length)throw new Error("Event queue should be empty when it is not processing events");this.process(t),this.flushEvents()}else this.queue.push(t)}clear(){this.queue=[]}flushEvents(){let t=this.queue.shift();for(;t;)this.process(t),t=this.queue.shift()}process(t){this.processingEvent=!0;try{t()}catch(t){throw this.clear(),t}finally{this.processingEvent=!1}}}const zt=new Map;let Ut=0;const Bt={bookId:()=>"x:"+Ut++,register:(t,e)=>(zt.set(t,e),t),get:t=>zt.get(t),free(t){zt.delete(t)}};function Ft(){return"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:void 0}function Jt(t){if(!Ft())return;const e=function(){const t=Ft();if(t&&"__xstate__"in t)return t.__xstate__}();e&&e.register(t)}function qt(t,e={}){let i=t.initialState;const n=new Set,s=[];let o=!1;const r=wt({id:e.id,send:e=>{s.push(e),(()=>{if(!o){for(o=!0;s.length>0;){const e=s.shift();i=t.transition(i,e,a),n.forEach(t=>t.next(i))}o=!1}})()},getSnapshot:()=>i,subscribe:(t,e,s)=>{const o=K(t,e,s);return n.add(o),o.next(i),{unsubscribe:()=>{n.delete(o)}}}}),a={parent:e.parent,self:r,id:e.id||"anonymous",observers:n};return i=t.start?t.start(a):i,r}const Qt={sync:!1,autoForward:!1};var Xt;!function(t){t[t.NotStarted=0]="NotStarted",t[t.Running=1]="Running",t[t.Stopped=2]="Stopped"}(Xt||(Xt={}));class Ht{constructor(s,a=Ht.defaultOptions){this.machine=s,this.delayedEventsMap={},this.listeners=new Set,this.contextListeners=new Set,this.stopListeners=new Set,this.doneListeners=new Set,this.eventListeners=new Set,this.sendListeners=new Set,this.initialized=!1,this.status=Xt.NotStarted,this.children=new Map,this.forwardTo=new Set,this._outgoingQueue=[],this.init=this.start,this.send=(t,e)=>{if(R(t))return this.batch(t),this.state;const i=Q(q(t,e));if(this.status===Xt.Stopped)return this.state;if(this.status!==Xt.Running&&!this.options.deferEvents)throw new Error(`Event "${i.name}" was sent to uninitialized service "${this.machine.id}". Make sure .start() is called for this service, or set { deferEvents: true } in the service options.\nEvent: ${JSON.stringify(i.data)}`);return this.scheduler.schedule(()=>{this.forward(i);const t=this._nextState(i);this.update(t,i)}),this._state},this.sendTo=(t,i)=>{const n=this.parent&&(i===e.Parent||this.parent.id===i),s=n?this.parent:z(i)?this.children.get(i)||Bt.get(i):(o=i)&&"function"==typeof o.send?i:void 0;var o;if(s)if("machine"in s){if(this.status!==Xt.Stopped||this.parent!==s||this.state.done){const e=Object.assign(Object.assign({},t),{name:t.name===v?""+yt(this.id):t.name,origin:this.sessionId});this.machine.config.predictableActionArguments?this._outgoingQueue.push([s,e]):s.send(e)}}else this.machine.config.predictableActionArguments?this._outgoingQueue.push([s,t.data]):s.send(t.data);else if(!n)throw new Error(`Unable to send event to child '${i}' from service '${this.id}'.`)},this._exec=(e,s,a,c=this.machine.options.actions)=>{const h=e.exec||Z(e.type,c),u=M(h)?h:h?h.exec:e.exec;if(u)try{return u(s,a.data,this.machine.config.predictableActionArguments?{action:e,_event:a}:{action:e,state:this.state,_event:a})}catch(t){throw this.parent&&this.parent.send({type:"xstate.error",data:t}),t}switch(e.type){case o:const c=e;if("number"==typeof c.delay)return void this.defer(c);c.to?this.sendTo(c._event,c.to):this.send(c._event);break;case r:this.cancel(e.sendId);break;case i:{if(this.status!==Xt.Running)return;const i=e.activity;if(!this.machine.config.predictableActionArguments&&!this.state.activities[i.id||i.type])break;if(i.type===t.Invoke){const t=G(i.src),e=this.machine.options.services?this.machine.options.services[t.type]:void 0,{id:n,data:o}=i,r="autoForward"in i?i.autoForward:!!i.forward;if(!e)return;const c=o?C(o,s,a):void 0;if("string"==typeof e)return;let h,u=M(e)?e(s,a.data,{data:c,src:t,meta:i.meta}):e;if(!u)return;F(u)&&(u=c?u.withContext(c):u,h={autoForward:r}),this.spawn(u,n,h)}else this.spawnActivity(i);break}case n:this.stopChild(e.activity.id);break;case d:const{label:h,value:u}=e;h?this.logger(h,u):this.logger(u)}};const c=Object.assign(Object.assign({},Ht.defaultOptions),a),{clock:h,logger:u,parent:l,id:f}=c,p=void 0!==f?f:s.id;this.id=p,this.logger=u,this.clock=h,this.parent=l,this.options=c,this.scheduler=new Mt({deferEvents:this.options.deferEvents}),this.sessionId=Bt.bookId()}get initialState(){return this._initialState?this._initialState:Ot(this,()=>(this._initialState=this.machine.initialState,this._initialState))}get state(){return this._state}execute(t,e){for(const i of t.actions)this.exec(i,t,e)}update(t,e){if(t._sessionid=this.sessionId,this._state=t,this.machine.config.predictableActionArguments&&e!==Y||!this.options.execute){let t;for(;t=this._outgoingQueue.shift();)t[0].send(t[1])}else this.execute(this.state);if(this.children.forEach(t=>{this.state.children[t.id]=t}),this.devTools&&this.devTools.send(e.data,t),t.event)for(const e of this.eventListeners)e(t.event);for(const e of this.listeners)e(t,t.event);for(const t of this.contextListeners)t(this.state.context,this.state.history?this.state.history.context:void 0);if(this.state.done){const i=t.configuration.find(t=>"final"===t.type&&t.parent===this.machine),n=i&&i.doneData?C(i.doneData,t.context,e):void 0;for(const t of this.doneListeners)t(vt(this.id,n));this._stop(),this._stopChildren()}}onTransition(t){return this.listeners.add(t),this.status===Xt.Running&&t(this.state,this.state.event),this}subscribe(t,e,i){const n=K(t,e,i);this.listeners.add(n.next),this.status!==Xt.NotStarted&&n.next(this.state);const s=()=>{this.doneListeners.delete(s),this.stopListeners.delete(s),n.complete()};return this.status===Xt.Stopped?n.complete():(this.onDone(s),this.onStop(s)),{unsubscribe:()=>{this.listeners.delete(n.next),this.doneListeners.delete(s),this.stopListeners.delete(s)}}}onEvent(t){return this.eventListeners.add(t),this}onSend(t){return this.sendListeners.add(t),this}onChange(t){return this.contextListeners.add(t),this}onStop(t){return this.stopListeners.add(t),this}onDone(t){return this.doneListeners.add(t),this}off(t){return this.listeners.delete(t),this.eventListeners.delete(t),this.sendListeners.delete(t),this.stopListeners.delete(t),this.doneListeners.delete(t),this.contextListeners.delete(t),this}start(t){if(this.status===Xt.Running)return this;this.machine._init(),Bt.register(this.sessionId,this),this.initialized=!0,this.status=Xt.Running;const e=void 0===t?this.initialState:Ot(this,()=>{return"object"==typeof(e=t)&&null!==e&&"value"in e&&"_event"in e?this.machine.resolveState(t):this.machine.resolveState(Dt.from(t,this.machine.context));var e});return this.options.devTools&&this.attachDev(),this.scheduler.initialize(()=>{this.update(e,Y)}),this}_stopChildren(){this.children.forEach(t=>{M(t.stop)&&t.stop()}),this.children.clear()}_stop(){for(const t of this.listeners)this.listeners.delete(t);for(const t of this.stopListeners)t(),this.stopListeners.delete(t);for(const t of this.contextListeners)this.contextListeners.delete(t);for(const t of this.doneListeners)this.doneListeners.delete(t);if(!this.initialized)return this;this.initialized=!1,this.status=Xt.Stopped,this._initialState=void 0;for(const t of Object.keys(this.delayedEventsMap))this.clock.clearTimeout(this.delayedEventsMap[t]);this.scheduler.clear(),this.scheduler=new Mt({deferEvents:this.options.deferEvents})}stop(){const t=this.scheduler;return this._stop(),t.schedule(()=>{const t=Q({type:"xstate.stop"}),i=Ot(this,()=>{const i=A([...this.state.configuration].sort((t,e)=>e.order-t.order).map(t=>et(t.onExit,this.machine.options.actions))),[n,r]=mt(this.machine,this.state,this.state.context,t,[i],this.machine.config.predictableActionArguments?this._exec:void 0,this.machine.config.predictableActionArguments||this.machine.config.preserveActionOrder),a=new Dt({value:this.state.value,context:r,_event:t,_sessionid:this.sessionId,historyValue:void 0,history:this.state,actions:n.filter(t=>t.type!==s&&(t.type!==o||!!t.to&&t.to!==e.Internal)),activities:{},events:[],configuration:[],transitions:[],children:{},done:this.state.done,tags:this.state.tags,machine:this.machine});return a.changed=!0,a});this.update(i,t),this._stopChildren(),Bt.free(this.sessionId)}),this}batch(t){if(this.status===Xt.NotStarted&&this.options.deferEvents);else if(this.status!==Xt.Running)throw new Error(`${t.length} event(s) were sent to uninitialized service "${this.machine.id}". Make sure .start() is called for this service, or set { deferEvents: true } in the service options.`);this.scheduler.schedule(()=>{let e=this.state,i=!1;const n=[];for(const s of t){const t=Q(s);this.forward(t),e=Ot(this,()=>this.machine.transition(e,t)),n.push(...e.actions.map(t=>Lt(t,e))),i=i||!!e.changed}e.changed=i,e.actions=n,this.update(e,Q(t[t.length-1]))})}sender(t){return this.send.bind(this,t)}_nextState(t,e=!!this.machine.config.predictableActionArguments&&this._exec){const i=Q(t);if(0===i.name.indexOf(g)&&!this.state.nextEvents.some(t=>0===t.indexOf(g)))throw i.data.data;return Ot(this,()=>this.machine.transition(this.state,i,void 0,e||void 0))}nextState(t){return this._nextState(t,!1)}forward(t){for(const e of this.forwardTo){const i=this.children.get(e);if(!i)throw new Error(`Unable to forward event '${t}' from interpreter '${this.id}' to nonexistant child '${e}'.`);i.send(t)}}defer(t){this.delayedEventsMap[t.id]=this.clock.setTimeout(()=>{t.to?this.sendTo(t._event,t.to):this.send(t._event)},t.delay)}cancel(t){this.clock.clearTimeout(this.delayedEventsMap[t]),delete this.delayedEventsMap[t]}exec(t,e,i=this.machine.options.actions){this._exec(t,e.context,e._event,i)}removeChild(t){var e;this.children.delete(t),this.forwardTo.delete(t),null===(e=this.state)||void 0===e||delete e.children[t]}stopChild(t){const e=this.children.get(t);e&&(this.removeChild(t),M(e.stop)&&e.stop())}spawn(t,e,i){if(this.status!==Xt.Running)return _t(t,e);if(V(t))return this.spawnPromise(Promise.resolve(t),e);if(M(t))return this.spawnCallback(t,e);if(function(t){try{return"function"==typeof t.send}catch(t){return!1}}(s=t)&&"id"in s)return this.spawnActor(t,e);if(function(t){try{return"subscribe"in t&&M(t.subscribe)}catch(t){return!1}}(t))return this.spawnObservable(t,e);if(F(t))return this.spawnMachine(t,Object.assign(Object.assign({},i),{id:e}));if(null!==(n=t)&&"object"==typeof n&&"transition"in n&&"function"==typeof n.transition)return this.spawnBehavior(t,e);throw new Error(`Unable to spawn entity "${e}" of type "${typeof t}".`);var n,s}spawnMachine(t,e={}){const i=new Ht(t,Object.assign(Object.assign({},this.options),{parent:this,id:e.id||t.id})),n=Object.assign(Object.assign({},Qt),e);n.sync&&i.onTransition(t=>{this.send(y,{state:t,id:i.id})});const s=i;return this.children.set(i.id,s),n.autoForward&&this.forwardTo.add(i.id),i.onDone(t=>{this.removeChild(i.id),this.send(Q(t,{origin:i.id}))}).start(),s}spawnBehavior(t,e){const i=qt(t,{id:e,parent:this});return this.children.set(e,i),i}spawnPromise(t,e){let i,n=!1;t.then(t=>{n||(i=t,this.removeChild(e),this.send(Q(vt(e,t),{origin:e})))},t=>{if(!n){this.removeChild(e);const i=yt(e,t);try{this.send(Q(i,{origin:e}))}catch(t){this.devTools&&this.devTools.send(i,this.state),this.machine.strict&&this.stop()}}});const s={id:e,send:()=>{},subscribe:(e,i,n)=>{const s=K(e,i,n);let o=!1;return t.then(t=>{o||(s.next(t),o||s.complete())},t=>{o||s.error(t)}),{unsubscribe:()=>o=!0}},stop:()=>{n=!0},toJSON:()=>({id:e}),getSnapshot:()=>i,[B]:function(){return this}};return this.children.set(e,s),s}spawnCallback(t,e){let i=!1;const n=new Set,s=new Set;let o;const r=t=>{o=t,s.forEach(e=>e(t)),i||this.send(Q(t,{origin:e}))};let a;try{a=t(r,t=>{n.add(t)})}catch(t){this.send(yt(e,t))}if(V(a))return this.spawnPromise(a,e);const c={id:e,send:t=>n.forEach(e=>e(t)),subscribe:t=>{const e=K(t);return s.add(e.next),{unsubscribe:()=>{s.delete(e.next)}}},stop:()=>{i=!0,M(a)&&a()},toJSON:()=>({id:e}),getSnapshot:()=>o,[B]:function(){return this}};return this.children.set(e,c),c}spawnObservable(t,e){let i;const n=t.subscribe(t=>{i=t,this.send(Q(t,{origin:e}))},t=>{this.removeChild(e),this.send(Q(yt(e,t),{origin:e}))},()=>{this.removeChild(e),this.send(Q(vt(e),{origin:e}))}),s={id:e,send:()=>{},subscribe:(e,i,n)=>t.subscribe(e,i,n),stop:()=>n.unsubscribe(),getSnapshot:()=>i,toJSON:()=>({id:e}),[B]:function(){return this}};return this.children.set(e,s),s}spawnActor(t,e){return this.children.set(e,t),t}spawnActivity(t){const e=this.machine.options&&this.machine.options.activities?this.machine.options.activities[t.type]:void 0;if(!e)return;const i=e(this.state.context,t);this.spawnEffect(t.id,i)}spawnEffect(t,e){this.children.set(t,{id:t,send:()=>{},subscribe:()=>({unsubscribe:()=>{}}),stop:e||void 0,getSnapshot:()=>{},toJSON:()=>({id:t}),[B]:function(){return this}})}attachDev(){const t=Ft();if(this.options.devTools&&t){if(t.__REDUX_DEVTOOLS_EXTENSION__){const e="object"==typeof this.options.devTools?this.options.devTools:void 0;this.devTools=t.__REDUX_DEVTOOLS_EXTENSION__.connect(Object.assign(Object.assign({name:this.id,autoPause:!0,stateSanitizer:t=>({value:t.value,context:t.context,actions:t.actions})},e),{features:Object.assign({jump:!1,skip:!1},e?e.features:void 0)}),this.machine),this.devTools.init(this.state)}Jt(this)}}toJSON(){return{id:this.id}}[B](){return this}getSnapshot(){return this.status===Xt.NotStarted?this.initialState:this._state}}Ht.defaultOptions={execute:!0,deferEvents:!0,clock:{setTimeout:(t,e)=>setTimeout(t,e),clearTimeout:t=>clearTimeout(t)},logger:console.log.bind(console),devTools:!1},Ht.interpret=Kt;function Gt(t,e){const i=(t=>z(t)?Object.assign(Object.assign({},Qt),{name:t}):Object.assign(Object.assign(Object.assign({},Qt),{name:J()}),t))(e);return(e=>e?e.spawn(t,i.name,i):_t(t,i.name))(St[St.length-1])}function Kt(t,e){return new Ht(t,e)}function Wt(t){if("string"==typeof t){const e={type:t,toString:()=>t};return e}return t}function Yt(t){return Object.assign(Object.assign({type:f},t),{toJSON(){const e=jt(t,["onDone","onError"]);return Object.assign(Object.assign({},e),{type:f,src:Wt(t.src)})}})}const Zt={},te=t=>"#"===t[0];class ee{constructor(t,e,i=("context"in t?t.context:void 0),n){var s;this.config=t,this._context=i,this.order=-1,this.__xstatenode=!0,this.__cache={events:void 0,relativeValue:new Map,initialStateValue:void 0,initialState:void 0,on:void 0,transitions:void 0,candidates:{},delayedTransitions:void 0},this.idMap={},this.tags=[],this.options=Object.assign({actions:{},guards:{},services:{},activities:{},delays:{}},e),this.parent=null==n?void 0:n.parent,this.key=this.config.key||(null==n?void 0:n.key)||this.config.id||"(machine)",this.machine=this.parent?this.parent.machine:this,this.path=this.parent?this.parent.path.concat(this.key):[],this.delimiter=this.config.delimiter||(this.parent?this.parent.delimiter:"."),this.id=this.config.id||[this.machine.key,...this.path].join(this.delimiter),this.version=this.parent?this.parent.version:this.config.version,this.type=this.config.type||(this.config.parallel?"parallel":this.config.states&&Object.keys(this.config.states).length?"compound":this.config.history?"history":"atomic"),this.schema=this.parent?this.machine.schema:null!==(s=this.config.schema)&&void 0!==s?s:{},this.description=this.config.description,this.initial=this.config.initial,this.states=this.config.states?k(this.config.states,(t,e)=>{const i=new ee(t,{},void 0,{parent:this,key:e});return Object.assign(this.idMap,Object.assign({[i.id]:i},i.idMap)),i}):Zt;let o=0;!function t(e){e.order=o++;for(const i of kt(e))t(i)}(this),this.history=!0===this.config.history?"shallow":this.config.history||!1,this._transient=!!this.config.always||!!this.config.on&&(Array.isArray(this.config.on)?this.config.on.some(({event:t})=>""===t):""in this.config.on),this.strict=!!this.config.strict,this.onEntry=P(this.config.entry||this.config.onEntry).map(t=>tt(t)),this.onExit=P(this.config.exit||this.config.onExit).map(t=>tt(t)),this.meta=this.config.meta,this.doneData="final"===this.type?this.config.data:void 0,this.invoke=P(this.config.invoke).map((t,e)=>{if(F(t)){const i=W(this.id,e);return this.machine.options.services=Object.assign({[i]:t},this.machine.options.services),Yt({src:i,id:i})}if(z(t.src)){const i=t.id||W(this.id,e);return Yt(Object.assign(Object.assign({},t),{id:i,src:t.src}))}if(F(t.src)||M(t.src)){const i=t.id||W(this.id,e);return this.machine.options.services=Object.assign({[i]:t.src},this.machine.options.services),Yt(Object.assign(Object.assign({id:i},t),{src:i}))}{const i=t.src;return Yt(Object.assign(Object.assign({id:W(this.id,e)},t),{src:i}))}}),this.activities=P(this.config.activities).concat(this.invoke).map(t=>it(t)),this.transition=this.transition.bind(this),this.tags=P(this.config.tags)}_init(){this.__cache.transitions||Tt(this).forEach(t=>t.on)}withConfig(t,e){const{actions:i,activities:n,guards:s,services:o,delays:r}=this.options;return new ee(this.config,{actions:Object.assign(Object.assign({},i),t.actions),activities:Object.assign(Object.assign({},n),t.activities),guards:Object.assign(Object.assign({},s),t.guards),services:Object.assign(Object.assign({},o),t.services),delays:Object.assign(Object.assign({},r),t.delays)},null!=e?e:this.context)}withContext(t){return new ee(this.config,this.options,t)}get context(){return M(this._context)?this._context():this._context}get definition(){return{id:this.id,key:this.key,version:this.version,context:this.context,type:this.type,initial:this.initial,history:this.history,states:k(this.states,t=>t.definition),on:this.on,transitions:this.transitions,entry:this.onEntry,exit:this.onExit,activities:this.activities||[],meta:this.meta,order:this.order||-1,data:this.doneData,invoke:this.invoke,description:this.description,tags:this.tags}}toJSON(){return this.definition}get on(){if(this.__cache.on)return this.__cache.on;const t=this.transitions;return this.__cache.on=t.reduce((t,e)=>(t[e.eventType]=t[e.eventType]||[],t[e.eventType].push(e),t),{})}get after(){return this.__cache.delayedTransitions||(this.__cache.delayedTransitions=this.getDelayedTransitions(),this.__cache.delayedTransitions)}get transitions(){return this.__cache.transitions||(this.__cache.transitions=this.formatTransitions(),this.__cache.transitions)}getCandidates(t){if(this.__cache.candidates[t])return this.__cache.candidates[t];const e=""===t,i=this.transitions.filter(i=>{const n=i.eventType===t;return e?n:n||"*"===i.eventType});return this.__cache.candidates[t]=i,i}getDelayedTransitions(){const t=this.config.after;if(!t)return[];const e=(t,e)=>{const i=pt(M(t)?`${this.id}:delay[${e}]`:t,this.id);return this.onEntry.push(ot(i,{delay:t})),this.onExit.push(ut(i)),i};return(R(t)?t.map((t,i)=>{const n=e(t.delay,i);return Object.assign(Object.assign({},t),{event:n})}):A(Object.keys(t).map((i,n)=>{const s=t[i],o=z(s)?{target:s}:s,r=isNaN(+i)?i:+i,a=e(r,n);return P(o).map(t=>Object.assign(Object.assign({},t),{event:a,delay:r}))}))).map(t=>{const{delay:e}=t;return Object.assign(Object.assign({},this.formatTransition(t)),{delay:e})})}getStateNodes(t){if(!t)return[];const e=t instanceof Dt?t.value:j(t,this.delimiter);if(z(e)){const t=this.getStateNode(e).initial;return void 0!==t?this.getStateNodes({[e]:t}):[this,this.states[e]]}const i=Object.keys(e),n=[this];return n.push(...A(i.map(t=>this.getStateNode(t).getStateNodes(e[t])))),n}handles(t){const e=_(t);return this.events.includes(e)}resolveState(t){const e=t instanceof Dt?t:Dt.create(t),i=Array.from($t([],this.getStateNodes(e.value)));return new Dt(Object.assign(Object.assign({},e),{value:this.resolve(e.value),configuration:i,done:Ct(i,this),tags:Vt(i),machine:this.machine}))}transitionLeafNode(t,e,i){const n=this.getStateNode(t).next(e,i);return n&&n.transitions.length?n:this.next(e,i)}transitionCompoundNode(t,e,i){const n=Object.keys(t),s=this.getStateNode(n[0])._transition(t[n[0]],e,i);return s&&s.transitions.length?s:this.next(e,i)}transitionParallelNode(t,e,i){const n={};for(const s of Object.keys(t)){const o=t[s];if(!o)continue;const r=this.getStateNode(s)._transition(o,e,i);r&&(n[s]=r)}const s=Object.keys(n).map(t=>n[t]),o=A(s.map(t=>t.transitions));if(!s.some(t=>t.transitions.length>0))return this.next(e,i);const r=A(s.map(t=>t.entrySet)),a=A(Object.keys(n).map(t=>n[t].configuration));return{transitions:o,entrySet:r,exitSet:A(s.map(t=>t.exitSet)),configuration:a,source:e,actions:A(Object.keys(n).map(t=>n[t].actions))}}_transition(t,e,i){return z(t)?this.transitionLeafNode(t,e,i):1===Object.keys(t).length?this.transitionCompoundNode(t,e,i):this.transitionParallelNode(t,e,i)}getTransitionData(t,e){return this._transition(t.value,t,Q(e))}next(t,e){const i=e.name,n=[];let s,o=[];for(const r of this.getCandidates(i)){const{cond:a,in:c}=r,h=t.context,u=!c||(z(c)&&te(c)?t.matches(j(this.getStateNodeById(c).path,this.delimiter)):x(j(c,this.delimiter),T(this.path.slice(0,-2))(t.value)));let d=!1;try{d=!a||H(this.machine,a,h,e,t)}catch(t){throw new Error(`Unable to evaluate guard '${a.name||a.type}' in transition for event '${i}' in state node '${this.id}':\n${t.message}`)}if(d&&u){void 0!==r.target&&(o=r.target),n.push(...r.actions),s=r;break}}if(!s)return;if(!o.length)return{transitions:[s],entrySet:[],exitSet:[],configuration:t.value?[this]:[],source:t,actions:n};const r=A(o.map(e=>this.getRelativeStateNodes(e,t.historyValue))),a=!!s.internal,c=[];return a||o.forEach(t=>{c.push(...this.getExternalReentryNodes(t))}),{transitions:[s],entrySet:c,exitSet:a?[]:[this],configuration:r,source:t,actions:n}}getExternalReentryNodes(t){const e=[];let[i,n]=t.order>this.order?[t,this]:[this,t];for(;i&&i!==n;)e.push(i),i=i.parent;return i!==n?[]:(e.push(n),e)}getActions(t,i,n,r,a,c,h){const u=$t([],c?this.getStateNodes(c.value):[this]);for(const e of t)Pt(u,e)&&!Pt(n.entrySet,e.parent)||n.entrySet.push(e);for(const e of u)Pt(t,e)&&!Pt(n.exitSet,e.parent)||n.exitSet.push(e);const d=A(n.entrySet.map(t=>{const e=[];if("final"!==t.type)return e;const i=t.parent;if(!i.parent)return e;e.push(gt(t.id,t.doneData),gt(i.id,t.doneData?C(t.doneData,r,a):void 0));const s=i.parent;return"parallel"===s.type&&Nt(s).every(t=>Ct(n.configuration,t))&&e.push(gt(s.id)),e}));n.exitSet.sort((t,e)=>e.order-t.order),n.entrySet.sort((t,e)=>t.order-e.order);const l=new Set(n.entrySet),f=new Set(n.exitSet),p=Array.from(l).map(t=>{const e=t.onEntry,i=t.activities.map(t=>dt(t));return et(h?[...e,...i]:[...i,...e],this.machine.options.actions)}).concat([d.map(nt)]),g=Array.from(f).map(t=>et([...t.onExit,...t.activities.map(t=>lt(t))],this.machine.options.actions)).concat([et(n.actions,this.machine.options.actions)]).concat(p);if(i){const i=et(A([...t].sort((t,e)=>e.order-t.order).map(t=>t.onExit)),this.machine.options.actions).filter(t=>t.type!==s&&(t.type!==o||!!t.to&&t.to!==e.Internal));return g.concat([i])}return g}transition(t=this.initialState,e,i,n){const s=Q(e);let o;if(t instanceof Dt)o=void 0===i?t:this.resolveState(Dt.from(t,i));else{const e=z(t)?this.resolve(E(this.getResolvedPath(t))):this.resolve(t),n=null!=i?i:this.machine.context;o=this.resolveState(Dt.from(e,n))}if(this.strict&&!this.events.includes(s.name)&&(r=s.name,!/^(done|error)\./.test(r)))throw new Error(`Machine '${this.id}' does not accept event '${s.name}'`);var r;const a=this._transition(o.value,o,s)||{transitions:[],configuration:[],entrySet:[],exitSet:[],source:o,actions:[]},c=$t([],this.getStateNodes(o.value)),h=a.configuration.length?$t(c,a.configuration):c;return a.configuration=[...h],this.resolveTransition(a,o,o.context,n,s)}resolveRaisedTransition(t,e,i,n){const s=t.actions;return(t=this.transition(t,e,void 0,n))._event=i,t.event=i.data,t.actions.unshift(...s),t}resolveTransition(t,r,c,h,u=Y){const{configuration:d}=t,l=!r||t.transitions.length>0,p=l?t.configuration:r?r.configuration:[],g=Ct(p,this),v=l?It(this.machine,d):void 0,m=r?r.historyValue?r.historyValue:t.source?this.machine.historyValue(r.value):void 0:void 0,b=this.getActions(new Set(p),g,t,c,u,r,h),S=r?Object.assign({},r.activities):{};for(const t of b)for(const e of t)e.type===i?S[e.activity.id||e.activity.type]=e:e.type===n&&(S[e.activity.id||e.activity.type]=!1);const[O,x]=mt(this,r,c,u,b,h,this.machine.config.predictableActionArguments||this.machine.config.preserveActionOrder),[_,w]=function(t,e){const[i,n]=[[],[]];for(const s of t)e(s)?i.push(s):n.push(s);return[i,n]}(O,t=>t.type===s||t.type===o&&t.to===e.Internal),j=O.filter(t=>{var e;return t.type===i&&(null===(e=t.activity)||void 0===e?void 0:e.type)===f}).reduce((t,e)=>(t[e.activity.id]=function(t,e,i,n){var s;const o=G(t.src),r=null===(s=null==e?void 0:e.options.services)||void 0===s?void 0:s[o.type],a=t.data?C(t.data,i,n):void 0,c=r?_t(r,t.id,a):xt(t.id);return c.meta=t,c}(e.activity,this.machine,x,u),t),r?Object.assign({},r.children):{}),E=new Dt({value:v||r.value,context:x,_event:u,_sessionid:r?r._sessionid:null,historyValue:v?m?(k=m,N=v,{current:N,states:L(k,N)}):void 0:r?r.historyValue:void 0,history:!v||t.source?r:void 0,actions:v?w:[],activities:v?S:r?r.activities:{},events:[],configuration:p,transitions:t.transitions,children:j,done:g,tags:Vt(p),machine:this});var k,N;const T=c!==x;E.changed=u.name===y||T;const{history:$}=E;$&&delete $.history;const A=!g&&(this._transient||d.some(t=>t._transient));if(!(l||A&&""!==u.name))return E;let I=E;if(!g)for(A&&(I=this.resolveRaisedTransition(I,{type:a},u,h));_.length;){const t=_.shift();I=this.resolveRaisedTransition(I,t._event,u,h)}const P=I.changed||($?!!I.actions.length||T||typeof $.value!=typeof I.value||!function t(e,i){if(e===i)return!0;if(void 0===e||void 0===i)return!1;if(z(e)||z(i))return e===i;const n=Object.keys(e),s=Object.keys(i);return n.length===s.length&&n.every(n=>t(e[n],i[n]))}(I.value,$.value):void 0);return I.changed=P,I.history=$,I}getStateNode(t){if(te(t))return this.machine.getStateNodeById(t);if(!this.states)throw new Error(`Unable to retrieve child state '${t}' from '${this.id}'; no child states exist.`);const e=this.states[t];if(!e)throw new Error(`Child state '${t}' does not exist on '${this.id}'`);return e}getStateNodeById(t){const e=te(t)?t.slice("#".length):t;if(e===this.id)return this;const i=this.machine.idMap[e];if(!i)throw new Error(`Child state node '#${e}' does not exist on machine '${this.id}'`);return i}getStateNodeByPath(t){if("string"==typeof t&&te(t))try{return this.getStateNodeById(t.slice(1))}catch(t){}const e=w(t,this.delimiter).slice();let i=this;for(;e.length;){const t=e.shift();if(!t.length)break;i=i.getStateNode(t)}return i}resolve(t){if(!t)return this.initialStateValue||Zt;switch(this.type){case"parallel":return k(this.initialStateValue,(e,i)=>e?this.getStateNode(i).resolve(t[i]||e):Zt);case"compound":if(z(t)){const e=this.getStateNode(t);return"parallel"===e.type||"compound"===e.type?{[t]:e.initialStateValue}:t}return Object.keys(t).length?k(t,(t,e)=>t?this.getStateNode(e).resolve(t):Zt):this.initialStateValue||{};default:return t||Zt}}getResolvedPath(t){if(te(t)){const e=this.machine.idMap[t.slice("#".length)];if(!e)throw new Error(`Unable to find state node '${t}'`);return e.path}return w(t,this.delimiter)}get initialStateValue(){if(this.__cache.initialStateValue)return this.__cache.initialStateValue;let t;if("parallel"===this.type)t=N(this.states,t=>t.initialStateValue||Zt,t=>!("history"===t.type));else if(void 0!==this.initial){if(!this.states[this.initial])throw new Error(`Initial state '${this.initial}' not found on '${this.key}'`);t=Et(this.states[this.initial])?this.initial:{[this.initial]:this.states[this.initial].initialStateValue}}else t={};return this.__cache.initialStateValue=t,this.__cache.initialStateValue}getInitialState(t,e){this._init();const i=this.getStateNodes(t);return this.resolveTransition({configuration:i,entrySet:[...i],exitSet:[],transitions:[],source:void 0,actions:[]},void 0,null!=e?e:this.machine.context,void 0)}get initialState(){const{initialStateValue:t}=this;if(!t)throw new Error(`Cannot retrieve initial state from simple state '${this.id}'.`);return this.getInitialState(t)}get target(){let t;if("history"===this.type){const e=this.config;t=z(e.target)&&te(e.target)?E(this.machine.getStateNodeById(e.target).path.slice(this.path.length-1)):e.target}return t}getRelativeStateNodes(t,e,i=!0){return i?"history"===t.type?t.resolveHistory(e):t.initialStateNodes:[t]}get initialStateNodes(){if(Et(this))return[this];if("compound"===this.type&&!this.initial)return[this];return A($(this.initialStateValue).map(t=>this.getFromRelativePath(t)))}getFromRelativePath(t){if(!t.length)return[this];const[e,...i]=t;if(!this.states)throw new Error(`Cannot retrieve subPath '${e}' from node with no states`);const n=this.getStateNode(e);if("history"===n.type)return n.resolveHistory();if(!this.states[e])throw new Error(`Child state '${e}' does not exist on '${this.id}'`);return this.states[e].getFromRelativePath(i)}historyValue(t){if(Object.keys(this.states).length)return{current:t||this.initialStateValue,states:N(this.states,(e,i)=>{if(!t)return e.historyValue();const n=z(t)?void 0:t[i];return e.historyValue(n||e.initialStateValue)},t=>!t.history)}}resolveHistory(t){if("history"!==this.type)return[this];const e=this.parent;if(!t){const t=this.target;return t?A($(t).map(t=>e.getFromRelativePath(t))):e.initialStateNodes}const i=(n=e.path,s="states",t=>{let e=t;for(const t of n)e=e[s][t];return e})(t).current;var n,s;return z(i)?[e.getStateNode(i)]:A($(i).map(t=>"deep"===this.history?e.getFromRelativePath(t):[e.states[t[0]]]))}get stateIds(){const t=A(Object.keys(this.states).map(t=>this.states[t].stateIds));return[this.id].concat(t)}get events(){if(this.__cache.events)return this.__cache.events;const{states:t}=this,e=new Set(this.ownEvents);if(t)for(const i of Object.keys(t)){const n=t[i];if(n.states)for(const t of n.events)e.add(""+t)}return this.__cache.events=Array.from(e)}get ownEvents(){const t=new Set(this.transitions.filter(t=>!(!t.target&&!t.actions.length&&t.internal)).map(t=>t.eventType));return Array.from(t)}resolveTarget(t){if(void 0!==t)return t.map(t=>{if(!z(t))return t;const e=t[0]===this.delimiter;if(e&&!this.parent)return this.getStateNodeByPath(t.slice(1));const i=e?this.key+t:t;if(!this.parent)return this.getStateNodeByPath(i);try{return this.parent.getStateNodeByPath(i)}catch(t){throw new Error(`Invalid transition definition for state node '${this.id}':\n${t.message}`)}})}formatTransition(t){const e=function(t){if(void 0!==t&&""!==t)return P(t)}(t.target),i="internal"in t?t.internal:!e||e.some(t=>z(t)&&t[0]===this.delimiter),{guards:n}=this.machine.options,s=this.resolveTarget(e),o=Object.assign(Object.assign({},t),{actions:et(P(t.actions)),cond:U(t.cond,n),target:s,source:this,internal:i,eventType:t.event,toJSON:()=>Object.assign(Object.assign({},o),{target:o.target?o.target.map(t=>"#"+t.id):void 0,source:"#"+this.id})});return o}formatTransitions(){let t;if(this.config.on)if(Array.isArray(this.config.on))t=this.config.on;else{const e=this.config.on,i="*",n=e[i],s=void 0===n?[]:n,o=jt(e,[i+""]);t=A(Object.keys(o).map(t=>X(t,o[t])).concat(X("*",s)))}else t=[];const e=this.config.always?X("",this.config.always):[],i=this.config.onDone?X(String(gt(this.id)),this.config.onDone):[],n=A(this.invoke.map(t=>{const e=[];return t.onDone&&e.push(...X(String(vt(t.id)),t.onDone)),t.onError&&e.push(...X(String(yt(t.id)),t.onError)),e})),s=this.after,o=A([...i,...n,...t,...e].map(t=>P(t).map(t=>this.formatTransition(t))));for(const t of s)o.push(t);return o}}function ie(t,e,i=t.context){return new ee(t,e,i)}function ne(t,e){return new ee(t,e)}function se(t,e){let i;for(const n of Object.keys(t))x(n,e)&&(!i||e.length>i.length)&&(i=n);return t[i]}function oe(t,e,i){const n=Dt.from(t,t instanceof Dt?t.context:void 0);for(const[t,i]of e)if(n.matches(t))return i(n);return i(n)}function re(t){return t}const ae=re,{assign:ce,send:he,sendParent:ue,sendUpdate:de,forwardTo:le,doneInvoke:fe}=bt;export{t as ActionTypes,Ht as Interpreter,Xt as InterpreterStatus,ie as Machine,e as SpecialTargets,Dt as State,ee as StateNode,bt as actions,ce as assign,ne as createMachine,re as createSchema,fe as doneInvoke,le as forwardTo,Kt as interpret,se as mapState,oe as matchState,x as matchesState,he as send,ue as sendParent,de as sendUpdate,Gt as spawn,qt as spawnBehavior,ae as t,wt as toActorRef,q as toEventObject,K as toObserver,Q as toSCXMLEvent};
package/es/StateNode.js CHANGED
@@ -3,7 +3,7 @@ import { isFunction, mapValues, isArray, flatten, toArray, toStateValue, isStrin
3
3
  import { SpecialTargets } from './types.js';
4
4
  import { State, stateValuesEqual } from './State.js';
5
5
  import { raise as raise$1, send, start as start$1, stop as stop$1, invoke, update, nullEvent } from './actionTypes.js';
6
- import { done, start, raise, stop, toActionObjects, resolveActions, doneInvoke, error, toActionObject, toActivityDefinition, after, send as send$1, cancel, initEvent } from './actions.js';
6
+ import { done, start, toActionObjects, raise, stop, resolveActions, doneInvoke, error, toActionObject, toActivityDefinition, after, send as send$1, cancel, initEvent } from './actions.js';
7
7
  import { IS_PRODUCTION } from './environment.js';
8
8
  import { STATE_DELIMITER } from './constants.js';
9
9
  import { getAllStateNodes, getConfiguration, isInFinalState, getTagsFromConfiguration, has, getChildren, getValue, isLeafNode, getAllChildren } from './stateUtils.js';
@@ -667,9 +667,11 @@ function () {
667
667
  return nodes;
668
668
  };
669
669
 
670
- StateNode.prototype.getActions = function (resolvedConfig, isDone, transition, currentContext, _event, prevState) {
670
+ StateNode.prototype.getActions = function (resolvedConfig, isDone, transition, currentContext, _event, prevState, predictableExec) {
671
671
  var e_4, _a, e_5, _b;
672
672
 
673
+ var _this = this;
674
+
673
675
  var prevConfig = getConfiguration([], prevState ? this.getStateNodes(prevState.value) : [this]);
674
676
 
675
677
  try {
@@ -747,20 +749,19 @@ function () {
747
749
  });
748
750
  var entryStates = new Set(transition.entrySet);
749
751
  var exitStates = new Set(transition.exitSet);
750
-
751
- var _c = __read([flatten(Array.from(entryStates).map(function (stateNode) {
752
- return __spreadArray(__spreadArray([], __read(stateNode.activities.map(function (activity) {
752
+ var entryActions = Array.from(entryStates).map(function (stateNode) {
753
+ var entryActions = stateNode.onEntry;
754
+ var invokeActions = stateNode.activities.map(function (activity) {
753
755
  return start(activity);
754
- })), false), __read(stateNode.onEntry), false);
755
- })).concat(doneEvents.map(raise)), flatten(Array.from(exitStates).map(function (stateNode) {
756
- return __spreadArray(__spreadArray([], __read(stateNode.onExit), false), __read(stateNode.activities.map(function (activity) {
756
+ });
757
+ return toActionObjects(predictableExec ? __spreadArray(__spreadArray([], __read(entryActions), false), __read(invokeActions), false) : __spreadArray(__spreadArray([], __read(invokeActions), false), __read(entryActions), false), _this.machine.options.actions);
758
+ }).concat([doneEvents.map(raise)]);
759
+ var exitActions = Array.from(exitStates).map(function (stateNode) {
760
+ return toActionObjects(__spreadArray(__spreadArray([], __read(stateNode.onExit), false), __read(stateNode.activities.map(function (activity) {
757
761
  return stop(activity);
758
- })), false);
759
- }))], 2),
760
- entryActions = _c[0],
761
- exitActions = _c[1];
762
-
763
- var actions = toActionObjects(exitActions.concat(transition.actions).concat(entryActions), this.machine.options.actions);
762
+ })), false), _this.machine.options.actions);
763
+ });
764
+ var actions = exitActions.concat([toActionObjects(transition.actions, this.machine.options.actions)]).concat(entryActions);
764
765
 
765
766
  if (isDone) {
766
767
  var stopActions = toActionObjects(flatten(__spreadArray([], __read(resolvedConfig), false).sort(function (a, b) {
@@ -770,7 +771,7 @@ function () {
770
771
  })), this.machine.options.actions).filter(function (action) {
771
772
  return action.type !== raise$1 && (action.type !== send || !!action.to && action.to !== SpecialTargets.Internal);
772
773
  });
773
- return actions.concat(stopActions);
774
+ return actions.concat([stopActions]);
774
775
  }
775
776
 
776
777
  return actions;
@@ -841,7 +842,7 @@ function () {
841
842
  };
842
843
 
843
844
  StateNode.prototype.resolveTransition = function (stateTransition, currentState, context, predictableExec, _event) {
844
- var e_6, _a;
845
+ var e_6, _a, e_7, _b;
845
846
 
846
847
  var _this = this;
847
848
 
@@ -858,17 +859,33 @@ function () {
858
859
  var isDone = isInFinalState(resolvedConfiguration, this);
859
860
  var resolvedStateValue = willTransition ? getValue(this.machine, configuration) : undefined;
860
861
  var historyValue = currentState ? currentState.historyValue ? currentState.historyValue : stateTransition.source ? this.machine.historyValue(currentState.value) : undefined : undefined;
861
- var actions = this.getActions(new Set(resolvedConfiguration), isDone, stateTransition, context, _event, currentState);
862
+ var actionBlocks = this.getActions(new Set(resolvedConfiguration), isDone, stateTransition, context, _event, currentState, predictableExec);
862
863
  var activities = currentState ? __assign({}, currentState.activities) : {};
863
864
 
864
865
  try {
865
- for (var actions_1 = __values(actions), actions_1_1 = actions_1.next(); !actions_1_1.done; actions_1_1 = actions_1.next()) {
866
- var action = actions_1_1.value;
866
+ for (var actionBlocks_1 = __values(actionBlocks), actionBlocks_1_1 = actionBlocks_1.next(); !actionBlocks_1_1.done; actionBlocks_1_1 = actionBlocks_1.next()) {
867
+ var block = actionBlocks_1_1.value;
867
868
 
868
- if (action.type === start$1) {
869
- activities[action.activity.id || action.activity.type] = action;
870
- } else if (action.type === stop$1) {
871
- activities[action.activity.id || action.activity.type] = false;
869
+ try {
870
+ for (var block_1 = (e_7 = void 0, __values(block)), block_1_1 = block_1.next(); !block_1_1.done; block_1_1 = block_1.next()) {
871
+ var action = block_1_1.value;
872
+
873
+ if (action.type === start$1) {
874
+ activities[action.activity.id || action.activity.type] = action;
875
+ } else if (action.type === stop$1) {
876
+ activities[action.activity.id || action.activity.type] = false;
877
+ }
878
+ }
879
+ } catch (e_7_1) {
880
+ e_7 = {
881
+ error: e_7_1
882
+ };
883
+ } finally {
884
+ try {
885
+ if (block_1_1 && !block_1_1.done && (_b = block_1.return)) _b.call(block_1);
886
+ } finally {
887
+ if (e_7) throw e_7.error;
888
+ }
872
889
  }
873
890
  }
874
891
  } catch (e_6_1) {
@@ -877,21 +894,21 @@ function () {
877
894
  };
878
895
  } finally {
879
896
  try {
880
- if (actions_1_1 && !actions_1_1.done && (_a = actions_1.return)) _a.call(actions_1);
897
+ if (actionBlocks_1_1 && !actionBlocks_1_1.done && (_a = actionBlocks_1.return)) _a.call(actionBlocks_1);
881
898
  } finally {
882
899
  if (e_6) throw e_6.error;
883
900
  }
884
901
  }
885
902
 
886
- var _b = __read(resolveActions(this, currentState, context, _event, actions, predictableExec, this.machine.config.predictableActionArguments || this.machine.config.preserveActionOrder), 2),
887
- resolvedActions = _b[0],
888
- updatedContext = _b[1];
903
+ var _c = __read(resolveActions(this, currentState, context, _event, actionBlocks, predictableExec, this.machine.config.predictableActionArguments || this.machine.config.preserveActionOrder), 2),
904
+ resolvedActions = _c[0],
905
+ updatedContext = _c[1];
889
906
 
890
- var _c = __read(partition(resolvedActions, function (action) {
907
+ var _d = __read(partition(resolvedActions, function (action) {
891
908
  return action.type === raise$1 || action.type === send && action.to === SpecialTargets.Internal;
892
909
  }), 2),
893
- raisedEvents = _c[0],
894
- nonRaisedActions = _c[1];
910
+ raisedEvents = _d[0],
911
+ nonRaisedActions = _d[1];
895
912
 
896
913
  var invokeActions = resolvedActions.filter(function (action) {
897
914
  var _a;
@@ -1340,7 +1357,7 @@ function () {
1340
1357
  * All the event types accepted by this state node and its descendants.
1341
1358
  */
1342
1359
  get: function () {
1343
- var e_7, _a, e_8, _b;
1360
+ var e_8, _a, e_9, _b;
1344
1361
 
1345
1362
  if (this.__cache.events) {
1346
1363
  return this.__cache.events;
@@ -1357,32 +1374,32 @@ function () {
1357
1374
 
1358
1375
  if (state.states) {
1359
1376
  try {
1360
- for (var _e = (e_8 = void 0, __values(state.events)), _f = _e.next(); !_f.done; _f = _e.next()) {
1377
+ for (var _e = (e_9 = void 0, __values(state.events)), _f = _e.next(); !_f.done; _f = _e.next()) {
1361
1378
  var event_1 = _f.value;
1362
1379
  events.add("".concat(event_1));
1363
1380
  }
1364
- } catch (e_8_1) {
1365
- e_8 = {
1366
- error: e_8_1
1381
+ } catch (e_9_1) {
1382
+ e_9 = {
1383
+ error: e_9_1
1367
1384
  };
1368
1385
  } finally {
1369
1386
  try {
1370
1387
  if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
1371
1388
  } finally {
1372
- if (e_8) throw e_8.error;
1389
+ if (e_9) throw e_9.error;
1373
1390
  }
1374
1391
  }
1375
1392
  }
1376
1393
  }
1377
- } catch (e_7_1) {
1378
- e_7 = {
1379
- error: e_7_1
1394
+ } catch (e_8_1) {
1395
+ e_8 = {
1396
+ error: e_8_1
1380
1397
  };
1381
1398
  } finally {
1382
1399
  try {
1383
1400
  if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
1384
1401
  } finally {
1385
- if (e_7) throw e_7.error;
1402
+ if (e_8) throw e_8.error;
1386
1403
  }
1387
1404
  }
1388
1405
  }
@@ -1477,7 +1494,7 @@ function () {
1477
1494
  };
1478
1495
 
1479
1496
  StateNode.prototype.formatTransitions = function () {
1480
- var e_9, _a;
1497
+ var e_10, _a;
1481
1498
 
1482
1499
  var _this = this;
1483
1500
 
@@ -1541,15 +1558,15 @@ function () {
1541
1558
  var delayedTransition = delayedTransitions_1_1.value;
1542
1559
  formattedTransitions.push(delayedTransition);
1543
1560
  }
1544
- } catch (e_9_1) {
1545
- e_9 = {
1546
- error: e_9_1
1561
+ } catch (e_10_1) {
1562
+ e_10 = {
1563
+ error: e_10_1
1547
1564
  };
1548
1565
  } finally {
1549
1566
  try {
1550
1567
  if (delayedTransitions_1_1 && !delayedTransitions_1_1.done && (_a = delayedTransitions_1.return)) _a.call(delayedTransitions_1);
1551
1568
  } finally {
1552
- if (e_9) throw e_9.error;
1569
+ if (e_10) throw e_10.error;
1553
1570
  }
1554
1571
  }
1555
1572
 
package/es/actions.d.ts CHANGED
@@ -150,5 +150,5 @@ export declare function forwardTo<TContext, TEvent extends EventObject>(target:
150
150
  */
151
151
  export declare function escalate<TContext, TEvent extends EventObject, TErrorData = any>(errorData: TErrorData | ExprWithMeta<TContext, TEvent, TErrorData>, options?: SendActionOptions<TContext, TEvent>): SendAction<TContext, TEvent, AnyEventObject>;
152
152
  export declare function choose<TContext, TEvent extends EventObject>(conds: Array<ChooseCondition<TContext, TEvent>>): ChooseAction<TContext, TEvent>;
153
- export declare function resolveActions<TContext, TEvent extends EventObject>(machine: StateNode<TContext, any, TEvent, any, any, any>, currentState: State<TContext, TEvent, any, any, any> | undefined, currentContext: TContext, _event: SCXML.Event<TEvent>, actions: Array<ActionObject<TContext, TEvent>>, predictableExec?: PredictableActionArgumentsExec, preserveActionOrder?: boolean): [Array<ActionObject<TContext, TEvent>>, TContext];
153
+ export declare function resolveActions<TContext, TEvent extends EventObject>(machine: StateNode<TContext, any, TEvent, any, any, any>, currentState: State<TContext, TEvent, any, any, any> | undefined, currentContext: TContext, _event: SCXML.Event<TEvent>, actionBlocks: Array<Array<ActionObject<TContext, TEvent>>>, predictableExec?: PredictableActionArgumentsExec, preserveActionOrder?: boolean): [Array<ActionObject<TContext, TEvent>>, TContext];
154
154
  //# sourceMappingURL=actions.d.ts.map
package/es/actions.js CHANGED
@@ -1,9 +1,9 @@
1
- import { __assign, __read, __spreadArray } from './_virtual/_tslib.js';
1
+ import { __assign, __spreadArray, __read, __values } from './_virtual/_tslib.js';
2
2
  import { SpecialTargets, ActionTypes } from './types.js';
3
3
  import { init, send as send$1, raise as raise$1, update, log as log$1, cancel as cancel$1, assign as assign$1, error as error$1, stop as stop$1, pure as pure$1, choose as choose$1 } from './actionTypes.js';
4
4
  import * as actionTypes from './actionTypes.js';
5
5
  export { actionTypes };
6
- import { toSCXMLEvent, isString, isFunction, toEventObject, getEventType, partition, updateContext, flatten, toArray, toGuard, evaluateGuard, warn, isArray } from './utils.js';
6
+ import { toSCXMLEvent, isString, isFunction, toEventObject, getEventType, updateContext, flatten, isArray, toArray, toGuard, evaluateGuard, warn } from './utils.js';
7
7
  import { IS_PRODUCTION } from './environment.js';
8
8
 
9
9
  var initEvent = /*#__PURE__*/toSCXMLEvent({
@@ -426,20 +426,53 @@ function choose(conds) {
426
426
  conds: conds
427
427
  };
428
428
  }
429
- function resolveActions(machine, currentState, currentContext, _event, actions, predictableExec, preserveActionOrder) {
429
+
430
+ var pluckAssigns = function (actionBlocks) {
431
+ var e_1, _a;
432
+
433
+ var assignActions = [];
434
+
435
+ try {
436
+ for (var actionBlocks_1 = __values(actionBlocks), actionBlocks_1_1 = actionBlocks_1.next(); !actionBlocks_1_1.done; actionBlocks_1_1 = actionBlocks_1.next()) {
437
+ var block = actionBlocks_1_1.value;
438
+ var i = 0;
439
+
440
+ while (i < block.length) {
441
+ if (block[i].type === assign$1) {
442
+ assignActions.push(block[i]);
443
+ block.splice(i, 1);
444
+ continue;
445
+ }
446
+
447
+ i++;
448
+ }
449
+ }
450
+ } catch (e_1_1) {
451
+ e_1 = {
452
+ error: e_1_1
453
+ };
454
+ } finally {
455
+ try {
456
+ if (actionBlocks_1_1 && !actionBlocks_1_1.done && (_a = actionBlocks_1.return)) _a.call(actionBlocks_1);
457
+ } finally {
458
+ if (e_1) throw e_1.error;
459
+ }
460
+ }
461
+
462
+ return assignActions;
463
+ };
464
+
465
+ function resolveActions(machine, currentState, currentContext, _event, actionBlocks, predictableExec, preserveActionOrder) {
430
466
  if (preserveActionOrder === void 0) {
431
467
  preserveActionOrder = false;
432
468
  }
433
469
 
434
- var _a = __read(preserveActionOrder ? [[], actions] : partition(actions, function (action) {
435
- return action.type === assign$1;
436
- }), 2),
437
- assignActions = _a[0],
438
- otherActions = _a[1];
439
-
470
+ var assignActions = preserveActionOrder ? [] : pluckAssigns(actionBlocks);
440
471
  var updatedContext = assignActions.length ? updateContext(currentContext, _event, assignActions, currentState) : currentContext;
441
472
  var preservedContexts = preserveActionOrder ? [currentContext] : undefined;
442
- var resolvedActions = flatten(otherActions.map(function (actionObject) {
473
+ var deferredToBlockEnd = [];
474
+
475
+ function handleAction(actionObject) {
443
476
  var _a;
444
477
 
445
478
  switch (actionObject.type) {
@@ -457,8 +490,8 @@ function resolveActions(machine, currentState, currentContext, _event, actions,
457
490
  "No delay reference for delay expression '".concat(actionObject.delay, "' was found on machine '").concat(machine.id, "'"));
458
491
  }
459
492
 
460
- if (sendAction.to !== SpecialTargets.Internal) {
461
- predictableExec === null || predictableExec === void 0 ? void 0 : predictableExec(sendAction, updatedContext, _event);
493
+ if (predictableExec && sendAction.to !== SpecialTargets.Internal) {
494
+ deferredToBlockEnd.push(sendAction);
462
495
  }
463
496
 
464
497
  return sendAction;
@@ -482,7 +515,7 @@ function resolveActions(machine, currentState, currentContext, _event, actions,
482
515
  return [];
483
516
  }
484
517
 
485
- var _b = __read(resolveActions(machine, currentState, updatedContext, _event, toActionObjects(toArray(matchedActions), machine.options.actions), predictableExec, preserveActionOrder), 2),
518
+ var _b = __read(resolveActions(machine, currentState, updatedContext, _event, [toActionObjects(toArray(matchedActions), machine.options.actions)], predictableExec, preserveActionOrder), 2),
486
519
  resolvedActionsFromChoose = _b[0],
487
520
  resolvedContextFromChoose = _b[1];
488
521
 
@@ -499,7 +532,7 @@ function resolveActions(machine, currentState, currentContext, _event, actions,
499
532
  return [];
500
533
  }
501
534
 
502
- var _c = __read(resolveActions(machine, currentState, updatedContext, _event, toActionObjects(toArray(matchedActions), machine.options.actions), predictableExec, preserveActionOrder), 2),
535
+ var _c = __read(resolveActions(machine, currentState, updatedContext, _event, [toActionObjects(toArray(matchedActions), machine.options.actions)], predictableExec, preserveActionOrder), 2),
503
536
  resolvedActionsFromPure = _c[0],
504
537
  resolvedContext = _c[1];
505
538
 
@@ -511,7 +544,7 @@ function resolveActions(machine, currentState, currentContext, _event, actions,
511
544
  case stop$1:
512
545
  {
513
546
  var resolved = resolveStop(actionObject, updatedContext, _event);
514
- predictableExec === null || predictableExec === void 0 ? void 0 : predictableExec(resolved, updatedContext, _event);
547
+ predictableExec === null || predictableExec === void 0 ? void 0 : predictableExec(resolved, currentContext, _event);
515
548
  return resolved;
516
549
  }
517
550
 
@@ -545,9 +578,42 @@ function resolveActions(machine, currentState, currentContext, _event, actions,
545
578
 
546
579
  return resolvedActionObject;
547
580
  }
548
- }).filter(function (a) {
549
- return !!a;
550
- }));
581
+ }
582
+
583
+ function processBlock(block) {
584
+ var e_2, _a;
585
+
586
+ var resolvedActions = [];
587
+
588
+ try {
589
+ for (var block_1 = __values(block), block_1_1 = block_1.next(); !block_1_1.done; block_1_1 = block_1.next()) {
590
+ var action = block_1_1.value;
591
+ var resolved = handleAction(action);
592
+
593
+ if (resolved) {
594
+ resolvedActions = resolvedActions.concat(resolved);
595
+ }
596
+ }
597
+ } catch (e_2_1) {
598
+ e_2 = {
599
+ error: e_2_1
600
+ };
601
+ } finally {
602
+ try {
603
+ if (block_1_1 && !block_1_1.done && (_a = block_1.return)) _a.call(block_1);
604
+ } finally {
605
+ if (e_2) throw e_2.error;
606
+ }
607
+ }
608
+
609
+ deferredToBlockEnd.forEach(function (action) {
610
+ predictableExec(action, updatedContext, _event);
611
+ });
612
+ deferredToBlockEnd.length = 0;
613
+ return resolvedActions;
614
+ }
615
+
616
+ var resolvedActions = flatten(actionBlocks.map(processBlock));
551
617
  return [resolvedActions, updatedContext];
552
618
  }
553
619