{"version":3,"sources":["../src/utils/convertAtomicsToCss.ts","../src/processors/generateAtomics.ts"],"names":[],"mappings":"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","file":"generateAtomics.mjs","sourcesContent":["import cssesc from 'cssesc';\n\nexport type Atomics = {\n  conditions: Record<string, string>;\n  defaultCondition: string;\n  properties: {\n    [key: string]: string[];\n  };\n  shorthands: Record<string, string[]>;\n  unitless: string[];\n  multipliers?: Record<string, string>;\n  inlineGetters: Record<string, (value: string) => string>;\n};\n\nexport type RuntimeConfig = {\n  conditions: string[];\n  styles: Record<string, Record<string, Record<string, string>>>;\n  shorthands: Atomics['shorthands'];\n  defaultCondition: string;\n  unitless: string[];\n  multipliers?: Record<string, string>;\n  inlineGetters: Record<string, (value: string) => string>;\n};\n\nfunction getClassName(...items: string[]) {\n  return cssesc(items.filter(Boolean).join('_'));\n}\n\nexport function convertAtomicsToCss(\n  {\n    conditions = {},\n    defaultCondition,\n    properties,\n    shorthands = {},\n    unitless = [],\n    multipliers = {},\n    inlineGetters = {},\n  }: Atomics,\n  mainClassName: string,\n  isGlobal = false,\n  debug = false,\n  prefix = 'Mui',\n) {\n  const runtimeConfig: RuntimeConfig = {\n    styles: {},\n    shorthands,\n    conditions: Object.keys(conditions),\n    defaultCondition,\n    unitless,\n    multipliers,\n    inlineGetters,\n  };\n  let count = 1;\n  function getCount() {\n    const val = count;\n    count += 1;\n    return val;\n  }\n\n  const classes: {\n    className: string;\n    css: object;\n  }[] = [];\n\n  Object.entries(conditions).forEach(([conditionName, mediaQueryStr]) => {\n    Object.entries(properties).forEach(([cssPropertyName, propertyValues]) => {\n      propertyValues.forEach((propertyValue) => {\n        const propValue = propertyValue.startsWith('--')\n          ? cssesc(`var(${propertyValue}-${conditionName})`)\n          : propertyValue;\n        const className =\n          isGlobal || debug\n            ? getClassName(\n                prefix,\n                cssPropertyName,\n                conditionName ?? 'default',\n                propertyValue,\n                !isGlobal ? mainClassName : '',\n              )\n            : `${mainClassName}${getCount()}`;\n        if (defaultCondition === conditionName || !mediaQueryStr) {\n          classes.push({\n            className,\n            css: {\n              [cssPropertyName]: propValue,\n            },\n          });\n        } else {\n          classes.push({\n            className,\n            css: {\n              [mediaQueryStr]: {\n                [cssPropertyName]: propValue,\n              },\n            },\n          });\n        }\n\n        if (!runtimeConfig.styles[cssPropertyName]) {\n          runtimeConfig.styles[cssPropertyName] = {};\n        }\n        if (!runtimeConfig.styles[cssPropertyName][propertyValue]) {\n          runtimeConfig.styles[cssPropertyName][propertyValue] = {};\n        }\n        runtimeConfig.styles[cssPropertyName][propertyValue][conditionName] = className;\n      });\n    });\n  });\n\n  return {\n    classes,\n    runtimeConfig,\n  };\n}\n","import { Expression } from '@babel/types';\nimport {\n  type Params,\n  type TailProcessorParams,\n  type ValueCache,\n  validateParams,\n} from '@wyw-in-js/processor-utils';\nimport { ValueType, type ExpressionValue, type Replacements, type Rules } from '@wyw-in-js/shared';\n\nimport type { CSSInterpolation } from '@emotion/serialize';\nimport BaseProcessor from './base-processor';\nimport type { IOptions } from './styled';\nimport {\n  convertAtomicsToCss,\n  type Atomics,\n  type RuntimeConfig,\n} from '../utils/convertAtomicsToCss';\nimport { css, cache } from '../utils/emotion';\nimport { valueToLiteral } from '../utils/valueToLiteral';\n\nexport class GenerateAtomicsProcessor extends BaseProcessor {\n  callParam: ExpressionValue;\n\n  runtimeConfig?: RuntimeConfig;\n\n  constructor(params: Params, ...args: TailProcessorParams) {\n    super([params[0]], ...args);\n    if (params.length <= 1) {\n      throw BaseProcessor.SKIP;\n    }\n    validateParams(params, ['callee', ['call']], `Invalid use of ${this.tagSource.imported} tag.`);\n    const [, callParam] = params;\n    const [, callParamArgument] = callParam;\n    this.dependencies.push(callParamArgument);\n    this.callParam = callParamArgument;\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  get asSelector(): string {\n    throw new Error('Method not implemented.');\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  get value(): Expression {\n    throw new Error('Method not implemented.');\n  }\n\n  doEvaltimeReplacement(): void {\n    this.replacer(this.astService.nullLiteral(), true);\n  }\n\n  build(values: ValueCache): void {\n    const { themeArgs = {} } = this.options as IOptions;\n    const param = this.callParam;\n    if (param.kind !== ValueType.CONST) {\n      const value =\n        param.kind === ValueType.FUNCTION\n          ? (values.get(param.ex.name) as (config: unknown) => unknown)(themeArgs)\n          : values.get(param.ex.name);\n      const { classes, runtimeConfig } = convertAtomicsToCss(\n        value as Atomics,\n        this.className,\n        false,\n        this.options.displayName,\n      );\n      this.runtimeConfig = runtimeConfig;\n\n      classes.forEach(({ className, css: cssObject }) => {\n        const emotionClass = css(cssObject as CSSInterpolation);\n        const cssText = cache.registered[emotionClass] as string;\n\n        const rules: Rules = {\n          [`.${className}`]: {\n            cssText,\n            className: this.className,\n            displayName: this.displayName,\n            start: this.location?.start ?? null,\n          },\n        };\n        const sourceMapReplacements: Replacements = [\n          {\n            length: cssText.length,\n            original: {\n              start: {\n                column: this.location?.start.column ?? 0,\n                line: this.location?.start.line ?? 0,\n              },\n              end: {\n                column: this.location?.end.column ?? 0,\n                line: this.location?.end.line ?? 0,\n              },\n            },\n          },\n        ];\n        this.artifacts.push(['css', [rules, sourceMapReplacements]]);\n      });\n    }\n  }\n\n  doRuntimeReplacement(): void {\n    if (!this.runtimeConfig) {\n      this.doEvaltimeReplacement();\n      return;\n    }\n    const { astService: t } = this;\n    const importName = t.addNamedImport('atomics', this.getImportPath());\n    this.replacer(t.callExpression(importName, [valueToLiteral(this.runtimeConfig)]), true);\n  }\n}\n"]}