/** * Internal dependencies */ import { domReady } from './dom-ready'; type Callback = () => unknown; let isHeadReady = false; const pending: Callback[] = []; export const headReady = ( callback: Callback ): void => isHeadReady ? void callback() : void pending.push( callback ); // ======= // HELPERS // ======= const markHeadAsReady = () => { if ( isHeadReady ) { return; } isHeadReady = true; pending.forEach( ( fn ) => fn() ); }; const checkHead = () => { if ( isHeadReady ) { return; } if ( document.body !== null ) { return markHeadAsReady(); } setTimeout( checkHead, 100 ); }; checkHead(); domReady( markHeadAsReady );