20 lines
981 B
TypeScript
20 lines
981 B
TypeScript
import { contextBridge, ipcRenderer } from 'electron'
|
|
import type { Command, Report, SceneReport, State } from '../src/types/screen.js'
|
|
|
|
contextBridge.exposeInMainWorld('screenBridge', {
|
|
command: (command: Command) => ipcRenderer.invoke('command', command),
|
|
report: (report: Report) => ipcRenderer.send('report', report),
|
|
reportScene: (report: SceneReport) => ipcRenderer.send('scene-report', report),
|
|
preview: () => ipcRenderer.invoke('preview'),
|
|
state: () => ipcRenderer.invoke('state'),
|
|
subscribe: (listener: (state: State) => void) => {
|
|
const handler = (_event: Electron.IpcRendererEvent, state: State) => listener(state)
|
|
ipcRenderer.on('state', handler)
|
|
return () => ipcRenderer.removeListener('state', handler)
|
|
},
|
|
host: () => ipcRenderer.invoke('host'),
|
|
show: (id: number) => ipcRenderer.invoke('show', id),
|
|
packages: () => ipcRenderer.invoke('packages'),
|
|
selectPackage: (key: string | null) => ipcRenderer.invoke('select-package', key),
|
|
})
|