resolveNode function
Resolves a RenderNode into a fully resolved Morphic tree.
Returns a ResolveResult — success or failure is explicit in the type.
The owners map in ResolveSuccess pairs each component's root Morphic
to its Component, built here and passed to createDom explicitly so
DOM registration requires no shared mutable state.
Two-phase separation
This function never creates DOM. createDom never resolves components. Keeping these phases separate ensures that each component's registered DOM node is always the exact node inserted into the document.
Implementation
ResolveResult resolveNode(RenderNode node) {
final owners = <Morphic, Component>{};
try {
final tree = _resolve(node, owners);
return ResolveSuccess(tree, owners);
} catch (e, st) {
final failed = node is ComponentRenderNode ? node.component : null;
return ResolveFailure(error: e, stackTrace: st, failedComponent: failed);
}
}