Added more inline comments
Brian Vaughn committed
Apr 17, 2019 at 13:03 UTC
634d4fece2f800d95104eaa4cedf62b751f2a3d9
1 file changed
+7
src/devtools/store.js
+7
@@ -458,6 +458,8 @@ export default class Store extends EventEmitter {
458
}
459
460
if (element.isCollapsed) {
461
+ // There's nothing to change in this case.
462
+ // We can exit early (without even emiting a "mutated" event).
463
return;
464
}
465
@@ -469,6 +471,8 @@ export default class Store extends EventEmitter {
471
element.parentID
472
): any): Element);
473
while (parentElement != null) {
474
+ // We don't need to break on a collapsed parent in the same way as the expand case below.
475
+ // That's because collapsing a node doesn't "bubble" and affect its parents.
476
parentElement.weight += weightDelta;
477
parentElement = this._idToElement.get(parentElement.parentID);
478
}
@@ -490,6 +494,9 @@ export default class Store extends EventEmitter {
494
while (parentElement != null) {
495
parentElement.weight += weightDelta;
496
if (parentElement.isCollapsed) {
497
+ // It's important to break on a collapsed parent when expanding nodes.
498
+ // That's because expanding a node "bubbles" up and expands all parents as well.
499
+ // Breaking in this case prevents us from over-incrementing the expanded weights.
500
break;
501
}
502
parentElement = this._idToElement.get(parentElement.parentID);