function checkForVideos()

in ArticleTemplates/assets/js/modules/youtube.js [34:96]


function checkForVideos() {
    const iframes = document.body.querySelectorAll('iframe.youtube-media');

    const isPreviousElementSDKPlaceholder = element => {
        const previousElementSibling = element.previousElementSibling;

        return previousElementSibling && previousElementSibling.classList.contains('youtube-media__sdk-placeholder');
    };

    /**
        if a youtube iframe doesn't have
        the sdk placeholder (youtubeAtomPositionPlaceholder.html)
        as it's preceeding sibling then it is to be initialised by JS
    **/
    videos = Array.prototype.filter.call(iframes, iframe => !isPreviousElementSDKPlaceholder(iframe));

    /**
        if a youtube iframe does have
        the sdk placeholder (youtubeAtomPositionPlaceholder.html)
        as it's preceeding sibling then we must report it's position to
        the native layer
    **/
    sdkPlaceholders = sdkPlaceholders.concat(Array.prototype.map.call(iframes, iframe => {
         if (isPreviousElementSDKPlaceholder(iframe)) {
            const previousElementSibling = iframe.previousElementSibling;

            iframe.remove();

            return previousElementSibling;
         }
    }).filter(Boolean));

    if (videos.length) {
        if (!scriptReady) {
            loadScript();
        } else {
            initialiseVideos();
        }
    }

    if (sdkPlaceholders.length) {
        buildAndSendSdkReport();

        if (!sdkReportInitialised) {
            window.addEventListener('resize', buildAndSendSdkReport);

            sdkReportInitialised = true;
        }

        if (sdkPoller) {
            clearInterval(sdkPoller);
        }

        sdkPoller = setInterval(() => {
            if (sdkPollCount < sdkMaxPollCount) {
                 buildAndSendSdkReport();
                 sdkPollCount++;
            } else {
                clearInterval(sdkPoller);
            }
        }, 200);
    }
}