{"version":3,"file":"useMediaQuery.50f09278.js","sources":["../node_modules/@mui/system/esm/useMediaQuery/useMediaQuery.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nimport { getThemeProps } from '../useThemeProps';\nimport useTheme from '../useThemeWithoutDefault';\n\n/**\n * @deprecated Not used internally. Use `MediaQueryListEvent` from lib.dom.d.ts instead.\n */\n\n/**\n * @deprecated Not used internally. Use `MediaQueryList` from lib.dom.d.ts instead.\n */\n\n/**\n * @deprecated Not used internally. Use `(event: MediaQueryListEvent) => void` instead.\n */\n\nfunction useMediaQueryOld(query, defaultMatches, matchMedia, ssrMatchMedia, noSsr) {\n const [match, setMatch] = React.useState(() => {\n if (noSsr && matchMedia) {\n return matchMedia(query).matches;\n }\n if (ssrMatchMedia) {\n return ssrMatchMedia(query).matches;\n }\n\n // Once the component is mounted, we rely on the\n // event listeners to return the correct matches value.\n return defaultMatches;\n });\n useEnhancedEffect(() => {\n let active = true;\n if (!matchMedia) {\n return undefined;\n }\n const queryList = matchMedia(query);\n const updateMatch = () => {\n // Workaround Safari wrong implementation of matchMedia\n // TODO can we remove it?\n // https://github.com/mui/material-ui/pull/17315#issuecomment-528286677\n if (active) {\n setMatch(queryList.matches);\n }\n };\n updateMatch();\n // TODO: Use `addEventListener` once support for Safari < 14 is dropped\n queryList.addListener(updateMatch);\n return () => {\n active = false;\n queryList.removeListener(updateMatch);\n };\n }, [query, matchMedia]);\n return match;\n}\n\n// eslint-disable-next-line no-useless-concat -- Workaround for https://github.com/webpack/webpack/issues/14814\nconst maybeReactUseSyncExternalStore = React['useSyncExternalStore' + ''];\nfunction useMediaQueryNew(query, defaultMatches, matchMedia, ssrMatchMedia, noSsr) {\n const getDefaultSnapshot = React.useCallback(() => defaultMatches, [defaultMatches]);\n const getServerSnapshot = React.useMemo(() => {\n if (noSsr && matchMedia) {\n return () => matchMedia(query).matches;\n }\n if (ssrMatchMedia !== null) {\n const {\n matches\n } = ssrMatchMedia(query);\n return () => matches;\n }\n return getDefaultSnapshot;\n }, [getDefaultSnapshot, query, ssrMatchMedia, noSsr, matchMedia]);\n const [getSnapshot, subscribe] = React.useMemo(() => {\n if (matchMedia === null) {\n return [getDefaultSnapshot, () => () => {}];\n }\n const mediaQueryList = matchMedia(query);\n return [() => mediaQueryList.matches, notify => {\n // TODO: Use `addEventListener` once support for Safari < 14 is dropped\n mediaQueryList.addListener(notify);\n return () => {\n mediaQueryList.removeListener(notify);\n };\n }];\n }, [getDefaultSnapshot, matchMedia, query]);\n const match = maybeReactUseSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n return match;\n}\nexport default function useMediaQuery(queryInput, options = {}) {\n const theme = useTheme();\n // Wait for jsdom to support the match media feature.\n // All the browsers MUI support have this built-in.\n // This defensive check is here for simplicity.\n // Most of the time, the match media logic isn't central to people tests.\n const supportMatchMedia = typeof window !== 'undefined' && typeof window.matchMedia !== 'undefined';\n const {\n defaultMatches = false,\n matchMedia = supportMatchMedia ? window.matchMedia : null,\n ssrMatchMedia = null,\n noSsr = false\n } = getThemeProps({\n name: 'MuiUseMediaQuery',\n props: options,\n theme\n });\n if (process.env.NODE_ENV !== 'production') {\n if (typeof queryInput === 'function' && theme === null) {\n console.error(['MUI: The `query` argument provided is invalid.', 'You are providing a function without a theme in the context.', 'One of the parent elements needs to use a ThemeProvider.'].join('\\n'));\n }\n }\n let query = typeof queryInput === 'function' ? queryInput(theme) : queryInput;\n query = query.replace(/^@media( ?)/m, '');\n\n // TODO: Drop `useMediaQueryOld` and use `use-sync-external-store` shim in `useMediaQueryNew` once the package is stable\n const useMediaQueryImplementation = maybeReactUseSyncExternalStore !== undefined ? useMediaQueryNew : useMediaQueryOld;\n const match = useMediaQueryImplementation(query, defaultMatches, matchMedia, ssrMatchMedia, noSsr);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue({\n query,\n match\n });\n }\n return match;\n}"],"names":["useMediaQueryOld","query","defaultMatches","matchMedia","ssrMatchMedia","noSsr","match","setMatch","React.useState","useEnhancedEffect","active","queryList","updateMatch","maybeReactUseSyncExternalStore","React","useMediaQueryNew","getDefaultSnapshot","React.useCallback","getServerSnapshot","React.useMemo","matches","getSnapshot","subscribe","mediaQueryList","notify","useMediaQuery","queryInput","options","theme","useTheme","supportMatchMedia","getThemeProps"],"mappings":"gHAmBA,SAASA,EAAiBC,EAAOC,EAAgBC,EAAYC,EAAeC,EAAO,CACjF,KAAM,CAACC,EAAOC,CAAQ,EAAIC,EAAc,SAAC,IACnCH,GAASF,EACJA,EAAWF,CAAK,EAAE,QAEvBG,EACKA,EAAcH,CAAK,EAAE,QAKvBC,CACR,EACD,OAAAO,EAAkB,IAAM,CACtB,IAAIC,EAAS,GACb,GAAI,CAACP,EACH,OAEF,MAAMQ,EAAYR,EAAWF,CAAK,EAC5BW,EAAc,IAAM,CAIpBF,GACFH,EAASI,EAAU,OAAO,CAElC,EACI,OAAAC,IAEAD,EAAU,YAAYC,CAAW,EAC1B,IAAM,CACXF,EAAS,GACTC,EAAU,eAAeC,CAAW,CAC1C,CACA,EAAK,CAACX,EAAOE,CAAU,CAAC,EACfG,CACT,CAGA,MAAMO,EAAiCC,EAAM,sBAA2B,EACxE,SAASC,EAAiBd,EAAOC,EAAgBC,EAAYC,EAAeC,EAAO,CACjF,MAAMW,EAAqBC,EAAAA,YAAkB,IAAMf,EAAgB,CAACA,CAAc,CAAC,EAC7EgB,EAAoBC,EAAAA,QAAc,IAAM,CAC5C,GAAId,GAASF,EACX,MAAO,IAAMA,EAAWF,CAAK,EAAE,QAEjC,GAAIG,IAAkB,KAAM,CAC1B,KAAM,CACJ,QAAAgB,CACR,EAAUhB,EAAcH,CAAK,EACvB,MAAO,IAAMmB,CACd,CACD,OAAOJ,CACX,EAAK,CAACA,EAAoBf,EAAOG,EAAeC,EAAOF,CAAU,CAAC,EAC1D,CAACkB,EAAaC,CAAS,EAAIH,EAAa,QAAC,IAAM,CACnD,GAAIhB,IAAe,KACjB,MAAO,CAACa,EAAoB,IAAM,IAAM,CAAA,CAAE,EAE5C,MAAMO,EAAiBpB,EAAWF,CAAK,EACvC,MAAO,CAAC,IAAMsB,EAAe,QAASC,IAEpCD,EAAe,YAAYC,CAAM,EAC1B,IAAM,CACXD,EAAe,eAAeC,CAAM,CAC5C,EACK,CACF,EAAE,CAACR,EAAoBb,EAAYF,CAAK,CAAC,EAE1C,OADcY,EAA+BS,EAAWD,EAAaH,CAAiB,CAExF,CACe,SAASO,EAAcC,EAAYC,EAAU,GAAI,CAC9D,MAAMC,EAAQC,IAKRC,EAAoB,OAAO,OAAW,KAAe,OAAO,OAAO,WAAe,IAClF,CACJ,eAAA5B,EAAiB,GACjB,WAAAC,EAAa2B,EAAoB,OAAO,WAAa,KACrD,cAAA1B,EAAgB,KAChB,MAAAC,EAAQ,EACT,EAAG0B,EAAc,CAChB,KAAM,mBACN,MAAOJ,EACP,MAAAC,CACJ,CAAG,EAMD,IAAI3B,EAAQ,OAAOyB,GAAe,WAAaA,EAAWE,CAAK,EAAIF,EACnE,OAAAzB,EAAQA,EAAM,QAAQ,eAAgB,EAAE,GAGJY,IAAmC,OAAYE,EAAmBf,GAC5DC,EAAOC,EAAgBC,EAAYC,EAAeC,CAAK,CASnG","x_google_ignoreList":[0]}