@meshflow/core 0.1.6 → 0.1.7

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/README.md CHANGED
@@ -2,6 +2,9 @@
2
2
 
3
3
  **基于水位线调度(Watermark Scheduling)的轻量级拓扑逻辑引擎。**
4
4
 
5
+ [![Documentation](https://img.shields.io/badge/docs-VitePress-blue.svg)](https://meshflow-docs.vercel.app/)
6
+ [![Demo](https://img.shields.io/badge/demo-Vercel-orange.svg)](https://meshflow-factory-demo.vercel.app/)
7
+
5
8
  ## 🎯 它解决了什么问题?
6
9
 
7
10
  在复杂的**中后台表单**或**大型配置系统**中,数据的联动关系往往错综复杂。`@meshflow/core` 专门解决以下痛点:
@@ -29,7 +32,7 @@
29
32
  * **⚡ 惰性求值与记忆化**:引入“桶计算”缓存机制,在拓扑传播过程中自动比对输入特征,仅在依赖项发生实质性变更时才触发逻辑重算。
30
33
  * **⚡ 变更剪枝**:即使节点处于受影响路径上,若输入状态未通过有效性检查,引擎将自动截断该路径的后续传播,实现真正的计算最小化。
31
34
  * **🚨 循环依赖检测**:在节点定义阶段实时进行 $O(V+E)$ 的环检测,提前发现逻辑死循环。
32
- * **📦 极简轻量**:零依赖,体积仅 ~7kB(zipped),适配任何 JavaScript 运行时。
35
+ * **📦 极简轻量**:零依赖,体积仅 ~8kB(zipped),适配任何 JavaScript 运行时。
33
36
  * **🔌 插件化架构 (New)**:支持生命周期拦截与监听(如官方调试插件 `@meshflow/logger`)。
34
37
  ---
35
38
 
@@ -40,7 +43,7 @@
40
43
  ```bash
41
44
  npm install @meshflow/core
42
45
  ```
43
- #### 定义节点
46
+ #### 初始化引擎
44
47
  ```typescript
45
48
  import { useMeshFlow } from "@meshflow/core";
46
49
  const schema = {
@@ -48,8 +51,8 @@ const schema = {
48
51
  name: 'billing',
49
52
  label: '计费与汇总',
50
53
  children: [
51
- { type: 'number', name: 'totalPrice', label: '预估月度总价', defaultValue: 0, },
52
- { type: 'input', name: 'priceDetail', label: '计费项说明', defaultValue: '基础配置费用'}
54
+ { type: 'number', name: 'totalPrice', label: '预估月度总价', value: 0, },
55
+ { type: 'input', name: 'priceDetail', label: '计费项说明', value: '基础配置费用'}
53
56
  ]
54
57
  };
55
58
 
@@ -68,7 +71,7 @@ const engine = useMeshFlow<Ref<number,number>,AllPath>('main',schema, {
68
71
  #### 添加联动依赖
69
72
  ```typescript
70
73
  //声明联动规则:当总价 > 2000 时,自动修改描述与主题
71
- engine.config.SetRule("billing.totalPrice", "billing.priceDetail", "defaultValue", {
74
+ engine.config.SetRule("billing.totalPrice", "billing.priceDetail", "value", {
72
75
  logic: ({ slot }) => {
73
76
  const [total] = slot.triggerTargets; // 从触发目标中解构出 totalPrice
74
77
  return total > 2000 ? "大客户折扣" : undefined;
@@ -93,4 +96,5 @@ engine.config.notifyAll();
93
96
  `@meshflow/core` 通过内部的 **DAG(有向无环图)** 和 **Watermark** 机制,确保:
94
97
 
95
98
  * **确定性**:无论异步耗时多久,最终状态始终保持一致。
96
- * **原子性**:一次输入变化,仅触发一次拓扑链路的完整更新。
99
+ * **原子性**:一次输入变化,仅触发一次拓扑链路的完整更新。
100
+
package/index.d.mts CHANGED
@@ -70,7 +70,7 @@ declare class SchemaBucket<P> {
70
70
  private strategy;
71
71
  contract: ContractType;
72
72
  private rules;
73
- private isDefaultValue;
73
+ private isValue;
74
74
  private id;
75
75
  private cache;
76
76
  private pendingPromise;
@@ -78,7 +78,7 @@ declare class SchemaBucket<P> {
78
78
  private deps;
79
79
  private _forceNotify;
80
80
  promiseToken: any;
81
- globalCalcCount: number;
81
+ private effectArray;
82
82
  constructor(baseValue: any, key: string, path: P);
83
83
  forceNotify(): void;
84
84
  isForceNotify(): boolean;
@@ -88,6 +88,14 @@ declare class SchemaBucket<P> {
88
88
  setRules(value: any, DepsArray?: Array<[P, any]>): () => void;
89
89
  updateDeps(DepsArray: Array<[P, any]>): void;
90
90
  setRule(value: any, DepsArray?: Array<[P, any]>): (() => void) | undefined;
91
+ setSideEffect(data: {
92
+ fn: (args: any[]) => any;
93
+ args: any[];
94
+ }): void;
95
+ getSideEffect(): {
96
+ fn: (args: any) => any;
97
+ args: any[];
98
+ }[];
91
99
  evaluate(api: any): any;
92
100
  private finalizeSync;
93
101
  private inferType;
@@ -113,13 +121,13 @@ type InputField = BaseField & {
113
121
  required: boolean;
114
122
  min?: number;
115
123
  maxLength: number;
116
- defaultValue: string | number;
124
+ value: string | number;
117
125
  };
118
126
  type CheckboxField = BaseField & {
119
127
  type: "checkbox";
120
128
  description?: string;
121
129
  required: boolean;
122
- defaultValue: boolean;
130
+ value: boolean;
123
131
  };
124
132
  type SelectField = BaseField & {
125
133
  type: "select";
@@ -128,7 +136,7 @@ type SelectField = BaseField & {
128
136
  label: string;
129
137
  value: any;
130
138
  }[];
131
- defaultValue: any;
139
+ value: any;
132
140
  };
133
141
  type GroupField = Omit<BaseField, "label" | "name" | "placeholder" | "validators"> & {
134
142
  type: "group";
@@ -189,12 +197,16 @@ declare const useEngineManager: <T, P extends string>(id: string | symbol, Schem
189
197
  priority?: number;
190
198
  forceNotify?: boolean;
191
199
  logic: (api: logicApi) => any;
200
+ effect?: ((args: any) => any) | undefined;
201
+ effectArgs?: Array<KeysOfUnion<Exclude<FormFieldSchema, GroupField>>>;
192
202
  } | undefined) => void;
193
203
  SetRules: (outDegreePaths: P[], inDegreePath: P, key: KeysOfUnion<InputField | CheckboxField | SelectField>, options?: {
194
204
  value?: any;
195
205
  priority?: number;
196
206
  forceNotify?: boolean;
197
207
  logic: (api: logicApi) => any;
208
+ effect?: ((args: any) => any) | undefined;
209
+ effectArgs?: Array<KeysOfUnion<Exclude<FormFieldSchema, GroupField>>>;
198
210
  } | undefined) => void;
199
211
  SetStrategy: (path: unknown, key: KeysOfUnion<Exclude<FormFieldSchema, GroupField>>, strategy: DefaultStarategy) => void;
200
212
  SetValidators: (path: P, options: {
@@ -232,12 +244,16 @@ declare const useEngine: <T = any, P extends string = string>(id: string | symbo
232
244
  priority?: number;
233
245
  forceNotify?: boolean;
234
246
  logic: (api: logicApi) => any;
247
+ effect?: ((args: any) => any) | undefined;
248
+ effectArgs?: Array<KeysOfUnion<Exclude<FormFieldSchema, GroupField>>>;
235
249
  } | undefined) => void;
236
250
  SetRules: (outDegreePaths: P[], inDegreePath: P, key: KeysOfUnion<InputField | CheckboxField | SelectField>, options?: {
237
251
  value?: any;
238
252
  priority?: number;
239
253
  forceNotify?: boolean;
240
254
  logic: (api: logicApi) => any;
255
+ effect?: ((args: any) => any) | undefined;
256
+ effectArgs?: Array<KeysOfUnion<Exclude<FormFieldSchema, GroupField>>>;
241
257
  } | undefined) => void;
242
258
  SetStrategy: (path: unknown, key: KeysOfUnion<Exclude<FormFieldSchema, GroupField>>, strategy: DefaultStarategy) => void;
243
259
  SetValidators: (path: P, options: {
@@ -284,12 +300,16 @@ declare const useMeshFlow: <T, P extends string>(id: string | symbol, Schema: an
284
300
  priority?: number;
285
301
  forceNotify?: boolean;
286
302
  logic: (api: logicApi) => any;
303
+ effect?: ((args: any) => any) | undefined;
304
+ effectArgs?: Array<KeysOfUnion<Exclude<FormFieldSchema, GroupField>>>;
287
305
  } | undefined) => void;
288
306
  SetRules: (outDegreePaths: P[], inDegreePath: P, key: KeysOfUnion<InputField | CheckboxField | SelectField>, options?: {
289
307
  value?: any;
290
308
  priority?: number;
291
309
  forceNotify?: boolean;
292
310
  logic: (api: logicApi) => any;
311
+ effect?: ((args: any) => any) | undefined;
312
+ effectArgs?: Array<KeysOfUnion<Exclude<FormFieldSchema, GroupField>>>;
293
313
  } | undefined) => void;
294
314
  SetStrategy: (path: unknown, key: KeysOfUnion<Exclude<FormFieldSchema, GroupField>>, strategy: DefaultStarategy) => void;
295
315
  SetValidators: (path: P, options: {
package/index.d.ts CHANGED
@@ -70,7 +70,7 @@ declare class SchemaBucket<P> {
70
70
  private strategy;
71
71
  contract: ContractType;
72
72
  private rules;
73
- private isDefaultValue;
73
+ private isValue;
74
74
  private id;
75
75
  private cache;
76
76
  private pendingPromise;
@@ -78,7 +78,7 @@ declare class SchemaBucket<P> {
78
78
  private deps;
79
79
  private _forceNotify;
80
80
  promiseToken: any;
81
- globalCalcCount: number;
81
+ private effectArray;
82
82
  constructor(baseValue: any, key: string, path: P);
83
83
  forceNotify(): void;
84
84
  isForceNotify(): boolean;
@@ -88,6 +88,14 @@ declare class SchemaBucket<P> {
88
88
  setRules(value: any, DepsArray?: Array<[P, any]>): () => void;
89
89
  updateDeps(DepsArray: Array<[P, any]>): void;
90
90
  setRule(value: any, DepsArray?: Array<[P, any]>): (() => void) | undefined;
91
+ setSideEffect(data: {
92
+ fn: (args: any[]) => any;
93
+ args: any[];
94
+ }): void;
95
+ getSideEffect(): {
96
+ fn: (args: any) => any;
97
+ args: any[];
98
+ }[];
91
99
  evaluate(api: any): any;
92
100
  private finalizeSync;
93
101
  private inferType;
@@ -113,13 +121,13 @@ type InputField = BaseField & {
113
121
  required: boolean;
114
122
  min?: number;
115
123
  maxLength: number;
116
- defaultValue: string | number;
124
+ value: string | number;
117
125
  };
118
126
  type CheckboxField = BaseField & {
119
127
  type: "checkbox";
120
128
  description?: string;
121
129
  required: boolean;
122
- defaultValue: boolean;
130
+ value: boolean;
123
131
  };
124
132
  type SelectField = BaseField & {
125
133
  type: "select";
@@ -128,7 +136,7 @@ type SelectField = BaseField & {
128
136
  label: string;
129
137
  value: any;
130
138
  }[];
131
- defaultValue: any;
139
+ value: any;
132
140
  };
133
141
  type GroupField = Omit<BaseField, "label" | "name" | "placeholder" | "validators"> & {
134
142
  type: "group";
@@ -189,12 +197,16 @@ declare const useEngineManager: <T, P extends string>(id: string | symbol, Schem
189
197
  priority?: number;
190
198
  forceNotify?: boolean;
191
199
  logic: (api: logicApi) => any;
200
+ effect?: ((args: any) => any) | undefined;
201
+ effectArgs?: Array<KeysOfUnion<Exclude<FormFieldSchema, GroupField>>>;
192
202
  } | undefined) => void;
193
203
  SetRules: (outDegreePaths: P[], inDegreePath: P, key: KeysOfUnion<InputField | CheckboxField | SelectField>, options?: {
194
204
  value?: any;
195
205
  priority?: number;
196
206
  forceNotify?: boolean;
197
207
  logic: (api: logicApi) => any;
208
+ effect?: ((args: any) => any) | undefined;
209
+ effectArgs?: Array<KeysOfUnion<Exclude<FormFieldSchema, GroupField>>>;
198
210
  } | undefined) => void;
199
211
  SetStrategy: (path: unknown, key: KeysOfUnion<Exclude<FormFieldSchema, GroupField>>, strategy: DefaultStarategy) => void;
200
212
  SetValidators: (path: P, options: {
@@ -232,12 +244,16 @@ declare const useEngine: <T = any, P extends string = string>(id: string | symbo
232
244
  priority?: number;
233
245
  forceNotify?: boolean;
234
246
  logic: (api: logicApi) => any;
247
+ effect?: ((args: any) => any) | undefined;
248
+ effectArgs?: Array<KeysOfUnion<Exclude<FormFieldSchema, GroupField>>>;
235
249
  } | undefined) => void;
236
250
  SetRules: (outDegreePaths: P[], inDegreePath: P, key: KeysOfUnion<InputField | CheckboxField | SelectField>, options?: {
237
251
  value?: any;
238
252
  priority?: number;
239
253
  forceNotify?: boolean;
240
254
  logic: (api: logicApi) => any;
255
+ effect?: ((args: any) => any) | undefined;
256
+ effectArgs?: Array<KeysOfUnion<Exclude<FormFieldSchema, GroupField>>>;
241
257
  } | undefined) => void;
242
258
  SetStrategy: (path: unknown, key: KeysOfUnion<Exclude<FormFieldSchema, GroupField>>, strategy: DefaultStarategy) => void;
243
259
  SetValidators: (path: P, options: {
@@ -284,12 +300,16 @@ declare const useMeshFlow: <T, P extends string>(id: string | symbol, Schema: an
284
300
  priority?: number;
285
301
  forceNotify?: boolean;
286
302
  logic: (api: logicApi) => any;
303
+ effect?: ((args: any) => any) | undefined;
304
+ effectArgs?: Array<KeysOfUnion<Exclude<FormFieldSchema, GroupField>>>;
287
305
  } | undefined) => void;
288
306
  SetRules: (outDegreePaths: P[], inDegreePath: P, key: KeysOfUnion<InputField | CheckboxField | SelectField>, options?: {
289
307
  value?: any;
290
308
  priority?: number;
291
309
  forceNotify?: boolean;
292
310
  logic: (api: logicApi) => any;
311
+ effect?: ((args: any) => any) | undefined;
312
+ effectArgs?: Array<KeysOfUnion<Exclude<FormFieldSchema, GroupField>>>;
293
313
  } | undefined) => void;
294
314
  SetStrategy: (path: unknown, key: KeysOfUnion<Exclude<FormFieldSchema, GroupField>>, strategy: DefaultStarategy) => void;
295
315
  SetValidators: (path: P, options: {
package/index.js CHANGED
@@ -1 +1 @@
1
- 'use strict';var te=class{computedRules=[];store={OR:(t,r)=>{let e,l,n=this.computedRules;for(let s=0;s<n.length;s++){let a=n[s],o=a.logic(t);if(o instanceof Promise)return (async()=>{let p=await o;if(a.entityId==="__base__"?l=p:p&&(e=a.value),typeof e>"u")for(let u=s+1;u<n.length;u++){let y=n[u],T=y.logic(t),f=T instanceof Promise?await T:T;if(y.entityId==="__base__"){l=f;continue}if(f){e=y.value;break}}return typeof e>"u"&&(e=l),{res:e,version:r}})();let i=o;if(a.entityId==="__base__"){l=i;continue}if(i){e=a.value;break}}return typeof e>"u"&&(e=l),{res:e,version:r}},PRIORITY:(t,r)=>{let e=null,l=this.computedRules;for(let n=0;n<l.length;n++){let a=l[n].logic(t);if(a instanceof Promise)return (async()=>{let o=await a;if(o!==void 0)return {res:o,version:r};for(let i=n+1;i<l.length;i++){let p=l[i].logic(t),u=p instanceof Promise?await p:p;if(u!==void 0)return {res:u,version:r}}return {res:void 0,version:r}})();if(a!==void 0)return {res:a,version:r}}return {res:e,version:r}}};CurrentStrategy=()=>{};CurrentStrategyType="PRIORITY";getRules=()=>{};constructor(t){this.getRules=t,this.CurrentStrategy=this.store.PRIORITY,this.updateComputedRules();}updateComputedRules(){let t=this.getRules();this.CurrentStrategyType==="PRIORITY"?this.computedRules=Array.from(t.values()).map(r=>Array.from(r)).flat().sort((r,e)=>e.priority-r.priority):this.computedRules=Array.from(t.values()).map(r=>Array.from(r)).flat();}setStrategy(t){this.CurrentStrategy=this.store[t],this.updateComputedRules();}evaluate(t,r){return this.CurrentStrategy(t,r)}},Q=class{path;strategy;contract;rules=new Map;isDefaultValue=false;id=0;cache=void 0;pendingPromise=null;version=0;deps=new Map;_forceNotify=false;promiseToken=null;globalCalcCount=0;constructor(t,r,e){let l=()=>this.rules;this.strategy=new te(l),this.path=e,this.isDefaultValue=r==="defaultValue",this.contract=this.inferType(t),this.cache=t,this.setRule({priority:0,entityId:"__base__",logic:()=>t});}forceNotify(){this._forceNotify=true;}isForceNotify(){return this._forceNotify}setStrategy(t){this.strategy.setStrategy(t);}updateInputValueRule(t){this.isDefaultValue&&this.setRule({priority:1,entityId:"__input_value__",logic:()=>t});}setDefaultRule(t){let r=new Set;r.add(t),this.rules.set(t.id,r);}setRules(t,r){r&&this.updateDeps(r);let e=++this.id,l={...t,entityId:e};for(let n of t.triggerPaths)this.rules.has(n)||this.rules.set(n,new Set),this.rules.get(n).add(l);return this.strategy.updateComputedRules(),()=>{for(let n of t.triggerPaths){let s=this.rules.get(n);s&&(s.delete(l),s.size===0&&(this.rules.delete(n),this.deps.delete(n)));}this.strategy.updateComputedRules();}}updateDeps(t){for(let[r,e]of t)this.deps.set(r,e);}setRule(t,r){if(r&&this.updateDeps(r),typeof t.entityId=="string"){this.setDefaultRule(t);return}let e=++this.id,l={...t,entityId:e};if(t)for(let n of t.triggerPaths)this.rules.has(n)||this.rules.set(n,new Set),this.rules.get(n).add(l);return this.strategy.updateComputedRules(),()=>{for(let n of t.triggerPaths){let s=this.rules.get(n);s&&(s.delete(l),s.size===0&&(this.rules.delete(n),this.deps.delete(n)));}this.strategy.updateComputedRules();}}evaluate(t){let r=null;if(t.GetToken&&(r=t.GetToken()),this.pendingPromise&&this.promiseToken!==r&&(this.pendingPromise=null,this.promiseToken=null),this.pendingPromise)return this.pendingPromise;let e=false;if(typeof t.triggerPath=="string"){e=true;let s=this.deps.get(t.triggerPath),a=t.GetValueByPath(t.triggerPath);if(typeof s=="object"||typeof a=="object")e=false;else {let o=Array.from(this.deps.keys());for(let i of o){let p=this.deps.get(i),u=t.GetValueByPath(i);if(p!==u){e=false;break}}}}if(e)return this.cache;this.promiseToken=r;let l=++this.version,n=this.strategy.evaluate(t,l);if(!(n instanceof Promise)){let{res:s,version:a}=n;return this.finalizeSync(s,a,t,r)}return this.pendingPromise=(async()=>{try{let{res:s,version:a}=await n;return this.finalizeSync(s,a,t,r)}catch(s){throw {path:this.path,error:s}}finally{this.promiseToken===r&&(this.pendingPromise=null,this.promiseToken=null);}})(),this.pendingPromise}finalizeSync(t,r,e,l){return l!==this.promiseToken||r<this.version?this.cache:(this.cache=t,this.deps.forEach((n,s)=>{this.deps.set(s,e.GetValueByPath(s));}),t)}inferType(t){return Array.isArray(t)?"array":typeof t}},Z=class{validators=[];defaultValidators=[];path="";constructor(t){this.path=t,this.SetDefaultValidators();}setValidators(t){this.validators.push(t);}SetDefaultValidators(){let t={logic:e=>e||typeof e=="number"?true:`${this.path}\u4E0D\u80FD\u4E3A\u7A7A`,condition:e=>!!e.required},r={logic:function(e){return e.length>this.options.maxLength?`\u8D85\u51FA\u6700\u5927\u957F\u5EA6\uFF0C\u6700\u5927\u957F\u5EA6\u4E3A${this.options.maxLength}`:true},condition:function(e){return typeof e.maxLength!="number"?false:(r.options={maxLength:e.maxLength},e.type==="input"&&e.hidden===false)},options:{}};this.defaultValidators.push(t),this.defaultValidators.push(r);}evaluate(t,r){let e=true,l=[...this.defaultValidators,...this.validators];for(let n of l){if(!n.condition(r))continue;let a=n.logic(t);if(typeof a!="boolean"){e=a;break}}return e}};var re=(c={frameQuota:12})=>{let t=performance.now(),r=0,e=false,l=()=>!!navigator?.scheduling?.isInputPending?.({includeContinuous:true});return {getIsFirstFrame:()=>e,reset(){t=performance.now(),r=0,e=true;},shouldYield(){let n=performance.now();return r++,!!((r>=5||e)&&(r=0,n-t>c.frameQuota||l()))},async yieldToMain(){return new Promise(n=>{Pe(()=>{t=performance.now(),r=0,e&&(e=false),n();});})}}},Pe=c=>{let{port1:t,port2:r}=new MessageChannel;t.onmessage=c,r.postMessage(null);};function ae(c,t,r,e,l){let n=new Map,s=c.useGreedy,a=re();return async(i,p)=>{let y=Symbol("token");n.set(i,y);let T=false;a.reset();let f=new Set,x=new Set,M=new Set(t.GetAllNextDependency(i));M.add(i);let A=new Map,O=new Map,G=new Set,I=t.GetPathToLevelMap(),B=I.get(i)??0,L=0,q=S=>{t.GetAllNextDependency(S).forEach(F=>{let E=I.get(F)||0;E>L&&(L=E);});};q(i),p.forEach(S=>{G.add(S);}),f.add(i);let j=performance.now();e.emit("flow:start",{path:i}),e.callOnStart({path:i});let z=false,X=30,J=S=>{let{target:b,trigger:F}=S,E=(d,R)=>{if(f.has(d)||x.has(d)||G.has(d))return;let g=0,k=I.get(d)??0;if(A.has(d))g=A.get(d)-1;else {if(k>B&&A.size>X){O.has(k)||O.set(k,new Set),O.get(k).add(d),e.emit("node:intercept",{path:d,type:7});return}let U=t.GetPrevDependency(d),N=0;for(let ee of U){if(f.has(ee))continue;(I.get(ee)??0)>B&&N++;}g=N;}if(g<=0){let U=G.has(d),N=x.has(d);if(U||N){e.emit("node:intercept",{path:d,type:N?3:3.1});return}A.delete(d),G.add(d),e.emit("node:release",{path:d,type:R,detail:{path:b}});}else A.set(d,g);},D=()=>{if(n.get(i)!==y)return;C&&l.flushPathSet.add(b),e.emit("node:success",{path:b}),f.add(b);let d=t.GetNextDependency(b);(C||h)&&t.GetAllNextDependency(b).forEach(k=>M.add(k));for(let g of d){if(f.has(g)){e.emit("node:intercept",{path:g,type:2});continue}if(x.has(g)||G.has(g)){e.emit("node:intercept",{path:g,type:x.has(g)?3:3.1});continue}if(C||h)E(g,1);else if(A.has(g))E(g,2);else {let U=I.get(g);O.has(U)||O.set(U,new Set);let N=O.get(U);N.has(g)||(N.add(g),e.emit("node:stagnate",{path:g,type:1}));}}x.delete(b),(async()=>{if(!T){let g=x.size,k=G.size;e.emit("flow:fire",{path:b,type:1,detail:{active:g,pending:k,blocked:A.size}}),m();}})();},V=d=>{e.emit("node:error",{path:b,error:d});let R=Symbol("abort");n.set(i,R),G.clear(),A.clear(),x.clear(),e.callOnError(d),D();},C=false,h=false,P=r.GetRenderSchemaByPath(b),w=[],v=(d,R)=>{let g=false;R==="options"&&(d.some(N=>N.value==P.defaultValue)||(P.defaultValue=void 0,C=true,g=true)),d!==P[R]&&(P[R]=d,C=true,e.emit("node:bucket:success",{path:b,key:R,value:d}),R==="defaultValue"&&(g=true)),P.nodeBucket[R].isForceNotify()&&(h=true),(g||h)&&q(b);};e.emit("node:start",{path:b});try{for(let d in P.nodeBucket){let g=P.nodeBucket[d].evaluate({affectKey:d,triggerPath:F,GetRenderSchemaByPath:r.GetRenderSchemaByPath,GetValueByPath:k=>r.GetRenderSchemaByPath(k).defaultValue,GetToken:()=>y});if(g instanceof Promise){let k=g.then(U=>{n.get(i)===y&&v(U,d);});w.push(k);}else v(g,d);}if(w.length>0)return Promise.all(w).then(()=>{D();}).catch(V);D();return}catch(d){V(d);}},m=async()=>{if(n.get(i)!==y){T=false;return}T=true;let S=a.getIsFirstFrame(),b=0,F=()=>s&&S?30:1/0,E=0,D=F();try{for(;n.get(i)===y;){let V=E>=D,C=a.shouldYield();if(V||C){if(E>0&&(b++,(S||b%2===0)&&l.requestUpdate()),await a.yieldToMain(),n.get(i)!==y)break;E=0,S=a.getIsFirstFrame();}if(G.size>0&&x.size<5){for(let h of G){if(x.size>=5||E>=D)break;let P=I.get(h)??0,w=t.GetPrevDependency(h),v=w.length>1;if((!s||v)&&P>B){G.delete(h);let R=w.filter(g=>M.has(g)&&!f.has(g)).length;A.set(h,R||0),e.emit("node:intercept",{path:h,type:R>0?4:5,detail:{targetLevel:P,currentLevel:B,pendingParentsCount:R}});continue}if(G.delete(h),x.add(h),e.emit("node:processing",{path:h}),J({target:h,trigger:i}),E++,E>=D||a.shouldYield())break}if(G.size>0)continue}if(E<D&&s&&A.size>0&&x.size<5){let h=!1,P=0;for(let[w,v]of A)if(v<=0){let d=I.get(w)??0,R=t.GetPrevDependency(w);if(d>B&&R.length>1)continue;if(A.delete(w),G.add(w),P++,h=!0,e.emit("node:release",{path:w,type:4}),P>=D)break}if(P>0)continue;if(h){if(a.shouldYield()&&(await a.yieldToMain(),n.get(i)!==y))break;continue}}if(x.size===0&&G.size===0){let h=new Set;for(let v of O.keys())h.add(v);for(let[v]of A){let d=I.get(v)??0;d>B&&h.add(d);}let P=Array.from(h).sort((v,d)=>v-d),w=P[0];if(P.length>0&&w<=L){let v=P[0];if(v<=L){B=v;let d=O.get(v);d&&(d.forEach(R=>G.add(R)),O.delete(v));for(let[R]of A)(I.get(R)??0)===v&&(A.delete(R),G.add(R),e.emit("node:release",{path:R,type:3,detail:{level:v}}));continue}}else {O.forEach((v,d)=>{v.forEach(R=>{f.add(R),e.emit("node:intercept",{path:R,type:6});});}),O.clear();for(let[v]of A)f.add(v),e.emit("node:intercept",{path:v,type:6});A.clear();break}}G.size>0&&x.size>=5&&e.emit("flow:wait",{type:2});break}}finally{if(T=false,x.size+A.size+G.size===0){if(n.get(i)===y&&!z){z=true,e.emit("flow:end",{type:1}),l.requestUpdate();let C=performance.now();e.emit("flow:success",{duration:(C-j).toFixed(2)+"ms"}),Promise.resolve().then(()=>{e.callOnSuccess();});}}else e.emit("flow:wait",{type:1,detail:{nums:x.size}});}};m();}}function oe(c,t,r,e,l,n){let s=ve(c),a=0,o=new Map,i=new Map,p=new Map,u=false,y=new Set,T=false,f=true,x=null,M=m=>{let S=o.get(m);return i.get(S)},A=m=>p.get(m),O=async()=>{let m=Array.from(y);y.clear();for(let S of m){let b=M(S);n.signalTrigger(b.dirtySignal);}},G=()=>{u||(u=true,requestAnimationFrame(()=>{try{for(;y.size>0;)O();}finally{u=false;}}));},I=()=>{let m=(S,b,F)=>{if(typeof S!="object"||S===null||Array.isArray(S)){if(F.length>0){let D=F[F.length-1];b[D]=M(F.join(".")).defaultValue;}return}let E=Object.getOwnPropertyNames(S);for(let D of E)F.push(D),m(S[D],S,F),F.pop();};return m(s,null,[]),s},W=ae({useGreedy:t.useGreedy},r,{GetRenderSchemaByPath:M},l,{requestUpdate:G,flushPathSet:y}),B=async()=>(T&&x||(T=true,x=(async()=>{let m=r.GetDependencyOrder(),S=performance.now(),b=performance.now();try{for(let E=0;E<m.length;E++){let D=m[E];await Promise.all(D.map(async V=>{let C=M(V),h=!1;for(let P in C.nodeBucket){let w=await C.nodeBucket[P].evaluate({affectKey:P,triggerPath:void 0,GetRenderSchemaByPath:M,GetValueByPath:v=>M(v).defaultValue,isSameToken:()=>!0});if(P==="options"){let v=!1,d=C.defaultValue;for(let R of w)if(R.value==d){v=!0;break}v||(C.defaultValue=void 0,h=!0);}w!==C[P]&&(C[P]=w,h=!0);}h&&y.add(V);})),performance.now()-b>12&&(await new Promise(V=>requestAnimationFrame(V)),b=performance.now());}y.size>0&&G(),f=!1;let F=performance.now();l.emit("flow:success",{duration:(F-S).toFixed(2)+"ms"}),l.callOnSuccess();}catch(F){throw l.emit("node:error",{path:F.path,error:F.error}),l.callOnError(F),F}finally{T=false,x=null,f=false;}})()),x),L=m=>{if(f)return;if(!M(m))throw Error("\u8DEF\u5F84\u9519\u8BEF\uFF0C\u6CA1\u6709\u5BF9\u5E94\u7684\u8282\u70B9");performance.now();y.add(m),G();let F=r.GetNextDependency(m);q(F,m);};function q(m,S){W(S,m);}let j=m=>{if(!m)throw Error("\u6CA1\u6709\u8DEF\u5F84");let S=M(m);S.nodeBucket.defaultValue&&S.nodeBucket.defaultValue.updateInputValueRule(S.defaultValue);},z=(m,S="")=>{let b="name"in m?m.name:void 0,F=b?S===""?b:`${S}.${b}`:S,E=n.signalCreateor(),D=a++,V={getRenderSchema:P=>M(P)},C=(P,w)=>{let v=P(w),d=M(w.path),R=e.createHistoryAction([{path:w.path,value:d.defaultValue},{path:w.path,value:v}],g=>{let k=M(g.path);k.defaultValue=g.value,j(g.path),L(g.path);});d.defaultValue=v,e.pushIntoHistory(R),j(w.path),L(w.path);},h={...m,disabled:!!m.disabled,hidden:"hidden"in m?m.hidden:false,readonly:"readonly"in m?m.readonly:false,required:"required"in m?m.required:false,path:F,dirtySignal:E,uid:D,nodeBucket:{},validators:new Z(F),theme:"secondary",dependOn:P=>C(P,{...V,path:F})};return m.type==="group"&&(delete h.nodeBucket,delete h.validators,h.children=m.children.map(P=>z(P,F)),p.set(h.path,h)),o.set(h.path,h.uid),i.set(h.uid,h),h};return {schema:z(c),GetFormData:()=>I(),GetRenderSchemaByPath:M,GetGroupByPath:A,notifyAll:B,convertToRenderSchema:z}}function ve(c,t={}){let r=n=>{if(n.type=="group")return {key:n.name||"",isGroup:true,val:n.children.reduce((s,a)=>[...s,r(a)],[])};if(n.type=="input"||n.type=="number"||n.type=="select"||n.type=="checkbox")return {key:n.name,isGroup:false,val:n.defaultValue};throw Error(`\u672A\u5B9A\u4E49\u7684\u7C7B\u578B:${n.type}`)},e=(n,s)=>{if(s.isGroup){let a={};s.key===""?a=n:n[s.key]=a,s.val.forEach(o=>{e(a,o);});}else n[s.key]=s.val;},l=r(c);return e(t,l),t}var se=(c,t,r)=>{let l=n=>{let s=r.triggerPaths.map(i=>n.GetValueByPath(i)),a=Object.create(null);return Object.defineProperty(a,"triggerTargets",{get:()=>s}),Object.defineProperty(a,"affectedTatget",{get:()=>n.GetRenderSchemaByPath(c)[t]}),r.logic({slot:a})};return {value:r.value,targetPath:c,triggerPaths:r.triggerPaths,priority:r.priority??10,logic:l}},ie=(c,t,r)=>{if(!c)throw Error("");let e=c,l=(a,o)=>{t.has(a)||t.set(a,new Set),t.get(a).add(o),r.has(o)||r.set(o,new Set),r.get(o).add(a);};return {SetRule:(a,o,i,p={logic:u=>{}})=>{let u=e(o),y=se(o,i,{...p,triggerPaths:[a]}),T=[a].map(f=>[f,e(f).defaultValue]);if(l(a,o),u.nodeBucket[i])u.nodeBucket[i].setRule(y,T);else {let f=new Q(u[i],i,o);f.setRule(y,T),u.nodeBucket[i]=f;}p.forceNotify&&u.nodeBucket[i].forceNotify();},SetRules:(a,o,i,p={logic:u=>{}})=>{let u=e(o);for(let f of a)l(f,o);let y=se(o,i,{...p,triggerPaths:a}),T=a.map(f=>[f,e(f).defaultValue]);if(u.nodeBucket[i])u.nodeBucket[i].setRules(y,T);else {let f=new Q(u[i],i,o);f.setRules(y,T),u.nodeBucket[i]=f;}p.forceNotify&&u.nodeBucket[i].forceNotify();}}},le=c=>{let t=c||void 0;if(!t)throw Error("");return {SetStrategy:(e,l,n)=>{t(e).nodeBucket[l].setStrategy(n);}}};var ce=c=>{let t=c||void 0;return {SetValidators:(e,l)=>{let n=t(e),s=(o,i,p)=>o(i,p),a=(o,i,p)=>o(i,p);if(!n.validators)throw Error("validator\u6876\u672A\u521D\u59CB\u5316");n.validators.setValidators({logic:o=>s(l.logic,o,t),condition:typeof l.condition=="function"?o=>a(l.condition,o,t):()=>true});}}};function ue(){let c=new Map,t=new Map,r=new Set,e=(s,a)=>{c.set(s,a);let o=t.get(s);o&&o(a);};return {SetTrace:(s,a)=>{t.set(s,a);let o=c.get(s)||"idle";return a(o),()=>{t.delete(s);}},useTrace:()=>({apply:a=>{a.on("flow:start",()=>{r.forEach(o=>e(o,"idle")),r.clear(),c.clear();}),a.on("node:release",({path:o,type:i})=>{(i==1||i==2)&&(r.add(o),e(o,"pending"));}),a.on("node:pending",({path:o})=>{r.add(o),(!c.has(o)||c.get(o)==="idle")&&e(o,"pending");}),a.on("node:start",({path:o})=>{r.add(o),e(o,"calculating");}),a.on("node:success",({path:o})=>{e(o,"calculated");}),a.on("node:intercept",({path:o,type:i})=>{i==3&&e(o,"calculating"),i==6&&e(o,"idle");}),a.on("node:stagnate",({path:o})=>{e(o,"pending");}),a.on("node:error",({path:o})=>e(o,"error"));}})}}function de(c,t,r,e){let l=p=>{let u=c(),y=t(),T=new Set;return u.get(p)?.forEach(f=>T.add(f)),T.size===0?[]:Array.from(T).filter(f=>{let x=y.get(f)||new Set;return !Array.from(x).some(O=>T.has(O))})};return {GetNextDependency:p=>{let u=e();return Array.from(u.get(p)||[])},GetPrevDependency:p=>{let u=r();return Array.from(u.get(p)||[])},GetAllPrevDependency:p=>{let u=t();return Array.from(u.get(p)||[])},GetAllNextDependency:p=>{let u=c();return Array.from(u.get(p)||[])},rebuildDirectDependencyMaps:p=>{let u=new Map,y=new Map;for(let T of p){let f=l(T);u.set(T,new Set(f));for(let x of f)y.has(x)||y.set(x,new Set),y.get(x).add(T);}return {directNextMap:u,directPrevMap:y}}}}function pe(c){let t=e=>{let l=[],n=[],s=new Map,a=e.size,o=0,i=0;for(let[p,u]of e)u===0&&n.push(p);if(n.length===0&&a>0)throw Error("\u521D\u59CB\u5165\u5EA6\u6CA1\u6709\u4E3A0\u7684path, \u4F9D\u8D56\u7EDF\u8BA1\u6709\u8BEF\u6216\u5B58\u5728\u73AF");for(;n.length>0;){l.push([...n]);let p=[];for(let u of n){o++,s.set(u,i);let y=c.get(u);if(y)for(let T of y){let f=e.get(T)-1;e.set(T,f),f===0&&p.push(T);}}n=p,i++;}if(o<a)throw Error("\u68C0\u6D4B\u5230\u5FAA\u73AF\u4F9D\u8D56\uFF01");return {steps:l,levelMap:s}};return ()=>{let e=new Map;for(let l of c.keys()){let n=Array.from(c.get(l)||[]);e.has(l)||e.set(l,0);for(let s of n){let a=e.get(s)||0;e.set(s,++a);}}return t(e)}}function ye(){let c=[],t=[],e={canRedo:()=>{},canUndo:()=>{}},l=()=>{if(!c.length)return;let u=c.pop();u?.undoAction(),o(u);},n=()=>{if(!t.length)return;let u=t.pop();u?.redoAction(),i(u,false);},s=u=>{e.canUndo=()=>u(c.length);},a=u=>{e.canRedo=()=>u(t.length);},o=u=>{t.push(u),t.length>100&&t.shift(),e.canRedo(),e.canUndo();},i=(u,y=true)=>{y&&(t.length=0),c.push(u),c.length>100&&c.shift(),e.canUndo(),e.canRedo();};return {Undo:l,Redo:n,PushIntoHistory:i,CreateHistoryAction:(u,y)=>{let[T,f]=u;return {undoAction:()=>y(T),redoAction:()=>y(f)}},initCanUndo:s,initCanRedo:a}}var Y=()=>{let c=[];return {on:t=>(c.push(t),()=>{let r=c.indexOf(t);r>-1&&c.splice(r,1);}),call:t=>c.forEach(r=>r(t))}};function fe(){let{on:c,call:t}=Y();return {onError:c,callOnError:t}}function he(){let{on:c,call:t}=Y();return {onSuccess:c,callOnSuccess:t}}var me=()=>{let c=new Set,t=new Map,r=(n,s)=>{t.get(n)?.forEach(a=>a(s));},e=(n,s)=>(t.has(n)||t.set(n,new Set),t.get(n).add(s),()=>t.get(n).delete(s));return {usePlugin:n=>{let s=new Set,a=(o,i)=>{let p=e(o,i);return s.add(p),p};return n.apply({on:a}),c.add(n),()=>{s.forEach(o=>o()),s.clear(),c.delete(n);}},emit:r}};function ge(){let{on:c,call:t}=Y();return {onStart:c,callOnStart:t}}function Te(c,t,r){let e=false,l=false,n=new Map,s=new Map,a=new Map,o=new Map,i=[],p=new Map,{GetNextDependency:y,GetPrevDependency:T,GetAllPrevDependency:f,GetAllNextDependency:x,rebuildDirectDependencyMaps:M}=de(()=>n,()=>s,()=>o,()=>a),{Undo:A,Redo:O,PushIntoHistory:G,CreateHistoryAction:I,initCanUndo:W,initCanRedo:B}=ye(),{onError:L,callOnError:q}=fe(),{onSuccess:j,callOnSuccess:z}=he(),{onStart:X,callOnStart:J}=ge(),{emit:m,usePlugin:S}=me(),{SetTrace:b,useTrace:F}=ue(),E=F();S(E);let{schema:D,GetFormData:V,GetRenderSchemaByPath:C,GetGroupByPath:h,notifyAll:P,convertToRenderSchema:w}=oe(c,{useGreedy:t.useGreedy},{GetDependencyOrder:()=>i,GetAllNextDependency:x,GetNextDependency:y,GetPrevDependency:T,GetAllPrevDependency:f,GetPathToLevelMap:()=>p},{pushIntoHistory:G,createHistoryAction:I},{callOnError:q,callOnSuccess:z,callOnStart:J,emit:m},r),v=(_,K)=>{let H=h(_),ne=w(K,_);return H.children.push(ne),H.dirtySignal.value++,ne},{SetRule:d,SetRules:R}=ie(C,n,s),{SetStrategy:g}=le(C),{SetValidators:k}=ce(C),U=pe(n),N=()=>{let _=U();i=_.steps,p=_.levelMap;};return {schema:D,SetRule:(..._)=>{d.apply(null,_),e=true,!l&&new Promise((K,H)=>{l=true,K();}).then(()=>{if(N(),e){let{directNextMap:K,directPrevMap:H}=M(i.flat());a=K,o=H;}}).finally(()=>{l=false,e=false;});},SetRules:(..._)=>{R.apply(null,_),e=true,!l&&new Promise((K,H)=>{l=true,K();}).then(()=>{if(N(),e){let{directNextMap:K,directPrevMap:H}=M(i.flat());a=K,o=H;}}).finally(()=>{l=false,e=false;});},SetStrategy:g,SetValidators:k,SetTrace:b,usePlugin:S,SetValue:(_,K)=>{C(_).dependOn(()=>K);},GetValue:(_,K="defaultValue")=>C(_)[K],GetFormData:V,GetGroupByPath:h,notifyAll:async()=>{N(),await P();},AddNewSchema:v,GetAllDependency:()=>n,GetDependencyOrder:()=>i,Undo:A,Redo:O,initCanUndo:W,initCanRedo:B,onError:L,onSuccess:j,onStart:X}}var $=new Map,Re=(c,t,r)=>{try{if(typeof r.UITrigger.signalCreateor!="function"||typeof r.UITrigger.signalTrigger!="function")throw Error("\u9700\u8981\u5B9A\u4E49signal\u6765\u901A\u77E5ui");if($.has(c))throw Error("engineID\u91CD\u590D,\u4FEE\u6539id\u6216\u8005\u4F7F\u7528symbol");let e=Te(t,r.config||{useGreedy:!1},r.UITrigger),{schema:l,GetFormData:n,SetRule:s,SetRules:a,SetStrategy:o,SetValidators:i,SetValue:p,GetValue:u,usePlugin:y,GetGroupByPath:T,notifyAll:f,SetTrace:x,GetAllDependency:M,GetDependencyOrder:A,AddNewSchema:O,Undo:G,Redo:I,initCanUndo:W,initCanRedo:B,onError:L,onSuccess:q,onStart:j}=e,z={config:{SetRule:s,SetRules:a,SetStrategy:o,SetValidators:i,notifyAll:f,SetTrace:x,usePlugin:y},data:{schema:l,GetFormData:n,AddNewSchema:O,SetValue:p,GetValue:u,GetGroupByPath:T},history:{Undo:G,Redo:I,initCanUndo:W,initCanRedo:B},dependency:{GetAllDependency:M,GetDependencyOrder:A},hooks:{onError:L,onSuccess:q,onStart:j}};return $.set(c,z),z}catch(e){throw Error(e)}},pt=c=>{if($.has(c))return $.get(c);throw Error("\u4E0D\u5B58\u5728\u7684id")},yt=c=>{$.delete(c);},ft=Re;exports.deleteEngine=yt;exports.useEngine=pt;exports.useEngineManager=Re;exports.useMeshFlow=ft;
1
+ 'use strict';var ne=class{computedRules=[];store={OR:(e,r)=>{let t,l,n=this.computedRules;for(let i=0;i<n.length;i++){let a=n[i],o=a.logic(e);if(o instanceof Promise)return (async()=>{let d=await o;if(a.entityId==="__base__"?l=d:d&&(t=a.value),typeof t>"u")for(let u=i+1;u<n.length;u++){let y=n[u],S=y.logic(e),f=S instanceof Promise?await S:S;if(y.entityId==="__base__"){l=f;continue}if(f){t=y.value;break}}return typeof t>"u"&&(t=l),{res:t,version:r}})();let s=o;if(a.entityId==="__base__"){l=s;continue}if(s){t=a.value;break}}return typeof t>"u"&&(t=l),{res:t,version:r}},PRIORITY:(e,r)=>{let t=null,l=this.computedRules;for(let n=0;n<l.length;n++){let a=l[n].logic(e);if(a instanceof Promise)return (async()=>{let o=await a;if(o!==void 0)return {res:o,version:r};for(let s=n+1;s<l.length;s++){let d=l[s].logic(e),u=d instanceof Promise?await d:d;if(u!==void 0)return {res:u,version:r}}return {res:void 0,version:r}})();if(a!==void 0)return {res:a,version:r}}return {res:t,version:r}}};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.computedRules=Array.from(e.values()).map(r=>Array.from(r)).flat().sort((r,t)=>t.priority-r.priority):this.computedRules=Array.from(e.values()).map(r=>Array.from(r)).flat();}setStrategy(e){this.CurrentStrategy=this.store[e],this.updateComputedRules();}evaluate(e,r){return this.CurrentStrategy(e,r)}},$=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;effectArray=[];constructor(e,r,t){let l=()=>this.rules;this.strategy=new ne(l),this.path=t,this.isValue=r==="value",this.contract=this.inferType(e),this.cache=e,this.setRule({priority:0,entityId:"__base__",logic:()=>e});}forceNotify(){this._forceNotify=true;}isForceNotify(){return this._forceNotify}setStrategy(e){this.strategy.setStrategy(e);}updateInputValueRule(e){this.isValue&&this.setRule({priority:1,entityId:"__input_value__",logic:()=>e});}setDefaultRule(e){let r=new Set;r.add(e),this.rules.set(e.id,r);}setRules(e,r){r&&this.updateDeps(r);let t=++this.id,l={...e,entityId:t};for(let n of e.triggerPaths)this.rules.has(n)||this.rules.set(n,new Set),this.rules.get(n).add(l);return this.strategy.updateComputedRules(),()=>{for(let n of e.triggerPaths){let i=this.rules.get(n);i&&(i.delete(l),i.size===0&&(this.rules.delete(n),this.deps.delete(n)));}this.strategy.updateComputedRules();}}updateDeps(e){for(let[r,t]of e)this.deps.set(r,t);}setRule(e,r){if(r&&this.updateDeps(r),typeof e.entityId=="string"){this.setDefaultRule(e);return}let t=++this.id,l={...e,entityId:t};if(e)for(let n of e.triggerPaths)this.rules.has(n)||this.rules.set(n,new Set),this.rules.get(n).add(l);return this.strategy.updateComputedRules(),()=>{for(let n of e.triggerPaths){let i=this.rules.get(n);i&&(i.delete(l),i.size===0&&(this.rules.delete(n),this.deps.delete(n)));}this.strategy.updateComputedRules();}}setSideEffect(e){this.effectArray.push(e);}getSideEffect(){return [...this.effectArray]}evaluate(e){let r=null;if(e.GetToken&&(r=e.GetToken()),this.pendingPromise&&this.promiseToken!==r&&(this.pendingPromise=null,this.promiseToken=null),this.pendingPromise)return this.pendingPromise;let t=false;if(typeof e.triggerPath=="string"){t=true;let i=this.deps.get(e.triggerPath),a=e.GetValueByPath(e.triggerPath);if(typeof i=="object"||typeof a=="object")t=false;else {let o=Array.from(this.deps.keys());for(let s of o){let d=this.deps.get(s),u=e.GetValueByPath(s);if(d!==u){t=false;break}}}}if(t)return this.cache;this.promiseToken=r;let l=++this.version,n=this.strategy.evaluate(e,l);if(!(n instanceof Promise)){let{res:i,version:a}=n;return this.finalizeSync(i,a,e,r)}return this.pendingPromise=(async()=>{try{let{res:i,version:a}=await n;return this.finalizeSync(i,a,e,r)}catch(i){throw {path:this.path,error:i}}finally{this.promiseToken===r&&(this.pendingPromise=null,this.promiseToken=null);}})(),this.pendingPromise}finalizeSync(e,r,t,l){return l!==this.promiseToken||r<this.version?this.cache:(this.cache=e,this.deps.forEach((n,i)=>{this.deps.set(i,t.GetValueByPath(i));}),e)}inferType(e){return Array.isArray(e)?"array":typeof e}},te=class{validators=[];defaultValidators=[];path="";constructor(e){this.path=e,this.SetDefaultValidators();}setValidators(e){this.validators.push(e);}SetDefaultValidators(){let e={logic:t=>t||typeof t=="number"?true:`${this.path} undefined`,condition:t=>!!t.required},r={logic:function(t){return t.length>this.options.maxLength?`Too long:${this.options.maxLength}`:true},condition:function(t){return typeof t.maxLength!="number"?false:(r.options={maxLength:t.maxLength},t.type==="input"&&t.hidden===false)},options:{}};this.defaultValidators.push(e),this.defaultValidators.push(r);}evaluate(e,r){let t=true,l=[...this.defaultValidators,...this.validators];for(let n of l){if(!n.condition(r))continue;let a=n.logic(e);if(typeof a!="boolean"){t=a;break}}return t}};var ae=(c={frameQuota:12})=>{let e=performance.now(),r=0,t=false,l=()=>!!navigator?.scheduling?.isInputPending?.({includeContinuous:true});return {getIsFirstFrame:()=>t,reset(){e=performance.now(),r=0,t=true;},shouldYield(){let n=performance.now();return r++,!!((r>=5||t)&&(r=0,n-e>c.frameQuota||l()))},async yieldToMain(){return new Promise(n=>{Pe(()=>{e=performance.now(),r=0,t&&(t=false),n();});})}}},Pe=c=>{let{port1:e,port2:r}=new MessageChannel;e.onmessage=c,r.postMessage(null);};function oe(c,e,r,t,l){let n=new Map,i=c.useGreedy,a=ae();return async(s,d)=>{let y=Symbol("token");n.set(s,y);let S=false;a.reset();let f=new Set,R=new Set,C=new Set(e.GetAllNextDependency(s));C.add(s);let E=new Map,N=new Map,w=new Set,V=e.GetPathToLevelMap(),_=V.get(s)??0,z=0,q=T=>{e.GetAllNextDependency(T).forEach(F=>{let A=V.get(F)||0;A>z&&(z=A);});};q(s),d.forEach(T=>{w.add(T);}),f.add(s);let W=performance.now();t.emit("flow:start",{path:s}),t.callOnStart({path:s});let H=false,J=30,Z=T=>{let{target:x,trigger:F}=T,A=false,O=false,k=r.GetRenderSchemaByPath(x),M=[],m=(p,g)=>{if(f.has(p)||R.has(p)||w.has(p))return;let D=0,v=V.get(p)??0;if(E.has(p))D=E.get(p)-1;else {if(v>_&&E.size>J){N.has(v)||N.set(v,new Set),N.get(v).add(p),t.emit("node:intercept",{path:p,type:7});return}let I=e.GetPrevDependency(p),B=0;for(let U of I){if(f.has(U))continue;(V.get(U)??0)>_&&B++;}D=B;}if(D<=0){let I=w.has(p),B=R.has(p);if(I||B){t.emit("node:intercept",{path:p,type:B?3:3.1});return}E.delete(p),w.add(p),t.emit("node:release",{path:p,type:g,detail:{path:x}});}else E.set(p,D);},b=(p=[])=>{if(n.get(s)!==y)return;if(p.length){let v={};for(let I of p){let B=(I.args||[]).reduce((U,ee)=>(U[ee]=k[ee],U),{});try{let U=I.fn(B);U&&typeof U=="object"&&Object.assign(v,U);}catch(U){}}for(let I in v)k[I]=v[I];A=true;}A&&l.flushPathSet.add(x),t.emit("node:success",{path:x}),f.add(x);let g=e.GetNextDependency(x);(A||O)&&e.GetAllNextDependency(x).forEach(I=>C.add(I));for(let v of g){if(f.has(v)){t.emit("node:intercept",{path:v,type:2});continue}if(R.has(v)||w.has(v)){t.emit("node:intercept",{path:v,type:R.has(v)?3:3.1});continue}if(A||O)m(v,1);else if(E.has(v))m(v,2);else {let B=V.get(v);N.has(B)||N.set(B,new Set);let U=N.get(B);U.has(v)||(U.add(v),t.emit("node:stagnate",{path:v,type:1}));}}R.delete(x),(async()=>{if(!S){let v=R.size,I=w.size;t.emit("flow:fire",{path:x,type:1,detail:{active:v,pending:I,blocked:E.size}}),h();}})();},G=p=>{t.emit("node:error",{path:x,error:p});let g=Symbol("abort");n.set(s,g),w.clear(),E.clear(),R.clear(),t.callOnError(p);},P=(p,g)=>{let D=false;p!==k[g]&&(k[g]=p,A=true,t.emit("node:bucket:success",{path:x,key:g,value:p}),g==="value"&&(D=true)),k.nodeBucket[g].isForceNotify()&&(O=true),(D||O)&&q(x);};t.emit("node:start",{path:x});try{let p=[];for(let g in k.nodeBucket){let D=k.nodeBucket[g];p.push(...D.getSideEffect());let v=D.evaluate({affectKey:g,triggerPath:F,GetRenderSchemaByPath:r.GetRenderSchemaByPath,GetValueByPath:I=>r.GetRenderSchemaByPath(I).value,GetToken:()=>y});if(v instanceof Promise){let I=v.then(B=>{n.get(s)===y&&P(B,g);});M.push(I);}else P(v,g);}if(M.length>0)return Promise.all(M).then(()=>{b(p);}).catch(G);b(p);return}catch(p){G(p);}},h=async()=>{if(n.get(s)!==y){S=false;return}S=true;let T=a.getIsFirstFrame(),x=0,F=()=>i&&T?30:1/0,A=0,O=F();try{for(;n.get(s)===y;){let k=A>=O,M=a.shouldYield();if(k||M){if(A>0&&(x++,(T||x%2===0)&&l.requestUpdate()),await a.yieldToMain(),n.get(s)!==y)break;A=0,T=a.getIsFirstFrame();}if(w.size>0&&R.size<5){for(let m of w){if(R.size>=5||A>=O)break;let b=V.get(m)??0,G=e.GetPrevDependency(m),P=G.length>1;if((!i||P)&&b>_){w.delete(m);let g=G.filter(D=>C.has(D)&&!f.has(D)).length;E.set(m,g||0),t.emit("node:intercept",{path:m,type:g>0?4:5,detail:{targetLevel:b,currentLevel:_,pendingParentsCount:g}});continue}if(w.delete(m),R.add(m),t.emit("node:processing",{path:m}),Z({target:m,trigger:s}),A++,A>=O||a.shouldYield())break}if(w.size>0)continue}if(A<O&&i&&E.size>0&&R.size<5){let m=!1,b=0;for(let[G,P]of E)if(P<=0){let p=V.get(G)??0,g=e.GetPrevDependency(G);if(p>_&&g.length>1)continue;if(E.delete(G),w.add(G),b++,m=!0,t.emit("node:release",{path:G,type:4}),b>=O)break}if(b>0)continue;if(m){if(a.shouldYield()&&(await a.yieldToMain(),n.get(s)!==y))break;continue}}if(R.size===0&&w.size===0){let m=new Set;for(let P of N.keys())m.add(P);for(let[P]of E){let p=V.get(P)??0;p>_&&m.add(p);}let b=Array.from(m).sort((P,p)=>P-p),G=b[0];if(b.length>0&&G<=z){let P=b[0];if(P<=z){_=P;let p=N.get(P);p&&(p.forEach(g=>w.add(g)),N.delete(P));for(let[g]of E)(V.get(g)??0)===P&&(E.delete(g),w.add(g),t.emit("node:release",{path:g,type:3,detail:{level:P}}));continue}}else {N.forEach((P,p)=>{P.forEach(g=>{f.add(g),t.emit("node:intercept",{path:g,type:6});});}),N.clear();for(let[P]of E)f.add(P),t.emit("node:intercept",{path:P,type:6});E.clear();break}}w.size>0&&R.size>=5&&t.emit("flow:wait",{type:2});break}}finally{if(S=false,R.size+E.size+w.size===0){if(n.get(s)===y&&!H){H=true,t.emit("flow:end",{type:1}),l.requestUpdate();let M=performance.now();t.emit("flow:success",{duration:(M-W).toFixed(2)+"ms"}),Promise.resolve().then(()=>{t.callOnSuccess();});}}else t.emit("flow:wait",{type:1,detail:{nums:R.size}});}};h();}}function se(c,e,r,t,l,n){let i=ve(c),a=0,o=new Map,s=new Map,d=new Map,u=false,y=new Set,S=false,f=true,R=null,C=h=>{let T=o.get(h);return s.get(T)},E=h=>d.get(h),N=async()=>{let h=Array.from(y);y.clear();for(let T of h){let x=C(T);n.signalTrigger(x.dirtySignal);}},w=()=>{u||(u=true,requestAnimationFrame(()=>{try{for(;y.size>0;)N();}finally{u=false;}}));},V=()=>{let h=(T,x,F)=>{if(typeof T!="object"||T===null||Array.isArray(T)){if(F.length>0){let O=F[F.length-1];x[O]=C(F.join(".")).value;}return}let A=Object.getOwnPropertyNames(T);for(let O of A)F.push(O),h(T[O],T,F),F.pop();};return h(i,null,[]),i},Y=oe({useGreedy:e.useGreedy},r,{GetRenderSchemaByPath:C},l,{requestUpdate:w,flushPathSet:y}),_=async()=>(S&&R||(S=true,R=(async()=>{let h=r.GetDependencyOrder(),T=performance.now(),x=performance.now();try{for(let A=0;A<h.length;A++){let O=h[A];await Promise.all(O.map(async k=>{let M=C(k),m=!1;for(let b in M.nodeBucket){let G=await M.nodeBucket[b].evaluate({affectKey:b,triggerPath:void 0,GetRenderSchemaByPath:C,GetValueByPath:P=>C(P).value,isSameToken:()=>!0});if(b==="options"){let P=!1,p=M.value;for(let g of G)if(g.value==p){P=!0;break}P||(M.value=void 0,m=!0);}G!==M[b]&&(M[b]=G,m=!0);}m&&y.add(k);})),performance.now()-x>12&&(await new Promise(k=>requestAnimationFrame(k)),x=performance.now());}y.size>0&&w(),f=!1;let F=performance.now();l.emit("flow:success",{duration:(F-T).toFixed(2)+"ms"}),l.callOnSuccess();}catch(F){throw l.emit("node:error",{path:F.path,error:F.error}),l.callOnError(F),F}finally{S=false,R=null,f=false;}})()),R),z=h=>{if(f)return;if(!C(h))throw Error("Node undefined");performance.now();y.add(h),w();let F=r.GetNextDependency(h);q(F,h);};function q(h,T){Y(T,h);}let W=h=>{if(!h)throw Error("path error");let T=C(h);T.nodeBucket.value&&T.nodeBucket.value.updateInputValueRule(T.value);},H=(h,T="")=>{let x="name"in h?h.name:void 0,F=x?T===""?x:`${T}.${x}`:T,A=n.signalCreateor(),O=a++,k={getRenderSchema:b=>C(b)},M=(b,G)=>{let P=b(G),p=C(G.path),g=t.createHistoryAction([{path:G.path,value:p.value},{path:G.path,value:P}],D=>{let v=C(D.path);v.value=D.value,W(D.path),z(D.path);});p.value=P,t.pushIntoHistory(g),W(G.path),z(G.path);},m={...h,disabled:!!h.disabled,hidden:"hidden"in h?h.hidden:false,readonly:"readonly"in h?h.readonly:false,required:"required"in h?h.required:false,path:F,dirtySignal:A,uid:O,nodeBucket:{},validators:new te(F),theme:"secondary",dependOn:b=>M(b,{...k,path:F})};return h.type==="group"&&(delete m.nodeBucket,delete m.validators,m.children=h.children.map(b=>H(b,F)),d.set(m.path,m)),o.set(m.path,m.uid),s.set(m.uid,m),m};return {schema:H(c),GetFormData:()=>V(),GetRenderSchemaByPath:C,GetGroupByPath:E,notifyAll:_,convertToRenderSchema:H}}function ve(c,e={}){let r=n=>{if(n.type=="group")return {key:n.name||"",isGroup:true,val:n.children.reduce((i,a)=>[...i,r(a)],[])};if(n.type=="input"||n.type=="number"||n.type=="select"||n.type=="checkbox")return {key:n.name,isGroup:false,val:n.value};throw Error(`undefined type:${n.type}`)},t=(n,i)=>{if(i.isGroup){let a={};i.key===""?a=n:n[i.key]=a,i.val.forEach(o=>{t(a,o);});}else n[i.key]=i.val;},l=r(c);return t(e,l),e}var ie=(c,e,r)=>{let l=n=>{let i=r.triggerPaths.map(s=>n.GetValueByPath(s)),a=Object.create(null);return Object.defineProperty(a,"triggerTargets",{get:()=>i}),Object.defineProperty(a,"affectedTatget",{get:()=>n.GetRenderSchemaByPath(c)[e]}),r.logic({slot:a})};return {value:r.value,targetPath:c,triggerPaths:r.triggerPaths,priority:r.priority??10,logic:l}},le=(c,e,r)=>{if(!c)throw Error("");let t=c,l=(a,o)=>{e.has(a)||e.set(a,new Set),e.get(a).add(o),r.has(o)||r.set(o,new Set),r.get(o).add(a);};return {SetRule:(a,o,s,d={logic:u=>{}})=>{let u=t(o),y=ie(o,s,{...d,triggerPaths:[a]}),S=[a].map(f=>[f,t(f).value]);if(l(a,o),u.nodeBucket[s])u.nodeBucket[s].setRule(y,S),d.effect&&u.nodeBucket[s].setSideEffect({fn:d.effect,args:d.effectArgs?d.effectArgs:[s]});else {let f=new $(u[s],s,o);f.setRule(y,S),d.effect&&f.setSideEffect({fn:d.effect,args:d.effectArgs?d.effectArgs:[s]}),u.nodeBucket[s]=f;}d.forceNotify&&u.nodeBucket[s].forceNotify();},SetRules:(a,o,s,d={logic:u=>{}})=>{let u=t(o);for(let f of a)l(f,o);let y=ie(o,s,{...d,triggerPaths:a}),S=a.map(f=>[f,t(f).value]);if(u.nodeBucket[s])u.nodeBucket[s].setRules(y,S),d.effect&&u.nodeBucket[s].setSideEffect({fn:d.effect,args:d.effectArgs?d.effectArgs:[s]});else {let f=new $(u[s],s,o);f.setRules(y,S),d.effect&&f.setSideEffect({fn:d.effect,args:d.effectArgs?d.effectArgs:[s]}),u.nodeBucket[s]=f;}d.forceNotify&&u.nodeBucket[s].forceNotify();}}},ce=c=>{let e=c||void 0;if(!e)throw Error("");return {SetStrategy:(t,l,n)=>{e(t).nodeBucket[l].setStrategy(n);}}};var ue=c=>{let e=c||void 0;return {SetValidators:(t,l)=>{let n=e(t),i=(o,s,d)=>o(s,d),a=(o,s,d)=>o(s,d);if(!n.validators)throw Error("validator init error");n.validators.setValidators({logic:o=>i(l.logic,o,e),condition:typeof l.condition=="function"?o=>a(l.condition,o,e):()=>true});}}};function de(){let c=new Map,e=new Map,r=new Set,t=(i,a)=>{c.set(i,a);let o=e.get(i);o&&o(a);};return {SetTrace:(i,a)=>{e.set(i,a);let o=c.get(i)||"idle";return a(o),()=>{e.delete(i);}},useTrace:()=>({apply:a=>{a.on("flow:start",()=>{r.forEach(o=>t(o,"idle")),r.clear(),c.clear();}),a.on("node:release",({path:o,type:s})=>{(s==1||s==2)&&(r.add(o),t(o,"pending"));}),a.on("node:pending",({path:o})=>{r.add(o),(!c.has(o)||c.get(o)==="idle")&&t(o,"pending");}),a.on("node:start",({path:o})=>{r.add(o),t(o,"calculating");}),a.on("node:success",({path:o})=>{t(o,"calculated");}),a.on("node:intercept",({path:o,type:s})=>{s==3&&t(o,"calculating"),s==6&&t(o,"idle");}),a.on("node:stagnate",({path:o})=>{t(o,"pending");}),a.on("node:error",({path:o})=>t(o,"error"));}})}}function pe(c,e,r,t){let l=d=>{let u=c(),y=e(),S=new Set;return u.get(d)?.forEach(f=>S.add(f)),S.size===0?[]:Array.from(S).filter(f=>{let R=y.get(f)||new Set;return !Array.from(R).some(N=>S.has(N))})};return {GetNextDependency:d=>{let u=t();return Array.from(u.get(d)||[])},GetPrevDependency:d=>{let u=r();return Array.from(u.get(d)||[])},GetAllPrevDependency:d=>{let u=e();return Array.from(u.get(d)||[])},GetAllNextDependency:d=>{let u=c();return Array.from(u.get(d)||[])},rebuildDirectDependencyMaps:d=>{let u=new Map,y=new Map;for(let S of d){let f=l(S);u.set(S,new Set(f));for(let R of f)y.has(R)||y.set(R,new Set),y.get(R).add(S);}return {directNextMap:u,directPrevMap:y}}}}function fe(c){let e=t=>{let l=[],n=[],i=new Map,a=t.size,o=0,s=0;for(let[d,u]of t)u===0&&n.push(d);if(n.length===0&&a>0)throw Error("Circular dependency detected");for(;n.length>0;){l.push([...n]);let d=[];for(let u of n){o++,i.set(u,s);let y=c.get(u);if(y)for(let S of y){let f=t.get(S)-1;t.set(S,f),f===0&&d.push(S);}}n=d,s++;}if(o<a)throw Error("Circular dependency detected");return {steps:l,levelMap:i}};return ()=>{let t=new Map;for(let l of c.keys()){let n=Array.from(c.get(l)||[]);t.has(l)||t.set(l,0);for(let i of n){let a=t.get(i)||0;t.set(i,++a);}}return e(t)}}function ye(){let c=[],e=[],t={canRedo:()=>{},canUndo:()=>{}},l=()=>{if(!c.length)return;let u=c.pop();u?.undoAction(),o(u);},n=()=>{if(!e.length)return;let u=e.pop();u?.redoAction(),s(u,false);},i=u=>{t.canUndo=()=>u(c.length);},a=u=>{t.canRedo=()=>u(e.length);},o=u=>{e.push(u),e.length>100&&e.shift(),t.canRedo(),t.canUndo();},s=(u,y=true)=>{y&&(e.length=0),c.push(u),c.length>100&&c.shift(),t.canUndo(),t.canRedo();};return {Undo:l,Redo:n,PushIntoHistory:s,CreateHistoryAction:(u,y)=>{let[S,f]=u;return {undoAction:()=>y(S),redoAction:()=>y(f)}},initCanUndo:i,initCanRedo:a}}var Q=()=>{let c=[];return {on:e=>(c.push(e),()=>{let r=c.indexOf(e);r>-1&&c.splice(r,1);}),call:e=>c.forEach(r=>r(e))}};function he(){let{on:c,call:e}=Q();return {onError:c,callOnError:e}}function me(){let{on:c,call:e}=Q();return {onSuccess:c,callOnSuccess:e}}var ge=()=>{let c=new Set,e=new Map,r=(n,i)=>{e.get(n)?.forEach(a=>a(i));},t=(n,i)=>(e.has(n)||e.set(n,new Set),e.get(n).add(i),()=>e.get(n).delete(i));return {usePlugin:n=>{let i=new Set,a=(o,s)=>{let d=t(o,s);return i.add(d),d};return n.apply({on:a}),c.add(n),()=>{i.forEach(o=>o()),i.clear(),c.delete(n);}},emit:r}};function Se(){let{on:c,call:e}=Q();return {onStart:c,callOnStart:e}}function Te(c,e,r){let t=false,l=false,n=new Map,i=new Map,a=new Map,o=new Map,s=[],d=new Map,{GetNextDependency:y,GetPrevDependency:S,GetAllPrevDependency:f,GetAllNextDependency:R,rebuildDirectDependencyMaps:C}=pe(()=>n,()=>i,()=>o,()=>a),{Undo:E,Redo:N,PushIntoHistory:w,CreateHistoryAction:V,initCanUndo:Y,initCanRedo:_}=ye(),{onError:z,callOnError:q}=he(),{onSuccess:W,callOnSuccess:H}=me(),{onStart:J,callOnStart:Z}=Se(),{emit:h,usePlugin:T}=ge(),{SetTrace:x,useTrace:F}=de(),A=F();T(A);let{schema:O,GetFormData:k,GetRenderSchemaByPath:M,GetGroupByPath:m,notifyAll:b,convertToRenderSchema:G}=se(c,{useGreedy:e.useGreedy},{GetDependencyOrder:()=>s,GetAllNextDependency:R,GetNextDependency:y,GetPrevDependency:S,GetAllPrevDependency:f,GetPathToLevelMap:()=>d},{pushIntoHistory:w,createHistoryAction:V},{callOnError:q,callOnSuccess:H,callOnStart:Z,emit:h},r),P=(K,L)=>{let j=m(K),re=G(L,K);return j.children.push(re),j.dirtySignal.value++,re},{SetRule:p,SetRules:g}=le(M,n,i),{SetStrategy:D}=ce(M),{SetValidators:v}=ue(M),I=fe(n),B=()=>{let K=I();s=K.steps,d=K.levelMap;};return {schema:O,SetRule:(...K)=>{p.apply(null,K),t=true,!l&&new Promise((L,j)=>{l=true,L();}).then(()=>{if(B(),t){let{directNextMap:L,directPrevMap:j}=C(s.flat());a=L,o=j;}}).finally(()=>{l=false,t=false;});},SetRules:(...K)=>{g.apply(null,K),t=true,!l&&new Promise((L,j)=>{l=true,L();}).then(()=>{if(B(),t){let{directNextMap:L,directPrevMap:j}=C(s.flat());a=L,o=j;}}).finally(()=>{l=false,t=false;});},SetStrategy:D,SetValidators:v,SetTrace:x,usePlugin:T,SetValue:(K,L)=>{M(K).dependOn(()=>L);},GetValue:(K,L="value")=>M(K)[L],GetFormData:k,GetGroupByPath:m,notifyAll:async()=>{B(),await b();},AddNewSchema:P,GetAllDependency:()=>n,GetDependencyOrder:()=>s,Undo:E,Redo:N,initCanUndo:Y,initCanRedo:_,onError:z,onSuccess:W,onStart:J}}var X=new Map,Re=(c,e,r)=>{try{if(typeof r.UITrigger.signalCreateor!="function"||typeof r.UITrigger.signalTrigger!="function")throw Error("ui trigger undefined");if(X.has(c))throw Error("engineID repeated");let t=Te(e,r.config||{useGreedy:!1},r.UITrigger),{schema:l,GetFormData:n,SetRule:i,SetRules:a,SetStrategy:o,SetValidators:s,SetValue:d,GetValue:u,usePlugin:y,GetGroupByPath:S,notifyAll:f,SetTrace:R,GetAllDependency:C,GetDependencyOrder:E,AddNewSchema:N,Undo:w,Redo:V,initCanUndo:Y,initCanRedo:_,onError:z,onSuccess:q,onStart:W}=t,H={config:{SetRule:i,SetRules:a,SetStrategy:o,SetValidators:s,notifyAll:f,SetTrace:R,usePlugin:y},data:{schema:l,GetFormData:n,AddNewSchema:N,SetValue:d,GetValue:u,GetGroupByPath:S},history:{Undo:w,Redo:V,initCanUndo:Y,initCanRedo:_},dependency:{GetAllDependency:C,GetDependencyOrder:E},hooks:{onError:z,onSuccess:q,onStart:W}};return X.set(c,H),H}catch(t){throw Error(t)}},pt=c=>{if(X.has(c))return X.get(c);throw Error("id undefined")},ft=c=>{X.delete(c);},yt=Re;exports.deleteEngine=ft;exports.useEngine=pt;exports.useEngineManager=Re;exports.useMeshFlow=yt;
package/index.mjs CHANGED
@@ -1 +1 @@
1
- var te=class{computedRules=[];store={OR:(t,r)=>{let e,l,n=this.computedRules;for(let s=0;s<n.length;s++){let a=n[s],o=a.logic(t);if(o instanceof Promise)return (async()=>{let p=await o;if(a.entityId==="__base__"?l=p:p&&(e=a.value),typeof e>"u")for(let u=s+1;u<n.length;u++){let y=n[u],T=y.logic(t),f=T instanceof Promise?await T:T;if(y.entityId==="__base__"){l=f;continue}if(f){e=y.value;break}}return typeof e>"u"&&(e=l),{res:e,version:r}})();let i=o;if(a.entityId==="__base__"){l=i;continue}if(i){e=a.value;break}}return typeof e>"u"&&(e=l),{res:e,version:r}},PRIORITY:(t,r)=>{let e=null,l=this.computedRules;for(let n=0;n<l.length;n++){let a=l[n].logic(t);if(a instanceof Promise)return (async()=>{let o=await a;if(o!==void 0)return {res:o,version:r};for(let i=n+1;i<l.length;i++){let p=l[i].logic(t),u=p instanceof Promise?await p:p;if(u!==void 0)return {res:u,version:r}}return {res:void 0,version:r}})();if(a!==void 0)return {res:a,version:r}}return {res:e,version:r}}};CurrentStrategy=()=>{};CurrentStrategyType="PRIORITY";getRules=()=>{};constructor(t){this.getRules=t,this.CurrentStrategy=this.store.PRIORITY,this.updateComputedRules();}updateComputedRules(){let t=this.getRules();this.CurrentStrategyType==="PRIORITY"?this.computedRules=Array.from(t.values()).map(r=>Array.from(r)).flat().sort((r,e)=>e.priority-r.priority):this.computedRules=Array.from(t.values()).map(r=>Array.from(r)).flat();}setStrategy(t){this.CurrentStrategy=this.store[t],this.updateComputedRules();}evaluate(t,r){return this.CurrentStrategy(t,r)}},Q=class{path;strategy;contract;rules=new Map;isDefaultValue=false;id=0;cache=void 0;pendingPromise=null;version=0;deps=new Map;_forceNotify=false;promiseToken=null;globalCalcCount=0;constructor(t,r,e){let l=()=>this.rules;this.strategy=new te(l),this.path=e,this.isDefaultValue=r==="defaultValue",this.contract=this.inferType(t),this.cache=t,this.setRule({priority:0,entityId:"__base__",logic:()=>t});}forceNotify(){this._forceNotify=true;}isForceNotify(){return this._forceNotify}setStrategy(t){this.strategy.setStrategy(t);}updateInputValueRule(t){this.isDefaultValue&&this.setRule({priority:1,entityId:"__input_value__",logic:()=>t});}setDefaultRule(t){let r=new Set;r.add(t),this.rules.set(t.id,r);}setRules(t,r){r&&this.updateDeps(r);let e=++this.id,l={...t,entityId:e};for(let n of t.triggerPaths)this.rules.has(n)||this.rules.set(n,new Set),this.rules.get(n).add(l);return this.strategy.updateComputedRules(),()=>{for(let n of t.triggerPaths){let s=this.rules.get(n);s&&(s.delete(l),s.size===0&&(this.rules.delete(n),this.deps.delete(n)));}this.strategy.updateComputedRules();}}updateDeps(t){for(let[r,e]of t)this.deps.set(r,e);}setRule(t,r){if(r&&this.updateDeps(r),typeof t.entityId=="string"){this.setDefaultRule(t);return}let e=++this.id,l={...t,entityId:e};if(t)for(let n of t.triggerPaths)this.rules.has(n)||this.rules.set(n,new Set),this.rules.get(n).add(l);return this.strategy.updateComputedRules(),()=>{for(let n of t.triggerPaths){let s=this.rules.get(n);s&&(s.delete(l),s.size===0&&(this.rules.delete(n),this.deps.delete(n)));}this.strategy.updateComputedRules();}}evaluate(t){let r=null;if(t.GetToken&&(r=t.GetToken()),this.pendingPromise&&this.promiseToken!==r&&(this.pendingPromise=null,this.promiseToken=null),this.pendingPromise)return this.pendingPromise;let e=false;if(typeof t.triggerPath=="string"){e=true;let s=this.deps.get(t.triggerPath),a=t.GetValueByPath(t.triggerPath);if(typeof s=="object"||typeof a=="object")e=false;else {let o=Array.from(this.deps.keys());for(let i of o){let p=this.deps.get(i),u=t.GetValueByPath(i);if(p!==u){e=false;break}}}}if(e)return this.cache;this.promiseToken=r;let l=++this.version,n=this.strategy.evaluate(t,l);if(!(n instanceof Promise)){let{res:s,version:a}=n;return this.finalizeSync(s,a,t,r)}return this.pendingPromise=(async()=>{try{let{res:s,version:a}=await n;return this.finalizeSync(s,a,t,r)}catch(s){throw {path:this.path,error:s}}finally{this.promiseToken===r&&(this.pendingPromise=null,this.promiseToken=null);}})(),this.pendingPromise}finalizeSync(t,r,e,l){return l!==this.promiseToken||r<this.version?this.cache:(this.cache=t,this.deps.forEach((n,s)=>{this.deps.set(s,e.GetValueByPath(s));}),t)}inferType(t){return Array.isArray(t)?"array":typeof t}},Z=class{validators=[];defaultValidators=[];path="";constructor(t){this.path=t,this.SetDefaultValidators();}setValidators(t){this.validators.push(t);}SetDefaultValidators(){let t={logic:e=>e||typeof e=="number"?true:`${this.path}\u4E0D\u80FD\u4E3A\u7A7A`,condition:e=>!!e.required},r={logic:function(e){return e.length>this.options.maxLength?`\u8D85\u51FA\u6700\u5927\u957F\u5EA6\uFF0C\u6700\u5927\u957F\u5EA6\u4E3A${this.options.maxLength}`:true},condition:function(e){return typeof e.maxLength!="number"?false:(r.options={maxLength:e.maxLength},e.type==="input"&&e.hidden===false)},options:{}};this.defaultValidators.push(t),this.defaultValidators.push(r);}evaluate(t,r){let e=true,l=[...this.defaultValidators,...this.validators];for(let n of l){if(!n.condition(r))continue;let a=n.logic(t);if(typeof a!="boolean"){e=a;break}}return e}};var re=(c={frameQuota:12})=>{let t=performance.now(),r=0,e=false,l=()=>!!navigator?.scheduling?.isInputPending?.({includeContinuous:true});return {getIsFirstFrame:()=>e,reset(){t=performance.now(),r=0,e=true;},shouldYield(){let n=performance.now();return r++,!!((r>=5||e)&&(r=0,n-t>c.frameQuota||l()))},async yieldToMain(){return new Promise(n=>{Pe(()=>{t=performance.now(),r=0,e&&(e=false),n();});})}}},Pe=c=>{let{port1:t,port2:r}=new MessageChannel;t.onmessage=c,r.postMessage(null);};function ae(c,t,r,e,l){let n=new Map,s=c.useGreedy,a=re();return async(i,p)=>{let y=Symbol("token");n.set(i,y);let T=false;a.reset();let f=new Set,x=new Set,M=new Set(t.GetAllNextDependency(i));M.add(i);let A=new Map,O=new Map,G=new Set,I=t.GetPathToLevelMap(),B=I.get(i)??0,L=0,q=S=>{t.GetAllNextDependency(S).forEach(F=>{let E=I.get(F)||0;E>L&&(L=E);});};q(i),p.forEach(S=>{G.add(S);}),f.add(i);let j=performance.now();e.emit("flow:start",{path:i}),e.callOnStart({path:i});let z=false,X=30,J=S=>{let{target:b,trigger:F}=S,E=(d,R)=>{if(f.has(d)||x.has(d)||G.has(d))return;let g=0,k=I.get(d)??0;if(A.has(d))g=A.get(d)-1;else {if(k>B&&A.size>X){O.has(k)||O.set(k,new Set),O.get(k).add(d),e.emit("node:intercept",{path:d,type:7});return}let U=t.GetPrevDependency(d),N=0;for(let ee of U){if(f.has(ee))continue;(I.get(ee)??0)>B&&N++;}g=N;}if(g<=0){let U=G.has(d),N=x.has(d);if(U||N){e.emit("node:intercept",{path:d,type:N?3:3.1});return}A.delete(d),G.add(d),e.emit("node:release",{path:d,type:R,detail:{path:b}});}else A.set(d,g);},D=()=>{if(n.get(i)!==y)return;C&&l.flushPathSet.add(b),e.emit("node:success",{path:b}),f.add(b);let d=t.GetNextDependency(b);(C||h)&&t.GetAllNextDependency(b).forEach(k=>M.add(k));for(let g of d){if(f.has(g)){e.emit("node:intercept",{path:g,type:2});continue}if(x.has(g)||G.has(g)){e.emit("node:intercept",{path:g,type:x.has(g)?3:3.1});continue}if(C||h)E(g,1);else if(A.has(g))E(g,2);else {let U=I.get(g);O.has(U)||O.set(U,new Set);let N=O.get(U);N.has(g)||(N.add(g),e.emit("node:stagnate",{path:g,type:1}));}}x.delete(b),(async()=>{if(!T){let g=x.size,k=G.size;e.emit("flow:fire",{path:b,type:1,detail:{active:g,pending:k,blocked:A.size}}),m();}})();},V=d=>{e.emit("node:error",{path:b,error:d});let R=Symbol("abort");n.set(i,R),G.clear(),A.clear(),x.clear(),e.callOnError(d),D();},C=false,h=false,P=r.GetRenderSchemaByPath(b),w=[],v=(d,R)=>{let g=false;R==="options"&&(d.some(N=>N.value==P.defaultValue)||(P.defaultValue=void 0,C=true,g=true)),d!==P[R]&&(P[R]=d,C=true,e.emit("node:bucket:success",{path:b,key:R,value:d}),R==="defaultValue"&&(g=true)),P.nodeBucket[R].isForceNotify()&&(h=true),(g||h)&&q(b);};e.emit("node:start",{path:b});try{for(let d in P.nodeBucket){let g=P.nodeBucket[d].evaluate({affectKey:d,triggerPath:F,GetRenderSchemaByPath:r.GetRenderSchemaByPath,GetValueByPath:k=>r.GetRenderSchemaByPath(k).defaultValue,GetToken:()=>y});if(g instanceof Promise){let k=g.then(U=>{n.get(i)===y&&v(U,d);});w.push(k);}else v(g,d);}if(w.length>0)return Promise.all(w).then(()=>{D();}).catch(V);D();return}catch(d){V(d);}},m=async()=>{if(n.get(i)!==y){T=false;return}T=true;let S=a.getIsFirstFrame(),b=0,F=()=>s&&S?30:1/0,E=0,D=F();try{for(;n.get(i)===y;){let V=E>=D,C=a.shouldYield();if(V||C){if(E>0&&(b++,(S||b%2===0)&&l.requestUpdate()),await a.yieldToMain(),n.get(i)!==y)break;E=0,S=a.getIsFirstFrame();}if(G.size>0&&x.size<5){for(let h of G){if(x.size>=5||E>=D)break;let P=I.get(h)??0,w=t.GetPrevDependency(h),v=w.length>1;if((!s||v)&&P>B){G.delete(h);let R=w.filter(g=>M.has(g)&&!f.has(g)).length;A.set(h,R||0),e.emit("node:intercept",{path:h,type:R>0?4:5,detail:{targetLevel:P,currentLevel:B,pendingParentsCount:R}});continue}if(G.delete(h),x.add(h),e.emit("node:processing",{path:h}),J({target:h,trigger:i}),E++,E>=D||a.shouldYield())break}if(G.size>0)continue}if(E<D&&s&&A.size>0&&x.size<5){let h=!1,P=0;for(let[w,v]of A)if(v<=0){let d=I.get(w)??0,R=t.GetPrevDependency(w);if(d>B&&R.length>1)continue;if(A.delete(w),G.add(w),P++,h=!0,e.emit("node:release",{path:w,type:4}),P>=D)break}if(P>0)continue;if(h){if(a.shouldYield()&&(await a.yieldToMain(),n.get(i)!==y))break;continue}}if(x.size===0&&G.size===0){let h=new Set;for(let v of O.keys())h.add(v);for(let[v]of A){let d=I.get(v)??0;d>B&&h.add(d);}let P=Array.from(h).sort((v,d)=>v-d),w=P[0];if(P.length>0&&w<=L){let v=P[0];if(v<=L){B=v;let d=O.get(v);d&&(d.forEach(R=>G.add(R)),O.delete(v));for(let[R]of A)(I.get(R)??0)===v&&(A.delete(R),G.add(R),e.emit("node:release",{path:R,type:3,detail:{level:v}}));continue}}else {O.forEach((v,d)=>{v.forEach(R=>{f.add(R),e.emit("node:intercept",{path:R,type:6});});}),O.clear();for(let[v]of A)f.add(v),e.emit("node:intercept",{path:v,type:6});A.clear();break}}G.size>0&&x.size>=5&&e.emit("flow:wait",{type:2});break}}finally{if(T=false,x.size+A.size+G.size===0){if(n.get(i)===y&&!z){z=true,e.emit("flow:end",{type:1}),l.requestUpdate();let C=performance.now();e.emit("flow:success",{duration:(C-j).toFixed(2)+"ms"}),Promise.resolve().then(()=>{e.callOnSuccess();});}}else e.emit("flow:wait",{type:1,detail:{nums:x.size}});}};m();}}function oe(c,t,r,e,l,n){let s=ve(c),a=0,o=new Map,i=new Map,p=new Map,u=false,y=new Set,T=false,f=true,x=null,M=m=>{let S=o.get(m);return i.get(S)},A=m=>p.get(m),O=async()=>{let m=Array.from(y);y.clear();for(let S of m){let b=M(S);n.signalTrigger(b.dirtySignal);}},G=()=>{u||(u=true,requestAnimationFrame(()=>{try{for(;y.size>0;)O();}finally{u=false;}}));},I=()=>{let m=(S,b,F)=>{if(typeof S!="object"||S===null||Array.isArray(S)){if(F.length>0){let D=F[F.length-1];b[D]=M(F.join(".")).defaultValue;}return}let E=Object.getOwnPropertyNames(S);for(let D of E)F.push(D),m(S[D],S,F),F.pop();};return m(s,null,[]),s},W=ae({useGreedy:t.useGreedy},r,{GetRenderSchemaByPath:M},l,{requestUpdate:G,flushPathSet:y}),B=async()=>(T&&x||(T=true,x=(async()=>{let m=r.GetDependencyOrder(),S=performance.now(),b=performance.now();try{for(let E=0;E<m.length;E++){let D=m[E];await Promise.all(D.map(async V=>{let C=M(V),h=!1;for(let P in C.nodeBucket){let w=await C.nodeBucket[P].evaluate({affectKey:P,triggerPath:void 0,GetRenderSchemaByPath:M,GetValueByPath:v=>M(v).defaultValue,isSameToken:()=>!0});if(P==="options"){let v=!1,d=C.defaultValue;for(let R of w)if(R.value==d){v=!0;break}v||(C.defaultValue=void 0,h=!0);}w!==C[P]&&(C[P]=w,h=!0);}h&&y.add(V);})),performance.now()-b>12&&(await new Promise(V=>requestAnimationFrame(V)),b=performance.now());}y.size>0&&G(),f=!1;let F=performance.now();l.emit("flow:success",{duration:(F-S).toFixed(2)+"ms"}),l.callOnSuccess();}catch(F){throw l.emit("node:error",{path:F.path,error:F.error}),l.callOnError(F),F}finally{T=false,x=null,f=false;}})()),x),L=m=>{if(f)return;if(!M(m))throw Error("\u8DEF\u5F84\u9519\u8BEF\uFF0C\u6CA1\u6709\u5BF9\u5E94\u7684\u8282\u70B9");performance.now();y.add(m),G();let F=r.GetNextDependency(m);q(F,m);};function q(m,S){W(S,m);}let j=m=>{if(!m)throw Error("\u6CA1\u6709\u8DEF\u5F84");let S=M(m);S.nodeBucket.defaultValue&&S.nodeBucket.defaultValue.updateInputValueRule(S.defaultValue);},z=(m,S="")=>{let b="name"in m?m.name:void 0,F=b?S===""?b:`${S}.${b}`:S,E=n.signalCreateor(),D=a++,V={getRenderSchema:P=>M(P)},C=(P,w)=>{let v=P(w),d=M(w.path),R=e.createHistoryAction([{path:w.path,value:d.defaultValue},{path:w.path,value:v}],g=>{let k=M(g.path);k.defaultValue=g.value,j(g.path),L(g.path);});d.defaultValue=v,e.pushIntoHistory(R),j(w.path),L(w.path);},h={...m,disabled:!!m.disabled,hidden:"hidden"in m?m.hidden:false,readonly:"readonly"in m?m.readonly:false,required:"required"in m?m.required:false,path:F,dirtySignal:E,uid:D,nodeBucket:{},validators:new Z(F),theme:"secondary",dependOn:P=>C(P,{...V,path:F})};return m.type==="group"&&(delete h.nodeBucket,delete h.validators,h.children=m.children.map(P=>z(P,F)),p.set(h.path,h)),o.set(h.path,h.uid),i.set(h.uid,h),h};return {schema:z(c),GetFormData:()=>I(),GetRenderSchemaByPath:M,GetGroupByPath:A,notifyAll:B,convertToRenderSchema:z}}function ve(c,t={}){let r=n=>{if(n.type=="group")return {key:n.name||"",isGroup:true,val:n.children.reduce((s,a)=>[...s,r(a)],[])};if(n.type=="input"||n.type=="number"||n.type=="select"||n.type=="checkbox")return {key:n.name,isGroup:false,val:n.defaultValue};throw Error(`\u672A\u5B9A\u4E49\u7684\u7C7B\u578B:${n.type}`)},e=(n,s)=>{if(s.isGroup){let a={};s.key===""?a=n:n[s.key]=a,s.val.forEach(o=>{e(a,o);});}else n[s.key]=s.val;},l=r(c);return e(t,l),t}var se=(c,t,r)=>{let l=n=>{let s=r.triggerPaths.map(i=>n.GetValueByPath(i)),a=Object.create(null);return Object.defineProperty(a,"triggerTargets",{get:()=>s}),Object.defineProperty(a,"affectedTatget",{get:()=>n.GetRenderSchemaByPath(c)[t]}),r.logic({slot:a})};return {value:r.value,targetPath:c,triggerPaths:r.triggerPaths,priority:r.priority??10,logic:l}},ie=(c,t,r)=>{if(!c)throw Error("");let e=c,l=(a,o)=>{t.has(a)||t.set(a,new Set),t.get(a).add(o),r.has(o)||r.set(o,new Set),r.get(o).add(a);};return {SetRule:(a,o,i,p={logic:u=>{}})=>{let u=e(o),y=se(o,i,{...p,triggerPaths:[a]}),T=[a].map(f=>[f,e(f).defaultValue]);if(l(a,o),u.nodeBucket[i])u.nodeBucket[i].setRule(y,T);else {let f=new Q(u[i],i,o);f.setRule(y,T),u.nodeBucket[i]=f;}p.forceNotify&&u.nodeBucket[i].forceNotify();},SetRules:(a,o,i,p={logic:u=>{}})=>{let u=e(o);for(let f of a)l(f,o);let y=se(o,i,{...p,triggerPaths:a}),T=a.map(f=>[f,e(f).defaultValue]);if(u.nodeBucket[i])u.nodeBucket[i].setRules(y,T);else {let f=new Q(u[i],i,o);f.setRules(y,T),u.nodeBucket[i]=f;}p.forceNotify&&u.nodeBucket[i].forceNotify();}}},le=c=>{let t=c||void 0;if(!t)throw Error("");return {SetStrategy:(e,l,n)=>{t(e).nodeBucket[l].setStrategy(n);}}};var ce=c=>{let t=c||void 0;return {SetValidators:(e,l)=>{let n=t(e),s=(o,i,p)=>o(i,p),a=(o,i,p)=>o(i,p);if(!n.validators)throw Error("validator\u6876\u672A\u521D\u59CB\u5316");n.validators.setValidators({logic:o=>s(l.logic,o,t),condition:typeof l.condition=="function"?o=>a(l.condition,o,t):()=>true});}}};function ue(){let c=new Map,t=new Map,r=new Set,e=(s,a)=>{c.set(s,a);let o=t.get(s);o&&o(a);};return {SetTrace:(s,a)=>{t.set(s,a);let o=c.get(s)||"idle";return a(o),()=>{t.delete(s);}},useTrace:()=>({apply:a=>{a.on("flow:start",()=>{r.forEach(o=>e(o,"idle")),r.clear(),c.clear();}),a.on("node:release",({path:o,type:i})=>{(i==1||i==2)&&(r.add(o),e(o,"pending"));}),a.on("node:pending",({path:o})=>{r.add(o),(!c.has(o)||c.get(o)==="idle")&&e(o,"pending");}),a.on("node:start",({path:o})=>{r.add(o),e(o,"calculating");}),a.on("node:success",({path:o})=>{e(o,"calculated");}),a.on("node:intercept",({path:o,type:i})=>{i==3&&e(o,"calculating"),i==6&&e(o,"idle");}),a.on("node:stagnate",({path:o})=>{e(o,"pending");}),a.on("node:error",({path:o})=>e(o,"error"));}})}}function de(c,t,r,e){let l=p=>{let u=c(),y=t(),T=new Set;return u.get(p)?.forEach(f=>T.add(f)),T.size===0?[]:Array.from(T).filter(f=>{let x=y.get(f)||new Set;return !Array.from(x).some(O=>T.has(O))})};return {GetNextDependency:p=>{let u=e();return Array.from(u.get(p)||[])},GetPrevDependency:p=>{let u=r();return Array.from(u.get(p)||[])},GetAllPrevDependency:p=>{let u=t();return Array.from(u.get(p)||[])},GetAllNextDependency:p=>{let u=c();return Array.from(u.get(p)||[])},rebuildDirectDependencyMaps:p=>{let u=new Map,y=new Map;for(let T of p){let f=l(T);u.set(T,new Set(f));for(let x of f)y.has(x)||y.set(x,new Set),y.get(x).add(T);}return {directNextMap:u,directPrevMap:y}}}}function pe(c){let t=e=>{let l=[],n=[],s=new Map,a=e.size,o=0,i=0;for(let[p,u]of e)u===0&&n.push(p);if(n.length===0&&a>0)throw Error("\u521D\u59CB\u5165\u5EA6\u6CA1\u6709\u4E3A0\u7684path, \u4F9D\u8D56\u7EDF\u8BA1\u6709\u8BEF\u6216\u5B58\u5728\u73AF");for(;n.length>0;){l.push([...n]);let p=[];for(let u of n){o++,s.set(u,i);let y=c.get(u);if(y)for(let T of y){let f=e.get(T)-1;e.set(T,f),f===0&&p.push(T);}}n=p,i++;}if(o<a)throw Error("\u68C0\u6D4B\u5230\u5FAA\u73AF\u4F9D\u8D56\uFF01");return {steps:l,levelMap:s}};return ()=>{let e=new Map;for(let l of c.keys()){let n=Array.from(c.get(l)||[]);e.has(l)||e.set(l,0);for(let s of n){let a=e.get(s)||0;e.set(s,++a);}}return t(e)}}function ye(){let c=[],t=[],e={canRedo:()=>{},canUndo:()=>{}},l=()=>{if(!c.length)return;let u=c.pop();u?.undoAction(),o(u);},n=()=>{if(!t.length)return;let u=t.pop();u?.redoAction(),i(u,false);},s=u=>{e.canUndo=()=>u(c.length);},a=u=>{e.canRedo=()=>u(t.length);},o=u=>{t.push(u),t.length>100&&t.shift(),e.canRedo(),e.canUndo();},i=(u,y=true)=>{y&&(t.length=0),c.push(u),c.length>100&&c.shift(),e.canUndo(),e.canRedo();};return {Undo:l,Redo:n,PushIntoHistory:i,CreateHistoryAction:(u,y)=>{let[T,f]=u;return {undoAction:()=>y(T),redoAction:()=>y(f)}},initCanUndo:s,initCanRedo:a}}var Y=()=>{let c=[];return {on:t=>(c.push(t),()=>{let r=c.indexOf(t);r>-1&&c.splice(r,1);}),call:t=>c.forEach(r=>r(t))}};function fe(){let{on:c,call:t}=Y();return {onError:c,callOnError:t}}function he(){let{on:c,call:t}=Y();return {onSuccess:c,callOnSuccess:t}}var me=()=>{let c=new Set,t=new Map,r=(n,s)=>{t.get(n)?.forEach(a=>a(s));},e=(n,s)=>(t.has(n)||t.set(n,new Set),t.get(n).add(s),()=>t.get(n).delete(s));return {usePlugin:n=>{let s=new Set,a=(o,i)=>{let p=e(o,i);return s.add(p),p};return n.apply({on:a}),c.add(n),()=>{s.forEach(o=>o()),s.clear(),c.delete(n);}},emit:r}};function ge(){let{on:c,call:t}=Y();return {onStart:c,callOnStart:t}}function Te(c,t,r){let e=false,l=false,n=new Map,s=new Map,a=new Map,o=new Map,i=[],p=new Map,{GetNextDependency:y,GetPrevDependency:T,GetAllPrevDependency:f,GetAllNextDependency:x,rebuildDirectDependencyMaps:M}=de(()=>n,()=>s,()=>o,()=>a),{Undo:A,Redo:O,PushIntoHistory:G,CreateHistoryAction:I,initCanUndo:W,initCanRedo:B}=ye(),{onError:L,callOnError:q}=fe(),{onSuccess:j,callOnSuccess:z}=he(),{onStart:X,callOnStart:J}=ge(),{emit:m,usePlugin:S}=me(),{SetTrace:b,useTrace:F}=ue(),E=F();S(E);let{schema:D,GetFormData:V,GetRenderSchemaByPath:C,GetGroupByPath:h,notifyAll:P,convertToRenderSchema:w}=oe(c,{useGreedy:t.useGreedy},{GetDependencyOrder:()=>i,GetAllNextDependency:x,GetNextDependency:y,GetPrevDependency:T,GetAllPrevDependency:f,GetPathToLevelMap:()=>p},{pushIntoHistory:G,createHistoryAction:I},{callOnError:q,callOnSuccess:z,callOnStart:J,emit:m},r),v=(_,K)=>{let H=h(_),ne=w(K,_);return H.children.push(ne),H.dirtySignal.value++,ne},{SetRule:d,SetRules:R}=ie(C,n,s),{SetStrategy:g}=le(C),{SetValidators:k}=ce(C),U=pe(n),N=()=>{let _=U();i=_.steps,p=_.levelMap;};return {schema:D,SetRule:(..._)=>{d.apply(null,_),e=true,!l&&new Promise((K,H)=>{l=true,K();}).then(()=>{if(N(),e){let{directNextMap:K,directPrevMap:H}=M(i.flat());a=K,o=H;}}).finally(()=>{l=false,e=false;});},SetRules:(..._)=>{R.apply(null,_),e=true,!l&&new Promise((K,H)=>{l=true,K();}).then(()=>{if(N(),e){let{directNextMap:K,directPrevMap:H}=M(i.flat());a=K,o=H;}}).finally(()=>{l=false,e=false;});},SetStrategy:g,SetValidators:k,SetTrace:b,usePlugin:S,SetValue:(_,K)=>{C(_).dependOn(()=>K);},GetValue:(_,K="defaultValue")=>C(_)[K],GetFormData:V,GetGroupByPath:h,notifyAll:async()=>{N(),await P();},AddNewSchema:v,GetAllDependency:()=>n,GetDependencyOrder:()=>i,Undo:A,Redo:O,initCanUndo:W,initCanRedo:B,onError:L,onSuccess:j,onStart:X}}var $=new Map,Re=(c,t,r)=>{try{if(typeof r.UITrigger.signalCreateor!="function"||typeof r.UITrigger.signalTrigger!="function")throw Error("\u9700\u8981\u5B9A\u4E49signal\u6765\u901A\u77E5ui");if($.has(c))throw Error("engineID\u91CD\u590D,\u4FEE\u6539id\u6216\u8005\u4F7F\u7528symbol");let e=Te(t,r.config||{useGreedy:!1},r.UITrigger),{schema:l,GetFormData:n,SetRule:s,SetRules:a,SetStrategy:o,SetValidators:i,SetValue:p,GetValue:u,usePlugin:y,GetGroupByPath:T,notifyAll:f,SetTrace:x,GetAllDependency:M,GetDependencyOrder:A,AddNewSchema:O,Undo:G,Redo:I,initCanUndo:W,initCanRedo:B,onError:L,onSuccess:q,onStart:j}=e,z={config:{SetRule:s,SetRules:a,SetStrategy:o,SetValidators:i,notifyAll:f,SetTrace:x,usePlugin:y},data:{schema:l,GetFormData:n,AddNewSchema:O,SetValue:p,GetValue:u,GetGroupByPath:T},history:{Undo:G,Redo:I,initCanUndo:W,initCanRedo:B},dependency:{GetAllDependency:M,GetDependencyOrder:A},hooks:{onError:L,onSuccess:q,onStart:j}};return $.set(c,z),z}catch(e){throw Error(e)}},pt=c=>{if($.has(c))return $.get(c);throw Error("\u4E0D\u5B58\u5728\u7684id")},yt=c=>{$.delete(c);},ft=Re;export{yt as deleteEngine,pt as useEngine,Re as useEngineManager,ft as useMeshFlow};
1
+ var ne=class{computedRules=[];store={OR:(e,r)=>{let t,l,n=this.computedRules;for(let i=0;i<n.length;i++){let a=n[i],o=a.logic(e);if(o instanceof Promise)return (async()=>{let d=await o;if(a.entityId==="__base__"?l=d:d&&(t=a.value),typeof t>"u")for(let u=i+1;u<n.length;u++){let y=n[u],S=y.logic(e),f=S instanceof Promise?await S:S;if(y.entityId==="__base__"){l=f;continue}if(f){t=y.value;break}}return typeof t>"u"&&(t=l),{res:t,version:r}})();let s=o;if(a.entityId==="__base__"){l=s;continue}if(s){t=a.value;break}}return typeof t>"u"&&(t=l),{res:t,version:r}},PRIORITY:(e,r)=>{let t=null,l=this.computedRules;for(let n=0;n<l.length;n++){let a=l[n].logic(e);if(a instanceof Promise)return (async()=>{let o=await a;if(o!==void 0)return {res:o,version:r};for(let s=n+1;s<l.length;s++){let d=l[s].logic(e),u=d instanceof Promise?await d:d;if(u!==void 0)return {res:u,version:r}}return {res:void 0,version:r}})();if(a!==void 0)return {res:a,version:r}}return {res:t,version:r}}};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.computedRules=Array.from(e.values()).map(r=>Array.from(r)).flat().sort((r,t)=>t.priority-r.priority):this.computedRules=Array.from(e.values()).map(r=>Array.from(r)).flat();}setStrategy(e){this.CurrentStrategy=this.store[e],this.updateComputedRules();}evaluate(e,r){return this.CurrentStrategy(e,r)}},$=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;effectArray=[];constructor(e,r,t){let l=()=>this.rules;this.strategy=new ne(l),this.path=t,this.isValue=r==="value",this.contract=this.inferType(e),this.cache=e,this.setRule({priority:0,entityId:"__base__",logic:()=>e});}forceNotify(){this._forceNotify=true;}isForceNotify(){return this._forceNotify}setStrategy(e){this.strategy.setStrategy(e);}updateInputValueRule(e){this.isValue&&this.setRule({priority:1,entityId:"__input_value__",logic:()=>e});}setDefaultRule(e){let r=new Set;r.add(e),this.rules.set(e.id,r);}setRules(e,r){r&&this.updateDeps(r);let t=++this.id,l={...e,entityId:t};for(let n of e.triggerPaths)this.rules.has(n)||this.rules.set(n,new Set),this.rules.get(n).add(l);return this.strategy.updateComputedRules(),()=>{for(let n of e.triggerPaths){let i=this.rules.get(n);i&&(i.delete(l),i.size===0&&(this.rules.delete(n),this.deps.delete(n)));}this.strategy.updateComputedRules();}}updateDeps(e){for(let[r,t]of e)this.deps.set(r,t);}setRule(e,r){if(r&&this.updateDeps(r),typeof e.entityId=="string"){this.setDefaultRule(e);return}let t=++this.id,l={...e,entityId:t};if(e)for(let n of e.triggerPaths)this.rules.has(n)||this.rules.set(n,new Set),this.rules.get(n).add(l);return this.strategy.updateComputedRules(),()=>{for(let n of e.triggerPaths){let i=this.rules.get(n);i&&(i.delete(l),i.size===0&&(this.rules.delete(n),this.deps.delete(n)));}this.strategy.updateComputedRules();}}setSideEffect(e){this.effectArray.push(e);}getSideEffect(){return [...this.effectArray]}evaluate(e){let r=null;if(e.GetToken&&(r=e.GetToken()),this.pendingPromise&&this.promiseToken!==r&&(this.pendingPromise=null,this.promiseToken=null),this.pendingPromise)return this.pendingPromise;let t=false;if(typeof e.triggerPath=="string"){t=true;let i=this.deps.get(e.triggerPath),a=e.GetValueByPath(e.triggerPath);if(typeof i=="object"||typeof a=="object")t=false;else {let o=Array.from(this.deps.keys());for(let s of o){let d=this.deps.get(s),u=e.GetValueByPath(s);if(d!==u){t=false;break}}}}if(t)return this.cache;this.promiseToken=r;let l=++this.version,n=this.strategy.evaluate(e,l);if(!(n instanceof Promise)){let{res:i,version:a}=n;return this.finalizeSync(i,a,e,r)}return this.pendingPromise=(async()=>{try{let{res:i,version:a}=await n;return this.finalizeSync(i,a,e,r)}catch(i){throw {path:this.path,error:i}}finally{this.promiseToken===r&&(this.pendingPromise=null,this.promiseToken=null);}})(),this.pendingPromise}finalizeSync(e,r,t,l){return l!==this.promiseToken||r<this.version?this.cache:(this.cache=e,this.deps.forEach((n,i)=>{this.deps.set(i,t.GetValueByPath(i));}),e)}inferType(e){return Array.isArray(e)?"array":typeof e}},te=class{validators=[];defaultValidators=[];path="";constructor(e){this.path=e,this.SetDefaultValidators();}setValidators(e){this.validators.push(e);}SetDefaultValidators(){let e={logic:t=>t||typeof t=="number"?true:`${this.path} undefined`,condition:t=>!!t.required},r={logic:function(t){return t.length>this.options.maxLength?`Too long:${this.options.maxLength}`:true},condition:function(t){return typeof t.maxLength!="number"?false:(r.options={maxLength:t.maxLength},t.type==="input"&&t.hidden===false)},options:{}};this.defaultValidators.push(e),this.defaultValidators.push(r);}evaluate(e,r){let t=true,l=[...this.defaultValidators,...this.validators];for(let n of l){if(!n.condition(r))continue;let a=n.logic(e);if(typeof a!="boolean"){t=a;break}}return t}};var ae=(c={frameQuota:12})=>{let e=performance.now(),r=0,t=false,l=()=>!!navigator?.scheduling?.isInputPending?.({includeContinuous:true});return {getIsFirstFrame:()=>t,reset(){e=performance.now(),r=0,t=true;},shouldYield(){let n=performance.now();return r++,!!((r>=5||t)&&(r=0,n-e>c.frameQuota||l()))},async yieldToMain(){return new Promise(n=>{Pe(()=>{e=performance.now(),r=0,t&&(t=false),n();});})}}},Pe=c=>{let{port1:e,port2:r}=new MessageChannel;e.onmessage=c,r.postMessage(null);};function oe(c,e,r,t,l){let n=new Map,i=c.useGreedy,a=ae();return async(s,d)=>{let y=Symbol("token");n.set(s,y);let S=false;a.reset();let f=new Set,R=new Set,C=new Set(e.GetAllNextDependency(s));C.add(s);let E=new Map,N=new Map,w=new Set,V=e.GetPathToLevelMap(),_=V.get(s)??0,z=0,q=T=>{e.GetAllNextDependency(T).forEach(F=>{let A=V.get(F)||0;A>z&&(z=A);});};q(s),d.forEach(T=>{w.add(T);}),f.add(s);let W=performance.now();t.emit("flow:start",{path:s}),t.callOnStart({path:s});let H=false,J=30,Z=T=>{let{target:x,trigger:F}=T,A=false,O=false,k=r.GetRenderSchemaByPath(x),M=[],m=(p,g)=>{if(f.has(p)||R.has(p)||w.has(p))return;let D=0,v=V.get(p)??0;if(E.has(p))D=E.get(p)-1;else {if(v>_&&E.size>J){N.has(v)||N.set(v,new Set),N.get(v).add(p),t.emit("node:intercept",{path:p,type:7});return}let I=e.GetPrevDependency(p),B=0;for(let U of I){if(f.has(U))continue;(V.get(U)??0)>_&&B++;}D=B;}if(D<=0){let I=w.has(p),B=R.has(p);if(I||B){t.emit("node:intercept",{path:p,type:B?3:3.1});return}E.delete(p),w.add(p),t.emit("node:release",{path:p,type:g,detail:{path:x}});}else E.set(p,D);},b=(p=[])=>{if(n.get(s)!==y)return;if(p.length){let v={};for(let I of p){let B=(I.args||[]).reduce((U,ee)=>(U[ee]=k[ee],U),{});try{let U=I.fn(B);U&&typeof U=="object"&&Object.assign(v,U);}catch(U){}}for(let I in v)k[I]=v[I];A=true;}A&&l.flushPathSet.add(x),t.emit("node:success",{path:x}),f.add(x);let g=e.GetNextDependency(x);(A||O)&&e.GetAllNextDependency(x).forEach(I=>C.add(I));for(let v of g){if(f.has(v)){t.emit("node:intercept",{path:v,type:2});continue}if(R.has(v)||w.has(v)){t.emit("node:intercept",{path:v,type:R.has(v)?3:3.1});continue}if(A||O)m(v,1);else if(E.has(v))m(v,2);else {let B=V.get(v);N.has(B)||N.set(B,new Set);let U=N.get(B);U.has(v)||(U.add(v),t.emit("node:stagnate",{path:v,type:1}));}}R.delete(x),(async()=>{if(!S){let v=R.size,I=w.size;t.emit("flow:fire",{path:x,type:1,detail:{active:v,pending:I,blocked:E.size}}),h();}})();},G=p=>{t.emit("node:error",{path:x,error:p});let g=Symbol("abort");n.set(s,g),w.clear(),E.clear(),R.clear(),t.callOnError(p);},P=(p,g)=>{let D=false;p!==k[g]&&(k[g]=p,A=true,t.emit("node:bucket:success",{path:x,key:g,value:p}),g==="value"&&(D=true)),k.nodeBucket[g].isForceNotify()&&(O=true),(D||O)&&q(x);};t.emit("node:start",{path:x});try{let p=[];for(let g in k.nodeBucket){let D=k.nodeBucket[g];p.push(...D.getSideEffect());let v=D.evaluate({affectKey:g,triggerPath:F,GetRenderSchemaByPath:r.GetRenderSchemaByPath,GetValueByPath:I=>r.GetRenderSchemaByPath(I).value,GetToken:()=>y});if(v instanceof Promise){let I=v.then(B=>{n.get(s)===y&&P(B,g);});M.push(I);}else P(v,g);}if(M.length>0)return Promise.all(M).then(()=>{b(p);}).catch(G);b(p);return}catch(p){G(p);}},h=async()=>{if(n.get(s)!==y){S=false;return}S=true;let T=a.getIsFirstFrame(),x=0,F=()=>i&&T?30:1/0,A=0,O=F();try{for(;n.get(s)===y;){let k=A>=O,M=a.shouldYield();if(k||M){if(A>0&&(x++,(T||x%2===0)&&l.requestUpdate()),await a.yieldToMain(),n.get(s)!==y)break;A=0,T=a.getIsFirstFrame();}if(w.size>0&&R.size<5){for(let m of w){if(R.size>=5||A>=O)break;let b=V.get(m)??0,G=e.GetPrevDependency(m),P=G.length>1;if((!i||P)&&b>_){w.delete(m);let g=G.filter(D=>C.has(D)&&!f.has(D)).length;E.set(m,g||0),t.emit("node:intercept",{path:m,type:g>0?4:5,detail:{targetLevel:b,currentLevel:_,pendingParentsCount:g}});continue}if(w.delete(m),R.add(m),t.emit("node:processing",{path:m}),Z({target:m,trigger:s}),A++,A>=O||a.shouldYield())break}if(w.size>0)continue}if(A<O&&i&&E.size>0&&R.size<5){let m=!1,b=0;for(let[G,P]of E)if(P<=0){let p=V.get(G)??0,g=e.GetPrevDependency(G);if(p>_&&g.length>1)continue;if(E.delete(G),w.add(G),b++,m=!0,t.emit("node:release",{path:G,type:4}),b>=O)break}if(b>0)continue;if(m){if(a.shouldYield()&&(await a.yieldToMain(),n.get(s)!==y))break;continue}}if(R.size===0&&w.size===0){let m=new Set;for(let P of N.keys())m.add(P);for(let[P]of E){let p=V.get(P)??0;p>_&&m.add(p);}let b=Array.from(m).sort((P,p)=>P-p),G=b[0];if(b.length>0&&G<=z){let P=b[0];if(P<=z){_=P;let p=N.get(P);p&&(p.forEach(g=>w.add(g)),N.delete(P));for(let[g]of E)(V.get(g)??0)===P&&(E.delete(g),w.add(g),t.emit("node:release",{path:g,type:3,detail:{level:P}}));continue}}else {N.forEach((P,p)=>{P.forEach(g=>{f.add(g),t.emit("node:intercept",{path:g,type:6});});}),N.clear();for(let[P]of E)f.add(P),t.emit("node:intercept",{path:P,type:6});E.clear();break}}w.size>0&&R.size>=5&&t.emit("flow:wait",{type:2});break}}finally{if(S=false,R.size+E.size+w.size===0){if(n.get(s)===y&&!H){H=true,t.emit("flow:end",{type:1}),l.requestUpdate();let M=performance.now();t.emit("flow:success",{duration:(M-W).toFixed(2)+"ms"}),Promise.resolve().then(()=>{t.callOnSuccess();});}}else t.emit("flow:wait",{type:1,detail:{nums:R.size}});}};h();}}function se(c,e,r,t,l,n){let i=ve(c),a=0,o=new Map,s=new Map,d=new Map,u=false,y=new Set,S=false,f=true,R=null,C=h=>{let T=o.get(h);return s.get(T)},E=h=>d.get(h),N=async()=>{let h=Array.from(y);y.clear();for(let T of h){let x=C(T);n.signalTrigger(x.dirtySignal);}},w=()=>{u||(u=true,requestAnimationFrame(()=>{try{for(;y.size>0;)N();}finally{u=false;}}));},V=()=>{let h=(T,x,F)=>{if(typeof T!="object"||T===null||Array.isArray(T)){if(F.length>0){let O=F[F.length-1];x[O]=C(F.join(".")).value;}return}let A=Object.getOwnPropertyNames(T);for(let O of A)F.push(O),h(T[O],T,F),F.pop();};return h(i,null,[]),i},Y=oe({useGreedy:e.useGreedy},r,{GetRenderSchemaByPath:C},l,{requestUpdate:w,flushPathSet:y}),_=async()=>(S&&R||(S=true,R=(async()=>{let h=r.GetDependencyOrder(),T=performance.now(),x=performance.now();try{for(let A=0;A<h.length;A++){let O=h[A];await Promise.all(O.map(async k=>{let M=C(k),m=!1;for(let b in M.nodeBucket){let G=await M.nodeBucket[b].evaluate({affectKey:b,triggerPath:void 0,GetRenderSchemaByPath:C,GetValueByPath:P=>C(P).value,isSameToken:()=>!0});if(b==="options"){let P=!1,p=M.value;for(let g of G)if(g.value==p){P=!0;break}P||(M.value=void 0,m=!0);}G!==M[b]&&(M[b]=G,m=!0);}m&&y.add(k);})),performance.now()-x>12&&(await new Promise(k=>requestAnimationFrame(k)),x=performance.now());}y.size>0&&w(),f=!1;let F=performance.now();l.emit("flow:success",{duration:(F-T).toFixed(2)+"ms"}),l.callOnSuccess();}catch(F){throw l.emit("node:error",{path:F.path,error:F.error}),l.callOnError(F),F}finally{S=false,R=null,f=false;}})()),R),z=h=>{if(f)return;if(!C(h))throw Error("Node undefined");performance.now();y.add(h),w();let F=r.GetNextDependency(h);q(F,h);};function q(h,T){Y(T,h);}let W=h=>{if(!h)throw Error("path error");let T=C(h);T.nodeBucket.value&&T.nodeBucket.value.updateInputValueRule(T.value);},H=(h,T="")=>{let x="name"in h?h.name:void 0,F=x?T===""?x:`${T}.${x}`:T,A=n.signalCreateor(),O=a++,k={getRenderSchema:b=>C(b)},M=(b,G)=>{let P=b(G),p=C(G.path),g=t.createHistoryAction([{path:G.path,value:p.value},{path:G.path,value:P}],D=>{let v=C(D.path);v.value=D.value,W(D.path),z(D.path);});p.value=P,t.pushIntoHistory(g),W(G.path),z(G.path);},m={...h,disabled:!!h.disabled,hidden:"hidden"in h?h.hidden:false,readonly:"readonly"in h?h.readonly:false,required:"required"in h?h.required:false,path:F,dirtySignal:A,uid:O,nodeBucket:{},validators:new te(F),theme:"secondary",dependOn:b=>M(b,{...k,path:F})};return h.type==="group"&&(delete m.nodeBucket,delete m.validators,m.children=h.children.map(b=>H(b,F)),d.set(m.path,m)),o.set(m.path,m.uid),s.set(m.uid,m),m};return {schema:H(c),GetFormData:()=>V(),GetRenderSchemaByPath:C,GetGroupByPath:E,notifyAll:_,convertToRenderSchema:H}}function ve(c,e={}){let r=n=>{if(n.type=="group")return {key:n.name||"",isGroup:true,val:n.children.reduce((i,a)=>[...i,r(a)],[])};if(n.type=="input"||n.type=="number"||n.type=="select"||n.type=="checkbox")return {key:n.name,isGroup:false,val:n.value};throw Error(`undefined type:${n.type}`)},t=(n,i)=>{if(i.isGroup){let a={};i.key===""?a=n:n[i.key]=a,i.val.forEach(o=>{t(a,o);});}else n[i.key]=i.val;},l=r(c);return t(e,l),e}var ie=(c,e,r)=>{let l=n=>{let i=r.triggerPaths.map(s=>n.GetValueByPath(s)),a=Object.create(null);return Object.defineProperty(a,"triggerTargets",{get:()=>i}),Object.defineProperty(a,"affectedTatget",{get:()=>n.GetRenderSchemaByPath(c)[e]}),r.logic({slot:a})};return {value:r.value,targetPath:c,triggerPaths:r.triggerPaths,priority:r.priority??10,logic:l}},le=(c,e,r)=>{if(!c)throw Error("");let t=c,l=(a,o)=>{e.has(a)||e.set(a,new Set),e.get(a).add(o),r.has(o)||r.set(o,new Set),r.get(o).add(a);};return {SetRule:(a,o,s,d={logic:u=>{}})=>{let u=t(o),y=ie(o,s,{...d,triggerPaths:[a]}),S=[a].map(f=>[f,t(f).value]);if(l(a,o),u.nodeBucket[s])u.nodeBucket[s].setRule(y,S),d.effect&&u.nodeBucket[s].setSideEffect({fn:d.effect,args:d.effectArgs?d.effectArgs:[s]});else {let f=new $(u[s],s,o);f.setRule(y,S),d.effect&&f.setSideEffect({fn:d.effect,args:d.effectArgs?d.effectArgs:[s]}),u.nodeBucket[s]=f;}d.forceNotify&&u.nodeBucket[s].forceNotify();},SetRules:(a,o,s,d={logic:u=>{}})=>{let u=t(o);for(let f of a)l(f,o);let y=ie(o,s,{...d,triggerPaths:a}),S=a.map(f=>[f,t(f).value]);if(u.nodeBucket[s])u.nodeBucket[s].setRules(y,S),d.effect&&u.nodeBucket[s].setSideEffect({fn:d.effect,args:d.effectArgs?d.effectArgs:[s]});else {let f=new $(u[s],s,o);f.setRules(y,S),d.effect&&f.setSideEffect({fn:d.effect,args:d.effectArgs?d.effectArgs:[s]}),u.nodeBucket[s]=f;}d.forceNotify&&u.nodeBucket[s].forceNotify();}}},ce=c=>{let e=c||void 0;if(!e)throw Error("");return {SetStrategy:(t,l,n)=>{e(t).nodeBucket[l].setStrategy(n);}}};var ue=c=>{let e=c||void 0;return {SetValidators:(t,l)=>{let n=e(t),i=(o,s,d)=>o(s,d),a=(o,s,d)=>o(s,d);if(!n.validators)throw Error("validator init error");n.validators.setValidators({logic:o=>i(l.logic,o,e),condition:typeof l.condition=="function"?o=>a(l.condition,o,e):()=>true});}}};function de(){let c=new Map,e=new Map,r=new Set,t=(i,a)=>{c.set(i,a);let o=e.get(i);o&&o(a);};return {SetTrace:(i,a)=>{e.set(i,a);let o=c.get(i)||"idle";return a(o),()=>{e.delete(i);}},useTrace:()=>({apply:a=>{a.on("flow:start",()=>{r.forEach(o=>t(o,"idle")),r.clear(),c.clear();}),a.on("node:release",({path:o,type:s})=>{(s==1||s==2)&&(r.add(o),t(o,"pending"));}),a.on("node:pending",({path:o})=>{r.add(o),(!c.has(o)||c.get(o)==="idle")&&t(o,"pending");}),a.on("node:start",({path:o})=>{r.add(o),t(o,"calculating");}),a.on("node:success",({path:o})=>{t(o,"calculated");}),a.on("node:intercept",({path:o,type:s})=>{s==3&&t(o,"calculating"),s==6&&t(o,"idle");}),a.on("node:stagnate",({path:o})=>{t(o,"pending");}),a.on("node:error",({path:o})=>t(o,"error"));}})}}function pe(c,e,r,t){let l=d=>{let u=c(),y=e(),S=new Set;return u.get(d)?.forEach(f=>S.add(f)),S.size===0?[]:Array.from(S).filter(f=>{let R=y.get(f)||new Set;return !Array.from(R).some(N=>S.has(N))})};return {GetNextDependency:d=>{let u=t();return Array.from(u.get(d)||[])},GetPrevDependency:d=>{let u=r();return Array.from(u.get(d)||[])},GetAllPrevDependency:d=>{let u=e();return Array.from(u.get(d)||[])},GetAllNextDependency:d=>{let u=c();return Array.from(u.get(d)||[])},rebuildDirectDependencyMaps:d=>{let u=new Map,y=new Map;for(let S of d){let f=l(S);u.set(S,new Set(f));for(let R of f)y.has(R)||y.set(R,new Set),y.get(R).add(S);}return {directNextMap:u,directPrevMap:y}}}}function fe(c){let e=t=>{let l=[],n=[],i=new Map,a=t.size,o=0,s=0;for(let[d,u]of t)u===0&&n.push(d);if(n.length===0&&a>0)throw Error("Circular dependency detected");for(;n.length>0;){l.push([...n]);let d=[];for(let u of n){o++,i.set(u,s);let y=c.get(u);if(y)for(let S of y){let f=t.get(S)-1;t.set(S,f),f===0&&d.push(S);}}n=d,s++;}if(o<a)throw Error("Circular dependency detected");return {steps:l,levelMap:i}};return ()=>{let t=new Map;for(let l of c.keys()){let n=Array.from(c.get(l)||[]);t.has(l)||t.set(l,0);for(let i of n){let a=t.get(i)||0;t.set(i,++a);}}return e(t)}}function ye(){let c=[],e=[],t={canRedo:()=>{},canUndo:()=>{}},l=()=>{if(!c.length)return;let u=c.pop();u?.undoAction(),o(u);},n=()=>{if(!e.length)return;let u=e.pop();u?.redoAction(),s(u,false);},i=u=>{t.canUndo=()=>u(c.length);},a=u=>{t.canRedo=()=>u(e.length);},o=u=>{e.push(u),e.length>100&&e.shift(),t.canRedo(),t.canUndo();},s=(u,y=true)=>{y&&(e.length=0),c.push(u),c.length>100&&c.shift(),t.canUndo(),t.canRedo();};return {Undo:l,Redo:n,PushIntoHistory:s,CreateHistoryAction:(u,y)=>{let[S,f]=u;return {undoAction:()=>y(S),redoAction:()=>y(f)}},initCanUndo:i,initCanRedo:a}}var Q=()=>{let c=[];return {on:e=>(c.push(e),()=>{let r=c.indexOf(e);r>-1&&c.splice(r,1);}),call:e=>c.forEach(r=>r(e))}};function he(){let{on:c,call:e}=Q();return {onError:c,callOnError:e}}function me(){let{on:c,call:e}=Q();return {onSuccess:c,callOnSuccess:e}}var ge=()=>{let c=new Set,e=new Map,r=(n,i)=>{e.get(n)?.forEach(a=>a(i));},t=(n,i)=>(e.has(n)||e.set(n,new Set),e.get(n).add(i),()=>e.get(n).delete(i));return {usePlugin:n=>{let i=new Set,a=(o,s)=>{let d=t(o,s);return i.add(d),d};return n.apply({on:a}),c.add(n),()=>{i.forEach(o=>o()),i.clear(),c.delete(n);}},emit:r}};function Se(){let{on:c,call:e}=Q();return {onStart:c,callOnStart:e}}function Te(c,e,r){let t=false,l=false,n=new Map,i=new Map,a=new Map,o=new Map,s=[],d=new Map,{GetNextDependency:y,GetPrevDependency:S,GetAllPrevDependency:f,GetAllNextDependency:R,rebuildDirectDependencyMaps:C}=pe(()=>n,()=>i,()=>o,()=>a),{Undo:E,Redo:N,PushIntoHistory:w,CreateHistoryAction:V,initCanUndo:Y,initCanRedo:_}=ye(),{onError:z,callOnError:q}=he(),{onSuccess:W,callOnSuccess:H}=me(),{onStart:J,callOnStart:Z}=Se(),{emit:h,usePlugin:T}=ge(),{SetTrace:x,useTrace:F}=de(),A=F();T(A);let{schema:O,GetFormData:k,GetRenderSchemaByPath:M,GetGroupByPath:m,notifyAll:b,convertToRenderSchema:G}=se(c,{useGreedy:e.useGreedy},{GetDependencyOrder:()=>s,GetAllNextDependency:R,GetNextDependency:y,GetPrevDependency:S,GetAllPrevDependency:f,GetPathToLevelMap:()=>d},{pushIntoHistory:w,createHistoryAction:V},{callOnError:q,callOnSuccess:H,callOnStart:Z,emit:h},r),P=(K,L)=>{let j=m(K),re=G(L,K);return j.children.push(re),j.dirtySignal.value++,re},{SetRule:p,SetRules:g}=le(M,n,i),{SetStrategy:D}=ce(M),{SetValidators:v}=ue(M),I=fe(n),B=()=>{let K=I();s=K.steps,d=K.levelMap;};return {schema:O,SetRule:(...K)=>{p.apply(null,K),t=true,!l&&new Promise((L,j)=>{l=true,L();}).then(()=>{if(B(),t){let{directNextMap:L,directPrevMap:j}=C(s.flat());a=L,o=j;}}).finally(()=>{l=false,t=false;});},SetRules:(...K)=>{g.apply(null,K),t=true,!l&&new Promise((L,j)=>{l=true,L();}).then(()=>{if(B(),t){let{directNextMap:L,directPrevMap:j}=C(s.flat());a=L,o=j;}}).finally(()=>{l=false,t=false;});},SetStrategy:D,SetValidators:v,SetTrace:x,usePlugin:T,SetValue:(K,L)=>{M(K).dependOn(()=>L);},GetValue:(K,L="value")=>M(K)[L],GetFormData:k,GetGroupByPath:m,notifyAll:async()=>{B(),await b();},AddNewSchema:P,GetAllDependency:()=>n,GetDependencyOrder:()=>s,Undo:E,Redo:N,initCanUndo:Y,initCanRedo:_,onError:z,onSuccess:W,onStart:J}}var X=new Map,Re=(c,e,r)=>{try{if(typeof r.UITrigger.signalCreateor!="function"||typeof r.UITrigger.signalTrigger!="function")throw Error("ui trigger undefined");if(X.has(c))throw Error("engineID repeated");let t=Te(e,r.config||{useGreedy:!1},r.UITrigger),{schema:l,GetFormData:n,SetRule:i,SetRules:a,SetStrategy:o,SetValidators:s,SetValue:d,GetValue:u,usePlugin:y,GetGroupByPath:S,notifyAll:f,SetTrace:R,GetAllDependency:C,GetDependencyOrder:E,AddNewSchema:N,Undo:w,Redo:V,initCanUndo:Y,initCanRedo:_,onError:z,onSuccess:q,onStart:W}=t,H={config:{SetRule:i,SetRules:a,SetStrategy:o,SetValidators:s,notifyAll:f,SetTrace:R,usePlugin:y},data:{schema:l,GetFormData:n,AddNewSchema:N,SetValue:d,GetValue:u,GetGroupByPath:S},history:{Undo:w,Redo:V,initCanUndo:Y,initCanRedo:_},dependency:{GetAllDependency:C,GetDependencyOrder:E},hooks:{onError:z,onSuccess:q,onStart:W}};return X.set(c,H),H}catch(t){throw Error(t)}},pt=c=>{if(X.has(c))return X.get(c);throw Error("id undefined")},ft=c=>{X.delete(c);},yt=Re;export{ft as deleteEngine,pt as useEngine,Re as useEngineManager,yt as useMeshFlow};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meshflow/core",
3
- "version": "0.1.6",
3
+ "version": "0.1.7",
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",