{"version":3,"file":"index.cjs","sources":["../src/template.js","../src/index.js"],"sourcesContent":["import { decodeVirtualAttributeName } from \"@litsx/authoring\";\n\nlet t;\n\nconst VOID_HTML_TAGS = new Set([\n  \"area\",\n  \"base\",\n  \"br\",\n  \"col\",\n  \"embed\",\n  \"hr\",\n  \"img\",\n  \"input\",\n  \"link\",\n  \"meta\",\n  \"param\",\n  \"source\",\n  \"track\",\n  \"wbr\",\n]);\nconst ATTRIBUTE_PASSTHROUGH_NAMES = new Set([\n  \"class\",\n  \"className\",\n  \"id\",\n  \"slot\",\n  \"style\",\n  \"part\",\n  \"exportparts\",\n  \"role\",\n  \"title\",\n  \"tabindex\",\n  \"tabIndex\",\n]);\n\nexport function setTemplateTypes(types) {\n  t = types;\n}\n\nexport function collectLitAttributeSourcemapMetadata(node, mappings = [], options = {}) {\n  if (!node) {\n    return mappings;\n  }\n\n  if (t.isJSXElement(node)) {\n    for (const attr of node.openingElement.attributes) {\n      if (attr.type !== \"JSXAttribute\") {\n        continue;\n      }\n\n      const rawName = decodeVirtualAttributeName(attr.name.name) ?? attr.name.name;\n      const prefix = rawName[0];\n      const generatedName =\n        prefix === \".\" || prefix === \"@\" || prefix === \"?\"\n          ? `${prefix}${rawName.slice(1)}`\n          : rawName;\n      const sourceLocation = attr.name?.loc ?? attr.loc ?? null;\n\n      mappings.push({\n        generatedNeedle: attr.value\n          ? ` ${generatedName}=`\n          : ` ${generatedName}`,\n        generatedOffset: 1,\n        source: sourceLocation?.filename ?? options.sourceFileName ?? null,\n        line: sourceLocation?.start?.line ?? null,\n        column: sourceLocation?.start?.column ?? null,\n      });\n    }\n\n    for (const child of node.children) {\n      collectLitAttributeSourcemapMetadata(child, mappings, options);\n    }\n    return mappings;\n  }\n\n  if (t.isJSXFragment(node)) {\n    for (const child of node.children) {\n      collectLitAttributeSourcemapMetadata(child, mappings, options);\n    }\n  }\n\n  return mappings;\n}\n\nfunction trimString(string) {\n  return string.replace(/\\s+/g, (match, offset, full) => {\n    if (offset === 0) {\n      return /^ *\\n/.test(match) ? \"\" : match;\n    }\n    if (match.length + offset === full.length) {\n      return /\\n *$/.test(match) ? \"\" : match;\n    }\n    return /\\n/.test(match) ? \" \" : match;\n  });\n}\n\nfunction copySourceLocation(target, startNode, endNode = startNode) {\n  if (!startNode?.loc || !endNode?.loc) {\n    return target;\n  }\n\n  target.start = startNode.start;\n  target.end = endNode.end;\n  target.loc = {\n    filename: startNode.loc.filename ?? endNode.loc.filename,\n    identifierName: startNode.loc.identifierName,\n    start: startNode.loc.start,\n    end: endNode.loc.end,\n  };\n\n  return target;\n}\n\nfunction addString(strings, keys, string, startNode = null, endNode = startNode) {\n  const trimmedString = trimString(string);\n  if (!trimmedString) {\n    return;\n  }\n\n  if (strings.length <= keys.length) {\n    const templateElement = t.templateElement(\n      { raw: trimmedString, cooked: trimmedString },\n      false\n    );\n    copySourceLocation(templateElement, startNode, endNode);\n    strings.push(templateElement);\n  } else {\n    const last = strings[strings.length - 1];\n    last.value.raw += trimmedString;\n    last.value.cooked = (last.value.cooked ?? \"\") + trimmedString;\n    if (startNode?.loc && !last.loc) {\n      copySourceLocation(last, startNode, endNode);\n    } else if (last.loc && endNode?.loc) {\n      last.end = endNode.end;\n      last.loc = {\n        ...last.loc,\n        end: endNode.loc.end,\n      };\n    }\n  }\n}\n\nfunction addKey(strings, keys, key) {\n  if (strings.length <= keys.length) {\n    strings.push(t.templateElement({ raw: \"\", cooked: \"\" }, false));\n  }\n  keys.push(key);\n}\n\nfunction createJsxReplacement(node, opts) {\n  const hasTagOption = Object.prototype.hasOwnProperty.call(opts || {}, \"tag\");\n  const tag = hasTagOption ? opts.tag : \"html\";\n\n  if (tag) {\n    return createTaggedTemplate(node, opts, tag);\n  }\n\n  return buildTemplate(node, opts);\n}\n\nfunction lowerEmbeddedJsx(node, opts) {\n  if (!node || typeof node !== \"object\") {\n    return node;\n  }\n\n  if (t.isJSXElement(node) || t.isJSXFragment(node)) {\n    return createJsxReplacement(node, opts);\n  }\n\n  const visitorKeys = t.VISITOR_KEYS?.[node.type];\n  if (!visitorKeys) {\n    return node;\n  }\n\n  for (const key of visitorKeys) {\n    const value = node[key];\n    if (Array.isArray(value)) {\n      node[key] = value.map((child) => lowerEmbeddedJsx(child, opts));\n      continue;\n    }\n\n    if (value && typeof value === \"object\") {\n      node[key] = lowerEmbeddedJsx(value, opts);\n    }\n  }\n\n  return node;\n}\n\nfunction materializeChildExpression(node, opts) {\n  const expression = lowerEmbeddedJsx(node, opts);\n\n  if (\n    (t.isArrowFunctionExpression(expression) || t.isFunctionExpression(expression)) &&\n    expression.params.length === 0 &&\n    expression.async !== true &&\n    expression.generator !== true\n  ) {\n    return t.callExpression(expression, []);\n  }\n\n  return expression;\n}\n\nfunction stringifyJsxName(nameNode) {\n  if (t.isJSXIdentifier(nameNode)) {\n    return nameNode.name;\n  }\n\n  if (t.isJSXMemberExpression(nameNode)) {\n    return `${stringifyJsxName(nameNode.object)}.${nameNode.property.name}`;\n  }\n\n  if (t.isJSXNamespacedName(nameNode)) {\n    return `${nameNode.namespace.name}:${nameNode.name.name}`;\n  }\n\n  return \"unknown\";\n}\n\nfunction toKebab(name) {\n  return name.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n}\n\nfunction getTag(node) {\n  if (t.isJSXIdentifier(node.name)) {\n    const originalName = node.name.name;\n    const isCapitalized =\n      originalName.charAt(0) === originalName.charAt(0).toUpperCase() &&\n      originalName.charAt(0) !== originalName.charAt(0).toLowerCase();\n\n    return {\n      name: isCapitalized ? toKebab(originalName) : originalName,\n      isComponent: false,\n      isAuthoredComponentTag: isCapitalized,\n    };\n  }\n\n  return {\n    name: stringifyJsxName(node.name),\n    isComponent: true,\n    isAuthoredComponentTag: false,\n  };\n}\n\nfunction isVoidHtmlTagName(name) {\n  return VOID_HTML_TAGS.has(String(name).toLowerCase());\n}\n\nfunction createComponent(node, opts = {}) {\n  const attributes = t.objectExpression(\n    node.openingElement.attributes.map((attr) => {\n      if (attr.type === \"JSXSpreadAttribute\") {\n        return t.spreadElement(attr.argument);\n      }\n\n      const rawName = decodeVirtualAttributeName(attr.name.name) ?? attr.name.name;\n      const value = attr.value\n        ? attr.value.expression || attr.value\n        : t.booleanLiteral(true);\n      const nextValue = attr.value?.type === \"JSXExpressionContainer\"\n        ? lowerEmbeddedJsx(value, opts)\n        : value;\n\n      const isValidIdentifier = /^[$_a-zA-Z][$_a-zA-Z0-9]*$/.test(rawName);\n      const key = isValidIdentifier\n        ? t.identifier(rawName)\n        : t.stringLiteral(rawName);\n\n      return copySourceLocation(\n        t.objectProperty(key, nextValue),\n        attr,\n        attr,\n      );\n    })\n  );\n  copySourceLocation(attributes, node.openingElement, node.openingElement);\n\n  const children = t.jsxFragment(\n    t.jsxOpeningFragment(),\n    t.jsxClosingFragment(),\n    node.children\n  );\n  copySourceLocation(children, node, node);\n\n  const callExpression = t.callExpression(\n    createComponentCallee(node.openingElement.name),\n    [attributes, children],\n  );\n  return copySourceLocation(\n    callExpression,\n    node.openingElement,\n    node.closingElement ?? node.openingElement,\n  );\n}\n\nfunction createComponentCallee(nameNode) {\n  if (t.isJSXIdentifier(nameNode)) {\n    return t.identifier(nameNode.name);\n  }\n\n  if (t.isJSXMemberExpression(nameNode)) {\n    return t.memberExpression(\n      createComponentCallee(nameNode.object),\n      t.identifier(nameNode.property.name)\n    );\n  }\n\n  if (t.isJSXNamespacedName(nameNode)) {\n    return t.memberExpression(\n      t.identifier(nameNode.namespace.name),\n      t.identifier(nameNode.name.name)\n    );\n  }\n\n  return t.identifier(stringifyJsxName(nameNode));\n}\n\nfunction shouldLowerAuthoredComponentAttributeAsProperty(attr, rawName) {\n  if (\n    rawName.startsWith(\".\") ||\n    rawName.startsWith(\"?\") ||\n    rawName.startsWith(\"@\") ||\n    rawName.startsWith(\"data-\") ||\n    rawName.startsWith(\"aria-\") ||\n    ATTRIBUTE_PASSTHROUGH_NAMES.has(rawName) ||\n    !/^[$_a-zA-Z][$_a-zA-Z0-9]*$/.test(rawName)\n  ) {\n    return false;\n  }\n\n  return !attr.value || attr.value.type === \"JSXExpressionContainer\";\n}\n\nconst transforms = {\n  JSXElement({ node, strings, keys }, opts) {\n    const { name, isComponent, isAuthoredComponentTag } = getTag(node.openingElement);\n\n    if (isComponent) {\n      addKey(strings, keys, createComponent(node, opts));\n      return;\n    }\n\n    addString(strings, keys, `<${name}`, node.openingElement, node.openingElement.name);\n\n    node.openingElement.attributes.forEach((attr) => {\n      if (attr.type === \"JSXSpreadAttribute\") {\n        throw new Error(\"JSXSpreadAttribute is not supported\");\n      }\n\n      const rawName = decodeVirtualAttributeName(attr.name.name) ?? attr.name.name;\n      const prefix = rawName[0];\n\n      if (isAuthoredComponentTag && shouldLowerAuthoredComponentAttributeAsProperty(attr, rawName)) {\n        addString(strings, keys, ` .${rawName}=`, attr);\n\n        if (attr.value) {\n          addKey(strings, keys, lowerEmbeddedJsx(attr.value.expression, opts));\n        } else {\n          addKey(strings, keys, t.booleanLiteral(true));\n        }\n\n        return;\n      }\n\n      if (prefix === \".\" || prefix === \"@\" || prefix === \"?\") {\n        const litName = `${prefix}${rawName.slice(1)}`;\n        addString(strings, keys, ` ${litName}=`, attr);\n\n        if (attr.value) {\n          if (attr.value.type === \"JSXExpressionContainer\") {\n            addKey(strings, keys, lowerEmbeddedJsx(attr.value.expression, opts));\n          } else if (attr.value.type === \"StringLiteral\") {\n            addKey(strings, keys, t.stringLiteral(attr.value.value));\n          } else {\n            addKey(strings, keys, attr.value);\n          }\n        } else {\n          addKey(strings, keys, t.booleanLiteral(true));\n        }\n\n        return;\n      }\n\n      addString(strings, keys, ` ${rawName}`, attr.name);\n\n      if (attr.value) {\n        addString(strings, keys, '=\"', attr.name, attr.value);\n        if (attr.value.type === \"JSXExpressionContainer\") {\n          addKey(strings, keys, lowerEmbeddedJsx(attr.value.expression, opts));\n        } else {\n          addString(strings, keys, attr.value.value, attr.value);\n        }\n        addString(strings, keys, '\"', attr.value);\n      }\n    });\n\n    addString(strings, keys, \">\", node.openingElement);\n\n    if (node.openingElement.selfClosing) {\n      if (isVoidHtmlTagName(name)) {\n        return;\n      }\n\n      addString(strings, keys, `</${name}>`, node.openingElement);\n      return;\n    }\n\n    node.children.forEach((child) => transforms[child.type]({ node: child, strings, keys }, opts));\n\n    if (!node.closingElement) return;\n    addString(strings, keys, `</${stringifyJsxName(node.closingElement.name)}>`, node.closingElement);\n  },\n  JSXSpreadChild() {\n    throw new Error(\"JSXSpreadChild is not supported\");\n  },\n  JSXText({ node, strings, keys }) {\n    addString(strings, keys, node.value, node);\n  },\n  JSXExpressionContainer({ node, strings, keys }, opts) {\n    if (node.expression.type === \"JSXEmptyExpression\") return;\n    addKey(strings, keys, materializeChildExpression(node.expression, opts));\n  },\n  JSXFragment({ node, strings, keys }, opts) {\n    node.children.forEach((child) =>\n      transforms[child.type]({ node: child, strings, keys }, opts)\n    );\n  },\n};\n\nexport function buildTemplate(node, opts) {\n  const strings = [];\n  const keys = [];\n  transforms[node.type]({ node, strings, keys }, opts);\n\n  while (strings.length <= keys.length) {\n    strings.push(t.templateElement({ raw: \"\", cooked: \"\" }, false));\n  }\n\n  return copySourceLocation(\n    t.templateLiteral(strings, keys),\n    node,\n    node,\n  );\n}\n\nexport function createTaggedTemplate(node, opts, tag = \"html\") {\n  const literal = buildTemplate(node, opts);\n  if (!tag) {\n    return literal;\n  }\n\n  return copySourceLocation(\n    t.taggedTemplateExpression(t.identifier(tag), literal),\n    node,\n    node,\n  );\n}\n","import jsxSyntaxPlugin from \"@babel/plugin-syntax-jsx\";\nimport { SourceMapConsumer, SourceMapGenerator } from \"source-map-js\";\nimport {\n  createTaggedTemplate,\n  buildTemplate,\n  collectLitAttributeSourcemapMetadata,\n  setTemplateTypes,\n} from \"./template.js\";\n\nlet t;\n\nfunction replaceNode(path, state) {\n  if (path.parentPath?.isJSXElement() || path.parentPath?.isJSXFragment()) {\n    return;\n  }\n\n  const hasTagOption = Object.prototype.hasOwnProperty.call(state.opts, \"tag\");\n  const tag = hasTagOption ? state.opts.tag : \"html\";\n  const sourceFileName =\n    state.file?.opts?.sourceFileName ??\n    state.file?.opts?.filename ??\n    state.file?.metadata?.sourceFileName ??\n    null;\n\n  state.__litsxTemplateAttributeMappings.push(\n    ...collectLitAttributeSourcemapMetadata(path.node, [], {\n      sourceFileName,\n    })\n  );\n\n  if (tag) {\n    path.replaceWith(createTaggedTemplate(path.node, state.opts, tag));\n    if (typeof tag === \"string\" && tag.length > 0) {\n      state.__litsxNeedsTaggedImport = true;\n      if (!state.__litsxTaggedImportName) {\n        state.__litsxTaggedImportName = tag;\n      }\n    }\n    return;\n  }\n\n  path.replaceWith(buildTemplate(path.node, state.opts));\n}\n\nfunction indexToPosition(text, index) {\n  let line = 1;\n  let column = 0;\n\n  for (let cursor = 0; cursor < index; cursor += 1) {\n    if (text[cursor] === \"\\n\") {\n      line += 1;\n      column = 0;\n      continue;\n    }\n\n    column += 1;\n  }\n\n  return { line, column };\n}\n\nexport function patchLitAttributeSourcemap(code, map, mappings = []) {\n  if (!map || !Array.isArray(mappings) || mappings.length === 0) {\n    return map ?? null;\n  }\n\n  const consumer = new SourceMapConsumer(map);\n  const generator = new SourceMapGenerator({\n    file: map.file ?? null,\n    sourceRoot: map.sourceRoot ?? \"\",\n  });\n  const searchCursor = new Map();\n\n  consumer.eachMapping((mapping) => {\n    if (mapping.source == null) {\n      return;\n    }\n\n    generator.addMapping({\n      source: mapping.source,\n      original: {\n        line: mapping.originalLine,\n        column: mapping.originalColumn,\n      },\n      generated: {\n        line: mapping.generatedLine,\n        column: mapping.generatedColumn,\n      },\n      name: mapping.name ?? undefined,\n    });\n  });\n\n  for (const mapping of mappings) {\n    if (!mapping?.generatedNeedle || !mapping.source) {\n      continue;\n    }\n\n    const fromIndex = searchCursor.get(mapping.generatedNeedle) ?? 0;\n    const foundAt = code.indexOf(mapping.generatedNeedle, fromIndex);\n    if (foundAt === -1) {\n      continue;\n    }\n\n    searchCursor.set(mapping.generatedNeedle, foundAt + mapping.generatedNeedle.length);\n\n    generator.addMapping({\n      source: mapping.source,\n      original: {\n        line: mapping.line,\n        column: mapping.column,\n      },\n      generated: indexToPosition(code, foundAt + (mapping.generatedOffset ?? 0)),\n    });\n  }\n\n  if (Array.isArray(map.sources)) {\n    for (let index = 0; index < map.sources.length; index += 1) {\n      const source = map.sources[index];\n      if (typeof map.sourcesContent?.[index] === \"string\") {\n        generator.setSourceContent(source, map.sourcesContent[index]);\n      }\n    }\n  }\n\n  consumer.destroy?.();\n  return JSON.parse(generator.toString());\n}\n\nexport default function transformJsxHtmlTemplatePlugin(api) {\n  api.assertVersion?.(7);\n  t = api.types;\n  setTemplateTypes(t);\n\n  return {\n    inherits: jsxSyntaxPlugin.default || jsxSyntaxPlugin,\n    visitor: {\n      Program: {\n        enter(_, state) {\n          state.__litsxNeedsTaggedImport = false;\n          state.__litsxTaggedImportName = null;\n          state.__litsxTemplateAttributeMappings = [];\n          state.opts = state.opts || {};\n        },\n        exit(programPath, state) {\n          const importName = state.__litsxTaggedImportName;\n          if (state.__litsxNeedsTaggedImport && importName) {\n            ensureTaggedImport(programPath, importName);\n          }\n\n          if (state.__litsxTemplateAttributeMappings.length > 0) {\n            state.file.metadata.litsxTemplateAttributeMappings = [\n              ...(state.file.metadata.litsxTemplateAttributeMappings || []),\n              ...state.__litsxTemplateAttributeMappings,\n            ];\n          }\n        },\n      },\n      JSXElement: {\n        exit: replaceNode,\n      },\n      JSXFragment: {\n        exit: replaceNode,\n      },\n    },\n  };\n}\n\nfunction ensureTaggedImport(programPath, importName) {\n  const bodyPaths = programPath.get(\"body\");\n  const litImports = bodyPaths.filter(\n    (path) => path.isImportDeclaration() && path.node.source.value === \"lit\"\n  );\n\n  const importSpecifier = t.importSpecifier(\n    t.identifier(importName),\n    t.identifier(importName)\n  );\n\n  for (const importPath of litImports) {\n    const { specifiers } = importPath.node;\n\n    const hasTaggedImport = specifiers.some(\n      (specifier) =>\n        t.isImportSpecifier(specifier) &&\n        t.isIdentifier(specifier.imported, { name: importName })\n    );\n\n    if (hasTaggedImport) {\n      return;\n    }\n\n    const hasNamespaceImport = specifiers.some((specifier) =>\n      t.isImportNamespaceSpecifier(specifier)\n    );\n\n    if (hasNamespaceImport) {\n      continue;\n    }\n\n    specifiers.push(importSpecifier);\n    return;\n  }\n\n  const taggedImport = t.importDeclaration(\n    [importSpecifier],\n    t.stringLiteral(\"lit\")\n  );\n\n  if (litImports.length > 0) {\n    litImports[0].insertBefore(taggedImport);\n  } else {\n    programPath.unshiftContainer(\"body\", taggedImport);\n  }\n}\n"],"names":["t","decodeVirtualAttributeName","SourceMapConsumer","SourceMapGenerator"],"mappings":"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"}