All files / react-app/src/hooks useMediaQuery.ts

92.3% Statements 12/13
50% Branches 1/2
100% Functions 5/5
92.3% Lines 12/13

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33      42x   55x 55x         42x     13x     42x 13x     13x   13x   13x 13x       42x    
import { useEffect, useState } from "react";
 
export function useMediaQuery(query: string): boolean {
  const getMatches = (query: string): boolean => {
    // Prevents SSR issues
    Eif (typeof window !== "undefined") {
      return window.matchMedia(query).matches;
    }
    return false;
  };
 
  const [matches, setMatches] = useState<boolean>(getMatches(query));
 
  function handleChange() {
    setMatches(getMatches(query));
  }
 
  useEffect(() => {
    const matchMedia = window.matchMedia(query);
 
    // Triggered at the first client-side load and if query changes
    handleChange();
 
    matchMedia.addEventListener("change", handleChange);
 
    return () => {
      matchMedia.removeEventListener("change", handleChange);
    };
  }, [query]);
 
  return matches;
}