@meshflow/core 0.4.5 → 0.4.8

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
@@ -1,44 +1,44 @@
1
- # @meshflow/core
2
-
3
- **基于水位线调度(Watermark Scheduling)的轻量级拓扑逻辑引擎。**
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
-
8
- ## 🏗️ 引擎定位
9
-
10
- `@meshflow/core` 不预设任何业务场景。它是一个纯粹的**逻辑计算骨架**,负责管理节点(TaskNode)之间的拓扑依赖关系。
11
-
12
- 它只做三件事:
13
- 1. **构建拓扑图**:通过 Schema 定义节点及其层级。
14
- 2. **编排任务流**:管理节点间的联动规则(Rule)。
15
- 3. **确定性执行**:利用水位线(Watermark)机制,确保异步任务在复杂的依赖网中,依然能按正确的顺序提交。
16
-
17
- ---
18
-
19
- ## 🎯 核心能力
20
-
21
- ### 1. 任务依赖编排 (Topology)
22
- 引擎会自动解析节点间的依赖关系(A -> B, C -> D)。当上游节点变化时,下游节点会根据拓扑层级进行原子化更新,完美解决“循环计算”和“重复触发”问题。
23
-
24
- ### 2. 异步水位线调度 (Watermark)
25
- 在异步任务流中,由于网络波动,旧的任务可能比新的任务更晚返回。引擎通过内置的水位线令牌,确保只有最新的任务结果会被采纳,彻底杜绝异步竞态导致的数据覆盖风险。
26
-
27
- ### 3. 计算路径剪枝 (Pruning)
28
- 引擎会自动比对节点的值(Value Check)。如果某个节点的计算结果与之前一致,引擎将自动截断该路径的后续传播,实现极致的性能优化,支持 500+ 节点的实时复杂联动。
29
-
30
- ---
31
-
32
- ## ✨ 特性
33
-
34
- - **🏗️ 纯粹 Headless**:无 UI 绑定,适配 Vue/React/Solid 或 Node.js 环境。
35
- - **⚡ 极致类型推导**:提供完整的路径感知能力,支持超大规模 Schema 的深度类型检查。
36
- - **🧩 开放式模块系统**:通过 `modules` 注入,你可以轻松给引擎套上“表单”、“动画”或“工作流”的壳子。
37
- - **🚨 循环依赖检测**:在规则注册阶段即进行环检测,防止逻辑死循环。
38
- - **📦 极简体积**:产物仅 **~19KB**,零第三方依赖。
39
-
40
- ---
41
-
42
- ## 🚀 核心概念演示
43
-
44
- * **[数据表单场景]** 👉 使用 [**@meshflow/form**](https://www.npmjs.com/package/@meshflow/form) (基于 Core 封装的专业表单逻辑层)。
1
+ # @meshflow/core
2
+
3
+ **基于水位线调度(Watermark Scheduling)的轻量级拓扑逻辑引擎。**
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
+
8
+ ## 🏗️ 引擎定位
9
+
10
+ `@meshflow/core` 不预设任何业务场景。它是一个纯粹的**逻辑计算骨架**,负责管理节点(TaskNode)之间的拓扑依赖关系。
11
+
12
+ 它只做三件事:
13
+ 1. **构建拓扑图**:通过 Schema 定义节点及其层级。
14
+ 2. **编排任务流**:管理节点间的联动规则(Rule)。
15
+ 3. **确定性执行**:利用水位线(Watermark)机制,确保异步任务在复杂的依赖网中,依然能按正确的顺序提交。
16
+
17
+ ---
18
+
19
+ ## 🎯 核心能力
20
+
21
+ ### 1. 任务依赖编排 (Topology)
22
+ 引擎会自动解析节点间的依赖关系(A -> B, C -> D)。当上游节点变化时,下游节点会根据拓扑层级进行原子化更新,完美解决“循环计算”和“重复触发”问题。
23
+
24
+ ### 2. 异步水位线调度 (Watermark)
25
+ 在异步任务流中,由于网络波动,旧的任务可能比新的任务更晚返回。引擎通过内置的水位线令牌,确保只有最新的任务结果会被采纳,彻底杜绝异步竞态导致的数据覆盖风险。
26
+
27
+ ### 3. 计算路径剪枝 (Pruning)
28
+ 引擎会自动比对节点的值(Value Check)。如果某个节点的计算结果与之前一致,引擎将自动截断该路径的后续传播,实现极致的性能优化,支持 500+ 节点的实时复杂联动。
29
+
30
+ ---
31
+
32
+ ## ✨ 特性
33
+
34
+ - **🏗️ 纯粹 Headless**:无 UI 绑定,适配 Vue/React/Solid 或 Node.js 环境。
35
+ - **⚡ 极致类型推导**:提供完整的路径感知能力,支持超大规模 Schema 的深度类型检查。
36
+ - **🧩 开放式模块系统**:通过 `modules` 注入,你可以轻松给引擎套上“表单”、“动画”或“工作流”的壳子。
37
+ - **🚨 循环依赖检测**:在规则注册阶段即进行环检测,防止逻辑死循环。
38
+ - **📦 极简体积**:产物仅 **~19KB**,零第三方依赖。
39
+
40
+ ---
41
+
42
+ ## 🚀 核心概念演示
43
+
44
+ * **[数据表单场景]** 👉 使用 [**@meshflow/form**](https://www.npmjs.com/package/@meshflow/form) (基于 Core 封装的专业表单逻辑层)。
package/index.d.mts CHANGED
@@ -1,60 +1,3 @@
1
- type ContractType = 'boolean' | 'scalar' | 'array' | 'object';
2
- declare enum DefaultStrategy {
3
- OR = "OR",
4
- PRIORITY = "PRIORITY",
5
- MERGE = "MERGE"
6
- }
7
- declare class SchemaBucket<P> {
8
- private path;
9
- private strategy;
10
- contract: ContractType;
11
- private rules;
12
- private isValue;
13
- private id;
14
- private cache;
15
- private pendingPromise;
16
- private version;
17
- private deps;
18
- private _forceNotify;
19
- promiseToken: any;
20
- useCache: boolean;
21
- private effectArray;
22
- constructor(baseValue: any, key: string | number | symbol, path: P);
23
- setUseCache(val: boolean): void;
24
- forceNotify(): void;
25
- isForceNotify(): boolean;
26
- setStrategy(type: DefaultStrategy): void;
27
- setDefaultRule(value: any): void;
28
- setRules(value: {
29
- value: any;
30
- targetUid: number;
31
- triggerUids: number[];
32
- priority: any;
33
- logic: any;
34
- entityId?: any;
35
- }, DepsArray?: Array<[number, any]>): () => void;
36
- updateDeps(DepsArray: Array<[number, any]>): void;
37
- setRule(value: {
38
- value: any;
39
- targetUid: number;
40
- triggerUids: number[];
41
- priority: any;
42
- logic: any;
43
- entityId?: any;
44
- }, DepsArray?: Array<[number, any]>): (() => void) | undefined;
45
- setSideEffect(data: {
46
- fn: (args: any[]) => any;
47
- args: any[];
48
- }): void;
49
- getSideEffect(): {
50
- fn: (args: any) => any;
51
- args: any[];
52
- }[];
53
- evaluate(api: any): any;
54
- private finalizeSync;
55
- private inferType;
56
- }
57
-
58
1
  type Unwrap<T> = T extends ReadonlyArray<infer U> ? U : T;
59
2
  type InferLeafType<T> = Unwrap<T> extends infer Node ? Node extends {
60
3
  readonly name: any;
@@ -283,6 +226,75 @@ declare const enum TriggerCause {
283
226
  REPERCUSSION = 2
284
227
  }
285
228
 
229
+ type ContractType = "boolean" | "scalar" | "array" | "object";
230
+ declare enum DefaultStrategy {
231
+ OR = "OR",
232
+ PRIORITY = "PRIORITY",
233
+ MERGE = "MERGE"
234
+ }
235
+ declare class SchemaBucket<P> {
236
+ private path;
237
+ private strategy;
238
+ contract: ContractType;
239
+ private rules;
240
+ private isValue;
241
+ private id;
242
+ private cache;
243
+ private pendingPromise;
244
+ private version;
245
+ private deps;
246
+ private _forceNotify;
247
+ promiseToken: any;
248
+ useCache: boolean;
249
+ private effectArray;
250
+ constructor(baseValue: any, key: string | number | symbol, path: P);
251
+ setUseCache(val: boolean): void;
252
+ forceNotify(): void;
253
+ isForceNotify(): boolean;
254
+ setStrategy(type: DefaultStrategy): void;
255
+ setDefaultRule(value: any): void;
256
+ setRules<TKeys = any>(value: {
257
+ value: any;
258
+ targetUid: number;
259
+ triggerUids: number[];
260
+ priority: any;
261
+ logic: any;
262
+ entityId?: any;
263
+ }, DepsArray?: Array<[
264
+ number,
265
+ Array<TKeys | Exclude<InternalKeys, "state">>,
266
+ any
267
+ ]>): () => void;
268
+ updateDeps<TKeys>(DepsArray: Array<[
269
+ number,
270
+ Array<TKeys | Exclude<InternalKeys, "state">>,
271
+ any
272
+ ]>): void;
273
+ setRule<TKeys = any>(value: {
274
+ value: any;
275
+ targetUid: number;
276
+ triggerUids: number[];
277
+ priority: any;
278
+ logic: any;
279
+ entityId?: any;
280
+ }, DepsArray?: Array<[
281
+ number,
282
+ Array<TKeys | Exclude<InternalKeys, "state">>,
283
+ any
284
+ ]>): (() => void) | undefined;
285
+ setSideEffect(data: {
286
+ fn: (args: any[]) => any;
287
+ args: any[];
288
+ }): void;
289
+ getSideEffect(): {
290
+ fn: (args: any) => any;
291
+ args: any[];
292
+ }[];
293
+ evaluate(api: any): any;
294
+ private finalizeSync;
295
+ private inferType;
296
+ }
297
+
286
298
  type HistoryFactory = {
287
299
  (maxStep?: number): () => MeshFlowHistory;
288
300
  isMeshModuleInited: boolean;
@@ -318,7 +330,7 @@ declare function useEngineInstance<T, P extends MeshPath, S = any, M extends Rec
318
330
  } & M;
319
331
  plugins: {};
320
332
  }): {
321
- SetRule: <TKeys extends KeysOfUnion<NM> = any>(outDegreePath: P, inDegreePath: P, key: KeysOfUnion<NM> | (string & {}), options: SetRuleOptions<NM, TKeys>) => void;
333
+ SetRule: <TKeys extends KeysOfUnion<NM>>(outDegreePath: P, inDegreePath: P, key: KeysOfUnion<NM> | (string & {}), options: SetRuleOptions<NM, TKeys>) => void;
322
334
  SetRules: <TKeys extends KeysOfUnion<NM>>(outDegreePaths: P[], inDegreePath: P, key: KeysOfUnion<NM> | (string & {}), options: SetRuleOptions<NM, TKeys>) => void;
323
335
  SetStrategy: (path: P, key: KeysOfUnion<NM>, strategy: DefaultStrategy) => void;
324
336
  useEntangle: (config: EntangleArgType<P>) => void;
@@ -367,7 +379,7 @@ declare function useEngineInstance<T, P extends MeshPath, S = any, M extends Rec
367
379
  notifyAll: () => Promise<void>;
368
380
  batchNotify: (updates: {
369
381
  path: P;
370
- key: KeysOfUnion<NM> | (string & {});
382
+ key: (string & {}) | KeysOfUnion<NM>;
371
383
  value: any;
372
384
  }[]) => void;
373
385
  useEntangle: (config: EntangleArgType<P>) => void;
@@ -512,7 +524,7 @@ M extends Record<string, any>, NM extends Record<string, any> = InferLeafType<S>
512
524
  signalTrigger: (signal: T) => void;
513
525
  };
514
526
  }) => Engine<{
515
- SetRule: <TKeys extends KeysOfUnion<NM> = any>(outDegreePath: P, inDegreePath: P, key: (string & {}) | KeysOfUnion<NM>, options: SetRuleOptions<NM, TKeys>) => void;
527
+ SetRule: <TKeys extends KeysOfUnion<NM>>(outDegreePath: P, inDegreePath: P, key: (string & {}) | KeysOfUnion<NM>, options: SetRuleOptions<NM, TKeys>) => void;
516
528
  SetRules: <TKeys extends KeysOfUnion<NM>>(outDegreePaths: P[], inDegreePath: P, key: (string & {}) | KeysOfUnion<NM>, options: SetRuleOptions<NM, TKeys>) => void;
517
529
  SetStrategy: (path: P, key: KeysOfUnion<NM>, strategy: DefaultStrategy) => void;
518
530
  useEntangle: (config: EntangleArgType<P>) => void;
@@ -603,7 +615,7 @@ declare const useMeshFlow: <const S extends Record<string, any> | any[], T, M ex
603
615
  signalTrigger: (signal: T) => void;
604
616
  };
605
617
  }) => Engine<{
606
- SetRule: <TKeys extends KeysOfUnion<NM> = any>(outDegreePath: P, inDegreePath: P, key: (string & {}) | KeysOfUnion<NM>, options: SetRuleOptions<NM, TKeys>) => void;
618
+ SetRule: <TKeys extends KeysOfUnion<NM>>(outDegreePath: P, inDegreePath: P, key: (string & {}) | KeysOfUnion<NM>, options: SetRuleOptions<NM, TKeys>) => void;
607
619
  SetRules: <TKeys extends KeysOfUnion<NM>>(outDegreePaths: P[], inDegreePath: P, key: (string & {}) | KeysOfUnion<NM>, options: SetRuleOptions<NM, TKeys>) => void;
608
620
  SetStrategy: (path: P, key: KeysOfUnion<NM>, strategy: DefaultStrategy) => void;
609
621
  useEntangle: (config: EntangleArgType<P>) => void;
package/index.d.ts CHANGED
@@ -1,60 +1,3 @@
1
- type ContractType = 'boolean' | 'scalar' | 'array' | 'object';
2
- declare enum DefaultStrategy {
3
- OR = "OR",
4
- PRIORITY = "PRIORITY",
5
- MERGE = "MERGE"
6
- }
7
- declare class SchemaBucket<P> {
8
- private path;
9
- private strategy;
10
- contract: ContractType;
11
- private rules;
12
- private isValue;
13
- private id;
14
- private cache;
15
- private pendingPromise;
16
- private version;
17
- private deps;
18
- private _forceNotify;
19
- promiseToken: any;
20
- useCache: boolean;
21
- private effectArray;
22
- constructor(baseValue: any, key: string | number | symbol, path: P);
23
- setUseCache(val: boolean): void;
24
- forceNotify(): void;
25
- isForceNotify(): boolean;
26
- setStrategy(type: DefaultStrategy): void;
27
- setDefaultRule(value: any): void;
28
- setRules(value: {
29
- value: any;
30
- targetUid: number;
31
- triggerUids: number[];
32
- priority: any;
33
- logic: any;
34
- entityId?: any;
35
- }, DepsArray?: Array<[number, any]>): () => void;
36
- updateDeps(DepsArray: Array<[number, any]>): void;
37
- setRule(value: {
38
- value: any;
39
- targetUid: number;
40
- triggerUids: number[];
41
- priority: any;
42
- logic: any;
43
- entityId?: any;
44
- }, DepsArray?: Array<[number, any]>): (() => void) | undefined;
45
- setSideEffect(data: {
46
- fn: (args: any[]) => any;
47
- args: any[];
48
- }): void;
49
- getSideEffect(): {
50
- fn: (args: any) => any;
51
- args: any[];
52
- }[];
53
- evaluate(api: any): any;
54
- private finalizeSync;
55
- private inferType;
56
- }
57
-
58
1
  type Unwrap<T> = T extends ReadonlyArray<infer U> ? U : T;
59
2
  type InferLeafType<T> = Unwrap<T> extends infer Node ? Node extends {
60
3
  readonly name: any;
@@ -283,6 +226,75 @@ declare const enum TriggerCause {
283
226
  REPERCUSSION = 2
284
227
  }
285
228
 
229
+ type ContractType = "boolean" | "scalar" | "array" | "object";
230
+ declare enum DefaultStrategy {
231
+ OR = "OR",
232
+ PRIORITY = "PRIORITY",
233
+ MERGE = "MERGE"
234
+ }
235
+ declare class SchemaBucket<P> {
236
+ private path;
237
+ private strategy;
238
+ contract: ContractType;
239
+ private rules;
240
+ private isValue;
241
+ private id;
242
+ private cache;
243
+ private pendingPromise;
244
+ private version;
245
+ private deps;
246
+ private _forceNotify;
247
+ promiseToken: any;
248
+ useCache: boolean;
249
+ private effectArray;
250
+ constructor(baseValue: any, key: string | number | symbol, path: P);
251
+ setUseCache(val: boolean): void;
252
+ forceNotify(): void;
253
+ isForceNotify(): boolean;
254
+ setStrategy(type: DefaultStrategy): void;
255
+ setDefaultRule(value: any): void;
256
+ setRules<TKeys = any>(value: {
257
+ value: any;
258
+ targetUid: number;
259
+ triggerUids: number[];
260
+ priority: any;
261
+ logic: any;
262
+ entityId?: any;
263
+ }, DepsArray?: Array<[
264
+ number,
265
+ Array<TKeys | Exclude<InternalKeys, "state">>,
266
+ any
267
+ ]>): () => void;
268
+ updateDeps<TKeys>(DepsArray: Array<[
269
+ number,
270
+ Array<TKeys | Exclude<InternalKeys, "state">>,
271
+ any
272
+ ]>): void;
273
+ setRule<TKeys = any>(value: {
274
+ value: any;
275
+ targetUid: number;
276
+ triggerUids: number[];
277
+ priority: any;
278
+ logic: any;
279
+ entityId?: any;
280
+ }, DepsArray?: Array<[
281
+ number,
282
+ Array<TKeys | Exclude<InternalKeys, "state">>,
283
+ any
284
+ ]>): (() => void) | undefined;
285
+ setSideEffect(data: {
286
+ fn: (args: any[]) => any;
287
+ args: any[];
288
+ }): void;
289
+ getSideEffect(): {
290
+ fn: (args: any) => any;
291
+ args: any[];
292
+ }[];
293
+ evaluate(api: any): any;
294
+ private finalizeSync;
295
+ private inferType;
296
+ }
297
+
286
298
  type HistoryFactory = {
287
299
  (maxStep?: number): () => MeshFlowHistory;
288
300
  isMeshModuleInited: boolean;
@@ -318,7 +330,7 @@ declare function useEngineInstance<T, P extends MeshPath, S = any, M extends Rec
318
330
  } & M;
319
331
  plugins: {};
320
332
  }): {
321
- SetRule: <TKeys extends KeysOfUnion<NM> = any>(outDegreePath: P, inDegreePath: P, key: KeysOfUnion<NM> | (string & {}), options: SetRuleOptions<NM, TKeys>) => void;
333
+ SetRule: <TKeys extends KeysOfUnion<NM>>(outDegreePath: P, inDegreePath: P, key: KeysOfUnion<NM> | (string & {}), options: SetRuleOptions<NM, TKeys>) => void;
322
334
  SetRules: <TKeys extends KeysOfUnion<NM>>(outDegreePaths: P[], inDegreePath: P, key: KeysOfUnion<NM> | (string & {}), options: SetRuleOptions<NM, TKeys>) => void;
323
335
  SetStrategy: (path: P, key: KeysOfUnion<NM>, strategy: DefaultStrategy) => void;
324
336
  useEntangle: (config: EntangleArgType<P>) => void;
@@ -367,7 +379,7 @@ declare function useEngineInstance<T, P extends MeshPath, S = any, M extends Rec
367
379
  notifyAll: () => Promise<void>;
368
380
  batchNotify: (updates: {
369
381
  path: P;
370
- key: KeysOfUnion<NM> | (string & {});
382
+ key: (string & {}) | KeysOfUnion<NM>;
371
383
  value: any;
372
384
  }[]) => void;
373
385
  useEntangle: (config: EntangleArgType<P>) => void;
@@ -512,7 +524,7 @@ M extends Record<string, any>, NM extends Record<string, any> = InferLeafType<S>
512
524
  signalTrigger: (signal: T) => void;
513
525
  };
514
526
  }) => Engine<{
515
- SetRule: <TKeys extends KeysOfUnion<NM> = any>(outDegreePath: P, inDegreePath: P, key: (string & {}) | KeysOfUnion<NM>, options: SetRuleOptions<NM, TKeys>) => void;
527
+ SetRule: <TKeys extends KeysOfUnion<NM>>(outDegreePath: P, inDegreePath: P, key: (string & {}) | KeysOfUnion<NM>, options: SetRuleOptions<NM, TKeys>) => void;
516
528
  SetRules: <TKeys extends KeysOfUnion<NM>>(outDegreePaths: P[], inDegreePath: P, key: (string & {}) | KeysOfUnion<NM>, options: SetRuleOptions<NM, TKeys>) => void;
517
529
  SetStrategy: (path: P, key: KeysOfUnion<NM>, strategy: DefaultStrategy) => void;
518
530
  useEntangle: (config: EntangleArgType<P>) => void;
@@ -603,7 +615,7 @@ declare const useMeshFlow: <const S extends Record<string, any> | any[], T, M ex
603
615
  signalTrigger: (signal: T) => void;
604
616
  };
605
617
  }) => Engine<{
606
- SetRule: <TKeys extends KeysOfUnion<NM> = any>(outDegreePath: P, inDegreePath: P, key: (string & {}) | KeysOfUnion<NM>, options: SetRuleOptions<NM, TKeys>) => void;
618
+ SetRule: <TKeys extends KeysOfUnion<NM>>(outDegreePath: P, inDegreePath: P, key: (string & {}) | KeysOfUnion<NM>, options: SetRuleOptions<NM, TKeys>) => void;
607
619
  SetRules: <TKeys extends KeysOfUnion<NM>>(outDegreePaths: P[], inDegreePath: P, key: (string & {}) | KeysOfUnion<NM>, options: SetRuleOptions<NM, TKeys>) => void;
608
620
  SetStrategy: (path: P, key: KeysOfUnion<NM>, strategy: DefaultStrategy) => void;
609
621
  useEntangle: (config: EntangleArgType<P>) => void;
package/index.js CHANGED
@@ -1 +1 @@
1
- 'use strict';var we=(M=>(M[M.FlowStart=0]="FlowStart",M[M.FlowSuccess=1]="FlowSuccess",M[M.FlowEnd=2]="FlowEnd",M[M.FlowAbort=3]="FlowAbort",M[M.FlowWait=4]="FlowWait",M[M.FlowFire=5]="FlowFire",M[M.NodeStart=6]="NodeStart",M[M.NodeSuccess=7]="NodeSuccess",M[M.NodeProcessing=8]="NodeProcessing",M[M.NodeError=9]="NodeError",M[M.NodePending=10]="NodePending",M[M.NodeRevive=11]="NodeRevive",M[M.NodeIntercept=12]="NodeIntercept",M[M.NodeRelease=13]="NodeRelease",M[M.NodeStagnate=14]="NodeStagnate",M[M.NodeBucketSuccess=15]="NodeBucketSuccess",M[M.EntangleWarn=16]="EntangleWarn",M[M.EntangleBlocked=17]="EntangleBlocked",M))(we||{}),ke=(r=>(r[r.CAUSALITY=0]="CAUSALITY",r[r.INVERSION=1]="INVERSION",r[r.REPERCUSSION=2]="REPERCUSSION",r))(ke||{});var _e=(r=>(r.OR="OR",r.PRIORITY="PRIORITY",r.MERGE="MERGE",r))(_e||{}),De=class{computedRules=[];getRuleResult(e,t,r){if(e.entityId==="__base__")return e.logic(t);if(!(!e._hasRun||r(e.triggerUids)))return e._lastResult;let c=e.logic(t);return c instanceof Promise?c.then(l=>(e._lastResult=l,e._hasRun=true,l)):(e._lastResult=c,e._hasRun=true,c)}store={OR:(e,t,r)=>{let i,c,l=this.computedRules;for(let s=0;s<l.length;s++){let o=l[s],g=this.getRuleResult(o,e,r);if(g instanceof Promise)return (async()=>{let n=await g;if(o.entityId==="__base__"?c=n:n&&(i=n),typeof i>"u")for(let S=s+1;S<l.length;S++){let f=l[S],m=this.getRuleResult(f,e,r),b=m instanceof Promise?await m:m;if(f.entityId==="__base__"){c=b;continue}if(b){i=f.value;break}}return typeof i>"u"&&(i=c),{res:i,version:t}})();let h=g;if(o.entityId==="__base__"){c=h;continue}if(h){i=o.value;break}}return typeof i>"u"&&(i=c),{res:i,version:t}},PRIORITY:(e,t,r)=>{let i,c=this.computedRules;for(let l=0;l<c.length;l++){let s=c[l],o=this.getRuleResult(s,e,r);if(o instanceof Promise)return (async()=>{let g=await o;if(g!==void 0)return {res:g,version:t};for(let h=l+1;h<c.length;h++){let n=c[h],S=this.getRuleResult(n,e,r),f=S instanceof Promise?await S:S;if(f!==void 0)return {res:f,version:t}}return {res:void 0,version:t}})();if(o!==void 0)return {res:o,version:t}}return {res:i,version:t}},MERGE:(e,t,r)=>{let i,c,l=this.computedRules,s=(g,h)=>g===void 0?h:h===void 0?g:Array.isArray(g)&&Array.isArray(h)?[...h,...g]:typeof g=="object"&&typeof h=="object"?{...h,...g}:g;for(let g=0;g<l.length;g++){let h=l[g],n=this.getRuleResult(h,e,r);if(n instanceof Promise)return (async()=>{let f=await n,m=(P,E)=>{if(P.entityId==="__base__")c=s(c,E);else if(E){let M=P.value!==void 0?P.value:E;i=s(i,M);}};m(h,f);for(let P=g+1;P<l.length;P++){let E=l[P],M=this.getRuleResult(E,e,r),z=M instanceof Promise?await M:M;m(E,z);}return {res:s(i,c),version:t}})();let S=n;if(h.entityId==="__base__"){c=s(c,S);continue}if(S){let f=h.value!==void 0?h.value:S;i=s(i,f);}}return {res:s(i,c),version:t}}};CurrentStrategy=()=>{};CurrentStrategyType="PRIORITY";getRules=()=>{};constructor(e){this.getRules=e,this.CurrentStrategy=this.store.PRIORITY,this.updateComputedRules();}updateComputedRules(){let e=this.getRules();this.CurrentStrategyType==="PRIORITY"||this.CurrentStrategyType==="MERGE"?this.computedRules=Array.from(e.values()).map(t=>Array.from(t)).flat().sort((t,r)=>r.priority-t.priority):this.computedRules=Array.from(e.values()).map(t=>Array.from(t)).flat();}setStrategy(e){this.CurrentStrategyType=e,this.CurrentStrategy=this.store[e],this.updateComputedRules();}evaluate(e,t,r){return this.CurrentStrategy(e,t,r)}},Ee=class{path;strategy;contract;rules=new Map;isValue=false;id=0;cache=void 0;pendingPromise=null;version=0;deps=new Map;_forceNotify=false;promiseToken=null;useCache=true;effectArray=[];constructor(e,t,r){let i=()=>this.rules;this.strategy=new De(i),this.path=r,this.isValue=t==="value",this.contract=this.inferType(e),this.cache=e,this.setRule({priority:0,entityId:"__base__",logic:()=>e});}setUseCache(e){this.useCache=e;}forceNotify(){this._forceNotify=true;}isForceNotify(){return this._forceNotify}setStrategy(e){this.strategy.setStrategy(e);}setDefaultRule(e){let t=new Set;t.add(e),this.rules.set(-1,t);}setRules(e,t){t&&this.updateDeps(t);let r=++this.id,i={...e,entityId:r};for(let c of e.triggerUids)this.rules.has(c)||this.rules.set(c,new Set),this.rules.get(c).add(i);return this.strategy.updateComputedRules(),()=>{for(let c of e.triggerUids){let l=this.rules.get(c);l&&(l.delete(i),l.size===0&&(this.rules.delete(c),this.deps.delete(c)));}this.strategy.updateComputedRules();}}updateDeps(e){for(let[t,r]of e)this.deps.set(t,r);}setRule(e,t){if(t&&this.updateDeps(t),typeof e.entityId=="string"){this.setDefaultRule(e);return}let r=++this.id,i={...e,entityId:r};if(e)for(let c of e.triggerUids)this.rules.has(c)||this.rules.set(c,new Set),this.rules.get(c).add(i);return this.strategy.updateComputedRules(),()=>{for(let c of e.triggerUids){let l=this.rules.get(c);l&&(l.delete(i),l.size===0&&(this.rules.delete(c),this.deps.delete(c)));}this.strategy.updateComputedRules();}}setSideEffect(e){this.effectArray.push(e);}getSideEffect(){return [...this.effectArray]}evaluate(e){let t=null;if(e.GetToken&&(t=e.GetToken()),this.pendingPromise&&this.promiseToken!==t&&(this.pendingPromise=null,this.promiseToken=null),this.pendingPromise)return this.pendingPromise;let r=false;if(typeof e.triggerUid=="number"){r=true;let s=this.deps.get(e.triggerUid),o=e.getStateByUid(e.triggerUid);if(typeof s=="object"||typeof o=="object")r=false;else {let g=Array.from(this.deps.keys());for(let h of g){let n=this.deps.get(h),S=e.getStateByUid(h);if(n!==S){r=false;break}}}}if(r&&this.useCache)return this.cache;this.promiseToken=t;let i=++this.version,c=s=>{if(!s||s.length===0)return true;for(let o of s){let g=this.deps.get(o),h=e.getStateByUid(o);if(g!==h)return true}return false},l=this.strategy.evaluate(e,i,c);if(!(l instanceof Promise)){let{res:s,version:o}=l;return this.finalizeSync(s,o,e,t)}return this.pendingPromise=(async()=>{try{let{res:s,version:o}=await l;return this.finalizeSync(s,o,e,t)}catch(s){throw {path:this.path,error:s}}finally{this.promiseToken===t&&(this.pendingPromise=null,this.promiseToken=null);}})(),this.pendingPromise}finalizeSync(e,t,r,i){return i!==this.promiseToken||t<this.version?this.cache:(this.cache=e,this.deps.forEach((c,l)=>{this.deps.set(l,r.getProxyByUid(l));}),e)}inferType(e){return Array.isArray(e)?"array":typeof e}};var Le=(p,e,t)=>{let i=c=>{let l=t.triggerUids.map(g=>{let h=c.getProxyByUid(g);if(t.triggerKeys.length===0)return h;let n={};return t.triggerKeys.forEach(S=>{n[S]=h[S];}),n}),s=Object.create(null);return Object.defineProperty(s,"triggerTargets",{get:()=>l}),Object.defineProperty(s,"affectedTatget",{get:()=>c.getProxyByUid(p)[e]}),t.logic({slot:s})};return {value:t.value,targetUid:p,triggerUids:t.triggerUids,priority:t.priority??10,logic:i}},He=(p,e,t,r,i,c,l,s)=>{if(!p)throw Error();let o=p,g=(S,f)=>{typeof r[S]>"u"&&(r[S]=[],c[S]=new Set),c[S].add(f),c[S].size>r[S].length&&r[S].push(f),typeof i[f]>"u"&&(i[f]=[],l[f]=new Set),l[f].add(S),l[f].size>i[f].length&&i[f].push(S);};return {SetRule:(S,f,m,b)=>{let P=o(S),E=o(f),M=b.triggerKeys||[],z=s.get(E.uid)||0,X=s.get(P.uid)||0;z+=1,X+=1,s.set(E.uid,z),s.set(P.uid,X);let Y=Le(E.uid,m,{...b,triggerUids:[P.uid],triggerKeys:M}),y=[S].map(_=>{let a=o(_);return [a.uid,a.state.value]});if(g(P.uid,E.uid),typeof E.nodeBucket[m]=="number"){let _=t(E.nodeBucket[m]);_.setRule(Y,y),b.effect&&_.setSideEffect({fn:b.effect,args:b.effectArgs?b.effectArgs:[m]});}else {let _=E.meta[m],a=new Ee(_,m,f);a.setRule(Y,y),b.effect&&a.setSideEffect({fn:b.effect,args:b.effectArgs?b.effectArgs:[m]}),E.nodeBucket[m]=e(a);}E.state[m]=E.meta[m];let Q=t(E.nodeBucket[m]);b.forceNotify&&Q.forceNotify(),b.cacheStrategy=="none"&&Q.setUseCache(false);},SetRules:(S,f,m,b)=>{let P=o(f),E=s.get(P.uid)||0;E+=1,s.set(P.uid,E);let M=[];for(let Q of S){let _=o(Q);M.push(_.uid);let a=s.get(_.uid)||0;a+=1,s.set(_.uid,a),g(_.uid,P.uid);}let z=b.triggerKeys||[],X=Le(P.uid,m,{...b,triggerUids:M,triggerKeys:z}),Y=S.map(Q=>{let _=o(Q);return [_.uid,_.state.value]});if(typeof P.nodeBucket[m]=="number"){let Q=t(P.nodeBucket[m]);Q.setRules(X,Y),b.effect&&Q.setSideEffect({fn:b.effect,args:b.effectArgs?b.effectArgs:[m]});}else {let Q=P.meta[m],_=new Ee(Q,m,f);_.setRules(X,Y),b.effect&&_.setSideEffect({fn:b.effect,args:b.effectArgs?b.effectArgs:[m]}),P.nodeBucket[m]=e(_);}P.state[m]=P.meta[m];let y=t(P.nodeBucket[m]);b.forceNotify&&y.forceNotify(),b.cacheStrategy=="none"&&y.setUseCache(false);}}};var Ye=(p,e)=>{let t=p||void 0;if(!t)throw Error();return {SetStrategy:(i,c,l)=>{let s=t(i);e(s.nodeBucket[c]).setStrategy(l);}}};function je(){let p=new Map,e=new Map,t=new Set,r=(l,s)=>{p.set(l,s);let o=e.get(l);o&&o(s);};return {SetTrace:(l,s)=>{e.set(l,s);let o=p.get(l)||"idle";return s(o),{cancel:()=>{e.delete(l);}}},useTrace:()=>({apply:s=>{s.on(0,()=>{t.forEach(o=>r(o,"idle")),t.clear(),p.clear();}),s.on(13,({path:o,type:g})=>{(g==1||g==2)&&(t.add(o),r(o,"pending"));}),s.on(10,({path:o})=>{t.add(o),(!p.has(o)||p.get(o)==="idle")&&r(o,"pending");}),s.on(6,({path:o})=>{t.add(o),r(o,"calculating");}),s.on(7,({path:o})=>{r(o,"calculated");}),s.on(12,({path:o,type:g})=>{g==3&&r(o,"calculating"),g==6&&r(o,"idle");}),s.on(14,({path:o})=>{r(o,"pending");}),s.on(9,({path:o})=>r(o,"error"));}})}}function ze(p,e,t,r){return {GetNextDependency:h=>r()[h]||[],GetPrevDependency:h=>t()[h]||[],GetAllPrevDependency:h=>e()[h]||[],GetAllNextDependency:h=>p()[h]||[],rebuildDirectDependencyMaps:h=>{let n=[],S=[],f=p();for(let m of h){let b=f[m]||[];n[m]=b;for(let P=0;P<b.length;P++){let E=b[P];typeof S[E]>"u"&&(S[E]=[]),S[E].push(m);}}return {directNextMap:n,directPrevMap:S}}}}function qe(p,e){let t=i=>{let c=[],l=[],s=new Map,o=i.size,g=0,h=0;for(let[n,S]of i)S===0&&l.push(n);if(l.length===0&&o>0)throw Error("Circular dependency detected");for(;l.length>0;){c.push([...l]);let n=[];for(let S of l){g++,s.set(S,h);let f=p[S];if(f)for(let m of f){let b=i.get(m)-1;i.set(m,b),b===0&&n.push(m);}}l=n,h++;}if(g<o)throw Error("Circular dependency detected");return {steps:c,levelMap:s}};return ()=>{let i=new Map;for(let c of e.keys()){let l=p[c]||[];i.has(c)||i.set(c,0);for(let s of l){let o=i.get(s)||0;i.set(s,++o);}}return t(i)}}var Ne=()=>{let p=[];return {on:e=>(p.push(e),()=>{let t=p.indexOf(e);t>-1&&p.splice(t,1);}),call:e=>p.forEach(t=>{t(e);})}};function Qe(){let{on:p,call:e}=Ne();return {onError:p,callOnError:e}}function $e(){let{on:p,call:e}=Ne();return {onSuccess:p,callOnSuccess:e}}var Xe=()=>{let p=new Set,e=new Map,t=new Set,r=(s,o)=>{e.get(s)?.forEach(g=>g(o));},i=(s,o)=>(e.has(s)||e.set(s,new Set),e.get(s).add(o),()=>e.get(s)?.delete(o));return {usePlugin:s=>{let o=new Set,g=(n,S)=>{let f=i(n,S);return o.add(f),f};s.apply({on:g}),p.add(s);let h=()=>{o.forEach(n=>n()),o.clear(),p.delete(s),t.delete(h);};return t.add(h),h},emit:r,destroyPlugin:()=>{t.forEach(s=>s()),t.clear(),e.clear(),p.clear();}}};function Ze(){let{on:p,call:e}=Ne();return {onStart:p,callOnStart:e}}var Je=(p={frameQuota:12})=>{let e=performance.now(),t=0,r=false,i=()=>!!navigator?.scheduling?.isInputPending?.({includeContinuous:true});return {getIsFirstFrame:()=>r,reset(){e=performance.now(),t=0,r=true;},shouldYield(){return !r&&(++t&15)!==0?false:!!(performance.now()-e>p.frameQuota||i())},async yieldToMain(){return new Promise(c=>{Be(()=>{e=performance.now(),t=0,r&&(r=false),c();});})}}},Be=p=>{let{port1:e,port2:t}=new MessageChannel;e.onmessage=p,t.postMessage(null);};function et(p,e,t,r,i,c){let l=new Map,s=p.useGreedy,o=null,g=()=>{l.clear();},h={path:null,level:0,targetLevel:0,currentLevel:0,pendingParentsCount:0,active:0,pending:0,blocked:0,nums:0,asyncNums:0},n={path:null,type:0,triggerPath:null,calledBy:0,key:null,value:null,error:null,token:null,duration:null,detail:h};return {TaskRunner:async(f,m)=>{let P=Symbol("token"),E=typeof f=="number"?f:"__NOTIFY_ALL__";l.set(E,P),o=P;let M=false;c.reset();let z=t.GetMaxUid()+3,X=new Array(z).fill(0),Y=0,y=new Uint8Array(z),Q=new Int32Array(z),_=new Int32Array(z),a=new Int32Array(z*2),N=0,A=0,C=new Int32Array(z*2),L=0,O=0,D=new Int32Array(z*2),T=0,U=0;m.forEach(R=>{X[R]=1,e.GetAllNextDependency(R).forEach(se=>{X[se]=1;});});let K=new Array(z).fill(null),v=[],u=t.Turnstile,d=new Array(z).fill(null).map(()=>[]),B=new Array(z).fill(null).map(()=>[]),H=u.volatileLevels.size>0,ne=H?u.hasObserver:R=>false,le=H?u.receiveGhosts:()=>[],ue=H?u.resolveGhosts:()=>[],Me=H?u.getTriggerKeys:()=>[],Se=u?.volatileLevels||new Set,ye=-1,ee=e.GetUidToLevelMap(),re=0,be=0,ge=R=>{e.GetAllNextDependency(R).forEach(ae=>{let te=ee.get(ae)||0;te>be&&(be=te);});},Ae=new Set;typeof f=="number"&&(y[f]|=16,Ae.add(f),ge(f),i.flushPathSet.add(f));let ve=typeof f=="number"?[f]:m;c.shouldYield()&&(i.requestUpdate(),await c.yieldToMain());let Ie=ve.map(async R=>{if(ne(R)){let se=t.GetNodeByUid(R),ae=Me(R);if(ae.length>0){let te=le(se,ae);return te instanceof Promise&&(te=await te),{seed:R,hitTargets:te}}}return {seed:R,hitTargets:[]}});if((await Promise.all(Ie)).forEach(({seed:R,hitTargets:se})=>{if(se&&se.length>0){v.push(...se);let ae=ee.get(R)||0;ye=Math.max(ye,ae);}}),(v.length>0||ve.length>1)&&(i.requestUpdate(),await c.yieldToMain(),l.get(E)!==P))return;let Te=v.length>0;m.forEach(R=>{if(!Ae.has(R))if(Te){let se=ee.get(R)??0;_[R]=se,y[R]&4||(y[R]|=4,D[T++]=R,U++);let ae=t.GetPathByUid(R);n.path=ae,n.type=2,r.emit(14,n);}else y[R]&1||(y[R]|=1,a[N++]=R,A++),ge(R);}),typeof f=="number"?re=ee.get(f)??0:re=Math.min(...m.map(R=>ee.get(R)??0));let Fe=performance.now(),Re=typeof E=="number"?t.GetPathByUid(E):"__NOTIFY_ALL__";n.path=Re,n.token=P,r.emit(0,n),r.callOnStart({path:Re});let Ce=false,Ke=30,Ve=(R,se)=>{let ae=false,te=false,V=false,x=t.GetNodeByUid(R),$=t.GetPathByUid(R),j=x.calledBy,I=d[R];I.length=0;let F=B[R];F.length=0;let G=false;if(x.calledBy===1){G=true,ae=true,i.flushPathSet.add(R);let w=K[R];w&&(I.push(...w),K[R]=null);}let k=(w,Z)=>{let W=ee.get(w)??0,oe=t.GetNodeByUid(w),J=t.GetPathByUid(w),pe=(j===1||j===2)&&W<=ye;pe&&y[w]&16&&(y[w]&=-17,n.path=J,n.triggerPath=$,r.emit(11,n));let ie=0;if(!(y[w]&49)){if(y[w]&2)ie=Q[w]-1;else {if(W>re&&O>Ke){_[w]=W,y[w]&4||(y[w]|=4,D[T++]=w,U++),n.path=J,n.type=7,r.emit(12,n);return}let me=e.GetPrevDependency(w),q=0;for(let he of me){if(y[he]&16)continue;(ee.get(he)??0)>re&&q++;}ie=q;}if(ie<=0){let me=(y[w]&1)!==0,q=(y[w]&32)!==0;if(me||q){n.path=J,n.type=q?3:3.1,r.emit(12,n);return}y[w]&2&&(y[w]&=-3,O--),pe?oe.calledBy=2:oe.calledBy=0,y[w]&1||(y[w]|=1,a[N++]=w,A++),n.path=J,n.type=Z,h.path=$,r.emit(13,n);}else Q[w]=ie,y[w]&2||(y[w]|=2,C[L++]=w,O++);}},de=(w=[])=>{if(l.get(E)!==P)return;if(w.length){let W={},oe=x.proxy;for(let J of w){let pe=(J.args||[]).reduce((ie,me)=>(ie[me]=oe[me],ie),{});try{let ie=J.fn(pe);ie&&typeof ie=="object"&&Object.assign(W,ie);}catch(ie){}}for(let J in W)if(J in x.state)Object.is(x.state[J],W[J])||(x.state[J]=W[J],I.push(J),ae=true,(x.notifyKeys.size===0||x.notifyKeys.has(J))&&(te=true));else throw {error:`wrong effect in ${String(x.path)}`}}ae&&i.flushPathSet.add(R);let Z=(W=[])=>{if(l.get(E)!==P)return;W&&W.length>0&&(v.push(...W),ye=Math.max(ye,ee.get(R)||0)),I.length=0,n.path=$,n.calledBy=x.calledBy,r.emit(7,n),y[R]|=16;let oe=e.GetNextDependency(R);(te||V)&&(ge(R),e.GetAllNextDependency(R).forEach(he=>{X[he]=1;}));let J=t.GetNodeByUid(R),pe=ee.get(R)??0,ie=Se.has(pe)||v.length>0;for(let q of oe){let he=ee.get(q)??0,Pe=t.GetPathByUid(q);if(ie&&he>=pe){_[q]=he,y[q]&4||(y[q]|=4,D[T++]=q,U++),n.path=Pe,n.type=2,r.emit(14,n);continue}if(y[q]&16){n.path=Pe,n.type=2,r.emit(12,n);continue}if(y[q]&32||(y[q]&1)!==0){n.path=Pe,n.type=y[q]&32?3:3.1,r.emit(12,n);continue}if(te||V)k(q,1);else if(y[q]&2)k(q,2);else {let st=ee.get(q);_[q]=st,y[q]&4||(y[q]|=4,D[T++]=q,U++,n.path=Pe,n.type=1,r.emit(14,n));}}y[R]&32&&(y[R]&=-33,Y--),J.calledBy=0,(()=>{if(!M){M=true;let q=Y,he=A,Pe=O;n.path=$,n.type=1,h.active=q,h.pending=he,h.blocked=Pe,r.emit(5,n),Ge();}})();};if(ne(R)&&I.length>0){let W=le(x,I);W instanceof Promise?W.then(Z).catch(ce):Z(W);}else Z([]);},ce=w=>{n.path=$,n.error=w,r.emit(9,n);let Z=Symbol("abort");l.set(E,Z),N=0,A=0,L=0,O=0,T=0,U=0,y.fill(0),Y=0,K.fill(null),r.callOnError(w);},fe=(w,Z)=>{w!==x.state[Z]&&(x.state[Z]=w,ae=true,I.push(String(Z)),n.path=$,n.key=Z,n.value=w,n.calledBy=x.calledBy,r.emit(15,n),(x.notifyKeys.size===0||x.notifyKeys.has(Z))&&(te=true)),t.GetBucket(x.nodeBucket[Z]).isForceNotify()&&(V=true),(te||V)&&ge(R);};n.path=$,n.calledBy=x.calledBy,r.emit(6,n);try{let w=[];for(let Z in x.nodeBucket){let W=t.GetBucket(x.nodeBucket[Z]);if(w.push(...W.getSideEffect()),G){r.emit(15,{path:$,key:String(Z),value:x.state[Z],calledBy:x.calledBy}),W.isForceNotify()&&(V=!0),(x.notifyKeys.size===0||x.notifyKeys.has(Z))&&ge(R);continue}let oe=W.evaluate({affectKey:Z,triggerUid:se,getProxyByUid:J=>t.GetNodeByUid(J).proxy,getStateByUid:J=>t.GetNodeByUid(J).state,GetToken:()=>P});if(oe instanceof Promise){let J=oe.then(pe=>{l.get(E)===P&&fe(pe,Z);});F.push(J);}else fe(oe,Z);}if(F.length>0)return Promise.all(F).then(()=>{de(w);}).catch(ce);de(w);return}catch(w){ce(w);}},Ge=async()=>{if(l.get(E)!==P){M=false;return}M=true;let R=c.getIsFirstFrame(),se=0,ae=()=>30,te=0,V=ae();try{for(;l.get(E)===P;){let x=te>=V,$=c.shouldYield();if(x||$){if(te>0&&(se++,(R||se%2===0)&&i.requestUpdate()),await c.yieldToMain(),l.get(E)!==P)break;te=0,R=c.getIsFirstFrame();}if(A>0&&Y<40){let j=N,I=0;for(let F=0;F<j;F++){let G=a[F];if((y[G]&1)===0)continue;if(Y>=40||te>=V||c.shouldYield()){for(let W=F;W<N;W++){let oe=a[W];y[oe]&1&&(a[I++]=oe);}N=I,A=I;break}let k=t.GetNodeByUid(G),de=t.GetPathByUid(G),ce=ee.get(G)??0,fe=e.GetPrevDependency(G),w=fe.length>1;if((!s||w)&&ce>re){y[G]&=-2,A--;let W=fe.filter(oe=>X[oe]===1&&(y[oe]&16)===0).length;Q[G]=W||0,y[G]&2||(y[G]|=2,C[L++]=G,O++),n.path=de,n.type=W>0?4:5,h.targetLevel=ce,h.currentLevel=re,h.pendingParentsCount=W,r.emit(12,n);continue}y[G]&=-2,A--,(y[G]&32)===0&&(y[G]|=32,Y++),n.path=de,n.calledBy=k.calledBy,r.emit(8,n),Ve(G,f),te++;}if(N>j){for(let F=j;F<N;F++){let G=a[F];y[G]&1&&(a[I++]=G);}N=I,A=N;}else N=I;if(A>0&&Y<40)continue}if(te<V&&s&&O>0&&Y<40){let j=!1,I=0,F=0;for(let G=0;G<L;G++){let k=C[G];if((y[k]&2)===0)continue;if(Q[k]<=0&&I<V){let ce=ee.get(k)??0,fe=e.GetPrevDependency(k);if(ce<=re||fe.length<=1){y[k]&=-3,O--,y[k]&1||(y[k]|=1,a[N++]=k,A++),I++,j=!0;let w=t.GetPathByUid(k);n.path=w,n.type=4,r.emit(13,n);continue}}C[F++]=k;}if(L=F,I>0)continue;if(j){if(c.shouldYield()&&(await c.yieldToMain(),l.get(E)!==P))break;continue}}if(Y===0&&A===0){if(v.length>0){let I=!1,F=re,G=Array.from(new Set(v));v.length=0;for(let k of G){let de=t.GetNodeByUid(k),ce=ue(de);if(ce&&ce.length>0){I=!0,de.calledBy=1,K[k]=ce,y[k]&=-17,y[k]&2&&(y[k]&=-3,O--),y[k]&1||(y[k]|=1,a[N++]=k,A++);let fe=ee.get(de.uid)??0;fe<F&&(F=fe),ge(de.uid),i.flushPathSet.add(de.uid);}}if(I){if(F<re&&(re=F),i.requestUpdate(),c.shouldYield()&&(await c.yieldToMain(),l.get(E)!==P))break;continue}}let j=1/0;for(let I=0;I<T;I++){let F=D[I];if(y[F]&4){let G=_[F];G<j&&(j=G);}}for(let I=0;I<L;I++){let F=C[I];if(y[F]&2){let G=ee.get(F)??0;G>re&&G<j&&(j=G);}}if(j!==1/0&&j<=be){re=j;let I=0;for(let G=0;G<T;G++){let k=D[G];y[k]&4&&(_[k]===j?(y[k]&=-5,U--,y[k]&1||(y[k]|=1,a[N++]=k,A++)):D[I++]=k);}T=I;let F=0;for(let G=0;G<L;G++){let k=C[G];if(y[k]&2)if((ee.get(k)??0)===j){y[k]&=-3,O--,y[k]&1||(y[k]|=1,a[N++]=k,A++);let ce=t.GetPathByUid(k);n.path=ce,n.type=3,h.level=j,r.emit(13,n);}else C[F++]=k;}L=F;continue}else {for(let I=0;I<T;I++){let F=D[I];if(y[F]&4){y[F]|=16;let G=t.GetPathByUid(F);n.path=G,n.type=6,r.emit(12,n);}}T=0,U=0;for(let I=0;I<L;I++){let F=C[I];if(y[F]&2){y[F]|=16;let G=t.GetPathByUid(F);n.path=G,n.type=6,r.emit(12,n);}}L=0,O=0;break}}A>0&&Y>=40&&(n.type=2,r.emit(4,n));break}}finally{M=false;let x=Y+O+A,$=u.inFlightCount||0;if(!(o===P)){n.token=P,r.emit(3,n);return}if(i.requestUpdate(),x===0&&$===0){if(l.get(E)===P&&!Ce){Ce=true,n.type=1,r.emit(2,n),u.resetCounters(),K.fill(null);let I=performance.now();ye=-1,l.delete(E),n.token=P,n.duration=(I-Fe).toFixed(2.1)+"ms",r.emit(1,n),Promise.resolve().then(()=>{r.callOnSuccess();});}}else {let I=x===0&&$>0?3:1;if(n.type=I,h.nums=Y,h.asyncNums=$,r.emit(4,n),$>0){let F=()=>{o===P&&(u.inFlightCount===0?Be(()=>{u.inFlightCount===0?Ge():requestAnimationFrame(F);}):requestAnimationFrame(F));};requestAnimationFrame(F);}}}};Ge();},CancelTask:g}}function Ue(p){let{path:e,uid:t,type:r,meta:i,dirtySignal:c,state:l}=p,s=null,o=["path","uid","type","dependOn","nodeBucket"],h={path:e,uid:t,type:r,meta:i,dirtySignal:c,createView:(n={})=>{if(s&&Object.keys(n).length===0)return s;let S=new Proxy(n,{get(f,m){let b=m;return Reflect.has(f,m)?Reflect.get(f,m):b in p.state?p.state[b]:b in p?p[b]:i&&b in i?i[b]:Reflect.get(f,m)},set(f,m,b){return false},ownKeys(f){let m=new Set([...Reflect.ownKeys(f),...Object.keys(l||{}),...Object.keys(i||{}),...o]);return Array.from(m)},getOwnPropertyDescriptor(f,m){let b=m;return Reflect.has(f,m)||l&&b in l||i&&b in i||o.includes(b)?{enumerable:true,configurable:true}:Reflect.getOwnPropertyDescriptor(f,m)}});return s=S,S}};return "children"in p?{...h,children:p.children}:{...h,state:p.state,nodeBucket:p.nodeBucket,notifyKeys:p.notifyKeys,dependOn:p.dependOn,calledBy:0,get proxy(){return s}}}var tt=(p,e,t,r,i,c,l)=>{let s=p.useEntangleStep,o=[],g=[],h=new Set,n=r,m=t,b=0,P=0,E=100,M=()=>{let a={link:null,impactNode:null,impactUid:-1,hitTargetUids:null,isDirty:false,propose:null};return a.propose={set:(N,A,C=1)=>{A!==a.impactNode.state[N]&&(a.link.count++,(!g[a.impactUid]||g[a.impactUid].length===0)&&(g[a.impactUid]=[],P++),g[a.impactUid].push({key:N,value:A,weight:C}),a.isDirty||(a.hitTargetUids.push(a.impactUid),a.isDirty=true));},update:(N,A,C="add")=>{a.link.count++,(!g[a.impactUid]||g[a.impactUid].length===0)&&(g[a.impactUid]=[],P++),g[a.impactUid].push({key:N,delta:A,op:C,weight:1}),a.isDirty||(a.hitTargetUids.push(a.impactUid),a.isDirty=true);},patch:(N,A)=>{a.link.count++,(!g[a.impactUid]||g[a.impactUid].length===0)&&(g[a.impactUid]=[],P++),g[a.impactUid].push({key:N,patch:A,weight:1}),a.isDirty||(a.hitTargetUids.push(a.impactUid),a.isDirty=true);}},a},z=Array.from({length:E},M),X=E-1,Y=(a,N,A)=>{let C=N.path,L=a.impact;if(a.count>=s){l.emit("entangle:blocked",{observer:C,target:L,count:a.count});return}let O=n(L),D=a.isProxy?N.proxy:N,T=a.isProxy?O.proxy:O;if(a.filter&&!a.filter(D,T))return;let U,K=true;X<0?(U=M(),K=false):U=z[X--],U.isDirty=false,U.link=a,U.impactNode=O,U.impactUid=O.uid,U.hitTargetUids=A;let v=a.emit(D,T,U.propose);if(v instanceof Promise||v&&typeof v.then=="function")return b++,(async()=>{try{await v;}catch(u){l.emit("node:error",{path:C,error:u}),l.onError({path:C,error:u});}finally{b--,K&&(z[++X]=U);}})();K&&(z[++X]=U);};return {useEntangle:a=>{let{cause:N,impact:A,via:C,emit:L,filter:O,isProxy:D}=a;if(!C||C.length===0){l.emit("entangle:warn",{path:N,type:"no_keys"});return}let U=n(N).uid;o[U]||(o[U]=new Map);let K=o[U];for(let v=0;v<C.length;v++){let u=C[v];K.has(u)||K.set(u,[]),K.get(u).push({impact:A,emit:L,filter:O,count:0,isProxy:!!D});}},updateEntangleLevel:()=>{let a=m();h.clear();for(let N=0;N<o.length;N++)if(o[N]!==void 0){let A=a.get(N)||0;h.add(A);}},Turnstile:{volatileLevels:h,get inFlightCount(){return b},get hasPendingGhosts(){return P>0},hasObserver:a=>o[a]!==void 0,getTriggerKeys:a=>{let N=o[a];return N?Array.from(N.keys()):[]},receiveGhosts:(a,N=[])=>{let A=a.uid,C=[],L=o[A];if(!L||N.length===0)return C;let O=[];for(let v=0;v<N.length;v++){let u=L.get(N[v]);if(u)for(let d=0;d<u.length;d++)O.push(u[d]);}let D=0,T=false,U=null;for(;D<O.length;D++){if(e.shouldYield()){T=true;break}let v=Y(O[D],a,C);if(v){U=v,T=true,D++;break}}let K=()=>{if(C.length<=1)return C;let v=[],u=Object.create(null);for(let d=0;d<C.length;d++){let B=C[d];u[B]||(u[B]=true,v.push(B));}return v};return T?(async()=>{for(U&&await U,e.shouldYield()&&await e.yieldToMain();D<O.length;){let v=[],u=Math.min(D+E,O.length);for(;D<u;D++){let d=Y(O[D],a,C);d&&v.push(d);}v.length>0&&await Promise.all(v.map(async d=>{await d,e.shouldYield()&&await e.yieldToMain();})),e.shouldYield()&&await e.yieldToMain();}return K()})():K()},resolveGhosts:a=>{let N=a.uid,A=g[N];if(!A||A.length===0)return [];let C=[],L=Object.create(null);for(let O=0;O<A.length;O++){let D=A[O];L[D.key]||(L[D.key]=[]),L[D.key].push(D);}for(let O in L){let D=L[O],T=a.state[O],U,K=-1/0,v=false;for(let u=0;u<D.length;u++){let d=D[u];if(d.patch!==void 0&&(T=d.patch(T)),d.value!==void 0){let B=d.weight??1;B>=K&&(K=B,U=d.value,v=true);}}v&&(T=U);for(let u=0;u<D.length;u++){let d=D[u];if(d.delta!==void 0)switch(d.op||"add"){case "add":T=(typeof T=="number"?T:0)+d.delta;break;case "remove":T=Array.isArray(T)?T.filter(H=>H!==d.delta):T;break;case "intersect":T=Array.isArray(T)?T.filter(H=>d.delta.includes(H)):d.delta;break;case "union":{let H=Array.isArray(T)?T:[],ne=Array.isArray(d.delta)?d.delta:[d.delta];T=[...new Set([...H,...ne])];break}case "merge":{let H=typeof T=="object"&&T!==null&&!Array.isArray(T)?T:{},ne=typeof d.delta=="object"&&d.delta!==null&&!Array.isArray(d.delta)?d.delta:{};T={...H,...ne};break}}}Object.is(a.state[O],T)||(a.state[O]=T,C.push(O));}return g[N]=[],P--,C.length>0?C:[]},resetCounters:()=>{for(let a=0;a<o.length;a++){let N=o[a];if(N)for(let A of N.values())for(let C=0;C<A.length;C++)A[C].count=0;}}}}};function nt(p,e,t,r,i){let c=Je(),l=0,s=new Map,o=[],g=[],h=[],n=[],S=false,f=new Set,b=async()=>{let u=Array.from(f);if(f.clear(),"signalTrigger"in i&&typeof i.signalTrigger=="function")for(let d of u){let B=N(d);i.signalTrigger(B.dirtySignal);}else "emit"in i&&i.emit(u);},P=()=>{S||(S=true,requestAnimationFrame(()=>{try{for(;f.size>0;)b();}finally{S=false;}}));},{useEntangle:E,updateEntangleLevel:M,Turnstile:z}=tt({useEntangleStep:p.useEntangleStep},c,e.GetUidToLevelMap,a,N,A,{emit:r.emit,onError:r.callOnError}),{TaskRunner:X,CancelTask:Y}=et({useGreedy:p.useGreedy},e,{GetNodeByPath:a,GetNodeByUid:N,GetPathByUid:A,GetBucket:O,GetMaxUid:D,Turnstile:z},r,{requestUpdate:P,flushPathSet:f},c),y=u=>{throw new Error(`[MeshFlow] Duplicate Path: ${u}`)},Q=u=>{s.has(u.path)&&y(String(u.path));let d=++l,B={path:u.path,getNode:le=>a(le)},H=(le,ue="value")=>{let Me=le({...B}),Se=a(u.path);if(t.createHistoryAction&&t.pushIntoHistory){let ye=t.createHistoryAction([{path:u.path,value:Se.state[ue]},{path:u.path,value:Me}],ee=>{let re=a(ee.path);re.state[ue]=ee.value,T(ee.path);});t.pushIntoHistory(ye);}Se.state[ue]=Me,T(u.path);},ne=Ue({uid:d,type:u.type,path:u.path,state:u.state,meta:u.meta,nodeBucket:{},dirtySignal:"signalCreator"in i?i.signalCreator():void 0,notifyKeys:u.notifyKeys,dependOn:H});return s.set(ne.path,d),h[d]=ne.path,o[d]=ne,ne},_=u=>{s.has(u.path)&&y(String(u.path));let d=++l,B=Ue({uid:d,type:u.type,path:u.path,state:{},meta:u,nodeBucket:{},children:u.children});return s.set(B.path,d),g[d]=B,B};function a(u){let d=s.get(u),B=o[d];if(!B)throw Error("Wrong id");return B}function N(u){let d=o[u];if(!d)throw Error("Wrong id");return d}function A(u){return h[u]}function C(u){let d=s.get(u);return g[d]}function L(u){return n.push(u)-1}function O(u){let d=n[u];if(!d)throw Error("Wrong id");return d}function D(){return l}let T=u=>{let d=a(u);if(!d)throw Error("Wrong id");f.add(d.uid),P();let B=e.GetNextDependency(d.uid);U(d.uid,B);};function U(u,d){X(u,d);}return {registerNode:Q,registerGroupNode:_,GetNodeByPath:a,GetGroupByPath:C,notify:T,notifyAll:async()=>{Promise.resolve().then(async()=>{let u=e.GetDependencyOrder();if(!u||u.length===0)return;let d=u[0];try{X(null,d);}catch(B){throw r.callOnError(B),B}finally{P();}});},batchNotify:u=>{if(!u||u.length===0)return;if(t.createHistoryAction&&t.pushIntoHistory){let B=t.createHistoryAction([u.map(H=>({path:H.path,key:H.key,value:a(H.path).state[H.key]})),u.map(H=>({path:H.path,key:H.key,value:H.value}))],H=>{let ne=new Set;H.forEach(le=>{let ue=a(le.path);ue.state[le.key]=le.value,f.add(le.path),ne.add(le.uid);}),P(),ne.size>0&&X(null,Array.from(ne));});t.pushIntoHistory(B);}let d=new Set;u.forEach(B=>{let H=a(B.path);H.state[B.key]=B.value,f.add(H.uid),d.add(H.uid);}),P(),d.size>0&&X(null,Array.from(d));},useEntangle:E,updateEntangleLevel:M,SetBucket:L,GetBucket:O,CancelTask:Y,UITrigger:i,UidToNodeMap:o}}function rt(p,e){let t=false,r=false,i=false,c=false,l=new Map,s=[],o=[],g=[],h=[],n=[],S=[],f=[],m=new Map,{GetNextDependency:P,GetPrevDependency:E,GetAllPrevDependency:M,GetAllNextDependency:z,rebuildDirectDependencyMaps:X}=ze(()=>s,()=>g,()=>S,()=>n),Y={},y={};if(e.modules.useHistory){let V=e.modules.useHistory,x;V.isMeshModuleInited?x=V:x=V();let{Undo:$,Redo:j,PushIntoHistory:I,CreateHistoryAction:F,updateUndoSize:G,updateRedoSize:k}=x();Y.pushIntoHistory=I,Y.createHistoryAction=F,y={Undo:$,Redo:j,updateUndoSize:G,updateRedoSize:k};}let Q=!!e.modules.useMeshRenderGate,_={};if(Q){let V=e.modules.useMeshRenderGate.isMeshModuleInited,x=e.modules.useMeshRenderGate;_=(V?x:x())(()=>ue);}let{onError:a,callOnError:N}=Qe(),{onSuccess:A,callOnSuccess:C}=$e(),{onStart:L,callOnStart:O}=Ze(),{emit:D,usePlugin:T,destroyPlugin:U}=Xe(),{SetTrace:K,useTrace:v}=je(),u=v();T(u);let d=Q?{..._}:{...e.UITrigger},B=nt({useGreedy:e.config.useGreedy,useEntangleStep:e.config.useEntangleStep||100},{GetDependencyOrder:()=>f,GetAllNextDependency:z,GetNextDependency:P,GetPrevDependency:E,GetAllPrevDependency:M,GetUidToLevelMap:()=>m},Y,{callOnError:N,callOnSuccess:C,callOnStart:O,emit:D},d),{SetBucket:H,GetBucket:ne,GetGroupByPath:le,GetNodeByPath:ue,notifyAll:Me,useEntangle:Se,updateEntangleLevel:ye,CancelTask:ee}=B;Q&&_.init();let re={};if(e.modules.useInternalForm){let{uiSchema:V,GetFormData:x}=e.modules.useInternalForm(B,p);re={uiSchema:V,GetFormData:x};}let be={};if(e.modules.useSchemaValidators){let{SetValidators:V}=e.modules.useSchemaValidators(ue);be={SetValidators:V};}let{SetRule:ge,SetRules:Ae}=He(ue,H,ne,s,g,o,h,l),{SetStrategy:ve}=Ye(ue,ne),Ie=qe(s,l),Oe=()=>{let V=Ie();f=V.steps,m=V.levelMap,Te();},Te=()=>{i&&(ye(),i=false);},Fe=()=>{c||(c=true,Promise.resolve().then(Te).finally(()=>{c=false;}));},Re=()=>{r||(r=true,Promise.resolve().then(()=>{if(Oe(),t){let{directNextMap:V,directPrevMap:x}=X(f.flat());n=V,S=x;}}).finally(()=>{r=false,t=false;}));};return {SetRule:(V,x,$,j)=>{ge(V,x,$,j),t=true,Re();},SetRules:(V,x,$,j)=>{Ae(V,x,$,j),t=true,Re();},SetStrategy:ve,useEntangle:V=>{Se(V),i=true,Fe();},SetTrace:K,usePlugin:T,SetValue:(V,x,$)=>{Te(),ue(V).dependOn(()=>$,x);},GetValue:(V,x="value")=>ue(V).proxy[x],SetValues:V=>{Te(),B.batchNotify(V);},GetGroupByPath:le,notifyAll:async()=>{Oe(),await Me();},GetAllDependency:()=>s,GetDependencyOrder:()=>f,historyExports:y,formExports:re,validatorExports:be,batchRenderExport:_,hasRenderGate:()=>Q,onError:a,onSuccess:A,onStart:L,scheduler:B,destroyPlugin:U,CancelTask:ee}}var xe=new Map,at=(p,e,t)=>{try{if(xe.has(p))throw Error("engineID repeated");let r=rt(e,{config:t.config||{useGreedy:!1},UITrigger:t.UITrigger,modules:t.modules??{},plugins:{}}),{SetRule:i,SetRules:c,SetValues:l,SetStrategy:s,SetValue:o,GetValue:g,usePlugin:h,useEntangle:n,GetGroupByPath:S,notifyAll:f,SetTrace:m,GetAllDependency:b,GetDependencyOrder:P,historyExports:E,formExports:M,validatorExports:z,batchRenderExport:X,hasRenderGate:Y,onError:y,onSuccess:Q,onStart:_,scheduler:a,destroyPlugin:N,CancelTask:A}=r,C={config:{SetRule:i,SetRules:c,SetStrategy:s,notifyAll:f,SetTrace:m,usePlugin:h,hasRenderGate:Y,useEntangle:n},data:{SetValue:o,GetValue:g,SetValues:l,GetGroupByPath:S},dependency:{GetAllDependency:b,GetDependencyOrder:P},hooks:{onError:y,onSuccess:Q,onStart:_}},L=(T,U,K)=>{!U||typeof U!="object"||Object.keys(U).forEach(v=>{let u=U[v];if(typeof u=="object"&&u!==null)T[v]=T[v]||{},L(T[v],u,K);else if(typeof u=="function"){let d=v;if(d==="useMeshRenderGate")d="render";else if(d.startsWith("use")){let B=d.slice(3);d=B.charAt(0).toLowerCase()+B.slice(1);}v==="useHistory"&&K.exports.history&&Object.keys(K.exports.history).length>0?T[d]=K.exports.history:v==="useInternalForm"&&K.exports.form&&Object.keys(K.exports.form).length>0?T[d]=K.exports.form:v==="useSchemaValidators"&&K.exports.validator&&Object.keys(K.exports.validator).length>0?T[d]=K.exports.validator:v==="useMeshRenderGate"&&K.exports.render?T[d]=K.exports.render:T[d]=u(K.scheduler,K.Schema);}});},O={...C,destroyPlugin:N,CancelTask:A,modules:{}},D=t.modules;return D&&L(O.modules,D,{scheduler:a,Schema:e,exports:{history:E,form:M,validator:z,render:X}}),xe.set(p,O),O}catch(r){throw Error(r)}},yn=()=>(p,e,t)=>ot(p,e,t),fn=p=>{let e=xe.get(p);if(!e)throw Error("Engine not found.");return e},pn=p=>{let e=xe.get(p);e.destroyPlugin(),e.CancelTask(),xe.delete(p);},ot=at;exports.DefaultStrategy=_e;exports.MeshFlowEventsName=we;exports.TriggerCause=ke;exports.deleteEngine=pn;exports.useEngine=fn;exports.useEngineManager=at;exports.useMeshFlow=ot;exports.useMeshFlowDefiner=yn;exports.useScheduler=nt;
1
+ 'use strict';var we=(P=>(P[P.FlowStart=0]="FlowStart",P[P.FlowSuccess=1]="FlowSuccess",P[P.FlowEnd=2]="FlowEnd",P[P.FlowAbort=3]="FlowAbort",P[P.FlowWait=4]="FlowWait",P[P.FlowFire=5]="FlowFire",P[P.NodeStart=6]="NodeStart",P[P.NodeSuccess=7]="NodeSuccess",P[P.NodeProcessing=8]="NodeProcessing",P[P.NodeError=9]="NodeError",P[P.NodePending=10]="NodePending",P[P.NodeRevive=11]="NodeRevive",P[P.NodeIntercept=12]="NodeIntercept",P[P.NodeRelease=13]="NodeRelease",P[P.NodeStagnate=14]="NodeStagnate",P[P.NodeBucketSuccess=15]="NodeBucketSuccess",P[P.EntangleWarn=16]="EntangleWarn",P[P.EntangleBlocked=17]="EntangleBlocked",P))(we||{}),Ce=(r=>(r[r.CAUSALITY=0]="CAUSALITY",r[r.INVERSION=1]="INVERSION",r[r.REPERCUSSION=2]="REPERCUSSION",r))(Ce||{});var _e=(r=>(r.OR="OR",r.PRIORITY="PRIORITY",r.MERGE="MERGE",r))(_e||{}),Ke=class{computedRules=[];getRuleResult(e,t,r){if(e.entityId==="__base__")return e.logic(t);if(!(!e._hasRun||r(e.triggerUids)))return e._lastResult;let l=e.logic(t);return l instanceof Promise?l.then(u=>(e._lastResult=u,e._hasRun=true,u)):(e._lastResult=l,e._hasRun=true,l)}store={OR:(e,t,r)=>{let i,l,u=this.computedRules;for(let s=0;s<u.length;s++){let a=u[s],p=this.getRuleResult(a,e,r);if(p instanceof Promise)return (async()=>{let n=await p;if(a.entityId==="__base__"?l=n:n&&(i=n),typeof i>"u")for(let M=s+1;M<u.length;M++){let f=u[M],m=this.getRuleResult(f,e,r),b=m instanceof Promise?await m:m;if(f.entityId==="__base__"){l=b;continue}if(b){i=f.value;break}}return typeof i>"u"&&(i=l),{res:i,version:t}})();let h=p;if(a.entityId==="__base__"){l=h;continue}if(h){i=a.value;break}}return typeof i>"u"&&(i=l),{res:i,version:t}},PRIORITY:(e,t,r)=>{let i,l=this.computedRules;for(let u=0;u<l.length;u++){let s=l[u],a=this.getRuleResult(s,e,r);if(a instanceof Promise)return (async()=>{let p=await a;if(p!==void 0)return {res:p,version:t};for(let h=u+1;h<l.length;h++){let n=l[h],M=this.getRuleResult(n,e,r),f=M instanceof Promise?await M:M;if(f!==void 0)return {res:f,version:t}}return {res:void 0,version:t}})();if(a!==void 0)return {res:a,version:t}}return {res:i,version:t}},MERGE:(e,t,r)=>{let i,l,u=this.computedRules,s=(p,h)=>p===void 0?h:h===void 0?p:Array.isArray(p)&&Array.isArray(h)?[...h,...p]:typeof p=="object"&&typeof h=="object"?{...h,...p}:p;for(let p=0;p<u.length;p++){let h=u[p],n=this.getRuleResult(h,e,r);if(n instanceof Promise)return (async()=>{let f=await n,m=(S,R)=>{if(S.entityId==="__base__")l=s(l,R);else if(R){let P=S.value!==void 0?S.value:R;i=s(i,P);}};m(h,f);for(let S=p+1;S<u.length;S++){let R=u[S],P=this.getRuleResult(R,e,r),z=P instanceof Promise?await P:P;m(R,z);}return {res:s(i,l),version:t}})();let M=n;if(h.entityId==="__base__"){l=s(l,M);continue}if(M){let f=h.value!==void 0?h.value:M;i=s(i,f);}}return {res:s(i,l),version:t}}};CurrentStrategy=()=>{};CurrentStrategyType="PRIORITY";getRules=()=>{};constructor(e){this.getRules=e,this.CurrentStrategy=this.store.PRIORITY,this.updateComputedRules();}updateComputedRules(){let e=this.getRules();this.CurrentStrategyType==="PRIORITY"||this.CurrentStrategyType==="MERGE"?this.computedRules=Array.from(e.values()).map(t=>Array.from(t)).flat().sort((t,r)=>r.priority-t.priority):this.computedRules=Array.from(e.values()).map(t=>Array.from(t)).flat();}setStrategy(e){this.CurrentStrategyType=e,this.CurrentStrategy=this.store[e],this.updateComputedRules();}evaluate(e,t,r){return this.CurrentStrategy(e,t,r)}},Re=class{path;strategy;contract;rules=new Map;isValue=false;id=0;cache=void 0;pendingPromise=null;version=0;deps=new Map;_forceNotify=false;promiseToken=null;useCache=true;effectArray=[];constructor(e,t,r){let i=()=>this.rules;this.strategy=new Ke(i),this.path=r,this.isValue=t==="value",this.contract=this.inferType(e),this.cache=e,this.setRule({priority:0,entityId:"__base__",logic:()=>e});}setUseCache(e){this.useCache=e;}forceNotify(){this._forceNotify=true;}isForceNotify(){return this._forceNotify}setStrategy(e){this.strategy.setStrategy(e);}setDefaultRule(e){let t=new Set;t.add(e),this.rules.set(-1,t);}setRules(e,t){t&&this.updateDeps(t);let r=++this.id,i={...e,entityId:r};for(let l of e.triggerUids)this.rules.has(l)||this.rules.set(l,new Set),this.rules.get(l).add(i);return this.strategy.updateComputedRules(),()=>{for(let l of e.triggerUids){let u=this.rules.get(l);u&&(u.delete(i),u.size===0&&(this.rules.delete(l),this.deps.delete(l)));}this.strategy.updateComputedRules();}}updateDeps(e){for(let[t,r,i]of e){if(r.length==0)continue;let l=this.deps.get(t)||Object.create(null);for(let u of r)l[u]=i[u];this.deps.set(t,l);}}setRule(e,t){if(t&&this.updateDeps(t),typeof e.entityId=="string"){this.setDefaultRule(e);return}let r=++this.id,i={...e,entityId:r};if(e)for(let l of e.triggerUids)this.rules.has(l)||this.rules.set(l,new Set),this.rules.get(l).add(i);return this.strategy.updateComputedRules(),()=>{for(let l of e.triggerUids){let u=this.rules.get(l);u&&(u.delete(i),u.size===0&&(this.rules.delete(l),this.deps.delete(l)));}this.strategy.updateComputedRules();}}setSideEffect(e){this.effectArray.push(e);}getSideEffect(){return [...this.effectArray]}evaluate(e){let t=null;if(e.GetToken&&(t=e.GetToken()),this.pendingPromise&&this.promiseToken!==t&&(this.pendingPromise=null,this.promiseToken=null),this.pendingPromise)return this.pendingPromise;let r=false;if(typeof e.triggerUid=="number"){r=true,this.deps.size==0&&(r=false);for(let[s,a]of this.deps.entries()){let p=e.getStateByUid(s);if(!p){r=false;break}for(let h in a){let n=a[h],M=p[h];if(typeof n=="object"&&n!==null){r=false;break}if(n!==M){r=false;break}}if(!r)break}}if(r&&this.useCache)return this.cache;this.promiseToken=t;let i=++this.version,l=s=>{if(!s||s.length===0)return true;for(let a of s){let p=this.deps.get(a);if(!p)return true;let h=e.getProxyByUid(a);if(!h)return true;for(let n in p){let M=p[n],f=h[n];if(typeof M=="object"&&M!==null||M!==f)return true}}return false},u=this.strategy.evaluate(e,i,l);if(!(u instanceof Promise)){let{res:s,version:a}=u;return this.finalizeSync(s,a,e,t)}return this.pendingPromise=(async()=>{try{let{res:s,version:a}=await u;return this.finalizeSync(s,a,e,t)}catch(s){throw {path:this.path,error:s}}finally{this.promiseToken===t&&(this.pendingPromise=null,this.promiseToken=null);}})(),this.pendingPromise}finalizeSync(e,t,r,i){return i!==this.promiseToken||t<this.version?this.cache:(this.cache=e,this.deps.forEach((l,u)=>{let s=r.getProxyByUid(u);if(!s)return;let a=Object.keys(l);for(let p of a)l[p]=s[p];}),e)}inferType(e){return Array.isArray(e)?"array":typeof e}};var Ve=(g,e,t)=>{let i=l=>{let u=t.triggerUids.map(p=>{let h=l.getProxyByUid(p);if(t.triggerKeys.length===0)return h;let n={};return t.triggerKeys.forEach(M=>{n[M]=h[M];}),n}),s=Object.create(null);return Object.defineProperty(s,"triggerTargets",{get:()=>u}),Object.defineProperty(s,"affectedTatget",{get:()=>l.getProxyByUid(g)[e]}),t.logic({slot:s})};return {value:t.value,targetUid:g,triggerUids:t.triggerUids,priority:t.priority??10,logic:i}},He=(g,e,t,r,i,l,u,s)=>{if(!g)throw Error();let a=g,p=(M,f)=>{typeof r[M]>"u"&&(r[M]=[],l[M]=new Set),l[M].add(f),l[M].size>r[M].length&&r[M].push(f),typeof i[f]>"u"&&(i[f]=[],u[f]=new Set),u[f].add(M),u[f].size>i[f].length&&i[f].push(M);};return {SetRule:(M,f,m,b)=>{let S=a(M),R=a(f),P=b.triggerKeys||[],z=s.get(R.uid)||0,X=s.get(S.uid)||0;z+=1,X+=1,s.set(R.uid,z),s.set(S.uid,X);let Y=Ve(R.uid,m,{...b,triggerUids:[S.uid],triggerKeys:P}),y=[M].map(_=>{let o=a(_);return [o.uid,P,o.proxy]});if(p(S.uid,R.uid),typeof R.nodeBucket[m]=="number"){let _=t(R.nodeBucket[m]);_.setRule(Y,y),b.effect&&_.setSideEffect({fn:b.effect,args:b.effectArgs?b.effectArgs:[m]});}else {let _=R.meta[m],o=new Re(_,m,f);o.setRule(Y,y),b.effect&&o.setSideEffect({fn:b.effect,args:b.effectArgs?b.effectArgs:[m]}),R.nodeBucket[m]=e(o);}R.state[m]=R.meta[m];let Q=t(R.nodeBucket[m]);b.forceNotify&&Q.forceNotify(),b.cacheStrategy=="none"&&Q.setUseCache(false);},SetRules:(M,f,m,b)=>{let S=a(f),R=s.get(S.uid)||0;R+=1,s.set(S.uid,R);let P=[];for(let Q of M){let _=a(Q);P.push(_.uid);let o=s.get(_.uid)||0;o+=1,s.set(_.uid,o),p(_.uid,S.uid);}let z=b.triggerKeys||[],X=Ve(S.uid,m,{...b,triggerUids:P,triggerKeys:z}),Y=M.map(Q=>{let _=a(Q);return [_.uid,z,_.state]});if(typeof S.nodeBucket[m]=="number"){let Q=t(S.nodeBucket[m]);Q.setRules(X,Y),b.effect&&Q.setSideEffect({fn:b.effect,args:b.effectArgs?b.effectArgs:[m]});}else {let Q=S.meta[m],_=new Re(Q,m,f);_.setRules(X,Y),b.effect&&_.setSideEffect({fn:b.effect,args:b.effectArgs?b.effectArgs:[m]}),S.nodeBucket[m]=e(_);}S.state[m]=S.meta[m];let y=t(S.nodeBucket[m]);b.forceNotify&&y.forceNotify(),b.cacheStrategy=="none"&&y.setUseCache(false);}}};var Ye=(g,e)=>{let t=g||void 0;if(!t)throw Error();return {SetStrategy:(i,l,u)=>{let s=t(i);e(s.nodeBucket[l]).setStrategy(u);}}};function je(){let g=new Map,e=new Map,t=new Set,r=(u,s)=>{g.set(u,s);let a=e.get(u);a&&a(s);};return {SetTrace:(u,s)=>{e.set(u,s);let a=g.get(u)||"idle";return s(a),{cancel:()=>{e.delete(u);}}},useTrace:()=>({apply:s=>{s.on(0,()=>{t.forEach(a=>r(a,"idle")),t.clear(),g.clear();}),s.on(13,({path:a,type:p})=>{(p==1||p==2)&&(t.add(a),r(a,"pending"));}),s.on(10,({path:a})=>{t.add(a),(!g.has(a)||g.get(a)==="idle")&&r(a,"pending");}),s.on(6,({path:a})=>{t.add(a),r(a,"calculating");}),s.on(7,({path:a})=>{r(a,"calculated");}),s.on(12,({path:a,type:p})=>{p==3&&r(a,"calculating"),p==6&&r(a,"idle");}),s.on(14,({path:a})=>{r(a,"pending");}),s.on(9,({path:a})=>r(a,"error"));}})}}function ze(g,e,t,r){return {GetNextDependency:h=>r()[h]||[],GetPrevDependency:h=>t()[h]||[],GetAllPrevDependency:h=>e()[h]||[],GetAllNextDependency:h=>g()[h]||[],rebuildDirectDependencyMaps:h=>{let n=[],M=[],f=g();for(let m of h){let b=f[m]||[];n[m]=b;for(let S=0;S<b.length;S++){let R=b[S];typeof M[R]>"u"&&(M[R]=[]),M[R].push(m);}}return {directNextMap:n,directPrevMap:M}}}}function qe(g,e){let t=i=>{let l=[],u=[],s=new Map,a=i.size,p=0,h=0;for(let[n,M]of i)M===0&&u.push(n);if(u.length===0&&a>0)throw Error("Circular dependency detected");for(;u.length>0;){l.push([...u]);let n=[];for(let M of u){p++,s.set(M,h);let f=g[M];if(f)for(let m of f){let b=i.get(m)-1;i.set(m,b),b===0&&n.push(m);}}u=n,h++;}if(p<a)throw Error("Circular dependency detected");return {steps:l,levelMap:s}};return ()=>{let i=new Map;for(let l of e.keys()){let u=g[l]||[];i.has(l)||i.set(l,0);for(let s of u){let a=i.get(s)||0;i.set(s,++a);}}return t(i)}}var Ne=()=>{let g=[];return {on:e=>(g.push(e),()=>{let t=g.indexOf(e);t>-1&&g.splice(t,1);}),call:e=>g.forEach(t=>{t(e);})}};function Qe(){let{on:g,call:e}=Ne();return {onError:g,callOnError:e}}function $e(){let{on:g,call:e}=Ne();return {onSuccess:g,callOnSuccess:e}}var Xe=()=>{let g=new Set,e=new Map,t=new Set,r=(s,a)=>{e.get(s)?.forEach(p=>p(a));},i=(s,a)=>(e.has(s)||e.set(s,new Set),e.get(s).add(a),()=>e.get(s)?.delete(a));return {usePlugin:s=>{let a=new Set,p=(n,M)=>{let f=i(n,M);return a.add(f),f};s.apply({on:p}),g.add(s);let h=()=>{a.forEach(n=>n()),a.clear(),g.delete(s),t.delete(h);};return t.add(h),h},emit:r,destroyPlugin:()=>{t.forEach(s=>s()),t.clear(),e.clear(),g.clear();}}};function Ze(){let{on:g,call:e}=Ne();return {onStart:g,callOnStart:e}}var Je=(g={frameQuota:12})=>{let e=performance.now(),t=0,r=false,i=()=>!!navigator?.scheduling?.isInputPending?.({includeContinuous:true});return {getIsFirstFrame:()=>r,reset(){e=performance.now(),t=0,r=true;},shouldYield(){return !r&&(++t&15)!==0?false:!!(performance.now()-e>g.frameQuota||i())},async yieldToMain(){return new Promise(l=>{De(()=>{e=performance.now(),t=0,r&&(r=false),l();});})}}},De=g=>{let{port1:e,port2:t}=new MessageChannel;e.onmessage=g,t.postMessage(null);};function et(g,e,t,r,i,l){let u=new Map,s=g.useGreedy,a=null,p=()=>{u.clear();},h={path:null,level:0,targetLevel:0,currentLevel:0,pendingParentsCount:0,active:0,pending:0,blocked:0,nums:0,asyncNums:0},n={path:null,type:0,triggerPath:null,calledBy:0,key:null,value:null,error:null,token:null,duration:null,detail:h};return {TaskRunner:async(f,m)=>{let S=Symbol("token"),R=typeof f=="number"?f:"__NOTIFY_ALL__";u.set(R,S),a=S;let P=false;l.reset();let z=t.GetMaxUid()+3,X=new Array(z).fill(0),Y=0,y=new Uint8Array(z),Q=new Int32Array(z),_=new Int32Array(z),o=new Int32Array(z*2),N=0,A=0,F=new Int32Array(z*2),V=0,O=0,K=new Int32Array(z*2),T=0,B=0;m.forEach(E=>{X[E]=1,e.GetAllNextDependency(E).forEach(se=>{X[se]=1;});});let U=new Array(z).fill(null),v=[],c=t.Turnstile,d=new Array(z).fill(null).map(()=>[]),D=new Array(z).fill(null).map(()=>[]),H=c.volatileLevels.size>0,ne=H?c.hasObserver:E=>false,le=H?c.receiveGhosts:()=>[],ue=H?c.resolveGhosts:()=>[],Me=H?c.getTriggerKeys:()=>[],Se=c?.volatileLevels||new Set,ye=-1,ee=e.GetUidToLevelMap(),re=0,be=0,ge=E=>{e.GetAllNextDependency(E).forEach(ae=>{let te=ee.get(ae)||0;te>be&&(be=te);});},Ae=new Set;typeof f=="number"&&(y[f]|=16,Ae.add(f),ge(f),i.flushPathSet.add(f));let ve=typeof f=="number"?[f]:m;l.shouldYield()&&(i.requestUpdate(),await l.yieldToMain());let Ie=ve.map(async E=>{if(ne(E)){let se=t.GetNodeByUid(E),ae=Me(E);if(ae.length>0){let te=le(se,ae);return te instanceof Promise&&(te=await te),{seed:E,hitTargets:te}}}return {seed:E,hitTargets:[]}});if((await Promise.all(Ie)).forEach(({seed:E,hitTargets:se})=>{if(se&&se.length>0){v.push(...se);let ae=ee.get(E)||0;ye=Math.max(ye,ae);}}),(v.length>0||ve.length>1)&&(i.requestUpdate(),await l.yieldToMain(),u.get(R)!==S))return;let Te=v.length>0;m.forEach(E=>{if(!Ae.has(E))if(Te){let se=ee.get(E)??0;_[E]=se,y[E]&4||(y[E]|=4,K[T++]=E,B++);let ae=t.GetPathByUid(E);n.path=ae,n.type=2,r.emit(14,n);}else y[E]&1||(y[E]|=1,o[N++]=E,A++),ge(E);}),typeof f=="number"?re=ee.get(f)??0:re=Math.min(...m.map(E=>ee.get(E)??0));let ke=performance.now(),Ee=typeof R=="number"?t.GetPathByUid(R):"__NOTIFY_ALL__";n.path=Ee,n.token=S,r.emit(0,n),r.callOnStart({path:Ee});let Fe=false,Ue=30,Le=(E,se)=>{let ae=false,te=false,L=false,x=t.GetNodeByUid(E),$=t.GetPathByUid(E),j=x.calledBy,I=d[E];I.length=0;let k=D[E];k.length=0;let G=false;if(x.calledBy===1){G=true,ae=true,i.flushPathSet.add(E);let w=U[E];w&&(I.push(...w),U[E]=null);}let C=(w,Z)=>{let W=ee.get(w)??0,oe=t.GetNodeByUid(w),J=t.GetPathByUid(w),pe=(j===1||j===2)&&W<=ye;pe&&y[w]&16&&(y[w]&=-17,n.path=J,n.triggerPath=$,r.emit(11,n));let ie=0;if(!(y[w]&49)){if(y[w]&2)ie=Q[w]-1;else {if(W>re&&O>Ue){_[w]=W,y[w]&4||(y[w]|=4,K[T++]=w,B++),n.path=J,n.type=7,r.emit(12,n);return}let me=e.GetPrevDependency(w),q=0;for(let he of me){if(y[he]&16)continue;(ee.get(he)??0)>re&&q++;}ie=q;}if(ie<=0){let me=(y[w]&1)!==0,q=(y[w]&32)!==0;if(me||q){n.path=J,n.type=q?3:3.1,r.emit(12,n);return}y[w]&2&&(y[w]&=-3,O--),pe?oe.calledBy=2:oe.calledBy=0,y[w]&1||(y[w]|=1,o[N++]=w,A++),n.path=J,n.type=Z,h.path=$,r.emit(13,n);}else Q[w]=ie,y[w]&2||(y[w]|=2,F[V++]=w,O++);}},de=(w=[])=>{if(u.get(R)!==S)return;if(w.length){let W={},oe=x.proxy;for(let J of w){let pe=(J.args||[]).reduce((ie,me)=>(ie[me]=oe[me],ie),{});try{let ie=J.fn(pe);ie&&typeof ie=="object"&&Object.assign(W,ie);}catch(ie){}}for(let J in W)if(J in x.state)Object.is(x.state[J],W[J])||(x.state[J]=W[J],I.push(J),ae=true,(x.notifyKeys.size===0||x.notifyKeys.has(J))&&(te=true));else throw {error:`wrong effect in ${String(x.path)}`}}ae&&i.flushPathSet.add(E);let Z=(W=[])=>{if(u.get(R)!==S)return;W&&W.length>0&&(v.push(...W),ye=Math.max(ye,ee.get(E)||0)),I.length=0,n.path=$,n.calledBy=x.calledBy,r.emit(7,n),y[E]|=16;let oe=e.GetNextDependency(E);(te||L)&&(ge(E),e.GetAllNextDependency(E).forEach(he=>{X[he]=1;}));let J=t.GetNodeByUid(E),pe=ee.get(E)??0,ie=Se.has(pe)||v.length>0;for(let q of oe){let he=ee.get(q)??0,Pe=t.GetPathByUid(q);if(ie&&he>=pe){_[q]=he,y[q]&4||(y[q]|=4,K[T++]=q,B++),n.path=Pe,n.type=2,r.emit(14,n);continue}if(y[q]&16){n.path=Pe,n.type=2,r.emit(12,n);continue}if(y[q]&32||(y[q]&1)!==0){n.path=Pe,n.type=y[q]&32?3:3.1,r.emit(12,n);continue}if(te||L)C(q,1);else if(y[q]&2)C(q,2);else {let st=ee.get(q);_[q]=st,y[q]&4||(y[q]|=4,K[T++]=q,B++,n.path=Pe,n.type=1,r.emit(14,n));}}y[E]&32&&(y[E]&=-33,Y--),J.calledBy=0,(()=>{if(!P){P=true;let q=Y,he=A,Pe=O;n.path=$,n.type=1,h.active=q,h.pending=he,h.blocked=Pe,r.emit(5,n),Ge();}})();};if(ne(E)&&I.length>0){let W=le(x,I);W instanceof Promise?W.then(Z).catch(ce):Z(W);}else Z([]);},ce=w=>{n.path=$,n.error=w,r.emit(9,n);let Z=Symbol("abort");u.set(R,Z),N=0,A=0,V=0,O=0,T=0,B=0,y.fill(0),Y=0,U.fill(null),r.callOnError(w);},fe=(w,Z)=>{w!==x.state[Z]&&(x.state[Z]=w,ae=true,I.push(String(Z)),n.path=$,n.key=Z,n.value=w,n.calledBy=x.calledBy,r.emit(15,n),(x.notifyKeys.size===0||x.notifyKeys.has(Z))&&(te=true)),t.GetBucket(x.nodeBucket[Z]).isForceNotify()&&(L=true),(te||L)&&ge(E);};n.path=$,n.calledBy=x.calledBy,r.emit(6,n);try{let w=[];for(let Z in x.nodeBucket){let W=t.GetBucket(x.nodeBucket[Z]);if(w.push(...W.getSideEffect()),G){r.emit(15,{path:$,key:String(Z),value:x.state[Z],calledBy:x.calledBy}),W.isForceNotify()&&(L=!0),(x.notifyKeys.size===0||x.notifyKeys.has(Z))&&ge(E);continue}let oe=W.evaluate({affectKey:Z,triggerUid:se,getProxyByUid:J=>t.GetNodeByUid(J).proxy,getStateByUid:J=>t.GetNodeByUid(J).state,GetToken:()=>S});if(oe instanceof Promise){let J=oe.then(pe=>{u.get(R)===S&&fe(pe,Z);});k.push(J);}else fe(oe,Z);}if(k.length>0)return Promise.all(k).then(()=>{de(w);}).catch(ce);de(w);return}catch(w){ce(w);}},Ge=async()=>{if(u.get(R)!==S){P=false;return}P=true;let E=l.getIsFirstFrame(),se=0,ae=()=>30,te=0,L=ae();try{for(;u.get(R)===S;){let x=te>=L,$=l.shouldYield();if(x||$){if(te>0&&(se++,(E||se%2===0)&&i.requestUpdate()),await l.yieldToMain(),u.get(R)!==S)break;te=0,E=l.getIsFirstFrame();}if(A>0&&Y<40){let j=N,I=0;for(let k=0;k<j;k++){let G=o[k];if((y[G]&1)===0)continue;if(Y>=40||te>=L||l.shouldYield()){for(let W=k;W<N;W++){let oe=o[W];y[oe]&1&&(o[I++]=oe);}N=I,A=I;break}let C=t.GetNodeByUid(G),de=t.GetPathByUid(G),ce=ee.get(G)??0,fe=e.GetPrevDependency(G),w=fe.length>1;if((!s||w)&&ce>re){y[G]&=-2,A--;let W=fe.filter(oe=>X[oe]===1&&(y[oe]&16)===0).length;Q[G]=W||0,y[G]&2||(y[G]|=2,F[V++]=G,O++),n.path=de,n.type=W>0?4:5,h.targetLevel=ce,h.currentLevel=re,h.pendingParentsCount=W,r.emit(12,n);continue}y[G]&=-2,A--,(y[G]&32)===0&&(y[G]|=32,Y++),n.path=de,n.calledBy=C.calledBy,r.emit(8,n),Le(G,f),te++;}if(N>j){for(let k=j;k<N;k++){let G=o[k];y[G]&1&&(o[I++]=G);}N=I,A=N;}else N=I;if(A>0&&Y<40)continue}if(te<L&&s&&O>0&&Y<40){let j=!1,I=0,k=0;for(let G=0;G<V;G++){let C=F[G];if((y[C]&2)===0)continue;if(Q[C]<=0&&I<L){let ce=ee.get(C)??0,fe=e.GetPrevDependency(C);if(ce<=re||fe.length<=1){y[C]&=-3,O--,y[C]&1||(y[C]|=1,o[N++]=C,A++),I++,j=!0;let w=t.GetPathByUid(C);n.path=w,n.type=4,r.emit(13,n);continue}}F[k++]=C;}if(V=k,I>0)continue;if(j){if(l.shouldYield()&&(await l.yieldToMain(),u.get(R)!==S))break;continue}}if(Y===0&&A===0){if(v.length>0){let I=!1,k=re,G=Array.from(new Set(v));v.length=0;for(let C of G){let de=t.GetNodeByUid(C),ce=ue(de);if(ce&&ce.length>0){I=!0,de.calledBy=1,U[C]=ce,y[C]&=-17,y[C]&2&&(y[C]&=-3,O--),y[C]&1||(y[C]|=1,o[N++]=C,A++);let fe=ee.get(de.uid)??0;fe<k&&(k=fe),ge(de.uid),i.flushPathSet.add(de.uid);}}if(I){if(k<re&&(re=k),i.requestUpdate(),l.shouldYield()&&(await l.yieldToMain(),u.get(R)!==S))break;continue}}let j=1/0;for(let I=0;I<T;I++){let k=K[I];if(y[k]&4){let G=_[k];G<j&&(j=G);}}for(let I=0;I<V;I++){let k=F[I];if(y[k]&2){let G=ee.get(k)??0;G>re&&G<j&&(j=G);}}if(j!==1/0&&j<=be){re=j;let I=0;for(let G=0;G<T;G++){let C=K[G];y[C]&4&&(_[C]===j?(y[C]&=-5,B--,y[C]&1||(y[C]|=1,o[N++]=C,A++)):K[I++]=C);}T=I;let k=0;for(let G=0;G<V;G++){let C=F[G];if(y[C]&2)if((ee.get(C)??0)===j){y[C]&=-3,O--,y[C]&1||(y[C]|=1,o[N++]=C,A++);let ce=t.GetPathByUid(C);n.path=ce,n.type=3,h.level=j,r.emit(13,n);}else F[k++]=C;}V=k;continue}else {for(let I=0;I<T;I++){let k=K[I];if(y[k]&4){y[k]|=16;let G=t.GetPathByUid(k);n.path=G,n.type=6,r.emit(12,n);}}T=0,B=0;for(let I=0;I<V;I++){let k=F[I];if(y[k]&2){y[k]|=16;let G=t.GetPathByUid(k);n.path=G,n.type=6,r.emit(12,n);}}V=0,O=0;break}}A>0&&Y>=40&&(n.type=2,r.emit(4,n));break}}finally{P=false;let x=Y+O+A,$=c.inFlightCount||0;if(!(a===S)){n.token=S,r.emit(3,n);return}if(i.requestUpdate(),x===0&&$===0){if(u.get(R)===S&&!Fe){Fe=true,n.type=1,r.emit(2,n),c.resetCounters(),U.fill(null);let I=performance.now();ye=-1,u.delete(R),n.token=S,n.duration=(I-ke).toFixed(2.1)+"ms",r.emit(1,n),Promise.resolve().then(()=>{r.callOnSuccess();});}}else {let I=x===0&&$>0?3:1;if(n.type=I,h.nums=Y,h.asyncNums=$,r.emit(4,n),$>0){let k=()=>{a===S&&(c.inFlightCount===0?De(()=>{c.inFlightCount===0?Ge():requestAnimationFrame(k);}):requestAnimationFrame(k));};requestAnimationFrame(k);}}}};Ge();},CancelTask:p}}function Be(g){let{path:e,uid:t,type:r,meta:i,dirtySignal:l,state:u}=g,s=null,a=["path","uid","type","dependOn","nodeBucket"],h={path:e,uid:t,type:r,meta:i,dirtySignal:l,createView:(n={})=>{if(s&&Object.keys(n).length===0)return s;let M=new Proxy(n,{get(f,m){let b=m;return Reflect.has(f,m)?Reflect.get(f,m):b in g.state?g.state[b]:b in g?g[b]:i&&b in i?i[b]:Reflect.get(f,m)},set(f,m,b){return false},ownKeys(f){let m=new Set([...Reflect.ownKeys(f),...Object.keys(u||{}),...Object.keys(i||{}),...a]);return Array.from(m)},getOwnPropertyDescriptor(f,m){let b=m;return Reflect.has(f,m)||u&&b in u||i&&b in i||a.includes(b)?{enumerable:true,configurable:true}:Reflect.getOwnPropertyDescriptor(f,m)}});return s=M,M}};return "children"in g?{...h,children:g.children}:{...h,state:g.state,nodeBucket:g.nodeBucket,notifyKeys:g.notifyKeys,dependOn:g.dependOn,calledBy:0,get proxy(){return s}}}var tt=(g,e,t,r,i,l,u)=>{let s=g.useEntangleStep,a=[],p=[],h=new Set,n=r,m=t,b=0,S=0,R=100,P=()=>{let o={link:null,impactNode:null,impactUid:-1,hitTargetUids:null,isDirty:false,propose:null};return o.propose={set:(N,A,F=1)=>{A!==o.impactNode.state[N]&&(o.link.count++,(!p[o.impactUid]||p[o.impactUid].length===0)&&(p[o.impactUid]=[],S++),p[o.impactUid].push({key:N,value:A,weight:F}),o.isDirty||(o.hitTargetUids.push(o.impactUid),o.isDirty=true));},update:(N,A,F="add")=>{o.link.count++,(!p[o.impactUid]||p[o.impactUid].length===0)&&(p[o.impactUid]=[],S++),p[o.impactUid].push({key:N,delta:A,op:F,weight:1}),o.isDirty||(o.hitTargetUids.push(o.impactUid),o.isDirty=true);},patch:(N,A)=>{o.link.count++,(!p[o.impactUid]||p[o.impactUid].length===0)&&(p[o.impactUid]=[],S++),p[o.impactUid].push({key:N,patch:A,weight:1}),o.isDirty||(o.hitTargetUids.push(o.impactUid),o.isDirty=true);}},o},z=Array.from({length:R},P),X=R-1,Y=(o,N,A)=>{let F=N.path,V=o.impact;if(o.count>=s){u.emit("entangle:blocked",{observer:F,target:V,count:o.count});return}let O=n(V),K=o.isProxy?N.proxy:N,T=o.isProxy?O.proxy:O;if(o.filter&&!o.filter(K,T))return;let B,U=true;X<0?(B=P(),U=false):B=z[X--],B.isDirty=false,B.link=o,B.impactNode=O,B.impactUid=O.uid,B.hitTargetUids=A;let v=o.emit(K,T,B.propose);if(v instanceof Promise||v&&typeof v.then=="function")return b++,(async()=>{try{await v;}catch(c){u.emit("node:error",{path:F,error:c}),u.onError({path:F,error:c});}finally{b--,U&&(z[++X]=B);}})();U&&(z[++X]=B);};return {useEntangle:o=>{let{cause:N,impact:A,via:F,emit:V,filter:O,isProxy:K}=o;if(!F||F.length===0){u.emit("entangle:warn",{path:N,type:"no_keys"});return}let B=n(N).uid;a[B]||(a[B]=new Map);let U=a[B];for(let v=0;v<F.length;v++){let c=F[v];U.has(c)||U.set(c,[]),U.get(c).push({impact:A,emit:V,filter:O,count:0,isProxy:!!K});}},updateEntangleLevel:()=>{let o=m();h.clear();for(let N=0;N<a.length;N++)if(a[N]!==void 0){let A=o.get(N)||0;h.add(A);}},Turnstile:{volatileLevels:h,get inFlightCount(){return b},get hasPendingGhosts(){return S>0},hasObserver:o=>a[o]!==void 0,getTriggerKeys:o=>{let N=a[o];return N?Array.from(N.keys()):[]},receiveGhosts:(o,N=[])=>{let A=o.uid,F=[],V=a[A];if(!V||N.length===0)return F;let O=[];for(let v=0;v<N.length;v++){let c=V.get(N[v]);if(c)for(let d=0;d<c.length;d++)O.push(c[d]);}let K=0,T=false,B=null;for(;K<O.length;K++){if(e.shouldYield()){T=true;break}let v=Y(O[K],o,F);if(v){B=v,T=true,K++;break}}let U=()=>{if(F.length<=1)return F;let v=[],c=Object.create(null);for(let d=0;d<F.length;d++){let D=F[d];c[D]||(c[D]=true,v.push(D));}return v};return T?(async()=>{for(B&&await B,e.shouldYield()&&await e.yieldToMain();K<O.length;){let v=[],c=Math.min(K+R,O.length);for(;K<c;K++){let d=Y(O[K],o,F);d&&v.push(d);}v.length>0&&await Promise.all(v.map(async d=>{await d,e.shouldYield()&&await e.yieldToMain();})),e.shouldYield()&&await e.yieldToMain();}return U()})():U()},resolveGhosts:o=>{let N=o.uid,A=p[N];if(!A||A.length===0)return [];let F=[],V=Object.create(null);for(let O=0;O<A.length;O++){let K=A[O];V[K.key]||(V[K.key]=[]),V[K.key].push(K);}for(let O in V){let K=V[O],T=o.state[O],B,U=-1/0,v=false;for(let c=0;c<K.length;c++){let d=K[c];if(d.patch!==void 0&&(T=d.patch(T)),d.value!==void 0){let D=d.weight??1;D>=U&&(U=D,B=d.value,v=true);}}v&&(T=B);for(let c=0;c<K.length;c++){let d=K[c];if(d.delta!==void 0)switch(d.op||"add"){case "add":T=(typeof T=="number"?T:0)+d.delta;break;case "remove":T=Array.isArray(T)?T.filter(H=>H!==d.delta):T;break;case "intersect":T=Array.isArray(T)?T.filter(H=>d.delta.includes(H)):d.delta;break;case "union":{let H=Array.isArray(T)?T:[],ne=Array.isArray(d.delta)?d.delta:[d.delta];T=[...new Set([...H,...ne])];break}case "merge":{let H=typeof T=="object"&&T!==null&&!Array.isArray(T)?T:{},ne=typeof d.delta=="object"&&d.delta!==null&&!Array.isArray(d.delta)?d.delta:{};T={...H,...ne};break}}}Object.is(o.state[O],T)||(o.state[O]=T,F.push(O));}return p[N]=[],S--,F.length>0?F:[]},resetCounters:()=>{for(let o=0;o<a.length;o++){let N=a[o];if(N)for(let A of N.values())for(let F=0;F<A.length;F++)A[F].count=0;}}}}};function nt(g,e,t,r,i){let l=Je(),u=0,s=new Map,a=[],p=[],h=[],n=[],M=false,f=new Set,b=async()=>{let c=Array.from(f);if(f.clear(),"signalTrigger"in i&&typeof i.signalTrigger=="function")for(let d of c){let D=N(d);i.signalTrigger(D.dirtySignal);}else "emit"in i&&i.emit(c);},S=()=>{M||(M=true,requestAnimationFrame(()=>{try{for(;f.size>0;)b();}finally{M=false;}}));},{useEntangle:R,updateEntangleLevel:P,Turnstile:z}=tt({useEntangleStep:g.useEntangleStep},l,e.GetUidToLevelMap,o,N,A,{emit:r.emit,onError:r.callOnError}),{TaskRunner:X,CancelTask:Y}=et({useGreedy:g.useGreedy},e,{GetNodeByPath:o,GetNodeByUid:N,GetPathByUid:A,GetBucket:O,GetMaxUid:K,Turnstile:z},r,{requestUpdate:S,flushPathSet:f},l),y=c=>{throw new Error(`[MeshFlow] Duplicate Path: ${c}`)},Q=c=>{s.has(c.path)&&y(String(c.path));let d=++u,D={path:c.path,getNode:le=>o(le)},H=(le,ue="value")=>{let Me=le({...D}),Se=o(c.path);if(t.createHistoryAction&&t.pushIntoHistory){let ye=t.createHistoryAction([{path:c.path,value:Se.state[ue]},{path:c.path,value:Me}],ee=>{let re=o(ee.path);re.state[ue]=ee.value,T(ee.path);});t.pushIntoHistory(ye);}Se.state[ue]=Me,T(c.path);},ne=Be({uid:d,type:c.type,path:c.path,state:c.state,meta:c.meta,nodeBucket:{},dirtySignal:"signalCreator"in i?i.signalCreator():void 0,notifyKeys:c.notifyKeys,dependOn:H});return s.set(ne.path,d),h[d]=ne.path,a[d]=ne,ne},_=c=>{s.has(c.path)&&y(String(c.path));let d=++u,D=Be({uid:d,type:c.type,path:c.path,state:{},meta:c,nodeBucket:{},children:c.children});return s.set(D.path,d),p[d]=D,D};function o(c){let d=s.get(c),D=a[d];if(!D)throw Error("Wrong id");return D}function N(c){let d=a[c];if(!d)throw Error("Wrong id");return d}function A(c){return h[c]}function F(c){let d=s.get(c);return p[d]}function V(c){return n.push(c)-1}function O(c){let d=n[c];if(!d)throw Error("Wrong id");return d}function K(){return u}let T=c=>{let d=o(c);if(!d)throw Error("Wrong id");f.add(d.uid),S();let D=e.GetNextDependency(d.uid);B(d.uid,D);};function B(c,d){X(c,d);}return {registerNode:Q,registerGroupNode:_,GetNodeByPath:o,GetGroupByPath:F,notify:T,notifyAll:async()=>{Promise.resolve().then(async()=>{let c=e.GetDependencyOrder();if(!c||c.length===0)return;let d=c[0];try{X(null,d);}catch(D){throw r.callOnError(D),D}finally{S();}});},batchNotify:c=>{if(!c||c.length===0)return;if(t.createHistoryAction&&t.pushIntoHistory){let D=t.createHistoryAction([c.map(H=>({path:H.path,key:H.key,value:o(H.path).state[H.key]})),c.map(H=>({path:H.path,key:H.key,value:H.value}))],H=>{let ne=new Set;H.forEach(le=>{let ue=o(le.path);ue.state[le.key]=le.value,f.add(le.path),ne.add(le.uid);}),S(),ne.size>0&&X(null,Array.from(ne));});t.pushIntoHistory(D);}let d=new Set;c.forEach(D=>{let H=o(D.path);H.state[D.key]=D.value,f.add(H.uid),d.add(H.uid);}),S(),d.size>0&&X(null,Array.from(d));},useEntangle:R,updateEntangleLevel:P,SetBucket:V,GetBucket:O,CancelTask:Y,UITrigger:i,UidToNodeMap:a}}function rt(g,e){let t=false,r=false,i=false,l=false,u=new Map,s=[],a=[],p=[],h=[],n=[],M=[],f=[],m=new Map,{GetNextDependency:S,GetPrevDependency:R,GetAllPrevDependency:P,GetAllNextDependency:z,rebuildDirectDependencyMaps:X}=ze(()=>s,()=>p,()=>M,()=>n),Y={},y={};if(e.modules.useHistory){let L=e.modules.useHistory,x;L.isMeshModuleInited?x=L:x=L();let{Undo:$,Redo:j,PushIntoHistory:I,CreateHistoryAction:k,updateUndoSize:G,updateRedoSize:C}=x();Y.pushIntoHistory=I,Y.createHistoryAction=k,y={Undo:$,Redo:j,updateUndoSize:G,updateRedoSize:C};}let Q=!!e.modules.useMeshRenderGate,_={};if(Q){let L=e.modules.useMeshRenderGate.isMeshModuleInited,x=e.modules.useMeshRenderGate;_=(L?x:x())(()=>ue);}let{onError:o,callOnError:N}=Qe(),{onSuccess:A,callOnSuccess:F}=$e(),{onStart:V,callOnStart:O}=Ze(),{emit:K,usePlugin:T,destroyPlugin:B}=Xe(),{SetTrace:U,useTrace:v}=je(),c=v();T(c);let d=Q?{..._}:{...e.UITrigger},D=nt({useGreedy:e.config.useGreedy,useEntangleStep:e.config.useEntangleStep||100},{GetDependencyOrder:()=>f,GetAllNextDependency:z,GetNextDependency:S,GetPrevDependency:R,GetAllPrevDependency:P,GetUidToLevelMap:()=>m},Y,{callOnError:N,callOnSuccess:F,callOnStart:O,emit:K},d),{SetBucket:H,GetBucket:ne,GetGroupByPath:le,GetNodeByPath:ue,notifyAll:Me,useEntangle:Se,updateEntangleLevel:ye,CancelTask:ee}=D;Q&&_.init();let re={};if(e.modules.useInternalForm){let{uiSchema:L,GetFormData:x}=e.modules.useInternalForm(D,g);re={uiSchema:L,GetFormData:x};}let be={};if(e.modules.useSchemaValidators){let{SetValidators:L}=e.modules.useSchemaValidators(ue);be={SetValidators:L};}let{SetRule:ge,SetRules:Ae}=He(ue,H,ne,s,p,a,h,u),{SetStrategy:ve}=Ye(ue,ne),Ie=qe(s,u),Oe=()=>{let L=Ie();f=L.steps,m=L.levelMap,Te();},Te=()=>{i&&(ye(),i=false);},ke=()=>{l||(l=true,Promise.resolve().then(Te).finally(()=>{l=false;}));},Ee=()=>{r||(r=true,Promise.resolve().then(()=>{if(Oe(),t){let{directNextMap:L,directPrevMap:x}=X(f.flat());n=L,M=x;}}).finally(()=>{r=false,t=false;}));};return {SetRule:(L,x,$,j)=>{ge(L,x,$,j),t=true,Ee();},SetRules:(L,x,$,j)=>{Ae(L,x,$,j),t=true,Ee();},SetStrategy:ve,useEntangle:L=>{Se(L),i=true,ke();},SetTrace:U,usePlugin:T,SetValue:(L,x,$)=>{Te(),ue(L).dependOn(()=>$,x);},GetValue:(L,x="value")=>ue(L).proxy[x],SetValues:L=>{Te(),D.batchNotify(L);},GetGroupByPath:le,notifyAll:async()=>{Oe(),await Me();},GetAllDependency:()=>s,GetDependencyOrder:()=>f,historyExports:y,formExports:re,validatorExports:be,batchRenderExport:_,hasRenderGate:()=>Q,onError:o,onSuccess:A,onStart:V,scheduler:D,destroyPlugin:B,CancelTask:ee}}var xe=new Map,at=(g,e,t)=>{try{if(xe.has(g))throw Error("engineID repeated");let r=rt(e,{config:t.config||{useGreedy:!1},UITrigger:t.UITrigger,modules:t.modules??{},plugins:{}}),{SetRule:i,SetRules:l,SetValues:u,SetStrategy:s,SetValue:a,GetValue:p,usePlugin:h,useEntangle:n,GetGroupByPath:M,notifyAll:f,SetTrace:m,GetAllDependency:b,GetDependencyOrder:S,historyExports:R,formExports:P,validatorExports:z,batchRenderExport:X,hasRenderGate:Y,onError:y,onSuccess:Q,onStart:_,scheduler:o,destroyPlugin:N,CancelTask:A}=r,F={config:{SetRule:i,SetRules:l,SetStrategy:s,notifyAll:f,SetTrace:m,usePlugin:h,hasRenderGate:Y,useEntangle:n},data:{SetValue:a,GetValue:p,SetValues:u,GetGroupByPath:M},dependency:{GetAllDependency:b,GetDependencyOrder:S},hooks:{onError:y,onSuccess:Q,onStart:_}},V=(T,B,U)=>{!B||typeof B!="object"||Object.keys(B).forEach(v=>{let c=B[v];if(typeof c=="object"&&c!==null)T[v]=T[v]||{},V(T[v],c,U);else if(typeof c=="function"){let d=v;if(d==="useMeshRenderGate")d="render";else if(d.startsWith("use")){let D=d.slice(3);d=D.charAt(0).toLowerCase()+D.slice(1);}v==="useHistory"&&U.exports.history&&Object.keys(U.exports.history).length>0?T[d]=U.exports.history:v==="useInternalForm"&&U.exports.form&&Object.keys(U.exports.form).length>0?T[d]=U.exports.form:v==="useSchemaValidators"&&U.exports.validator&&Object.keys(U.exports.validator).length>0?T[d]=U.exports.validator:v==="useMeshRenderGate"&&U.exports.render?T[d]=U.exports.render:T[d]=c(U.scheduler,U.Schema);}});},O={...F,destroyPlugin:N,CancelTask:A,modules:{}},K=t.modules;return K&&V(O.modules,K,{scheduler:o,Schema:e,exports:{history:R,form:P,validator:z,render:X}}),xe.set(g,O),O}catch(r){throw Error(r)}},yn=()=>(g,e,t)=>ot(g,e,t),fn=g=>{let e=xe.get(g);if(!e)throw Error("Engine not found.");return e},pn=g=>{let e=xe.get(g);e.destroyPlugin(),e.CancelTask(),xe.delete(g);},ot=at;exports.DefaultStrategy=_e;exports.MeshFlowEventsName=we;exports.TriggerCause=Ce;exports.deleteEngine=pn;exports.useEngine=fn;exports.useEngineManager=at;exports.useMeshFlow=ot;exports.useMeshFlowDefiner=yn;exports.useScheduler=nt;