sanity-plugin-icon-picker
Version:
An Icon Picker plugin for Sanity
22 lines (19 loc) • 690 B
text/typescript
import { useEffect, useState } from 'react';
export default function useMedia(
queries: string[],
values: number[],
defaultValue: number
): number {
const mediaQueryLists = queries.map((q) => window.matchMedia(q));
const getValue = () => {
const index = mediaQueryLists.findIndex((mql) => mql.matches);
return typeof values[index] === 'undefined' ? defaultValue : values[index];
};
const [value, setValue] = useState(getValue);
useEffect(() => {
const handler = () => setValue(getValue);
mediaQueryLists.forEach((mql) => mql.addListener(handler));
return () => mediaQueryLists.forEach((mql) => mql.removeListener(handler));
}, []);
return value;
}