@lynker-desktop/electron-window-manager 0.0.4-alpha.6 → 0.0.4-alpha.60

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 CHANGED
@@ -1,4 +1,7 @@
1
1
  import type { BrowserWindow, BrowserWindowConstructorOptions } from 'electron';
2
+ export interface BrowserWindowType extends Omit<BrowserWindowConstructorOptions, 'parent'> {
3
+ parent?: number | BrowserWindowConstructorOptions['parent'];
4
+ }
2
5
  declare global {
3
6
  interface Window {
4
7
  __ELECTRON_WINDOW_MANAGER__?: any;
@@ -7,10 +10,14 @@ declare global {
7
10
  export interface ElectronWindowsManagerOptions {
8
11
  name: string;
9
12
  url: string;
13
+ extraData?: string;
10
14
  loadingView?: {
11
15
  url: string;
12
16
  };
13
- browserWindow?: BrowserWindowConstructorOptions;
17
+ errorView?: {
18
+ url: string;
19
+ };
20
+ browserWindow?: BrowserWindowType;
14
21
  openDevTools?: boolean;
15
22
  preventOriginClose?: boolean;
16
23
  preventOriginNavigate?: boolean;
@@ -18,5 +25,7 @@ export interface ElectronWindowsManagerOptions {
18
25
  export interface WindowItem extends BrowserWindow {
19
26
  /** BW别名 */
20
27
  _name: string;
28
+ /** 额外数据 */
29
+ _extraData?: string;
21
30
  }
22
31
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/common/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,+BAA+B,EAAE,MAAM,UAAU,CAAC;AAG/E,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,2BAA2B,CAAC,EAAE,GAAG,CAAC;KACnC;CACF;AACD,MAAM,WAAW,6BAA6B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,aAAa,CAAC,EAAE,+BAA+B,CAAC;IAChD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,UAAW,SAAQ,aAAa;IAC/C,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;CACf"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/common/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,+BAA+B,EAAE,MAAM,UAAU,CAAC;AAE/E,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,+BAA+B,EAAE,QAAQ,CAAC;IACxF,MAAM,CAAC,EAAE,MAAM,GAAG,+BAA+B,CAAC,QAAQ,CAAC,CAAC;CAC7D;AAGD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,2BAA2B,CAAC,EAAE,GAAG,CAAC;KACnC;CACF;AACD,MAAM,WAAW,6BAA6B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,SAAS,CAAC,EAAE;QACV,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,UAAW,SAAQ,aAAa;IAC/C,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
@@ -1,4 +1,7 @@
1
1
  import type { BrowserWindow, BrowserWindowConstructorOptions } from 'electron';
2
+ export interface BrowserWindowType extends Omit<BrowserWindowConstructorOptions, 'parent'> {
3
+ parent?: number | BrowserWindowConstructorOptions['parent'];
4
+ }
2
5
  declare global {
3
6
  interface Window {
4
7
  __ELECTRON_WINDOW_MANAGER__?: any;
@@ -7,10 +10,14 @@ declare global {
7
10
  export interface ElectronWindowsManagerOptions {
8
11
  name: string;
9
12
  url: string;
13
+ extraData?: string;
10
14
  loadingView?: {
11
15
  url: string;
12
16
  };
13
- browserWindow?: BrowserWindowConstructorOptions;
17
+ errorView?: {
18
+ url: string;
19
+ };
20
+ browserWindow?: BrowserWindowType;
14
21
  openDevTools?: boolean;
15
22
  preventOriginClose?: boolean;
16
23
  preventOriginNavigate?: boolean;
@@ -18,5 +25,7 @@ export interface ElectronWindowsManagerOptions {
18
25
  export interface WindowItem extends BrowserWindow {
19
26
  /** BW别名 */
20
27
  _name: string;
28
+ /** 额外数据 */
29
+ _extraData?: string;
21
30
  }
22
31
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,+BAA+B,EAAE,MAAM,UAAU,CAAC;AAG/E,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,2BAA2B,CAAC,EAAE,GAAG,CAAC;KACnC;CACF;AACD,MAAM,WAAW,6BAA6B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,aAAa,CAAC,EAAE,+BAA+B,CAAC;IAChD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,UAAW,SAAQ,aAAa;IAC/C,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;CACf"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,+BAA+B,EAAE,MAAM,UAAU,CAAC;AAE/E,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,+BAA+B,EAAE,QAAQ,CAAC;IACxF,MAAM,CAAC,EAAE,MAAM,GAAG,+BAA+B,CAAC,QAAQ,CAAC,CAAC;CAC7D;AAGD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,2BAA2B,CAAC,EAAE,GAAG,CAAC;KACnC;CACF;AACD,MAAM,WAAW,6BAA6B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,SAAS,CAAC,EAAE;QACV,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,UAAW,SAAQ,aAAa;IAC/C,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
@@ -1,19 +1,21 @@
1
1
  import { WebContents } from 'electron';
2
2
  import type { ElectronWindowsManagerOptions, WindowItem } from '../common';
3
+ export declare const getCustomSession: () => Electron.Session;
3
4
  export declare const enable: (win: WebContents) => void;
4
5
  export declare class WindowsManager {
6
+ loadingViewUrl: string | undefined;
7
+ errorViewUrl: string | undefined;
5
8
  preload?: string;
6
- windows: Map<number, WindowItem>;
7
- constructor(preload?: string);
9
+ windows: Map<number, WindowItem | null>;
10
+ constructor(preload?: string, loadingViewUrl?: string, errorViewUrl?: string);
8
11
  create(options: ElectronWindowsManagerOptions): WindowItem;
9
12
  _setLoadingView(window: WindowItem, createOptions: ElectronWindowsManagerOptions): void;
10
- get(name: string): WindowItem | undefined;
11
- getById(id: number): WindowItem | undefined;
12
- getAll(): Map<number, WindowItem>;
13
- close(name: string): undefined;
14
- closeById(id: number): undefined;
13
+ get(idOrName: string | number): WindowItem | undefined;
14
+ getAll(): Map<number, WindowItem | null>;
15
+ close(idOrName: string | number): undefined;
16
+ closeAll(): void;
15
17
  getPreload(): string | undefined;
16
18
  }
17
19
  export declare let isInitialized: boolean;
18
- export declare const initialize: (preload?: string) => WindowsManager;
20
+ export declare const initialize: (preload?: string, loadingViewUrl?: string, errorViewUrl?: string) => WindowsManager;
19
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/main/index.ts"],"names":[],"mappings":"AACA,OAAO,EAA8B,WAAW,EAAE,MAAM,UAAU,CAAA;AAGlE,OAAO,KAAK,EAAE,6BAA6B,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAM3E,eAAO,MAAM,MAAM,QAAS,WAAW,SAEtC,CAAA;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;gBACrB,OAAO,CAAC,EAAE,MAAM;IAK5B,MAAM,CAAC,OAAO,EAAE,6BAA6B;IAsD7C,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,6BAA6B;IA+EhF,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAUzC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAU3C,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;IAIjC,KAAK,CAAC,IAAI,EAAE,MAAM;IAalB,SAAS,CAAC,EAAE,EAAE,MAAM;IAapB,UAAU;CAGX;AAID,eAAO,IAAI,aAAa,SAAQ,CAAC;AAEjC,eAAO,MAAM,UAAU,aAAc,MAAM,KAAG,cAoG7C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/main/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAmC,WAAW,EAAkE,MAAM,UAAU,CAAA;AAGvI,OAAO,KAAK,EAAE,6BAA6B,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE3E,eAAO,MAAM,gBAAgB,wBAQzB,CAAC;AAUL,eAAO,MAAM,MAAM,QAAS,WAAW,SAEtC,CAAA;AAED,qBAAa,cAAc;IACzB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC,CAAC;gBAC5B,OAAO,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;IAO5E,MAAM,CAAC,OAAO,EAAE,6BAA6B;IAyG7C,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,6BAA6B;IAmFhF,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS;IA+BtD,MAAM;IAYN,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAoB/B,QAAQ;IAQR,UAAU;CAIX;AAID,eAAO,IAAI,aAAa,SAAQ,CAAC;AAEjC,eAAO,MAAM,UAAU,aAAc,MAAM,mBAAmB,MAAM,iBAAiB,MAAM,KAAG,cA4H7F,CAAA"}
package/esm/main/index.js CHANGED
@@ -1,8 +1,20 @@
1
- import _ from 'lodash';
2
- import { BrowserWindow, BrowserView } from 'electron';
1
+ import lodash from 'lodash';
2
+ import { app, session, BrowserWindow, BrowserView, webContents } from 'electron';
3
3
  import * as remote from '@electron/remote/main';
4
4
  import eIpc from '@lynker-desktop/electron-ipc/main';
5
5
 
6
+ const getCustomSession = (() => {
7
+ let customSession;
8
+ return () => {
9
+ if (!customSession) {
10
+ customSession = session.fromPartition('persist:__global_main_session__');
11
+ }
12
+ return customSession;
13
+ };
14
+ })();
15
+ app.on('ready', () => {
16
+ getCustomSession();
17
+ });
6
18
  if (!remote.isInitialized()) {
7
19
  remote.initialize();
8
20
  }
@@ -10,16 +22,49 @@ const enable = (win) => {
10
22
  remote.enable(win);
11
23
  };
12
24
  class WindowsManager {
13
- constructor(preload) {
25
+ constructor(preload, loadingViewUrl, errorViewUrl) {
14
26
  this.preload = preload;
15
27
  this.windows = new Map();
28
+ this.loadingViewUrl = `${loadingViewUrl ?? ''}`;
29
+ this.errorViewUrl = `${errorViewUrl ?? ''}`;
16
30
  }
17
31
  create(options) {
18
- const { name = 'anonymous', loadingView, browserWindow: browserWindowOptions = {}, openDevTools = false, preventOriginClose = false, } = options;
19
- const window = new BrowserWindow(_.merge({
32
+ const { name = 'anonymous', url, loadingView = { url: undefined }, errorView = { url: undefined }, browserWindow: browserWindowOptions, openDevTools = false, preventOriginClose = false, } = options;
33
+ try {
34
+ loadingView.url = `${loadingView?.url ?? this.loadingViewUrl}`;
35
+ lodash.merge(options, {
36
+ loadingView,
37
+ });
38
+ }
39
+ catch (error) {
40
+ log('error', 'loadingView error:', loadingView, this.loadingViewUrl);
41
+ }
42
+ try {
43
+ errorView.url = `${errorView?.url ?? this.errorViewUrl}`;
44
+ lodash.merge(options, {
45
+ errorView,
46
+ });
47
+ }
48
+ catch (error) {
49
+ log('error', 'errorView error:', errorView, this.errorViewUrl);
50
+ }
51
+ log('log', 'create', options);
52
+ let parentWin = undefined;
53
+ if (typeof browserWindowOptions?.parent === 'number') {
54
+ parentWin = BrowserWindow.fromId(browserWindowOptions?.parent) || undefined;
55
+ if (parentWin) {
56
+ browserWindowOptions.parent = parentWin;
57
+ }
58
+ else {
59
+ browserWindowOptions.parent = undefined;
60
+ }
61
+ }
62
+ const window = new BrowserWindow(lodash.merge({
20
63
  acceptFirstMouse: true,
21
- }, browserWindowOptions, {
64
+ }, (browserWindowOptions || {}), {
65
+ parent: parentWin,
22
66
  webPreferences: {
67
+ // session: getCustomSession(),
23
68
  plugins: true,
24
69
  nodeIntegration: true,
25
70
  contextIsolation: false,
@@ -31,28 +76,42 @@ class WindowsManager {
31
76
  }));
32
77
  remote.enable(window.webContents);
33
78
  window._name = name;
79
+ window._extraData = `${options?.extraData || ''}`;
80
+ const showErrorView = lodash.debounce(() => {
81
+ const _url = window.webContents.getURL() || url;
82
+ window.webContents.executeJavaScript(`window['__ELECTRON_WINDOW_MANAGER_DID_FAIL_LOAD_URL__'] = "${_url}"`);
83
+ window.loadURL(`${errorView?.url}`);
84
+ }, 1000 * 2);
34
85
  if (loadingView?.url) {
35
86
  this._setLoadingView(window, options);
36
87
  }
37
- window.on('close', (event) => {
88
+ if (errorView?.url) {
89
+ window.webContents.on('did-fail-load', () => {
90
+ showErrorView();
91
+ });
92
+ }
93
+ window.addListener('close', (event) => {
94
+ log('log', 'close', window.id, window._name);
95
+ this.windows.set(window.id, null);
96
+ this.windows.delete(window.id);
38
97
  if (preventOriginClose) {
39
98
  event.preventDefault();
40
99
  return;
41
100
  }
101
+ });
102
+ window.addListener('closed', () => {
103
+ log('log', 'closed', window.id, window._name);
104
+ this.windows.set(window.id, null);
42
105
  this.windows.delete(window.id);
43
106
  });
44
107
  window.webContents.on('dom-ready', () => {
108
+ showErrorView.cancel();
45
109
  if (openDevTools) {
46
110
  window.webContents.openDevTools();
47
111
  }
48
112
  });
49
113
  this.windows.set(window.id, window);
50
- if (/^file/gi.test(options.url)) {
51
- window.loadFile(options.url);
52
- }
53
- else {
54
- window.loadURL(options.url);
55
- }
114
+ window.loadURL(options.url);
56
115
  window.focus();
57
116
  return window;
58
117
  }
@@ -61,6 +120,7 @@ class WindowsManager {
61
120
  const { loadingView, preventOriginNavigate = false, } = createOptions;
62
121
  let _loadingView = new BrowserView({
63
122
  webPreferences: {
123
+ // session: getCustomSession(),
64
124
  contextIsolation: false,
65
125
  nodeIntegration: true,
66
126
  // 允许loadURL与文件路径在开发环境
@@ -79,9 +139,10 @@ class WindowsManager {
79
139
  width: viewWidth || 10,
80
140
  height: viewHeight || 10,
81
141
  });
142
+ log('log', 'loadLoadingView', window._name, loadingView);
82
143
  _loadingView.webContents.loadURL(loadingView?.url || '');
83
144
  };
84
- const onFailure = () => {
145
+ const onFailure = lodash.debounce(() => {
85
146
  if (_loadingView.webContents && !_loadingView.webContents.isDestroyed()) {
86
147
  _loadingView.webContents.close();
87
148
  }
@@ -91,9 +152,9 @@ class WindowsManager {
91
152
  if (window) {
92
153
  window.removeBrowserView(_loadingView);
93
154
  }
94
- };
155
+ }, 300);
95
156
  loadLoadingView();
96
- window.on('resize', _.debounce(() => {
157
+ window.on('resize', lodash.debounce(() => {
97
158
  if (_loadingView.webContents && !_loadingView.webContents.isDestroyed()) {
98
159
  if (window.isDestroyed()) {
99
160
  return;
@@ -123,34 +184,65 @@ class WindowsManager {
123
184
  window.webContents.on('crashed', onFailure);
124
185
  window.webContents.on('unresponsive', onFailure);
125
186
  window.webContents.on('did-fail-load', onFailure);
187
+ window.webContents.on('did-finish-load', onFailure);
188
+ window.webContents.on('did-stop-loading', onFailure);
126
189
  }
127
190
  }
128
- get(name) {
129
- let win = undefined;
130
- this.windows.forEach((i) => {
131
- if (i._name === name) {
132
- win = i;
191
+ get(idOrName) {
192
+ log('log', 'get', idOrName);
193
+ let win;
194
+ this.windows.forEach((i, key) => {
195
+ try {
196
+ if (!(i && i?.webContents?.isDestroyed && !i?.webContents?.isDestroyed?.())) {
197
+ this.windows.set(key, null);
198
+ this.windows.delete(key);
199
+ i = null;
200
+ }
133
201
  }
134
- });
135
- return win;
136
- }
137
- getById(id) {
138
- let win = undefined;
139
- this.windows.forEach((i) => {
140
- if (i.id === id) {
141
- win = i;
202
+ catch (error) {
203
+ log('error', 'get');
204
+ }
205
+ if (typeof idOrName === 'number') {
206
+ if (i?.id === idOrName) {
207
+ win = i;
208
+ }
209
+ }
210
+ else if (typeof idOrName === 'string') {
211
+ if (i?._name === idOrName) {
212
+ win = i;
213
+ }
142
214
  }
143
215
  });
144
- return win;
216
+ // @ts-ignore
217
+ if (win && win?.webContents?.isDestroyed && !win?.webContents?.isDestroyed?.()) {
218
+ return win;
219
+ }
220
+ return undefined;
145
221
  }
146
222
  getAll() {
223
+ log('log', 'getAll');
224
+ this.windows.forEach((win, key) => {
225
+ console.log(key, win);
226
+ if (!(win && win?.webContents?.isDestroyed && !win?.webContents?.isDestroyed?.())) {
227
+ this.windows.set(key, null);
228
+ this.windows.delete(key);
229
+ }
230
+ });
147
231
  return this.windows;
148
232
  }
149
- close(name) {
233
+ close(idOrName) {
234
+ log('log', 'close', idOrName);
150
235
  let win = undefined;
151
236
  this.windows.forEach((i) => {
152
- if (i._name === name) {
153
- win = i;
237
+ if (typeof idOrName === 'number') {
238
+ if (i?.id === idOrName) {
239
+ win = i;
240
+ }
241
+ }
242
+ else if (typeof idOrName === 'string') {
243
+ if (i?._name === idOrName) {
244
+ win = i;
245
+ }
154
246
  }
155
247
  });
156
248
  // @ts-ignore
@@ -158,26 +250,22 @@ class WindowsManager {
158
250
  // @ts-ignore
159
251
  return win && win?.destroy();
160
252
  }
161
- closeById(id) {
162
- let win = undefined;
253
+ closeAll() {
254
+ log('log', 'closeAll');
163
255
  this.windows.forEach((i) => {
164
- if (i.id === id) {
165
- win = i;
166
- }
256
+ i && this.windows.delete(i?.id);
257
+ i && i?.destroy();
167
258
  });
168
- // @ts-ignore
169
- win && this.windows.delete(win?.id);
170
- // @ts-ignore
171
- return win && win?.destroy();
172
259
  }
173
260
  getPreload() {
261
+ log('log', 'getPreload');
174
262
  return this.preload;
175
263
  }
176
264
  }
177
265
  // @ts-ignore
178
266
  global['__ELECTRON_WINDOWS_MANAGER__'] = undefined;
179
267
  let isInitialized = false;
180
- const initialize = (preload) => {
268
+ const initialize = (preload, loadingViewUrl, errorViewUrl) => {
181
269
  // @ts-ignore
182
270
  if (isInitialized && global['__ELECTRON_WINDOWS_MANAGER__']) {
183
271
  // @ts-ignore
@@ -185,7 +273,7 @@ const initialize = (preload) => {
185
273
  }
186
274
  isInitialized = true;
187
275
  // @ts-ignore
188
- const wm = global['__ELECTRON_WINDOWS_MANAGER__'] = new WindowsManager(preload);
276
+ const wm = global['__ELECTRON_WINDOWS_MANAGER__'] = new WindowsManager(preload, loadingViewUrl, errorViewUrl);
189
277
  eIpc.mainIPC.handleRenderer('__ELECTRON_WINDOW_MANAGER_IPC_CHANNEL__', async (data) => {
190
278
  if (data?.type === 'create') {
191
279
  const opt = data;
@@ -193,30 +281,25 @@ const initialize = (preload) => {
193
281
  if (findWin) {
194
282
  findWin.focus();
195
283
  return {
196
- winId: findWin?.id,
197
- winName: findWin?._name,
284
+ winId: Number(`${findWin?.id || -1}`),
285
+ winName: `${findWin?._name || ''}`,
286
+ winExtraData: `${findWin?._extraData || ''}`,
198
287
  };
199
288
  }
200
289
  const res = wm.create(opt.data);
201
290
  return {
202
- winId: Number(res.id),
203
- winName: res._name,
291
+ winId: Number(`${res.id || -1}`),
292
+ winName: `${res?._name || ''}`,
293
+ winExtraData: `${res?._extraData || ''}`,
204
294
  };
205
295
  }
206
296
  if (data?.type === 'get') {
207
297
  const opt = data;
208
298
  const res = wm.get(opt?.data);
209
299
  return {
210
- winId: res?.id ? Number(res?.id) : -1,
211
- winName: res?._name ? res?._name : '',
212
- };
213
- }
214
- if (data?.type === 'getById') {
215
- const opt = data;
216
- const res = wm.getById(opt?.data);
217
- return {
218
- winId: res?.id ? Number(res?.id) : -1,
219
- winName: res?._name ? res?._name : '',
300
+ winId: Number(`${res?.id || -1}`),
301
+ winName: `${res?._name || ''}`,
302
+ winExtraData: `${res?._extraData || ''}`,
220
303
  };
221
304
  }
222
305
  if (data?.type === 'getAll') {
@@ -225,8 +308,9 @@ const initialize = (preload) => {
225
308
  res.forEach(i => {
226
309
  // @ts-ignore
227
310
  obj[i.id] = {
228
- winId: i?.id ? Number(i?.id) : -1,
229
- winName: i?._name ? i?._name : '',
311
+ winId: Number(`${i?.id || -1}`),
312
+ winName: `${i?._name || ''}`,
313
+ winExtraData: `${i?._extraData || ''}`,
230
314
  };
231
315
  });
232
316
  return obj;
@@ -236,11 +320,36 @@ const initialize = (preload) => {
236
320
  const res = wm.close(opt?.data);
237
321
  return res;
238
322
  }
239
- if (data?.type === 'closeById') {
240
- const opt = data;
241
- const res = wm.closeById(opt?.data);
323
+ if (data?.type === 'closeAll') {
324
+ const res = wm.closeAll();
242
325
  return res;
243
326
  }
327
+ if (data?.type === 'getWindowForWebContentId') {
328
+ const opt = data;
329
+ const targetWebContents = webContents.fromId(opt.data);
330
+ if (targetWebContents) {
331
+ let win = BrowserWindow.fromWebContents(targetWebContents);
332
+ if (!win) {
333
+ // 获取所有的 BrowserWindows
334
+ let allWindows = BrowserWindow.getAllWindows();
335
+ // 遍历所有窗口,检查每个窗口的 BrowserView
336
+ for (let _win of allWindows) {
337
+ let views = _win.getBrowserViews();
338
+ // 遍历窗口的所有 BrowserView
339
+ for (let view of views) {
340
+ if (view.webContents === targetWebContents) {
341
+ win = _win;
342
+ break;
343
+ }
344
+ }
345
+ if (win)
346
+ break;
347
+ }
348
+ }
349
+ return win?.id;
350
+ }
351
+ return undefined;
352
+ }
244
353
  if (data?.type === 'getPreload') {
245
354
  const res = wm.getPreload();
246
355
  return res;
@@ -249,6 +358,15 @@ const initialize = (preload) => {
249
358
  });
250
359
  return wm;
251
360
  };
361
+ const log = (type, ...data) => {
362
+ const key = `[electron-window-manager]: `;
363
+ try {
364
+ console[type](key, ...data);
365
+ }
366
+ catch (error) {
367
+ console.error(key, error);
368
+ }
369
+ };
252
370
 
253
- export { WindowsManager, enable, initialize, isInitialized };
371
+ export { WindowsManager, enable, getCustomSession, initialize, isInitialized };
254
372
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../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":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../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, WindowItem } 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, WindowItem | 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 const {\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 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 log('log', 'create', options);\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 const window = 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 WindowItem;\n remote.enable(window.webContents);\n window._name = name;\n window._extraData = `${options?.extraData || ''}`;\n const showErrorView = lodash.debounce(() => {\n const _url = window.webContents.getURL() || url;\n window.webContents.executeJavaScript(`window['__ELECTRON_WINDOW_MANAGER_DID_FAIL_LOAD_URL__'] = \"${_url}\"`);\n window.loadURL(`${errorView?.url}`);\n }, 1000 * 2)\n if (loadingView?.url) {\n this._setLoadingView(window, options);\n }\n if (errorView?.url) {\n window.webContents.on('did-fail-load', () => {\n showErrorView();\n });\n }\n window.addListener('close', (event) => {\n log('log', 'close', window.id, window._name);\n this.windows.set(window.id, null)\n this.windows.delete(window.id)\n if (preventOriginClose) {\n event.preventDefault();\n return;\n }\n });\n window.addListener('closed', () => {\n log('log', 'closed', window.id, window._name);\n this.windows.set(window.id, null)\n this.windows.delete(window.id)\n });\n window.webContents.on('dom-ready', () => {\n showErrorView.cancel();\n if (openDevTools) {\n window.webContents.openDevTools();\n }\n });\n this.windows.set(window.id, window);\n window.loadURL(options.url);\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 // 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): WindowItem | undefined {\n log('log', 'get', idOrName);\n let win: WindowItem;\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 console.log(key, win);\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: WindowItem | 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 return win && win?.destroy();\n }\n\n closeAll() {\n log('log', 'closeAll');\n this.windows.forEach((i) => {\n i && this.windows.delete(i?.id)\n i && i?.destroy();\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 findWin.focus();\n return {\n winId: Number(`${findWin?.id || - 1}`),\n winName: `${findWin?._name || ''}`,\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 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 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 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":[],"mappings":"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"}
@@ -1,12 +1,42 @@
1
1
  /** Used in Renderer process */
2
2
  import type { BrowserWindow } from 'electron';
3
3
  import { ElectronWindowsManagerOptions } from '../common';
4
- export declare const create: (options: ElectronWindowsManagerOptions) => Promise<BrowserWindow>;
5
- export declare const get: (name: string) => Promise<BrowserWindow | undefined>;
6
- export declare const getById: (id: number) => Promise<BrowserWindow | undefined>;
7
- export declare const getAll: () => Promise<Map<number, BrowserWindow>>;
8
- export declare const close: (name: string) => Promise<any>;
9
- export declare const closeById: (id: number) => Promise<any>;
4
+ export interface BrowserWindowType extends BrowserWindow {
5
+ _name: string;
6
+ _extraData: string;
7
+ }
8
+ /**
9
+ * 创建窗口
10
+ * @param options
11
+ * @returns
12
+ */
13
+ export declare const create: (options: ElectronWindowsManagerOptions) => Promise<BrowserWindowType>;
14
+ /**
15
+ * 获取当前窗口实例
16
+ */
17
+ export declare const getCurrentWindow: () => Promise<BrowserWindowType | undefined>;
18
+ /**
19
+ * 获取窗口
20
+ * @param idOrName id或者名字
21
+ * @returns
22
+ */
23
+ export declare const get: (idOrName: string | number) => Promise<BrowserWindowType | undefined>;
24
+ /**
25
+ * 获取所有窗口
26
+ * @returns
27
+ */
28
+ export declare const getAll: () => Promise<Map<number, BrowserWindowType>>;
29
+ /**
30
+ * 关闭窗口
31
+ * @param name
32
+ * @returns
33
+ */
34
+ export declare const close: (idOrName: string | number) => Promise<boolean>;
35
+ export declare const closeAll: () => Promise<boolean>;
36
+ /**
37
+ * 用webContentIds查找到window
38
+ */
39
+ export declare const getWindowForWebContentId: (webContentId: number) => Promise<BrowserWindowType | undefined>;
10
40
  /**
11
41
  * 获取 preload
12
42
  * @returns