/** * notion-enhancer: api * (c) 2021 dragonwocky (https://dragonwocky.me/) * (https://notion-enhancer.github.io/) under the MIT license */ 'use strict'; /** * access to electron renderer apis * @namespace electron */ import * as _api from './index.mjs'; // trick jsdoc /** * access to the electron BrowserWindow instance for the current window * see https://www.electronjs.org/docs/latest/api/browser-window * @type {BrowserWindow} * @process electron (renderer process) */ export const browser = globalThis.__enhancerElectronApi?.browser; /** * access to the electron webFrame instance for the current page * see https://www.electronjs.org/docs/latest/api/web-frame * @type {webFrame} * @process electron (renderer process) */ export const webFrame = globalThis.__enhancerElectronApi?.webFrame; /** * send a message to the main electron process * @param {string} channel - the message identifier * @param {any} data - the data to pass along with the message * @param {string=} namespace - a prefix for the message to categorise * it as e.g. enhancer-related. this should not be changed unless replicating * builtin ipc events. * @process electron (renderer process) */ export const sendMessage = (channel, data, namespace = 'notion-enhancer') => { if (globalThis.__enhancerElectronApi) { globalThis.__enhancerElectronApi.ipcRenderer.sendMessage(channel, data, namespace); } }; /** * send a message to the webview's parent renderer process * @param {string} channel - the message identifier * @param {any} data - the data to pass along with the message * @param {string=} namespace - a prefix for the message to categorise * it as e.g. enhancer-related. this should not be changed unless replicating * builtin ipc events. * @process electron (renderer process) */ export const sendMessageToHost = (channel, data, namespace = 'notion-enhancer') => { if (globalThis.__enhancerElectronApi) { globalThis.__enhancerElectronApi.ipcRenderer.sendMessageToHost(channel, data, namespace); } }; /** * receive a message from either the main process or * the webview's parent renderer process * @param {string} channel - the message identifier to listen for * @param {function} callback - the message handler, passed the args (event, data) * @param {string=} namespace - a prefix for the message to categorise * it as e.g. enhancer-related. this should not be changed unless replicating * builtin ipc events. * @process electron (renderer process) */ export const onMessage = (channel, callback, namespace = 'notion-enhancer') => { if (globalThis.__enhancerElectronApi) { globalThis.__enhancerElectronApi.ipcRenderer.onMessage(channel, callback, namespace); } }; /** * require() notion app files * @param {string} path - within notion/resources/app/ e.g. main/createWindow.js * @process electron (main process) */ export const notionRequire = (path) => { return globalThis.__enhancerElectronApi ? globalThis.__enhancerElectronApi.notionRequire(path) : null; }; /** * get all available app windows excluding the menu * @process electron (main process) */ export const getNotionWindows = () => { return globalThis.__enhancerElectronApi ? globalThis.__enhancerElectronApi.getNotionWindows() : null; }; /** * get the currently focused notion window * @process electron (main process) */ export const getFocusedNotionWindow = () => { return globalThis.__enhancerElectronApi ? globalThis.__enhancerElectronApi.getFocusedNotionWindow() : null; };