UNPKG

r2-navigator-js

Version:

Readium 2 'navigator' for NodeJS (TypeScript)

144 lines 5.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.contextMenuSetup = exports.trackBrowserWindow = void 0; var debug_ = require("debug"); var electron_1 = require("electron"); var context_menu_1 = require("../common/context-menu"); var events_1 = require("../common/events"); var sessions_1 = require("../common/sessions"); var debug = debug_("r2:navigator#electron/main/browser-window-tracker"); var _electronBrowserWindows; function trackBrowserWindow(win, _serverURL) { if (!_electronBrowserWindows) { _electronBrowserWindows = []; } _electronBrowserWindows.push(win); win.on("closed", function () { var i = _electronBrowserWindows.indexOf(win); if (i < 0) { return; } _electronBrowserWindows.splice(i, 1); }); } exports.trackBrowserWindow = trackBrowserWindow; electron_1.app.on("accessibility-support-changed", function (_ev, accessibilitySupportEnabled) { debug("accessibility-support-changed ... ", accessibilitySupportEnabled); if (electron_1.app.accessibilitySupportEnabled !== accessibilitySupportEnabled) { debug("!!?? app.accessibilitySupportEnabled !== accessibilitySupportEnabled"); } if (!_electronBrowserWindows || !_electronBrowserWindows.length) { return; } _electronBrowserWindows.forEach(function (win) { if (win.webContents) { debug("accessibility-support-changed event to WebViewContents ", accessibilitySupportEnabled); win.webContents.send("accessibility-support-changed", accessibilitySupportEnabled); } }); }); electron_1.ipcMain.on("accessibility-support-changed", function (ev) { var accessibilitySupportEnabled = electron_1.app.accessibilitySupportEnabled; debug("accessibility-support-changed REQUEST, sending to WebViewContents ", accessibilitySupportEnabled); ev.sender.send("accessibility-support-changed", accessibilitySupportEnabled); }); var contextMenuSetup = function (webContent, webContentID) { debug("MAIN CONTEXT_MENU_SETUP ".concat(webContentID)); var wc = electron_1.webContents.fromId(webContentID); if (!wc) { return; } if (wc.__CONTEXT_MENU_SETUP) { return; } wc.__CONTEXT_MENU_SETUP = true; wc.on("context-menu", function (_ev, params) { var x = params.x, y = params.y; debug("MAIN context-menu EVENT on WebView"); var win = electron_1.BrowserWindow.fromWebContents(webContent) || undefined; var openDevToolsAndInspect = function () { var devToolsOpened = function () { wc.off("devtools-opened", devToolsOpened); wc.inspectElement(x, y); setTimeout(function () { if (wc.devToolsWebContents && wc.isDevToolsOpened()) { wc.devToolsWebContents.focus(); } }, 500); }; wc.on("devtools-opened", devToolsOpened); wc.openDevTools({ activate: true, mode: "detach" }); }; electron_1.Menu.buildFromTemplate([{ click: function () { var wasOpened = wc.isDevToolsOpened(); if (!wasOpened) { openDevToolsAndInspect(); } else { if (!wc.isDevToolsFocused()) { wc.closeDevTools(); setImmediate(function () { openDevToolsAndInspect(); }); } else { wc.inspectElement(x, y); } } }, label: "Inspect element", }]).popup({ window: win }); }); }; exports.contextMenuSetup = contextMenuSetup; electron_1.ipcMain.on(context_menu_1.CONTEXT_MENU_SETUP, function (event, webContentID) { (0, exports.contextMenuSetup)(event.sender, webContentID); }); electron_1.ipcMain.handle(events_1.R2_EVENT_KEYBOARD_FOCUS_REQUEST, function (event, webContentsId) { var wc = electron_1.webContents.fromId(webContentsId); if (!wc) { return; } debug("KEYBOARD FOCUS REQUEST (3) ", wc ? wc.id : "??", " // ", webContentsId, " -- ", wc.hostWebContents.id, " == ", event.sender.id); if (wc && wc.hostWebContents === event.sender) { debug("KEYBOARD FOCUS REQUEST (3) GO! ", wc.id, wc.hostWebContents.id); wc.focus(); } }); electron_1.app.on("web-contents-created", function (_evt, wc) { wc.on("will-attach-webview", function (_event, webPreferences, params) { debug("WEBVIEW will-attach-webview"); if (params.src && !params.src.startsWith("data:")) { debug(params.src); } debug(webPreferences); }); if (!wc.hostWebContents) { return; } if (!_electronBrowserWindows || !_electronBrowserWindows.length) { return; } _electronBrowserWindows.forEach(function (win) { if (wc.hostWebContents.id === win.webContents.id) { debug("WEBVIEW web-contents-created"); wc.on("will-navigate", function (event, url) { debug("webview.getWebContents().on('will-navigate'"); debug(url); event.preventDefault(); if (!url || (!url.startsWith("thoriumhttps") && !url.startsWith(sessions_1.READIUM2_ELECTRON_HTTP_PROTOCOL))) { debug("'will-navigate' SKIPPED."); return; } var payload = { url: url, }; win.webContents.send(events_1.R2_EVENT_LINK, payload); }); } }); }); //# sourceMappingURL=browser-window-tracker.js.map