{"version":3,"sources":["useViewportSizeState.ts"],"sourcesContent":["import { useEffect, useState } from \"react\"\n\ntype ViewportSize = { width: number; height: number }\n\nfunction getViewportSize(): ViewportSize {\n    if (typeof window === \"undefined\") {\n        return { width: 0, height: 0 }\n    }\n\n    return {\n        width: window.innerWidth,\n        height: window.innerHeight,\n    }\n}\n\nexport function useViewportSizeState<T>(\n    getState: (size: ViewportSize) => T\n): T {\n    const [state, setState] = useState(() => getState(getViewportSize()))\n\n    useEffect(() => {\n        const handleWindowResize = () => setState(getState(getViewportSize()))\n        window.addEventListener(\"resize\", handleWindowResize)\n\n        return () => {\n            window.removeEventListener(\"resize\", handleWindowResize)\n        }\n    }, [])\n\n    return state\n}\n"],"names":[],"mappings":"AAAA,OAAS,SAAS,CAAE,QAAQ,KAAQ,OAAO,CAAA,AAI3C,SAAS,eAAe,EAAiB,CACrC,GAAI,OAAO,MAAM,GAAK,WAAW,CAAE,CAC/B,MAAO,CAAE,KAAK,CAAE,CAAC,CAAE,MAAM,CAAE,CAAC,CAAE,CAAA,AAClC,CAAC,AAED,MAAO,CACH,KAAK,CAAE,MAAM,CAAC,UAAU,CACxB,MAAM,CAAE,MAAM,CAAC,WAAW,CAC7B,CAAA,AACL,CAAC,AAED,OAAO,SAAS,oBAAoB,CAChC,QAAmC,CAClC,CACD,KAAM,CAAC,KAAK,CAAE,QAAQ,CAAC,CAAG,QAAQ,CAAC,IAAM,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,CAErE,SAAS,CAAC,IAAM,CACZ,MAAM,kBAAkB,CAAG,IAAM,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,CACtE,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAE,kBAAkB,CAAC,CAErD,MAAO,IAAM,CACT,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAE,kBAAkB,CAAC,CAC5D,CAAC,CAAA,AACL,CAAC,CAAE,EAAE,CAAC,CAEN,OAAO,KAAK,CAAA,AAChB,CAAC"}