maz-ui
Version:
A standalone components library for Vue.Js 3 & Nuxt.Js 3
1 lines • 801 B
JavaScript
import{onMounted,onUnmounted,ref}from"vue";import{isClient}from"@maz-ui/utils/helpers/isClient";function useWindowSize(options={}){let{internalWindow=isClient()?globalThis:void 0,initialWidth=1/0,initialHeight=1/0,includeScrollbar=!0}=options;let width=ref(initialWidth);let height=ref(initialHeight);function update(){internalWindow&&(includeScrollbar?(width.value=internalWindow.innerWidth,height.value=internalWindow.innerHeight):(width.value=internalWindow.document.documentElement.clientWidth,height.value=internalWindow.document.documentElement.clientHeight))}return update(),onMounted(()=>{internalWindow&&internalWindow.addEventListener(`resize`,update,{passive:!0})}),onUnmounted(()=>{internalWindow&&internalWindow.removeEventListener(`resize`,update)}),{width,height}}export{useWindowSize};