@mskcc/carbon-react
Version:
Carbon react components for the MSKCC DSM
46 lines (39 loc) • 1.25 kB
JavaScript
/**
* MSKCC 2021, 2024
*/
;
Object.defineProperty(exports, '__esModule', { value: true });
var React = require('react');
var environment = require('./environment.js');
function useMatchMedia(mediaQueryString) {
const [matches, setMatches] = React.useState(() => {
if (environment.canUseDOM) {
const mediaQueryList = window.matchMedia(mediaQueryString);
return mediaQueryList.matches;
}
return false;
});
React.useEffect(() => {
function listener(event) {
setMatches(event.matches);
}
const mediaQueryList = window.matchMedia(mediaQueryString);
// Support fallback to `addListener` for broader browser support
if (mediaQueryList.addEventListener) {
mediaQueryList.addEventListener('change', listener);
} else {
mediaQueryList.addListener(listener);
}
// Make sure the media query list is in sync with the matches state
setMatches(mediaQueryList.matches);
return () => {
if (mediaQueryList.addEventListener) {
mediaQueryList.removeEventListener('change', listener);
} else {
mediaQueryList.removeListener(listener);
}
};
}, [mediaQueryString]);
return matches;
}
exports.useMatchMedia = useMatchMedia;