UNPKG

@itwin/itwinui-react

Version:

A react component library for iTwinUI

21 lines (20 loc) 684 B
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); };