@blackglory/wait-for
Version:
A module for waiting for things to happen.
21 lines • 822 B
JavaScript
import { fromMutationObserver } from "./utils/from-mutation-observer.js";
import { filter, mergeMap } from 'rxjs/operators';
export function waitForAttached(...nodes) {
return new Promise(resolve => {
if (isAttached(nodes))
return resolve();
const observer = fromMutationObserver(document.documentElement, { childList: true, subtree: true }).pipe(mergeMap(mutations => mutations), filter(isAddedNodesMutation)).subscribe(() => {
if (isAttached(nodes)) {
observer.unsubscribe();
resolve();
}
});
});
}
function isAttached(nodes) {
return nodes.every(x => document.documentElement.contains(x));
}
function isAddedNodesMutation(mutation) {
return !!mutation.addedNodes;
}
//# sourceMappingURL=wait-for-attached.js.map