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);
  if (parentNode != o.nullExpr) {
    final createElementExpr =
        o.importExpr(RenderNodeHelpers.createRenderElement).callFn([
      o.literal(tagName),
    ]);
    _createMethod.addStmt(elementRef.toWriteStmt(createElementExpr));
    // Use appendRenderChild helper for SSR compatibility
    _createMethod.addStmt(o.importExpr(RenderNodeHelpers.appendRenderChild)
        .callFn([parentNode, elementRef.toReadExpr()]).toStmt());
  } else {
    final createElementExpr =
        o.importExpr(RenderNodeHelpers.createRenderElement).callFn([
      o.literal(tagName),
    ]);
    _createMethod.addStmt(elementRef.toWriteStmt(createElementExpr));
  }
}