Refactor useMutationObserver
hook to manage subtree modifications
#2822
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Refactor
useMutationObserver
hook to manage subtree modifications.Description
If we currently pass the subtree option to the
useMutationObserver
hook, we're not going to have our mutation callback called. This is because we can have a sameMutationObserver
observing different elements and, when we get the internal mutation callback in our hook, we check to see wether the mutated element is one of the ones we have previously registered.In the case of adding a direct children to the observed element, that's not a problem; however, if we add a grandchildren to the observer element, consumers won't know about it because the mutated element will be an observer element child and we didn't registered those in our hook.
With this change, we introduce some changes for consumers to be allowed to be notified about nested elements mutated within the one registered in the hook.
In this first attempt, a selector is needed by the hook to check whether a mutated element is contained in the observed element.