etc/ready.js (16 lines of code) (raw):
/**
* Await document completeness. Will likely be replaced by built-in apis.
* Check out https://github.com/Netflix/x-element/issues/65 for details.
* @param {Document} target
* @returns {Promise<any>}
*/
const ready = target => {
return new Promise(resolve => {
if (target.readyState === 'complete') {
resolve(target);
} else {
const handle = evt => {
if (evt.target.readyState === 'complete') {
target.removeEventListener('readystatechange', handle);
resolve(target);
}
};
target.addEventListener('readystatechange', handle);
}
});
};
export default ready;