@lvce-editor/main-process 5.0.0 → 5.2.0

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.
@@ -4758,18 +4758,87 @@ const getWindowById = windowId => {
4758
4758
  return Electron.BrowserWindow.fromId(windowId);
4759
4759
  };
4760
4760
 
4761
- const executeWindowFunction = (browserWindowId, key) => {
4761
+ const devtoolsBeforeInputListeners = new WeakMap();
4762
+ const isToggleDevtoolsInput = input => {
4763
+ if (input.type !== 'keyDown') {
4764
+ return false;
4765
+ }
4766
+ if (!input.shift) {
4767
+ return false;
4768
+ }
4769
+ if (!input.control && !input.meta) {
4770
+ return false;
4771
+ }
4772
+ return input.code === 'KeyI' || input.key === 'I' || input.key === 'i';
4773
+ };
4774
+ const removeDevtoolsKeyListener = devtoolsWebContents => {
4775
+ const listener = devtoolsBeforeInputListeners.get(devtoolsWebContents);
4776
+ if (!listener) {
4777
+ return;
4778
+ }
4779
+ devtoolsBeforeInputListeners.delete(devtoolsWebContents);
4780
+ devtoolsWebContents.off('before-input-event', listener);
4781
+ };
4782
+ const attachDevtoolsKeyListener = browserWindow => {
4783
+ const devtoolsWebContents = browserWindow.webContents.devToolsWebContents;
4784
+ if (!devtoolsWebContents) {
4785
+ return;
4786
+ }
4787
+ if (devtoolsBeforeInputListeners.has(devtoolsWebContents)) {
4788
+ return;
4789
+ }
4790
+ const listener = (event, input) => {
4791
+ if (!isToggleDevtoolsInput(input)) {
4792
+ return;
4793
+ }
4794
+ event.preventDefault();
4795
+ browserWindow.webContents.closeDevTools();
4796
+ };
4797
+ devtoolsBeforeInputListeners.set(devtoolsWebContents, listener);
4798
+ devtoolsWebContents.on('before-input-event', listener);
4799
+ devtoolsWebContents.once('destroyed', () => {
4800
+ removeDevtoolsKeyListener(devtoolsWebContents);
4801
+ });
4802
+ browserWindow.webContents.once('devtools-closed', () => {
4803
+ removeDevtoolsKeyListener(devtoolsWebContents);
4804
+ });
4805
+ };
4806
+ const getBrowserWindow = browserWindowId => {
4762
4807
  const browserWindow = getWindowById(browserWindowId);
4763
4808
  if (!browserWindow) {
4764
4809
  info(`[main-process] browser window not found ${browserWindow}`);
4810
+ return undefined;
4811
+ }
4812
+ return browserWindow;
4813
+ };
4814
+ const toggleDevtools = browserWindow => {
4815
+ if (browserWindow.webContents.isDevToolsOpened()) {
4816
+ browserWindow.webContents.closeDevTools();
4817
+ return;
4818
+ }
4819
+ if (browserWindow.webContents.devToolsWebContents) {
4820
+ attachDevtoolsKeyListener(browserWindow);
4821
+ } else {
4822
+ browserWindow.webContents.once('devtools-opened', () => {
4823
+ attachDevtoolsKeyListener(browserWindow);
4824
+ });
4825
+ }
4826
+ browserWindow.webContents.openDevTools();
4827
+ };
4828
+ const executeWindowFunction = (browserWindowId, key) => {
4829
+ const browserWindow = getBrowserWindow(browserWindowId);
4830
+ if (!browserWindow) {
4831
+ return;
4832
+ }
4833
+ if (key === 'toggleDevtools') {
4834
+ toggleDevtools(browserWindow);
4765
4835
  return;
4766
4836
  }
4767
4837
  browserWindow[key]();
4768
4838
  };
4769
4839
  const executeWebContentsFunction = (browserWindowId, key, ...args) => {
4770
- const browserWindow = getWindowById(browserWindowId);
4840
+ const browserWindow = getBrowserWindow(browserWindowId);
4771
4841
  if (!browserWindow) {
4772
- info(`[main-process] browser window not found ${browserWindow}`);
4773
4842
  return;
4774
4843
  }
4775
4844
  browserWindow.webContents[key](...args);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/main-process",
3
- "version": "5.0.0",
3
+ "version": "5.2.0",
4
4
  "keywords": [
5
5
  "lvce-editor",
6
6
  "electron"
@@ -14,7 +14,7 @@
14
14
  "type": "module",
15
15
  "main": "dist/mainProcessMain.js",
16
16
  "dependencies": {
17
- "electron": "41.1.1"
17
+ "electron": "41.3.0"
18
18
  },
19
19
  "engines": {
20
20
  "node": ">=22"