UNPKG

@vueuse/electron

Version:

Electron renderer process modules for VueUse

120 lines (113 loc) 4.06 kB
import { shallowRef, isRef, ref, watch } from 'vue'; import { tryOnScopeDispose } from '@vueuse/shared'; function useIpcRendererInvoke(...args) { let ipcRenderer; let channel; let invokeArgs; if (typeof args[0] === "string") { [channel, ...invokeArgs] = args; ipcRenderer = window.require ? window.require("electron").ipcRenderer : void 0; } else { [ipcRenderer, channel, ...invokeArgs] = args; } if (!ipcRenderer) throw new Error("please provide IpcRenderer module or enable nodeIntegration"); const result = shallowRef(null); ipcRenderer.invoke(channel, ...invokeArgs).then((response) => { result.value = response; }); return result; } function useIpcRendererOn(...args) { let ipcRenderer; let channel; let listener; if (typeof args[0] === "string") { [channel, listener] = args; ipcRenderer = window.require ? window.require("electron").ipcRenderer : void 0; } else { [ipcRenderer, channel, listener] = args; } if (!ipcRenderer) throw new Error("please provide IpcRenderer module or enable nodeIntegration"); tryOnScopeDispose(() => { ipcRenderer.removeListener(channel, listener); }); return ipcRenderer.on(channel, listener); } function setSendSync(ipcRenderer) { return (channel, ...args) => { const result = shallowRef(null); result.value = ipcRenderer.sendSync(channel, ...args); return result; }; } function useIpcRenderer(ipcRenderer) { if (!ipcRenderer) ipcRenderer = window == null ? void 0 : window.require("electron").ipcRenderer; if (!ipcRenderer) throw new Error("provide IpcRenderer module or enable nodeIntegration"); return { on: (channel, listener) => useIpcRendererOn(channel, listener), once: ipcRenderer.once.bind(ipcRenderer), removeListener: ipcRenderer.removeListener.bind(ipcRenderer), removeAllListeners: ipcRenderer.removeAllListeners.bind(ipcRenderer), send: ipcRenderer.send, invoke: (channel, ...args) => useIpcRendererInvoke(ipcRenderer, channel, ...args), sendSync: setSendSync(ipcRenderer), postMessage: ipcRenderer.postMessage, sendTo: ipcRenderer.sendTo, sendToHost: ipcRenderer.sendToHost }; } function useZoomFactor(...args) { let webFrame; let newFactor = null; if (args.length === 0 || isRef(args[0]) && typeof args[0].value === "number" || typeof args[0] === "number") { webFrame = window.require ? window.require("electron").webFrame : void 0; newFactor = args.length > 0 ? ref(args[0]) : null; } else { webFrame = args[0]; newFactor = args.length > 1 ? ref(args[1]) : null; } if (!webFrame) throw new Error("provide WebFrame module or enable nodeIntegration"); if (newFactor && newFactor.value === 0) throw new Error("the factor must be greater than 0.0."); const factor = ref(newFactor != null ? newFactor : webFrame.getZoomFactor()); watch( factor, (f, o) => { if (typeof f === "number" && f === 0) throw new Error("the factor must be greater than 0.0."); if (typeof f === "number" && f !== o) webFrame == null ? void 0 : webFrame.setZoomFactor(f); }, { immediate: true } ); return factor; } function useZoomLevel(...args) { let webFrame; let newLevel = null; if (args.length === 0 || isRef(args[0]) && typeof args[0].value === "number" || typeof args[0] === "number") { webFrame = window.require ? window.require("electron").webFrame : void 0; newLevel = args.length > 0 ? ref(args[0]) : null; } else { webFrame = args[0]; newLevel = args.length > 1 ? ref(args[1]) : null; } if (!webFrame) throw new Error("provide WebFrame module or enable nodeIntegration"); const level = ref(newLevel != null ? newLevel : webFrame.getZoomLevel()); watch( level, (f, o) => { if (typeof f === "number" && f !== o) webFrame == null ? void 0 : webFrame.setZoomLevel(f); }, { immediate: true } ); return level; } export { useIpcRenderer, useIpcRendererInvoke, useIpcRendererOn, useZoomFactor, useZoomLevel };