UNPKG

@mantine/hooks

Version:

A collection of 50+ hooks for state and UI management

39 lines (36 loc) 1.16 kB
'use client'; import { useState, useRef, useEffect } from 'react'; function attachMediaListener(query, callback) { try { query.addEventListener("change", callback); return () => query.removeEventListener("change", callback); } catch (e) { query.addListener(callback); return () => query.removeListener(callback); } } function getInitialValue(query, initialValue) { if (typeof window !== "undefined" && "matchMedia" in window) { return window.matchMedia(query).matches; } return false; } function useMediaQuery(query, initialValue, { getInitialValueInEffect } = { getInitialValueInEffect: true }) { const [matches, setMatches] = useState( getInitialValueInEffect ? initialValue : getInitialValue(query) ); const queryRef = useRef(null); useEffect(() => { if ("matchMedia" in window) { queryRef.current = window.matchMedia(query); setMatches(queryRef.current.matches); return attachMediaListener(queryRef.current, (event) => setMatches(event.matches)); } return void 0; }, [query]); return matches || false; } export { useMediaQuery }; //# sourceMappingURL=use-media-query.mjs.map