mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-04-03 00:05:01 -05:00
* Initial * CSS lint * Test CI * Add 1v1, 2v2, and 3v3 Tags (#1771) * Initial * CSS lint * Test CI * Rename step --------- Co-authored-by: xi <104683822+ximk@users.noreply.github.com>
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;
|
|
}
|