@ives_xxz/framework 1.2.3 → 1.2.4
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/FW.d.ts +1 -1
- package/manager/FWLayerManager.ts +27 -16
- package/package.json +1 -1
package/FW.d.ts
CHANGED
|
@@ -34,6 +34,10 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
34
34
|
* 当前已经打开的layer缓存容器
|
|
35
35
|
*/
|
|
36
36
|
private layerMap: Map<string, FWLayerData>;
|
|
37
|
+
/**
|
|
38
|
+
* 当前所有打开Layer注册表
|
|
39
|
+
*/
|
|
40
|
+
private layerRegistry: Set<new () => FW.LayerController>;
|
|
37
41
|
/**
|
|
38
42
|
* layer栈队列
|
|
39
43
|
*/
|
|
@@ -42,6 +46,7 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
42
46
|
public initialize(): void {
|
|
43
47
|
this.layerQueue = new FWQueue<FWLayerData>();
|
|
44
48
|
this.layerMap = new Map<string, FWLayerData>();
|
|
49
|
+
this.layerRegistry = new Set<new () => FW.LayerController>();
|
|
45
50
|
this.layerStack = [];
|
|
46
51
|
}
|
|
47
52
|
|
|
@@ -118,19 +123,22 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
118
123
|
|
|
119
124
|
let ctr = new data.type();
|
|
120
125
|
|
|
121
|
-
if (!ctr.isRepeatOpen) {
|
|
122
|
-
for (const [key, value] of this.layerMap) {
|
|
123
|
-
if (value.layerAssetProperty.path == ctr.layerAssetProperty.path) {
|
|
124
|
-
return this.layerMap.get(value.uuid).controller as Ctr;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
126
|
if (ctr.layerType == FWSystemDefine.FWLayerType.POPUP_QUEUE && !this.layerQueue.isEmpty()) {
|
|
130
127
|
this.layerQueue.add(ctr.layerData);
|
|
131
128
|
return;
|
|
132
129
|
}
|
|
133
130
|
|
|
131
|
+
/** 如果不是重复打开的Layer,不是需要添加进队列末尾的,并且已经存在于注册表中的 不进行重复打开 */
|
|
132
|
+
if (
|
|
133
|
+
this.layerRegistry.has(data.type) &&
|
|
134
|
+
!ctr.isRepeatOpen &&
|
|
135
|
+
ctr.layerType != FWSystemDefine.FWLayerType.POPUP_QUEUE
|
|
136
|
+
) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
this.layerRegistry.add(data.type);
|
|
141
|
+
|
|
134
142
|
ctr.initialize();
|
|
135
143
|
|
|
136
144
|
const layerData = this.createLayerData(ctr);
|
|
@@ -165,6 +173,8 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
165
173
|
this.layerStack.push(layerData);
|
|
166
174
|
}
|
|
167
175
|
|
|
176
|
+
this.layerRegistry.delete(data.type);
|
|
177
|
+
|
|
168
178
|
const proxy = new Proxy(ctr, {
|
|
169
179
|
get: (target, prop) => {
|
|
170
180
|
if (prop === ADD_EXTERNAL_REFERENCE) {
|
|
@@ -190,19 +200,20 @@ export class FWLayerManager extends FWManager implements FW.LayerManager {
|
|
|
190
200
|
}
|
|
191
201
|
let ctr = new data.type();
|
|
192
202
|
|
|
193
|
-
if (!ctr.isRepeatOpen) {
|
|
194
|
-
for (const [key, value] of this.layerMap) {
|
|
195
|
-
if (value.layerAssetProperty.path == ctr.layerAssetProperty.path) {
|
|
196
|
-
return this.layerMap.get(value.uuid).controller as Ctr;
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
|
|
201
203
|
if (ctr.layerType == FWSystemDefine.FWLayerType.POPUP_QUEUE && !this.layerQueue.isEmpty()) {
|
|
202
204
|
this.layerQueue.add(ctr.layerData);
|
|
203
205
|
return;
|
|
204
206
|
}
|
|
205
207
|
|
|
208
|
+
/** 如果不是重复打开的Layer,不是需要添加进队列末尾的,并且已经存在于注册表中的 不进行重复打开 */
|
|
209
|
+
if (
|
|
210
|
+
this.layerRegistry.has(data.type) &&
|
|
211
|
+
!ctr.isRepeatOpen &&
|
|
212
|
+
ctr.layerType != FWSystemDefine.FWLayerType.POPUP_QUEUE
|
|
213
|
+
) {
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
|
|
206
217
|
ctr.initialize();
|
|
207
218
|
|
|
208
219
|
const layerData = this.createLayerData(ctr);
|