xstate 4.30.1 → 4.30.2

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
- const t={};function e(t){return Object.keys(t)}function i(t,n,s="."){const r=o(t,s),a=o(n,s);return w(a)?!!w(r)&&a===r:w(r)?r in a:e(r).every(t=>t in a&&i(r[t],a[t]))}function n(t){try{return w(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 s(t,e){try{return b(t)?t:t.toString().split(e)}catch(e){throw new Error(`'${t}' is not a valid state path.`)}}function o(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(b(t))return r(t);if("string"!=typeof t)return t;return r(s(t,e))}function r(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 a(t,i){const n={},s=e(t);for(let e=0;e<s.length;e++){const o=s[e];n[o]=i(t[o],o,t,e)}return n}function c(t,i,n){const s={};for(const o of e(t)){const e=t[o];n(e)&&(s[o]=i(e,o,t))}return s}const h=t=>e=>{let i=e;for(const e of t)i=i[e];return i};function d(t){if(!t)return[[]];if(w(t))return[[t]];return u(e(t).map(e=>{const i=t[e];return"string"==typeof i||i&&Object.keys(i).length?d(t[e]).map(t=>[e].concat(t)):[[e]]}))}function u(t){return[].concat(...t)}function l(t){return b(t)?t:[t]}function f(t){return void 0===t?[]:l(t)}function p(t,e,i){if(S(t))return t(e,i.data);const n={};for(const s of Object.keys(t)){const o=t[s];S(o)?n[s]=o(e,i.data):n[s]=o}return n}function g(t){return t instanceof Promise||!(null===t||!S(t)&&"object"!=typeof t||!S(t.then))}function v(t,e){const[i,n]=[[],[]];for(const s of t)e(s)?i.push(s):n.push(s);return[i,n]}function y(t,e){return a(t.states,(t,i)=>{if(!t)return;const n=(w(e)?void 0:e[i])||(t?t.current:void 0);return n?{current:n,states:y(t,n)}:void 0})}function m(t,i,n,s){return t?n.reduce((t,n)=>{const{assignment:o}=n,r={state:s,action:n,_event:i};let a={};if(S(o))a=o(t,i.data,r);else for(const n of e(o)){const e=o[n];a[n]=S(e)?e(t,i.data,r):e}return Object.assign({},t,a)},t):t}function b(t){return Array.isArray(t)}function S(t){return"function"==typeof t}function w(t){return"string"==typeof t}function O(t,e){if(t)return w(t)?{type:"xstate.guard",name:t,predicate:e?e[t]:void 0}:S(t)?{type:"xstate.guard",name:t.name,predicate:t}:t}const x=(()=>"function"==typeof Symbol&&Symbol.observable||"@@observable")(),_={[x]:function(){return this},[Symbol.observable]:function(){return this}};function j(t){try{return"__xstatenode"in t}catch(t){return!1}}const E=(()=>{let t=0;return()=>(t++,t.toString(16))})();function T(t,e){return w(t)||"number"==typeof t?Object.assign({type:t},e):t}function N(t,e){if(!w(t)&&"$$type"in t&&"scxml"===t.$$type)return t;const i=T(t);return Object.assign({name:i.type,data:i,$$type:"scxml",type:"external"},e)}function $(t,e){return l(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 P(t){return"string"==typeof t?{type:t}:t}function I(t,e,i){if("object"==typeof t)return t;const n=()=>{};return{next:t,error:e||n,complete:i||n}}function C(t,e){return`${t}:invocation[${e}]`}function V(t,n){let s;for(const o of e(t))i(o,n)&&(!s||n.length>s.length)&&(s=o);return t[s]}
1
+ const t={};function e(t){return Object.keys(t)}function i(t,n,s="."){const r=o(t,s),a=o(n,s);return w(a)?!!w(r)&&a===r:w(r)?r in a:e(r).every(t=>t in a&&i(r[t],a[t]))}function n(t){try{return w(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 s(t,e){try{return b(t)?t:t.toString().split(e)}catch(e){throw new Error(`'${t}' is not a valid state path.`)}}function o(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(b(t))return r(t);if("string"!=typeof t)return t;return r(s(t,e))}function r(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 a(t,i){const n={},s=e(t);for(let e=0;e<s.length;e++){const o=s[e];n[o]=i(t[o],o,t,e)}return n}function c(t,i,n){const s={};for(const o of e(t)){const e=t[o];n(e)&&(s[o]=i(e,o,t))}return s}const h=t=>e=>{let i=e;for(const e of t)i=i[e];return i};function u(t){if(!t)return[[]];if(w(t))return[[t]];return d(e(t).map(e=>{const i=t[e];return"string"==typeof i||i&&Object.keys(i).length?u(t[e]).map(t=>[e].concat(t)):[[e]]}))}function d(t){return[].concat(...t)}function l(t){return b(t)?t:[t]}function f(t){return void 0===t?[]:l(t)}function p(t,e,i){if(S(t))return t(e,i.data);const n={};for(const s of Object.keys(t)){const o=t[s];S(o)?n[s]=o(e,i.data):n[s]=o}return n}function g(t){return t instanceof Promise||!(null===t||!S(t)&&"object"!=typeof t||!S(t.then))}function v(t,e){const[i,n]=[[],[]];for(const s of t)e(s)?i.push(s):n.push(s);return[i,n]}function y(t,e){return a(t.states,(t,i)=>{if(!t)return;const n=(w(e)?void 0:e[i])||(t?t.current:void 0);return n?{current:n,states:y(t,n)}:void 0})}function m(t,i,n,s){return t?n.reduce((t,n)=>{const{assignment:o}=n,r={state:s,action:n,_event:i};let a={};if(S(o))a=o(t,i.data,r);else for(const n of e(o)){const e=o[n];a[n]=S(e)?e(t,i.data,r):e}return Object.assign({},t,a)},t):t}function b(t){return Array.isArray(t)}function S(t){return"function"==typeof t}function w(t){return"string"==typeof t}function x(t,e){if(t)return w(t)?{type:"xstate.guard",name:t,predicate:e?e[t]:void 0}:S(t)?{type:"xstate.guard",name:t.name,predicate:t}:t}const O=(()=>"function"==typeof Symbol&&Symbol.observable||"@@observable")();function _(t){try{return"__xstatenode"in t}catch(t){return!1}}const j=(()=>{let t=0;return()=>(t++,t.toString(16))})();function E(t,e){return w(t)||"number"==typeof t?Object.assign({type:t},e):t}function T(t,e){if(!w(t)&&"$$type"in t&&"scxml"===t.$$type)return t;const i=E(t);return Object.assign({name:i.type,data:i,$$type:"scxml",type:"external"},e)}function N(t,e){return l(e).map(e=>void 0===e||"string"==typeof e||_(e)?{target:e,event:t}:Object.assign(Object.assign({},e),{event:t}))}function $(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 k(t){return"string"==typeof t?{type:t}:t}function P(t,e,i){if("object"==typeof t)return t;const n=()=>{};return{next:t,error:e||n,complete:i||n}}function I(t,e){return`${t}:invocation[${e}]`}function C(t,n){let s;for(const o of e(t))i(o,n)&&(!s||n.length>s.length)&&(s=o);return t[s]}
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 A(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}var L,D;!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"}(L||(L={})),function(t){t.Parent="#_parent",t.Internal="#_internal"}(D||(D={}));const R=t=>"atomic"===t.type||"final"===t.type;function M(t){return e(t.states).map(e=>t.states[e])}function z(t){const e=[t];return R(t)?e:e.concat(u(M(t).map(z)))}function F(t,e){const i=U(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=U(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 M(t))"history"!==e.type&&(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 U(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 B(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(R(t))return t.key}const s={};return n.forEach(e=>{s[e.key]=t(e,i)}),s}(t,U(F([t],e)))}function J(t,e){return Array.isArray(t)?t.some(t=>t===e):t instanceof Set&&t.has(e)}function q(t,e){return"compound"===e.type?M(e).some(e=>"final"===e.type&&J(t,e)):"parallel"===e.type&&M(e).every(e=>q(t,e))}function X(t){return new Set(u(t.map(t=>t.tags)))}const H=L.Start,G=L.Stop,K=L.Raise,Q=L.Send,W=L.Cancel,Y=L.NullEvent,Z=L.Assign,tt=L.After,et=L.DoneState,it=L.Log,nt=L.Init,st=L.Invoke,ot=L.ErrorExecution,rt=L.ErrorPlatform,at=L.ErrorCustom,ct=L.Update,ht=L.Choose,dt=L.Pure;var ut=Object.freeze({__proto__:null,start:H,stop:G,raise:K,send:Q,cancel:W,nullEvent:Y,assign:Z,after:tt,doneState:et,log:it,init:nt,invoke:st,errorExecution:ot,errorPlatform:rt,error:at,update:ct,choose:ht,pure:dt});const lt=N({type:nt});function ft(t,e){return e&&e[t]||void 0}function pt(t,e){let i;if(w(t)||"number"==typeof t){const n=ft(t,e);i=S(n)?{type:t,exec:n}:n||{type:t,exec:void 0}}else if(S(t))i={type:t.name||t.toString(),exec:t};else{const n=ft(t.type,e);if(S(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 gt=(t,e)=>{if(!t)return[];return(b(t)?t:[t]).map(t=>pt(t,e))};function vt(t){const e=pt(t);return Object.assign(Object.assign({id:w(t)?t:e.id},e),{type:e.type})}function yt(t){return w(t)?{type:K,event:t}:bt(t,{to:D.Internal})}function mt(t){return{type:K,_event:N(t.event)}}function bt(t,e){return{to:e?e.to:void 0,type:Q,event:S(t)?t:T(t),delay:e?e.delay:void 0,id:e&&void 0!==e.id?e.id:S(t)?t.name:n(t)}}function St(t,e,i,n){const s={_event:i},o=N(S(t.event)?t.event(e,i.data,s):t.event);let r;if(w(t.delay)){const o=n&&n[t.delay];r=S(o)?o(e,i.data,s):o}else r=S(t.delay)?t.delay(e,i.data,s):t.delay;const a=S(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 wt(t,e){return bt(t,Object.assign(Object.assign({},e),{to:D.Parent}))}const Ot=(t,e)=>({context:t,event:e});const xt=(t,e,i)=>Object.assign(Object.assign({},t),{value:w(t.expr)?t.expr:t.expr(e,i.data,{_event:i})}),_t=t=>({type:W,sendId:t});function jt(t){const e=vt(t);return{type:L.Start,activity:e,exec:void 0}}function Et(t){const e=S(t)?t:vt(t);return{type:L.Stop,activity:e,exec:void 0}}function Tt(t,e,i){const n=S(t.activity)?t.activity(e,i.data):t.activity,s="string"==typeof n?{id:n}:n;return{type:L.Stop,activity:s}}function Nt(t,e){const i=e?"#"+e:"";return`${L.After}(${t})${i}`}function $t(t,e){const i=`${L.DoneState}.${t}`,n={type:i,data:e,toString:()=>i};return n}function kt(t,e){const i=`${L.DoneInvoke}.${t}`,n={type:i,data:e,toString:()=>i};return n}function Pt(t,e){const i=`${L.ErrorPlatform}.${t}`,n={type:i,data:e,toString:()=>i};return n}function It(t,e,i,n,s,o=!1){const[r,a]=o?[[],s]:v(s,t=>t.type===Z);let c=r.length?m(i,n,r,e):i;const h=o?[i]:void 0;return[u(a.map(i=>{var s;switch(i.type){case K:return mt(i);case Q:return St(i,c,n,t.options.delays);case it:return xt(i,c,n);case ht:{const r=null===(s=i.conds.find(i=>{const s=O(i.cond,t.options.guards);return!s||k(t,s,c,n,e)}))||void 0===s?void 0:s.actions;if(!r)return[];const[a,d]=It(t,e,c,n,gt(f(r),t.options.actions),o);return c=d,null==h||h.push(c),a}case dt:{const s=i.get(c,n.data);if(!s)return[];const[r,a]=It(t,e,c,n,gt(f(s),t.options.actions),o);return c=a,null==h||h.push(c),r}case G:return Tt(i,c,n);case Z:c=m(c,n,[i],e),null==h||h.push(c);break;default:let r=pt(i,t.options.actions);const{exec:a}=r;if(a&&h){const t=h.length-1;r=Object.assign(Object.assign({},r),{exec:(e,...i)=>{a(h[t],...i)}})}return r}}).filter(t=>!!t)),c]}var Ct=Object.freeze({__proto__:null,actionTypes:ut,initEvent:lt,getActionFunction:ft,toActionObject:pt,toActionObjects:gt,toActivityDefinition:vt,raise:yt,resolveRaise:mt,send:bt,resolveSend:St,sendParent:wt,sendTo:function(t,e,i){return bt(e,Object.assign(Object.assign({},i),{to:t}))},sendUpdate:function(){return wt(ct)},respond:function(t,e){return bt(t,Object.assign(Object.assign({},e),{to:(t,e,{_event:i})=>i.origin}))},log:function(t=Ot,e){return{type:it,label:e,expr:t}},resolveLog:xt,cancel:_t,start:jt,stop:Et,resolveStop:Tt,assign:t=>({type:Z,assignment:t}),isActionObject:function(t){return"object"==typeof t&&"type"in t},after:Nt,done:$t,doneInvoke:kt,error:Pt,pure:function(t){return{type:L.Pure,get:t}},forwardTo:function(t,e){return bt((t,e)=>e,Object.assign(Object.assign({},e),{to:t}))},escalate:function(t,e){return wt((e,i,n)=>({type:at,data:S(t)?t(e,i,n):t}),Object.assign(Object.assign({},e),{to:D.Parent}))},choose:function(t){return{type:L.Choose,conds:t}},resolveActions:It});function Vt(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 At{constructor(e){var i;this.actions=[],this.activities=t,this.meta={},this.events=[],this.value=e.value,this.context=e.context,this._event=e._event,this._sessionid=e._sessionid,this.event=this._event.data,this.historyValue=e.historyValue,this.history=e.history,this.actions=e.actions||[],this.activities=e.activities||t,this.meta=function(t=[]){return t.reduce((t,e)=>(void 0!==e.meta&&(t[e.id]=e.meta),t),{})}(e.configuration),this.events=e.events||[],this.matches=this.matches.bind(this),this.toStrings=this.toStrings.bind(this),this.configuration=e.configuration,this.transitions=e.transitions,this.children=e.children,this.done=!!e.done,this.tags=null!==(i=Array.isArray(e.tags)?new Set(e.tags):e.tags)&&void 0!==i?i:new Set,this.machine=e.machine,Object.defineProperty(this,"nextEvents",{get:()=>{return t=this.configuration,[...new Set(u([...t.map(t=>t.ownEvents)]))];var t}})}static from(t,e){if(t instanceof At)return t.context!==e?new At({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 At({value:t,context:e,_event:lt,_sessionid:null,historyValue:void 0,history:void 0,actions:[],activities:void 0,meta:void 0,events:[],configuration:[],transitions:[],children:{}})}static create(t){return new At(t)}static inert(t,e){if(t instanceof At){if(!t.actions.length)return t;const i=lt;return new At({value:t.value,context:e,_event:i,_sessionid:null,historyValue:t.historyValue,history:t.history,activities:t.activities,configuration:t.configuration,transitions:[],children:{}})}return At.from(t,e)}toStrings(t=this.value,i="."){if(w(t))return[t];const n=e(t);return n.concat(...n.map(e=>this.toStrings(t[e],i).map(t=>e+i+t)))}toJSON(){const{configuration:t,transitions:e,tags:i,machine:n}=this,s=A(this,["configuration","transitions","tags","machine"]);return Object.assign(Object.assign({},s),{tags:Array.from(i)})}matches(t){return i(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 Lt=[],Dt=(t,e)=>{Lt.push(t);const i=e(t);return Lt.pop(),i};function Rt(t){return Object.assign({id:t,send:()=>{},subscribe:()=>({unsubscribe:()=>{}}),getSnapshot:()=>{},toJSON:()=>({id:t})},_)}function Mt(t,e,i){const n=Rt(e);if(n.deferred=!0,j(t)){const e=n.state=Dt(void 0,()=>(i?t.withContext(i):t).initialState);n.getSnapshot=()=>e}return n}function zt(t){if("string"==typeof t){const e={type:t,toString:()=>t};return e}return t}function Ft(t){return Object.assign(Object.assign({type:st},t),{toJSON(){const e=A(t,["onDone","onError"]);return Object.assign(Object.assign({},e),{type:st,src:zt(t.src)})}})}const Ut={},Bt=t=>"#"===t[0];class Jt{constructor(t,i,n=("context"in t?t.context:void 0),s){var o;this.config=t,this._context=n,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:{}},i),this.parent=null==s?void 0:s.parent,this.key=this.config.key||(null==s?void 0:s.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&&e(this.config.states).length?"compound":this.config.history?"history":"atomic"),this.schema=this.parent?this.machine.schema:null!==(o=this.config.schema)&&void 0!==o?o:{},this.description=this.config.description,this.initial=this.config.initial,this.states=this.config.states?a(this.config.states,(t,e)=>{const i=new Jt(t,{},void 0,{parent:this,key:e});return Object.assign(this.idMap,Object.assign({[i.id]:i},i.idMap)),i}):Ut;let r=0;!function t(e){e.order=r++;for(const i of M(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=f(this.config.entry||this.config.onEntry).map(t=>pt(t)),this.onExit=f(this.config.exit||this.config.onExit).map(t=>pt(t)),this.meta=this.config.meta,this.doneData="final"===this.type?this.config.data:void 0,this.invoke=f(this.config.invoke).map((t,e)=>{if(j(t)){const i=C(this.id,e);return this.machine.options.services=Object.assign({[i]:t},this.machine.options.services),Ft({src:i,id:i})}if(w(t.src)){const i=t.id||C(this.id,e);return Ft(Object.assign(Object.assign({},t),{id:i,src:t.src}))}if(j(t.src)||S(t.src)){const i=t.id||C(this.id,e);return this.machine.options.services=Object.assign({[i]:t.src},this.machine.options.services),Ft(Object.assign(Object.assign({id:i},t),{src:i}))}{const i=t.src;return Ft(Object.assign(Object.assign({id:C(this.id,e)},t),{src:i}))}}),this.activities=f(this.config.activities).concat(this.invoke).map(t=>vt(t)),this.transition=this.transition.bind(this),this.tags=f(this.config.tags)}_init(){this.__cache.transitions||z(this).forEach(t=>t.on)}withConfig(t,e){const{actions:i,activities:n,guards:s,services:o,delays:r}=this.options;return new Jt(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 Jt(this.config,this.options,t)}get context(){return S(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:a(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 i=(t,e)=>{const i=Nt(S(t)?`${this.id}:delay[${e}]`:t,this.id);return this.onEntry.push(bt(i,{delay:t})),this.onExit.push(_t(i)),i};return(b(t)?t.map((t,e)=>{const n=i(t.delay,e);return Object.assign(Object.assign({},t),{event:n})}):u(e(t).map((e,n)=>{const s=t[e],o=w(s)?{target:s}:s,r=isNaN(+e)?e:+e,a=i(r,n);return f(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 i=t instanceof At?t.value:o(t,this.delimiter);if(w(i)){const t=this.getStateNode(i).initial;return void 0!==t?this.getStateNodes({[i]:t}):[this,this.states[i]]}const n=e(i),s=[this];return s.push(...u(n.map(t=>this.getStateNode(t).getStateNodes(i[t])))),s}handles(t){const e=n(t);return this.events.includes(e)}resolveState(t){const e=t instanceof At?t:At.create(t),i=Array.from(F([],this.getStateNodes(e.value)));return new At(Object.assign(Object.assign({},e),{value:this.resolve(e.value),configuration:i,done:q(i,this),tags:X(i)}))}transitionLeafNode(t,e,i){const n=this.getStateNode(t).next(e,i);return n&&n.transitions.length?n:this.next(e,i)}transitionCompoundNode(t,i,n){const s=e(t),o=this.getStateNode(s[0])._transition(t[s[0]],i,n);return o&&o.transitions.length?o:this.next(i,n)}transitionParallelNode(t,i,n){const s={};for(const o of e(t)){const e=t[o];if(!e)continue;const r=this.getStateNode(o)._transition(e,i,n);r&&(s[o]=r)}const o=e(s).map(t=>s[t]),r=u(o.map(t=>t.transitions));if(!o.some(t=>t.transitions.length>0))return this.next(i,n);const a=u(o.map(t=>t.entrySet)),c=u(e(s).map(t=>s[t].configuration));return{transitions:r,entrySet:a,exitSet:u(o.map(t=>t.exitSet)),configuration:c,source:i,actions:u(e(s).map(t=>s[t].actions))}}_transition(t,i,n){return w(t)?this.transitionLeafNode(t,i,n):1===e(t).length?this.transitionCompoundNode(t,i,n):this.transitionParallelNode(t,i,n)}getTransitionData(t,e){return this._transition(t.value,t,N(e))}next(t,e){const n=e.name,s=[];let r,a=[];for(const c of this.getCandidates(n)){const{cond:d,in:u}=c,l=t.context,f=!u||(w(u)&&Bt(u)?t.matches(o(this.getStateNodeById(u).path,this.delimiter)):i(o(u,this.delimiter),h(this.path.slice(0,-2))(t.value)));let p=!1;try{p=!d||k(this.machine,d,l,e,t)}catch(t){throw new Error(`Unable to evaluate guard '${d.name||d.type}' in transition for event '${n}' in state node '${this.id}':\n${t.message}`)}if(p&&f){void 0!==c.target&&(a=c.target),s.push(...c.actions),r=c;break}}if(!r)return;if(!a.length)return{transitions:[r],entrySet:[],exitSet:[],configuration:t.value?[this]:[],source:t,actions:s};const c=u(a.map(e=>this.getRelativeStateNodes(e,t.historyValue))),d=!!r.internal;return{transitions:[r],entrySet:d?[]:u(c.map(t=>this.nodesFromChild(t))),exitSet:d?[]:[this],configuration:c,source:t,actions:s}}nodesFromChild(t){if(t.escapes(this))return[];const e=[];let i=t;for(;i&&i!==this;)e.push(i),i=i.parent;return e.push(this),e}escapes(t){if(this===t)return!1;let e=this.parent;for(;e;){if(e===t)return!1;e=e.parent}return!0}getActions(t,e,i,n){const s=F([],n?this.getStateNodes(n.value):[this]),o=t.configuration.length?F(s,t.configuration):s;for(const e of o)J(s,e)||t.entrySet.push(e);for(const e of s)J(o,e)&&!J(t.exitSet,e.parent)||t.exitSet.push(e);const r=u(t.entrySet.map(n=>{const s=[];if("final"!==n.type)return s;const o=n.parent;if(!o.parent)return s;s.push($t(n.id,n.doneData),$t(o.id,n.doneData?p(n.doneData,e,i):void 0));const r=o.parent;return"parallel"===r.type&&M(r).every(e=>q(t.configuration,e))&&s.push($t(r.id)),s}));t.exitSet.sort((t,e)=>e.order-t.order),t.entrySet.sort((t,e)=>t.order-e.order);const a=new Set(t.entrySet),c=new Set(t.exitSet),[h,d]=[u(Array.from(a).map(t=>[...t.activities.map(t=>jt(t)),...t.onEntry])).concat(r.map(yt)),u(Array.from(c).map(t=>[...t.onExit,...t.activities.map(t=>Et(t))]))];return gt(d.concat(t.actions).concat(h),this.machine.options.actions)}transition(t=this.initialState,e,i){const n=N(e);let s;if(t instanceof At)s=void 0===i?t:this.resolveState(At.from(t,i));else{const e=w(t)?this.resolve(r(this.getResolvedPath(t))):this.resolve(t),n=null!=i?i:this.machine.context;s=this.resolveState(At.from(e,n))}if(this.strict&&!this.events.includes(n.name)&&(o=n.name,!/^(done|error)\./.test(o)))throw new Error(`Machine '${this.id}' does not accept event '${n.name}'`);var o;const a=this._transition(s.value,s,n)||{transitions:[],configuration:[],entrySet:[],exitSet:[],source:s,actions:[]},c=F([],this.getStateNodes(s.value)),h=a.configuration.length?F(c,a.configuration):c;return a.configuration=[...h],this.resolveTransition(a,s,s.context,n)}resolveRaisedTransition(t,e,i){const n=t.actions;return(t=this.transition(t,e))._event=i,t.event=i.data,t.actions.unshift(...n),t}resolveTransition(t,i,n,s=lt){const{configuration:o}=t,r=!i||t.transitions.length>0,a=r?B(this.machine,o):void 0,c=i?i.historyValue?i.historyValue:t.source?this.machine.historyValue(i.value):void 0:void 0,h=this.getActions(t,n,s,i),d=i?Object.assign({},i.activities):{};for(const t of h)t.type===H?d[t.activity.id||t.activity.type]=t:t.type===G&&(d[t.activity.id||t.activity.type]=!1);const[u,l]=It(this,i,n,s,h,this.machine.config.preserveActionOrder),[f,g]=v(u,t=>t.type===K||t.type===Q&&t.to===D.Internal),m=u.filter(t=>{var e;return t.type===H&&(null===(e=t.activity)||void 0===e?void 0:e.type)===st}).reduce((t,e)=>(t[e.activity.id]=function(t,e,i,n){var s;const o=P(t.src),r=null===(s=null==e?void 0:e.options.services)||void 0===s?void 0:s[o.type],a=t.data?p(t.data,i,n):void 0,c=r?Mt(r,t.id,a):Rt(t.id);return c.meta=t,c}(e.activity,this.machine,l,s),t),i?Object.assign({},i.children):{}),b=r?t.configuration:i?i.configuration:[],S=q(b,this),O=new At({value:a||i.value,context:l,_event:s,_sessionid:i?i._sessionid:null,historyValue:a?c?(x=c,_=a,{current:_,states:y(x,_)}):void 0:i?i.historyValue:void 0,history:!a||t.source?i:void 0,actions:a?g:[],activities:a?d:i?i.activities:{},events:[],configuration:b,transitions:t.transitions,children:m,done:S,tags:null==i?void 0:i.tags,machine:this});var x,_;const j=n!==l;O.changed=s.name===ct||j;const{history:E}=O;E&&delete E.history;const T=!S&&(this._transient||o.some(t=>t._transient));if(!(r||T&&""!==s.name))return O;let N=O;if(!S)for(T&&(N=this.resolveRaisedTransition(N,{type:Y},s));f.length;){const t=f.shift();N=this.resolveRaisedTransition(N,t._event,s)}const $=N.changed||(E?!!N.actions.length||j||typeof E.value!=typeof N.value||!function t(i,n){if(i===n)return!0;if(void 0===i||void 0===n)return!1;if(w(i)||w(n))return i===n;const s=e(i),o=e(n);return s.length===o.length&&s.every(e=>t(i[e],n[e]))}(N.value,E.value):void 0);return N.changed=$,N.history=E,N.tags=X(N.configuration),N}getStateNode(t){if(Bt(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=Bt(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&&Bt(t))try{return this.getStateNodeById(t.slice(1))}catch(t){}const e=s(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||Ut;switch(this.type){case"parallel":return a(this.initialStateValue,(e,i)=>e?this.getStateNode(i).resolve(t[i]||e):Ut);case"compound":if(w(t)){const e=this.getStateNode(t);return"parallel"===e.type||"compound"===e.type?{[t]:e.initialStateValue}:t}return e(t).length?a(t,(t,e)=>t?this.getStateNode(e).resolve(t):Ut):this.initialStateValue||{};default:return t||Ut}}getResolvedPath(t){if(Bt(t)){const e=this.machine.idMap[t.slice("#".length)];if(!e)throw new Error(`Unable to find state node '${t}'`);return e.path}return s(t,this.delimiter)}get initialStateValue(){if(this.__cache.initialStateValue)return this.__cache.initialStateValue;let t;if("parallel"===this.type)t=c(this.states,t=>t.initialStateValue||Ut,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=R(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=w(e.target)&&Bt(e.target)?r(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(R(this))return[this];if("compound"===this.type&&!this.initial)return[this];return u(d(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(e(this.states).length)return{current:t||this.initialStateValue,states:c(this.states,(e,i)=>{if(!t)return e.historyValue();const n=w(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?u(d(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 w(i)?[e.getStateNode(i)]:u(d(i).map(t=>"deep"===this.history?e.getFromRelativePath(t):[e.states[t[0]]]))}get stateIds(){const t=u(e(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,i=new Set(this.ownEvents);if(t)for(const n of e(t)){const e=t[n];if(e.states)for(const t of e.events)i.add(""+t)}return this.__cache.events=Array.from(i)}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(!w(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 f(t)}(t.target),i="internal"in t?t.internal:!e||e.some(t=>w(t)&&t[0]===this.delimiter),{guards:n}=this.machine.options,s=this.resolveTarget(e),o=Object.assign(Object.assign({},t),{actions:gt(f(t.actions)),cond:O(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 i=this.config.on,n="*",s=i[n],o=void 0===s?[]:s,r=A(i,[n+""]);t=u(e(r).map(t=>$(t,r[t])).concat($("*",o)))}else t=[];const i=this.config.always?$("",this.config.always):[],n=this.config.onDone?$(String($t(this.id)),this.config.onDone):[],s=u(this.invoke.map(t=>{const e=[];return t.onDone&&e.push(...$(String(kt(t.id)),t.onDone)),t.onError&&e.push(...$(String(Pt(t.id)),t.onError)),e})),o=this.after,r=u([...n,...s,...t,...i].map(t=>f(t).map(t=>this.formatTransition(t))));for(const t of o)r.push(t);return r}}function qt(t,e,i=t.context){return new Jt(t,e,i)}function Xt(t,e){return new Jt(t,e)}const Ht={deferEvents:!1};class Gt{constructor(t){this.processingEvent=!1,this.queue=[],this.initialized=!1,this.options=Object.assign(Object.assign({},Ht),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 Kt=new Map;let Qt=0;const Wt={bookId:()=>"x:"+Qt++,register:(t,e)=>(Kt.set(t,e),t),get:t=>Kt.get(t),free(t){Kt.delete(t)}};function Yt(){return"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:void 0}function Zt(t){if(!Yt())return;const e=function(){const t=Yt();if(t&&"__xstate__"in t)return t.__xstate__}();e&&e.register(t)}function te(t,e={}){let i=t.initialState;const n=new Set,s=[];let o=!1;const r=(a={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,c),n.forEach(t=>t.next(i))}o=!1}})()},getSnapshot:()=>i,subscribe:(t,e,s)=>{const o=I(t,e,s);return n.add(o),o.next(i),{unsubscribe:()=>{n.delete(o)}}}},Object.assign(Object.assign({subscribe:()=>({unsubscribe:()=>{}}),id:"anonymous",getSnapshot:()=>{}},_),a));var a;const c={parent:e.parent,self:r,id:e.id||"anonymous",observers:n};return i=t.start?t.start(c):i,r}const ee={sync:!1,autoForward:!1};var ie;!function(t){t[t.NotStarted=0]="NotStarted",t[t.Running=1]="Running",t[t.Stopped=2]="Stopped"}(ie||(ie={}));class ne{constructor(t,e=ne.defaultOptions){this.machine=t,this.scheduler=new Gt,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=ie.NotStarted,this.children=new Map,this.forwardTo=new Set,this.init=this.start,this.send=(t,e)=>{if(b(t))return this.batch(t),this.state;const i=N(T(t,e));if(this.status===ie.Stopped)return this.state;if(this.status!==ie.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,e)=>{const i=this.parent&&(e===D.Parent||this.parent.id===e),n=i?this.parent:w(e)?this.children.get(e)||Wt.get(e):(s=e)&&"function"==typeof s.send?e:void 0;var s;if(n)"machine"in n?n.send(Object.assign(Object.assign({},t),{name:t.name===at?""+Pt(this.id):t.name,origin:this.sessionId})):n.send(t.data);else if(!i)throw new Error(`Unable to send event to child '${e}' from service '${this.id}'.`)};const i=Object.assign(Object.assign({},ne.defaultOptions),e),{clock:n,logger:s,parent:o,id:r}=i,a=void 0!==r?r:t.id;this.id=a,this.logger=s,this.clock=n,this.parent=o,this.options=i,this.scheduler=new Gt({deferEvents:this.options.deferEvents}),this.sessionId=Wt.bookId()}get initialState(){return this._initialState?this._initialState:Dt(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.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);const i=q(t.configuration||[],this.machine);if(this.state.configuration&&i){const i=t.configuration.find(t=>"final"===t.type&&t.parent===this.machine),n=i&&i.doneData?p(i.doneData,t.context,e):void 0;for(const t of this.doneListeners)t(kt(this.id,n));this.stop()}}onTransition(t){return this.listeners.add(t),this.status===ie.Running&&t(this.state,this.state.event),this}subscribe(t,e,i){if(!t)return{unsubscribe:()=>{}};let n,s=i;return"function"==typeof t?n=t:(n=t.next.bind(t),s=t.complete.bind(t)),this.listeners.add(n),this.status===ie.Running&&n(this.state),s&&this.onDone(s),{unsubscribe:()=>{n&&this.listeners.delete(n),s&&this.doneListeners.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===ie.Running)return this;Wt.register(this.sessionId,this),this.initialized=!0,this.status=ie.Running;const e=void 0===t?this.initialState:Dt(this,()=>{return"object"==typeof(e=t)&&null!==e&&"value"in e&&"_event"in e?this.machine.resolveState(t):this.machine.resolveState(At.from(t,this.machine.context));var e});return this.options.devTools&&this.attachDev(),this.scheduler.initialize(()=>{this.update(e,lt)}),this}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.state.configuration].sort((t,e)=>e.order-t.order).forEach(t=>{for(const e of t.definition.exit)this.exec(e,this.state)}),this.children.forEach(t=>{S(t.stop)&&t.stop()});for(const t of e(this.delayedEventsMap))this.clock.clearTimeout(this.delayedEventsMap[t]);return this.scheduler.clear(),this.initialized=!1,this.status=ie.Stopped,Wt.free(this.sessionId),this}batch(t){if(this.status===ie.NotStarted&&this.options.deferEvents);else if(this.status!==ie.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=N(s);this.forward(t),e=Dt(this,()=>this.machine.transition(e,t)),n.push(...e.actions.map(t=>Vt(t,e))),i=i||!!e.changed}e.changed=i,e.actions=n,this.update(e,N(t[t.length-1]))})}sender(t){return this.send.bind(this,t)}nextState(t){const e=N(t);if(0===e.name.indexOf(rt)&&!this.state.nextEvents.some(t=>0===t.indexOf(rt)))throw e.data.data;return Dt(this,()=>this.machine.transition(this.state,e))}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){const{context:n,_event:s}=e,o=t.exec||ft(t.type,i),r=S(o)?o:o?o.exec:t.exec;if(r)try{return r(n,s.data,{action:t,state:this.state,_event:s})}catch(t){throw this.parent&&this.parent.send({type:"xstate.error",data:t}),t}switch(t.type){case Q:const e=t;if("number"==typeof e.delay)return void this.defer(e);e.to?this.sendTo(e._event,e.to):this.send(e._event);break;case W:this.cancel(t.sendId);break;case H:{if(this.status!==ie.Running)return;const e=t.activity;if(!this.state.activities[e.id||e.type])break;if(e.type===L.Invoke){const t=P(e.src),i=this.machine.options.services?this.machine.options.services[t.type]:void 0,{id:o,data:r}=e,a="autoForward"in e?e.autoForward:!!e.forward;if(!i)return;const c=r?p(r,n,s):void 0;if("string"==typeof i)return;let h,d=S(i)?i(n,s.data,{data:c,src:t,meta:e.meta}):i;if(!d)return;j(d)&&(d=c?d.withContext(c):d,h={autoForward:a}),this.spawn(d,o,h)}else this.spawnActivity(e);break}case G:this.stopChild(t.activity.id);break;case it:const{label:i,value:o}=t;i?this.logger(i,o):this.logger(o)}}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),S(e.stop)&&e.stop())}spawn(t,e,i){if(g(t))return this.spawnPromise(Promise.resolve(t),e);if(S(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&&S(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 ne(t,Object.assign(Object.assign({},this.options),{parent:this,id:e.id||t.id})),n=Object.assign(Object.assign({},ee),e);n.sync&&i.onTransition(t=>{this.send(ct,{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(N(t,{origin:i.id}))}).start(),s}spawnBehavior(t,e){const i=te(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(N(kt(e,t),{origin:e})))},t=>{if(!n){this.removeChild(e);const i=Pt(e,t);try{this.send(N(i,{origin:e}))}catch(t){this.devTools&&this.devTools.send(i,this.state),this.machine.strict&&this.stop()}}});const s=Object.assign({id:e,send:()=>{},subscribe:(e,i,n)=>{const s=I(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},_);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(N(t,{origin:e}))};let a;try{a=t(r,t=>{n.add(t)})}catch(t){this.send(Pt(e,t))}if(g(a))return this.spawnPromise(a,e);const c=Object.assign({id:e,send:t=>n.forEach(e=>e(t)),subscribe:t=>(s.add(t),{unsubscribe:()=>{s.delete(t)}}),stop:()=>{i=!0,S(a)&&a()},toJSON:()=>({id:e}),getSnapshot:()=>o},_);return this.children.set(e,c),c}spawnObservable(t,e){let i;const n=t.subscribe(t=>{i=t,this.send(N(t,{origin:e}))},t=>{this.removeChild(e),this.send(N(Pt(e,t),{origin:e}))},()=>{this.removeChild(e),this.send(N(kt(e),{origin:e}))}),s=Object.assign({id:e,send:()=>{},subscribe:(e,i,n)=>t.subscribe(e,i,n),stop:()=>n.unsubscribe(),getSnapshot:()=>i,toJSON:()=>({id:e})},_);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,Object.assign({id:t,send:()=>{},subscribe:()=>({unsubscribe:()=>{}}),stop:e||void 0,getSnapshot:()=>{},toJSON:()=>({id:t})},_))}attachDev(){const t=Yt();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)}Zt(this)}}toJSON(){return{id:this.id}}[x](){return this}getSnapshot(){return this.status===ie.NotStarted?this.initialState:this._state}}ne.defaultOptions=(t=>({execute:!0,deferEvents:!0,clock:{setTimeout:(t,e)=>setTimeout(t,e),clearTimeout:t=>clearTimeout(t)},logger:t.console.log.bind(console),devTools:!1}))("undefined"!=typeof self?self:global),ne.interpret=oe;function se(t,e){const i=(t=>w(t)?Object.assign(Object.assign({},ee),{name:t}):Object.assign(Object.assign(Object.assign({},ee),{name:E()}),t))(e);return(e=>e?e.spawn(t,i.name,i):Mt(t,i.name))(Lt[Lt.length-1])}function oe(t,e){return new ne(t,e)}function re(t,e,i){const n=At.from(t,t instanceof At?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}=Ct;export{L as ActionTypes,ne as Interpreter,ie as InterpreterStatus,qt as Machine,D as SpecialTargets,At as State,Jt as StateNode,Ct as actions,he as assign,Xt as createMachine,ae as createSchema,pe as doneInvoke,fe as forwardTo,oe as interpret,V as mapState,re as matchState,i as matchesState,de as send,ue as sendParent,le as sendUpdate,se as spawn,ce as t};
15
+ ***************************************************************************** */function V(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}var A,L;!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"}(A||(A={})),function(t){t.Parent="#_parent",t.Internal="#_internal"}(L||(L={}));const D=t=>"atomic"===t.type||"final"===t.type;function R(t){return e(t.states).map(e=>t.states[e])}function M(t){const e=[t];return D(t)?e:e.concat(d(R(t).map(M)))}function z(t,e){const i=F(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=F(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 R(t))"history"!==e.type&&(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 F(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 U(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(D(t))return t.key}const s={};return n.forEach(e=>{s[e.key]=t(e,i)}),s}(t,F(z([t],e)))}function B(t,e){return Array.isArray(t)?t.some(t=>t===e):t instanceof Set&&t.has(e)}function J(t,e){return"compound"===e.type?R(e).some(e=>"final"===e.type&&B(t,e)):"parallel"===e.type&&R(e).every(e=>J(t,e))}function q(t){return new Set(d(t.map(t=>t.tags)))}const X=A.Start,H=A.Stop,G=A.Raise,K=A.Send,Q=A.Cancel,W=A.NullEvent,Y=A.Assign,Z=A.After,tt=A.DoneState,et=A.Log,it=A.Init,nt=A.Invoke,st=A.ErrorExecution,ot=A.ErrorPlatform,rt=A.ErrorCustom,at=A.Update,ct=A.Choose,ht=A.Pure;var ut=Object.freeze({__proto__:null,start:X,stop:H,raise:G,send:K,cancel:Q,nullEvent:W,assign:Y,after:Z,doneState:tt,log:et,init:it,invoke:nt,errorExecution:st,errorPlatform:ot,error:rt,update:at,choose:ct,pure:ht});const dt=T({type:it});function lt(t,e){return e&&e[t]||void 0}function ft(t,e){let i;if(w(t)||"number"==typeof t){const n=lt(t,e);i=S(n)?{type:t,exec:n}:n||{type:t,exec:void 0}}else if(S(t))i={type:t.name||t.toString(),exec:t};else{const n=lt(t.type,e);if(S(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 pt=(t,e)=>{if(!t)return[];return(b(t)?t:[t]).map(t=>ft(t,e))};function gt(t){const e=ft(t);return Object.assign(Object.assign({id:w(t)?t:e.id},e),{type:e.type})}function vt(t){return w(t)?{type:G,event:t}:mt(t,{to:L.Internal})}function yt(t){return{type:G,_event:T(t.event)}}function mt(t,e){return{to:e?e.to:void 0,type:K,event:S(t)?t:E(t),delay:e?e.delay:void 0,id:e&&void 0!==e.id?e.id:S(t)?t.name:n(t)}}function bt(t,e,i,n){const s={_event:i},o=T(S(t.event)?t.event(e,i.data,s):t.event);let r;if(w(t.delay)){const o=n&&n[t.delay];r=S(o)?o(e,i.data,s):o}else r=S(t.delay)?t.delay(e,i.data,s):t.delay;const a=S(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 St(t,e){return mt(t,Object.assign(Object.assign({},e),{to:L.Parent}))}const wt=(t,e)=>({context:t,event:e});const xt=(t,e,i)=>Object.assign(Object.assign({},t),{value:w(t.expr)?t.expr:t.expr(e,i.data,{_event:i})}),Ot=t=>({type:Q,sendId:t});function _t(t){const e=gt(t);return{type:A.Start,activity:e,exec:void 0}}function jt(t){const e=S(t)?t:gt(t);return{type:A.Stop,activity:e,exec:void 0}}function Et(t,e,i){const n=S(t.activity)?t.activity(e,i.data):t.activity,s="string"==typeof n?{id:n}:n;return{type:A.Stop,activity:s}}function Tt(t,e){const i=e?"#"+e:"";return`${A.After}(${t})${i}`}function Nt(t,e){const i=`${A.DoneState}.${t}`,n={type:i,data:e,toString:()=>i};return n}function $t(t,e){const i=`${A.DoneInvoke}.${t}`,n={type:i,data:e,toString:()=>i};return n}function kt(t,e){const i=`${A.ErrorPlatform}.${t}`,n={type:i,data:e,toString:()=>i};return n}function Pt(t,e,i,n,s,o=!1){const[r,a]=o?[[],s]:v(s,t=>t.type===Y);let c=r.length?m(i,n,r,e):i;const h=o?[i]:void 0;return[d(a.map(i=>{var s;switch(i.type){case G:return yt(i);case K:return bt(i,c,n,t.options.delays);case et:return xt(i,c,n);case ct:{const r=null===(s=i.conds.find(i=>{const s=x(i.cond,t.options.guards);return!s||$(t,s,c,n,e)}))||void 0===s?void 0:s.actions;if(!r)return[];const[a,u]=Pt(t,e,c,n,pt(f(r),t.options.actions),o);return c=u,null==h||h.push(c),a}case ht:{const s=i.get(c,n.data);if(!s)return[];const[r,a]=Pt(t,e,c,n,pt(f(s),t.options.actions),o);return c=a,null==h||h.push(c),r}case H:return Et(i,c,n);case Y:c=m(c,n,[i],e),null==h||h.push(c);break;default:let r=ft(i,t.options.actions);const{exec:a}=r;if(a&&h){const t=h.length-1;r=Object.assign(Object.assign({},r),{exec:(e,...i)=>{a(h[t],...i)}})}return r}}).filter(t=>!!t)),c]}var It=Object.freeze({__proto__:null,actionTypes:ut,initEvent:dt,getActionFunction:lt,toActionObject:ft,toActionObjects:pt,toActivityDefinition:gt,raise:vt,resolveRaise:yt,send:mt,resolveSend:bt,sendParent:St,sendTo:function(t,e,i){return mt(e,Object.assign(Object.assign({},i),{to:t}))},sendUpdate:function(){return St(at)},respond:function(t,e){return mt(t,Object.assign(Object.assign({},e),{to:(t,e,{_event:i})=>i.origin}))},log:function(t=wt,e){return{type:et,label:e,expr:t}},resolveLog:xt,cancel:Ot,start:_t,stop:jt,resolveStop:Et,assign:t=>({type:Y,assignment:t}),isActionObject:function(t){return"object"==typeof t&&"type"in t},after:Tt,done:Nt,doneInvoke:$t,error:kt,pure:function(t){return{type:A.Pure,get:t}},forwardTo:function(t,e){return mt((t,e)=>e,Object.assign(Object.assign({},e),{to:t}))},escalate:function(t,e){return St((e,i,n)=>({type:rt,data:S(t)?t(e,i,n):t}),Object.assign(Object.assign({},e),{to:L.Parent}))},choose:function(t){return{type:A.Choose,conds:t}},resolveActions:Pt});function Ct(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 Vt{constructor(e){var i;this.actions=[],this.activities=t,this.meta={},this.events=[],this.value=e.value,this.context=e.context,this._event=e._event,this._sessionid=e._sessionid,this.event=this._event.data,this.historyValue=e.historyValue,this.history=e.history,this.actions=e.actions||[],this.activities=e.activities||t,this.meta=function(t=[]){return t.reduce((t,e)=>(void 0!==e.meta&&(t[e.id]=e.meta),t),{})}(e.configuration),this.events=e.events||[],this.matches=this.matches.bind(this),this.toStrings=this.toStrings.bind(this),this.configuration=e.configuration,this.transitions=e.transitions,this.children=e.children,this.done=!!e.done,this.tags=null!==(i=Array.isArray(e.tags)?new Set(e.tags):e.tags)&&void 0!==i?i:new Set,this.machine=e.machine,Object.defineProperty(this,"nextEvents",{get:()=>{return t=this.configuration,[...new Set(d([...t.map(t=>t.ownEvents)]))];var t}})}static from(t,e){if(t instanceof Vt)return t.context!==e?new Vt({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 Vt({value:t,context:e,_event:dt,_sessionid:null,historyValue:void 0,history:void 0,actions:[],activities:void 0,meta:void 0,events:[],configuration:[],transitions:[],children:{}})}static create(t){return new Vt(t)}static inert(t,e){if(t instanceof Vt){if(!t.actions.length)return t;const i=dt;return new Vt({value:t.value,context:e,_event:i,_sessionid:null,historyValue:t.historyValue,history:t.history,activities:t.activities,configuration:t.configuration,transitions:[],children:{}})}return Vt.from(t,e)}toStrings(t=this.value,i="."){if(w(t))return[t];const n=e(t);return n.concat(...n.map(e=>this.toStrings(t[e],i).map(t=>e+i+t)))}toJSON(){const{configuration:t,transitions:e,tags:i,machine:n}=this,s=V(this,["configuration","transitions","tags","machine"]);return Object.assign(Object.assign({},s),{tags:Array.from(i)})}matches(t){return i(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 At=[],Lt=(t,e)=>{At.push(t);const i=e(t);return At.pop(),i};function Dt(t){return{id:t,send:()=>{},subscribe:()=>({unsubscribe:()=>{}}),getSnapshot:()=>{},toJSON:()=>({id:t}),[O]:function(){return this}}}function Rt(t,e,i){const n=Dt(e);if(n.deferred=!0,_(t)){const e=n.state=Lt(void 0,()=>(i?t.withContext(i):t).initialState);n.getSnapshot=()=>e}return n}function Mt(t){return Object.assign({subscribe:()=>({unsubscribe:()=>{}}),id:"anonymous",getSnapshot:()=>{},[O]:function(){return this}},t)}function zt(t){if("string"==typeof t){const e={type:t,toString:()=>t};return e}return t}function Ft(t){return Object.assign(Object.assign({type:nt},t),{toJSON(){const e=V(t,["onDone","onError"]);return Object.assign(Object.assign({},e),{type:nt,src:zt(t.src)})}})}const Ut={},Bt=t=>"#"===t[0];class Jt{constructor(t,i,n=("context"in t?t.context:void 0),s){var o;this.config=t,this._context=n,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:{}},i),this.parent=null==s?void 0:s.parent,this.key=this.config.key||(null==s?void 0:s.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&&e(this.config.states).length?"compound":this.config.history?"history":"atomic"),this.schema=this.parent?this.machine.schema:null!==(o=this.config.schema)&&void 0!==o?o:{},this.description=this.config.description,this.initial=this.config.initial,this.states=this.config.states?a(this.config.states,(t,e)=>{const i=new Jt(t,{},void 0,{parent:this,key:e});return Object.assign(this.idMap,Object.assign({[i.id]:i},i.idMap)),i}):Ut;let r=0;!function t(e){e.order=r++;for(const i of R(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=f(this.config.entry||this.config.onEntry).map(t=>ft(t)),this.onExit=f(this.config.exit||this.config.onExit).map(t=>ft(t)),this.meta=this.config.meta,this.doneData="final"===this.type?this.config.data:void 0,this.invoke=f(this.config.invoke).map((t,e)=>{if(_(t)){const i=I(this.id,e);return this.machine.options.services=Object.assign({[i]:t},this.machine.options.services),Ft({src:i,id:i})}if(w(t.src)){const i=t.id||I(this.id,e);return Ft(Object.assign(Object.assign({},t),{id:i,src:t.src}))}if(_(t.src)||S(t.src)){const i=t.id||I(this.id,e);return this.machine.options.services=Object.assign({[i]:t.src},this.machine.options.services),Ft(Object.assign(Object.assign({id:i},t),{src:i}))}{const i=t.src;return Ft(Object.assign(Object.assign({id:I(this.id,e)},t),{src:i}))}}),this.activities=f(this.config.activities).concat(this.invoke).map(t=>gt(t)),this.transition=this.transition.bind(this),this.tags=f(this.config.tags)}_init(){this.__cache.transitions||M(this).forEach(t=>t.on)}withConfig(t,e){const{actions:i,activities:n,guards:s,services:o,delays:r}=this.options;return new Jt(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 Jt(this.config,this.options,t)}get context(){return S(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:a(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 i=(t,e)=>{const i=Tt(S(t)?`${this.id}:delay[${e}]`:t,this.id);return this.onEntry.push(mt(i,{delay:t})),this.onExit.push(Ot(i)),i};return(b(t)?t.map((t,e)=>{const n=i(t.delay,e);return Object.assign(Object.assign({},t),{event:n})}):d(e(t).map((e,n)=>{const s=t[e],o=w(s)?{target:s}:s,r=isNaN(+e)?e:+e,a=i(r,n);return f(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 i=t instanceof Vt?t.value:o(t,this.delimiter);if(w(i)){const t=this.getStateNode(i).initial;return void 0!==t?this.getStateNodes({[i]:t}):[this,this.states[i]]}const n=e(i),s=[this];return s.push(...d(n.map(t=>this.getStateNode(t).getStateNodes(i[t])))),s}handles(t){const e=n(t);return this.events.includes(e)}resolveState(t){const e=t instanceof Vt?t:Vt.create(t),i=Array.from(z([],this.getStateNodes(e.value)));return new Vt(Object.assign(Object.assign({},e),{value:this.resolve(e.value),configuration:i,done:J(i,this),tags:q(i)}))}transitionLeafNode(t,e,i){const n=this.getStateNode(t).next(e,i);return n&&n.transitions.length?n:this.next(e,i)}transitionCompoundNode(t,i,n){const s=e(t),o=this.getStateNode(s[0])._transition(t[s[0]],i,n);return o&&o.transitions.length?o:this.next(i,n)}transitionParallelNode(t,i,n){const s={};for(const o of e(t)){const e=t[o];if(!e)continue;const r=this.getStateNode(o)._transition(e,i,n);r&&(s[o]=r)}const o=e(s).map(t=>s[t]),r=d(o.map(t=>t.transitions));if(!o.some(t=>t.transitions.length>0))return this.next(i,n);const a=d(o.map(t=>t.entrySet)),c=d(e(s).map(t=>s[t].configuration));return{transitions:r,entrySet:a,exitSet:d(o.map(t=>t.exitSet)),configuration:c,source:i,actions:d(e(s).map(t=>s[t].actions))}}_transition(t,i,n){return w(t)?this.transitionLeafNode(t,i,n):1===e(t).length?this.transitionCompoundNode(t,i,n):this.transitionParallelNode(t,i,n)}getTransitionData(t,e){return this._transition(t.value,t,T(e))}next(t,e){const n=e.name,s=[];let r,a=[];for(const c of this.getCandidates(n)){const{cond:u,in:d}=c,l=t.context,f=!d||(w(d)&&Bt(d)?t.matches(o(this.getStateNodeById(d).path,this.delimiter)):i(o(d,this.delimiter),h(this.path.slice(0,-2))(t.value)));let p=!1;try{p=!u||$(this.machine,u,l,e,t)}catch(t){throw new Error(`Unable to evaluate guard '${u.name||u.type}' in transition for event '${n}' in state node '${this.id}':\n${t.message}`)}if(p&&f){void 0!==c.target&&(a=c.target),s.push(...c.actions),r=c;break}}if(!r)return;if(!a.length)return{transitions:[r],entrySet:[],exitSet:[],configuration:t.value?[this]:[],source:t,actions:s};const c=d(a.map(e=>this.getRelativeStateNodes(e,t.historyValue))),u=!!r.internal;return{transitions:[r],entrySet:u?[]:d(c.map(t=>this.nodesFromChild(t))),exitSet:u?[]:[this],configuration:c,source:t,actions:s}}nodesFromChild(t){if(t.escapes(this))return[];const e=[];let i=t;for(;i&&i!==this;)e.push(i),i=i.parent;return e.push(this),e}escapes(t){if(this===t)return!1;let e=this.parent;for(;e;){if(e===t)return!1;e=e.parent}return!0}getActions(t,e,i,n){const s=z([],n?this.getStateNodes(n.value):[this]),o=t.configuration.length?z(s,t.configuration):s;for(const e of o)B(s,e)||t.entrySet.push(e);for(const e of s)B(o,e)&&!B(t.exitSet,e.parent)||t.exitSet.push(e);const r=d(t.entrySet.map(n=>{const s=[];if("final"!==n.type)return s;const o=n.parent;if(!o.parent)return s;s.push(Nt(n.id,n.doneData),Nt(o.id,n.doneData?p(n.doneData,e,i):void 0));const r=o.parent;return"parallel"===r.type&&R(r).every(e=>J(t.configuration,e))&&s.push(Nt(r.id)),s}));t.exitSet.sort((t,e)=>e.order-t.order),t.entrySet.sort((t,e)=>t.order-e.order);const a=new Set(t.entrySet),c=new Set(t.exitSet),[h,u]=[d(Array.from(a).map(t=>[...t.activities.map(t=>_t(t)),...t.onEntry])).concat(r.map(vt)),d(Array.from(c).map(t=>[...t.onExit,...t.activities.map(t=>jt(t))]))];return pt(u.concat(t.actions).concat(h),this.machine.options.actions)}transition(t=this.initialState,e,i){const n=T(e);let s;if(t instanceof Vt)s=void 0===i?t:this.resolveState(Vt.from(t,i));else{const e=w(t)?this.resolve(r(this.getResolvedPath(t))):this.resolve(t),n=null!=i?i:this.machine.context;s=this.resolveState(Vt.from(e,n))}if(this.strict&&!this.events.includes(n.name)&&(o=n.name,!/^(done|error)\./.test(o)))throw new Error(`Machine '${this.id}' does not accept event '${n.name}'`);var o;const a=this._transition(s.value,s,n)||{transitions:[],configuration:[],entrySet:[],exitSet:[],source:s,actions:[]},c=z([],this.getStateNodes(s.value)),h=a.configuration.length?z(c,a.configuration):c;return a.configuration=[...h],this.resolveTransition(a,s,s.context,n)}resolveRaisedTransition(t,e,i){const n=t.actions;return(t=this.transition(t,e))._event=i,t.event=i.data,t.actions.unshift(...n),t}resolveTransition(t,i,n,s=dt){const{configuration:o}=t,r=!i||t.transitions.length>0,a=r?U(this.machine,o):void 0,c=i?i.historyValue?i.historyValue:t.source?this.machine.historyValue(i.value):void 0:void 0,h=this.getActions(t,n,s,i),u=i?Object.assign({},i.activities):{};for(const t of h)t.type===X?u[t.activity.id||t.activity.type]=t:t.type===H&&(u[t.activity.id||t.activity.type]=!1);const[d,l]=Pt(this,i,n,s,h,this.machine.config.preserveActionOrder),[f,g]=v(d,t=>t.type===G||t.type===K&&t.to===L.Internal),m=d.filter(t=>{var e;return t.type===X&&(null===(e=t.activity)||void 0===e?void 0:e.type)===nt}).reduce((t,e)=>(t[e.activity.id]=function(t,e,i,n){var s;const o=k(t.src),r=null===(s=null==e?void 0:e.options.services)||void 0===s?void 0:s[o.type],a=t.data?p(t.data,i,n):void 0,c=r?Rt(r,t.id,a):Dt(t.id);return c.meta=t,c}(e.activity,this.machine,l,s),t),i?Object.assign({},i.children):{}),b=r?t.configuration:i?i.configuration:[],S=J(b,this),x=new Vt({value:a||i.value,context:l,_event:s,_sessionid:i?i._sessionid:null,historyValue:a?c?(O=c,_=a,{current:_,states:y(O,_)}):void 0:i?i.historyValue:void 0,history:!a||t.source?i:void 0,actions:a?g:[],activities:a?u:i?i.activities:{},events:[],configuration:b,transitions:t.transitions,children:m,done:S,tags:null==i?void 0:i.tags,machine:this});var O,_;const j=n!==l;x.changed=s.name===at||j;const{history:E}=x;E&&delete E.history;const T=!S&&(this._transient||o.some(t=>t._transient));if(!(r||T&&""!==s.name))return x;let N=x;if(!S)for(T&&(N=this.resolveRaisedTransition(N,{type:W},s));f.length;){const t=f.shift();N=this.resolveRaisedTransition(N,t._event,s)}const $=N.changed||(E?!!N.actions.length||j||typeof E.value!=typeof N.value||!function t(i,n){if(i===n)return!0;if(void 0===i||void 0===n)return!1;if(w(i)||w(n))return i===n;const s=e(i),o=e(n);return s.length===o.length&&s.every(e=>t(i[e],n[e]))}(N.value,E.value):void 0);return N.changed=$,N.history=E,N.tags=q(N.configuration),N}getStateNode(t){if(Bt(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=Bt(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&&Bt(t))try{return this.getStateNodeById(t.slice(1))}catch(t){}const e=s(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||Ut;switch(this.type){case"parallel":return a(this.initialStateValue,(e,i)=>e?this.getStateNode(i).resolve(t[i]||e):Ut);case"compound":if(w(t)){const e=this.getStateNode(t);return"parallel"===e.type||"compound"===e.type?{[t]:e.initialStateValue}:t}return e(t).length?a(t,(t,e)=>t?this.getStateNode(e).resolve(t):Ut):this.initialStateValue||{};default:return t||Ut}}getResolvedPath(t){if(Bt(t)){const e=this.machine.idMap[t.slice("#".length)];if(!e)throw new Error(`Unable to find state node '${t}'`);return e.path}return s(t,this.delimiter)}get initialStateValue(){if(this.__cache.initialStateValue)return this.__cache.initialStateValue;let t;if("parallel"===this.type)t=c(this.states,t=>t.initialStateValue||Ut,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=D(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=w(e.target)&&Bt(e.target)?r(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(D(this))return[this];if("compound"===this.type&&!this.initial)return[this];return d(u(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(e(this.states).length)return{current:t||this.initialStateValue,states:c(this.states,(e,i)=>{if(!t)return e.historyValue();const n=w(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?d(u(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 w(i)?[e.getStateNode(i)]:d(u(i).map(t=>"deep"===this.history?e.getFromRelativePath(t):[e.states[t[0]]]))}get stateIds(){const t=d(e(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,i=new Set(this.ownEvents);if(t)for(const n of e(t)){const e=t[n];if(e.states)for(const t of e.events)i.add(""+t)}return this.__cache.events=Array.from(i)}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(!w(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 f(t)}(t.target),i="internal"in t?t.internal:!e||e.some(t=>w(t)&&t[0]===this.delimiter),{guards:n}=this.machine.options,s=this.resolveTarget(e),o=Object.assign(Object.assign({},t),{actions:pt(f(t.actions)),cond:x(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 i=this.config.on,n="*",s=i[n],o=void 0===s?[]:s,r=V(i,[n+""]);t=d(e(r).map(t=>N(t,r[t])).concat(N("*",o)))}else t=[];const i=this.config.always?N("",this.config.always):[],n=this.config.onDone?N(String(Nt(this.id)),this.config.onDone):[],s=d(this.invoke.map(t=>{const e=[];return t.onDone&&e.push(...N(String($t(t.id)),t.onDone)),t.onError&&e.push(...N(String(kt(t.id)),t.onError)),e})),o=this.after,r=d([...n,...s,...t,...i].map(t=>f(t).map(t=>this.formatTransition(t))));for(const t of o)r.push(t);return r}}function qt(t,e,i=t.context){return new Jt(t,e,i)}function Xt(t,e){return new Jt(t,e)}const Ht={deferEvents:!1};class Gt{constructor(t){this.processingEvent=!1,this.queue=[],this.initialized=!1,this.options=Object.assign(Object.assign({},Ht),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 Kt=new Map;let Qt=0;const Wt={bookId:()=>"x:"+Qt++,register:(t,e)=>(Kt.set(t,e),t),get:t=>Kt.get(t),free(t){Kt.delete(t)}};function Yt(){return"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:void 0}function Zt(t){if(!Yt())return;const e=function(){const t=Yt();if(t&&"__xstate__"in t)return t.__xstate__}();e&&e.register(t)}function te(t,e={}){let i=t.initialState;const n=new Set,s=[];let o=!1;const r=Mt({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=P(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 ee={sync:!1,autoForward:!1};var ie;!function(t){t[t.NotStarted=0]="NotStarted",t[t.Running=1]="Running",t[t.Stopped=2]="Stopped"}(ie||(ie={}));class ne{constructor(t,e=ne.defaultOptions){this.machine=t,this.scheduler=new Gt,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=ie.NotStarted,this.children=new Map,this.forwardTo=new Set,this.init=this.start,this.send=(t,e)=>{if(b(t))return this.batch(t),this.state;const i=T(E(t,e));if(this.status===ie.Stopped)return this.state;if(this.status!==ie.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,e)=>{const i=this.parent&&(e===L.Parent||this.parent.id===e),n=i?this.parent:w(e)?this.children.get(e)||Wt.get(e):(s=e)&&"function"==typeof s.send?e:void 0;var s;if(n)"machine"in n?n.send(Object.assign(Object.assign({},t),{name:t.name===rt?""+kt(this.id):t.name,origin:this.sessionId})):n.send(t.data);else if(!i)throw new Error(`Unable to send event to child '${e}' from service '${this.id}'.`)};const i=Object.assign(Object.assign({},ne.defaultOptions),e),{clock:n,logger:s,parent:o,id:r}=i,a=void 0!==r?r:t.id;this.id=a,this.logger=s,this.clock=n,this.parent=o,this.options=i,this.scheduler=new Gt({deferEvents:this.options.deferEvents}),this.sessionId=Wt.bookId()}get initialState(){return this._initialState?this._initialState:Lt(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.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);const i=J(t.configuration||[],this.machine);if(this.state.configuration&&i){const i=t.configuration.find(t=>"final"===t.type&&t.parent===this.machine),n=i&&i.doneData?p(i.doneData,t.context,e):void 0;for(const t of this.doneListeners)t($t(this.id,n));this.stop()}}onTransition(t){return this.listeners.add(t),this.status===ie.Running&&t(this.state,this.state.event),this}subscribe(t,e,i){if(!t)return{unsubscribe:()=>{}};let n,s=i;return"function"==typeof t?n=t:(n=t.next.bind(t),s=t.complete.bind(t)),this.listeners.add(n),this.status===ie.Running&&n(this.state),s&&this.onDone(s),{unsubscribe:()=>{n&&this.listeners.delete(n),s&&this.doneListeners.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===ie.Running)return this;Wt.register(this.sessionId,this),this.initialized=!0,this.status=ie.Running;const e=void 0===t?this.initialState:Lt(this,()=>{return"object"==typeof(e=t)&&null!==e&&"value"in e&&"_event"in e?this.machine.resolveState(t):this.machine.resolveState(Vt.from(t,this.machine.context));var e});return this.options.devTools&&this.attachDev(),this.scheduler.initialize(()=>{this.update(e,dt)}),this}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.state.configuration].sort((t,e)=>e.order-t.order).forEach(t=>{for(const e of t.definition.exit)this.exec(e,this.state)}),this.children.forEach(t=>{S(t.stop)&&t.stop()});for(const t of e(this.delayedEventsMap))this.clock.clearTimeout(this.delayedEventsMap[t]);return this.scheduler.clear(),this.initialized=!1,this.status=ie.Stopped,Wt.free(this.sessionId),this}batch(t){if(this.status===ie.NotStarted&&this.options.deferEvents);else if(this.status!==ie.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=T(s);this.forward(t),e=Lt(this,()=>this.machine.transition(e,t)),n.push(...e.actions.map(t=>Ct(t,e))),i=i||!!e.changed}e.changed=i,e.actions=n,this.update(e,T(t[t.length-1]))})}sender(t){return this.send.bind(this,t)}nextState(t){const e=T(t);if(0===e.name.indexOf(ot)&&!this.state.nextEvents.some(t=>0===t.indexOf(ot)))throw e.data.data;return Lt(this,()=>this.machine.transition(this.state,e))}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){const{context:n,_event:s}=e,o=t.exec||lt(t.type,i),r=S(o)?o:o?o.exec:t.exec;if(r)try{return r(n,s.data,{action:t,state:this.state,_event:s})}catch(t){throw this.parent&&this.parent.send({type:"xstate.error",data:t}),t}switch(t.type){case K:const e=t;if("number"==typeof e.delay)return void this.defer(e);e.to?this.sendTo(e._event,e.to):this.send(e._event);break;case Q:this.cancel(t.sendId);break;case X:{if(this.status!==ie.Running)return;const e=t.activity;if(!this.state.activities[e.id||e.type])break;if(e.type===A.Invoke){const t=k(e.src),i=this.machine.options.services?this.machine.options.services[t.type]:void 0,{id:o,data:r}=e,a="autoForward"in e?e.autoForward:!!e.forward;if(!i)return;const c=r?p(r,n,s):void 0;if("string"==typeof i)return;let h,u=S(i)?i(n,s.data,{data:c,src:t,meta:e.meta}):i;if(!u)return;_(u)&&(u=c?u.withContext(c):u,h={autoForward:a}),this.spawn(u,o,h)}else this.spawnActivity(e);break}case H:this.stopChild(t.activity.id);break;case et:const{label:i,value:o}=t;i?this.logger(i,o):this.logger(o)}}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),S(e.stop)&&e.stop())}spawn(t,e,i){if(g(t))return this.spawnPromise(Promise.resolve(t),e);if(S(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&&S(t.subscribe)}catch(t){return!1}}(t))return this.spawnObservable(t,e);if(_(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 ne(t,Object.assign(Object.assign({},this.options),{parent:this,id:e.id||t.id})),n=Object.assign(Object.assign({},ee),e);n.sync&&i.onTransition(t=>{this.send(at,{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(T(t,{origin:i.id}))}).start(),s}spawnBehavior(t,e){const i=te(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(T($t(e,t),{origin:e})))},t=>{if(!n){this.removeChild(e);const i=kt(e,t);try{this.send(T(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=P(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,[O]: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(T(t,{origin:e}))};let a;try{a=t(r,t=>{n.add(t)})}catch(t){this.send(kt(e,t))}if(g(a))return this.spawnPromise(a,e);const c={id:e,send:t=>n.forEach(e=>e(t)),subscribe:t=>{const e=P(t);return s.add(e.next),{unsubscribe:()=>{s.delete(e.next)}}},stop:()=>{i=!0,S(a)&&a()},toJSON:()=>({id:e}),getSnapshot:()=>o,[O]:function(){return this}};return this.children.set(e,c),c}spawnObservable(t,e){let i;const n=t.subscribe(t=>{i=t,this.send(T(t,{origin:e}))},t=>{this.removeChild(e),this.send(T(kt(e,t),{origin:e}))},()=>{this.removeChild(e),this.send(T($t(e),{origin:e}))}),s={id:e,send:()=>{},subscribe:(e,i,n)=>t.subscribe(e,i,n),stop:()=>n.unsubscribe(),getSnapshot:()=>i,toJSON:()=>({id:e}),[O]: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}),[O]:function(){return this}})}attachDev(){const t=Yt();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)}Zt(this)}}toJSON(){return{id:this.id}}[O](){return this}getSnapshot(){return this.status===ie.NotStarted?this.initialState:this._state}}ne.defaultOptions=(t=>({execute:!0,deferEvents:!0,clock:{setTimeout:(t,e)=>setTimeout(t,e),clearTimeout:t=>clearTimeout(t)},logger:t.console.log.bind(console),devTools:!1}))("undefined"!=typeof self?self:global),ne.interpret=oe;function se(t,e){const i=(t=>w(t)?Object.assign(Object.assign({},ee),{name:t}):Object.assign(Object.assign(Object.assign({},ee),{name:j()}),t))(e);return(e=>e?e.spawn(t,i.name,i):Rt(t,i.name))(At[At.length-1])}function oe(t,e){return new ne(t,e)}function re(t,e,i){const n=Vt.from(t,t instanceof Vt?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:ue,sendParent:de,sendUpdate:le,forwardTo:fe,doneInvoke:pe}=It;export{A as ActionTypes,ne as Interpreter,ie as InterpreterStatus,qt as Machine,L as SpecialTargets,Vt as State,Jt as StateNode,It as actions,he as assign,Xt as createMachine,ae as createSchema,pe as doneInvoke,fe as forwardTo,oe as interpret,C as mapState,re as matchState,i as matchesState,ue as send,de as sendParent,le as sendUpdate,se as spawn,ce as t,Mt as toActorRef};
package/es/Actor.d.ts CHANGED
@@ -21,5 +21,5 @@ export declare function createInvocableActor<TC, TE extends EventObject>(invokeD
21
21
  export declare function createDeferredActor(entity: Spawnable, id: string, data?: any): ActorRef<any, undefined>;
22
22
  export declare function isActor(item: any): item is ActorRef<any>;
23
23
  export declare function isSpawnedActor(item: any): item is ActorRef<any>;
24
- export declare function toActorRef<TEvent extends EventObject, TEmitted = any, TActorRefLike extends BaseActorRef<TEvent> = BaseActorRef<TEvent>>(actorRefLike: TActorRefLike): ActorRef<TEvent, TEmitted>;
24
+ export declare function toActorRef<TEvent extends EventObject, TEmitted = any, TActorRefLike extends BaseActorRef<TEvent> = BaseActorRef<TEvent>>(actorRefLike: TActorRefLike): ActorRef<TEvent, TEmitted> & Omit<TActorRefLike, keyof ActorRef<any, any>>;
25
25
  //# sourceMappingURL=Actor.d.ts.map
package/es/Actor.js CHANGED
@@ -1,9 +1,11 @@
1
1
  import { __assign } from './_virtual/_tslib.js';
2
- import { toInvokeSource, mapContext, interopSymbols, isMachine } from './utils.js';
2
+ import { symbolObservable, toInvokeSource, mapContext, isMachine } from './utils.js';
3
3
  import { provide } from './serviceScope.js';
4
4
 
5
5
  function createNullActor(id) {
6
- return __assign({
6
+ var _a;
7
+
8
+ return _a = {
7
9
  id: id,
8
10
  send: function () {
9
11
  return void 0;
@@ -23,7 +25,9 @@ function createNullActor(id) {
23
25
  id: id
24
26
  };
25
27
  }
26
- }, interopSymbols);
28
+ }, _a[symbolObservable] = function () {
29
+ return this;
30
+ }, _a;
27
31
  }
28
32
  /**
29
33
  * Creates a deferred actor that is able to be invoked given the provided
@@ -70,9 +74,12 @@ function isActor(item) {
70
74
  }
71
75
  function isSpawnedActor(item) {
72
76
  return isActor(item) && 'id' in item;
73
- }
77
+ } // TODO: refactor the return type, this could be written in a better way but it's best to avoid unneccessary breaking changes now
78
+
74
79
  function toActorRef(actorRefLike) {
75
- return __assign(__assign({
80
+ var _a;
81
+
82
+ return __assign((_a = {
76
83
  subscribe: function () {
77
84
  return {
78
85
  unsubscribe: function () {
@@ -84,7 +91,9 @@ function toActorRef(actorRefLike) {
84
91
  getSnapshot: function () {
85
92
  return undefined;
86
93
  }
87
- }, interopSymbols), actorRefLike);
94
+ }, _a[symbolObservable] = function () {
95
+ return this;
96
+ }, _a), actorRefLike);
88
97
  }
89
98
 
90
99
  export { createDeferredActor, createInvocableActor, createNullActor, isActor, isSpawnedActor, toActorRef };
package/es/State.d.ts CHANGED
@@ -71,7 +71,7 @@ export declare class State<TContext, TEvent extends EventObject = EventObject, T
71
71
  * @param stateValue
72
72
  * @param context
73
73
  */
74
- static inert<TC, TE extends EventObject = EventObject>(stateValue: State<TC, TE> | StateValue, context: TC): State<TC, TE>;
74
+ static inert<TC, TE extends EventObject = EventObject>(stateValue: State<TC, TE, any, any, any> | StateValue, context: TC): State<TC, TE>;
75
75
  /**
76
76
  * Creates a new State instance.
77
77
  * @param value The state value
@@ -98,7 +98,8 @@ export declare class State<TContext, TEvent extends EventObject = EventObject, T
98
98
  * Whether the current state value is a subset of the given parent state value.
99
99
  * @param parentStateValue
100
100
  */
101
- matches<TSV extends TResolvedTypesMeta extends TypegenEnabled ? Prop<TResolvedTypesMeta, 'matchesStates'> : TTypestate['value']>(parentStateValue: TSV): this is State<(TTypestate extends any ? {
101
+ matches<TSV extends TResolvedTypesMeta extends TypegenEnabled ? Prop<TResolvedTypesMeta, 'matchesStates'> : never>(parentStateValue: TSV): boolean;
102
+ matches<TSV extends TResolvedTypesMeta extends TypegenDisabled ? TTypestate['value'] : never>(parentStateValue: TSV): this is State<(TTypestate extends any ? {
102
103
  value: TSV;
103
104
  context: any;
104
105
  } extends TTypestate ? TTypestate : never : never)['context'], TEvent, TStateSchema, TTypestate, TResolvedTypesMeta> & {
package/es/State.js CHANGED
@@ -226,11 +226,6 @@ function () {
226
226
  tags: Array.from(tags)
227
227
  });
228
228
  };
229
- /**
230
- * Whether the current state value is a subset of the given parent state value.
231
- * @param parentStateValue
232
- */
233
-
234
229
 
235
230
  State.prototype.matches = function (parentStateValue) {
236
231
  return matchesState(parentStateValue, this.value);
package/es/index.d.ts CHANGED
@@ -3,13 +3,13 @@ import { mapState } from './mapState';
3
3
  import { StateNode } from './StateNode';
4
4
  import { State } from './State';
5
5
  import { Machine, createMachine } from './Machine';
6
- import { Actor } from './Actor';
6
+ import { Actor, toActorRef } from './Actor';
7
7
  import * as actions from './actions';
8
8
  import { interpret, Interpreter, spawn, InterpreterStatus } from './interpreter';
9
9
  import { matchState } from './match';
10
10
  import { createSchema, t } from './schema';
11
11
  declare const assign: <TContext, TEvent extends import("./types").EventObject = import("./types").EventObject>(assignment: import("./types").Assigner<TContext, TEvent> | import("./types").PropertyAssigner<TContext, TEvent>) => import("./types").AssignAction<TContext, TEvent>, send: typeof actions.send, sendParent: typeof actions.sendParent, sendUpdate: typeof actions.sendUpdate, forwardTo: typeof actions.forwardTo, doneInvoke: typeof actions.doneInvoke;
12
- export { Actor, Machine, StateNode, State, matchesState, mapState, actions, assign, send, sendParent, sendUpdate, forwardTo, interpret, Interpreter, InterpreterStatus, matchState, spawn, doneInvoke, createMachine, createSchema, t };
12
+ export { Actor, toActorRef, Machine, StateNode, State, matchesState, mapState, actions, assign, send, sendParent, sendUpdate, forwardTo, interpret, Interpreter, InterpreterStatus, matchState, spawn, doneInvoke, createMachine, createSchema, t };
13
13
  export * from './types';
14
14
  export * from './typegenTypes';
15
15
  declare global {
package/es/index.js CHANGED
@@ -5,6 +5,7 @@ import { assign as assign$1, send as send$1, sendParent as sendParent$1, sendUpd
5
5
  import * as actions from './actions.js';
6
6
  export { actions };
7
7
  export { State } from './State.js';
8
+ export { toActorRef } from './Actor.js';
8
9
  export { StateNode } from './StateNode.js';
9
10
  export { Machine, createMachine } from './Machine.js';
10
11
  export { Interpreter, InterpreterStatus, interpret, spawn } from './interpreter.js';
@@ -1,5 +1,6 @@
1
- import { StateMachine, Event, EventObject, DefaultContext, StateSchema, StateValue, InterpreterOptions, SingleOrArray, Subscribable, DoneEvent, MachineOptions, SCXML, EventData, Observer, Spawnable, Typestate, ActorRef, ActorRefFrom, Behavior, Subscription, StateConfig } from './types';
1
+ import { StateMachine, Event, EventObject, DefaultContext, StateSchema, StateValue, InterpreterOptions, SingleOrArray, DoneEvent, MachineOptions, SCXML, EventData, Observer, Spawnable, Typestate, ActorRef, ActorRefFrom, Behavior, Subscription, StateConfig, InteropSubscribable } from './types';
2
2
  import { State } from './State';
3
+ import { symbolObservable } from './utils';
3
4
  import { AreAllImplementationsAssumedToBeProvided, TypegenDisabled } from './typegenTypes';
4
5
  export declare type StateListener<TContext, TEvent extends EventObject, TStateSchema extends StateSchema<TContext> = any, TTypestate extends Typestate<TContext> = {
5
6
  value: any;
@@ -92,8 +93,8 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
92
93
  execute(state: State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>, actionsConfig?: MachineOptions<TContext, TEvent>['actions']): void;
93
94
  private update;
94
95
  onTransition(listener: StateListener<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>): this;
95
- subscribe(nextListener?: (state: State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>) => void, errorListener?: (error: any) => void, completeListener?: () => void): Subscription;
96
96
  subscribe(observer: Observer<State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>>): Subscription;
97
+ subscribe(nextListener?: (state: State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>) => void, errorListener?: (error: any) => void, completeListener?: () => void): Subscription;
97
98
  /**
98
99
  * Adds an event listener that is notified whenever an event is sent to the running interpreter.
99
100
  * @param listener The event listener
@@ -188,7 +189,7 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
188
189
  toJSON(): {
189
190
  id: string;
190
191
  };
191
- [Symbol.observable](): Subscribable<State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>>;
192
+ [symbolObservable](): InteropSubscribable<State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>>;
192
193
  getSnapshot(): State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>;
193
194
  }
194
195
  export declare function spawn<T extends Behavior<any, any>>(entity: T, nameOrOptions?: string | SpawnOptions): ActorRefFrom<T>;
package/es/interpreter.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { __values, __spreadArray, __read, __assign } from './_virtual/_tslib.js';
2
2
  import { IS_PRODUCTION } from './environment.js';
3
- import { warn, mapContext, isFunction, keys, toSCXMLEvent, toInvokeSource, isMachine, isPromiseLike, isObservable, isBehavior, reportUnhandledExceptionOnInvocation, interopSymbols, symbolObservable, isArray, toEventObject, isString, isActor, toObserver, uniqueId } from './utils.js';
3
+ import { warn, mapContext, isFunction, keys, toSCXMLEvent, toInvokeSource, isMachine, isPromiseLike, isObservable, isBehavior, reportUnhandledExceptionOnInvocation, symbolObservable, isArray, toEventObject, isString, isActor, uniqueId, toObserver } from './utils.js';
4
4
  import { ActionTypes, SpecialTargets } from './types.js';
5
5
  import { isInFinalState } from './stateUtils.js';
6
6
  import { errorPlatform, log, stop, start, cancel, send, update, error as error$1 } from './actionTypes.js';
@@ -997,6 +997,8 @@ function () {
997
997
  };
998
998
 
999
999
  Interpreter.prototype.spawnPromise = function (promise, id) {
1000
+ var _a;
1001
+
1000
1002
  var _this = this;
1001
1003
 
1002
1004
  var canceled = false;
@@ -1039,8 +1041,7 @@ function () {
1039
1041
  }
1040
1042
  }
1041
1043
  });
1042
-
1043
- var actor = __assign({
1044
+ var actor = (_a = {
1044
1045
  id: id,
1045
1046
  send: function () {
1046
1047
  return void 0;
@@ -1084,13 +1085,16 @@ function () {
1084
1085
  getSnapshot: function () {
1085
1086
  return resolvedData;
1086
1087
  }
1087
- }, interopSymbols);
1088
-
1088
+ }, _a[symbolObservable] = function () {
1089
+ return this;
1090
+ }, _a);
1089
1091
  this.children.set(id, actor);
1090
1092
  return actor;
1091
1093
  };
1092
1094
 
1093
1095
  Interpreter.prototype.spawnCallback = function (callback, id) {
1096
+ var _a;
1097
+
1094
1098
  var _this = this;
1095
1099
 
1096
1100
  var canceled = false;
@@ -1129,7 +1133,7 @@ function () {
1129
1133
  return this.spawnPromise(callbackStop, id);
1130
1134
  }
1131
1135
 
1132
- var actor = __assign({
1136
+ var actor = (_a = {
1133
1137
  id: id,
1134
1138
  send: function (event) {
1135
1139
  return receivers.forEach(function (receiver) {
@@ -1137,10 +1141,11 @@ function () {
1137
1141
  });
1138
1142
  },
1139
1143
  subscribe: function (next) {
1140
- listeners.add(next);
1144
+ var observer = toObserver(next);
1145
+ listeners.add(observer.next);
1141
1146
  return {
1142
1147
  unsubscribe: function () {
1143
- listeners.delete(next);
1148
+ listeners.delete(observer.next);
1144
1149
  }
1145
1150
  };
1146
1151
  },
@@ -1159,13 +1164,16 @@ function () {
1159
1164
  getSnapshot: function () {
1160
1165
  return emitted;
1161
1166
  }
1162
- }, interopSymbols);
1163
-
1167
+ }, _a[symbolObservable] = function () {
1168
+ return this;
1169
+ }, _a);
1164
1170
  this.children.set(id, actor);
1165
1171
  return actor;
1166
1172
  };
1167
1173
 
1168
1174
  Interpreter.prototype.spawnObservable = function (source, id) {
1175
+ var _a;
1176
+
1169
1177
  var _this = this;
1170
1178
 
1171
1179
  var emitted;
@@ -1188,8 +1196,7 @@ function () {
1188
1196
  origin: id
1189
1197
  }));
1190
1198
  });
1191
-
1192
- var actor = __assign({
1199
+ var actor = (_a = {
1193
1200
  id: id,
1194
1201
  send: function () {
1195
1202
  return void 0;
@@ -1208,8 +1215,9 @@ function () {
1208
1215
  id: id
1209
1216
  };
1210
1217
  }
1211
- }, interopSymbols);
1212
-
1218
+ }, _a[symbolObservable] = function () {
1219
+ return this;
1220
+ }, _a);
1213
1221
  this.children.set(id, actor);
1214
1222
  return actor;
1215
1223
  };
@@ -1237,7 +1245,9 @@ function () {
1237
1245
  };
1238
1246
 
1239
1247
  Interpreter.prototype.spawnEffect = function (id, dispose) {
1240
- this.children.set(id, __assign({
1248
+ var _a;
1249
+
1250
+ this.children.set(id, (_a = {
1241
1251
  id: id,
1242
1252
  send: function () {
1243
1253
  return void 0;
@@ -1258,7 +1268,9 @@ function () {
1258
1268
  id: id
1259
1269
  };
1260
1270
  }
1261
- }, interopSymbols));
1271
+ }, _a[symbolObservable] = function () {
1272
+ return this;
1273
+ }, _a));
1262
1274
  };
1263
1275
 
1264
1276
  Interpreter.prototype.attachDev = function () {
@@ -1299,9 +1311,7 @@ function () {
1299
1311
 
1300
1312
  Interpreter.prototype[symbolObservable] = function () {
1301
1313
  return this;
1302
- }; // this gets stripped by Babel to avoid having "undefined" property in environments without this non-standard Symbol
1303
- // it has to be here to be included in the generated .d.ts
1304
-
1314
+ };
1305
1315
 
1306
1316
  Interpreter.prototype.getSnapshot = function () {
1307
1317
  if (this.status === InterpreterStatus.NotStarted) {
package/es/types.d.ts CHANGED
@@ -570,7 +570,7 @@ export interface HistoryStateNode<TContext> extends StateNode<TContext> {
570
570
  export interface StateMachine<TContext, TStateSchema extends StateSchema, TEvent extends EventObject, TTypestate extends Typestate<TContext> = {
571
571
  value: any;
572
572
  context: TContext;
573
- }, TAction extends BaseActionObject = BaseActionObject, TServiceMap extends ServiceMap = ServiceMap, TResolvedTypesMeta = TypegenDisabled> extends StateNode<TContext, TStateSchema, TEvent, TTypestate, TServiceMap, TResolvedTypesMeta> {
573
+ }, TAction extends BaseActionObject = BaseActionObject, TServiceMap extends ServiceMap = ServiceMap, TResolvedTypesMeta = ResolveTypegenMeta<TypegenDisabled, TEvent, TAction, TServiceMap>> extends StateNode<TContext, TStateSchema, TEvent, TTypestate, TServiceMap, TResolvedTypesMeta> {
574
574
  id: string;
575
575
  states: StateNode<TContext, TStateSchema, TEvent, TTypestate, TServiceMap, TResolvedTypesMeta>['states'];
576
576
  withConfig(options: InternalMachineOptions<TContext, TEvent, TResolvedTypesMeta, true>, context?: TContext | (() => TContext)): StateMachine<TContext, TStateSchema, TEvent, TTypestate, TAction, TServiceMap, AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta> extends false ? MarkAllImplementationsAsProvided<TResolvedTypesMeta> : TResolvedTypesMeta>;
@@ -976,11 +976,14 @@ export interface Subscription {
976
976
  unsubscribe(): void;
977
977
  }
978
978
  export interface InteropObservable<T> {
979
- [Symbol.observable]: () => Subscribable<T>;
979
+ [Symbol.observable]: () => InteropSubscribable<T>;
980
980
  }
981
- export interface Subscribable<T> {
982
- subscribe(next: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;
981
+ export interface InteropSubscribable<T> {
982
+ subscribe(observer: Observer<T>): Subscription;
983
+ }
984
+ export interface Subscribable<T> extends InteropSubscribable<T> {
983
985
  subscribe(observer: Observer<T>): Subscription;
986
+ subscribe(next: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;
984
987
  }
985
988
  export declare type Spawnable = AnyStateMachine | PromiseLike<any> | InvokeCallback | InteropObservable<any> | Subscribable<any> | Behavior<any>;
986
989
  export declare type ExtractEvent<TEvent extends EventObject, TEventType extends TEvent['type']> = TEvent extends {
package/es/utils.d.ts CHANGED
@@ -53,9 +53,8 @@ export declare function isFunction(value: any): value is Function;
53
53
  export declare function isString(value: any): value is string;
54
54
  export declare function toGuard<TContext, TEvent extends EventObject>(condition?: Condition<TContext, TEvent>, guardMap?: Record<string, ConditionPredicate<TContext, TEvent>>): Guard<TContext, TEvent> | undefined;
55
55
  export declare function isObservable<T>(value: any): value is Subscribable<T>;
56
- export declare const symbolObservable: string | typeof Symbol.observable;
56
+ export declare const symbolObservable: typeof Symbol.observable;
57
57
  export declare const interopSymbols: {
58
- [x: string]: () => any;
59
58
  [Symbol.observable]: () => any;
60
59
  };
61
60
  export declare function isMachine(value: any): value is AnyStateMachine;
package/es/utils.js CHANGED
@@ -460,9 +460,12 @@ function isObservable(value) {
460
460
  }
461
461
  var symbolObservable = /*#__PURE__*/function () {
462
462
  return typeof Symbol === 'function' && Symbol.observable || '@@observable';
463
- }();
463
+ }(); // TODO: to be removed in v5, left it out just to minimize the scope of the change and maintain compatibility with older versions of integration paackages
464
+
464
465
  var interopSymbols = (_a = {}, _a[symbolObservable] = function () {
465
466
  return this;
467
+ }, _a[Symbol.observable] = function () {
468
+ return this;
466
469
  }, _a);
467
470
  function isMachine(value) {
468
471
  try {
package/lib/Actor.d.ts CHANGED
@@ -21,5 +21,5 @@ export declare function createInvocableActor<TC, TE extends EventObject>(invokeD
21
21
  export declare function createDeferredActor(entity: Spawnable, id: string, data?: any): ActorRef<any, undefined>;
22
22
  export declare function isActor(item: any): item is ActorRef<any>;
23
23
  export declare function isSpawnedActor(item: any): item is ActorRef<any>;
24
- export declare function toActorRef<TEvent extends EventObject, TEmitted = any, TActorRefLike extends BaseActorRef<TEvent> = BaseActorRef<TEvent>>(actorRefLike: TActorRefLike): ActorRef<TEvent, TEmitted>;
24
+ export declare function toActorRef<TEvent extends EventObject, TEmitted = any, TActorRefLike extends BaseActorRef<TEvent> = BaseActorRef<TEvent>>(actorRefLike: TActorRefLike): ActorRef<TEvent, TEmitted> & Omit<TActorRefLike, keyof ActorRef<any, any>>;
25
25
  //# sourceMappingURL=Actor.d.ts.map
package/lib/Actor.js CHANGED
@@ -7,7 +7,9 @@ var utils = require('./utils.js');
7
7
  var serviceScope = require('./serviceScope.js');
8
8
 
9
9
  function createNullActor(id) {
10
- return _tslib.__assign({
10
+ var _a;
11
+
12
+ return _a = {
11
13
  id: id,
12
14
  send: function () {
13
15
  return void 0;
@@ -27,7 +29,9 @@ function createNullActor(id) {
27
29
  id: id
28
30
  };
29
31
  }
30
- }, utils.interopSymbols);
32
+ }, _a[utils.symbolObservable] = function () {
33
+ return this;
34
+ }, _a;
31
35
  }
32
36
  /**
33
37
  * Creates a deferred actor that is able to be invoked given the provided
@@ -74,9 +78,12 @@ function isActor(item) {
74
78
  }
75
79
  function isSpawnedActor(item) {
76
80
  return isActor(item) && 'id' in item;
77
- }
81
+ } // TODO: refactor the return type, this could be written in a better way but it's best to avoid unneccessary breaking changes now
82
+
78
83
  function toActorRef(actorRefLike) {
79
- return _tslib.__assign(_tslib.__assign({
84
+ var _a;
85
+
86
+ return _tslib.__assign((_a = {
80
87
  subscribe: function () {
81
88
  return {
82
89
  unsubscribe: function () {
@@ -88,7 +95,9 @@ function toActorRef(actorRefLike) {
88
95
  getSnapshot: function () {
89
96
  return undefined;
90
97
  }
91
- }, utils.interopSymbols), actorRefLike);
98
+ }, _a[utils.symbolObservable] = function () {
99
+ return this;
100
+ }, _a), actorRefLike);
92
101
  }
93
102
 
94
103
  exports.createDeferredActor = createDeferredActor;