xstate 5.0.0-beta.39 → 5.0.0-beta.41

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.
Files changed (45) hide show
  1. package/actions/dist/xstate-actions.cjs.js +3 -3
  2. package/actions/dist/xstate-actions.development.cjs.js +3 -3
  3. package/actions/dist/xstate-actions.development.esm.js +3 -3
  4. package/actions/dist/xstate-actions.esm.js +3 -3
  5. package/actions/dist/xstate-actions.umd.min.js +1 -1
  6. package/actions/dist/xstate-actions.umd.min.js.map +1 -1
  7. package/actors/dist/xstate-actors.cjs.js +2 -2
  8. package/actors/dist/xstate-actors.development.cjs.js +2 -2
  9. package/actors/dist/xstate-actors.development.esm.js +2 -2
  10. package/actors/dist/xstate-actors.esm.js +2 -2
  11. package/actors/dist/xstate-actors.umd.min.js +1 -1
  12. package/actors/dist/xstate-actors.umd.min.js.map +1 -1
  13. package/dist/declarations/src/State.d.ts +1 -1
  14. package/dist/declarations/src/StateMachine.d.ts +1 -1
  15. package/dist/declarations/src/actors/callback.d.ts +1 -1
  16. package/dist/declarations/src/index.d.ts +2 -2
  17. package/dist/declarations/src/interpreter.d.ts +2 -10
  18. package/dist/declarations/src/system.d.ts +7 -3
  19. package/dist/declarations/src/types.d.ts +4 -9
  20. package/dist/{interpreter-1e8c1c0c.esm.js → interpreter-480db258.esm.js} +28 -33
  21. package/dist/{interpreter-03a5c3f5.development.cjs.js → interpreter-70ed981b.development.cjs.js} +28 -34
  22. package/dist/{interpreter-70cd9217.development.esm.js → interpreter-936da690.development.esm.js} +28 -33
  23. package/dist/{interpreter-5dfcd203.cjs.js → interpreter-fb2829f1.cjs.js} +28 -34
  24. package/dist/{raise-17cb3d9d.development.cjs.js → raise-5ab465ed.development.cjs.js} +9 -9
  25. package/dist/{raise-62de3670.esm.js → raise-9d6921da.esm.js} +8 -8
  26. package/dist/{raise-291d2181.cjs.js → raise-beae3fd3.cjs.js} +8 -8
  27. package/dist/{raise-e044f460.development.esm.js → raise-f757be00.development.esm.js} +9 -9
  28. package/dist/{send-1249d4ac.esm.js → send-a931d1b8.esm.js} +4 -5
  29. package/dist/{send-f1a2a827.development.esm.js → send-b26e3812.development.esm.js} +4 -5
  30. package/dist/{send-af152aca.cjs.js → send-ca5f706c.cjs.js} +4 -5
  31. package/dist/{send-33433787.development.cjs.js → send-fb87a01a.development.cjs.js} +4 -5
  32. package/dist/xstate.cjs.js +8 -10
  33. package/dist/xstate.cjs.mjs +0 -2
  34. package/dist/xstate.development.cjs.js +8 -10
  35. package/dist/xstate.development.cjs.mjs +0 -2
  36. package/dist/xstate.development.esm.js +11 -11
  37. package/dist/xstate.esm.js +11 -11
  38. package/dist/xstate.umd.min.js +1 -1
  39. package/dist/xstate.umd.min.js.map +1 -1
  40. package/guards/dist/xstate-guards.cjs.js +2 -2
  41. package/guards/dist/xstate-guards.development.cjs.js +2 -2
  42. package/guards/dist/xstate-guards.development.esm.js +2 -2
  43. package/guards/dist/xstate-guards.esm.js +2 -2
  44. package/guards/dist/xstate-guards.umd.min.js.map +1 -1
  45. package/package.json +1 -1
@@ -3,9 +3,9 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var actors_dist_xstateActors = require('../actors/dist/xstate-actors.development.cjs.js');
6
- var interpreter = require('./interpreter-03a5c3f5.development.cjs.js');
7
- var guards_dist_xstateGuards = require('./raise-17cb3d9d.development.cjs.js');
8
- var send = require('./send-33433787.development.cjs.js');
6
+ var interpreter = require('./interpreter-70ed981b.development.cjs.js');
7
+ var guards_dist_xstateGuards = require('./raise-5ab465ed.development.cjs.js');
8
+ var send = require('./send-fb87a01a.development.cjs.js');
9
9
  require('../dev/dist/xstate-dev.development.cjs.js');
10
10
 
11
11
  class SimulatedClock {
@@ -403,7 +403,6 @@ class StateMachine {
403
403
  this.getInitialState = this.getInitialState.bind(this);
404
404
  this.restoreState = this.restoreState.bind(this);
405
405
  this.start = this.start.bind(this);
406
- this.getPersistedState = this.getPersistedState.bind(this);
407
406
  this.root = new StateNode(config, {
408
407
  _key: this.id,
409
408
  _machine: this
@@ -582,8 +581,8 @@ class StateMachine {
582
581
  toJSON() {
583
582
  return this.definition;
584
583
  }
585
- getPersistedState(state) {
586
- return guards_dist_xstateGuards.getPersistedState(state);
584
+ getPersistedState(state, options) {
585
+ return guards_dist_xstateGuards.getPersistedState(state, options);
587
586
  }
588
587
  createState(stateConfig) {
589
588
  return stateConfig instanceof guards_dist_xstateGuards.State ? stateConfig : new guards_dist_xstateGuards.State(stateConfig, this);
@@ -595,7 +594,7 @@ class StateMachine {
595
594
  const actorData = snapshotChildren[actorId];
596
595
  const childState = actorData.state;
597
596
  const src = actorData.src;
598
- const logic = src ? interpreter.resolveReferencedActor(this, src)?.src : undefined;
597
+ const logic = typeof src === 'string' ? interpreter.resolveReferencedActor(this, src)?.src : src;
599
598
  if (!logic) {
600
599
  return;
601
600
  }
@@ -604,6 +603,7 @@ class StateMachine {
604
603
  id: actorId,
605
604
  parent: _actorScope?.self,
606
605
  state: actorState,
606
+ src,
607
607
  systemId: actorData.systemId
608
608
  });
609
609
  children[actorId] = actorRef;
@@ -637,7 +637,7 @@ class StateMachine {
637
637
  }
638
638
 
639
639
  const defaultWaitForOptions = {
640
- timeout: 10_000 // 10 seconds
640
+ timeout: Infinity // much more than 10 seconds
641
641
  };
642
642
 
643
643
  /**
@@ -731,8 +731,6 @@ exports.fromObservable = actors_dist_xstateActors.fromObservable;
731
731
  exports.fromPromise = actors_dist_xstateActors.fromPromise;
732
732
  exports.fromTransition = actors_dist_xstateActors.fromTransition;
733
733
  exports.Actor = interpreter.Actor;
734
- exports.ActorStatus = interpreter.ActorStatus;
735
- exports.InterpreterStatus = interpreter.InterpreterStatus;
736
734
  exports.createActor = interpreter.createActor;
737
735
  exports.interpret = interpreter.interpret;
738
736
  exports.matchesState = interpreter.matchesState;
@@ -1,7 +1,5 @@
1
1
  export {
2
2
  Actor,
3
- ActorStatus,
4
- InterpreterStatus,
5
3
  SimulatedClock,
6
4
  SpecialTargets,
7
5
  State,
@@ -1,10 +1,10 @@
1
1
  export { createEmptyActor, fromCallback, fromEventObservable, fromObservable, fromPromise, fromTransition } from '../actors/dist/xstate-actors.development.esm.js';
2
- import { S as STATE_DELIMITER, m as mapValues, t as toArray, a as toTransitionConfigArray, N as NULL_EVENT, c as createInvokeId, i as isErrorActorEvent, b as createInitEvent, r as resolveReferencedActor, d as createActor, $ as $$ACTOR_TYPE, e as matchesState } from './interpreter-70cd9217.development.esm.js';
3
- export { A as Actor, f as ActorStatus, I as InterpreterStatus, d as createActor, g as interpret, e as matchesState, p as pathToStateValue, h as toObserver } from './interpreter-70cd9217.development.esm.js';
4
- import { f as formatTransitions, a as formatTransition, m as memo, e as evaluateGuard, g as getDelayedTransitions, b as formatInitialTransition, c as getCandidates, d as getConfiguration, h as getStateNodes, r as resolveStateValue, i as isInFinalState, S as State, j as cloneState, k as macrostep, t as transitionNode, l as getInitialConfiguration, n as resolveActionsAndContext, o as microstep, p as getInitialStateNodes, q as isStateId, s as getStateNodeByPath, u as getPersistedState } from './raise-e044f460.development.esm.js';
5
- export { S as State, v as and, z as cancel, h as getStateNodes, w as not, x as or, A as raise, C as spawn, y as stateIn, B as stop } from './raise-e044f460.development.esm.js';
6
- import { a as assign } from './send-f1a2a827.development.esm.js';
7
- export { S as SpecialTargets, a as assign, c as choose, e as escalate, f as forwardTo, l as log, p as pure, s as sendParent, b as sendTo } from './send-f1a2a827.development.esm.js';
2
+ import { S as STATE_DELIMITER, m as mapValues, t as toArray, a as toTransitionConfigArray, N as NULL_EVENT, c as createInvokeId, i as isErrorActorEvent, b as createInitEvent, r as resolveReferencedActor, d as createActor, $ as $$ACTOR_TYPE, e as matchesState } from './interpreter-936da690.development.esm.js';
3
+ export { A as Actor, d as createActor, f as interpret, e as matchesState, p as pathToStateValue, g as toObserver } from './interpreter-936da690.development.esm.js';
4
+ import { f as formatTransitions, a as formatTransition, m as memo, e as evaluateGuard, g as getDelayedTransitions, b as formatInitialTransition, c as getCandidates, d as getConfiguration, h as getStateNodes, r as resolveStateValue, i as isInFinalState, S as State, j as cloneState, k as macrostep, t as transitionNode, l as getInitialConfiguration, n as resolveActionsAndContext, o as microstep, p as getInitialStateNodes, q as isStateId, s as getStateNodeByPath, u as getPersistedState } from './raise-f757be00.development.esm.js';
5
+ export { S as State, v as and, z as cancel, h as getStateNodes, w as not, x as or, A as raise, C as spawn, y as stateIn, B as stop } from './raise-f757be00.development.esm.js';
6
+ import { a as assign } from './send-b26e3812.development.esm.js';
7
+ export { S as SpecialTargets, a as assign, c as choose, e as escalate, f as forwardTo, l as log, p as pure, s as sendParent, b as sendTo } from './send-b26e3812.development.esm.js';
8
8
  import '../dev/dist/xstate-dev.development.esm.js';
9
9
 
10
10
  class SimulatedClock {
@@ -402,7 +402,6 @@ class StateMachine {
402
402
  this.getInitialState = this.getInitialState.bind(this);
403
403
  this.restoreState = this.restoreState.bind(this);
404
404
  this.start = this.start.bind(this);
405
- this.getPersistedState = this.getPersistedState.bind(this);
406
405
  this.root = new StateNode(config, {
407
406
  _key: this.id,
408
407
  _machine: this
@@ -581,8 +580,8 @@ class StateMachine {
581
580
  toJSON() {
582
581
  return this.definition;
583
582
  }
584
- getPersistedState(state) {
585
- return getPersistedState(state);
583
+ getPersistedState(state, options) {
584
+ return getPersistedState(state, options);
586
585
  }
587
586
  createState(stateConfig) {
588
587
  return stateConfig instanceof State ? stateConfig : new State(stateConfig, this);
@@ -594,7 +593,7 @@ class StateMachine {
594
593
  const actorData = snapshotChildren[actorId];
595
594
  const childState = actorData.state;
596
595
  const src = actorData.src;
597
- const logic = src ? resolveReferencedActor(this, src)?.src : undefined;
596
+ const logic = typeof src === 'string' ? resolveReferencedActor(this, src)?.src : src;
598
597
  if (!logic) {
599
598
  return;
600
599
  }
@@ -603,6 +602,7 @@ class StateMachine {
603
602
  id: actorId,
604
603
  parent: _actorScope?.self,
605
604
  state: actorState,
605
+ src,
606
606
  systemId: actorData.systemId
607
607
  });
608
608
  children[actorId] = actorRef;
@@ -636,7 +636,7 @@ class StateMachine {
636
636
  }
637
637
 
638
638
  const defaultWaitForOptions = {
639
- timeout: 10_000 // 10 seconds
639
+ timeout: Infinity // much more than 10 seconds
640
640
  };
641
641
 
642
642
  /**
@@ -1,10 +1,10 @@
1
1
  export { createEmptyActor, fromCallback, fromEventObservable, fromObservable, fromPromise, fromTransition } from '../actors/dist/xstate-actors.esm.js';
2
- import { S as STATE_DELIMITER, m as mapValues, t as toArray, a as toTransitionConfigArray, N as NULL_EVENT, c as createInvokeId, i as isErrorActorEvent, b as createInitEvent, r as resolveReferencedActor, d as createActor, $ as $$ACTOR_TYPE, e as matchesState } from './interpreter-1e8c1c0c.esm.js';
3
- export { A as Actor, f as ActorStatus, I as InterpreterStatus, d as createActor, g as interpret, e as matchesState, p as pathToStateValue, h as toObserver } from './interpreter-1e8c1c0c.esm.js';
4
- import { f as formatTransitions, a as formatTransition, m as memo, e as evaluateGuard, g as getDelayedTransitions, b as formatInitialTransition, c as getCandidates, d as getConfiguration, h as getStateNodes, r as resolveStateValue, i as isInFinalState, S as State, j as cloneState, k as macrostep, t as transitionNode, l as getInitialConfiguration, n as resolveActionsAndContext, o as microstep, p as getInitialStateNodes, q as isStateId, s as getStateNodeByPath, u as getPersistedState } from './raise-62de3670.esm.js';
5
- export { S as State, v as and, z as cancel, h as getStateNodes, w as not, x as or, A as raise, C as spawn, y as stateIn, B as stop } from './raise-62de3670.esm.js';
6
- import { a as assign } from './send-1249d4ac.esm.js';
7
- export { S as SpecialTargets, a as assign, c as choose, e as escalate, f as forwardTo, l as log, p as pure, s as sendParent, b as sendTo } from './send-1249d4ac.esm.js';
2
+ import { S as STATE_DELIMITER, m as mapValues, t as toArray, a as toTransitionConfigArray, N as NULL_EVENT, c as createInvokeId, i as isErrorActorEvent, b as createInitEvent, r as resolveReferencedActor, d as createActor, $ as $$ACTOR_TYPE, e as matchesState } from './interpreter-480db258.esm.js';
3
+ export { A as Actor, d as createActor, f as interpret, e as matchesState, p as pathToStateValue, g as toObserver } from './interpreter-480db258.esm.js';
4
+ import { f as formatTransitions, a as formatTransition, m as memo, e as evaluateGuard, g as getDelayedTransitions, b as formatInitialTransition, c as getCandidates, d as getConfiguration, h as getStateNodes, r as resolveStateValue, i as isInFinalState, S as State, j as cloneState, k as macrostep, t as transitionNode, l as getInitialConfiguration, n as resolveActionsAndContext, o as microstep, p as getInitialStateNodes, q as isStateId, s as getStateNodeByPath, u as getPersistedState } from './raise-9d6921da.esm.js';
5
+ export { S as State, v as and, z as cancel, h as getStateNodes, w as not, x as or, A as raise, C as spawn, y as stateIn, B as stop } from './raise-9d6921da.esm.js';
6
+ import { a as assign } from './send-a931d1b8.esm.js';
7
+ export { S as SpecialTargets, a as assign, c as choose, e as escalate, f as forwardTo, l as log, p as pure, s as sendParent, b as sendTo } from './send-a931d1b8.esm.js';
8
8
  import '../dev/dist/xstate-dev.esm.js';
9
9
 
10
10
  class SimulatedClock {
@@ -402,7 +402,6 @@ class StateMachine {
402
402
  this.getInitialState = this.getInitialState.bind(this);
403
403
  this.restoreState = this.restoreState.bind(this);
404
404
  this.start = this.start.bind(this);
405
- this.getPersistedState = this.getPersistedState.bind(this);
406
405
  this.root = new StateNode(config, {
407
406
  _key: this.id,
408
407
  _machine: this
@@ -578,8 +577,8 @@ class StateMachine {
578
577
  toJSON() {
579
578
  return this.definition;
580
579
  }
581
- getPersistedState(state) {
582
- return getPersistedState(state);
580
+ getPersistedState(state, options) {
581
+ return getPersistedState(state, options);
583
582
  }
584
583
  createState(stateConfig) {
585
584
  return stateConfig instanceof State ? stateConfig : new State(stateConfig, this);
@@ -591,7 +590,7 @@ class StateMachine {
591
590
  const actorData = snapshotChildren[actorId];
592
591
  const childState = actorData.state;
593
592
  const src = actorData.src;
594
- const logic = src ? resolveReferencedActor(this, src)?.src : undefined;
593
+ const logic = typeof src === 'string' ? resolveReferencedActor(this, src)?.src : src;
595
594
  if (!logic) {
596
595
  return;
597
596
  }
@@ -600,6 +599,7 @@ class StateMachine {
600
599
  id: actorId,
601
600
  parent: _actorScope?.self,
602
601
  state: actorState,
602
+ src,
603
603
  systemId: actorData.systemId
604
604
  });
605
605
  children[actorId] = actorRef;
@@ -633,7 +633,7 @@ class StateMachine {
633
633
  }
634
634
 
635
635
  const defaultWaitForOptions = {
636
- timeout: 10_000 // 10 seconds
636
+ timeout: Infinity // much more than 10 seconds
637
637
  };
638
638
 
639
639
  /**
@@ -1,2 +1,2 @@
1
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).XState={})}(this,(function(t){"use strict";const e=".",s="",n="",i="xstate.init",o="xstate.error",r="xstate.stop";class a{constructor(t){this._process=t,this._active=!1,this._current=null,this._last=null}start(){this._active=!0,this.flush()}clear(){this._current&&(this._current.next=null,this._last=this._current)}enqueue(t){const e={value:t,next:null};if(this._current)return this._last.next=e,void(this._last=e);this._current=e,this._last=e,this._active&&this.flush()}flush(){for(;this._current;){const t=this._current;this._process(t.value),this._current=t.next}this._last=null}}function c(t,e){return{type:`xstate.done.state.${t}`,output:e}}function u(t,e){return{type:`xstate.error.actor.${t}`,data:e}}function f(t){return{type:i,input:t}}function h(){const t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:window;if(t.__xstate__)return t.__xstate__}const d=t=>{const e=h();e&&e.register(t)};function p(t){setTimeout((()=>{throw t}))}const l="function"==typeof Symbol&&Symbol.observable||"@@observable";let y=0;function v(t,e){const s=m(t),n=m(e);return"string"==typeof n?"string"==typeof s&&n===s:"string"==typeof s?s in n:Object.keys(s).every((t=>t in n&&v(s[t],n[t])))}function g(t){try{return k(t)?t:t.toString().split(e)}catch(e){throw new Error(`'${t}' is not a valid state path.`)}}function m(t){if("object"==typeof(e=t)&&"value"in e&&"context"in e&&"event"in e)return t.value;var e;if(k(t))return _(t);if("string"!=typeof t)return t;return _(g(t))}function _(t){if(1===t.length)return t[0];const e={};let s=e;for(let e=0;e<t.length-1;e++)if(e===t.length-2)s[t[e]]=t[e+1];else{const n=s;s={},n[t[e]]=s}return e}function x(t,e){const s={},n=Object.keys(t);for(let i=0;i<n.length;i++){const o=n[i];s[o]=e(t[o],o,t,i)}return s}function b(t){return[].concat(...t)}function S(t){return k(t)?t:[t]}function w(t){return void 0===t?[]:S(t)}function $(t,e,s,n){return"function"==typeof t?t({context:e,event:s,self:n}):t}function k(t){return Array.isArray(t)}function I(t){return S(t).map((t=>void 0===t||"string"==typeof t?{target:t}:t))}function T(t){if(void 0!==t&&t!==s)return w(t)}function E(t,e,s){const n="object"==typeof t,i=n?t:void 0;return{next:(n?t.next:t)?.bind(i),error:(n?t.error:e)?.bind(i),complete:(n?t.complete:s)?.bind(i)}}function O(t,e){return`${t}[${e}]`}function j(t,e){if(e.startsWith("xstate#")){const[,s]=e.match(/\[(\d+)\]$/),n=t.getStateNodeById(e.slice(7,-(s.length+2))).config.invoke;return{src:(Array.isArray(n)?n[s]:n).src,input:void 0}}const s=t.implementations.actors[e];return s?"transition"in s?{src:s,input:void 0}:s:void 0}const A=1;let M=function(t){return t[t.NotStarted=0]="NotStarted",t[t.Running=1]="Running",t[t.Stopped=2]="Stopped",t}({});const P=M,N={clock:{setTimeout:(t,e)=>setTimeout(t,e),clearTimeout:t=>clearTimeout(t)},logger:console.log.bind(console),devTools:!1};class R{constructor(t,e){this.logic=t,this._state=void 0,this.clock=void 0,this.options=void 0,this.id=void 0,this.mailbox=new a(this._process.bind(this)),this.delayedEventsMap={},this.observers=new Set,this.logger=void 0,this.status=M.NotStarted,this._parent=void 0,this.ref=void 0,this._actorScope=void 0,this._systemId=void 0,this.sessionId=void 0,this.system=void 0,this._doneEvent=void 0,this.src=void 0,this._deferred=[];const s={...N,...e},{clock:n,logger:i,parent:o,id:r,systemId:c,inspect:u}=s;this.system=o?.system??function(t){const e=new Map,s=new Map,n=new WeakMap,i=new Set,o={_bookId:()=>"x:"+y++,_register:(t,s)=>(e.set(t,s),t),_unregister:t=>{e.delete(t.sessionId);const i=n.get(t);void 0!==i&&(s.delete(i),n.delete(t))},get:t=>s.get(t),_set:(t,e)=>{const i=s.get(t);if(i&&i!==e)throw new Error(`Actor with system ID '${t}' already exists.`);s.set(t,e),n.set(e,t)},inspect:t=>{i.add(t)},_sendInspectionEvent:e=>{const s={...e,rootId:t.sessionId};i.forEach((t=>t.next?.(s)))},_relay:(t,e,s)=>{o._sendInspectionEvent({type:"@xstate.event",sourceRef:t,targetRef:e,event:s}),e._send(s)}};return o}(this),u&&!o&&this.system.inspect(E(u)),this.sessionId=this.system._bookId(),this.id=r??this.sessionId,this.logger=i,this.clock=n,this._parent=o,this.options=s,this.src=s.src,this.ref=this,this._actorScope={self:this,id:this.id,sessionId:this.sessionId,logger:this.logger,defer:t=>{this._deferred.push(t)},system:this.system,stopChild:t=>{if(t._parent!==this)throw new Error(`Cannot stop child actor ${t.id} of ${this.id} because it is not a child`);t._stop()}},this.send=this.send.bind(this),this.system._sendInspectionEvent({type:"@xstate.actor",actorRef:this}),this._initState(),c&&"active"===this._state.status&&(this._systemId=c,this.system._set(c,this))}_initState(){this._state=this.options.state?this.logic.restoreState?this.logic.restoreState(this.options.state,this._actorScope):this.options.state:this.logic.getInitialState(this._actorScope,this.options?.input)}update(t,e){let s;for(this._state=t;s=this._deferred.shift();)s();for(const e of this.observers)try{e.next?.(t)}catch(t){p(t)}switch(this._state.status){case"done":this._stopProcedure(),this._complete(),this._doneEvent=(n=this.id,i=this._state.output,{type:`xstate.done.actor.${n}`,output:i}),this._parent&&this.system._relay(this,this._parent,this._doneEvent);break;case"error":this._stopProcedure(),this._error(this._state.error),this._parent&&this.system._relay(this,this._parent,u(this.id,this._state.error))}var n,i;this.system._sendInspectionEvent({type:"@xstate.snapshot",actorRef:this,event:e,snapshot:t})}subscribe(t,e,s){const n=E(t,e,s);if(this.status!==M.Stopped)this.observers.add(n);else try{n.complete?.()}catch(t){p(t)}return{unsubscribe:()=>{this.observers.delete(n)}}}start(){if(this.status===M.Running)return this;this.system._register(this.sessionId,this),this._systemId&&this.system._set(this._systemId,this),this.status=M.Running;const t=f(this.options.input);this.system._sendInspectionEvent({type:"@xstate.event",sourceRef:this._parent,targetRef:this,event:t});switch(this._state.status){case"done":this.update(this._state,t);case"error":return this}if(this.logic.start)try{this.logic.start(this._state,this._actorScope)}catch(t){return this._stopProcedure(),this._error(t),this._parent?.send(u(this.id,t)),this}return this.update(this._state,t),this.options.devTools&&this.attachDevTools(),this.mailbox.start(),this}_process(t){let e,s;try{e=this.logic.transition(this._state,t,this._actorScope)}catch(t){s={err:t}}if(s){const{err:t}=s;return this._stopProcedure(),this._error(t),void this._parent?.send(u(this.id,t))}this.update(e,t),t.type===r&&(this._stopProcedure(),this._complete())}_stop(){return this.status===M.Stopped?this:(this.mailbox.clear(),this.status===M.NotStarted?(this.status=M.Stopped,this):(this.mailbox.enqueue({type:r}),this))}stop(){if(this._parent)throw new Error("A non-root actor cannot be stopped directly.");return this._stop()}_complete(){for(const t of this.observers)try{t.complete?.()}catch(t){p(t)}this.observers.clear()}_error(t){if(!this.observers.size)return void(this._parent||p(t));let e=!1;for(const s of this.observers){const n=s.error;e||=!n;try{n?.(t)}catch(t){p(t)}}this.observers.clear(),e&&p(t)}_stopProcedure(){if(this.status!==M.Running)return this;for(const t of Object.keys(this.delayedEventsMap))this.clock.clearTimeout(this.delayedEventsMap[t]);return this.mailbox.clear(),this.mailbox=new a(this._process.bind(this)),this.status=M.Stopped,this.system._unregister(this),this}_send(t){this.status!==M.Stopped&&this.mailbox.enqueue(t)}send(t){this.system._relay(void 0,this,t)}delaySend(t){const{event:e,id:s,delay:n}=t,i=this.clock.setTimeout((()=>{this.system._relay(this,t.to??this,e)}),n);s&&(this.delayedEventsMap[s]=i)}cancel(t){this.clock.clearTimeout(this.delayedEventsMap[t]),delete this.delayedEventsMap[t]}attachDevTools(){const{devTools:t}=this.options;if(t){("function"==typeof t?t:d)(this)}}toJSON(){return{xstate$$type:A,id:this.id}}getPersistedState(){return this.logic.getPersistedState(this._state)}[l](){return this}getSnapshot(){return this._state}}function D(t,e){return new R(t,e)}const V=D,C=new WeakMap;function J(t,e,s){let n=C.get(t);return n?e in n||(n[e]=s()):(n={[e]:s()},C.set(t,n)),n[e]}function B(t,e,s,n,{sendId:i}){return[e,"function"==typeof i?i(s,n):i]}function z(t,e){t.self.cancel(e)}function W(t){function e(t,e){}return e.type="xstate.cancel",e.sendId=t,e.resolve=B,e.execute=z,e}function U(t,e,s,n,{id:i,systemId:o,src:r,input:a,syncSnapshot:c}){const u="string"==typeof r?j(e.machine,r):{src:r,input:void 0},f="function"==typeof i?i(s):i;let h;if(u){const n=a||u.input;h=D(u.src,{id:f,src:"string"==typeof r?r:void 0,parent:t?.self,systemId:o,input:"function"==typeof n?n({context:e.context,event:s.event,self:t?.self}):n}),c&&h.subscribe({next:e=>{"active"===e.status&&t.self.send({type:`xstate.snapshot.${i}`,snapshot:e})},error:()=>{}})}return[zt(e,{children:{...e.children,[f]:h}}),{id:i,actorRef:h}]}function q(t,{id:e,actorRef:s}){s&&t.defer((()=>{if(s.status!==M.Stopped)try{s.start?.()}catch(s){return void t.self.send(u(e,s))}}))}function G(...[t,{id:e,systemId:s,input:n,syncSnapshot:i=!1}={}]){function o(t,e){}return o.type="xstate.spawn",o.id=e,o.systemId=s,o.src=t,o.input=n,o.syncSnapshot=i,o.resolve=U,o.execute=q,o}function Q(t,e,s,n,{actorRef:i}){const o="function"==typeof i?i(s,n):i,r="string"==typeof o?e.children[o]:o;let a=e.children;return r&&(a={...a},delete a[r.id]),[zt(e,{children:a}),r]}function F(t,e){e&&(t.system._unregister(e),e.status===M.Running?t.defer((()=>{t.stopChild(e)})):t.stopChild(e))}function X(t){function e(t,e){}return e.type="xstate.stop",e.actorRef=t,e.resolve=Q,e.execute=F,e}function H(t,e,{stateValue:s}){if("string"==typeof s&&ct(s)){const e=t.machine.getStateNodeById(s);return t.configuration.some((t=>t===e))}return t.matches(s)}function K(t,{context:e,event:s},{guards:n}){return!Z(n[0],e,s,t)}function L(t,{context:e,event:s},{guards:n}){return n.every((n=>Z(n,e,s,t)))}function Y(t,{context:e,event:s},{guards:n}){return n.some((n=>Z(n,e,s,t)))}function Z(t,e,s,n){const{machine:i}=n,o="function"==typeof t,r=o?t:i.implementations.guards["string"==typeof t?t:t.type];if(!o&&!r)throw new Error(`Guard '${"string"==typeof t?t:t.type}' is not implemented.'.`);if("function"!=typeof r)return Z(r,e,s,n);const a={context:e,event:s},c=o||"string"==typeof t?void 0:"params"in t?"function"==typeof t.params?t.params({context:e,event:s}):t.params:void 0;if(!("check"in r))return r(a,c);return r.check(n,a,r)}const tt=t=>"atomic"===t.type||"final"===t.type;function et(t){return Object.values(t.states).filter((t=>"history"!==t.type))}function st(t,e){const s=[];if(e===t)return s;let n=t.parent;for(;n&&n!==e;)s.push(n),n=n.parent;return s}function nt(t){const e=new Set(t),s=new Set(t),n=ot(s);for(const t of e)if("compound"!==t.type||n.get(t)&&n.get(t).length){if("parallel"===t.type)for(const e of et(t))if("history"!==e.type&&!s.has(e)){const t=pt(e);for(const e of t)s.add(e)}}else pt(t).forEach((t=>s.add(t)));for(const t of s){let e=t.parent;for(;e;)s.add(e),e=e.parent}return s}function it(t,e){const s=e.get(t);if(!s)return{};if("compound"===t.type){const t=s[0];if(!t)return{};if(tt(t))return t.key}const n={};for(const t of s)n[t.key]=it(t,e);return n}function ot(t){const e=new Map;for(const s of t)e.has(s)||e.set(s,[]),s.parent&&(e.has(s.parent)||e.set(s.parent,[]),e.get(s.parent).push(s));return e}function rt(t,e){return it(t,ot(nt(e)))}function at(t,e){return"compound"===e.type?et(e).some((e=>"final"===e.type&&t.has(e))):"parallel"===e.type?et(e).every((e=>at(t,e))):"final"===e.type}const ct=t=>"#"===t[0];function ut(t){const e=t.config.after;if(!e)return[];return Object.keys(e).flatMap(((s,n)=>{const i=e[s],o="string"==typeof i?{target:i}:i,r=isNaN(+s)?s:+s,a=((e,s)=>{const n=(o="function"==typeof e?`${t.id}:delay[${s}]`:e,r=t.id,{type:`xstate.after(${o})${r?`#${r}`:""}`}),i=n.type;var o,r;return t.entry.push(Yt(n,{id:i,delay:e})),t.exit.push(W(i)),i})(r,n);return w(o).map((t=>({...t,event:a,delay:r})))})).map((e=>{const{delay:s}=e;return{...ft(t,e.event,e),delay:s}}))}function ft(t,s,n){const i=T(n.target),o=n.reenter??!1,r=function(t,s){if(void 0===s)return;return s.map((s=>{if("string"!=typeof s)return s;if(ct(s))return t.machine.getStateNodeById(s);const n=s[0]===e;if(n&&!t.parent)return vt(t,s.slice(1));const i=n?t.key+s:s;if(!t.parent)throw new Error(`Invalid target: "${s}" is not a valid target from the root node. Did you mean ".${s}"?`);try{return vt(t.parent,i)}catch(e){throw new Error(`Invalid transition definition for state node '${t.id}':\n${e.message}`)}}))}(t,i),a={...n,actions:w(n.actions),guard:n.guard,target:r,source:t,reenter:o,eventType:s,toJSON:()=>({...a,source:`#${t.id}`,target:r?r.map((t=>`#${t.id}`)):void 0})};return a}function ht(t){const e=T(t.config.target);return e?{target:e.map((e=>"string"==typeof e?vt(t.parent,e):e))}:t.parent.initial}function dt(t){return"history"===t.type}function pt(t){const e=lt(t);for(const s of e)for(const n of st(s,t))e.add(n);return e}function lt(t){const e=new Set;return function t(s){if(!e.has(s))if(e.add(s),"compound"===s.type)t(s.initial.target[0]);else if("parallel"===s.type)for(const e of et(s))t(e)}(t),e}function yt(t,e){if(ct(e))return t.machine.getStateNodeById(e);if(!t.states)throw new Error(`Unable to retrieve child state '${e}' from '${t.id}'; no child states exist.`);const s=t.states[e];if(!s)throw new Error(`Child state '${e}' does not exist on '${t.id}'`);return s}function vt(t,e){if("string"==typeof e&&ct(e))try{return t.machine.getStateNodeById(e)}catch(t){}const s=g(e).slice();let n=t;for(;s.length;){const t=s.shift();if(!t.length)break;n=yt(n,t)}return n}function gt(t,e){const s=e instanceof Bt?e.value:m(e);if("string"==typeof s)return[t,t.states[s]];const n=Object.keys(s),i=n.map((e=>yt(t,e))).filter(Boolean);return[t.machine.root,t].concat(i,n.reduce(((e,n)=>{const i=yt(t,n);if(!i)return e;const o=gt(i,s[n]);return e.concat(o)}),[]))}function mt(t,e,s,n){return"string"==typeof e?function(t,e,s,n){const i=yt(t,e).next(s,n);return i&&i.length?i:t.next(s,n)}(t,e,s,n):1===Object.keys(e).length?function(t,e,s,n){const i=Object.keys(e),o=mt(yt(t,i[0]),e[i[0]],s,n);return o&&o.length?o:t.next(s,n)}(t,e,s,n):function(t,e,s,n){const i=[];for(const o of Object.keys(e)){const r=e[o];if(!r)continue;const a=mt(yt(t,o),r,s,n);a&&i.push(...a)}return i.length?i:t.next(s,n)}(t,e,s,n)}function _t(t){return Object.keys(t.states).map((e=>t.states[e])).filter((t=>"history"===t.type))}function xt(t,e){let s=t;for(;s.parent&&s.parent!==e;)s=s.parent;return s.parent===e}function bt(t,e){const s=new Set(t),n=new Set(e);for(const t of s)if(n.has(t))return!0;for(const t of n)if(s.has(t))return!0;return!1}function St(t,e,s){const n=new Set;for(const i of t){let t=!1;const o=new Set;for(const r of n)if(bt(kt([i],e,s),kt([r],e,s))){if(!xt(i.source,r.source)){t=!0;break}o.add(r)}if(!t){for(const t of o)n.delete(t);n.add(i)}}return Array.from(n)}function wt(t,e){if(!t.target)return[];const s=new Set;for(const n of t.target)if(dt(n))if(e[n.id])for(const t of e[n.id])s.add(t);else for(const t of wt(ht(n),e))s.add(t);else s.add(n);return[...s]}function $t(t,e){const s=wt(t,e);if(!s)return;if(!t.reenter&&s.every((e=>e===t.source||xt(e,t.source))))return t.source;const n=function(t){const[e,...s]=t;for(const t of st(e,void 0))if(s.every((e=>xt(e,t))))return t}(s.concat(t.source));return n||(t.reenter?void 0:t.source.machine.root)}function kt(t,e,s){const n=new Set;for(const i of t)if(i.target?.length){const t=$t(i,s);i.reenter&&i.source===t&&n.add(t);for(const s of e)xt(s,t)&&n.add(s)}return[...n]}function It(t,e,s,n,i,o){if(!t.length)return e;const r=new Set(e.configuration);let a=e.historyValue;const u=St(t,r,a);let f=e;i||([f,a]=function(t,e,s,n,i,o,r){let a=t;const c=kt(n,i,o);let u;c.sort(((t,e)=>e.order-t.order));for(const t of c)for(const e of _t(t)){let s;s="deep"===e.history?e=>tt(e)&&xt(e,t):e=>e.parent===t,u??={...o},u[e.id]=Array.from(i).filter(s)}for(const t of c)a=Pt(a,e,s,[...t.exit,...t.invoke.map((t=>X(t.id)))],r),i.delete(t);return[a,u||o]}(f,n,s,u,r,a,o)),f=Pt(f,n,s,u.flatMap((t=>t.actions)),o),f=function(t,e,s,n,i,o,r,a){let u=t;const f=new Set,h=new Set;Et(n,r,h,f),a&&h.add(t.machine.root);const d=new Set;for(const n of[...f].sort(((t,e)=>t.order-e.order))){i.add(n);const r=[];r.push(...n.entry);for(const t of n.invoke)r.push(G(t.src,{...t,syncSnapshot:!!t.onSnapshot}));if(h.has(n)){const t=n.initial.actions;r.push(...t)}if(u=Pt(u,e,s,r,o,n.invoke.map((t=>t.id))),"final"===n.type){const r=n.parent;let a="parallel"===r?.type?r:r?.parent,f=a||n;for("compound"===r?.type&&o.push(c(r.id,n.output?$(n.output,u.context,e,s.self):void 0));"parallel"===a?.type&&!d.has(a)&&at(i,a);)d.add(a),o.push(c(a.id)),f=a,a=a.parent;if(a)continue;u=zt(u,{status:"done",output:Tt(u,e,s,t.configuration[0].machine.root,f)})}}return u}(f,n,s,u,r,o,a,i);const h=[...r];"done"===f.status&&(f=Pt(f,n,s,h.sort(((t,e)=>e.order-t.order)).flatMap((t=>t.exit)),o));try{return a===e.historyValue&&function(t,e){if(t.length!==e.size)return!1;for(const s of t)if(!e.has(s))return!1;return!0}(e.configuration,r)?f:zt(f,{configuration:h,historyValue:a})}catch(t){throw t}}function Tt(t,e,s,n,i){if(!n.output)return;const o=c(i.id,i.output&&i.parent?$(i.output,t.context,e,s.self):void 0);return $(n.output,t.context,o,s.self)}function Et(t,e,s,n){for(const i of t){const t=$t(i,e);for(const o of i.target||[])dt(o)||i.source===o&&i.source===t&&!i.reenter||(n.add(o),s.add(o)),Ot(o,e,s,n);const o=wt(i,e);for(const r of o){const o=st(r,t);"parallel"===t?.type&&o.push(t),jt(n,e,s,o,!i.source.parent&&i.reenter?void 0:t)}}}function Ot(t,e,s,n){if(dt(t))if(e[t.id]){const i=e[t.id];for(const t of i)n.add(t),Ot(t,e,s,n);for(const o of i)At(o,t.parent,n,e,s)}else{const i=ht(t);for(const o of i.target)n.add(o),i===t.parent?.initial&&s.add(t.parent),Ot(o,e,s,n);for(const o of i.target)At(o,t,n,e,s)}else if("compound"===t.type){const[i]=t.initial.target;dt(i)||(n.add(i),s.add(i)),Ot(i,e,s,n),At(i,t,n,e,s)}else if("parallel"===t.type)for(const i of et(t).filter((t=>!dt(t))))[...n].some((t=>xt(t,i)))||(dt(i)||(n.add(i),s.add(i)),Ot(i,e,s,n))}function jt(t,e,s,n,i){for(const o of n)if(i&&!xt(o,i)||t.add(o),"parallel"===o.type)for(const n of et(o).filter((t=>!dt(t))))[...t].some((t=>xt(t,n)))||(t.add(n),Ot(n,e,s,t))}function At(t,e,s,n,i){jt(s,n,i,st(t,e))}function Mt(t,e,s,n,i,o){const{machine:r}=t;let a=t;for(const t of n){const n="function"==typeof t,c=n?t:r.implementations.actions["string"==typeof t?t:t.type];if(!c)continue;const u={context:a.context,event:e,self:s?.self,system:s?.system},f=n||"string"==typeof t?void 0:"params"in t?"function"==typeof t.params?t.params({context:a.context,event:e}):t.params:void 0;if(!("resolve"in c)){s?.self.status===M.Running?c(u,f):s?.defer((()=>{c(u,f)}));continue}const h=c,[d,p,l]=h.resolve(s,a,u,f,c,i);a=d,"retryResolve"in h&&o?.push([h,p]),"execute"in h&&(s?.self.status===M.Running?h.execute(s,p):s?.defer(h.execute.bind(null,s,p))),l&&(a=Mt(a,e,s,l,i,o))}return a}function Pt(t,e,s,n,i,o){const r=o?[]:void 0,a=Mt(t,e,s,n,{internalQueue:i,deferredActorIds:o},r);return r?.forEach((([t,e])=>{t.retryResolve(s,a,e)})),a}function Nt(t,e,s,n=[]){let o=t;const a=[];if(e.type===r)return o=zt(Rt(o,e,s),{status:"stopped"}),a.push(o),{state:o,microstates:a};let c=e;if(c.type!==i){o=It(Dt(c,o),t,s,c,!1,n),a.push(o)}let u=!0;for(;"active"===o.status;){let t=u?Vt(o,c):[];const e=t.length?o:void 0;if(!t.length){if(!n.length)break;c=n.shift(),t=Dt(c,o)}o=It(t,o,s,c,!1,n),u=o!==e,a.push(o)}return"active"!==o.status&&Rt(o,c,s),{state:o,microstates:a}}function Rt(t,e,s){return Pt(t,e,s,Object.values(t.children).map((t=>X(t))),[])}function Dt(t,e){return e.machine.getTransitionData(e,t)}function Vt(t,e){const s=new Set,n=t.configuration.filter(tt);for(const i of n)t:for(const n of[i].concat(st(i,void 0)))if(n.always)for(const i of n.always)if(void 0===i.guard||Z(i.guard,t.context,e,t)){s.add(i);break t}return St(Array.from(s),new Set(t.configuration),t.historyValue)}function Ct(t,e){return rt(t,[...nt(gt(t,e))])}function Jt(t){const e=[],s=t.initial,n=new Set;Et([s],{},new Set([t]),n);for(const t of[...n].sort(((t,e)=>t.order-e.order)))e.push(t);return e}class Bt{static from(t,e={},s){if(t instanceof Bt)return t.context!==e?new Bt({value:t.value,context:e,meta:{},configuration:[],children:{},status:"active"},s):t;const n=nt(gt(s.root,t));return new Bt({value:t,context:e,meta:void 0,configuration:Array.from(n),children:{},status:"active"},s)}constructor(t,e){this.machine=e,this.tags=void 0,this.value=void 0,this.status=void 0,this.error=void 0,this.context=void 0,this.historyValue={},this.configuration=void 0,this.children=void 0,this.context=t.context,this.historyValue=t.historyValue||{},this.matches=this.matches.bind(this),this.toStrings=this.toStrings.bind(this),this.configuration=t.configuration??Array.from(nt(gt(e.root,t.value))),this.children=t.children,this.value=rt(e.root,this.configuration),this.tags=new Set(b(this.configuration.map((t=>t.tags)))),this.status=t.status,this.output=t.output,this.error=t.error}toStrings(t=this.value){if("string"==typeof t)return[t];const s=Object.keys(t);return s.concat(...s.map((s=>this.toStrings(t[s]).map((t=>s+e+t)))))}toJSON(){const{configuration:t,tags:e,machine:s,...n}=this;return{...n,tags:Array.from(e),meta:this.meta}}matches(t){return v(t,this.value)}hasTag(t){return this.tags.has(t)}can(t){const e=this.machine.getTransitionData(this,t);return!!e?.length&&e.some((t=>void 0!==t.target||t.actions.length))}get nextEvents(){return J(this,"nextEvents",(()=>[...new Set(b([...this.configuration.map((t=>t.ownEvents))]))]))}get meta(){return this.configuration.reduce(((t,e)=>(void 0!==e.meta&&(t[e.id]=e.meta),t)),{})}}function zt(t,e={}){return new Bt({...t,...e},t.machine)}function Wt(t){let e;for(const s in t){const n=t[s];if(n&&"object"==typeof n)if("sessionId"in n&&"send"in n&&"ref"in n)e??=Array.isArray(t)?t.slice():{...t},e[s]={xstate$$type:A,id:n.id};else{const i=Wt(n);i!==n&&(e??=Array.isArray(t)?t.slice():{...t},e[s]=i)}}return e??t}function Ut(t,{machine:e,context:s},n,i){return(o,r)=>{const a=((o,r={})=>{const{systemId:a}=r;if("string"==typeof o){const c=j(e,o);if(!c)throw new Error(`Actor logic '${o}' not implemented in machine '${e.id}'`);const u="input"in r?r.input:c.input,f=D(c.src,{id:r.id,parent:t.self,input:"function"==typeof u?u({context:s,event:n,self:t.self}):u,src:o,systemId:a});return i[f.id]=f,r.syncSnapshot&&f.subscribe({next:e=>{"active"===e.status&&t.self.send({type:`xstate.snapshot.${f.id}`,snapshot:e})},error:()=>{}}),f}{const e=D(o,{id:r.id,parent:t.self,input:r.input,src:void 0,systemId:a});return r.syncSnapshot&&e.subscribe({next:s=>{"active"===s.status&&t.self.send({type:`xstate.snapshot.${e.id}`,snapshot:s,id:e.id})},error:()=>{}}),e}})(o,r);return i[a.id]=a,t.defer((()=>{if(a.status!==M.Stopped)try{a.start?.()}catch(e){return void t.self.send(u(a.id,e))}})),a}}function qt(t,e,s,n,{assignment:i}){if(!e.context)throw new Error("Cannot assign to undefined `context`. Ensure that `context` is defined in the machine config.");const o={},r={context:e.context,event:s.event,spawn:Ut(t,e,s.event,o),self:t?.self,system:t?.system};let a={};if("function"==typeof i)a=i(r,n);else for(const t of Object.keys(i)){const e=i[t];a[t]="function"==typeof e?e(r,n):e}return[zt(e,{context:Object.assign({},e.context,a),children:Object.keys(o).length?{...e.children,...o}:e.children})]}function Gt(t){function e(t,e){}return e.type="xstate.assign",e.assignment=t,e.resolve=qt,e}function Qt(t,e,s,n,{branches:i}){const o=i.find((t=>!t.guard||Z(t.guard,e.context,s.event,e)))?.actions;return[e,void 0,w(o)]}function Ft(t,e,s,n,{value:i,label:o}){return[e,{value:"function"==typeof i?i(s,n):i,label:o}]}function Xt({logger:t},{value:e,label:s}){s?t(s,e):t(e)}function Ht(t,e,s,n,{get:i}){return[e,void 0,w(i({context:s.context,event:s.event}))]}function Kt(t,e,s,n,{event:i,id:o,delay:r},{internalQueue:a}){const c=e.machine.implementations.delays;if("string"==typeof i)throw new Error(`Only event objects may be used with raise; use raise({ type: "${i}" }) instead`);const u="function"==typeof i?i(s,n):i;let f;if("string"==typeof r){const t=c&&c[r];f="function"==typeof t?t(s,n):t}else f="function"==typeof r?r(s,n):r;return"number"!=typeof f&&a.push(u),[e,{event:u,id:o,delay:f}]}function Lt(t,e){"number"!=typeof e.delay||t.self.delaySend(e)}function Yt(t,e){function s(t,e){}return s.type="xstate.raise",s.event=t,s.id=e?.id,s.delay=e?.delay,s.resolve=Kt,s.execute=Lt,s}let Zt=function(t){return t.Parent="#_parent",t.Internal="#_internal",t}({});function te(t,e,s,n,{to:i,event:o,id:r,delay:a},c){const u=e.machine.implementations.delays;if("string"==typeof o)throw new Error(`Only event objects may be used with sendTo; use sendTo({ type: "${o}" }) instead`);const f="function"==typeof o?o(s,n):o;let h;if("string"==typeof a){const t=u&&u[a];h="function"==typeof t?t(s,n):t}else h="function"==typeof a?a(s,n):a;const d="function"==typeof i?i(s,n):i;let p;if("string"==typeof d){if(p=d===Zt.Parent?t?.self._parent:d===Zt.Internal?t?.self:d.startsWith("#_")?e.children[d.slice(2)]:c.deferredActorIds?.includes(d)?d:e.children[d],!p)throw new Error(`Unable to send event to actor '${d}' from machine '${e.machine.id}'.`)}else p=d||t?.self;return[e,{to:p,event:f,id:r,delay:h}]}function ee(t,e,s){"string"==typeof s.to&&(s.to=e.children[s.to])}function se(t,e){"number"!=typeof e.delay?t.defer((()=>{const{to:s,event:n}=e;t?.system._relay(t.self,s,n.type===o?u(t.self.id,n.data):n)})):t.self.delaySend(e)}function ne(t,e,s){function n(t,e){}return n.type="xstate.sendTo",n.to=t,n.event=e,n.id=s?.id,n.delay=s?.delay,n.resolve=te,n.retryResolve=ee,n.execute=se,n}function ie(t,e){return ne(Zt.Parent,t,e)}function oe(t,e){return{config:t,transition:(e,s,n)=>({...e,context:t(e.context,s,n)}),getInitialState:(t,s)=>({status:"active",output:void 0,error:void 0,context:"function"==typeof e?e({input:s}):e}),getPersistedState:t=>t,restoreState:t=>t}}const re="$$xstate.resolve",ae="$$xstate.reject";const ce=oe((t=>{}),void 0);const ue={},fe=t=>"string"==typeof t?{type:t}:"function"==typeof t?"resolve"in t?{type:t.type}:{type:t.name}:t;class he{constructor(t,s){if(this.config=t,this.key=void 0,this.id=void 0,this.type=void 0,this.path=void 0,this.states=void 0,this.history=void 0,this.entry=void 0,this.exit=void 0,this.parent=void 0,this.machine=void 0,this.meta=void 0,this.output=void 0,this.order=-1,this.description=void 0,this.tags=[],this.transitions=void 0,this.always=void 0,this.parent=s._parent,this.key=s._key,this.machine=s._machine,this.path=this.parent?this.parent.path.concat(this.key):[],this.id=this.config.id||[this.machine.id,...this.path].join(e),this.type=this.config.type||(this.config.states&&Object.keys(this.config.states).length?"compound":this.config.history?"history":"atomic"),this.description=this.config.description,this.order=this.machine.idMap.size,this.machine.idMap.set(this.id,this),this.states=this.config.states?x(this.config.states,((t,e)=>new he(t,{_parent:this,_key:e,_machine:this.machine}))):ue,"compound"===this.type&&!this.config.initial)throw new Error(`No initial state specified for compound state node "#${this.id}". Try adding { initial: "${Object.keys(this.states)[0]}" } to the state config.`);this.history=!0===this.config.history?"shallow":this.config.history||!1,this.entry=w(this.config.entry).slice(),this.exit=w(this.config.exit).slice(),this.meta=this.config.meta,this.output="final"!==this.type&&this.parent?void 0:this.config.output,this.tags=w(t.tags).slice()}_initialize(){this.transitions=function(t){const e=new Map;if(t.config.on)for(const s of Object.keys(t.config.on)){if(s===n)throw new Error('Null events ("") cannot be specified as a transition key. Use `always: { ... }` instead.');const i=t.config.on[s];e.set(s,I(i).map((e=>ft(t,s,e))))}if(t.config.onDone){const s=`xstate.done.state.${t.id}`;e.set(s,I(t.config.onDone).map((e=>ft(t,s,e))))}for(const s of t.invoke){if(s.onDone){const n=`xstate.done.actor.${s.id}`;e.set(n,I(s.onDone).map((e=>ft(t,n,e))))}if(s.onError){const n=`xstate.error.actor.${s.id}`;e.set(n,I(s.onError).map((e=>ft(t,n,e))))}if(s.onSnapshot){const n=`xstate.snapshot.${s.id}`;e.set(n,I(s.onSnapshot).map((e=>ft(t,n,e))))}}for(const s of t.after){let t=e.get(s.eventType);t||(t=[],e.set(s.eventType,t)),t.push(s)}return e}(this),this.config.always&&(this.always=I(this.config.always).map((t=>ft(this,n,t)))),Object.keys(this.states).forEach((t=>{this.states[t]._initialize()}))}get definition(){return{id:this.id,key:this.key,version:this.machine.version,type:this.type,initial:this.initial?{target:this.initial.target,source:this,actions:this.initial.actions.map(fe),eventType:null,reenter:!1,toJSON:()=>({target:this.initial.target.map((t=>`#${t.id}`)),source:`#${this.id}`,actions:this.initial.actions.map(fe),eventType:null})}:void 0,history:this.history,states:x(this.states,(t=>t.definition)),on:this.on,transitions:[...this.transitions.values()].flat().map((t=>({...t,actions:t.actions.map(fe)}))),entry:this.entry.map(fe),exit:this.exit.map(fe),meta:this.meta,order:this.order||-1,output:this.output,invoke:this.invoke,description:this.description,tags:this.tags}}toJSON(){return this.definition}get invoke(){return J(this,"invoke",(()=>w(this.config.invoke).map(((t,e)=>{const{src:s,systemId:n}=t,i=t.id||O(this.id,e),o="string"==typeof s?s:`xstate#${O(this.id,e)}`;return{...t,src:o,id:i,systemId:n,toJSON(){const{onDone:e,onError:s,...n}=t;return{...n,type:"xstate.invoke",src:o,id:i}}}}))))}get on(){return J(this,"on",(()=>[...this.transitions].flatMap((([t,e])=>e.map((e=>[t,e])))).reduce(((t,[e,s])=>(t[e]=t[e]||[],t[e].push(s),t)),{})))}get after(){return J(this,"delayedTransitions",(()=>ut(this)))}get initial(){return J(this,"initial",(()=>function(t,e){const s="string"==typeof e?t.states[e]:e?t.states[e.target]:void 0;if(!s&&e)throw new Error(`Initial state node "${e}" not found on parent state node #${t.id}`);const n={source:t,actions:e&&"string"!=typeof e?w(e.actions):[],eventType:null,reenter:!1,target:s?[s]:[],toJSON:()=>({...n,source:`#${t.id}`,target:s?[`#${s.id}`]:[]})};return n}(this,this.config.initial)))}next(t,e){const s=e.type,n=[];let i;const o=J(this,`candidates-${s}`,(()=>{return e=s,(t=this).transitions.get(e)||[...t.transitions.keys()].filter((t=>{if("*"===t)return!0;if(!t.endsWith(".*"))return!1;const s=t.split("."),n=e.split(".");for(let t=0;t<s.length;t++){const e=s[t],i=n[t];if("*"===e)return t===s.length-1;if(e!==i)return!1}return!0})).sort(((t,e)=>e.length-t.length)).flatMap((e=>t.transitions.get(e)));var t,e}));for(const r of o){const{guard:o}=r,a=t.context;let c=!1;try{c=!o||Z(o,a,e,t)}catch(t){const e="string"==typeof o?o:"object"==typeof o?o.type:void 0;throw new Error(`Unable to evaluate guard ${e?`'${e}' `:""}in transition for event '${s}' in state node '${this.id}':\n${t.message}`)}if(c){n.push(...r.actions),i=r;break}}return i?[i]:void 0}get events(){return J(this,"events",(()=>{const{states:t}=this,e=new Set(this.ownEvents);if(t)for(const s of Object.keys(t)){const n=t[s];if(n.states)for(const t of n.events)e.add(`${t}`)}return Array.from(e)}))}get ownEvents(){const t=new Set([...this.transitions.keys()].filter((t=>this.transitions.get(t).some((t=>!(!t.target&&!t.actions.length&&!t.reenter))))));return Array.from(t)}}class de{constructor(t,e){this.config=t,this.version=void 0,this.implementations=void 0,this.types=void 0,this.__xstatenode=!0,this.idMap=new Map,this.root=void 0,this.id=void 0,this.states=void 0,this.events=void 0,this.__TContext=void 0,this.__TEvent=void 0,this.__TActor=void 0,this.__TAction=void 0,this.__TGuard=void 0,this.__TDelay=void 0,this.__TTag=void 0,this.__TInput=void 0,this.__TOutput=void 0,this.__TResolvedTypesMeta=void 0,this.id=t.id||"(machine)",this.implementations={actors:e?.actors??{},actions:e?.actions??{},delays:e?.delays??{},guards:e?.guards??{}},this.version=this.config.version,this.types=this.config.types??{},this.transition=this.transition.bind(this),this.getInitialState=this.getInitialState.bind(this),this.restoreState=this.restoreState.bind(this),this.start=this.start.bind(this),this.getPersistedState=this.getPersistedState.bind(this),this.root=new he(t,{_key:this.id,_machine:this}),this.root._initialize(),this.states=this.root.states,this.events=this.root.events}provide(t){const{actions:e,guards:s,actors:n,delays:i}=this.implementations;return new de(this.config,{actions:{...e,...t.actions},guards:{...s,...t.guards},actors:{...n,...t.actors},delays:{...i,...t.delays}})}resolveState(t){const e=nt(gt(this.root,t.value)),s=Array.from(e);return this.createState({...t,value:Ct(this.root,t.value),configuration:s,status:at(e,this.root)?"done":t.status})}resolveStateValue(t,...[e]){const s=Ct(this.root,t);return this.resolveState(Bt.from(s,e,this))}transition(t,e,s){if(function(t){return t.type.startsWith("xstate.error.actor")}(e)&&!t.nextEvents.some((t=>t===e.type)))return zt(t,{status:"error",error:e.data});const{state:n}=Nt(t,e,s);return n}microstep(t,e,s){return Nt(t,e,s).microstates}getTransitionData(t,e){return mt(this.root,t.value,t,e)||[]}getPreInitialState(t,e,s){const{context:n}=this.config,i=this.resolveState(this.createState({value:{},context:"function"!=typeof n&&n?n:{},meta:void 0,configuration:Jt(this.root),children:{},status:"active"}));if("function"==typeof n){const o=({spawn:t,event:e})=>n({spawn:t,input:e.input});return Pt(i,e,t,[Gt(o)],s)}return i}getInitialState(t,e){const s=f(e),n=[],i=this.getPreInitialState(t,s,n),o=It([{target:[...lt(this.root)],source:this.root,reenter:!0,actions:[],eventType:null,toJSON:null}],i,t,s,!0,n),{state:r}=Nt(o,s,t,n);return r}start(t){Object.values(t.children).forEach((t=>{"active"===t.getSnapshot().status&&t.start()}))}getStateNodeById(t){const s=t.split(e),n=s.slice(1),i=ct(s[0])?s[0].slice(1):s[0],o=this.idMap.get(i);if(!o)throw new Error(`Child state node '#${i}' does not exist on machine '${this.id}'`);return vt(o,n)}get definition(){return this.root.definition}toJSON(){return this.definition}getPersistedState(t){return function(t){const{configuration:e,tags:s,machine:n,children:i,context:o,...r}=t,a={};for(const t in i){const e=i[t];a[t]={state:e.getPersistedState(),src:e.src,systemId:e._systemId}}return{...r,context:Wt(o),children:a}}(t)}createState(t){return t instanceof Bt?t:new Bt(t,this)}restoreState(t,e){const s={},n=t.children;Object.keys(n).forEach((t=>{const i=n[t],o=i.state,r=i.src,a=r?j(this,r)?.src:void 0;if(!a)return;const c=a.restoreState?.(o,e),u=D(a,{id:t,parent:e?.self,state:c,systemId:i.systemId});s[t]=u}));const i=this.createState(new Bt({...t,children:s},this));let o=new Set;return function t(e,s){if(!o.has(e)){o.add(e);for(let n in e){const i=e[n];if(i&&"object"==typeof i){if("xstate$$type"in i&&i.xstate$$type===A){e[n]=s[i.id];continue}t(i,s)}}}}(i.context,s),i}}const pe={timeout:1e4};t.Actor=R,t.ActorStatus=M,t.InterpreterStatus=P,t.SimulatedClock=class{constructor(){this.timeouts=new Map,this._now=0,this._id=0}now(){return this._now}getId(){return this._id++}setTimeout(t,e){const s=this.getId();return this.timeouts.set(s,{start:this.now(),timeout:e,fn:t}),s}clearTimeout(t){this.timeouts.delete(t)}set(t){if(this._now>t)throw new Error("Unable to travel back in time");this._now=t,this.flushTimeouts()}flushTimeouts(){[...this.timeouts].sort((([t,e],[s,n])=>{const i=e.start+e.timeout;return n.start+n.timeout>i?-1:1})).forEach((([t,e])=>{this.now()-e.start>=e.timeout&&(this.timeouts.delete(t),e.fn.call(null))}))}increment(t){this._now+=t,this.flushTimeouts()}},t.SpecialTargets=Zt,t.State=Bt,t.StateMachine=de,t.StateNode=he,t.and=function(t){function e(t,e){return!1}return e.check=L,e.guards=t,e},t.assign=Gt,t.cancel=W,t.choose=function(t){function e(t,e){}return e.type="xstate.choose",e.branches=t,e.resolve=Qt,e},t.createActor=D,t.createEmptyActor=function(){return D(ce)},t.createMachine=function(t,e){return new de(t,e)},t.escalate=function(t,e){return ie((e=>({type:o,data:"function"==typeof t?t(e):t})),e)},t.forwardTo=function(t,e){return ne(t,(({event:t})=>t),e)},t.fromCallback=function(t){return{config:t,start:(t,{self:e,system:s})=>{s._relay(e,e,{type:"xstate.create"})},transition:(e,s,{self:n,system:i})=>{if("xstate.create"===s.type){const s=t=>{"stopped"!==e.status&&n._parent&&i._relay(n,n._parent,t)},o=t=>{e._receivers.add(t)};return e._dispose=t({input:e.input,system:i,self:n,sendBack:s,receive:o}),e}return s.type===r?("function"==typeof(e={...e,status:"stopped",error:void 0})._dispose&&e._dispose(),e):(e._receivers.forEach((t=>t(s))),e)},getInitialState:(t,e)=>({status:"active",output:void 0,error:void 0,input:e,_receivers:new Set,_dispose:void 0}),getPersistedState:({_dispose:t,_receivers:e,...s})=>s,restoreState:t=>({_receivers:new Set,_dispose:void 0,...t})}},t.fromEventObservable=function(t){const e="$$xstate.error",s="$$xstate.complete";return{config:t,transition:(t,n)=>{if("active"!==t.status)return t;switch(n.type){case e:return{...t,status:"error",error:n.data,input:void 0,_subscription:void 0};case s:return{...t,status:"done",input:void 0,_subscription:void 0};case r:return t._subscription.unsubscribe(),{...t,status:"stopped",input:void 0,_subscription:void 0};default:return t}},getInitialState:(t,e)=>({status:"active",output:void 0,error:void 0,context:void 0,input:e,_subscription:void 0}),start:(n,{self:i,system:o})=>{"done"!==n.status&&(n._subscription=t({input:n.input,system:o,self:i}).subscribe({next:t=>{i._parent&&o._relay(i,i._parent,t)},error:t=>{o._relay(i,i,{type:e,data:t})},complete:()=>{o._relay(i,i,{type:s})}}))},getPersistedState:({_subscription:t,...e})=>e,restoreState:t=>({...t,_subscription:void 0})}},t.fromObservable=function(t){const e="$$xstate.next",s="$$xstate.error",n="$$xstate.complete";return{config:t,transition:(t,i,{self:o,id:a,defer:c,system:u})=>{if("active"!==t.status)return t;switch(i.type){case e:return{...t,context:i.data};case s:return{...t,status:"error",error:i.data,input:void 0,_subscription:void 0};case n:return{...t,status:"done",input:void 0,_subscription:void 0};case r:return t._subscription.unsubscribe(),{...t,status:"stopped",input:void 0,_subscription:void 0};default:return t}},getInitialState:(t,e)=>({status:"active",output:void 0,error:void 0,context:void 0,input:e,_subscription:void 0}),start:(i,{self:o,system:r})=>{"done"!==i.status&&(i._subscription=t({input:i.input,system:r,self:o}).subscribe({next:t=>{r._relay(o,o,{type:e,data:t})},error:t=>{r._relay(o,o,{type:s,data:t})},complete:()=>{r._relay(o,o,{type:n})}}))},getPersistedState:({_subscription:t,...e})=>e,restoreState:t=>({...t,_subscription:void 0})}},t.fromPromise=function(t){return{config:t,transition:(t,e)=>{if("active"!==t.status)return t;switch(e.type){case re:{const s=e.data;return{...t,status:"done",output:s,input:void 0}}case ae:return{...t,status:"error",error:e.data,input:void 0};case r:return{...t,status:"stopped",input:void 0};default:return t}},start:(e,{self:s,system:n})=>{if("active"!==e.status)return;Promise.resolve(t({input:e.input,system:n,self:s})).then((t=>{"active"===s.getSnapshot().status&&n._relay(s,s,{type:re,data:t})}),(t=>{"active"===s.getSnapshot().status&&n._relay(s,s,{type:ae,data:t})}))},getInitialState:(t,e)=>({status:"active",output:void 0,error:void 0,input:e}),getPersistedState:t=>t,restoreState:t=>t}},t.fromTransition=oe,t.getStateNodes=gt,t.interpret=V,t.log=function(t=(({context:t,event:e})=>({context:t,event:e})),e){function s(t,e){}return s.type="xstate.log",s.value=t,s.label=e,s.resolve=Ft,s.execute=Xt,s},t.mapState=function(t,e){let s;for(const n of Object.keys(t))v(n,e)&&(!s||e.length>s.length)&&(s=n);return t[s]},t.matchesState=v,t.not=function(t){function e(t,e){return!1}return e.check=K,e.guards=[t],e},t.or=function(t){function e(t,e){return!1}return e.check=Y,e.guards=t,e},t.pathToStateValue=_,t.pure=function(t){function e(t,e){}return e.type="xstate.pure",e.get=t,e.resolve=Ht,e},t.raise=Yt,t.sendParent=ie,t.sendTo=ne,t.spawn=G,t.stateIn=function(t){function e(t,e){return!1}return e.check=H,e.stateValue=t,e},t.stop=X,t.toObserver=E,t.waitFor=function(t,e,s){const n={...pe,...s};return new Promise(((s,i)=>{let o=!1;const r=n.timeout===1/0?void 0:setTimeout((()=>{u.unsubscribe(),i(new Error(`Timeout of ${n.timeout} ms exceeded`))}),n.timeout),a=()=>{clearTimeout(r),o=!0,u?.unsubscribe()};function c(t){e(t)&&(a(),s(t))}let u;c(t.getSnapshot()),o||(u=t.subscribe({next:c,error:t=>{a(),i(t)},complete:()=>{a(),i(new Error("Actor terminated without satisfying predicate"))}}),o&&u.unsubscribe())}))},Object.defineProperty(t,"__esModule",{value:!0})}));
1
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).XState={})}(this,(function(t){"use strict";const e=".",s="",n="",i="xstate.init",o="xstate.error",r="xstate.stop";class a{constructor(t){this._process=t,this._active=!1,this._current=null,this._last=null}start(){this._active=!0,this.flush()}clear(){this._current&&(this._current.next=null,this._last=this._current)}enqueue(t){const e={value:t,next:null};if(this._current)return this._last.next=e,void(this._last=e);this._current=e,this._last=e,this._active&&this.flush()}flush(){for(;this._current;){const t=this._current;this._process(t.value),this._current=t.next}this._last=null}}function c(t,e){return{type:`xstate.done.state.${t}`,output:e}}function u(t,e){return{type:`xstate.error.actor.${t}`,data:e}}function f(t){return{type:i,input:t}}function h(){const t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:window;if(t.__xstate__)return t.__xstate__}const d=t=>{const e=h();e&&e.register(t)};function p(t){setTimeout((()=>{throw t}))}const l="function"==typeof Symbol&&Symbol.observable||"@@observable";let y=0;function v(t,e){const s=m(t),n=m(e);return"string"==typeof n?"string"==typeof s&&n===s:"string"==typeof s?s in n:Object.keys(s).every((t=>t in n&&v(s[t],n[t])))}function g(t){try{return k(t)?t:t.toString().split(e)}catch(e){throw new Error(`'${t}' is not a valid state path.`)}}function m(t){if("object"==typeof(e=t)&&"value"in e&&"context"in e&&"event"in e)return t.value;var e;if(k(t))return _(t);if("string"!=typeof t)return t;return _(g(t))}function _(t){if(1===t.length)return t[0];const e={};let s=e;for(let e=0;e<t.length-1;e++)if(e===t.length-2)s[t[e]]=t[e+1];else{const n=s;s={},n[t[e]]=s}return e}function x(t,e){const s={},n=Object.keys(t);for(let i=0;i<n.length;i++){const o=n[i];s[o]=e(t[o],o,t,i)}return s}function S(t){return[].concat(...t)}function b(t){return k(t)?t:[t]}function w(t){return void 0===t?[]:b(t)}function $(t,e,s,n){return"function"==typeof t?t({context:e,event:s,self:n}):t}function k(t){return Array.isArray(t)}function I(t){return b(t).map((t=>void 0===t||"string"==typeof t?{target:t}:t))}function T(t){if(void 0!==t&&t!==s)return w(t)}function E(t,e,s){const n="object"==typeof t,i=n?t:void 0;return{next:(n?t.next:t)?.bind(i),error:(n?t.error:e)?.bind(i),complete:(n?t.complete:s)?.bind(i)}}function O(t,e){return`${t}[${e}]`}function j(t,e){if(e.startsWith("xstate#")){const[,s]=e.match(/\[(\d+)\]$/),n=t.getStateNodeById(e.slice(7,-(s.length+2))).config.invoke;return{src:(Array.isArray(n)?n[s]:n).src,input:void 0}}const s=t.implementations.actors[e];return s?"transition"in s?{src:s,input:void 0}:s:void 0}const A=1;let M=function(t){return t[t.NotStarted=0]="NotStarted",t[t.Running=1]="Running",t[t.Stopped=2]="Stopped",t}({});const N={clock:{setTimeout:(t,e)=>setTimeout(t,e),clearTimeout:t=>clearTimeout(t)},logger:console.log.bind(console),devTools:!1};class P{constructor(t,e){this.logic=t,this._state=void 0,this.clock=void 0,this.options=void 0,this.id=void 0,this.mailbox=new a(this._process.bind(this)),this.delayedEventsMap={},this.observers=new Set,this.logger=void 0,this._processingStatus=M.NotStarted,this._parent=void 0,this.ref=void 0,this._actorScope=void 0,this._systemId=void 0,this.sessionId=void 0,this.system=void 0,this._doneEvent=void 0,this.src=void 0,this._deferred=[];const s={...N,...e},{clock:n,logger:i,parent:o,id:r,systemId:c,inspect:u}=s;this.system=o?.system??function(t){const e=new Map,s=new Map,n=new WeakMap,i=new Set,o={_bookId:()=>"x:"+y++,_register:(t,s)=>(e.set(t,s),t),_unregister:t=>{e.delete(t.sessionId);const i=n.get(t);void 0!==i&&(s.delete(i),n.delete(t))},get:t=>s.get(t),_set:(t,e)=>{const i=s.get(t);if(i&&i!==e)throw new Error(`Actor with system ID '${t}' already exists.`);s.set(t,e),n.set(e,t)},inspect:t=>{i.add(t)},_sendInspectionEvent:e=>{const s={...e,rootId:t.sessionId};i.forEach((t=>t.next?.(s)))},_relay:(t,e,s)=>{o._sendInspectionEvent({type:"@xstate.event",sourceRef:t,actorRef:e,event:s}),e._send(s)}};return o}(this),u&&!o&&this.system.inspect(E(u)),this.sessionId=this.system._bookId(),this.id=r??this.sessionId,this.logger=i,this.clock=n,this._parent=o,this.options=s,this.src=s.src??t,this.ref=this,this._actorScope={self:this,id:this.id,sessionId:this.sessionId,logger:this.logger,defer:t=>{this._deferred.push(t)},system:this.system,stopChild:t=>{if(t._parent!==this)throw new Error(`Cannot stop child actor ${t.id} of ${this.id} because it is not a child`);t._stop()}},this.send=this.send.bind(this),this.system._sendInspectionEvent({type:"@xstate.actor",actorRef:this}),this._initState(e?.state),c&&"active"===this._state.status&&(this._systemId=c,this.system._set(c,this))}_initState(t){this._state=t?this.logic.restoreState?this.logic.restoreState(t,this._actorScope):t:this.logic.getInitialState(this._actorScope,this.options?.input)}update(t,e){let s;for(this._state=t;s=this._deferred.shift();)s();for(const e of this.observers)try{e.next?.(t)}catch(t){p(t)}switch(this._state.status){case"done":this._stopProcedure(),this._complete(),this._doneEvent=(n=this.id,i=this._state.output,{type:`xstate.done.actor.${n}`,output:i}),this._parent&&this.system._relay(this,this._parent,this._doneEvent);break;case"error":this._stopProcedure(),this._error(this._state.error),this._parent&&this.system._relay(this,this._parent,u(this.id,this._state.error))}var n,i;this.system._sendInspectionEvent({type:"@xstate.snapshot",actorRef:this,event:e,snapshot:t})}subscribe(t,e,s){const n=E(t,e,s);if(this._processingStatus!==M.Stopped)this.observers.add(n);else try{n.complete?.()}catch(t){p(t)}return{unsubscribe:()=>{this.observers.delete(n)}}}start(){if(this._processingStatus===M.Running)return this;this.system._register(this.sessionId,this),this._systemId&&this.system._set(this._systemId,this),this._processingStatus=M.Running;const t=f(this.options.input);this.system._sendInspectionEvent({type:"@xstate.event",sourceRef:this._parent,actorRef:this,event:t});switch(this._state.status){case"done":this.update(this._state,t);case"error":return this}if(this.logic.start)try{this.logic.start(this._state,this._actorScope)}catch(t){return this._stopProcedure(),this._error(t),this._parent?.send(u(this.id,t)),this}return this.update(this._state,t),this.options.devTools&&this.attachDevTools(),this.mailbox.start(),this}_process(t){let e,s;try{e=this.logic.transition(this._state,t,this._actorScope)}catch(t){s={err:t}}if(s){const{err:t}=s;return this._stopProcedure(),this._error(t),void this._parent?.send(u(this.id,t))}this.update(e,t),t.type===r&&(this._stopProcedure(),this._complete())}_stop(){return this._processingStatus===M.Stopped?this:(this.mailbox.clear(),this._processingStatus===M.NotStarted?(this._processingStatus=M.Stopped,this):(this.mailbox.enqueue({type:r}),this))}stop(){if(this._parent)throw new Error("A non-root actor cannot be stopped directly.");return this._stop()}_complete(){for(const t of this.observers)try{t.complete?.()}catch(t){p(t)}this.observers.clear()}_error(t){if(!this.observers.size)return void(this._parent||p(t));let e=!1;for(const s of this.observers){const n=s.error;e||=!n;try{n?.(t)}catch(t){p(t)}}this.observers.clear(),e&&p(t)}_stopProcedure(){if(this._processingStatus!==M.Running)return this;for(const t of Object.keys(this.delayedEventsMap))this.clock.clearTimeout(this.delayedEventsMap[t]);return this.mailbox.clear(),this.mailbox=new a(this._process.bind(this)),this._processingStatus=M.Stopped,this.system._unregister(this),this}_send(t){this._processingStatus!==M.Stopped&&this.mailbox.enqueue(t)}send(t){this.system._relay(void 0,this,t)}delaySend(t){const{event:e,id:s,delay:n}=t,i=this.clock.setTimeout((()=>{this.system._relay(this,t.to??this,e)}),n);s&&(this.delayedEventsMap[s]=i)}cancel(t){this.clock.clearTimeout(this.delayedEventsMap[t]),delete this.delayedEventsMap[t]}attachDevTools(){const{devTools:t}=this.options;if(t){("function"==typeof t?t:d)(this)}}toJSON(){return{xstate$$type:A,id:this.id}}getPersistedState(t){return this.logic.getPersistedState(this._state,t)}[l](){return this}getSnapshot(){return this._state}}function R(t,e){return new P(t,e)}const D=R,V=new WeakMap;function C(t,e,s){let n=V.get(t);return n?e in n||(n[e]=s()):(n={[e]:s()},V.set(t,n)),n[e]}function J(t,e,s,n,{sendId:i}){return[e,"function"==typeof i?i(s,n):i]}function B(t,e){t.self.cancel(e)}function z(t){function e(t,e){}return e.type="xstate.cancel",e.sendId=t,e.resolve=J,e.execute=B,e}function W(t,e,s,n,{id:i,systemId:o,src:r,input:a,syncSnapshot:c}){const u="string"==typeof r?j(e.machine,r):{src:r,input:void 0},f="function"==typeof i?i(s):i;let h;if(u){const n=a||u.input;h=R(u.src,{id:f,src:r,parent:t?.self,systemId:o,input:"function"==typeof n?n({context:e.context,event:s.event,self:t?.self}):n}),c&&h.subscribe({next:e=>{"active"===e.status&&t.self.send({type:`xstate.snapshot.${i}`,snapshot:e})},error:()=>{}})}return[Bt(e,{children:{...e.children,[f]:h}}),{id:i,actorRef:h}]}function U(t,{id:e,actorRef:s}){s&&t.defer((()=>{if(s._processingStatus!==M.Stopped)try{s.start?.()}catch(s){return void t.self.send(u(e,s))}}))}function q(...[t,{id:e,systemId:s,input:n,syncSnapshot:i=!1}={}]){function o(t,e){}return o.type="xstate.spawn",o.id=e,o.systemId=s,o.src=t,o.input=n,o.syncSnapshot=i,o.resolve=W,o.execute=U,o}function G(t,e,s,n,{actorRef:i}){const o="function"==typeof i?i(s,n):i,r="string"==typeof o?e.children[o]:o;let a=e.children;return r&&(a={...a},delete a[r.id]),[Bt(e,{children:a}),r]}function Q(t,e){e&&(t.system._unregister(e),e._processingStatus===M.Running?t.defer((()=>{t.stopChild(e)})):t.stopChild(e))}function F(t){function e(t,e){}return e.type="xstate.stop",e.actorRef=t,e.resolve=G,e.execute=Q,e}function X(t,e,{stateValue:s}){if("string"==typeof s&&at(s)){const e=t.machine.getStateNodeById(s);return t.configuration.some((t=>t===e))}return t.matches(s)}function H(t,{context:e,event:s},{guards:n}){return!Y(n[0],e,s,t)}function K(t,{context:e,event:s},{guards:n}){return n.every((n=>Y(n,e,s,t)))}function L(t,{context:e,event:s},{guards:n}){return n.some((n=>Y(n,e,s,t)))}function Y(t,e,s,n){const{machine:i}=n,o="function"==typeof t,r=o?t:i.implementations.guards["string"==typeof t?t:t.type];if(!o&&!r)throw new Error(`Guard '${"string"==typeof t?t:t.type}' is not implemented.'.`);if("function"!=typeof r)return Y(r,e,s,n);const a={context:e,event:s},c=o||"string"==typeof t?void 0:"params"in t?"function"==typeof t.params?t.params({context:e,event:s}):t.params:void 0;if(!("check"in r))return r(a,c);return r.check(n,a,r)}const Z=t=>"atomic"===t.type||"final"===t.type;function tt(t){return Object.values(t.states).filter((t=>"history"!==t.type))}function et(t,e){const s=[];if(e===t)return s;let n=t.parent;for(;n&&n!==e;)s.push(n),n=n.parent;return s}function st(t){const e=new Set(t),s=new Set(t),n=it(s);for(const t of e)if("compound"!==t.type||n.get(t)&&n.get(t).length){if("parallel"===t.type)for(const e of tt(t))if("history"!==e.type&&!s.has(e)){const t=dt(e);for(const e of t)s.add(e)}}else dt(t).forEach((t=>s.add(t)));for(const t of s){let e=t.parent;for(;e;)s.add(e),e=e.parent}return s}function nt(t,e){const s=e.get(t);if(!s)return{};if("compound"===t.type){const t=s[0];if(!t)return{};if(Z(t))return t.key}const n={};for(const t of s)n[t.key]=nt(t,e);return n}function it(t){const e=new Map;for(const s of t)e.has(s)||e.set(s,[]),s.parent&&(e.has(s.parent)||e.set(s.parent,[]),e.get(s.parent).push(s));return e}function ot(t,e){return nt(t,it(st(e)))}function rt(t,e){return"compound"===e.type?tt(e).some((e=>"final"===e.type&&t.has(e))):"parallel"===e.type?tt(e).every((e=>rt(t,e))):"final"===e.type}const at=t=>"#"===t[0];function ct(t){const e=t.config.after;if(!e)return[];return Object.keys(e).flatMap(((s,n)=>{const i=e[s],o="string"==typeof i?{target:i}:i,r=isNaN(+s)?s:+s,a=((e,s)=>{const n=(o="function"==typeof e?`${t.id}:delay[${s}]`:e,r=t.id,{type:`xstate.after(${o})${r?`#${r}`:""}`}),i=n.type;var o,r;return t.entry.push(Lt(n,{id:i,delay:e})),t.exit.push(z(i)),i})(r,n);return w(o).map((t=>({...t,event:a,delay:r})))})).map((e=>{const{delay:s}=e;return{...ut(t,e.event,e),delay:s}}))}function ut(t,s,n){const i=T(n.target),o=n.reenter??!1,r=function(t,s){if(void 0===s)return;return s.map((s=>{if("string"!=typeof s)return s;if(at(s))return t.machine.getStateNodeById(s);const n=s[0]===e;if(n&&!t.parent)return yt(t,s.slice(1));const i=n?t.key+s:s;if(!t.parent)throw new Error(`Invalid target: "${s}" is not a valid target from the root node. Did you mean ".${s}"?`);try{return yt(t.parent,i)}catch(e){throw new Error(`Invalid transition definition for state node '${t.id}':\n${e.message}`)}}))}(t,i),a={...n,actions:w(n.actions),guard:n.guard,target:r,source:t,reenter:o,eventType:s,toJSON:()=>({...a,source:`#${t.id}`,target:r?r.map((t=>`#${t.id}`)):void 0})};return a}function ft(t){const e=T(t.config.target);return e?{target:e.map((e=>"string"==typeof e?yt(t.parent,e):e))}:t.parent.initial}function ht(t){return"history"===t.type}function dt(t){const e=pt(t);for(const s of e)for(const n of et(s,t))e.add(n);return e}function pt(t){const e=new Set;return function t(s){if(!e.has(s))if(e.add(s),"compound"===s.type)t(s.initial.target[0]);else if("parallel"===s.type)for(const e of tt(s))t(e)}(t),e}function lt(t,e){if(at(e))return t.machine.getStateNodeById(e);if(!t.states)throw new Error(`Unable to retrieve child state '${e}' from '${t.id}'; no child states exist.`);const s=t.states[e];if(!s)throw new Error(`Child state '${e}' does not exist on '${t.id}'`);return s}function yt(t,e){if("string"==typeof e&&at(e))try{return t.machine.getStateNodeById(e)}catch(t){}const s=g(e).slice();let n=t;for(;s.length;){const t=s.shift();if(!t.length)break;n=lt(n,t)}return n}function vt(t,e){const s=e instanceof Jt?e.value:m(e);if("string"==typeof s)return[t,t.states[s]];const n=Object.keys(s),i=n.map((e=>lt(t,e))).filter(Boolean);return[t.machine.root,t].concat(i,n.reduce(((e,n)=>{const i=lt(t,n);if(!i)return e;const o=vt(i,s[n]);return e.concat(o)}),[]))}function gt(t,e,s,n){return"string"==typeof e?function(t,e,s,n){const i=lt(t,e).next(s,n);return i&&i.length?i:t.next(s,n)}(t,e,s,n):1===Object.keys(e).length?function(t,e,s,n){const i=Object.keys(e),o=gt(lt(t,i[0]),e[i[0]],s,n);return o&&o.length?o:t.next(s,n)}(t,e,s,n):function(t,e,s,n){const i=[];for(const o of Object.keys(e)){const r=e[o];if(!r)continue;const a=gt(lt(t,o),r,s,n);a&&i.push(...a)}return i.length?i:t.next(s,n)}(t,e,s,n)}function mt(t){return Object.keys(t.states).map((e=>t.states[e])).filter((t=>"history"===t.type))}function _t(t,e){let s=t;for(;s.parent&&s.parent!==e;)s=s.parent;return s.parent===e}function xt(t,e){const s=new Set(t),n=new Set(e);for(const t of s)if(n.has(t))return!0;for(const t of n)if(s.has(t))return!0;return!1}function St(t,e,s){const n=new Set;for(const i of t){let t=!1;const o=new Set;for(const r of n)if(xt($t([i],e,s),$t([r],e,s))){if(!_t(i.source,r.source)){t=!0;break}o.add(r)}if(!t){for(const t of o)n.delete(t);n.add(i)}}return Array.from(n)}function bt(t,e){if(!t.target)return[];const s=new Set;for(const n of t.target)if(ht(n))if(e[n.id])for(const t of e[n.id])s.add(t);else for(const t of bt(ft(n),e))s.add(t);else s.add(n);return[...s]}function wt(t,e){const s=bt(t,e);if(!s)return;if(!t.reenter&&s.every((e=>e===t.source||_t(e,t.source))))return t.source;const n=function(t){const[e,...s]=t;for(const t of et(e,void 0))if(s.every((e=>_t(e,t))))return t}(s.concat(t.source));return n||(t.reenter?void 0:t.source.machine.root)}function $t(t,e,s){const n=new Set;for(const i of t)if(i.target?.length){const t=wt(i,s);i.reenter&&i.source===t&&n.add(t);for(const s of e)_t(s,t)&&n.add(s)}return[...n]}function kt(t,e,s,n,i,o){if(!t.length)return e;const r=new Set(e.configuration);let a=e.historyValue;const u=St(t,r,a);let f=e;i||([f,a]=function(t,e,s,n,i,o,r){let a=t;const c=$t(n,i,o);let u;c.sort(((t,e)=>e.order-t.order));for(const t of c)for(const e of mt(t)){let s;s="deep"===e.history?e=>Z(e)&&_t(e,t):e=>e.parent===t,u??={...o},u[e.id]=Array.from(i).filter(s)}for(const t of c)a=Mt(a,e,s,[...t.exit,...t.invoke.map((t=>F(t.id)))],r),i.delete(t);return[a,u||o]}(f,n,s,u,r,a,o)),f=Mt(f,n,s,u.flatMap((t=>t.actions)),o),f=function(t,e,s,n,i,o,r,a){let u=t;const f=new Set,h=new Set;Tt(n,r,h,f),a&&h.add(t.machine.root);const d=new Set;for(const n of[...f].sort(((t,e)=>t.order-e.order))){i.add(n);const r=[];r.push(...n.entry);for(const t of n.invoke)r.push(q(t.src,{...t,syncSnapshot:!!t.onSnapshot}));if(h.has(n)){const t=n.initial.actions;r.push(...t)}if(u=Mt(u,e,s,r,o,n.invoke.map((t=>t.id))),"final"===n.type){const r=n.parent;let a="parallel"===r?.type?r:r?.parent,f=a||n;for("compound"===r?.type&&o.push(c(r.id,n.output?$(n.output,u.context,e,s.self):void 0));"parallel"===a?.type&&!d.has(a)&&rt(i,a);)d.add(a),o.push(c(a.id)),f=a,a=a.parent;if(a)continue;u=Bt(u,{status:"done",output:It(u,e,s,t.configuration[0].machine.root,f)})}}return u}(f,n,s,u,r,o,a,i);const h=[...r];"done"===f.status&&(f=Mt(f,n,s,h.sort(((t,e)=>e.order-t.order)).flatMap((t=>t.exit)),o));try{return a===e.historyValue&&function(t,e){if(t.length!==e.size)return!1;for(const s of t)if(!e.has(s))return!1;return!0}(e.configuration,r)?f:Bt(f,{configuration:h,historyValue:a})}catch(t){throw t}}function It(t,e,s,n,i){if(!n.output)return;const o=c(i.id,i.output&&i.parent?$(i.output,t.context,e,s.self):void 0);return $(n.output,t.context,o,s.self)}function Tt(t,e,s,n){for(const i of t){const t=wt(i,e);for(const o of i.target||[])ht(o)||i.source===o&&i.source===t&&!i.reenter||(n.add(o),s.add(o)),Et(o,e,s,n);const o=bt(i,e);for(const r of o){const o=et(r,t);"parallel"===t?.type&&o.push(t),Ot(n,e,s,o,!i.source.parent&&i.reenter?void 0:t)}}}function Et(t,e,s,n){if(ht(t))if(e[t.id]){const i=e[t.id];for(const t of i)n.add(t),Et(t,e,s,n);for(const o of i)jt(o,t.parent,n,e,s)}else{const i=ft(t);for(const o of i.target)n.add(o),i===t.parent?.initial&&s.add(t.parent),Et(o,e,s,n);for(const o of i.target)jt(o,t,n,e,s)}else if("compound"===t.type){const[i]=t.initial.target;ht(i)||(n.add(i),s.add(i)),Et(i,e,s,n),jt(i,t,n,e,s)}else if("parallel"===t.type)for(const i of tt(t).filter((t=>!ht(t))))[...n].some((t=>_t(t,i)))||(ht(i)||(n.add(i),s.add(i)),Et(i,e,s,n))}function Ot(t,e,s,n,i){for(const o of n)if(i&&!_t(o,i)||t.add(o),"parallel"===o.type)for(const n of tt(o).filter((t=>!ht(t))))[...t].some((t=>_t(t,n)))||(t.add(n),Et(n,e,s,t))}function jt(t,e,s,n,i){Ot(s,n,i,et(t,e))}function At(t,e,s,n,i,o){const{machine:r}=t;let a=t;for(const t of n){const n="function"==typeof t,c=n?t:r.implementations.actions["string"==typeof t?t:t.type];if(!c)continue;const u={context:a.context,event:e,self:s?.self,system:s?.system},f=n||"string"==typeof t?void 0:"params"in t?"function"==typeof t.params?t.params({context:a.context,event:e}):t.params:void 0;if(!("resolve"in c)){s?.self._processingStatus===M.Running?c(u,f):s?.defer((()=>{c(u,f)}));continue}const h=c,[d,p,l]=h.resolve(s,a,u,f,c,i);a=d,"retryResolve"in h&&o?.push([h,p]),"execute"in h&&(s?.self._processingStatus===M.Running?h.execute(s,p):s?.defer(h.execute.bind(null,s,p))),l&&(a=At(a,e,s,l,i,o))}return a}function Mt(t,e,s,n,i,o){const r=o?[]:void 0,a=At(t,e,s,n,{internalQueue:i,deferredActorIds:o},r);return r?.forEach((([t,e])=>{t.retryResolve(s,a,e)})),a}function Nt(t,e,s,n=[]){let o=t;const a=[];if(e.type===r)return o=Bt(Pt(o,e,s),{status:"stopped"}),a.push(o),{state:o,microstates:a};let c=e;if(c.type!==i){o=kt(Rt(c,o),t,s,c,!1,n),a.push(o)}let u=!0;for(;"active"===o.status;){let t=u?Dt(o,c):[];const e=t.length?o:void 0;if(!t.length){if(!n.length)break;c=n.shift(),t=Rt(c,o)}o=kt(t,o,s,c,!1,n),u=o!==e,a.push(o)}return"active"!==o.status&&Pt(o,c,s),{state:o,microstates:a}}function Pt(t,e,s){return Mt(t,e,s,Object.values(t.children).map((t=>F(t))),[])}function Rt(t,e){return e.machine.getTransitionData(e,t)}function Dt(t,e){const s=new Set,n=t.configuration.filter(Z);for(const i of n)t:for(const n of[i].concat(et(i,void 0)))if(n.always)for(const i of n.always)if(void 0===i.guard||Y(i.guard,t.context,e,t)){s.add(i);break t}return St(Array.from(s),new Set(t.configuration),t.historyValue)}function Vt(t,e){return ot(t,[...st(vt(t,e))])}function Ct(t){const e=[],s=t.initial,n=new Set;Tt([s],{},new Set([t]),n);for(const t of[...n].sort(((t,e)=>t.order-e.order)))e.push(t);return e}class Jt{static from(t,e={},s){if(t instanceof Jt)return t.context!==e?new Jt({value:t.value,context:e,meta:{},configuration:[],children:{},status:"active"},s):t;const n=st(vt(s.root,t));return new Jt({value:t,context:e,meta:void 0,configuration:Array.from(n),children:{},status:"active"},s)}constructor(t,e){this.machine=e,this.tags=void 0,this.value=void 0,this.status=void 0,this.error=void 0,this.context=void 0,this.historyValue={},this.configuration=void 0,this.children=void 0,this.context=t.context,this.historyValue=t.historyValue||{},this.matches=this.matches.bind(this),this.toStrings=this.toStrings.bind(this),this.configuration=t.configuration??Array.from(st(vt(e.root,t.value))),this.children=t.children,this.value=ot(e.root,this.configuration),this.tags=new Set(S(this.configuration.map((t=>t.tags)))),this.status=t.status,this.output=t.output,this.error=t.error}toStrings(t=this.value){if("string"==typeof t)return[t];const s=Object.keys(t);return s.concat(...s.map((s=>this.toStrings(t[s]).map((t=>s+e+t)))))}toJSON(){const{configuration:t,tags:e,machine:s,...n}=this;return{...n,tags:Array.from(e),meta:this.meta}}matches(t){return v(t,this.value)}hasTag(t){return this.tags.has(t)}can(t){const e=this.machine.getTransitionData(this,t);return!!e?.length&&e.some((t=>void 0!==t.target||t.actions.length))}get nextEvents(){return C(this,"nextEvents",(()=>[...new Set(S([...this.configuration.map((t=>t.ownEvents))]))]))}get meta(){return this.configuration.reduce(((t,e)=>(void 0!==e.meta&&(t[e.id]=e.meta),t)),{})}}function Bt(t,e={}){return new Jt({...t,...e},t.machine)}function zt(t){let e;for(const s in t){const n=t[s];if(n&&"object"==typeof n)if("sessionId"in n&&"send"in n&&"ref"in n)e??=Array.isArray(t)?t.slice():{...t},e[s]={xstate$$type:A,id:n.id};else{const i=zt(n);i!==n&&(e??=Array.isArray(t)?t.slice():{...t},e[s]=i)}}return e??t}function Wt(t,{machine:e,context:s},n,i){return(o,r)=>{const a=((o,r={})=>{const{systemId:a}=r;if("string"==typeof o){const c=j(e,o);if(!c)throw new Error(`Actor logic '${o}' not implemented in machine '${e.id}'`);const u="input"in r?r.input:c.input,f=R(c.src,{id:r.id,parent:t.self,input:"function"==typeof u?u({context:s,event:n,self:t.self}):u,src:o,systemId:a});return i[f.id]=f,r.syncSnapshot&&f.subscribe({next:e=>{"active"===e.status&&t.self.send({type:`xstate.snapshot.${f.id}`,snapshot:e})},error:()=>{}}),f}{const e=R(o,{id:r.id,parent:t.self,input:r.input,src:o,systemId:a});return r.syncSnapshot&&e.subscribe({next:s=>{"active"===s.status&&t.self.send({type:`xstate.snapshot.${e.id}`,snapshot:s,id:e.id})},error:()=>{}}),e}})(o,r);return i[a.id]=a,t.defer((()=>{if(a._processingStatus!==M.Stopped)try{a.start?.()}catch(e){return void t.self.send(u(a.id,e))}})),a}}function Ut(t,e,s,n,{assignment:i}){if(!e.context)throw new Error("Cannot assign to undefined `context`. Ensure that `context` is defined in the machine config.");const o={},r={context:e.context,event:s.event,spawn:Wt(t,e,s.event,o),self:t?.self,system:t?.system};let a={};if("function"==typeof i)a=i(r,n);else for(const t of Object.keys(i)){const e=i[t];a[t]="function"==typeof e?e(r,n):e}return[Bt(e,{context:Object.assign({},e.context,a),children:Object.keys(o).length?{...e.children,...o}:e.children})]}function qt(t){function e(t,e){}return e.type="xstate.assign",e.assignment=t,e.resolve=Ut,e}function Gt(t,e,s,n,{branches:i}){const o=i.find((t=>!t.guard||Y(t.guard,e.context,s.event,e)))?.actions;return[e,void 0,w(o)]}function Qt(t,e,s,n,{value:i,label:o}){return[e,{value:"function"==typeof i?i(s,n):i,label:o}]}function Ft({logger:t},{value:e,label:s}){s?t(s,e):t(e)}function Xt(t,e,s,n,{get:i}){return[e,void 0,w(i({context:s.context,event:s.event}))]}function Ht(t,e,s,n,{event:i,id:o,delay:r},{internalQueue:a}){const c=e.machine.implementations.delays;if("string"==typeof i)throw new Error(`Only event objects may be used with raise; use raise({ type: "${i}" }) instead`);const u="function"==typeof i?i(s,n):i;let f;if("string"==typeof r){const t=c&&c[r];f="function"==typeof t?t(s,n):t}else f="function"==typeof r?r(s,n):r;return"number"!=typeof f&&a.push(u),[e,{event:u,id:o,delay:f}]}function Kt(t,e){"number"!=typeof e.delay||t.self.delaySend(e)}function Lt(t,e){function s(t,e){}return s.type="xstate.raise",s.event=t,s.id=e?.id,s.delay=e?.delay,s.resolve=Ht,s.execute=Kt,s}let Yt=function(t){return t.Parent="#_parent",t.Internal="#_internal",t}({});function Zt(t,e,s,n,{to:i,event:o,id:r,delay:a},c){const u=e.machine.implementations.delays;if("string"==typeof o)throw new Error(`Only event objects may be used with sendTo; use sendTo({ type: "${o}" }) instead`);const f="function"==typeof o?o(s,n):o;let h;if("string"==typeof a){const t=u&&u[a];h="function"==typeof t?t(s,n):t}else h="function"==typeof a?a(s,n):a;const d="function"==typeof i?i(s,n):i;let p;if("string"==typeof d){if(p=d===Yt.Parent?t?.self._parent:d===Yt.Internal?t?.self:d.startsWith("#_")?e.children[d.slice(2)]:c.deferredActorIds?.includes(d)?d:e.children[d],!p)throw new Error(`Unable to send event to actor '${d}' from machine '${e.machine.id}'.`)}else p=d||t?.self;return[e,{to:p,event:f,id:r,delay:h}]}function te(t,e,s){"string"==typeof s.to&&(s.to=e.children[s.to])}function ee(t,e){"number"!=typeof e.delay?t.defer((()=>{const{to:s,event:n}=e;t?.system._relay(t.self,s,n.type===o?u(t.self.id,n.data):n)})):t.self.delaySend(e)}function se(t,e,s){function n(t,e){}return n.type="xstate.sendTo",n.to=t,n.event=e,n.id=s?.id,n.delay=s?.delay,n.resolve=Zt,n.retryResolve=te,n.execute=ee,n}function ne(t,e){return se(Yt.Parent,t,e)}function ie(t,e){return{config:t,transition:(e,s,n)=>({...e,context:t(e.context,s,n)}),getInitialState:(t,s)=>({status:"active",output:void 0,error:void 0,context:"function"==typeof e?e({input:s}):e}),getPersistedState:t=>t,restoreState:t=>t}}const oe="$$xstate.resolve",re="$$xstate.reject";const ae=ie((t=>{}),void 0);const ce={},ue=t=>"string"==typeof t?{type:t}:"function"==typeof t?"resolve"in t?{type:t.type}:{type:t.name}:t;class fe{constructor(t,s){if(this.config=t,this.key=void 0,this.id=void 0,this.type=void 0,this.path=void 0,this.states=void 0,this.history=void 0,this.entry=void 0,this.exit=void 0,this.parent=void 0,this.machine=void 0,this.meta=void 0,this.output=void 0,this.order=-1,this.description=void 0,this.tags=[],this.transitions=void 0,this.always=void 0,this.parent=s._parent,this.key=s._key,this.machine=s._machine,this.path=this.parent?this.parent.path.concat(this.key):[],this.id=this.config.id||[this.machine.id,...this.path].join(e),this.type=this.config.type||(this.config.states&&Object.keys(this.config.states).length?"compound":this.config.history?"history":"atomic"),this.description=this.config.description,this.order=this.machine.idMap.size,this.machine.idMap.set(this.id,this),this.states=this.config.states?x(this.config.states,((t,e)=>new fe(t,{_parent:this,_key:e,_machine:this.machine}))):ce,"compound"===this.type&&!this.config.initial)throw new Error(`No initial state specified for compound state node "#${this.id}". Try adding { initial: "${Object.keys(this.states)[0]}" } to the state config.`);this.history=!0===this.config.history?"shallow":this.config.history||!1,this.entry=w(this.config.entry).slice(),this.exit=w(this.config.exit).slice(),this.meta=this.config.meta,this.output="final"!==this.type&&this.parent?void 0:this.config.output,this.tags=w(t.tags).slice()}_initialize(){this.transitions=function(t){const e=new Map;if(t.config.on)for(const s of Object.keys(t.config.on)){if(s===n)throw new Error('Null events ("") cannot be specified as a transition key. Use `always: { ... }` instead.');const i=t.config.on[s];e.set(s,I(i).map((e=>ut(t,s,e))))}if(t.config.onDone){const s=`xstate.done.state.${t.id}`;e.set(s,I(t.config.onDone).map((e=>ut(t,s,e))))}for(const s of t.invoke){if(s.onDone){const n=`xstate.done.actor.${s.id}`;e.set(n,I(s.onDone).map((e=>ut(t,n,e))))}if(s.onError){const n=`xstate.error.actor.${s.id}`;e.set(n,I(s.onError).map((e=>ut(t,n,e))))}if(s.onSnapshot){const n=`xstate.snapshot.${s.id}`;e.set(n,I(s.onSnapshot).map((e=>ut(t,n,e))))}}for(const s of t.after){let t=e.get(s.eventType);t||(t=[],e.set(s.eventType,t)),t.push(s)}return e}(this),this.config.always&&(this.always=I(this.config.always).map((t=>ut(this,n,t)))),Object.keys(this.states).forEach((t=>{this.states[t]._initialize()}))}get definition(){return{id:this.id,key:this.key,version:this.machine.version,type:this.type,initial:this.initial?{target:this.initial.target,source:this,actions:this.initial.actions.map(ue),eventType:null,reenter:!1,toJSON:()=>({target:this.initial.target.map((t=>`#${t.id}`)),source:`#${this.id}`,actions:this.initial.actions.map(ue),eventType:null})}:void 0,history:this.history,states:x(this.states,(t=>t.definition)),on:this.on,transitions:[...this.transitions.values()].flat().map((t=>({...t,actions:t.actions.map(ue)}))),entry:this.entry.map(ue),exit:this.exit.map(ue),meta:this.meta,order:this.order||-1,output:this.output,invoke:this.invoke,description:this.description,tags:this.tags}}toJSON(){return this.definition}get invoke(){return C(this,"invoke",(()=>w(this.config.invoke).map(((t,e)=>{const{src:s,systemId:n}=t,i=t.id||O(this.id,e),o="string"==typeof s?s:`xstate#${O(this.id,e)}`;return{...t,src:o,id:i,systemId:n,toJSON(){const{onDone:e,onError:s,...n}=t;return{...n,type:"xstate.invoke",src:o,id:i}}}}))))}get on(){return C(this,"on",(()=>[...this.transitions].flatMap((([t,e])=>e.map((e=>[t,e])))).reduce(((t,[e,s])=>(t[e]=t[e]||[],t[e].push(s),t)),{})))}get after(){return C(this,"delayedTransitions",(()=>ct(this)))}get initial(){return C(this,"initial",(()=>function(t,e){const s="string"==typeof e?t.states[e]:e?t.states[e.target]:void 0;if(!s&&e)throw new Error(`Initial state node "${e}" not found on parent state node #${t.id}`);const n={source:t,actions:e&&"string"!=typeof e?w(e.actions):[],eventType:null,reenter:!1,target:s?[s]:[],toJSON:()=>({...n,source:`#${t.id}`,target:s?[`#${s.id}`]:[]})};return n}(this,this.config.initial)))}next(t,e){const s=e.type,n=[];let i;const o=C(this,`candidates-${s}`,(()=>{return e=s,(t=this).transitions.get(e)||[...t.transitions.keys()].filter((t=>{if("*"===t)return!0;if(!t.endsWith(".*"))return!1;const s=t.split("."),n=e.split(".");for(let t=0;t<s.length;t++){const e=s[t],i=n[t];if("*"===e)return t===s.length-1;if(e!==i)return!1}return!0})).sort(((t,e)=>e.length-t.length)).flatMap((e=>t.transitions.get(e)));var t,e}));for(const r of o){const{guard:o}=r,a=t.context;let c=!1;try{c=!o||Y(o,a,e,t)}catch(t){const e="string"==typeof o?o:"object"==typeof o?o.type:void 0;throw new Error(`Unable to evaluate guard ${e?`'${e}' `:""}in transition for event '${s}' in state node '${this.id}':\n${t.message}`)}if(c){n.push(...r.actions),i=r;break}}return i?[i]:void 0}get events(){return C(this,"events",(()=>{const{states:t}=this,e=new Set(this.ownEvents);if(t)for(const s of Object.keys(t)){const n=t[s];if(n.states)for(const t of n.events)e.add(`${t}`)}return Array.from(e)}))}get ownEvents(){const t=new Set([...this.transitions.keys()].filter((t=>this.transitions.get(t).some((t=>!(!t.target&&!t.actions.length&&!t.reenter))))));return Array.from(t)}}class he{constructor(t,e){this.config=t,this.version=void 0,this.implementations=void 0,this.types=void 0,this.__xstatenode=!0,this.idMap=new Map,this.root=void 0,this.id=void 0,this.states=void 0,this.events=void 0,this.__TContext=void 0,this.__TEvent=void 0,this.__TActor=void 0,this.__TAction=void 0,this.__TGuard=void 0,this.__TDelay=void 0,this.__TTag=void 0,this.__TInput=void 0,this.__TOutput=void 0,this.__TResolvedTypesMeta=void 0,this.id=t.id||"(machine)",this.implementations={actors:e?.actors??{},actions:e?.actions??{},delays:e?.delays??{},guards:e?.guards??{}},this.version=this.config.version,this.types=this.config.types??{},this.transition=this.transition.bind(this),this.getInitialState=this.getInitialState.bind(this),this.restoreState=this.restoreState.bind(this),this.start=this.start.bind(this),this.root=new fe(t,{_key:this.id,_machine:this}),this.root._initialize(),this.states=this.root.states,this.events=this.root.events}provide(t){const{actions:e,guards:s,actors:n,delays:i}=this.implementations;return new he(this.config,{actions:{...e,...t.actions},guards:{...s,...t.guards},actors:{...n,...t.actors},delays:{...i,...t.delays}})}resolveState(t){const e=st(vt(this.root,t.value)),s=Array.from(e);return this.createState({...t,value:Vt(this.root,t.value),configuration:s,status:rt(e,this.root)?"done":t.status})}resolveStateValue(t,...[e]){const s=Vt(this.root,t);return this.resolveState(Jt.from(s,e,this))}transition(t,e,s){if(function(t){return t.type.startsWith("xstate.error.actor")}(e)&&!t.nextEvents.some((t=>t===e.type)))return Bt(t,{status:"error",error:e.data});const{state:n}=Nt(t,e,s);return n}microstep(t,e,s){return Nt(t,e,s).microstates}getTransitionData(t,e){return gt(this.root,t.value,t,e)||[]}getPreInitialState(t,e,s){const{context:n}=this.config,i=this.resolveState(this.createState({value:{},context:"function"!=typeof n&&n?n:{},meta:void 0,configuration:Ct(this.root),children:{},status:"active"}));if("function"==typeof n){const o=({spawn:t,event:e})=>n({spawn:t,input:e.input});return Mt(i,e,t,[qt(o)],s)}return i}getInitialState(t,e){const s=f(e),n=[],i=this.getPreInitialState(t,s,n),o=kt([{target:[...pt(this.root)],source:this.root,reenter:!0,actions:[],eventType:null,toJSON:null}],i,t,s,!0,n),{state:r}=Nt(o,s,t,n);return r}start(t){Object.values(t.children).forEach((t=>{"active"===t.getSnapshot().status&&t.start()}))}getStateNodeById(t){const s=t.split(e),n=s.slice(1),i=at(s[0])?s[0].slice(1):s[0],o=this.idMap.get(i);if(!o)throw new Error(`Child state node '#${i}' does not exist on machine '${this.id}'`);return yt(o,n)}get definition(){return this.root.definition}toJSON(){return this.definition}getPersistedState(t,e){return function(t,e){const{configuration:s,tags:n,machine:i,children:o,context:r,...a}=t,c={};for(const t in o){const s=o[t];c[t]={state:s.getPersistedState(e),src:s.src,systemId:s._systemId}}return{...a,context:zt(r),children:c}}(t,e)}createState(t){return t instanceof Jt?t:new Jt(t,this)}restoreState(t,e){const s={},n=t.children;Object.keys(n).forEach((t=>{const i=n[t],o=i.state,r=i.src,a="string"==typeof r?j(this,r)?.src:r;if(!a)return;const c=a.restoreState?.(o,e),u=R(a,{id:t,parent:e?.self,state:c,src:r,systemId:i.systemId});s[t]=u}));const i=this.createState(new Jt({...t,children:s},this));let o=new Set;return function t(e,s){if(!o.has(e)){o.add(e);for(let n in e){const i=e[n];if(i&&"object"==typeof i){if("xstate$$type"in i&&i.xstate$$type===A){e[n]=s[i.id];continue}t(i,s)}}}}(i.context,s),i}}const de={timeout:1/0};t.Actor=P,t.SimulatedClock=class{constructor(){this.timeouts=new Map,this._now=0,this._id=0}now(){return this._now}getId(){return this._id++}setTimeout(t,e){const s=this.getId();return this.timeouts.set(s,{start:this.now(),timeout:e,fn:t}),s}clearTimeout(t){this.timeouts.delete(t)}set(t){if(this._now>t)throw new Error("Unable to travel back in time");this._now=t,this.flushTimeouts()}flushTimeouts(){[...this.timeouts].sort((([t,e],[s,n])=>{const i=e.start+e.timeout;return n.start+n.timeout>i?-1:1})).forEach((([t,e])=>{this.now()-e.start>=e.timeout&&(this.timeouts.delete(t),e.fn.call(null))}))}increment(t){this._now+=t,this.flushTimeouts()}},t.SpecialTargets=Yt,t.State=Jt,t.StateMachine=he,t.StateNode=fe,t.and=function(t){function e(t,e){return!1}return e.check=K,e.guards=t,e},t.assign=qt,t.cancel=z,t.choose=function(t){function e(t,e){}return e.type="xstate.choose",e.branches=t,e.resolve=Gt,e},t.createActor=R,t.createEmptyActor=function(){return R(ae)},t.createMachine=function(t,e){return new he(t,e)},t.escalate=function(t,e){return ne((e=>({type:o,data:"function"==typeof t?t(e):t})),e)},t.forwardTo=function(t,e){return se(t,(({event:t})=>t),e)},t.fromCallback=function(t){return{config:t,start:(t,{self:e,system:s})=>{s._relay(e,e,{type:"xstate.create"})},transition:(e,s,{self:n,system:i})=>{if("xstate.create"===s.type){const s=t=>{"stopped"!==e.status&&n._parent&&i._relay(n,n._parent,t)},o=t=>{e._receivers.add(t)};return e._dispose=t({input:e.input,system:i,self:n,sendBack:s,receive:o}),e}return s.type===r?("function"==typeof(e={...e,status:"stopped",error:void 0})._dispose&&e._dispose(),e):(e._receivers.forEach((t=>t(s))),e)},getInitialState:(t,e)=>({status:"active",output:void 0,error:void 0,input:e,_receivers:new Set,_dispose:void 0}),getPersistedState:({_dispose:t,_receivers:e,...s})=>s,restoreState:t=>({_receivers:new Set,_dispose:void 0,...t})}},t.fromEventObservable=function(t){const e="$$xstate.error",s="$$xstate.complete";return{config:t,transition:(t,n)=>{if("active"!==t.status)return t;switch(n.type){case e:return{...t,status:"error",error:n.data,input:void 0,_subscription:void 0};case s:return{...t,status:"done",input:void 0,_subscription:void 0};case r:return t._subscription.unsubscribe(),{...t,status:"stopped",input:void 0,_subscription:void 0};default:return t}},getInitialState:(t,e)=>({status:"active",output:void 0,error:void 0,context:void 0,input:e,_subscription:void 0}),start:(n,{self:i,system:o})=>{"done"!==n.status&&(n._subscription=t({input:n.input,system:o,self:i}).subscribe({next:t=>{i._parent&&o._relay(i,i._parent,t)},error:t=>{o._relay(i,i,{type:e,data:t})},complete:()=>{o._relay(i,i,{type:s})}}))},getPersistedState:({_subscription:t,...e})=>e,restoreState:t=>({...t,_subscription:void 0})}},t.fromObservable=function(t){const e="$$xstate.next",s="$$xstate.error",n="$$xstate.complete";return{config:t,transition:(t,i,{self:o,id:a,defer:c,system:u})=>{if("active"!==t.status)return t;switch(i.type){case e:return{...t,context:i.data};case s:return{...t,status:"error",error:i.data,input:void 0,_subscription:void 0};case n:return{...t,status:"done",input:void 0,_subscription:void 0};case r:return t._subscription.unsubscribe(),{...t,status:"stopped",input:void 0,_subscription:void 0};default:return t}},getInitialState:(t,e)=>({status:"active",output:void 0,error:void 0,context:void 0,input:e,_subscription:void 0}),start:(i,{self:o,system:r})=>{"done"!==i.status&&(i._subscription=t({input:i.input,system:r,self:o}).subscribe({next:t=>{r._relay(o,o,{type:e,data:t})},error:t=>{r._relay(o,o,{type:s,data:t})},complete:()=>{r._relay(o,o,{type:n})}}))},getPersistedState:({_subscription:t,...e})=>e,restoreState:t=>({...t,_subscription:void 0})}},t.fromPromise=function(t){return{config:t,transition:(t,e)=>{if("active"!==t.status)return t;switch(e.type){case oe:{const s=e.data;return{...t,status:"done",output:s,input:void 0}}case re:return{...t,status:"error",error:e.data,input:void 0};case r:return{...t,status:"stopped",input:void 0};default:return t}},start:(e,{self:s,system:n})=>{if("active"!==e.status)return;Promise.resolve(t({input:e.input,system:n,self:s})).then((t=>{"active"===s.getSnapshot().status&&n._relay(s,s,{type:oe,data:t})}),(t=>{"active"===s.getSnapshot().status&&n._relay(s,s,{type:re,data:t})}))},getInitialState:(t,e)=>({status:"active",output:void 0,error:void 0,input:e}),getPersistedState:t=>t,restoreState:t=>t}},t.fromTransition=ie,t.getStateNodes=vt,t.interpret=D,t.log=function(t=(({context:t,event:e})=>({context:t,event:e})),e){function s(t,e){}return s.type="xstate.log",s.value=t,s.label=e,s.resolve=Qt,s.execute=Ft,s},t.mapState=function(t,e){let s;for(const n of Object.keys(t))v(n,e)&&(!s||e.length>s.length)&&(s=n);return t[s]},t.matchesState=v,t.not=function(t){function e(t,e){return!1}return e.check=H,e.guards=[t],e},t.or=function(t){function e(t,e){return!1}return e.check=L,e.guards=t,e},t.pathToStateValue=_,t.pure=function(t){function e(t,e){}return e.type="xstate.pure",e.get=t,e.resolve=Xt,e},t.raise=Lt,t.sendParent=ne,t.sendTo=se,t.spawn=q,t.stateIn=function(t){function e(t,e){return!1}return e.check=X,e.stateValue=t,e},t.stop=F,t.toObserver=E,t.waitFor=function(t,e,s){const n={...de,...s};return new Promise(((s,i)=>{let o=!1;const r=n.timeout===1/0?void 0:setTimeout((()=>{u.unsubscribe(),i(new Error(`Timeout of ${n.timeout} ms exceeded`))}),n.timeout),a=()=>{clearTimeout(r),o=!0,u?.unsubscribe()};function c(t){e(t)&&(a(),s(t))}let u;c(t.getSnapshot()),o||(u=t.subscribe({next:c,error:t=>{a(),i(t)},complete:()=>{a(),i(new Error("Actor terminated without satisfying predicate"))}}),o&&u.unsubscribe())}))},Object.defineProperty(t,"__esModule",{value:!0})}));
2
2
  //# sourceMappingURL=xstate.umd.min.js.map