// See the Electron documentation for details on how to use preload scripts: // https://www.electronjs.org/docs/latest/tutorial/process-model#preload-scripts const { contextBridge, ipcRenderer, BrowserWindow } = require('electron') // expose an API to choose available devices contextBridge.exposeInMainWorld('nanodevices', { list() { ipcRenderer.invoke('nanodevices:list') }, connect(devicename) { ipcRenderer.invoke('nanodevices:connect', devicename) }, disconnect() { ipcRenderer.invoke('nanodevices:disconnect') }, on_device_attached(listener) { ipcRenderer.on('nanodevice-attached', (_event, value) => listener(value)) }, on_device_detached(listener) { ipcRenderer.on('nanodevice-detached', (_event, value) => listener(value)) }, }) // expose an API to communicate with the nano device contextBridge.exposeInMainWorld('nanodevice', { get_value(pid, tid, vid) { ipcRenderer.invoke('nano:get', pid, tid, vid) }, set_value(pid, tid, vid, value) { ipcRenderer.invoke('nano:set', pid, tid, vid, value) }, on_value(listener) { ipcRenderer.on('nano-onvalue', (_event, value) => listener(value)) }, }) // expose an API to close the app contextBridge.exposeInMainWorld('window', { minimize() { BrowserWindow.getFocusedWindow()?.minimize() }, maximize() { BrowserWindow.getFocusedWindow()?.maximize() }, close() { BrowserWindow.getFocusedWindow()?.close() }, })