/** * Copyright © schukai GmbH and all contributing authors, {{copyRightYear}}. All rights reserved. * Node module: @schukai/monster * * This source code is licensed under the GNU Affero General Public License version 3 (AGPLv3). * The full text of the license can be found at: https://www.gnu.org/licenses/agpl-3.0.en.html * * For those who do not wish to adhere to the AGPLv3, a commercial license is available. * Acquiring a commercial license allows you to use this software without complying with the AGPLv3 terms. * For more information about purchasing a commercial license, please contact schukai GmbH. * * SPDX-License-Identifier: AGPL-3.0 */ import { getDocument, getWindow } from "./util.mjs"; export { domReady, windowReady }; /** * This variable is a promise fulfilled as soon as the dom is available. * * The DOMContentLoaded event is fired when the original HTML document is fully loaded and parsed * without waiting for stylesheets, images, and subframes to finish loading. * * document.readyState changes to interactive * window's DOMContentLoaded event gets fired * document.readyState changes to complete * window's load event gets fired load * * @license AGPLv3 * @since 1.31.0 * @summary variable to check if dom is ready * @type {Promise} * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/DOMContentLoaded_event * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/readyState */ const domReady = new Promise((resolve) => { const document = getDocument(); if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", resolve); } else { resolve(); } }); /** * This variable is a promise is fulfilled as soon as the windows is available. * * The load event fires when the entire page is loaded, including all dependent resources such as stylesheets, * assets, and images. Unlike DOMContentLoaded, which fires as soon as the DOM of the page is loaded, * without waiting for the resources to finish loading. * * @license AGPLv3 * @since 1.31.0 * @summary variable to check if window is ready * @type {Promise} * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/load_event * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/readyState */ const windowReady = new Promise((resolve) => { const document = getDocument(); const window = getWindow(); if (document.readyState === "complete") { resolve(); } else { window.addEventListener("load", resolve); } });