{"version":3,"sources":["../src/core/Hooks/useBreakpoints.ts","../src/core/Hooks/useReducedMotion.ts","../src/core/Hooks/useReducedTransparency.ts","../src/core/Hooks/useForcedColors.ts","../src/core/Hooks/useMonochrome.ts"],"names":["useState","useEffect"],"mappings":"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","file":"chunk-GFSLVQIG.mjs","sourcesContent":["\"use client\";\n\nimport { useEffect, useMemo, useState } from \"react\";\n\nimport { ThBreakpoints } from \"@/preferences/models\";\n\nimport { useMediaQuery } from \"./useMediaQuery\";\n\ntype ThBreakpointRange = {\n  min: number | null,\n  max: number | null\n}\n\ntype ThBreakpointRanges = { [key in ThBreakpoints]: ThBreakpointRange | null; }\n\nexport type BreakpointsMap<T> = {\n  [key in ThBreakpoints]?: T\n};\n\nexport type ThBreakpointsObject = { [key in ThBreakpoints]: boolean | null } & { current: string | null } & { ranges: ThBreakpointRanges }\n\nexport const useBreakpoints = (map: BreakpointsMap<number | null>, onChange?: (breakpoint: ThBreakpoints | null) => void): ThBreakpointsObject => {\n  const [currentBreakpoint, setCurrentBreakpoint] = useState<ThBreakpoints | null>(null);\n\n  const makeMediaString = (range: ThBreakpointRange | null) => {\n    if (!range || (!range.min && !range.max)) return null;\n  \n    let mediaString = \"screen\"\n    if (range.min) {\n      mediaString += ` and (min-width: ${ range.min }px)`;\n    }\n    if (range.max) {\n      mediaString += ` and (max-width: ${ range.max }px)`\n    }\n    return mediaString;\n  };\n\n  const initRanges = (prefs: BreakpointsMap<number | null>) => {\n    const breakpointRanges: ThBreakpointRanges = {\n      [ThBreakpoints.compact]: null,\n      [ThBreakpoints.medium]: null,\n      [ThBreakpoints.expanded]: null,\n      [ThBreakpoints.large]: null,\n      [ThBreakpoints.xLarge]: null\n    };\n  \n    let prev: null | number = null;\n    \n    Object.entries(prefs).forEach(([ key, value ]) => {\n      if (value && !isNaN(value)) {\n        const max = value;\n        const min = prev ? prev + 1 : null;\n        Object.defineProperty(breakpointRanges, key, {\n          value: {\n            min: min,\n            max: max\n          }\n        });\n        prev = value;\n      } else if (!value && key === ThBreakpoints.xLarge && prev) {\n        Object.defineProperty(breakpointRanges, key, {\n          value: {\n            min: prev + 1,\n            max: null\n          }\n        });\n      }\n    });\n\n    return breakpointRanges;\n  };\n\n  const ranges = useMemo(() => initRanges(map), [map]);\n\n  const compactMedia = makeMediaString(ranges[ThBreakpoints.compact]);\n  const mediumMedia = makeMediaString(ranges[ThBreakpoints.medium]);\n  const expandedMedia = makeMediaString(ranges[ThBreakpoints.expanded]);\n  const largeMedia = makeMediaString(ranges[ThBreakpoints.large]);\n  const xLargeMedia = makeMediaString(ranges[ThBreakpoints.xLarge]);\n\n  const compactMatches = useMediaQuery(compactMedia);\n  const mediumMatches = useMediaQuery(mediumMedia);\n  const expandedMatches = useMediaQuery(expandedMedia);\n  const largeMatches = useMediaQuery(largeMedia);\n  const xLargeMatches = useMediaQuery(xLargeMedia);\n\n  useEffect(() => {\n    let newBreakpoint = currentBreakpoint;\n\n    if (compactMatches) {\n      newBreakpoint = ThBreakpoints.compact;\n    } else if (mediumMatches) {\n      newBreakpoint = ThBreakpoints.medium;\n    } else if (expandedMatches) {\n      newBreakpoint = ThBreakpoints.expanded;\n    } else if (largeMatches) {\n      newBreakpoint = ThBreakpoints.large;\n    } else if (xLargeMatches) {\n      newBreakpoint = ThBreakpoints.xLarge;\n    }\n\n    setCurrentBreakpoint(newBreakpoint);\n    onChange && onChange(newBreakpoint);\n  }, [currentBreakpoint, compactMatches, mediumMatches, expandedMatches, largeMatches, xLargeMatches, onChange]);\n\n  return {\n    [ThBreakpoints.compact]: compactMatches,\n    [ThBreakpoints.medium]: mediumMatches,\n    [ThBreakpoints.expanded]: expandedMatches,\n    [ThBreakpoints.large]: largeMatches,\n    [ThBreakpoints.xLarge]: xLargeMatches,\n    current: currentBreakpoint,\n    ranges: ranges\n  };\n};","\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { useMediaQuery } from \"./useMediaQuery\";\n\nexport const useReducedMotion = (onChange?: (reducedMotion: boolean) => void) => {\n  const [reducedMotion, setReducedMotion] = useState(false);\n\n  const prefersReducedMotion = useMediaQuery(\"(prefers-reduced-motion: reduce)\");\n\n  useEffect(() => {\n    setReducedMotion(prefersReducedMotion);\n    onChange && onChange(prefersReducedMotion);\n  }, [prefersReducedMotion, onChange]);\n\n  return reducedMotion;\n}","\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { useMediaQuery } from \"./useMediaQuery\";\n\nexport const useReducedTransparency = (onChange?: (reducedTransparency: boolean) => void) => {\n  const [reducedTransparency, setReducedTransparency] = useState(false);\n\n  const prefersReducedTransparency = useMediaQuery(\"(prefers-reduced-transparency: reduce)\");\n\n  useEffect(() => {\n    setReducedTransparency(prefersReducedTransparency);\n    onChange && onChange(prefersReducedTransparency);\n  }, [prefersReducedTransparency, onChange]);\n\n  return reducedTransparency;\n}","\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { useMediaQuery } from \"./useMediaQuery\";\n\nexport const useForcedColors = (onChange?: (forcedColors: boolean) => void) => {\n  const [colors, setForcedColors] = useState(false);\n\n  const forcedColors = useMediaQuery(\"(forced-colors: active)\");\n\n  useEffect(() => {\n    setForcedColors(forcedColors);\n    onChange && onChange(forcedColors);\n  }, [forcedColors, onChange]);\n\n  return colors;\n}","\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { useMediaQuery } from \"./useMediaQuery\";\n\nexport const useMonochrome = (onChange?: (isMonochrome: boolean) => void) => {\n  const [isMonochrome, setMonochrome] = useState(false);\n\n  const monochrome = useMediaQuery(\"(monochrome)\");\n\n  useEffect(() => {\n    setMonochrome(monochrome);\n    onChange && onChange(monochrome);\n  }, [monochrome, onChange]);\n\n  return isMonochrome;\n}"]}