createElementNs method
void
createElementNs(
- CompileElement parent,
- NodeReference elementRef,
- int nodeIndex,
- String? ns,
- String tagName,
- 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));
}
}