Move flavours/glitch/utils/ready to flavours/glitch/ready
This commit is contained in:
		
							
								
								
									
										32
									
								
								app/javascript/flavours/glitch/ready.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								app/javascript/flavours/glitch/ready.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
			
		||||
// @ts-check
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @param {(() => void) | (() => Promise<void>)} callback
 | 
			
		||||
 * @returns {Promise<void>}
 | 
			
		||||
 */
 | 
			
		||||
export default function ready(callback) {
 | 
			
		||||
  return new Promise((resolve, reject) => {
 | 
			
		||||
    function loaded() {
 | 
			
		||||
      let result;
 | 
			
		||||
      try {
 | 
			
		||||
        result = callback();
 | 
			
		||||
      } catch (err) {
 | 
			
		||||
        reject(err);
 | 
			
		||||
 | 
			
		||||
        return;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (typeof result?.then === 'function') {
 | 
			
		||||
        result.then(resolve).catch(reject);
 | 
			
		||||
      } else {
 | 
			
		||||
        resolve();
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (['interactive', 'complete'].includes(document.readyState)) {
 | 
			
		||||
      loaded();
 | 
			
		||||
    } else {
 | 
			
		||||
      document.addEventListener('DOMContentLoaded', loaded);
 | 
			
		||||
    }
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user