@meshflow/core 0.5.2 → 0.5.3

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.d.mts CHANGED
@@ -701,12 +701,14 @@ declare function useEngineInstance<T, P extends MeshPath, S = any, M extends Rec
701
701
  GetBucket: (bucketId: number) => SchemaBucket<P>;
702
702
  CancelTask: () => void;
703
703
  stageValueFn: (uid: number, key: SuggestKey<NM>, value: any) => void;
704
+ refresTarget: (uid: number) => void;
704
705
  UITrigger: any;
705
706
  UidToNodeMap: MeshFlowTaskNode<P, any, NM>[];
706
707
  };
707
708
  destroyPlugin: () => void;
708
709
  CancelTask: () => void;
709
710
  StageValue: (path: P, key: SuggestKey<NM>, value: any) => void;
711
+ SilentSet: (path: P, key: SuggestKey<NM>, value: any) => boolean;
710
712
  };
711
713
 
712
714
  /**
@@ -752,6 +754,7 @@ B extends Record<string, any> = StandardUITrigger<T>, NM = any>(config: {
752
754
  GetBucket: (bucketId: number) => SchemaBucket<P>;
753
755
  CancelTask: () => void;
754
756
  stageValueFn: (uid: number, key: SuggestKey<NM>, value: any) => void;
757
+ refresTarget: (uid: number) => void;
755
758
  UITrigger: B;
756
759
  UidToNodeMap: MeshFlowTaskNode<P, any, NM>[];
757
760
  };
@@ -780,6 +783,9 @@ type BaseEngine<T> = {
780
783
  StageValue: T extends {
781
784
  StageValue: infer F;
782
785
  } ? F : never;
786
+ SilentSet: T extends {
787
+ SilentSet: infer F;
788
+ } ? F : never;
783
789
  };
784
790
  config: {
785
791
  SetRule: T extends {
@@ -940,12 +946,14 @@ M extends Record<string, any>, NM extends Record<string, any> = IsNever<Normaliz
940
946
  GetBucket: (bucketId: number) => SchemaBucket<P>;
941
947
  CancelTask: () => void;
942
948
  stageValueFn: (uid: number, key: SuggestKey<NM>, value: any) => void;
949
+ refresTarget: (uid: number) => void;
943
950
  UITrigger: any;
944
951
  UidToNodeMap: MeshFlowTaskNode<P, any, NM>[];
945
952
  };
946
953
  destroyPlugin: () => void;
947
954
  CancelTask: () => void;
948
955
  StageValue: (path: P, key: SuggestKey<NM>, value: any) => void;
956
+ SilentSet: (path: P, key: SuggestKey<NM>, value: any) => boolean;
949
957
  }, M, P>;
950
958
  /**
951
959
  * 类型工厂:锁定全局路径与元数据类型,生成定制化的实例化函数。
package/index.d.ts CHANGED
@@ -701,12 +701,14 @@ declare function useEngineInstance<T, P extends MeshPath, S = any, M extends Rec
701
701
  GetBucket: (bucketId: number) => SchemaBucket<P>;
702
702
  CancelTask: () => void;
703
703
  stageValueFn: (uid: number, key: SuggestKey<NM>, value: any) => void;
704
+ refresTarget: (uid: number) => void;
704
705
  UITrigger: any;
705
706
  UidToNodeMap: MeshFlowTaskNode<P, any, NM>[];
706
707
  };
707
708
  destroyPlugin: () => void;
708
709
  CancelTask: () => void;
709
710
  StageValue: (path: P, key: SuggestKey<NM>, value: any) => void;
711
+ SilentSet: (path: P, key: SuggestKey<NM>, value: any) => boolean;
710
712
  };
711
713
 
712
714
  /**
@@ -752,6 +754,7 @@ B extends Record<string, any> = StandardUITrigger<T>, NM = any>(config: {
752
754
  GetBucket: (bucketId: number) => SchemaBucket<P>;
753
755
  CancelTask: () => void;
754
756
  stageValueFn: (uid: number, key: SuggestKey<NM>, value: any) => void;
757
+ refresTarget: (uid: number) => void;
755
758
  UITrigger: B;
756
759
  UidToNodeMap: MeshFlowTaskNode<P, any, NM>[];
757
760
  };
@@ -780,6 +783,9 @@ type BaseEngine<T> = {
780
783
  StageValue: T extends {
781
784
  StageValue: infer F;
782
785
  } ? F : never;
786
+ SilentSet: T extends {
787
+ SilentSet: infer F;
788
+ } ? F : never;
783
789
  };
784
790
  config: {
785
791
  SetRule: T extends {
@@ -940,12 +946,14 @@ M extends Record<string, any>, NM extends Record<string, any> = IsNever<Normaliz
940
946
  GetBucket: (bucketId: number) => SchemaBucket<P>;
941
947
  CancelTask: () => void;
942
948
  stageValueFn: (uid: number, key: SuggestKey<NM>, value: any) => void;
949
+ refresTarget: (uid: number) => void;
943
950
  UITrigger: any;
944
951
  UidToNodeMap: MeshFlowTaskNode<P, any, NM>[];
945
952
  };
946
953
  destroyPlugin: () => void;
947
954
  CancelTask: () => void;
948
955
  StageValue: (path: P, key: SuggestKey<NM>, value: any) => void;
956
+ SilentSet: (path: P, key: SuggestKey<NM>, value: any) => boolean;
949
957
  }, M, P>;
950
958
  /**
951
959
  * 类型工厂:锁定全局路径与元数据类型,生成定制化的实例化函数。
package/index.js CHANGED
@@ -1 +1 @@
1
- 'use strict';var Ce=(M=>(M[M.FlowStart=0]="FlowStart",M[M.FlowSuccess=1]="FlowSuccess",M[M.FlowEnd=2]="FlowEnd",M[M.FlowAbort=3]="FlowAbort",M[M.FlowWait=4]="FlowWait",M[M.FlowFire=5]="FlowFire",M[M.NodeStart=6]="NodeStart",M[M.NodeSuccess=7]="NodeSuccess",M[M.NodeProcessing=8]="NodeProcessing",M[M.NodeError=9]="NodeError",M[M.NodePending=10]="NodePending",M[M.NodeRevive=11]="NodeRevive",M[M.NodeIntercept=12]="NodeIntercept",M[M.NodeRelease=13]="NodeRelease",M[M.NodeStagnate=14]="NodeStagnate",M[M.NodeBucketSuccess=15]="NodeBucketSuccess",M[M.EntangleWarn=16]="EntangleWarn",M[M.EntangleBlocked=17]="EntangleBlocked",M))(Ce||{}),Le=(r=>(r[r.CAUSALITY=0]="CAUSALITY",r[r.INVERSION=1]="INVERSION",r[r.REPERCUSSION=2]="REPERCUSSION",r))(Le||{});var _e=(r=>(r.OR="OR",r.PRIORITY="PRIORITY",r.MERGE="MERGE",r))(_e||{});var He=class{computedRules=[];getRuleResult(e,t,r){if(e.entityId==="__base__")return e.logic(t);if(!(!e._hasRun||r(e.triggerUids)))return e._lastResult;let l=e.logic(t);return l instanceof Promise?l.then(u=>(e._lastResult=u,e._hasRun=true,u)):(e._lastResult=l,e._hasRun=true,l)}store={OR:(e,t,r)=>{let i,l,u=this.computedRules;for(let a=0;a<u.length;a++){let o=u[a],p=this.getRuleResult(o,e,r);if(p instanceof Promise)return (async()=>{let n=await p;if(o.entityId==="__base__"?l=n:n&&(i=n),typeof i>"u")for(let P=a+1;P<u.length;P++){let m=u[P],S=this.getRuleResult(m,e,r),N=S instanceof Promise?await S:S;if(m.entityId==="__base__"){l=N;continue}if(N){i=m.value;break}}return typeof i>"u"&&(i=l),{res:i,version:t}})();let h=p;if(o.entityId==="__base__"){l=h;continue}if(h){i=o.value;break}}return typeof i>"u"&&(i=l),{res:i,version:t}},PRIORITY:(e,t,r)=>{let i,l=this.computedRules;for(let u=0;u<l.length;u++){let a=l[u],o=this.getRuleResult(a,e,r);if(o instanceof Promise)return (async()=>{let p=await o;if(p!==void 0)return {res:a.value!==void 0?a.value:p,version:t};for(let h=u+1;h<l.length;h++){let n=l[h],P=this.getRuleResult(n,e,r),m=P instanceof Promise?await P:P;if(m!==void 0)return {res:m,version:t}}return {res:void 0,version:t}})();if(o!==void 0)return {res:a.value!==void 0?a.value:o,version:t}}return {res:i,version:t}},MERGE:(e,t,r)=>{let i,l,u=this.computedRules,a=(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<u.length;p++){let h=u[p],n=this.getRuleResult(h,e,r);if(n instanceof Promise)return (async()=>{let m=await n,S=(x,b)=>{if(x.entityId==="__base__")l=a(l,b);else if(b){let M=x.value!==void 0?x.value:b;i=a(i,M);}};S(h,m);for(let x=p+1;x<u.length;x++){let b=u[x],M=this.getRuleResult(b,e,r),se=M instanceof Promise?await M:M;S(b,se);}return {res:a(i,l),version:t}})();let P=n;if(h.entityId==="__base__"){l=a(l,P);continue}if(P){let m=h.value!==void 0?h.value:P;i=a(i,m);}}return {res:a(i,l),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)}},we=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 i=()=>this.rules;this.strategy=new He(i),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,i={...e,entityId:r};for(let l of e.triggerUids)this.rules.has(l)||this.rules.set(l,new Set),this.rules.get(l).add(i);return this.strategy.updateComputedRules(),()=>{for(let l of e.triggerUids){let u=this.rules.get(l);u&&(u.delete(i),u.size===0&&(this.rules.delete(l),this.deps.delete(l)));}this.strategy.updateComputedRules();}}updateDeps(e){for(let[t,r,i]of e){if(r.length==0)continue;let l=this.deps.get(t)||Object.create(null);for(let u of r)l[u]=i[u];this.deps.set(t,l);}}setRule(e,t){if(t&&this.updateDeps(t),typeof e.entityId=="string"){this.setDefaultRule(e);return}let r=++this.id,i={...e,entityId:r};if(e)for(let l of e.triggerUids)this.rules.has(l)||this.rules.set(l,new Set),this.rules.get(l).add(i);return this.strategy.updateComputedRules(),()=>{for(let l of e.triggerUids){let u=this.rules.get(l);u&&(u.delete(i),u.size===0&&(this.rules.delete(l),this.deps.delete(l)));}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[a,o]of this.deps.entries()){let p=e.getStateByUid(a);if(!p){r=false;break}for(let h in o){let n=o[h],P=p[h];if(typeof n=="object"&&n!==null){r=false;break}if(n!==P){r=false;break}}if(!r)break}}if(r&&this.useCache)return this.cache;this.promiseToken=t;let i=++this.version,l=a=>{if(!a||a.length===0)return true;for(let o of a){let p=this.deps.get(o);if(!p)return true;let h=e.getProxyByUid(o);if(!h)return true;for(let n in p){let P=p[n],m=h[n];if(typeof P=="object"&&P!==null||P!==m)return true}}return false},u=this.strategy.evaluate(e,i,l);if(!(u instanceof Promise)){let{res:a,version:o}=u;return this.finalizeSync(a,o,e,t)}return this.pendingPromise=(async()=>{try{let{res:a,version:o}=await u;return this.finalizeSync(a,o,e,t)}catch(a){throw {path:this.path,error:a}}finally{this.promiseToken===t&&(this.pendingPromise=null,this.promiseToken=null);}})(),this.pendingPromise}finalizeSync(e,t,r,i){return i!==this.promiseToken||t<this.version?this.cache:(this.cache=e,this.deps.forEach((l,u)=>{let a=r.getProxyByUid(u);if(!a)return;let o=Object.keys(l);for(let p of o)l[p]=a[p];}),e)}inferType(e){return Array.isArray(e)?"array":typeof e}};var Xe=(g,e,t)=>{let i=l=>{let u=t.triggerUids.map(p=>{let h=l.getProxyByUid(p);if(t.triggerKeys.length===0)return h;let n={};return t.triggerKeys.forEach(P=>{n[P]=h[P];}),n}),a=Object.create(null);return Object.defineProperty(a,"triggerTargets",{get:()=>u}),Object.defineProperty(a,"affectedTatget",{get:()=>l.getProxyByUid(g)[e]}),t.logic({slot:a})};return {value:t.value,targetUid:g,triggerUids:t.triggerUids,priority:t.priority??10,logic:i}},Ze=(g,e,t,r,i,l,u,a)=>{if(!g)throw Error();let o=g,p=(P,m)=>{typeof r[P]>"u"&&(r[P]=[],l[P]=new Set),l[P].add(m),l[P].size>r[P].length&&r[P].push(m),typeof i[m]>"u"&&(i[m]=[],u[m]=new Set),u[m].add(P),u[m].size>i[m].length&&i[m].push(P);};return {SetRule:(P,m,S,N)=>{let x=o(P),b=o(m),M=N.triggerKeys||[],se=a.get(b.uid)||0,U=a.get(x.uid)||0;se+=1,U+=1,a.set(b.uid,se),a.set(x.uid,U);let _=Xe(b.uid,S,{...N,triggerUids:[x.uid],triggerKeys:M}),ee=[P].map(C=>{let te=o(C);return [te.uid,M,te.proxy]});if(p(x.uid,b.uid),typeof b.nodeBucket[S]=="number"){let C=t(b.nodeBucket[S]);C.setRule(_,ee),N.effect&&C.setSideEffect({fn:N.effect,args:N.effectArgs?N.effectArgs:[S]});}else {let C=b.meta[S],te=new we(C,S,m);te.setRule(_,ee),N.effect&&te.setSideEffect({fn:N.effect,args:N.effectArgs?N.effectArgs:[S]}),b.nodeBucket[S]=e(te);}b.state[S]=b.meta[S];let z=t(b.nodeBucket[S]);N.forceNotify&&z.forceNotify(),N.cacheStrategy=="none"&&z.setUseCache(false);},SetRules:(P,m,S,N)=>{let x=o(m),b=a.get(x.uid)||0;b+=1,a.set(x.uid,b);let M=[];for(let z of P){let C=o(z);M.push(C.uid);let te=a.get(C.uid)||0;te+=1,a.set(C.uid,te),p(C.uid,x.uid);}let se=N.triggerKeys||[],U=Xe(x.uid,S,{...N,triggerUids:M,triggerKeys:se}),_=P.map(z=>{let C=o(z);return [C.uid,se,C.state]});if(typeof x.nodeBucket[S]=="number"){let z=t(x.nodeBucket[S]);z.setRules(U,_),N.effect&&z.setSideEffect({fn:N.effect,args:N.effectArgs?N.effectArgs:[S]});}else {let z=x.meta[S],C=new we(z,S,m);C.setRules(U,_),N.effect&&C.setSideEffect({fn:N.effect,args:N.effectArgs?N.effectArgs:[S]}),x.nodeBucket[S]=e(C);}x.state[S]=x.meta[S];let ee=t(x.nodeBucket[S]);N.forceNotify&&ee.forceNotify(),N.cacheStrategy=="none"&&ee.setUseCache(false);}}};var Je=(g,e)=>{let t=g||void 0;if(!t)throw Error();return {SetStrategy:(i,l,u)=>{let a=t(i);e(a.nodeBucket[l]).setStrategy(u);}}};function et(){let g=new Map,e=new Map,t=new Set,r=(u,a)=>{g.set(u,a);let o=e.get(u);o&&o(a);};return {SetTrace:(u,a)=>{e.set(u,a);let o=g.get(u)||"idle";return a(o),{cancel:()=>{e.delete(u);}}},useTrace:()=>({apply:a=>{a.on(0,()=>{t.forEach(o=>r(o,"idle")),t.clear(),g.clear();}),a.on(13,({path:o,type:p})=>{(p==1||p==2)&&(t.add(o),r(o,"pending"));}),a.on(10,({path:o})=>{t.add(o),(!g.has(o)||g.get(o)==="idle")&&r(o,"pending");}),a.on(6,({path:o})=>{t.add(o),r(o,"calculating");}),a.on(7,({path:o})=>{r(o,"calculated");}),a.on(12,({path:o,type:p})=>{p==3&&r(o,"calculating"),p==6&&r(o,"idle");}),a.on(14,({path:o})=>{r(o,"pending");}),a.on(9,({path:o})=>r(o,"error"));}})}}function nt(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=[],P=[],m=g();for(let S of h){let N=m[S]||[];n[S]=N;for(let x=0;x<N.length;x++){let b=N[x];typeof P[b]>"u"&&(P[b]=[]),P[b].push(S);}}return {directNextMap:n,directPrevMap:P}}}}function rt(g,e){let t=i=>{let l=[],u=[],a=new Map,o=i.size,p=0,h=0;for(let[n,P]of i)P===0&&u.push(n);if(u.length===0&&o>0)throw Error("Circular dependency detected");for(;u.length>0;){l.push([...u]);let n=[];for(let P of u){p++,a.set(P,h);let m=g[P];if(m)for(let S of m){let N=i.get(S)-1;i.set(S,N),N===0&&n.push(S);}}u=n,h++;}if(p<o)throw Error("Circular dependency detected");return {steps:l,levelMap:a}};return ()=>{let i=new Map;for(let l of e.keys()){let u=g[l]||[];i.has(l)||i.set(l,0);for(let a of u){let o=i.get(a)||0;i.set(a,++o);}}return t(i)}}var Ge=()=>{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 st(){let{on:g,call:e}=Ge();return {onError:g,callOnError:e}}function at(){let{on:g,call:e}=Ge();return {onSuccess:g,callOnSuccess:e}}var ot=()=>{let g=new Set,e=new Map,t=new Set,r=(a,o)=>{e.get(a)?.forEach(p=>p(o));},i=(a,o)=>(e.has(a)||e.set(a,new Set),e.get(a).add(o),()=>e.get(a)?.delete(o));return {usePlugin:a=>{let o=new Set,p=(n,P)=>{let m=i(n,P);return o.add(m),m};a.apply({on:p}),g.add(a);let h=()=>{o.forEach(n=>n()),o.clear(),g.delete(a),t.delete(h);};return t.add(h),h},emit:r,destroyPlugin:()=>{t.forEach(a=>a()),t.clear(),e.clear(),g.clear();}}};function it(){let{on:g,call:e}=Ge();return {onStart:g,callOnStart:e}}var lt=(g={frameQuota:12})=>{let e=performance.now(),t=0,r=false,i=()=>!!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||i())},async yieldToMain(){return new Promise(l=>{Ye(()=>{e=performance.now(),t=0,r&&(r=false),l();});})}}},Ye=g=>{let{port1:e,port2:t}=new MessageChannel;e.onmessage=g,t.postMessage(null);};function ut(g,e,t,r,i,l){let u=new Map,a=g.useGreedy,o=null,p=()=>{u.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},P=false,m=[],S=null,N=(b,M,se)=>{m.push({uid:b,key:M,value:se}),!P&&(S||(S=Promise.resolve().then(()=>{S=null,P||x(null,[]);})));},x=async(b,M)=>{let U=Symbol("token"),_=typeof b=="number"?b:"__NOTIFY_ALL__";u.set(_,U),o=U,P=true;let ee=false,z=false;l.reset(),t.Turnstile.nextEpoch();let C=t.GetMaxUid()+3,te=new Array(C).fill(0),d=0,s=new Uint8Array(C),H=new Int32Array(C),k=new Int32Array(C),Y=new Int32Array(C*2),A=0,E=0,T=new Int32Array(C*2),O=0,v=0,G=new Int32Array(C*2),c=0,y=0;M.forEach(f=>{te[f]=1,e.GetAllNextDependency(f).forEach(W=>{te[W]=1;});});let w=new Array(C).fill(null),V=[],q=t.Turnstile,ae=new Array(C).fill(null).map(()=>[]),de=new Array(C).fill(null).map(()=>[]),me=[],Ne=()=>{if(m.length===0)return false;let f=false,W=1/0;for(;m.length>0;){let{uid:D,key:Q,value:le}=m.shift(),L=t.GetNodeByUid(D);if(me.includes(D)||me.push(D),!Object.is(L.state[Q],le)){f=true,L.state[Q]=le,i.flushPathSet.add(D),L.calledBy=1;let ne=w[D]||[];ne.includes(Q)||ne.push(Q),w[D]=ne,s[D]&=-17,s[D]&2&&(s[D]&=-3,v--),s[D]&1||(s[D]|=1,Y[A++]=D,E++);let X=e.GetUidToLevelMap().get(D)??0;X<W&&(W=X),Se(D);}}return f&&(ie===void 0||ie>W)&&(ie=W),f},Te=q.volatileLevels.size>0,Pe=Te?q.hasObserver:f=>false,xe=Te?q.receiveGhosts:()=>[],Oe=Te?q.resolveGhosts:()=>[],ke=Te?q.getTriggerKeys:()=>[],De=q?.volatileLevels||new Set,be=-1,oe=e.GetUidToLevelMap(),ie=0,Re=0,Se=f=>{e.GetAllNextDependency(f).forEach(D=>{let Q=oe.get(D)||0;Q>Re&&(Re=Q);});};Ne();let Ie=new Set;typeof b=="number"&&(s[b]|=16,Ie.add(b),Se(b),i.flushPathSet.add(b));let Be=typeof b=="number"?[b]:[...M,...me];l.shouldYield()&&(i.requestUpdate(),await l.yieldToMain());let We=Be.map(async f=>{if(Pe(f)){let W=t.GetNodeByUid(f),D=ke(f);if(D.length>0){let Q=xe(W,D);return Q instanceof Promise&&(Q=await Q),{seed:f,hitTargets:Q}}}return {seed:f,hitTargets:[]}});if((await Promise.all(We)).forEach(({seed:f,hitTargets:W})=>{if(W&&W.length>0){V.push(...W);let D=oe.get(f)||0;be=Math.max(be,D);}}),(V.length>0||Be.length>1)&&(i.requestUpdate(),await l.yieldToMain(),u.get(_)!==U))return;let ze=V.length>0;M.forEach(f=>{if(!Ie.has(f))if(ze){let W=oe.get(f)??0;k[f]=W,s[f]&4||(s[f]|=4,G[c++]=f,y++);let D=t.GetPathByUid(f);n.path=D,n.type=2,r.emit(14,n);}else s[f]&1||(s[f]|=1,Y[A++]=f,E++),Se(f);}),typeof b=="number"?ie=oe.get(b)??0:ie=Math.min(...M.map(f=>oe.get(f)??0));let qe=performance.now(),Ue=typeof _=="number"?t.GetPathByUid(_):"__NOTIFY_ALL__";n.path=Ue,n.token=U,r.emit(0,n),r.callOnStart({path:Ue});let Ve=false,Qe=30,$e=(f,W)=>{let D=false,Q=false,le=false,L=t.GetNodeByUid(f),ne=t.GetPathByUid(f),X=L.calledBy,K=ae[f];K.length=0;let B=Pe(f),I=B?ke(f):[],F=R=>{B&&(I.length===0||I.includes(R))&&K.push(R);},ue=de[f];ue.length=0;let ye=false;if(L.calledBy===1){ye=true,D=true,i.flushPathSet.add(f);let R=w[f];R&&(K.push(...R),w[f]=null);}let fe=(R,J)=>{let re=oe.get(R)??0,he=t.GetNodeByUid(R),Z=t.GetPathByUid(R),ge=(X===1||X===2)&&re<=be;ge&&s[R]&16&&(s[R]&=-17,n.path=Z,n.triggerPath=ne,r.emit(11,n));let ce=0;if(!(s[R]&49)){if(s[R]&2)ce=H[R]-1;else {if(re>ie&&v>Qe){k[R]=re,s[R]&4||(s[R]|=4,G[c++]=R,y++),n.path=Z,n.type=7,r.emit(12,n);return}let Ee=e.GetPrevDependency(R),$=0;for(let Me of Ee){if(s[Me]&16)continue;(oe.get(Me)??0)>ie&&$++;}ce=$;}if(ce<=0){let Ee=(s[R]&1)!==0,$=(s[R]&32)!==0;if(Ee||$){n.path=Z,n.type=$?3:3.1,r.emit(12,n);return}s[R]&2&&(s[R]&=-3,v--),ge?he.calledBy=2:he.calledBy=0,s[R]&1||(s[R]|=1,Y[A++]=R,E++),n.path=Z,n.type=J,h.path=ne,r.emit(13,n);}else H[R]=ce,s[R]&2||(s[R]|=2,T[O++]=R,v++);}},ve=(R=[])=>{if(u.get(_)!==U)return;if(R.length){let re={},he=L.proxy;for(let Z of R){let ge=(Z.args||[]).reduce((ce,Ee)=>(ce[Ee]=he[Ee],ce),{});try{let ce=Z.fn(ge);ce&&typeof ce=="object"&&Object.assign(re,ce);}catch(ce){}}for(let Z in re)if(Z in L.state)Object.is(L.state[Z],re[Z])||(L.state[Z]=re[Z],F(Z),D=true,(L.notifyKeys.size===0||L.notifyKeys.has(Z))&&(Q=true));else throw {error:`wrong effect in ${String(L.path)}`}}D&&i.flushPathSet.add(f);let J=(re=[])=>{if(u.get(_)!==U)return;re&&re.length>0&&(V.push(...re),be=Math.max(be,oe.get(f)||0)),K.length=0,n.path=ne,n.calledBy=L.calledBy,r.emit(7,n),s[f]|=16;let he=e.GetNextDependency(f);(Q||le)&&(Se(f),e.GetAllNextDependency(f).forEach(Me=>{te[Me]=1;}));let Z=t.GetNodeByUid(f),ge=oe.get(f)??0,ce=De.has(ge)||V.length>0;for(let $ of he){let Me=oe.get($)??0,Ae=t.GetPathByUid($);if(ce&&Me>=ge){k[$]=Me,s[$]&4||(s[$]|=4,G[c++]=$,y++),n.path=Ae,n.type=2,r.emit(14,n);continue}if(s[$]&16){n.path=Ae,n.type=2,r.emit(12,n);continue}if(s[$]&32||(s[$]&1)!==0){n.path=Ae,n.type=s[$]&32?3:3.1,r.emit(12,n);continue}if(Q||le)fe($,1);else if(s[$]&2)fe($,2);else {let pt=oe.get($);k[$]=pt,s[$]&4||(s[$]|=4,G[c++]=$,y++,n.path=Ae,n.type=1,r.emit(14,n));}}s[f]&32&&(s[f]&=-33,d--),Z.calledBy=0,(()=>{if(!ee){ee=true;let $=d,Me=E,Ae=v;n.path=ne,n.type=1,h.active=$,h.pending=Me,h.blocked=Ae,r.emit(5,n),j();}})();};if(Pe(f)&&K.length>0){let re=xe(L,K);re instanceof Promise?re.then(J).catch(Fe):J(re);}else J([]);},Fe=R=>{n.path=ne,n.error=R,r.emit(9,n);let J=Symbol("abort");u.set(_,J),A=0,E=0,O=0,v=0,c=0,y=0,s.fill(0),d=0,w.fill(null),P=false,r.callOnError(R);},pe=(R,J)=>{R!==L.state[J]&&(L.state[J]=R,D=true,F(String(J)),n.path=ne,n.key=J,n.value=R,n.calledBy=L.calledBy,r.emit(15,n),(L.notifyKeys.size===0||L.notifyKeys.has(J))&&(Q=true)),t.GetBucket(L.nodeBucket[J]).isForceNotify()&&(le=true),(Q||le)&&Se(f);};n.path=ne,n.calledBy=L.calledBy,r.emit(6,n);try{let R=[];for(let J in L.nodeBucket){let re=t.GetBucket(L.nodeBucket[J]);if(R.push(...re.getSideEffect()),ye){r.emit(15,{path:ne,key:String(J),value:L.state[J],calledBy:L.calledBy}),re.isForceNotify()&&(le=!0),(L.notifyKeys.size===0||L.notifyKeys.has(J))&&Se(f);continue}let he=re.evaluate({affectKey:J,triggerUid:W,getProxyByUid:Z=>t.GetNodeByUid(Z).proxy,getStateByUid:Z=>t.GetNodeByUid(Z).state,GetToken:()=>U});if(he instanceof Promise){let Z=he.then(ge=>{u.get(_)===U&&pe(ge,J);});ue.push(Z);}else pe(he,J);}if(ue.length>0)return Promise.all(ue).then(()=>{ve(R);}).catch(Fe);ve(R);return}catch(R){Fe(R);}},j=async()=>{if(u.get(_)!==U){ee=false;return}ee=true;let f=l.getIsFirstFrame(),W=0,D=()=>30,Q=0,le=D();try{for(;u.get(_)===U;){let L=Q>=le,ne=l.shouldYield();if(L||ne){if(Q>0&&(W++,(f||W%2===0)&&i.requestUpdate()),await l.yieldToMain(),u.get(_)!==U)break;Q=0,f=l.getIsFirstFrame();}if(E>0&&d<40){let X=A,K=0;for(let B=0;B<X;B++){let I=Y[B];if((s[I]&1)===0)continue;if(d>=40||Q>=le||l.shouldYield()){for(let pe=B;pe<A;pe++){let R=Y[pe];s[R]&1&&(Y[K++]=R);}A=K,E=K;break}let F=t.GetNodeByUid(I),ue=t.GetPathByUid(I),ye=oe.get(I)??0,fe=e.GetPrevDependency(I),ve=fe.length>1;if((!a||ve)&&ye>ie){s[I]&=-2,E--;let pe=fe.filter(R=>te[R]===1&&(s[R]&16)===0).length;H[I]=pe||0,s[I]&2||(s[I]|=2,T[O++]=I,v++),n.path=ue,n.type=pe>0?4:5,h.targetLevel=ye,h.currentLevel=ie,h.pendingParentsCount=pe,r.emit(12,n);continue}s[I]&=-2,E--,(s[I]&32)===0&&(s[I]|=32,d++),n.path=ue,n.calledBy=F.calledBy,r.emit(8,n),$e(I,b),Q++;}if(A>X){for(let B=X;B<A;B++){let I=Y[B];s[I]&1&&(Y[K++]=I);}A=K,E=A;}else A=K;if(E>0&&d<40)continue}if(Q<le&&a&&v>0&&d<40){let X=!1,K=0,B=0;for(let I=0;I<O;I++){let F=T[I];if((s[F]&2)===0)continue;if(H[F]<=0&&K<le){let ye=oe.get(F)??0,fe=e.GetPrevDependency(F);if(ye<=ie||fe.length<=1){s[F]&=-3,v--,s[F]&1||(s[F]|=1,Y[A++]=F,E++),K++,X=!0;let ve=t.GetPathByUid(F);n.path=ve,n.type=4,r.emit(13,n);continue}}T[B++]=F;}if(O=B,K>0)continue;if(X){if(l.shouldYield()&&(await l.yieldToMain(),u.get(_)!==U))break;continue}}if(d===0&&E===0){if(q.inFlightCount>0)break;if(V.length>0){let K=!1,B=ie,I=Array.from(new Set(V));V.length=0;for(let F of I){let ue=t.GetNodeByUid(F),ye=Oe(ue);if(ye&&ye.length>0){K=!0,ue.calledBy=1,w[F]=ye,s[F]&=-17,s[F]&2&&(s[F]&=-3,v--),s[F]&1||(s[F]|=1,Y[A++]=F,E++);let fe=oe.get(ue.uid)??0;fe<B&&(B=fe),Se(ue.uid),i.flushPathSet.add(ue.uid);}}if(K){if(B<ie&&(ie=B),i.requestUpdate(),l.shouldYield()&&(await l.yieldToMain(),u.get(_)!==U))break;continue}}let X=1/0;for(let K=0;K<c;K++){let B=G[K];if(s[B]&4){let I=k[B];I<X&&(X=I);}}for(let K=0;K<O;K++){let B=T[K];if(s[B]&2){let I=oe.get(B)??0;I>ie&&I<X&&(X=I);}}if(X!==1/0&&X<=Re){ie=X;let K=0;for(let I=0;I<c;I++){let F=G[I];s[F]&4&&(k[F]===X?(s[F]&=-5,y--,s[F]&1||(s[F]|=1,Y[A++]=F,E++)):G[K++]=F);}c=K;let B=0;for(let I=0;I<O;I++){let F=T[I];if(s[F]&2)if((oe.get(F)??0)===X){s[F]&=-3,v--,s[F]&1||(s[F]|=1,Y[A++]=F,E++);let ye=t.GetPathByUid(F);n.path=ye,n.type=3,h.level=X,r.emit(13,n);}else T[B++]=F;}O=B;continue}else {for(let K=0;K<c;K++){let B=G[K];if(s[B]&4){s[B]|=16;let I=t.GetPathByUid(B);n.path=I,n.type=6,r.emit(12,n);}}c=0,y=0;for(let K=0;K<O;K++){let B=T[K];if(s[B]&2){s[B]|=16;let I=t.GetPathByUid(B);n.path=I,n.type=6,r.emit(12,n);}}O=0,v=0;break}}E>0&&d>=40&&(n.type=2,r.emit(4,n));break}}finally{ee=false;let L=d+v+E,ne=q.inFlightCount||0;if(!(o===U)){n.token=U,r.emit(3,n);return}if(i.requestUpdate(),L===0&&ne===0){if(u.get(_)===U&&!Ve){Ve=true,n.type=1,r.emit(2,n),q.resetCounters(),w.fill(null),P=false;let K=performance.now();be=-1,u.delete(_),n.token=U,n.duration=(K-qe).toFixed(2.1)+"ms",r.emit(1,n),Promise.resolve().then(()=>{r.callOnSuccess();});}}else {let K=L===0&&ne>0?3:1;if(n.type=K,h.nums=d,h.asyncNums=ne,r.emit(4,n),ne>0&&!z){z=true;let B=()=>{if(o!==U){z=false;return}if(q.inFlightCount===0){z=false,Ne(),Ye(()=>{o===U&&q.inFlightCount===0&&j();});return}else q.inFlightCount,requestAnimationFrame(B);};requestAnimationFrame(B);}}}};j();};return {TaskRunner:x,CancelTask:p,stageValueFn:N}}function je(g){let{path:e,uid:t,type:r,meta:i,dirtySignal:l,state:u}=g,a=null,o=["path","uid","type","dependOn","nodeBucket"],h={path:e,uid:t,type:r,meta:i,dirtySignal:l,createView:(n={})=>{if(a&&Object.keys(n).length===0)return a;let P=new Proxy(n,{get(m,S){let N=S;return Reflect.has(m,S)?Reflect.get(m,S):N in g.state?g.state[N]:N in g?g[N]:i&&N in i?i[N]:Reflect.get(m,S)},set(m,S,N){return false},ownKeys(m){let S=new Set([...Reflect.ownKeys(m),...Object.keys(u||{}),...Object.keys(i||{}),...o]);return Array.from(S)},getOwnPropertyDescriptor(m,S){let N=S;return Reflect.has(m,S)||u&&N in u||i&&N in i||o.includes(N)?{enumerable:true,configurable:true}:Reflect.getOwnPropertyDescriptor(m,S)}});return a=P,P}};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 a}}}var ct=(g,e,t,r,i,l,u)=>{let a=g.useEntangleStep,o=[],p=[],h=new Set,n=r,S=t,N=0,x=0,b=0,M=100,se=()=>{let d={link:null,impactNode:null,impactUid:-1,hitTargetUids:null,isDirty:false,propose:null};return d.propose={set:(s,H,k=1)=>{d.epoch===b&&H!==d.impactNode.state[s]&&(d.link.count++,(!p[d.impactUid]||p[d.impactUid].length===0)&&(p[d.impactUid]=[],x++),p[d.impactUid].push({key:s,value:H,weight:k}),d.isDirty||(d.hitTargetUids.push(d.impactUid),d.isDirty=true));},update:(s,H,k="add")=>{d.epoch===b&&(d.link.count++,(!p[d.impactUid]||p[d.impactUid].length===0)&&(p[d.impactUid]=[],x++),p[d.impactUid].push({key:s,delta:H,op:k,weight:1}),d.isDirty||(d.hitTargetUids.push(d.impactUid),d.isDirty=true));},patch:(s,H)=>{d.epoch===b&&(d.link.count++,(!p[d.impactUid]||p[d.impactUid].length===0)&&(p[d.impactUid]=[],x++),p[d.impactUid].push({key:s,patch:H,weight:1}),d.isDirty||(d.hitTargetUids.push(d.impactUid),d.isDirty=true));}},d},U=Array.from({length:M},se),_=M-1,ee=(d,s,H)=>{let k=s.path,Y=d.impact;if(d.count>=a){u.emit("entangle:blocked",{observer:k,target:Y,count:d.count});return}let A=n(Y),E=d.isProxy?s.proxy:s,T=d.isProxy?A.proxy:A;if(d.filter&&!d.filter(E,T))return;let O,v=true;_<0?(O=se(),v=false):O=U[_--];let G=b;O.epoch=G,O.isDirty=false,O.link=d,O.impactNode=A,O.impactUid=A.uid,O.hitTargetUids=H;let c=d.emit(E,T,O.propose);if(c instanceof Promise||c&&typeof c.then=="function")return N++,(async()=>{try{await c;}catch(y){u.emit("node:error",{path:k,error:y}),u.onError({path:k,error:y});}finally{G===b&&N--,v&&(U[++_]=O);}})();v&&(U[++_]=O);};return {useEntangle:d=>{let{cause:s,impact:H,via:k,emit:Y,filter:A,isProxy:E}=d;if(!k||k.length===0){u.emit("entangle:warn",{path:s,type:"no_keys"});return}let O=n(s).uid;o[O]||(o[O]=new Map);let v=o[O];for(let G=0;G<k.length;G++){let c=k[G];v.has(c)||v.set(c,[]),v.get(c).push({impact:H,emit:Y,filter:A,count:0,isProxy:!!E});}},updateEntangleLevel:()=>{let d=S();h.clear();for(let s=0;s<o.length;s++)if(o[s]!==void 0){let H=d.get(s)||0;h.add(H);}},Turnstile:{volatileLevels:h,get inFlightCount(){return N},get hasPendingGhosts(){return x>0},nextEpoch:()=>{b++,N=0,x=0,p.length=0;},hasObserver:d=>o[d]!==void 0,getTriggerKeys:d=>{let s=o[d];return s?Array.from(s.keys()):[]},receiveGhosts:(d,s=[])=>{let H=d.uid,k=[],Y=o[H];if(!Y||s.length===0)return k;let A=[];for(let G=0;G<s.length;G++){let c=Y.get(s[G]);if(c)for(let y=0;y<c.length;y++)A.push(c[y]);}let E=0,T=false,O=null;for(;E<A.length;E++){if(e.shouldYield()){T=true;break}let G=ee(A[E],d,k);if(G){O=G,T=true,E++;break}}let v=()=>{if(k.length<=1)return k;let G=[],c=Object.create(null);for(let y=0;y<k.length;y++){let w=k[y];c[w]||(c[w]=true,G.push(w));}return G};return T?(async()=>{for(O&&await O,e.shouldYield()&&await e.yieldToMain();E<A.length;){let G=[],c=Math.min(E+M,A.length);for(;E<c;E++){let y=ee(A[E],d,k);y&&G.push(y);}G.length>0&&await Promise.all(G.map(async y=>{await y,e.shouldYield()&&await e.yieldToMain();})),e.shouldYield()&&await e.yieldToMain();}return v()})():v()},resolveGhosts:d=>{let s=d.uid,H=p[s];if(!H||H.length===0)return [];let k=[],Y=Object.create(null);for(let A=0;A<H.length;A++){let E=H[A];Y[E.key]||(Y[E.key]=[]),Y[E.key].push(E);}for(let A in Y){let E=Y[A],T=d.state[A],O,v=-1/0,G=false;for(let c=0;c<E.length;c++){let y=E[c];if(y.patch!==void 0&&(T=y.patch(T)),y.value!==void 0){let w=y.weight??1;w>=v&&(v=w,O=y.value,G=true);}}G&&(T=O);for(let c=0;c<E.length;c++){let y=E[c];if(y.delta!==void 0)switch(y.op||"add"){case "add":T=(typeof T=="number"?T:0)+y.delta;break;case "remove":T=Array.isArray(T)?T.filter(V=>V!==y.delta):T;break;case "intersect":T=Array.isArray(T)?T.filter(V=>y.delta.includes(V)):y.delta;break;case "union":{let V=Array.isArray(T)?T:[],q=Array.isArray(y.delta)?y.delta:[y.delta];T=[...new Set([...V,...q])];break}case "merge":{let V=typeof T=="object"&&T!==null&&!Array.isArray(T)?T:{},q=typeof y.delta=="object"&&y.delta!==null&&!Array.isArray(y.delta)?y.delta:{};T={...V,...q};break}}}Object.is(d.state[A],T)||(d.state[A]=T,k.push(A));}return p[s]=[],x--,k.length>0?k:[]},resetCounters:()=>{for(let d=0;d<o.length;d++){let s=o[d];if(s)for(let H of s.values())for(let k=0;k<H.length;k++)H[k].count=0;}}}}};function yt(g,e,t,r,i){let l=lt(),u=0,a=new Map,o=[],p=[],h=[],n=[],P=false,m=new Set,N=async()=>{let c=Array.from(m);if(m.clear(),"signalTrigger"in i&&typeof i.signalTrigger=="function")for(let y of c){let w=s(y);i.signalTrigger(w.dirtySignal);}else "emit"in i&&i.emit(c);},x=()=>{P||(P=true,requestAnimationFrame(()=>{try{for(;m.size>0;)N();}finally{P=false;}}));},{useEntangle:b,updateEntangleLevel:M,Turnstile:se}=ct({useEntangleStep:g.useEntangleStep},l,e.GetUidToLevelMap,d,s,H,{emit:r.emit,onError:r.callOnError}),{TaskRunner:U,CancelTask:_,stageValueFn:ee}=ut({useGreedy:g.useGreedy},e,{GetNodeByPath:d,GetNodeByUid:s,GetPathByUid:H,GetBucket:A,GetMaxUid:E,Turnstile:se},r,{requestUpdate:x,flushPathSet:m},l),z=c=>{throw new Error(`[MeshFlow] Duplicate Path: ${c}`)},C=c=>{a.has(c.path)&&z(String(c.path));let y=++u,w={path:c.path,getNode:ae=>d(ae)},V=(ae,de="value")=>{let me=ae({...w}),Ne=d(c.path);if(!Object.is(Ne.state[de],me)){if(t.createHistoryAction&&t.pushIntoHistory){let Te=t.createHistoryAction([{path:c.path,value:Ne.state[de]},{path:c.path,value:me}],Pe=>{let xe=d(Pe.path);xe.state[de]=Pe.value,T(Pe.path);});t.pushIntoHistory(Te);}Ne.state[de]=me,T(c.path);}},q=je({uid:y,type:c.type,path:c.path,state:c.state,meta:c.meta,nodeBucket:{},dirtySignal:"signalCreator"in i?i.signalCreator():void 0,notifyKeys:c.notifyKeys,dependOn:V});return a.set(q.path,y),h[y]=q.path,o[y]=q,q},te=c=>{a.has(c.path)&&z(String(c.path));let y=++u,w=je({uid:y,type:c.type,path:c.path,state:{},meta:c,nodeBucket:{},children:c.children});return a.set(w.path,y),p[y]=w,w};function d(c){let y=a.get(c),w=o[y];if(!w)throw Error("Wrong id");return w}function s(c){let y=o[c];if(!y)throw Error("Wrong id");return y}function H(c){return h[c]}function k(c){let y=a.get(c);return p[y]}function Y(c){return n.push(c)-1}function A(c){let y=n[c];if(!y)throw Error("Wrong id");return y}function E(){return u}let T=c=>{let y=d(c);if(!y)throw Error("Wrong id");m.add(y.uid),x();let w=e.GetNextDependency(y.uid);O(y.uid,w);};function O(c,y){U(c,y);}return {registerNode:C,registerGroupNode:te,GetNodeByPath:d,GetGroupByPath:k,notify:T,notifyAll:async()=>{Promise.resolve().then(async()=>{let c=e.GetDependencyOrder();if(!c||c.length===0)return;let y=c[0];try{U(null,y);}catch(w){throw r.callOnError(w),w}finally{x();}});},batchNotify:c=>{if(!c||c.length===0)return;if(t.createHistoryAction&&t.pushIntoHistory){let w=t.createHistoryAction([c.map(V=>({path:V.path,key:V.key,value:d(V.path).state[V.key]})),c.map(V=>({path:V.path,key:V.key,value:V.value}))],V=>{let q=new Set;V.forEach(ae=>{let de=d(ae.path);de.state[ae.key]=ae.value,m.add(ae.path),q.add(ae.uid);}),x(),q.size>0&&U(null,Array.from(q));});t.pushIntoHistory(w);}let y=new Set;c.forEach(w=>{let V=d(w.path);V.state[w.key]=w.value,m.add(V.uid),y.add(V.uid);}),x(),y.size>0&&U(null,Array.from(y));},useEntangle:b,updateEntangleLevel:M,SetBucket:Y,GetBucket:A,CancelTask:_,stageValueFn:ee,UITrigger:i,UidToNodeMap:o}}function dt(g,e){let t=false,r=false,i=false,l=false,u=new Map,a=[],o=[],p=[],h=[],n=[],P=[],m=[],S=new Map,{GetNextDependency:x,GetPrevDependency:b,GetAllPrevDependency:M,GetAllNextDependency:se,rebuildDirectDependencyMaps:U}=nt(()=>a,()=>p,()=>P,()=>n),_={},ee={};if(e.modules.useHistory){let j=e.modules.useHistory,f;j.isMeshModuleInited?f=j:f=j();let{Undo:W,Redo:D,PushIntoHistory:Q,CreateHistoryAction:le,updateUndoSize:L,updateRedoSize:ne}=f();_.pushIntoHistory=Q,_.createHistoryAction=le,ee={Undo:W,Redo:D,updateUndoSize:L,updateRedoSize:ne};}let z=!!e.modules.useMeshRenderGate,C={};if(z){let j=e.modules.useMeshRenderGate.isMeshModuleInited,f=e.modules.useMeshRenderGate;C=(j?f:f())(()=>ae);}let{onError:te,callOnError:d}=st(),{onSuccess:s,callOnSuccess:H}=at(),{onStart:k,callOnStart:Y}=it(),{emit:A,usePlugin:E,destroyPlugin:T}=ot(),{SetTrace:O,useTrace:v}=et(),G=v();E(G);let c=z?{...C}:{...e.UITrigger},y=yt({useGreedy:e.config.useGreedy,useEntangleStep:e.config.useEntangleStep||100},{GetDependencyOrder:()=>m,GetAllNextDependency:se,GetNextDependency:x,GetPrevDependency:b,GetAllPrevDependency:M,GetUidToLevelMap:()=>S},_,{callOnError:d,callOnSuccess:H,callOnStart:Y,emit:A},c),{SetBucket:w,GetBucket:V,GetGroupByPath:q,GetNodeByPath:ae,notifyAll:de,useEntangle:me,updateEntangleLevel:Ne,CancelTask:Te,stageValueFn:Pe}=y;z&&C.init();let xe={};if(e.modules.useInternalForm){let{uiSchema:j,GetFormData:f}=e.modules.useInternalForm(y,g);xe={uiSchema:j,GetFormData:f};}let Oe={};if(e.modules.useSchemaValidators){let{SetValidators:j}=e.modules.useSchemaValidators(ae);Oe={SetValidators:j};}let{SetRule:ke,SetRules:De}=Ze(ae,w,V,a,p,o,h,u),{SetStrategy:be}=Je(ae,V),oe=rt(a,u),ie=()=>{let j=oe();m=j.steps,S=j.levelMap,Re();},Re=()=>{i&&(Ne(),i=false);},Se=()=>{l||(l=true,Promise.resolve().then(Re).finally(()=>{l=false;}));},Ie=()=>{r||(r=true,Promise.resolve().then(()=>{if(ie(),t){let{directNextMap:j,directPrevMap:f}=U(m.flat());n=j,P=f;}}).finally(()=>{r=false,t=false;}));};return {SetRule:(j,f,W,D)=>{ke(j,f,W,D),t=true,Ie();},SetRules:(j,f,W,D)=>{De(j,f,W,D),t=true,Ie();},SetStrategy:be,useEntangle:j=>{me(j),i=true,Se();},SetTrace:O,usePlugin:E,SetValue:(j,f,W)=>{Re(),ae(j).dependOn(()=>W,f);},GetValue:(j,f="value")=>ae(j).proxy[f],SetValues:j=>{Re(),y.batchNotify(j);},GetGroupByPath:q,notifyAll:async()=>{ie(),await de();},GetAllDependency:()=>a,GetDependencyOrder:()=>m,historyExports:ee,formExports:xe,validatorExports:Oe,batchRenderExport:C,hasRenderGate:()=>z,onError:te,onSuccess:s,onStart:k,scheduler:y,destroyPlugin:T,CancelTask:Te,StageValue:(j,f,W)=>{let D=ae(j);Pe(D.uid,f,W);}}}var Ke=new Map,ht=(g,e,t)=>{try{if(Ke.has(g))throw Error("engineID repeated");let r=dt(e,{config:t.config||{useGreedy:!1},UITrigger:t.UITrigger,modules:t.modules??{},plugins:{}}),{SetRule:i,SetRules:l,SetValues:u,SetStrategy:a,SetValue:o,GetValue:p,usePlugin:h,useEntangle:n,GetGroupByPath:P,notifyAll:m,SetTrace:S,GetAllDependency:N,GetDependencyOrder:x,historyExports:b,formExports:M,validatorExports:se,batchRenderExport:U,hasRenderGate:_,onError:ee,onSuccess:z,onStart:C,scheduler:te,destroyPlugin:d,CancelTask:s,StageValue:H}=r,k={config:{SetRule:i,SetRules:l,SetStrategy:a,notifyAll:m,SetTrace:S,usePlugin:h,hasRenderGate:_,useEntangle:n},data:{SetValue:o,GetValue:p,SetValues:u,GetGroupByPath:P,StageValue:H},dependency:{GetAllDependency:N,GetDependencyOrder:x},hooks:{onError:ee,onSuccess:z,onStart:C}},Y=(T,O,v)=>{!O||typeof O!="object"||Object.keys(O).forEach(G=>{let c=O[G];if(typeof c=="object"&&c!==null)T[G]=T[G]||{},Y(T[G],c,v);else if(typeof c=="function"){let y=G;if(y==="useMeshRenderGate")y="render";else if(y.startsWith("use")){let w=y.slice(3);y=w.charAt(0).toLowerCase()+w.slice(1);}G==="useHistory"&&v.exports.history&&Object.keys(v.exports.history).length>0?T[y]=v.exports.history:G==="useInternalForm"&&v.exports.form&&Object.keys(v.exports.form).length>0?T[y]=v.exports.form:G==="useSchemaValidators"&&v.exports.validator&&Object.keys(v.exports.validator).length>0?T[y]=v.exports.validator:G==="useMeshRenderGate"&&v.exports.render?T[y]=v.exports.render:T[y]=c(v.scheduler,v.Schema);}});},A={...k,destroyPlugin:d,CancelTask:s,modules:{}},E=t.modules;return E&&Y(A.modules,E,{scheduler:te,Schema:e,exports:{history:b,form:M,validator:se,render:U}}),Ke.set(g,A),A}catch(r){throw Error(r)}},xn=()=>(g,e,t)=>ht(g,e,t),An=g=>{let e=Ke.get(g);if(!e)throw Error("Engine not found.");return e},vn=g=>{let e=Ke.get(g);e.destroyPlugin(),e.CancelTask(),Ke.delete(g);};exports.DefaultStrategy=_e;exports.MeshFlowEventsName=Ce;exports.TriggerCause=Le;exports.deleteEngine=vn;exports.useEngine=An;exports.useMeshFlow=ht;exports.useMeshFlowDefiner=xn;exports.useScheduler=yt;
1
+ 'use strict';var De=(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))(De||{}),Le=(r=>(r[r.CAUSALITY=0]="CAUSALITY",r[r.INVERSION=1]="INVERSION",r[r.REPERCUSSION=2]="REPERCUSSION",r))(Le||{});var _e=(r=>(r.OR="OR",r.PRIORITY="PRIORITY",r.MERGE="MERGE",r))(_e||{});var He=class{computedRules=[];getRuleResult(e,t,r){if(e.entityId==="__base__")return e.logic(t);if(!(!e._hasRun||r(e.triggerUids)))return e._lastResult;let u=e.logic(t);return u instanceof Promise?u.then(c=>(e._lastResult=c,e._hasRun=true,c)):(e._lastResult=u,e._hasRun=true,u)}store={OR:(e,t,r)=>{let l,u,c=this.computedRules;for(let a=0;a<c.length;a++){let i=c[a],d=this.getRuleResult(i,e,r);if(d instanceof Promise)return (async()=>{let n=await d;if(i.entityId==="__base__"?u=n:n&&(l=n),typeof l>"u")for(let g=a+1;g<c.length;g++){let h=c[g],m=this.getRuleResult(h,e,r),M=m instanceof Promise?await m:m;if(h.entityId==="__base__"){u=M;continue}if(M){l=h.value;break}}return typeof l>"u"&&(l=u),{res:l,version:t}})();let f=d;if(i.entityId==="__base__"){u=f;continue}if(f){l=i.value;break}}return typeof l>"u"&&(l=u),{res:l,version:t}},PRIORITY:(e,t,r)=>{let l,u=this.computedRules;for(let c=0;c<u.length;c++){let a=u[c],i=this.getRuleResult(a,e,r);if(i instanceof Promise)return (async()=>{let d=await i;if(d!==void 0)return {res:a.value!==void 0?a.value:d,version:t};for(let f=c+1;f<u.length;f++){let n=u[f],g=this.getRuleResult(n,e,r),h=g instanceof Promise?await g:g;if(h!==void 0)return {res:h,version:t}}return {res:void 0,version:t}})();if(i!==void 0)return {res:a.value!==void 0?a.value:i,version:t}}return {res:l,version:t}},MERGE:(e,t,r)=>{let l,u,c=this.computedRules,a=(d,f)=>d===void 0?f:f===void 0?d:Array.isArray(d)&&Array.isArray(f)?[...f,...d]:typeof d=="object"&&typeof f=="object"?{...f,...d}:d;for(let d=0;d<c.length;d++){let f=c[d],n=this.getRuleResult(f,e,r);if(n instanceof Promise)return (async()=>{let h=await n,m=(A,T)=>{if(A.entityId==="__base__")u=a(u,T);else if(T){let P=A.value!==void 0?A.value:T;l=a(l,P);}};m(f,h);for(let A=d+1;A<c.length;A++){let T=c[A],P=this.getRuleResult(T,e,r),se=P instanceof Promise?await P:P;m(T,se);}return {res:a(l,u),version:t}})();let g=n;if(f.entityId==="__base__"){u=a(u,g);continue}if(g){let h=f.value!==void 0?f.value:g;l=a(l,h);}}return {res:a(l,u),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)}},Ke=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 l=()=>this.rules;this.strategy=new He(l),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,l={...e,entityId:r};for(let u of e.triggerUids)this.rules.has(u)||this.rules.set(u,new Set),this.rules.get(u).add(l);return this.strategy.updateComputedRules(),()=>{for(let u of e.triggerUids){let c=this.rules.get(u);c&&(c.delete(l),c.size===0&&(this.rules.delete(u),this.deps.delete(u)));}this.strategy.updateComputedRules();}}updateDeps(e){for(let[t,r,l]of e){if(r.length==0)continue;let u=this.deps.get(t)||Object.create(null);for(let c of r)u[c]=l[c];this.deps.set(t,u);}}setRule(e,t){if(t&&this.updateDeps(t),typeof e.entityId=="string"){this.setDefaultRule(e);return}let r=++this.id,l={...e,entityId:r};if(e)for(let u of e.triggerUids)this.rules.has(u)||this.rules.set(u,new Set),this.rules.get(u).add(l);return this.strategy.updateComputedRules(),()=>{for(let u of e.triggerUids){let c=this.rules.get(u);c&&(c.delete(l),c.size===0&&(this.rules.delete(u),this.deps.delete(u)));}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[a,i]of this.deps.entries()){let d=e.getStateByUid(a);if(!d){r=false;break}for(let f in i){let n=i[f],g=d[f];if(typeof n=="object"&&n!==null){r=false;break}if(n!==g){r=false;break}}if(!r)break}}if(r&&this.useCache)return this.cache;this.promiseToken=t;let l=++this.version,u=a=>{if(!a||a.length===0)return true;for(let i of a){let d=this.deps.get(i);if(!d)return true;let f=e.getProxyByUid(i);if(!f)return true;for(let n in d){let g=d[n],h=f[n];if(typeof g=="object"&&g!==null||g!==h)return true}}return false},c=this.strategy.evaluate(e,l,u);if(!(c instanceof Promise)){let{res:a,version:i}=c;return this.finalizeSync(a,i,e,t)}return this.pendingPromise=(async()=>{try{let{res:a,version:i}=await c;return this.finalizeSync(a,i,e,t)}catch(a){throw {path:this.path,error:a}}finally{this.promiseToken===t&&(this.pendingPromise=null,this.promiseToken=null);}})(),this.pendingPromise}finalizeSync(e,t,r,l){return l!==this.promiseToken||t<this.version?this.cache:(this.cache=e,this.deps.forEach((u,c)=>{let a=r.getProxyByUid(c);if(!a)return;let i=Object.keys(u);for(let d of i)u[d]=a[d];}),e)}inferType(e){return Array.isArray(e)?"array":typeof e}};var Xe=(p,e,t)=>{let l=u=>{let c=t.triggerUids.map(d=>{let f=u.getProxyByUid(d);if(t.triggerKeys.length===0)return f;let n={};return t.triggerKeys.forEach(g=>{n[g]=f[g];}),n}),a=Object.create(null);return Object.defineProperty(a,"triggerTargets",{get:()=>c}),Object.defineProperty(a,"affectedTatget",{get:()=>u.getProxyByUid(p)[e]}),t.logic({slot:a})};return {value:t.value,targetUid:p,triggerUids:t.triggerUids,priority:t.priority??10,logic:l}},Ze=(p,e,t,r,l,u,c,a)=>{if(!p)throw Error();let i=p,d=(g,h)=>{typeof r[g]>"u"&&(r[g]=[],u[g]=new Set),u[g].add(h),u[g].size>r[g].length&&r[g].push(h),typeof l[h]>"u"&&(l[h]=[],c[h]=new Set),c[h].add(g),c[h].size>l[h].length&&l[h].push(g);};return {SetRule:(g,h,m,M)=>{let A=i(g),T=i(h),P=M.triggerKeys||[],se=a.get(T.uid)||0,L=a.get(A.uid)||0;se+=1,L+=1,a.set(T.uid,se),a.set(A.uid,L);let j=Xe(T.uid,m,{...M,triggerUids:[A.uid],triggerKeys:P}),ee=[g].map(U=>{let te=i(U);return [te.uid,P,te.proxy]});if(d(A.uid,T.uid),typeof T.nodeBucket[m]=="number"){let U=t(T.nodeBucket[m]);U.setRule(j,ee),M.effect&&U.setSideEffect({fn:M.effect,args:M.effectArgs?M.effectArgs:[m]});}else {let U=T.meta[m],te=new Ke(U,m,h);te.setRule(j,ee),M.effect&&te.setSideEffect({fn:M.effect,args:M.effectArgs?M.effectArgs:[m]}),T.nodeBucket[m]=e(te);}T.state[m]=T.meta[m];let q=t(T.nodeBucket[m]);M.forceNotify&&q.forceNotify(),M.cacheStrategy=="none"&&q.setUseCache(false);},SetRules:(g,h,m,M)=>{let A=i(h),T=a.get(A.uid)||0;T+=1,a.set(A.uid,T);let P=[];for(let q of g){let U=i(q);P.push(U.uid);let te=a.get(U.uid)||0;te+=1,a.set(U.uid,te),d(U.uid,A.uid);}let se=M.triggerKeys||[],L=Xe(A.uid,m,{...M,triggerUids:P,triggerKeys:se}),j=g.map(q=>{let U=i(q);return [U.uid,se,U.state]});if(typeof A.nodeBucket[m]=="number"){let q=t(A.nodeBucket[m]);q.setRules(L,j),M.effect&&q.setSideEffect({fn:M.effect,args:M.effectArgs?M.effectArgs:[m]});}else {let q=A.meta[m],U=new Ke(q,m,h);U.setRules(L,j),M.effect&&U.setSideEffect({fn:M.effect,args:M.effectArgs?M.effectArgs:[m]}),A.nodeBucket[m]=e(U);}A.state[m]=A.meta[m];let ee=t(A.nodeBucket[m]);M.forceNotify&&ee.forceNotify(),M.cacheStrategy=="none"&&ee.setUseCache(false);}}};var Je=(p,e)=>{let t=p||void 0;if(!t)throw Error();return {SetStrategy:(l,u,c)=>{let a=t(l);e(a.nodeBucket[u]).setStrategy(c);}}};function et(){let p=new Map,e=new Map,t=new Set,r=(c,a)=>{p.set(c,a);let i=e.get(c);i&&i(a);};return {SetTrace:(c,a)=>{e.set(c,a);let i=p.get(c)||"idle";return a(i),{cancel:()=>{e.delete(c);}}},useTrace:()=>({apply:a=>{a.on(0,()=>{t.forEach(i=>r(i,"idle")),t.clear(),p.clear();}),a.on(13,({path:i,type:d})=>{(d==1||d==2)&&(t.add(i),r(i,"pending"));}),a.on(10,({path:i})=>{t.add(i),(!p.has(i)||p.get(i)==="idle")&&r(i,"pending");}),a.on(6,({path:i})=>{t.add(i),r(i,"calculating");}),a.on(7,({path:i})=>{r(i,"calculated");}),a.on(12,({path:i,type:d})=>{d==3&&r(i,"calculating"),d==6&&r(i,"idle");}),a.on(14,({path:i})=>{r(i,"pending");}),a.on(9,({path:i})=>r(i,"error"));}})}}function nt(p,e,t,r){return {GetNextDependency:f=>r()[f]||[],GetPrevDependency:f=>t()[f]||[],GetAllPrevDependency:f=>e()[f]||[],GetAllNextDependency:f=>p()[f]||[],rebuildDirectDependencyMaps:f=>{let n=[],g=[],h=p();for(let m of f){let M=h[m]||[];n[m]=M;for(let A=0;A<M.length;A++){let T=M[A];typeof g[T]>"u"&&(g[T]=[]),g[T].push(m);}}return {directNextMap:n,directPrevMap:g}}}}function rt(p,e){let t=l=>{let u=[],c=[],a=new Map,i=l.size,d=0,f=0;for(let[n,g]of l)g===0&&c.push(n);if(c.length===0&&i>0)throw Error("Circular dependency detected");for(;c.length>0;){u.push([...c]);let n=[];for(let g of c){d++,a.set(g,f);let h=p[g];if(h)for(let m of h){let M=l.get(m)-1;l.set(m,M),M===0&&n.push(m);}}c=n,f++;}if(d<i)throw Error("Circular dependency detected");return {steps:u,levelMap:a}};return ()=>{let l=new Map;for(let u of e.keys()){let c=p[u]||[];l.has(u)||l.set(u,0);for(let a of c){let i=l.get(a)||0;l.set(a,++i);}}return t(l)}}var Ge=()=>{let p=[];return {on:e=>(p.push(e),()=>{let t=p.indexOf(e);t>-1&&p.splice(t,1);}),call:e=>p.forEach(t=>{t(e);})}};function st(){let{on:p,call:e}=Ge();return {onError:p,callOnError:e}}function at(){let{on:p,call:e}=Ge();return {onSuccess:p,callOnSuccess:e}}var ot=()=>{let p=new Set,e=new Map,t=new Set,r=(a,i)=>{e.get(a)?.forEach(d=>d(i));},l=(a,i)=>(e.has(a)||e.set(a,new Set),e.get(a).add(i),()=>e.get(a)?.delete(i));return {usePlugin:a=>{let i=new Set,d=(n,g)=>{let h=l(n,g);return i.add(h),h};a.apply({on:d}),p.add(a);let f=()=>{i.forEach(n=>n()),i.clear(),p.delete(a),t.delete(f);};return t.add(f),f},emit:r,destroyPlugin:()=>{t.forEach(a=>a()),t.clear(),e.clear(),p.clear();}}};function it(){let{on:p,call:e}=Ge();return {onStart:p,callOnStart:e}}var lt=(p={frameQuota:12})=>{let e=performance.now(),t=0,r=false,l=()=>!!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>p.frameQuota||l())},async yieldToMain(){return new Promise(u=>{Ye(()=>{e=performance.now(),t=0,r&&(r=false),u();});})}}},Ye=p=>{let{port1:e,port2:t}=new MessageChannel;e.onmessage=p,t.postMessage(null);};function ut(p,e,t,r,l,u){let c=new Map,a=p.useGreedy,i=null,d=()=>{c.clear();},f={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:f},g=false,h=[],m=null,M=(T,P,se)=>{h.push({uid:T,key:P,value:se}),!g&&(m||(m=Promise.resolve().then(()=>{m=null,g||A(null,[]);})));},A=async(T,P)=>{let L=Symbol("token"),j=typeof T=="number"?T:"__NOTIFY_ALL__";c.set(j,L),i=L,g=true;let ee=false,q=false;u.reset(),t.Turnstile.nextEpoch();let U=t.GetMaxUid()+3,te=new Array(U).fill(0),y=0,s=new Uint8Array(U),W=new Int32Array(U),C=new Int32Array(U),z=new Int32Array(U*2),w=0,R=0,G=new Int32Array(U*2),K=0,_=0,v=new Int32Array(U*2),I=0,o=0;P.forEach(N=>{te[N]=1,e.GetAllNextDependency(N).forEach(E=>{te[E]=1;});});let S=new Array(U).fill(null),O=[],H=t.Turnstile,ae=new Array(U).fill(null).map(()=>[]),fe=new Array(U).fill(null).map(()=>[]),ce=[],Me=()=>{if(h.length===0)return false;let N=false,E=1/0;for(;h.length>0;){let{uid:b,key:B,value:Q}=h.shift(),Y=t.GetNodeByUid(b);if(ce.includes(b)||ce.push(b),!Object.is(Y.state[B],Q)){N=true,Y.state[B]=Q,l.flushPathSet.add(b),Y.calledBy=1;let ne=S[b]||[];ne.includes(B)||ne.push(B),S[b]=ne,s[b]&=-17,s[b]&2&&(s[b]&=-3,_--),s[b]&1||(s[b]|=1,z[w++]=b,R++);let $=e.GetUidToLevelMap().get(b)??0;$<E&&(E=$),de(b);}}return N&&(ie===void 0||ie>E)&&(ie=E),N},pe=H.volatileLevels.size>0,Re=pe?H.hasObserver:N=>false,Ne=pe?H.receiveGhosts:()=>[],Ee=pe?H.resolveGhosts:()=>[],Ie=pe?H.getTriggerKeys:()=>[],Be=H?.volatileLevels||new Set,Te=-1,oe=e.GetUidToLevelMap(),ie=0,ve=0,de=N=>{e.GetAllNextDependency(N).forEach(b=>{let B=oe.get(b)||0;B>ve&&(ve=B);});};Me();let ke=new Set;typeof T=="number"&&(s[T]|=16,ke.add(T),de(T),l.flushPathSet.add(T));let we=typeof T=="number"?[T]:[...P,...ce];u.shouldYield()&&(l.requestUpdate(),await u.yieldToMain());let We=we.map(async N=>{if(Re(N)){let E=t.GetNodeByUid(N),b=Ie(N);if(b.length>0){let B=Ne(E,b);return B instanceof Promise&&(B=await B),{seed:N,hitTargets:B}}}return {seed:N,hitTargets:[]}});if((await Promise.all(We)).forEach(({seed:N,hitTargets:E})=>{if(E&&E.length>0){O.push(...E);let b=oe.get(N)||0;Te=Math.max(Te,b);}}),(O.length>0||we.length>1)&&(l.requestUpdate(),await u.yieldToMain(),c.get(j)!==L))return;let ze=O.length>0;P.forEach(N=>{if(!ke.has(N))if(ze){let E=oe.get(N)??0;C[N]=E,s[N]&4||(s[N]|=4,v[I++]=N,o++);let b=t.GetPathByUid(N);n.path=b,n.type=2,r.emit(14,n);}else s[N]&1||(s[N]|=1,z[w++]=N,R++),de(N);}),typeof T=="number"?ie=oe.get(T)??0:ie=Math.min(...P.map(N=>oe.get(N)??0));let qe=performance.now(),Ue=typeof j=="number"?t.GetPathByUid(j):"__NOTIFY_ALL__";n.path=Ue,n.token=L,r.emit(0,n),r.callOnStart({path:Ue});let Ve=false,Qe=30,$e=(N,E)=>{let b=false,B=false,Q=false,Y=t.GetNodeByUid(N),ne=t.GetPathByUid(N),$=Y.calledBy,k=ae[N];k.length=0;let V=Re(N),F=V?Ie(N):[],D=x=>{V&&(F.length===0||F.includes(x))&&k.push(x);},le=fe[N];le.length=0;let ye=false;if(Y.calledBy===1){ye=true,b=true,l.flushPathSet.add(N);let x=S[N];x&&(k.push(...x),S[N]=null);}let he=(x,J)=>{let re=oe.get(x)??0,me=t.GetNodeByUid(x),Z=t.GetPathByUid(x),Pe=($===1||$===2)&&re<=Te;Pe&&s[x]&16&&(s[x]&=-17,n.path=Z,n.triggerPath=ne,r.emit(11,n));let ue=0;if(!(s[x]&49)){if(s[x]&2)ue=W[x]-1;else {if(re>ie&&_>Qe){C[x]=re,s[x]&4||(s[x]|=4,v[I++]=x,o++),n.path=Z,n.type=7,r.emit(12,n);return}let be=e.GetPrevDependency(x),X=0;for(let Se of be){if(s[Se]&16)continue;(oe.get(Se)??0)>ie&&X++;}ue=X;}if(ue<=0){let be=(s[x]&1)!==0,X=(s[x]&32)!==0;if(be||X){n.path=Z,n.type=X?3:3.1,r.emit(12,n);return}s[x]&2&&(s[x]&=-3,_--),Pe?me.calledBy=2:me.calledBy=0,s[x]&1||(s[x]|=1,z[w++]=x,R++),n.path=Z,n.type=J,f.path=ne,r.emit(13,n);}else W[x]=ue,s[x]&2||(s[x]|=2,G[K++]=x,_++);}},Ae=(x=[])=>{if(c.get(j)!==L)return;if(x.length){let re={},me=Y.proxy;for(let Z of x){let Pe=(Z.args||[]).reduce((ue,be)=>(ue[be]=me[be],ue),{});try{let ue=Z.fn(Pe);ue&&typeof ue=="object"&&Object.assign(re,ue);}catch(ue){}}for(let Z in re)if(Z in Y.state)Object.is(Y.state[Z],re[Z])||(Y.state[Z]=re[Z],D(Z),b=true,(Y.notifyKeys.size===0||Y.notifyKeys.has(Z))&&(B=true));else throw {error:`wrong effect in ${String(Y.path)}`}}b&&l.flushPathSet.add(N);let J=(re=[])=>{if(c.get(j)!==L)return;re&&re.length>0&&(O.push(...re),Te=Math.max(Te,oe.get(N)||0)),k.length=0,n.path=ne,n.calledBy=Y.calledBy,r.emit(7,n),s[N]|=16;let me=e.GetNextDependency(N);(B||Q)&&(de(N),e.GetAllNextDependency(N).forEach(Se=>{te[Se]=1;}));let Z=t.GetNodeByUid(N),Pe=oe.get(N)??0,ue=Be.has(Pe)||O.length>0;for(let X of me){let Se=oe.get(X)??0,xe=t.GetPathByUid(X);if(ue&&Se>=Pe){C[X]=Se,s[X]&4||(s[X]|=4,v[I++]=X,o++),n.path=xe,n.type=2,r.emit(14,n);continue}if(s[X]&16){n.path=xe,n.type=2,r.emit(12,n);continue}if(s[X]&32||(s[X]&1)!==0){n.path=xe,n.type=s[X]&32?3:3.1,r.emit(12,n);continue}if(B||Q)he(X,1);else if(s[X]&2)he(X,2);else {let pt=oe.get(X);C[X]=pt,s[X]&4||(s[X]|=4,v[I++]=X,o++,n.path=xe,n.type=1,r.emit(14,n));}}s[N]&32&&(s[N]&=-33,y--),Z.calledBy=0,(()=>{if(!ee){ee=true;let X=y,Se=R,xe=_;n.path=ne,n.type=1,f.active=X,f.pending=Se,f.blocked=xe,r.emit(5,n),Fe();}})();};if(Re(N)&&k.length>0){let re=Ne(Y,k);re instanceof Promise?re.then(J).catch(Ce):J(re);}else J([]);},Ce=x=>{n.path=ne,n.error=x,r.emit(9,n);let J=Symbol("abort");c.set(j,J),w=0,R=0,K=0,_=0,I=0,o=0,s.fill(0),y=0,S.fill(null),g=false,r.callOnError(x);},ge=(x,J)=>{x!==Y.state[J]&&(Y.state[J]=x,b=true,D(String(J)),n.path=ne,n.key=J,n.value=x,n.calledBy=Y.calledBy,r.emit(15,n),(Y.notifyKeys.size===0||Y.notifyKeys.has(J))&&(B=true)),t.GetBucket(Y.nodeBucket[J]).isForceNotify()&&(Q=true),(B||Q)&&de(N);};n.path=ne,n.calledBy=Y.calledBy,r.emit(6,n);try{let x=[];for(let J in Y.nodeBucket){let re=t.GetBucket(Y.nodeBucket[J]);if(x.push(...re.getSideEffect()),ye){r.emit(15,{path:ne,key:String(J),value:Y.state[J],calledBy:Y.calledBy}),re.isForceNotify()&&(Q=!0),(Y.notifyKeys.size===0||Y.notifyKeys.has(J))&&de(N);continue}let me=re.evaluate({affectKey:J,triggerUid:E,getProxyByUid:Z=>t.GetNodeByUid(Z).proxy,getStateByUid:Z=>t.GetNodeByUid(Z).state,GetToken:()=>L});if(me instanceof Promise){let Z=me.then(Pe=>{c.get(j)===L&&ge(Pe,J);});le.push(Z);}else ge(me,J);}if(le.length>0)return Promise.all(le).then(()=>{Ae(x);}).catch(Ce);Ae(x);return}catch(x){Ce(x);}},Fe=async()=>{if(c.get(j)!==L){ee=false;return}ee=true;let N=u.getIsFirstFrame(),E=0,b=()=>30,B=0,Q=b();try{for(;c.get(j)===L;){let Y=B>=Q,ne=u.shouldYield();if(Y||ne){if(B>0&&(E++,(N||E%2===0)&&l.requestUpdate()),await u.yieldToMain(),c.get(j)!==L)break;B=0,N=u.getIsFirstFrame();}if(R>0&&y<40){let $=w,k=0;for(let V=0;V<$;V++){let F=z[V];if((s[F]&1)===0)continue;if(y>=40||B>=Q||u.shouldYield()){for(let ge=V;ge<w;ge++){let x=z[ge];s[x]&1&&(z[k++]=x);}w=k,R=k;break}let D=t.GetNodeByUid(F),le=t.GetPathByUid(F),ye=oe.get(F)??0,he=e.GetPrevDependency(F),Ae=he.length>1;if((!a||Ae)&&ye>ie){s[F]&=-2,R--;let ge=he.filter(x=>te[x]===1&&(s[x]&16)===0).length;W[F]=ge||0,s[F]&2||(s[F]|=2,G[K++]=F,_++),n.path=le,n.type=ge>0?4:5,f.targetLevel=ye,f.currentLevel=ie,f.pendingParentsCount=ge,r.emit(12,n);continue}s[F]&=-2,R--,(s[F]&32)===0&&(s[F]|=32,y++),n.path=le,n.calledBy=D.calledBy,r.emit(8,n),$e(F,T),B++;}if(w>$){for(let V=$;V<w;V++){let F=z[V];s[F]&1&&(z[k++]=F);}w=k,R=w;}else w=k;if(R>0&&y<40)continue}if(B<Q&&a&&_>0&&y<40){let $=!1,k=0,V=0;for(let F=0;F<K;F++){let D=G[F];if((s[D]&2)===0)continue;if(W[D]<=0&&k<Q){let ye=oe.get(D)??0,he=e.GetPrevDependency(D);if(ye<=ie||he.length<=1){s[D]&=-3,_--,s[D]&1||(s[D]|=1,z[w++]=D,R++),k++,$=!0;let Ae=t.GetPathByUid(D);n.path=Ae,n.type=4,r.emit(13,n);continue}}G[V++]=D;}if(K=V,k>0)continue;if($){if(u.shouldYield()&&(await u.yieldToMain(),c.get(j)!==L))break;continue}}if(y===0&&R===0){if(H.inFlightCount>0)break;if(O.length>0){let k=!1,V=ie,F=Array.from(new Set(O));O.length=0;for(let D of F){let le=t.GetNodeByUid(D),ye=Ee(le);if(ye&&ye.length>0){k=!0,le.calledBy=1,S[D]=ye,s[D]&=-17,s[D]&2&&(s[D]&=-3,_--),s[D]&1||(s[D]|=1,z[w++]=D,R++);let he=oe.get(le.uid)??0;he<V&&(V=he),de(le.uid),l.flushPathSet.add(le.uid);}}if(k){if(V<ie&&(ie=V),l.requestUpdate(),u.shouldYield()&&(await u.yieldToMain(),c.get(j)!==L))break;continue}}let $=1/0;for(let k=0;k<I;k++){let V=v[k];if(s[V]&4){let F=C[V];F<$&&($=F);}}for(let k=0;k<K;k++){let V=G[k];if(s[V]&2){let F=oe.get(V)??0;F>ie&&F<$&&($=F);}}if($!==1/0&&$<=ve){ie=$;let k=0;for(let F=0;F<I;F++){let D=v[F];s[D]&4&&(C[D]===$?(s[D]&=-5,o--,s[D]&1||(s[D]|=1,z[w++]=D,R++)):v[k++]=D);}I=k;let V=0;for(let F=0;F<K;F++){let D=G[F];if(s[D]&2)if((oe.get(D)??0)===$){s[D]&=-3,_--,s[D]&1||(s[D]|=1,z[w++]=D,R++);let ye=t.GetPathByUid(D);n.path=ye,n.type=3,f.level=$,r.emit(13,n);}else G[V++]=D;}K=V;continue}else {for(let k=0;k<I;k++){let V=v[k];if(s[V]&4){s[V]|=16;let F=t.GetPathByUid(V);n.path=F,n.type=6,r.emit(12,n);}}I=0,o=0;for(let k=0;k<K;k++){let V=G[k];if(s[V]&2){s[V]|=16;let F=t.GetPathByUid(V);n.path=F,n.type=6,r.emit(12,n);}}K=0,_=0;break}}R>0&&y>=40&&(n.type=2,r.emit(4,n));break}}finally{ee=false;let Y=y+_+R,ne=H.inFlightCount||0;if(!(i===L)){n.token=L,r.emit(3,n);return}if(l.requestUpdate(),Y===0&&ne===0){if(c.get(j)===L&&!Ve){Ve=true,n.type=1,r.emit(2,n),H.resetCounters(),S.fill(null),g=false;let k=performance.now();Te=-1,c.delete(j),n.token=L,n.duration=(k-qe).toFixed(2.1)+"ms",r.emit(1,n),Promise.resolve().then(()=>{r.callOnSuccess();});}}else {let k=Y===0&&ne>0?3:1;if(n.type=k,f.nums=y,f.asyncNums=ne,r.emit(4,n),ne>0&&!q){q=true;let V=()=>{if(i!==L){q=false;return}if(H.inFlightCount===0){q=false,Me(),Ye(()=>{i===L&&H.inFlightCount===0&&Fe();});return}else H.inFlightCount,requestAnimationFrame(V);};requestAnimationFrame(V);}}}};Fe();};return {TaskRunner:A,CancelTask:d,stageValueFn:M}}function je(p){let{path:e,uid:t,type:r,meta:l,dirtySignal:u,state:c}=p,a=null,i=["path","uid","type","dependOn","nodeBucket"],f={path:e,uid:t,type:r,meta:l,dirtySignal:u,createView:(n={})=>{if(a&&Object.keys(n).length===0)return a;let g=new Proxy(n,{get(h,m){let M=m;return Reflect.has(h,m)?Reflect.get(h,m):M in p.state?p.state[M]:M in p?p[M]:l&&M in l?l[M]:Reflect.get(h,m)},set(h,m,M){return false},ownKeys(h){let m=new Set([...Reflect.ownKeys(h),...Object.keys(c||{}),...Object.keys(l||{}),...i]);return Array.from(m)},getOwnPropertyDescriptor(h,m){let M=m;return Reflect.has(h,m)||c&&M in c||l&&M in l||i.includes(M)?{enumerable:true,configurable:true}:Reflect.getOwnPropertyDescriptor(h,m)}});return a=g,g}};return "children"in p?{...f,children:p.children}:{...f,state:p.state,nodeBucket:p.nodeBucket,notifyKeys:p.notifyKeys,dependOn:p.dependOn,calledBy:0,get proxy(){return a}}}var ct=(p,e,t,r,l,u,c)=>{let a=p.useEntangleStep,i=[],d=[],f=new Set,n=r,m=t,M=0,A=0,T=0,P=100,se=()=>{let y={link:null,impactNode:null,impactUid:-1,hitTargetUids:null,isDirty:false,propose:null};return y.propose={set:(s,W,C=1)=>{y.epoch===T&&W!==y.impactNode.state[s]&&(y.link.count++,(!d[y.impactUid]||d[y.impactUid].length===0)&&(d[y.impactUid]=[],A++),d[y.impactUid].push({key:s,value:W,weight:C}),y.isDirty||(y.hitTargetUids.push(y.impactUid),y.isDirty=true));},update:(s,W,C="add")=>{y.epoch===T&&(y.link.count++,(!d[y.impactUid]||d[y.impactUid].length===0)&&(d[y.impactUid]=[],A++),d[y.impactUid].push({key:s,delta:W,op:C,weight:1}),y.isDirty||(y.hitTargetUids.push(y.impactUid),y.isDirty=true));},patch:(s,W)=>{y.epoch===T&&(y.link.count++,(!d[y.impactUid]||d[y.impactUid].length===0)&&(d[y.impactUid]=[],A++),d[y.impactUid].push({key:s,patch:W,weight:1}),y.isDirty||(y.hitTargetUids.push(y.impactUid),y.isDirty=true));}},y},L=Array.from({length:P},se),j=P-1,ee=(y,s,W)=>{let C=s.path,z=y.impact;if(y.count>=a){c.emit("entangle:blocked",{observer:C,target:z,count:y.count});return}let w=n(z),R=y.isProxy?s.proxy:s,G=y.isProxy?w.proxy:w;if(y.filter&&!y.filter(R,G))return;let K,_=true;j<0?(K=se(),_=false):K=L[j--];let v=T;K.epoch=v,K.isDirty=false,K.link=y,K.impactNode=w,K.impactUid=w.uid,K.hitTargetUids=W;let I=y.emit(R,G,K.propose);if(I instanceof Promise||I&&typeof I.then=="function")return M++,(async()=>{try{await I;}catch(o){c.emit("node:error",{path:C,error:o}),c.onError({path:C,error:o});}finally{v===T&&M--,_&&(L[++j]=K);}})();_&&(L[++j]=K);};return {useEntangle:y=>{let{cause:s,impact:W,via:C,emit:z,filter:w,isProxy:R}=y;if(!C||C.length===0){c.emit("entangle:warn",{path:s,type:"no_keys"});return}let K=n(s).uid;i[K]||(i[K]=new Map);let _=i[K];for(let v=0;v<C.length;v++){let I=C[v];_.has(I)||_.set(I,[]),_.get(I).push({impact:W,emit:z,filter:w,count:0,isProxy:!!R});}},updateEntangleLevel:()=>{let y=m();f.clear();for(let s=0;s<i.length;s++)if(i[s]!==void 0){let W=y.get(s)||0;f.add(W);}},Turnstile:{volatileLevels:f,get inFlightCount(){return M},get hasPendingGhosts(){return A>0},nextEpoch:()=>{T++,M=0,A=0,d.length=0;},hasObserver:y=>i[y]!==void 0,getTriggerKeys:y=>{let s=i[y];return s?Array.from(s.keys()):[]},receiveGhosts:(y,s=[])=>{let W=y.uid,C=[],z=i[W];if(!z||s.length===0)return C;let w=[];for(let v=0;v<s.length;v++){let I=z.get(s[v]);if(I)for(let o=0;o<I.length;o++)w.push(I[o]);}let R=0,G=false,K=null;for(;R<w.length;R++){if(e.shouldYield()){G=true;break}let v=ee(w[R],y,C);if(v){K=v,G=true,R++;break}}let _=()=>{if(C.length<=1)return C;let v=[],I=Object.create(null);for(let o=0;o<C.length;o++){let S=C[o];I[S]||(I[S]=true,v.push(S));}return v};return G?(async()=>{for(K&&await K,e.shouldYield()&&await e.yieldToMain();R<w.length;){let v=[],I=Math.min(R+P,w.length);for(;R<I;R++){let o=ee(w[R],y,C);o&&v.push(o);}v.length>0&&await Promise.all(v.map(async o=>{await o,e.shouldYield()&&await e.yieldToMain();})),e.shouldYield()&&await e.yieldToMain();}return _()})():_()},resolveGhosts:y=>{let s=y.uid,W=d[s];if(!W||W.length===0)return [];let C=[],z=Object.create(null);for(let w=0;w<W.length;w++){let R=W[w];z[R.key]||(z[R.key]=[]),z[R.key].push(R);}for(let w in z){let R=z[w],G=y.state[w],K,_=-1/0,v=false;for(let I=0;I<R.length;I++){let o=R[I];if(o.patch!==void 0&&(G=o.patch(G)),o.value!==void 0){let S=o.weight??1;S>=_&&(_=S,K=o.value,v=true);}}v&&(G=K);for(let I=0;I<R.length;I++){let o=R[I];if(o.delta!==void 0)switch(o.op||"add"){case "add":G=(typeof G=="number"?G:0)+o.delta;break;case "remove":G=Array.isArray(G)?G.filter(O=>O!==o.delta):G;break;case "intersect":G=Array.isArray(G)?G.filter(O=>o.delta.includes(O)):o.delta;break;case "union":{let O=Array.isArray(G)?G:[],H=Array.isArray(o.delta)?o.delta:[o.delta];G=[...new Set([...O,...H])];break}case "merge":{let O=typeof G=="object"&&G!==null&&!Array.isArray(G)?G:{},H=typeof o.delta=="object"&&o.delta!==null&&!Array.isArray(o.delta)?o.delta:{};G={...O,...H};break}}}Object.is(y.state[w],G)||(y.state[w]=G,C.push(w));}return d[s]=[],A--,C.length>0?C:[]},resetCounters:()=>{for(let y=0;y<i.length;y++){let s=i[y];if(s)for(let W of s.values())for(let C=0;C<W.length;C++)W[C].count=0;}}}}};function yt(p,e,t,r,l){let u=lt(),c=0,a=new Map,i=[],d=[],f=[],n=[],g=false,h=new Set,M=async()=>{let o=Array.from(h);if(h.clear(),"signalTrigger"in l&&typeof l.signalTrigger=="function")for(let S of o){let O=s(S);l.signalTrigger(O.dirtySignal);}else "emit"in l&&l.emit(o);},A=()=>{g||(g=true,requestAnimationFrame(()=>{try{for(;h.size>0;)M();}finally{g=false;}}));},{useEntangle:T,updateEntangleLevel:P,Turnstile:se}=ct({useEntangleStep:p.useEntangleStep},u,e.GetUidToLevelMap,y,s,W,{emit:r.emit,onError:r.callOnError}),{TaskRunner:L,CancelTask:j,stageValueFn:ee}=ut({useGreedy:p.useGreedy},e,{GetNodeByPath:y,GetNodeByUid:s,GetPathByUid:W,GetBucket:w,GetMaxUid:R,Turnstile:se},r,{requestUpdate:A,flushPathSet:h},u),q=o=>{throw new Error(`[MeshFlow] Duplicate Path: ${o}`)},U=o=>{a.has(o.path)&&q(String(o.path));let S=++c,O={path:o.path,getNode:fe=>y(fe)},H=(fe,ce="value")=>{let Me=fe({...O}),pe=y(o.path);if(!Object.is(pe.state[ce],Me)){if(t.createHistoryAction&&t.pushIntoHistory){let Re=t.createHistoryAction([{path:o.path,value:pe.state[ce]},{path:o.path,value:Me}],Ne=>{let Ee=y(Ne.path);Ee.state[ce]=Ne.value,G(Ne.path);});t.pushIntoHistory(Re);}pe.state[ce]=Me,G(o.path);}},ae=je({uid:S,type:o.type,path:o.path,state:o.state,meta:o.meta,nodeBucket:{},dirtySignal:"signalCreator"in l?l.signalCreator():void 0,notifyKeys:o.notifyKeys,dependOn:H});return a.set(ae.path,S),f[S]=ae.path,i[S]=ae,ae},te=o=>{a.has(o.path)&&q(String(o.path));let S=++c,O=je({uid:S,type:o.type,path:o.path,state:{},meta:o,nodeBucket:{},children:o.children});return a.set(O.path,S),d[S]=O,O};function y(o){let S=a.get(o),O=i[S];if(!O)throw Error("Wrong id");return O}function s(o){let S=i[o];if(!S)throw Error("Wrong id");return S}function W(o){return f[o]}function C(o){let S=a.get(o);return d[S]}function z(o){return n.push(o)-1}function w(o){let S=n[o];if(!S)throw Error("Wrong id");return S}function R(){return c}let G=o=>{let S=y(o);if(!S)throw Error("Wrong id");h.add(S.uid),A();let O=e.GetNextDependency(S.uid);K(S.uid,O);};function K(o,S){L(o,S);}return {registerNode:U,registerGroupNode:te,GetNodeByPath:y,GetGroupByPath:C,notify:G,notifyAll:async()=>{Promise.resolve().then(async()=>{let o=e.GetDependencyOrder();if(!o||o.length===0)return;let S=o[0];try{L(null,S);}catch(O){throw r.callOnError(O),O}finally{A();}});},batchNotify:o=>{if(!o||o.length===0)return;if(t.createHistoryAction&&t.pushIntoHistory){let O=t.createHistoryAction([o.map(H=>({path:H.path,key:H.key,value:y(H.path).state[H.key]})),o.map(H=>({path:H.path,key:H.key,value:H.value}))],H=>{let ae=new Set;H.forEach(fe=>{let ce=y(fe.path);ce.state[fe.key]=fe.value,h.add(ce.uid),ae.add(ce.uid);}),A(),ae.size>0&&L(null,Array.from(ae));});t.pushIntoHistory(O);}let S=new Set;o.forEach(O=>{let H=y(O.path);H.state[O.key]=O.value,h.add(H.uid),S.add(H.uid);}),A(),S.size>0&&L(null,Array.from(S));},useEntangle:T,updateEntangleLevel:P,SetBucket:z,GetBucket:w,CancelTask:j,stageValueFn:ee,refresTarget:o=>{h.add(o);},UITrigger:l,UidToNodeMap:i}}function dt(p,e){let t=false,r=false,l=false,u=false,c=new Map,a=[],i=[],d=[],f=[],n=[],g=[],h=[],m=new Map,{GetNextDependency:A,GetPrevDependency:T,GetAllPrevDependency:P,GetAllNextDependency:se,rebuildDirectDependencyMaps:L}=nt(()=>a,()=>d,()=>g,()=>n),j={},ee={};if(e.modules.useHistory){let E=e.modules.useHistory,b;E.isMeshModuleInited?b=E:b=E();let{Undo:B,Redo:Q,PushIntoHistory:Y,CreateHistoryAction:ne,updateUndoSize:$,updateRedoSize:k}=b();j.pushIntoHistory=Y,j.createHistoryAction=ne,ee={Undo:B,Redo:Q,updateUndoSize:$,updateRedoSize:k};}let q=!!e.modules.useMeshRenderGate,U={};if(q){let E=e.modules.useMeshRenderGate.isMeshModuleInited,b=e.modules.useMeshRenderGate;U=(E?b:b())(()=>ae);}let{onError:te,callOnError:y}=st(),{onSuccess:s,callOnSuccess:W}=at(),{onStart:C,callOnStart:z}=it(),{emit:w,usePlugin:R,destroyPlugin:G}=ot(),{SetTrace:K,useTrace:_}=et(),v=_();R(v);let I=q?{...U}:{...e.UITrigger},o=yt({useGreedy:e.config.useGreedy,useEntangleStep:e.config.useEntangleStep||100},{GetDependencyOrder:()=>h,GetAllNextDependency:se,GetNextDependency:A,GetPrevDependency:T,GetAllPrevDependency:P,GetUidToLevelMap:()=>m},j,{callOnError:y,callOnSuccess:W,callOnStart:z,emit:w},I),{SetBucket:S,GetBucket:O,GetGroupByPath:H,GetNodeByPath:ae,notifyAll:fe,useEntangle:ce,updateEntangleLevel:Me,CancelTask:pe,stageValueFn:Re,refresTarget:Ne}=o;q&&U.init();let Ee={};if(e.modules.useInternalForm){let{uiSchema:E,GetFormData:b}=e.modules.useInternalForm(o,p);Ee={uiSchema:E,GetFormData:b};}let Ie={};if(e.modules.useSchemaValidators){let{SetValidators:E}=e.modules.useSchemaValidators(ae);Ie={SetValidators:E};}let{SetRule:Be,SetRules:Te}=Ze(ae,S,O,a,d,i,f,c),{SetStrategy:oe}=Je(ae,O),ie=rt(a,c),ve=()=>{let E=ie();h=E.steps,m=E.levelMap,de();},de=()=>{l&&(Me(),l=false);},ke=()=>{u||(u=true,Promise.resolve().then(de).finally(()=>{u=false;}));},we=()=>{r||(r=true,Promise.resolve().then(()=>{if(ve(),t){let{directNextMap:E,directPrevMap:b}=L(h.flat());n=E,g=b;}}).finally(()=>{r=false,t=false;}));};return {SetRule:(E,b,B,Q)=>{Be(E,b,B,Q),t=true,we();},SetRules:(E,b,B,Q)=>{Te(E,b,B,Q),t=true,we();},SetStrategy:oe,useEntangle:E=>{ce(E),l=true,ke();},SetTrace:K,usePlugin:R,SetValue:(E,b,B)=>{de(),ae(E).dependOn(()=>B,b);},GetValue:(E,b="value")=>ae(E).proxy[b],SetValues:E=>{de(),o.batchNotify(E);},GetGroupByPath:H,notifyAll:async()=>{ve(),await fe();},GetAllDependency:()=>a,GetDependencyOrder:()=>h,historyExports:ee,formExports:Ee,validatorExports:Ie,batchRenderExport:U,hasRenderGate:()=>q,onError:te,onSuccess:s,onStart:C,scheduler:o,destroyPlugin:G,CancelTask:pe,StageValue:(E,b,B)=>{let Q=ae(E);Re(Q.uid,b,B);},SilentSet:(E,b,B)=>{let Q=ae(E);return !Q||Object.is(Q.state[b],B)?false:(Q.state[b]=B,Ne(Q.uid),true)}}}var Oe=new Map,ht=(p,e,t)=>{try{if(Oe.has(p))throw Error("engineID repeated");let r=dt(e,{config:t.config||{useGreedy:!1},UITrigger:t.UITrigger,modules:t.modules??{},plugins:{}}),{SetRule:l,SetRules:u,SetValues:c,SetStrategy:a,SetValue:i,GetValue:d,usePlugin:f,useEntangle:n,GetGroupByPath:g,notifyAll:h,SetTrace:m,GetAllDependency:M,GetDependencyOrder:A,historyExports:T,formExports:P,validatorExports:se,batchRenderExport:L,hasRenderGate:j,onError:ee,onSuccess:q,onStart:U,scheduler:te,destroyPlugin:y,CancelTask:s,StageValue:W,SilentSet:C}=r,z={config:{SetRule:l,SetRules:u,SetStrategy:a,notifyAll:h,SetTrace:m,usePlugin:f,hasRenderGate:j,useEntangle:n},data:{SetValue:i,GetValue:d,SetValues:c,GetGroupByPath:g,StageValue:W,SilentSet:C},dependency:{GetAllDependency:M,GetDependencyOrder:A},hooks:{onError:ee,onSuccess:q,onStart:U}},w=(K,_,v)=>{!_||typeof _!="object"||Object.keys(_).forEach(I=>{let o=_[I];if(typeof o=="object"&&o!==null)K[I]=K[I]||{},w(K[I],o,v);else if(typeof o=="function"){let S=I;if(S==="useMeshRenderGate")S="render";else if(S.startsWith("use")){let O=S.slice(3);S=O.charAt(0).toLowerCase()+O.slice(1);}I==="useHistory"&&v.exports.history&&Object.keys(v.exports.history).length>0?K[S]=v.exports.history:I==="useInternalForm"&&v.exports.form&&Object.keys(v.exports.form).length>0?K[S]=v.exports.form:I==="useSchemaValidators"&&v.exports.validator&&Object.keys(v.exports.validator).length>0?K[S]=v.exports.validator:I==="useMeshRenderGate"&&v.exports.render?K[S]=v.exports.render:K[S]=o(v.scheduler,v.Schema);}});},R={...z,destroyPlugin:y,CancelTask:s,modules:{}},G=t.modules;return G&&w(R.modules,G,{scheduler:te,Schema:e,exports:{history:T,form:P,validator:se,render:L}}),Oe.set(p,R),R}catch(r){throw Error(r)}},En=()=>(p,e,t)=>ht(p,e,t),vn=p=>{let e=Oe.get(p);if(!e)throw Error("Engine not found.");return e},An=p=>{let e=Oe.get(p);e.destroyPlugin(),e.CancelTask(),Oe.delete(p);};exports.DefaultStrategy=_e;exports.MeshFlowEventsName=De;exports.TriggerCause=Le;exports.deleteEngine=An;exports.useEngine=vn;exports.useMeshFlow=ht;exports.useMeshFlowDefiner=En;exports.useScheduler=yt;
package/index.mjs CHANGED
@@ -1 +1 @@
1
- var Ce=(M=>(M[M.FlowStart=0]="FlowStart",M[M.FlowSuccess=1]="FlowSuccess",M[M.FlowEnd=2]="FlowEnd",M[M.FlowAbort=3]="FlowAbort",M[M.FlowWait=4]="FlowWait",M[M.FlowFire=5]="FlowFire",M[M.NodeStart=6]="NodeStart",M[M.NodeSuccess=7]="NodeSuccess",M[M.NodeProcessing=8]="NodeProcessing",M[M.NodeError=9]="NodeError",M[M.NodePending=10]="NodePending",M[M.NodeRevive=11]="NodeRevive",M[M.NodeIntercept=12]="NodeIntercept",M[M.NodeRelease=13]="NodeRelease",M[M.NodeStagnate=14]="NodeStagnate",M[M.NodeBucketSuccess=15]="NodeBucketSuccess",M[M.EntangleWarn=16]="EntangleWarn",M[M.EntangleBlocked=17]="EntangleBlocked",M))(Ce||{}),Le=(r=>(r[r.CAUSALITY=0]="CAUSALITY",r[r.INVERSION=1]="INVERSION",r[r.REPERCUSSION=2]="REPERCUSSION",r))(Le||{});var _e=(r=>(r.OR="OR",r.PRIORITY="PRIORITY",r.MERGE="MERGE",r))(_e||{});var He=class{computedRules=[];getRuleResult(e,t,r){if(e.entityId==="__base__")return e.logic(t);if(!(!e._hasRun||r(e.triggerUids)))return e._lastResult;let l=e.logic(t);return l instanceof Promise?l.then(u=>(e._lastResult=u,e._hasRun=true,u)):(e._lastResult=l,e._hasRun=true,l)}store={OR:(e,t,r)=>{let i,l,u=this.computedRules;for(let a=0;a<u.length;a++){let o=u[a],p=this.getRuleResult(o,e,r);if(p instanceof Promise)return (async()=>{let n=await p;if(o.entityId==="__base__"?l=n:n&&(i=n),typeof i>"u")for(let P=a+1;P<u.length;P++){let m=u[P],S=this.getRuleResult(m,e,r),N=S instanceof Promise?await S:S;if(m.entityId==="__base__"){l=N;continue}if(N){i=m.value;break}}return typeof i>"u"&&(i=l),{res:i,version:t}})();let h=p;if(o.entityId==="__base__"){l=h;continue}if(h){i=o.value;break}}return typeof i>"u"&&(i=l),{res:i,version:t}},PRIORITY:(e,t,r)=>{let i,l=this.computedRules;for(let u=0;u<l.length;u++){let a=l[u],o=this.getRuleResult(a,e,r);if(o instanceof Promise)return (async()=>{let p=await o;if(p!==void 0)return {res:a.value!==void 0?a.value:p,version:t};for(let h=u+1;h<l.length;h++){let n=l[h],P=this.getRuleResult(n,e,r),m=P instanceof Promise?await P:P;if(m!==void 0)return {res:m,version:t}}return {res:void 0,version:t}})();if(o!==void 0)return {res:a.value!==void 0?a.value:o,version:t}}return {res:i,version:t}},MERGE:(e,t,r)=>{let i,l,u=this.computedRules,a=(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<u.length;p++){let h=u[p],n=this.getRuleResult(h,e,r);if(n instanceof Promise)return (async()=>{let m=await n,S=(x,b)=>{if(x.entityId==="__base__")l=a(l,b);else if(b){let M=x.value!==void 0?x.value:b;i=a(i,M);}};S(h,m);for(let x=p+1;x<u.length;x++){let b=u[x],M=this.getRuleResult(b,e,r),se=M instanceof Promise?await M:M;S(b,se);}return {res:a(i,l),version:t}})();let P=n;if(h.entityId==="__base__"){l=a(l,P);continue}if(P){let m=h.value!==void 0?h.value:P;i=a(i,m);}}return {res:a(i,l),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)}},we=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 i=()=>this.rules;this.strategy=new He(i),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,i={...e,entityId:r};for(let l of e.triggerUids)this.rules.has(l)||this.rules.set(l,new Set),this.rules.get(l).add(i);return this.strategy.updateComputedRules(),()=>{for(let l of e.triggerUids){let u=this.rules.get(l);u&&(u.delete(i),u.size===0&&(this.rules.delete(l),this.deps.delete(l)));}this.strategy.updateComputedRules();}}updateDeps(e){for(let[t,r,i]of e){if(r.length==0)continue;let l=this.deps.get(t)||Object.create(null);for(let u of r)l[u]=i[u];this.deps.set(t,l);}}setRule(e,t){if(t&&this.updateDeps(t),typeof e.entityId=="string"){this.setDefaultRule(e);return}let r=++this.id,i={...e,entityId:r};if(e)for(let l of e.triggerUids)this.rules.has(l)||this.rules.set(l,new Set),this.rules.get(l).add(i);return this.strategy.updateComputedRules(),()=>{for(let l of e.triggerUids){let u=this.rules.get(l);u&&(u.delete(i),u.size===0&&(this.rules.delete(l),this.deps.delete(l)));}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[a,o]of this.deps.entries()){let p=e.getStateByUid(a);if(!p){r=false;break}for(let h in o){let n=o[h],P=p[h];if(typeof n=="object"&&n!==null){r=false;break}if(n!==P){r=false;break}}if(!r)break}}if(r&&this.useCache)return this.cache;this.promiseToken=t;let i=++this.version,l=a=>{if(!a||a.length===0)return true;for(let o of a){let p=this.deps.get(o);if(!p)return true;let h=e.getProxyByUid(o);if(!h)return true;for(let n in p){let P=p[n],m=h[n];if(typeof P=="object"&&P!==null||P!==m)return true}}return false},u=this.strategy.evaluate(e,i,l);if(!(u instanceof Promise)){let{res:a,version:o}=u;return this.finalizeSync(a,o,e,t)}return this.pendingPromise=(async()=>{try{let{res:a,version:o}=await u;return this.finalizeSync(a,o,e,t)}catch(a){throw {path:this.path,error:a}}finally{this.promiseToken===t&&(this.pendingPromise=null,this.promiseToken=null);}})(),this.pendingPromise}finalizeSync(e,t,r,i){return i!==this.promiseToken||t<this.version?this.cache:(this.cache=e,this.deps.forEach((l,u)=>{let a=r.getProxyByUid(u);if(!a)return;let o=Object.keys(l);for(let p of o)l[p]=a[p];}),e)}inferType(e){return Array.isArray(e)?"array":typeof e}};var Xe=(g,e,t)=>{let i=l=>{let u=t.triggerUids.map(p=>{let h=l.getProxyByUid(p);if(t.triggerKeys.length===0)return h;let n={};return t.triggerKeys.forEach(P=>{n[P]=h[P];}),n}),a=Object.create(null);return Object.defineProperty(a,"triggerTargets",{get:()=>u}),Object.defineProperty(a,"affectedTatget",{get:()=>l.getProxyByUid(g)[e]}),t.logic({slot:a})};return {value:t.value,targetUid:g,triggerUids:t.triggerUids,priority:t.priority??10,logic:i}},Ze=(g,e,t,r,i,l,u,a)=>{if(!g)throw Error();let o=g,p=(P,m)=>{typeof r[P]>"u"&&(r[P]=[],l[P]=new Set),l[P].add(m),l[P].size>r[P].length&&r[P].push(m),typeof i[m]>"u"&&(i[m]=[],u[m]=new Set),u[m].add(P),u[m].size>i[m].length&&i[m].push(P);};return {SetRule:(P,m,S,N)=>{let x=o(P),b=o(m),M=N.triggerKeys||[],se=a.get(b.uid)||0,U=a.get(x.uid)||0;se+=1,U+=1,a.set(b.uid,se),a.set(x.uid,U);let _=Xe(b.uid,S,{...N,triggerUids:[x.uid],triggerKeys:M}),ee=[P].map(C=>{let te=o(C);return [te.uid,M,te.proxy]});if(p(x.uid,b.uid),typeof b.nodeBucket[S]=="number"){let C=t(b.nodeBucket[S]);C.setRule(_,ee),N.effect&&C.setSideEffect({fn:N.effect,args:N.effectArgs?N.effectArgs:[S]});}else {let C=b.meta[S],te=new we(C,S,m);te.setRule(_,ee),N.effect&&te.setSideEffect({fn:N.effect,args:N.effectArgs?N.effectArgs:[S]}),b.nodeBucket[S]=e(te);}b.state[S]=b.meta[S];let z=t(b.nodeBucket[S]);N.forceNotify&&z.forceNotify(),N.cacheStrategy=="none"&&z.setUseCache(false);},SetRules:(P,m,S,N)=>{let x=o(m),b=a.get(x.uid)||0;b+=1,a.set(x.uid,b);let M=[];for(let z of P){let C=o(z);M.push(C.uid);let te=a.get(C.uid)||0;te+=1,a.set(C.uid,te),p(C.uid,x.uid);}let se=N.triggerKeys||[],U=Xe(x.uid,S,{...N,triggerUids:M,triggerKeys:se}),_=P.map(z=>{let C=o(z);return [C.uid,se,C.state]});if(typeof x.nodeBucket[S]=="number"){let z=t(x.nodeBucket[S]);z.setRules(U,_),N.effect&&z.setSideEffect({fn:N.effect,args:N.effectArgs?N.effectArgs:[S]});}else {let z=x.meta[S],C=new we(z,S,m);C.setRules(U,_),N.effect&&C.setSideEffect({fn:N.effect,args:N.effectArgs?N.effectArgs:[S]}),x.nodeBucket[S]=e(C);}x.state[S]=x.meta[S];let ee=t(x.nodeBucket[S]);N.forceNotify&&ee.forceNotify(),N.cacheStrategy=="none"&&ee.setUseCache(false);}}};var Je=(g,e)=>{let t=g||void 0;if(!t)throw Error();return {SetStrategy:(i,l,u)=>{let a=t(i);e(a.nodeBucket[l]).setStrategy(u);}}};function et(){let g=new Map,e=new Map,t=new Set,r=(u,a)=>{g.set(u,a);let o=e.get(u);o&&o(a);};return {SetTrace:(u,a)=>{e.set(u,a);let o=g.get(u)||"idle";return a(o),{cancel:()=>{e.delete(u);}}},useTrace:()=>({apply:a=>{a.on(0,()=>{t.forEach(o=>r(o,"idle")),t.clear(),g.clear();}),a.on(13,({path:o,type:p})=>{(p==1||p==2)&&(t.add(o),r(o,"pending"));}),a.on(10,({path:o})=>{t.add(o),(!g.has(o)||g.get(o)==="idle")&&r(o,"pending");}),a.on(6,({path:o})=>{t.add(o),r(o,"calculating");}),a.on(7,({path:o})=>{r(o,"calculated");}),a.on(12,({path:o,type:p})=>{p==3&&r(o,"calculating"),p==6&&r(o,"idle");}),a.on(14,({path:o})=>{r(o,"pending");}),a.on(9,({path:o})=>r(o,"error"));}})}}function nt(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=[],P=[],m=g();for(let S of h){let N=m[S]||[];n[S]=N;for(let x=0;x<N.length;x++){let b=N[x];typeof P[b]>"u"&&(P[b]=[]),P[b].push(S);}}return {directNextMap:n,directPrevMap:P}}}}function rt(g,e){let t=i=>{let l=[],u=[],a=new Map,o=i.size,p=0,h=0;for(let[n,P]of i)P===0&&u.push(n);if(u.length===0&&o>0)throw Error("Circular dependency detected");for(;u.length>0;){l.push([...u]);let n=[];for(let P of u){p++,a.set(P,h);let m=g[P];if(m)for(let S of m){let N=i.get(S)-1;i.set(S,N),N===0&&n.push(S);}}u=n,h++;}if(p<o)throw Error("Circular dependency detected");return {steps:l,levelMap:a}};return ()=>{let i=new Map;for(let l of e.keys()){let u=g[l]||[];i.has(l)||i.set(l,0);for(let a of u){let o=i.get(a)||0;i.set(a,++o);}}return t(i)}}var Ge=()=>{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 st(){let{on:g,call:e}=Ge();return {onError:g,callOnError:e}}function at(){let{on:g,call:e}=Ge();return {onSuccess:g,callOnSuccess:e}}var ot=()=>{let g=new Set,e=new Map,t=new Set,r=(a,o)=>{e.get(a)?.forEach(p=>p(o));},i=(a,o)=>(e.has(a)||e.set(a,new Set),e.get(a).add(o),()=>e.get(a)?.delete(o));return {usePlugin:a=>{let o=new Set,p=(n,P)=>{let m=i(n,P);return o.add(m),m};a.apply({on:p}),g.add(a);let h=()=>{o.forEach(n=>n()),o.clear(),g.delete(a),t.delete(h);};return t.add(h),h},emit:r,destroyPlugin:()=>{t.forEach(a=>a()),t.clear(),e.clear(),g.clear();}}};function it(){let{on:g,call:e}=Ge();return {onStart:g,callOnStart:e}}var lt=(g={frameQuota:12})=>{let e=performance.now(),t=0,r=false,i=()=>!!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||i())},async yieldToMain(){return new Promise(l=>{Ye(()=>{e=performance.now(),t=0,r&&(r=false),l();});})}}},Ye=g=>{let{port1:e,port2:t}=new MessageChannel;e.onmessage=g,t.postMessage(null);};function ut(g,e,t,r,i,l){let u=new Map,a=g.useGreedy,o=null,p=()=>{u.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},P=false,m=[],S=null,N=(b,M,se)=>{m.push({uid:b,key:M,value:se}),!P&&(S||(S=Promise.resolve().then(()=>{S=null,P||x(null,[]);})));},x=async(b,M)=>{let U=Symbol("token"),_=typeof b=="number"?b:"__NOTIFY_ALL__";u.set(_,U),o=U,P=true;let ee=false,z=false;l.reset(),t.Turnstile.nextEpoch();let C=t.GetMaxUid()+3,te=new Array(C).fill(0),d=0,s=new Uint8Array(C),H=new Int32Array(C),k=new Int32Array(C),Y=new Int32Array(C*2),A=0,E=0,T=new Int32Array(C*2),O=0,v=0,G=new Int32Array(C*2),c=0,y=0;M.forEach(f=>{te[f]=1,e.GetAllNextDependency(f).forEach(W=>{te[W]=1;});});let w=new Array(C).fill(null),V=[],q=t.Turnstile,ae=new Array(C).fill(null).map(()=>[]),de=new Array(C).fill(null).map(()=>[]),me=[],Ne=()=>{if(m.length===0)return false;let f=false,W=1/0;for(;m.length>0;){let{uid:D,key:Q,value:le}=m.shift(),L=t.GetNodeByUid(D);if(me.includes(D)||me.push(D),!Object.is(L.state[Q],le)){f=true,L.state[Q]=le,i.flushPathSet.add(D),L.calledBy=1;let ne=w[D]||[];ne.includes(Q)||ne.push(Q),w[D]=ne,s[D]&=-17,s[D]&2&&(s[D]&=-3,v--),s[D]&1||(s[D]|=1,Y[A++]=D,E++);let X=e.GetUidToLevelMap().get(D)??0;X<W&&(W=X),Se(D);}}return f&&(ie===void 0||ie>W)&&(ie=W),f},Te=q.volatileLevels.size>0,Pe=Te?q.hasObserver:f=>false,xe=Te?q.receiveGhosts:()=>[],Oe=Te?q.resolveGhosts:()=>[],ke=Te?q.getTriggerKeys:()=>[],De=q?.volatileLevels||new Set,be=-1,oe=e.GetUidToLevelMap(),ie=0,Re=0,Se=f=>{e.GetAllNextDependency(f).forEach(D=>{let Q=oe.get(D)||0;Q>Re&&(Re=Q);});};Ne();let Ie=new Set;typeof b=="number"&&(s[b]|=16,Ie.add(b),Se(b),i.flushPathSet.add(b));let Be=typeof b=="number"?[b]:[...M,...me];l.shouldYield()&&(i.requestUpdate(),await l.yieldToMain());let We=Be.map(async f=>{if(Pe(f)){let W=t.GetNodeByUid(f),D=ke(f);if(D.length>0){let Q=xe(W,D);return Q instanceof Promise&&(Q=await Q),{seed:f,hitTargets:Q}}}return {seed:f,hitTargets:[]}});if((await Promise.all(We)).forEach(({seed:f,hitTargets:W})=>{if(W&&W.length>0){V.push(...W);let D=oe.get(f)||0;be=Math.max(be,D);}}),(V.length>0||Be.length>1)&&(i.requestUpdate(),await l.yieldToMain(),u.get(_)!==U))return;let ze=V.length>0;M.forEach(f=>{if(!Ie.has(f))if(ze){let W=oe.get(f)??0;k[f]=W,s[f]&4||(s[f]|=4,G[c++]=f,y++);let D=t.GetPathByUid(f);n.path=D,n.type=2,r.emit(14,n);}else s[f]&1||(s[f]|=1,Y[A++]=f,E++),Se(f);}),typeof b=="number"?ie=oe.get(b)??0:ie=Math.min(...M.map(f=>oe.get(f)??0));let qe=performance.now(),Ue=typeof _=="number"?t.GetPathByUid(_):"__NOTIFY_ALL__";n.path=Ue,n.token=U,r.emit(0,n),r.callOnStart({path:Ue});let Ve=false,Qe=30,$e=(f,W)=>{let D=false,Q=false,le=false,L=t.GetNodeByUid(f),ne=t.GetPathByUid(f),X=L.calledBy,K=ae[f];K.length=0;let B=Pe(f),I=B?ke(f):[],F=R=>{B&&(I.length===0||I.includes(R))&&K.push(R);},ue=de[f];ue.length=0;let ye=false;if(L.calledBy===1){ye=true,D=true,i.flushPathSet.add(f);let R=w[f];R&&(K.push(...R),w[f]=null);}let fe=(R,J)=>{let re=oe.get(R)??0,he=t.GetNodeByUid(R),Z=t.GetPathByUid(R),ge=(X===1||X===2)&&re<=be;ge&&s[R]&16&&(s[R]&=-17,n.path=Z,n.triggerPath=ne,r.emit(11,n));let ce=0;if(!(s[R]&49)){if(s[R]&2)ce=H[R]-1;else {if(re>ie&&v>Qe){k[R]=re,s[R]&4||(s[R]|=4,G[c++]=R,y++),n.path=Z,n.type=7,r.emit(12,n);return}let Ee=e.GetPrevDependency(R),$=0;for(let Me of Ee){if(s[Me]&16)continue;(oe.get(Me)??0)>ie&&$++;}ce=$;}if(ce<=0){let Ee=(s[R]&1)!==0,$=(s[R]&32)!==0;if(Ee||$){n.path=Z,n.type=$?3:3.1,r.emit(12,n);return}s[R]&2&&(s[R]&=-3,v--),ge?he.calledBy=2:he.calledBy=0,s[R]&1||(s[R]|=1,Y[A++]=R,E++),n.path=Z,n.type=J,h.path=ne,r.emit(13,n);}else H[R]=ce,s[R]&2||(s[R]|=2,T[O++]=R,v++);}},ve=(R=[])=>{if(u.get(_)!==U)return;if(R.length){let re={},he=L.proxy;for(let Z of R){let ge=(Z.args||[]).reduce((ce,Ee)=>(ce[Ee]=he[Ee],ce),{});try{let ce=Z.fn(ge);ce&&typeof ce=="object"&&Object.assign(re,ce);}catch(ce){}}for(let Z in re)if(Z in L.state)Object.is(L.state[Z],re[Z])||(L.state[Z]=re[Z],F(Z),D=true,(L.notifyKeys.size===0||L.notifyKeys.has(Z))&&(Q=true));else throw {error:`wrong effect in ${String(L.path)}`}}D&&i.flushPathSet.add(f);let J=(re=[])=>{if(u.get(_)!==U)return;re&&re.length>0&&(V.push(...re),be=Math.max(be,oe.get(f)||0)),K.length=0,n.path=ne,n.calledBy=L.calledBy,r.emit(7,n),s[f]|=16;let he=e.GetNextDependency(f);(Q||le)&&(Se(f),e.GetAllNextDependency(f).forEach(Me=>{te[Me]=1;}));let Z=t.GetNodeByUid(f),ge=oe.get(f)??0,ce=De.has(ge)||V.length>0;for(let $ of he){let Me=oe.get($)??0,Ae=t.GetPathByUid($);if(ce&&Me>=ge){k[$]=Me,s[$]&4||(s[$]|=4,G[c++]=$,y++),n.path=Ae,n.type=2,r.emit(14,n);continue}if(s[$]&16){n.path=Ae,n.type=2,r.emit(12,n);continue}if(s[$]&32||(s[$]&1)!==0){n.path=Ae,n.type=s[$]&32?3:3.1,r.emit(12,n);continue}if(Q||le)fe($,1);else if(s[$]&2)fe($,2);else {let pt=oe.get($);k[$]=pt,s[$]&4||(s[$]|=4,G[c++]=$,y++,n.path=Ae,n.type=1,r.emit(14,n));}}s[f]&32&&(s[f]&=-33,d--),Z.calledBy=0,(()=>{if(!ee){ee=true;let $=d,Me=E,Ae=v;n.path=ne,n.type=1,h.active=$,h.pending=Me,h.blocked=Ae,r.emit(5,n),j();}})();};if(Pe(f)&&K.length>0){let re=xe(L,K);re instanceof Promise?re.then(J).catch(Fe):J(re);}else J([]);},Fe=R=>{n.path=ne,n.error=R,r.emit(9,n);let J=Symbol("abort");u.set(_,J),A=0,E=0,O=0,v=0,c=0,y=0,s.fill(0),d=0,w.fill(null),P=false,r.callOnError(R);},pe=(R,J)=>{R!==L.state[J]&&(L.state[J]=R,D=true,F(String(J)),n.path=ne,n.key=J,n.value=R,n.calledBy=L.calledBy,r.emit(15,n),(L.notifyKeys.size===0||L.notifyKeys.has(J))&&(Q=true)),t.GetBucket(L.nodeBucket[J]).isForceNotify()&&(le=true),(Q||le)&&Se(f);};n.path=ne,n.calledBy=L.calledBy,r.emit(6,n);try{let R=[];for(let J in L.nodeBucket){let re=t.GetBucket(L.nodeBucket[J]);if(R.push(...re.getSideEffect()),ye){r.emit(15,{path:ne,key:String(J),value:L.state[J],calledBy:L.calledBy}),re.isForceNotify()&&(le=!0),(L.notifyKeys.size===0||L.notifyKeys.has(J))&&Se(f);continue}let he=re.evaluate({affectKey:J,triggerUid:W,getProxyByUid:Z=>t.GetNodeByUid(Z).proxy,getStateByUid:Z=>t.GetNodeByUid(Z).state,GetToken:()=>U});if(he instanceof Promise){let Z=he.then(ge=>{u.get(_)===U&&pe(ge,J);});ue.push(Z);}else pe(he,J);}if(ue.length>0)return Promise.all(ue).then(()=>{ve(R);}).catch(Fe);ve(R);return}catch(R){Fe(R);}},j=async()=>{if(u.get(_)!==U){ee=false;return}ee=true;let f=l.getIsFirstFrame(),W=0,D=()=>30,Q=0,le=D();try{for(;u.get(_)===U;){let L=Q>=le,ne=l.shouldYield();if(L||ne){if(Q>0&&(W++,(f||W%2===0)&&i.requestUpdate()),await l.yieldToMain(),u.get(_)!==U)break;Q=0,f=l.getIsFirstFrame();}if(E>0&&d<40){let X=A,K=0;for(let B=0;B<X;B++){let I=Y[B];if((s[I]&1)===0)continue;if(d>=40||Q>=le||l.shouldYield()){for(let pe=B;pe<A;pe++){let R=Y[pe];s[R]&1&&(Y[K++]=R);}A=K,E=K;break}let F=t.GetNodeByUid(I),ue=t.GetPathByUid(I),ye=oe.get(I)??0,fe=e.GetPrevDependency(I),ve=fe.length>1;if((!a||ve)&&ye>ie){s[I]&=-2,E--;let pe=fe.filter(R=>te[R]===1&&(s[R]&16)===0).length;H[I]=pe||0,s[I]&2||(s[I]|=2,T[O++]=I,v++),n.path=ue,n.type=pe>0?4:5,h.targetLevel=ye,h.currentLevel=ie,h.pendingParentsCount=pe,r.emit(12,n);continue}s[I]&=-2,E--,(s[I]&32)===0&&(s[I]|=32,d++),n.path=ue,n.calledBy=F.calledBy,r.emit(8,n),$e(I,b),Q++;}if(A>X){for(let B=X;B<A;B++){let I=Y[B];s[I]&1&&(Y[K++]=I);}A=K,E=A;}else A=K;if(E>0&&d<40)continue}if(Q<le&&a&&v>0&&d<40){let X=!1,K=0,B=0;for(let I=0;I<O;I++){let F=T[I];if((s[F]&2)===0)continue;if(H[F]<=0&&K<le){let ye=oe.get(F)??0,fe=e.GetPrevDependency(F);if(ye<=ie||fe.length<=1){s[F]&=-3,v--,s[F]&1||(s[F]|=1,Y[A++]=F,E++),K++,X=!0;let ve=t.GetPathByUid(F);n.path=ve,n.type=4,r.emit(13,n);continue}}T[B++]=F;}if(O=B,K>0)continue;if(X){if(l.shouldYield()&&(await l.yieldToMain(),u.get(_)!==U))break;continue}}if(d===0&&E===0){if(q.inFlightCount>0)break;if(V.length>0){let K=!1,B=ie,I=Array.from(new Set(V));V.length=0;for(let F of I){let ue=t.GetNodeByUid(F),ye=Oe(ue);if(ye&&ye.length>0){K=!0,ue.calledBy=1,w[F]=ye,s[F]&=-17,s[F]&2&&(s[F]&=-3,v--),s[F]&1||(s[F]|=1,Y[A++]=F,E++);let fe=oe.get(ue.uid)??0;fe<B&&(B=fe),Se(ue.uid),i.flushPathSet.add(ue.uid);}}if(K){if(B<ie&&(ie=B),i.requestUpdate(),l.shouldYield()&&(await l.yieldToMain(),u.get(_)!==U))break;continue}}let X=1/0;for(let K=0;K<c;K++){let B=G[K];if(s[B]&4){let I=k[B];I<X&&(X=I);}}for(let K=0;K<O;K++){let B=T[K];if(s[B]&2){let I=oe.get(B)??0;I>ie&&I<X&&(X=I);}}if(X!==1/0&&X<=Re){ie=X;let K=0;for(let I=0;I<c;I++){let F=G[I];s[F]&4&&(k[F]===X?(s[F]&=-5,y--,s[F]&1||(s[F]|=1,Y[A++]=F,E++)):G[K++]=F);}c=K;let B=0;for(let I=0;I<O;I++){let F=T[I];if(s[F]&2)if((oe.get(F)??0)===X){s[F]&=-3,v--,s[F]&1||(s[F]|=1,Y[A++]=F,E++);let ye=t.GetPathByUid(F);n.path=ye,n.type=3,h.level=X,r.emit(13,n);}else T[B++]=F;}O=B;continue}else {for(let K=0;K<c;K++){let B=G[K];if(s[B]&4){s[B]|=16;let I=t.GetPathByUid(B);n.path=I,n.type=6,r.emit(12,n);}}c=0,y=0;for(let K=0;K<O;K++){let B=T[K];if(s[B]&2){s[B]|=16;let I=t.GetPathByUid(B);n.path=I,n.type=6,r.emit(12,n);}}O=0,v=0;break}}E>0&&d>=40&&(n.type=2,r.emit(4,n));break}}finally{ee=false;let L=d+v+E,ne=q.inFlightCount||0;if(!(o===U)){n.token=U,r.emit(3,n);return}if(i.requestUpdate(),L===0&&ne===0){if(u.get(_)===U&&!Ve){Ve=true,n.type=1,r.emit(2,n),q.resetCounters(),w.fill(null),P=false;let K=performance.now();be=-1,u.delete(_),n.token=U,n.duration=(K-qe).toFixed(2.1)+"ms",r.emit(1,n),Promise.resolve().then(()=>{r.callOnSuccess();});}}else {let K=L===0&&ne>0?3:1;if(n.type=K,h.nums=d,h.asyncNums=ne,r.emit(4,n),ne>0&&!z){z=true;let B=()=>{if(o!==U){z=false;return}if(q.inFlightCount===0){z=false,Ne(),Ye(()=>{o===U&&q.inFlightCount===0&&j();});return}else q.inFlightCount,requestAnimationFrame(B);};requestAnimationFrame(B);}}}};j();};return {TaskRunner:x,CancelTask:p,stageValueFn:N}}function je(g){let{path:e,uid:t,type:r,meta:i,dirtySignal:l,state:u}=g,a=null,o=["path","uid","type","dependOn","nodeBucket"],h={path:e,uid:t,type:r,meta:i,dirtySignal:l,createView:(n={})=>{if(a&&Object.keys(n).length===0)return a;let P=new Proxy(n,{get(m,S){let N=S;return Reflect.has(m,S)?Reflect.get(m,S):N in g.state?g.state[N]:N in g?g[N]:i&&N in i?i[N]:Reflect.get(m,S)},set(m,S,N){return false},ownKeys(m){let S=new Set([...Reflect.ownKeys(m),...Object.keys(u||{}),...Object.keys(i||{}),...o]);return Array.from(S)},getOwnPropertyDescriptor(m,S){let N=S;return Reflect.has(m,S)||u&&N in u||i&&N in i||o.includes(N)?{enumerable:true,configurable:true}:Reflect.getOwnPropertyDescriptor(m,S)}});return a=P,P}};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 a}}}var ct=(g,e,t,r,i,l,u)=>{let a=g.useEntangleStep,o=[],p=[],h=new Set,n=r,S=t,N=0,x=0,b=0,M=100,se=()=>{let d={link:null,impactNode:null,impactUid:-1,hitTargetUids:null,isDirty:false,propose:null};return d.propose={set:(s,H,k=1)=>{d.epoch===b&&H!==d.impactNode.state[s]&&(d.link.count++,(!p[d.impactUid]||p[d.impactUid].length===0)&&(p[d.impactUid]=[],x++),p[d.impactUid].push({key:s,value:H,weight:k}),d.isDirty||(d.hitTargetUids.push(d.impactUid),d.isDirty=true));},update:(s,H,k="add")=>{d.epoch===b&&(d.link.count++,(!p[d.impactUid]||p[d.impactUid].length===0)&&(p[d.impactUid]=[],x++),p[d.impactUid].push({key:s,delta:H,op:k,weight:1}),d.isDirty||(d.hitTargetUids.push(d.impactUid),d.isDirty=true));},patch:(s,H)=>{d.epoch===b&&(d.link.count++,(!p[d.impactUid]||p[d.impactUid].length===0)&&(p[d.impactUid]=[],x++),p[d.impactUid].push({key:s,patch:H,weight:1}),d.isDirty||(d.hitTargetUids.push(d.impactUid),d.isDirty=true));}},d},U=Array.from({length:M},se),_=M-1,ee=(d,s,H)=>{let k=s.path,Y=d.impact;if(d.count>=a){u.emit("entangle:blocked",{observer:k,target:Y,count:d.count});return}let A=n(Y),E=d.isProxy?s.proxy:s,T=d.isProxy?A.proxy:A;if(d.filter&&!d.filter(E,T))return;let O,v=true;_<0?(O=se(),v=false):O=U[_--];let G=b;O.epoch=G,O.isDirty=false,O.link=d,O.impactNode=A,O.impactUid=A.uid,O.hitTargetUids=H;let c=d.emit(E,T,O.propose);if(c instanceof Promise||c&&typeof c.then=="function")return N++,(async()=>{try{await c;}catch(y){u.emit("node:error",{path:k,error:y}),u.onError({path:k,error:y});}finally{G===b&&N--,v&&(U[++_]=O);}})();v&&(U[++_]=O);};return {useEntangle:d=>{let{cause:s,impact:H,via:k,emit:Y,filter:A,isProxy:E}=d;if(!k||k.length===0){u.emit("entangle:warn",{path:s,type:"no_keys"});return}let O=n(s).uid;o[O]||(o[O]=new Map);let v=o[O];for(let G=0;G<k.length;G++){let c=k[G];v.has(c)||v.set(c,[]),v.get(c).push({impact:H,emit:Y,filter:A,count:0,isProxy:!!E});}},updateEntangleLevel:()=>{let d=S();h.clear();for(let s=0;s<o.length;s++)if(o[s]!==void 0){let H=d.get(s)||0;h.add(H);}},Turnstile:{volatileLevels:h,get inFlightCount(){return N},get hasPendingGhosts(){return x>0},nextEpoch:()=>{b++,N=0,x=0,p.length=0;},hasObserver:d=>o[d]!==void 0,getTriggerKeys:d=>{let s=o[d];return s?Array.from(s.keys()):[]},receiveGhosts:(d,s=[])=>{let H=d.uid,k=[],Y=o[H];if(!Y||s.length===0)return k;let A=[];for(let G=0;G<s.length;G++){let c=Y.get(s[G]);if(c)for(let y=0;y<c.length;y++)A.push(c[y]);}let E=0,T=false,O=null;for(;E<A.length;E++){if(e.shouldYield()){T=true;break}let G=ee(A[E],d,k);if(G){O=G,T=true,E++;break}}let v=()=>{if(k.length<=1)return k;let G=[],c=Object.create(null);for(let y=0;y<k.length;y++){let w=k[y];c[w]||(c[w]=true,G.push(w));}return G};return T?(async()=>{for(O&&await O,e.shouldYield()&&await e.yieldToMain();E<A.length;){let G=[],c=Math.min(E+M,A.length);for(;E<c;E++){let y=ee(A[E],d,k);y&&G.push(y);}G.length>0&&await Promise.all(G.map(async y=>{await y,e.shouldYield()&&await e.yieldToMain();})),e.shouldYield()&&await e.yieldToMain();}return v()})():v()},resolveGhosts:d=>{let s=d.uid,H=p[s];if(!H||H.length===0)return [];let k=[],Y=Object.create(null);for(let A=0;A<H.length;A++){let E=H[A];Y[E.key]||(Y[E.key]=[]),Y[E.key].push(E);}for(let A in Y){let E=Y[A],T=d.state[A],O,v=-1/0,G=false;for(let c=0;c<E.length;c++){let y=E[c];if(y.patch!==void 0&&(T=y.patch(T)),y.value!==void 0){let w=y.weight??1;w>=v&&(v=w,O=y.value,G=true);}}G&&(T=O);for(let c=0;c<E.length;c++){let y=E[c];if(y.delta!==void 0)switch(y.op||"add"){case "add":T=(typeof T=="number"?T:0)+y.delta;break;case "remove":T=Array.isArray(T)?T.filter(V=>V!==y.delta):T;break;case "intersect":T=Array.isArray(T)?T.filter(V=>y.delta.includes(V)):y.delta;break;case "union":{let V=Array.isArray(T)?T:[],q=Array.isArray(y.delta)?y.delta:[y.delta];T=[...new Set([...V,...q])];break}case "merge":{let V=typeof T=="object"&&T!==null&&!Array.isArray(T)?T:{},q=typeof y.delta=="object"&&y.delta!==null&&!Array.isArray(y.delta)?y.delta:{};T={...V,...q};break}}}Object.is(d.state[A],T)||(d.state[A]=T,k.push(A));}return p[s]=[],x--,k.length>0?k:[]},resetCounters:()=>{for(let d=0;d<o.length;d++){let s=o[d];if(s)for(let H of s.values())for(let k=0;k<H.length;k++)H[k].count=0;}}}}};function yt(g,e,t,r,i){let l=lt(),u=0,a=new Map,o=[],p=[],h=[],n=[],P=false,m=new Set,N=async()=>{let c=Array.from(m);if(m.clear(),"signalTrigger"in i&&typeof i.signalTrigger=="function")for(let y of c){let w=s(y);i.signalTrigger(w.dirtySignal);}else "emit"in i&&i.emit(c);},x=()=>{P||(P=true,requestAnimationFrame(()=>{try{for(;m.size>0;)N();}finally{P=false;}}));},{useEntangle:b,updateEntangleLevel:M,Turnstile:se}=ct({useEntangleStep:g.useEntangleStep},l,e.GetUidToLevelMap,d,s,H,{emit:r.emit,onError:r.callOnError}),{TaskRunner:U,CancelTask:_,stageValueFn:ee}=ut({useGreedy:g.useGreedy},e,{GetNodeByPath:d,GetNodeByUid:s,GetPathByUid:H,GetBucket:A,GetMaxUid:E,Turnstile:se},r,{requestUpdate:x,flushPathSet:m},l),z=c=>{throw new Error(`[MeshFlow] Duplicate Path: ${c}`)},C=c=>{a.has(c.path)&&z(String(c.path));let y=++u,w={path:c.path,getNode:ae=>d(ae)},V=(ae,de="value")=>{let me=ae({...w}),Ne=d(c.path);if(!Object.is(Ne.state[de],me)){if(t.createHistoryAction&&t.pushIntoHistory){let Te=t.createHistoryAction([{path:c.path,value:Ne.state[de]},{path:c.path,value:me}],Pe=>{let xe=d(Pe.path);xe.state[de]=Pe.value,T(Pe.path);});t.pushIntoHistory(Te);}Ne.state[de]=me,T(c.path);}},q=je({uid:y,type:c.type,path:c.path,state:c.state,meta:c.meta,nodeBucket:{},dirtySignal:"signalCreator"in i?i.signalCreator():void 0,notifyKeys:c.notifyKeys,dependOn:V});return a.set(q.path,y),h[y]=q.path,o[y]=q,q},te=c=>{a.has(c.path)&&z(String(c.path));let y=++u,w=je({uid:y,type:c.type,path:c.path,state:{},meta:c,nodeBucket:{},children:c.children});return a.set(w.path,y),p[y]=w,w};function d(c){let y=a.get(c),w=o[y];if(!w)throw Error("Wrong id");return w}function s(c){let y=o[c];if(!y)throw Error("Wrong id");return y}function H(c){return h[c]}function k(c){let y=a.get(c);return p[y]}function Y(c){return n.push(c)-1}function A(c){let y=n[c];if(!y)throw Error("Wrong id");return y}function E(){return u}let T=c=>{let y=d(c);if(!y)throw Error("Wrong id");m.add(y.uid),x();let w=e.GetNextDependency(y.uid);O(y.uid,w);};function O(c,y){U(c,y);}return {registerNode:C,registerGroupNode:te,GetNodeByPath:d,GetGroupByPath:k,notify:T,notifyAll:async()=>{Promise.resolve().then(async()=>{let c=e.GetDependencyOrder();if(!c||c.length===0)return;let y=c[0];try{U(null,y);}catch(w){throw r.callOnError(w),w}finally{x();}});},batchNotify:c=>{if(!c||c.length===0)return;if(t.createHistoryAction&&t.pushIntoHistory){let w=t.createHistoryAction([c.map(V=>({path:V.path,key:V.key,value:d(V.path).state[V.key]})),c.map(V=>({path:V.path,key:V.key,value:V.value}))],V=>{let q=new Set;V.forEach(ae=>{let de=d(ae.path);de.state[ae.key]=ae.value,m.add(ae.path),q.add(ae.uid);}),x(),q.size>0&&U(null,Array.from(q));});t.pushIntoHistory(w);}let y=new Set;c.forEach(w=>{let V=d(w.path);V.state[w.key]=w.value,m.add(V.uid),y.add(V.uid);}),x(),y.size>0&&U(null,Array.from(y));},useEntangle:b,updateEntangleLevel:M,SetBucket:Y,GetBucket:A,CancelTask:_,stageValueFn:ee,UITrigger:i,UidToNodeMap:o}}function dt(g,e){let t=false,r=false,i=false,l=false,u=new Map,a=[],o=[],p=[],h=[],n=[],P=[],m=[],S=new Map,{GetNextDependency:x,GetPrevDependency:b,GetAllPrevDependency:M,GetAllNextDependency:se,rebuildDirectDependencyMaps:U}=nt(()=>a,()=>p,()=>P,()=>n),_={},ee={};if(e.modules.useHistory){let j=e.modules.useHistory,f;j.isMeshModuleInited?f=j:f=j();let{Undo:W,Redo:D,PushIntoHistory:Q,CreateHistoryAction:le,updateUndoSize:L,updateRedoSize:ne}=f();_.pushIntoHistory=Q,_.createHistoryAction=le,ee={Undo:W,Redo:D,updateUndoSize:L,updateRedoSize:ne};}let z=!!e.modules.useMeshRenderGate,C={};if(z){let j=e.modules.useMeshRenderGate.isMeshModuleInited,f=e.modules.useMeshRenderGate;C=(j?f:f())(()=>ae);}let{onError:te,callOnError:d}=st(),{onSuccess:s,callOnSuccess:H}=at(),{onStart:k,callOnStart:Y}=it(),{emit:A,usePlugin:E,destroyPlugin:T}=ot(),{SetTrace:O,useTrace:v}=et(),G=v();E(G);let c=z?{...C}:{...e.UITrigger},y=yt({useGreedy:e.config.useGreedy,useEntangleStep:e.config.useEntangleStep||100},{GetDependencyOrder:()=>m,GetAllNextDependency:se,GetNextDependency:x,GetPrevDependency:b,GetAllPrevDependency:M,GetUidToLevelMap:()=>S},_,{callOnError:d,callOnSuccess:H,callOnStart:Y,emit:A},c),{SetBucket:w,GetBucket:V,GetGroupByPath:q,GetNodeByPath:ae,notifyAll:de,useEntangle:me,updateEntangleLevel:Ne,CancelTask:Te,stageValueFn:Pe}=y;z&&C.init();let xe={};if(e.modules.useInternalForm){let{uiSchema:j,GetFormData:f}=e.modules.useInternalForm(y,g);xe={uiSchema:j,GetFormData:f};}let Oe={};if(e.modules.useSchemaValidators){let{SetValidators:j}=e.modules.useSchemaValidators(ae);Oe={SetValidators:j};}let{SetRule:ke,SetRules:De}=Ze(ae,w,V,a,p,o,h,u),{SetStrategy:be}=Je(ae,V),oe=rt(a,u),ie=()=>{let j=oe();m=j.steps,S=j.levelMap,Re();},Re=()=>{i&&(Ne(),i=false);},Se=()=>{l||(l=true,Promise.resolve().then(Re).finally(()=>{l=false;}));},Ie=()=>{r||(r=true,Promise.resolve().then(()=>{if(ie(),t){let{directNextMap:j,directPrevMap:f}=U(m.flat());n=j,P=f;}}).finally(()=>{r=false,t=false;}));};return {SetRule:(j,f,W,D)=>{ke(j,f,W,D),t=true,Ie();},SetRules:(j,f,W,D)=>{De(j,f,W,D),t=true,Ie();},SetStrategy:be,useEntangle:j=>{me(j),i=true,Se();},SetTrace:O,usePlugin:E,SetValue:(j,f,W)=>{Re(),ae(j).dependOn(()=>W,f);},GetValue:(j,f="value")=>ae(j).proxy[f],SetValues:j=>{Re(),y.batchNotify(j);},GetGroupByPath:q,notifyAll:async()=>{ie(),await de();},GetAllDependency:()=>a,GetDependencyOrder:()=>m,historyExports:ee,formExports:xe,validatorExports:Oe,batchRenderExport:C,hasRenderGate:()=>z,onError:te,onSuccess:s,onStart:k,scheduler:y,destroyPlugin:T,CancelTask:Te,StageValue:(j,f,W)=>{let D=ae(j);Pe(D.uid,f,W);}}}var Ke=new Map,ht=(g,e,t)=>{try{if(Ke.has(g))throw Error("engineID repeated");let r=dt(e,{config:t.config||{useGreedy:!1},UITrigger:t.UITrigger,modules:t.modules??{},plugins:{}}),{SetRule:i,SetRules:l,SetValues:u,SetStrategy:a,SetValue:o,GetValue:p,usePlugin:h,useEntangle:n,GetGroupByPath:P,notifyAll:m,SetTrace:S,GetAllDependency:N,GetDependencyOrder:x,historyExports:b,formExports:M,validatorExports:se,batchRenderExport:U,hasRenderGate:_,onError:ee,onSuccess:z,onStart:C,scheduler:te,destroyPlugin:d,CancelTask:s,StageValue:H}=r,k={config:{SetRule:i,SetRules:l,SetStrategy:a,notifyAll:m,SetTrace:S,usePlugin:h,hasRenderGate:_,useEntangle:n},data:{SetValue:o,GetValue:p,SetValues:u,GetGroupByPath:P,StageValue:H},dependency:{GetAllDependency:N,GetDependencyOrder:x},hooks:{onError:ee,onSuccess:z,onStart:C}},Y=(T,O,v)=>{!O||typeof O!="object"||Object.keys(O).forEach(G=>{let c=O[G];if(typeof c=="object"&&c!==null)T[G]=T[G]||{},Y(T[G],c,v);else if(typeof c=="function"){let y=G;if(y==="useMeshRenderGate")y="render";else if(y.startsWith("use")){let w=y.slice(3);y=w.charAt(0).toLowerCase()+w.slice(1);}G==="useHistory"&&v.exports.history&&Object.keys(v.exports.history).length>0?T[y]=v.exports.history:G==="useInternalForm"&&v.exports.form&&Object.keys(v.exports.form).length>0?T[y]=v.exports.form:G==="useSchemaValidators"&&v.exports.validator&&Object.keys(v.exports.validator).length>0?T[y]=v.exports.validator:G==="useMeshRenderGate"&&v.exports.render?T[y]=v.exports.render:T[y]=c(v.scheduler,v.Schema);}});},A={...k,destroyPlugin:d,CancelTask:s,modules:{}},E=t.modules;return E&&Y(A.modules,E,{scheduler:te,Schema:e,exports:{history:b,form:M,validator:se,render:U}}),Ke.set(g,A),A}catch(r){throw Error(r)}},xn=()=>(g,e,t)=>ht(g,e,t),An=g=>{let e=Ke.get(g);if(!e)throw Error("Engine not found.");return e},vn=g=>{let e=Ke.get(g);e.destroyPlugin(),e.CancelTask(),Ke.delete(g);};export{_e as DefaultStrategy,Ce as MeshFlowEventsName,Le as TriggerCause,vn as deleteEngine,An as useEngine,ht as useMeshFlow,xn as useMeshFlowDefiner,yt as useScheduler};
1
+ var De=(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))(De||{}),Le=(r=>(r[r.CAUSALITY=0]="CAUSALITY",r[r.INVERSION=1]="INVERSION",r[r.REPERCUSSION=2]="REPERCUSSION",r))(Le||{});var _e=(r=>(r.OR="OR",r.PRIORITY="PRIORITY",r.MERGE="MERGE",r))(_e||{});var He=class{computedRules=[];getRuleResult(e,t,r){if(e.entityId==="__base__")return e.logic(t);if(!(!e._hasRun||r(e.triggerUids)))return e._lastResult;let u=e.logic(t);return u instanceof Promise?u.then(c=>(e._lastResult=c,e._hasRun=true,c)):(e._lastResult=u,e._hasRun=true,u)}store={OR:(e,t,r)=>{let l,u,c=this.computedRules;for(let a=0;a<c.length;a++){let i=c[a],d=this.getRuleResult(i,e,r);if(d instanceof Promise)return (async()=>{let n=await d;if(i.entityId==="__base__"?u=n:n&&(l=n),typeof l>"u")for(let g=a+1;g<c.length;g++){let h=c[g],m=this.getRuleResult(h,e,r),M=m instanceof Promise?await m:m;if(h.entityId==="__base__"){u=M;continue}if(M){l=h.value;break}}return typeof l>"u"&&(l=u),{res:l,version:t}})();let f=d;if(i.entityId==="__base__"){u=f;continue}if(f){l=i.value;break}}return typeof l>"u"&&(l=u),{res:l,version:t}},PRIORITY:(e,t,r)=>{let l,u=this.computedRules;for(let c=0;c<u.length;c++){let a=u[c],i=this.getRuleResult(a,e,r);if(i instanceof Promise)return (async()=>{let d=await i;if(d!==void 0)return {res:a.value!==void 0?a.value:d,version:t};for(let f=c+1;f<u.length;f++){let n=u[f],g=this.getRuleResult(n,e,r),h=g instanceof Promise?await g:g;if(h!==void 0)return {res:h,version:t}}return {res:void 0,version:t}})();if(i!==void 0)return {res:a.value!==void 0?a.value:i,version:t}}return {res:l,version:t}},MERGE:(e,t,r)=>{let l,u,c=this.computedRules,a=(d,f)=>d===void 0?f:f===void 0?d:Array.isArray(d)&&Array.isArray(f)?[...f,...d]:typeof d=="object"&&typeof f=="object"?{...f,...d}:d;for(let d=0;d<c.length;d++){let f=c[d],n=this.getRuleResult(f,e,r);if(n instanceof Promise)return (async()=>{let h=await n,m=(A,T)=>{if(A.entityId==="__base__")u=a(u,T);else if(T){let P=A.value!==void 0?A.value:T;l=a(l,P);}};m(f,h);for(let A=d+1;A<c.length;A++){let T=c[A],P=this.getRuleResult(T,e,r),se=P instanceof Promise?await P:P;m(T,se);}return {res:a(l,u),version:t}})();let g=n;if(f.entityId==="__base__"){u=a(u,g);continue}if(g){let h=f.value!==void 0?f.value:g;l=a(l,h);}}return {res:a(l,u),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)}},Ke=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 l=()=>this.rules;this.strategy=new He(l),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,l={...e,entityId:r};for(let u of e.triggerUids)this.rules.has(u)||this.rules.set(u,new Set),this.rules.get(u).add(l);return this.strategy.updateComputedRules(),()=>{for(let u of e.triggerUids){let c=this.rules.get(u);c&&(c.delete(l),c.size===0&&(this.rules.delete(u),this.deps.delete(u)));}this.strategy.updateComputedRules();}}updateDeps(e){for(let[t,r,l]of e){if(r.length==0)continue;let u=this.deps.get(t)||Object.create(null);for(let c of r)u[c]=l[c];this.deps.set(t,u);}}setRule(e,t){if(t&&this.updateDeps(t),typeof e.entityId=="string"){this.setDefaultRule(e);return}let r=++this.id,l={...e,entityId:r};if(e)for(let u of e.triggerUids)this.rules.has(u)||this.rules.set(u,new Set),this.rules.get(u).add(l);return this.strategy.updateComputedRules(),()=>{for(let u of e.triggerUids){let c=this.rules.get(u);c&&(c.delete(l),c.size===0&&(this.rules.delete(u),this.deps.delete(u)));}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[a,i]of this.deps.entries()){let d=e.getStateByUid(a);if(!d){r=false;break}for(let f in i){let n=i[f],g=d[f];if(typeof n=="object"&&n!==null){r=false;break}if(n!==g){r=false;break}}if(!r)break}}if(r&&this.useCache)return this.cache;this.promiseToken=t;let l=++this.version,u=a=>{if(!a||a.length===0)return true;for(let i of a){let d=this.deps.get(i);if(!d)return true;let f=e.getProxyByUid(i);if(!f)return true;for(let n in d){let g=d[n],h=f[n];if(typeof g=="object"&&g!==null||g!==h)return true}}return false},c=this.strategy.evaluate(e,l,u);if(!(c instanceof Promise)){let{res:a,version:i}=c;return this.finalizeSync(a,i,e,t)}return this.pendingPromise=(async()=>{try{let{res:a,version:i}=await c;return this.finalizeSync(a,i,e,t)}catch(a){throw {path:this.path,error:a}}finally{this.promiseToken===t&&(this.pendingPromise=null,this.promiseToken=null);}})(),this.pendingPromise}finalizeSync(e,t,r,l){return l!==this.promiseToken||t<this.version?this.cache:(this.cache=e,this.deps.forEach((u,c)=>{let a=r.getProxyByUid(c);if(!a)return;let i=Object.keys(u);for(let d of i)u[d]=a[d];}),e)}inferType(e){return Array.isArray(e)?"array":typeof e}};var Xe=(p,e,t)=>{let l=u=>{let c=t.triggerUids.map(d=>{let f=u.getProxyByUid(d);if(t.triggerKeys.length===0)return f;let n={};return t.triggerKeys.forEach(g=>{n[g]=f[g];}),n}),a=Object.create(null);return Object.defineProperty(a,"triggerTargets",{get:()=>c}),Object.defineProperty(a,"affectedTatget",{get:()=>u.getProxyByUid(p)[e]}),t.logic({slot:a})};return {value:t.value,targetUid:p,triggerUids:t.triggerUids,priority:t.priority??10,logic:l}},Ze=(p,e,t,r,l,u,c,a)=>{if(!p)throw Error();let i=p,d=(g,h)=>{typeof r[g]>"u"&&(r[g]=[],u[g]=new Set),u[g].add(h),u[g].size>r[g].length&&r[g].push(h),typeof l[h]>"u"&&(l[h]=[],c[h]=new Set),c[h].add(g),c[h].size>l[h].length&&l[h].push(g);};return {SetRule:(g,h,m,M)=>{let A=i(g),T=i(h),P=M.triggerKeys||[],se=a.get(T.uid)||0,L=a.get(A.uid)||0;se+=1,L+=1,a.set(T.uid,se),a.set(A.uid,L);let j=Xe(T.uid,m,{...M,triggerUids:[A.uid],triggerKeys:P}),ee=[g].map(U=>{let te=i(U);return [te.uid,P,te.proxy]});if(d(A.uid,T.uid),typeof T.nodeBucket[m]=="number"){let U=t(T.nodeBucket[m]);U.setRule(j,ee),M.effect&&U.setSideEffect({fn:M.effect,args:M.effectArgs?M.effectArgs:[m]});}else {let U=T.meta[m],te=new Ke(U,m,h);te.setRule(j,ee),M.effect&&te.setSideEffect({fn:M.effect,args:M.effectArgs?M.effectArgs:[m]}),T.nodeBucket[m]=e(te);}T.state[m]=T.meta[m];let q=t(T.nodeBucket[m]);M.forceNotify&&q.forceNotify(),M.cacheStrategy=="none"&&q.setUseCache(false);},SetRules:(g,h,m,M)=>{let A=i(h),T=a.get(A.uid)||0;T+=1,a.set(A.uid,T);let P=[];for(let q of g){let U=i(q);P.push(U.uid);let te=a.get(U.uid)||0;te+=1,a.set(U.uid,te),d(U.uid,A.uid);}let se=M.triggerKeys||[],L=Xe(A.uid,m,{...M,triggerUids:P,triggerKeys:se}),j=g.map(q=>{let U=i(q);return [U.uid,se,U.state]});if(typeof A.nodeBucket[m]=="number"){let q=t(A.nodeBucket[m]);q.setRules(L,j),M.effect&&q.setSideEffect({fn:M.effect,args:M.effectArgs?M.effectArgs:[m]});}else {let q=A.meta[m],U=new Ke(q,m,h);U.setRules(L,j),M.effect&&U.setSideEffect({fn:M.effect,args:M.effectArgs?M.effectArgs:[m]}),A.nodeBucket[m]=e(U);}A.state[m]=A.meta[m];let ee=t(A.nodeBucket[m]);M.forceNotify&&ee.forceNotify(),M.cacheStrategy=="none"&&ee.setUseCache(false);}}};var Je=(p,e)=>{let t=p||void 0;if(!t)throw Error();return {SetStrategy:(l,u,c)=>{let a=t(l);e(a.nodeBucket[u]).setStrategy(c);}}};function et(){let p=new Map,e=new Map,t=new Set,r=(c,a)=>{p.set(c,a);let i=e.get(c);i&&i(a);};return {SetTrace:(c,a)=>{e.set(c,a);let i=p.get(c)||"idle";return a(i),{cancel:()=>{e.delete(c);}}},useTrace:()=>({apply:a=>{a.on(0,()=>{t.forEach(i=>r(i,"idle")),t.clear(),p.clear();}),a.on(13,({path:i,type:d})=>{(d==1||d==2)&&(t.add(i),r(i,"pending"));}),a.on(10,({path:i})=>{t.add(i),(!p.has(i)||p.get(i)==="idle")&&r(i,"pending");}),a.on(6,({path:i})=>{t.add(i),r(i,"calculating");}),a.on(7,({path:i})=>{r(i,"calculated");}),a.on(12,({path:i,type:d})=>{d==3&&r(i,"calculating"),d==6&&r(i,"idle");}),a.on(14,({path:i})=>{r(i,"pending");}),a.on(9,({path:i})=>r(i,"error"));}})}}function nt(p,e,t,r){return {GetNextDependency:f=>r()[f]||[],GetPrevDependency:f=>t()[f]||[],GetAllPrevDependency:f=>e()[f]||[],GetAllNextDependency:f=>p()[f]||[],rebuildDirectDependencyMaps:f=>{let n=[],g=[],h=p();for(let m of f){let M=h[m]||[];n[m]=M;for(let A=0;A<M.length;A++){let T=M[A];typeof g[T]>"u"&&(g[T]=[]),g[T].push(m);}}return {directNextMap:n,directPrevMap:g}}}}function rt(p,e){let t=l=>{let u=[],c=[],a=new Map,i=l.size,d=0,f=0;for(let[n,g]of l)g===0&&c.push(n);if(c.length===0&&i>0)throw Error("Circular dependency detected");for(;c.length>0;){u.push([...c]);let n=[];for(let g of c){d++,a.set(g,f);let h=p[g];if(h)for(let m of h){let M=l.get(m)-1;l.set(m,M),M===0&&n.push(m);}}c=n,f++;}if(d<i)throw Error("Circular dependency detected");return {steps:u,levelMap:a}};return ()=>{let l=new Map;for(let u of e.keys()){let c=p[u]||[];l.has(u)||l.set(u,0);for(let a of c){let i=l.get(a)||0;l.set(a,++i);}}return t(l)}}var Ge=()=>{let p=[];return {on:e=>(p.push(e),()=>{let t=p.indexOf(e);t>-1&&p.splice(t,1);}),call:e=>p.forEach(t=>{t(e);})}};function st(){let{on:p,call:e}=Ge();return {onError:p,callOnError:e}}function at(){let{on:p,call:e}=Ge();return {onSuccess:p,callOnSuccess:e}}var ot=()=>{let p=new Set,e=new Map,t=new Set,r=(a,i)=>{e.get(a)?.forEach(d=>d(i));},l=(a,i)=>(e.has(a)||e.set(a,new Set),e.get(a).add(i),()=>e.get(a)?.delete(i));return {usePlugin:a=>{let i=new Set,d=(n,g)=>{let h=l(n,g);return i.add(h),h};a.apply({on:d}),p.add(a);let f=()=>{i.forEach(n=>n()),i.clear(),p.delete(a),t.delete(f);};return t.add(f),f},emit:r,destroyPlugin:()=>{t.forEach(a=>a()),t.clear(),e.clear(),p.clear();}}};function it(){let{on:p,call:e}=Ge();return {onStart:p,callOnStart:e}}var lt=(p={frameQuota:12})=>{let e=performance.now(),t=0,r=false,l=()=>!!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>p.frameQuota||l())},async yieldToMain(){return new Promise(u=>{Ye(()=>{e=performance.now(),t=0,r&&(r=false),u();});})}}},Ye=p=>{let{port1:e,port2:t}=new MessageChannel;e.onmessage=p,t.postMessage(null);};function ut(p,e,t,r,l,u){let c=new Map,a=p.useGreedy,i=null,d=()=>{c.clear();},f={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:f},g=false,h=[],m=null,M=(T,P,se)=>{h.push({uid:T,key:P,value:se}),!g&&(m||(m=Promise.resolve().then(()=>{m=null,g||A(null,[]);})));},A=async(T,P)=>{let L=Symbol("token"),j=typeof T=="number"?T:"__NOTIFY_ALL__";c.set(j,L),i=L,g=true;let ee=false,q=false;u.reset(),t.Turnstile.nextEpoch();let U=t.GetMaxUid()+3,te=new Array(U).fill(0),y=0,s=new Uint8Array(U),W=new Int32Array(U),C=new Int32Array(U),z=new Int32Array(U*2),w=0,R=0,G=new Int32Array(U*2),K=0,_=0,v=new Int32Array(U*2),I=0,o=0;P.forEach(N=>{te[N]=1,e.GetAllNextDependency(N).forEach(E=>{te[E]=1;});});let S=new Array(U).fill(null),O=[],H=t.Turnstile,ae=new Array(U).fill(null).map(()=>[]),fe=new Array(U).fill(null).map(()=>[]),ce=[],Me=()=>{if(h.length===0)return false;let N=false,E=1/0;for(;h.length>0;){let{uid:b,key:B,value:Q}=h.shift(),Y=t.GetNodeByUid(b);if(ce.includes(b)||ce.push(b),!Object.is(Y.state[B],Q)){N=true,Y.state[B]=Q,l.flushPathSet.add(b),Y.calledBy=1;let ne=S[b]||[];ne.includes(B)||ne.push(B),S[b]=ne,s[b]&=-17,s[b]&2&&(s[b]&=-3,_--),s[b]&1||(s[b]|=1,z[w++]=b,R++);let $=e.GetUidToLevelMap().get(b)??0;$<E&&(E=$),de(b);}}return N&&(ie===void 0||ie>E)&&(ie=E),N},pe=H.volatileLevels.size>0,Re=pe?H.hasObserver:N=>false,Ne=pe?H.receiveGhosts:()=>[],Ee=pe?H.resolveGhosts:()=>[],Ie=pe?H.getTriggerKeys:()=>[],Be=H?.volatileLevels||new Set,Te=-1,oe=e.GetUidToLevelMap(),ie=0,ve=0,de=N=>{e.GetAllNextDependency(N).forEach(b=>{let B=oe.get(b)||0;B>ve&&(ve=B);});};Me();let ke=new Set;typeof T=="number"&&(s[T]|=16,ke.add(T),de(T),l.flushPathSet.add(T));let we=typeof T=="number"?[T]:[...P,...ce];u.shouldYield()&&(l.requestUpdate(),await u.yieldToMain());let We=we.map(async N=>{if(Re(N)){let E=t.GetNodeByUid(N),b=Ie(N);if(b.length>0){let B=Ne(E,b);return B instanceof Promise&&(B=await B),{seed:N,hitTargets:B}}}return {seed:N,hitTargets:[]}});if((await Promise.all(We)).forEach(({seed:N,hitTargets:E})=>{if(E&&E.length>0){O.push(...E);let b=oe.get(N)||0;Te=Math.max(Te,b);}}),(O.length>0||we.length>1)&&(l.requestUpdate(),await u.yieldToMain(),c.get(j)!==L))return;let ze=O.length>0;P.forEach(N=>{if(!ke.has(N))if(ze){let E=oe.get(N)??0;C[N]=E,s[N]&4||(s[N]|=4,v[I++]=N,o++);let b=t.GetPathByUid(N);n.path=b,n.type=2,r.emit(14,n);}else s[N]&1||(s[N]|=1,z[w++]=N,R++),de(N);}),typeof T=="number"?ie=oe.get(T)??0:ie=Math.min(...P.map(N=>oe.get(N)??0));let qe=performance.now(),Ue=typeof j=="number"?t.GetPathByUid(j):"__NOTIFY_ALL__";n.path=Ue,n.token=L,r.emit(0,n),r.callOnStart({path:Ue});let Ve=false,Qe=30,$e=(N,E)=>{let b=false,B=false,Q=false,Y=t.GetNodeByUid(N),ne=t.GetPathByUid(N),$=Y.calledBy,k=ae[N];k.length=0;let V=Re(N),F=V?Ie(N):[],D=x=>{V&&(F.length===0||F.includes(x))&&k.push(x);},le=fe[N];le.length=0;let ye=false;if(Y.calledBy===1){ye=true,b=true,l.flushPathSet.add(N);let x=S[N];x&&(k.push(...x),S[N]=null);}let he=(x,J)=>{let re=oe.get(x)??0,me=t.GetNodeByUid(x),Z=t.GetPathByUid(x),Pe=($===1||$===2)&&re<=Te;Pe&&s[x]&16&&(s[x]&=-17,n.path=Z,n.triggerPath=ne,r.emit(11,n));let ue=0;if(!(s[x]&49)){if(s[x]&2)ue=W[x]-1;else {if(re>ie&&_>Qe){C[x]=re,s[x]&4||(s[x]|=4,v[I++]=x,o++),n.path=Z,n.type=7,r.emit(12,n);return}let be=e.GetPrevDependency(x),X=0;for(let Se of be){if(s[Se]&16)continue;(oe.get(Se)??0)>ie&&X++;}ue=X;}if(ue<=0){let be=(s[x]&1)!==0,X=(s[x]&32)!==0;if(be||X){n.path=Z,n.type=X?3:3.1,r.emit(12,n);return}s[x]&2&&(s[x]&=-3,_--),Pe?me.calledBy=2:me.calledBy=0,s[x]&1||(s[x]|=1,z[w++]=x,R++),n.path=Z,n.type=J,f.path=ne,r.emit(13,n);}else W[x]=ue,s[x]&2||(s[x]|=2,G[K++]=x,_++);}},Ae=(x=[])=>{if(c.get(j)!==L)return;if(x.length){let re={},me=Y.proxy;for(let Z of x){let Pe=(Z.args||[]).reduce((ue,be)=>(ue[be]=me[be],ue),{});try{let ue=Z.fn(Pe);ue&&typeof ue=="object"&&Object.assign(re,ue);}catch(ue){}}for(let Z in re)if(Z in Y.state)Object.is(Y.state[Z],re[Z])||(Y.state[Z]=re[Z],D(Z),b=true,(Y.notifyKeys.size===0||Y.notifyKeys.has(Z))&&(B=true));else throw {error:`wrong effect in ${String(Y.path)}`}}b&&l.flushPathSet.add(N);let J=(re=[])=>{if(c.get(j)!==L)return;re&&re.length>0&&(O.push(...re),Te=Math.max(Te,oe.get(N)||0)),k.length=0,n.path=ne,n.calledBy=Y.calledBy,r.emit(7,n),s[N]|=16;let me=e.GetNextDependency(N);(B||Q)&&(de(N),e.GetAllNextDependency(N).forEach(Se=>{te[Se]=1;}));let Z=t.GetNodeByUid(N),Pe=oe.get(N)??0,ue=Be.has(Pe)||O.length>0;for(let X of me){let Se=oe.get(X)??0,xe=t.GetPathByUid(X);if(ue&&Se>=Pe){C[X]=Se,s[X]&4||(s[X]|=4,v[I++]=X,o++),n.path=xe,n.type=2,r.emit(14,n);continue}if(s[X]&16){n.path=xe,n.type=2,r.emit(12,n);continue}if(s[X]&32||(s[X]&1)!==0){n.path=xe,n.type=s[X]&32?3:3.1,r.emit(12,n);continue}if(B||Q)he(X,1);else if(s[X]&2)he(X,2);else {let pt=oe.get(X);C[X]=pt,s[X]&4||(s[X]|=4,v[I++]=X,o++,n.path=xe,n.type=1,r.emit(14,n));}}s[N]&32&&(s[N]&=-33,y--),Z.calledBy=0,(()=>{if(!ee){ee=true;let X=y,Se=R,xe=_;n.path=ne,n.type=1,f.active=X,f.pending=Se,f.blocked=xe,r.emit(5,n),Fe();}})();};if(Re(N)&&k.length>0){let re=Ne(Y,k);re instanceof Promise?re.then(J).catch(Ce):J(re);}else J([]);},Ce=x=>{n.path=ne,n.error=x,r.emit(9,n);let J=Symbol("abort");c.set(j,J),w=0,R=0,K=0,_=0,I=0,o=0,s.fill(0),y=0,S.fill(null),g=false,r.callOnError(x);},ge=(x,J)=>{x!==Y.state[J]&&(Y.state[J]=x,b=true,D(String(J)),n.path=ne,n.key=J,n.value=x,n.calledBy=Y.calledBy,r.emit(15,n),(Y.notifyKeys.size===0||Y.notifyKeys.has(J))&&(B=true)),t.GetBucket(Y.nodeBucket[J]).isForceNotify()&&(Q=true),(B||Q)&&de(N);};n.path=ne,n.calledBy=Y.calledBy,r.emit(6,n);try{let x=[];for(let J in Y.nodeBucket){let re=t.GetBucket(Y.nodeBucket[J]);if(x.push(...re.getSideEffect()),ye){r.emit(15,{path:ne,key:String(J),value:Y.state[J],calledBy:Y.calledBy}),re.isForceNotify()&&(Q=!0),(Y.notifyKeys.size===0||Y.notifyKeys.has(J))&&de(N);continue}let me=re.evaluate({affectKey:J,triggerUid:E,getProxyByUid:Z=>t.GetNodeByUid(Z).proxy,getStateByUid:Z=>t.GetNodeByUid(Z).state,GetToken:()=>L});if(me instanceof Promise){let Z=me.then(Pe=>{c.get(j)===L&&ge(Pe,J);});le.push(Z);}else ge(me,J);}if(le.length>0)return Promise.all(le).then(()=>{Ae(x);}).catch(Ce);Ae(x);return}catch(x){Ce(x);}},Fe=async()=>{if(c.get(j)!==L){ee=false;return}ee=true;let N=u.getIsFirstFrame(),E=0,b=()=>30,B=0,Q=b();try{for(;c.get(j)===L;){let Y=B>=Q,ne=u.shouldYield();if(Y||ne){if(B>0&&(E++,(N||E%2===0)&&l.requestUpdate()),await u.yieldToMain(),c.get(j)!==L)break;B=0,N=u.getIsFirstFrame();}if(R>0&&y<40){let $=w,k=0;for(let V=0;V<$;V++){let F=z[V];if((s[F]&1)===0)continue;if(y>=40||B>=Q||u.shouldYield()){for(let ge=V;ge<w;ge++){let x=z[ge];s[x]&1&&(z[k++]=x);}w=k,R=k;break}let D=t.GetNodeByUid(F),le=t.GetPathByUid(F),ye=oe.get(F)??0,he=e.GetPrevDependency(F),Ae=he.length>1;if((!a||Ae)&&ye>ie){s[F]&=-2,R--;let ge=he.filter(x=>te[x]===1&&(s[x]&16)===0).length;W[F]=ge||0,s[F]&2||(s[F]|=2,G[K++]=F,_++),n.path=le,n.type=ge>0?4:5,f.targetLevel=ye,f.currentLevel=ie,f.pendingParentsCount=ge,r.emit(12,n);continue}s[F]&=-2,R--,(s[F]&32)===0&&(s[F]|=32,y++),n.path=le,n.calledBy=D.calledBy,r.emit(8,n),$e(F,T),B++;}if(w>$){for(let V=$;V<w;V++){let F=z[V];s[F]&1&&(z[k++]=F);}w=k,R=w;}else w=k;if(R>0&&y<40)continue}if(B<Q&&a&&_>0&&y<40){let $=!1,k=0,V=0;for(let F=0;F<K;F++){let D=G[F];if((s[D]&2)===0)continue;if(W[D]<=0&&k<Q){let ye=oe.get(D)??0,he=e.GetPrevDependency(D);if(ye<=ie||he.length<=1){s[D]&=-3,_--,s[D]&1||(s[D]|=1,z[w++]=D,R++),k++,$=!0;let Ae=t.GetPathByUid(D);n.path=Ae,n.type=4,r.emit(13,n);continue}}G[V++]=D;}if(K=V,k>0)continue;if($){if(u.shouldYield()&&(await u.yieldToMain(),c.get(j)!==L))break;continue}}if(y===0&&R===0){if(H.inFlightCount>0)break;if(O.length>0){let k=!1,V=ie,F=Array.from(new Set(O));O.length=0;for(let D of F){let le=t.GetNodeByUid(D),ye=Ee(le);if(ye&&ye.length>0){k=!0,le.calledBy=1,S[D]=ye,s[D]&=-17,s[D]&2&&(s[D]&=-3,_--),s[D]&1||(s[D]|=1,z[w++]=D,R++);let he=oe.get(le.uid)??0;he<V&&(V=he),de(le.uid),l.flushPathSet.add(le.uid);}}if(k){if(V<ie&&(ie=V),l.requestUpdate(),u.shouldYield()&&(await u.yieldToMain(),c.get(j)!==L))break;continue}}let $=1/0;for(let k=0;k<I;k++){let V=v[k];if(s[V]&4){let F=C[V];F<$&&($=F);}}for(let k=0;k<K;k++){let V=G[k];if(s[V]&2){let F=oe.get(V)??0;F>ie&&F<$&&($=F);}}if($!==1/0&&$<=ve){ie=$;let k=0;for(let F=0;F<I;F++){let D=v[F];s[D]&4&&(C[D]===$?(s[D]&=-5,o--,s[D]&1||(s[D]|=1,z[w++]=D,R++)):v[k++]=D);}I=k;let V=0;for(let F=0;F<K;F++){let D=G[F];if(s[D]&2)if((oe.get(D)??0)===$){s[D]&=-3,_--,s[D]&1||(s[D]|=1,z[w++]=D,R++);let ye=t.GetPathByUid(D);n.path=ye,n.type=3,f.level=$,r.emit(13,n);}else G[V++]=D;}K=V;continue}else {for(let k=0;k<I;k++){let V=v[k];if(s[V]&4){s[V]|=16;let F=t.GetPathByUid(V);n.path=F,n.type=6,r.emit(12,n);}}I=0,o=0;for(let k=0;k<K;k++){let V=G[k];if(s[V]&2){s[V]|=16;let F=t.GetPathByUid(V);n.path=F,n.type=6,r.emit(12,n);}}K=0,_=0;break}}R>0&&y>=40&&(n.type=2,r.emit(4,n));break}}finally{ee=false;let Y=y+_+R,ne=H.inFlightCount||0;if(!(i===L)){n.token=L,r.emit(3,n);return}if(l.requestUpdate(),Y===0&&ne===0){if(c.get(j)===L&&!Ve){Ve=true,n.type=1,r.emit(2,n),H.resetCounters(),S.fill(null),g=false;let k=performance.now();Te=-1,c.delete(j),n.token=L,n.duration=(k-qe).toFixed(2.1)+"ms",r.emit(1,n),Promise.resolve().then(()=>{r.callOnSuccess();});}}else {let k=Y===0&&ne>0?3:1;if(n.type=k,f.nums=y,f.asyncNums=ne,r.emit(4,n),ne>0&&!q){q=true;let V=()=>{if(i!==L){q=false;return}if(H.inFlightCount===0){q=false,Me(),Ye(()=>{i===L&&H.inFlightCount===0&&Fe();});return}else H.inFlightCount,requestAnimationFrame(V);};requestAnimationFrame(V);}}}};Fe();};return {TaskRunner:A,CancelTask:d,stageValueFn:M}}function je(p){let{path:e,uid:t,type:r,meta:l,dirtySignal:u,state:c}=p,a=null,i=["path","uid","type","dependOn","nodeBucket"],f={path:e,uid:t,type:r,meta:l,dirtySignal:u,createView:(n={})=>{if(a&&Object.keys(n).length===0)return a;let g=new Proxy(n,{get(h,m){let M=m;return Reflect.has(h,m)?Reflect.get(h,m):M in p.state?p.state[M]:M in p?p[M]:l&&M in l?l[M]:Reflect.get(h,m)},set(h,m,M){return false},ownKeys(h){let m=new Set([...Reflect.ownKeys(h),...Object.keys(c||{}),...Object.keys(l||{}),...i]);return Array.from(m)},getOwnPropertyDescriptor(h,m){let M=m;return Reflect.has(h,m)||c&&M in c||l&&M in l||i.includes(M)?{enumerable:true,configurable:true}:Reflect.getOwnPropertyDescriptor(h,m)}});return a=g,g}};return "children"in p?{...f,children:p.children}:{...f,state:p.state,nodeBucket:p.nodeBucket,notifyKeys:p.notifyKeys,dependOn:p.dependOn,calledBy:0,get proxy(){return a}}}var ct=(p,e,t,r,l,u,c)=>{let a=p.useEntangleStep,i=[],d=[],f=new Set,n=r,m=t,M=0,A=0,T=0,P=100,se=()=>{let y={link:null,impactNode:null,impactUid:-1,hitTargetUids:null,isDirty:false,propose:null};return y.propose={set:(s,W,C=1)=>{y.epoch===T&&W!==y.impactNode.state[s]&&(y.link.count++,(!d[y.impactUid]||d[y.impactUid].length===0)&&(d[y.impactUid]=[],A++),d[y.impactUid].push({key:s,value:W,weight:C}),y.isDirty||(y.hitTargetUids.push(y.impactUid),y.isDirty=true));},update:(s,W,C="add")=>{y.epoch===T&&(y.link.count++,(!d[y.impactUid]||d[y.impactUid].length===0)&&(d[y.impactUid]=[],A++),d[y.impactUid].push({key:s,delta:W,op:C,weight:1}),y.isDirty||(y.hitTargetUids.push(y.impactUid),y.isDirty=true));},patch:(s,W)=>{y.epoch===T&&(y.link.count++,(!d[y.impactUid]||d[y.impactUid].length===0)&&(d[y.impactUid]=[],A++),d[y.impactUid].push({key:s,patch:W,weight:1}),y.isDirty||(y.hitTargetUids.push(y.impactUid),y.isDirty=true));}},y},L=Array.from({length:P},se),j=P-1,ee=(y,s,W)=>{let C=s.path,z=y.impact;if(y.count>=a){c.emit("entangle:blocked",{observer:C,target:z,count:y.count});return}let w=n(z),R=y.isProxy?s.proxy:s,G=y.isProxy?w.proxy:w;if(y.filter&&!y.filter(R,G))return;let K,_=true;j<0?(K=se(),_=false):K=L[j--];let v=T;K.epoch=v,K.isDirty=false,K.link=y,K.impactNode=w,K.impactUid=w.uid,K.hitTargetUids=W;let I=y.emit(R,G,K.propose);if(I instanceof Promise||I&&typeof I.then=="function")return M++,(async()=>{try{await I;}catch(o){c.emit("node:error",{path:C,error:o}),c.onError({path:C,error:o});}finally{v===T&&M--,_&&(L[++j]=K);}})();_&&(L[++j]=K);};return {useEntangle:y=>{let{cause:s,impact:W,via:C,emit:z,filter:w,isProxy:R}=y;if(!C||C.length===0){c.emit("entangle:warn",{path:s,type:"no_keys"});return}let K=n(s).uid;i[K]||(i[K]=new Map);let _=i[K];for(let v=0;v<C.length;v++){let I=C[v];_.has(I)||_.set(I,[]),_.get(I).push({impact:W,emit:z,filter:w,count:0,isProxy:!!R});}},updateEntangleLevel:()=>{let y=m();f.clear();for(let s=0;s<i.length;s++)if(i[s]!==void 0){let W=y.get(s)||0;f.add(W);}},Turnstile:{volatileLevels:f,get inFlightCount(){return M},get hasPendingGhosts(){return A>0},nextEpoch:()=>{T++,M=0,A=0,d.length=0;},hasObserver:y=>i[y]!==void 0,getTriggerKeys:y=>{let s=i[y];return s?Array.from(s.keys()):[]},receiveGhosts:(y,s=[])=>{let W=y.uid,C=[],z=i[W];if(!z||s.length===0)return C;let w=[];for(let v=0;v<s.length;v++){let I=z.get(s[v]);if(I)for(let o=0;o<I.length;o++)w.push(I[o]);}let R=0,G=false,K=null;for(;R<w.length;R++){if(e.shouldYield()){G=true;break}let v=ee(w[R],y,C);if(v){K=v,G=true,R++;break}}let _=()=>{if(C.length<=1)return C;let v=[],I=Object.create(null);for(let o=0;o<C.length;o++){let S=C[o];I[S]||(I[S]=true,v.push(S));}return v};return G?(async()=>{for(K&&await K,e.shouldYield()&&await e.yieldToMain();R<w.length;){let v=[],I=Math.min(R+P,w.length);for(;R<I;R++){let o=ee(w[R],y,C);o&&v.push(o);}v.length>0&&await Promise.all(v.map(async o=>{await o,e.shouldYield()&&await e.yieldToMain();})),e.shouldYield()&&await e.yieldToMain();}return _()})():_()},resolveGhosts:y=>{let s=y.uid,W=d[s];if(!W||W.length===0)return [];let C=[],z=Object.create(null);for(let w=0;w<W.length;w++){let R=W[w];z[R.key]||(z[R.key]=[]),z[R.key].push(R);}for(let w in z){let R=z[w],G=y.state[w],K,_=-1/0,v=false;for(let I=0;I<R.length;I++){let o=R[I];if(o.patch!==void 0&&(G=o.patch(G)),o.value!==void 0){let S=o.weight??1;S>=_&&(_=S,K=o.value,v=true);}}v&&(G=K);for(let I=0;I<R.length;I++){let o=R[I];if(o.delta!==void 0)switch(o.op||"add"){case "add":G=(typeof G=="number"?G:0)+o.delta;break;case "remove":G=Array.isArray(G)?G.filter(O=>O!==o.delta):G;break;case "intersect":G=Array.isArray(G)?G.filter(O=>o.delta.includes(O)):o.delta;break;case "union":{let O=Array.isArray(G)?G:[],H=Array.isArray(o.delta)?o.delta:[o.delta];G=[...new Set([...O,...H])];break}case "merge":{let O=typeof G=="object"&&G!==null&&!Array.isArray(G)?G:{},H=typeof o.delta=="object"&&o.delta!==null&&!Array.isArray(o.delta)?o.delta:{};G={...O,...H};break}}}Object.is(y.state[w],G)||(y.state[w]=G,C.push(w));}return d[s]=[],A--,C.length>0?C:[]},resetCounters:()=>{for(let y=0;y<i.length;y++){let s=i[y];if(s)for(let W of s.values())for(let C=0;C<W.length;C++)W[C].count=0;}}}}};function yt(p,e,t,r,l){let u=lt(),c=0,a=new Map,i=[],d=[],f=[],n=[],g=false,h=new Set,M=async()=>{let o=Array.from(h);if(h.clear(),"signalTrigger"in l&&typeof l.signalTrigger=="function")for(let S of o){let O=s(S);l.signalTrigger(O.dirtySignal);}else "emit"in l&&l.emit(o);},A=()=>{g||(g=true,requestAnimationFrame(()=>{try{for(;h.size>0;)M();}finally{g=false;}}));},{useEntangle:T,updateEntangleLevel:P,Turnstile:se}=ct({useEntangleStep:p.useEntangleStep},u,e.GetUidToLevelMap,y,s,W,{emit:r.emit,onError:r.callOnError}),{TaskRunner:L,CancelTask:j,stageValueFn:ee}=ut({useGreedy:p.useGreedy},e,{GetNodeByPath:y,GetNodeByUid:s,GetPathByUid:W,GetBucket:w,GetMaxUid:R,Turnstile:se},r,{requestUpdate:A,flushPathSet:h},u),q=o=>{throw new Error(`[MeshFlow] Duplicate Path: ${o}`)},U=o=>{a.has(o.path)&&q(String(o.path));let S=++c,O={path:o.path,getNode:fe=>y(fe)},H=(fe,ce="value")=>{let Me=fe({...O}),pe=y(o.path);if(!Object.is(pe.state[ce],Me)){if(t.createHistoryAction&&t.pushIntoHistory){let Re=t.createHistoryAction([{path:o.path,value:pe.state[ce]},{path:o.path,value:Me}],Ne=>{let Ee=y(Ne.path);Ee.state[ce]=Ne.value,G(Ne.path);});t.pushIntoHistory(Re);}pe.state[ce]=Me,G(o.path);}},ae=je({uid:S,type:o.type,path:o.path,state:o.state,meta:o.meta,nodeBucket:{},dirtySignal:"signalCreator"in l?l.signalCreator():void 0,notifyKeys:o.notifyKeys,dependOn:H});return a.set(ae.path,S),f[S]=ae.path,i[S]=ae,ae},te=o=>{a.has(o.path)&&q(String(o.path));let S=++c,O=je({uid:S,type:o.type,path:o.path,state:{},meta:o,nodeBucket:{},children:o.children});return a.set(O.path,S),d[S]=O,O};function y(o){let S=a.get(o),O=i[S];if(!O)throw Error("Wrong id");return O}function s(o){let S=i[o];if(!S)throw Error("Wrong id");return S}function W(o){return f[o]}function C(o){let S=a.get(o);return d[S]}function z(o){return n.push(o)-1}function w(o){let S=n[o];if(!S)throw Error("Wrong id");return S}function R(){return c}let G=o=>{let S=y(o);if(!S)throw Error("Wrong id");h.add(S.uid),A();let O=e.GetNextDependency(S.uid);K(S.uid,O);};function K(o,S){L(o,S);}return {registerNode:U,registerGroupNode:te,GetNodeByPath:y,GetGroupByPath:C,notify:G,notifyAll:async()=>{Promise.resolve().then(async()=>{let o=e.GetDependencyOrder();if(!o||o.length===0)return;let S=o[0];try{L(null,S);}catch(O){throw r.callOnError(O),O}finally{A();}});},batchNotify:o=>{if(!o||o.length===0)return;if(t.createHistoryAction&&t.pushIntoHistory){let O=t.createHistoryAction([o.map(H=>({path:H.path,key:H.key,value:y(H.path).state[H.key]})),o.map(H=>({path:H.path,key:H.key,value:H.value}))],H=>{let ae=new Set;H.forEach(fe=>{let ce=y(fe.path);ce.state[fe.key]=fe.value,h.add(ce.uid),ae.add(ce.uid);}),A(),ae.size>0&&L(null,Array.from(ae));});t.pushIntoHistory(O);}let S=new Set;o.forEach(O=>{let H=y(O.path);H.state[O.key]=O.value,h.add(H.uid),S.add(H.uid);}),A(),S.size>0&&L(null,Array.from(S));},useEntangle:T,updateEntangleLevel:P,SetBucket:z,GetBucket:w,CancelTask:j,stageValueFn:ee,refresTarget:o=>{h.add(o);},UITrigger:l,UidToNodeMap:i}}function dt(p,e){let t=false,r=false,l=false,u=false,c=new Map,a=[],i=[],d=[],f=[],n=[],g=[],h=[],m=new Map,{GetNextDependency:A,GetPrevDependency:T,GetAllPrevDependency:P,GetAllNextDependency:se,rebuildDirectDependencyMaps:L}=nt(()=>a,()=>d,()=>g,()=>n),j={},ee={};if(e.modules.useHistory){let E=e.modules.useHistory,b;E.isMeshModuleInited?b=E:b=E();let{Undo:B,Redo:Q,PushIntoHistory:Y,CreateHistoryAction:ne,updateUndoSize:$,updateRedoSize:k}=b();j.pushIntoHistory=Y,j.createHistoryAction=ne,ee={Undo:B,Redo:Q,updateUndoSize:$,updateRedoSize:k};}let q=!!e.modules.useMeshRenderGate,U={};if(q){let E=e.modules.useMeshRenderGate.isMeshModuleInited,b=e.modules.useMeshRenderGate;U=(E?b:b())(()=>ae);}let{onError:te,callOnError:y}=st(),{onSuccess:s,callOnSuccess:W}=at(),{onStart:C,callOnStart:z}=it(),{emit:w,usePlugin:R,destroyPlugin:G}=ot(),{SetTrace:K,useTrace:_}=et(),v=_();R(v);let I=q?{...U}:{...e.UITrigger},o=yt({useGreedy:e.config.useGreedy,useEntangleStep:e.config.useEntangleStep||100},{GetDependencyOrder:()=>h,GetAllNextDependency:se,GetNextDependency:A,GetPrevDependency:T,GetAllPrevDependency:P,GetUidToLevelMap:()=>m},j,{callOnError:y,callOnSuccess:W,callOnStart:z,emit:w},I),{SetBucket:S,GetBucket:O,GetGroupByPath:H,GetNodeByPath:ae,notifyAll:fe,useEntangle:ce,updateEntangleLevel:Me,CancelTask:pe,stageValueFn:Re,refresTarget:Ne}=o;q&&U.init();let Ee={};if(e.modules.useInternalForm){let{uiSchema:E,GetFormData:b}=e.modules.useInternalForm(o,p);Ee={uiSchema:E,GetFormData:b};}let Ie={};if(e.modules.useSchemaValidators){let{SetValidators:E}=e.modules.useSchemaValidators(ae);Ie={SetValidators:E};}let{SetRule:Be,SetRules:Te}=Ze(ae,S,O,a,d,i,f,c),{SetStrategy:oe}=Je(ae,O),ie=rt(a,c),ve=()=>{let E=ie();h=E.steps,m=E.levelMap,de();},de=()=>{l&&(Me(),l=false);},ke=()=>{u||(u=true,Promise.resolve().then(de).finally(()=>{u=false;}));},we=()=>{r||(r=true,Promise.resolve().then(()=>{if(ve(),t){let{directNextMap:E,directPrevMap:b}=L(h.flat());n=E,g=b;}}).finally(()=>{r=false,t=false;}));};return {SetRule:(E,b,B,Q)=>{Be(E,b,B,Q),t=true,we();},SetRules:(E,b,B,Q)=>{Te(E,b,B,Q),t=true,we();},SetStrategy:oe,useEntangle:E=>{ce(E),l=true,ke();},SetTrace:K,usePlugin:R,SetValue:(E,b,B)=>{de(),ae(E).dependOn(()=>B,b);},GetValue:(E,b="value")=>ae(E).proxy[b],SetValues:E=>{de(),o.batchNotify(E);},GetGroupByPath:H,notifyAll:async()=>{ve(),await fe();},GetAllDependency:()=>a,GetDependencyOrder:()=>h,historyExports:ee,formExports:Ee,validatorExports:Ie,batchRenderExport:U,hasRenderGate:()=>q,onError:te,onSuccess:s,onStart:C,scheduler:o,destroyPlugin:G,CancelTask:pe,StageValue:(E,b,B)=>{let Q=ae(E);Re(Q.uid,b,B);},SilentSet:(E,b,B)=>{let Q=ae(E);return !Q||Object.is(Q.state[b],B)?false:(Q.state[b]=B,Ne(Q.uid),true)}}}var Oe=new Map,ht=(p,e,t)=>{try{if(Oe.has(p))throw Error("engineID repeated");let r=dt(e,{config:t.config||{useGreedy:!1},UITrigger:t.UITrigger,modules:t.modules??{},plugins:{}}),{SetRule:l,SetRules:u,SetValues:c,SetStrategy:a,SetValue:i,GetValue:d,usePlugin:f,useEntangle:n,GetGroupByPath:g,notifyAll:h,SetTrace:m,GetAllDependency:M,GetDependencyOrder:A,historyExports:T,formExports:P,validatorExports:se,batchRenderExport:L,hasRenderGate:j,onError:ee,onSuccess:q,onStart:U,scheduler:te,destroyPlugin:y,CancelTask:s,StageValue:W,SilentSet:C}=r,z={config:{SetRule:l,SetRules:u,SetStrategy:a,notifyAll:h,SetTrace:m,usePlugin:f,hasRenderGate:j,useEntangle:n},data:{SetValue:i,GetValue:d,SetValues:c,GetGroupByPath:g,StageValue:W,SilentSet:C},dependency:{GetAllDependency:M,GetDependencyOrder:A},hooks:{onError:ee,onSuccess:q,onStart:U}},w=(K,_,v)=>{!_||typeof _!="object"||Object.keys(_).forEach(I=>{let o=_[I];if(typeof o=="object"&&o!==null)K[I]=K[I]||{},w(K[I],o,v);else if(typeof o=="function"){let S=I;if(S==="useMeshRenderGate")S="render";else if(S.startsWith("use")){let O=S.slice(3);S=O.charAt(0).toLowerCase()+O.slice(1);}I==="useHistory"&&v.exports.history&&Object.keys(v.exports.history).length>0?K[S]=v.exports.history:I==="useInternalForm"&&v.exports.form&&Object.keys(v.exports.form).length>0?K[S]=v.exports.form:I==="useSchemaValidators"&&v.exports.validator&&Object.keys(v.exports.validator).length>0?K[S]=v.exports.validator:I==="useMeshRenderGate"&&v.exports.render?K[S]=v.exports.render:K[S]=o(v.scheduler,v.Schema);}});},R={...z,destroyPlugin:y,CancelTask:s,modules:{}},G=t.modules;return G&&w(R.modules,G,{scheduler:te,Schema:e,exports:{history:T,form:P,validator:se,render:L}}),Oe.set(p,R),R}catch(r){throw Error(r)}},En=()=>(p,e,t)=>ht(p,e,t),vn=p=>{let e=Oe.get(p);if(!e)throw Error("Engine not found.");return e},An=p=>{let e=Oe.get(p);e.destroyPlugin(),e.CancelTask(),Oe.delete(p);};export{_e as DefaultStrategy,De as MeshFlowEventsName,Le as TriggerCause,An as deleteEngine,vn as useEngine,ht as useMeshFlow,En as useMeshFlowDefiner,yt as useScheduler};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meshflow/core",
3
- "version": "0.5.2",
3
+ "version": "0.5.3",
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",