{"version":3,"file":"utility-css.cjs","sources":["../src/utility-css-static.js","../src/utility-css.js"],"sourcesContent":["import fs from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport path from \"node:path\";\nimport { parse, parseExpression } from \"@babel/parser\";\nimport { ensureLitsxParserPlugins } from \"./authored-input.js\";\nimport { resolveLitsxRequireJsx } from \"./filename-syntax.js\";\n\nconst SOURCE_EXTENSIONS = [\n  \"\",\n  \".tsx\",\n  \".mtsx\",\n  \".ctsx\",\n  \".ts\",\n  \".mts\",\n  \".cts\",\n  \".jsx\",\n  \".mjs\",\n  \".js\",\n  \".cjs\",\n];\n\nfunction unwrap(node) {\n  while (\n    node &&\n    [\n      \"TSAsExpression\",\n      \"TSSatisfiesExpression\",\n      \"TSNonNullExpression\",\n      \"TypeCastExpression\",\n      \"ParenthesizedExpression\",\n    ].includes(node.type)\n  ) {\n    node = node.expression;\n  }\n  return node;\n}\n\nfunction resolveSourceFile(importer, source) {\n  if (!source.startsWith(\".\") && !path.isAbsolute(source)) {\n    try {\n      const resolved = createRequire(importer).resolve(source);\n      return path.isAbsolute(resolved) ? resolved : null;\n    } catch {\n      return null;\n    }\n  }\n  const base = path.resolve(path.dirname(importer), source);\n  for (const extension of SOURCE_EXTENSIONS) {\n    const candidate = `${base}${extension}`;\n    if (fs.existsSync(candidate) && fs.statSync(candidate).isFile())\n      return candidate;\n  }\n  for (const extension of SOURCE_EXTENSIONS.slice(1)) {\n    const candidate = path.join(base, `index${extension}`);\n    if (fs.existsSync(candidate) && fs.statSync(candidate).isFile())\n      return candidate;\n  }\n  return null;\n}\n\nfunction parseModule(source, filename) {\n  return parse(source, {\n    sourceType: \"module\",\n    sourceFilename: filename,\n    plugins: [\n      ...ensureLitsxParserPlugins(filename, [], {\n        requireJsx: resolveLitsxRequireJsx(filename),\n      }),\n      \"importAttributes\",\n      \"decorators-legacy\",\n    ],\n  });\n}\n\nfunction parseStaticExpression(source, filename) {\n  return parseExpression(source, {\n    sourceType: \"module\",\n    sourceFilename: filename,\n    plugins: [\n      ...ensureLitsxParserPlugins(filename, [], {\n        requireJsx: resolveLitsxRequireJsx(filename),\n      }),\n      \"importAttributes\",\n      \"decorators-legacy\",\n    ],\n  });\n}\n\nfunction declarationEntries(declaration) {\n  if (declaration?.type !== \"VariableDeclaration\") return [];\n  return declaration.declarations\n    .filter((item) => item.id.type === \"Identifier\" && item.init)\n    .map((item) => [item.id.name, item.init]);\n}\n\nfunction createModuleRecord(ast, filename) {\n  const variables = new Map();\n  const imports = new Map();\n  const exports = new Map();\n  const exportAll = [];\n\n  for (const statement of ast.program.body) {\n    for (const [name, value] of declarationEntries(statement))\n      variables.set(name, value);\n\n    if (statement.type === \"ImportDeclaration\") {\n      for (const specifier of statement.specifiers) {\n        if (specifier.type === \"ImportSpecifier\") {\n          imports.set(specifier.local.name, {\n            source: statement.source.value,\n            imported: specifier.imported.name ?? specifier.imported.value,\n          });\n        } else if (specifier.type === \"ImportDefaultSpecifier\") {\n          imports.set(specifier.local.name, {\n            source: statement.source.value,\n            imported: \"default\",\n          });\n        }\n      }\n      continue;\n    }\n\n    if (statement.type === \"ExportNamedDeclaration\") {\n      for (const [name, value] of declarationEntries(statement.declaration)) {\n        variables.set(name, value);\n        exports.set(name, { local: name });\n      }\n      for (const specifier of statement.specifiers) {\n        const exported = specifier.exported.name ?? specifier.exported.value;\n        const local = specifier.local.name ?? specifier.local.value;\n        exports.set(\n          exported,\n          statement.source\n            ? { source: statement.source.value, imported: local }\n            : { local },\n        );\n      }\n      continue;\n    }\n\n    if (statement.type === \"ExportDefaultDeclaration\") {\n      if (statement.declaration.type === \"Identifier\") {\n        exports.set(\"default\", { local: statement.declaration.name });\n      } else {\n        exports.set(\"default\", { node: statement.declaration });\n      }\n      continue;\n    }\n\n    if (statement.type === \"ExportAllDeclaration\") {\n      exportAll.push(statement.source.value);\n    }\n  }\n\n  return { ast, filename, variables, imports, exports, exportAll };\n}\n\nfunction runtimeStyleExpression(node) {\n  node = unwrap(node);\n  if (!node) return false;\n  if (node.type === \"TaggedTemplateExpression\") return true;\n  if (\n    node.type === \"NewExpression\" &&\n    node.callee.type === \"Identifier\" &&\n    node.callee.name === \"CSSStyleSheet\"\n  )\n    return true;\n  if (node.type === \"CallExpression\") {\n    const callee = unwrap(node.callee);\n    return (\n      callee?.type === \"Identifier\" &&\n      [\"css\", \"unsafeCSS\"].includes(callee.name)\n    );\n  }\n  return false;\n}\n\nfunction cartesian(parts) {\n  let values = [\"\"];\n  for (const choices of parts) {\n    const next = [];\n    for (const prefix of values) {\n      for (const choice of choices) next.push(prefix + choice);\n    }\n    values = next;\n    if (values.length > 4096) {\n      throw new Error(\"static expression expands to more than 4096 values\");\n    }\n  }\n  return values;\n}\n\nfunction objectKey(property) {\n  if (!property.computed && property.key.type === \"Identifier\")\n    return property.key.name;\n  if ([\"StringLiteral\", \"NumericLiteral\"].includes(property.key.type))\n    return String(property.key.value);\n  return null;\n}\n\nfunction evaluateNode(node, context) {\n  node = unwrap(node);\n  if (!node) throw new Error(\"missing initializer\");\n\n  if (node.type === \"StringLiteral\") return [node.value];\n  if (node.type === \"TemplateLiteral\") {\n    const parts = [];\n    for (let index = 0; index < node.quasis.length; index += 1) {\n      parts.push([\n        node.quasis[index].value.cooked ?? node.quasis[index].value.raw,\n      ]);\n      if (index < node.expressions.length) {\n        const expression = evaluateNode(node.expressions[index], context);\n        if (!expression.every((value) => typeof value === \"string\")) {\n          throw new Error(\n            \"template interpolation is not a finite set of strings\",\n          );\n        }\n        parts.push(expression);\n      }\n    }\n    return cartesian(parts);\n  }\n  if (node.type === \"Identifier\") return context.resolveLocal(node.name);\n  if (node.type === \"ConditionalExpression\") {\n    return [\n      ...evaluateNode(node.consequent, context),\n      ...evaluateNode(node.alternate, context),\n    ];\n  }\n  if (node.type === \"LogicalExpression\") {\n    return [\n      ...evaluateNode(node.left, context),\n      ...evaluateNode(node.right, context),\n    ];\n  }\n  if (node.type === \"BinaryExpression\" && node.operator === \"+\") {\n    const left = evaluateNode(node.left, context);\n    const right = evaluateNode(node.right, context);\n    if (\n      !left.every((value) => typeof value === \"string\") ||\n      !right.every((value) => typeof value === \"string\")\n    ) {\n      throw new Error(\"string composition contains a non-string value\");\n    }\n    return cartesian([left, right]);\n  }\n  if (node.type === \"ArrayExpression\") {\n    const values = [];\n    for (const element of node.elements) {\n      if (!element) continue;\n      if (element.type === \"SpreadElement\")\n        values.push(...evaluateNode(element.argument, context));\n      else values.push(...evaluateNode(element, context));\n    }\n    return [{ kind: \"array\", values }];\n  }\n  if (node.type === \"ObjectExpression\") {\n    const entries = new Map();\n    for (const property of node.properties) {\n      if (property.type === \"SpreadElement\") {\n        for (const value of evaluateNode(property.argument, context)) {\n          if (value?.kind !== \"object\")\n            throw new Error(\"object spread is not statically resolvable\");\n          for (const [key, entriesValue] of value.entries)\n            entries.set(key, entriesValue);\n        }\n        continue;\n      }\n      if (property.type !== \"ObjectProperty\")\n        throw new Error(\"methods are not supported in style guards\");\n      const key = objectKey(property);\n      if (key === null)\n        throw new Error(\"computed object key is not statically resolvable\");\n      entries.set(key, evaluateNode(property.value, context));\n    }\n    return [{ kind: \"object\", entries }];\n  }\n  if (\n    node.type === \"MemberExpression\" ||\n    node.type === \"OptionalMemberExpression\"\n  ) {\n    const objects = evaluateNode(node.object, context);\n    const staticKey = node.computed\n      ? unwrap(node.property).type === \"StringLiteral\" ||\n        unwrap(node.property).type === \"NumericLiteral\"\n        ? String(unwrap(node.property).value)\n        : null\n      : node.property.name;\n    const values = [];\n    for (const object of objects) {\n      if (object?.kind !== \"object\")\n        throw new Error(\"member access target is not a finite object map\");\n      if (staticKey !== null) {\n        const selected = object.entries.get(staticKey);\n        if (selected) values.push(...selected);\n      } else {\n        for (const selected of object.entries.values())\n          values.push(...selected);\n      }\n    }\n    return values;\n  }\n\n  throw new Error(`unsupported ${node.type} expression`);\n}\n\nfunction collectStrings(values, output = new Set()) {\n  for (const value of values) {\n    if (typeof value === \"string\") {\n      for (const candidate of value.split(/\\s+/u))\n        if (candidate) output.add(candidate);\n    } else if (value?.kind === \"array\") {\n      collectStrings(value.values, output);\n    } else if (value?.kind === \"object\") {\n      for (const nested of value.entries.values())\n        collectStrings(nested, output);\n    }\n  }\n  return output;\n}\n\nexport function createStaticGuardResolver({ source, filename, ast = null }) {\n  const records = new Map();\n  const resolving = new Set();\n  const dependencies = new Set();\n  records.set(\n    filename,\n    createModuleRecord(ast ?? parseModule(source, filename), filename),\n  );\n\n  function getRecord(file) {\n    let record = records.get(file);\n    if (!record) {\n      dependencies.add(file);\n      record = createModuleRecord(\n        parseModule(fs.readFileSync(file, \"utf8\"), file),\n        file,\n      );\n      records.set(file, record);\n    }\n    return record;\n  }\n\n  function evaluateLocal(record, name) {\n    const key = `${record.filename}#local:${name}`;\n    if (resolving.has(key))\n      throw new Error(`cyclic static dependency at ${name}`);\n    resolving.add(key);\n    try {\n      if (record.variables.has(name)) {\n        const node = record.variables.get(name);\n        if (runtimeStyleExpression(node)) return { kind: \"runtime\" };\n        return {\n          kind: \"static\",\n          values: evaluateNode(node, {\n            resolveLocal(localName) {\n              const result = evaluateLocal(record, localName);\n              if (result.kind !== \"static\")\n                throw new Error(`${localName} is a runtime style`);\n              return result.values;\n            },\n          }),\n        };\n      }\n      const imported = record.imports.get(name);\n      if (imported) {\n        const target = resolveSourceFile(record.filename, imported.source);\n        if (!target) return { kind: \"external\" };\n        return evaluateExport(target, imported.imported);\n      }\n      throw new Error(`cannot resolve local binding ${name}`);\n    } finally {\n      resolving.delete(key);\n    }\n  }\n\n  function evaluateExport(file, exportedName) {\n    const key = `${file}#export:${exportedName}`;\n    if (resolving.has(key))\n      throw new Error(`cyclic export dependency at ${exportedName}`);\n    resolving.add(key);\n    try {\n      const record = getRecord(file);\n      const entry = record.exports.get(exportedName);\n      if (entry?.node) {\n        if (runtimeStyleExpression(entry.node)) return { kind: \"runtime\" };\n        return {\n          kind: \"static\",\n          values: evaluateNode(entry.node, {\n            resolveLocal(name) {\n              const result = evaluateLocal(record, name);\n              if (result.kind !== \"static\")\n                throw new Error(`${name} is not a static style source`);\n              return result.values;\n            },\n          }),\n        };\n      }\n      if (entry?.local) return evaluateLocal(record, entry.local);\n      if (entry?.source) {\n        const target = resolveSourceFile(file, entry.source);\n        if (!target) return { kind: \"external\" };\n        return evaluateExport(target, entry.imported);\n      }\n      for (const sourceName of record.exportAll) {\n        const target = resolveSourceFile(file, sourceName);\n        if (!target) continue;\n        try {\n          return evaluateExport(target, exportedName);\n        } catch (error) {\n          if (!String(error.message).includes(\"does not export\")) throw error;\n        }\n      }\n      throw new Error(`${file} does not export ${exportedName}`);\n    } finally {\n      resolving.delete(key);\n    }\n  }\n\n  function resultFromEvaluation(evaluation, descriptor = null) {\n    if (evaluation.kind !== \"static\") return evaluation;\n    return {\n      kind: \"static\",\n      candidates: [...collectStrings(evaluation.values)],\n      dependencies: [...dependencies],\n      descriptor,\n    };\n  }\n\n  return {\n    resolveLocal(name) {\n      const record = getRecord(filename);\n      const imported = record.imports.get(name);\n      let descriptor = null;\n      if (imported) {\n        const target = resolveSourceFile(filename, imported.source);\n        if (target)\n          descriptor = { file: target, exportName: imported.imported };\n      } else {\n        descriptor = { file: filename, localName: name };\n      }\n      return resultFromEvaluation(evaluateLocal(record, name), descriptor);\n    },\n    resolveNode(node) {\n      if (runtimeStyleExpression(node)) return { kind: \"runtime\" };\n      return resultFromEvaluation({\n        kind: \"static\",\n        values: evaluateNode(node, {\n          resolveLocal: (name) => {\n            const result = evaluateLocal(getRecord(filename), name);\n            if (result.kind !== \"static\")\n              throw new Error(`${name} is not a static style source`);\n            return result.values;\n          },\n        }),\n      });\n    },\n    resolveExport(file, exportName) {\n      return resultFromEvaluation(evaluateExport(file, exportName), {\n        file,\n        exportName,\n      });\n    },\n  };\n}\n\nexport function resolveStaticGuardExport(descriptor) {\n  const source = fs.readFileSync(descriptor.file, \"utf8\");\n  const resolver = createStaticGuardResolver({\n    source,\n    filename: descriptor.file,\n  });\n  if (descriptor.localName) return resolver.resolveLocal(descriptor.localName);\n  return resolver.resolveExport(descriptor.file, descriptor.exportName);\n}\n\nexport function resolveStaticClassExpression(descriptor) {\n  const source = fs.readFileSync(descriptor.file, \"utf8\");\n  const resolver = createStaticGuardResolver({\n    source,\n    filename: descriptor.file,\n  });\n  return resolver.resolveNode(\n    descriptor.node ??\n      parseStaticExpression(descriptor.expression, descriptor.file),\n  );\n}\n\nexport { runtimeStyleExpression };\n","import fs from \"node:fs\";\nexport {\n  createStaticGuardResolver,\n  resolveStaticClassExpression,\n  resolveStaticGuardExport,\n  runtimeStyleExpression,\n} from \"./utility-css-static.js\";\n\nexport const LITSX_COMPONENT_SYMBOL = \"litsx.component\";\nexport const LITSX_LIGHT_DOM_SCOPE_SYMBOL = \"litsx.lightDomStyleScope\";\nexport const LITSX_LIGHT_DOM_SCOPE_ATTRIBUTE = \"data-litsx-style-scope\";\nexport const UTILITY_CSS_DYNAMIC_WILDCARD = \"\\u0000\";\n\nexport function isSymbolFor(node, name, t) {\n  return Boolean(\n    t.isCallExpression(node) &&\n    t.isMemberExpression(node.callee) &&\n    !node.callee.computed &&\n    t.isIdentifier(node.callee.object, { name: \"Symbol\" }) &&\n    t.isIdentifier(node.callee.property, { name: \"for\" }) &&\n    node.arguments.length === 1 &&\n    t.isStringLiteral(node.arguments[0], { value: name }),\n  );\n}\n\nexport function isLitsxComponentClass(classPath, t) {\n  return classPath.get(\"body.body\").some((memberPath) => {\n    const member = memberPath.node;\n    return Boolean(\n      member?.static === true &&\n      member?.computed === true &&\n      isSymbolFor(member.key, LITSX_COMPONENT_SYMBOL, t),\n    );\n  });\n}\n\nexport function containsLightDomMixin(node, t) {\n  if (!t.isCallExpression(node)) return false;\n  if (t.isIdentifier(node.callee, { name: \"LightDomMixin\" })) return true;\n  return node.arguments.some((argument) => containsLightDomMixin(argument, t));\n}\n\nexport function getStaticRuntimeMetadataString(classPath, symbolKey, t) {\n  for (const memberPath of classPath.get(\"body.body\")) {\n    const member = memberPath.node;\n    if (\n      member?.static === true &&\n      member?.computed === true &&\n      isSymbolFor(member.key, symbolKey, t) &&\n      t.isStringLiteral(member.value)\n    ) {\n      return member.value.value;\n    }\n  }\n  return null;\n}\n\nexport function combineUtilityStringParts(parts, limit = 4096) {\n  let values = [\"\"];\n  for (const choices of parts) {\n    const next = [];\n    for (const prefix of values) {\n      for (const choice of choices) {\n        next.push(prefix + choice);\n        if (next.length > limit) return null;\n      }\n    }\n    values = next;\n  }\n  return values;\n}\n\nexport function unwrapStringExpression(node, t) {\n  while (\n    node &&\n    (t.isTSAsExpression(node) ||\n      t.isTSSatisfiesExpression(node) ||\n      t.isTSNonNullExpression(node) ||\n      t.isParenthesizedExpression(node))\n  ) {\n    node = node.expression;\n  }\n  return node;\n}\n\nexport function inlineConstantBindings(\n  node,\n  scope,\n  t,\n  resolving = new Set(),\n  parent = null,\n) {\n  if (!node) return node;\n  if (t.isIdentifier(node)) {\n    const binding = scope.getBinding(node.name);\n    const isReference = !parent || t.isReferenced(node, parent);\n    const declaration = binding?.path?.isVariableDeclarator()\n      ? binding.path\n      : binding?.path?.parentPath;\n    if (\n      isReference &&\n      binding?.constant &&\n      binding.constantViolations.length === 0 &&\n      declaration?.isVariableDeclarator() &&\n      declaration.node.init &&\n      !resolving.has(binding)\n    ) {\n      return inlineConstantBindings(\n        declaration.node.init,\n        declaration.scope,\n        t,\n        new Set(resolving).add(binding),\n      );\n    }\n    return t.cloneNode(node);\n  }\n\n  const clone = t.cloneNode(node, false);\n  for (const key of t.VISITOR_KEYS[node.type] || []) {\n    const value = node[key];\n    if (Array.isArray(value)) {\n      clone[key] = value.map((child) =>\n        child\n          ? inlineConstantBindings(child, scope, t, resolving, node)\n          : child,\n      );\n    } else if (value) {\n      clone[key] = inlineConstantBindings(value, scope, t, resolving, node);\n    }\n  }\n  return clone;\n}\n\nexport function finiteStringValues(node, t) {\n  node = unwrapStringExpression(node, t);\n  if (!node) return null;\n  if (t.isStringLiteral(node)) return [node.value];\n  if (t.isTemplateLiteral(node)) {\n    const parts = [];\n    for (let index = 0; index < node.quasis.length; index += 1) {\n      parts.push([\n        node.quasis[index].value.cooked ?? node.quasis[index].value.raw,\n      ]);\n      if (index < node.expressions.length) {\n        const values = finiteStringValues(node.expressions[index], t);\n        if (!values) return null;\n        parts.push(values);\n      }\n    }\n    return combineUtilityStringParts(parts);\n  }\n  if (t.isConditionalExpression(node)) {\n    const consequent = finiteStringValues(node.consequent, t);\n    const alternate = finiteStringValues(node.alternate, t);\n    return consequent && alternate ? [...consequent, ...alternate] : null;\n  }\n  if (t.isLogicalExpression(node)) {\n    const left = finiteStringValues(node.left, t);\n    const right = finiteStringValues(node.right, t);\n    return left && right ? [...left, ...right] : null;\n  }\n  if (t.isBinaryExpression(node, { operator: \"+\" })) {\n    const left = finiteStringValues(node.left, t);\n    const right = finiteStringValues(node.right, t);\n    return left && right ? combineUtilityStringParts([left, right]) : null;\n  }\n  return null;\n}\n\nexport function classPatternValues(\n  node,\n  t,\n  resolveStatic,\n  wildcard = UTILITY_CSS_DYNAMIC_WILDCARD,\n) {\n  const finite = finiteStringValues(node, t);\n  if (finite) return finite;\n  const resolved = resolveStatic?.(node);\n  if (resolved) return resolved;\n  node = unwrapStringExpression(node, t);\n  if (t.isTemplateLiteral(node)) {\n    const parts = [];\n    for (let index = 0; index < node.quasis.length; index += 1) {\n      parts.push([\n        node.quasis[index].value.cooked ?? node.quasis[index].value.raw,\n      ]);\n      if (index < node.expressions.length) {\n        parts.push(\n          classPatternValues(\n            node.expressions[index],\n            t,\n            resolveStatic,\n            wildcard,\n          ),\n        );\n      }\n    }\n    return combineUtilityStringParts(parts) ?? [wildcard];\n  }\n  if (t.isConditionalExpression(node)) {\n    return [\n      ...classPatternValues(node.consequent, t, resolveStatic, wildcard),\n      ...classPatternValues(node.alternate, t, resolveStatic, wildcard),\n    ];\n  }\n  if (t.isLogicalExpression(node)) {\n    return [\n      ...classPatternValues(node.left, t, resolveStatic, wildcard),\n      ...classPatternValues(node.right, t, resolveStatic, wildcard),\n    ];\n  }\n  if (t.isBinaryExpression(node, { operator: \"+\" })) {\n    return (\n      combineUtilityStringParts([\n        classPatternValues(node.left, t, resolveStatic, wildcard),\n        classPatternValues(node.right, t, resolveStatic, wildcard),\n      ]) ?? [wildcard]\n    );\n  }\n  return [wildcard];\n}\n\n/** Collect exact and finite utility candidates owned by one lowered component. */\nexport function collectUtilityClassCandidates(\n  classPath,\n  t,\n  staticResolver,\n  filename,\n  options = {},\n) {\n  const wildcard = options.dynamicWildcard ?? UTILITY_CSS_DYNAMIC_WILDCARD;\n  const candidates = new Set();\n  const dynamicPatterns = new Set();\n  const staticCandidates = new Set();\n  const dependencies = new Set();\n  const staticSources = new Map();\n\n  const resolveStatic = (node, scope) => {\n    if (!staticResolver) return null;\n    let result;\n    let refreshable = true;\n    try {\n      result = staticResolver.resolveNode(node);\n    } catch {\n      refreshable = false;\n      try {\n        result = staticResolver.resolveNode(\n          inlineConstantBindings(node, scope, t),\n        );\n      } catch {\n        return null;\n      }\n    }\n    if (result.kind !== \"static\") return null;\n    for (const dependency of result.dependencies || []) {\n      dependencies.add(dependency);\n    }\n    if (filename && fs.existsSync(filename) && refreshable) {\n      const expressionNode = t.removePropertiesDeep(t.cloneNode(node, true));\n      const descriptor = { file: filename, node: expressionNode };\n      staticSources.set(JSON.stringify(descriptor), descriptor);\n      for (const candidate of result.candidates) {\n        staticCandidates.add(candidate);\n      }\n    }\n    return result.candidates;\n  };\n\n  classPath.traverse({\n    ...(options.excludeClassBodies === true\n      ? {\n          \"ClassDeclaration|ClassExpression\"(nestedClassPath) {\n            nestedClassPath.skip();\n          },\n        }\n      : {}),\n    TaggedTemplateExpression(templatePath) {\n      const tagPath = templatePath.get(\"tag\");\n      if (!tagPath.isIdentifier()) return;\n      const binding = tagPath.scope.getBinding(tagPath.node.name);\n      const importedHtml = Boolean(\n        binding?.path?.isImportSpecifier?.() &&\n        t.isIdentifier(binding.path.node.imported, { name: \"html\" }) &&\n        [\"lit\", \"@litsx/ssr\"].includes(\n          binding.path.parentPath?.node?.source?.value,\n        ),\n      );\n      if (tagPath.node.name !== \"html\" && !importedHtml) return;\n      const quasi = templatePath.node.quasi;\n      if (!t.isTemplateLiteral(quasi)) return;\n      const marker = (index) => `\\u0001${index}\\u0002`;\n      let source = \"\";\n      for (let index = 0; index < quasi.quasis.length; index += 1) {\n        source +=\n          quasi.quasis[index].value.cooked ?? quasi.quasis[index].value.raw;\n        if (index < quasi.expressions.length) source += marker(index);\n      }\n      const attributePattern =\n        /(?:^|[\\s<])(?:class|className)\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)'|([^\\s>]+))/gu;\n      for (const match of source.matchAll(attributePattern)) {\n        const value = match[1] ?? match[2] ?? match[3] ?? \"\";\n        const parts = [];\n        let offset = 0;\n        for (const placeholder of value.matchAll(/\\u0001(\\d+)\\u0002/gu)) {\n          const expressionIndex = Number(placeholder[1]);\n          const expressionPath = templatePath.get(\n            `quasi.expressions.${expressionIndex}`,\n          );\n          parts.push([value.slice(offset, placeholder.index)]);\n          parts.push(\n            classPatternValues(\n              quasi.expressions[expressionIndex],\n              t,\n              (node) => resolveStatic(node, expressionPath.scope),\n              wildcard,\n            ),\n          );\n          offset = placeholder.index + placeholder[0].length;\n        }\n        parts.push([value.slice(offset)]);\n        for (const expanded of combineUtilityStringParts(parts) ?? [wildcard]) {\n          for (const candidate of expanded.split(/\\s+/u)) {\n            if (!candidate) continue;\n            if (candidate.includes(wildcard)) {\n              if (candidate !== wildcard) dynamicPatterns.add(candidate);\n            } else {\n              candidates.add(candidate);\n            }\n          }\n        }\n      }\n    },\n  });\n\n  if (options.retainStaticCandidates !== true) {\n    for (const candidate of staticCandidates) candidates.delete(candidate);\n  }\n  return {\n    candidates: [...candidates],\n    dynamicPatterns: [...dynamicPatterns],\n    dependencies: [...dependencies],\n    staticSources: [...staticSources.values()],\n  };\n}\n"],"names":["createRequire","parse","ensureLitsxParserPlugins","resolveLitsxRequireJsx","parseExpression"],"mappings":"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"}