function listenForEmailEmbedIFrameResize()

in ArticleTemplates/assets/js/bootstraps/common.js [330:366]


function listenForEmailEmbedIFrameResize() {
    const allowedOrigins = ['https://www.theguardian.com'];

    const allIframes = [].slice.call(
        document.querySelectorAll('.email-sub__iframe')
    );
    window.addEventListener('message', (event) => {
        if (!allowedOrigins.includes(event.origin)) return;

        const iframes = allIframes.filter((i) => {
            try {
                if (i.contentWindow && event.source) return i.contentWindow === event.source;
            } catch (e) {
                return false;
            }
            return false;
        });
        if (iframes.length !== 0) {
            try {
                const message = JSON.parse(event.data);
                switch (message.type) {
                case 'set-height': {
                    const value = parseInt(message.value);
                    if (!Number.isInteger(value)) return;

                    iframes.forEach((iframe) => {
                        iframe.height = `${value}`;
                    });
                    break;
                }
                default:
                }
                // eslint-disable-next-line no-empty
            } catch (e) {}
        }
    });
}