UNPKG

@wordpress/dom-ready

Version:
51 lines (48 loc) 1.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = domReady; /** * @typedef {() => void} Callback * * TODO: Remove this typedef and inline `() => void` type. * * This typedef is used so that a descriptive type is provided in our * automatically generated documentation. * * An in-line type `() => void` would be preferable, but the generated * documentation is `null` in that case. * * @see https://github.com/WordPress/gutenberg/issues/18045 */ /** * Specify a function to execute when the DOM is fully loaded. * * @param {Callback} callback A function to execute after the DOM is ready. * * @example * ```js * import domReady from '@wordpress/dom-ready'; * * domReady( function() { * //do something after DOM loads. * } ); * ``` * * @return {void} */ function domReady(callback) { if (typeof document === 'undefined') { return; } if (document.readyState === 'complete' || // DOMContentLoaded + Images/Styles/etc loaded, so we call directly. document.readyState === 'interactive' // DOMContentLoaded fires at this point, so we call directly. ) { return void callback(); } // DOMContentLoaded has not fired yet, delay callback until then. document.addEventListener('DOMContentLoaded', callback); } //# sourceMappingURL=index.js.map