17 lines
506 B
JavaScript
17 lines
506 B
JavaScript
|
export default (domElement, attributes, timeout = 1500) =>
|
||
|
new Promise((resolve, reject) => {
|
||
|
let observer;
|
||
|
const timeoutId = setTimeout(() => {
|
||
|
observer.disconnect();
|
||
|
reject(new Error(`Could not see an attribute update within ${timeout} ms`));
|
||
|
}, timeout);
|
||
|
|
||
|
observer = new MutationObserver(() => {
|
||
|
clearTimeout(timeoutId);
|
||
|
observer.disconnect();
|
||
|
resolve();
|
||
|
});
|
||
|
|
||
|
observer.observe(domElement, { attributes: true, attributeFilter: attributes });
|
||
|
});
|