@itwin/itwinui-react
Version:
A react component library for iTwinUI
21 lines (20 loc) • 684 B
JavaScript
import * as React from 'react';
import { useSyncExternalStore } from './useSyncExternalStore.js';
export const useMediaQuery = (queryString) => {
let getSnapshot = React.useCallback(
() =>
'undefined' != typeof window
? window.matchMedia?.(queryString).matches
: void 0,
[queryString],
);
let subscribe = React.useCallback(
(onChange) => {
let mediaQueryList = window.matchMedia?.(queryString);
mediaQueryList?.addEventListener?.('change', onChange);
return () => mediaQueryList?.removeEventListener?.('change', onChange);
},
[queryString],
);
return useSyncExternalStore(subscribe, getSnapshot, () => void 0);
};