mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-06-23 13:04:44 -05:00
32 lines
644 B
TypeScript
32 lines
644 B
TypeScript
import { useState } from "react";
|
|
import { useEventListener } from "./useEventListener";
|
|
import { useIsomorphicLayoutEffect } from "./useIsomorphicLayoutEffect";
|
|
|
|
interface WindowSize {
|
|
width: number;
|
|
height: number;
|
|
}
|
|
|
|
export function useWindowSize(): WindowSize {
|
|
const [windowSize, setWindowSize] = useState<WindowSize>({
|
|
width: 0,
|
|
height: 0,
|
|
});
|
|
|
|
const handleSize = () => {
|
|
setWindowSize({
|
|
width: window.innerWidth,
|
|
height: window.innerHeight,
|
|
});
|
|
};
|
|
|
|
useEventListener("resize", handleSize);
|
|
|
|
// Set size at the first client-side load
|
|
useIsomorphicLayoutEffect(() => {
|
|
handleSize();
|
|
}, []);
|
|
|
|
return windowSize;
|
|
}
|