All files / src/hooks useWindowResize.ts

0% Statements 0/11
0% Branches 0/2
0% Functions 0/4
0% Lines 0/11

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 34 35                                                                     
import { debounce } from "lodash";
import { useCallback, useEffect } from "react";
 
type Props = {
  widthThreshold: number;
  overThresholdCallback: () => void;
  belowThresholdCallback: () => void;
};
 
export const useWindowResize = ({
  widthThreshold,
  overThresholdCallback,
  belowThresholdCallback,
}: Props) => {
  const deboucnedHandleResize = useCallback(
    debounce(() => {
      const isBelow = window.innerWidth < widthThreshold;
      if (isBelow) {
        belowThresholdCallback();
      } else {
        overThresholdCallback();
      }
    }, 300),
    [],
  );
 
  useEffect(() => {
    window.addEventListener("resize", deboucnedHandleResize);
    deboucnedHandleResize();
    return () => {
      window.removeEventListener("resize", deboucnedHandleResize);
    };
  }, []);
};