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 });
 | 
						|
  });
 |