applySnapshotBudget function
Trim snap to at most maxNodes nodes by rank, keeping document order.
Implementation
UiSnapshot applySnapshotBudget(UiSnapshot snap,
{int maxNodes = kSnapshotMaxNodes}) {
if (snap.nodes.length <= maxNodes) return snap;
final indexed = List<int>.generate(snap.nodes.length, (i) => i);
indexed.sort((a, b) {
final ra = snapshotBudgetRank(snap.nodes[a]);
final rb = snapshotBudgetRank(snap.nodes[b]);
if (ra != rb) return ra - rb;
return a - b;
});
final keep = indexed.take(maxNodes).toList()..sort();
return _selectNodes(snap, keep);
}