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.
- package/CHANGELOG.md +12 -0
- package/dist/xstate.interpreter.js +1 -1
- package/dist/xstate.js +1 -1
- package/dist/xstate.web.js +2 -2
- package/es/Actor.d.ts +1 -1
- package/es/Actor.js +15 -6
- package/es/State.d.ts +3 -2
- package/es/State.js +0 -5
- package/es/index.d.ts +2 -2
- package/es/index.js +1 -0
- package/es/interpreter.d.ts +4 -3
- package/es/interpreter.js +29 -19
- package/es/types.d.ts +7 -4
- package/es/utils.d.ts +1 -2
- package/es/utils.js +4 -1
- package/lib/Actor.d.ts +1 -1
- package/lib/Actor.js +14 -5
- package/lib/State.d.ts +3 -2
- package/lib/State.js +0 -5
- package/lib/index.d.ts +2 -2
- package/lib/index.js +2 -0
- package/lib/interpreter.d.ts +4 -3
- package/lib/interpreter.js +28 -18
- package/lib/types.d.ts +7 -4
- package/lib/utils.d.ts +1 -2
- package/lib/utils.js +4 -1
- package/package.json +1 -1
package/dist/xstate.web.js
CHANGED
|
@@ -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
|
|
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,
|
|
2
|
+
import { symbolObservable, toInvokeSource, mapContext, isMachine } from './utils.js';
|
|
3
3
|
import { provide } from './serviceScope.js';
|
|
4
4
|
|
|
5
5
|
function createNullActor(id) {
|
|
6
|
-
|
|
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
|
-
},
|
|
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
|
-
|
|
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
|
-
},
|
|
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'> :
|
|
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';
|
package/es/interpreter.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { StateMachine, Event, EventObject, DefaultContext, StateSchema, StateValue, InterpreterOptions, SingleOrArray,
|
|
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
|
-
[
|
|
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,
|
|
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
|
-
},
|
|
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 =
|
|
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
|
-
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
|
|
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
|
-
},
|
|
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
|
-
};
|
|
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
|
|
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]: () =>
|
|
979
|
+
[Symbol.observable]: () => InteropSubscribable<T>;
|
|
980
980
|
}
|
|
981
|
-
export interface
|
|
982
|
-
subscribe(
|
|
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:
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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.
|
|
98
|
+
}, _a[utils.symbolObservable] = function () {
|
|
99
|
+
return this;
|
|
100
|
+
}, _a), actorRefLike);
|
|
92
101
|
}
|
|
93
102
|
|
|
94
103
|
exports.createDeferredActor = createDeferredActor;
|