{"version":3,"sources":["../src/processors/createUseThemeProps.ts"],"names":[],"mappings":";;;;;;;;;;;;AAWa,IAAA,4BAAA,GAAN,cAA2C,aAAc,CAAA;AAAA,EAG9D,WAAA,CAAY,WAAmB,IAA2B,EAAA;AAExD,IAAI,IAAA,MAAA,CAAO,SAAS,CAAG,EAAA;AACrB,MAAA,MAAM,aAAc,CAAA,IAAA;AAAA;AAEtB,IAAA,cAAA,CAAe,MAAQ,EAAA,CAAC,QAAU,EAAA,MAAM,GAAG,yCAAyC,CAAA;AAEpF,IAAA,KAAA,CAAM,CAAC,MAAO,CAAA,CAAC,CAAC,CAAA,EAAG,GAAG,IAAI,CAAA;AAC1B,IAAM,MAAA,GAAG,SAAS,CAAI,GAAA,MAAA;AACtB,IAAM,MAAA,GAAG,OAAO,CAAI,GAAA,SAAA;AACpB,IAAA,IAAI,CAAC,OAAA,IAAW,OAAQ,CAAA,EAAA,CAAG,SAAS,eAAiB,EAAA;AACnD,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,2FAAA,EAA8F,OAAS,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,CAAA,EAAA,CAAG,IAAI,CAAA,CAAA;AAAA,OAChH;AAAA;AAEF,IAAK,IAAA,CAAA,aAAA,GAAgB,QAAQ,EAAG,CAAA,KAAA;AAAA;AAClC;AAAA,EAGA,KAAc,GAAA;AAAA;AAAC,EAEf,qBAA8B,GAAA;AAC5B,IAAK,IAAA,CAAA,QAAA,CAAS,IAAK,CAAA,KAAA,EAAO,KAAK,CAAA;AAAA;AACjC,EAEA,IAAI,KAAoB,GAAA;AACtB,IAAO,OAAA,IAAA,CAAK,WAAW,WAAY,EAAA;AAAA;AACrC,EAEA,oBAA6B,GAAA;AA3C/B,IAAA,IAAA,EAAA,EAAA,EAAA;AA4CI,IAAA,MAAM,IAAI,IAAK,CAAA,UAAA;AAEf,IAAM,MAAA,EAAE,WAAW,EAAE,KAAA,KAAU,EAAC,KAAM,IAAK,CAAA,OAAA;AAE3C,IAAA,MAAM,gCAAgC,CAAE,CAAA,cAAA;AAAA,MACtC,KAAK,SAAU,CAAA,QAAA;AAAA,MACf,KAAK,aAAc;AAAA,KACrB;AAEA,IAAA,IAAI,WAA0B,GAAA,CAAA,CAAE,aAAc,CAAA,IAAA,CAAK,aAAa,CAAA;AAChE,IAAA,IAAA,CAAI,0CAAO,UAAP,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAoB,IAAK,CAAA,aAAA,CAAA,KAAzB,mBAAyC,YAAc,EAAA;AACzD,MAAA,WAAA,GAAc,eAAe,KAAM,CAAA,UAAA,CAAW,IAAK,CAAA,aAAa,EAAE,YAAY,CAAA;AAAA;AAEhF,IAAK,IAAA,CAAA,QAAA,CAAS,EAAE,cAAe,CAAA,6BAAA,EAA+B,CAAC,WAAW,CAAC,GAAG,IAAI,CAAA;AAAA;AACpF,EAEA,IAAoB,UAAqB,GAAA;AAEvC,IAAO,OAAA,CAAA,CAAA,EAAI,KAAK,SAAS,CAAA,CAAA;AAAA;AAE7B","file":"createUseThemeProps.mjs","sourcesContent":["import { validateParams, IOptions as IBaseOptions } from '@wyw-in-js/processor-utils';\nimport type { Expression, Params, TailProcessorParams } from '@wyw-in-js/processor-utils';\nimport BaseProcessor from './base-processor';\nimport { valueToLiteral } from '../utils/valueToLiteral';\n\ntype IOptions = IBaseOptions & {\n  themeArgs: {\n    theme: { components?: Record<string, { defaultProps?: Record<string, unknown> }> };\n  };\n};\n\nexport class CreateUseThemePropsProcessor extends BaseProcessor {\n  componentName: string;\n\n  constructor(params: Params, ...args: TailProcessorParams) {\n    // this is already transformed if there is an extra argument\n    if (params.length > 2) {\n      throw BaseProcessor.SKIP;\n    }\n    validateParams(params, ['callee', 'call'], 'Invalid use of createUseThemeProps tag.');\n\n    super([params[0]], ...args);\n    const [, callParam] = params;\n    const [, callArg] = callParam;\n    if (!callArg || callArg.ex.type !== 'StringLiteral') {\n      throw new Error(\n        `Invalid usage of \\`createUseThemeProps\\` tag, expected one string literal argument but got ${callArg?.ex.type}.`,\n      );\n    }\n    this.componentName = callArg.ex.value;\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  build(): void {}\n\n  doEvaltimeReplacement(): void {\n    this.replacer(this.value, false);\n  }\n\n  get value(): Expression {\n    return this.astService.nullLiteral();\n  }\n\n  doRuntimeReplacement(): void {\n    const t = this.astService;\n\n    const { themeArgs: { theme } = {} } = this.options as IOptions;\n\n    const useThemePropsImportIdentifier = t.addNamedImport(\n      this.tagSource.imported,\n      this.getImportPath(),\n    );\n\n    let replacement: Expression = t.stringLiteral(this.componentName);\n    if (theme?.components?.[this.componentName]?.defaultProps) {\n      replacement = valueToLiteral(theme.components[this.componentName].defaultProps);\n    }\n    this.replacer(t.callExpression(useThemePropsImportIdentifier, [replacement]), true);\n  }\n\n  public override get asSelector(): string {\n    // For completeness, this is not intended to be used.\n    return `.${this.className}`;\n  }\n}\n"]}