const electron = require("electron"); const uuid = require("uuid"); module.exports = function() { let windows = {}; function packFunction(func) { return `;${func.toString()};${func.name}();`; } function loadLiveReload() { let scriptTag = document.createElement("script"); scriptTag.src = "http://127.0.0.1:35729/livereload.js"; document.querySelector("head").appendChild(scriptTag); } return { create: function(options) { let id = uuid.v4(); let window = new electron.BrowserWindow(options); if (options.url != null) { window.loadURL(options.url); } if (options.loadDeveloperTools) { window.webContents.openDevTools(); } if (options.liveReload) { window.webContents.on("dom-ready", () => { window.webContents.executeJavaScript(packFunction(loadLiveReload)); }); } windows[id] = window; window.on("closed", () => { delete windows[id]; }); return window; }, get: function(id) { return windows[id]; } } }