solid-use
Version:
A collection of SolidJS utilities
2 lines (1 loc) • 647 B
JavaScript
import{createEffect as i,createSignal as c,onCleanup as f}from"solid-js";import{isServer as u}from"solid-js/web";var s=new Map;function d(e){let r=s.get(e);if(r)return r;let t=window.matchMedia(e);return s.set(e,t),t}var o=u?e=>()=>!1:e=>{let r=d(e),[t,a]=c(!1);return i(()=>{let n=()=>{a(r.matches)};n(),r.addEventListener("change",n,!1),f(()=>{r.removeEventListener("change",n,!1)})}),t};function g(){return o("(prefers-color-scheme: dark)")}function p(){return o("(prefers-color-scheme: light)")}function M(){return o("(prefers-reduced-motion)")}export{o as useMediaQuery,g as usePrefersDark,p as usePrefersLight,M as usePrefersReducedMotion};