import { contextBridge, ipcRenderer } from "electron" contextBridge.exposeInMainWorld("electronAPI", { focusWindow: () => ipcRenderer.send("window:focus"), setTheme: (dark: boolean) => ipcRenderer.send("window:setTheme", dark), minimizeWindow: () => ipcRenderer.send("window:minimize"), maximizeWindow: () => ipcRenderer.send("window:maximize"), closeWindow: () => ipcRenderer.send("window:close"), isMaximized: () => ipcRenderer.invoke("window:isMaximized"), onMaximizeChange: (callback: (maximized: boolean) => void) => { ipcRenderer.on("window:maximize-change", (_event, value) => callback(value)) }, openFileDialog: (filters: { name: string; extensions: string[] }[]) => ipcRenderer.invoke("dialog:openFile", filters), openDirectoryDialog: () => ipcRenderer.invoke("dialog:openDirectory"), saveFileDialog: (defaultName: string, filters: { name: string; extensions: string[] }[]) => ipcRenderer.invoke("dialog:saveFile", defaultName, filters), readFile: (path: string) => ipcRenderer.invoke("file:read", path), writeFile: (path: string, data: string) => ipcRenderer.invoke("file:write", path, data), readImage: (path: string) => ipcRenderer.invoke("file:readImage", path), writeBinaryFile: (path: string, base64: string) => ipcRenderer.invoke("file:writeBinary", path, base64), getAppPath: () => ipcRenderer.invoke("app:getPath"), readDir: (path: string) => ipcRenderer.invoke("dir:read", path), ensureDir: (path: string) => ipcRenderer.invoke("dir:ensure", path), pathExists: (path: string) => ipcRenderer.invoke("path:exists", path), copyFile: (src: string, dest: string) => ipcRenderer.invoke("file:copy", src, dest), })