UNPKG

reframer

Version:

A declarative wrapper to iframe-resizer. Just add reframer class to any iframe. Cool!

1,982 lines • 85.8 kB
(function () {
function $parcel$export(e, n, v, s) {
  Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
}
var $parcel$global =
typeof globalThis !== 'undefined'
  ? globalThis
  : typeof self !== 'undefined'
  ? self
  : typeof window !== 'undefined'
  ? window
  : typeof global !== 'undefined'
  ? global
  : {};
var $parcel$modules = {};
var $parcel$inits = {};

var parcelRequire = $parcel$global["parcelRequire94c2"];
if (parcelRequire == null) {
  parcelRequire = function(id) {
    if (id in $parcel$modules) {
      return $parcel$modules[id].exports;
    }
    if (id in $parcel$inits) {
      var init = $parcel$inits[id];
      delete $parcel$inits[id];
      var module = {id: id, exports: {}};
      $parcel$modules[id] = module;
      init.call(module.exports, module, module.exports);
      return module.exports;
    }
    var err = new Error("Cannot find module '" + id + "'");
    err.code = 'MODULE_NOT_FOUND';
    throw err;
  };

  parcelRequire.register = function register(id, init) {
    $parcel$inits[id] = init;
  };

  $parcel$global["parcelRequire94c2"] = parcelRequire;
}
parcelRequire.register("8FXbP", function(module, exports) {

$parcel$export(module.exports, "iframeResize", function () { return $651010ee02d6657e$export$e284ab1b3bcdabe6; }, function (v) { return $651010ee02d6657e$export$e284ab1b3bcdabe6 = v; });
$parcel$export(module.exports, "iframeResizer", function () { return $651010ee02d6657e$export$b6962bfb5a91d43; }, function (v) { return $651010ee02d6657e$export$b6962bfb5a91d43 = v; });
$parcel$export(module.exports, "iframeResizerContentWindow", function () { return $651010ee02d6657e$export$1aafc108bc1f168c; }, function (v) { return $651010ee02d6657e$export$1aafc108bc1f168c = v; });
var $651010ee02d6657e$export$e284ab1b3bcdabe6;
var $651010ee02d6657e$export$b6962bfb5a91d43// Backwards compatability
;
var $651010ee02d6657e$export$1aafc108bc1f168c;

var $5swb3 = parcelRequire("5swb3");
$651010ee02d6657e$export$e284ab1b3bcdabe6 = $5swb3;
$651010ee02d6657e$export$b6962bfb5a91d43 = $5swb3;

$651010ee02d6657e$export$1aafc108bc1f168c = (parcelRequire("KQMxT"));

});
parcelRequire.register("5swb3", function(module, exports) {

(function(undefined) {
    if (typeof window === 'undefined') return; // don't run for server side render
    var count = 0, logEnabled = false, hiddenCheckEnabled = false, msgHeader = 'message', msgHeaderLen = msgHeader.length, msgId = '[iFrameSizer]', msgIdLen = msgId.length, pagePosition = null, requestAnimationFrame = window.requestAnimationFrame, resetRequiredMethods = {
        max: 1,
        scroll: 1,
        bodyScroll: 1,
        documentElementScroll: 1
    }, settings = {}, timer = null, defaults = {
        autoResize: true,
        bodyBackground: null,
        bodyMargin: null,
        bodyMarginV1: 8,
        bodyPadding: null,
        checkOrigin: true,
        inPageLinks: false,
        enablePublicMethods: true,
        heightCalculationMethod: 'bodyOffset',
        id: 'iFrameResizer',
        interval: 32,
        log: false,
        maxHeight: Infinity,
        maxWidth: Infinity,
        minHeight: 0,
        minWidth: 0,
        mouseEvents: true,
        resizeFrom: 'parent',
        scrolling: false,
        sizeHeight: true,
        sizeWidth: false,
        warningTimeout: 5000,
        tolerance: 0,
        widthCalculationMethod: 'scroll',
        onClose: function onClose() {
            return true;
        },
        onClosed: function onClosed() {},
        onInit: function onInit() {},
        onMessage: function onMessage() {
            warn('onMessage function not defined');
        },
        onMouseEnter: function onMouseEnter() {},
        onMouseLeave: function onMouseLeave() {},
        onResized: function onResized() {},
        onScroll: function onScroll() {
            return true;
        }
    };
    function getMutationObserver() {
        return window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
    }
    function addEventListener(el, evt, func) {
        el.addEventListener(evt, func, false);
    }
    function removeEventListener(el, evt, func) {
        el.removeEventListener(evt, func, false);
    }
    function setupRequestAnimationFrame() {
        var vendors = [
            'moz',
            'webkit',
            'o',
            'ms'
        ];
        var x;
        // Remove vendor prefixing if prefixed and break early if not
        for(x = 0; x < vendors.length && !requestAnimationFrame; x += 1)requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
        if (!requestAnimationFrame) log('setup', 'RequestAnimationFrame not supported');
        else // Firefox extension content-scripts have a globalThis object that is not the same as window.
        // Binding `requestAnimationFrame` to window allows the function to work and prevents errors
        // being thrown when run in that context, and should be a no-op in every other context.
        requestAnimationFrame = requestAnimationFrame.bind(window);
    }
    function getMyID(iframeId) {
        var retStr = 'Host page: ' + iframeId;
        if (window.top !== window.self) retStr = window.parentIFrame && window.parentIFrame.getId ? window.parentIFrame.getId() + ': ' + iframeId : 'Nested host page: ' + iframeId;
        return retStr;
    }
    function formatLogHeader(iframeId) {
        return msgId + '[' + getMyID(iframeId) + ']';
    }
    function isLogEnabled(iframeId) {
        return settings[iframeId] ? settings[iframeId].log : logEnabled;
    }
    function log(iframeId, msg) {
        output('log', iframeId, msg, isLogEnabled(iframeId));
    }
    function info(iframeId, msg) {
        output('info', iframeId, msg, isLogEnabled(iframeId));
    }
    function warn(iframeId, msg) {
        output('warn', iframeId, msg, true);
    }
    function output(type, iframeId, msg, enabled) {
        if (true === enabled && 'object' === typeof window.console) // eslint-disable-next-line no-console
        console[type](formatLogHeader(iframeId), msg);
    }
    function iFrameListener(event1) {
        function resizeIFrame() {
            function resize() {
                setSize(messageData);
                setPagePosition(iframeId1);
                on('onResized', messageData);
            }
            ensureInRange('Height');
            ensureInRange('Width');
            syncResize(resize, messageData, 'init');
        }
        function processMsg() {
            var data = msg.substr(msgIdLen).split(':');
            var height = data[1] ? parseInt(data[1], 10) : 0;
            var iframe = settings[data[0]] && settings[data[0]].iframe;
            var compStyle = getComputedStyle(iframe);
            return {
                iframe: iframe,
                id: data[0],
                height: height + getPaddingEnds(compStyle) + getBorderEnds(compStyle),
                width: data[2],
                type: data[3]
            };
        }
        function getPaddingEnds(compStyle) {
            if (compStyle.boxSizing !== 'border-box') return 0;
            var top = compStyle.paddingTop ? parseInt(compStyle.paddingTop, 10) : 0;
            var bot = compStyle.paddingBottom ? parseInt(compStyle.paddingBottom, 10) : 0;
            return top + bot;
        }
        function getBorderEnds(compStyle) {
            if (compStyle.boxSizing !== 'border-box') return 0;
            var top = compStyle.borderTopWidth ? parseInt(compStyle.borderTopWidth, 10) : 0;
            var bot = compStyle.borderBottomWidth ? parseInt(compStyle.borderBottomWidth, 10) : 0;
            return top + bot;
        }
        function ensureInRange(Dimension) {
            var max = Number(settings[iframeId1]['max' + Dimension]), min = Number(settings[iframeId1]['min' + Dimension]), dimension = Dimension.toLowerCase(), size = Number(messageData[dimension]);
            log(iframeId1, 'Checking ' + dimension + ' is in range ' + min + '-' + max);
            if (size < min) {
                size = min;
                log(iframeId1, 'Set ' + dimension + ' to min value');
            }
            if (size > max) {
                size = max;
                log(iframeId1, 'Set ' + dimension + ' to max value');
            }
            messageData[dimension] = '' + size;
        }
        function isMessageFromIFrame() {
            function checkAllowedOrigin() {
                function checkList() {
                    var i = 0, retCode = false;
                    log(iframeId1, 'Checking connection is from allowed list of origins: ' + checkOrigin);
                    for(; i < checkOrigin.length; i++)if (checkOrigin[i] === origin) {
                        retCode = true;
                        break;
                    }
                    return retCode;
                }
                function checkSingle() {
                    var remoteHost = settings[iframeId1] && settings[iframeId1].remoteHost;
                    log(iframeId1, 'Checking connection is from: ' + remoteHost);
                    return origin === remoteHost;
                }
                return checkOrigin.constructor === Array ? checkList() : checkSingle();
            }
            var origin = event1.origin, checkOrigin = settings[iframeId1] && settings[iframeId1].checkOrigin;
            if (checkOrigin && '' + origin !== 'null' && !checkAllowedOrigin()) throw new Error('Unexpected message received from: ' + origin + ' for ' + messageData.iframe.id + '. Message was: ' + event1.data + '. This error can be disabled by setting the checkOrigin: false option or by providing of array of trusted domains.');
            return true;
        }
        function isMessageForUs() {
            return msgId === ('' + msg).substr(0, msgIdLen) && msg.substr(msgIdLen).split(':')[0] in settings // ''+Protects against non-string msg
            ;
        }
        function isMessageFromMetaParent() {
            // Test if this message is from a parent above us. This is an ugly test, however, updating
            // the message format would break backwards compatibity.
            var retCode = messageData.type in {
                true: 1,
                false: 1,
                undefined: 1
            };
            if (retCode) log(iframeId1, 'Ignoring init message from meta parent page');
            return retCode;
        }
        function getMsgBody(offset) {
            return msg.substr(msg.indexOf(':') + msgHeaderLen + offset);
        }
        function forwardMsgFromIFrame(msgBody) {
            log(iframeId1, 'onMessage passed: {iframe: ' + messageData.iframe.id + ', message: ' + msgBody + '}');
            on('onMessage', {
                iframe: messageData.iframe,
                message: JSON.parse(msgBody)
            });
            log(iframeId1, '--');
        }
        function getPageInfo() {
            var bodyPosition = document.body.getBoundingClientRect(), iFramePosition = messageData.iframe.getBoundingClientRect();
            return JSON.stringify({
                iframeHeight: iFramePosition.height,
                iframeWidth: iFramePosition.width,
                clientHeight: Math.max(document.documentElement.clientHeight, window.innerHeight || 0),
                clientWidth: Math.max(document.documentElement.clientWidth, window.innerWidth || 0),
                offsetTop: parseInt(iFramePosition.top - bodyPosition.top, 10),
                offsetLeft: parseInt(iFramePosition.left - bodyPosition.left, 10),
                scrollTop: window.pageYOffset,
                scrollLeft: window.pageXOffset,
                documentHeight: document.documentElement.clientHeight,
                documentWidth: document.documentElement.clientWidth,
                windowHeight: window.innerHeight,
                windowWidth: window.innerWidth
            });
        }
        function sendPageInfoToIframe(iframe, iframeId) {
            function debouncedTrigger() {
                trigger('Send Page Info', 'pageInfo:' + getPageInfo(), iframe, iframeId);
            }
            debounceFrameEvents(debouncedTrigger, 32, iframeId);
        }
        function startPageInfoMonitor() {
            function setListener(type, func) {
                function sendPageInfo() {
                    if (settings[id]) sendPageInfoToIframe(settings[id].iframe, id);
                    else stop();
                }
                [
                    'scroll',
                    'resize'
                ].forEach(function(evt) {
                    log(id, type + evt + ' listener for sendPageInfo');
                    func(window, evt, sendPageInfo);
                });
            }
            function stop() {
                setListener('Remove ', removeEventListener);
            }
            function start() {
                setListener('Add ', addEventListener);
            }
            var id = iframeId1 // Create locally scoped copy of iFrame ID
            ;
            start();
            if (settings[id]) settings[id].stopPageInfo = stop;
        }
        function stopPageInfoMonitor() {
            if (settings[iframeId1] && settings[iframeId1].stopPageInfo) {
                settings[iframeId1].stopPageInfo();
                delete settings[iframeId1].stopPageInfo;
            }
        }
        function checkIFrameExists() {
            var retBool = true;
            if (null === messageData.iframe) {
                warn(iframeId1, 'IFrame (' + messageData.id + ') not found');
                retBool = false;
            }
            return retBool;
        }
        function getElementPosition(target) {
            var iFramePosition = target.getBoundingClientRect();
            getPagePosition(iframeId1);
            return {
                x: Math.floor(Number(iFramePosition.left) + Number(pagePosition.x)),
                y: Math.floor(Number(iFramePosition.top) + Number(pagePosition.y))
            };
        }
        function scrollRequestFromChild(addOffset) {
            /* istanbul ignore next */ // Not testable in Karma
            function reposition() {
                pagePosition = newPosition;
                scrollTo();
                log(iframeId1, '--');
            }
            function calcOffset() {
                return {
                    x: Number(messageData.width) + offset.x,
                    y: Number(messageData.height) + offset.y
                };
            }
            function scrollParent() {
                if (window.parentIFrame) window.parentIFrame['scrollTo' + (addOffset ? 'Offset' : '')](newPosition.x, newPosition.y);
                else warn(iframeId1, 'Unable to scroll to requested position, window.parentIFrame not found');
            }
            var offset = addOffset ? getElementPosition(messageData.iframe) : {
                x: 0,
                y: 0
            }, newPosition = calcOffset();
            log(iframeId1, 'Reposition requested from iFrame (offset x:' + offset.x + ' y:' + offset.y + ')');
            if (window.top !== window.self) scrollParent();
            else reposition();
        }
        function scrollTo() {
            if (false !== on('onScroll', pagePosition)) setPagePosition(iframeId1);
            else unsetPagePosition();
        }
        function findTarget(location) {
            function jumpToTarget() {
                var jumpPosition = getElementPosition(target);
                log(iframeId1, 'Moving to in page link (#' + hash + ') at x: ' + jumpPosition.x + ' y: ' + jumpPosition.y);
                pagePosition = {
                    x: jumpPosition.x,
                    y: jumpPosition.y
                };
                scrollTo();
                log(iframeId1, '--');
            }
            function jumpToParent() {
                if (window.parentIFrame) window.parentIFrame.moveToAnchor(hash);
                else log(iframeId1, 'In page link #' + hash + ' not found and window.parentIFrame not found');
            }
            var hash = location.split('#')[1] || '', hashData = decodeURIComponent(hash), target = document.getElementById(hashData) || document.getElementsByName(hashData)[0];
            if (target) jumpToTarget();
            else if (window.top !== window.self) jumpToParent();
            else log(iframeId1, 'In page link #' + hash + ' not found');
        }
        function onMouse(event) {
            var mousePos = {};
            if (Number(messageData.width) === 0 && Number(messageData.height) === 0) {
                var data = getMsgBody(9).split(':');
                mousePos = {
                    x: data[1],
                    y: data[0]
                };
            } else mousePos = {
                x: messageData.width,
                y: messageData.height
            };
            on(event, {
                iframe: messageData.iframe,
                screenX: Number(mousePos.x),
                screenY: Number(mousePos.y),
                type: messageData.type
            });
        }
        function on(funcName, val) {
            return chkEvent(iframeId1, funcName, val);
        }
        function actionMsg() {
            if (settings[iframeId1] && settings[iframeId1].firstRun) firstRun();
            switch(messageData.type){
                case 'close':
                    closeIFrame(messageData.iframe);
                    break;
                case 'message':
                    forwardMsgFromIFrame(getMsgBody(6));
                    break;
                case 'mouseenter':
                    onMouse('onMouseEnter');
                    break;
                case 'mouseleave':
                    onMouse('onMouseLeave');
                    break;
                case 'autoResize':
                    settings[iframeId1].autoResize = JSON.parse(getMsgBody(9));
                    break;
                case 'scrollTo':
                    scrollRequestFromChild(false);
                    break;
                case 'scrollToOffset':
                    scrollRequestFromChild(true);
                    break;
                case 'pageInfo':
                    sendPageInfoToIframe(settings[iframeId1] && settings[iframeId1].iframe, iframeId1);
                    startPageInfoMonitor();
                    break;
                case 'pageInfoStop':
                    stopPageInfoMonitor();
                    break;
                case 'inPageLink':
                    findTarget(getMsgBody(9));
                    break;
                case 'reset':
                    resetIFrame(messageData);
                    break;
                case 'init':
                    resizeIFrame();
                    on('onInit', messageData.iframe);
                    break;
                default:
                    if (Number(messageData.width) === 0 && Number(messageData.height) === 0) warn('Unsupported message received (' + messageData.type + '), this is likely due to the iframe containing a later ' + 'version of iframe-resizer than the parent page');
                    else resizeIFrame();
            }
        }
        function hasSettings(iframeId) {
            var retBool = true;
            if (!settings[iframeId]) {
                retBool = false;
                warn(messageData.type + ' No settings for ' + iframeId + '. Message was: ' + msg);
            }
            return retBool;
        }
        function iFrameReadyMsgReceived() {
            // eslint-disable-next-line no-restricted-syntax, guard-for-in
            for(var iframeId in settings)trigger('iFrame requested init', createOutgoingMsg(iframeId), settings[iframeId].iframe, iframeId);
        }
        function firstRun() {
            if (settings[iframeId1]) settings[iframeId1].firstRun = false;
        }
        var msg = event1.data, messageData = {}, iframeId1 = null;
        if ('[iFrameResizerChild]Ready' === msg) iFrameReadyMsgReceived();
        else if (isMessageForUs()) {
            messageData = processMsg();
            iframeId1 = messageData.id;
            if (settings[iframeId1]) settings[iframeId1].loaded = true;
            if (!isMessageFromMetaParent() && hasSettings(iframeId1)) {
                log(iframeId1, 'Received: ' + msg);
                if (checkIFrameExists() && isMessageFromIFrame()) actionMsg();
            }
        } else info(iframeId1, 'Ignored: ' + msg);
    }
    function chkEvent(iframeId, funcName, val) {
        var func = null, retVal = null;
        if (settings[iframeId]) {
            func = settings[iframeId][funcName];
            if ('function' === typeof func) retVal = func(val);
            else throw new TypeError(funcName + ' on iFrame[' + iframeId + '] is not a function');
        }
        return retVal;
    }
    function removeIframeListeners(iframe) {
        var iframeId = iframe.id;
        delete settings[iframeId];
    }
    function closeIFrame(iframe) {
        var iframeId = iframe.id;
        if (chkEvent(iframeId, 'onClose', iframeId) === false) {
            log(iframeId, 'Close iframe cancelled by onClose event');
            return;
        }
        log(iframeId, 'Removing iFrame: ' + iframeId);
        try {
            // Catch race condition error with React
            if (iframe.parentNode) iframe.parentNode.removeChild(iframe);
        } catch (error) {
            warn(error);
        }
        chkEvent(iframeId, 'onClosed', iframeId);
        log(iframeId, '--');
        removeIframeListeners(iframe);
    }
    function getPagePosition(iframeId) {
        if (null === pagePosition) {
            pagePosition = {
                x: window.pageXOffset !== undefined ? window.pageXOffset : document.documentElement.scrollLeft,
                y: window.pageYOffset !== undefined ? window.pageYOffset : document.documentElement.scrollTop
            };
            log(iframeId, 'Get page position: ' + pagePosition.x + ',' + pagePosition.y);
        }
    }
    function setPagePosition(iframeId) {
        if (null !== pagePosition) {
            window.scrollTo(pagePosition.x, pagePosition.y);
            log(iframeId, 'Set page position: ' + pagePosition.x + ',' + pagePosition.y);
            unsetPagePosition();
        }
    }
    function unsetPagePosition() {
        pagePosition = null;
    }
    function resetIFrame(messageData) {
        function reset() {
            setSize(messageData);
            trigger('reset', 'reset', messageData.iframe, messageData.id);
        }
        log(messageData.id, 'Size reset requested by ' + ('init' === messageData.type ? 'host page' : 'iFrame'));
        getPagePosition(messageData.id);
        syncResize(reset, messageData, 'reset');
    }
    function setSize(messageData) {
        function setDimension(dimension) {
            if (!messageData.id) {
                log('undefined', 'messageData id not set');
                return;
            }
            messageData.iframe.style[dimension] = messageData[dimension] + 'px';
            log(messageData.id, 'IFrame (' + iframeId + ') ' + dimension + ' set to ' + messageData[dimension] + 'px');
        }
        function chkZero(dimension) {
            // FireFox sets dimension of hidden iFrames to zero.
            // So if we detect that set up an event to check for
            // when iFrame becomes visible.
            /* istanbul ignore next */ // Not testable in PhantomJS
            if (!hiddenCheckEnabled && '0' === messageData[dimension]) {
                hiddenCheckEnabled = true;
                log(iframeId, 'Hidden iFrame detected, creating visibility listener');
                fixHiddenIFrames();
            }
        }
        function processDimension(dimension) {
            setDimension(dimension);
            chkZero(dimension);
        }
        var iframeId = messageData.iframe.id;
        if (settings[iframeId]) {
            if (settings[iframeId].sizeHeight) processDimension('height');
            if (settings[iframeId].sizeWidth) processDimension('width');
        }
    }
    function syncResize(func, messageData, doNotSync) {
        /* istanbul ignore if */ // Not testable in PhantomJS
        if (doNotSync !== messageData.type && requestAnimationFrame && // including check for jasmine because had trouble getting spy to work in unit test using requestAnimationFrame
        !window.jasmine) {
            log(messageData.id, 'Requesting animation frame');
            requestAnimationFrame(func);
        } else func();
    }
    function trigger(calleeMsg, msg, iframe, id, noResponseWarning) {
        function postMessageToIFrame() {
            var target = settings[id] && settings[id].targetOrigin;
            log(id, '[' + calleeMsg + '] Sending msg to iframe[' + id + '] (' + msg + ') targetOrigin: ' + target);
            iframe.contentWindow.postMessage(msgId + msg, target);
        }
        function iFrameNotFound() {
            warn(id, '[' + calleeMsg + '] IFrame(' + id + ') not found');
        }
        function chkAndSend() {
            if (iframe && 'contentWindow' in iframe && null !== iframe.contentWindow) // Null test for PhantomJS
            postMessageToIFrame();
            else iFrameNotFound();
        }
        function warnOnNoResponse() {
            function warning() {
                if (settings[id] && !settings[id].loaded && !errorShown) {
                    errorShown = true;
                    warn(id, 'IFrame has not responded within ' + settings[id].warningTimeout / 1000 + ' seconds. Check iFrameResizer.contentWindow.js has been loaded in iFrame. This message can be ignored if everything is working, or you can set the warningTimeout option to a higher value or zero to suppress this warning.');
                }
            }
            if (!!noResponseWarning && settings[id] && !!settings[id].warningTimeout) settings[id].msgTimeout = setTimeout(warning, settings[id].warningTimeout);
        }
        var errorShown = false;
        id = id || iframe.id;
        if (settings[id]) {
            chkAndSend();
            warnOnNoResponse();
        }
    }
    function createOutgoingMsg(iframeId) {
        return iframeId + ':' + settings[iframeId].bodyMarginV1 + ':' + settings[iframeId].sizeWidth + ':' + settings[iframeId].log + ':' + settings[iframeId].interval + ':' + settings[iframeId].enablePublicMethods + ':' + settings[iframeId].autoResize + ':' + settings[iframeId].bodyMargin + ':' + settings[iframeId].heightCalculationMethod + ':' + settings[iframeId].bodyBackground + ':' + settings[iframeId].bodyPadding + ':' + settings[iframeId].tolerance + ':' + settings[iframeId].inPageLinks + ':' + settings[iframeId].resizeFrom + ':' + settings[iframeId].widthCalculationMethod + ':' + settings[iframeId].mouseEvents;
    }
    function isNumber(value) {
        return typeof value === 'number';
    }
    function setupIFrame(iframe, options1) {
        function setLimits() {
            function addStyle(style) {
                var styleValue = settings[iframeId2][style];
                if (Infinity !== styleValue && 0 !== styleValue) {
                    iframe.style[style] = isNumber(styleValue) ? styleValue + 'px' : styleValue;
                    log(iframeId2, 'Set ' + style + ' = ' + iframe.style[style]);
                }
            }
            function chkMinMax(dimension) {
                if (settings[iframeId2]['min' + dimension] > settings[iframeId2]['max' + dimension]) throw new Error('Value for min' + dimension + ' can not be greater than max' + dimension);
            }
            chkMinMax('Height');
            chkMinMax('Width');
            addStyle('maxHeight');
            addStyle('minHeight');
            addStyle('maxWidth');
            addStyle('minWidth');
        }
        function newId() {
            var id = options1 && options1.id || defaults.id + count++;
            if (null !== document.getElementById(id)) id += count++;
            return id;
        }
        function ensureHasId(iframeId) {
            if ('' === iframeId) {
                // eslint-disable-next-line no-multi-assign
                iframe.id = iframeId = newId();
                logEnabled = (options1 || {}).log;
                log(iframeId, 'Added missing iframe ID: ' + iframeId + ' (' + iframe.src + ')');
            }
            return iframeId;
        }
        function setScrolling() {
            log(iframeId2, 'IFrame scrolling ' + (settings[iframeId2] && settings[iframeId2].scrolling ? 'enabled' : 'disabled') + ' for ' + iframeId2);
            iframe.style.overflow = false === (settings[iframeId2] && settings[iframeId2].scrolling) ? 'hidden' : 'auto';
            switch(settings[iframeId2] && settings[iframeId2].scrolling){
                case 'omit':
                    break;
                case true:
                    iframe.scrolling = 'yes';
                    break;
                case false:
                    iframe.scrolling = 'no';
                    break;
                default:
                    iframe.scrolling = settings[iframeId2] ? settings[iframeId2].scrolling : 'no';
            }
        }
        // The V1 iFrame script expects an int, where as in V2 expects a CSS
        // string value such as '1px 3em', so if we have an int for V2, set V1=V2
        // and then convert V2 to a string PX value.
        function setupBodyMarginValues() {
            if ('number' === typeof (settings[iframeId2] && settings[iframeId2].bodyMargin) || '0' === (settings[iframeId2] && settings[iframeId2].bodyMargin)) {
                settings[iframeId2].bodyMarginV1 = settings[iframeId2].bodyMargin;
                settings[iframeId2].bodyMargin = '' + settings[iframeId2].bodyMargin + 'px';
            }
        }
        function checkReset() {
            // Reduce scope of firstRun to function, because IE8's JS execution
            // context stack is borked and this value gets externally
            // changed midway through running this function!!!
            var firstRun = settings[iframeId2] && settings[iframeId2].firstRun, resetRequertMethod = settings[iframeId2] && settings[iframeId2].heightCalculationMethod in resetRequiredMethods;
            if (!firstRun && resetRequertMethod) resetIFrame({
                iframe: iframe,
                height: 0,
                width: 0,
                type: 'init'
            });
        }
        function setupIFrameObject() {
            if (settings[iframeId2]) settings[iframeId2].iframe.iFrameResizer = {
                close: closeIFrame.bind(null, settings[iframeId2].iframe),
                removeListeners: removeIframeListeners.bind(null, settings[iframeId2].iframe),
                resize: trigger.bind(null, 'Window resize', 'resize', settings[iframeId2].iframe),
                moveToAnchor: function moveToAnchor(anchor) {
                    trigger('Move to anchor', 'moveToAnchor:' + anchor, settings[iframeId2].iframe, iframeId2);
                },
                sendMessage: function sendMessage(message) {
                    message = JSON.stringify(message);
                    trigger('Send Message', 'message:' + message, settings[iframeId2].iframe, iframeId2);
                }
            };
        }
        // We have to call trigger twice, as we can not be sure if all
        // iframes have completed loading when this code runs. The
        // event listener also catches the page changing in the iFrame.
        function init(msg) {
            function iFrameLoaded() {
                trigger('iFrame.onload', msg, iframe, undefined, true);
                checkReset();
            }
            function createDestroyObserver(MutationObserver) {
                if (!iframe.parentNode) return;
                var destroyObserver = new MutationObserver(function(mutations) {
                    mutations.forEach(function(mutation) {
                        var removedNodes = Array.prototype.slice.call(mutation.removedNodes) // Transform NodeList into an Array
                        ;
                        removedNodes.forEach(function(removedNode) {
                            if (removedNode === iframe) closeIFrame(iframe);
                        });
                    });
                });
                destroyObserver.observe(iframe.parentNode, {
                    childList: true
                });
            }
            var MutationObserver1 = getMutationObserver();
            if (MutationObserver1) createDestroyObserver(MutationObserver1);
            addEventListener(iframe, 'load', iFrameLoaded);
            trigger('init', msg, iframe, undefined, true);
        }
        function checkOptions(options) {
            if ('object' !== typeof options) throw new TypeError('Options is not an object');
        }
        function copyOptions(options) {
            // eslint-disable-next-line no-restricted-syntax
            for(var option in defaults)if (Object.prototype.hasOwnProperty.call(defaults, option)) settings[iframeId2][option] = Object.prototype.hasOwnProperty.call(options, option) ? options[option] : defaults[option];
        }
        function getTargetOrigin(remoteHost) {
            return '' === remoteHost || null !== remoteHost.match(/^(about:blank|javascript:|file:\/\/)/) ? '*' : remoteHost;
        }
        function depricate(key) {
            var splitName = key.split('Callback');
            if (splitName.length === 2) {
                var name = 'on' + splitName[0].charAt(0).toUpperCase() + splitName[0].slice(1);
                this[name] = this[key];
                delete this[key];
                warn(iframeId2, "Deprecated: '" + key + "' has been renamed '" + name + "'. The old method will be removed in the next major version.");
            }
        }
        function processOptions(options) {
            options = options || {};
            settings[iframeId2] = {
                firstRun: true,
                iframe: iframe,
                remoteHost: iframe.src && iframe.src.split('/').slice(0, 3).join('/')
            };
            checkOptions(options);
            Object.keys(options).forEach(depricate, options);
            copyOptions(options);
            if (settings[iframeId2]) settings[iframeId2].targetOrigin = true === settings[iframeId2].checkOrigin ? getTargetOrigin(settings[iframeId2].remoteHost) : '*';
        }
        function beenHere() {
            return iframeId2 in settings && 'iFrameResizer' in iframe;
        }
        var iframeId2 = ensureHasId(iframe.id);
        if (!beenHere()) {
            processOptions(options1);
            setScrolling();
            setLimits();
            setupBodyMarginValues();
            init(createOutgoingMsg(iframeId2));
            setupIFrameObject();
        } else warn(iframeId2, 'Ignored iFrame, already setup.');
    }
    function debouce(fn, time) {
        if (null === timer) timer = setTimeout(function() {
            timer = null;
            fn();
        }, time);
    }
    var frameTimer = {};
    function debounceFrameEvents(fn, time, frameId) {
        if (!frameTimer[frameId]) frameTimer[frameId] = setTimeout(function() {
            frameTimer[frameId] = null;
            fn();
        }, time);
    }
    // Not testable in PhantomJS
    /* istanbul ignore next */ function fixHiddenIFrames() {
        function checkIFrames() {
            function checkIFrame(settingId) {
                function chkDimension(dimension) {
                    return '0px' === (settings[settingId] && settings[settingId].iframe.style[dimension]);
                }
                function isVisible(el) {
                    return null !== el.offsetParent;
                }
                if (settings[settingId] && isVisible(settings[settingId].iframe) && (chkDimension('height') || chkDimension('width'))) trigger('Visibility change', 'resize', settings[settingId].iframe, settingId);
            }
            Object.keys(settings).forEach(function(key) {
                checkIFrame(key);
            });
        }
        function mutationObserved(mutations) {
            log('window', 'Mutation observed: ' + mutations[0].target + ' ' + mutations[0].type);
            debouce(checkIFrames, 16);
        }
        function createMutationObserver() {
            var target = document.querySelector('body'), config = {
                attributes: true,
                attributeOldValue: false,
                characterData: true,
                characterDataOldValue: false,
                childList: true,
                subtree: true
            }, observer = new MutationObserver(mutationObserved);
            observer.observe(target, config);
        }
        var MutationObserver = getMutationObserver();
        if (MutationObserver) createMutationObserver();
    }
    function resizeIFrames(event) {
        function resize() {
            sendTriggerMsg('Window ' + event, 'resize');
        }
        log('window', 'Trigger event: ' + event);
        debouce(resize, 16);
    }
    // Not testable in PhantomJS
    /* istanbul ignore next */ function tabVisible() {
        function resize() {
            sendTriggerMsg('Tab Visable', 'resize');
        }
        if ('hidden' !== document.visibilityState) {
            log('document', 'Trigger event: Visiblity change');
            debouce(resize, 16);
        }
    }
    function sendTriggerMsg(eventName, event) {
        function isIFrameResizeEnabled(iframeId) {
            return settings[iframeId] && 'parent' === settings[iframeId].resizeFrom && settings[iframeId].autoResize && !settings[iframeId].firstRun;
        }
        Object.keys(settings).forEach(function(iframeId) {
            if (isIFrameResizeEnabled(iframeId)) trigger(eventName, event, settings[iframeId].iframe, iframeId);
        });
    }
    function setupEventListeners() {
        addEventListener(window, 'message', iFrameListener);
        addEventListener(window, 'resize', function() {
            resizeIFrames('resize');
        });
        addEventListener(document, 'visibilitychange', tabVisible);
        addEventListener(document, '-webkit-visibilitychange', tabVisible);
    }
    function factory() {
        function init(options, element) {
            function chkType() {
                if (!element.tagName) throw new TypeError('Object is not a valid DOM element');
                else if ('IFRAME' !== element.tagName.toUpperCase()) throw new TypeError('Expected <IFRAME> tag, found <' + element.tagName + '>');
            }
            if (element) {
                chkType();
                setupIFrame(element, options);
                iFrames.push(element);
            }
        }
        function warnDeprecatedOptions(options) {
            if (options && options.enablePublicMethods) warn('enablePublicMethods option has been removed, public methods are now always available in the iFrame');
        }
        var iFrames;
        setupRequestAnimationFrame();
        setupEventListeners();
        return function iFrameResizeF(options, target) {
            iFrames = [] // Only return iFrames past in on this call
            ;
            warnDeprecatedOptions(options);
            switch(typeof target === "undefined" ? "undefined" : $73eafee58a309765$export$2e2bcd8739ae039(target)){
                case 'undefined':
                case 'string':
                    Array.prototype.forEach.call(document.querySelectorAll(target || 'iframe'), init.bind(undefined, options));
                    break;
                case 'object':
                    init(options, target);
                    break;
                default:
                    throw new TypeError('Unexpected data type (' + (typeof target === "undefined" ? "undefined" : $73eafee58a309765$export$2e2bcd8739ae039(target)) + ')');
            }
            return iFrames;
        };
    }
    function createJQueryPublicMethod($) {
        if (!$.fn) info('', 'Unable to bind to jQuery, it is not fully loaded.');
        else if (!$.fn.iFrameResize) $.fn.iFrameResize = function $iFrameResizeF(options) {
            function init(index, element) {
                setupIFrame(element, options);
            }
            return this.filter('iframe').each(init).end();
        };
    }
    if (window.jQuery) createJQueryPublicMethod(window.jQuery);
    if (typeof define === 'function' && define.amd) define([], factory);
    else if (typeof module.exports === 'object') // Node for browserfy
    module.exports = factory();
    window.iFrameResize = window.iFrameResize || factory();
})();

});
function $feada87b51f3f2af$export$2e2bcd8739ae039(obj, key, value) {
    if (key in obj) Object.defineProperty(obj, key, {
        value: value,
        enumerable: true,
        configurable: true,
        writable: true
    });
    else obj[key] = value;
    return obj;
}


function $24348b77894bb2d6$export$2e2bcd8739ae039(target) {
    for(var i = 1; i < arguments.length; i++){
        var source = arguments[i] != null ? arguments[i] : {};
        var ownKeys = Object.keys(source);
        if (typeof Object.getOwnPropertySymbols === 'function') ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
            return Object.getOwnPropertyDescriptor(source, sym).enumerable;
        }));
        ownKeys.forEach(function(key) {
            $feada87b51f3f2af$export$2e2bcd8739ae039(target, key, source[key]);
        });
    }
    return target;
}

function $73eafee58a309765$export$2e2bcd8739ae039(obj) {
    return obj && obj.constructor === Symbol ? "symbol" : typeof obj;
}



parcelRequire.register("KQMxT", function(module, exports) {
(function(undefined) {
    if (typeof window === 'undefined') return; // don't run for server side render
    var autoResize = true, base = 10, bodyBackground = '', bodyMargin = 0, bodyMarginStr = '', bodyObserver = null, bodyPadding = '', calculateWidth = false, doubleEventList = {
        resize: 1,
        click: 1
    }, eventCancelTimer = 128, firstRun = true, height1 = 1, heightCalcModeDefault = 'bodyOffset', heightCalcMode = heightCalcModeDefault, initLock = true, initMsg = '', inPageLinks = {}, interval = 32, intervalTimer = null, logging = false, mouseEvents = false, msgID = '[iFrameSizer]', msgIdLen = msgID.length, myID = '', resetRequiredMethods = {
        max: 1,
        min: 1,
        bodyScroll: 1,
        documentElementScroll: 1
    }, resizeFrom = 'child', sendPermit = true, target1 = window.parent, targetOriginDefault = '*', tolerance = 0, triggerLocked = false, triggerLockedTimer = null, throttledTimer = 16, width1 = 1, widthCalcModeDefault = 'scroll', widthCalcMode = widthCalcModeDefault, win = window, onMessage = function onMessage() {
        warn('onMessage function not defined');
    }, onReady = function onReady() {}, onPageInfo = function onPageInfo() {}, customCalcMethods = {
        height: function height() {
            warn('Custom height calculation function not defined');
            return document.documentElement.offsetHeight;
        },
        width: function width() {
            warn('Custom width calculation function not defined');
            return document.body.scrollWidth;
        }
    }, eventHandlersByName = {}, passiveSupported = false;
    function noop() {}
    try {
        var options = Object.create({}, {
            passive: {
                get: function get() {
                    passiveSupported = true;
                }
            }
        });
        window.addEventListener('test', noop, options);
        window.removeEventListener('test', noop, options);
    } catch (error) {
    /* */ }
    function addEventListener(el, evt, func, options) {
        el.addEventListener(evt, func, passiveSupported ? options || {} : false);
    }
    function removeEventListener(el, evt, func) {
        el.removeEventListener(evt, func, false);
    }
    function capitalizeFirstLetter(string) {
        return string.charAt(0).toUpperCase() + string.slice(1);
    }
    // Based on underscore.js
    function throttle(func) {
        var context, args, result, timeout = null, previous = 0, later = function later() {
            previous = Date.now();
            timeout = null;
            result = func.apply(context, args);
            if (!timeout) // eslint-disable-next-line no-multi-assign
            context = args = null;
        };
        return function() {
            var now = Date.now();
            if (!previous) previous = now;
            var remaining = throttledTimer - (now - previous);
            context = this;
            args = arguments;
            if (remaining <= 0 || remaining > throttledTimer) {
                if (timeout) {
                    clearTimeout(timeout);
                    timeout = null;
                }
                previous = now;
                result = func.apply(context, args);
                if (!timeout) // eslint-disable-next-line no-multi-assign
                context = args = null;
            } else if (!timeout) timeout = setTimeout(later, remaining);
            return result;
        };
    }
    function formatLogMsg(msg) {
        return msgID + '[' + myID + '] ' + msg;
    }
    function log(msg) {
        if (logging && 'object' === typeof window.console) // eslint-disable-next-line no-console
        console.log(formatLogMsg(msg));
    }
    function warn(msg) {
        if ('object' === typeof window.console) // eslint-disable-next-line no-console
        console.warn(formatLogMsg(msg));
    }
    function init() {
        readDataFromParent();
        log('Initialising iFrame (' + window.location.href + ')');
        readDataFromPage();
        setMargin();
        setBodyStyle('background', bodyBackground);
        setBodyStyle('padding', bodyPadding);
        injectClearFixIntoBodyElement();
        checkHeightMode();
        checkWidthMode();
        stopInfiniteResizingOfIFrame();
        setupPublicMethods();
        setupMouseEvents();
        startEventListeners();
        inPageLinks = setupInPageLinks();
        sendSize('init', 'Init message from host page');
        onReady();
    }
    function readDataFromParent() {
        function strBool(str) {
            return 'true' === str;
        }
        var data = initMsg.substr(msgIdLen).split(':');
        myID = data[0];
        bodyMargin = undefined !== data[1] ? Number(data[1]) : bodyMargin // For V1 compatibility
        ;
        calculateWidth = undefined !== data[2] ? strBool(data[2]) : calculateWidth;
        logging = undefined !== data[3] ? strBool(data[3]) : logging;
        interval = undefined !== data[4] ? Number(data[4]) : interval;
        autoResize = undefined !== data[6] ? strBool(data[6]) : autoResize;
        bodyMarginStr = data[7];
        heightCalcMode = undefined !== data[8] ? data[8] : heightCalcMode;
        bodyBackground = data[9];
        bodyPadding = data[10];
        tolerance = undefined !== data[11] ? Number(data[11]) : tolerance;
        inPageLinks.enable = undefined !== data[12] ? strBool(data[12]) : false;
        resizeFrom = undefined !== data[13] ? data[13] : resizeFrom;
        widthCalcMode = undefined !== data[14] ? data[14] : widthCalcMode;
        mouseEvents = undefined !== data[15] ? Boolean(data[15]) : mouseEvents;
    }
    function depricate(key) {
        var splitName = key.split('Callback');
        if (splitName.length === 2) {
            var name = 'on' + splitName[0].charAt(0).toUpperCase() + splitName[0].slice(1);
            this[name] = this[key];
            delete this[key];
            warn("Deprecated: '" + key + "' has been renamed '" + name + "'. The old method will be removed in the next major version.");
        }
    }
    function readDataFromPage() {
        function readData() {
            var data = window.iFrameResizer;
            log('Reading data from page: ' + JSON.stringify(data));
            Object.keys(data).forEach(depricate, data);
            onMessage = 'onMessage' in data ? data.onMessage : onMessage;
            onReady = 'onReady' in data ? data.onReady : onReady;
            targetOriginDefault = 'targetOrigin' in data ? data.targetOrigin : targetOriginDefault;
            heightCalcMode = 'heightCalculationMethod' in data ? data.heightCalculationMethod : heightCalcMode;
            widthCalcMode = 'widthCalculationMethod' in data ? data.widthCalculationMethod : widthCalcMode;
        }
        function setupCustomCalcMethods(calcMode, calcFunc) {
            if ('function' === typeof calcMode) {
                log('Setup custom ' + calcFunc + 'CalcMethod');
                customCalcMethods[calcFunc] = calcMode;
                calcMode = 'custom';
            }
            return calcMode;
        }
        if ('iFrameResizer' in window && Object === window.iFrameResizer.constructor) {
            readData();
            heightCalcMode = setupCustomCalcMethods(heightCalcMode, 'height');
            widthCalcMode = setupCustomCalcMethods(widthCalcMode, 'width');
        }
        log('TargetOrigin for parent set to: ' + targetOriginDefault);
    }
    function chkCSS(attr, value) {
        if (-1 !== value.indexOf('-')) {
            warn('Negative CSS value ignored for ' + attr);
            value = '';
        }
        return value;
    }
    function setBodyStyle(attr, value) {
        if (undefined !== value && '' !== value && 'null' !== value) {
            document.body.style[attr] = value;
            log('Body ' + attr + ' set to "' + value + '"');
        }
    }
    function setMargin() {
        // If called via V1 script, convert bodyMargin from int to str
        if (undefined === bodyMarginStr) bodyMarginStr = bodyMargin + 'px';
        setBodyStyle('margin', chkCSS('margin', bodyMarginStr));
    }
    function stopInfiniteResizingOfIFrame() {
        document.documentElement.style.height = '';
        document.body.style.height = '';
        log('HTML & body height set to "auto"');
    }
    function manageTriggerEvent(options) {
        var listener = {
            add: function add(eventName) {
                function handleEvent() {
                    sendSize(options.eventName, options.eventType);
                }
                eventHandlersByName[eventName] = handleEvent;
                addEventListener(window, eventName, handleEvent, {
                    passive: true
                });
            },
            remove: function remove(eventName) {
                var handleEvent = eventHandlersByName[eventName];
                delete eventHandlersByName[eventName];
                removeEventListener(window, eventName, handleEvent);
            }
        };
        if (options.eventNames && Array.prototype.map) {
            options.eventName = options.eventNames[0];
            options.eventNames.map(listener[options.method]);
        } else listener[options.method](options.eventName);
        log(capitalizeFirstLetter(options.method) + ' event listener: ' + options.eventType);
    }
    function manageEventListeners(method) {
        manageTriggerEvent({
            method: method,
            eventType: 'Animation Start',
            eventNames: [
                'animationstart',
                'webkitAnimationStart'
            ]
        });
        manageTriggerEvent({
            method: method,
            eventType: 'Animation Iteration',
            eventNames: [
                'animationiteration',
                'webkitAnimationIteration'
            ]
        });
        manageTriggerEvent({
            method: method,
            eventType: 'Animation End',
            eventNames: [
                'animationend',
                'webkitAnimationEnd'
            ]
        });
        manageTriggerEvent({
            method: method,
            eventType: 'Input',
            eventName: 'input'
        });
        manageTriggerEvent({
            method: method,
            eventType: 'Mouse Up',
            eventName: 'mouseup'
        });
        manageTriggerEvent({
            method: method,
            eventType: 'Mouse Down',
            eventName: 'mousedown'
        });
        manageTriggerEvent({
            method: method,
            eventType: 'Orientation Change',
            eventName: 'orientationchange'
        });
        manageTriggerEvent({
            method: method,
            eventType: 'Print',
            eventName: [
                'afterprint',
                'beforeprint'
            ]
        });
        manageTriggerEvent({
            method: method,
            eventType: 'Ready State Change',
            eventName: 'readystatechange'
        });
        manageTriggerEvent({
            method: method,
            eventType: 'Touch Start',
            eventName: 'touchstart'
        });
        manageTriggerEvent({
            method: method,
            eventType: 'Touch End',
            eventName: 'touchend'
        });
        manageTriggerEvent({
            method: method,
            eventType: 'Touch Cancel',
            eventName: 'touchcancel'
        });
        manageTriggerEvent({
            method: method,
            eventType: 'Transition Start',
            eventNames: [
                'transitionstart',
                'webkitTransitionStart',
                'MSTransitionStart',
                'oTransitionStart',
                'otransitionstart'
            ]
        });
        manageTriggerEvent({
            method: method,
            eventType: 'Transition Iteration',
            eventNames: [
                'transitioniteration',
                'webkitTransitionIteration',
                'MSTransitionIteration',
                'oTransitionIteration',
                'otransitioniteration'
            ]
        });
        manageTriggerEvent({
            method: method,
            eventType: 'Transition End',
            eventNames: [
                'transitionend',
                'webkitTransitionEnd',
                'MSTransitionEnd',
                'oTransitionEnd',
                'otransitionend'
            ]
        });
        if ('child' === resizeFrom) manageTriggerEvent({
            method: method,
            eventType: 'IFrame Resized',
            eventName: 'resize'
        });
    }
    function checkCalcMode(calcMode, calcModeDefault, modes, type) {
        if (calcModeDefault !== calcMode) {
            if (!(calcMode in modes)) {
                warn(calcMode + ' is not a valid option for ' + type + 'CalculationMethod.');
                calcMode = calcModeDefault;
            }
            log(type + ' calculation method set to "' + calcMode + '"');
        }
        return calcMode;
    }
    function checkHeightMode() {
        heightCalcMode = checkCalcMode(heightCalcMode, heightCalcModeDefault, getHeight, 'height');
    }
    function checkWidthMode() {
        widthCalcMode = checkCalcMode(widthCalcMode, widthCalcModeDefault, getWidth, 'width');
    }
    function startEventListeners() {
        if (true === autoResize) {
            manageEventListeners('add');
            setupMutationObserver();
        } else log('Auto Resize disabled');
    }
    //   function stopMsgsToParent() {
    //     log('Disable outgoing messages')
    //     sendPermit = false
    //   }
    //   function removeMsgListener() {
    //     log('Remove event listener: Message')
    //     removeEventListener(window, 'message', receiver)
    //   }
    function disconnectMutationObserver() {
        if (null !== bodyObserver) /* istanbul ignore next */ // Not testable in PhantonJS
        bodyObserver.disconnect();
    }
    function stopEventListeners() {
        manageEventListeners('remove');
        disconnectMutationObserver();
        clearInterval(intervalTimer);
    }
    //   function teardown() {
    //     stopMsgsToParent()
    //     removeMsgListener()
    //     if (true === autoResize) stopEventListeners()
    //   }
    function injectClearFixIntoBodyElement() {
        var clearFix = document.createElement('div');
        clearFix.style.clear = 'both';
        // Guard against the following having been globally redefined in CSS.
        clearFix.style.display = 'block';
        clearFix.style.height = '0';
        document.body.appendChild(clearFix);
    }
    function setupInPageLinks() {
        function getPagePosition() {
            return {
                x: window.pageXOffset !== undefined ? window.pageXOffset : document.documentElement.scrollLeft,
                y: window.pageYOffset !== undefined ? window.pageYOffset : document.documentElement.scrollTop
            };
        }
        function getElementPosition(el) {
            var elPosition = el.getBoundingClientRect(), pagePosition = getPagePosition();
            return {
                x: parseInt(elPosition.left, 10) + parseInt(pagePosition.x, 10),
                y: parseInt(elPosition.top, 10) + parseInt(pagePosition.y, 10)
            };
        }
        function findTarget(location) {
            function jumpToTarget(target) {
                var jumpPosition = getElementPosition(target);
                log('Moving to in page link (#' + hash + ') at x: ' + jumpPosition.x + ' y: ' + jumpPosition.y);
                sendMsg(jumpPosition.y, jumpPosition.x, 'scrollToOffset') // X&Y reversed at sendMsg uses height/width
                ;
            }
            var hash = location.split('#')[1] || location, hashData = decodeURIComponent(hash), target2 = document.getElementById(hashData) || document.getElementsByName(hashData)[0];
            if (undefined !== target2) jumpToTarget(target2);
            else {
                log('In page link (#' + hash + ') not found in iFrame, so sending to parent');
                sendMsg(0, 0, 'inPageLink', '#' + hash);
            }
        }
        function checkLocationHash() {
            var hash = window.location.hash;
            var href = window.location.href;
            if ('' !== hash && '#' !== hash) findTarget(href);
        }
        function bindAnchors() {
            function setupLink(el) {
                function linkClicked(e) {
                    e.preventDefault();
                    /* jshint validthis:true */ findTarget(this.getAttribute('href'));
                }
                if ('#' !== el.getAttribute('href')) addEventListener(el, 'click', linkClicked);
            }
            Array.prototype.forEach.call(document.querySelectorAll('a[href^="#"]'), setupLink);
        }
        function bindLocationHash() {
            addEventListener(window, 'hashchange', checkLocationHash);
        }
        function initCheck() {
            // Check if page loaded with location hash after init resize
            setTimeout(checkLocationHash, eventCancelTimer);
        }
        function enableInPageLinks() {
            /* istanbul ignore else */ // Not testable in phantonJS
            if (Array.prototype.forEach && document.querySelectorAll) {
                log('Setting up location.hash handlers');
                bindAnchors();
                bindLocationHash();
                initCheck();
            } else warn('In page linking not fully supported in this browser! (See README.md for IE8 workaround)');
        }
        if (inPageLinks.enable) enableInPageLinks();
        else log('In page linking not enabled');
        return {
            findTarget: findTarget
        };
    }
    function setupMouseEvents() {
        if (mouseEvents !== true) return;
        function sendMouse(e) {
            sendMsg(0, 0, e.type, e.screenY + ':' + e.screenX);
        }
        function addMouseListener(evt, name) {
            log('Add event listener: ' + name);
            addEventListener(window.document, evt, sendMouse);
        }
        addMouseListener('mouseenter', 'Mouse Enter');
        addMouseListener('mouseleave', 'Mouse Leave');
    }
    function setupPublicMethods() {
        log('Enable public methods');
        win.parentIFrame = {
            autoResize: function autoResizeF(resize) {
                if (true === resize && false === autoResize) {
                    autoResize = true;
                    startEventListeners();
                } else if (false === resize && true === autoResize) {
                    autoResize = false;
                    stopEventListeners();
                }
                sendMsg(0, 0, 'autoResize', JSON.stringify(autoResize));
                return autoResize;
            },
            close: function closeF() {
                sendMsg(0, 0, 'close');
            // teardown()
            },
            getId: function getIdF() {
                return myID;
            },
            getPageInfo: function getPageInfoF(callback) {
                if ('function' === typeof callback) {
                    onPageInfo = callback;
                    sendMsg(0, 0, 'pageInfo');
                } else {
                    onPageInfo = function onPageInfo() {};
                    sendMsg(0, 0, 'pageInfoStop');
                }
            },
            moveToAnchor: function moveToAnchorF(hash) {
                inPageLinks.findTarget(hash);
            },
            reset: function resetF() {
                resetIFrame('parentIFrame.reset');
            },
            scrollTo: function scrollToF(x, y) {
                sendMsg(y, x, 'scrollTo') // X&Y reversed at sendMsg uses height/width
                ;
            },
            scrollToOffset: function scrollToF(x, y) {
                sendMsg(y, x, 'scrollToOffset') // X&Y reversed at sendMsg uses height/width
                ;
            },
            sendMessage: function sendMessageF(msg, targetOrigin) {
                sendMsg(0, 0, 'message', JSON.stringify(msg), targetOrigin);
            },
            setHeightCalculationMethod: function setHeightCalculationMethodF(heightCalculationMethod) {
                heightCalcMode = heightCalculationMethod;
                checkHeightMode();
            },
            setWidthCalculationMethod: function setWidthCalculationMethodF(widthCalculationMethod) {
                widthCalcMode = widthCalculationMethod;
                checkWidthMode();
            },
            setTargetOrigin: function setTargetOriginF(targetOrigin) {
                log('Set targetOrigin: ' + targetOrigin);
                targetOriginDefault = targetOrigin;
            },
            size: function sizeF(customHeight, customWidth) {
                var valString = '' + (customHeight || '') + (customWidth ? ',' + customWidth : '');
                sendSize('size', 'parentIFrame.size(' + valString + ')', customHeight, customWidth);
            }
        };
    }
    function initInterval() {
        if (0 !== interval) {
            log('setInterval: ' + interval + 'ms');
            intervalTimer = setInterval(function() {
                sendSize('interval', 'setInterval: ' + interval);
            }, Math.abs(interval));
        }
    }
    // Not testable in PhantomJS
    /* istanbul ignore next */ function setupBodyMutationObserver() {
        function addImageLoadListners(mutation) {
            function addImageLoadListener(element) {
                if (false === element.complete) {
                    log('Attach listeners to ' + element.src);
                    element.addEventListener('load', imageLoaded, false);
                    element.addEventListener('error', imageError, false);
                    elements.push(element);
                }
            }
            if (mutation.type === 'attributes' && mutation.attributeName === 'src') addImageLoadListener(mutation.target);
            else if (mutation.type === 'childList') Array.prototype.forEach.call(mutation.target.querySelectorAll('img'), addImageLoadListener);
        }
        function removeFromArray(element) {
            elements.splice(elements.indexOf(element), 1);
        }
        function removeImageLoadListener(element) {
            log('Remove listeners from ' + element.src);
            element.removeEventListener('load', imageLoaded, false);
            element.removeEventListener('error', imageError, false);
            removeFromArray(element);
        }
        function imageEventTriggered(event, type, typeDesc) {
            removeImageLoadListener(event.target);
            sendSize(type, typeDesc + ': ' + event.target.src);
        }
        function imageLoaded(event) {
            imageEventTriggered(event, 'imageLoad', 'Image loaded');
        }
        function imageError(event) {
            imageEventTriggered(event, 'imageLoadFailed', 'Image load failed');
        }
        function mutationObserved(mutations) {
            sendSize('mutationObserver', 'mutationObserver: ' + mutations[0].target + ' ' + mutations[0].type);
            // Deal with WebKit / Blink asyncing image loading when tags are injected into the page
            mutations.forEach(addImageLoadListners);
        }
        function createMutationObserver() {
            var target = document.querySelector('body'), config = {
                attributes: true,
                attributeOldValue: false,
                characterData: true,
                characterDataOldValue: false,
                childList: true,
                subtree: true
            };
            observer = new MutationObserver(mutationObserved);
            log('Create body MutationObserver');
            observer.observe(target, config);
            return observer;
        }
        var elements = [], MutationObserver = window.MutationObserver || window.WebKitMutationObserver, observer = createMutationObserver();
        return {
            disconnect: function disconnect() {
                if ('disconnect' in observer) {
                    log('Disconnect body MutationObserver');
                    observer.disconnect();
                    elements.forEach(removeImageLoadListener);
                }
            }
        };
    }
    function setupMutationObserver() {
        var forceIntervalTimer = 0 > interval;
        // Not testable in PhantomJS
        /* istanbul ignore if */ if (window.MutationObserver || window.WebKitMutationObserver) {
            if (forceIntervalTimer) initInterval();
            else bodyObserver = setupBodyMutationObserver();
        } else {
            log('MutationObserver not supported in this browser!');
            initInterval();
        }
    }
    // document.documentElement.offsetHeight is not reliable, so
    // we have to jump through hoops to get a better value.
    function getComputedStyle(prop, el) {
        var retVal = 0;
        el = el || document.body // Not testable in phantonJS
        ;
        retVal = document.defaultView.getComputedStyle(el, null);
        retVal = null !== retVal ? retVal[prop] : 0;
        return parseInt(retVal, base);
    }
    function chkEventThottle(timer) {
        if (timer > throttledTimer / 2) {
            throttledTimer = 2 * timer;
            log('Event throttle increased to ' + throttledTimer + 'ms');
        }
    }
    // Idea from https://github.com/guardian/iframe-messenger
    function getMaxElement(side, elements) {
        var elementsLength = elements.length, elVal = 0, maxVal = 0, Side = capitalizeFirstLetter(side), timer = Date.now();
        for(var i = 0; i < elementsLength; i++){
            elVal = elements[i].getBoundingClientRect()[side] + getComputedStyle('margin' + Side, elements[i]);
            if (elVal > maxVal) maxVal = elVal;
        }
        timer = Date.now() - timer;
        log('Parsed ' + elementsLength + ' HTML elements');
        log('Element position calculated in ' + timer + 'ms');
        chkEventThottle(timer);
        return maxVal;
    }
    function getAllMeasurements(dimensions) {
        return [
            dimensions.bodyOffset(),
            dimensions.bodyScroll(),
            dimensions.documentElementOffset(),
            dimensions.documentElementScroll()
        ];
    }
    function getTaggedElements(side, tag) {
        function noTaggedElementsFound() {
            warn('No tagged elements (' + tag + ') found on page');
            return document.querySelectorAll('body *');
        }
        var elements = document.querySelectorAll('[' + tag + ']');
        if (elements.length === 0) noTaggedElementsFound();
        return getMaxElement(side, elements);
    }
    function getAllElements() {
        return document.querySelectorAll('body *');
    }
    var getHeight = {
        bodyOffset: function getBodyOffsetHeight() {
            return document.body.offsetHeight + getComputedStyle('marginTop') + getComputedStyle('marginBottom');
        },
        offset: function offset() {
            return getHeight.bodyOffset() // Backwards compatability
            ;
        },
        bodyScroll: function getBodyScrollHeight() {
            return document.body.scrollHeight;
        },
        custom: function getCustomWidth() {
            return customCalcMethods.height();
        },
        documentElementOffset: function getDEOffsetHeight() {
            return document.documentElement.offsetHeight;
        },
        documentElementScroll: function getDEScrollHeight() {
            return document.documentElement.scrollHeight;
        },
        max: function getMaxHeight() {
            return Math.max.apply(null, getAllMeasurements(getHeight));
        },
        min: function getMinHeight() {
            return Math.min.apply(null, getAllMeasurements(getHeight));
        },
        grow: function growHeight() {
            return getHeight.max() // Run max without the forced downsizing
            ;
        },
        lowestElement: function getBestHeight() {
            return Math.max(getHeight.bodyOffset() || getHeight.documentElementOffset(), getMaxElement('bottom', getAllElements()));
        },
        taggedElement: function getTaggedElementsHeight() {
            return getTaggedElements('bottom', 'data-iframe-height');
        }
    }, getWidth = {
        bodyScroll: function getBodyScrollWidth() {
            return document.body.scrollWidth;
        },
        bodyOffset: function getBodyOffsetWidth() {
            return document.body.offsetWidth;
        },
        custom: function getCustomWidth() {
            return customCalcMethods.width();
        },
        documentElementScroll: function getDEScrollWidth() {
            return document.documentElement.scrollWidth;
        },
        documentElementOffset: function getDEOffsetWidth() {
            return document.documentElement.offsetWidth;
        },
        scroll: function getMaxWidth() {
            return Math.max(getWidth.bodyScroll(), getWidth.documentElementScroll());
        },
        max: function getMaxWidth() {
            return Math.max.apply(null, getAllMeasurements(getWidth));
        },
        min: function getMinWidth() {
            return Math.min.apply(null, getAllMeasurements(getWidth));
        },
        rightMostElement: function rightMostElement() {
            return getMaxElement('right', getAllElements());
        },
        taggedElement: function getTaggedElementsWidth() {
            return getTaggedElements('right', 'data-iframe-width');
        }
    };
    function sizeIFrame(triggerEvent, triggerEventDesc, customHeight, customWidth) {
        function resizeIFrame() {
            height1 = currentHeight;
            width1 = currentWidth;
            sendMsg(height1, width1, triggerEvent);
        }
        function isSizeChangeDetected() {
            function checkTolarance(a, b) {
                var retVal = Math.abs(a - b) <= tolerance;
                return !retVal;
            }
            currentHeight = undefined !== customHeight ? customHeight : getHeight[heightCalcMode]();
            currentWidth = undefined !== customWidth ? customWidth : getWidth[widthCalcMode]();
            return checkTolarance(height1, currentHeight) || calculateWidth && checkTolarance(width1, currentWidth);
        }
        function isForceResizableEvent() {
            return !(triggerEvent in {
                init: 1,
                interval: 1,
                size: 1
            });
        }
        function isForceResizableCalcMode() {
            return heightCalcMode in resetRequiredMethods || calculateWidth && widthCalcMode in resetRequiredMethods;
        }
        function logIgnored() {
            log('No change in size detected');
        }
        function checkDownSizing() {
            if (isForceResizableEvent() && isForceResizableCalcMode()) resetIFrame(triggerEventDesc);
            else if (!(triggerEvent in {
                interval: 1
            })) logIgnored();
        }
        var currentHeight, currentWidth;
        if (isSizeChangeDetected() || 'init' === triggerEvent) {
            lockTrigger();
            resizeIFrame();
        } else checkDownSizing();
    }
    var sizeIFrameThrottled = throttle(sizeIFrame);
    function sendSize(triggerEvent, triggerEventDesc, customHeight, customWidth) {
        function recordTrigger() {
            if (!(triggerEvent in {
                reset: 1,
                resetPage: 1,
                init: 1
            })) log('Trigger event: ' + triggerEventDesc);
        }
        function isDoubleFiredEvent() {
            return triggerLocked && triggerEvent in doubleEventList;
        }
        if (!isDoubleFiredEvent()) {
            recordTrigger();
            if (triggerEvent === 'init') sizeIFrame(triggerEvent, triggerEventDesc, customHeight, customWidth);
            else sizeIFrameThrottled(triggerEvent, triggerEventDesc, customHeight, customWidth);
        } else log('Trigger event cancelled: ' + triggerEvent);
    }
    function lockTrigger() {
        if (!triggerLocked) {
            triggerLocked = true;
            log('Trigger event lock on');
        }
        clearTimeout(triggerLockedTimer);
        triggerLockedTimer = setTimeout(function() {
            triggerLocked = false;
            log('Trigger event lock off');
            log('--');
        }, eventCancelTimer);
    }
    function triggerReset(triggerEvent) {
        height1 = getHeight[heightCalcMode]();
        width1 = getWidth[widthCalcMode]();
        sendMsg(height1, width1, triggerEvent);
    }
    function resetIFrame(triggerEventDesc) {
        var hcm = heightCalcMode;
        heightCalcMode = heightCalcModeDefault;
        log('Reset trigger event: ' + triggerEventDesc);
        lockTrigger();
        triggerReset('reset');
        heightCalcMode = hcm;
    }
    function sendMsg(height, width, triggerEvent, msg, targetOrigin) {
        function setTargetOrigin() {
            if (undefined === targetOrigin) targetOrigin = targetOriginDefault;
            else log('Message targetOrigin: ' + targetOrigin);
        }
        function sendToParent() {
            var size = height + ':' + width, message = myID + ':' + size + ':' + triggerEvent + (undefined !== msg ? ':' + msg : '');
            log('Sending message to host page (' + message + ')');
            target1.postMessage(msgID + message, targetOrigin);
        }
        if (true === sendPermit) {
            setTargetOrigin();
            sendToParent();
        }
    }
    function receiver(event) {
        var processRequestFromParent = {
            init: function initFromParent() {
                initMsg = event.data;
                target1 = event.source;
                init();
                firstRun = false;
                setTimeout(function() {
                    initLock = false;
                }, eventCancelTimer);
            },
            reset: function resetFromParent() {
                if (!initLock) {
                    log('Page size reset by host page');
                    triggerReset('resetPage');
                } else log('Page reset ignored by init');
            },
            resize: function resizeFromParent() {
                sendSize('resizeParent', 'Parent window requested size check');
            },
            moveToAnchor: function moveToAnchorF() {
                inPageLinks.findTarget(getData());
            },
            inPageLink: function inPageLinkF() {
                this.moveToAnchor();
            },
            pageInfo: function pageInfoFromParent() {
                var msgBody = getData();
                log('PageInfoFromParent called from parent: ' + msgBody);
                onPageInfo(JSON.parse(msgBody));
                log(' --');
            },
            message: function messageFromParent() {
                var msgBody = getData();
                log('onMessage called from parent: ' + msgBody);
                // eslint-disable-next-line sonarjs/no-extra-arguments
                onMessage(JSON.parse(msgBody));
                log(' --');
            }
        };
        function isMessageForUs() {
            return msgID === ('' + event.data).substr(0, msgIdLen) // ''+ Protects against non-string messages
            ;
        }
        function getMessageType() {
            return event.data.split(']')[1].split(':')[0];
        }
        function getData() {
            return event.data.substr(event.data.indexOf(':') + 1);
        }
        function isMiddleTier() {
            return !module.exports && 'iFrameResize' in window || 'jQuery' in window && 'iFrameResize' in window.jQuery.prototype;
        }
        function isInitMsg() {
            // Test if this message is from a child below us. This is an ugly test, however, updating
            // the message format would break backwards compatibity.
            return event.data.split(':')[2] in {
                true: 1,
                false: 1
            };
        }
        function callFromParent() {
            var messageType = getMessageType();
            if (messageType in processRequestFromParent) processRequestFromParent[messageType]();
            else if (!isMiddleTier() && !isInitMsg()) warn('Unexpected message (' + event.data + ')');
        }
        function processMessage() {
            if (false === firstRun) callFromParent();
            else if (isInitMsg()) processRequestFromParent.init();
            else log('Ignored message of type "' + getMessageType() + '". Received before initialization.');
        }
        if (isMessageForUs()) processMessage();
    }
    // Normally the parent kicks things off when it detects the iFrame has loaded.
    // If this script is async-loaded, then tell parent page to retry init.
    function chkLateLoaded() {
        if ('loading' !== document.readyState) window.parent.postMessage('[iFrameResizerChild]Ready', '*');
    }
    addEventListener(window, 'message', receiver);
    addEventListener(window, 'readystatechange', chkLateLoaded);
    chkLateLoaded();
})();

});



var $af0c89ba5830d0c4$exports = {};

$af0c89ba5830d0c4$exports = (parcelRequire("8FXbP"));


//if (typeof window === 'undefined') return;
var $4f3f58ee1b565481$var$win = window, $4f3f58ee1b565481$var$doc = document, $4f3f58ee1b565481$var$$ = function $4f3f58ee1b565481$var$$(q) {
    return $4f3f58ee1b565481$var$doc.querySelector(q);
}, $4f3f58ee1b565481$var$$$ = function $4f3f58ee1b565481$var$$$(q) {
    return $4f3f58ee1b565481$var$doc.querySelectorAll(q);
}, $4f3f58ee1b565481$var$domReady = function(f) {
    return $4f3f58ee1b565481$var$doc.readyState[7] ? f() : setTimeout($4f3f58ee1b565481$var$domReady, 9, f);
}, $4f3f58ee1b565481$var$defaultConfig = {};
$4f3f58ee1b565481$var$doc.head.insertAdjacentHTML('beforeend', '<style>iframe.resizable:not(.resizable-processed){display:none}</style>');
function $4f3f58ee1b565481$var$getTargetIframes(targetIframes) {
    var queueIframes = [];
    // Set default iframe selector if not present
    if (typeof targetIframes == 'undefined' || !targetIframes) targetIframes = 'iframe.resizable';
    // If css selector
    if (typeof targetIframes === 'string') queueIframes = $4f3f58ee1b565481$var$$$(targetIframes);
    else if (targetIframes.dispatchEvent) queueIframes.push(targetIframes);
    else queueIframes = targetIframes;
    return queueIframes;
}
var $4f3f58ee1b565481$var$parentEvents = [];
window.meAsParent = window.meAsParent || {};
meAsParent.on = function(event, callback) {
    var eventId = $4f3f58ee1b565481$var$parentEvents.push({
        event: event,
        callback: callback
    });
    return function() {
        delete $4f3f58ee1b565481$var$parentEvents[eventId - 1];
    };
};
meAsParent.trigger = function(event, data, targetIframes) {
    var queueIframes = $4f3f58ee1b565481$var$getTargetIframes(targetIframes);
    queueIframes.forEach(function(iframe) {
        $4f3f58ee1b565481$var$parentMessageHandler({
            iframe: iframe,
            message: {
                event: event,
                data: data
            }
        });
    });
};
meAsParent.send = function(event, data, targetIframes) {
    var queueIframes = $4f3f58ee1b565481$var$getTargetIframes(targetIframes);
    queueIframes.forEach(function(iframe) {
        var ref;
        iframe === null || iframe === void 0 ? void 0 : (ref = iframe.iFrameResizer) === null || ref === void 0 ? void 0 : ref.sendMessage({
            event: event,
            data: data
        });
    });
};
function $4f3f58ee1b565481$var$parentMessageHandler(param) {
    var iframe = param.iframe, message = param.message;
    var event = message.event, data = message.data;
    $4f3f58ee1b565481$var$parentEvents.forEach(function(e) {
        if (e.event == event) e.callback({
            iframe: iframe,
            data: data
        });
    });
}
var $4f3f58ee1b565481$var$childEvents = [];
window.meAsChild = window.meAsChild || {};
meAsChild.on = function(event, callback) {
    var eventId = $4f3f58ee1b565481$var$childEvents.push({
        event: event,
        callback: callback
    });
    return function() {
        delete $4f3f58ee1b565481$var$childEvents[eventId - 1];
    };
};
meAsChild.trigger = function(event, data) {
    $4f3f58ee1b565481$var$childMessageHandler({
        event: event,
        data: data
    });
};
meAsChild.send = function(event, data) {
    var ctrl = setInterval(function() {
        if (typeof parentIFrame !== 'undefined') {
            clearInterval(ctrl);
            parentIFrame.sendMessage({
                event: event,
                data: data
            });
        }
    }, 10);
};
function $4f3f58ee1b565481$var$childMessageHandler(param) {
    var event = param.event, data = param.data;
    $4f3f58ee1b565481$var$childEvents.forEach(function(e) {
        if (e.event == event) e.callback(data);
    });
}
function $4f3f58ee1b565481$var$processIframe(config) {
    var idSel = '#' + config.id;
    meAsParent.trigger('beforeResize', config, idSel);
    resizer.onMessage = $4f3f58ee1b565481$var$parentMessageHandler;
    resizer.onInit = function(iframe) {
        meAsParent.trigger('initialized', config, idSel);
    };
    $af0c89ba5830d0c4$exports.iframeResize(resizer, idSel);
}
function $4f3f58ee1b565481$var$ECF(embedURL) {
    var config = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
    config.resizer = Object.assign($4f3f58ee1b565481$var$defaultConfig.resizer, config.resizer);
    config = Object.assign($4f3f58ee1b565481$var$defaultConfig, config);
    config.id = 'ecf-' + parseInt(Math.random() * 10000000000000000);
    var ecfNode = config.insertInto ? $4f3f58ee1b565481$var$$(config.insertInto) : $4f3f58ee1b565481$var$doc.currentScript || $4f3f58ee1b565481$var$$$('script').pop();
    var i = $4f3f58ee1b565481$var$doc.createElement('iframe');
    i.id = config.id;
    if (config.lazyloadClass) {
        i.setAttribute('data-src', embedURL);
        i.classList.add(config.lazyloadClass);
    } else i.src = embedURL;
    ecfNode.insertAdjacentElement(config.insertPosition, i);
    $4f3f58ee1b565481$var$processIframe(config);
    return;
}
var $4f3f58ee1b565481$export$2e2bcd8739ae039 = $4f3f58ee1b565481$var$ECF;

$4f3f58ee1b565481$var$domReady(function() {
    var observer = new MutationObserver(function(mutations) {
        mutations.forEach(function(mutation) {
            mutation.addedNodes.forEach(function(node) {
                if (node.nodeName.toLowerCase() == 'iframe' && node.classList.contains('resizable')) {
                    var config = Object.assign($4f3f58ee1b565481$var$defaultConfig, $24348b77894bb2d6$export$2e2bcd8739ae039({}, node.dataset));
                    config.id = node.id || 'resizable-' + parseInt(Math.random() * 10000000000000000);
                    node.id = config.id;
                    $4f3f58ee1b565481$var$processIframe(config);
                }
            });
        });
    });
    observer.observe($4f3f58ee1b565481$var$doc.body, {
        attributes: false,
        childList: true,
        subtree: true
    });
    $4f3f58ee1b565481$var$$$('iframe.resizable').forEach(function(node) {
        var config = Object.assign($4f3f58ee1b565481$var$defaultConfig, $24348b77894bb2d6$export$2e2bcd8739ae039({}, node.dataset));
        config.id = node.id || 'resizable-' + parseInt(Math.random() * 10000000000000000);
        node.id = config.id;
        $4f3f58ee1b565481$var$processIframe(config);
    });
    if ($4f3f58ee1b565481$var$win.top !== $4f3f58ee1b565481$var$win.self) {
        $4f3f58ee1b565481$var$win.iFrameResizer = {
            onMessage: $4f3f58ee1b565481$var$childMessageHandler,
            onReady: function onReady() {
                meAsChild.trigger('ready');
            }
        };
        Promise.resolve((parcelRequire("KQMxT")));
    }
});

})();
//# sourceMappingURL=reframer.min.js.map