@lvce-editor/main-process 6.33.1 → 6.33.2

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.
@@ -6706,6 +6706,31 @@ const send = (method, ...params) => {
6706
6706
  return rpc.send(method, ...params);
6707
6707
  };
6708
6708
 
6709
+ const webContentsWithEventListeners = new WeakSet();
6710
+ const attachEventListenersToWebContents = (webContentsId, webContents, browserWindow) => {
6711
+ if (webContentsWithEventListeners.has(webContents)) {
6712
+ return;
6713
+ }
6714
+ attach(webContents, browserWindow.webContents);
6715
+ const values = Object.values(ElectronBrowserViewEventListeners);
6716
+ for (const value of values) {
6717
+ const wrappedListener = (...args) => {
6718
+ // @ts-ignore
6719
+ const {
6720
+ messages,
6721
+ result
6722
+ } = value.handler(...args, webContentsId);
6723
+ for (const message of messages) {
6724
+ const [key, ...rest] = message;
6725
+ send(`ElectronWebContents.${key}`, webContentsId, ...rest);
6726
+ }
6727
+ return result;
6728
+ };
6729
+ value.attach(webContents, wrappedListener);
6730
+ }
6731
+ webContentsWithEventListeners.add(webContents);
6732
+ };
6733
+
6709
6734
  // TODO use electron 30 webcontentsview api
6710
6735
  const createWebContentsView = async () => {
6711
6736
  const view = new WebContentsView({
@@ -6729,6 +6754,7 @@ const createWebContentsView = async () => {
6729
6754
  id
6730
6755
  } = webContents;
6731
6756
  add$1(id, browserWindow, view);
6757
+ attachEventListenersToWebContents(id, webContents, browserWindow);
6732
6758
  return id;
6733
6759
  };
6734
6760
  const attachEventListeners = webContentsId => {
@@ -6738,25 +6764,7 @@ const attachEventListeners = webContentsId => {
6738
6764
  if (!webContents || !state) {
6739
6765
  return;
6740
6766
  }
6741
- attach(webContents, state.browserWindow.webContents);
6742
- const values = Object.values(ElectronBrowserViewEventListeners);
6743
- for (const value of values) {
6744
- const wrappedListener = (...args) => {
6745
- // @ts-ignore
6746
- const {
6747
- messages,
6748
- result
6749
- } = value.handler(...args, webContentsId);
6750
- for (const message of messages) {
6751
- const [key, ...rest] = message;
6752
- send(`ElectronWebContents.${key}`, webContentsId, ...rest);
6753
- }
6754
- return result;
6755
- };
6756
- // TODO detached listeners when webcontents are disposed
6757
- // to avoid potential memory leaks
6758
- value.attach(webContents, wrappedListener);
6759
- }
6767
+ attachEventListenersToWebContents(webContentsId, webContents, state.browserWindow);
6760
6768
  };
6761
6769
  const disposeWebContentsView = browserViewId => {
6762
6770
  console.log('[main process] dispose browser view', browserViewId);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/main-process",
3
- "version": "6.33.1",
3
+ "version": "6.33.2",
4
4
  "keywords": [
5
5
  "lvce-editor",
6
6
  "electron"