docs.sheetjs.com/docz/static/electron/preload.js

20 lines
939 B
JavaScript

const { contextBridge, ipcRenderer, shell } = require('electron');
const path = require('path');
const XLSX = require('xlsx');
// Because the main process is sandboxed, we need to use the contextBridge API to expose the API to the renderer process.
// https://www.electronjs.org/docs/latest/api/context-bridge
contextBridge.exposeInMainWorld('SheetJSDemoAPI', {
openFile: (filters) => ipcRenderer.invoke('dialog:openFile', filters),
saveFile: (filters) => ipcRenderer.invoke('dialog:saveFile', filters),
message: (msg) => ipcRenderer.invoke('dialog:message', msg),
openExternal: (url) => shell.openExternal(url),
// expose file-opened event
onFileOpened: (cb) => ipcRenderer.on('file-opened', (_e, fp) => cb(fp)),
// expose basename from path package
basename: (p) => path.basename(p),
// expose extname from path package
extname: (p) => path.extname(p),
// expose sheetjs package functions
xlsx: XLSX,
});