resolveNode function

ResolveResult resolveNode(
  1. RenderNode node
)

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);
  }
}