nodex.pw-Media-Editor/preload.js

68 lines
3.5 KiB
JavaScript
Raw Normal View History

2026-07-02 02:09:46 +05:00
'use strict';
const { contextBridge, ipcRenderer } = require('electron');
contextBridge.exposeInMainWorld('api', {
/* window */
getVersion: () => ipcRenderer.sendSync('app-version'),
winMin: () => ipcRenderer.send('win-minimize'),
winMax: () => ipcRenderer.send('win-maximize'),
winClose: () => ipcRenderer.send('win-close'),
onMaximized: (cb) => ipcRenderer.on('win-maximized', () => cb()),
onRestored: (cb) => ipcRenderer.on('win-restored', () => cb()),
openExternal: (url) => ipcRenderer.invoke('open-external', url),
/* project dirty state */
setDirty: (d) => ipcRenderer.send('project-dirty', d),
onSaveThenClose: (cb) => ipcRenderer.on('save-project-then-close', cb),
confirmClose: () => ipcRenderer.send('project-saved-close'),
/* notifications */
trayNotify: (title, content) => ipcRenderer.send('tray-notify', { title, content }),
/* settings */
getSettings: () => ipcRenderer.invoke('get-settings'),
saveSettings: (p) => ipcRenderer.invoke('save-settings', p),
/* dialogs / fs */
openFile: (opts) => ipcRenderer.invoke('open-file', opts),
saveFile: (opts) => ipcRenderer.invoke('save-file', opts),
readFile: (p) => ipcRenderer.invoke('read-file', p),
writeFile: (p, b) => ipcRenderer.invoke('write-file', p, b),
readTextFile: (p) => ipcRenderer.invoke('read-text-file', p),
writeTextFile: (p, t) => ipcRenderer.invoke('write-text-file', p, t),
fileExists: (p) => ipcRenderer.invoke('file-exists', p),
getFileStat: (p) => ipcRenderer.invoke('get-file-stat', p),
getTempDir: () => ipcRenderer.invoke('get-temp-dir'),
listDir: (d) => ipcRenderer.invoke('list-dir', d),
/* projects */
getProjectsDir: () => ipcRenderer.invoke('get-projects-dir'),
setProjectsDir: () => ipcRenderer.invoke('set-projects-dir'),
listProjects: () => ipcRenderer.invoke('list-projects'),
saveProject: (d) => ipcRenderer.invoke('save-project', d),
loadProject: (p) => ipcRenderer.invoke('load-project', p),
onOpenProjectFile: (cb) => ipcRenderer.on('open-project-file', (_, p) => cb(p)),
/* assets */
assetEstimate: (dirs) => ipcRenderer.invoke('asset-estimate', dirs),
assetScan: (dirs) => ipcRenderer.invoke('asset-scan', dirs),
assetLoadIndex: () => ipcRenderer.invoke('asset-load-index'),
assetPickFolder: () => ipcRenderer.invoke('asset-pick-folder'),
getDefaultAssetDirs: () => ipcRenderer.invoke('get-default-asset-dirs'),
onAssetScanProgress: (cb) => ipcRenderer.on('asset-scan-progress', (_, d) => cb(d)),
/* ffmpeg */
ffmpeg: (args) => ipcRenderer.invoke('ffmpeg-run', args),
ensureFFmpeg: () => ipcRenderer.invoke('ensure-ffmpeg'),
getFFmpegStatus: () => ipcRenderer.invoke('get-ffmpeg-status'),
onFfmpegProgress: (cb) => ipcRenderer.on('ffmpeg-progress', (_, d) => cb(d)),
onFfmpegDownloading: (cb) => ipcRenderer.on('ffmpeg-downloading', (_, d) => cb(d)),
/* yt-dlp */
ensureYtdlp: () => ipcRenderer.invoke('ensure-ytdlp'),
getYtdlpPath: () => ipcRenderer.invoke('get-ytdlp-path'),
ytdlp: (opts) => ipcRenderer.invoke('ytdlp-run', opts),
onYtdlpProgress: (cb) => ipcRenderer.on('ytdlp-progress', (_, d) => cb(d)),
onYtdlpDownloading: (cb) => ipcRenderer.on('ytdlp-downloading',(_, d) => cb(d)),
});