Extend the suppression of warnings to take into account anscestors (#1145)
* Extend the suppression of warnings to take account that a prior removal may not have been against the immediate parent of a subsequent removal, but rather some anscestor * Create proud-experts-jam.md * Apply formatting changes
This commit is contained in:
5
.changeset/proud-experts-jam.md
Normal file
5
.changeset/proud-experts-jam.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
'rrweb': patch
|
||||||
|
---
|
||||||
|
|
||||||
|
For a mutation which removes a node, reduce the number of spurious warnings to take into account that an anscestor (rather than just a parent) may have been just removed
|
||||||
@@ -1371,14 +1371,20 @@ export class Replayer {
|
|||||||
const mirror = this.usingVirtualDom ? this.virtualDom.mirror : this.mirror;
|
const mirror = this.usingVirtualDom ? this.virtualDom.mirror : this.mirror;
|
||||||
type TNode = typeof mirror extends Mirror ? Node : RRNode;
|
type TNode = typeof mirror extends Mirror ? Node : RRNode;
|
||||||
|
|
||||||
|
d.removes = d.removes.filter((mutation) => {
|
||||||
|
// warn of absence from mirror before we start applying each removal
|
||||||
|
// as earlier removals could remove a tree that includes a later removal
|
||||||
|
if (!mirror.getNode(mutation.id)) {
|
||||||
|
this.warnNodeNotFound(d, mutation.id);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
});
|
||||||
d.removes.forEach((mutation) => {
|
d.removes.forEach((mutation) => {
|
||||||
const target = mirror.getNode(mutation.id);
|
const target = mirror.getNode(mutation.id);
|
||||||
if (!target) {
|
if (!target) {
|
||||||
if (d.removes.find((r) => r.id === mutation.parentId)) {
|
// no need to warn here, an ancestor may have already been removed
|
||||||
// no need to warn, parent was already removed
|
return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
return this.warnNodeNotFound(d, mutation.id);
|
|
||||||
}
|
}
|
||||||
let parent: Node | null | ShadowRoot | RRNode = mirror.getNode(
|
let parent: Node | null | ShadowRoot | RRNode = mirror.getNode(
|
||||||
mutation.parentId,
|
mutation.parentId,
|
||||||
|
|||||||
Reference in New Issue
Block a user