{"version":3,"file":"index.cjs","sources":["../src/index.js"],"sourcesContent":["import jsxSyntaxPlugin from \"@babel/plugin-syntax-jsx\";\nimport { isLitElementSuperClass } from \"@litsx/babel-plugin-shared-hooks\";\nimport path from \"node:path\";\nimport { normalizeFilePath } from \"@litsx/typescript-session\";\n\nlet t;\nconst SHADOW_MIXIN = \"ShadowDomMixin\";\nconst LIGHT_MIXIN = \"LightDomMixin\";\n\nexport default function transformFunctionToClassPlugin(api) {\n  api.assertVersion(7);\n  t = api.types;\n\n  return {\n    name: \"transform-litsx-scoped-elements\",\n    inherits: jsxSyntaxPlugin.default || jsxSyntaxPlugin,\n    visitor: {\n      Program: {\n        exit(programPath) {\n          programPath.get(\"body\").forEach((nodePath) => {\n            const classPath = resolveTopLevelClassPath(nodePath);\n            if (!classPath) return;\n            if (!isLitElementSuperClass(classPath.node.superClass, t)) return;\n            if (classPath.node._elementsTransformed) return;\n\n            const transformed = transformClass(classPath, programPath);\n            if (transformed) {\n              classPath.node._elementsTransformed = true;\n            }\n          });\n        },\n      },\n    },\n  };\n}\n\nfunction resolveTopLevelClassPath(nodePath) {\n  if (nodePath.isClassDeclaration()) {\n    return nodePath;\n  }\n\n  if (nodePath.isExportNamedDeclaration()) {\n    const declarationPath = nodePath.get(\"declaration\");\n    if (declarationPath && declarationPath.isClassDeclaration()) {\n      return declarationPath;\n    }\n  }\n\n  return null;\n}\n\nfunction transformClass(classPath, programPath) {\n  const { node } = classPath;\n  const staticIr = consumeStaticIr(node);\n  const precomputedCandidates = new Set(staticIr.elements.localCandidates);\n  const importedCandidates = [...staticIr.elements.importedCandidates];\n  const needsElementsRegistry = Boolean(staticIr.elements.needsRegistry);\n  const lightDomRequested =\n    Boolean(staticIr.lightDom) ||\n    hasMixinInSuperChain(node.superClass, LIGHT_MIXIN);\n\n  const filename = normalizeFilePath(programPath.hub.file?.opts?.filename || \"\");\n  if (importedCandidates.length > 0 && filename) {\n    const localNames = ensureImportedElementCandidates(programPath, filename, importedCandidates);\n    localNames.forEach((localName) => precomputedCandidates.add(localName));\n  }\n\n  const availableMap = buildAvailableMap(programPath);\n\n  const {\n    elements: detectedElements,\n    hasRenderableTemplate,\n  } = detectElementsFromClass(classPath, availableMap, precomputedCandidates);\n  const needsElements = detectedElements.length > 0;\n  const hasExistingElementsStatic = hasStaticElementsMember(node);\n  const needsScopedElements =\n    needsElements ||\n    needsElementsRegistry ||\n    hasExistingElementsStatic;\n\n  // `static elements` belongs to the shadow/scoped-elements path only.\n  // Light DOM components may still be valid, but only when they do not require\n  // scoped element resolution at all.\n  const elementsStatic = hasExistingElementsStatic || lightDomRequested\n    ? null\n    : createClassProperty(\"elements\", detectedElements);\n  const needsElementsMixin =\n    Boolean(elementsStatic) ||\n    needsElementsRegistry ||\n    hasExistingElementsStatic;\n  const needsLightDomMixin = lightDomRequested;\n\n  if (!hasRenderableTemplate && !needsElements && !needsElementsRegistry && !needsLightDomMixin) {\n    return false;\n  }\n\n  if (needsLightDomMixin && needsScopedElements) {\n    throw classPath.buildCodeFrameError(\n      \"LitSX does not support scoped elements in light DOM. Remove `static lightDom`, remove `static elements`, or switch the component to shadow DOM.\"\n    );\n  }\n\n  if (\n    needsLightDomMixin &&\n    !hasMixinInSuperChain(node.superClass, LIGHT_MIXIN)\n  ) {\n    ensureRuntimeInfrastructureImport(programPath, LIGHT_MIXIN);\n    node.superClass = t.callExpression(\n      t.identifier(LIGHT_MIXIN),\n      [node.superClass]\n    );\n  }\n\n  if (\n    needsElementsMixin &&\n    !lightDomRequested &&\n    !hasMixinInSuperChain(node.superClass, SHADOW_MIXIN)\n  ) {\n    ensureRuntimeInfrastructureImport(programPath, SHADOW_MIXIN);\n    node.superClass = t.callExpression(\n      t.identifier(SHADOW_MIXIN),\n      [node.superClass]\n    );\n  }\n\n  if (elementsStatic) {\n    insertClassProperty(node, elementsStatic);\n  }\n\n  return needsLightDomMixin || needsElementsMixin;\n}\n\nfunction consumeStaticIr(node) {\n  const ir = normalizeStaticIr(node?._litsxStaticIr);\n\n  if (!node) {\n    return ir;\n  }\n\n  delete node._litsxStaticIr;\n  return ir;\n}\n\nfunction normalizeStaticIr(ir) {\n  return {\n    properties: {\n      inferred: [...(ir?.properties?.inferred || [])],\n      authored: [...(ir?.properties?.authored || [])],\n      legacy: [...(ir?.properties?.legacy || [])],\n    },\n    elements: {\n      localCandidates: [...(ir?.elements?.localCandidates || [])],\n      importedCandidates: [...(ir?.elements?.importedCandidates || [])],\n      needsRegistry: Boolean(ir?.elements?.needsRegistry),\n    },\n    lightDom: Boolean(ir?.lightDom),\n  };\n}\n\nfunction hasMixinInSuperChain(node, mixinName) {\n  if (!node) {\n    return false;\n  }\n\n  if (\n    t.isCallExpression(node) &&\n    t.isIdentifier(node.callee) &&\n    node.callee.name === mixinName\n  ) {\n    return true;\n  }\n\n  if (t.isCallExpression(node)) {\n    return node.arguments.some((argument) =>\n      t.isExpression(argument) && hasMixinInSuperChain(argument, mixinName)\n    );\n  }\n\n  return false;\n}\n\nfunction toKebab(name) {\n  return name.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n}\n\nfunction createClassProperty(name, elements) {\n  if (!elements || elements.length === 0) return null;\n\n  const properties = elements.map((entry) =>\n    t.objectProperty(\n      t.stringLiteral(entry.tagName),\n      t.identifier(entry.originalName)\n    )\n  );\n\n  const property = t.classProperty(\n    t.identifier(name),\n    t.objectExpression(properties),\n    null,\n    [],\n    false\n  );\n  property.static = true;\n  return property;\n}\n\nfunction insertClassProperty(node, property) {\n  const propertiesIndex = node.body.body.findIndex(\n    (el) => t.isClassProperty(el) && el.key.name === \"properties\"\n  );\n\n  if (propertiesIndex !== -1) {\n    node.body.body.splice(propertiesIndex + 1, 0, property);\n  } else {\n    node.body.body.push(property);\n  }\n}\n\nfunction hasStaticElementsMember(node) {\n  return node.body.body.some((member) => {\n    if (!member.static) {\n      return false;\n    }\n\n    const key = member.key;\n    return (\n      (t.isIdentifier(key) && key.name === \"elements\") ||\n      (t.isStringLiteral(key) && key.value === \"elements\")\n    );\n  });\n}\n\nfunction ensureRuntimeInfrastructureImport(programPath, importName) {\n  if (hasNamedImport(programPath, \"@litsx/core/elements\", importName)) {\n    return;\n  }\n\n  const runtimeImport = programPath.get(\"body\").find(\n    (nodePath) =>\n      nodePath.isImportDeclaration() &&\n      nodePath.node.source.value === \"@litsx/core/elements\"\n  );\n\n  if (runtimeImport) {\n    runtimeImport.node.specifiers.push(\n      t.importSpecifier(t.identifier(importName), t.identifier(importName))\n    );\n    return;\n  }\n\n  programPath.unshiftContainer(\"body\", t.importDeclaration(\n    [t.importSpecifier(t.identifier(importName), t.identifier(importName))],\n    t.stringLiteral(\"@litsx/core/elements\")\n  ));\n}\n\nfunction createRelativeModuleSpecifier(fromFilename, targetFilename) {\n  const fromDir = path.dirname(fromFilename);\n  let relativePath = normalizeFilePath(path.relative(fromDir, targetFilename));\n  if (!relativePath.startsWith(\".\") && !relativePath.startsWith(\"/\")) {\n    relativePath = `./${relativePath}`;\n  }\n  return relativePath;\n}\n\nfunction ensureUniqueLocalName(programPath, baseName) {\n  programPath.scope.crawl();\n  if (!programPath.scope.hasBinding(baseName)) {\n    return baseName;\n  }\n\n  let index = 1;\n  while (programPath.scope.hasBinding(`__litsxImported${baseName}${index}`)) {\n    index += 1;\n  }\n\n  return `__litsxImported${baseName}${index}`;\n}\n\nfunction ensureImportedElementCandidates(programPath, fromFilename, importedCandidates) {\n  const localNames = [];\n\n  importedCandidates.forEach((candidate) => {\n    const sourceValue = candidate.sourceSpecifier || createRelativeModuleSpecifier(fromFilename, candidate.sourceFile);\n    const importDeclarations = programPath.get(\"body\").filter(\n      (nodePath) =>\n        nodePath.isImportDeclaration() &&\n        nodePath.node.source.value === sourceValue\n    );\n\n    for (const importPath of importDeclarations) {\n      const matchingSpecifier = importPath.node.specifiers.find((specifier) => {\n        if (candidate.importedName === \"default\") {\n          return t.isImportDefaultSpecifier(specifier);\n        }\n        return (\n          t.isImportSpecifier(specifier) &&\n          t.isIdentifier(specifier.imported, { name: candidate.importedName })\n        );\n      });\n\n      if (matchingSpecifier?.local?.name) {\n        localNames.push(matchingSpecifier.local.name);\n        return;\n      }\n    }\n\n    const localName = ensureUniqueLocalName(programPath, candidate.originalName);\n    const specifier = candidate.importedName === \"default\"\n      ? t.importDefaultSpecifier(t.identifier(localName))\n      : t.importSpecifier(\n          t.identifier(localName),\n          t.identifier(candidate.importedName)\n        );\n\n    if (importDeclarations[0]) {\n      importDeclarations[0].node.specifiers.push(specifier);\n    } else {\n      programPath.unshiftContainer(\n        \"body\",\n        t.importDeclaration([specifier], t.stringLiteral(sourceValue))\n      );\n    }\n\n    localNames.push(localName);\n  });\n\n  return localNames;\n}\n\nfunction hasNamedImport(programPath, moduleName, importName) {\n  return programPath.get(\"body\").some((n) => {\n    if (!n.isImportDeclaration() || n.node.source.value !== moduleName) {\n      return false;\n    }\n\n    return n.node.specifiers.some(\n      (specifier) =>\n        t.isImportSpecifier(specifier) &&\n        t.isIdentifier(specifier.imported, { name: importName })\n    );\n  });\n}\n\nfunction unwrapNamespaceAliasExpression(node) {\n  let current = node;\n  while (\n    t.isTSAsExpression(current) ||\n    t.isTSTypeAssertion(current) ||\n    t.isTSNonNullExpression(current) ||\n    t.isTSSatisfiesExpression?.(current)\n  ) {\n    current = current.expression;\n  }\n  return current;\n}\n\nfunction buildAvailableMap(programPath) {\n  const availableMap = new Map();\n  const namespaceImports = new Set();\n\n  programPath.get(\"body\").forEach((nodePath) => {\n    if (nodePath.isImportDeclaration()) {\n      nodePath.node.specifiers.forEach((specifier) => {\n        if (t.isImportSpecifier(specifier) || t.isImportDefaultSpecifier(specifier)) {\n          availableMap.set(specifier.local.name, {\n            originalName: specifier.local.name,\n          });\n          return;\n        }\n\n        if (t.isImportNamespaceSpecifier(specifier)) {\n          namespaceImports.add(specifier.local.name);\n        }\n      });\n      return;\n    }\n\n    const localClassPath = resolveTopLevelClassPath(nodePath);\n    if (!localClassPath) return;\n\n    const localName = localClassPath.node.id?.name;\n    if (!localName) return;\n\n    availableMap.set(localName, {\n      originalName: localName,\n      local: true,\n    });\n  });\n\n  programPath.get(\"body\").forEach((nodePath) => {\n    if (!nodePath.isVariableDeclaration()) {\n      return;\n    }\n\n    nodePath.node.declarations.forEach((declarator) => {\n      if (!t.isIdentifier(declarator.id)) {\n        return;\n      }\n\n      const init = unwrapNamespaceAliasExpression(declarator.init);\n      if (\n        !t.isMemberExpression(init) ||\n        init.computed ||\n        !t.isIdentifier(unwrapNamespaceAliasExpression(init.object)) ||\n        !t.isIdentifier(init.property) ||\n        !namespaceImports.has(unwrapNamespaceAliasExpression(init.object).name)\n      ) {\n        return;\n      }\n\n      availableMap.set(declarator.id.name, {\n        originalName: declarator.id.name,\n      });\n    });\n  });\n\n  return availableMap;\n}\n\nfunction detectElementsFromClass(classPath, availableMap, precomputedCandidates) {\n  if (availableMap.size === 0) {\n    return {\n      elements: [],\n      hasRenderableTemplate: false,\n    };\n  }\n\n  const used = new Map();\n  const nameToTag = new Map();\n  let hasRenderableTemplate = false;\n\n  precomputedCandidates.forEach((candidate) => {\n    if (!availableMap.has(candidate)) return;\n    const entry = availableMap.get(candidate);\n    used.set(candidate, {\n      ...entry,\n      originalName: candidate,\n      tagName: toKebab(candidate),\n    });\n  });\n\n  classPath.traverse({\n    JSXOpeningElement(path) {\n      hasRenderableTemplate = true;\n      const nameNode = path.get(\"name\");\n      if (!nameNode.isJSXIdentifier()) return;\n      const originalName = nameNode.node.__scopedOriginal || nameNode.node.name;\n      if (!availableMap.has(originalName)) return;\n\n      const entry = availableMap.get(originalName);\n      const tagName = toKebab(originalName);\n      nameNode.node.name = tagName;\n      nameToTag.set(originalName, tagName);\n      used.set(originalName, {\n        ...entry,\n        originalName,\n        tagName,\n      });\n    },\n    JSXClosingElement(path) {\n      hasRenderableTemplate = true;\n      const nameNode = path.get(\"name\");\n      if (!nameNode.isJSXIdentifier()) return;\n      const originalName = nameNode.node.__scopedOriginal || nameNode.node.name;\n      const tagName = nameToTag.get(originalName);\n      if (!tagName) return;\n      nameNode.node.name = tagName;\n    },\n    TaggedTemplateExpression(path) {\n      if (!t.isIdentifier(path.node.tag, { name: \"html\" })) return;\n      hasRenderableTemplate = true;\n\n      const quasi = path.node.quasi;\n\n      availableMap.forEach((entry, originalName) => {\n        const tagName = toKebab(originalName);\n        const replaced = replaceInTemplate(quasi, originalName, tagName);\n        if (replaced) {\n          used.set(originalName, {\n            ...entry,\n            originalName,\n            tagName,\n          });\n          nameToTag.set(originalName, tagName);\n        }\n      });\n    },\n  });\n\n  return {\n    elements: Array.from(used.values()),\n    hasRenderableTemplate,\n  };\n}\n\nfunction replaceInTemplate(quasi, originalName, kebabName) {\n  let changed = false;\n  const openingPattern = new RegExp(`<${originalName}(?=[\\\\s>])`, \"g\");\n  const closingPattern = new RegExp(`</${originalName}(?=[\\\\s>])`, \"g\");\n\n  quasi.quasis.forEach((element) => {\n    const raw = element.value.raw;\n    const cooked = element.value.cooked;\n\n    const newRaw = raw\n      .replace(openingPattern, `<${kebabName}`)\n      .replace(closingPattern, `</${kebabName}`);\n    const newCooked = cooked\n      .replace(openingPattern, `<${kebabName}`)\n      .replace(closingPattern, `</${kebabName}`);\n\n    if (newRaw !== raw || newCooked !== cooked) {\n      element.value.raw = newRaw;\n      element.value.cooked = newCooked;\n      changed = true;\n    }\n  });\n\n  return changed;\n}\n"],"names":["isLitElementSuperClass","normalizeFilePath"],"mappings":"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"}