@feng3d/reactivity 1.0.5 → 1.0.6
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/dist/assets/RobotoMono-Medium-DVgDz_OO.woff2 +0 -0
- package/dist/assets/RobotoMono-Regular-BPoF81uy.woff2 +0 -0
- package/dist/assets/index-a2qCSG5V.css +629 -0
- package/dist/assets/index.html-Dyp3udP2.js +200 -0
- package/dist/assets/modulepreload-polyfill-DaKOjhqt.js +37 -0
- package/dist/assets/package-9zMEdmDL.js +2540 -0
- package/dist/assets/src//345/244/215/346/235/202/346/203/205/345/206/265/345/217/226/345/200/274/index.html-a69uOZEV.js +59 -0
- package/dist/assets/src//346/225/260/347/273/204/index.html-CaZ_5kCZ.js +43 -0
- package/dist/docs/.nojekyll +1 -0
- package/dist/docs/assets/hierarchy.js +1 -0
- package/dist/docs/assets/highlight.css +92 -0
- package/dist/docs/assets/icons.js +18 -0
- package/dist/docs/assets/icons.svg +1 -0
- package/dist/docs/assets/main.js +60 -0
- package/dist/docs/assets/navigation.js +1 -0
- package/dist/docs/assets/search.js +1 -0
- package/dist/docs/assets/style.css +1640 -0
- package/dist/docs/classes/ComputedReactivity.html +72 -0
- package/dist/docs/classes/EffectReactivity.html +62 -0
- package/dist/docs/classes/EffectScope.html +40 -0
- package/dist/docs/classes/Reactivity.html +35 -0
- package/dist/docs/classes/RefReactivity.html +57 -0
- package/dist/docs/functions/batchRun.html +15 -0
- package/dist/docs/functions/computed.html +5 -0
- package/dist/docs/functions/effect.html +11 -0
- package/dist/docs/functions/effectScope.html +5 -0
- package/dist/docs/functions/forceTrack.html +6 -0
- package/dist/docs/functions/getCurrentScope.html +4 -0
- package/dist/docs/functions/isProxy.html +5 -0
- package/dist/docs/functions/isReactive.html +5 -0
- package/dist/docs/functions/isRef.html +5 -0
- package/dist/docs/functions/noTrack.html +6 -0
- package/dist/docs/functions/onScopeDispose.html +6 -0
- package/dist/docs/functions/reactive.html +19 -0
- package/dist/docs/functions/ref.html +13 -0
- package/dist/docs/functions/toRaw.html +4 -0
- package/dist/docs/hierarchy.html +1 -0
- package/dist/docs/index.html +129 -0
- package/dist/docs/interfaces/Computed.html +9 -0
- package/dist/docs/interfaces/Effect.html +8 -0
- package/dist/docs/interfaces/Ref.html +9 -0
- package/dist/docs/modules.html +1 -0
- package/dist/docs/types/Reactive.html +3 -0
- package/dist/docs/types/UnReadonly.html +3 -0
- package/dist/files/RobotoMono-Medium.woff2 +0 -0
- package/dist/files/RobotoMono-Regular.woff2 +0 -0
- package/dist/files/ic_code_black_24dp.svg +4 -0
- package/dist/files/ic_search_black_24dp.svg +4 -0
- package/dist/files/main.css +629 -0
- package/dist/files/thumbnails.svg +7 -0
- package/dist/files.json +7 -0
- package/dist/index.html +84 -0
- package/dist/index.js +735 -156
- package/dist/index.js.map +1 -1
- package/dist/index.umd.cjs +735 -156
- package/dist/index.umd.cjs.map +1 -1
- package/dist/screenshots//345/244/215/346/235/202/346/203/205/345/206/265/345/217/226/345/200/274.jpg +0 -0
- package/dist/screenshots//346/225/260/347/273/204.jpg +0 -0
- package/dist/src//345/244/215/346/235/202/346/203/205/345/206/265/345/217/226/345/200/274/index.html +70 -0
- package/dist/src//346/225/260/347/273/204/index.html +65 -0
- package/dist/tags.json +2 -0
- package/lib/Reactivity.d.ts +47 -13
- package/lib/Reactivity.d.ts.map +1 -1
- package/lib/arrayInstrumentations.d.ts +10 -0
- package/lib/arrayInstrumentations.d.ts.map +1 -1
- package/lib/baseHandlers.d.ts +3 -1
- package/lib/baseHandlers.d.ts.map +1 -1
- package/lib/batch.d.ts +17 -5
- package/lib/batch.d.ts.map +1 -1
- package/lib/collectionHandlers.d.ts +21 -0
- package/lib/collectionHandlers.d.ts.map +1 -1
- package/lib/computed.d.ts +75 -27
- package/lib/computed.d.ts.map +1 -1
- package/lib/effect.d.ts +25 -0
- package/lib/effect.d.ts.map +1 -1
- package/lib/effectScope.d.ts +129 -0
- package/lib/effectScope.d.ts.map +1 -0
- package/lib/index.d.ts +6 -5
- package/lib/index.d.ts.map +1 -1
- package/lib/property.d.ts.map +1 -1
- package/lib/reactive.d.ts +58 -17
- package/lib/reactive.d.ts.map +1 -1
- package/lib/ref.d.ts +66 -4
- package/lib/ref.d.ts.map +1 -1
- package/lib/shared/constants.d.ts +7 -7
- package/lib/shared/constants.d.ts.map +1 -1
- package/lib/shared/general.d.ts +1 -1
- package/lib/shared/general.d.ts.map +1 -1
- package/package.json +21 -16
- package/src/Reactivity.ts +57 -15
- package/src/arrayInstrumentations.ts +406 -53
- package/src/baseHandlers.ts +124 -32
- package/src/batch.ts +38 -11
- package/src/collectionHandlers.ts +207 -19
- package/src/computed.ts +92 -43
- package/src/effect.ts +38 -0
- package/src/effectScope.ts +294 -0
- package/src/index.ts +6 -5
- package/src/property.ts +6 -0
- package/src/reactive.ts +67 -20
- package/src/ref.ts +66 -4
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8">
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
7
|
+
<title>测试代码与结果对比</title>
|
|
8
|
+
<style>
|
|
9
|
+
body {
|
|
10
|
+
font-family: Arial, sans-serif;
|
|
11
|
+
padding: 20px;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
pre {
|
|
15
|
+
background-color: #f4f4f4;
|
|
16
|
+
padding: 10px;
|
|
17
|
+
border: 1px solid #ccc;
|
|
18
|
+
overflow-x: auto;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.result-container {
|
|
22
|
+
border: 1px solid #ccc;
|
|
23
|
+
padding: 10px;
|
|
24
|
+
margin-top: 10px;
|
|
25
|
+
margin-bottom: 10px;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.result-title {
|
|
29
|
+
font-weight: bold;
|
|
30
|
+
margin-bottom: 5px;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.result-time {
|
|
34
|
+
margin-bottom: 5px;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.result-values {
|
|
38
|
+
margin-bottom: 5px;
|
|
39
|
+
}
|
|
40
|
+
</style>
|
|
41
|
+
<script type="module" crossorigin src="../../assets/src/数组/index.html-CaZ_5kCZ.js"></script>
|
|
42
|
+
<link rel="modulepreload" crossorigin href="../../assets/modulepreload-polyfill-DaKOjhqt.js">
|
|
43
|
+
<link rel="modulepreload" crossorigin href="../../assets/package-9zMEdmDL.js">
|
|
44
|
+
</head>
|
|
45
|
+
|
|
46
|
+
<body>
|
|
47
|
+
<h1>数组</h1>
|
|
48
|
+
<h2>结果对比</h2>
|
|
49
|
+
<div class="result-container">
|
|
50
|
+
<div class="result-title">@feng3d/reactivity<span id="feng3d-version"></span></div>
|
|
51
|
+
<div class="result-time">时间: <span id="feng3d-time">未提供</span> 毫秒</div>
|
|
52
|
+
<div class="result-values">值: <span id="feng3d-values">未提供</span></div>
|
|
53
|
+
</div>
|
|
54
|
+
<div class="result-container">
|
|
55
|
+
<div class="result-title">@vue/reactivity<span id="vue-version"></span></div>
|
|
56
|
+
<div class="result-time">时间: <span id="vue-time">未提供</span> 毫秒</div>
|
|
57
|
+
<div class="result-values">值: <span id="vue-values">未提供</span></div>
|
|
58
|
+
</div>
|
|
59
|
+
<h2>测试代码</h2>
|
|
60
|
+
<pre id="test-code">
|
|
61
|
+
<!-- 测试代码将显示在这里 -->
|
|
62
|
+
</pre>
|
|
63
|
+
</body>
|
|
64
|
+
|
|
65
|
+
</html>
|
package/dist/tags.json
ADDED
package/lib/Reactivity.d.ts
CHANGED
|
@@ -1,16 +1,21 @@
|
|
|
1
1
|
import { type ComputedReactivity } from './computed';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* 反应式节点基类。
|
|
4
4
|
*
|
|
5
5
|
* 拥有节点值以及被捕捉与触发的能力。
|
|
6
|
+
* 用于被 computed、effect 等构建的节点所继承。
|
|
6
7
|
*
|
|
7
|
-
*
|
|
8
|
+
* 实现了响应式系统的核心功能:
|
|
9
|
+
* 1. 值的存储和访问
|
|
10
|
+
* 2. 依赖关系的建立(track)
|
|
11
|
+
* 3. 变更通知的传播(trigger)
|
|
8
12
|
*/
|
|
9
13
|
export declare class Reactivity<T = any> {
|
|
10
14
|
/**
|
|
11
15
|
* 获取当前节点值。
|
|
12
16
|
*
|
|
13
17
|
* 取值时将会建立与父节点的依赖关系。
|
|
18
|
+
* 当其他响应式节点访问此值时,会自动建立依赖关系。
|
|
14
19
|
*/
|
|
15
20
|
get value(): T;
|
|
16
21
|
/**
|
|
@@ -18,36 +23,57 @@ export declare class Reactivity<T = any> {
|
|
|
18
23
|
*/
|
|
19
24
|
_value: T;
|
|
20
25
|
/**
|
|
21
|
-
*
|
|
26
|
+
* 父反应节点集合。
|
|
22
27
|
*
|
|
23
|
-
*
|
|
28
|
+
* 记录了哪些节点依赖了当前节点。
|
|
29
|
+
* 当当前节点值发生变化时,会通知所有父节点。
|
|
24
30
|
*
|
|
25
|
-
*
|
|
31
|
+
* Map 的 key 是父节点,value 是父节点的版本号。
|
|
32
|
+
* 版本号用于判断依赖关系是否过期。
|
|
26
33
|
*
|
|
27
34
|
* @private
|
|
28
35
|
*/
|
|
29
36
|
_parents: Map<ComputedReactivity<any>, number>;
|
|
30
37
|
/**
|
|
31
|
-
*
|
|
38
|
+
* 建立依赖关系。
|
|
32
39
|
*
|
|
33
|
-
*
|
|
40
|
+
* 当其他节点访问当前节点的值时,会调用此方法。
|
|
41
|
+
* 将当前节点与访问者(父节点)建立依赖关系。
|
|
42
|
+
*
|
|
43
|
+
* 如果当前没有活动的响应式节点,或者不应该跟踪依赖,则不会建立依赖关系。
|
|
34
44
|
*/
|
|
35
45
|
track(): void;
|
|
36
46
|
/**
|
|
37
|
-
*
|
|
47
|
+
* 触发更新。
|
|
48
|
+
*
|
|
49
|
+
* 当节点值发生变化时,会调用此方法。
|
|
50
|
+
* 通知所有依赖此节点的父节点进行更新。
|
|
38
51
|
*
|
|
39
|
-
*
|
|
52
|
+
* 更新过程:
|
|
53
|
+
* 1. 遍历所有父节点
|
|
54
|
+
* 2. 检查父节点的版本号是否匹配
|
|
55
|
+
* 3. 触发父节点的更新
|
|
56
|
+
* 4. 将当前节点添加到父节点的失效子节点集合中
|
|
40
57
|
*/
|
|
41
58
|
trigger(): void;
|
|
42
59
|
/**
|
|
43
60
|
* 当前正在执行的反应式节点。
|
|
44
61
|
*
|
|
62
|
+
* 用于在依赖收集过程中标识当前正在执行的节点。
|
|
63
|
+
* 当其他节点访问此节点的值时,会将其作为父节点。
|
|
64
|
+
*
|
|
45
65
|
* @internal
|
|
46
66
|
*/
|
|
47
67
|
static activeReactivity: ComputedReactivity;
|
|
48
68
|
}
|
|
49
69
|
/**
|
|
50
70
|
* 反应式节点链。
|
|
71
|
+
*
|
|
72
|
+
* 用于表示响应式节点之间的依赖关系链。
|
|
73
|
+
* 每个节点包含:
|
|
74
|
+
* 1. 节点本身
|
|
75
|
+
* 2. 节点的值
|
|
76
|
+
* 3. 下一个节点的引用
|
|
51
77
|
*/
|
|
52
78
|
export type ReactivityLink = {
|
|
53
79
|
node: Reactivity;
|
|
@@ -55,15 +81,23 @@ export type ReactivityLink = {
|
|
|
55
81
|
next: ReactivityLink;
|
|
56
82
|
};
|
|
57
83
|
/**
|
|
58
|
-
*
|
|
84
|
+
* 强制跟踪依赖。
|
|
85
|
+
*
|
|
86
|
+
* 在函数执行期间强制启用依赖跟踪。
|
|
87
|
+
* 即使当前处于不跟踪状态,也会建立依赖关系。
|
|
59
88
|
*
|
|
60
|
-
* @param fn
|
|
89
|
+
* @param fn 要执行的函数
|
|
90
|
+
* @returns 函数的执行结果
|
|
61
91
|
*/
|
|
62
92
|
export declare function forceTrack<T>(fn: () => T): T;
|
|
63
93
|
/**
|
|
64
|
-
*
|
|
94
|
+
* 禁用依赖跟踪。
|
|
95
|
+
*
|
|
96
|
+
* 在函数执行期间禁用依赖跟踪。
|
|
97
|
+
* 即使当前处于跟踪状态,也不会建立依赖关系。
|
|
65
98
|
*
|
|
66
|
-
* @param fn
|
|
99
|
+
* @param fn 要执行的函数
|
|
100
|
+
* @returns 函数的执行结果
|
|
67
101
|
*/
|
|
68
102
|
export declare function noTrack<T>(fn: () => T): T;
|
|
69
103
|
//# sourceMappingURL=Reactivity.d.ts.map
|
package/lib/Reactivity.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Reactivity.d.ts","sourceRoot":"","sources":["../src/Reactivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD
|
|
1
|
+
{"version":3,"file":"Reactivity.d.ts","sourceRoot":"","sources":["../src/Reactivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD;;;;;;;;;;GAUG;AACH,qBAAa,UAAU,CAAC,CAAC,GAAG,GAAG;IAE3B;;;;;OAKG;IACH,IAAI,KAAK,IAAI,CAAC,CAKb;IAED;;OAEG;IACH,MAAM,EAAE,CAAC,CAAC;IAEV;;;;;;;;;;OAUG;IACH,QAAQ,uCAAyC;IAEjD;;;;;;;OAOG;IACH,KAAK;IAaL;;;;;;;;;;;OAWG;IACH,OAAO;IAgBP;;;;;;;OAOG;IACH,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;CAC/C;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,cAAc,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,CAAC;AAEpF;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAU5C;AAED;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAUzC"}
|
|
@@ -1,2 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 数组方法增强对象。
|
|
3
|
+
*
|
|
4
|
+
* 为数组提供响应式增强的方法实现,包括:
|
|
5
|
+
* 1. 迭代器方法:Symbol.iterator、entries、keys、values
|
|
6
|
+
* 2. 查找方法:includes、indexOf、lastIndexOf、find、findIndex、findLast、findLastIndex
|
|
7
|
+
* 3. 遍历方法:forEach、map、filter、some、every、reduce、reduceRight
|
|
8
|
+
* 4. 修改方法:push、pop、shift、unshift、splice、toReversed、toSorted、toSpliced
|
|
9
|
+
* 5. 其他方法:concat、join
|
|
10
|
+
*/
|
|
1
11
|
export declare const arrayInstrumentations: Record<string | symbol, Function>;
|
|
2
12
|
//# sourceMappingURL=arrayInstrumentations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arrayInstrumentations.d.ts","sourceRoot":"","sources":["../src/arrayInstrumentations.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"arrayInstrumentations.d.ts","sourceRoot":"","sources":["../src/arrayInstrumentations.ts"],"names":[],"mappings":"AASA;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,QAAQ,CAmfnE,CAAC"}
|
package/lib/baseHandlers.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseHandlers.d.ts","sourceRoot":"","sources":["../src/baseHandlers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"baseHandlers.d.ts","sourceRoot":"","sources":["../src/baseHandlers.ts"],"names":[],"mappings":"AAqQA;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,YAAY,CAAC,MAAM,CAAgC,CAAC"}
|
package/lib/batch.d.ts
CHANGED
|
@@ -1,14 +1,25 @@
|
|
|
1
1
|
import { ComputedReactivity } from './computed';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* 合批处理依赖。
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* 将依赖添加到待处理队列中,根据依赖的运行状态决定处理方式:
|
|
6
|
+
* 1. 如果依赖正在运行,添加到已运行队列
|
|
7
|
+
* 2. 如果依赖未运行,添加到待运行队列
|
|
8
|
+
*
|
|
9
|
+
* @param dep 要处理的依赖
|
|
10
|
+
* @param isRunning 依赖是否正在运行
|
|
7
11
|
*/
|
|
8
12
|
export declare function batch(dep: ComputedReactivity, isRunning: boolean): void;
|
|
9
13
|
/**
|
|
10
|
-
*
|
|
14
|
+
* 批次执行多次修改反应式对象。
|
|
15
|
+
*
|
|
16
|
+
* 将多个响应式更新合并为一个批次执行,可以减少不必要的反应式触发。
|
|
17
|
+
* 在批次执行期间:
|
|
18
|
+
* 1. 所有响应式更新都会被收集
|
|
19
|
+
* 2. 批次结束后统一处理所有更新
|
|
20
|
+
* 3. 避免中间状态触发不必要的更新
|
|
11
21
|
*
|
|
22
|
+
* 示例:
|
|
12
23
|
* ```ts
|
|
13
24
|
* batchRun(() => {
|
|
14
25
|
* // 修改反应式对象
|
|
@@ -17,7 +28,8 @@ export declare function batch(dep: ComputedReactivity, isRunning: boolean): void
|
|
|
17
28
|
* })
|
|
18
29
|
* ```
|
|
19
30
|
*
|
|
20
|
-
* @param fn
|
|
31
|
+
* @param fn 要执行的函数,在此函数中多次修改反应式对象
|
|
32
|
+
* @returns 函数的执行结果
|
|
21
33
|
*/
|
|
22
34
|
export declare function batchRun<T>(fn: () => T): T;
|
|
23
35
|
//# sourceMappingURL=batch.d.ts.map
|
package/lib/batch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../src/batch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGhD
|
|
1
|
+
{"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../src/batch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGhD;;;;;;;;;GASG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,kBAAkB,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI,CAUvE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CA+C1C"}
|
|
@@ -1,7 +1,28 @@
|
|
|
1
1
|
import { Target } from './shared/general';
|
|
2
|
+
/**
|
|
3
|
+
* 可变集合响应式处理器。
|
|
4
|
+
*
|
|
5
|
+
* 用于处理集合类型(Map、Set、WeakMap、WeakSet)的响应式代理。
|
|
6
|
+
* 通过拦截集合的操作方法,实现响应式功能。
|
|
7
|
+
*/
|
|
2
8
|
export declare const mutableCollectionHandlers: ProxyHandler<CollectionTypes>;
|
|
9
|
+
/**
|
|
10
|
+
* 集合类型。
|
|
11
|
+
*
|
|
12
|
+
* 包括可迭代集合和弱引用集合。
|
|
13
|
+
*/
|
|
3
14
|
type CollectionTypes = IterableCollections | WeakCollections;
|
|
15
|
+
/**
|
|
16
|
+
* 可迭代集合类型。
|
|
17
|
+
*
|
|
18
|
+
* 包括 Map 和 Set。
|
|
19
|
+
*/
|
|
4
20
|
type IterableCollections = (Map<any, any> | Set<any>) & Target;
|
|
21
|
+
/**
|
|
22
|
+
* 弱引用集合类型。
|
|
23
|
+
*
|
|
24
|
+
* 包括 WeakMap 和 WeakSet。
|
|
25
|
+
*/
|
|
5
26
|
type WeakCollections = (WeakMap<any, any> | WeakSet<any>) & Target;
|
|
6
27
|
export {};
|
|
7
28
|
//# sourceMappingURL=collectionHandlers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collectionHandlers.d.ts","sourceRoot":"","sources":["../src/collectionHandlers.ts"],"names":[],"mappings":"AAEA,OAAO,EAA6B,MAAM,EAA0B,MAAM,kBAAkB,CAAC;AAG7F,eAAO,MAAM,yBAAyB,EAAE,YAAY,CAAC,eAAe,CAEnE,CAAC;
|
|
1
|
+
{"version":3,"file":"collectionHandlers.d.ts","sourceRoot":"","sources":["../src/collectionHandlers.ts"],"names":[],"mappings":"AAEA,OAAO,EAA6B,MAAM,EAA0B,MAAM,kBAAkB,CAAC;AAG7F;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,EAAE,YAAY,CAAC,eAAe,CAEnE,CAAC;AAubF;;;;GAIG;AACH,KAAK,eAAe,GAAG,mBAAmB,GAAG,eAAe,CAAC;AAE7D;;;;GAIG;AACH,KAAK,mBAAmB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;AAE/D;;;;GAIG;AACH,KAAK,eAAe,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC"}
|
package/lib/computed.d.ts
CHANGED
|
@@ -2,48 +2,70 @@ import { Reactivity } from './Reactivity';
|
|
|
2
2
|
/**
|
|
3
3
|
* 创建计算反应式对象。
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* 计算属性会缓存计算结果,只有当依赖发生变化时才会重新计算。
|
|
6
6
|
*
|
|
7
|
-
* @param func
|
|
8
|
-
* @returns 包含 value
|
|
7
|
+
* @param func 计算函数,可以访问其他响应式数据,并返回计算结果
|
|
8
|
+
* @returns 包含 value 属性的计算属性对象
|
|
9
9
|
*/
|
|
10
10
|
export declare function computed<T>(func: (oldValue?: T) => T): Computed<T>;
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
12
|
+
* 计算属性接口。
|
|
13
|
+
*
|
|
14
|
+
* 定义了计算属性的基本结构:
|
|
15
|
+
* 1. value: 计算属性的当前值
|
|
16
|
+
* 2. ComputedSymbol: 用于标识这是一个计算属性
|
|
13
17
|
*/
|
|
14
18
|
export interface Computed<T = any> {
|
|
15
19
|
readonly value: T;
|
|
16
20
|
[ComputedSymbol]: true;
|
|
17
21
|
}
|
|
18
22
|
declare const ComputedSymbol: unique symbol;
|
|
23
|
+
/**
|
|
24
|
+
* 计算反应式节点接口。
|
|
25
|
+
*
|
|
26
|
+
* 继承自 Computed 接口,表示这是一个计算反应式节点。
|
|
27
|
+
*/
|
|
19
28
|
export interface ComputedReactivity<T = any> extends Computed<T> {
|
|
20
29
|
}
|
|
21
30
|
/**
|
|
22
|
-
*
|
|
31
|
+
* 计算反应式节点类。
|
|
23
32
|
*
|
|
24
|
-
* 当使用 computed 函数时,会创建一个
|
|
25
|
-
*
|
|
26
|
-
*
|
|
33
|
+
* 当使用 computed 函数时,会创建一个 ComputedReactivity 对象。
|
|
34
|
+
* 实现了计算属性的核心功能:
|
|
35
|
+
* 1. 缓存计算结果
|
|
36
|
+
* 2. 按需重新计算
|
|
37
|
+
* 3. 依赖追踪
|
|
38
|
+
* 4. 变更通知
|
|
27
39
|
*/
|
|
28
40
|
export declare class ComputedReactivity<T = any> extends Reactivity<T> {
|
|
29
41
|
/**
|
|
42
|
+
* 标识这是一个 ref 对象。
|
|
43
|
+
*
|
|
30
44
|
* @internal
|
|
31
45
|
*/
|
|
32
46
|
readonly __v_isRef = true;
|
|
33
47
|
/**
|
|
34
|
-
*
|
|
48
|
+
* 计算函数。
|
|
49
|
+
*
|
|
50
|
+
* 用于计算属性值的函数,可以访问其他响应式数据。
|
|
51
|
+
* 当依赖发生变化时,会重新执行此函数。
|
|
35
52
|
*/
|
|
36
53
|
protected _func: (oldValue?: T) => T;
|
|
37
54
|
/**
|
|
38
|
-
*
|
|
55
|
+
* 失效子节点集合。
|
|
56
|
+
*
|
|
57
|
+
* 记录所有依赖此计算属性的子节点。
|
|
58
|
+
* 当计算属性重新计算时,会通知这些子节点。
|
|
39
59
|
*
|
|
40
60
|
* @private
|
|
41
61
|
*/
|
|
42
62
|
_children: Map<Reactivity<any>, any>;
|
|
43
63
|
/**
|
|
44
|
-
*
|
|
64
|
+
* 脏标记。
|
|
45
65
|
*
|
|
46
|
-
*
|
|
66
|
+
* 表示计算属性是否需要重新计算。
|
|
67
|
+
* 当依赖发生变化时,会设置此标记。
|
|
68
|
+
* 重新计算后会清除此标记。
|
|
47
69
|
*
|
|
48
70
|
* @private
|
|
49
71
|
*/
|
|
@@ -51,44 +73,70 @@ export declare class ComputedReactivity<T = any> extends Reactivity<T> {
|
|
|
51
73
|
/**
|
|
52
74
|
* 版本号。
|
|
53
75
|
*
|
|
54
|
-
*
|
|
76
|
+
* 每次重新计算后自动递增。
|
|
77
|
+
* 用于判断子节点中的父节点引用是否过期。
|
|
78
|
+
* 当子节点发现父节点的版本号不匹配时,会重新建立依赖关系。
|
|
55
79
|
*
|
|
56
80
|
* @private
|
|
57
81
|
*/
|
|
58
82
|
_version: number;
|
|
59
83
|
/**
|
|
60
|
-
*
|
|
84
|
+
* 获取计算属性的值。
|
|
61
85
|
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
86
|
+
* 取值时会:
|
|
87
|
+
* 1. 检查是否需要重新计算
|
|
88
|
+
* 2. 建立与父节点的依赖关系
|
|
89
|
+
* 3. 返回当前值
|
|
65
90
|
*/
|
|
66
91
|
get value(): T;
|
|
67
92
|
/**
|
|
68
|
-
*
|
|
69
|
-
*
|
|
93
|
+
* 创建计算反应式节点。
|
|
94
|
+
*
|
|
95
|
+
* @param func 计算函数,可以访问其他响应式数据,并返回计算结果
|
|
70
96
|
*/
|
|
71
97
|
constructor(func: (oldValue?: T) => T);
|
|
72
98
|
/**
|
|
73
|
-
*
|
|
99
|
+
* 触发更新。
|
|
74
100
|
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
101
|
+
* 当依赖发生变化时,会调用此方法。
|
|
102
|
+
* 如果当前正在执行计算,会将更新延迟到计算完成后。
|
|
103
|
+
* 否则,立即通知所有父节点进行更新。
|
|
78
104
|
*/
|
|
79
105
|
trigger(): void;
|
|
80
106
|
/**
|
|
81
|
-
*
|
|
107
|
+
* 执行计算。
|
|
108
|
+
*
|
|
109
|
+
* 执行计算函数,更新当前值。
|
|
110
|
+
* 在计算过程中会:
|
|
111
|
+
* 1. 强制启用依赖跟踪
|
|
112
|
+
* 2. 保存并设置当前活动节点
|
|
113
|
+
* 3. 执行计算函数
|
|
114
|
+
* 4. 恢复活动节点
|
|
82
115
|
*/
|
|
83
116
|
run(): void;
|
|
84
117
|
/**
|
|
85
|
-
*
|
|
118
|
+
* 检查并执行计算。
|
|
86
119
|
*
|
|
87
|
-
*
|
|
120
|
+
* 检查当前节点是否需要重新计算:
|
|
121
|
+
* 1. 如果脏标记为 true,需要重新计算
|
|
122
|
+
* 2. 如果子节点发生变化,需要重新计算
|
|
123
|
+
*
|
|
124
|
+
* 重新计算后会清除脏标记。
|
|
88
125
|
*/
|
|
89
126
|
runIfDirty(): void;
|
|
90
127
|
/**
|
|
91
|
-
*
|
|
128
|
+
* 检查子节点是否发生变化。
|
|
129
|
+
*
|
|
130
|
+
* 遍历所有子节点,检查它们的值是否发生变化。
|
|
131
|
+
* 如果发生变化,返回 true,否则返回 false。
|
|
132
|
+
*
|
|
133
|
+
* 在检查过程中会:
|
|
134
|
+
* 1. 临时禁用依赖跟踪
|
|
135
|
+
* 2. 检查每个子节点的值
|
|
136
|
+
* 3. 如果子节点没有变化,重新建立依赖关系
|
|
137
|
+
* 4. 清空子节点集合
|
|
138
|
+
*
|
|
139
|
+
* @returns 是否有子节点发生变化
|
|
92
140
|
*/
|
|
93
141
|
protected isChildrenChanged(): boolean;
|
|
94
142
|
}
|
package/lib/computed.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computed.d.ts","sourceRoot":"","sources":["../src/computed.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAc,MAAM,cAAc,CAAC;AAEtD;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAGlE;AAED
|
|
1
|
+
{"version":3,"file":"computed.d.ts","sourceRoot":"","sources":["../src/computed.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAc,MAAM,cAAc,CAAC;AAEtD;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAGlE;AAED;;;;;;GAMG;AACH,MAAM,WAAW,QAAQ,CAAC,CAAC,GAAG,GAAG;IAE7B,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;IACjB,CAAC,cAAc,CAAC,EAAE,IAAI,CAAA;CACzB;AACD,OAAO,CAAC,MAAM,cAAc,EAAE,OAAO,MAAM,CAAC;AAE5C;;;;GAIG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;CAAI;AAEpE;;;;;;;;;GASG;AACH,qBAAa,kBAAkB,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,UAAU,CAAC,CAAC,CAAC;IAE1D;;;;OAIG;IACH,QAAQ,CAAC,SAAS,QAAQ;IAE1B;;;;;OAKG;IACH,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAErC;;;;;;;OAOG;IACH,SAAS,4BAA8B;IAEvC;;;;;;;;OAQG;IACH,QAAQ,UAAQ;IAEhB;;;;;;;;OAQG;IACH,QAAQ,SAAM;IAEd;;;;;;;OAOG;IACH,IAAI,KAAK,IAAI,CAAC,CAMb;IAED;;;;OAIG;gBACS,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC;IAMrC;;;;;;OAMG;IACH,OAAO,IAAI,IAAI;IAWf;;;;;;;;;OASG;IACH,GAAG;IAmBH;;;;;;;;OAQG;IACH,UAAU;IAgBV;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,iBAAiB;CA0C9B"}
|
package/lib/effect.d.ts
CHANGED
|
@@ -25,8 +25,29 @@ export declare class EffectReactivity<T = any> extends ComputedReactivity<T> imp
|
|
|
25
25
|
*/
|
|
26
26
|
private _isEnable;
|
|
27
27
|
constructor(func: (oldValue?: T) => T);
|
|
28
|
+
/**
|
|
29
|
+
* 暂停效果。
|
|
30
|
+
*
|
|
31
|
+
* 暂停后,当依赖发生变化时不会自动执行。
|
|
32
|
+
*/
|
|
28
33
|
pause(): void;
|
|
34
|
+
/**
|
|
35
|
+
* 恢复效果。
|
|
36
|
+
*
|
|
37
|
+
* 恢复后,当依赖发生变化时会自动执行。
|
|
38
|
+
*/
|
|
29
39
|
resume(): void;
|
|
40
|
+
/**
|
|
41
|
+
* 停止效果。
|
|
42
|
+
*
|
|
43
|
+
* 停止后,效果将不再响应依赖的变化。
|
|
44
|
+
*/
|
|
45
|
+
stop(): void;
|
|
46
|
+
/**
|
|
47
|
+
* 触发效果执行。
|
|
48
|
+
*
|
|
49
|
+
* 当依赖发生变化时,会调用此方法。
|
|
50
|
+
*/
|
|
30
51
|
trigger(): void;
|
|
31
52
|
private static pausedQueueEffects;
|
|
32
53
|
/**
|
|
@@ -48,5 +69,9 @@ export interface Effect {
|
|
|
48
69
|
* 恢复。
|
|
49
70
|
*/
|
|
50
71
|
resume: () => void;
|
|
72
|
+
/**
|
|
73
|
+
* 停止。
|
|
74
|
+
*/
|
|
75
|
+
stop: () => void;
|
|
51
76
|
}
|
|
52
77
|
//# sourceMappingURL=effect.d.ts.map
|
package/lib/effect.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effect.d.ts","sourceRoot":"","sources":["../src/effect.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"effect.d.ts","sourceRoot":"","sources":["../src/effect.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAIhD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,MAAM,CAGnD;AAED;;GAEG;AACH,qBAAa,gBAAgB,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,kBAAkB,CAAC,CAAC,CAAE,YAAW,MAAM;IAElF;;;;OAIG;IACH,OAAO,CAAC,SAAS,CAAQ;gBAEb,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC;IAUrC;;;;OAIG;IACH,KAAK;IAKL;;;;OAIG;IACH,MAAM;IAWN;;;;OAIG;IACH,IAAI;IAMJ;;;;OAIG;IACH,OAAO;IAkBP,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAmC;IAEpE;;;;OAIG;IACH,GAAG,IAAI,IAAI;CAWd;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IAEnB;;OAEG;IACH,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB;;OAEG;IACH,MAAM,EAAE,MAAM,IAAI,CAAC;IAEnB;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAC;CACpB"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import type { Effect as ReactiveEffect } from './effect';
|
|
2
|
+
/**
|
|
3
|
+
* 当前活动的效果作用域
|
|
4
|
+
*/
|
|
5
|
+
export declare let activeEffectScope: EffectScope | undefined;
|
|
6
|
+
/**
|
|
7
|
+
* 效果作用域类
|
|
8
|
+
*
|
|
9
|
+
* 用于管理一组相关的响应式效果,可以统一控制它们的生命周期。
|
|
10
|
+
*/
|
|
11
|
+
export declare class EffectScope {
|
|
12
|
+
detached: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* 作用域是否处于活动状态
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
private _active;
|
|
18
|
+
/**
|
|
19
|
+
* 跟踪 on 方法的调用次数,允许多次调用 on 方法
|
|
20
|
+
* @internal
|
|
21
|
+
*/
|
|
22
|
+
private _on;
|
|
23
|
+
/**
|
|
24
|
+
* 存储当前作用域中的所有效果
|
|
25
|
+
* @internal
|
|
26
|
+
*/
|
|
27
|
+
effects: ReactiveEffect[];
|
|
28
|
+
/**
|
|
29
|
+
* 存储清理函数
|
|
30
|
+
* @internal
|
|
31
|
+
*/
|
|
32
|
+
cleanups: (() => void)[];
|
|
33
|
+
/**
|
|
34
|
+
* 作用域是否被暂停
|
|
35
|
+
*/
|
|
36
|
+
private _isPaused;
|
|
37
|
+
/**
|
|
38
|
+
* 父作用域,仅由非分离的作用域分配
|
|
39
|
+
* @internal
|
|
40
|
+
*/
|
|
41
|
+
parent: EffectScope | undefined;
|
|
42
|
+
/**
|
|
43
|
+
* 记录未分离的子作用域
|
|
44
|
+
* @internal
|
|
45
|
+
*/
|
|
46
|
+
scopes: EffectScope[] | undefined;
|
|
47
|
+
/**
|
|
48
|
+
* 在父作用域的 scopes 数组中记录子作用域的索引,用于优化移除操作
|
|
49
|
+
* @internal
|
|
50
|
+
*/
|
|
51
|
+
private index;
|
|
52
|
+
/**
|
|
53
|
+
* 构造函数
|
|
54
|
+
* @param detached 是否创建分离的作用域
|
|
55
|
+
*/
|
|
56
|
+
constructor(detached?: boolean);
|
|
57
|
+
/**
|
|
58
|
+
* 获取作用域是否处于活动状态
|
|
59
|
+
*/
|
|
60
|
+
get active(): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* 暂停作用域
|
|
63
|
+
*
|
|
64
|
+
* 暂停当前作用域及其所有子作用域和效果
|
|
65
|
+
*/
|
|
66
|
+
pause(): void;
|
|
67
|
+
/**
|
|
68
|
+
* 恢复作用域
|
|
69
|
+
*
|
|
70
|
+
* 恢复当前作用域及其所有子作用域和效果
|
|
71
|
+
*/
|
|
72
|
+
resume(): void;
|
|
73
|
+
/**
|
|
74
|
+
* 在作用域中运行函数
|
|
75
|
+
* @param fn 要运行的函数
|
|
76
|
+
* @returns 函数的返回值
|
|
77
|
+
*/
|
|
78
|
+
run<T>(fn: () => T): T | undefined;
|
|
79
|
+
/**
|
|
80
|
+
* 前一个作用域
|
|
81
|
+
*/
|
|
82
|
+
prevScope: EffectScope | undefined;
|
|
83
|
+
/**
|
|
84
|
+
* 激活作用域
|
|
85
|
+
* 仅应在非分离的作用域上调用
|
|
86
|
+
* @internal
|
|
87
|
+
*/
|
|
88
|
+
on(): void;
|
|
89
|
+
/**
|
|
90
|
+
* 停用作用域
|
|
91
|
+
* 仅应在非分离的作用域上调用
|
|
92
|
+
* @internal
|
|
93
|
+
*/
|
|
94
|
+
off(): void;
|
|
95
|
+
/**
|
|
96
|
+
* 停止作用域
|
|
97
|
+
*
|
|
98
|
+
* 停止当前作用域及其所有子作用域和效果,并执行清理函数
|
|
99
|
+
* @param fromParent 是否由父作用域调用
|
|
100
|
+
*/
|
|
101
|
+
stop(fromParent?: boolean): void;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* 创建效果作用域对象
|
|
105
|
+
*
|
|
106
|
+
* 可以捕获在其中创建的响应式效果(即计算属性和观察者),以便这些效果可以一起处理。
|
|
107
|
+
*
|
|
108
|
+
* @param detached 是否创建分离的作用域
|
|
109
|
+
* @see {@link https://vuejs.org/api/reactivity-advanced.html#effectscope}
|
|
110
|
+
*/
|
|
111
|
+
export declare function effectScope(detached?: boolean): EffectScope;
|
|
112
|
+
/**
|
|
113
|
+
* 获取当前活动的效果作用域
|
|
114
|
+
*
|
|
115
|
+
* @returns 当前活动的效果作用域,如果没有则返回 undefined
|
|
116
|
+
* @see {@link https://vuejs.org/api/reactivity-advanced.html#getcurrentscope}
|
|
117
|
+
*/
|
|
118
|
+
export declare function getCurrentScope(): EffectScope | undefined;
|
|
119
|
+
/**
|
|
120
|
+
* 在当前活动的效果作用域上注册清理回调
|
|
121
|
+
*
|
|
122
|
+
* 当关联的效果作用域停止时,将调用此回调函数。
|
|
123
|
+
*
|
|
124
|
+
* @param fn 要附加到作用域清理的回调函数
|
|
125
|
+
* @param failSilently 是否静默失败
|
|
126
|
+
* @see {@link https://vuejs.org/api/reactivity-advanced.html#onscopedispose}
|
|
127
|
+
*/
|
|
128
|
+
export declare function onScopeDispose(fn: () => void, failSilently?: boolean): void;
|
|
129
|
+
//# sourceMappingURL=effectScope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effectScope.d.ts","sourceRoot":"","sources":["../src/effectScope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,UAAU,CAAC;AAGzD;;GAEG;AACH,eAAO,IAAI,iBAAiB,EAAE,WAAW,GAAG,SAAS,CAAC;AAEtD;;;;GAIG;AACH,qBAAa,WAAW;IAgDD,QAAQ;IA9C3B;;;OAGG;IACH,OAAO,CAAC,OAAO,CAAQ;IACvB;;;OAGG;IACH,OAAO,CAAC,GAAG,CAAK;IAChB;;;OAGG;IACH,OAAO,EAAE,cAAc,EAAE,CAAM;IAC/B;;;OAGG;IACH,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAM;IAE9B;;OAEG;IACH,OAAO,CAAC,SAAS,CAAS;IAE1B;;;OAGG;IACH,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IAChC;;;OAGG;IACH,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;IAClC;;;OAGG;IACH,OAAO,CAAC,KAAK,CAAqB;IAElC;;;OAGG;gBACgB,QAAQ,UAAQ;IAYnC;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAGpB;IAED;;;;OAIG;IACH,KAAK,IAAI,IAAI;IAqBb;;;;OAIG;IACH,MAAM,IAAI,IAAI;IAwBd;;;;OAIG;IACH,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS;IAuBlC;;OAEG;IACH,SAAS,EAAE,WAAW,GAAG,SAAS,CAAC;IACnC;;;;OAIG;IACH,EAAE,IAAI,IAAI;IASV;;;;OAIG;IACH,GAAG,IAAI,IAAI;IASX;;;;;OAKG;IACH,IAAI,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI;CA2CnC;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,WAAW,CAG3D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,WAAW,GAAG,SAAS,CAGzD;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,YAAY,UAAQ,GAAG,IAAI,CAazE"}
|