{"version":3,"file":"index.cjs","names":[],"sources":["../../../src/hooks/useMediaQuery/index.ts"],"sourcesContent":["import { isClient } from '@modern-kit/utils';\nimport { useEventListener } from '../../hooks/useEventListener';\nimport { useState } from 'react';\n\nconst getMatchMedia = (mediaQueryString: string, defaultValue?: boolean) => {\n  if (isClient()) {\n    return window.matchMedia(mediaQueryString).matches;\n  }\n  return defaultValue ?? false;\n};\n\n/**\n * @description `useMediaQuery` 훅은 주어진 미디어 쿼리 문자열에 맞춰 현재 viewport가 미디어 쿼리 조건을 만족하는지 여부를 반환합니다.\n *\n * @param {string} mediaQueryString - 미디어 쿼리 조건을 나타내는 문자열 (예: '(max-width: 768px)').\n * @param {boolean} defaultValue - 미디어 쿼리 결과를 확인할 수 없는 경우 사용할 기본 값 (옵션).\n *\n * @returns {boolean} 현재 뷰포트가 주어진 미디어 쿼리 조건을 만족하면 `true`, 만족하지 않으면 `false`를 반환합니다.\n *\n * @example\n * const isBigScreen = useMediaQuery('(min-width: 768px)');\n *\n * isBigScreen; // viewport가 768px 이상이면 true, 768px 이하면 false\n */\nexport function useMediaQuery(\n  mediaQueryString: string,\n  defaultValue?: boolean\n): boolean {\n  const [isMatch, setIsMatch] = useState(\n    getMatchMedia(mediaQueryString, defaultValue)\n  );\n\n  const handleChange = (e: MediaQueryListEvent) => setIsMatch(e.matches);\n\n  useEventListener(\n    typeof window !== 'undefined' ? window.matchMedia(mediaQueryString) : null,\n    'change',\n    handleChange\n  );\n\n  return isMatch;\n}\n"],"mappings":";;;;;AAIA,MAAM,iBAAiB,kBAA0B,iBAA2B;CAC1E,KAAA,GAAA,kBAAA,WAAc,EACZ,OAAO,OAAO,WAAW,iBAAiB,CAAC;CAE7C,OAAO,gBAAgB;;;;;;;;;;;;;;;AAgBzB,SAAgB,cACd,kBACA,cACS;CACT,MAAM,CAAC,SAAS,eAAA,GAAA,MAAA,UACd,cAAc,kBAAkB,aAAa,CAC9C;CAED,MAAM,gBAAgB,MAA2B,WAAW,EAAE,QAAQ;CAEtE,cAAA,iBACE,OAAO,WAAW,cAAc,OAAO,WAAW,iBAAiB,GAAG,MACtE,UACA,aACD;CAED,OAAO"}