'use strict'; import OpenDevToolsOptions = Electron.OpenDevToolsOptions; const electron = require('electron'); const localShortcut = require('electron-localshortcut'); const { app, BrowserWindow } = electron; const isMacOS = process.platform === 'darwin'; const devToolsOptions: OpenDevToolsOptions = { mode: 'bottom', }; function toggleDevTools(win = BrowserWindow.getFocusedWindow()) { if (win) { const { webContents } = win; if (webContents.isDevToolsOpened()) { webContents.closeDevTools(); } else { webContents.openDevTools(devToolsOptions); } } } function devTools(win = BrowserWindow.getFocusedWindow()) { if (win) { toggleDevTools(win); } } function openDevTools(win = BrowserWindow.getFocusedWindow()) { if (win) { win.webContents.openDevTools(devToolsOptions); } } function refresh(win = BrowserWindow.getFocusedWindow()) { if (win) { win.webContents.reloadIgnoringCache(); } } function inspectElements() { const win = BrowserWindow.getFocusedWindow(); const inspect = () => { // TODO check // win.devToolsWebContents.executeJavaScript('DevToolsAPI.enterInspectElementMode()'); }; if (win) { if (win.webContents.isDevToolsOpened()) { inspect(); } else { win.webContents.once('devtools-opened', inspect); win.webContents.openDevTools(); } } } // const addExtensionIfInstalled = (name, getPath) => { // const isExtensionInstalled = nameIN => { // return BrowserWindow.getDevToolsExtensions && // {}.hasOwnProperty.call(BrowserWindow.getDevToolsExtensions(), nameIN); // }; // // try { // if (!isExtensionInstalled(name)) { // BrowserWindow.addDevToolsExtension(getPath(name)); // } // } catch (_) { // } // }; export const initDebug = (opts, isAddReload) => { opts = Object.assign( { enabled: null, showDevTools: true, ...devToolsOptions, }, opts, ); console.log(opts); if (opts.enabled === false) { return; } if (opts.devToolsMode !== 'previous') { devToolsOptions.mode = opts.devToolsMode; } app.on('browser-window-created', (event, win) => { if (opts.showDevTools) { win.webContents.once('devtools-opened', () => { // Workaround for https://github.com/electron/electron/issues/13095 setImmediate(() => { win.focus(); }); }); /// Workaround for https://github.com/electron/electron/issues/12438 win.webContents.once('dom-ready', () => { openDevTools(win); }); } }); app.on('ready', () => { localShortcut.register('CmdOrCtrl+Shift+C', inspectElements); localShortcut.register(isMacOS ? 'Cmd+Alt+I' : 'Ctrl+Shift+I', devTools); localShortcut.register('F12', devTools); if (isAddReload) { localShortcut.register('CmdOrCtrl+R', refresh); localShortcut.register('F5', refresh); } }); };