{"version":3,"file":"index.mjs","sources":["../src/breakpoints.ts","../src/customProperties.ts","../src/colorModes.tsx","../src/createBox.ts","../src/mediaGetters.ts","../src/transform.ts","../src/theme.ts"],"sourcesContent":["/* eslint-disable no-undef */\nimport * as React from 'react'\nimport { getScreens, ITheme, Screens } from '@xstyled/system'\n\nexport function useThemeScreens(theme: ITheme): Screens {\n  return getScreens({ theme })\n}\n\n/**\n * Minimum breakpoint width.\n * Null for the smallest breakpoint.\n */\nfunction useThemeMinValue(theme: ITheme, key: string | number): number | null {\n  const screens = useThemeScreens(theme)\n  const value = screens[key]\n  return value === 0 ? null : value\n}\n\n/**\n * Maximum breakpoint width. Null for the largest (last) breakpoint.\n * The maximum value is calculated as the minimum of the next one less 0.02px\n * to work around the limitations of `min-` and `max-` prefixes and viewports with fractional widths.\n * See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n * Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n * See https://bugs.webkit.org/show_bug.cgi?id=178261\n */\nfunction useThemeMaxValue(theme: ITheme, key: string | number): number | null {\n  const screens = useThemeScreens(theme)\n  const breakPoint = screens[key]\n  return breakPoint === 0 ? null : breakPoint - 0.02\n}\n\nexport function useViewportWidth(): number | null {\n  const [width, setWidth] = React.useState(\n    typeof window === 'undefined' ? null : window.innerWidth,\n  )\n\n  React.useEffect(() => {\n    function handleResize() {\n      setWidth(window.innerWidth)\n    }\n\n    // Add the listener, then setWidth to avoid race.\n    window.addEventListener('resize', handleResize)\n    setWidth(window.innerWidth)\n\n    return () => window.removeEventListener('resize', handleResize)\n  }, [])\n\n  return width\n}\n\nexport function useThemeBreakpoint(theme: ITheme): string | null {\n  const screns = useThemeScreens(theme)\n  const width = useViewportWidth()\n  return React.useMemo(() => {\n    return (\n      Object.keys(screns)\n        .reverse()\n        .find((screen) => width !== null && width >= screns[screen]) || null\n    )\n  }, [screns, width])\n}\n\nexport function useThemeUp(theme: ITheme, key: string | number): boolean {\n  const value = useThemeMinValue(theme, key)\n  const width = useViewportWidth()\n  return width !== null && value !== null && width >= value\n}\n\nexport function useThemeDown(theme: ITheme, key: string | number): boolean {\n  const value = useThemeMaxValue(theme, key)\n  const width = useViewportWidth()\n  return width !== null && value !== null && width < value\n}\n","import { obj, string, func, cascade } from '@xstyled/util'\nimport { ITheme } from '@xstyled/system'\n\nconst join = (...args: (string | undefined)[]): string =>\n  args.filter(Boolean).join('.')\n\nconst toVarName = (key: string): string => `--${key.replace(/\\./g, '-')}`\nconst toVarValue = (key: string, value: string): string =>\n  `var(${toVarName(key)}, ${value})`\nconst toProp = (key: string, value: string): string => `${key}: ${value};`\n\nexport function toCustomPropertiesReferences<\n  T extends Record<string | number, unknown>,\n>(\n  values: T,\n  theme?: ITheme,\n  keys: string[] = Object.keys(values),\n  parent?: string,\n): Record<string | number, unknown> {\n  const next: Record<string | number, unknown> = Array.isArray(values)\n    ? ([] as Record<number, string>)\n    : ({} as Record<string, string>)\n\n  for (const i in keys) {\n    const key = keys[i]\n    const value = values[key]\n    const name = join(parent, key)\n    if (obj(value)) {\n      next[key] = toCustomPropertiesReferences(\n        value as { [key: string]: unknown },\n        theme,\n        Object.keys(value),\n        name,\n      )\n      continue\n    }\n    if (string(value)) {\n      next[key] = toVarValue(name, value)\n      continue\n    }\n    if (func(value)) {\n      next[key] = toVarValue(name, cascade(value, { theme }))\n      continue\n    }\n  }\n\n  return next\n}\n\nexport function toCustomPropertiesDeclarations(\n  values: { [key: string]: unknown },\n  theme?: ITheme,\n  keys: string[] = Object.keys(values),\n  parent?: string,\n  state = { value: '' },\n): string {\n  for (const i in keys) {\n    const key = keys[i]\n    const value = values[key]\n    const name = join(parent, key)\n    if (obj(value)) {\n      toCustomPropertiesDeclarations(\n        value as { [key: string]: unknown },\n        theme,\n        Object.keys(value),\n        name,\n        state,\n      )\n      continue\n    }\n    if (string(value)) {\n      state.value += toProp(toVarName(name), value)\n      continue\n    }\n    if (func(value)) {\n      state.value += toProp(toVarName(name), cascade(value, { theme }))\n      continue\n    }\n  }\n\n  return state.value\n}\n","/* eslint-disable @typescript-eslint/no-empty-function */\n/* eslint-disable react/no-danger */\n/* eslint-env browser */\nimport * as React from 'react'\nimport { Colors } from '@xstyled/system'\nimport {\n  toCustomPropertiesDeclarations,\n  toCustomPropertiesReferences,\n} from './customProperties'\n\ntype ColorModeState = [string | null, (mode: string | null) => void]\n\ninterface ColorModes {\n  [key: string]: Colors\n}\n\ninterface ITheme {\n  useCustomProperties?: boolean\n  useColorSchemeMediaQuery?: boolean\n  initialColorModeName?: string\n  defaultColorModeName?: string\n  colors?: Colors & {\n    modes?: ColorModes\n  }\n}\n\ninterface IColorModeTheme extends ITheme {\n  colors: Colors & { modes: ColorModes }\n}\n\nconst STORAGE_KEY = 'xstyled-color-mode'\n\nconst isLocalStorageAvailable: boolean =\n  typeof window !== 'undefined' &&\n  (() => {\n    try {\n      const key = 'xstyled-test-key'\n      window.localStorage.setItem(key, key)\n      window.localStorage.removeItem(key)\n      return true\n    } catch (err) {\n      return false\n    }\n  })()\n\ninterface Storage {\n  get(): string | null\n  set(value: string): void\n  clear(): void\n}\n\nconst storage: Storage = isLocalStorageAvailable\n  ? {\n      get: () => window.localStorage.getItem(STORAGE_KEY),\n      set: (value: string) => {\n        window.localStorage.setItem(STORAGE_KEY, value)\n      },\n      clear: () => window.localStorage.removeItem(STORAGE_KEY),\n    }\n  : {\n      get: () => null,\n      set: () => {},\n      clear: () => {},\n    }\n\nconst COLOR_MODE_CLASS_PREFIX = 'xstyled-color-mode-'\nconst getColorModeClassName = (mode: string) =>\n  `${COLOR_MODE_CLASS_PREFIX}${mode}`\n\nconst XSTYLED_COLORS_PREFIX = 'xstyled-colors'\nconst SYSTEM_MODES = ['light', 'dark']\n\nfunction getModeTheme(theme: IColorModeTheme, mode: string): IColorModeTheme {\n  return {\n    ...theme,\n    colors: { ...theme.colors, ...theme.colors.modes[mode] },\n  }\n}\n\nconst getMediaQuery = (query: string): string => `@media ${query}`\nconst getColorModeQuery = (mode: string): string =>\n  `(prefers-color-scheme: ${mode})`\n\nfunction checkHasColorModes(theme: ITheme | null): theme is IColorModeTheme {\n  return Boolean(theme && theme.colors && theme.colors.modes)\n}\n\nfunction checkHasCustomPropertiesEnabled(theme: ITheme | null): boolean {\n  return Boolean(\n    theme &&\n      (theme.useCustomProperties === undefined || theme.useCustomProperties),\n  )\n}\n\nfunction checkHasMediaQueryEnabled(theme: ITheme | null): boolean {\n  return Boolean(\n    theme &&\n      (theme.useColorSchemeMediaQuery === undefined ||\n        theme.useColorSchemeMediaQuery),\n  )\n}\n\nfunction getInitialColorModeName(theme: ITheme): string {\n  return theme.initialColorModeName || 'default'\n}\n\nfunction getDefaultColorModeName(theme: ITheme): string {\n  return theme.defaultColorModeName || getInitialColorModeName(theme)\n}\n\nfunction getUsedColorKeys(modes: ColorModes) {\n  let keys: string[] = []\n  for (const key in modes) {\n    keys = [...keys, ...Object.keys(modes[key])]\n  }\n  return keys\n}\n\nexport function createColorStyles(\n  theme: ITheme,\n  { targetSelector = 'body' } = {},\n): string | null {\n  if (!checkHasColorModes(theme)) return null\n\n  const { modes, ...colors } = theme.colors\n  const colorKeys = getUsedColorKeys(modes)\n\n  let styles = toCustomPropertiesDeclarations(\n    colors,\n    theme,\n    colorKeys,\n    XSTYLED_COLORS_PREFIX,\n  )\n\n  function getModePropertiesDeclarations(mode: string) {\n    const modeTheme = getModeTheme(theme as IColorModeTheme, mode)\n    const { modes, ...colors } = modeTheme.colors\n    return toCustomPropertiesDeclarations(\n      { ...colors, ...modes[mode] },\n      modeTheme,\n      colorKeys,\n      XSTYLED_COLORS_PREFIX,\n    )\n  }\n\n  if (theme.useColorSchemeMediaQuery !== false) {\n    SYSTEM_MODES.forEach((mode) => {\n      if (modes[mode]) {\n        const mediaQuery = getMediaQuery(getColorModeQuery(mode))\n        styles += `${mediaQuery}{${getModePropertiesDeclarations(mode)}}`\n      }\n    })\n  }\n\n  const initialModeName = getInitialColorModeName(theme)\n  ;[initialModeName, ...Object.keys(modes)].forEach((mode) => {\n    const key = `&.${getColorModeClassName(mode)}`\n    styles += `${key}{${getModePropertiesDeclarations(mode)}}`\n  })\n\n  return `${targetSelector}{${styles}}`\n}\n\nfunction getSystemModeMql(mode: string) {\n  if (typeof window === 'undefined' || window.matchMedia === undefined) {\n    return null\n  }\n  const query = getColorModeQuery(mode)\n  return window.matchMedia(query)\n}\n\nfunction useSystemMode(theme: ITheme) {\n  const configs: { mode: string; mql: MediaQueryList }[] = React.useMemo(() => {\n    if (!checkHasMediaQueryEnabled(theme)) return []\n    return SYSTEM_MODES.map((mode) => {\n      if (!checkHasColorModes(theme)) return null\n      if (!theme.colors.modes[mode]) return null\n      const mql = getSystemModeMql(mode)\n      return mql ? { mode, mql } : null\n    }).filter(Boolean) as { mode: string; mql: MediaQueryList }[]\n  }, [theme])\n\n  const [systemMode, setSystemMode] = React.useState(() => {\n    const config = configs.find((config) => config.mql.matches)\n    return config ? config.mode : null\n  })\n\n  React.useEffect(() => {\n    const cleans = configs.map(({ mode, mql }) => {\n      const handler = ({ matches }: MediaQueryListEvent) => {\n        if (matches) {\n          setSystemMode(mode)\n        } else {\n          setSystemMode((previousMode) => (previousMode === mode ? null : mode))\n        }\n      }\n      mql.addEventListener('change', handler)\n      return () => mql.removeEventListener('change', handler)\n    })\n    return () => cleans.forEach((clean) => clean())\n  })\n\n  return systemMode\n}\n\nconst useIsomorphicLayoutEffect =\n  typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect\n\nexport function useColorModeState(\n  theme: ITheme,\n  { target }: { target?: Element } = {},\n): ColorModeState {\n  const systemMode = useSystemMode(theme)\n  const defaultColorMode = getDefaultColorModeName(theme)\n  const initialColorMode = getInitialColorModeName(theme)\n  const [mode, setMode] = React.useState(() => {\n    if (!checkHasColorModes(theme)) return null\n    return defaultColorMode\n  })\n\n  // Add mode className\n  const customPropertiesEnabled = checkHasCustomPropertiesEnabled(theme)\n\n  const manuallySetMode = React.useCallback((value: string | null) => {\n    setMode(value || null)\n    if (value) {\n      storage.set(value)\n    } else {\n      storage.clear()\n    }\n  }, [])\n\n  // Set initial color mode in lazy\n  useIsomorphicLayoutEffect(() => {\n    if (!checkHasColorModes(theme)) return\n    const storedMode = storage.get()\n    const initialMode = storedMode || systemMode || defaultColorMode\n    if (mode !== initialMode) {\n      setMode(storedMode || systemMode || defaultColorMode)\n    }\n  }, [])\n\n  // Sync system mode\n  useIsomorphicLayoutEffect(() => {\n    const storedMode = storage.get()\n    if (storedMode) return\n    const targetMode = systemMode || defaultColorMode\n    if (targetMode === mode) return\n    setMode(targetMode)\n  }, [mode, systemMode, defaultColorMode])\n\n  // Add and remove class names\n  useIsomorphicLayoutEffect(() => {\n    if (!mode) return undefined\n    if (!customPropertiesEnabled) return undefined\n    const stored = storage.get()\n    const initial = initialColorMode !== mode\n    if (!stored && !initial) return undefined\n    const className = getColorModeClassName(mode)\n    const usedTarget = target || document.body\n    usedTarget.classList.add(className)\n    return () => {\n      usedTarget.classList.remove(className)\n    }\n  }, [customPropertiesEnabled, target, mode, initialColorMode])\n\n  return [mode, manuallySetMode]\n}\n\nexport function useColorModeTheme(\n  theme: ITheme,\n  mode: string | null,\n): ITheme | null {\n  const [initialMode] = React.useState(mode)\n  const customPropertiesTheme = React.useMemo(() => {\n    if (!initialMode) return null\n    if (!checkHasCustomPropertiesEnabled(theme)) return null\n    if (!checkHasColorModes(theme)) return theme\n    const { modes, ...colors } = theme.colors\n    const colorKeys = getUsedColorKeys(modes)\n\n    return {\n      ...theme,\n      colors: {\n        ...colors,\n        ...toCustomPropertiesReferences(\n          colors,\n          theme,\n          colorKeys,\n          XSTYLED_COLORS_PREFIX,\n        ),\n        modes,\n      },\n      __rawColors: theme.colors,\n    }\n  }, [initialMode, theme])\n\n  const swapModeTheme = React.useMemo(() => {\n    if (!mode) return null\n    if (checkHasCustomPropertiesEnabled(theme)) return null\n    if (!checkHasColorModes(theme)) return theme\n\n    if (mode === getInitialColorModeName(theme)) {\n      return { ...theme, __colorMode: mode }\n    }\n\n    return {\n      ...theme,\n      colors: {\n        ...theme.colors,\n        ...theme.colors.modes[mode],\n      },\n      __colorMode: mode,\n      __rawColors: theme.colors,\n    }\n  }, [theme, mode])\n\n  return (customPropertiesTheme || swapModeTheme) as ITheme\n}\n\nexport const ColorModeContext = React.createContext<ColorModeState | null>(null)\n\nexport function useColorMode(): ColorModeState {\n  const colorModeState = React.useContext(ColorModeContext)\n\n  if (!colorModeState) {\n    throw new Error(`[useColorMode] requires the ColorModeProvider component`)\n  }\n\n  return colorModeState\n}\n\nexport interface ColorModeProviderProps {\n  children: React.ReactNode\n  target?: Element\n  targetSelector?: string\n}\n\nexport function createColorModeProvider({\n  ThemeContext,\n  ThemeProvider,\n  ColorModeStyle,\n}: {\n  ThemeContext: React.Context<any>\n  ThemeProvider: React.ComponentType<any>\n  ColorModeStyle: React.ComponentType<any>\n}): React.FC<ColorModeProviderProps> {\n  function ColorModeProvider({\n    children,\n    target,\n    targetSelector,\n  }: ColorModeProviderProps) {\n    const theme = React.useContext(ThemeContext)\n    if (!theme) {\n      throw new Error(\n        '[ColorModeProvider] requires ThemeProvider upper in the tree',\n      )\n    }\n    const colorState = useColorModeState(theme, { target })\n    const colorModeTheme = useColorModeTheme(theme, colorState[0])\n    return (\n      <>\n        <ColorModeStyle targetSelector={targetSelector} />\n        <ThemeProvider theme={colorModeTheme}>\n          <ColorModeContext.Provider value={colorState}>\n            {children}\n          </ColorModeContext.Provider>\n        </ThemeProvider>\n      </>\n    )\n  }\n  return ColorModeProvider\n}\n\ninterface GetInitScriptOptions {\n  target?: string\n}\n\nfunction getInitScript({\n  target = 'document.body',\n}: GetInitScriptOptions = {}) {\n  return `(function() { try {\n    var mode = localStorage.getItem('${STORAGE_KEY}');\n    if (mode) ${target}.classList.add('${COLOR_MODE_CLASS_PREFIX}' + mode);\n  } catch (e) {} })();`\n}\n\nexport function getColorModeInitScriptElement(\n  options?: GetInitScriptOptions,\n): JSX.Element {\n  return (\n    <script\n      key=\"xstyled-color-mode-init\"\n      dangerouslySetInnerHTML={{ __html: getInitScript(options) }}\n    />\n  )\n}\n\nexport function getColorModeInitScriptTag(\n  options?: GetInitScriptOptions,\n): string {\n  return `<script>${getInitScript(options)}</script>`\n}\n","import { system } from '@xstyled/system'\n\nexport function createBox(): (string | typeof system)[] {\n  return [`&&{`, system, `}`]\n}\ncreateBox.meta = system.meta\n","import { getScreens, getBreakpointMin, getBreakpointMax } from '@xstyled/system'\n\nconst getMediaWidth =\n  (getBreakpointBound: any) => (value: any) => (props: any) => {\n    const v = getBreakpointBound(getScreens(props), value)\n    // getters return null for smallest, undefined for not found, and otherwise\n    // a px string. Since we MUST emit a matcher at this point, use 0px for the\n    // smallest case (always true for min, never true for max).\n    return v === null ? '0' : v || value\n  }\n\nexport const mediaGetters = {\n  'min-width': getMediaWidth(getBreakpointMin),\n  'max-width': getMediaWidth(getBreakpointMax),\n}\n","/* eslint-disable no-continue, no-loop-func, no-cond-assign */\nimport type { StyleGenerator } from '@xstyled/system'\nimport { mediaGetters } from './mediaGetters'\n\n// prop name is an ident: word chars, underscore and dash.\nconst PROP_CHAR = `[-\\\\w]`\n\n// prop value consists of non-semis and no curly braces unless backslash-escaped.\n// This uses [\\s\\S] instead of . because IE11 doesn't support the s flag.\nconst VALUE_CHAR = `(?:\\\\\\\\[\\\\s\\\\S]|[^\\\\\\\\;{}])`\n\n// prettier-ignore\nconst PROP_PATT = (\n  `(${PROP_CHAR}+)` +   // capture prop name\n  `(\\\\s*:\\\\s*)` +       // colon & whitespace\n  `(?=\\\\S)` +           // prop value starts with non-whitespace\n  `(${VALUE_CHAR}*?)` + // capture prop value (non-greedy)\n  `(\\\\s*!important)?` + // capture !important\n  `(\\\\s*;)`             // semi & whitespace\n)\n\n// simplistic but workable media query value.\nconst MEDIA_CHAR = `[^{]`\n\n// prettier-ignore\nconst MEDIA_PATT = (\n  `(@media\\\\b\\\\s*)` +   // start of media query\n  `(?=\\\\S)` +           // value starts with non-whitespace\n  `(${MEDIA_CHAR}+?)` + // capture queries (non-greedy)\n  `(\\\\s*\\\\{)`           // brace & whitespace\n)\n\nconst MATCH_REGEXP = new RegExp(`(?:${PROP_PATT}|${MEDIA_PATT})`, `g`)\n\n// media query prop/value pairs such as (min-width: 1024px)\n// prettier-ignore\nconst QUERY_REGEXP = new RegExp(\n  `(\\\\(\\\\s*)` +       // open paren, whitespace\n  `(${PROP_CHAR}+)` + // capture prop name\n  `(\\\\s*:\\\\s*)` +     // colon & whitespace\n  `([^\\\\)]*?)` +      // capture prop value (non-greedy)\n  `(\\\\s*\\\\))`,        // close paren, whitespace\n  `g`\n)\n\nconst mediaTransform = (rawValue: string) => {\n  let matches\n  let lastIndex = 0\n  const values = []\n  while ((matches = QUERY_REGEXP.exec(rawValue))) {\n    const [, open, prop, colon, value, close] = matches\n    const getter = (mediaGetters as any)[prop]\n    if (getter) {\n      values.push(rawValue.slice(lastIndex, matches.index))\n      values.push(\n        (p: object) => `${open}${prop}${colon}${getter(value)(p)}${close}`,\n      )\n      lastIndex = matches.index + matches[0].length\n    }\n  }\n  values.push(rawValue.slice(lastIndex, rawValue.length))\n  return values\n}\n\nexport const createTransform =\n  (generator: StyleGenerator) =>\n  (rawValue: any): any => {\n    if (typeof rawValue !== 'string') return rawValue\n    let matches\n    let lastIndex = 0\n    const values = []\n    while ((matches = MATCH_REGEXP.exec(rawValue))) {\n      const [, prop, colon, value, imp, semi, media, query, brace] = matches\n      if (media) {\n        values.push(rawValue.slice(lastIndex, matches.index))\n        values.push(media)\n        mediaTransform(query).forEach((v) => values.push(v))\n        values.push(brace)\n        lastIndex = matches.index + matches[0].length\n      } else {\n        const getter = generator.meta.cssGetters[prop]\n        if (getter) {\n          values.push(rawValue.slice(lastIndex, matches.index))\n          values.push(\n            (p: object) =>\n              `${prop}${colon}${getter(value)(p)}${imp || ''}${semi}`,\n          )\n          lastIndex = matches.index + matches[0].length\n        }\n      }\n    }\n    values.push(rawValue.slice(lastIndex, rawValue.length))\n    return values\n  }\n","import { useMemo } from 'react'\nimport { ThemeGetter, ThemeGetterType, CSSScalar } from '@xstyled/system'\n\nexport const createUseGetter =\n  <T extends ThemeGetter>(getter: T, useTheme: () => object) =>\n  (value: ThemeGetterType<T>, defaultValue?: CSSScalar): CSSScalar => {\n    const theme = useTheme()\n    return useMemo(\n      () => getter(value, defaultValue)({ theme }),\n      [value, defaultValue, theme],\n    )\n  }\n"],"names":["_a","modes","colors","config"],"mappings":"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"}