devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
42 lines (41 loc) • 1.31 kB
JavaScript
/**
* DevExtreme (esm/__internal/core/utils/m_ready_callbacks.js)
* Version: 24.2.6
* Build date: Mon Mar 17 2025
*
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
import domAdapter from "../../../core/dom_adapter";
import callOnce from "../../../core/utils/call_once";
import injector from "../../../core/utils/dependency_injector";
import {
hasWindow
} from "../../../core/utils/window";
let callbacks = [];
const subscribeReady = callOnce((() => {
const removeListener = domAdapter.listen(domAdapter.getDocument(), "DOMContentLoaded", (() => {
readyCallbacks.fire();
removeListener()
}))
}));
const readyCallbacks = {
add: callback => {
const windowExists = hasWindow();
if (windowExists && "loading" !== domAdapter.getReadyState()) {
callback()
} else {
callbacks.push(callback);
windowExists && subscribeReady()
}
},
fire: () => {
callbacks.forEach((callback => callback()));
callbacks = []
}
};
const readyCallbacksModule = injector(readyCallbacks);
export {
readyCallbacksModule
};
export default readyCallbacksModule;