898bab4d-e4fd-4d02-8de7-aea3ee47c481.js
3.66 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
"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;
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();
});
}
onClose() {
this._disposable.dispose();
this._subpresenters.forEach((p) => {
p.onClose();
});
}
onShow() {
this._subpresenters.forEach((p) => {
p.onOwnerShow();
});
}
onHide() {
this._subpresenters.forEach((p) => {
p.onOwnerHide();
});
}
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();