You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3 lines
1.8 KiB
JavaScript

var y=function(...t){return{states:t}},E=function(t,...e){return{name:t,eventReactionCouplings:e}},d=function(t,...e){return{eventName:t,reactions:e}},v=function(t){return{type:"SideEffect",fn:t}},S=function(t){return{type:"Goto",targetStateName:t}},C=function(t){return{type:"ContextMutation",fn:t}};function b(t,e,n){typeof n>"u"&&(n=t.states[0].name);let o={machine:t,state:n,context:e,eventQueue:[],isTransitioning:!1,subscriptions:{},isPaused:!0};return o.start=()=>(T(o),o),r(o,["entry",null]),o}function T(t){t.isPaused=!1,u(t)}function M(t){t.isPaused=!0}function _(t){return t.machine.states.find(e=>e.name===t.state)}function x(t,e){return t.eventReactionCouplings.filter(n=>n.eventName===e[0])}function r(t,e){t.eventQueue.push(e),t.isTransitioning===!1&&u(t)}var h=r;function u(t){for(t.isTransitioning=!0;t.eventQueue.length>0&&t.isPaused===!1;)l(t);t.isTransitioning=!1,Object.values(t.subscriptions).forEach(e=>{e(t)})}function l(t){let e=t.eventQueue.shift();if(typeof e<"u"){let n=_(t),i=x(n,e).map(s=>s.reactions).flat(),{sideEffects:f,contextMutations:p,goto_:c}=g(i);f.forEach(s=>{s.fn(t.context,e,t)}),p.forEach(s=>{t.context=s.fn(t.context,e,t)}),c!==null&&(r(t,["exit",null]),t.state=c.targetStateName,r(t,["entry",null]))}}function g(t){let e=[],n=[],o=null;return t.forEach(i=>{i.type==="SideEffect"?e.push(i):i.type==="ContextMutation"?n.push(i):i.type==="Goto"&&(o=i)}),{sideEffects:e,contextMutations:n,goto_:o}}var a=0;function I(t,e){return a++,t.subscriptions[a.toString()]=e,a.toString()}function R(t,e){delete t.subscriptions[e.toString()]}var A=function(){},m=function(){};export{C as Context,S as Goto,b as Interpreter,y as Machine,d as On,v as SideEffect,A as Spawn,E as State,m as Unspawn,h as enqueue,M as pause,r as send,T as start,I as subscribe,R as unsubscribe};
//# sourceMappingURL=index.js.map