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