'use strict'; // Scrollbars / Frame resizes notifications. (function () { let height; const heightLimit = window.outerHeight * 2; handleHeightChange(); // Initial frame's height setup. setupResizeListener(); // Listen to frame's height changes. /// function setupResizeListener() { const resizeObserver = new ResizeObserver(handleHeightChange); resizeObserver.observe(document.body); } function handleHeightChange(entries) { const updatedHeight = getCurrentHeight(); if (height === updatedHeight || updatedHeight > heightLimit) { return; } const RESIZE_CODE = 'resize:'; height = updatedHeight; window.parent.postMessage(RESIZE_CODE + JSON.stringify({height}), '*'); } function getCurrentHeight() { return document.querySelector('body > main').scrollHeight; } })();