const { contextBridge, ipcRenderer } = require('electron'); contextBridge.exposeInMainWorld('electronAPI', { // File operations openFile: () => ipcRenderer.invoke('dialog:openFile'), openFiles: () => ipcRenderer.invoke('dialog:openFiles'), readFile: (filePath) => ipcRenderer.invoke('file:read', filePath), saveFile: (data) => ipcRenderer.invoke('file:save', data), saveFileAs: (data) => ipcRenderer.invoke('file:saveAs', data), getCurrentPath: () => ipcRenderer.invoke('file:getCurrentPath'), getFileStats: (filePath) => ipcRenderer.invoke('file:stats', filePath), reloadFile: () => ipcRenderer.invoke('file:reload'), // Tab management tabSwitched: (filePath) => ipcRenderer.invoke('tab:switched', filePath), // Window control forceClose: () => ipcRenderer.invoke('window:forceClose'), // Events from main process onFileOpenInTab: (callback) => ipcRenderer.on('file:openInTab', (event, data) => callback(data)), onFileOpened: (callback) => ipcRenderer.on('file:opened', (event, data) => callback(data)), onMenuSave: (callback) => ipcRenderer.on('menu:save', () => callback()), onMenuSaveAs: (callback) => ipcRenderer.on('menu:saveAs', () => callback()), onViewModeChange: (callback) => ipcRenderer.on('menu:viewMode', (event, mode) => callback(mode)), onExternalModification: (callback) => ipcRenderer.on('file:externallyModified', (event, filePath) => callback(filePath)), onConfirmClose: (callback) => ipcRenderer.on('window:confirmClose', () => callback()), onClosing: (callback) => ipcRenderer.on('window:closing', () => callback()), // Remove listeners removeAllListeners: (channel) => ipcRenderer.removeAllListeners(channel) });