You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					27 lines
				
				1.1 KiB
			
		
		
			
		
	
	
					27 lines
				
				1.1 KiB
			| 
											3 years ago
										 | "use strict"; | ||
|  | Object.defineProperty(exports, "__esModule", { value: true }); | ||
|  | const react_1 = require("react"); | ||
|  | const useWindowSize = () => { | ||
|  |     // Initialize state with undefined width/height so server and client renders match
 | ||
|  |     // Learn more here: https://joshwcomeau.com/react/the-perils-of-rehydration/
 | ||
|  |     const [windowSize, setWindowSize] = react_1.useState(); | ||
|  |     react_1.useEffect(() => { | ||
|  |         // Handler to call on window resize
 | ||
|  |         const handleResize = () => { | ||
|  |             // Set window width/height to state
 | ||
|  |             setWindowSize({ | ||
|  |                 width: window.innerWidth, | ||
|  |                 height: window.innerHeight, | ||
|  |             }); | ||
|  |         }; | ||
|  |         // Add event listener
 | ||
|  |         window.addEventListener('resize', handleResize); | ||
|  |         // Call handler right away so state gets updated with initial window size
 | ||
|  |         handleResize(); | ||
|  |         // Remove event listener on cleanup
 | ||
|  |         return () => window.removeEventListener('resize', handleResize); | ||
|  |     }, []); // Empty array ensures that effect is only run on mount
 | ||
|  |     return windowSize || null; | ||
|  | }; | ||
|  | exports.default = useWindowSize; |