{"version":3,"sources":["../src/utils/preprocessor.ts","../src/utils/generateCss.ts","../src/utils/extendTheme.ts","../src/utils/generateThemeSource.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["import type { Element, Middleware } from 'stylis';\nimport { serialize, compile, stringify, middleware } from 'stylis';\nimport rtlPlugin from 'stylis-plugin-rtl';\nimport { type PluginCustomOptions } from './cssFnValueToVariable';\n\nfunction globalSelector(element: Element) {\n  switch (element.type) {\n    case 'rule':\n      element.props = (element.props as string[]).map((value) => {\n        if (value.match(/(:where|:is)\\(/)) {\n          value = value.replace(/\\.[^:]+(:where|:is)/, '$1');\n          return value;\n        }\n        return value;\n      });\n      break;\n    default:\n      break;\n  }\n}\n\nfunction getSerializer(includeRtl?: boolean) {\n  if (!includeRtl) {\n    return middleware([globalSelector, stringify]);\n  }\n  return middleware([globalSelector, rtlPlugin, stringify]);\n}\n\nconst serializerLtr = getSerializer();\nconst serializerRtl = getSerializer(true);\n\nconst stylis = (css: string, serializerParam: Middleware) =>\n  serialize(compile(css), serializerParam);\n\nconst defaultGetDirSelector = (dir: 'ltr' | 'rtl') => `[dir=${dir}]`;\n\nexport function getGlobalSelector(asSelector: string) {\n  return `$$GLOBAL-${asSelector}`;\n}\n\nexport function preprocessor(\n  selector: string,\n  cssText: string,\n  options?: PluginCustomOptions['css'],\n) {\n  const {\n    defaultDirection = 'ltr',\n    generateForBothDir = false,\n    getDirSelector = defaultGetDirSelector,\n  } = options || {};\n  const serializer = defaultDirection === 'ltr' ? serializerLtr : serializerRtl;\n  let css = '';\n  const isGlobal = selector.startsWith(getGlobalSelector(''));\n\n  if (!isGlobal && cssText.startsWith('@keyframes')) {\n    css += stylis(cssText.replace('@keyframes', `@keyframes ${selector}`), serializer);\n    return css;\n  }\n  css += stylis(!isGlobal ? `${selector}{${cssText}}` : cssText, serializer);\n  if (generateForBothDir) {\n    const otherSerializer = defaultDirection === 'ltr' ? serializerRtl : serializerLtr;\n    css += stylis(\n      `${getDirSelector(defaultDirection === 'ltr' ? 'rtl' : 'ltr')} ${!isGlobal ? `${selector}{${cssText}}` : cssText}`,\n      otherSerializer,\n    );\n  }\n\n  return css;\n}\n\nexport function matchAdapterPath(path: string) {\n  return path.includes('zero-styled');\n}\n","import { serializeStyles } from '@emotion/serialize';\nimport { Theme } from './extendTheme';\n\nexport function generateTokenCss(theme?: Theme) {\n  if (!theme) {\n    return '';\n  }\n  // use emotion to serialize the object to css string\n  const { styles } = serializeStyles(theme.generateStyleSheets?.() || []);\n  return styles;\n}\n\nexport function generateThemeTokens(theme?: Theme) {\n  if (!theme || typeof theme !== 'object') {\n    return {};\n  }\n  // is created using extendTheme\n  if ('vars' in theme && theme.vars) {\n    return {\n      vars: theme.vars,\n    };\n  }\n  return {};\n}\n","import { prepareCssVars } from '@mui/system/cssVars';\nimport type { CSSObject } from '../base';\n\nexport interface ThemeInput<ColorScheme extends string = string> extends Record<string, any> {\n  /**\n   * The prefix to be used for the CSS variables.\n   */\n  cssVarPrefix?: string;\n  /**\n   * The color schemes to be used for the theme.\n   */\n  colorSchemes?: Record<ColorScheme, any>;\n  /**\n   * The default color scheme to be used for the theme. It must be one of the keys from `theme.colorSchemes`.\n   * Required when `colorSchemes` is provided.\n   * @default 'light'\n   */\n  defaultColorScheme?: ColorScheme;\n  /**\n   * If provided, it will be used to create a selector for the color scheme.\n   * This is useful if you want to use class or data-* attributes to apply the color scheme.\n   *\n   * The callback receives the colorScheme with the possible values of:\n   * - undefined: the selector for tokens that are not color scheme dependent\n   * - string: the selector for the color scheme\n   *\n   * @example\n   * // class selector\n   * (colorScheme) => colorScheme !== 'light' ? `.theme-${colorScheme}` : \":root\"\n   *\n   * @example\n   * // data-* attribute selector\n   * (colorScheme) => colorScheme !== 'light' ? `[data-theme=\"${colorScheme}\"]` : \":root\"\n   */\n  getSelector?: (\n    colorScheme: ColorScheme | undefined,\n    css: Record<string, any>,\n  ) => string | Record<string, any>;\n  /**\n   * A function to skip generating a CSS variable for a specific path or value.\n   *\n   * Note: properties with function as a value are always skipped.\n   *\n   * @example\n   * // skip the `meta.*` fields from generating CSS variables and `theme.vars`\n   * (keys, value) => keys[0] === 'meta'\n   *\n   */\n  shouldSkipGeneratingVar?: (objectPathKeys: Array<string>, value: string | number) => boolean;\n  components?: Partial<\n    Record<\n      string,\n      {\n        styleOverrides?: Record<string, any>;\n        defaultProps: Record<string, any>;\n      }\n    >\n  >;\n}\n\nexport type ExtendTheme<\n  Options extends {\n    colorScheme: string;\n    tokens: Record<string, any>;\n  } = {\n    colorScheme: string;\n    tokens: Record<string, any>;\n  },\n> = ThemeInput<Options['colorScheme']> &\n  Options['tokens'] & {\n    vars: Options['tokens'];\n    applyStyles: (\n      colorScheme: Options['colorScheme'],\n      styles: CSSObject<any>,\n    ) => Record<string, CSSObject<any>>;\n    getColorSchemeSelector: (colorScheme: Options['colorScheme']) => string;\n    generateStyleSheets: () => Array<Record<string, any>>;\n  };\n\nexport type Theme = Record<string, any>;\n\n/**\n * A utility to tell zero-runtime to generate CSS variables for the theme.\n */\nexport function extendTheme<\n  Options extends {\n    colorScheme: string;\n    tokens: Record<string, any>;\n  } = {\n    colorScheme: string;\n    tokens: Record<string, any>;\n  },\n>(theme: ThemeInput) {\n  const {\n    cssVarPrefix,\n    shouldSkipGeneratingVar,\n    getSelector = defaultGetSelector,\n    defaultColorScheme = 'light',\n    ...otherTheme\n  } = theme;\n\n  function defaultGetSelector(\n    colorScheme: string | undefined,\n    css: Record<string, any>,\n  ): string | Record<string, any> {\n    if (colorScheme === 'light' && defaultColorScheme !== 'light') {\n      return {\n        '@media (prefers-color-scheme: light)': {\n          ':root': css,\n        },\n      };\n    }\n    if (colorScheme === 'dark' && defaultColorScheme !== 'dark') {\n      return {\n        '@media (prefers-color-scheme: dark)': {\n          ':root': css,\n        },\n      };\n    }\n    return ':root';\n  }\n\n  if (\n    theme.colorSchemes &&\n    (!defaultColorScheme || !Object.keys(theme.colorSchemes).includes(defaultColorScheme))\n  ) {\n    throw new Error(\n      `Zero: \\`defaultColorScheme\\` must be one of ${JSON.stringify(\n        theme.colorSchemes,\n      )}, but got \"\\`${theme.defaultColorScheme}\\`\".`,\n    );\n  }\n\n  const parserConfig = {\n    prefix: cssVarPrefix,\n    shouldSkipGeneratingVar,\n    getSelector,\n  };\n  const { generateThemeVars, generateStyleSheets } = prepareCssVars(otherTheme, parserConfig);\n\n  const finalTheme = {\n    ...theme,\n    defaultColorScheme,\n    vars: generateThemeVars(),\n    generateStyleSheets,\n  } as unknown as ExtendTheme<{ colorScheme: Options['colorScheme']; tokens: Options['tokens'] }>;\n\n  finalTheme.getColorSchemeSelector = (colorScheme: string) => {\n    if (!theme.getSelector) {\n      return `@media (prefers-color-scheme: ${colorScheme})`;\n    }\n    return `:where(${theme.getSelector(colorScheme, {})}) &`;\n  };\n\n  finalTheme.applyStyles = function applyStyles(colorScheme, styles) {\n    return {\n      [this.getColorSchemeSelector(colorScheme)]: styles,\n    };\n  };\n\n  return finalTheme;\n}\n","import type { Theme } from './extendTheme';\nimport { generateThemeTokens } from './generateCss';\n\nexport function generateThemeSource(theme?: Theme) {\n  if (!theme) {\n    return `export default {}`;\n  }\n  if (typeof theme.toRuntimeSource !== 'function') {\n    return `export default ${JSON.stringify(generateThemeTokens(theme))};`;\n  }\n  return theme.toRuntimeSource.call(theme, theme);\n}\n"]}