popup.ts1000 BView on GitHub
import { contextBridge, ipcRenderer } from 'electron'

contextBridge.exposeInMainWorld('popupAPI', {
  onStateUpdate: (cb: (state: { platform: string; title: string | null; isRecording: boolean }) => void): void => {
    ipcRenderer.on('popup:state-update', (_event, state) => cb(state))
  },
  onRecordingUpdate: (cb: (isRecording: boolean) => void): void => {
    ipcRenderer.on('popup:recording-update', (_event, isRecording) => cb(isRecording))
  },
  recordClicked: (): void => {
    ipcRenderer.send('popup:record-clicked')
  },
  stopClicked: (): void => {
    ipcRenderer.send('popup:stop-clicked')
  },
  dismissClicked: (): void => {
    ipcRenderer.send('popup:dismiss-clicked')
  },
  joinRecordClicked: (): void => {
    ipcRenderer.send('popup:join-record-clicked')
  },
  collapse: (): void => {
    ipcRenderer.send('popup:collapse')
  },
  expand: (): void => {
    ipcRenderer.send('popup:expand')
  },
  focusCallUI: (): void => {
    ipcRenderer.send('popup:focusCallUI')
  },
})