{"version":3,"file":"use-media-query.cjs","names":[],"sources":["../../src/hooks/use-media-query.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\n/**\n * Subscribe to a CSS media query and re-render on match changes.\n *\n * @param query - A standard CSS media query string, e.g. \"(max-width: 768px)\".\n * @returns True when the query matches.\n */\nexport function useMediaQuery(query: string): boolean {\n    const [matches, setMatches] = useState<boolean>(() => {\n        if (typeof window === \"undefined\") return false;\n        return window.matchMedia(query).matches;\n    });\n\n    useEffect(() => {\n        if (typeof window === \"undefined\") return;\n        const list = window.matchMedia(query);\n        const handler = (event: MediaQueryListEvent): void => setMatches(event.matches);\n        setMatches(list.matches);\n        list.addEventListener(\"change\", handler);\n        return () => list.removeEventListener(\"change\", handler);\n    }, [query]);\n\n    return matches;\n}\n"],"mappings":"uBAQA,SAAgB,EAAc,EAAwB,CAClD,GAAM,CAAC,EAAS,IAAA,EAAc,EAAA,SAAA,KACtB,OAAO,OAAW,IAAoB,GACnC,OAAO,WAAW,CAAK,CAAC,CAAC,OACnC,EAWD,OATA,EAAA,EAAA,UAAA,KAAgB,CACZ,GAAI,OAAO,OAAW,IAAa,OACnC,IAAM,EAAO,OAAO,WAAW,CAAK,EAC9B,EAAW,GAAqC,EAAW,EAAM,OAAO,EAG9E,OAFA,EAAW,EAAK,OAAO,EACvB,EAAK,iBAAiB,SAAU,CAAO,MAC1B,EAAK,oBAAoB,SAAU,CAAO,CAC3D,EAAG,CAAC,CAAK,CAAC,EAEH,CACX"}