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