@lynker-desktop/electron-window-manager 0.0.5-alpha.3 → 0.0.5-alpha.5

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.
@@ -6,8 +6,20 @@ export declare class WindowsManager {
6
6
  loadingViewUrl: string | undefined;
7
7
  errorViewUrl: string | undefined;
8
8
  preload?: string;
9
+ preloadWebContentsUrl?: string;
9
10
  windows: Map<number, BWItem | BVItem>;
10
- constructor(preload?: string, loadingViewUrl?: string, errorViewUrl?: string);
11
+ preloadedBW: BWItem | null;
12
+ preloadedBV: BVItem | null;
13
+ preloading: boolean;
14
+ constructor(preload?: string, loadingViewUrl?: string, errorViewUrl?: string, preloadUrl?: string);
15
+ private _preloadInstances;
16
+ private _createPreloadBW;
17
+ private _createPreloadBV;
18
+ /**
19
+ * 预加载webContents
20
+ * @param url
21
+ */
22
+ preloadWebContents(url: string): void;
11
23
  create(options: Omit<ElectronWindowsManagerOptions, 'type'> & {
12
24
  type?: 'BW';
13
25
  }): BWItem;
@@ -23,7 +35,9 @@ export declare class WindowsManager {
23
35
  close(idOrName: string | number): boolean;
24
36
  closeAll(): void;
25
37
  getPreload(): string | undefined;
38
+ private _applyBrowserWindowOptions;
39
+ private _applyBrowserViewOptions;
26
40
  }
27
41
  export declare let isInitialized: boolean;
28
- export declare const initialize: (preload?: string, loadingViewUrl?: string, errorViewUrl?: string) => WindowsManager;
42
+ export declare const initialize: (preload?: string, loadingViewUrl?: string, errorViewUrl?: string, preloadWebContentsUrl?: string) => WindowsManager;
29
43
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
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,MAAM,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAE/E,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,MAAM,GAAG,MAAM,CAAC,CAAC;gBAC1B,OAAO,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;IAQ5E,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,6BAA6B,EAAE,MAAM,CAAC,GAAG;QAAE,IAAI,CAAC,EAAE,IAAI,CAAA;KAAE,GAAG,MAAM;IACtF,MAAM,CAAC,OAAO,EAAE,6BAA6B,GAAG;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,GAAG,MAAM;IACvE,MAAM,CAAC,OAAO,EAAE,6BAA6B,GAAG,MAAM,GAAG,MAAM;IAkL/D,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,6BAA6B;IAmF5E,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS;IA6B3D,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IACvC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IACvC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAyBtC,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAqC/B,QAAQ;IA0BR,UAAU;CAIX;AAID,eAAO,IAAI,aAAa,SAAQ,CAAC;AAEjC,eAAO,MAAM,UAAU,aAAc,MAAM,mBAAmB,MAAM,iBAAiB,MAAM,KAAG,cA6M7F,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,MAAM,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAE/E,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;IAEjB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IACtC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAClC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAClC,UAAU,EAAE,OAAO,CAAS;gBAChB,OAAO,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;YAWnF,iBAAiB;IAc/B,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,gBAAgB;IAyBxB;;;OAGG;IACH,kBAAkB,CAAC,GAAG,EAAE,MAAM;IAK9B,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,6BAA6B,EAAE,MAAM,CAAC,GAAG;QAAE,IAAI,CAAC,EAAE,IAAI,CAAA;KAAE,GAAG,MAAM;IACtF,MAAM,CAAC,OAAO,EAAE,6BAA6B,GAAG;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,GAAG,MAAM;IACvE,MAAM,CAAC,OAAO,EAAE,6BAA6B,GAAG,MAAM,GAAG,MAAM;IA+O/D,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,6BAA6B;IAmF5E,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS;IA6B3D,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IACvC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IACvC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAyBtC,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAqC/B,QAAQ;IA0BR,UAAU;IAKV,OAAO,CAAC,0BAA0B;IAoBlC,OAAO,CAAC,wBAAwB;CAejC;AAID,eAAO,IAAI,aAAa,SAAQ,CAAC;AAEjC,eAAO,MAAM,UAAU,aAAc,MAAM,mBAAmB,MAAM,iBAAiB,MAAM,0BAA0B,MAAM,KAAG,cA6M7H,CAAA"}
package/esm/main/index.js CHANGED
@@ -22,17 +22,121 @@ const enable = (win) => {
22
22
  remote.enable(win);
23
23
  };
24
24
  class WindowsManager {
25
- constructor(preload, loadingViewUrl, errorViewUrl) {
25
+ constructor(preload, loadingViewUrl, errorViewUrl, preloadUrl) {
26
+ this.preloadedBW = null;
27
+ this.preloadedBV = null;
28
+ this.preloading = false;
26
29
  this.preload = preload;
27
30
  this.windows = new Map();
28
31
  this.loadingViewUrl = `${loadingViewUrl ?? ''}`;
29
32
  this.errorViewUrl = `${errorViewUrl ?? ''}`;
33
+ this.preloadWebContentsUrl = `${preloadUrl ?? ''}`;
34
+ if (this.preloadWebContentsUrl) {
35
+ this._preloadInstances();
36
+ }
37
+ }
38
+ async _preloadInstances() {
39
+ if (this.preloading)
40
+ return;
41
+ this.preloading = true;
42
+ try {
43
+ if (this.preloadWebContentsUrl) {
44
+ this.preloadedBW = await this._createPreloadBW();
45
+ this.preloadedBV = await this._createPreloadBV();
46
+ }
47
+ }
48
+ catch (e) {
49
+ log('error', '预创建实例失败', e);
50
+ }
51
+ this.preloading = false;
52
+ }
53
+ _createPreloadBW() {
54
+ return new Promise((resolve) => {
55
+ const preload = this.preload;
56
+ const url = this.preloadWebContentsUrl;
57
+ const instance = new BrowserWindow({
58
+ show: false,
59
+ webPreferences: {
60
+ webviewTag: true,
61
+ plugins: true,
62
+ nodeIntegration: true,
63
+ contextIsolation: false,
64
+ backgroundThrottling: false,
65
+ webSecurity: false,
66
+ preload: preload,
67
+ }
68
+ });
69
+ instance.webContents.once('did-finish-load', () => {
70
+ resolve(instance);
71
+ });
72
+ instance.webContents.once('did-fail-load', () => {
73
+ resolve(instance);
74
+ });
75
+ instance.loadURL(url || 'about:blank');
76
+ });
77
+ }
78
+ _createPreloadBV() {
79
+ return new Promise((resolve) => {
80
+ const preload = this.preload;
81
+ const url = this.preloadWebContentsUrl;
82
+ const instance = new BrowserView({
83
+ webPreferences: {
84
+ webviewTag: true,
85
+ plugins: true,
86
+ nodeIntegration: true,
87
+ contextIsolation: false,
88
+ // backgroundThrottling: false,
89
+ webSecurity: false,
90
+ preload: preload,
91
+ }
92
+ });
93
+ instance.webContents.once('did-finish-load', () => {
94
+ resolve(instance);
95
+ });
96
+ instance.webContents.once('did-fail-load', () => {
97
+ resolve(instance);
98
+ });
99
+ instance.webContents.loadURL(url || 'about:blank');
100
+ });
101
+ }
102
+ /**
103
+ * 预加载webContents
104
+ * @param url
105
+ */
106
+ preloadWebContents(url) {
107
+ this.preloadWebContentsUrl = url;
30
108
  }
31
109
  create(options) {
32
110
  let window;
111
+ const { type = 'BW', name = 'anonymous', url, loadingView = { url: undefined }, errorView = { url: undefined }, browserWindow: browserWindowOptions, openDevTools = false, preventOriginClose = false, } = options;
112
+ options.type = type;
113
+ // 优先复用预创建实例
114
+ if (options.type === 'BW' && this.preloadedBW) {
115
+ const win = this.preloadedBW;
116
+ this.preloadedBW = null;
117
+ setTimeout(() => this._preloadInstances(), 0);
118
+ win._type = 'BW';
119
+ win._name = options.name || 'anonymous';
120
+ win._extraData = `${options?.extraData || ''}`;
121
+ win.removeAllListeners && win.removeAllListeners();
122
+ win.webContents.removeAllListeners && win.webContents.removeAllListeners();
123
+ this._applyBrowserWindowOptions(win, options);
124
+ win.loadURL(options.url);
125
+ window = win;
126
+ }
127
+ if (options.type === 'BV' && this.preloadedBV) {
128
+ const view = this.preloadedBV;
129
+ this.preloadedBV = null;
130
+ setTimeout(() => this._preloadInstances(), 0);
131
+ view._type = 'BV';
132
+ view._name = options.name || 'anonymous';
133
+ view._extraData = `${options?.extraData || ''}`;
134
+ view.webContents.removeAllListeners && view.webContents.removeAllListeners();
135
+ this._applyBrowserViewOptions(view, options);
136
+ view.webContents.loadURL(options.url);
137
+ window = view;
138
+ }
33
139
  try {
34
- const { type = 'BW', name = 'anonymous', url, loadingView = { url: undefined }, errorView = { url: undefined }, browserWindow: browserWindowOptions, openDevTools = false, preventOriginClose = false, } = options;
35
- options.type = type;
36
140
  try {
37
141
  loadingView.url = `${loadingView?.url ?? this.loadingViewUrl}`;
38
142
  lodash.merge(options, {
@@ -63,35 +167,40 @@ class WindowsManager {
63
167
  }
64
168
  log('log', 'create 1: ', options);
65
169
  log('log', 'create 2: ', `parentWin: ${parentWin?.id}`);
66
- window = type === 'BV' ?
67
- new BrowserView(lodash.merge((browserWindowOptions || {}), {
68
- webPreferences: {
69
- // session: getCustomSession(),
70
- plugins: true,
71
- nodeIntegration: true,
72
- contextIsolation: false,
73
- // fix bv二次挂载会灰屏
74
- // backgroundThrottling: false,
75
- nativeWindowOpen: false,
76
- webSecurity: false,
77
- preload: browserWindowOptions?.webPreferences?.preload || this.preload,
78
- }
79
- }))
80
- : new BrowserWindow(lodash.merge({
81
- acceptFirstMouse: true,
82
- }, (browserWindowOptions || {}), {
83
- parent: parentWin,
84
- webPreferences: {
85
- // session: getCustomSession(),
86
- plugins: true,
87
- nodeIntegration: true,
88
- contextIsolation: false,
89
- backgroundThrottling: false,
90
- nativeWindowOpen: false,
91
- webSecurity: false,
92
- preload: browserWindowOptions?.webPreferences?.preload || this.preload,
93
- }
94
- }));
170
+ const preload = browserWindowOptions?.webPreferences?.preload || this.preload;
171
+ if (!window) {
172
+ window = type === 'BV' ?
173
+ new BrowserView(lodash.merge((browserWindowOptions || {}), {
174
+ webPreferences: {
175
+ webviewTag: true,
176
+ // session: getCustomSession(),
177
+ plugins: true,
178
+ nodeIntegration: true,
179
+ contextIsolation: false,
180
+ // fix bv二次挂载会灰屏
181
+ // backgroundThrottling: false,
182
+ nativeWindowOpen: false,
183
+ webSecurity: false,
184
+ preload: preload,
185
+ }
186
+ }))
187
+ : new BrowserWindow(lodash.merge({
188
+ acceptFirstMouse: true,
189
+ }, (browserWindowOptions || {}), {
190
+ parent: parentWin,
191
+ webPreferences: {
192
+ webviewTag: true,
193
+ // session: getCustomSession(),
194
+ plugins: true,
195
+ nodeIntegration: true,
196
+ contextIsolation: false,
197
+ backgroundThrottling: false,
198
+ nativeWindowOpen: false,
199
+ webSecurity: false,
200
+ preload: preload,
201
+ }
202
+ }));
203
+ }
95
204
  try {
96
205
  remote.enable(window.webContents);
97
206
  }
@@ -161,6 +270,10 @@ class WindowsManager {
161
270
  }
162
271
  });
163
272
  if (type === 'BW') {
273
+ // @ts-ignore
274
+ if (options.browserWindow?.show !== false) {
275
+ window.show();
276
+ }
164
277
  // @ts-ignore
165
278
  window.on('closed', () => {
166
279
  log('log', 'closed', window.id, window._name);
@@ -177,6 +290,31 @@ class WindowsManager {
177
290
  window.focus ? window.focus() : window.webContents.focus();
178
291
  this.windows.set(window.id || window._id || window.webContents.id, window);
179
292
  log('log', 'create', this.windows.keys());
293
+ const initVal = () => {
294
+ window.webContents.executeJavaScript(`
295
+ try {
296
+ const data = {
297
+ __ELECTRON_WINDOW_MANAGER_WEB_CONTENTS_ID__: ${JSON.stringify(window.webContents.id)},
298
+ __ELECTRON_WINDOW_MANAGER_TYPE__: ${JSON.stringify(window._type)},
299
+ __ELECTRON_WINDOW_MANAGER_NAME__: ${JSON.stringify(window._name)},
300
+ __ELECTRON_WINDOW_MANAGER_EXTRA_DATA__: ${JSON.stringify(window._extraData || '')},
301
+ __ELECTRON_WINDOW_MANAGER_PRELOAD__: ${JSON.stringify(preload)}
302
+ };
303
+ Object.entries(data).forEach(([key, value]) => {
304
+ Object.defineProperty(window, key, {
305
+ value,
306
+ writable: false,
307
+ configurable: false,
308
+ enumerable: true
309
+ });
310
+ });
311
+ } catch (error) {}
312
+ `);
313
+ };
314
+ // 初始化值
315
+ window.webContents.on('did-finish-load', () => {
316
+ initVal();
317
+ });
180
318
  }
181
319
  catch (error) {
182
320
  log('error', 'create', error);
@@ -374,11 +512,45 @@ class WindowsManager {
374
512
  log('log', 'getPreload');
375
513
  return this.preload;
376
514
  }
515
+ _applyBrowserWindowOptions(win, options) {
516
+ const browserWindowOptions = options.browserWindow || {};
517
+ // 设置父窗口
518
+ if (typeof browserWindowOptions.parent === 'number') {
519
+ const parentWin = BrowserWindow.fromId(browserWindowOptions.parent);
520
+ if (parentWin) {
521
+ win.setParentWindow(parentWin);
522
+ }
523
+ }
524
+ // 设置窗口大小
525
+ if (typeof browserWindowOptions.width === 'number' && typeof browserWindowOptions.height === 'number') {
526
+ win.setBounds({ width: browserWindowOptions.width, height: browserWindowOptions.height });
527
+ }
528
+ // 置顶
529
+ if (typeof browserWindowOptions.alwaysOnTop === 'boolean') {
530
+ win.setAlwaysOnTop(browserWindowOptions.alwaysOnTop);
531
+ }
532
+ // 可继续扩展其他动态属性
533
+ }
534
+ _applyBrowserViewOptions(view, options) {
535
+ const browserWindowOptions = options.browserWindow || {};
536
+ let parentWin;
537
+ if (typeof browserWindowOptions.parent === 'number') {
538
+ parentWin = BrowserWindow.fromId(browserWindowOptions.parent) || undefined;
539
+ if (parentWin) {
540
+ parentWin.addBrowserView(view);
541
+ }
542
+ }
543
+ // 设置视图大小
544
+ if (typeof browserWindowOptions.width === 'number' && typeof browserWindowOptions.height === 'number') {
545
+ view.setBounds({ x: 0, y: 0, width: browserWindowOptions.width, height: browserWindowOptions.height });
546
+ }
547
+ // 可继续扩展其他动态属性
548
+ }
377
549
  }
378
550
  // @ts-ignore
379
551
  global['__ELECTRON_WINDOWS_MANAGER__'] = undefined;
380
552
  let isInitialized = false;
381
- const initialize = (preload, loadingViewUrl, errorViewUrl) => {
553
+ const initialize = (preload, loadingViewUrl, errorViewUrl, preloadWebContentsUrl) => {
382
554
  // @ts-ignore
383
555
  if (isInitialized && global['__ELECTRON_WINDOWS_MANAGER__']) {
384
556
  // @ts-ignore
@@ -386,7 +558,7 @@ const initialize = (preload, loadingViewUrl, errorViewUrl) => {
386
558
  }
387
559
  isInitialized = true;
388
560
  // @ts-ignore
389
- const wm = global['__ELECTRON_WINDOWS_MANAGER__'] = new WindowsManager(preload, loadingViewUrl, errorViewUrl);
561
+ const wm = global['__ELECTRON_WINDOWS_MANAGER__'] = new WindowsManager(preload, loadingViewUrl, errorViewUrl, preloadWebContentsUrl);
390
562
  eIpc.mainIPC.handleRenderer('__ELECTRON_WINDOW_MANAGER_IPC_CHANNEL__', async (data) => {
391
563
  if (data?.type === 'create') {
392
564
  const opt = data;
@@ -1 +1 @@
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, 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>;\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 // 方法重载声明\n create(options: Omit<ElectronWindowsManagerOptions, 'type'> & { type?: 'BW' }): BWItem;\n create(options: ElectronWindowsManagerOptions & { type: 'BV' }): BVItem;\n create(options: ElectronWindowsManagerOptions): BWItem | BVItem;\n\n create(options: ElectronWindowsManagerOptions): BVItem | BWItem {\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 webPreferences: {\n // session: getCustomSession(),\n plugins: true,\n nodeIntegration: true,\n contextIsolation: false,\n // fix bv二次挂载会灰屏\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 = Number(`${window.id || window.webContents.id}`);\n } catch (error) {\n // log('error', 'set id: ', error)\n }\n // @ts-ignore\n try {\n window._id = Number(`${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._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 /**\n * 判断是否是错误视图\n */\n const isErrorView = `${_url}`.toUpperCase().startsWith(`${errorView?.url}`.toUpperCase());\n if (!isErrorView && _url) {\n // @ts-ignore\n window.loadURL ? window.loadURL(`${errorView?.url}`) : window.webContents.loadURL(`${errorView?.url}`);\n window.webContents.executeJavaScript(`\n var key = '__ELECTRON_WINDOW_MANAGER_DID_FAIL_LOAD_URL__';\n window[key] = \"${_url}\";\n sessionStorage.setItem(key, \"${_url}\");\n `);\n }\n }, 300);\n // @ts-ignore\n window.webContents.on('did-fail-load', (event, errorCode, errorDescription, validatedURL, isMainFrame) => {\n if (isMainFrame) {\n showErrorView();\n }\n });\n window.webContents.on('did-start-loading', () => {\n showErrorView.cancel();\n });\n }\n window.webContents.on('close', () => {\n this.windows.delete(window.id || window._id)\n })\n window.webContents.on('destroyed', () => {\n this.windows.delete(window.id || 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.delete(window.id || window._id)\n });\n }\n if (type === 'BV') {\n parentWin?.addBrowserView(window);\n log('log', 'create - addBrowserView')\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._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);\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.delete(key)\n }\n } catch (error) {\n log('error', 'get');\n }\n\n if (typeof idOrName === 'number') {\n if (i?.id === idOrName || 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(type: 'BW'): Map<number, BWItem>;\n getAll(type: 'BV'): Map<number, BVItem>;\n getAll(): Map<number, BWItem | BVItem>;\n getAll(type?: 'BW' | 'BV'): Map<number, BWItem | BVItem> {\n log('log', 'getAll');\n const bwWindows = new Map<number, BWItem>();\n const bvWindows = new Map<number, BVItem>();\n this.windows.forEach((win, key) => {\n if (!(win && win?.webContents?.isDestroyed && !win?.webContents?.isDestroyed?.())) {\n this.windows.delete(key)\n }\n if (win?._type === 'BW') {\n bwWindows.set(key, win as BWItem);\n }\n if (win?._type === 'BV') {\n bvWindows.set(key, win as BVItem);\n }\n })\n if (type === 'BW') {\n return bwWindows;\n }\n if (type === 'BV') {\n return bvWindows;\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 || 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 || 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 || 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 || 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 || i._id] = {\n winId: Number(`${i?.id || 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 // @ts-ignore\n return win?.id || 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 if (data?.type === 'borrowView_getBounds') {\n const opt = data as {\n type: 'borrowView_getBounds';\n data: {\n webContentId: number;\n options: {};\n };\n };\n const bv = wm.get(opt.data.webContentId)\n if (bv) {\n return bv.getBounds()\n }\n return undefined\n }\n if (data?.type === 'borrowView_setBounds') {\n const opt = data as {\n type: 'borrowView_setBounds';\n data: {\n webContentId: number;\n options: {\n x: number;\n y: number;\n width: number;\n height: number;\n };\n };\n };\n const bv = wm.get(opt.data.webContentId)\n if (bv) {\n bv.setBounds(opt.data.options)\n }\n return undefined\n }\n if (data?.type === 'borrowView_setAutoResize') {\n const opt = data as {\n type: 'borrowView_setAutoResize';\n data: {\n webContentId: number;\n options: {\n width: boolean;\n height: boolean;\n horizontal: boolean;\n vertical: boolean;\n };\n };\n };\n const bv = wm.get(opt.data.webContentId) as BVItem;\n if (bv) {\n bv.setAutoResize(opt.data.options)\n }\n return undefined\n }\n if (data?.type === 'borrowView_setBackgroundColor') {\n const opt = data as {\n type: 'borrowView_setBackgroundColor';\n data: {\n webContentId: number;\n options: string;\n };\n };\n const bv = wm.get(opt.data.webContentId) as BVItem;\n if (bv) {\n bv.setBackgroundColor(opt.data.options)\n }\n return undefined\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
+ {"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, 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 // 预加载的webContents的url\n preloadWebContentsUrl?: string;\n windows: Map<number, BWItem | BVItem>;\n preloadedBW: BWItem | null = null;\n preloadedBV: BVItem | null = null;\n preloading: boolean = false;\n constructor(preload?: string, loadingViewUrl?: string, errorViewUrl?: string, preloadUrl?: string) {\n this.preload = preload;\n this.windows = new Map();\n this.loadingViewUrl = `${loadingViewUrl ?? ''}`;\n this.errorViewUrl = `${errorViewUrl ?? ''}`;\n this.preloadWebContentsUrl = `${preloadUrl ?? ''}`;\n if (this.preloadWebContentsUrl) {\n this._preloadInstances();\n }\n }\n\n private async _preloadInstances() {\n if (this.preloading) return;\n this.preloading = true;\n try {\n if (this.preloadWebContentsUrl) {\n this.preloadedBW = await this._createPreloadBW();\n this.preloadedBV = await this._createPreloadBV();\n }\n } catch (e) {\n log('error', '预创建实例失败', e);\n }\n this.preloading = false;\n }\n\n private _createPreloadBW(): Promise<BWItem> {\n return new Promise((resolve) => {\n const preload = this.preload;\n const url = this.preloadWebContentsUrl;\n const instance = new BrowserWindow({\n show: false,\n webPreferences: {\n webviewTag: true,\n plugins: true,\n nodeIntegration: true,\n contextIsolation: false,\n backgroundThrottling: false,\n webSecurity: false,\n preload: preload,\n }\n });\n instance.webContents.once('did-finish-load', () => {\n resolve(instance as BWItem);\n });\n instance.webContents.once('did-fail-load', () => {\n resolve(instance as BWItem);\n });\n instance.loadURL(url || 'about:blank');\n });\n }\n\n private _createPreloadBV(): Promise<BVItem> {\n return new Promise((resolve) => {\n const preload = this.preload;\n const url = this.preloadWebContentsUrl;\n const instance = new BrowserView({\n webPreferences: {\n webviewTag: true,\n plugins: true,\n nodeIntegration: true,\n contextIsolation: false,\n // backgroundThrottling: false,\n webSecurity: false,\n preload: preload,\n }\n });\n instance.webContents.once('did-finish-load', () => {\n resolve(instance as BVItem);\n });\n instance.webContents.once('did-fail-load', () => {\n resolve(instance as BVItem);\n });\n instance.webContents.loadURL(url || 'about:blank');\n });\n }\n\n /**\n * 预加载webContents\n * @param url\n */\n preloadWebContents(url: string) {\n this.preloadWebContentsUrl = url;\n }\n\n // 方法重载声明\n create(options: Omit<ElectronWindowsManagerOptions, 'type'> & { type?: 'BW' }): BWItem;\n create(options: ElectronWindowsManagerOptions & { type: 'BV' }): BVItem;\n create(options: ElectronWindowsManagerOptions): BWItem | BVItem;\n\n create(options: ElectronWindowsManagerOptions): BVItem | BWItem {\n let window: any;\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 // 优先复用预创建实例\n if (options.type === 'BW' && this.preloadedBW) {\n const win = this.preloadedBW;\n this.preloadedBW = null;\n setTimeout(() => this._preloadInstances(), 0);\n win._type = 'BW';\n win._name = options.name || 'anonymous';\n win._extraData = `${options?.extraData || ''}`;\n win.removeAllListeners && win.removeAllListeners();\n win.webContents.removeAllListeners && win.webContents.removeAllListeners();\n this._applyBrowserWindowOptions(win, options);\n win.loadURL(options.url);\n window = win;\n }\n if (options.type === 'BV' && this.preloadedBV) {\n const view = this.preloadedBV;\n this.preloadedBV = null;\n setTimeout(() => this._preloadInstances(), 0);\n view._type = 'BV';\n view._name = options.name || 'anonymous';\n view._extraData = `${options?.extraData || ''}`;\n view.webContents.removeAllListeners && view.webContents.removeAllListeners();\n this._applyBrowserViewOptions(view, options);\n view.webContents.loadURL(options.url);\n window = view;\n }\n try {\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 const preload = browserWindowOptions?.webPreferences?.preload || this.preload;\n if (!window) {\n window = type === 'BV' ?\n new BrowserView(\n lodash.merge(\n (browserWindowOptions || {}),\n {\n webPreferences: {\n webviewTag: true,\n // session: getCustomSession(),\n plugins: true,\n nodeIntegration: true,\n contextIsolation: false,\n // fix bv二次挂载会灰屏\n // backgroundThrottling: false,\n nativeWindowOpen: false,\n webSecurity: false,\n preload: 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 webviewTag: true,\n // session: getCustomSession(),\n plugins: true,\n nodeIntegration: true,\n contextIsolation: false,\n backgroundThrottling: false,\n nativeWindowOpen: false,\n webSecurity: false,\n preload: preload,\n }\n },\n )\n ) as BWItem;\n }\n try {\n remote.enable(window.webContents);\n } catch (error) {\n log('error', 'enable: ', error)\n }\n // @ts-ignore\n try {\n window.id = Number(`${window.id || window.webContents.id}`);\n } catch (error) {\n // log('error', 'set id: ', error)\n }\n // @ts-ignore\n try {\n window._id = Number(`${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._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 /**\n * 判断是否是错误视图\n */\n const isErrorView = `${_url}`.toUpperCase().startsWith(`${errorView?.url}`.toUpperCase());\n if (!isErrorView && _url) {\n // @ts-ignore\n window.loadURL ? window.loadURL(`${errorView?.url}`) : window.webContents.loadURL(`${errorView?.url}`);\n window.webContents.executeJavaScript(`\n var key = '__ELECTRON_WINDOW_MANAGER_DID_FAIL_LOAD_URL__';\n window[key] = \"${_url}\";\n sessionStorage.setItem(key, \"${_url}\");\n `);\n }\n }, 300);\n // @ts-ignore\n window.webContents.on('did-fail-load', (event, errorCode, errorDescription, validatedURL, isMainFrame) => {\n if (isMainFrame) {\n showErrorView();\n }\n });\n window.webContents.on('did-start-loading', () => {\n showErrorView.cancel();\n });\n }\n window.webContents.on('close', () => {\n this.windows.delete(window.id || window._id)\n })\n window.webContents.on('destroyed', () => {\n this.windows.delete(window.id || 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 if (options.browserWindow?.show !== false) {\n window.show()\n }\n // @ts-ignore\n window.on('closed', () => {\n log('log', 'closed', window.id, window._name);\n this.windows.delete(window.id || window._id)\n });\n }\n if (type === 'BV') {\n parentWin?.addBrowserView(window);\n log('log', 'create - addBrowserView')\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._id || window.webContents.id, window);\n log('log', 'create', this.windows.keys())\n const initVal = () => {\n window.webContents.executeJavaScript(`\n try {\n const data = {\n __ELECTRON_WINDOW_MANAGER_WEB_CONTENTS_ID__: ${JSON.stringify(window.webContents.id)},\n __ELECTRON_WINDOW_MANAGER_TYPE__: ${JSON.stringify(window._type)},\n __ELECTRON_WINDOW_MANAGER_NAME__: ${JSON.stringify(window._name)},\n __ELECTRON_WINDOW_MANAGER_EXTRA_DATA__: ${JSON.stringify(window._extraData || '')},\n __ELECTRON_WINDOW_MANAGER_PRELOAD__: ${JSON.stringify(preload)}\n };\n Object.entries(data).forEach(([key, value]) => {\n Object.defineProperty(window, key, {\n value,\n writable: false,\n configurable: false,\n enumerable: true\n });\n });\n } catch (error) {}\n `)\n }\n\n // 初始化值\n window.webContents.on('did-finish-load', () => {\n initVal();\n })\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);\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.delete(key)\n }\n } catch (error) {\n log('error', 'get');\n }\n\n if (typeof idOrName === 'number') {\n if (i?.id === idOrName || 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(type: 'BW'): Map<number, BWItem>;\n getAll(type: 'BV'): Map<number, BVItem>;\n getAll(): Map<number, BWItem | BVItem>;\n getAll(type?: 'BW' | 'BV'): Map<number, BWItem | BVItem> {\n log('log', 'getAll');\n const bwWindows = new Map<number, BWItem>();\n const bvWindows = new Map<number, BVItem>();\n this.windows.forEach((win, key) => {\n if (!(win && win?.webContents?.isDestroyed && !win?.webContents?.isDestroyed?.())) {\n this.windows.delete(key)\n }\n if (win?._type === 'BW') {\n bwWindows.set(key, win as BWItem);\n }\n if (win?._type === 'BV') {\n bvWindows.set(key, win as BVItem);\n }\n })\n if (type === 'BW') {\n return bwWindows;\n }\n if (type === 'BV') {\n return bvWindows;\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 || 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 private _applyBrowserWindowOptions(win: BWItem, options: ElectronWindowsManagerOptions) {\n const browserWindowOptions = options.browserWindow as Partial<BrowserWindowConstructorOptions> || {};\n // 设置父窗口\n if (typeof browserWindowOptions.parent === 'number') {\n const parentWin = BrowserWindow.fromId(browserWindowOptions.parent);\n if (parentWin) {\n win.setParentWindow(parentWin);\n }\n }\n // 设置窗口大小\n if (typeof browserWindowOptions.width === 'number' && typeof browserWindowOptions.height === 'number') {\n win.setBounds({ width: browserWindowOptions.width, height: browserWindowOptions.height });\n }\n // 置顶\n if (typeof browserWindowOptions.alwaysOnTop === 'boolean') {\n win.setAlwaysOnTop(browserWindowOptions.alwaysOnTop);\n }\n // 可继续扩展其他动态属性\n }\n\n private _applyBrowserViewOptions(view: BVItem, options: ElectronWindowsManagerOptions) {\n const browserWindowOptions = options.browserWindow as Partial<BrowserWindowConstructorOptions> || {};\n let parentWin: BrowserWindow | undefined;\n if (typeof browserWindowOptions.parent === 'number') {\n parentWin = BrowserWindow.fromId(browserWindowOptions.parent) || undefined;\n if (parentWin) {\n parentWin.addBrowserView(view);\n }\n }\n // 设置视图大小\n if (typeof browserWindowOptions.width === 'number' && typeof browserWindowOptions.height === 'number') {\n view.setBounds({ x: 0, y: 0, width: browserWindowOptions.width, height: browserWindowOptions.height });\n }\n // 可继续扩展其他动态属性\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, preloadWebContentsUrl?: 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, preloadWebContentsUrl)\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 || 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 || 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 || 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 || i._id] = {\n winId: Number(`${i?.id || 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 // @ts-ignore\n return win?.id || 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 if (data?.type === 'borrowView_getBounds') {\n const opt = data as {\n type: 'borrowView_getBounds';\n data: {\n webContentId: number;\n options: {};\n };\n };\n const bv = wm.get(opt.data.webContentId)\n if (bv) {\n return bv.getBounds()\n }\n return undefined\n }\n if (data?.type === 'borrowView_setBounds') {\n const opt = data as {\n type: 'borrowView_setBounds';\n data: {\n webContentId: number;\n options: {\n x: number;\n y: number;\n width: number;\n height: number;\n };\n };\n };\n const bv = wm.get(opt.data.webContentId)\n if (bv) {\n bv.setBounds(opt.data.options)\n }\n return undefined\n }\n if (data?.type === 'borrowView_setAutoResize') {\n const opt = data as {\n type: 'borrowView_setAutoResize';\n data: {\n webContentId: number;\n options: {\n width: boolean;\n height: boolean;\n horizontal: boolean;\n vertical: boolean;\n };\n };\n };\n const bv = wm.get(opt.data.webContentId) as BVItem;\n if (bv) {\n bv.setAutoResize(opt.data.options)\n }\n return undefined\n }\n if (data?.type === 'borrowView_setBackgroundColor') {\n const opt = data as {\n type: 'borrowView_setBackgroundColor';\n data: {\n webContentId: number;\n options: string;\n };\n };\n const bv = wm.get(opt.data.webContentId) as BVItem;\n if (bv) {\n bv.setBackgroundColor(opt.data.options)\n }\n return undefined\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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"}
package/main/index.d.ts CHANGED
@@ -6,8 +6,20 @@ export declare class WindowsManager {
6
6
  loadingViewUrl: string | undefined;
7
7
  errorViewUrl: string | undefined;
8
8
  preload?: string;
9
+ preloadWebContentsUrl?: string;
9
10
  windows: Map<number, BWItem | BVItem>;
10
- constructor(preload?: string, loadingViewUrl?: string, errorViewUrl?: string);
11
+ preloadedBW: BWItem | null;
12
+ preloadedBV: BVItem | null;
13
+ preloading: boolean;
14
+ constructor(preload?: string, loadingViewUrl?: string, errorViewUrl?: string, preloadUrl?: string);
15
+ private _preloadInstances;
16
+ private _createPreloadBW;
17
+ private _createPreloadBV;
18
+ /**
19
+ * 预加载webContents
20
+ * @param url
21
+ */
22
+ preloadWebContents(url: string): void;
11
23
  create(options: Omit<ElectronWindowsManagerOptions, 'type'> & {
12
24
  type?: 'BW';
13
25
  }): BWItem;
@@ -23,7 +35,9 @@ export declare class WindowsManager {
23
35
  close(idOrName: string | number): boolean;
24
36
  closeAll(): void;
25
37
  getPreload(): string | undefined;
38
+ private _applyBrowserWindowOptions;
39
+ private _applyBrowserViewOptions;
26
40
  }
27
41
  export declare let isInitialized: boolean;
28
- export declare const initialize: (preload?: string, loadingViewUrl?: string, errorViewUrl?: string) => WindowsManager;
42
+ export declare const initialize: (preload?: string, loadingViewUrl?: string, errorViewUrl?: string, preloadWebContentsUrl?: string) => WindowsManager;
29
43
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
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,MAAM,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAE/E,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,MAAM,GAAG,MAAM,CAAC,CAAC;gBAC1B,OAAO,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;IAQ5E,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,6BAA6B,EAAE,MAAM,CAAC,GAAG;QAAE,IAAI,CAAC,EAAE,IAAI,CAAA;KAAE,GAAG,MAAM;IACtF,MAAM,CAAC,OAAO,EAAE,6BAA6B,GAAG;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,GAAG,MAAM;IACvE,MAAM,CAAC,OAAO,EAAE,6BAA6B,GAAG,MAAM,GAAG,MAAM;IAkL/D,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,6BAA6B;IAmF5E,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS;IA6B3D,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IACvC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IACvC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAyBtC,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAqC/B,QAAQ;IA0BR,UAAU;CAIX;AAID,eAAO,IAAI,aAAa,SAAQ,CAAC;AAEjC,eAAO,MAAM,UAAU,aAAc,MAAM,mBAAmB,MAAM,iBAAiB,MAAM,KAAG,cA6M7F,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,MAAM,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAE/E,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;IAEjB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IACtC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAClC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAClC,UAAU,EAAE,OAAO,CAAS;gBAChB,OAAO,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;YAWnF,iBAAiB;IAc/B,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,gBAAgB;IAyBxB;;;OAGG;IACH,kBAAkB,CAAC,GAAG,EAAE,MAAM;IAK9B,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,6BAA6B,EAAE,MAAM,CAAC,GAAG;QAAE,IAAI,CAAC,EAAE,IAAI,CAAA;KAAE,GAAG,MAAM;IACtF,MAAM,CAAC,OAAO,EAAE,6BAA6B,GAAG;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,GAAG,MAAM;IACvE,MAAM,CAAC,OAAO,EAAE,6BAA6B,GAAG,MAAM,GAAG,MAAM;IA+O/D,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,6BAA6B;IAmF5E,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS;IA6B3D,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IACvC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IACvC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAyBtC,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAqC/B,QAAQ;IA0BR,UAAU;IAKV,OAAO,CAAC,0BAA0B;IAoBlC,OAAO,CAAC,wBAAwB;CAejC;AAID,eAAO,IAAI,aAAa,SAAQ,CAAC;AAEjC,eAAO,MAAM,UAAU,aAAc,MAAM,mBAAmB,MAAM,iBAAiB,MAAM,0BAA0B,MAAM,KAAG,cA6M7H,CAAA"}
package/main/index.js CHANGED
@@ -35,17 +35,121 @@ const enable = (win) => {
35
35
  remote__namespace.enable(win);
36
36
  };
37
37
  class WindowsManager {
38
- constructor(preload, loadingViewUrl, errorViewUrl) {
38
+ constructor(preload, loadingViewUrl, errorViewUrl, preloadUrl) {
39
+ this.preloadedBW = null;
40
+ this.preloadedBV = null;
41
+ this.preloading = false;
39
42
  this.preload = preload;
40
43
  this.windows = new Map();
41
44
  this.loadingViewUrl = `${loadingViewUrl ?? ''}`;
42
45
  this.errorViewUrl = `${errorViewUrl ?? ''}`;
46
+ this.preloadWebContentsUrl = `${preloadUrl ?? ''}`;
47
+ if (this.preloadWebContentsUrl) {
48
+ this._preloadInstances();
49
+ }
50
+ }
51
+ async _preloadInstances() {
52
+ if (this.preloading)
53
+ return;
54
+ this.preloading = true;
55
+ try {
56
+ if (this.preloadWebContentsUrl) {
57
+ this.preloadedBW = await this._createPreloadBW();
58
+ this.preloadedBV = await this._createPreloadBV();
59
+ }
60
+ }
61
+ catch (e) {
62
+ log('error', '预创建实例失败', e);
63
+ }
64
+ this.preloading = false;
65
+ }
66
+ _createPreloadBW() {
67
+ return new Promise((resolve) => {
68
+ const preload = this.preload;
69
+ const url = this.preloadWebContentsUrl;
70
+ const instance = new electron.BrowserWindow({
71
+ show: false,
72
+ webPreferences: {
73
+ webviewTag: true,
74
+ plugins: true,
75
+ nodeIntegration: true,
76
+ contextIsolation: false,
77
+ backgroundThrottling: false,
78
+ webSecurity: false,
79
+ preload: preload,
80
+ }
81
+ });
82
+ instance.webContents.once('did-finish-load', () => {
83
+ resolve(instance);
84
+ });
85
+ instance.webContents.once('did-fail-load', () => {
86
+ resolve(instance);
87
+ });
88
+ instance.loadURL(url || 'about:blank');
89
+ });
90
+ }
91
+ _createPreloadBV() {
92
+ return new Promise((resolve) => {
93
+ const preload = this.preload;
94
+ const url = this.preloadWebContentsUrl;
95
+ const instance = new electron.BrowserView({
96
+ webPreferences: {
97
+ webviewTag: true,
98
+ plugins: true,
99
+ nodeIntegration: true,
100
+ contextIsolation: false,
101
+ // backgroundThrottling: false,
102
+ webSecurity: false,
103
+ preload: preload,
104
+ }
105
+ });
106
+ instance.webContents.once('did-finish-load', () => {
107
+ resolve(instance);
108
+ });
109
+ instance.webContents.once('did-fail-load', () => {
110
+ resolve(instance);
111
+ });
112
+ instance.webContents.loadURL(url || 'about:blank');
113
+ });
114
+ }
115
+ /**
116
+ * 预加载webContents
117
+ * @param url
118
+ */
119
+ preloadWebContents(url) {
120
+ this.preloadWebContentsUrl = url;
43
121
  }
44
122
  create(options) {
45
123
  let window;
124
+ const { type = 'BW', name = 'anonymous', url, loadingView = { url: undefined }, errorView = { url: undefined }, browserWindow: browserWindowOptions, openDevTools = false, preventOriginClose = false, } = options;
125
+ options.type = type;
126
+ // 优先复用预创建实例
127
+ if (options.type === 'BW' && this.preloadedBW) {
128
+ const win = this.preloadedBW;
129
+ this.preloadedBW = null;
130
+ setTimeout(() => this._preloadInstances(), 0);
131
+ win._type = 'BW';
132
+ win._name = options.name || 'anonymous';
133
+ win._extraData = `${options?.extraData || ''}`;
134
+ win.removeAllListeners && win.removeAllListeners();
135
+ win.webContents.removeAllListeners && win.webContents.removeAllListeners();
136
+ this._applyBrowserWindowOptions(win, options);
137
+ win.loadURL(options.url);
138
+ window = win;
139
+ }
140
+ if (options.type === 'BV' && this.preloadedBV) {
141
+ const view = this.preloadedBV;
142
+ this.preloadedBV = null;
143
+ setTimeout(() => this._preloadInstances(), 0);
144
+ view._type = 'BV';
145
+ view._name = options.name || 'anonymous';
146
+ view._extraData = `${options?.extraData || ''}`;
147
+ view.webContents.removeAllListeners && view.webContents.removeAllListeners();
148
+ this._applyBrowserViewOptions(view, options);
149
+ view.webContents.loadURL(options.url);
150
+ window = view;
151
+ }
46
152
  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
153
  try {
50
154
  loadingView.url = `${loadingView?.url ?? this.loadingViewUrl}`;
51
155
  lodash.merge(options, {
@@ -76,35 +180,40 @@ class WindowsManager {
76
180
  }
77
181
  log('log', 'create 1: ', options);
78
182
  log('log', 'create 2: ', `parentWin: ${parentWin?.id}`);
79
- window = type === 'BV' ?
80
- new electron.BrowserView(lodash.merge((browserWindowOptions || {}), {
81
- webPreferences: {
82
- // session: getCustomSession(),
83
- plugins: true,
84
- nodeIntegration: true,
85
- contextIsolation: false,
86
- // fix bv二次挂载会灰屏
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
- }));
183
+ const preload = browserWindowOptions?.webPreferences?.preload || this.preload;
184
+ if (!window) {
185
+ window = type === 'BV' ?
186
+ new electron.BrowserView(lodash.merge((browserWindowOptions || {}), {
187
+ webPreferences: {
188
+ webviewTag: true,
189
+ // session: getCustomSession(),
190
+ plugins: true,
191
+ nodeIntegration: true,
192
+ contextIsolation: false,
193
+ // fix bv二次挂载会灰屏
194
+ // backgroundThrottling: false,
195
+ nativeWindowOpen: false,
196
+ webSecurity: false,
197
+ preload: preload,
198
+ }
199
+ }))
200
+ : new electron.BrowserWindow(lodash.merge({
201
+ acceptFirstMouse: true,
202
+ }, (browserWindowOptions || {}), {
203
+ parent: parentWin,
204
+ webPreferences: {
205
+ webviewTag: true,
206
+ // session: getCustomSession(),
207
+ plugins: true,
208
+ nodeIntegration: true,
209
+ contextIsolation: false,
210
+ backgroundThrottling: false,
211
+ nativeWindowOpen: false,
212
+ webSecurity: false,
213
+ preload: preload,
214
+ }
215
+ }));
216
+ }
108
217
  try {
109
218
  remote__namespace.enable(window.webContents);
110
219
  }
@@ -174,6 +283,10 @@ class WindowsManager {
174
283
  }
175
284
  });
176
285
  if (type === 'BW') {
286
+ // @ts-ignore
287
+ if (options.browserWindow?.show !== false) {
288
+ window.show();
289
+ }
177
290
  // @ts-ignore
178
291
  window.on('closed', () => {
179
292
  log('log', 'closed', window.id, window._name);
@@ -190,6 +303,31 @@ class WindowsManager {
190
303
  window.focus ? window.focus() : window.webContents.focus();
191
304
  this.windows.set(window.id || window._id || window.webContents.id, window);
192
305
  log('log', 'create', this.windows.keys());
306
+ const initVal = () => {
307
+ window.webContents.executeJavaScript(`
308
+ try {
309
+ const data = {
310
+ __ELECTRON_WINDOW_MANAGER_WEB_CONTENTS_ID__: ${JSON.stringify(window.webContents.id)},
311
+ __ELECTRON_WINDOW_MANAGER_TYPE__: ${JSON.stringify(window._type)},
312
+ __ELECTRON_WINDOW_MANAGER_NAME__: ${JSON.stringify(window._name)},
313
+ __ELECTRON_WINDOW_MANAGER_EXTRA_DATA__: ${JSON.stringify(window._extraData || '')},
314
+ __ELECTRON_WINDOW_MANAGER_PRELOAD__: ${JSON.stringify(preload)}
315
+ };
316
+ Object.entries(data).forEach(([key, value]) => {
317
+ Object.defineProperty(window, key, {
318
+ value,
319
+ writable: false,
320
+ configurable: false,
321
+ enumerable: true
322
+ });
323
+ });
324
+ } catch (error) {}
325
+ `);
326
+ };
327
+ // 初始化值
328
+ window.webContents.on('did-finish-load', () => {
329
+ initVal();
330
+ });
193
331
  }
194
332
  catch (error) {
195
333
  log('error', 'create', error);
@@ -387,11 +525,45 @@ class WindowsManager {
387
525
  log('log', 'getPreload');
388
526
  return this.preload;
389
527
  }
528
+ _applyBrowserWindowOptions(win, options) {
529
+ const browserWindowOptions = options.browserWindow || {};
530
+ // 设置父窗口
531
+ if (typeof browserWindowOptions.parent === 'number') {
532
+ const parentWin = electron.BrowserWindow.fromId(browserWindowOptions.parent);
533
+ if (parentWin) {
534
+ win.setParentWindow(parentWin);
535
+ }
536
+ }
537
+ // 设置窗口大小
538
+ if (typeof browserWindowOptions.width === 'number' && typeof browserWindowOptions.height === 'number') {
539
+ win.setBounds({ width: browserWindowOptions.width, height: browserWindowOptions.height });
540
+ }
541
+ // 置顶
542
+ if (typeof browserWindowOptions.alwaysOnTop === 'boolean') {
543
+ win.setAlwaysOnTop(browserWindowOptions.alwaysOnTop);
544
+ }
545
+ // 可继续扩展其他动态属性
546
+ }
547
+ _applyBrowserViewOptions(view, options) {
548
+ const browserWindowOptions = options.browserWindow || {};
549
+ let parentWin;
550
+ if (typeof browserWindowOptions.parent === 'number') {
551
+ parentWin = electron.BrowserWindow.fromId(browserWindowOptions.parent) || undefined;
552
+ if (parentWin) {
553
+ parentWin.addBrowserView(view);
554
+ }
555
+ }
556
+ // 设置视图大小
557
+ if (typeof browserWindowOptions.width === 'number' && typeof browserWindowOptions.height === 'number') {
558
+ view.setBounds({ x: 0, y: 0, width: browserWindowOptions.width, height: browserWindowOptions.height });
559
+ }
560
+ // 可继续扩展其他动态属性
561
+ }
390
562
  }
391
563
  // @ts-ignore
392
564
  global['__ELECTRON_WINDOWS_MANAGER__'] = undefined;
393
565
  exports.isInitialized = false;
394
- const initialize = (preload, loadingViewUrl, errorViewUrl) => {
566
+ const initialize = (preload, loadingViewUrl, errorViewUrl, preloadWebContentsUrl) => {
395
567
  // @ts-ignore
396
568
  if (exports.isInitialized && global['__ELECTRON_WINDOWS_MANAGER__']) {
397
569
  // @ts-ignore
@@ -399,7 +571,7 @@ const initialize = (preload, loadingViewUrl, errorViewUrl) => {
399
571
  }
400
572
  exports.isInitialized = true;
401
573
  // @ts-ignore
402
- const wm = global['__ELECTRON_WINDOWS_MANAGER__'] = new WindowsManager(preload, loadingViewUrl, errorViewUrl);
574
+ const wm = global['__ELECTRON_WINDOWS_MANAGER__'] = new WindowsManager(preload, loadingViewUrl, errorViewUrl, preloadWebContentsUrl);
403
575
  eIpc.mainIPC.handleRenderer('__ELECTRON_WINDOW_MANAGER_IPC_CHANNEL__', async (data) => {
404
576
  if (data?.type === 'create') {
405
577
  const opt = data;
package/main/index.js.map CHANGED
@@ -1 +1 @@
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>;\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 // 方法重载声明\n create(options: Omit<ElectronWindowsManagerOptions, 'type'> & { type?: 'BW' }): BWItem;\n create(options: ElectronWindowsManagerOptions & { type: 'BV' }): BVItem;\n create(options: ElectronWindowsManagerOptions): BWItem | BVItem;\n\n create(options: ElectronWindowsManagerOptions): BVItem | BWItem {\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 webPreferences: {\n // session: getCustomSession(),\n plugins: true,\n nodeIntegration: true,\n contextIsolation: false,\n // fix bv二次挂载会灰屏\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 = Number(`${window.id || window.webContents.id}`);\n } catch (error) {\n // log('error', 'set id: ', error)\n }\n // @ts-ignore\n try {\n window._id = Number(`${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._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 /**\n * 判断是否是错误视图\n */\n const isErrorView = `${_url}`.toUpperCase().startsWith(`${errorView?.url}`.toUpperCase());\n if (!isErrorView && _url) {\n // @ts-ignore\n window.loadURL ? window.loadURL(`${errorView?.url}`) : window.webContents.loadURL(`${errorView?.url}`);\n window.webContents.executeJavaScript(`\n var key = '__ELECTRON_WINDOW_MANAGER_DID_FAIL_LOAD_URL__';\n window[key] = \"${_url}\";\n sessionStorage.setItem(key, \"${_url}\");\n `);\n }\n }, 300);\n // @ts-ignore\n window.webContents.on('did-fail-load', (event, errorCode, errorDescription, validatedURL, isMainFrame) => {\n if (isMainFrame) {\n showErrorView();\n }\n });\n window.webContents.on('did-start-loading', () => {\n showErrorView.cancel();\n });\n }\n window.webContents.on('close', () => {\n this.windows.delete(window.id || window._id)\n })\n window.webContents.on('destroyed', () => {\n this.windows.delete(window.id || 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.delete(window.id || window._id)\n });\n }\n if (type === 'BV') {\n parentWin?.addBrowserView(window);\n log('log', 'create - addBrowserView')\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._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);\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.delete(key)\n }\n } catch (error) {\n log('error', 'get');\n }\n\n if (typeof idOrName === 'number') {\n if (i?.id === idOrName || 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(type: 'BW'): Map<number, BWItem>;\n getAll(type: 'BV'): Map<number, BVItem>;\n getAll(): Map<number, BWItem | BVItem>;\n getAll(type?: 'BW' | 'BV'): Map<number, BWItem | BVItem> {\n log('log', 'getAll');\n const bwWindows = new Map<number, BWItem>();\n const bvWindows = new Map<number, BVItem>();\n this.windows.forEach((win, key) => {\n if (!(win && win?.webContents?.isDestroyed && !win?.webContents?.isDestroyed?.())) {\n this.windows.delete(key)\n }\n if (win?._type === 'BW') {\n bwWindows.set(key, win as BWItem);\n }\n if (win?._type === 'BV') {\n bvWindows.set(key, win as BVItem);\n }\n })\n if (type === 'BW') {\n return bwWindows;\n }\n if (type === 'BV') {\n return bvWindows;\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 || 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 || 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 || 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 || 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 || i._id] = {\n winId: Number(`${i?.id || 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 // @ts-ignore\n return win?.id || 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 if (data?.type === 'borrowView_getBounds') {\n const opt = data as {\n type: 'borrowView_getBounds';\n data: {\n webContentId: number;\n options: {};\n };\n };\n const bv = wm.get(opt.data.webContentId)\n if (bv) {\n return bv.getBounds()\n }\n return undefined\n }\n if (data?.type === 'borrowView_setBounds') {\n const opt = data as {\n type: 'borrowView_setBounds';\n data: {\n webContentId: number;\n options: {\n x: number;\n y: number;\n width: number;\n height: number;\n };\n };\n };\n const bv = wm.get(opt.data.webContentId)\n if (bv) {\n bv.setBounds(opt.data.options)\n }\n return undefined\n }\n if (data?.type === 'borrowView_setAutoResize') {\n const opt = data as {\n type: 'borrowView_setAutoResize';\n data: {\n webContentId: number;\n options: {\n width: boolean;\n height: boolean;\n horizontal: boolean;\n vertical: boolean;\n };\n };\n };\n const bv = wm.get(opt.data.webContentId) as BVItem;\n if (bv) {\n bv.setAutoResize(opt.data.options)\n }\n return undefined\n }\n if (data?.type === 'borrowView_setBackgroundColor') {\n const opt = data as {\n type: 'borrowView_setBackgroundColor';\n data: {\n webContentId: number;\n options: string;\n };\n };\n const bv = wm.get(opt.data.webContentId) as BVItem;\n if (bv) {\n bv.setBackgroundColor(opt.data.options)\n }\n return undefined\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":";;;;;;;;;;;;;;;;;;AAMa,MAAA,gBAAgB,GAAG,CAAC,MAAK;AACpC,IAAA,IAAI,aAAsB,CAAC;AAC3B,IAAA,OAAO,MAAK;QACV,IAAI,CAAC,aAAa,EAAE;AAClB,YAAA,aAAa,GAAGA,gBAAO,CAAC,aAAa,CAAC,iCAAiC,CAAC,CAAC;SAC1E;AACD,QAAA,OAAO,aAAa,CAAC;AACvB,KAAC,CAAA;AACH,CAAC,IAAI;AAELC,YAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAK;AACnB,IAAA,gBAAgB,EAAE,CAAC;AACrB,CAAC,CAAC,CAAC;AAEH,IAAI,CAACC,iBAAM,CAAC,aAAa,EAAE,EAAE;IAC3BA,iBAAM,CAAC,UAAU,EAAE,CAAC;AACtB,CAAC;AAEY,MAAA,MAAM,GAAG,CAAC,GAAgB,KAAI;AACzC,IAAAA,iBAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AACpB,EAAC;MAEY,cAAc,CAAA;AAKzB,IAAA,WAAA,CAAY,OAAgB,EAAE,cAAuB,EAAE,YAAqB,EAAA;AAC1E,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,CAAA,EAAG,cAAc,IAAI,EAAE,EAAE,CAAC;QAChD,IAAI,CAAC,YAAY,GAAG,CAAA,EAAG,YAAY,IAAI,EAAE,EAAE,CAAC;KAC7C;AAOD,IAAA,MAAM,CAAC,OAAsC,EAAA;AAC3C,QAAA,IAAI,MAAW,CAAC;AAChB,QAAA,IAAI;AACF,YAAA,MAAM,EACJ,IAAI,GAAG,IAAI,EACX,IAAI,GAAG,WAAW,EAClB,GAAG,EACH,WAAW,GAAG,EAAC,GAAG,EAAE,SAAS,EAAC,EAC9B,SAAS,GAAG,EAAC,GAAG,EAAE,SAAS,EAAC,EAC5B,aAAa,EAAE,oBAAoB,EACnC,YAAY,GAAG,KAAK,EACpB,kBAAkB,GAAG,KAAK,GAC3B,GAAG,OAAO,CAAC;AACZ,YAAA,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;AACpB,YAAA,IAAI;AACF,gBAAA,WAAW,CAAC,GAAG,GAAG,CAAA,EAAG,WAAW,EAAE,GAAG,IAAI,IAAI,CAAC,cAAc,CAAA,CAAE,CAAC;AAC/D,gBAAA,MAAM,CAAC,KAAK,CACV,OAAO,EACP;oBACE,WAAW;AACZ,iBAAA,CACF,CAAA;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,GAAG,CAAC,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;aACtE;AACD,YAAA,IAAI;AACF,gBAAA,SAAS,CAAC,GAAG,GAAG,CAAA,EAAG,SAAS,EAAE,GAAG,IAAI,IAAI,CAAC,YAAY,CAAA,CAAE,CAAC;AACzD,gBAAA,MAAM,CAAC,KAAK,CACV,OAAO,EACP;oBACE,SAAS;AACV,iBAAA,CACF,CAAA;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,GAAG,CAAC,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;aAChE;YACD,IAAI,SAAS,GAA6C,SAAS,CAAC;AACpE,YAAA,IAAI,OAAO,oBAAoB,EAAE,MAAM,KAAK,QAAQ,EAAE;gBACpD,SAAS,GAAGC,sBAAa,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,SAAS,CAAC;gBAC5E,IAAI,SAAS,EAAE;AACb,oBAAA,oBAAoB,CAAC,MAAM,GAAG,SAAS,CAAC;iBACzC;qBAAM;AACL,oBAAA,oBAAoB,CAAC,MAAM,GAAG,SAAS,CAAC;iBACzC;aACF;AACD,YAAA,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;YAClC,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,CAAc,WAAA,EAAA,SAAS,EAAE,EAAE,CAAE,CAAA,CAAC,CAAC;AACxD,YAAA,MAAM,GAAG,IAAI,KAAK,IAAI;gBACpB,IAAIC,oBAAW,CACb,MAAM,CAAC,KAAK,EACT,oBAAoB,IAAI,EAAE,GAC3B;AACE,oBAAA,cAAc,EAAE;;AAEd,wBAAA,OAAO,EAAE,IAAI;AACb,wBAAA,eAAe,EAAE,IAAI;AACrB,wBAAA,gBAAgB,EAAE,KAAK;;;AAGvB,wBAAA,gBAAgB,EAAE,KAAK;AACvB,wBAAA,WAAW,EAAE,KAAK;wBAClB,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO;AACvE,qBAAA;AACF,iBAAA,CACF,CACQ;AACb,kBAAE,IAAID,sBAAa,CACf,MAAM,CAAC,KAAK,CACV;AACE,oBAAA,gBAAgB,EAAE,IAAI;AACvB,iBAAA,GACA,oBAAoB,IAAI,EAAE,GAC3B;AACE,oBAAA,MAAM,EAAE,SAAS;AACjB,oBAAA,cAAc,EAAE;;AAEd,wBAAA,OAAO,EAAE,IAAI;AACb,wBAAA,eAAe,EAAE,IAAI;AACrB,wBAAA,gBAAgB,EAAE,KAAK;AACvB,wBAAA,oBAAoB,EAAE,KAAK;AAC3B,wBAAA,gBAAgB,EAAE,KAAK;AACvB,wBAAA,WAAW,EAAE,KAAK;wBAClB,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO;AACvE,qBAAA;AACF,iBAAA,CACF,CACQ,CAAC;AACd,YAAA,IAAI;AACF,gBAAAD,iBAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;aACnC;YAAC,OAAO,KAAK,EAAE;AACd,gBAAA,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,CAAA;aAChC;;AAED,YAAA,IAAI;AACF,gBAAA,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,WAAW,CAAC,EAAE,CAAA,CAAE,CAAC,CAAC;aAC7D;YAAC,OAAO,KAAK,EAAE;;aAEf;;AAED,YAAA,IAAI;AACF,gBAAA,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,WAAW,CAAC,EAAE,CAAA,CAAE,CAAC,CAAC;aAC9D;YAAC,OAAO,KAAK,EAAE;;aAEf;AACD,YAAA,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;AACpB,YAAA,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;YACpB,MAAM,CAAC,UAAU,GAAG,CAAG,EAAA,OAAO,EAAE,SAAS,IAAI,EAAE,CAAA,CAAE,CAAC;AAClD,YAAA,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9D,YAAA,IAAI,WAAW,EAAE,GAAG,EAAE;AACpB,gBAAA,IAAI,IAAI,KAAK,IAAI,EAAE;;AAEjB,oBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;iBACvC;aACF;AACD,YAAA,IAAI,SAAS,EAAE,GAAG,EAAE;AAClB,gBAAA,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAK;oBACzC,MAAM,IAAI,GAAG,MAAM,EAAE,WAAW,EAAE,MAAM,IAAI,IAAI,GAAG,CAAC;AACpD;;AAEG;oBACH,MAAM,WAAW,GAAG,CAAG,EAAA,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,CAAG,EAAA,SAAS,EAAE,GAAG,CAAA,CAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AAC1F,oBAAA,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;;AAExB,wBAAA,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA,EAAG,SAAS,EAAE,GAAG,CAAE,CAAA,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA,EAAG,SAAS,EAAE,GAAG,CAAA,CAAE,CAAC,CAAC;AACvG,wBAAA,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAA;;+BAElB,IAAI,CAAA;6CACU,IAAI,CAAA;AACpC,YAAA,CAAA,CAAC,CAAC;qBACJ;iBACF,EAAE,GAAG,CAAC,CAAC;;AAER,gBAAA,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,WAAW,KAAI;oBACvG,IAAI,WAAW,EAAE;AACf,wBAAA,aAAa,EAAE,CAAC;qBACjB;AACH,iBAAC,CAAC,CAAC;gBACH,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,mBAAmB,EAAE,MAAK;oBAC9C,aAAa,CAAC,MAAM,EAAE,CAAC;AACzB,iBAAC,CAAC,CAAC;aACJ;YACD,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAK;AAClC,gBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,GAAG,CAAC,CAAA;AAC9C,aAAC,CAAC,CAAA;YACF,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,MAAK;AACtC,gBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,GAAG,CAAC,CAAA;AAC9C,aAAC,CAAC,CAAA;YACF,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,MAAK;gBACtC,IAAI,YAAY,EAAE;AAChB,oBAAA,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;iBACnC;AACH,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,IAAI,KAAK,IAAI,EAAE;;AAEjB,gBAAA,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAK;AACvB,oBAAA,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9C,oBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,GAAG,CAAC,CAAA;AAC9C,iBAAC,CAAC,CAAC;aACJ;AACD,YAAA,IAAI,IAAI,KAAK,IAAI,EAAE;AACjB,gBAAA,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;AAClC,gBAAA,GAAG,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAA;aACtC;;YAED,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;;AAEvF,YAAA,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YAC3D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAC3E,YAAA,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;SAC1C;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;SAC9B;AAED,QAAA,OAAO,MAAM,CAAC;KACf;IAED,eAAe,CAAC,MAAc,EAAE,aAA4C,EAAA;QAC1E,IAAI,aAAa,EAAE;YACjB,MAAM,EACJ,WAAW,EACX,qBAAqB,GAAG,KAAK,GAC9B,GAAG,aAAa,CAAC;AAClB,YAAA,IAAI,YAAY,GAAG,IAAIE,oBAAW,CAAC;AACjC,gBAAA,cAAc,EAAE;;AAEd,oBAAA,gBAAgB,EAAE,KAAK;AACvB,oBAAA,eAAe,EAAE,IAAI;;AAErB,oBAAA,WAAW,EAAE,KAAK;AACnB,iBAAA;AACF,aAAA,CAAC,CAAC;AAEH,YAAA,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE;gBACxB,OAAO;aACR;YAED,MAAM,eAAe,GAAG,MAAK;gBAC3B,MAAM,CAAE,SAAS,EAAE,UAAU,CAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;AACnD,gBAAA,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;gBACpC,YAAY,CAAC,SAAS,CAAC;AACrB,oBAAA,CAAC,EAAE,CAAC;AACJ,oBAAA,CAAC,EAAE,CAAC;oBACJ,KAAK,EAAE,SAAS,IAAI,EAAE;oBACtB,MAAM,EAAE,UAAU,IAAI,EAAE;AACzB,iBAAA,CAAC,CAAC;gBACH,GAAG,CAAC,KAAK,EAAE,iBAAiB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC5C,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,IAAI,EAAE,CAAC,CAAA;AAC1D,aAAC,CAAC;AAEF,YAAA,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAK;AACrC,gBAAA,IAAI,YAAY,CAAC,WAAW,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE;AACvE,oBAAA,YAAY,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;iBAClC;AACD,gBAAA,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE;oBACxB,OAAO;iBACR;gBAED,IAAI,MAAM,EAAE;AACV,oBAAA,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;iBACxC;aACF,EAAE,GAAG,CAAC,CAAC;AAER,YAAA,eAAe,EAAE,CAAC;YAElB,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAK;AACvC,gBAAA,IAAI,YAAY,CAAC,WAAW,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE;AACvE,oBAAA,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE;wBACxB,OAAO;qBACR;oBACD,MAAM,CAAE,SAAS,EAAE,UAAU,CAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnD,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,IAAI,EAAE,EAAE,CAAC,CAAC;iBAC1F;AACH,aAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAET,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,KAAI;gBAC3C,IAAI,qBAAqB,EAAE;oBACzB,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,OAAO;iBACR;AACD,gBAAA,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE;oBACxB,OAAO;iBACR;AACD,gBAAA,IAAI,YAAY,CAAC,WAAW,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE;AACvE,oBAAA,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;iBACrC;qBAAM;;AAEL,oBAAA,YAAY,GAAG,IAAIA,oBAAW,EAAE,CAAC;AACjC,oBAAA,eAAe,EAAE,CAAC;iBACnB;AACH,aAAC,CAAC,CAAC;YACH,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YAC9C,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAC5C,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;YACjD,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;YAClD,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;YACpD,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;SACtD;KACF;AAED,IAAA,GAAG,CAAC,QAAyB,EAAA;AAC3B,QAAA,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC5B,QAAA,IAAI,GAAoB,CAAE;QAC1B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,KAAI;AAC9B,YAAA,IAAI;gBACF,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,WAAW,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,IAAI,CAAC,EAAE;AAC3E,oBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;iBACzB;aACF;YAAC,OAAO,KAAK,EAAE;AACd,gBAAA,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;aACrB;AAED,YAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AAChC,gBAAA,IAAI,CAAC,EAAE,EAAE,KAAK,QAAQ,IAAI,CAAC,EAAE,GAAG,KAAK,QAAQ,EAAE;oBAC7C,GAAG,GAAG,CAAC,CAAC;iBACT;aACF;AAAM,iBAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AACvC,gBAAA,IAAI,CAAC,EAAE,KAAK,KAAK,QAAQ,EAAE;oBACzB,GAAG,GAAG,CAAC,CAAC;iBACT;aACF;AACH,SAAC,CAAC,CAAA;;AAEF,QAAA,IAAI,GAAG,IAAI,GAAG,EAAE,WAAW,EAAE,WAAW,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,WAAW,IAAI,EAAE;AAC9E,YAAA,OAAO,GAAG,CAAC;SACZ;AACD,QAAA,OAAO,SAAS,CAAC;KAClB;AAKD,IAAA,MAAM,CAAC,IAAkB,EAAA;AACvB,QAAA,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACrB,QAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;AAC5C,QAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC5C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,KAAI;YAChC,IAAI,EAAE,GAAG,IAAI,GAAG,EAAE,WAAW,EAAE,WAAW,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,WAAW,IAAI,CAAC,EAAE;AACjF,gBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;aACzB;AACD,YAAA,IAAI,GAAG,EAAE,KAAK,KAAK,IAAI,EAAE;AACvB,gBAAA,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,GAAa,CAAC,CAAC;aACnC;AACD,YAAA,IAAI,GAAG,EAAE,KAAK,KAAK,IAAI,EAAE;AACvB,gBAAA,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,GAAa,CAAC,CAAC;aACnC;AACH,SAAC,CAAC,CAAA;AACF,QAAA,IAAI,IAAI,KAAK,IAAI,EAAE;AACjB,YAAA,OAAO,SAAS,CAAC;SAClB;AACD,QAAA,IAAI,IAAI,KAAK,IAAI,EAAE;AACjB,YAAA,OAAO,SAAS,CAAC;SAClB;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;AAED,IAAA,KAAK,CAAC,QAAyB,EAAA;AAC7B,QAAA,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC9B,IAAI,GAAG,GAAgC,SAAS,CAAC;QACjD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACzB,YAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AAChC,gBAAA,IAAI,CAAC,EAAE,EAAE,KAAK,QAAQ,IAAI,CAAC,EAAE,GAAG,KAAK,QAAQ,EAAE;oBAC7C,GAAG,GAAG,CAAC,CAAC;iBACT;aACF;AAAM,iBAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AACvC,gBAAA,IAAI,CAAC,EAAE,KAAK,KAAK,QAAQ,EAAE;oBACzB,GAAG,GAAG,CAAC,CAAC;iBACT;aACF;AACH,SAAC,CAAC,CAAA;;QAEF,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;;QAEnC,IAAI,GAAG,EAAE;;AAEP,YAAA,IAAI,GAAG,CAAC,KAAK,KAAK,IAAI,EAAE;AACtB,gBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAG;AACvB,oBAAA,IAAI,CAAC,EAAE,KAAK,KAAK,IAAI,EAAE;wBACrB,MAAM,IAAI,GAAG,CAAW,CAAC;AACzB,wBAAA,IAAI,CAAC,iBAAiB,CAAC,GAAa,CAAC,CAAC;qBACvC;AACH,iBAAC,CAAC,CAAA;aACH;;AAED,YAAA,GAAG,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;;AAE3B,YAAA,GAAG,EAAE,KAAK,IAAI,CAAC;;AAEf,YAAA,GAAG,EAAE,OAAO,IAAI,CAAC;SAClB;AACD,QAAA,OAAO,IAAI,CAAC;KACb;IAED,QAAQ,GAAA;AACN,QAAA,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AAC3B,YAAA,IAAI;gBACF,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;;AAEnC,gBAAA,IAAI,GAAG,CAAC,KAAK,KAAK,IAAI,EAAE;AACtB,oBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAG;AACvB,wBAAA,IAAI,CAAC,EAAE,KAAK,KAAK,IAAI,EAAE;4BACrB,MAAM,IAAI,GAAG,CAAW,CAAC;AACzB,4BAAA,IAAI,CAAC,iBAAiB,CAAC,GAAa,CAAC,CAAC;yBACvC;AACH,qBAAC,CAAC,CAAA;iBACH;;AAED,gBAAA,GAAG,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;;AAE3B,gBAAA,GAAG,EAAE,KAAK,IAAI,CAAC;;AAEf,gBAAA,GAAG,EAAE,OAAO,IAAI,CAAC;aAClB;YAAC,OAAO,KAAK,EAAE;aAEf;AACH,SAAC,CAAC,CAAA;KACH;IAED,UAAU,GAAA;AACR,QAAA,GAAG,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;AACF,CAAA;AACD;AACA,MAAM,CAAC,8BAA8B,CAAC,GAAG,SAAS,CAAC;AAExCC,qBAAa,GAAG,MAAM;AAEpB,MAAA,UAAU,GAAG,CAAC,OAAgB,EAAE,cAAuB,EAAE,YAAqB,KAAoB;;AAE7G,IAAA,IAAIA,qBAAa,IAAI,MAAM,CAAC,8BAA8B,CAAC,EAAE;;AAE3D,QAAA,OAAO,MAAM,CAAC,8BAA8B,CAAC,CAAC;KAC/C;IACDA,qBAAa,GAAG,IAAI,CAAC;;AAErB,IAAA,MAAM,EAAE,GAAG,MAAM,CAAC,8BAA8B,CAAC,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,YAAY,CAAC,CAAA;IAC7G,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,yCAAyC,EAAE,OAAO,IAAS,KAAI;AACzF,QAAA,IAAI,IAAI,EAAE,IAAI,KAAK,QAAQ,EAAE;YAC3B,MAAM,GAAG,GAAG,IAGX,CAAC;AACF,YAAA,MAAM,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,OAAO,EAAE;;AAEX,gBAAA,OAAO,EAAE,KAAK,IAAI,CAAC;AACnB,gBAAA,OAAO,EAAE,WAAW,CAAC,KAAK,IAAI,CAAC;AAC/B,gBAAA,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE;oBACjE,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;;oBAEzC,UAAU,CAAC,MAAI;AACb,wBAAA,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;qBAC9B,EAAE,GAAG,CAAC,CAAC;iBACT;gBACD,OAAO;AACL,oBAAA,KAAK,EAAE,MAAM,CAAC,CAAA,EAAG,OAAO,EAAE,EAAE,IAAI,OAAO,EAAE,GAAG,IAAI,CAAE,CAAC,EAAE,CAAC;AACtD,oBAAA,OAAO,EAAE,CAAG,EAAA,OAAO,EAAE,KAAK,IAAI,EAAE,CAAE,CAAA;AAClC,oBAAA,OAAO,EAAE,CAAG,EAAA,OAAO,EAAE,KAAK,IAAI,EAAE,CAAE,CAAA;AAClC,oBAAA,YAAY,EAAE,CAAG,EAAA,OAAO,EAAE,UAAU,IAAI,EAAE,CAAE,CAAA;iBAC7C,CAAC;aACH;YACD,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAC/B,OAAO;AACL,gBAAA,KAAK,EAAE,MAAM,CAAC,CAAA,EAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC;AAC3C,gBAAA,OAAO,EAAE,CAAG,EAAA,GAAG,EAAE,KAAK,IAAI,EAAE,CAAE,CAAA;AAC9B,gBAAA,OAAO,EAAE,CAAG,EAAA,GAAG,EAAE,KAAK,IAAI,EAAE,CAAE,CAAA;AAC9B,gBAAA,YAAY,EAAE,CAAG,EAAA,GAAG,EAAE,UAAU,IAAI,EAAE,CAAE,CAAA;aACzC,CAAC;SACH;AACD,QAAA,IAAI,IAAI,EAAE,IAAI,KAAK,KAAK,EAAE;YACxB,MAAM,GAAG,GAAG,IAGX,CAAC;YACF,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;YAC7B,OAAQ;AACN,gBAAA,KAAK,EAAE,MAAM,CAAC,CAAA,EAAG,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC;AAC7C,gBAAA,OAAO,EAAE,CAAG,EAAA,GAAG,EAAE,KAAK,IAAI,EAAE,CAAE,CAAA;AAC9B,gBAAA,OAAO,EAAE,CAAG,EAAA,GAAG,EAAE,KAAK,IAAI,EAAE,CAAE,CAAA;AAC9B,gBAAA,YAAY,EAAE,CAAG,EAAA,GAAG,EAAE,UAAU,IAAI,EAAE,CAAE,CAAA;aACzC,CAAC;SACH;AAED,QAAA,IAAI,IAAI,EAAE,IAAI,KAAK,QAAQ,EAAE;AAK3B,YAAA,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,EAAE,CAAA;YACvB,MAAM,GAAG,GAAG,EAAE,CAAA;AACd,YAAA,GAAG,CAAC,OAAO,CAAC,CAAC,IAAG;;gBAEd,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG;AACnB,oBAAA,KAAK,EAAE,MAAM,CAAC,CAAA,EAAG,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC;AACzC,oBAAA,OAAO,EAAG,CAAG,EAAA,CAAC,EAAE,KAAK,IAAI,EAAE,CAAE,CAAA;AAC7B,oBAAA,OAAO,EAAE,CAAG,EAAA,CAAC,EAAE,KAAK,IAAI,EAAE,CAAE,CAAA;AAC5B,oBAAA,YAAY,EAAE,CAAG,EAAA,CAAC,EAAE,UAAU,IAAI,EAAE,CAAE,CAAA;iBACvC,CAAA;AACH,aAAC,CAAC,CAAA;AACF,YAAA,OAAO,GAAG,CAAC;SACZ;AAED,QAAA,IAAI,IAAI,EAAE,IAAI,KAAK,OAAO,EAAE;YAC1B,MAAM,GAAG,GAAG,IAGX,CAAC;YACF,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;AAC/B,YAAA,OAAQ,GAAG,CAAC;SACb;AAED,QAAA,IAAI,IAAI,EAAE,IAAI,KAAK,UAAU,EAAE;AAK7B,YAAA,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAA;AACzB,YAAA,OAAO,GAAG,CAAC;SACZ;AAED,QAAA,IAAI,IAAI,EAAE,IAAI,KAAK,0BAA0B,EAAE;YAC7C,MAAM,GAAG,GAAG,IAGX,CAAC;YACF,MAAM,iBAAiB,GAAGC,oBAAW,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvD,IAAI,iBAAiB,EAAE;gBACrB,IAAI,GAAG,GAAGH,sBAAa,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAA;gBAC1D,IAAI,CAAC,GAAG,EAAE;;AAER,oBAAA,IAAI,UAAU,GAAGA,sBAAa,CAAC,aAAa,EAAE,CAAC;;AAG/C,oBAAA,KAAK,IAAI,IAAI,IAAI,UAAU,EAAE;AAC3B,wBAAA,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;;AAGnC,wBAAA,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;AACtB,4BAAA,IAAI,IAAI,CAAC,WAAW,KAAK,iBAAiB,EAAE;gCAC1C,GAAG,GAAG,IAAI,CAAC;gCACX,MAAM;6BACP;yBACF;AAED,wBAAA,IAAI,GAAG;4BAAE,MAAM;qBAChB;iBACF;;AAED,gBAAA,OAAO,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,CAAC;aAC5B;AACD,YAAA,OAAO,SAAS,CAAC;SAClB;AAED,QAAA,IAAI,IAAI,EAAE,IAAI,KAAK,YAAY,EAAE;AAK/B,YAAA,MAAM,GAAG,GAAG,EAAE,CAAC,UAAU,EAAE,CAAA;AAC3B,YAAA,OAAO,GAAG,CAAC;SACZ;AAED,QAAA,IAAI,IAAI,EAAE,IAAI,KAAK,sBAAsB,EAAE;YACzC,MAAM,GAAG,GAAG,IAMX,CAAC;AACF,YAAA,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YACxC,IAAI,EAAE,EAAE;AACN,gBAAA,OAAO,EAAE,CAAC,SAAS,EAAE,CAAA;aACtB;AACD,YAAA,OAAO,SAAS,CAAA;SACjB;AACD,QAAA,IAAI,IAAI,EAAE,IAAI,KAAK,sBAAsB,EAAE;YACzC,MAAM,GAAG,GAAG,IAWX,CAAC;AACF,YAAA,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YACxC,IAAI,EAAE,EAAE;gBACN,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;aAC/B;AACD,YAAA,OAAO,SAAS,CAAA;SACjB;AACD,QAAA,IAAI,IAAI,EAAE,IAAI,KAAK,0BAA0B,EAAE;YAC7C,MAAM,GAAG,GAAG,IAWX,CAAC;AACF,YAAA,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAW,CAAC;YACnD,IAAI,EAAE,EAAE;gBACN,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;aACnC;AACD,YAAA,OAAO,SAAS,CAAA;SACjB;AACD,QAAA,IAAI,IAAI,EAAE,IAAI,KAAK,+BAA+B,EAAE;YAClD,MAAM,GAAG,GAAG,IAMX,CAAC;AACF,YAAA,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAW,CAAC;YACnD,IAAI,EAAE,EAAE;gBACN,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;aACxC;AACD,YAAA,OAAO,SAAS,CAAA;SACjB;AAED,QAAA,OAAO,SAAS,CAAA;AAClB,KAAC,CAAC,CAAA;AACF,IAAA,OAAO,EAAE,CAAC;AACZ,EAAC;AAED,MAAM,GAAG,GAAG,CAAC,IAAqB,EAAE,GAAG,IAAW,KAAI;IACpD,MAAM,GAAG,GAAG,CAAA,2BAAA,CAA6B,CAAA;AACzC,IAAA,IAAI;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;KAC7B;IAAC,OAAO,KAAK,EAAE;AACd,QAAA,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;KAC1B;AACH,CAAC;;;;;;;"}
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 // 预加载的webContents的url\n preloadWebContentsUrl?: string;\n windows: Map<number, BWItem | BVItem>;\n preloadedBW: BWItem | null = null;\n preloadedBV: BVItem | null = null;\n preloading: boolean = false;\n constructor(preload?: string, loadingViewUrl?: string, errorViewUrl?: string, preloadUrl?: string) {\n this.preload = preload;\n this.windows = new Map();\n this.loadingViewUrl = `${loadingViewUrl ?? ''}`;\n this.errorViewUrl = `${errorViewUrl ?? ''}`;\n this.preloadWebContentsUrl = `${preloadUrl ?? ''}`;\n if (this.preloadWebContentsUrl) {\n this._preloadInstances();\n }\n }\n\n private async _preloadInstances() {\n if (this.preloading) return;\n this.preloading = true;\n try {\n if (this.preloadWebContentsUrl) {\n this.preloadedBW = await this._createPreloadBW();\n this.preloadedBV = await this._createPreloadBV();\n }\n } catch (e) {\n log('error', '预创建实例失败', e);\n }\n this.preloading = false;\n }\n\n private _createPreloadBW(): Promise<BWItem> {\n return new Promise((resolve) => {\n const preload = this.preload;\n const url = this.preloadWebContentsUrl;\n const instance = new BrowserWindow({\n show: false,\n webPreferences: {\n webviewTag: true,\n plugins: true,\n nodeIntegration: true,\n contextIsolation: false,\n backgroundThrottling: false,\n webSecurity: false,\n preload: preload,\n }\n });\n instance.webContents.once('did-finish-load', () => {\n resolve(instance as BWItem);\n });\n instance.webContents.once('did-fail-load', () => {\n resolve(instance as BWItem);\n });\n instance.loadURL(url || 'about:blank');\n });\n }\n\n private _createPreloadBV(): Promise<BVItem> {\n return new Promise((resolve) => {\n const preload = this.preload;\n const url = this.preloadWebContentsUrl;\n const instance = new BrowserView({\n webPreferences: {\n webviewTag: true,\n plugins: true,\n nodeIntegration: true,\n contextIsolation: false,\n // backgroundThrottling: false,\n webSecurity: false,\n preload: preload,\n }\n });\n instance.webContents.once('did-finish-load', () => {\n resolve(instance as BVItem);\n });\n instance.webContents.once('did-fail-load', () => {\n resolve(instance as BVItem);\n });\n instance.webContents.loadURL(url || 'about:blank');\n });\n }\n\n /**\n * 预加载webContents\n * @param url\n */\n preloadWebContents(url: string) {\n this.preloadWebContentsUrl = url;\n }\n\n // 方法重载声明\n create(options: Omit<ElectronWindowsManagerOptions, 'type'> & { type?: 'BW' }): BWItem;\n create(options: ElectronWindowsManagerOptions & { type: 'BV' }): BVItem;\n create(options: ElectronWindowsManagerOptions): BWItem | BVItem;\n\n create(options: ElectronWindowsManagerOptions): BVItem | BWItem {\n let window: any;\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 // 优先复用预创建实例\n if (options.type === 'BW' && this.preloadedBW) {\n const win = this.preloadedBW;\n this.preloadedBW = null;\n setTimeout(() => this._preloadInstances(), 0);\n win._type = 'BW';\n win._name = options.name || 'anonymous';\n win._extraData = `${options?.extraData || ''}`;\n win.removeAllListeners && win.removeAllListeners();\n win.webContents.removeAllListeners && win.webContents.removeAllListeners();\n this._applyBrowserWindowOptions(win, options);\n win.loadURL(options.url);\n window = win;\n }\n if (options.type === 'BV' && this.preloadedBV) {\n const view = this.preloadedBV;\n this.preloadedBV = null;\n setTimeout(() => this._preloadInstances(), 0);\n view._type = 'BV';\n view._name = options.name || 'anonymous';\n view._extraData = `${options?.extraData || ''}`;\n view.webContents.removeAllListeners && view.webContents.removeAllListeners();\n this._applyBrowserViewOptions(view, options);\n view.webContents.loadURL(options.url);\n window = view;\n }\n try {\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 const preload = browserWindowOptions?.webPreferences?.preload || this.preload;\n if (!window) {\n window = type === 'BV' ?\n new BrowserView(\n lodash.merge(\n (browserWindowOptions || {}),\n {\n webPreferences: {\n webviewTag: true,\n // session: getCustomSession(),\n plugins: true,\n nodeIntegration: true,\n contextIsolation: false,\n // fix bv二次挂载会灰屏\n // backgroundThrottling: false,\n nativeWindowOpen: false,\n webSecurity: false,\n preload: 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 webviewTag: true,\n // session: getCustomSession(),\n plugins: true,\n nodeIntegration: true,\n contextIsolation: false,\n backgroundThrottling: false,\n nativeWindowOpen: false,\n webSecurity: false,\n preload: preload,\n }\n },\n )\n ) as BWItem;\n }\n try {\n remote.enable(window.webContents);\n } catch (error) {\n log('error', 'enable: ', error)\n }\n // @ts-ignore\n try {\n window.id = Number(`${window.id || window.webContents.id}`);\n } catch (error) {\n // log('error', 'set id: ', error)\n }\n // @ts-ignore\n try {\n window._id = Number(`${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._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 /**\n * 判断是否是错误视图\n */\n const isErrorView = `${_url}`.toUpperCase().startsWith(`${errorView?.url}`.toUpperCase());\n if (!isErrorView && _url) {\n // @ts-ignore\n window.loadURL ? window.loadURL(`${errorView?.url}`) : window.webContents.loadURL(`${errorView?.url}`);\n window.webContents.executeJavaScript(`\n var key = '__ELECTRON_WINDOW_MANAGER_DID_FAIL_LOAD_URL__';\n window[key] = \"${_url}\";\n sessionStorage.setItem(key, \"${_url}\");\n `);\n }\n }, 300);\n // @ts-ignore\n window.webContents.on('did-fail-load', (event, errorCode, errorDescription, validatedURL, isMainFrame) => {\n if (isMainFrame) {\n showErrorView();\n }\n });\n window.webContents.on('did-start-loading', () => {\n showErrorView.cancel();\n });\n }\n window.webContents.on('close', () => {\n this.windows.delete(window.id || window._id)\n })\n window.webContents.on('destroyed', () => {\n this.windows.delete(window.id || 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 if (options.browserWindow?.show !== false) {\n window.show()\n }\n // @ts-ignore\n window.on('closed', () => {\n log('log', 'closed', window.id, window._name);\n this.windows.delete(window.id || window._id)\n });\n }\n if (type === 'BV') {\n parentWin?.addBrowserView(window);\n log('log', 'create - addBrowserView')\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._id || window.webContents.id, window);\n log('log', 'create', this.windows.keys())\n const initVal = () => {\n window.webContents.executeJavaScript(`\n try {\n const data = {\n __ELECTRON_WINDOW_MANAGER_WEB_CONTENTS_ID__: ${JSON.stringify(window.webContents.id)},\n __ELECTRON_WINDOW_MANAGER_TYPE__: ${JSON.stringify(window._type)},\n __ELECTRON_WINDOW_MANAGER_NAME__: ${JSON.stringify(window._name)},\n __ELECTRON_WINDOW_MANAGER_EXTRA_DATA__: ${JSON.stringify(window._extraData || '')},\n __ELECTRON_WINDOW_MANAGER_PRELOAD__: ${JSON.stringify(preload)}\n };\n Object.entries(data).forEach(([key, value]) => {\n Object.defineProperty(window, key, {\n value,\n writable: false,\n configurable: false,\n enumerable: true\n });\n });\n } catch (error) {}\n `)\n }\n\n // 初始化值\n window.webContents.on('did-finish-load', () => {\n initVal();\n })\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);\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.delete(key)\n }\n } catch (error) {\n log('error', 'get');\n }\n\n if (typeof idOrName === 'number') {\n if (i?.id === idOrName || 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(type: 'BW'): Map<number, BWItem>;\n getAll(type: 'BV'): Map<number, BVItem>;\n getAll(): Map<number, BWItem | BVItem>;\n getAll(type?: 'BW' | 'BV'): Map<number, BWItem | BVItem> {\n log('log', 'getAll');\n const bwWindows = new Map<number, BWItem>();\n const bvWindows = new Map<number, BVItem>();\n this.windows.forEach((win, key) => {\n if (!(win && win?.webContents?.isDestroyed && !win?.webContents?.isDestroyed?.())) {\n this.windows.delete(key)\n }\n if (win?._type === 'BW') {\n bwWindows.set(key, win as BWItem);\n }\n if (win?._type === 'BV') {\n bvWindows.set(key, win as BVItem);\n }\n })\n if (type === 'BW') {\n return bwWindows;\n }\n if (type === 'BV') {\n return bvWindows;\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 || 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 private _applyBrowserWindowOptions(win: BWItem, options: ElectronWindowsManagerOptions) {\n const browserWindowOptions = options.browserWindow as Partial<BrowserWindowConstructorOptions> || {};\n // 设置父窗口\n if (typeof browserWindowOptions.parent === 'number') {\n const parentWin = BrowserWindow.fromId(browserWindowOptions.parent);\n if (parentWin) {\n win.setParentWindow(parentWin);\n }\n }\n // 设置窗口大小\n if (typeof browserWindowOptions.width === 'number' && typeof browserWindowOptions.height === 'number') {\n win.setBounds({ width: browserWindowOptions.width, height: browserWindowOptions.height });\n }\n // 置顶\n if (typeof browserWindowOptions.alwaysOnTop === 'boolean') {\n win.setAlwaysOnTop(browserWindowOptions.alwaysOnTop);\n }\n // 可继续扩展其他动态属性\n }\n\n private _applyBrowserViewOptions(view: BVItem, options: ElectronWindowsManagerOptions) {\n const browserWindowOptions = options.browserWindow as Partial<BrowserWindowConstructorOptions> || {};\n let parentWin: BrowserWindow | undefined;\n if (typeof browserWindowOptions.parent === 'number') {\n parentWin = BrowserWindow.fromId(browserWindowOptions.parent) || undefined;\n if (parentWin) {\n parentWin.addBrowserView(view);\n }\n }\n // 设置视图大小\n if (typeof browserWindowOptions.width === 'number' && typeof browserWindowOptions.height === 'number') {\n view.setBounds({ x: 0, y: 0, width: browserWindowOptions.width, height: browserWindowOptions.height });\n }\n // 可继续扩展其他动态属性\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, preloadWebContentsUrl?: 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, preloadWebContentsUrl)\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 || 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 || 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 || 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 || i._id] = {\n winId: Number(`${i?.id || 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 // @ts-ignore\n return win?.id || 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 if (data?.type === 'borrowView_getBounds') {\n const opt = data as {\n type: 'borrowView_getBounds';\n data: {\n webContentId: number;\n options: {};\n };\n };\n const bv = wm.get(opt.data.webContentId)\n if (bv) {\n return bv.getBounds()\n }\n return undefined\n }\n if (data?.type === 'borrowView_setBounds') {\n const opt = data as {\n type: 'borrowView_setBounds';\n data: {\n webContentId: number;\n options: {\n x: number;\n y: number;\n width: number;\n height: number;\n };\n };\n };\n const bv = wm.get(opt.data.webContentId)\n if (bv) {\n bv.setBounds(opt.data.options)\n }\n return undefined\n }\n if (data?.type === 'borrowView_setAutoResize') {\n const opt = data as {\n type: 'borrowView_setAutoResize';\n data: {\n webContentId: number;\n options: {\n width: boolean;\n height: boolean;\n horizontal: boolean;\n vertical: boolean;\n };\n };\n };\n const bv = wm.get(opt.data.webContentId) as BVItem;\n if (bv) {\n bv.setAutoResize(opt.data.options)\n }\n return undefined\n }\n if (data?.type === 'borrowView_setBackgroundColor') {\n const opt = data as {\n type: 'borrowView_setBackgroundColor';\n data: {\n webContentId: number;\n options: string;\n };\n };\n const bv = wm.get(opt.data.webContentId) as BVItem;\n if (bv) {\n bv.setBackgroundColor(opt.data.options)\n }\n return undefined\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.5-alpha.3",
3
+ "version": "0.0.5-alpha.5",
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": "c4db8bbbcc74e0755ec74a51740b69c5d594984a"
80
+ "gitHead": "622d1ec0926825a92c4249b351b311dc0af8d522"
81
81
  }