calculateTreeDiff<T extends ITreeNode> function
Implementation
List<TreeDiffUpdate> calculateTreeDiff<T extends ITreeNode>(
T oldTree, T newTree) {
final updates = <TreeDiffUpdate>[];
final queue = ListQueue<Tuple2<INode, INode>>();
queue.add(Tuple2(oldTree, newTree));
while (queue.isNotEmpty) {
final nodesToCompare = queue.removeFirst();
if (nodesToCompare.item1.childrenAsList.isEmpty &&
nodesToCompare.item2.childrenAsList.isEmpty) continue;
final localUpdates = TreeDiff(
oldTree: nodesToCompare.item1 as ITreeNode,
newTree: nodesToCompare.item2 as ITreeNode,
);
updates.addAll(localUpdates.allUpdates);
queue.addAll(localUpdates.nodesUnchanged);
}
return updates;
}