Files
omr-desktop/electron/preload.ts
T

28 lines
1.6 KiB
TypeScript

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),
})