const { contextBridge, ipcRenderer } = require("electron"); contextBridge.exposeInMainWorld("api", { saveTags: (tags) => ipcRenderer.send("save-tags", tags), loadTags: () => ipcRenderer.invoke("load-tags"), listSerialPorts: () => ipcRenderer.invoke("list-serial-ports"), // connect/disconnect + subscription API connectCom: (port, baudRate) => ipcRenderer.invoke("connect-com", { port, baudRate }), disconnectCom: () => ipcRenderer.invoke("disconnect-com"), onSerialUpdate: (cb) => { const listener = (event, data) => { cb(data); }; ipcRenderer.on("serial-update", listener); // return unregister function return () => ipcRenderer.removeListener("serial-update", listener); }, onSerialRaw: (cb) => { const listener = (event, data) => { cb(data); }; ipcRenderer.on("serial-raw", listener); return () => ipcRenderer.removeListener("serial-raw", listener); }, onVolumeLog: (cb) => { const listener = (event, data) => { cb(data); }; ipcRenderer.on("volume-log", listener); return () => ipcRenderer.removeListener("volume-log", listener); } });