rewriteSceneDocument function
Rewrite every root subtree in a scene document and preserve identity when no root changed.
Implementation
CanvasSceneDocument rewriteSceneDocument(
CanvasSceneDocument doc,
Node Function(Node) rewriteRoot,
) {
var changedRoot = false;
final nextRoot = <Node>[];
for (final c in doc.children) {
final nc = rewriteRoot(c);
if (!identical(nc, c)) changedRoot = true;
nextRoot.add(nc);
}
return changedRoot ? doc.copyWith(children: nextRoot) : doc;
}