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
3.5 KiB
JavaScript

var v=function(...t){return{states:t}},h=function(t,...e){return{name:t,eventReactionCouplings:e}},A=function(t,...e){return{eventName:t,reactions:e}},F=function(t){return{type:"SideEffect",fn:t}},M=function(t){return{type:"Goto",targetStateName:t}},k=function(t){return{type:"ContextMutation",fn:t}},R=function(t,e){return{type:"SetPeer",name:t,peerCreationFunction:e}},w=function(t,e){return{type:"SetPeers",name:t,peerCreationFunction:e}},G=function(t,e){return{type:"AddPeers",name:t,peerCreationFunction:e}};function O(t,e,n){typeof n>"u"&&(n=t.states[0].name);let r={machine:t,state:n,context:e,eventQueue:[],isTransitioning:!1,peers:{},peerSubscriptionIds:new Map,subscriptionsToEvents:{},subscriptionsToState:{},subscriptionsToSettledState:{},isPaused:!0};return r.start=()=>(x(r),r),c(r,["entry",null]),r}function x(t){t.isPaused===!0&&(t.isPaused=!1,T(t))}function Q(t){t.isPaused===!1&&(t.isPaused=!0)}function d(t){return t.machine.states.find(e=>e.name===t.state)}function l(t,e){return t.eventReactionCouplings.filter(n=>n.eventName===e[0])}function c(t,e){t.eventQueue.push(e),t.isTransitioning===!1&&T(t)}var m=c;function T(t){for(t.isTransitioning=!0;t.eventQueue.length>0&&t.isPaused===!1;)P(t);t.isTransitioning=!1,Object.values(t.subscriptionsToSettledState).forEach(e=>{e(t)})}function P(t){let e=t.eventQueue.shift();if(typeof e<"u"){let n=d(t),i=l(n,e).map(o=>o.reactions).flat(),{sideEffects:s,contextMutations:u,peerings:f,goto_:p}=b(i),S=t.context;u.forEach(o=>{t.context=o.fn(t.context,e,t)}),p!==null&&(c(t,["exit",null]),t.state=p.targetStateName,Object.values(t.subscriptionsToState).forEach(o=>{o(e,t)}),c(t,["entry",null])),f.forEach(o=>{o.type==="SetPeer"?y(t,o.name,o.peerCreationFunction(t.context,e,t)):o.type==="SetPeers"?E(t,o.name,o.peerCreationFunction(t.context,e,t)):o.type==="AddPeers"&&I(t,o.name,o.peerCreationFunction(t.context,e,t))}),Object.values(t.subscriptionsToEvents).forEach(o=>{o(e,t)}),s.forEach(o=>{o.fn(t.context,e,t,S)})}}function b(t){let e=[],n=[],r=[],i=null;return t.forEach(s=>{s.type==="SideEffect"?e.push(s):s.type==="ContextMutation"?n.push(s):s.type==="SetPeer"?r.push(s):s.type==="Goto"&&(i=s)}),{sideEffects:e,contextMutations:n,peerings:r,goto_:i}}var a=0;function g(t,e){return a++,t.subscriptionsToSettledState[a.toString()]=e,a.toString()}var j=g;function N(t,e){return a++,t.subscriptionsToState[a.toString()]=e,a.toString()}function C(t,e){return a++,t.subscriptionsToEvents[a.toString()]=e,a.toString()}function _(t,e){delete t.subscriptionsToSettledState[e.toString()],delete t.subscriptionsToState[e.toString()],delete t.subscriptionsToEvents[e.toString()]}function y(t,e,n){t.peers.hasOwnProperty(e)&&_(t,t.peerSubscriptionIds.get(t.peers[e])),t.peers[e]=n;let r=C(n,(i,s)=>{t.isTransitioning===!1&&c(t,[e+"."+i[0],i[1]])});t.peerSubscriptionIds.set(n,r)}function E(t,e,n){t.peers.hasOwnProperty(e)&&t.peers[e].forEach(r=>{_(t,t.peerSubscriptionIds.get(r))}),t.peers[e]=n,n.forEach(r=>{let i=C(r,(s,u)=>{t.isTransitioning===!1&&c(t,[e+"."+s[0],s[1]])});t.peerSubscriptionIds.set(r,i)})}function I(t,e,n){t.peers.hasOwnProperty(e)||(t.peers[e]=[]),t.peers[e].concat(n),n.forEach(r=>{let i=C(r,(s,u)=>{t.isTransitioning===!1&&c(t,[e+"."+s[0],s[1]])});t.peerSubscriptionIds.set(r,i)})}export{G as AddPeers,k as Context,M as Goto,O as Interpreter,v as Machine,A as On,R as Peer,w as Peers,F as SideEffect,h as State,I as addPeers,m as enqueue,Q as pause,c as send,y as setPeer,E as setPeers,x as start,g as subscribe,C as subscribeToEvents,j as subscribeToSettledState,N as subscribeToState,_ as unsubscribe};
//# sourceMappingURL=index.js.map