@meshflow/core 0.4.9 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.js CHANGED
@@ -1 +1 @@
1
- 'use strict';var Oe=(P=>(P[P.FlowStart=0]="FlowStart",P[P.FlowSuccess=1]="FlowSuccess",P[P.FlowEnd=2]="FlowEnd",P[P.FlowAbort=3]="FlowAbort",P[P.FlowWait=4]="FlowWait",P[P.FlowFire=5]="FlowFire",P[P.NodeStart=6]="NodeStart",P[P.NodeSuccess=7]="NodeSuccess",P[P.NodeProcessing=8]="NodeProcessing",P[P.NodeError=9]="NodeError",P[P.NodePending=10]="NodePending",P[P.NodeRevive=11]="NodeRevive",P[P.NodeIntercept=12]="NodeIntercept",P[P.NodeRelease=13]="NodeRelease",P[P.NodeStagnate=14]="NodeStagnate",P[P.NodeBucketSuccess=15]="NodeBucketSuccess",P[P.EntangleWarn=16]="EntangleWarn",P[P.EntangleBlocked=17]="EntangleBlocked",P))(Oe||{}),Ke=(r=>(r[r.CAUSALITY=0]="CAUSALITY",r[r.INVERSION=1]="INVERSION",r[r.REPERCUSSION=2]="REPERCUSSION",r))(Ke||{});var Ve=(r=>(r.OR="OR",r.PRIORITY="PRIORITY",r.MERGE="MERGE",r))(Ve||{}),De=class{computedRules=[];getRuleResult(e,t,r){if(e.entityId==="__base__")return e.logic(t);if(!(!e._hasRun||r(e.triggerUids)))return e._lastResult;let i=e.logic(t);return i instanceof Promise?i.then(l=>(e._lastResult=l,e._hasRun=true,l)):(e._lastResult=i,e._hasRun=true,i)}store={OR:(e,t,r)=>{let o,i,l=this.computedRules;for(let s=0;s<l.length;s++){let a=l[s],p=this.getRuleResult(a,e,r);if(p instanceof Promise)return (async()=>{let n=await p;if(a.entityId==="__base__"?i=n:n&&(o=n),typeof o>"u")for(let M=s+1;M<l.length;M++){let f=l[M],m=this.getRuleResult(f,e,r),b=m instanceof Promise?await m:m;if(f.entityId==="__base__"){i=b;continue}if(b){o=f.value;break}}return typeof o>"u"&&(o=i),{res:o,version:t}})();let h=p;if(a.entityId==="__base__"){i=h;continue}if(h){o=a.value;break}}return typeof o>"u"&&(o=i),{res:o,version:t}},PRIORITY:(e,t,r)=>{let o,i=this.computedRules;for(let l=0;l<i.length;l++){let s=i[l],a=this.getRuleResult(s,e,r);if(a instanceof Promise)return (async()=>{let p=await a;if(p!==void 0)return {res:p,version:t};for(let h=l+1;h<i.length;h++){let n=i[h],M=this.getRuleResult(n,e,r),f=M instanceof Promise?await M:M;if(f!==void 0)return {res:f,version:t}}return {res:void 0,version:t}})();if(a!==void 0)return {res:a,version:t}}return {res:o,version:t}},MERGE:(e,t,r)=>{let o,i,l=this.computedRules,s=(p,h)=>p===void 0?h:h===void 0?p:Array.isArray(p)&&Array.isArray(h)?[...h,...p]:typeof p=="object"&&typeof h=="object"?{...h,...p}:p;for(let p=0;p<l.length;p++){let h=l[p],n=this.getRuleResult(h,e,r);if(n instanceof Promise)return (async()=>{let f=await n,m=(S,R)=>{if(S.entityId==="__base__")i=s(i,R);else if(R){let P=S.value!==void 0?S.value:R;o=s(o,P);}};m(h,f);for(let S=p+1;S<l.length;S++){let R=l[S],P=this.getRuleResult(R,e,r),te=P instanceof Promise?await P:P;m(R,te);}return {res:s(o,i),version:t}})();let M=n;if(h.entityId==="__base__"){i=s(i,M);continue}if(M){let f=h.value!==void 0?h.value:M;o=s(o,f);}}return {res:s(o,i),version:t}}};CurrentStrategy=()=>{};CurrentStrategyType="PRIORITY";getRules=()=>{};constructor(e){this.getRules=e,this.CurrentStrategy=this.store.PRIORITY,this.updateComputedRules();}updateComputedRules(){let e=this.getRules();this.CurrentStrategyType==="PRIORITY"||this.CurrentStrategyType==="MERGE"?this.computedRules=Array.from(e.values()).map(t=>Array.from(t)).flat().sort((t,r)=>r.priority-t.priority):this.computedRules=Array.from(e.values()).map(t=>Array.from(t)).flat();}setStrategy(e){this.CurrentStrategyType=e,this.CurrentStrategy=this.store[e],this.updateComputedRules();}evaluate(e,t,r){return this.CurrentStrategy(e,t,r)}},Ee=class{path;strategy;contract;rules=new Map;isValue=false;id=0;cache=void 0;pendingPromise=null;version=0;deps=new Map;_forceNotify=false;promiseToken=null;useCache=true;effectArray=[];constructor(e,t,r){let o=()=>this.rules;this.strategy=new De(o),this.path=r,this.isValue=t==="value",this.contract=this.inferType(e),this.cache=e,this.setRule({priority:0,entityId:"__base__",logic:()=>e});}setUseCache(e){this.useCache=e;}forceNotify(){this._forceNotify=true;}isForceNotify(){return this._forceNotify}setStrategy(e){this.strategy.setStrategy(e);}setDefaultRule(e){let t=new Set;t.add(e),this.rules.set(-1,t);}setRules(e,t){t&&this.updateDeps(t);let r=++this.id,o={...e,entityId:r};for(let i of e.triggerUids)this.rules.has(i)||this.rules.set(i,new Set),this.rules.get(i).add(o);return this.strategy.updateComputedRules(),()=>{for(let i of e.triggerUids){let l=this.rules.get(i);l&&(l.delete(o),l.size===0&&(this.rules.delete(i),this.deps.delete(i)));}this.strategy.updateComputedRules();}}updateDeps(e){for(let[t,r,o]of e){if(r.length==0)continue;let i=this.deps.get(t)||Object.create(null);for(let l of r)i[l]=o[l];this.deps.set(t,i);}}setRule(e,t){if(t&&this.updateDeps(t),typeof e.entityId=="string"){this.setDefaultRule(e);return}let r=++this.id,o={...e,entityId:r};if(e)for(let i of e.triggerUids)this.rules.has(i)||this.rules.set(i,new Set),this.rules.get(i).add(o);return this.strategy.updateComputedRules(),()=>{for(let i of e.triggerUids){let l=this.rules.get(i);l&&(l.delete(o),l.size===0&&(this.rules.delete(i),this.deps.delete(i)));}this.strategy.updateComputedRules();}}setSideEffect(e){this.effectArray.push(e);}getSideEffect(){return [...this.effectArray]}evaluate(e){let t=null;if(e.GetToken&&(t=e.GetToken()),this.pendingPromise&&this.promiseToken!==t&&(this.pendingPromise=null,this.promiseToken=null),this.pendingPromise)return this.pendingPromise;let r=false;if(typeof e.triggerUid=="number"){r=true,this.deps.size==0&&(r=false);for(let[s,a]of this.deps.entries()){let p=e.getStateByUid(s);if(!p){r=false;break}for(let h in a){let n=a[h],M=p[h];if(typeof n=="object"&&n!==null){r=false;break}if(n!==M){r=false;break}}if(!r)break}}if(r&&this.useCache)return this.cache;this.promiseToken=t;let o=++this.version,i=s=>{if(!s||s.length===0)return true;for(let a of s){let p=this.deps.get(a);if(!p)return true;let h=e.getProxyByUid(a);if(!h)return true;for(let n in p){let M=p[n],f=h[n];if(typeof M=="object"&&M!==null||M!==f)return true}}return false},l=this.strategy.evaluate(e,o,i);if(!(l instanceof Promise)){let{res:s,version:a}=l;return this.finalizeSync(s,a,e,t)}return this.pendingPromise=(async()=>{try{let{res:s,version:a}=await l;return this.finalizeSync(s,a,e,t)}catch(s){throw {path:this.path,error:s}}finally{this.promiseToken===t&&(this.pendingPromise=null,this.promiseToken=null);}})(),this.pendingPromise}finalizeSync(e,t,r,o){return o!==this.promiseToken||t<this.version?this.cache:(this.cache=e,this.deps.forEach((i,l)=>{let s=r.getProxyByUid(l);if(!s)return;let a=Object.keys(i);for(let p of a)i[p]=s[p];}),e)}inferType(e){return Array.isArray(e)?"array":typeof e}};var He=(g,e,t)=>{let o=i=>{let l=t.triggerUids.map(p=>{let h=i.getProxyByUid(p);if(t.triggerKeys.length===0)return h;let n={};return t.triggerKeys.forEach(M=>{n[M]=h[M];}),n}),s=Object.create(null);return Object.defineProperty(s,"triggerTargets",{get:()=>l}),Object.defineProperty(s,"affectedTatget",{get:()=>i.getProxyByUid(g)[e]}),t.logic({slot:s})};return {value:t.value,targetUid:g,triggerUids:t.triggerUids,priority:t.priority??10,logic:o}},Ye=(g,e,t,r,o,i,l,s)=>{if(!g)throw Error();let a=g,p=(M,f)=>{typeof r[M]>"u"&&(r[M]=[],i[M]=new Set),i[M].add(f),i[M].size>r[M].length&&r[M].push(f),typeof o[f]>"u"&&(o[f]=[],l[f]=new Set),l[f].add(M),l[f].size>o[f].length&&o[f].push(M);};return {SetRule:(M,f,m,b)=>{let S=a(M),R=a(f),P=b.triggerKeys||[],te=s.get(R.uid)||0,V=s.get(S.uid)||0;te+=1,V+=1,s.set(R.uid,te),s.set(S.uid,V);let J=He(R.uid,m,{...b,triggerUids:[S.uid],triggerKeys:P}),z=[M].map(_=>{let c=a(_);return [c.uid,P,c.proxy]});if(p(S.uid,R.uid),typeof R.nodeBucket[m]=="number"){let _=t(R.nodeBucket[m]);_.setRule(J,z),b.effect&&_.setSideEffect({fn:b.effect,args:b.effectArgs?b.effectArgs:[m]});}else {let _=R.meta[m],c=new Ee(_,m,f);c.setRule(J,z),b.effect&&c.setSideEffect({fn:b.effect,args:b.effectArgs?b.effectArgs:[m]}),R.nodeBucket[m]=e(c);}R.state[m]=R.meta[m];let y=t(R.nodeBucket[m]);b.forceNotify&&y.forceNotify(),b.cacheStrategy=="none"&&y.setUseCache(false);},SetRules:(M,f,m,b)=>{let S=a(f),R=s.get(S.uid)||0;R+=1,s.set(S.uid,R);let P=[];for(let y of M){let _=a(y);P.push(_.uid);let c=s.get(_.uid)||0;c+=1,s.set(_.uid,c),p(_.uid,S.uid);}let te=b.triggerKeys||[],V=He(S.uid,m,{...b,triggerUids:P,triggerKeys:te}),J=M.map(y=>{let _=a(y);return [_.uid,te,_.state]});if(typeof S.nodeBucket[m]=="number"){let y=t(S.nodeBucket[m]);y.setRules(V,J),b.effect&&y.setSideEffect({fn:b.effect,args:b.effectArgs?b.effectArgs:[m]});}else {let y=S.meta[m],_=new Ee(y,m,f);_.setRules(V,J),b.effect&&_.setSideEffect({fn:b.effect,args:b.effectArgs?b.effectArgs:[m]}),S.nodeBucket[m]=e(_);}S.state[m]=S.meta[m];let z=t(S.nodeBucket[m]);b.forceNotify&&z.forceNotify(),b.cacheStrategy=="none"&&z.setUseCache(false);}}};var je=(g,e)=>{let t=g||void 0;if(!t)throw Error();return {SetStrategy:(o,i,l)=>{let s=t(o);e(s.nodeBucket[i]).setStrategy(l);}}};function We(){let g=new Map,e=new Map,t=new Set,r=(l,s)=>{g.set(l,s);let a=e.get(l);a&&a(s);};return {SetTrace:(l,s)=>{e.set(l,s);let a=g.get(l)||"idle";return s(a),{cancel:()=>{e.delete(l);}}},useTrace:()=>({apply:s=>{s.on(0,()=>{t.forEach(a=>r(a,"idle")),t.clear(),g.clear();}),s.on(13,({path:a,type:p})=>{(p==1||p==2)&&(t.add(a),r(a,"pending"));}),s.on(10,({path:a})=>{t.add(a),(!g.has(a)||g.get(a)==="idle")&&r(a,"pending");}),s.on(6,({path:a})=>{t.add(a),r(a,"calculating");}),s.on(7,({path:a})=>{r(a,"calculated");}),s.on(12,({path:a,type:p})=>{p==3&&r(a,"calculating"),p==6&&r(a,"idle");}),s.on(14,({path:a})=>{r(a,"pending");}),s.on(9,({path:a})=>r(a,"error"));}})}}function qe(g,e,t,r){return {GetNextDependency:h=>r()[h]||[],GetPrevDependency:h=>t()[h]||[],GetAllPrevDependency:h=>e()[h]||[],GetAllNextDependency:h=>g()[h]||[],rebuildDirectDependencyMaps:h=>{let n=[],M=[],f=g();for(let m of h){let b=f[m]||[];n[m]=b;for(let S=0;S<b.length;S++){let R=b[S];typeof M[R]>"u"&&(M[R]=[]),M[R].push(m);}}return {directNextMap:n,directPrevMap:M}}}}function Qe(g,e){let t=o=>{let i=[],l=[],s=new Map,a=o.size,p=0,h=0;for(let[n,M]of o)M===0&&l.push(n);if(l.length===0&&a>0)throw Error("Circular dependency detected");for(;l.length>0;){i.push([...l]);let n=[];for(let M of l){p++,s.set(M,h);let f=g[M];if(f)for(let m of f){let b=o.get(m)-1;o.set(m,b),b===0&&n.push(m);}}l=n,h++;}if(p<a)throw Error("Circular dependency detected");return {steps:i,levelMap:s}};return ()=>{let o=new Map;for(let i of e.keys()){let l=g[i]||[];o.has(i)||o.set(i,0);for(let s of l){let a=o.get(s)||0;o.set(s,++a);}}return t(o)}}var be=()=>{let g=[];return {on:e=>(g.push(e),()=>{let t=g.indexOf(e);t>-1&&g.splice(t,1);}),call:e=>g.forEach(t=>{t(e);})}};function $e(){let{on:g,call:e}=be();return {onError:g,callOnError:e}}function Xe(){let{on:g,call:e}=be();return {onSuccess:g,callOnSuccess:e}}var Ze=()=>{let g=new Set,e=new Map,t=new Set,r=(s,a)=>{e.get(s)?.forEach(p=>p(a));},o=(s,a)=>(e.has(s)||e.set(s,new Set),e.get(s).add(a),()=>e.get(s)?.delete(a));return {usePlugin:s=>{let a=new Set,p=(n,M)=>{let f=o(n,M);return a.add(f),f};s.apply({on:p}),g.add(s);let h=()=>{a.forEach(n=>n()),a.clear(),g.delete(s),t.delete(h);};return t.add(h),h},emit:r,destroyPlugin:()=>{t.forEach(s=>s()),t.clear(),e.clear(),g.clear();}}};function Je(){let{on:g,call:e}=be();return {onStart:g,callOnStart:e}}var et=(g={frameQuota:12})=>{let e=performance.now(),t=0,r=false,o=()=>!!navigator?.scheduling?.isInputPending?.({includeContinuous:true});return {getIsFirstFrame:()=>r,reset(){e=performance.now(),t=0,r=true;},shouldYield(){return !r&&(++t&15)!==0?false:!!(performance.now()-e>g.frameQuota||o())},async yieldToMain(){return new Promise(i=>{Be(()=>{e=performance.now(),t=0,r&&(r=false),i();});})}}},Be=g=>{let{port1:e,port2:t}=new MessageChannel;e.onmessage=g,t.postMessage(null);};function tt(g,e,t,r,o,i){let l=new Map,s=g.useGreedy,a=null,p=()=>{l.clear();},h={path:null,level:0,targetLevel:0,currentLevel:0,pendingParentsCount:0,active:0,pending:0,blocked:0,nums:0,asyncNums:0},n={path:null,type:0,triggerPath:null,calledBy:0,key:null,value:null,error:null,token:null,duration:null,detail:h};return {TaskRunner:async(f,m)=>{let S=Symbol("token"),R=typeof f=="number"?f:"__NOTIFY_ALL__";l.set(R,S),a=S;let P=false,te=false;i.reset();let V=t.GetMaxUid()+3,J=new Array(V).fill(0),z=0,y=new Uint8Array(V),_=new Int32Array(V),c=new Int32Array(V),x=new Int32Array(V*2),I=0,E=0,H=new Int32Array(V*2),F=0,O=0,T=new Int32Array(V*2),K=0,U=0;m.forEach(N=>{J[N]=1,e.GetAllNextDependency(N).forEach(se=>{J[se]=1;});});let k=new Array(V).fill(null),d=[],u=t.Turnstile,B=new Array(V).fill(null).map(()=>[]),W=new Array(V).fill(null).map(()=>[]),ne=u.volatileLevels.size>0,ue=ne?u.hasObserver:N=>false,re=ne?u.receiveGhosts:()=>[],Pe=ne?u.resolveGhosts:()=>[],Me=ne?u.getTriggerKeys:()=>[],Te=u?.volatileLevels||new Set,ye=-1,ee=e.GetUidToLevelMap(),ie=0,Ne=0,ge=N=>{e.GetAllNextDependency(N).forEach(ae=>{let A=ee.get(ae)||0;A>Ne&&(Ne=A);});},Ae=new Set;typeof f=="number"&&(y[f]|=16,Ae.add(f),ge(f),o.flushPathSet.add(f));let ve=typeof f=="number"?[f]:m;i.shouldYield()&&(o.requestUpdate(),await i.yieldToMain());let Ge=ve.map(async N=>{if(ue(N)){let se=t.GetNodeByUid(N),ae=Me(N);if(ae.length>0){let A=re(se,ae);return A instanceof Promise&&(A=await A),{seed:N,hitTargets:A}}}return {seed:N,hitTargets:[]}});if((await Promise.all(Ge)).forEach(({seed:N,hitTargets:se})=>{if(se&&se.length>0){d.push(...se);let ae=ee.get(N)||0;ye=Math.max(ye,ae);}}),(d.length>0||ve.length>1)&&(o.requestUpdate(),await i.yieldToMain(),l.get(R)!==S))return;let ke=d.length>0;m.forEach(N=>{if(!Ae.has(N))if(ke){let se=ee.get(N)??0;c[N]=se,y[N]&4||(y[N]|=4,T[K++]=N,U++);let ae=t.GetPathByUid(N);n.path=ae,n.type=2,r.emit(14,n);}else y[N]&1||(y[N]|=1,x[I++]=N,E++),ge(N);}),typeof f=="number"?ie=ee.get(f)??0:ie=Math.min(...m.map(N=>ee.get(N)??0));let we=performance.now(),Ce=typeof R=="number"?t.GetPathByUid(R):"__NOTIFY_ALL__";n.path=Ce,n.token=S,r.emit(0,n),r.callOnStart({path:Ce});let Fe=false,Le=30,_e=(N,se)=>{let ae=false,A=false,Y=false,L=t.GetNodeByUid(N),Z=t.GetPathByUid(N),Q=L.calledBy,w=B[N];w.length=0;let C=W[N];C.length=0;let v=false;if(L.calledBy===1){v=true,ae=true,o.flushPathSet.add(N);let G=k[N];G&&(w.push(...G),k[N]=null);}let D=(G,$)=>{let j=ee.get(G)??0,oe=t.GetNodeByUid(G),X=t.GetPathByUid(G),pe=(Q===1||Q===2)&&j<=ye;pe&&y[G]&16&&(y[G]&=-17,n.path=X,n.triggerPath=Z,r.emit(11,n));let le=0;if(!(y[G]&49)){if(y[G]&2)le=_[G]-1;else {if(j>ie&&O>Le){c[G]=j,y[G]&4||(y[G]|=4,T[K++]=G,U++),n.path=X,n.type=7,r.emit(12,n);return}let me=e.GetPrevDependency(G),q=0;for(let he of me){if(y[he]&16)continue;(ee.get(he)??0)>ie&&q++;}le=q;}if(le<=0){let me=(y[G]&1)!==0,q=(y[G]&32)!==0;if(me||q){n.path=X,n.type=q?3:3.1,r.emit(12,n);return}y[G]&2&&(y[G]&=-3,O--),pe?oe.calledBy=2:oe.calledBy=0,y[G]&1||(y[G]|=1,x[I++]=G,E++),n.path=X,n.type=$,h.path=Z,r.emit(13,n);}else _[G]=le,y[G]&2||(y[G]|=2,H[F++]=G,O++);}},de=(G=[])=>{if(l.get(R)!==S)return;if(G.length){let j={},oe=L.proxy;for(let X of G){let pe=(X.args||[]).reduce((le,me)=>(le[me]=oe[me],le),{});try{let le=X.fn(pe);le&&typeof le=="object"&&Object.assign(j,le);}catch(le){}}for(let X in j)if(X in L.state)Object.is(L.state[X],j[X])||(L.state[X]=j[X],w.push(X),ae=true,(L.notifyKeys.size===0||L.notifyKeys.has(X))&&(A=true));else throw {error:`wrong effect in ${String(L.path)}`}}ae&&o.flushPathSet.add(N);let $=(j=[])=>{if(l.get(R)!==S)return;j&&j.length>0&&(d.push(...j),ye=Math.max(ye,ee.get(N)||0)),w.length=0,n.path=Z,n.calledBy=L.calledBy,r.emit(7,n),y[N]|=16;let oe=e.GetNextDependency(N);(A||Y)&&(ge(N),e.GetAllNextDependency(N).forEach(he=>{J[he]=1;}));let X=t.GetNodeByUid(N),pe=ee.get(N)??0,le=Te.has(pe)||d.length>0;for(let q of oe){let he=ee.get(q)??0,Se=t.GetPathByUid(q);if(le&&he>=pe){c[q]=he,y[q]&4||(y[q]|=4,T[K++]=q,U++),n.path=Se,n.type=2,r.emit(14,n);continue}if(y[q]&16){n.path=Se,n.type=2,r.emit(12,n);continue}if(y[q]&32||(y[q]&1)!==0){n.path=Se,n.type=y[q]&32?3:3.1,r.emit(12,n);continue}if(A||Y)D(q,1);else if(y[q]&2)D(q,2);else {let at=ee.get(q);c[q]=at,y[q]&4||(y[q]|=4,T[K++]=q,U++,n.path=Se,n.type=1,r.emit(14,n));}}y[N]&32&&(y[N]&=-33,z--),X.calledBy=0,(()=>{if(!P){P=true;let q=z,he=E,Se=O;n.path=Z,n.type=1,h.active=q,h.pending=he,h.blocked=Se,r.emit(5,n),Ie();}})();};if(ue(N)&&w.length>0){let j=re(L,w);j instanceof Promise?j.then($).catch(ce):$(j);}else $([]);},ce=G=>{n.path=Z,n.error=G,r.emit(9,n);let $=Symbol("abort");l.set(R,$),I=0,E=0,F=0,O=0,K=0,U=0,y.fill(0),z=0,k.fill(null),r.callOnError(G);},fe=(G,$)=>{G!==L.state[$]&&(L.state[$]=G,ae=true,w.push(String($)),n.path=Z,n.key=$,n.value=G,n.calledBy=L.calledBy,r.emit(15,n),(L.notifyKeys.size===0||L.notifyKeys.has($))&&(A=true)),t.GetBucket(L.nodeBucket[$]).isForceNotify()&&(Y=true),(A||Y)&&ge(N);};n.path=Z,n.calledBy=L.calledBy,r.emit(6,n);try{let G=[];for(let $ in L.nodeBucket){let j=t.GetBucket(L.nodeBucket[$]);if(G.push(...j.getSideEffect()),v){r.emit(15,{path:Z,key:String($),value:L.state[$],calledBy:L.calledBy}),j.isForceNotify()&&(Y=!0),(L.notifyKeys.size===0||L.notifyKeys.has($))&&ge(N);continue}let oe=j.evaluate({affectKey:$,triggerUid:se,getProxyByUid:X=>t.GetNodeByUid(X).proxy,getStateByUid:X=>t.GetNodeByUid(X).state,GetToken:()=>S});if(oe instanceof Promise){let X=oe.then(pe=>{l.get(R)===S&&fe(pe,$);});C.push(X);}else fe(oe,$);}if(C.length>0)return Promise.all(C).then(()=>{de(G);}).catch(ce);de(G);return}catch(G){ce(G);}},Ie=async()=>{if(l.get(R)!==S){P=false;return}P=true;let N=i.getIsFirstFrame(),se=0,ae=()=>30,A=0,Y=ae();try{for(;l.get(R)===S;){let L=A>=Y,Z=i.shouldYield();if(L||Z){if(A>0&&(se++,(N||se%2===0)&&o.requestUpdate()),await i.yieldToMain(),l.get(R)!==S)break;A=0,N=i.getIsFirstFrame();}if(E>0&&z<40){let Q=I,w=0;for(let C=0;C<Q;C++){let v=x[C];if((y[v]&1)===0)continue;if(z>=40||A>=Y||i.shouldYield()){for(let j=C;j<I;j++){let oe=x[j];y[oe]&1&&(x[w++]=oe);}I=w,E=w;break}let D=t.GetNodeByUid(v),de=t.GetPathByUid(v),ce=ee.get(v)??0,fe=e.GetPrevDependency(v),G=fe.length>1;if((!s||G)&&ce>ie){y[v]&=-2,E--;let j=fe.filter(oe=>J[oe]===1&&(y[oe]&16)===0).length;_[v]=j||0,y[v]&2||(y[v]|=2,H[F++]=v,O++),n.path=de,n.type=j>0?4:5,h.targetLevel=ce,h.currentLevel=ie,h.pendingParentsCount=j,r.emit(12,n);continue}y[v]&=-2,E--,(y[v]&32)===0&&(y[v]|=32,z++),n.path=de,n.calledBy=D.calledBy,r.emit(8,n),_e(v,f),A++;}if(I>Q){for(let C=Q;C<I;C++){let v=x[C];y[v]&1&&(x[w++]=v);}I=w,E=I;}else I=w;if(E>0&&z<40)continue}if(A<Y&&s&&O>0&&z<40){let Q=!1,w=0,C=0;for(let v=0;v<F;v++){let D=H[v];if((y[D]&2)===0)continue;if(_[D]<=0&&w<Y){let ce=ee.get(D)??0,fe=e.GetPrevDependency(D);if(ce<=ie||fe.length<=1){y[D]&=-3,O--,y[D]&1||(y[D]|=1,x[I++]=D,E++),w++,Q=!0;let G=t.GetPathByUid(D);n.path=G,n.type=4,r.emit(13,n);continue}}H[C++]=D;}if(F=C,w>0)continue;if(Q){if(i.shouldYield()&&(await i.yieldToMain(),l.get(R)!==S))break;continue}}if(z===0&&E===0){if(u.inFlightCount>0)break;if(d.length>0){let w=!1,C=ie,v=Array.from(new Set(d));d.length=0;for(let D of v){let de=t.GetNodeByUid(D),ce=Pe(de);if(ce&&ce.length>0){w=!0,de.calledBy=1,k[D]=ce,y[D]&=-17,y[D]&2&&(y[D]&=-3,O--),y[D]&1||(y[D]|=1,x[I++]=D,E++);let fe=ee.get(de.uid)??0;fe<C&&(C=fe),ge(de.uid),o.flushPathSet.add(de.uid);}}if(w){if(C<ie&&(ie=C),o.requestUpdate(),i.shouldYield()&&(await i.yieldToMain(),l.get(R)!==S))break;continue}}let Q=1/0;for(let w=0;w<K;w++){let C=T[w];if(y[C]&4){let v=c[C];v<Q&&(Q=v);}}for(let w=0;w<F;w++){let C=H[w];if(y[C]&2){let v=ee.get(C)??0;v>ie&&v<Q&&(Q=v);}}if(Q!==1/0&&Q<=Ne){ie=Q;let w=0;for(let v=0;v<K;v++){let D=T[v];y[D]&4&&(c[D]===Q?(y[D]&=-5,U--,y[D]&1||(y[D]|=1,x[I++]=D,E++)):T[w++]=D);}K=w;let C=0;for(let v=0;v<F;v++){let D=H[v];if(y[D]&2)if((ee.get(D)??0)===Q){y[D]&=-3,O--,y[D]&1||(y[D]|=1,x[I++]=D,E++);let ce=t.GetPathByUid(D);n.path=ce,n.type=3,h.level=Q,r.emit(13,n);}else H[C++]=D;}F=C;continue}else {for(let w=0;w<K;w++){let C=T[w];if(y[C]&4){y[C]|=16;let v=t.GetPathByUid(C);n.path=v,n.type=6,r.emit(12,n);}}K=0,U=0;for(let w=0;w<F;w++){let C=H[w];if(y[C]&2){y[C]|=16;let v=t.GetPathByUid(C);n.path=v,n.type=6,r.emit(12,n);}}F=0,O=0;break}}E>0&&z>=40&&(n.type=2,r.emit(4,n));break}}finally{P=false;let L=z+O+E,Z=u.inFlightCount||0;if(!(a===S)){n.token=S,r.emit(3,n);return}if(o.requestUpdate(),L===0&&Z===0){if(l.get(R)===S&&!Fe){Fe=true,n.type=1,r.emit(2,n),u.resetCounters(),k.fill(null);let w=performance.now();ye=-1,l.delete(R),n.token=S,n.duration=(w-we).toFixed(2.1)+"ms",r.emit(1,n),Promise.resolve().then(()=>{r.callOnSuccess();});}}else {let w=L===0&&Z>0?3:1;if(n.type=w,h.nums=z,h.asyncNums=Z,r.emit(4,n),Z>0&&!te){te=true;let C=()=>{a===S&&(u.inFlightCount,u.inFlightCount===0?Be(()=>{u.inFlightCount===0?Ie():requestAnimationFrame(C);}):requestAnimationFrame(C));};requestAnimationFrame(C);}}}};Ie();},CancelTask:p}}function Ue(g){let{path:e,uid:t,type:r,meta:o,dirtySignal:i,state:l}=g,s=null,a=["path","uid","type","dependOn","nodeBucket"],h={path:e,uid:t,type:r,meta:o,dirtySignal:i,createView:(n={})=>{if(s&&Object.keys(n).length===0)return s;let M=new Proxy(n,{get(f,m){let b=m;return Reflect.has(f,m)?Reflect.get(f,m):b in g.state?g.state[b]:b in g?g[b]:o&&b in o?o[b]:Reflect.get(f,m)},set(f,m,b){return false},ownKeys(f){let m=new Set([...Reflect.ownKeys(f),...Object.keys(l||{}),...Object.keys(o||{}),...a]);return Array.from(m)},getOwnPropertyDescriptor(f,m){let b=m;return Reflect.has(f,m)||l&&b in l||o&&b in o||a.includes(b)?{enumerable:true,configurable:true}:Reflect.getOwnPropertyDescriptor(f,m)}});return s=M,M}};return "children"in g?{...h,children:g.children}:{...h,state:g.state,nodeBucket:g.nodeBucket,notifyKeys:g.notifyKeys,dependOn:g.dependOn,calledBy:0,get proxy(){return s}}}var nt=(g,e,t,r,o,i,l)=>{let s=g.useEntangleStep,a=[],p=[],h=new Set,n=r,m=t,b=0,S=0,R=100,P=()=>{let c={link:null,impactNode:null,impactUid:-1,hitTargetUids:null,isDirty:false,propose:null};return c.propose={set:(x,I,E=1)=>{I!==c.impactNode.state[x]&&(c.link.count++,(!p[c.impactUid]||p[c.impactUid].length===0)&&(p[c.impactUid]=[],S++),p[c.impactUid].push({key:x,value:I,weight:E}),c.isDirty||(c.hitTargetUids.push(c.impactUid),c.isDirty=true));},update:(x,I,E="add")=>{c.link.count++,(!p[c.impactUid]||p[c.impactUid].length===0)&&(p[c.impactUid]=[],S++),p[c.impactUid].push({key:x,delta:I,op:E,weight:1}),c.isDirty||(c.hitTargetUids.push(c.impactUid),c.isDirty=true);},patch:(x,I)=>{c.link.count++,(!p[c.impactUid]||p[c.impactUid].length===0)&&(p[c.impactUid]=[],S++),p[c.impactUid].push({key:x,patch:I,weight:1}),c.isDirty||(c.hitTargetUids.push(c.impactUid),c.isDirty=true);}},c},te=Array.from({length:R},P),V=R-1,J=(c,x,I)=>{let E=x.path,H=c.impact;if(c.count>=s){l.emit("entangle:blocked",{observer:E,target:H,count:c.count});return}let F=n(H),O=c.isProxy?x.proxy:x,T=c.isProxy?F.proxy:F;if(c.filter&&!c.filter(O,T))return;let K,U=true;V<0?(K=P(),U=false):K=te[V--],K.isDirty=false,K.link=c,K.impactNode=F,K.impactUid=F.uid,K.hitTargetUids=I;let k=c.emit(O,T,K.propose);if(k instanceof Promise||k&&typeof k.then=="function")return b++,(async()=>{try{await k;}catch(d){l.emit("node:error",{path:E,error:d}),l.onError({path:E,error:d});}finally{b--,U&&(te[++V]=K);}})();U&&(te[++V]=K);};return {useEntangle:c=>{let{cause:x,impact:I,via:E,emit:H,filter:F,isProxy:O}=c;if(!E||E.length===0){l.emit("entangle:warn",{path:x,type:"no_keys"});return}let K=n(x).uid;a[K]||(a[K]=new Map);let U=a[K];for(let k=0;k<E.length;k++){let d=E[k];U.has(d)||U.set(d,[]),U.get(d).push({impact:I,emit:H,filter:F,count:0,isProxy:!!O});}},updateEntangleLevel:()=>{let c=m();h.clear();for(let x=0;x<a.length;x++)if(a[x]!==void 0){let I=c.get(x)||0;h.add(I);}},Turnstile:{volatileLevels:h,get inFlightCount(){return b},get hasPendingGhosts(){return S>0},hasObserver:c=>a[c]!==void 0,getTriggerKeys:c=>{let x=a[c];return x?Array.from(x.keys()):[]},receiveGhosts:(c,x=[])=>{let I=c.uid,E=[],H=a[I];if(!H||x.length===0)return E;let F=[];for(let k=0;k<x.length;k++){let d=H.get(x[k]);if(d)for(let u=0;u<d.length;u++)F.push(d[u]);}let O=0,T=false,K=null;for(;O<F.length;O++){if(e.shouldYield()){T=true;break}let k=J(F[O],c,E);if(k){K=k,T=true,O++;break}}let U=()=>{if(E.length<=1)return E;let k=[],d=Object.create(null);for(let u=0;u<E.length;u++){let B=E[u];d[B]||(d[B]=true,k.push(B));}return k};return T?(async()=>{for(K&&await K,e.shouldYield()&&await e.yieldToMain();O<F.length;){let k=[],d=Math.min(O+R,F.length);for(;O<d;O++){let u=J(F[O],c,E);u&&k.push(u);}k.length>0&&await Promise.all(k.map(async u=>{await u,e.shouldYield()&&await e.yieldToMain();})),e.shouldYield()&&await e.yieldToMain();}return U()})():U()},resolveGhosts:c=>{let x=c.uid,I=p[x];if(!I||I.length===0)return [];let E=[],H=Object.create(null);for(let F=0;F<I.length;F++){let O=I[F];H[O.key]||(H[O.key]=[]),H[O.key].push(O);}for(let F in H){let O=H[F],T=c.state[F],K,U=-1/0,k=false;for(let d=0;d<O.length;d++){let u=O[d];if(u.patch!==void 0&&(T=u.patch(T)),u.value!==void 0){let B=u.weight??1;B>=U&&(U=B,K=u.value,k=true);}}k&&(T=K);for(let d=0;d<O.length;d++){let u=O[d];if(u.delta!==void 0)switch(u.op||"add"){case "add":T=(typeof T=="number"?T:0)+u.delta;break;case "remove":T=Array.isArray(T)?T.filter(W=>W!==u.delta):T;break;case "intersect":T=Array.isArray(T)?T.filter(W=>u.delta.includes(W)):u.delta;break;case "union":{let W=Array.isArray(T)?T:[],ne=Array.isArray(u.delta)?u.delta:[u.delta];T=[...new Set([...W,...ne])];break}case "merge":{let W=typeof T=="object"&&T!==null&&!Array.isArray(T)?T:{},ne=typeof u.delta=="object"&&u.delta!==null&&!Array.isArray(u.delta)?u.delta:{};T={...W,...ne};break}}}Object.is(c.state[F],T)||(c.state[F]=T,E.push(F));}return p[x]=[],S--,E.length>0?E:[]},resetCounters:()=>{for(let c=0;c<a.length;c++){let x=a[c];if(x)for(let I of x.values())for(let E=0;E<I.length;E++)I[E].count=0;}}}}};function rt(g,e,t,r,o){let i=et(),l=0,s=new Map,a=[],p=[],h=[],n=[],M=false,f=new Set,b=async()=>{let d=Array.from(f);if(f.clear(),"signalTrigger"in o&&typeof o.signalTrigger=="function")for(let u of d){let B=x(u);o.signalTrigger(B.dirtySignal);}else "emit"in o&&o.emit(d);},S=()=>{M||(M=true,requestAnimationFrame(()=>{try{for(;f.size>0;)b();}finally{M=false;}}));},{useEntangle:R,updateEntangleLevel:P,Turnstile:te}=nt({useEntangleStep:g.useEntangleStep},i,e.GetUidToLevelMap,c,x,I,{emit:r.emit,onError:r.callOnError}),{TaskRunner:V,CancelTask:J}=tt({useGreedy:g.useGreedy},e,{GetNodeByPath:c,GetNodeByUid:x,GetPathByUid:I,GetBucket:F,GetMaxUid:O,Turnstile:te},r,{requestUpdate:S,flushPathSet:f},i),z=d=>{throw new Error(`[MeshFlow] Duplicate Path: ${d}`)},y=d=>{s.has(d.path)&&z(String(d.path));let u=++l,B={path:d.path,getNode:ue=>c(ue)},W=(ue,re="value")=>{let Pe=ue({...B}),Me=c(d.path);if(!Object.is(Me.state[re],Pe)){if(t.createHistoryAction&&t.pushIntoHistory){let Te=t.createHistoryAction([{path:d.path,value:Me.state[re]},{path:d.path,value:Pe}],ye=>{let ee=c(ye.path);ee.state[re]=ye.value,T(ye.path);});t.pushIntoHistory(Te);}Me.state[re]=Pe,T(d.path);}},ne=Ue({uid:u,type:d.type,path:d.path,state:d.state,meta:d.meta,nodeBucket:{},dirtySignal:"signalCreator"in o?o.signalCreator():void 0,notifyKeys:d.notifyKeys,dependOn:W});return s.set(ne.path,u),h[u]=ne.path,a[u]=ne,ne},_=d=>{s.has(d.path)&&z(String(d.path));let u=++l,B=Ue({uid:u,type:d.type,path:d.path,state:{},meta:d,nodeBucket:{},children:d.children});return s.set(B.path,u),p[u]=B,B};function c(d){let u=s.get(d),B=a[u];if(!B)throw Error("Wrong id");return B}function x(d){let u=a[d];if(!u)throw Error("Wrong id");return u}function I(d){return h[d]}function E(d){let u=s.get(d);return p[u]}function H(d){return n.push(d)-1}function F(d){let u=n[d];if(!u)throw Error("Wrong id");return u}function O(){return l}let T=d=>{let u=c(d);if(!u)throw Error("Wrong id");f.add(u.uid),S();let B=e.GetNextDependency(u.uid);K(u.uid,B);};function K(d,u){V(d,u);}return {registerNode:y,registerGroupNode:_,GetNodeByPath:c,GetGroupByPath:E,notify:T,notifyAll:async()=>{Promise.resolve().then(async()=>{let d=e.GetDependencyOrder();if(!d||d.length===0)return;let u=d[0];try{V(null,u);}catch(B){throw r.callOnError(B),B}finally{S();}});},batchNotify:d=>{if(!d||d.length===0)return;if(t.createHistoryAction&&t.pushIntoHistory){let B=t.createHistoryAction([d.map(W=>({path:W.path,key:W.key,value:c(W.path).state[W.key]})),d.map(W=>({path:W.path,key:W.key,value:W.value}))],W=>{let ne=new Set;W.forEach(ue=>{let re=c(ue.path);re.state[ue.key]=ue.value,f.add(ue.path),ne.add(ue.uid);}),S(),ne.size>0&&V(null,Array.from(ne));});t.pushIntoHistory(B);}let u=new Set;d.forEach(B=>{let W=c(B.path);W.state[B.key]=B.value,f.add(W.uid),u.add(W.uid);}),S(),u.size>0&&V(null,Array.from(u));},useEntangle:R,updateEntangleLevel:P,SetBucket:H,GetBucket:F,CancelTask:J,UITrigger:o,UidToNodeMap:a}}function st(g,e){let t=false,r=false,o=false,i=false,l=new Map,s=[],a=[],p=[],h=[],n=[],M=[],f=[],m=new Map,{GetNextDependency:S,GetPrevDependency:R,GetAllPrevDependency:P,GetAllNextDependency:te,rebuildDirectDependencyMaps:V}=qe(()=>s,()=>p,()=>M,()=>n),J={},z={};if(e.modules.useHistory){let A=e.modules.useHistory,Y;A.isMeshModuleInited?Y=A:Y=A();let{Undo:L,Redo:Z,PushIntoHistory:Q,CreateHistoryAction:w,updateUndoSize:C,updateRedoSize:v}=Y();J.pushIntoHistory=Q,J.createHistoryAction=w,z={Undo:L,Redo:Z,updateUndoSize:C,updateRedoSize:v};}let y=!!e.modules.useMeshRenderGate,_={};if(y){let A=e.modules.useMeshRenderGate.isMeshModuleInited,Y=e.modules.useMeshRenderGate;_=(A?Y:Y())(()=>re);}let{onError:c,callOnError:x}=$e(),{onSuccess:I,callOnSuccess:E}=Xe(),{onStart:H,callOnStart:F}=Je(),{emit:O,usePlugin:T,destroyPlugin:K}=Ze(),{SetTrace:U,useTrace:k}=We(),d=k();T(d);let u=y?{..._}:{...e.UITrigger},B=rt({useGreedy:e.config.useGreedy,useEntangleStep:e.config.useEntangleStep||100},{GetDependencyOrder:()=>f,GetAllNextDependency:te,GetNextDependency:S,GetPrevDependency:R,GetAllPrevDependency:P,GetUidToLevelMap:()=>m},J,{callOnError:x,callOnSuccess:E,callOnStart:F,emit:O},u),{SetBucket:W,GetBucket:ne,GetGroupByPath:ue,GetNodeByPath:re,notifyAll:Pe,useEntangle:Me,updateEntangleLevel:Te,CancelTask:ye}=B;y&&_.init();let ee={};if(e.modules.useInternalForm){let{uiSchema:A,GetFormData:Y}=e.modules.useInternalForm(B,g);ee={uiSchema:A,GetFormData:Y};}let ie={};if(e.modules.useSchemaValidators){let{SetValidators:A}=e.modules.useSchemaValidators(re);ie={SetValidators:A};}let{SetRule:Ne,SetRules:ge}=Ye(re,W,ne,s,p,a,h,l),{SetStrategy:Ae}=je(re,ne),ve=Qe(s,l),Ge=()=>{let A=ve();f=A.steps,m=A.levelMap,Re();},Re=()=>{o&&(Te(),o=false);},ke=()=>{i||(i=true,Promise.resolve().then(Re).finally(()=>{i=false;}));},we=()=>{r||(r=true,Promise.resolve().then(()=>{if(Ge(),t){let{directNextMap:A,directPrevMap:Y}=V(f.flat());n=A,M=Y;}}).finally(()=>{r=false,t=false;}));};return {SetRule:(A,Y,L,Z)=>{Ne(A,Y,L,Z),t=true,we();},SetRules:(A,Y,L,Z)=>{ge(A,Y,L,Z),t=true,we();},SetStrategy:Ae,useEntangle:A=>{Me(A),o=true,ke();},SetTrace:U,usePlugin:T,SetValue:(A,Y,L)=>{Re(),re(A).dependOn(()=>L,Y);},GetValue:(A,Y="value")=>re(A).proxy[Y],SetValues:A=>{Re(),B.batchNotify(A);},GetGroupByPath:ue,notifyAll:async()=>{Ge(),await Pe();},GetAllDependency:()=>s,GetDependencyOrder:()=>f,historyExports:z,formExports:ee,validatorExports:ie,batchRenderExport:_,hasRenderGate:()=>y,onError:c,onSuccess:I,onStart:H,scheduler:B,destroyPlugin:K,CancelTask:ye}}var xe=new Map,ot=(g,e,t)=>{try{if(xe.has(g))throw Error("engineID repeated");let r=st(e,{config:t.config||{useGreedy:!1},UITrigger:t.UITrigger,modules:t.modules??{},plugins:{}}),{SetRule:o,SetRules:i,SetValues:l,SetStrategy:s,SetValue:a,GetValue:p,usePlugin:h,useEntangle:n,GetGroupByPath:M,notifyAll:f,SetTrace:m,GetAllDependency:b,GetDependencyOrder:S,historyExports:R,formExports:P,validatorExports:te,batchRenderExport:V,hasRenderGate:J,onError:z,onSuccess:y,onStart:_,scheduler:c,destroyPlugin:x,CancelTask:I}=r,E={config:{SetRule:o,SetRules:i,SetStrategy:s,notifyAll:f,SetTrace:m,usePlugin:h,hasRenderGate:J,useEntangle:n},data:{SetValue:a,GetValue:p,SetValues:l,GetGroupByPath:M},dependency:{GetAllDependency:b,GetDependencyOrder:S},hooks:{onError:z,onSuccess:y,onStart:_}},H=(T,K,U)=>{!K||typeof K!="object"||Object.keys(K).forEach(k=>{let d=K[k];if(typeof d=="object"&&d!==null)T[k]=T[k]||{},H(T[k],d,U);else if(typeof d=="function"){let u=k;if(u==="useMeshRenderGate")u="render";else if(u.startsWith("use")){let B=u.slice(3);u=B.charAt(0).toLowerCase()+B.slice(1);}k==="useHistory"&&U.exports.history&&Object.keys(U.exports.history).length>0?T[u]=U.exports.history:k==="useInternalForm"&&U.exports.form&&Object.keys(U.exports.form).length>0?T[u]=U.exports.form:k==="useSchemaValidators"&&U.exports.validator&&Object.keys(U.exports.validator).length>0?T[u]=U.exports.validator:k==="useMeshRenderGate"&&U.exports.render?T[u]=U.exports.render:T[u]=d(U.scheduler,U.Schema);}});},F={...E,destroyPlugin:x,CancelTask:I,modules:{}},O=t.modules;return O&&H(F.modules,O,{scheduler:c,Schema:e,exports:{history:R,form:P,validator:te,render:V}}),xe.set(g,F),F}catch(r){throw Error(r)}},fn=()=>(g,e,t)=>it(g,e,t),pn=g=>{let e=xe.get(g);if(!e)throw Error("Engine not found.");return e},hn=g=>{let e=xe.get(g);e.destroyPlugin(),e.CancelTask(),xe.delete(g);},it=ot;exports.DefaultStrategy=Ve;exports.MeshFlowEventsName=Oe;exports.TriggerCause=Ke;exports.deleteEngine=hn;exports.useEngine=pn;exports.useEngineManager=ot;exports.useMeshFlow=it;exports.useMeshFlowDefiner=fn;exports.useScheduler=rt;
1
+ 'use strict';var Ce=(P=>(P[P.FlowStart=0]="FlowStart",P[P.FlowSuccess=1]="FlowSuccess",P[P.FlowEnd=2]="FlowEnd",P[P.FlowAbort=3]="FlowAbort",P[P.FlowWait=4]="FlowWait",P[P.FlowFire=5]="FlowFire",P[P.NodeStart=6]="NodeStart",P[P.NodeSuccess=7]="NodeSuccess",P[P.NodeProcessing=8]="NodeProcessing",P[P.NodeError=9]="NodeError",P[P.NodePending=10]="NodePending",P[P.NodeRevive=11]="NodeRevive",P[P.NodeIntercept=12]="NodeIntercept",P[P.NodeRelease=13]="NodeRelease",P[P.NodeStagnate=14]="NodeStagnate",P[P.NodeBucketSuccess=15]="NodeBucketSuccess",P[P.EntangleWarn=16]="EntangleWarn",P[P.EntangleBlocked=17]="EntangleBlocked",P))(Ce||{}),Ue=(r=>(r[r.CAUSALITY=0]="CAUSALITY",r[r.INVERSION=1]="INVERSION",r[r.REPERCUSSION=2]="REPERCUSSION",r))(Ue||{});var Ve=(r=>(r.OR="OR",r.PRIORITY="PRIORITY",r.MERGE="MERGE",r))(Ve||{});var Le=class{computedRules=[];getRuleResult(e,t,r){if(e.entityId==="__base__")return e.logic(t);if(!(!e._hasRun||r(e.triggerUids)))return e._lastResult;let i=e.logic(t);return i instanceof Promise?i.then(l=>(e._lastResult=l,e._hasRun=true,l)):(e._lastResult=i,e._hasRun=true,i)}store={OR:(e,t,r)=>{let o,i,l=this.computedRules;for(let s=0;s<l.length;s++){let a=l[s],p=this.getRuleResult(a,e,r);if(p instanceof Promise)return (async()=>{let n=await p;if(a.entityId==="__base__"?i=n:n&&(o=n),typeof o>"u")for(let M=s+1;M<l.length;M++){let f=l[M],m=this.getRuleResult(f,e,r),b=m instanceof Promise?await m:m;if(f.entityId==="__base__"){i=b;continue}if(b){o=f.value;break}}return typeof o>"u"&&(o=i),{res:o,version:t}})();let h=p;if(a.entityId==="__base__"){i=h;continue}if(h){o=a.value;break}}return typeof o>"u"&&(o=i),{res:o,version:t}},PRIORITY:(e,t,r)=>{let o,i=this.computedRules;for(let l=0;l<i.length;l++){let s=i[l],a=this.getRuleResult(s,e,r);if(a instanceof Promise)return (async()=>{let p=await a;if(p!==void 0)return {res:s.value!==void 0?s.value:p,version:t};for(let h=l+1;h<i.length;h++){let n=i[h],M=this.getRuleResult(n,e,r),f=M instanceof Promise?await M:M;if(f!==void 0)return {res:f,version:t}}return {res:void 0,version:t}})();if(a!==void 0)return {res:s.value!==void 0?s.value:a,version:t}}return {res:o,version:t}},MERGE:(e,t,r)=>{let o,i,l=this.computedRules,s=(p,h)=>p===void 0?h:h===void 0?p:Array.isArray(p)&&Array.isArray(h)?[...h,...p]:typeof p=="object"&&typeof h=="object"?{...h,...p}:p;for(let p=0;p<l.length;p++){let h=l[p],n=this.getRuleResult(h,e,r);if(n instanceof Promise)return (async()=>{let f=await n,m=(S,R)=>{if(S.entityId==="__base__")i=s(i,R);else if(R){let P=S.value!==void 0?S.value:R;o=s(o,P);}};m(h,f);for(let S=p+1;S<l.length;S++){let R=l[S],P=this.getRuleResult(R,e,r),te=P instanceof Promise?await P:P;m(R,te);}return {res:s(o,i),version:t}})();let M=n;if(h.entityId==="__base__"){i=s(i,M);continue}if(M){let f=h.value!==void 0?h.value:M;o=s(o,f);}}return {res:s(o,i),version:t}}};CurrentStrategy=()=>{};CurrentStrategyType="PRIORITY";getRules=()=>{};constructor(e){this.getRules=e,this.CurrentStrategy=this.store.PRIORITY,this.updateComputedRules();}updateComputedRules(){let e=this.getRules();this.CurrentStrategyType==="PRIORITY"||this.CurrentStrategyType==="MERGE"?this.computedRules=Array.from(e.values()).map(t=>Array.from(t)).flat().sort((t,r)=>r.priority-t.priority):this.computedRules=Array.from(e.values()).map(t=>Array.from(t)).flat();}setStrategy(e){this.CurrentStrategyType=e,this.CurrentStrategy=this.store[e],this.updateComputedRules();}evaluate(e,t,r){return this.CurrentStrategy(e,t,r)}},Ae=class{path;strategy;contract;rules=new Map;isValue=false;id=0;cache=void 0;pendingPromise=null;version=0;deps=new Map;_forceNotify=false;promiseToken=null;useCache=true;effectArray=[];constructor(e,t,r){let o=()=>this.rules;this.strategy=new Le(o),this.path=r,this.isValue=t==="value",this.contract=this.inferType(e),this.cache=e,this.setRule({priority:0,entityId:"__base__",logic:()=>e});}setUseCache(e){this.useCache=e;}forceNotify(){this._forceNotify=true;}isForceNotify(){return this._forceNotify}setStrategy(e){this.strategy.setStrategy(e);}setDefaultRule(e){let t=new Set;t.add(e),this.rules.set(-1,t);}setRules(e,t){t&&this.updateDeps(t);let r=++this.id,o={...e,entityId:r};for(let i of e.triggerUids)this.rules.has(i)||this.rules.set(i,new Set),this.rules.get(i).add(o);return this.strategy.updateComputedRules(),()=>{for(let i of e.triggerUids){let l=this.rules.get(i);l&&(l.delete(o),l.size===0&&(this.rules.delete(i),this.deps.delete(i)));}this.strategy.updateComputedRules();}}updateDeps(e){for(let[t,r,o]of e){if(r.length==0)continue;let i=this.deps.get(t)||Object.create(null);for(let l of r)i[l]=o[l];this.deps.set(t,i);}}setRule(e,t){if(t&&this.updateDeps(t),typeof e.entityId=="string"){this.setDefaultRule(e);return}let r=++this.id,o={...e,entityId:r};if(e)for(let i of e.triggerUids)this.rules.has(i)||this.rules.set(i,new Set),this.rules.get(i).add(o);return this.strategy.updateComputedRules(),()=>{for(let i of e.triggerUids){let l=this.rules.get(i);l&&(l.delete(o),l.size===0&&(this.rules.delete(i),this.deps.delete(i)));}this.strategy.updateComputedRules();}}setSideEffect(e){this.effectArray.push(e);}getSideEffect(){return [...this.effectArray]}evaluate(e){let t=null;if(e.GetToken&&(t=e.GetToken()),this.pendingPromise&&this.promiseToken!==t&&(this.pendingPromise=null,this.promiseToken=null),this.pendingPromise)return this.pendingPromise;let r=false;if(typeof e.triggerUid=="number"){r=true,this.deps.size==0&&(r=false);for(let[s,a]of this.deps.entries()){let p=e.getStateByUid(s);if(!p){r=false;break}for(let h in a){let n=a[h],M=p[h];if(typeof n=="object"&&n!==null){r=false;break}if(n!==M){r=false;break}}if(!r)break}}if(r&&this.useCache)return this.cache;this.promiseToken=t;let o=++this.version,i=s=>{if(!s||s.length===0)return true;for(let a of s){let p=this.deps.get(a);if(!p)return true;let h=e.getProxyByUid(a);if(!h)return true;for(let n in p){let M=p[n],f=h[n];if(typeof M=="object"&&M!==null||M!==f)return true}}return false},l=this.strategy.evaluate(e,o,i);if(!(l instanceof Promise)){let{res:s,version:a}=l;return this.finalizeSync(s,a,e,t)}return this.pendingPromise=(async()=>{try{let{res:s,version:a}=await l;return this.finalizeSync(s,a,e,t)}catch(s){throw {path:this.path,error:s}}finally{this.promiseToken===t&&(this.pendingPromise=null,this.promiseToken=null);}})(),this.pendingPromise}finalizeSync(e,t,r,o){return o!==this.promiseToken||t<this.version?this.cache:(this.cache=e,this.deps.forEach((i,l)=>{let s=r.getProxyByUid(l);if(!s)return;let a=Object.keys(i);for(let p of a)i[p]=s[p];}),e)}inferType(e){return Array.isArray(e)?"array":typeof e}};var We=(g,e,t)=>{let o=i=>{let l=t.triggerUids.map(p=>{let h=i.getProxyByUid(p);if(t.triggerKeys.length===0)return h;let n={};return t.triggerKeys.forEach(M=>{n[M]=h[M];}),n}),s=Object.create(null);return Object.defineProperty(s,"triggerTargets",{get:()=>l}),Object.defineProperty(s,"affectedTatget",{get:()=>i.getProxyByUid(g)[e]}),t.logic({slot:s})};return {value:t.value,targetUid:g,triggerUids:t.triggerUids,priority:t.priority??10,logic:o}},ze=(g,e,t,r,o,i,l,s)=>{if(!g)throw Error();let a=g,p=(M,f)=>{typeof r[M]>"u"&&(r[M]=[],i[M]=new Set),i[M].add(f),i[M].size>r[M].length&&r[M].push(f),typeof o[f]>"u"&&(o[f]=[],l[f]=new Set),l[f].add(M),l[f].size>o[f].length&&o[f].push(M);};return {SetRule:(M,f,m,b)=>{let S=a(M),R=a(f),P=b.triggerKeys||[],te=s.get(R.uid)||0,_=s.get(S.uid)||0;te+=1,_+=1,s.set(R.uid,te),s.set(S.uid,_);let Z=We(R.uid,m,{...b,triggerUids:[S.uid],triggerKeys:P}),W=[M].map(L=>{let c=a(L);return [c.uid,P,c.proxy]});if(p(S.uid,R.uid),typeof R.nodeBucket[m]=="number"){let L=t(R.nodeBucket[m]);L.setRule(Z,W),b.effect&&L.setSideEffect({fn:b.effect,args:b.effectArgs?b.effectArgs:[m]});}else {let L=R.meta[m],c=new Ae(L,m,f);c.setRule(Z,W),b.effect&&c.setSideEffect({fn:b.effect,args:b.effectArgs?b.effectArgs:[m]}),R.nodeBucket[m]=e(c);}R.state[m]=R.meta[m];let y=t(R.nodeBucket[m]);b.forceNotify&&y.forceNotify(),b.cacheStrategy=="none"&&y.setUseCache(false);},SetRules:(M,f,m,b)=>{let S=a(f),R=s.get(S.uid)||0;R+=1,s.set(S.uid,R);let P=[];for(let y of M){let L=a(y);P.push(L.uid);let c=s.get(L.uid)||0;c+=1,s.set(L.uid,c),p(L.uid,S.uid);}let te=b.triggerKeys||[],_=We(S.uid,m,{...b,triggerUids:P,triggerKeys:te}),Z=M.map(y=>{let L=a(y);return [L.uid,te,L.state]});if(typeof S.nodeBucket[m]=="number"){let y=t(S.nodeBucket[m]);y.setRules(_,Z),b.effect&&y.setSideEffect({fn:b.effect,args:b.effectArgs?b.effectArgs:[m]});}else {let y=S.meta[m],L=new Ae(y,m,f);L.setRules(_,Z),b.effect&&L.setSideEffect({fn:b.effect,args:b.effectArgs?b.effectArgs:[m]}),S.nodeBucket[m]=e(L);}S.state[m]=S.meta[m];let W=t(S.nodeBucket[m]);b.forceNotify&&W.forceNotify(),b.cacheStrategy=="none"&&W.setUseCache(false);}}};var qe=(g,e)=>{let t=g||void 0;if(!t)throw Error();return {SetStrategy:(o,i,l)=>{let s=t(o);e(s.nodeBucket[i]).setStrategy(l);}}};function Qe(){let g=new Map,e=new Map,t=new Set,r=(l,s)=>{g.set(l,s);let a=e.get(l);a&&a(s);};return {SetTrace:(l,s)=>{e.set(l,s);let a=g.get(l)||"idle";return s(a),{cancel:()=>{e.delete(l);}}},useTrace:()=>({apply:s=>{s.on(0,()=>{t.forEach(a=>r(a,"idle")),t.clear(),g.clear();}),s.on(13,({path:a,type:p})=>{(p==1||p==2)&&(t.add(a),r(a,"pending"));}),s.on(10,({path:a})=>{t.add(a),(!g.has(a)||g.get(a)==="idle")&&r(a,"pending");}),s.on(6,({path:a})=>{t.add(a),r(a,"calculating");}),s.on(7,({path:a})=>{r(a,"calculated");}),s.on(12,({path:a,type:p})=>{p==3&&r(a,"calculating"),p==6&&r(a,"idle");}),s.on(14,({path:a})=>{r(a,"pending");}),s.on(9,({path:a})=>r(a,"error"));}})}}function Xe(g,e,t,r){return {GetNextDependency:h=>r()[h]||[],GetPrevDependency:h=>t()[h]||[],GetAllPrevDependency:h=>e()[h]||[],GetAllNextDependency:h=>g()[h]||[],rebuildDirectDependencyMaps:h=>{let n=[],M=[],f=g();for(let m of h){let b=f[m]||[];n[m]=b;for(let S=0;S<b.length;S++){let R=b[S];typeof M[R]>"u"&&(M[R]=[]),M[R].push(m);}}return {directNextMap:n,directPrevMap:M}}}}function Ze(g,e){let t=o=>{let i=[],l=[],s=new Map,a=o.size,p=0,h=0;for(let[n,M]of o)M===0&&l.push(n);if(l.length===0&&a>0)throw Error("Circular dependency detected");for(;l.length>0;){i.push([...l]);let n=[];for(let M of l){p++,s.set(M,h);let f=g[M];if(f)for(let m of f){let b=o.get(m)-1;o.set(m,b),b===0&&n.push(m);}}l=n,h++;}if(p<a)throw Error("Circular dependency detected");return {steps:i,levelMap:s}};return ()=>{let o=new Map;for(let i of e.keys()){let l=g[i]||[];o.has(i)||o.set(i,0);for(let s of l){let a=o.get(s)||0;o.set(s,++a);}}return t(o)}}var Ne=()=>{let g=[];return {on:e=>(g.push(e),()=>{let t=g.indexOf(e);t>-1&&g.splice(t,1);}),call:e=>g.forEach(t=>{t(e);})}};function Je(){let{on:g,call:e}=Ne();return {onError:g,callOnError:e}}function et(){let{on:g,call:e}=Ne();return {onSuccess:g,callOnSuccess:e}}var tt=()=>{let g=new Set,e=new Map,t=new Set,r=(s,a)=>{e.get(s)?.forEach(p=>p(a));},o=(s,a)=>(e.has(s)||e.set(s,new Set),e.get(s).add(a),()=>e.get(s)?.delete(a));return {usePlugin:s=>{let a=new Set,p=(n,M)=>{let f=o(n,M);return a.add(f),f};s.apply({on:p}),g.add(s);let h=()=>{a.forEach(n=>n()),a.clear(),g.delete(s),t.delete(h);};return t.add(h),h},emit:r,destroyPlugin:()=>{t.forEach(s=>s()),t.clear(),e.clear(),g.clear();}}};function nt(){let{on:g,call:e}=Ne();return {onStart:g,callOnStart:e}}var rt=(g={frameQuota:12})=>{let e=performance.now(),t=0,r=false,o=()=>!!navigator?.scheduling?.isInputPending?.({includeContinuous:true});return {getIsFirstFrame:()=>r,reset(){e=performance.now(),t=0,r=true;},shouldYield(){return !r&&(++t&15)!==0?false:!!(performance.now()-e>g.frameQuota||o())},async yieldToMain(){return new Promise(i=>{_e(()=>{e=performance.now(),t=0,r&&(r=false),i();});})}}},_e=g=>{let{port1:e,port2:t}=new MessageChannel;e.onmessage=g,t.postMessage(null);};function st(g,e,t,r,o,i){let l=new Map,s=g.useGreedy,a=null,p=()=>{l.clear();},h={path:null,level:0,targetLevel:0,currentLevel:0,pendingParentsCount:0,active:0,pending:0,blocked:0,nums:0,asyncNums:0},n={path:null,type:0,triggerPath:null,calledBy:0,key:null,value:null,error:null,token:null,duration:null,detail:h};return {TaskRunner:async(f,m)=>{let S=Symbol("token"),R=typeof f=="number"?f:"__NOTIFY_ALL__";l.set(R,S),a=S;let P=false,te=false;i.reset();let _=t.GetMaxUid()+3,Z=new Array(_).fill(0),W=0,y=new Uint8Array(_),L=new Int32Array(_),c=new Int32Array(_),A=new Int32Array(_*2),w=0,E=0,H=new Int32Array(_*2),F=0,O=0,T=new Int32Array(_*2),K=0,U=0;m.forEach(N=>{Z[N]=1,e.GetAllNextDependency(N).forEach(se=>{Z[se]=1;});});let k=new Array(_).fill(null),d=[],u=t.Turnstile,B=new Array(_).fill(null).map(()=>[]),j=new Array(_).fill(null).map(()=>[]),ne=u.volatileLevels.size>0,oe=ne?u.hasObserver:N=>false,re=ne?u.receiveGhosts:()=>[],Se=ne?u.resolveGhosts:()=>[],me=ne?u.getTriggerKeys:()=>[],Re=u?.volatileLevels||new Set,de=-1,J=e.GetUidToLevelMap(),ie=0,Ee=0,Pe=N=>{e.GetAllNextDependency(N).forEach(ae=>{let v=J.get(ae)||0;v>Ee&&(Ee=v);});},Ge=new Set;typeof f=="number"&&(y[f]|=16,Ge.add(f),Pe(f),o.flushPathSet.add(f));let we=typeof f=="number"?[f]:m;i.shouldYield()&&(o.requestUpdate(),await i.yieldToMain());let Ie=we.map(async N=>{if(oe(N)){let se=t.GetNodeByUid(N),ae=me(N);if(ae.length>0){let v=re(se,ae);return v instanceof Promise&&(v=await v),{seed:N,hitTargets:v}}}return {seed:N,hitTargets:[]}});if((await Promise.all(Ie)).forEach(({seed:N,hitTargets:se})=>{if(se&&se.length>0){d.push(...se);let ae=J.get(N)||0;de=Math.max(de,ae);}}),(d.length>0||we.length>1)&&(o.requestUpdate(),await i.yieldToMain(),l.get(R)!==S))return;let Ke=d.length>0;m.forEach(N=>{if(!Ge.has(N))if(Ke){let se=J.get(N)??0;c[N]=se,y[N]&4||(y[N]|=4,T[K++]=N,U++);let ae=t.GetPathByUid(N);n.path=ae,n.type=2,r.emit(14,n);}else y[N]&1||(y[N]|=1,A[w++]=N,E++),Pe(N);}),typeof f=="number"?ie=J.get(f)??0:ie=Math.min(...m.map(N=>J.get(N)??0));let Oe=performance.now(),De=typeof R=="number"?t.GetPathByUid(R):"__NOTIFY_ALL__";n.path=De,n.token=S,r.emit(0,n),r.callOnStart({path:De});let Be=false,Ye=30,je=(N,se)=>{let ae=false,v=false,Y=false,V=t.GetNodeByUid(N),$=t.GetPathByUid(N),q=V.calledBy,I=B[N];I.length=0;let C=oe(N),G=C?me(N):[],D=x=>{C&&(G.length===0||G.includes(x))&&I.push(x);},le=j[N];le.length=0;let ce=false;if(V.calledBy===1){ce=true,ae=true,o.flushPathSet.add(N);let x=k[N];x&&(I.push(...x),k[N]=null);}let ye=(x,X)=>{let ee=J.get(x)??0,pe=t.GetNodeByUid(x),Q=t.GetPathByUid(x),he=(q===1||q===2)&&ee<=de;he&&y[x]&16&&(y[x]&=-17,n.path=Q,n.triggerPath=$,r.emit(11,n));let ue=0;if(!(y[x]&49)){if(y[x]&2)ue=L[x]-1;else {if(ee>ie&&O>Ye){c[x]=ee,y[x]&4||(y[x]|=4,T[K++]=x,U++),n.path=Q,n.type=7,r.emit(12,n);return}let Me=e.GetPrevDependency(x),z=0;for(let ge of Me){if(y[ge]&16)continue;(J.get(ge)??0)>ie&&z++;}ue=z;}if(ue<=0){let Me=(y[x]&1)!==0,z=(y[x]&32)!==0;if(Me||z){n.path=Q,n.type=z?3:3.1,r.emit(12,n);return}y[x]&2&&(y[x]&=-3,O--),he?pe.calledBy=2:pe.calledBy=0,y[x]&1||(y[x]|=1,A[w++]=x,E++),n.path=Q,n.type=X,h.path=$,r.emit(13,n);}else L[x]=ue,y[x]&2||(y[x]|=2,H[F++]=x,O++);}},Te=(x=[])=>{if(l.get(R)!==S)return;if(x.length){let ee={},pe=V.proxy;for(let Q of x){let he=(Q.args||[]).reduce((ue,Me)=>(ue[Me]=pe[Me],ue),{});try{let ue=Q.fn(he);ue&&typeof ue=="object"&&Object.assign(ee,ue);}catch(ue){}}for(let Q in ee)if(Q in V.state)Object.is(V.state[Q],ee[Q])||(V.state[Q]=ee[Q],D(Q),ae=true,(V.notifyKeys.size===0||V.notifyKeys.has(Q))&&(v=true));else throw {error:`wrong effect in ${String(V.path)}`}}ae&&o.flushPathSet.add(N);let X=(ee=[])=>{if(l.get(R)!==S)return;ee&&ee.length>0&&(d.push(...ee),de=Math.max(de,J.get(N)||0)),I.length=0,n.path=$,n.calledBy=V.calledBy,r.emit(7,n),y[N]|=16;let pe=e.GetNextDependency(N);(v||Y)&&(Pe(N),e.GetAllNextDependency(N).forEach(ge=>{Z[ge]=1;}));let Q=t.GetNodeByUid(N),he=J.get(N)??0,ue=Re.has(he)||d.length>0;for(let z of pe){let ge=J.get(z)??0,be=t.GetPathByUid(z);if(ue&&ge>=he){c[z]=ge,y[z]&4||(y[z]|=4,T[K++]=z,U++),n.path=be,n.type=2,r.emit(14,n);continue}if(y[z]&16){n.path=be,n.type=2,r.emit(12,n);continue}if(y[z]&32||(y[z]&1)!==0){n.path=be,n.type=y[z]&32?3:3.1,r.emit(12,n);continue}if(v||Y)ye(z,1);else if(y[z]&2)ye(z,2);else {let lt=J.get(z);c[z]=lt,y[z]&4||(y[z]|=4,T[K++]=z,U++,n.path=be,n.type=1,r.emit(14,n));}}y[N]&32&&(y[N]&=-33,W--),Q.calledBy=0,(()=>{if(!P){P=true;let z=W,ge=E,be=O;n.path=$,n.type=1,h.active=z,h.pending=ge,h.blocked=be,r.emit(5,n),ke();}})();};if(oe(N)&&I.length>0){let ee=re(V,I);ee instanceof Promise?ee.then(X).catch(Fe):X(ee);}else X([]);},Fe=x=>{n.path=$,n.error=x,r.emit(9,n);let X=Symbol("abort");l.set(R,X),w=0,E=0,F=0,O=0,K=0,U=0,y.fill(0),W=0,k.fill(null),r.callOnError(x);},fe=(x,X)=>{x!==V.state[X]&&(V.state[X]=x,ae=true,D(String(X)),n.path=$,n.key=X,n.value=x,n.calledBy=V.calledBy,r.emit(15,n),(V.notifyKeys.size===0||V.notifyKeys.has(X))&&(v=true)),t.GetBucket(V.nodeBucket[X]).isForceNotify()&&(Y=true),(v||Y)&&Pe(N);};n.path=$,n.calledBy=V.calledBy,r.emit(6,n);try{let x=[];for(let X in V.nodeBucket){let ee=t.GetBucket(V.nodeBucket[X]);if(x.push(...ee.getSideEffect()),ce){r.emit(15,{path:$,key:String(X),value:V.state[X],calledBy:V.calledBy}),ee.isForceNotify()&&(Y=!0),(V.notifyKeys.size===0||V.notifyKeys.has(X))&&Pe(N);continue}let pe=ee.evaluate({affectKey:X,triggerUid:se,getProxyByUid:Q=>t.GetNodeByUid(Q).proxy,getStateByUid:Q=>t.GetNodeByUid(Q).state,GetToken:()=>S});if(pe instanceof Promise){let Q=pe.then(he=>{l.get(R)===S&&fe(he,X);});le.push(Q);}else fe(pe,X);}if(le.length>0)return Promise.all(le).then(()=>{Te(x);}).catch(Fe);Te(x);return}catch(x){Fe(x);}},ke=async()=>{if(l.get(R)!==S){P=false;return}P=true;let N=i.getIsFirstFrame(),se=0,ae=()=>30,v=0,Y=ae();try{for(;l.get(R)===S;){let V=v>=Y,$=i.shouldYield();if(V||$){if(v>0&&(se++,(N||se%2===0)&&o.requestUpdate()),await i.yieldToMain(),l.get(R)!==S)break;v=0,N=i.getIsFirstFrame();}if(E>0&&W<40){let q=w,I=0;for(let C=0;C<q;C++){let G=A[C];if((y[G]&1)===0)continue;if(W>=40||v>=Y||i.shouldYield()){for(let fe=C;fe<w;fe++){let x=A[fe];y[x]&1&&(A[I++]=x);}w=I,E=I;break}let D=t.GetNodeByUid(G),le=t.GetPathByUid(G),ce=J.get(G)??0,ye=e.GetPrevDependency(G),Te=ye.length>1;if((!s||Te)&&ce>ie){y[G]&=-2,E--;let fe=ye.filter(x=>Z[x]===1&&(y[x]&16)===0).length;L[G]=fe||0,y[G]&2||(y[G]|=2,H[F++]=G,O++),n.path=le,n.type=fe>0?4:5,h.targetLevel=ce,h.currentLevel=ie,h.pendingParentsCount=fe,r.emit(12,n);continue}y[G]&=-2,E--,(y[G]&32)===0&&(y[G]|=32,W++),n.path=le,n.calledBy=D.calledBy,r.emit(8,n),je(G,f),v++;}if(w>q){for(let C=q;C<w;C++){let G=A[C];y[G]&1&&(A[I++]=G);}w=I,E=w;}else w=I;if(E>0&&W<40)continue}if(v<Y&&s&&O>0&&W<40){let q=!1,I=0,C=0;for(let G=0;G<F;G++){let D=H[G];if((y[D]&2)===0)continue;if(L[D]<=0&&I<Y){let ce=J.get(D)??0,ye=e.GetPrevDependency(D);if(ce<=ie||ye.length<=1){y[D]&=-3,O--,y[D]&1||(y[D]|=1,A[w++]=D,E++),I++,q=!0;let Te=t.GetPathByUid(D);n.path=Te,n.type=4,r.emit(13,n);continue}}H[C++]=D;}if(F=C,I>0)continue;if(q){if(i.shouldYield()&&(await i.yieldToMain(),l.get(R)!==S))break;continue}}if(W===0&&E===0){if(u.inFlightCount>0)break;if(d.length>0){let I=!1,C=ie,G=Array.from(new Set(d));d.length=0;for(let D of G){let le=t.GetNodeByUid(D),ce=Se(le);if(ce&&ce.length>0){I=!0,le.calledBy=1,k[D]=ce,y[D]&=-17,y[D]&2&&(y[D]&=-3,O--),y[D]&1||(y[D]|=1,A[w++]=D,E++);let ye=J.get(le.uid)??0;ye<C&&(C=ye),Pe(le.uid),o.flushPathSet.add(le.uid);}}if(I){if(C<ie&&(ie=C),o.requestUpdate(),i.shouldYield()&&(await i.yieldToMain(),l.get(R)!==S))break;continue}}let q=1/0;for(let I=0;I<K;I++){let C=T[I];if(y[C]&4){let G=c[C];G<q&&(q=G);}}for(let I=0;I<F;I++){let C=H[I];if(y[C]&2){let G=J.get(C)??0;G>ie&&G<q&&(q=G);}}if(q!==1/0&&q<=Ee){ie=q;let I=0;for(let G=0;G<K;G++){let D=T[G];y[D]&4&&(c[D]===q?(y[D]&=-5,U--,y[D]&1||(y[D]|=1,A[w++]=D,E++)):T[I++]=D);}K=I;let C=0;for(let G=0;G<F;G++){let D=H[G];if(y[D]&2)if((J.get(D)??0)===q){y[D]&=-3,O--,y[D]&1||(y[D]|=1,A[w++]=D,E++);let ce=t.GetPathByUid(D);n.path=ce,n.type=3,h.level=q,r.emit(13,n);}else H[C++]=D;}F=C;continue}else {for(let I=0;I<K;I++){let C=T[I];if(y[C]&4){y[C]|=16;let G=t.GetPathByUid(C);n.path=G,n.type=6,r.emit(12,n);}}K=0,U=0;for(let I=0;I<F;I++){let C=H[I];if(y[C]&2){y[C]|=16;let G=t.GetPathByUid(C);n.path=G,n.type=6,r.emit(12,n);}}F=0,O=0;break}}E>0&&W>=40&&(n.type=2,r.emit(4,n));break}}finally{P=false;let V=W+O+E,$=u.inFlightCount||0;if(!(a===S)){n.token=S,r.emit(3,n);return}if(o.requestUpdate(),V===0&&$===0){if(l.get(R)===S&&!Be){Be=true,n.type=1,r.emit(2,n),u.resetCounters(),k.fill(null);let I=performance.now();de=-1,l.delete(R),n.token=S,n.duration=(I-Oe).toFixed(2.1)+"ms",r.emit(1,n),Promise.resolve().then(()=>{r.callOnSuccess();});}}else {let I=V===0&&$>0?3:1;if(n.type=I,h.nums=W,h.asyncNums=$,r.emit(4,n),$>0&&!te){te=true;let C=()=>{a===S&&(u.inFlightCount,u.inFlightCount===0?_e(()=>{u.inFlightCount===0?ke():requestAnimationFrame(C);}):requestAnimationFrame(C));};requestAnimationFrame(C);}}}};ke();},CancelTask:p}}function He(g){let{path:e,uid:t,type:r,meta:o,dirtySignal:i,state:l}=g,s=null,a=["path","uid","type","dependOn","nodeBucket"],h={path:e,uid:t,type:r,meta:o,dirtySignal:i,createView:(n={})=>{if(s&&Object.keys(n).length===0)return s;let M=new Proxy(n,{get(f,m){let b=m;return Reflect.has(f,m)?Reflect.get(f,m):b in g.state?g.state[b]:b in g?g[b]:o&&b in o?o[b]:Reflect.get(f,m)},set(f,m,b){return false},ownKeys(f){let m=new Set([...Reflect.ownKeys(f),...Object.keys(l||{}),...Object.keys(o||{}),...a]);return Array.from(m)},getOwnPropertyDescriptor(f,m){let b=m;return Reflect.has(f,m)||l&&b in l||o&&b in o||a.includes(b)?{enumerable:true,configurable:true}:Reflect.getOwnPropertyDescriptor(f,m)}});return s=M,M}};return "children"in g?{...h,children:g.children}:{...h,state:g.state,nodeBucket:g.nodeBucket,notifyKeys:g.notifyKeys,dependOn:g.dependOn,calledBy:0,get proxy(){return s}}}var at=(g,e,t,r,o,i,l)=>{let s=g.useEntangleStep,a=[],p=[],h=new Set,n=r,m=t,b=0,S=0,R=100,P=()=>{let c={link:null,impactNode:null,impactUid:-1,hitTargetUids:null,isDirty:false,propose:null};return c.propose={set:(A,w,E=1)=>{w!==c.impactNode.state[A]&&(c.link.count++,(!p[c.impactUid]||p[c.impactUid].length===0)&&(p[c.impactUid]=[],S++),p[c.impactUid].push({key:A,value:w,weight:E}),c.isDirty||(c.hitTargetUids.push(c.impactUid),c.isDirty=true));},update:(A,w,E="add")=>{c.link.count++,(!p[c.impactUid]||p[c.impactUid].length===0)&&(p[c.impactUid]=[],S++),p[c.impactUid].push({key:A,delta:w,op:E,weight:1}),c.isDirty||(c.hitTargetUids.push(c.impactUid),c.isDirty=true);},patch:(A,w)=>{c.link.count++,(!p[c.impactUid]||p[c.impactUid].length===0)&&(p[c.impactUid]=[],S++),p[c.impactUid].push({key:A,patch:w,weight:1}),c.isDirty||(c.hitTargetUids.push(c.impactUid),c.isDirty=true);}},c},te=Array.from({length:R},P),_=R-1,Z=(c,A,w)=>{let E=A.path,H=c.impact;if(c.count>=s){l.emit("entangle:blocked",{observer:E,target:H,count:c.count});return}let F=n(H),O=c.isProxy?A.proxy:A,T=c.isProxy?F.proxy:F;if(c.filter&&!c.filter(O,T))return;let K,U=true;_<0?(K=P(),U=false):K=te[_--],K.isDirty=false,K.link=c,K.impactNode=F,K.impactUid=F.uid,K.hitTargetUids=w;let k=c.emit(O,T,K.propose);if(k instanceof Promise||k&&typeof k.then=="function")return b++,(async()=>{try{await k;}catch(d){l.emit("node:error",{path:E,error:d}),l.onError({path:E,error:d});}finally{b--,U&&(te[++_]=K);}})();U&&(te[++_]=K);};return {useEntangle:c=>{let{cause:A,impact:w,via:E,emit:H,filter:F,isProxy:O}=c;if(!E||E.length===0){l.emit("entangle:warn",{path:A,type:"no_keys"});return}let K=n(A).uid;a[K]||(a[K]=new Map);let U=a[K];for(let k=0;k<E.length;k++){let d=E[k];U.has(d)||U.set(d,[]),U.get(d).push({impact:w,emit:H,filter:F,count:0,isProxy:!!O});}},updateEntangleLevel:()=>{let c=m();h.clear();for(let A=0;A<a.length;A++)if(a[A]!==void 0){let w=c.get(A)||0;h.add(w);}},Turnstile:{volatileLevels:h,get inFlightCount(){return b},get hasPendingGhosts(){return S>0},hasObserver:c=>a[c]!==void 0,getTriggerKeys:c=>{let A=a[c];return A?Array.from(A.keys()):[]},receiveGhosts:(c,A=[])=>{let w=c.uid,E=[],H=a[w];if(!H||A.length===0)return E;let F=[];for(let k=0;k<A.length;k++){let d=H.get(A[k]);if(d)for(let u=0;u<d.length;u++)F.push(d[u]);}let O=0,T=false,K=null;for(;O<F.length;O++){if(e.shouldYield()){T=true;break}let k=Z(F[O],c,E);if(k){K=k,T=true,O++;break}}let U=()=>{if(E.length<=1)return E;let k=[],d=Object.create(null);for(let u=0;u<E.length;u++){let B=E[u];d[B]||(d[B]=true,k.push(B));}return k};return T?(async()=>{for(K&&await K,e.shouldYield()&&await e.yieldToMain();O<F.length;){let k=[],d=Math.min(O+R,F.length);for(;O<d;O++){let u=Z(F[O],c,E);u&&k.push(u);}k.length>0&&await Promise.all(k.map(async u=>{await u,e.shouldYield()&&await e.yieldToMain();})),e.shouldYield()&&await e.yieldToMain();}return U()})():U()},resolveGhosts:c=>{let A=c.uid,w=p[A];if(!w||w.length===0)return [];let E=[],H=Object.create(null);for(let F=0;F<w.length;F++){let O=w[F];H[O.key]||(H[O.key]=[]),H[O.key].push(O);}for(let F in H){let O=H[F],T=c.state[F],K,U=-1/0,k=false;for(let d=0;d<O.length;d++){let u=O[d];if(u.patch!==void 0&&(T=u.patch(T)),u.value!==void 0){let B=u.weight??1;B>=U&&(U=B,K=u.value,k=true);}}k&&(T=K);for(let d=0;d<O.length;d++){let u=O[d];if(u.delta!==void 0)switch(u.op||"add"){case "add":T=(typeof T=="number"?T:0)+u.delta;break;case "remove":T=Array.isArray(T)?T.filter(j=>j!==u.delta):T;break;case "intersect":T=Array.isArray(T)?T.filter(j=>u.delta.includes(j)):u.delta;break;case "union":{let j=Array.isArray(T)?T:[],ne=Array.isArray(u.delta)?u.delta:[u.delta];T=[...new Set([...j,...ne])];break}case "merge":{let j=typeof T=="object"&&T!==null&&!Array.isArray(T)?T:{},ne=typeof u.delta=="object"&&u.delta!==null&&!Array.isArray(u.delta)?u.delta:{};T={...j,...ne};break}}}Object.is(c.state[F],T)||(c.state[F]=T,E.push(F));}return p[A]=[],S--,E.length>0?E:[]},resetCounters:()=>{for(let c=0;c<a.length;c++){let A=a[c];if(A)for(let w of A.values())for(let E=0;E<w.length;E++)w[E].count=0;}}}}};function ot(g,e,t,r,o){let i=rt(),l=0,s=new Map,a=[],p=[],h=[],n=[],M=false,f=new Set,b=async()=>{let d=Array.from(f);if(f.clear(),"signalTrigger"in o&&typeof o.signalTrigger=="function")for(let u of d){let B=A(u);o.signalTrigger(B.dirtySignal);}else "emit"in o&&o.emit(d);},S=()=>{M||(M=true,requestAnimationFrame(()=>{try{for(;f.size>0;)b();}finally{M=false;}}));},{useEntangle:R,updateEntangleLevel:P,Turnstile:te}=at({useEntangleStep:g.useEntangleStep},i,e.GetUidToLevelMap,c,A,w,{emit:r.emit,onError:r.callOnError}),{TaskRunner:_,CancelTask:Z}=st({useGreedy:g.useGreedy},e,{GetNodeByPath:c,GetNodeByUid:A,GetPathByUid:w,GetBucket:F,GetMaxUid:O,Turnstile:te},r,{requestUpdate:S,flushPathSet:f},i),W=d=>{throw new Error(`[MeshFlow] Duplicate Path: ${d}`)},y=d=>{s.has(d.path)&&W(String(d.path));let u=++l,B={path:d.path,getNode:oe=>c(oe)},j=(oe,re="value")=>{let Se=oe({...B}),me=c(d.path);if(!Object.is(me.state[re],Se)){if(t.createHistoryAction&&t.pushIntoHistory){let Re=t.createHistoryAction([{path:d.path,value:me.state[re]},{path:d.path,value:Se}],de=>{let J=c(de.path);J.state[re]=de.value,T(de.path);});t.pushIntoHistory(Re);}me.state[re]=Se,T(d.path);}},ne=He({uid:u,type:d.type,path:d.path,state:d.state,meta:d.meta,nodeBucket:{},dirtySignal:"signalCreator"in o?o.signalCreator():void 0,notifyKeys:d.notifyKeys,dependOn:j});return s.set(ne.path,u),h[u]=ne.path,a[u]=ne,ne},L=d=>{s.has(d.path)&&W(String(d.path));let u=++l,B=He({uid:u,type:d.type,path:d.path,state:{},meta:d,nodeBucket:{},children:d.children});return s.set(B.path,u),p[u]=B,B};function c(d){let u=s.get(d),B=a[u];if(!B)throw Error("Wrong id");return B}function A(d){let u=a[d];if(!u)throw Error("Wrong id");return u}function w(d){return h[d]}function E(d){let u=s.get(d);return p[u]}function H(d){return n.push(d)-1}function F(d){let u=n[d];if(!u)throw Error("Wrong id");return u}function O(){return l}let T=d=>{let u=c(d);if(!u)throw Error("Wrong id");f.add(u.uid),S();let B=e.GetNextDependency(u.uid);K(u.uid,B);};function K(d,u){_(d,u);}return {registerNode:y,registerGroupNode:L,GetNodeByPath:c,GetGroupByPath:E,notify:T,notifyAll:async()=>{Promise.resolve().then(async()=>{let d=e.GetDependencyOrder();if(!d||d.length===0)return;let u=d[0];try{_(null,u);}catch(B){throw r.callOnError(B),B}finally{S();}});},batchNotify:d=>{if(!d||d.length===0)return;if(t.createHistoryAction&&t.pushIntoHistory){let B=t.createHistoryAction([d.map(j=>({path:j.path,key:j.key,value:c(j.path).state[j.key]})),d.map(j=>({path:j.path,key:j.key,value:j.value}))],j=>{let ne=new Set;j.forEach(oe=>{let re=c(oe.path);re.state[oe.key]=oe.value,f.add(oe.path),ne.add(oe.uid);}),S(),ne.size>0&&_(null,Array.from(ne));});t.pushIntoHistory(B);}let u=new Set;d.forEach(B=>{let j=c(B.path);j.state[B.key]=B.value,f.add(j.uid),u.add(j.uid);}),S(),u.size>0&&_(null,Array.from(u));},useEntangle:R,updateEntangleLevel:P,SetBucket:H,GetBucket:F,CancelTask:Z,UITrigger:o,UidToNodeMap:a}}function it(g,e){let t=false,r=false,o=false,i=false,l=new Map,s=[],a=[],p=[],h=[],n=[],M=[],f=[],m=new Map,{GetNextDependency:S,GetPrevDependency:R,GetAllPrevDependency:P,GetAllNextDependency:te,rebuildDirectDependencyMaps:_}=Xe(()=>s,()=>p,()=>M,()=>n),Z={},W={};if(e.modules.useHistory){let v=e.modules.useHistory,Y;v.isMeshModuleInited?Y=v:Y=v();let{Undo:V,Redo:$,PushIntoHistory:q,CreateHistoryAction:I,updateUndoSize:C,updateRedoSize:G}=Y();Z.pushIntoHistory=q,Z.createHistoryAction=I,W={Undo:V,Redo:$,updateUndoSize:C,updateRedoSize:G};}let y=!!e.modules.useMeshRenderGate,L={};if(y){let v=e.modules.useMeshRenderGate.isMeshModuleInited,Y=e.modules.useMeshRenderGate;L=(v?Y:Y())(()=>re);}let{onError:c,callOnError:A}=Je(),{onSuccess:w,callOnSuccess:E}=et(),{onStart:H,callOnStart:F}=nt(),{emit:O,usePlugin:T,destroyPlugin:K}=tt(),{SetTrace:U,useTrace:k}=Qe(),d=k();T(d);let u=y?{...L}:{...e.UITrigger},B=ot({useGreedy:e.config.useGreedy,useEntangleStep:e.config.useEntangleStep||100},{GetDependencyOrder:()=>f,GetAllNextDependency:te,GetNextDependency:S,GetPrevDependency:R,GetAllPrevDependency:P,GetUidToLevelMap:()=>m},Z,{callOnError:A,callOnSuccess:E,callOnStart:F,emit:O},u),{SetBucket:j,GetBucket:ne,GetGroupByPath:oe,GetNodeByPath:re,notifyAll:Se,useEntangle:me,updateEntangleLevel:Re,CancelTask:de}=B;y&&L.init();let J={};if(e.modules.useInternalForm){let{uiSchema:v,GetFormData:Y}=e.modules.useInternalForm(B,g);J={uiSchema:v,GetFormData:Y};}let ie={};if(e.modules.useSchemaValidators){let{SetValidators:v}=e.modules.useSchemaValidators(re);ie={SetValidators:v};}let{SetRule:Ee,SetRules:Pe}=ze(re,j,ne,s,p,a,h,l),{SetStrategy:Ge}=qe(re,ne),we=Ze(s,l),Ie=()=>{let v=we();f=v.steps,m=v.levelMap,xe();},xe=()=>{o&&(Re(),o=false);},Ke=()=>{i||(i=true,Promise.resolve().then(xe).finally(()=>{i=false;}));},Oe=()=>{r||(r=true,Promise.resolve().then(()=>{if(Ie(),t){let{directNextMap:v,directPrevMap:Y}=_(f.flat());n=v,M=Y;}}).finally(()=>{r=false,t=false;}));};return {SetRule:(v,Y,V,$)=>{Ee(v,Y,V,$),t=true,Oe();},SetRules:(v,Y,V,$)=>{Pe(v,Y,V,$),t=true,Oe();},SetStrategy:Ge,useEntangle:v=>{me(v),o=true,Ke();},SetTrace:U,usePlugin:T,SetValue:(v,Y,V)=>{xe(),re(v).dependOn(()=>V,Y);},GetValue:(v,Y="value")=>re(v).proxy[Y],SetValues:v=>{xe(),B.batchNotify(v);},GetGroupByPath:oe,notifyAll:async()=>{Ie(),await Se();},GetAllDependency:()=>s,GetDependencyOrder:()=>f,historyExports:W,formExports:J,validatorExports:ie,batchRenderExport:L,hasRenderGate:()=>y,onError:c,onSuccess:w,onStart:H,scheduler:B,destroyPlugin:K,CancelTask:de}}var ve=new Map,ut=(g,e,t)=>{try{if(ve.has(g))throw Error("engineID repeated");let r=it(e,{config:t.config||{useGreedy:!1},UITrigger:t.UITrigger,modules:t.modules??{},plugins:{}}),{SetRule:o,SetRules:i,SetValues:l,SetStrategy:s,SetValue:a,GetValue:p,usePlugin:h,useEntangle:n,GetGroupByPath:M,notifyAll:f,SetTrace:m,GetAllDependency:b,GetDependencyOrder:S,historyExports:R,formExports:P,validatorExports:te,batchRenderExport:_,hasRenderGate:Z,onError:W,onSuccess:y,onStart:L,scheduler:c,destroyPlugin:A,CancelTask:w}=r,E={config:{SetRule:o,SetRules:i,SetStrategy:s,notifyAll:f,SetTrace:m,usePlugin:h,hasRenderGate:Z,useEntangle:n},data:{SetValue:a,GetValue:p,SetValues:l,GetGroupByPath:M},dependency:{GetAllDependency:b,GetDependencyOrder:S},hooks:{onError:W,onSuccess:y,onStart:L}},H=(T,K,U)=>{!K||typeof K!="object"||Object.keys(K).forEach(k=>{let d=K[k];if(typeof d=="object"&&d!==null)T[k]=T[k]||{},H(T[k],d,U);else if(typeof d=="function"){let u=k;if(u==="useMeshRenderGate")u="render";else if(u.startsWith("use")){let B=u.slice(3);u=B.charAt(0).toLowerCase()+B.slice(1);}k==="useHistory"&&U.exports.history&&Object.keys(U.exports.history).length>0?T[u]=U.exports.history:k==="useInternalForm"&&U.exports.form&&Object.keys(U.exports.form).length>0?T[u]=U.exports.form:k==="useSchemaValidators"&&U.exports.validator&&Object.keys(U.exports.validator).length>0?T[u]=U.exports.validator:k==="useMeshRenderGate"&&U.exports.render?T[u]=U.exports.render:T[u]=d(U.scheduler,U.Schema);}});},F={...E,destroyPlugin:A,CancelTask:w,modules:{}},O=t.modules;return O&&H(F.modules,O,{scheduler:c,Schema:e,exports:{history:R,form:P,validator:te,render:_}}),ve.set(g,F),F}catch(r){throw Error(r)}},mn=()=>(g,e,t)=>ut(g,e,t),Pn=g=>{let e=ve.get(g);if(!e)throw Error("Engine not found.");return e},Mn=g=>{let e=ve.get(g);e.destroyPlugin(),e.CancelTask(),ve.delete(g);};exports.DefaultStrategy=Ve;exports.MeshFlowEventsName=Ce;exports.TriggerCause=Ue;exports.deleteEngine=Mn;exports.useEngine=Pn;exports.useMeshFlow=ut;exports.useMeshFlowDefiner=mn;exports.useScheduler=ot;
package/index.mjs CHANGED
@@ -1 +1 @@
1
- var Oe=(P=>(P[P.FlowStart=0]="FlowStart",P[P.FlowSuccess=1]="FlowSuccess",P[P.FlowEnd=2]="FlowEnd",P[P.FlowAbort=3]="FlowAbort",P[P.FlowWait=4]="FlowWait",P[P.FlowFire=5]="FlowFire",P[P.NodeStart=6]="NodeStart",P[P.NodeSuccess=7]="NodeSuccess",P[P.NodeProcessing=8]="NodeProcessing",P[P.NodeError=9]="NodeError",P[P.NodePending=10]="NodePending",P[P.NodeRevive=11]="NodeRevive",P[P.NodeIntercept=12]="NodeIntercept",P[P.NodeRelease=13]="NodeRelease",P[P.NodeStagnate=14]="NodeStagnate",P[P.NodeBucketSuccess=15]="NodeBucketSuccess",P[P.EntangleWarn=16]="EntangleWarn",P[P.EntangleBlocked=17]="EntangleBlocked",P))(Oe||{}),Ke=(r=>(r[r.CAUSALITY=0]="CAUSALITY",r[r.INVERSION=1]="INVERSION",r[r.REPERCUSSION=2]="REPERCUSSION",r))(Ke||{});var Ve=(r=>(r.OR="OR",r.PRIORITY="PRIORITY",r.MERGE="MERGE",r))(Ve||{}),De=class{computedRules=[];getRuleResult(e,t,r){if(e.entityId==="__base__")return e.logic(t);if(!(!e._hasRun||r(e.triggerUids)))return e._lastResult;let i=e.logic(t);return i instanceof Promise?i.then(l=>(e._lastResult=l,e._hasRun=true,l)):(e._lastResult=i,e._hasRun=true,i)}store={OR:(e,t,r)=>{let o,i,l=this.computedRules;for(let s=0;s<l.length;s++){let a=l[s],p=this.getRuleResult(a,e,r);if(p instanceof Promise)return (async()=>{let n=await p;if(a.entityId==="__base__"?i=n:n&&(o=n),typeof o>"u")for(let M=s+1;M<l.length;M++){let f=l[M],m=this.getRuleResult(f,e,r),b=m instanceof Promise?await m:m;if(f.entityId==="__base__"){i=b;continue}if(b){o=f.value;break}}return typeof o>"u"&&(o=i),{res:o,version:t}})();let h=p;if(a.entityId==="__base__"){i=h;continue}if(h){o=a.value;break}}return typeof o>"u"&&(o=i),{res:o,version:t}},PRIORITY:(e,t,r)=>{let o,i=this.computedRules;for(let l=0;l<i.length;l++){let s=i[l],a=this.getRuleResult(s,e,r);if(a instanceof Promise)return (async()=>{let p=await a;if(p!==void 0)return {res:p,version:t};for(let h=l+1;h<i.length;h++){let n=i[h],M=this.getRuleResult(n,e,r),f=M instanceof Promise?await M:M;if(f!==void 0)return {res:f,version:t}}return {res:void 0,version:t}})();if(a!==void 0)return {res:a,version:t}}return {res:o,version:t}},MERGE:(e,t,r)=>{let o,i,l=this.computedRules,s=(p,h)=>p===void 0?h:h===void 0?p:Array.isArray(p)&&Array.isArray(h)?[...h,...p]:typeof p=="object"&&typeof h=="object"?{...h,...p}:p;for(let p=0;p<l.length;p++){let h=l[p],n=this.getRuleResult(h,e,r);if(n instanceof Promise)return (async()=>{let f=await n,m=(S,R)=>{if(S.entityId==="__base__")i=s(i,R);else if(R){let P=S.value!==void 0?S.value:R;o=s(o,P);}};m(h,f);for(let S=p+1;S<l.length;S++){let R=l[S],P=this.getRuleResult(R,e,r),te=P instanceof Promise?await P:P;m(R,te);}return {res:s(o,i),version:t}})();let M=n;if(h.entityId==="__base__"){i=s(i,M);continue}if(M){let f=h.value!==void 0?h.value:M;o=s(o,f);}}return {res:s(o,i),version:t}}};CurrentStrategy=()=>{};CurrentStrategyType="PRIORITY";getRules=()=>{};constructor(e){this.getRules=e,this.CurrentStrategy=this.store.PRIORITY,this.updateComputedRules();}updateComputedRules(){let e=this.getRules();this.CurrentStrategyType==="PRIORITY"||this.CurrentStrategyType==="MERGE"?this.computedRules=Array.from(e.values()).map(t=>Array.from(t)).flat().sort((t,r)=>r.priority-t.priority):this.computedRules=Array.from(e.values()).map(t=>Array.from(t)).flat();}setStrategy(e){this.CurrentStrategyType=e,this.CurrentStrategy=this.store[e],this.updateComputedRules();}evaluate(e,t,r){return this.CurrentStrategy(e,t,r)}},Ee=class{path;strategy;contract;rules=new Map;isValue=false;id=0;cache=void 0;pendingPromise=null;version=0;deps=new Map;_forceNotify=false;promiseToken=null;useCache=true;effectArray=[];constructor(e,t,r){let o=()=>this.rules;this.strategy=new De(o),this.path=r,this.isValue=t==="value",this.contract=this.inferType(e),this.cache=e,this.setRule({priority:0,entityId:"__base__",logic:()=>e});}setUseCache(e){this.useCache=e;}forceNotify(){this._forceNotify=true;}isForceNotify(){return this._forceNotify}setStrategy(e){this.strategy.setStrategy(e);}setDefaultRule(e){let t=new Set;t.add(e),this.rules.set(-1,t);}setRules(e,t){t&&this.updateDeps(t);let r=++this.id,o={...e,entityId:r};for(let i of e.triggerUids)this.rules.has(i)||this.rules.set(i,new Set),this.rules.get(i).add(o);return this.strategy.updateComputedRules(),()=>{for(let i of e.triggerUids){let l=this.rules.get(i);l&&(l.delete(o),l.size===0&&(this.rules.delete(i),this.deps.delete(i)));}this.strategy.updateComputedRules();}}updateDeps(e){for(let[t,r,o]of e){if(r.length==0)continue;let i=this.deps.get(t)||Object.create(null);for(let l of r)i[l]=o[l];this.deps.set(t,i);}}setRule(e,t){if(t&&this.updateDeps(t),typeof e.entityId=="string"){this.setDefaultRule(e);return}let r=++this.id,o={...e,entityId:r};if(e)for(let i of e.triggerUids)this.rules.has(i)||this.rules.set(i,new Set),this.rules.get(i).add(o);return this.strategy.updateComputedRules(),()=>{for(let i of e.triggerUids){let l=this.rules.get(i);l&&(l.delete(o),l.size===0&&(this.rules.delete(i),this.deps.delete(i)));}this.strategy.updateComputedRules();}}setSideEffect(e){this.effectArray.push(e);}getSideEffect(){return [...this.effectArray]}evaluate(e){let t=null;if(e.GetToken&&(t=e.GetToken()),this.pendingPromise&&this.promiseToken!==t&&(this.pendingPromise=null,this.promiseToken=null),this.pendingPromise)return this.pendingPromise;let r=false;if(typeof e.triggerUid=="number"){r=true,this.deps.size==0&&(r=false);for(let[s,a]of this.deps.entries()){let p=e.getStateByUid(s);if(!p){r=false;break}for(let h in a){let n=a[h],M=p[h];if(typeof n=="object"&&n!==null){r=false;break}if(n!==M){r=false;break}}if(!r)break}}if(r&&this.useCache)return this.cache;this.promiseToken=t;let o=++this.version,i=s=>{if(!s||s.length===0)return true;for(let a of s){let p=this.deps.get(a);if(!p)return true;let h=e.getProxyByUid(a);if(!h)return true;for(let n in p){let M=p[n],f=h[n];if(typeof M=="object"&&M!==null||M!==f)return true}}return false},l=this.strategy.evaluate(e,o,i);if(!(l instanceof Promise)){let{res:s,version:a}=l;return this.finalizeSync(s,a,e,t)}return this.pendingPromise=(async()=>{try{let{res:s,version:a}=await l;return this.finalizeSync(s,a,e,t)}catch(s){throw {path:this.path,error:s}}finally{this.promiseToken===t&&(this.pendingPromise=null,this.promiseToken=null);}})(),this.pendingPromise}finalizeSync(e,t,r,o){return o!==this.promiseToken||t<this.version?this.cache:(this.cache=e,this.deps.forEach((i,l)=>{let s=r.getProxyByUid(l);if(!s)return;let a=Object.keys(i);for(let p of a)i[p]=s[p];}),e)}inferType(e){return Array.isArray(e)?"array":typeof e}};var He=(g,e,t)=>{let o=i=>{let l=t.triggerUids.map(p=>{let h=i.getProxyByUid(p);if(t.triggerKeys.length===0)return h;let n={};return t.triggerKeys.forEach(M=>{n[M]=h[M];}),n}),s=Object.create(null);return Object.defineProperty(s,"triggerTargets",{get:()=>l}),Object.defineProperty(s,"affectedTatget",{get:()=>i.getProxyByUid(g)[e]}),t.logic({slot:s})};return {value:t.value,targetUid:g,triggerUids:t.triggerUids,priority:t.priority??10,logic:o}},Ye=(g,e,t,r,o,i,l,s)=>{if(!g)throw Error();let a=g,p=(M,f)=>{typeof r[M]>"u"&&(r[M]=[],i[M]=new Set),i[M].add(f),i[M].size>r[M].length&&r[M].push(f),typeof o[f]>"u"&&(o[f]=[],l[f]=new Set),l[f].add(M),l[f].size>o[f].length&&o[f].push(M);};return {SetRule:(M,f,m,b)=>{let S=a(M),R=a(f),P=b.triggerKeys||[],te=s.get(R.uid)||0,V=s.get(S.uid)||0;te+=1,V+=1,s.set(R.uid,te),s.set(S.uid,V);let J=He(R.uid,m,{...b,triggerUids:[S.uid],triggerKeys:P}),z=[M].map(_=>{let c=a(_);return [c.uid,P,c.proxy]});if(p(S.uid,R.uid),typeof R.nodeBucket[m]=="number"){let _=t(R.nodeBucket[m]);_.setRule(J,z),b.effect&&_.setSideEffect({fn:b.effect,args:b.effectArgs?b.effectArgs:[m]});}else {let _=R.meta[m],c=new Ee(_,m,f);c.setRule(J,z),b.effect&&c.setSideEffect({fn:b.effect,args:b.effectArgs?b.effectArgs:[m]}),R.nodeBucket[m]=e(c);}R.state[m]=R.meta[m];let y=t(R.nodeBucket[m]);b.forceNotify&&y.forceNotify(),b.cacheStrategy=="none"&&y.setUseCache(false);},SetRules:(M,f,m,b)=>{let S=a(f),R=s.get(S.uid)||0;R+=1,s.set(S.uid,R);let P=[];for(let y of M){let _=a(y);P.push(_.uid);let c=s.get(_.uid)||0;c+=1,s.set(_.uid,c),p(_.uid,S.uid);}let te=b.triggerKeys||[],V=He(S.uid,m,{...b,triggerUids:P,triggerKeys:te}),J=M.map(y=>{let _=a(y);return [_.uid,te,_.state]});if(typeof S.nodeBucket[m]=="number"){let y=t(S.nodeBucket[m]);y.setRules(V,J),b.effect&&y.setSideEffect({fn:b.effect,args:b.effectArgs?b.effectArgs:[m]});}else {let y=S.meta[m],_=new Ee(y,m,f);_.setRules(V,J),b.effect&&_.setSideEffect({fn:b.effect,args:b.effectArgs?b.effectArgs:[m]}),S.nodeBucket[m]=e(_);}S.state[m]=S.meta[m];let z=t(S.nodeBucket[m]);b.forceNotify&&z.forceNotify(),b.cacheStrategy=="none"&&z.setUseCache(false);}}};var je=(g,e)=>{let t=g||void 0;if(!t)throw Error();return {SetStrategy:(o,i,l)=>{let s=t(o);e(s.nodeBucket[i]).setStrategy(l);}}};function We(){let g=new Map,e=new Map,t=new Set,r=(l,s)=>{g.set(l,s);let a=e.get(l);a&&a(s);};return {SetTrace:(l,s)=>{e.set(l,s);let a=g.get(l)||"idle";return s(a),{cancel:()=>{e.delete(l);}}},useTrace:()=>({apply:s=>{s.on(0,()=>{t.forEach(a=>r(a,"idle")),t.clear(),g.clear();}),s.on(13,({path:a,type:p})=>{(p==1||p==2)&&(t.add(a),r(a,"pending"));}),s.on(10,({path:a})=>{t.add(a),(!g.has(a)||g.get(a)==="idle")&&r(a,"pending");}),s.on(6,({path:a})=>{t.add(a),r(a,"calculating");}),s.on(7,({path:a})=>{r(a,"calculated");}),s.on(12,({path:a,type:p})=>{p==3&&r(a,"calculating"),p==6&&r(a,"idle");}),s.on(14,({path:a})=>{r(a,"pending");}),s.on(9,({path:a})=>r(a,"error"));}})}}function qe(g,e,t,r){return {GetNextDependency:h=>r()[h]||[],GetPrevDependency:h=>t()[h]||[],GetAllPrevDependency:h=>e()[h]||[],GetAllNextDependency:h=>g()[h]||[],rebuildDirectDependencyMaps:h=>{let n=[],M=[],f=g();for(let m of h){let b=f[m]||[];n[m]=b;for(let S=0;S<b.length;S++){let R=b[S];typeof M[R]>"u"&&(M[R]=[]),M[R].push(m);}}return {directNextMap:n,directPrevMap:M}}}}function Qe(g,e){let t=o=>{let i=[],l=[],s=new Map,a=o.size,p=0,h=0;for(let[n,M]of o)M===0&&l.push(n);if(l.length===0&&a>0)throw Error("Circular dependency detected");for(;l.length>0;){i.push([...l]);let n=[];for(let M of l){p++,s.set(M,h);let f=g[M];if(f)for(let m of f){let b=o.get(m)-1;o.set(m,b),b===0&&n.push(m);}}l=n,h++;}if(p<a)throw Error("Circular dependency detected");return {steps:i,levelMap:s}};return ()=>{let o=new Map;for(let i of e.keys()){let l=g[i]||[];o.has(i)||o.set(i,0);for(let s of l){let a=o.get(s)||0;o.set(s,++a);}}return t(o)}}var be=()=>{let g=[];return {on:e=>(g.push(e),()=>{let t=g.indexOf(e);t>-1&&g.splice(t,1);}),call:e=>g.forEach(t=>{t(e);})}};function $e(){let{on:g,call:e}=be();return {onError:g,callOnError:e}}function Xe(){let{on:g,call:e}=be();return {onSuccess:g,callOnSuccess:e}}var Ze=()=>{let g=new Set,e=new Map,t=new Set,r=(s,a)=>{e.get(s)?.forEach(p=>p(a));},o=(s,a)=>(e.has(s)||e.set(s,new Set),e.get(s).add(a),()=>e.get(s)?.delete(a));return {usePlugin:s=>{let a=new Set,p=(n,M)=>{let f=o(n,M);return a.add(f),f};s.apply({on:p}),g.add(s);let h=()=>{a.forEach(n=>n()),a.clear(),g.delete(s),t.delete(h);};return t.add(h),h},emit:r,destroyPlugin:()=>{t.forEach(s=>s()),t.clear(),e.clear(),g.clear();}}};function Je(){let{on:g,call:e}=be();return {onStart:g,callOnStart:e}}var et=(g={frameQuota:12})=>{let e=performance.now(),t=0,r=false,o=()=>!!navigator?.scheduling?.isInputPending?.({includeContinuous:true});return {getIsFirstFrame:()=>r,reset(){e=performance.now(),t=0,r=true;},shouldYield(){return !r&&(++t&15)!==0?false:!!(performance.now()-e>g.frameQuota||o())},async yieldToMain(){return new Promise(i=>{Be(()=>{e=performance.now(),t=0,r&&(r=false),i();});})}}},Be=g=>{let{port1:e,port2:t}=new MessageChannel;e.onmessage=g,t.postMessage(null);};function tt(g,e,t,r,o,i){let l=new Map,s=g.useGreedy,a=null,p=()=>{l.clear();},h={path:null,level:0,targetLevel:0,currentLevel:0,pendingParentsCount:0,active:0,pending:0,blocked:0,nums:0,asyncNums:0},n={path:null,type:0,triggerPath:null,calledBy:0,key:null,value:null,error:null,token:null,duration:null,detail:h};return {TaskRunner:async(f,m)=>{let S=Symbol("token"),R=typeof f=="number"?f:"__NOTIFY_ALL__";l.set(R,S),a=S;let P=false,te=false;i.reset();let V=t.GetMaxUid()+3,J=new Array(V).fill(0),z=0,y=new Uint8Array(V),_=new Int32Array(V),c=new Int32Array(V),x=new Int32Array(V*2),I=0,E=0,H=new Int32Array(V*2),F=0,O=0,T=new Int32Array(V*2),K=0,U=0;m.forEach(N=>{J[N]=1,e.GetAllNextDependency(N).forEach(se=>{J[se]=1;});});let k=new Array(V).fill(null),d=[],u=t.Turnstile,B=new Array(V).fill(null).map(()=>[]),W=new Array(V).fill(null).map(()=>[]),ne=u.volatileLevels.size>0,ue=ne?u.hasObserver:N=>false,re=ne?u.receiveGhosts:()=>[],Pe=ne?u.resolveGhosts:()=>[],Me=ne?u.getTriggerKeys:()=>[],Te=u?.volatileLevels||new Set,ye=-1,ee=e.GetUidToLevelMap(),ie=0,Ne=0,ge=N=>{e.GetAllNextDependency(N).forEach(ae=>{let A=ee.get(ae)||0;A>Ne&&(Ne=A);});},Ae=new Set;typeof f=="number"&&(y[f]|=16,Ae.add(f),ge(f),o.flushPathSet.add(f));let ve=typeof f=="number"?[f]:m;i.shouldYield()&&(o.requestUpdate(),await i.yieldToMain());let Ge=ve.map(async N=>{if(ue(N)){let se=t.GetNodeByUid(N),ae=Me(N);if(ae.length>0){let A=re(se,ae);return A instanceof Promise&&(A=await A),{seed:N,hitTargets:A}}}return {seed:N,hitTargets:[]}});if((await Promise.all(Ge)).forEach(({seed:N,hitTargets:se})=>{if(se&&se.length>0){d.push(...se);let ae=ee.get(N)||0;ye=Math.max(ye,ae);}}),(d.length>0||ve.length>1)&&(o.requestUpdate(),await i.yieldToMain(),l.get(R)!==S))return;let ke=d.length>0;m.forEach(N=>{if(!Ae.has(N))if(ke){let se=ee.get(N)??0;c[N]=se,y[N]&4||(y[N]|=4,T[K++]=N,U++);let ae=t.GetPathByUid(N);n.path=ae,n.type=2,r.emit(14,n);}else y[N]&1||(y[N]|=1,x[I++]=N,E++),ge(N);}),typeof f=="number"?ie=ee.get(f)??0:ie=Math.min(...m.map(N=>ee.get(N)??0));let we=performance.now(),Ce=typeof R=="number"?t.GetPathByUid(R):"__NOTIFY_ALL__";n.path=Ce,n.token=S,r.emit(0,n),r.callOnStart({path:Ce});let Fe=false,Le=30,_e=(N,se)=>{let ae=false,A=false,Y=false,L=t.GetNodeByUid(N),Z=t.GetPathByUid(N),Q=L.calledBy,w=B[N];w.length=0;let C=W[N];C.length=0;let v=false;if(L.calledBy===1){v=true,ae=true,o.flushPathSet.add(N);let G=k[N];G&&(w.push(...G),k[N]=null);}let D=(G,$)=>{let j=ee.get(G)??0,oe=t.GetNodeByUid(G),X=t.GetPathByUid(G),pe=(Q===1||Q===2)&&j<=ye;pe&&y[G]&16&&(y[G]&=-17,n.path=X,n.triggerPath=Z,r.emit(11,n));let le=0;if(!(y[G]&49)){if(y[G]&2)le=_[G]-1;else {if(j>ie&&O>Le){c[G]=j,y[G]&4||(y[G]|=4,T[K++]=G,U++),n.path=X,n.type=7,r.emit(12,n);return}let me=e.GetPrevDependency(G),q=0;for(let he of me){if(y[he]&16)continue;(ee.get(he)??0)>ie&&q++;}le=q;}if(le<=0){let me=(y[G]&1)!==0,q=(y[G]&32)!==0;if(me||q){n.path=X,n.type=q?3:3.1,r.emit(12,n);return}y[G]&2&&(y[G]&=-3,O--),pe?oe.calledBy=2:oe.calledBy=0,y[G]&1||(y[G]|=1,x[I++]=G,E++),n.path=X,n.type=$,h.path=Z,r.emit(13,n);}else _[G]=le,y[G]&2||(y[G]|=2,H[F++]=G,O++);}},de=(G=[])=>{if(l.get(R)!==S)return;if(G.length){let j={},oe=L.proxy;for(let X of G){let pe=(X.args||[]).reduce((le,me)=>(le[me]=oe[me],le),{});try{let le=X.fn(pe);le&&typeof le=="object"&&Object.assign(j,le);}catch(le){}}for(let X in j)if(X in L.state)Object.is(L.state[X],j[X])||(L.state[X]=j[X],w.push(X),ae=true,(L.notifyKeys.size===0||L.notifyKeys.has(X))&&(A=true));else throw {error:`wrong effect in ${String(L.path)}`}}ae&&o.flushPathSet.add(N);let $=(j=[])=>{if(l.get(R)!==S)return;j&&j.length>0&&(d.push(...j),ye=Math.max(ye,ee.get(N)||0)),w.length=0,n.path=Z,n.calledBy=L.calledBy,r.emit(7,n),y[N]|=16;let oe=e.GetNextDependency(N);(A||Y)&&(ge(N),e.GetAllNextDependency(N).forEach(he=>{J[he]=1;}));let X=t.GetNodeByUid(N),pe=ee.get(N)??0,le=Te.has(pe)||d.length>0;for(let q of oe){let he=ee.get(q)??0,Se=t.GetPathByUid(q);if(le&&he>=pe){c[q]=he,y[q]&4||(y[q]|=4,T[K++]=q,U++),n.path=Se,n.type=2,r.emit(14,n);continue}if(y[q]&16){n.path=Se,n.type=2,r.emit(12,n);continue}if(y[q]&32||(y[q]&1)!==0){n.path=Se,n.type=y[q]&32?3:3.1,r.emit(12,n);continue}if(A||Y)D(q,1);else if(y[q]&2)D(q,2);else {let at=ee.get(q);c[q]=at,y[q]&4||(y[q]|=4,T[K++]=q,U++,n.path=Se,n.type=1,r.emit(14,n));}}y[N]&32&&(y[N]&=-33,z--),X.calledBy=0,(()=>{if(!P){P=true;let q=z,he=E,Se=O;n.path=Z,n.type=1,h.active=q,h.pending=he,h.blocked=Se,r.emit(5,n),Ie();}})();};if(ue(N)&&w.length>0){let j=re(L,w);j instanceof Promise?j.then($).catch(ce):$(j);}else $([]);},ce=G=>{n.path=Z,n.error=G,r.emit(9,n);let $=Symbol("abort");l.set(R,$),I=0,E=0,F=0,O=0,K=0,U=0,y.fill(0),z=0,k.fill(null),r.callOnError(G);},fe=(G,$)=>{G!==L.state[$]&&(L.state[$]=G,ae=true,w.push(String($)),n.path=Z,n.key=$,n.value=G,n.calledBy=L.calledBy,r.emit(15,n),(L.notifyKeys.size===0||L.notifyKeys.has($))&&(A=true)),t.GetBucket(L.nodeBucket[$]).isForceNotify()&&(Y=true),(A||Y)&&ge(N);};n.path=Z,n.calledBy=L.calledBy,r.emit(6,n);try{let G=[];for(let $ in L.nodeBucket){let j=t.GetBucket(L.nodeBucket[$]);if(G.push(...j.getSideEffect()),v){r.emit(15,{path:Z,key:String($),value:L.state[$],calledBy:L.calledBy}),j.isForceNotify()&&(Y=!0),(L.notifyKeys.size===0||L.notifyKeys.has($))&&ge(N);continue}let oe=j.evaluate({affectKey:$,triggerUid:se,getProxyByUid:X=>t.GetNodeByUid(X).proxy,getStateByUid:X=>t.GetNodeByUid(X).state,GetToken:()=>S});if(oe instanceof Promise){let X=oe.then(pe=>{l.get(R)===S&&fe(pe,$);});C.push(X);}else fe(oe,$);}if(C.length>0)return Promise.all(C).then(()=>{de(G);}).catch(ce);de(G);return}catch(G){ce(G);}},Ie=async()=>{if(l.get(R)!==S){P=false;return}P=true;let N=i.getIsFirstFrame(),se=0,ae=()=>30,A=0,Y=ae();try{for(;l.get(R)===S;){let L=A>=Y,Z=i.shouldYield();if(L||Z){if(A>0&&(se++,(N||se%2===0)&&o.requestUpdate()),await i.yieldToMain(),l.get(R)!==S)break;A=0,N=i.getIsFirstFrame();}if(E>0&&z<40){let Q=I,w=0;for(let C=0;C<Q;C++){let v=x[C];if((y[v]&1)===0)continue;if(z>=40||A>=Y||i.shouldYield()){for(let j=C;j<I;j++){let oe=x[j];y[oe]&1&&(x[w++]=oe);}I=w,E=w;break}let D=t.GetNodeByUid(v),de=t.GetPathByUid(v),ce=ee.get(v)??0,fe=e.GetPrevDependency(v),G=fe.length>1;if((!s||G)&&ce>ie){y[v]&=-2,E--;let j=fe.filter(oe=>J[oe]===1&&(y[oe]&16)===0).length;_[v]=j||0,y[v]&2||(y[v]|=2,H[F++]=v,O++),n.path=de,n.type=j>0?4:5,h.targetLevel=ce,h.currentLevel=ie,h.pendingParentsCount=j,r.emit(12,n);continue}y[v]&=-2,E--,(y[v]&32)===0&&(y[v]|=32,z++),n.path=de,n.calledBy=D.calledBy,r.emit(8,n),_e(v,f),A++;}if(I>Q){for(let C=Q;C<I;C++){let v=x[C];y[v]&1&&(x[w++]=v);}I=w,E=I;}else I=w;if(E>0&&z<40)continue}if(A<Y&&s&&O>0&&z<40){let Q=!1,w=0,C=0;for(let v=0;v<F;v++){let D=H[v];if((y[D]&2)===0)continue;if(_[D]<=0&&w<Y){let ce=ee.get(D)??0,fe=e.GetPrevDependency(D);if(ce<=ie||fe.length<=1){y[D]&=-3,O--,y[D]&1||(y[D]|=1,x[I++]=D,E++),w++,Q=!0;let G=t.GetPathByUid(D);n.path=G,n.type=4,r.emit(13,n);continue}}H[C++]=D;}if(F=C,w>0)continue;if(Q){if(i.shouldYield()&&(await i.yieldToMain(),l.get(R)!==S))break;continue}}if(z===0&&E===0){if(u.inFlightCount>0)break;if(d.length>0){let w=!1,C=ie,v=Array.from(new Set(d));d.length=0;for(let D of v){let de=t.GetNodeByUid(D),ce=Pe(de);if(ce&&ce.length>0){w=!0,de.calledBy=1,k[D]=ce,y[D]&=-17,y[D]&2&&(y[D]&=-3,O--),y[D]&1||(y[D]|=1,x[I++]=D,E++);let fe=ee.get(de.uid)??0;fe<C&&(C=fe),ge(de.uid),o.flushPathSet.add(de.uid);}}if(w){if(C<ie&&(ie=C),o.requestUpdate(),i.shouldYield()&&(await i.yieldToMain(),l.get(R)!==S))break;continue}}let Q=1/0;for(let w=0;w<K;w++){let C=T[w];if(y[C]&4){let v=c[C];v<Q&&(Q=v);}}for(let w=0;w<F;w++){let C=H[w];if(y[C]&2){let v=ee.get(C)??0;v>ie&&v<Q&&(Q=v);}}if(Q!==1/0&&Q<=Ne){ie=Q;let w=0;for(let v=0;v<K;v++){let D=T[v];y[D]&4&&(c[D]===Q?(y[D]&=-5,U--,y[D]&1||(y[D]|=1,x[I++]=D,E++)):T[w++]=D);}K=w;let C=0;for(let v=0;v<F;v++){let D=H[v];if(y[D]&2)if((ee.get(D)??0)===Q){y[D]&=-3,O--,y[D]&1||(y[D]|=1,x[I++]=D,E++);let ce=t.GetPathByUid(D);n.path=ce,n.type=3,h.level=Q,r.emit(13,n);}else H[C++]=D;}F=C;continue}else {for(let w=0;w<K;w++){let C=T[w];if(y[C]&4){y[C]|=16;let v=t.GetPathByUid(C);n.path=v,n.type=6,r.emit(12,n);}}K=0,U=0;for(let w=0;w<F;w++){let C=H[w];if(y[C]&2){y[C]|=16;let v=t.GetPathByUid(C);n.path=v,n.type=6,r.emit(12,n);}}F=0,O=0;break}}E>0&&z>=40&&(n.type=2,r.emit(4,n));break}}finally{P=false;let L=z+O+E,Z=u.inFlightCount||0;if(!(a===S)){n.token=S,r.emit(3,n);return}if(o.requestUpdate(),L===0&&Z===0){if(l.get(R)===S&&!Fe){Fe=true,n.type=1,r.emit(2,n),u.resetCounters(),k.fill(null);let w=performance.now();ye=-1,l.delete(R),n.token=S,n.duration=(w-we).toFixed(2.1)+"ms",r.emit(1,n),Promise.resolve().then(()=>{r.callOnSuccess();});}}else {let w=L===0&&Z>0?3:1;if(n.type=w,h.nums=z,h.asyncNums=Z,r.emit(4,n),Z>0&&!te){te=true;let C=()=>{a===S&&(u.inFlightCount,u.inFlightCount===0?Be(()=>{u.inFlightCount===0?Ie():requestAnimationFrame(C);}):requestAnimationFrame(C));};requestAnimationFrame(C);}}}};Ie();},CancelTask:p}}function Ue(g){let{path:e,uid:t,type:r,meta:o,dirtySignal:i,state:l}=g,s=null,a=["path","uid","type","dependOn","nodeBucket"],h={path:e,uid:t,type:r,meta:o,dirtySignal:i,createView:(n={})=>{if(s&&Object.keys(n).length===0)return s;let M=new Proxy(n,{get(f,m){let b=m;return Reflect.has(f,m)?Reflect.get(f,m):b in g.state?g.state[b]:b in g?g[b]:o&&b in o?o[b]:Reflect.get(f,m)},set(f,m,b){return false},ownKeys(f){let m=new Set([...Reflect.ownKeys(f),...Object.keys(l||{}),...Object.keys(o||{}),...a]);return Array.from(m)},getOwnPropertyDescriptor(f,m){let b=m;return Reflect.has(f,m)||l&&b in l||o&&b in o||a.includes(b)?{enumerable:true,configurable:true}:Reflect.getOwnPropertyDescriptor(f,m)}});return s=M,M}};return "children"in g?{...h,children:g.children}:{...h,state:g.state,nodeBucket:g.nodeBucket,notifyKeys:g.notifyKeys,dependOn:g.dependOn,calledBy:0,get proxy(){return s}}}var nt=(g,e,t,r,o,i,l)=>{let s=g.useEntangleStep,a=[],p=[],h=new Set,n=r,m=t,b=0,S=0,R=100,P=()=>{let c={link:null,impactNode:null,impactUid:-1,hitTargetUids:null,isDirty:false,propose:null};return c.propose={set:(x,I,E=1)=>{I!==c.impactNode.state[x]&&(c.link.count++,(!p[c.impactUid]||p[c.impactUid].length===0)&&(p[c.impactUid]=[],S++),p[c.impactUid].push({key:x,value:I,weight:E}),c.isDirty||(c.hitTargetUids.push(c.impactUid),c.isDirty=true));},update:(x,I,E="add")=>{c.link.count++,(!p[c.impactUid]||p[c.impactUid].length===0)&&(p[c.impactUid]=[],S++),p[c.impactUid].push({key:x,delta:I,op:E,weight:1}),c.isDirty||(c.hitTargetUids.push(c.impactUid),c.isDirty=true);},patch:(x,I)=>{c.link.count++,(!p[c.impactUid]||p[c.impactUid].length===0)&&(p[c.impactUid]=[],S++),p[c.impactUid].push({key:x,patch:I,weight:1}),c.isDirty||(c.hitTargetUids.push(c.impactUid),c.isDirty=true);}},c},te=Array.from({length:R},P),V=R-1,J=(c,x,I)=>{let E=x.path,H=c.impact;if(c.count>=s){l.emit("entangle:blocked",{observer:E,target:H,count:c.count});return}let F=n(H),O=c.isProxy?x.proxy:x,T=c.isProxy?F.proxy:F;if(c.filter&&!c.filter(O,T))return;let K,U=true;V<0?(K=P(),U=false):K=te[V--],K.isDirty=false,K.link=c,K.impactNode=F,K.impactUid=F.uid,K.hitTargetUids=I;let k=c.emit(O,T,K.propose);if(k instanceof Promise||k&&typeof k.then=="function")return b++,(async()=>{try{await k;}catch(d){l.emit("node:error",{path:E,error:d}),l.onError({path:E,error:d});}finally{b--,U&&(te[++V]=K);}})();U&&(te[++V]=K);};return {useEntangle:c=>{let{cause:x,impact:I,via:E,emit:H,filter:F,isProxy:O}=c;if(!E||E.length===0){l.emit("entangle:warn",{path:x,type:"no_keys"});return}let K=n(x).uid;a[K]||(a[K]=new Map);let U=a[K];for(let k=0;k<E.length;k++){let d=E[k];U.has(d)||U.set(d,[]),U.get(d).push({impact:I,emit:H,filter:F,count:0,isProxy:!!O});}},updateEntangleLevel:()=>{let c=m();h.clear();for(let x=0;x<a.length;x++)if(a[x]!==void 0){let I=c.get(x)||0;h.add(I);}},Turnstile:{volatileLevels:h,get inFlightCount(){return b},get hasPendingGhosts(){return S>0},hasObserver:c=>a[c]!==void 0,getTriggerKeys:c=>{let x=a[c];return x?Array.from(x.keys()):[]},receiveGhosts:(c,x=[])=>{let I=c.uid,E=[],H=a[I];if(!H||x.length===0)return E;let F=[];for(let k=0;k<x.length;k++){let d=H.get(x[k]);if(d)for(let u=0;u<d.length;u++)F.push(d[u]);}let O=0,T=false,K=null;for(;O<F.length;O++){if(e.shouldYield()){T=true;break}let k=J(F[O],c,E);if(k){K=k,T=true,O++;break}}let U=()=>{if(E.length<=1)return E;let k=[],d=Object.create(null);for(let u=0;u<E.length;u++){let B=E[u];d[B]||(d[B]=true,k.push(B));}return k};return T?(async()=>{for(K&&await K,e.shouldYield()&&await e.yieldToMain();O<F.length;){let k=[],d=Math.min(O+R,F.length);for(;O<d;O++){let u=J(F[O],c,E);u&&k.push(u);}k.length>0&&await Promise.all(k.map(async u=>{await u,e.shouldYield()&&await e.yieldToMain();})),e.shouldYield()&&await e.yieldToMain();}return U()})():U()},resolveGhosts:c=>{let x=c.uid,I=p[x];if(!I||I.length===0)return [];let E=[],H=Object.create(null);for(let F=0;F<I.length;F++){let O=I[F];H[O.key]||(H[O.key]=[]),H[O.key].push(O);}for(let F in H){let O=H[F],T=c.state[F],K,U=-1/0,k=false;for(let d=0;d<O.length;d++){let u=O[d];if(u.patch!==void 0&&(T=u.patch(T)),u.value!==void 0){let B=u.weight??1;B>=U&&(U=B,K=u.value,k=true);}}k&&(T=K);for(let d=0;d<O.length;d++){let u=O[d];if(u.delta!==void 0)switch(u.op||"add"){case "add":T=(typeof T=="number"?T:0)+u.delta;break;case "remove":T=Array.isArray(T)?T.filter(W=>W!==u.delta):T;break;case "intersect":T=Array.isArray(T)?T.filter(W=>u.delta.includes(W)):u.delta;break;case "union":{let W=Array.isArray(T)?T:[],ne=Array.isArray(u.delta)?u.delta:[u.delta];T=[...new Set([...W,...ne])];break}case "merge":{let W=typeof T=="object"&&T!==null&&!Array.isArray(T)?T:{},ne=typeof u.delta=="object"&&u.delta!==null&&!Array.isArray(u.delta)?u.delta:{};T={...W,...ne};break}}}Object.is(c.state[F],T)||(c.state[F]=T,E.push(F));}return p[x]=[],S--,E.length>0?E:[]},resetCounters:()=>{for(let c=0;c<a.length;c++){let x=a[c];if(x)for(let I of x.values())for(let E=0;E<I.length;E++)I[E].count=0;}}}}};function rt(g,e,t,r,o){let i=et(),l=0,s=new Map,a=[],p=[],h=[],n=[],M=false,f=new Set,b=async()=>{let d=Array.from(f);if(f.clear(),"signalTrigger"in o&&typeof o.signalTrigger=="function")for(let u of d){let B=x(u);o.signalTrigger(B.dirtySignal);}else "emit"in o&&o.emit(d);},S=()=>{M||(M=true,requestAnimationFrame(()=>{try{for(;f.size>0;)b();}finally{M=false;}}));},{useEntangle:R,updateEntangleLevel:P,Turnstile:te}=nt({useEntangleStep:g.useEntangleStep},i,e.GetUidToLevelMap,c,x,I,{emit:r.emit,onError:r.callOnError}),{TaskRunner:V,CancelTask:J}=tt({useGreedy:g.useGreedy},e,{GetNodeByPath:c,GetNodeByUid:x,GetPathByUid:I,GetBucket:F,GetMaxUid:O,Turnstile:te},r,{requestUpdate:S,flushPathSet:f},i),z=d=>{throw new Error(`[MeshFlow] Duplicate Path: ${d}`)},y=d=>{s.has(d.path)&&z(String(d.path));let u=++l,B={path:d.path,getNode:ue=>c(ue)},W=(ue,re="value")=>{let Pe=ue({...B}),Me=c(d.path);if(!Object.is(Me.state[re],Pe)){if(t.createHistoryAction&&t.pushIntoHistory){let Te=t.createHistoryAction([{path:d.path,value:Me.state[re]},{path:d.path,value:Pe}],ye=>{let ee=c(ye.path);ee.state[re]=ye.value,T(ye.path);});t.pushIntoHistory(Te);}Me.state[re]=Pe,T(d.path);}},ne=Ue({uid:u,type:d.type,path:d.path,state:d.state,meta:d.meta,nodeBucket:{},dirtySignal:"signalCreator"in o?o.signalCreator():void 0,notifyKeys:d.notifyKeys,dependOn:W});return s.set(ne.path,u),h[u]=ne.path,a[u]=ne,ne},_=d=>{s.has(d.path)&&z(String(d.path));let u=++l,B=Ue({uid:u,type:d.type,path:d.path,state:{},meta:d,nodeBucket:{},children:d.children});return s.set(B.path,u),p[u]=B,B};function c(d){let u=s.get(d),B=a[u];if(!B)throw Error("Wrong id");return B}function x(d){let u=a[d];if(!u)throw Error("Wrong id");return u}function I(d){return h[d]}function E(d){let u=s.get(d);return p[u]}function H(d){return n.push(d)-1}function F(d){let u=n[d];if(!u)throw Error("Wrong id");return u}function O(){return l}let T=d=>{let u=c(d);if(!u)throw Error("Wrong id");f.add(u.uid),S();let B=e.GetNextDependency(u.uid);K(u.uid,B);};function K(d,u){V(d,u);}return {registerNode:y,registerGroupNode:_,GetNodeByPath:c,GetGroupByPath:E,notify:T,notifyAll:async()=>{Promise.resolve().then(async()=>{let d=e.GetDependencyOrder();if(!d||d.length===0)return;let u=d[0];try{V(null,u);}catch(B){throw r.callOnError(B),B}finally{S();}});},batchNotify:d=>{if(!d||d.length===0)return;if(t.createHistoryAction&&t.pushIntoHistory){let B=t.createHistoryAction([d.map(W=>({path:W.path,key:W.key,value:c(W.path).state[W.key]})),d.map(W=>({path:W.path,key:W.key,value:W.value}))],W=>{let ne=new Set;W.forEach(ue=>{let re=c(ue.path);re.state[ue.key]=ue.value,f.add(ue.path),ne.add(ue.uid);}),S(),ne.size>0&&V(null,Array.from(ne));});t.pushIntoHistory(B);}let u=new Set;d.forEach(B=>{let W=c(B.path);W.state[B.key]=B.value,f.add(W.uid),u.add(W.uid);}),S(),u.size>0&&V(null,Array.from(u));},useEntangle:R,updateEntangleLevel:P,SetBucket:H,GetBucket:F,CancelTask:J,UITrigger:o,UidToNodeMap:a}}function st(g,e){let t=false,r=false,o=false,i=false,l=new Map,s=[],a=[],p=[],h=[],n=[],M=[],f=[],m=new Map,{GetNextDependency:S,GetPrevDependency:R,GetAllPrevDependency:P,GetAllNextDependency:te,rebuildDirectDependencyMaps:V}=qe(()=>s,()=>p,()=>M,()=>n),J={},z={};if(e.modules.useHistory){let A=e.modules.useHistory,Y;A.isMeshModuleInited?Y=A:Y=A();let{Undo:L,Redo:Z,PushIntoHistory:Q,CreateHistoryAction:w,updateUndoSize:C,updateRedoSize:v}=Y();J.pushIntoHistory=Q,J.createHistoryAction=w,z={Undo:L,Redo:Z,updateUndoSize:C,updateRedoSize:v};}let y=!!e.modules.useMeshRenderGate,_={};if(y){let A=e.modules.useMeshRenderGate.isMeshModuleInited,Y=e.modules.useMeshRenderGate;_=(A?Y:Y())(()=>re);}let{onError:c,callOnError:x}=$e(),{onSuccess:I,callOnSuccess:E}=Xe(),{onStart:H,callOnStart:F}=Je(),{emit:O,usePlugin:T,destroyPlugin:K}=Ze(),{SetTrace:U,useTrace:k}=We(),d=k();T(d);let u=y?{..._}:{...e.UITrigger},B=rt({useGreedy:e.config.useGreedy,useEntangleStep:e.config.useEntangleStep||100},{GetDependencyOrder:()=>f,GetAllNextDependency:te,GetNextDependency:S,GetPrevDependency:R,GetAllPrevDependency:P,GetUidToLevelMap:()=>m},J,{callOnError:x,callOnSuccess:E,callOnStart:F,emit:O},u),{SetBucket:W,GetBucket:ne,GetGroupByPath:ue,GetNodeByPath:re,notifyAll:Pe,useEntangle:Me,updateEntangleLevel:Te,CancelTask:ye}=B;y&&_.init();let ee={};if(e.modules.useInternalForm){let{uiSchema:A,GetFormData:Y}=e.modules.useInternalForm(B,g);ee={uiSchema:A,GetFormData:Y};}let ie={};if(e.modules.useSchemaValidators){let{SetValidators:A}=e.modules.useSchemaValidators(re);ie={SetValidators:A};}let{SetRule:Ne,SetRules:ge}=Ye(re,W,ne,s,p,a,h,l),{SetStrategy:Ae}=je(re,ne),ve=Qe(s,l),Ge=()=>{let A=ve();f=A.steps,m=A.levelMap,Re();},Re=()=>{o&&(Te(),o=false);},ke=()=>{i||(i=true,Promise.resolve().then(Re).finally(()=>{i=false;}));},we=()=>{r||(r=true,Promise.resolve().then(()=>{if(Ge(),t){let{directNextMap:A,directPrevMap:Y}=V(f.flat());n=A,M=Y;}}).finally(()=>{r=false,t=false;}));};return {SetRule:(A,Y,L,Z)=>{Ne(A,Y,L,Z),t=true,we();},SetRules:(A,Y,L,Z)=>{ge(A,Y,L,Z),t=true,we();},SetStrategy:Ae,useEntangle:A=>{Me(A),o=true,ke();},SetTrace:U,usePlugin:T,SetValue:(A,Y,L)=>{Re(),re(A).dependOn(()=>L,Y);},GetValue:(A,Y="value")=>re(A).proxy[Y],SetValues:A=>{Re(),B.batchNotify(A);},GetGroupByPath:ue,notifyAll:async()=>{Ge(),await Pe();},GetAllDependency:()=>s,GetDependencyOrder:()=>f,historyExports:z,formExports:ee,validatorExports:ie,batchRenderExport:_,hasRenderGate:()=>y,onError:c,onSuccess:I,onStart:H,scheduler:B,destroyPlugin:K,CancelTask:ye}}var xe=new Map,ot=(g,e,t)=>{try{if(xe.has(g))throw Error("engineID repeated");let r=st(e,{config:t.config||{useGreedy:!1},UITrigger:t.UITrigger,modules:t.modules??{},plugins:{}}),{SetRule:o,SetRules:i,SetValues:l,SetStrategy:s,SetValue:a,GetValue:p,usePlugin:h,useEntangle:n,GetGroupByPath:M,notifyAll:f,SetTrace:m,GetAllDependency:b,GetDependencyOrder:S,historyExports:R,formExports:P,validatorExports:te,batchRenderExport:V,hasRenderGate:J,onError:z,onSuccess:y,onStart:_,scheduler:c,destroyPlugin:x,CancelTask:I}=r,E={config:{SetRule:o,SetRules:i,SetStrategy:s,notifyAll:f,SetTrace:m,usePlugin:h,hasRenderGate:J,useEntangle:n},data:{SetValue:a,GetValue:p,SetValues:l,GetGroupByPath:M},dependency:{GetAllDependency:b,GetDependencyOrder:S},hooks:{onError:z,onSuccess:y,onStart:_}},H=(T,K,U)=>{!K||typeof K!="object"||Object.keys(K).forEach(k=>{let d=K[k];if(typeof d=="object"&&d!==null)T[k]=T[k]||{},H(T[k],d,U);else if(typeof d=="function"){let u=k;if(u==="useMeshRenderGate")u="render";else if(u.startsWith("use")){let B=u.slice(3);u=B.charAt(0).toLowerCase()+B.slice(1);}k==="useHistory"&&U.exports.history&&Object.keys(U.exports.history).length>0?T[u]=U.exports.history:k==="useInternalForm"&&U.exports.form&&Object.keys(U.exports.form).length>0?T[u]=U.exports.form:k==="useSchemaValidators"&&U.exports.validator&&Object.keys(U.exports.validator).length>0?T[u]=U.exports.validator:k==="useMeshRenderGate"&&U.exports.render?T[u]=U.exports.render:T[u]=d(U.scheduler,U.Schema);}});},F={...E,destroyPlugin:x,CancelTask:I,modules:{}},O=t.modules;return O&&H(F.modules,O,{scheduler:c,Schema:e,exports:{history:R,form:P,validator:te,render:V}}),xe.set(g,F),F}catch(r){throw Error(r)}},fn=()=>(g,e,t)=>it(g,e,t),pn=g=>{let e=xe.get(g);if(!e)throw Error("Engine not found.");return e},hn=g=>{let e=xe.get(g);e.destroyPlugin(),e.CancelTask(),xe.delete(g);},it=ot;export{Ve as DefaultStrategy,Oe as MeshFlowEventsName,Ke as TriggerCause,hn as deleteEngine,pn as useEngine,ot as useEngineManager,it as useMeshFlow,fn as useMeshFlowDefiner,rt as useScheduler};
1
+ var Ce=(P=>(P[P.FlowStart=0]="FlowStart",P[P.FlowSuccess=1]="FlowSuccess",P[P.FlowEnd=2]="FlowEnd",P[P.FlowAbort=3]="FlowAbort",P[P.FlowWait=4]="FlowWait",P[P.FlowFire=5]="FlowFire",P[P.NodeStart=6]="NodeStart",P[P.NodeSuccess=7]="NodeSuccess",P[P.NodeProcessing=8]="NodeProcessing",P[P.NodeError=9]="NodeError",P[P.NodePending=10]="NodePending",P[P.NodeRevive=11]="NodeRevive",P[P.NodeIntercept=12]="NodeIntercept",P[P.NodeRelease=13]="NodeRelease",P[P.NodeStagnate=14]="NodeStagnate",P[P.NodeBucketSuccess=15]="NodeBucketSuccess",P[P.EntangleWarn=16]="EntangleWarn",P[P.EntangleBlocked=17]="EntangleBlocked",P))(Ce||{}),Ue=(r=>(r[r.CAUSALITY=0]="CAUSALITY",r[r.INVERSION=1]="INVERSION",r[r.REPERCUSSION=2]="REPERCUSSION",r))(Ue||{});var Ve=(r=>(r.OR="OR",r.PRIORITY="PRIORITY",r.MERGE="MERGE",r))(Ve||{});var Le=class{computedRules=[];getRuleResult(e,t,r){if(e.entityId==="__base__")return e.logic(t);if(!(!e._hasRun||r(e.triggerUids)))return e._lastResult;let i=e.logic(t);return i instanceof Promise?i.then(l=>(e._lastResult=l,e._hasRun=true,l)):(e._lastResult=i,e._hasRun=true,i)}store={OR:(e,t,r)=>{let o,i,l=this.computedRules;for(let s=0;s<l.length;s++){let a=l[s],p=this.getRuleResult(a,e,r);if(p instanceof Promise)return (async()=>{let n=await p;if(a.entityId==="__base__"?i=n:n&&(o=n),typeof o>"u")for(let M=s+1;M<l.length;M++){let f=l[M],m=this.getRuleResult(f,e,r),b=m instanceof Promise?await m:m;if(f.entityId==="__base__"){i=b;continue}if(b){o=f.value;break}}return typeof o>"u"&&(o=i),{res:o,version:t}})();let h=p;if(a.entityId==="__base__"){i=h;continue}if(h){o=a.value;break}}return typeof o>"u"&&(o=i),{res:o,version:t}},PRIORITY:(e,t,r)=>{let o,i=this.computedRules;for(let l=0;l<i.length;l++){let s=i[l],a=this.getRuleResult(s,e,r);if(a instanceof Promise)return (async()=>{let p=await a;if(p!==void 0)return {res:s.value!==void 0?s.value:p,version:t};for(let h=l+1;h<i.length;h++){let n=i[h],M=this.getRuleResult(n,e,r),f=M instanceof Promise?await M:M;if(f!==void 0)return {res:f,version:t}}return {res:void 0,version:t}})();if(a!==void 0)return {res:s.value!==void 0?s.value:a,version:t}}return {res:o,version:t}},MERGE:(e,t,r)=>{let o,i,l=this.computedRules,s=(p,h)=>p===void 0?h:h===void 0?p:Array.isArray(p)&&Array.isArray(h)?[...h,...p]:typeof p=="object"&&typeof h=="object"?{...h,...p}:p;for(let p=0;p<l.length;p++){let h=l[p],n=this.getRuleResult(h,e,r);if(n instanceof Promise)return (async()=>{let f=await n,m=(S,R)=>{if(S.entityId==="__base__")i=s(i,R);else if(R){let P=S.value!==void 0?S.value:R;o=s(o,P);}};m(h,f);for(let S=p+1;S<l.length;S++){let R=l[S],P=this.getRuleResult(R,e,r),te=P instanceof Promise?await P:P;m(R,te);}return {res:s(o,i),version:t}})();let M=n;if(h.entityId==="__base__"){i=s(i,M);continue}if(M){let f=h.value!==void 0?h.value:M;o=s(o,f);}}return {res:s(o,i),version:t}}};CurrentStrategy=()=>{};CurrentStrategyType="PRIORITY";getRules=()=>{};constructor(e){this.getRules=e,this.CurrentStrategy=this.store.PRIORITY,this.updateComputedRules();}updateComputedRules(){let e=this.getRules();this.CurrentStrategyType==="PRIORITY"||this.CurrentStrategyType==="MERGE"?this.computedRules=Array.from(e.values()).map(t=>Array.from(t)).flat().sort((t,r)=>r.priority-t.priority):this.computedRules=Array.from(e.values()).map(t=>Array.from(t)).flat();}setStrategy(e){this.CurrentStrategyType=e,this.CurrentStrategy=this.store[e],this.updateComputedRules();}evaluate(e,t,r){return this.CurrentStrategy(e,t,r)}},Ae=class{path;strategy;contract;rules=new Map;isValue=false;id=0;cache=void 0;pendingPromise=null;version=0;deps=new Map;_forceNotify=false;promiseToken=null;useCache=true;effectArray=[];constructor(e,t,r){let o=()=>this.rules;this.strategy=new Le(o),this.path=r,this.isValue=t==="value",this.contract=this.inferType(e),this.cache=e,this.setRule({priority:0,entityId:"__base__",logic:()=>e});}setUseCache(e){this.useCache=e;}forceNotify(){this._forceNotify=true;}isForceNotify(){return this._forceNotify}setStrategy(e){this.strategy.setStrategy(e);}setDefaultRule(e){let t=new Set;t.add(e),this.rules.set(-1,t);}setRules(e,t){t&&this.updateDeps(t);let r=++this.id,o={...e,entityId:r};for(let i of e.triggerUids)this.rules.has(i)||this.rules.set(i,new Set),this.rules.get(i).add(o);return this.strategy.updateComputedRules(),()=>{for(let i of e.triggerUids){let l=this.rules.get(i);l&&(l.delete(o),l.size===0&&(this.rules.delete(i),this.deps.delete(i)));}this.strategy.updateComputedRules();}}updateDeps(e){for(let[t,r,o]of e){if(r.length==0)continue;let i=this.deps.get(t)||Object.create(null);for(let l of r)i[l]=o[l];this.deps.set(t,i);}}setRule(e,t){if(t&&this.updateDeps(t),typeof e.entityId=="string"){this.setDefaultRule(e);return}let r=++this.id,o={...e,entityId:r};if(e)for(let i of e.triggerUids)this.rules.has(i)||this.rules.set(i,new Set),this.rules.get(i).add(o);return this.strategy.updateComputedRules(),()=>{for(let i of e.triggerUids){let l=this.rules.get(i);l&&(l.delete(o),l.size===0&&(this.rules.delete(i),this.deps.delete(i)));}this.strategy.updateComputedRules();}}setSideEffect(e){this.effectArray.push(e);}getSideEffect(){return [...this.effectArray]}evaluate(e){let t=null;if(e.GetToken&&(t=e.GetToken()),this.pendingPromise&&this.promiseToken!==t&&(this.pendingPromise=null,this.promiseToken=null),this.pendingPromise)return this.pendingPromise;let r=false;if(typeof e.triggerUid=="number"){r=true,this.deps.size==0&&(r=false);for(let[s,a]of this.deps.entries()){let p=e.getStateByUid(s);if(!p){r=false;break}for(let h in a){let n=a[h],M=p[h];if(typeof n=="object"&&n!==null){r=false;break}if(n!==M){r=false;break}}if(!r)break}}if(r&&this.useCache)return this.cache;this.promiseToken=t;let o=++this.version,i=s=>{if(!s||s.length===0)return true;for(let a of s){let p=this.deps.get(a);if(!p)return true;let h=e.getProxyByUid(a);if(!h)return true;for(let n in p){let M=p[n],f=h[n];if(typeof M=="object"&&M!==null||M!==f)return true}}return false},l=this.strategy.evaluate(e,o,i);if(!(l instanceof Promise)){let{res:s,version:a}=l;return this.finalizeSync(s,a,e,t)}return this.pendingPromise=(async()=>{try{let{res:s,version:a}=await l;return this.finalizeSync(s,a,e,t)}catch(s){throw {path:this.path,error:s}}finally{this.promiseToken===t&&(this.pendingPromise=null,this.promiseToken=null);}})(),this.pendingPromise}finalizeSync(e,t,r,o){return o!==this.promiseToken||t<this.version?this.cache:(this.cache=e,this.deps.forEach((i,l)=>{let s=r.getProxyByUid(l);if(!s)return;let a=Object.keys(i);for(let p of a)i[p]=s[p];}),e)}inferType(e){return Array.isArray(e)?"array":typeof e}};var We=(g,e,t)=>{let o=i=>{let l=t.triggerUids.map(p=>{let h=i.getProxyByUid(p);if(t.triggerKeys.length===0)return h;let n={};return t.triggerKeys.forEach(M=>{n[M]=h[M];}),n}),s=Object.create(null);return Object.defineProperty(s,"triggerTargets",{get:()=>l}),Object.defineProperty(s,"affectedTatget",{get:()=>i.getProxyByUid(g)[e]}),t.logic({slot:s})};return {value:t.value,targetUid:g,triggerUids:t.triggerUids,priority:t.priority??10,logic:o}},ze=(g,e,t,r,o,i,l,s)=>{if(!g)throw Error();let a=g,p=(M,f)=>{typeof r[M]>"u"&&(r[M]=[],i[M]=new Set),i[M].add(f),i[M].size>r[M].length&&r[M].push(f),typeof o[f]>"u"&&(o[f]=[],l[f]=new Set),l[f].add(M),l[f].size>o[f].length&&o[f].push(M);};return {SetRule:(M,f,m,b)=>{let S=a(M),R=a(f),P=b.triggerKeys||[],te=s.get(R.uid)||0,_=s.get(S.uid)||0;te+=1,_+=1,s.set(R.uid,te),s.set(S.uid,_);let Z=We(R.uid,m,{...b,triggerUids:[S.uid],triggerKeys:P}),W=[M].map(L=>{let c=a(L);return [c.uid,P,c.proxy]});if(p(S.uid,R.uid),typeof R.nodeBucket[m]=="number"){let L=t(R.nodeBucket[m]);L.setRule(Z,W),b.effect&&L.setSideEffect({fn:b.effect,args:b.effectArgs?b.effectArgs:[m]});}else {let L=R.meta[m],c=new Ae(L,m,f);c.setRule(Z,W),b.effect&&c.setSideEffect({fn:b.effect,args:b.effectArgs?b.effectArgs:[m]}),R.nodeBucket[m]=e(c);}R.state[m]=R.meta[m];let y=t(R.nodeBucket[m]);b.forceNotify&&y.forceNotify(),b.cacheStrategy=="none"&&y.setUseCache(false);},SetRules:(M,f,m,b)=>{let S=a(f),R=s.get(S.uid)||0;R+=1,s.set(S.uid,R);let P=[];for(let y of M){let L=a(y);P.push(L.uid);let c=s.get(L.uid)||0;c+=1,s.set(L.uid,c),p(L.uid,S.uid);}let te=b.triggerKeys||[],_=We(S.uid,m,{...b,triggerUids:P,triggerKeys:te}),Z=M.map(y=>{let L=a(y);return [L.uid,te,L.state]});if(typeof S.nodeBucket[m]=="number"){let y=t(S.nodeBucket[m]);y.setRules(_,Z),b.effect&&y.setSideEffect({fn:b.effect,args:b.effectArgs?b.effectArgs:[m]});}else {let y=S.meta[m],L=new Ae(y,m,f);L.setRules(_,Z),b.effect&&L.setSideEffect({fn:b.effect,args:b.effectArgs?b.effectArgs:[m]}),S.nodeBucket[m]=e(L);}S.state[m]=S.meta[m];let W=t(S.nodeBucket[m]);b.forceNotify&&W.forceNotify(),b.cacheStrategy=="none"&&W.setUseCache(false);}}};var qe=(g,e)=>{let t=g||void 0;if(!t)throw Error();return {SetStrategy:(o,i,l)=>{let s=t(o);e(s.nodeBucket[i]).setStrategy(l);}}};function Qe(){let g=new Map,e=new Map,t=new Set,r=(l,s)=>{g.set(l,s);let a=e.get(l);a&&a(s);};return {SetTrace:(l,s)=>{e.set(l,s);let a=g.get(l)||"idle";return s(a),{cancel:()=>{e.delete(l);}}},useTrace:()=>({apply:s=>{s.on(0,()=>{t.forEach(a=>r(a,"idle")),t.clear(),g.clear();}),s.on(13,({path:a,type:p})=>{(p==1||p==2)&&(t.add(a),r(a,"pending"));}),s.on(10,({path:a})=>{t.add(a),(!g.has(a)||g.get(a)==="idle")&&r(a,"pending");}),s.on(6,({path:a})=>{t.add(a),r(a,"calculating");}),s.on(7,({path:a})=>{r(a,"calculated");}),s.on(12,({path:a,type:p})=>{p==3&&r(a,"calculating"),p==6&&r(a,"idle");}),s.on(14,({path:a})=>{r(a,"pending");}),s.on(9,({path:a})=>r(a,"error"));}})}}function Xe(g,e,t,r){return {GetNextDependency:h=>r()[h]||[],GetPrevDependency:h=>t()[h]||[],GetAllPrevDependency:h=>e()[h]||[],GetAllNextDependency:h=>g()[h]||[],rebuildDirectDependencyMaps:h=>{let n=[],M=[],f=g();for(let m of h){let b=f[m]||[];n[m]=b;for(let S=0;S<b.length;S++){let R=b[S];typeof M[R]>"u"&&(M[R]=[]),M[R].push(m);}}return {directNextMap:n,directPrevMap:M}}}}function Ze(g,e){let t=o=>{let i=[],l=[],s=new Map,a=o.size,p=0,h=0;for(let[n,M]of o)M===0&&l.push(n);if(l.length===0&&a>0)throw Error("Circular dependency detected");for(;l.length>0;){i.push([...l]);let n=[];for(let M of l){p++,s.set(M,h);let f=g[M];if(f)for(let m of f){let b=o.get(m)-1;o.set(m,b),b===0&&n.push(m);}}l=n,h++;}if(p<a)throw Error("Circular dependency detected");return {steps:i,levelMap:s}};return ()=>{let o=new Map;for(let i of e.keys()){let l=g[i]||[];o.has(i)||o.set(i,0);for(let s of l){let a=o.get(s)||0;o.set(s,++a);}}return t(o)}}var Ne=()=>{let g=[];return {on:e=>(g.push(e),()=>{let t=g.indexOf(e);t>-1&&g.splice(t,1);}),call:e=>g.forEach(t=>{t(e);})}};function Je(){let{on:g,call:e}=Ne();return {onError:g,callOnError:e}}function et(){let{on:g,call:e}=Ne();return {onSuccess:g,callOnSuccess:e}}var tt=()=>{let g=new Set,e=new Map,t=new Set,r=(s,a)=>{e.get(s)?.forEach(p=>p(a));},o=(s,a)=>(e.has(s)||e.set(s,new Set),e.get(s).add(a),()=>e.get(s)?.delete(a));return {usePlugin:s=>{let a=new Set,p=(n,M)=>{let f=o(n,M);return a.add(f),f};s.apply({on:p}),g.add(s);let h=()=>{a.forEach(n=>n()),a.clear(),g.delete(s),t.delete(h);};return t.add(h),h},emit:r,destroyPlugin:()=>{t.forEach(s=>s()),t.clear(),e.clear(),g.clear();}}};function nt(){let{on:g,call:e}=Ne();return {onStart:g,callOnStart:e}}var rt=(g={frameQuota:12})=>{let e=performance.now(),t=0,r=false,o=()=>!!navigator?.scheduling?.isInputPending?.({includeContinuous:true});return {getIsFirstFrame:()=>r,reset(){e=performance.now(),t=0,r=true;},shouldYield(){return !r&&(++t&15)!==0?false:!!(performance.now()-e>g.frameQuota||o())},async yieldToMain(){return new Promise(i=>{_e(()=>{e=performance.now(),t=0,r&&(r=false),i();});})}}},_e=g=>{let{port1:e,port2:t}=new MessageChannel;e.onmessage=g,t.postMessage(null);};function st(g,e,t,r,o,i){let l=new Map,s=g.useGreedy,a=null,p=()=>{l.clear();},h={path:null,level:0,targetLevel:0,currentLevel:0,pendingParentsCount:0,active:0,pending:0,blocked:0,nums:0,asyncNums:0},n={path:null,type:0,triggerPath:null,calledBy:0,key:null,value:null,error:null,token:null,duration:null,detail:h};return {TaskRunner:async(f,m)=>{let S=Symbol("token"),R=typeof f=="number"?f:"__NOTIFY_ALL__";l.set(R,S),a=S;let P=false,te=false;i.reset();let _=t.GetMaxUid()+3,Z=new Array(_).fill(0),W=0,y=new Uint8Array(_),L=new Int32Array(_),c=new Int32Array(_),A=new Int32Array(_*2),w=0,E=0,H=new Int32Array(_*2),F=0,O=0,T=new Int32Array(_*2),K=0,U=0;m.forEach(N=>{Z[N]=1,e.GetAllNextDependency(N).forEach(se=>{Z[se]=1;});});let k=new Array(_).fill(null),d=[],u=t.Turnstile,B=new Array(_).fill(null).map(()=>[]),j=new Array(_).fill(null).map(()=>[]),ne=u.volatileLevels.size>0,oe=ne?u.hasObserver:N=>false,re=ne?u.receiveGhosts:()=>[],Se=ne?u.resolveGhosts:()=>[],me=ne?u.getTriggerKeys:()=>[],Re=u?.volatileLevels||new Set,de=-1,J=e.GetUidToLevelMap(),ie=0,Ee=0,Pe=N=>{e.GetAllNextDependency(N).forEach(ae=>{let v=J.get(ae)||0;v>Ee&&(Ee=v);});},Ge=new Set;typeof f=="number"&&(y[f]|=16,Ge.add(f),Pe(f),o.flushPathSet.add(f));let we=typeof f=="number"?[f]:m;i.shouldYield()&&(o.requestUpdate(),await i.yieldToMain());let Ie=we.map(async N=>{if(oe(N)){let se=t.GetNodeByUid(N),ae=me(N);if(ae.length>0){let v=re(se,ae);return v instanceof Promise&&(v=await v),{seed:N,hitTargets:v}}}return {seed:N,hitTargets:[]}});if((await Promise.all(Ie)).forEach(({seed:N,hitTargets:se})=>{if(se&&se.length>0){d.push(...se);let ae=J.get(N)||0;de=Math.max(de,ae);}}),(d.length>0||we.length>1)&&(o.requestUpdate(),await i.yieldToMain(),l.get(R)!==S))return;let Ke=d.length>0;m.forEach(N=>{if(!Ge.has(N))if(Ke){let se=J.get(N)??0;c[N]=se,y[N]&4||(y[N]|=4,T[K++]=N,U++);let ae=t.GetPathByUid(N);n.path=ae,n.type=2,r.emit(14,n);}else y[N]&1||(y[N]|=1,A[w++]=N,E++),Pe(N);}),typeof f=="number"?ie=J.get(f)??0:ie=Math.min(...m.map(N=>J.get(N)??0));let Oe=performance.now(),De=typeof R=="number"?t.GetPathByUid(R):"__NOTIFY_ALL__";n.path=De,n.token=S,r.emit(0,n),r.callOnStart({path:De});let Be=false,Ye=30,je=(N,se)=>{let ae=false,v=false,Y=false,V=t.GetNodeByUid(N),$=t.GetPathByUid(N),q=V.calledBy,I=B[N];I.length=0;let C=oe(N),G=C?me(N):[],D=x=>{C&&(G.length===0||G.includes(x))&&I.push(x);},le=j[N];le.length=0;let ce=false;if(V.calledBy===1){ce=true,ae=true,o.flushPathSet.add(N);let x=k[N];x&&(I.push(...x),k[N]=null);}let ye=(x,X)=>{let ee=J.get(x)??0,pe=t.GetNodeByUid(x),Q=t.GetPathByUid(x),he=(q===1||q===2)&&ee<=de;he&&y[x]&16&&(y[x]&=-17,n.path=Q,n.triggerPath=$,r.emit(11,n));let ue=0;if(!(y[x]&49)){if(y[x]&2)ue=L[x]-1;else {if(ee>ie&&O>Ye){c[x]=ee,y[x]&4||(y[x]|=4,T[K++]=x,U++),n.path=Q,n.type=7,r.emit(12,n);return}let Me=e.GetPrevDependency(x),z=0;for(let ge of Me){if(y[ge]&16)continue;(J.get(ge)??0)>ie&&z++;}ue=z;}if(ue<=0){let Me=(y[x]&1)!==0,z=(y[x]&32)!==0;if(Me||z){n.path=Q,n.type=z?3:3.1,r.emit(12,n);return}y[x]&2&&(y[x]&=-3,O--),he?pe.calledBy=2:pe.calledBy=0,y[x]&1||(y[x]|=1,A[w++]=x,E++),n.path=Q,n.type=X,h.path=$,r.emit(13,n);}else L[x]=ue,y[x]&2||(y[x]|=2,H[F++]=x,O++);}},Te=(x=[])=>{if(l.get(R)!==S)return;if(x.length){let ee={},pe=V.proxy;for(let Q of x){let he=(Q.args||[]).reduce((ue,Me)=>(ue[Me]=pe[Me],ue),{});try{let ue=Q.fn(he);ue&&typeof ue=="object"&&Object.assign(ee,ue);}catch(ue){}}for(let Q in ee)if(Q in V.state)Object.is(V.state[Q],ee[Q])||(V.state[Q]=ee[Q],D(Q),ae=true,(V.notifyKeys.size===0||V.notifyKeys.has(Q))&&(v=true));else throw {error:`wrong effect in ${String(V.path)}`}}ae&&o.flushPathSet.add(N);let X=(ee=[])=>{if(l.get(R)!==S)return;ee&&ee.length>0&&(d.push(...ee),de=Math.max(de,J.get(N)||0)),I.length=0,n.path=$,n.calledBy=V.calledBy,r.emit(7,n),y[N]|=16;let pe=e.GetNextDependency(N);(v||Y)&&(Pe(N),e.GetAllNextDependency(N).forEach(ge=>{Z[ge]=1;}));let Q=t.GetNodeByUid(N),he=J.get(N)??0,ue=Re.has(he)||d.length>0;for(let z of pe){let ge=J.get(z)??0,be=t.GetPathByUid(z);if(ue&&ge>=he){c[z]=ge,y[z]&4||(y[z]|=4,T[K++]=z,U++),n.path=be,n.type=2,r.emit(14,n);continue}if(y[z]&16){n.path=be,n.type=2,r.emit(12,n);continue}if(y[z]&32||(y[z]&1)!==0){n.path=be,n.type=y[z]&32?3:3.1,r.emit(12,n);continue}if(v||Y)ye(z,1);else if(y[z]&2)ye(z,2);else {let lt=J.get(z);c[z]=lt,y[z]&4||(y[z]|=4,T[K++]=z,U++,n.path=be,n.type=1,r.emit(14,n));}}y[N]&32&&(y[N]&=-33,W--),Q.calledBy=0,(()=>{if(!P){P=true;let z=W,ge=E,be=O;n.path=$,n.type=1,h.active=z,h.pending=ge,h.blocked=be,r.emit(5,n),ke();}})();};if(oe(N)&&I.length>0){let ee=re(V,I);ee instanceof Promise?ee.then(X).catch(Fe):X(ee);}else X([]);},Fe=x=>{n.path=$,n.error=x,r.emit(9,n);let X=Symbol("abort");l.set(R,X),w=0,E=0,F=0,O=0,K=0,U=0,y.fill(0),W=0,k.fill(null),r.callOnError(x);},fe=(x,X)=>{x!==V.state[X]&&(V.state[X]=x,ae=true,D(String(X)),n.path=$,n.key=X,n.value=x,n.calledBy=V.calledBy,r.emit(15,n),(V.notifyKeys.size===0||V.notifyKeys.has(X))&&(v=true)),t.GetBucket(V.nodeBucket[X]).isForceNotify()&&(Y=true),(v||Y)&&Pe(N);};n.path=$,n.calledBy=V.calledBy,r.emit(6,n);try{let x=[];for(let X in V.nodeBucket){let ee=t.GetBucket(V.nodeBucket[X]);if(x.push(...ee.getSideEffect()),ce){r.emit(15,{path:$,key:String(X),value:V.state[X],calledBy:V.calledBy}),ee.isForceNotify()&&(Y=!0),(V.notifyKeys.size===0||V.notifyKeys.has(X))&&Pe(N);continue}let pe=ee.evaluate({affectKey:X,triggerUid:se,getProxyByUid:Q=>t.GetNodeByUid(Q).proxy,getStateByUid:Q=>t.GetNodeByUid(Q).state,GetToken:()=>S});if(pe instanceof Promise){let Q=pe.then(he=>{l.get(R)===S&&fe(he,X);});le.push(Q);}else fe(pe,X);}if(le.length>0)return Promise.all(le).then(()=>{Te(x);}).catch(Fe);Te(x);return}catch(x){Fe(x);}},ke=async()=>{if(l.get(R)!==S){P=false;return}P=true;let N=i.getIsFirstFrame(),se=0,ae=()=>30,v=0,Y=ae();try{for(;l.get(R)===S;){let V=v>=Y,$=i.shouldYield();if(V||$){if(v>0&&(se++,(N||se%2===0)&&o.requestUpdate()),await i.yieldToMain(),l.get(R)!==S)break;v=0,N=i.getIsFirstFrame();}if(E>0&&W<40){let q=w,I=0;for(let C=0;C<q;C++){let G=A[C];if((y[G]&1)===0)continue;if(W>=40||v>=Y||i.shouldYield()){for(let fe=C;fe<w;fe++){let x=A[fe];y[x]&1&&(A[I++]=x);}w=I,E=I;break}let D=t.GetNodeByUid(G),le=t.GetPathByUid(G),ce=J.get(G)??0,ye=e.GetPrevDependency(G),Te=ye.length>1;if((!s||Te)&&ce>ie){y[G]&=-2,E--;let fe=ye.filter(x=>Z[x]===1&&(y[x]&16)===0).length;L[G]=fe||0,y[G]&2||(y[G]|=2,H[F++]=G,O++),n.path=le,n.type=fe>0?4:5,h.targetLevel=ce,h.currentLevel=ie,h.pendingParentsCount=fe,r.emit(12,n);continue}y[G]&=-2,E--,(y[G]&32)===0&&(y[G]|=32,W++),n.path=le,n.calledBy=D.calledBy,r.emit(8,n),je(G,f),v++;}if(w>q){for(let C=q;C<w;C++){let G=A[C];y[G]&1&&(A[I++]=G);}w=I,E=w;}else w=I;if(E>0&&W<40)continue}if(v<Y&&s&&O>0&&W<40){let q=!1,I=0,C=0;for(let G=0;G<F;G++){let D=H[G];if((y[D]&2)===0)continue;if(L[D]<=0&&I<Y){let ce=J.get(D)??0,ye=e.GetPrevDependency(D);if(ce<=ie||ye.length<=1){y[D]&=-3,O--,y[D]&1||(y[D]|=1,A[w++]=D,E++),I++,q=!0;let Te=t.GetPathByUid(D);n.path=Te,n.type=4,r.emit(13,n);continue}}H[C++]=D;}if(F=C,I>0)continue;if(q){if(i.shouldYield()&&(await i.yieldToMain(),l.get(R)!==S))break;continue}}if(W===0&&E===0){if(u.inFlightCount>0)break;if(d.length>0){let I=!1,C=ie,G=Array.from(new Set(d));d.length=0;for(let D of G){let le=t.GetNodeByUid(D),ce=Se(le);if(ce&&ce.length>0){I=!0,le.calledBy=1,k[D]=ce,y[D]&=-17,y[D]&2&&(y[D]&=-3,O--),y[D]&1||(y[D]|=1,A[w++]=D,E++);let ye=J.get(le.uid)??0;ye<C&&(C=ye),Pe(le.uid),o.flushPathSet.add(le.uid);}}if(I){if(C<ie&&(ie=C),o.requestUpdate(),i.shouldYield()&&(await i.yieldToMain(),l.get(R)!==S))break;continue}}let q=1/0;for(let I=0;I<K;I++){let C=T[I];if(y[C]&4){let G=c[C];G<q&&(q=G);}}for(let I=0;I<F;I++){let C=H[I];if(y[C]&2){let G=J.get(C)??0;G>ie&&G<q&&(q=G);}}if(q!==1/0&&q<=Ee){ie=q;let I=0;for(let G=0;G<K;G++){let D=T[G];y[D]&4&&(c[D]===q?(y[D]&=-5,U--,y[D]&1||(y[D]|=1,A[w++]=D,E++)):T[I++]=D);}K=I;let C=0;for(let G=0;G<F;G++){let D=H[G];if(y[D]&2)if((J.get(D)??0)===q){y[D]&=-3,O--,y[D]&1||(y[D]|=1,A[w++]=D,E++);let ce=t.GetPathByUid(D);n.path=ce,n.type=3,h.level=q,r.emit(13,n);}else H[C++]=D;}F=C;continue}else {for(let I=0;I<K;I++){let C=T[I];if(y[C]&4){y[C]|=16;let G=t.GetPathByUid(C);n.path=G,n.type=6,r.emit(12,n);}}K=0,U=0;for(let I=0;I<F;I++){let C=H[I];if(y[C]&2){y[C]|=16;let G=t.GetPathByUid(C);n.path=G,n.type=6,r.emit(12,n);}}F=0,O=0;break}}E>0&&W>=40&&(n.type=2,r.emit(4,n));break}}finally{P=false;let V=W+O+E,$=u.inFlightCount||0;if(!(a===S)){n.token=S,r.emit(3,n);return}if(o.requestUpdate(),V===0&&$===0){if(l.get(R)===S&&!Be){Be=true,n.type=1,r.emit(2,n),u.resetCounters(),k.fill(null);let I=performance.now();de=-1,l.delete(R),n.token=S,n.duration=(I-Oe).toFixed(2.1)+"ms",r.emit(1,n),Promise.resolve().then(()=>{r.callOnSuccess();});}}else {let I=V===0&&$>0?3:1;if(n.type=I,h.nums=W,h.asyncNums=$,r.emit(4,n),$>0&&!te){te=true;let C=()=>{a===S&&(u.inFlightCount,u.inFlightCount===0?_e(()=>{u.inFlightCount===0?ke():requestAnimationFrame(C);}):requestAnimationFrame(C));};requestAnimationFrame(C);}}}};ke();},CancelTask:p}}function He(g){let{path:e,uid:t,type:r,meta:o,dirtySignal:i,state:l}=g,s=null,a=["path","uid","type","dependOn","nodeBucket"],h={path:e,uid:t,type:r,meta:o,dirtySignal:i,createView:(n={})=>{if(s&&Object.keys(n).length===0)return s;let M=new Proxy(n,{get(f,m){let b=m;return Reflect.has(f,m)?Reflect.get(f,m):b in g.state?g.state[b]:b in g?g[b]:o&&b in o?o[b]:Reflect.get(f,m)},set(f,m,b){return false},ownKeys(f){let m=new Set([...Reflect.ownKeys(f),...Object.keys(l||{}),...Object.keys(o||{}),...a]);return Array.from(m)},getOwnPropertyDescriptor(f,m){let b=m;return Reflect.has(f,m)||l&&b in l||o&&b in o||a.includes(b)?{enumerable:true,configurable:true}:Reflect.getOwnPropertyDescriptor(f,m)}});return s=M,M}};return "children"in g?{...h,children:g.children}:{...h,state:g.state,nodeBucket:g.nodeBucket,notifyKeys:g.notifyKeys,dependOn:g.dependOn,calledBy:0,get proxy(){return s}}}var at=(g,e,t,r,o,i,l)=>{let s=g.useEntangleStep,a=[],p=[],h=new Set,n=r,m=t,b=0,S=0,R=100,P=()=>{let c={link:null,impactNode:null,impactUid:-1,hitTargetUids:null,isDirty:false,propose:null};return c.propose={set:(A,w,E=1)=>{w!==c.impactNode.state[A]&&(c.link.count++,(!p[c.impactUid]||p[c.impactUid].length===0)&&(p[c.impactUid]=[],S++),p[c.impactUid].push({key:A,value:w,weight:E}),c.isDirty||(c.hitTargetUids.push(c.impactUid),c.isDirty=true));},update:(A,w,E="add")=>{c.link.count++,(!p[c.impactUid]||p[c.impactUid].length===0)&&(p[c.impactUid]=[],S++),p[c.impactUid].push({key:A,delta:w,op:E,weight:1}),c.isDirty||(c.hitTargetUids.push(c.impactUid),c.isDirty=true);},patch:(A,w)=>{c.link.count++,(!p[c.impactUid]||p[c.impactUid].length===0)&&(p[c.impactUid]=[],S++),p[c.impactUid].push({key:A,patch:w,weight:1}),c.isDirty||(c.hitTargetUids.push(c.impactUid),c.isDirty=true);}},c},te=Array.from({length:R},P),_=R-1,Z=(c,A,w)=>{let E=A.path,H=c.impact;if(c.count>=s){l.emit("entangle:blocked",{observer:E,target:H,count:c.count});return}let F=n(H),O=c.isProxy?A.proxy:A,T=c.isProxy?F.proxy:F;if(c.filter&&!c.filter(O,T))return;let K,U=true;_<0?(K=P(),U=false):K=te[_--],K.isDirty=false,K.link=c,K.impactNode=F,K.impactUid=F.uid,K.hitTargetUids=w;let k=c.emit(O,T,K.propose);if(k instanceof Promise||k&&typeof k.then=="function")return b++,(async()=>{try{await k;}catch(d){l.emit("node:error",{path:E,error:d}),l.onError({path:E,error:d});}finally{b--,U&&(te[++_]=K);}})();U&&(te[++_]=K);};return {useEntangle:c=>{let{cause:A,impact:w,via:E,emit:H,filter:F,isProxy:O}=c;if(!E||E.length===0){l.emit("entangle:warn",{path:A,type:"no_keys"});return}let K=n(A).uid;a[K]||(a[K]=new Map);let U=a[K];for(let k=0;k<E.length;k++){let d=E[k];U.has(d)||U.set(d,[]),U.get(d).push({impact:w,emit:H,filter:F,count:0,isProxy:!!O});}},updateEntangleLevel:()=>{let c=m();h.clear();for(let A=0;A<a.length;A++)if(a[A]!==void 0){let w=c.get(A)||0;h.add(w);}},Turnstile:{volatileLevels:h,get inFlightCount(){return b},get hasPendingGhosts(){return S>0},hasObserver:c=>a[c]!==void 0,getTriggerKeys:c=>{let A=a[c];return A?Array.from(A.keys()):[]},receiveGhosts:(c,A=[])=>{let w=c.uid,E=[],H=a[w];if(!H||A.length===0)return E;let F=[];for(let k=0;k<A.length;k++){let d=H.get(A[k]);if(d)for(let u=0;u<d.length;u++)F.push(d[u]);}let O=0,T=false,K=null;for(;O<F.length;O++){if(e.shouldYield()){T=true;break}let k=Z(F[O],c,E);if(k){K=k,T=true,O++;break}}let U=()=>{if(E.length<=1)return E;let k=[],d=Object.create(null);for(let u=0;u<E.length;u++){let B=E[u];d[B]||(d[B]=true,k.push(B));}return k};return T?(async()=>{for(K&&await K,e.shouldYield()&&await e.yieldToMain();O<F.length;){let k=[],d=Math.min(O+R,F.length);for(;O<d;O++){let u=Z(F[O],c,E);u&&k.push(u);}k.length>0&&await Promise.all(k.map(async u=>{await u,e.shouldYield()&&await e.yieldToMain();})),e.shouldYield()&&await e.yieldToMain();}return U()})():U()},resolveGhosts:c=>{let A=c.uid,w=p[A];if(!w||w.length===0)return [];let E=[],H=Object.create(null);for(let F=0;F<w.length;F++){let O=w[F];H[O.key]||(H[O.key]=[]),H[O.key].push(O);}for(let F in H){let O=H[F],T=c.state[F],K,U=-1/0,k=false;for(let d=0;d<O.length;d++){let u=O[d];if(u.patch!==void 0&&(T=u.patch(T)),u.value!==void 0){let B=u.weight??1;B>=U&&(U=B,K=u.value,k=true);}}k&&(T=K);for(let d=0;d<O.length;d++){let u=O[d];if(u.delta!==void 0)switch(u.op||"add"){case "add":T=(typeof T=="number"?T:0)+u.delta;break;case "remove":T=Array.isArray(T)?T.filter(j=>j!==u.delta):T;break;case "intersect":T=Array.isArray(T)?T.filter(j=>u.delta.includes(j)):u.delta;break;case "union":{let j=Array.isArray(T)?T:[],ne=Array.isArray(u.delta)?u.delta:[u.delta];T=[...new Set([...j,...ne])];break}case "merge":{let j=typeof T=="object"&&T!==null&&!Array.isArray(T)?T:{},ne=typeof u.delta=="object"&&u.delta!==null&&!Array.isArray(u.delta)?u.delta:{};T={...j,...ne};break}}}Object.is(c.state[F],T)||(c.state[F]=T,E.push(F));}return p[A]=[],S--,E.length>0?E:[]},resetCounters:()=>{for(let c=0;c<a.length;c++){let A=a[c];if(A)for(let w of A.values())for(let E=0;E<w.length;E++)w[E].count=0;}}}}};function ot(g,e,t,r,o){let i=rt(),l=0,s=new Map,a=[],p=[],h=[],n=[],M=false,f=new Set,b=async()=>{let d=Array.from(f);if(f.clear(),"signalTrigger"in o&&typeof o.signalTrigger=="function")for(let u of d){let B=A(u);o.signalTrigger(B.dirtySignal);}else "emit"in o&&o.emit(d);},S=()=>{M||(M=true,requestAnimationFrame(()=>{try{for(;f.size>0;)b();}finally{M=false;}}));},{useEntangle:R,updateEntangleLevel:P,Turnstile:te}=at({useEntangleStep:g.useEntangleStep},i,e.GetUidToLevelMap,c,A,w,{emit:r.emit,onError:r.callOnError}),{TaskRunner:_,CancelTask:Z}=st({useGreedy:g.useGreedy},e,{GetNodeByPath:c,GetNodeByUid:A,GetPathByUid:w,GetBucket:F,GetMaxUid:O,Turnstile:te},r,{requestUpdate:S,flushPathSet:f},i),W=d=>{throw new Error(`[MeshFlow] Duplicate Path: ${d}`)},y=d=>{s.has(d.path)&&W(String(d.path));let u=++l,B={path:d.path,getNode:oe=>c(oe)},j=(oe,re="value")=>{let Se=oe({...B}),me=c(d.path);if(!Object.is(me.state[re],Se)){if(t.createHistoryAction&&t.pushIntoHistory){let Re=t.createHistoryAction([{path:d.path,value:me.state[re]},{path:d.path,value:Se}],de=>{let J=c(de.path);J.state[re]=de.value,T(de.path);});t.pushIntoHistory(Re);}me.state[re]=Se,T(d.path);}},ne=He({uid:u,type:d.type,path:d.path,state:d.state,meta:d.meta,nodeBucket:{},dirtySignal:"signalCreator"in o?o.signalCreator():void 0,notifyKeys:d.notifyKeys,dependOn:j});return s.set(ne.path,u),h[u]=ne.path,a[u]=ne,ne},L=d=>{s.has(d.path)&&W(String(d.path));let u=++l,B=He({uid:u,type:d.type,path:d.path,state:{},meta:d,nodeBucket:{},children:d.children});return s.set(B.path,u),p[u]=B,B};function c(d){let u=s.get(d),B=a[u];if(!B)throw Error("Wrong id");return B}function A(d){let u=a[d];if(!u)throw Error("Wrong id");return u}function w(d){return h[d]}function E(d){let u=s.get(d);return p[u]}function H(d){return n.push(d)-1}function F(d){let u=n[d];if(!u)throw Error("Wrong id");return u}function O(){return l}let T=d=>{let u=c(d);if(!u)throw Error("Wrong id");f.add(u.uid),S();let B=e.GetNextDependency(u.uid);K(u.uid,B);};function K(d,u){_(d,u);}return {registerNode:y,registerGroupNode:L,GetNodeByPath:c,GetGroupByPath:E,notify:T,notifyAll:async()=>{Promise.resolve().then(async()=>{let d=e.GetDependencyOrder();if(!d||d.length===0)return;let u=d[0];try{_(null,u);}catch(B){throw r.callOnError(B),B}finally{S();}});},batchNotify:d=>{if(!d||d.length===0)return;if(t.createHistoryAction&&t.pushIntoHistory){let B=t.createHistoryAction([d.map(j=>({path:j.path,key:j.key,value:c(j.path).state[j.key]})),d.map(j=>({path:j.path,key:j.key,value:j.value}))],j=>{let ne=new Set;j.forEach(oe=>{let re=c(oe.path);re.state[oe.key]=oe.value,f.add(oe.path),ne.add(oe.uid);}),S(),ne.size>0&&_(null,Array.from(ne));});t.pushIntoHistory(B);}let u=new Set;d.forEach(B=>{let j=c(B.path);j.state[B.key]=B.value,f.add(j.uid),u.add(j.uid);}),S(),u.size>0&&_(null,Array.from(u));},useEntangle:R,updateEntangleLevel:P,SetBucket:H,GetBucket:F,CancelTask:Z,UITrigger:o,UidToNodeMap:a}}function it(g,e){let t=false,r=false,o=false,i=false,l=new Map,s=[],a=[],p=[],h=[],n=[],M=[],f=[],m=new Map,{GetNextDependency:S,GetPrevDependency:R,GetAllPrevDependency:P,GetAllNextDependency:te,rebuildDirectDependencyMaps:_}=Xe(()=>s,()=>p,()=>M,()=>n),Z={},W={};if(e.modules.useHistory){let v=e.modules.useHistory,Y;v.isMeshModuleInited?Y=v:Y=v();let{Undo:V,Redo:$,PushIntoHistory:q,CreateHistoryAction:I,updateUndoSize:C,updateRedoSize:G}=Y();Z.pushIntoHistory=q,Z.createHistoryAction=I,W={Undo:V,Redo:$,updateUndoSize:C,updateRedoSize:G};}let y=!!e.modules.useMeshRenderGate,L={};if(y){let v=e.modules.useMeshRenderGate.isMeshModuleInited,Y=e.modules.useMeshRenderGate;L=(v?Y:Y())(()=>re);}let{onError:c,callOnError:A}=Je(),{onSuccess:w,callOnSuccess:E}=et(),{onStart:H,callOnStart:F}=nt(),{emit:O,usePlugin:T,destroyPlugin:K}=tt(),{SetTrace:U,useTrace:k}=Qe(),d=k();T(d);let u=y?{...L}:{...e.UITrigger},B=ot({useGreedy:e.config.useGreedy,useEntangleStep:e.config.useEntangleStep||100},{GetDependencyOrder:()=>f,GetAllNextDependency:te,GetNextDependency:S,GetPrevDependency:R,GetAllPrevDependency:P,GetUidToLevelMap:()=>m},Z,{callOnError:A,callOnSuccess:E,callOnStart:F,emit:O},u),{SetBucket:j,GetBucket:ne,GetGroupByPath:oe,GetNodeByPath:re,notifyAll:Se,useEntangle:me,updateEntangleLevel:Re,CancelTask:de}=B;y&&L.init();let J={};if(e.modules.useInternalForm){let{uiSchema:v,GetFormData:Y}=e.modules.useInternalForm(B,g);J={uiSchema:v,GetFormData:Y};}let ie={};if(e.modules.useSchemaValidators){let{SetValidators:v}=e.modules.useSchemaValidators(re);ie={SetValidators:v};}let{SetRule:Ee,SetRules:Pe}=ze(re,j,ne,s,p,a,h,l),{SetStrategy:Ge}=qe(re,ne),we=Ze(s,l),Ie=()=>{let v=we();f=v.steps,m=v.levelMap,xe();},xe=()=>{o&&(Re(),o=false);},Ke=()=>{i||(i=true,Promise.resolve().then(xe).finally(()=>{i=false;}));},Oe=()=>{r||(r=true,Promise.resolve().then(()=>{if(Ie(),t){let{directNextMap:v,directPrevMap:Y}=_(f.flat());n=v,M=Y;}}).finally(()=>{r=false,t=false;}));};return {SetRule:(v,Y,V,$)=>{Ee(v,Y,V,$),t=true,Oe();},SetRules:(v,Y,V,$)=>{Pe(v,Y,V,$),t=true,Oe();},SetStrategy:Ge,useEntangle:v=>{me(v),o=true,Ke();},SetTrace:U,usePlugin:T,SetValue:(v,Y,V)=>{xe(),re(v).dependOn(()=>V,Y);},GetValue:(v,Y="value")=>re(v).proxy[Y],SetValues:v=>{xe(),B.batchNotify(v);},GetGroupByPath:oe,notifyAll:async()=>{Ie(),await Se();},GetAllDependency:()=>s,GetDependencyOrder:()=>f,historyExports:W,formExports:J,validatorExports:ie,batchRenderExport:L,hasRenderGate:()=>y,onError:c,onSuccess:w,onStart:H,scheduler:B,destroyPlugin:K,CancelTask:de}}var ve=new Map,ut=(g,e,t)=>{try{if(ve.has(g))throw Error("engineID repeated");let r=it(e,{config:t.config||{useGreedy:!1},UITrigger:t.UITrigger,modules:t.modules??{},plugins:{}}),{SetRule:o,SetRules:i,SetValues:l,SetStrategy:s,SetValue:a,GetValue:p,usePlugin:h,useEntangle:n,GetGroupByPath:M,notifyAll:f,SetTrace:m,GetAllDependency:b,GetDependencyOrder:S,historyExports:R,formExports:P,validatorExports:te,batchRenderExport:_,hasRenderGate:Z,onError:W,onSuccess:y,onStart:L,scheduler:c,destroyPlugin:A,CancelTask:w}=r,E={config:{SetRule:o,SetRules:i,SetStrategy:s,notifyAll:f,SetTrace:m,usePlugin:h,hasRenderGate:Z,useEntangle:n},data:{SetValue:a,GetValue:p,SetValues:l,GetGroupByPath:M},dependency:{GetAllDependency:b,GetDependencyOrder:S},hooks:{onError:W,onSuccess:y,onStart:L}},H=(T,K,U)=>{!K||typeof K!="object"||Object.keys(K).forEach(k=>{let d=K[k];if(typeof d=="object"&&d!==null)T[k]=T[k]||{},H(T[k],d,U);else if(typeof d=="function"){let u=k;if(u==="useMeshRenderGate")u="render";else if(u.startsWith("use")){let B=u.slice(3);u=B.charAt(0).toLowerCase()+B.slice(1);}k==="useHistory"&&U.exports.history&&Object.keys(U.exports.history).length>0?T[u]=U.exports.history:k==="useInternalForm"&&U.exports.form&&Object.keys(U.exports.form).length>0?T[u]=U.exports.form:k==="useSchemaValidators"&&U.exports.validator&&Object.keys(U.exports.validator).length>0?T[u]=U.exports.validator:k==="useMeshRenderGate"&&U.exports.render?T[u]=U.exports.render:T[u]=d(U.scheduler,U.Schema);}});},F={...E,destroyPlugin:A,CancelTask:w,modules:{}},O=t.modules;return O&&H(F.modules,O,{scheduler:c,Schema:e,exports:{history:R,form:P,validator:te,render:_}}),ve.set(g,F),F}catch(r){throw Error(r)}},mn=()=>(g,e,t)=>ut(g,e,t),Pn=g=>{let e=ve.get(g);if(!e)throw Error("Engine not found.");return e},Mn=g=>{let e=ve.get(g);e.destroyPlugin(),e.CancelTask(),ve.delete(g);};export{Ve as DefaultStrategy,Ce as MeshFlowEventsName,Ue as TriggerCause,Mn as deleteEngine,Pn as useEngine,ut as useMeshFlow,mn as useMeshFlowDefiner,ot as useScheduler};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meshflow/core",
3
- "version": "0.4.9",
3
+ "version": "0.5.0",
4
4
  "description": "A logic orchestration engine utilizing topological scheduling and watermark control to resolve asynchronous race conditions in complex dependency linkages.",
5
5
  "main": "./index.cjs",
6
6
  "module": "./index.js",