when-dom-ready
Version:
$(document).ready() for the 21st century
52 lines (42 loc) • 1.24 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define(factory) :
(global.whenDomReady = factory());
}(this, (function () { 'use strict';
/* eslint no-void: "off" */
// Loaded ready states
var loadedStates = ['interactive', 'complete'];
// Return Promise
var whenDomReady = function whenDomReady(cb, doc) {
return new Promise(function (resolve) {
// Allow doc to be passed in as the lone first param
if (cb && typeof cb !== 'function') {
doc = cb;
cb = null;
}
// Use global document if we don't have one
doc = doc || window.document;
// Handle DOM load
var done = function done() {
return resolve(void (cb && setTimeout(cb)));
};
// Resolve now if DOM has already loaded
// Otherwise wait for DOMContentLoaded
if (loadedStates.indexOf(doc.readyState) !== -1) {
done();
} else {
doc.addEventListener('DOMContentLoaded', done);
}
});
};
// Promise chain helper
whenDomReady.resume = function (doc) {
return function (val) {
return whenDomReady(doc).then(function () {
return val;
});
};
};
return whenDomReady;
})));
//# sourceMappingURL=index.umd.js.map