import { ref } from 'vue'; const isMaximized = ref(false); let _api: any = null; function api() { if (!_api) _api = (window as any).electron; return _api; } function checkMaximized() { const a = api(); if (a) isMaximized.value = a.windowIsMaximized(); } let _init = false; function ensureInit() { if (_init) return; _init = true; const a = api(); if (!a) return; checkMaximized(); window.addEventListener('resize', checkMaximized); a.ipcRenderer?.on('window:maximize-change', (_e: any, v: boolean) => { isMaximized.value = v; }); } export function useElectronWindow() { ensureInit(); return { isElectron: !!api(), isMaximized, getVersion: () => api()?.getVersion() || '', winMinimize: () => api()?.windowMinimize(), winMaximize: () => { const a = api(); if (!a) return; if (isMaximized.value) a.windowUnmaximize(); else a.windowMaximize(); }, winClose: () => api()?.windowClose(), }; }