feat: transfer tab state to popout window and close tab in main window

- Restore transfer-tab-data IPC for transferring tab state
- Create usePopOutTab hook to receive tab data in new window
- Update handlePopOut to transfer data and close tab in main window
- Add PopOutTabData interface for type safety
This commit is contained in:
2026-03-21 23:52:02 +08:00
parent c37e6ab4f2
commit aa5895873b
7 changed files with 106 additions and 2 deletions

View File

@@ -54,6 +54,12 @@ contextBridge.exposeInMainWorld('electronAPI', {
terminalGetStatus: () => ipcRenderer.invoke('terminal-get-status'),
terminalGetPort: () => ipcRenderer.invoke('terminal-get-port'),
createWindow: (tabData: { route: string; title: string }) => ipcRenderer.invoke('create-window', tabData),
transferTabData: (windowId: number, tabData: any) => ipcRenderer.invoke('transfer-tab-data', windowId, tabData),
onTabDataReceived: (callback: (tabData: any) => void) => {
const handler = (_event: Electron.IpcRendererEvent, tabData: any) => callback(tabData);
ipcRenderer.on('tab-data-received', handler);
return () => ipcRenderer.removeListener('tab-data-received', handler);
},
windowMinimize: () => ipcRenderer.invoke('window-minimize'),
windowMaximize: () => ipcRenderer.invoke('window-maximize'),
windowClose: () => ipcRenderer.invoke('window-close'),