"use strict"; const electron_1 = require("electron"); const contextMenuItems = (global["contextMenuItems"] = global["contextMenuItems"] || []); let electronSocket; module.exports = (socket) => { electronSocket = socket; socket.on("menu-setContextMenu", (browserWindowId, menuItems) => { const menu = electron_1.Menu.buildFromTemplate(menuItems); addContextMenuItemClickConnector(menu.items, browserWindowId, (id, windowId) => { electronSocket.emit("contextMenuItemClicked", [id, windowId]); }); const index = contextMenuItems.findIndex((contextMenu) => contextMenu.browserWindowId === browserWindowId); const contextMenuItem = { menu: menu, browserWindowId: browserWindowId, }; if (index === -1) { contextMenuItems.push(contextMenuItem); } else { contextMenuItems[index] = contextMenuItem; } }); function addContextMenuItemClickConnector(menuItems, browserWindowId, callback) { menuItems.forEach((item) => { if (item.submenu && item.submenu.items.length > 0) { addContextMenuItemClickConnector(item.submenu.items, browserWindowId, callback); } if ("id" in item && item.id) { item.click = () => { callback(item.id, browserWindowId); }; } }); } socket.on("menu-contextMenuPopup", (browserWindowId) => { contextMenuItems.forEach((x) => { if (x.browserWindowId === browserWindowId) { const browserWindow = electron_1.BrowserWindow.fromId(browserWindowId); x.menu.popup(browserWindow); } }); }); socket.on("menu-setApplicationMenu", (menuItems) => { const menu = electron_1.Menu.buildFromTemplate(menuItems); addMenuItemClickConnector(menu.items, (id) => { electronSocket.emit("menuItemClicked", id); }); electron_1.Menu.setApplicationMenu(menu); }); function addMenuItemClickConnector(menuItems, callback) { menuItems.forEach((item) => { if (item.submenu && item.submenu.items.length > 0) { addMenuItemClickConnector(item.submenu.items, callback); } if ("id" in item && item.id) { item.click = () => { callback(item.id); }; } }); } }; //# sourceMappingURL=menu.js.map