2024-06-14 01:49:25 +02:00
|
|
|
// Copyright 2024, Command Line Inc.
|
|
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
|
|
let { contextBridge, ipcRenderer } = require("electron");
|
|
|
|
|
|
|
|
contextBridge.exposeInMainWorld("api", {
|
2024-06-21 21:32:38 +02:00
|
|
|
getPlatform: () => ipcRenderer.sendSync("getPlatform"),
|
2024-06-19 20:15:14 +02:00
|
|
|
getCursorPoint: () => ipcRenderer.sendSync("getCursorPoint"),
|
2024-06-20 00:42:19 +02:00
|
|
|
openNewWindow: () => ipcRenderer.send("openNewWindow"),
|
|
|
|
showContextMenu: (menu, position) => ipcRenderer.send("contextmenu-show", menu, position),
|
2024-07-22 22:33:10 +02:00
|
|
|
onContextMenuClick: (callback) => ipcRenderer.on("contextmenu-click", (_event, id) => callback(id)),
|
2024-06-26 21:14:59 +02:00
|
|
|
downloadFile: (filePath) => ipcRenderer.send("download", { filePath }),
|
2024-06-28 03:09:30 +02:00
|
|
|
openExternal: (url) => {
|
|
|
|
if (url && typeof url === "string") {
|
|
|
|
ipcRenderer.send("open-external", url);
|
|
|
|
} else {
|
|
|
|
console.error("Invalid URL passed to openExternal:", url);
|
|
|
|
}
|
|
|
|
},
|
2024-07-18 03:42:49 +02:00
|
|
|
getEnv: (varName) => ipcRenderer.sendSync("getEnv", varName),
|
2024-07-22 22:33:10 +02:00
|
|
|
onFullScreenChange: (callback) =>
|
|
|
|
ipcRenderer.on("fullscreen-change", (_event, isFullScreen) => callback(isFullScreen)),
|
2024-06-28 03:09:30 +02:00
|
|
|
});
|
|
|
|
|
|
|
|
// Custom event for "new-window"
|
|
|
|
ipcRenderer.on("webview-new-window", (e, webContentsId, details) => {
|
|
|
|
const event = new CustomEvent("new-window", { detail: details });
|
|
|
|
document.getElementById("webview").dispatchEvent(event);
|
2024-06-14 01:49:25 +02:00
|
|
|
});
|