@modern-kit/react
Version:
30 lines (26 loc) • 902 B
JavaScript
;
var utils = require('@modern-kit/utils');
var hooksUseEventListener = require('../useEventListener/index.cjs');
var React = require('react');
require('../usePreservedCallback/index.cjs');
require('../useIsomorphicLayoutEffect/index.cjs');
const getMatchMedia = (mediaQueryString, defaultValue) => {
if (utils.isClient()) {
return window.matchMedia(mediaQueryString).matches;
}
return defaultValue ?? false;
};
function useMediaQuery(mediaQueryString, defaultValue) {
const [isMatch, setIsMatch] = React.useState(
getMatchMedia(mediaQueryString, defaultValue)
);
const handleChange = (e) => setIsMatch(e.matches);
hooksUseEventListener.useEventListener(
typeof window !== "undefined" ? window.matchMedia(mediaQueryString) : null,
"change",
handleChange
);
return isMatch;
}
exports.useMediaQuery = useMediaQuery;
//# sourceMappingURL=index.cjs.map