@grafana/faro-web-sdk
Version:
Faro instrumentations, metas, transports for web.
30 lines • 1.02 kB
JavaScript
import { Observable } from '@grafana/faro-core';
import { MESSAGE_TYPE_DOM_MUTATION } from './const';
let domMutationObservable;
let domMutationObserver;
export function monitorDomMutations() {
if (!domMutationObservable) {
domMutationObservable = new Observable();
}
if (!domMutationObserver) {
domMutationObserver = new MutationObserver((_mutationsList, _observer) => {
domMutationObservable.notify({ type: MESSAGE_TYPE_DOM_MUTATION });
});
domMutationObserver.observe(document, {
attributes: true,
childList: true,
subtree: true,
characterData: true,
});
}
return domMutationObservable;
}
// Test-only utility to reset state between tests
export function __resetDomMutationMonitorForTests() {
if (domMutationObserver) {
domMutationObserver.disconnect();
}
domMutationObserver = undefined;
domMutationObservable = undefined;
}
//# sourceMappingURL=domMutationMonitor.js.map