@lynker-desktop/electron-window-manager 0.0.4-alpha.7 → 0.0.4-alpha.70
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/common/index.d.ts +27 -3
- package/common/index.d.ts.map +1 -1
- package/esm/common/index.d.ts +27 -3
- package/esm/common/index.d.ts.map +1 -1
- package/esm/main/index.d.ts +13 -11
- package/esm/main/index.d.ts.map +1 -1
- package/esm/main/index.js +310 -91
- package/esm/main/index.js.map +1 -1
- package/esm/renderer/index.d.ts +33 -9
- package/esm/renderer/index.d.ts.map +1 -1
- package/esm/renderer/index.js +90 -28
- package/esm/renderer/index.js.map +1 -1
- package/main/index.d.ts +13 -11
- package/main/index.d.ts.map +1 -1
- package/main/index.js +308 -88
- package/main/index.js.map +1 -1
- package/package.json +2 -2
- package/renderer/index.d.ts +33 -9
- package/renderer/index.d.ts.map +1 -1
- package/renderer/index.js +92 -29
- package/renderer/index.js.map +1 -1
package/main/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const
|
|
1
|
+
const lodash = require('lodash');
|
|
2
2
|
const electron = require('electron');
|
|
3
3
|
const remote = require('@electron/remote/main');
|
|
4
4
|
const eIpc = require('@lynker-desktop/electron-ipc/main');
|
|
@@ -16,6 +16,18 @@ function _interopNamespaceDefault(e) {
|
|
|
16
16
|
|
|
17
17
|
const remote__namespace = /*#__PURE__*/_interopNamespaceDefault(remote);
|
|
18
18
|
|
|
19
|
+
const getCustomSession = (() => {
|
|
20
|
+
let customSession;
|
|
21
|
+
return () => {
|
|
22
|
+
if (!customSession) {
|
|
23
|
+
customSession = electron.session.fromPartition('persist:__global_main_session__');
|
|
24
|
+
}
|
|
25
|
+
return customSession;
|
|
26
|
+
};
|
|
27
|
+
})();
|
|
28
|
+
electron.app.on('ready', () => {
|
|
29
|
+
getCustomSession();
|
|
30
|
+
});
|
|
19
31
|
if (!remote__namespace.isInitialized()) {
|
|
20
32
|
remote__namespace.initialize();
|
|
21
33
|
}
|
|
@@ -23,50 +35,150 @@ const enable = (win) => {
|
|
|
23
35
|
remote__namespace.enable(win);
|
|
24
36
|
};
|
|
25
37
|
class WindowsManager {
|
|
26
|
-
constructor(preload) {
|
|
38
|
+
constructor(preload, loadingViewUrl, errorViewUrl) {
|
|
27
39
|
this.preload = preload;
|
|
28
40
|
this.windows = new Map();
|
|
41
|
+
this.loadingViewUrl = `${loadingViewUrl ?? ''}`;
|
|
42
|
+
this.errorViewUrl = `${errorViewUrl ?? ''}`;
|
|
29
43
|
}
|
|
30
44
|
create(options) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
nativeWindowOpen: false,
|
|
41
|
-
webSecurity: false,
|
|
42
|
-
preload: browserWindowOptions?.webPreferences?.preload || this.preload,
|
|
45
|
+
let window;
|
|
46
|
+
try {
|
|
47
|
+
const { type = 'BW', name = 'anonymous', url, loadingView = { url: undefined }, errorView = { url: undefined }, browserWindow: browserWindowOptions, openDevTools = false, preventOriginClose = false, } = options;
|
|
48
|
+
options.type = type;
|
|
49
|
+
try {
|
|
50
|
+
loadingView.url = `${loadingView?.url ?? this.loadingViewUrl}`;
|
|
51
|
+
lodash.merge(options, {
|
|
52
|
+
loadingView,
|
|
53
|
+
});
|
|
43
54
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
window._name = name;
|
|
47
|
-
if (loadingView?.url) {
|
|
48
|
-
this._setLoadingView(window, options);
|
|
49
|
-
}
|
|
50
|
-
window.on('close', (event) => {
|
|
51
|
-
if (preventOriginClose) {
|
|
52
|
-
event.preventDefault();
|
|
53
|
-
return;
|
|
55
|
+
catch (error) {
|
|
56
|
+
log('error', 'loadingView error:', loadingView, this.loadingViewUrl);
|
|
54
57
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
try {
|
|
59
|
+
errorView.url = `${errorView?.url ?? this.errorViewUrl}`;
|
|
60
|
+
lodash.merge(options, {
|
|
61
|
+
errorView,
|
|
62
|
+
});
|
|
60
63
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
64
|
+
catch (error) {
|
|
65
|
+
log('error', 'errorView error:', errorView, this.errorViewUrl);
|
|
66
|
+
}
|
|
67
|
+
let parentWin = undefined;
|
|
68
|
+
if (typeof browserWindowOptions?.parent === 'number') {
|
|
69
|
+
parentWin = electron.BrowserWindow.fromId(browserWindowOptions?.parent) || undefined;
|
|
70
|
+
if (parentWin) {
|
|
71
|
+
browserWindowOptions.parent = parentWin;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
browserWindowOptions.parent = undefined;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
log('log', 'create 1: ', options);
|
|
78
|
+
log('log', 'create 2: ', `parentWin: ${parentWin?.id}`);
|
|
79
|
+
window = type === 'BV' ?
|
|
80
|
+
new electron.BrowserView(lodash.merge((browserWindowOptions || {}), {
|
|
81
|
+
parent: undefined,
|
|
82
|
+
webPreferences: {
|
|
83
|
+
// session: getCustomSession(),
|
|
84
|
+
plugins: true,
|
|
85
|
+
nodeIntegration: true,
|
|
86
|
+
contextIsolation: false,
|
|
87
|
+
backgroundThrottling: false,
|
|
88
|
+
nativeWindowOpen: false,
|
|
89
|
+
webSecurity: false,
|
|
90
|
+
preload: browserWindowOptions?.webPreferences?.preload || this.preload,
|
|
91
|
+
}
|
|
92
|
+
}))
|
|
93
|
+
: new electron.BrowserWindow(lodash.merge({
|
|
94
|
+
acceptFirstMouse: true,
|
|
95
|
+
}, (browserWindowOptions || {}), {
|
|
96
|
+
parent: parentWin,
|
|
97
|
+
webPreferences: {
|
|
98
|
+
// session: getCustomSession(),
|
|
99
|
+
plugins: true,
|
|
100
|
+
nodeIntegration: true,
|
|
101
|
+
contextIsolation: false,
|
|
102
|
+
backgroundThrottling: false,
|
|
103
|
+
nativeWindowOpen: false,
|
|
104
|
+
webSecurity: false,
|
|
105
|
+
preload: browserWindowOptions?.webPreferences?.preload || this.preload,
|
|
106
|
+
}
|
|
107
|
+
}));
|
|
108
|
+
try {
|
|
109
|
+
remote__namespace.enable(window.webContents);
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
log('error', 'enable: ', error);
|
|
113
|
+
}
|
|
114
|
+
// @ts-ignore
|
|
115
|
+
try {
|
|
116
|
+
window.id = window.id || window.webContents.id;
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
log('error', 'set id: ', error);
|
|
120
|
+
}
|
|
121
|
+
window._type = type;
|
|
122
|
+
window._name = name;
|
|
123
|
+
window._extraData = `${options?.extraData || ''}`;
|
|
124
|
+
log('log', 'create 5: ', window.id, window._name);
|
|
125
|
+
if (loadingView?.url) {
|
|
126
|
+
if (type === 'BW') {
|
|
127
|
+
// @ts-ignore
|
|
128
|
+
this._setLoadingView(window, options);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (errorView?.url) {
|
|
132
|
+
const showErrorView = lodash.debounce(() => {
|
|
133
|
+
const _url = window.webContents.getURL() || url;
|
|
134
|
+
if (_url) {
|
|
135
|
+
// @ts-ignore
|
|
136
|
+
window.loadURL ? window.loadURL(`${errorView?.url}`) : window.webContents.loadURL(`${errorView?.url}`);
|
|
137
|
+
window.webContents.executeJavaScript(`window['__ELECTRON_WINDOW_MANAGER_DID_FAIL_LOAD_URL__'] = "${_url}"`);
|
|
138
|
+
}
|
|
139
|
+
}, 300);
|
|
140
|
+
window.webContents.on('did-fail-load', () => {
|
|
141
|
+
showErrorView();
|
|
142
|
+
});
|
|
143
|
+
window.webContents.on('did-start-loading', () => {
|
|
144
|
+
showErrorView.cancel();
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
window.webContents.on('close', () => {
|
|
148
|
+
this.windows.set(window.id, null);
|
|
149
|
+
this.windows.delete(window.id);
|
|
150
|
+
});
|
|
151
|
+
window.webContents.on('destroyed', () => {
|
|
152
|
+
this.windows.set(window.id, null);
|
|
153
|
+
this.windows.delete(window.id);
|
|
154
|
+
});
|
|
155
|
+
window.webContents.on('dom-ready', () => {
|
|
156
|
+
if (openDevTools) {
|
|
157
|
+
window.webContents.openDevTools();
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
if (type === 'BW') {
|
|
161
|
+
// @ts-ignore
|
|
162
|
+
window.on('closed', () => {
|
|
163
|
+
log('log', 'closed', window.id, window._name);
|
|
164
|
+
this.windows.set(window.id, null);
|
|
165
|
+
this.windows.delete(window.id);
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
if (type === 'BV') {
|
|
169
|
+
parentWin?.addBrowserView(window);
|
|
170
|
+
log('log', 'create - addBrowserView', parentWin, window);
|
|
171
|
+
}
|
|
172
|
+
// @ts-ignore
|
|
173
|
+
window.loadURL ? window.loadURL(options.url) : window.webContents.loadURL(options.url);
|
|
174
|
+
// @ts-ignore
|
|
175
|
+
window.focus ? window.focus() : window.webContents.focus();
|
|
176
|
+
this.windows.set(window.id || window.webContents.id, window);
|
|
177
|
+
log('log', 'create', this.windows.keys());
|
|
65
178
|
}
|
|
66
|
-
|
|
67
|
-
|
|
179
|
+
catch (error) {
|
|
180
|
+
log('error', 'create', error);
|
|
68
181
|
}
|
|
69
|
-
window.focus();
|
|
70
182
|
return window;
|
|
71
183
|
}
|
|
72
184
|
_setLoadingView(window, createOptions) {
|
|
@@ -74,6 +186,7 @@ class WindowsManager {
|
|
|
74
186
|
const { loadingView, preventOriginNavigate = false, } = createOptions;
|
|
75
187
|
let _loadingView = new electron.BrowserView({
|
|
76
188
|
webPreferences: {
|
|
189
|
+
// session: getCustomSession(),
|
|
77
190
|
contextIsolation: false,
|
|
78
191
|
nodeIntegration: true,
|
|
79
192
|
// 允许loadURL与文件路径在开发环境
|
|
@@ -92,9 +205,10 @@ class WindowsManager {
|
|
|
92
205
|
width: viewWidth || 10,
|
|
93
206
|
height: viewHeight || 10,
|
|
94
207
|
});
|
|
208
|
+
log('log', 'loadLoadingView', window._name, loadingView);
|
|
95
209
|
_loadingView.webContents.loadURL(loadingView?.url || '');
|
|
96
210
|
};
|
|
97
|
-
const onFailure = () => {
|
|
211
|
+
const onFailure = lodash.debounce(() => {
|
|
98
212
|
if (_loadingView.webContents && !_loadingView.webContents.isDestroyed()) {
|
|
99
213
|
_loadingView.webContents.close();
|
|
100
214
|
}
|
|
@@ -104,9 +218,9 @@ class WindowsManager {
|
|
|
104
218
|
if (window) {
|
|
105
219
|
window.removeBrowserView(_loadingView);
|
|
106
220
|
}
|
|
107
|
-
};
|
|
221
|
+
}, 300);
|
|
108
222
|
loadLoadingView();
|
|
109
|
-
window.on('resize',
|
|
223
|
+
window.on('resize', lodash.debounce(() => {
|
|
110
224
|
if (_loadingView.webContents && !_loadingView.webContents.isDestroyed()) {
|
|
111
225
|
if (window.isDestroyed()) {
|
|
112
226
|
return;
|
|
@@ -136,61 +250,123 @@ class WindowsManager {
|
|
|
136
250
|
window.webContents.on('crashed', onFailure);
|
|
137
251
|
window.webContents.on('unresponsive', onFailure);
|
|
138
252
|
window.webContents.on('did-fail-load', onFailure);
|
|
253
|
+
window.webContents.on('did-finish-load', onFailure);
|
|
254
|
+
window.webContents.on('did-stop-loading', onFailure);
|
|
139
255
|
}
|
|
140
256
|
}
|
|
141
|
-
get(
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
257
|
+
get(idOrName) {
|
|
258
|
+
log('log', 'get', idOrName);
|
|
259
|
+
let win;
|
|
260
|
+
this.windows.forEach((i, key) => {
|
|
261
|
+
try {
|
|
262
|
+
if (!(i && i?.webContents?.isDestroyed && !i?.webContents?.isDestroyed?.())) {
|
|
263
|
+
this.windows.set(key, null);
|
|
264
|
+
this.windows.delete(key);
|
|
265
|
+
i = null;
|
|
266
|
+
}
|
|
146
267
|
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
268
|
+
catch (error) {
|
|
269
|
+
log('error', 'get');
|
|
270
|
+
}
|
|
271
|
+
if (typeof idOrName === 'number') {
|
|
272
|
+
if (i?.id === idOrName) {
|
|
273
|
+
win = i;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
else if (typeof idOrName === 'string') {
|
|
277
|
+
if (i?._name === idOrName) {
|
|
278
|
+
win = i;
|
|
279
|
+
}
|
|
155
280
|
}
|
|
156
281
|
});
|
|
157
|
-
|
|
282
|
+
// @ts-ignore
|
|
283
|
+
if (win && win?.webContents?.isDestroyed && !win?.webContents?.isDestroyed?.()) {
|
|
284
|
+
return win;
|
|
285
|
+
}
|
|
286
|
+
return undefined;
|
|
158
287
|
}
|
|
159
288
|
getAll() {
|
|
289
|
+
log('log', 'getAll');
|
|
290
|
+
this.windows.forEach((win, key) => {
|
|
291
|
+
log('log', 'getAll', key, win, win?.webContents?.isDestroyed, win?.webContents?.isDestroyed?.());
|
|
292
|
+
if (!(win && win?.webContents?.isDestroyed && !win?.webContents?.isDestroyed?.())) {
|
|
293
|
+
this.windows.set(key, null);
|
|
294
|
+
this.windows.delete(key);
|
|
295
|
+
}
|
|
296
|
+
});
|
|
160
297
|
return this.windows;
|
|
161
298
|
}
|
|
162
|
-
close(
|
|
299
|
+
close(idOrName) {
|
|
300
|
+
log('log', 'close', idOrName);
|
|
163
301
|
let win = undefined;
|
|
164
302
|
this.windows.forEach((i) => {
|
|
165
|
-
if (
|
|
166
|
-
|
|
303
|
+
if (typeof idOrName === 'number') {
|
|
304
|
+
if (i?.id === idOrName) {
|
|
305
|
+
win = i;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
else if (typeof idOrName === 'string') {
|
|
309
|
+
if (i?._name === idOrName) {
|
|
310
|
+
win = i;
|
|
311
|
+
}
|
|
167
312
|
}
|
|
168
313
|
});
|
|
169
314
|
// @ts-ignore
|
|
170
315
|
win && this.windows.delete(win?.id);
|
|
171
316
|
// @ts-ignore
|
|
172
|
-
|
|
317
|
+
if (win) {
|
|
318
|
+
// @ts-ignore
|
|
319
|
+
if (win._type === 'BV') {
|
|
320
|
+
this.windows.forEach(i => {
|
|
321
|
+
if (i?._type === 'BW') {
|
|
322
|
+
const _win = i;
|
|
323
|
+
_win.removeBrowserView(win);
|
|
324
|
+
}
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
// @ts-ignore
|
|
328
|
+
win?.webContent?.close?.();
|
|
329
|
+
// @ts-ignore
|
|
330
|
+
win?.close?.();
|
|
331
|
+
// @ts-ignore
|
|
332
|
+
win?.destroy?.();
|
|
333
|
+
}
|
|
334
|
+
return true;
|
|
173
335
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
this.windows.forEach((
|
|
177
|
-
|
|
178
|
-
win
|
|
336
|
+
closeAll() {
|
|
337
|
+
log('log', 'closeAll');
|
|
338
|
+
this.windows.forEach((win) => {
|
|
339
|
+
try {
|
|
340
|
+
win && this.windows.delete(win?.id);
|
|
341
|
+
// @ts-ignore
|
|
342
|
+
if (win._type === 'BV') {
|
|
343
|
+
this.windows.forEach(i => {
|
|
344
|
+
if (i?._type === 'BW') {
|
|
345
|
+
const _win = i;
|
|
346
|
+
_win.removeBrowserView(win);
|
|
347
|
+
}
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
// @ts-ignore
|
|
351
|
+
win?.webContent?.close?.();
|
|
352
|
+
// @ts-ignore
|
|
353
|
+
win?.close?.();
|
|
354
|
+
// @ts-ignore
|
|
355
|
+
win?.destroy?.();
|
|
356
|
+
}
|
|
357
|
+
catch (error) {
|
|
179
358
|
}
|
|
180
359
|
});
|
|
181
|
-
// @ts-ignore
|
|
182
|
-
win && this.windows.delete(win?.id);
|
|
183
|
-
// @ts-ignore
|
|
184
|
-
return win && win?.destroy();
|
|
185
360
|
}
|
|
186
361
|
getPreload() {
|
|
362
|
+
log('log', 'getPreload');
|
|
187
363
|
return this.preload;
|
|
188
364
|
}
|
|
189
365
|
}
|
|
190
366
|
// @ts-ignore
|
|
191
367
|
global['__ELECTRON_WINDOWS_MANAGER__'] = undefined;
|
|
192
368
|
exports.isInitialized = false;
|
|
193
|
-
const initialize = (preload) => {
|
|
369
|
+
const initialize = (preload, loadingViewUrl, errorViewUrl) => {
|
|
194
370
|
// @ts-ignore
|
|
195
371
|
if (exports.isInitialized && global['__ELECTRON_WINDOWS_MANAGER__']) {
|
|
196
372
|
// @ts-ignore
|
|
@@ -198,38 +374,45 @@ const initialize = (preload) => {
|
|
|
198
374
|
}
|
|
199
375
|
exports.isInitialized = true;
|
|
200
376
|
// @ts-ignore
|
|
201
|
-
const wm = global['__ELECTRON_WINDOWS_MANAGER__'] = new WindowsManager(preload);
|
|
377
|
+
const wm = global['__ELECTRON_WINDOWS_MANAGER__'] = new WindowsManager(preload, loadingViewUrl, errorViewUrl);
|
|
202
378
|
eIpc.mainIPC.handleRenderer('__ELECTRON_WINDOW_MANAGER_IPC_CHANNEL__', async (data) => {
|
|
203
379
|
if (data?.type === 'create') {
|
|
204
380
|
const opt = data;
|
|
205
381
|
const findWin = wm.get(opt.data.name);
|
|
206
382
|
if (findWin) {
|
|
207
|
-
|
|
383
|
+
// @ts-ignore
|
|
384
|
+
findWin?.focus?.();
|
|
385
|
+
findWin?.webContents.focus?.();
|
|
386
|
+
if (opt.data.url && findWin.webContents.getURL() !== opt.data.url) {
|
|
387
|
+
findWin.webContents.loadURL(opt.data.url);
|
|
388
|
+
/** fix: url hash 无法正常加载 */
|
|
389
|
+
setTimeout(() => {
|
|
390
|
+
findWin.webContents.reload();
|
|
391
|
+
}, 100);
|
|
392
|
+
}
|
|
208
393
|
return {
|
|
209
|
-
winId: findWin?.id,
|
|
210
|
-
winName: findWin?._name
|
|
394
|
+
winId: Number(`${findWin?.id || -1}`),
|
|
395
|
+
winName: `${findWin?._name || ''}`,
|
|
396
|
+
winType: `${findWin?._type || ''}`,
|
|
397
|
+
winExtraData: `${findWin?._extraData || ''}`,
|
|
211
398
|
};
|
|
212
399
|
}
|
|
213
400
|
const res = wm.create(opt.data);
|
|
214
401
|
return {
|
|
215
|
-
winId: Number(res.id),
|
|
216
|
-
winName: res
|
|
402
|
+
winId: Number(`${res.id || -1}`),
|
|
403
|
+
winName: `${res?._name || ''}`,
|
|
404
|
+
winType: `${res?._type || ''}`,
|
|
405
|
+
winExtraData: `${res?._extraData || ''}`,
|
|
217
406
|
};
|
|
218
407
|
}
|
|
219
408
|
if (data?.type === 'get') {
|
|
220
409
|
const opt = data;
|
|
221
410
|
const res = wm.get(opt?.data);
|
|
222
411
|
return {
|
|
223
|
-
winId:
|
|
224
|
-
winName: res?._name
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
if (data?.type === 'getById') {
|
|
228
|
-
const opt = data;
|
|
229
|
-
const res = wm.getById(opt?.data);
|
|
230
|
-
return {
|
|
231
|
-
winId: res?.id ? Number(res?.id) : -1,
|
|
232
|
-
winName: res?._name ? res?._name : '',
|
|
412
|
+
winId: Number(`${res?.id || -1}`),
|
|
413
|
+
winName: `${res?._name || ''}`,
|
|
414
|
+
winType: `${res?._type || ''}`,
|
|
415
|
+
winExtraData: `${res?._extraData || ''}`,
|
|
233
416
|
};
|
|
234
417
|
}
|
|
235
418
|
if (data?.type === 'getAll') {
|
|
@@ -238,8 +421,10 @@ const initialize = (preload) => {
|
|
|
238
421
|
res.forEach(i => {
|
|
239
422
|
// @ts-ignore
|
|
240
423
|
obj[i.id] = {
|
|
241
|
-
winId:
|
|
242
|
-
winName: i?._name
|
|
424
|
+
winId: Number(`${i?.id || -1}`),
|
|
425
|
+
winName: `${i?._name || ''}`,
|
|
426
|
+
winType: `${i?._type || ''}`,
|
|
427
|
+
winExtraData: `${i?._extraData || ''}`,
|
|
243
428
|
};
|
|
244
429
|
});
|
|
245
430
|
return obj;
|
|
@@ -249,11 +434,36 @@ const initialize = (preload) => {
|
|
|
249
434
|
const res = wm.close(opt?.data);
|
|
250
435
|
return res;
|
|
251
436
|
}
|
|
252
|
-
if (data?.type === '
|
|
253
|
-
const
|
|
254
|
-
const res = wm.closeById(opt?.data);
|
|
437
|
+
if (data?.type === 'closeAll') {
|
|
438
|
+
const res = wm.closeAll();
|
|
255
439
|
return res;
|
|
256
440
|
}
|
|
441
|
+
if (data?.type === 'getWindowForWebContentId') {
|
|
442
|
+
const opt = data;
|
|
443
|
+
const targetWebContents = electron.webContents.fromId(opt.data);
|
|
444
|
+
if (targetWebContents) {
|
|
445
|
+
let win = electron.BrowserWindow.fromWebContents(targetWebContents);
|
|
446
|
+
if (!win) {
|
|
447
|
+
// 获取所有的 BrowserWindows
|
|
448
|
+
let allWindows = electron.BrowserWindow.getAllWindows();
|
|
449
|
+
// 遍历所有窗口,检查每个窗口的 BrowserView
|
|
450
|
+
for (let _win of allWindows) {
|
|
451
|
+
let views = _win.getBrowserViews();
|
|
452
|
+
// 遍历窗口的所有 BrowserView
|
|
453
|
+
for (let view of views) {
|
|
454
|
+
if (view.webContents === targetWebContents) {
|
|
455
|
+
win = _win;
|
|
456
|
+
break;
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
if (win)
|
|
460
|
+
break;
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
return win?.id;
|
|
464
|
+
}
|
|
465
|
+
return undefined;
|
|
466
|
+
}
|
|
257
467
|
if (data?.type === 'getPreload') {
|
|
258
468
|
const res = wm.getPreload();
|
|
259
469
|
return res;
|
|
@@ -262,8 +472,18 @@ const initialize = (preload) => {
|
|
|
262
472
|
});
|
|
263
473
|
return wm;
|
|
264
474
|
};
|
|
475
|
+
const log = (type, ...data) => {
|
|
476
|
+
const key = `[electron-window-manager]: `;
|
|
477
|
+
try {
|
|
478
|
+
console[type](key, ...data);
|
|
479
|
+
}
|
|
480
|
+
catch (error) {
|
|
481
|
+
console.error(key, error);
|
|
482
|
+
}
|
|
483
|
+
};
|
|
265
484
|
|
|
266
485
|
exports.WindowsManager = WindowsManager;
|
|
267
486
|
exports.enable = enable;
|
|
487
|
+
exports.getCustomSession = getCustomSession;
|
|
268
488
|
exports.initialize = initialize;
|
|
269
489
|
//# sourceMappingURL=index.js.map
|
package/main/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/src/main/index.ts"],"sourcesContent":["import _ from 'lodash'\nimport { BrowserWindow, BrowserView, WebContents } from 'electron'\nimport * as remote from '@electron/remote/main'\nimport eIpc from '@lynker-desktop/electron-ipc/main'\nimport type { ElectronWindowsManagerOptions, WindowItem } from '../common';\n\nif (!remote.isInitialized()) {\n remote.initialize();\n}\n\nexport const enable = (win: WebContents) => {\n remote.enable(win)\n}\n\nexport class WindowsManager {\n preload?: string;\n windows: Map<number, WindowItem>;\n constructor(preload?: string) {\n this.preload = preload;\n this.windows = new Map();\n }\n\n create(options: ElectronWindowsManagerOptions) {\n const {\n name = 'anonymous',\n loadingView,\n browserWindow: browserWindowOptions = {},\n openDevTools = false,\n preventOriginClose = false,\n } = options;\n const window = new BrowserWindow(\n _.merge(\n {\n acceptFirstMouse: true,\n },\n browserWindowOptions,\n {\n webPreferences: {\n plugins: true,\n nodeIntegration: true,\n contextIsolation: false,\n backgroundThrottling: false,\n nativeWindowOpen: false,\n webSecurity: false,\n preload: browserWindowOptions?.webPreferences?.preload || this.preload,\n }\n },\n )\n ) as WindowItem;\n remote.enable(window.webContents);\n window._name = name;\n if (loadingView?.url) {\n this._setLoadingView(window, options);\n }\n window.on('close', (event) => {\n if (preventOriginClose) {\n event.preventDefault();\n return;\n }\n this.windows.delete(window.id)\n });\n window.webContents.on('dom-ready', () => {\n if (openDevTools) {\n window.webContents.openDevTools();\n }\n });\n this.windows.set(window.id, window);\n if (/^file/gi.test(options.url)) {\n window.loadFile(options.url)\n } else {\n window.loadURL(options.url)\n }\n window.focus();\n return window;\n }\n\n _setLoadingView(window: WindowItem, createOptions: ElectronWindowsManagerOptions) {\n if (createOptions) {\n const {\n loadingView,\n preventOriginNavigate = false,\n } = createOptions;\n let _loadingView = new BrowserView({\n webPreferences: {\n contextIsolation: false,\n nodeIntegration: true,\n // 允许loadURL与文件路径在开发环境\n webSecurity: false,\n }\n });\n\n if (window.isDestroyed()) {\n return;\n }\n\n const loadLoadingView = () => {\n const [ viewWidth, viewHeight ] = window.getSize();\n window.setBrowserView(_loadingView);\n _loadingView.setBounds({\n x: 0,\n y: 0,\n width: viewWidth || 10,\n height: viewHeight || 10,\n });\n _loadingView.webContents.loadURL(loadingView?.url || '');\n };\n\n const onFailure = () => {\n if (_loadingView.webContents && !_loadingView.webContents.isDestroyed()) {\n _loadingView.webContents.close();\n }\n if (window.isDestroyed()) {\n return;\n }\n\n if (window) {\n window.removeBrowserView(_loadingView);\n }\n };\n\n loadLoadingView();\n\n window.on('resize', _.debounce(() => {\n if (_loadingView.webContents && !_loadingView.webContents.isDestroyed()) {\n if (window.isDestroyed()) {\n return;\n }\n const [ viewWidth, viewHeight ] = window.getSize();\n _loadingView.setBounds({ x: 0, y: 0, width: viewWidth || 10, height: viewHeight || 10 });\n }\n }, 500));\n\n window.webContents.on('will-navigate', (e) => {\n if (preventOriginNavigate) {\n e.preventDefault();\n return;\n }\n if (window.isDestroyed()) {\n return;\n }\n if (_loadingView.webContents && !_loadingView.webContents.isDestroyed()) {\n window.setBrowserView(_loadingView);\n } else {\n // if loadingView has been destroyed\n _loadingView = new BrowserView();\n loadLoadingView();\n }\n });\n window.webContents.on('dom-ready', onFailure);\n window.webContents.on('crashed', onFailure);\n window.webContents.on('unresponsive', onFailure);\n window.webContents.on('did-fail-load', onFailure);\n }\n }\n\n get(name: string): WindowItem | undefined {\n let win: WindowItem | undefined = undefined;\n this.windows.forEach((i: WindowItem) => {\n if (i._name === name) {\n win = i;\n }\n })\n return win;\n }\n\n getById(id: number): WindowItem | undefined {\n let win: WindowItem | undefined = undefined;\n this.windows.forEach((i: WindowItem) => {\n if (i.id === id) {\n win = i;\n }\n })\n return win;\n }\n\n getAll(): Map<number, WindowItem> {\n return this.windows;\n }\n\n close(name: string) {\n let win: WindowItem | undefined = undefined;\n this.windows.forEach((i: WindowItem) => {\n if (i._name === name) {\n win = i;\n }\n })\n // @ts-ignore\n win && this.windows.delete(win?.id)\n // @ts-ignore\n return win && win?.destroy();\n }\n\n closeById(id: number) {\n let win: WindowItem | undefined = undefined;\n this.windows.forEach((i: WindowItem) => {\n if (i.id === id) {\n win = i;\n }\n })\n // @ts-ignore\n win && this.windows.delete(win?.id)\n // @ts-ignore\n return win && win?.destroy();\n }\n\n getPreload() {\n return this.preload;\n }\n}\n// @ts-ignore\nglobal['__ELECTRON_WINDOWS_MANAGER__'] = undefined;\n\nexport let isInitialized = false;\n\nexport const initialize = (preload?: string): WindowsManager => {\n // @ts-ignore\n if (isInitialized && global['__ELECTRON_WINDOWS_MANAGER__']) {\n // @ts-ignore\n return global['__ELECTRON_WINDOWS_MANAGER__'];\n }\n isInitialized = true;\n // @ts-ignore\n const wm = global['__ELECTRON_WINDOWS_MANAGER__'] = new WindowsManager(preload)\n eIpc.mainIPC.handleRenderer('__ELECTRON_WINDOW_MANAGER_IPC_CHANNEL__', async (data: any) => {\n if (data?.type === 'create') {\n const opt = data as {\n type: 'create';\n data: ElectronWindowsManagerOptions\n };\n const findWin = wm.get(opt.data.name);\n if (findWin) {\n findWin.focus();\n return {\n winId: findWin?.id,\n winName: findWin?._name,\n };\n }\n const res = wm.create(opt.data)\n return {\n winId: Number(res.id),\n winName: res._name,\n };\n }\n if (data?.type === 'get') {\n const opt = data as {\n type: 'get';\n data: string;\n };\n const res = wm.get(opt?.data)\n return {\n winId: res?.id ? Number(res?.id) : -1,\n winName: res?._name ? res?._name : '',\n };\n }\n\n if (data?.type === 'getById') {\n const opt = data as {\n type: 'get';\n data: number;\n };\n const res = wm.getById(opt?.data)\n return {\n winId: res?.id ? Number(res?.id) : -1,\n winName: res?._name ? res?._name : '',\n };\n }\n\n if (data?.type === 'getAll') {\n const opt = data as {\n type: 'getAll';\n data: any;\n };\n const res = wm.getAll()\n const obj = {}\n res.forEach(i => {\n // @ts-ignore\n obj[i.id] = {\n winId: i?.id ? Number(i?.id) : -1,\n winName: i?._name ? i?._name : '',\n }\n })\n return obj;\n }\n\n if (data?.type === 'close') {\n const opt = data as {\n type: 'close';\n data: string;\n };\n const res = wm.close(opt?.data)\n return res;\n }\n\n if (data?.type === 'closeById') {\n const opt = data as {\n type: 'closeById';\n data: number;\n };\n const res = wm.closeById(opt?.data)\n return res;\n }\n\n if (data?.type === 'getPreload') {\n const opt = data as {\n type: 'getPreload';\n data: number;\n };\n const res = wm.getPreload()\n return res;\n }\n\n return undefined\n })\n return wm;\n}\n"],"names":["remote","BrowserWindow","BrowserView","isInitialized"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/src/main/index.ts"],"sourcesContent":["import lodash from 'lodash'\nimport { app, BrowserWindow, BrowserView, WebContents, BrowserWindowConstructorOptions, session, Session, webContents } from 'electron'\nimport * as remote from '@electron/remote/main'\nimport eIpc from '@lynker-desktop/electron-ipc/main'\nimport type { ElectronWindowsManagerOptions, BWItem, BVItem } from '../common';\n\nexport const getCustomSession = (() => {\n let customSession: Session;\n return () => {\n if (!customSession) {\n customSession = session.fromPartition('persist:__global_main_session__');\n }\n return customSession;\n }\n})();\n\napp.on('ready', () => {\n getCustomSession();\n});\n\nif (!remote.isInitialized()) {\n remote.initialize();\n}\n\nexport const enable = (win: WebContents) => {\n remote.enable(win)\n}\n\nexport class WindowsManager {\n loadingViewUrl: string | undefined;\n errorViewUrl: string | undefined;\n preload?: string;\n windows: Map<number, BWItem | BVItem | null>;\n constructor(preload?: string, loadingViewUrl?: string, errorViewUrl?: string) {\n this.preload = preload;\n this.windows = new Map();\n this.loadingViewUrl = `${loadingViewUrl ?? ''}`;\n this.errorViewUrl = `${errorViewUrl ?? ''}`;\n }\n\n create(options: ElectronWindowsManagerOptions) {\n let window: any;\n try {\n const {\n type = 'BW',\n name = 'anonymous',\n url,\n loadingView = {url: undefined},\n errorView = {url: undefined},\n browserWindow: browserWindowOptions,\n openDevTools = false,\n preventOriginClose = false,\n } = options;\n options.type = type;\n try {\n loadingView.url = `${loadingView?.url ?? this.loadingViewUrl}`;\n lodash.merge(\n options,\n {\n loadingView,\n }\n )\n } catch (error) {\n log('error', 'loadingView error:', loadingView, this.loadingViewUrl);\n }\n try {\n errorView.url = `${errorView?.url ?? this.errorViewUrl}`;\n lodash.merge(\n options,\n {\n errorView,\n }\n )\n } catch (error) {\n log('error', 'errorView error:', errorView, this.errorViewUrl);\n }\n let parentWin:BrowserWindowConstructorOptions['parent'] = undefined;\n if (typeof browserWindowOptions?.parent === 'number') {\n parentWin = BrowserWindow.fromId(browserWindowOptions?.parent) || undefined;\n if (parentWin) {\n browserWindowOptions.parent = parentWin;\n } else {\n browserWindowOptions.parent = undefined;\n }\n }\n log('log', 'create 1: ', options);\n log('log', 'create 2: ', `parentWin: ${parentWin?.id}`);\n window = type === 'BV' ?\n new BrowserView(\n lodash.merge(\n (browserWindowOptions || {}),\n {\n parent: undefined,\n webPreferences: {\n // session: getCustomSession(),\n plugins: true,\n nodeIntegration: true,\n contextIsolation: false,\n backgroundThrottling: false,\n nativeWindowOpen: false,\n webSecurity: false,\n preload: browserWindowOptions?.webPreferences?.preload || this.preload,\n }\n },\n )\n ) as BVItem\n : new BrowserWindow(\n lodash.merge(\n {\n acceptFirstMouse: true,\n },\n (browserWindowOptions || {}),\n {\n parent: parentWin,\n webPreferences: {\n // session: getCustomSession(),\n plugins: true,\n nodeIntegration: true,\n contextIsolation: false,\n backgroundThrottling: false,\n nativeWindowOpen: false,\n webSecurity: false,\n preload: browserWindowOptions?.webPreferences?.preload || this.preload,\n }\n },\n )\n ) as BWItem;\n try {\n remote.enable(window.webContents);\n } catch (error) {\n log('error', 'enable: ', error)\n }\n // @ts-ignore\n try {\n window.id = window.id || window.webContents.id;\n } catch (error) {\n log('error', 'set id: ', error)\n }\n window._type = type;\n window._name = name;\n window._extraData = `${options?.extraData || ''}`;\n log('log', 'create 5: ', window.id, window._name);\n if (loadingView?.url) {\n if (type === 'BW') {\n // @ts-ignore\n this._setLoadingView(window, options);\n }\n }\n if (errorView?.url) {\n const showErrorView = lodash.debounce(() => {\n const _url = window.webContents.getURL() || url;\n if (_url) {\n // @ts-ignore\n window.loadURL ? window.loadURL(`${errorView?.url}`) : window.webContents.loadURL(`${errorView?.url}`);\n window.webContents.executeJavaScript(`window['__ELECTRON_WINDOW_MANAGER_DID_FAIL_LOAD_URL__'] = \"${_url}\"`);\n }\n }, 300);\n window.webContents.on('did-fail-load', () => {\n showErrorView();\n });\n window.webContents.on('did-start-loading', () => {\n showErrorView.cancel();\n });\n }\n window.webContents.on('close', () => {\n this.windows.set(window.id, null)\n this.windows.delete(window.id)\n })\n window.webContents.on('destroyed', () => {\n this.windows.set(window.id, null)\n this.windows.delete(window.id)\n })\n window.webContents.on('dom-ready', () => {\n if (openDevTools) {\n window.webContents.openDevTools();\n }\n });\n if (type === 'BW') {\n // @ts-ignore\n window.on('closed', () => {\n log('log', 'closed', window.id, window._name);\n this.windows.set(window.id, null)\n this.windows.delete(window.id)\n });\n }\n if (type === 'BV') {\n parentWin?.addBrowserView(window);\n log('log', 'create - addBrowserView', parentWin, window)\n }\n // @ts-ignore\n window.loadURL ? window.loadURL(options.url) : window.webContents.loadURL(options.url);\n // @ts-ignore\n window.focus ? window.focus() : window.webContents.focus();\n this.windows.set(window.id || window.webContents.id, window);\n log('log', 'create', this.windows.keys())\n } catch (error) {\n log('error', 'create', error)\n }\n\n return window;\n }\n\n _setLoadingView(window: BWItem, createOptions: ElectronWindowsManagerOptions) {\n if (createOptions) {\n const {\n loadingView,\n preventOriginNavigate = false,\n } = createOptions;\n let _loadingView = new BrowserView({\n webPreferences: {\n // session: getCustomSession(),\n contextIsolation: false,\n nodeIntegration: true,\n // 允许loadURL与文件路径在开发环境\n webSecurity: false,\n }\n });\n\n if (window.isDestroyed()) {\n return;\n }\n\n const loadLoadingView = () => {\n const [ viewWidth, viewHeight ] = window.getSize();\n window.setBrowserView(_loadingView);\n _loadingView.setBounds({\n x: 0,\n y: 0,\n width: viewWidth || 10,\n height: viewHeight || 10,\n });\n log('log', 'loadLoadingView', window._name, loadingView);\n _loadingView.webContents.loadURL(loadingView?.url || '')\n };\n\n const onFailure = lodash.debounce(() => {\n if (_loadingView.webContents && !_loadingView.webContents.isDestroyed()) {\n _loadingView.webContents.close();\n }\n if (window.isDestroyed()) {\n return;\n }\n\n if (window) {\n window.removeBrowserView(_loadingView);\n }\n }, 300);\n\n loadLoadingView();\n\n window.on('resize', lodash.debounce(() => {\n if (_loadingView.webContents && !_loadingView.webContents.isDestroyed()) {\n if (window.isDestroyed()) {\n return;\n }\n const [ viewWidth, viewHeight ] = window.getSize();\n _loadingView.setBounds({ x: 0, y: 0, width: viewWidth || 10, height: viewHeight || 10 });\n }\n }, 500));\n\n window.webContents.on('will-navigate', (e) => {\n if (preventOriginNavigate) {\n e.preventDefault();\n return;\n }\n if (window.isDestroyed()) {\n return;\n }\n if (_loadingView.webContents && !_loadingView.webContents.isDestroyed()) {\n window.setBrowserView(_loadingView);\n } else {\n // if loadingView has been destroyed\n _loadingView = new BrowserView();\n loadLoadingView();\n }\n });\n window.webContents.on('dom-ready', onFailure);\n window.webContents.on('crashed', onFailure);\n window.webContents.on('unresponsive', onFailure);\n window.webContents.on('did-fail-load', onFailure);\n window.webContents.on('did-finish-load', onFailure);\n window.webContents.on('did-stop-loading', onFailure);\n }\n }\n\n get(idOrName: string | number): BWItem | BVItem | undefined {\n log('log', 'get', idOrName);\n let win: BWItem | BVItem ;\n this.windows.forEach((i, key) => {\n try {\n if (!(i && i?.webContents?.isDestroyed && !i?.webContents?.isDestroyed?.())) {\n this.windows.set(key, null)\n this.windows.delete(key)\n i = null;\n }\n } catch (error) {\n log('error', 'get');\n }\n\n if (typeof idOrName === 'number') {\n if (i?.id === idOrName) {\n win = i;\n }\n } else if (typeof idOrName === 'string') {\n if (i?._name === idOrName) {\n win = i;\n }\n }\n })\n // @ts-ignore\n if (win && win?.webContents?.isDestroyed && !win?.webContents?.isDestroyed?.()) {\n return win;\n }\n return undefined;\n }\n\n getAll() {\n log('log', 'getAll');\n this.windows.forEach((win, key) => {\n log('log', 'getAll', key, win, win?.webContents?.isDestroyed, win?.webContents?.isDestroyed?.());\n if (!(win && win?.webContents?.isDestroyed && !win?.webContents?.isDestroyed?.())) {\n this.windows.set(key, null)\n this.windows.delete(key)\n }\n })\n return this.windows;\n }\n\n close(idOrName: string | number) {\n log('log', 'close', idOrName);\n let win: BWItem | BVItem | undefined = undefined;\n this.windows.forEach((i) => {\n if (typeof idOrName === 'number') {\n if (i?.id === idOrName) {\n win = i;\n }\n } else if (typeof idOrName === 'string') {\n if (i?._name === idOrName) {\n win = i;\n }\n }\n })\n // @ts-ignore\n win && this.windows.delete(win?.id)\n // @ts-ignore\n if (win) {\n // @ts-ignore\n if (win._type === 'BV') {\n this.windows.forEach(i => {\n if (i?._type === 'BW') {\n const _win = i as BWItem;\n _win.removeBrowserView(win as BVItem);\n }\n })\n }\n // @ts-ignore\n win?.webContent?.close?.();\n // @ts-ignore\n win?.close?.();\n // @ts-ignore\n win?.destroy?.();\n }\n return true;\n }\n\n closeAll() {\n log('log', 'closeAll');\n this.windows.forEach((win) => {\n try {\n win && this.windows.delete(win?.id)\n // @ts-ignore\n if (win._type === 'BV') {\n this.windows.forEach(i => {\n if (i?._type === 'BW') {\n const _win = i as BWItem;\n _win.removeBrowserView(win as BVItem);\n }\n })\n }\n // @ts-ignore\n win?.webContent?.close?.();\n // @ts-ignore\n win?.close?.();\n // @ts-ignore\n win?.destroy?.();\n } catch (error) {\n\n }\n })\n }\n\n getPreload() {\n log('log', 'getPreload');\n return this.preload;\n }\n}\n// @ts-ignore\nglobal['__ELECTRON_WINDOWS_MANAGER__'] = undefined;\n\nexport let isInitialized = false;\n\nexport const initialize = (preload?: string, loadingViewUrl?: string, errorViewUrl?: string): WindowsManager => {\n // @ts-ignore\n if (isInitialized && global['__ELECTRON_WINDOWS_MANAGER__']) {\n // @ts-ignore\n return global['__ELECTRON_WINDOWS_MANAGER__'];\n }\n isInitialized = true;\n // @ts-ignore\n const wm = global['__ELECTRON_WINDOWS_MANAGER__'] = new WindowsManager(preload, loadingViewUrl, errorViewUrl)\n eIpc.mainIPC.handleRenderer('__ELECTRON_WINDOW_MANAGER_IPC_CHANNEL__', async (data: any) => {\n if (data?.type === 'create') {\n const opt = data as {\n type: 'create';\n data: ElectronWindowsManagerOptions\n };\n const findWin = wm.get(opt.data.name);\n if (findWin) {\n // @ts-ignore\n findWin?.focus?.();\n findWin?.webContents.focus?.();\n if (opt.data.url && findWin.webContents.getURL() !== opt.data.url) {\n findWin.webContents.loadURL(opt.data.url)\n /** fix: url hash 无法正常加载 */\n setTimeout(()=> {\n findWin.webContents.reload();\n }, 100);\n }\n return {\n winId: Number(`${findWin?.id || - 1}`),\n winName: `${findWin?._name || ''}`,\n winType: `${findWin?._type || ''}`,\n winExtraData: `${findWin?._extraData || ''}`,\n };\n }\n const res = wm.create(opt.data)\n return {\n winId: Number(`${res.id || -1}`),\n winName: `${res?._name || ''}`,\n winType: `${res?._type || ''}`,\n winExtraData: `${res?._extraData || ''}`,\n };\n }\n if (data?.type === 'get') {\n const opt = data as {\n type: 'get';\n data: string | number;\n };\n const res = wm.get(opt?.data)\n return {\n winId: Number(`${res?.id || -1}`),\n winName: `${res?._name || ''}`,\n winType: `${res?._type || ''}`,\n winExtraData: `${res?._extraData || ''}`,\n };\n }\n\n if (data?.type === 'getAll') {\n const opt = data as {\n type: 'getAll';\n data: any;\n };\n const res = wm.getAll()\n const obj = {}\n res.forEach(i => {\n // @ts-ignore\n obj[i.id] = {\n winId: Number(`${i?.id || -1}`),\n winName: `${i?._name || ''}`,\n winType: `${i?._type || ''}`,\n winExtraData: `${i?._extraData || ''}`,\n }\n })\n return obj;\n }\n\n if (data?.type === 'close') {\n const opt = data as {\n type: 'close';\n data: string | number;\n };\n const res = wm.close(opt?.data)\n return res;\n }\n\n if (data?.type === 'closeAll') {\n const opt = data as {\n type: 'closeAll';\n data: undefined;\n };\n const res = wm.closeAll()\n return res;\n }\n\n if (data?.type === 'getWindowForWebContentId') {\n const opt = data as {\n type: 'getWindowForWebContentId';\n data: number;\n };\n const targetWebContents = webContents.fromId(opt.data);\n if (targetWebContents) {\n let win = BrowserWindow.fromWebContents(targetWebContents)\n if (!win) {\n // 获取所有的 BrowserWindows\n let allWindows = BrowserWindow.getAllWindows();\n\n // 遍历所有窗口,检查每个窗口的 BrowserView\n for (let _win of allWindows) {\n let views = _win.getBrowserViews();\n\n // 遍历窗口的所有 BrowserView\n for (let view of views) {\n if (view.webContents === targetWebContents) {\n win = _win;\n break;\n }\n }\n\n if (win) break;\n }\n }\n return win?.id;\n }\n return undefined;\n }\n\n if (data?.type === 'getPreload') {\n const opt = data as {\n type: 'getPreload';\n data: number;\n };\n const res = wm.getPreload()\n return res;\n }\n\n return undefined\n })\n return wm;\n}\n\nconst log = (type: 'log' | 'error', ...data: any[]) => {\n const key = `[electron-window-manager]: `\n try {\n console[type](key, ...data);\n } catch (error) {\n console.error(key, error)\n }\n}\n"],"names":["session","app","remote","BrowserWindow","BrowserView","isInitialized","webContents"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lynker-desktop/electron-window-manager",
|
|
3
|
-
"version": "0.0.4-alpha.
|
|
3
|
+
"version": "0.0.4-alpha.70",
|
|
4
4
|
"description": "electron-window-manager",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"electron",
|
|
@@ -77,5 +77,5 @@
|
|
|
77
77
|
"tslib": "^2.6.3",
|
|
78
78
|
"typescript": "^5.5.3"
|
|
79
79
|
},
|
|
80
|
-
"gitHead": "
|
|
80
|
+
"gitHead": "a674ae2958ab77cab677bcf325321c39957f36f8"
|
|
81
81
|
}
|