import { ipcRenderer, contextBridge } from 'electron' // --------- Expose some API to the Renderer process --------- contextBridge.exposeInMainWorld('ipcRenderer', { on(...args: Parameters) { const [channel, listener] = args return ipcRenderer.on(channel, (event, ...args) => listener(event, ...args)) }, off(...args: Parameters) { const [channel, ...omit] = args return ipcRenderer.off(channel, ...omit) }, send(...args: Parameters) { const [channel, ...omit] = args return ipcRenderer.send(channel, ...omit) }, invoke(...args: Parameters) { const [channel, ...omit] = args return ipcRenderer.invoke(channel, ...omit) }, // You can expose other APTs you need here. // ... }) // 暴露窗口控制API contextBridge.exposeInMainWorld('electronAPI', { exit: () => ipcRenderer.send('exit-app'), toggleFullScreen: (isFullScreen: boolean) => ipcRenderer.send('toggle-fullscreen', isFullScreen), toggleDevTools: () => ipcRenderer.send('toggle-dev-tools'), loadAppsJson: () => ipcRenderer.invoke('load-apps-json'), loadDefaultAppsJson: () => ipcRenderer.invoke('load-default-apps-json'), saveAppsJson: (appsJson: string) => ipcRenderer.send('save-apps-json', appsJson), openWindow: (url: string) => ipcRenderer.send('open-window', url), loadChildUrl: (url: string, aspectRatio: number) => ipcRenderer.send('load-child-url', url, aspectRatio), toggleChildSide: (isSideOen: boolean) => ipcRenderer.send('toggle-child-side', isSideOen), showConfig: () => ipcRenderer.send('show-config'), showAbout: () => ipcRenderer.send('show-about'), })