{"version":3,"sources":["../src/utils/preprocessor.ts","../src/processors/globalCss.ts"],"names":[],"mappings":"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","file":"globalCss.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 type { Expression } from '@babel/types';\nimport type {\n  CallParam,\n  TemplateParam,\n  Params,\n  TailProcessorParams,\n  ValueCache,\n} from '@wyw-in-js/processor-utils';\nimport { serializeStyles, Interpolation } from '@emotion/serialize';\nimport { type Replacements, type Rules, ValueType } from '@wyw-in-js/shared';\nimport type { CSSInterpolation } from '@emotion/serialize';\nimport { validateParams } from '@wyw-in-js/processor-utils';\nimport BaseProcessor from './base-processor';\nimport type { IOptions } from './styled';\nimport { cache } from '../utils/emotion';\nimport { getGlobalSelector } from '../utils/preprocessor';\n\nexport type Primitive = string | number | boolean | null | undefined;\n\nexport type TemplateCallback = (params: Record<string, unknown> | undefined) => string | number;\n\nexport class GlobalCssProcessor extends BaseProcessor {\n  callParam: CallParam | TemplateParam;\n\n  constructor(params: Params, ...args: TailProcessorParams) {\n    super([params[0]], ...args);\n    if (params.length < 2) {\n      throw BaseProcessor.SKIP;\n    }\n    validateParams(\n      params,\n      ['callee', ['call', 'template']],\n      `Invalid use of ${this.tagSource.imported} tag.`,\n    );\n\n    const [, callParams] = params;\n    if (callParams[0] === 'call') {\n      this.dependencies.push(callParams[1]);\n    } else if (callParams[0] === 'template') {\n      callParams[1].forEach((element) => {\n        if ('kind' in element && element.kind !== ValueType.CONST) {\n          this.dependencies.push(element);\n        }\n      });\n    }\n    this.callParam = callParams;\n  }\n\n  build(values: ValueCache) {\n    if (this.artifacts.length > 0) {\n      throw new Error(`MUI: \"${this.tagSource.imported}\" is already built`);\n    }\n\n    const [callType] = this.callParam;\n\n    if (callType === 'template') {\n      this.handleTemplate(this.callParam, values);\n    } else {\n      this.handleCall(this.callParam, values);\n    }\n  }\n\n  private handleTemplate([, callArgs]: TemplateParam, values: ValueCache) {\n    const templateStrs: string[] = [];\n    // @ts-ignore @TODO - Fix this. No idea how to initialize a Tagged String array.\n    templateStrs.raw = [];\n    const templateExpressions: Primitive[] = [];\n    const { themeArgs } = this.options as IOptions;\n\n    callArgs.forEach((item) => {\n      if ('kind' in item) {\n        switch (item.kind) {\n          case ValueType.FUNCTION: {\n            const value = values.get(item.ex.name) as TemplateCallback;\n            templateExpressions.push(value(themeArgs));\n            break;\n          }\n          case ValueType.CONST:\n            templateExpressions.push(item.value);\n            break;\n          case ValueType.LAZY: {\n            const evaluatedValue = values.get(item.ex.name);\n            if (typeof evaluatedValue === 'function') {\n              templateExpressions.push(evaluatedValue(themeArgs));\n            } else {\n              templateExpressions.push(evaluatedValue as Primitive);\n            }\n            break;\n          }\n          default:\n            break;\n        }\n      } else if (item.type === 'TemplateElement') {\n        templateStrs.push(item.value.cooked as string);\n        // @ts-ignore\n        templateStrs.raw.push(item.value.raw);\n      }\n    });\n    this.generateArtifacts(templateStrs, ...templateExpressions);\n  }\n\n  generateArtifacts(styleObjOrTaggged: CSSInterpolation | string[], ...args: Primitive[]) {\n    const { styles: cssText } = serializeStyles(\n      args.length > 0\n        ? [styleObjOrTaggged as Interpolation<{}>, ...args]\n        : [styleObjOrTaggged as Interpolation<{}>],\n      cache.registered,\n    );\n\n    const rules: Rules = {\n      [this.asSelector]: {\n        className: this.className,\n        cssText,\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  private handleCall([, callArg]: CallParam, values: ValueCache) {\n    if (callArg.kind === ValueType.LAZY || callArg.kind === ValueType.FUNCTION) {\n      const value = values.get(callArg.ex.name);\n      const { themeArgs } = this.options as IOptions;\n      const styleObj: CSSInterpolation = typeof value === 'function' ? value(themeArgs) : value;\n      if (styleObj) {\n        this.generateArtifacts(styleObj);\n      }\n    }\n  }\n\n  doEvaltimeReplacement() {\n    this.replacer(this.value, false);\n  }\n\n  doRuntimeReplacement() {\n    this.doEvaltimeReplacement();\n  }\n\n  get asSelector() {\n    return getGlobalSelector(this.className);\n  }\n\n  get value(): Expression {\n    return this.astService.nullLiteral();\n  }\n}\n"]}