{"version":3,"sources":["../src/utils/isUnitLess.ts","../src/utils/cssFnValueToVariable.ts","../src/utils/processCssObject.ts"],"names":["css"],"mappings":"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","file":"chunk-DH2YTSGT.mjs","sourcesContent":["// Copied over from https://github.com/emotion-js/emotion/blob/main/packages/unitless/src/index.js\n// since typings of @emotion/unitless are broken. PR to fix here - https://github.com/emotion-js/emotion/pull/3088\nconst unitlessKeys: { [key: string]: 1 } = {\n  animationIterationCount: 1,\n  aspectRatio: 1,\n  borderImageOutset: 1,\n  borderImageSlice: 1,\n  borderImageWidth: 1,\n  boxFlex: 1,\n  boxFlexGroup: 1,\n  boxOrdinalGroup: 1,\n  columnCount: 1,\n  columns: 1,\n  flex: 1,\n  flexGrow: 1,\n  flexPositive: 1,\n  flexShrink: 1,\n  flexNegative: 1,\n  flexOrder: 1,\n  gridRow: 1,\n  gridRowEnd: 1,\n  gridRowSpan: 1,\n  gridRowStart: 1,\n  gridColumn: 1,\n  gridColumnEnd: 1,\n  gridColumnSpan: 1,\n  gridColumnStart: 1,\n  msGridRow: 1,\n  msGridRowSpan: 1,\n  msGridColumn: 1,\n  msGridColumnSpan: 1,\n  fontWeight: 1,\n  lineHeight: 1,\n  opacity: 1,\n  order: 1,\n  orphans: 1,\n  tabSize: 1,\n  widows: 1,\n  zIndex: 1,\n  zoom: 1,\n  WebkitLineClamp: 1,\n\n  // SVG-related properties\n  fillOpacity: 1,\n  floodOpacity: 1,\n  stopOpacity: 1,\n  strokeDasharray: 1,\n  strokeDashoffset: 1,\n  strokeMiterlimit: 1,\n  strokeOpacity: 1,\n  strokeWidth: 1,\n};\n\nexport function isUnitLess(cssKey: string) {\n  return unitlessKeys[cssKey] === 1 || cssKey.startsWith('--');\n}\n","import type { ExpressionValue, FunctionValue } from '@wyw-in-js/shared';\nimport { transformSync, type Node } from '@babel/core';\nimport { parseExpression } from '@babel/parser';\nimport * as t from '@babel/types';\nimport type { Expression } from '@babel/types';\nimport { isUnitLess } from './isUnitLess';\nimport type { Theme } from './extendTheme';\n\ninterface StyleObj {\n  [key: string]: string | number | (() => void) | StyleObj;\n}\n\nexport type PluginCustomOptions = {\n  /**\n   * Object to pass as parameter to the styled css callback functions.\n   */\n  themeArgs?: { theme?: Theme };\n  /**\n   * Customize the output CSS. Mainly used for RTL support right now.\n   */\n  css?: {\n    /**\n     * To denote that whatever default css is being authored pertains to this\n     * direction so that when Pigment CSS generates the CSS for the other direction,\n     * it can revert the direction of the selector accordingly.\n     * @default 'ltr'\n     */\n    defaultDirection: 'ltr' | 'rtl';\n    /**\n     * Pass this as true if you want to output the CSS for both ltr and rtl.\n     * The css of the non-default direction will be wrapped in a `dir` selector.\n     */\n    generateForBothDir: boolean;\n    /**\n     * Pass this callback to customize the selector for the `dir` attribute. The default\n     * is [dir=ltr] or [dir=rtl].\n     */\n    getDirSelector?: (dir: 'ltr' | 'rtl') => string;\n  };\n  /**\n   * Customize the replacement package name that should be added in-place of\n   * the actually imported package name, ie,\n   *\n   * ```js\n   * import { styled } from '@pigment-css/react';\n   * ```\n   *\n   * will turn into\n   *\n   * ```js\n   * import { styled } from '@mui/material-pigment-css';\n   * ```\n   *\n   * if packageMap has this\n   *\n   * ```js\n   * {\n   *   packageMap: {\n   *     '@pigment-css/react': '@mui/material-pigment-css',\n   *   }\n   * }\n   * ```\n   */\n  packageMap?: Record<string, string>;\n};\n\ntype CssFnValueToVariableParams = {\n  styleObj: unknown;\n  expressionValue: ExpressionValue | null;\n  getVariableName: (cssKey: string, source: string, hasUnit: boolean) => string;\n  filename?: string | null;\n  options: PluginCustomOptions;\n  includeThemeArg?: boolean;\n  themeImportIdentifier?: string;\n};\n\n// @TODO - Implement default theme argument for non-theme config as well.\nfunction parseAndWrapExpression(\n  functionString: string,\n  expressionValue?: FunctionValue,\n  themeImportIdentifier?: string,\n) {\n  if (!expressionValue) {\n    return parseExpression(functionString);\n  }\n  const expression = parseExpression(functionString);\n  if (expression.type === 'FunctionExpression' || expression.type === 'ArrowFunctionExpression') {\n    // let parsedParentExpression = expressionCache.get(expressionValue);\n    // if (!parsedParentExpression) {\n    //   parsedParentExpression = parseExpression(expressionValue.source);\n    //   if (!parsedParentExpression) {\n    //     throw new Error(\"MUI: Could not parse styled function's source.\");\n    //   }\n    // }\n    expression.params.push(\n      t.assignmentPattern(t.identifier('theme'), t.identifier(themeImportIdentifier ?? 'theme')),\n    );\n  }\n  return expression;\n}\n\nfunction transformThemeKeysInFn(\n  functionString: string,\n  options: PluginCustomOptions,\n  filename?: string,\n  expressionValue?: FunctionValue,\n  themeImportIdentifier?: string,\n) {\n  const { themeArgs: { theme } = {} } = options;\n\n  // return the function as-is if sxConfig does not contain\n  // this css key\n  if (!theme) {\n    return parseAndWrapExpression(functionString, expressionValue, themeImportIdentifier);\n  }\n\n  const result = transformSync(functionString, {\n    filename: filename ?? 'intermediate-fn.ts',\n    ast: true,\n    configFile: false,\n    babelrc: false,\n  });\n  const firstItem = result?.ast?.program.body[0];\n  if (!firstItem) {\n    return parseAndWrapExpression(functionString, expressionValue, themeImportIdentifier);\n  }\n  const defaultThemeParam = t.assignmentPattern(\n    t.identifier('theme'),\n    t.identifier(themeImportIdentifier ?? 'theme'),\n  );\n  if (firstItem.type === 'ExpressionStatement') {\n    const { expression } = firstItem;\n    if (expression.type === 'ArrowFunctionExpression' || expression.type === 'FunctionExpression') {\n      expression.params.push(defaultThemeParam);\n    }\n    return expression;\n  }\n  if (firstItem.type === 'FunctionDeclaration') {\n    return t.functionExpression(null, [...firstItem.params, defaultThemeParam], firstItem.body);\n  }\n  return parseAndWrapExpression(functionString, expressionValue, themeImportIdentifier);\n}\n\nfunction iterateAndReplaceFunctions(\n  styleObj: unknown,\n  expressionValue: ExpressionValue | null,\n  getVariableName: (cssKey: string, source: string, hasUnit: boolean) => string,\n  options: PluginCustomOptions,\n  acc: [string, Node, boolean][],\n  filename?: string,\n  themeImportIdentifier?: string,\n  includeThemeArg = false,\n) {\n  const css = styleObj as StyleObj;\n  if (!css) {\n    return;\n  }\n  Object.keys(css).forEach((key) => {\n    const value = css[key];\n\n    if (value && typeof value === 'object') {\n      if (!Array.isArray(value)) {\n        iterateAndReplaceFunctions(\n          value,\n          expressionValue,\n          getVariableName,\n          options,\n          acc,\n          filename,\n          themeImportIdentifier,\n          includeThemeArg,\n        );\n      }\n      return;\n    }\n\n    if (typeof value !== 'function') {\n      return;\n    }\n\n    try {\n      const fnString = value.toString();\n      const expression = transformThemeKeysInFn(\n        fnString,\n        options,\n        filename,\n        includeThemeArg && expressionValue ? (expressionValue as FunctionValue) : undefined,\n        themeImportIdentifier,\n      );\n      const unitLess = isUnitLess(key);\n      const variableId = getVariableName(key, fnString, unitLess);\n      acc.push([variableId, expression, unitLess]);\n      css[key] = `var(--${variableId})`;\n    } catch (ex) {\n      const err = expressionValue?.buildCodeFrameError(\n        (ex as Error).message || 'Could not parse function expression.',\n      ) as Error;\n      if (!err) {\n        throw ex;\n      }\n      if ('cause' in err) {\n        err.cause = ex;\n      }\n      throw err;\n    }\n  });\n}\n\n/**\n * Goes through the css object and identifies any keys where the value is a function and replaces the function with a variable id.\n */\nexport function cssFnValueToVariable({\n  styleObj,\n  expressionValue,\n  getVariableName,\n  filename,\n  options,\n  themeImportIdentifier,\n  includeThemeArg = false,\n}: CssFnValueToVariableParams) {\n  const acc: [string, Expression, boolean][] = [];\n  iterateAndReplaceFunctions(\n    styleObj,\n    expressionValue,\n    getVariableName,\n    options,\n    acc,\n    filename ?? undefined,\n    themeImportIdentifier,\n    includeThemeArg,\n  );\n  return acc;\n}\n","import type { CSSObject } from '@emotion/serialize';\nimport { css, cache } from './emotion';\nimport type { PluginCustomOptions } from './cssFnValueToVariable';\n\nexport function processCssObject(\n  cssObj: object,\n  themeArgs?: PluginCustomOptions['themeArgs'],\n  skipSx = true,\n) {\n  const processedObj =\n    // `unstable_sx` is currently an internal API for integrating Material UI with Pigment CSS only.\n    // so for Pigment CSS users, the shorthand `sx` prop is not supported yet.\n    (skipSx ? cssObj : themeArgs?.theme?.unstable_sx?.(cssObj) || cssObj) as CSSObject;\n  const className = css(processedObj);\n  return cache.registered[className] as string;\n}\n"]}