UNPKG

skypager-project-types-electron-app

Version:

skypager electron app project type

78 lines (57 loc) 1.76 kB
module.exports = { parseHash, decorateWindow } function parseHash() { window.__args__ = {}; if (window.location.hash) { var hash = window .location .hash .slice(1) .replace('/', '') try { window.__args__ = Object.freeze(JSON.parse(decodeURIComponent(hash))) } catch (error) {} } return window.__args__ } function decorateWindow(context = {}) { const __args__ = parseHash() const {dialog, BrowserWindow} = require('electron').remote const {ipcRenderer} = require('electron') const IPCResponder = require('./responder') const ipcStream = require('./stream') const Positioner = require('./positioner') const Runtime = require('skypager-project-types-electron-app/lib/runtime').default const responder = new IPCResponder(ipcRenderer.send.bind(ipcRenderer), ipcRenderer.on.bind(ipcRenderer)) function getBrowserWindow(windowId = context.windowId) { return BrowserWindow.fromId(windowId || __args__.windowId || 1) } return Object.assign(context, { storage: require('./storage'), BrowserWindow, get positioner() { return new Positioner(getBrowserWindow()) }, //streamCommandOutput, electronDialog: dialog, onPanelMessage(handler, channel = 'PANEL') { return responder.registerTopic(channel, (payload) => Promise.resolve(handler(payload))) }, resizeBrowserWindow(...args) { return getBrowserWindow().setSize(...args) }, moveBrowserWindow(...args) { return context.positioner.move(...args) }, ipcRenderer, ipc: ipcRenderer, responder, parseHash, createRuntime() { return new Runtime(__args__, { getContext() { return context } }) }, ipcStream }) }