898bab4d-e4fd-4d02-8de7-aea3ee47c481.js
3.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
"use strict";
cc._RF.push(module, '898batN5P1NAo3nrqPuR8SB', 'PresenterBase');
// script/common/classbase/PresenterBase.ts
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Presenter = exports.Subpresenter = exports.createPresenter = exports.setSubpresenterwFactory = exports.setPresenterViewFactory = void 0;
const ViewBase_1 = require("./ViewBase");
const simba_eventkit_1 = require("simba-eventkit");
let presenterViewFactory;
function setPresenterViewFactory(factory) {
presenterViewFactory = factory;
}
exports.setPresenterViewFactory = setPresenterViewFactory;
let subpresenterFactory;
function setSubpresenterwFactory(factory) {
subpresenterFactory = factory;
}
exports.setSubpresenterwFactory = setSubpresenterwFactory;
let currentCreatingPresenter;
/**
* 加载预制与Presenter
* @param presenterCls
* @returns
*/
async function createPresenter(presenterCls) {
await presenterViewFactory.preloadView(presenterCls);
if (currentCreatingPresenter) {
console.warn("create presenter simultaneously will cause sub presenters error!");
}
let presenter = currentCreatingPresenter = new presenterCls;
let view = await presenterViewFactory(presenterCls);
presenter.attachView(view);
currentCreatingPresenter = undefined;
return presenter;
}
exports.createPresenter = createPresenter;
ViewBase_1.OnSubviewCreated.on((subview) => {
if (!currentCreatingPresenter) {
return;
}
let presenter = subpresenterFactory(subview);
presenter.owner = currentCreatingPresenter;
currentCreatingPresenter._subpresenters.push(presenter);
});
class PresenterBase {
onShow() {
}
onHide() {
}
}
class Subpresenter extends PresenterBase {
get view() { return this._view; }
attachView(view) {
this._view = view;
}
onOpen() {
this._disposable = new simba_eventkit_1.CompositeDisposable;
this._disposable.add(this._view.onShow.on(() => this.onShow()));
this._disposable.add(this._view.onHide.on(() => this.onHide()));
}
onClose() {
this._disposable.dispose();
}
onOwnerShow() {
}
onOwnerHide() {
}
onOwnerEnterForeground() {
}
onOwnerEnterBackground() {
}
}
exports.Subpresenter = Subpresenter;
class Presenter extends PresenterBase {
constructor() {
super(...arguments);
this._isInBackground = false;
this._subpresenters = [];
this.open = (parent, props) => {
this._view.open(parent);
this.onOpen(props);
};
}
get view() { return this._view; }
attachView(view) {
this._view = view;
}
onOpen(props) {
this._disposable = new simba_eventkit_1.CompositeDisposable;
this._disposable.add(this._view.onClose.on(() => this.onClose()));
this._disposable.add(this._view.onShow.on(() => this.onShow()));
this._disposable.add(this._view.onHide.on(() => this.onHide()));
this._subpresenters.forEach((p) => {
p.onOpen();
});
if (CC_DEV) {
globalThis[`${this._view['node']['name']}`] = this;
}
}
onClose() {
this._disposable.dispose();
this._subpresenters.forEach((p) => {
p.onClose();
});
}
onShow() {
this._subpresenters.forEach((p) => {
p.onOwnerShow();
});
}
onHide() {
this._subpresenters.forEach((p) => {
p.onOwnerHide();
});
}
/**presenter进入前景 */
onEnterForeground() {
this._isInBackground = false;
this._subpresenters.forEach((p) => {
p.onOwnerEnterForeground();
});
}
onEnterBackground() {
this._isInBackground = true;
this._subpresenters.forEach((p) => {
p.onOwnerEnterBackground();
});
}
}
exports.Presenter = Presenter;
cc._RF.pop();