@@ -435,13 +435,18 @@ function restoreNodeValues(allNodes, nodeStates) {
435435}
436436
437437function flattenNodes(nodes) {
438− var treeReduce = function(prev, cur, i, arr) {
439− var flatKids = cur.kids.reduce(treeReduce, []);
440− flatKids.push(cur);
441− return prev.concat(flatKids);
438+ var nodesById = {};
439+
440+ function addAllToDict(node) {
441+ nodesById[node.id] = node;
442+ node.kids.forEach(addAllToDict);
442443 }
444+ nodes.forEach(addAllToDict);
443445
444− return nodes.reduce(treeReduce, []);
446+ var allNodes = Object.keys(nodesById).sort().map(function(key) {
447+ return nodesById[key];
448+ });
449+ return allNodes;
445450};
446451
447452}());