UNPKG

@modern-kit/react

Version:
31 lines (28 loc) 882 B
import { isClient } from '@modern-kit/utils'; import { useEventListener } from '../useEventListener/index.mjs'; import { useState, useCallback } from 'react'; import '../usePreservedCallback/index.mjs'; import '../useIsomorphicLayoutEffect/index.mjs'; const getMatchMedia = (mediaQueryString, defaultValue) => { if (isClient()) { return window.matchMedia(mediaQueryString).matches; } return defaultValue ?? false; }; function useMediaQuery(mediaQueryString, defaultValue) { const [isMatch, setIsMatch] = useState( getMatchMedia(mediaQueryString, defaultValue) ); const handleChange = useCallback( (e) => setIsMatch(e.matches), [] ); useEventListener( typeof window !== "undefined" ? window.matchMedia(mediaQueryString) : null, "change", handleChange ); return isMatch; } export { useMediaQuery }; //# sourceMappingURL=index.mjs.map