UNPKG

vitepress-theme-base-teek

Version:
28 lines (22 loc) 852 B
import { onMounted, onUnmounted, ref } from "vue"; import { useDebounce } from "./useDebounce"; import { inBrowser } from "vitepress"; export const useWindowSize = (sizeChangeCallback?: (width: number, height: number) => void | undefined) => { const width = ref(Number.POSITIVE_INFINITY); const height = ref(Number.POSITIVE_INFINITY); const updateSize = useDebounce(() => { if (inBrowser) { width.value = window.innerWidth; height.value = window.innerHeight; sizeChangeCallback?.(width.value, height.value); } }, 100); onMounted(() => { if (inBrowser) window.addEventListener("resize", updateSize, { passive: true }); }); onUnmounted(() => { if (inBrowser) window.removeEventListener("resize", updateSize); }); updateSize(); return { width, height, updateSize }; };