createElementNs method

void createElementNs(
  1. CompileElement parent,
  2. NodeReference elementRef,
  3. int nodeIndex,
  4. String? ns,
  5. String tagName,
  6. TemplateAst ast,
)

Creates an html node with a namespace and appends to parent element.

Implementation

void createElementNs(CompileElement parent, NodeReference elementRef,
    int nodeIndex, String? ns, String tagName, TemplateAst ast) {
  // Phase 3 (SSR): Use RenderNode factory for SSR compatibility.
  // Namespaced elements (SVG, etc.) are created via renderFactory.
  final parentNode = _getParentRenderNode(parent);
  final createElementExpr =
      o.importExpr(RenderNodeHelpers.createRenderElement).callFn([
    o.literal(tagName),
  ]);
  _createMethod.addStmt(elementRef.toWriteStmt(createElementExpr));
  if (parentNode != o.nullExpr) {
    _createMethod.addStmt(o.importExpr(RenderNodeHelpers.appendRenderChild)
        .callFn([parentNode, elementRef.toReadExpr()]).toStmt());
  }
}