mirror of
https://github.com/cool-team-official/cool-admin-vue.git
synced 2026-09-18 18:46:13 +00:00
31 lines
538 B
TypeScript
31 lines
538 B
TypeScript
import { useEventListener } from '@vueuse/core';
|
|
import { reactive, watch } from 'vue';
|
|
import { getBrowser } from '../utils';
|
|
|
|
const browser = reactive(getBrowser());
|
|
const events: (() => void)[] = [];
|
|
|
|
watch(
|
|
() => browser.screen,
|
|
() => {
|
|
events.forEach(ev => ev());
|
|
}
|
|
);
|
|
|
|
useEventListener(window, 'resize', () => {
|
|
Object.assign(browser, getBrowser());
|
|
});
|
|
|
|
export function useBrowser() {
|
|
return {
|
|
browser,
|
|
onScreenChange(ev: () => void, immediate = true) {
|
|
events.push(ev);
|
|
|
|
if (immediate) {
|
|
ev();
|
|
}
|
|
}
|
|
};
|
|
}
|