| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- 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(),
- };
- }
|