{"version":3,"file":"iframe.js","mappings":"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","sources":["webpack://engine-sgw/./node_modules/iframe-resizer/index.js","webpack://engine-sgw/./node_modules/iframe-resizer/js/iframeResizer.contentWindow.js","webpack://engine-sgw/./node_modules/iframe-resizer/js/iframeResizer.js","webpack://engine-sgw/./node_modules/iframe-resizer/js/index.js","webpack://engine-sgw/webpack/bootstrap","webpack://engine-sgw/webpack/runtime/define property getters","webpack://engine-sgw/webpack/runtime/hasOwnProperty shorthand","webpack://engine-sgw/webpack/runtime/make namespace object","webpack://engine-sgw/./src/iframe/index.ts"],"sourcesContent":["'use strict'\n\nmodule.exports = require('./js')\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 * Contributor: Jure Mav - jure.mav@gmail.com\n * Contributor: Ian Caunce - ian@hallnet.co.uk\n */\n\n(function(undefined) {\n 'use strict';\n\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 msgID = '[iFrameSizer]', //Must match host page msg ID\n msgIdLen = msgID.length,\n myID = '',\n observer = null,\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 messageCallback = function() {\n warn('MessageCallback function not defined');\n },\n readyCallback = function() {},\n pageInfoCallback = 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 onceSupported = false;\n\n function noop() {}\n\n try {\n var options = Object.create(\n {},\n {\n passive: {\n get: function() {\n passiveSupported = true;\n }\n },\n once: {\n get: function() {\n onceSupported = true;\n }\n }\n }\n );\n window.addEventListener('test', noop, options);\n window.removeEventListener('test', noop, options);\n } catch (e) {\n /* */\n }\n\n function addEventListener(el, evt, func, options) {\n /* istanbul ignore else */ // Not testable in phantomJS\n if ('addEventListener' in window) {\n el.addEventListener(evt, func, passiveSupported ? options || {} : false);\n } else if ('attachEvent' in window) {\n //IE\n el.attachEvent('on' + evt, func);\n }\n }\n\n function removeEventListener(el, evt, func) {\n /* istanbul ignore else */ // Not testable in phantomJS\n if ('removeEventListener' in window) {\n el.removeEventListener(evt, func, false);\n } else if ('detachEvent' in window) {\n //IE\n el.detachEvent('on' + evt, func);\n }\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 = getNow();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) {\n context = args = null;\n }\n };\n\n return function() {\n var now = getNow();\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 context = args = null;\n }\n } else if (!timeout) {\n timeout = setTimeout(later, remaining);\n }\n\n return result;\n };\n }\n\n var getNow =\n Date.now ||\n function() {\n /* istanbul ignore next */ // Not testable in PhantonJS\n return new Date().getTime();\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 console.log(formatLogMsg(msg));\n }\n }\n\n function warn(msg) {\n if ('object' === typeof window.console) {\n console.warn(formatLogMsg(msg));\n }\n }\n\n function init() {\n readDataFromParent();\n log('Initialising iFrame (' + 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 startEventListeners();\n inPageLinks = setupInPageLinks();\n sendSize('init', 'Init message from host page');\n readyCallback();\n }\n\n function readDataFromParent() {\n function strBool(str) {\n return 'true' === str ? true : false;\n }\n\n var data = initMsg.substr(msgIdLen).split(':');\n\n myID = data[0];\n bodyMargin = undefined !== data[1] ? Number(data[1]) : bodyMargin; //For V1 compatibility\n calculateWidth = undefined !== data[2] ? strBool(data[2]) : calculateWidth;\n logging = undefined !== data[3] ? strBool(data[3]) : logging;\n interval = undefined !== data[4] ? Number(data[4]) : interval;\n autoResize = undefined !== data[6] ? strBool(data[6]) : autoResize;\n bodyMarginStr = data[7];\n heightCalcMode = undefined !== data[8] ? data[8] : heightCalcMode;\n bodyBackground = data[9];\n bodyPadding = data[10];\n tolerance = undefined !== data[11] ? Number(data[11]) : tolerance;\n inPageLinks.enable = undefined !== data[12] ? strBool(data[12]) : false;\n resizeFrom = undefined !== data[13] ? data[13] : resizeFrom;\n widthCalcMode = undefined !== data[14] ? data[14] : widthCalcMode;\n }\n\n function readDataFromPage() {\n function readData() {\n var data = window.iFrameResizer;\n\n log('Reading data from page: ' + JSON.stringify(data));\n\n messageCallback =\n 'messageCallback' in data ? data.messageCallback : messageCallback;\n readyCallback =\n 'readyCallback' in data ? data.readyCallback : readyCallback;\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 eventName: ['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 clearFix.style.display = 'block'; //Guard against this having been globally redefined in CSS.\n document.body.appendChild(clearFix);\n }\n\n function setupInPageLinks() {\n function getPagePosition() {\n return {\n x:\n window.pageXOffset !== undefined\n ? window.pageXOffset\n : document.documentElement.scrollLeft,\n y:\n window.pageYOffset !== undefined\n ? window.pageYOffset\n : document.documentElement.scrollTop\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 jumpToTarget(target);\n } else {\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 }\n }\n\n function checkLocationHash() {\n if ('' !== location.hash && '#' !== location.hash) {\n findTarget(location.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 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 //sendSize('autoResize','Auto Resize enabled');\n } else if (false === resize && true === autoResize) {\n autoResize = false;\n stopEventListeners();\n }\n\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 pageInfoCallback = callback;\n sendMsg(0, 0, 'pageInfo');\n } else {\n pageInfoCallback = 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 '' +\n (customHeight ? customHeight : '') +\n (customWidth ? ',' + customWidth : '');\n //lockTrigger();\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 } //Not testable in PhantomJS\n\n /* istanbul ignore next */ 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, undefined, undefined);\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 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; // Not testable in PhantomJS\n\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 /* istanbul ignore next */ //Not testable in PhantomJS\n function convertUnitsToPxForIE8(value) {\n var PIXEL = /^\\d+(px)?$/i;\n\n if (PIXEL.test(value)) {\n return parseInt(value, base);\n }\n\n var style = el.style.left,\n runtimeStyle = el.runtimeStyle.left;\n\n el.runtimeStyle.left = el.currentStyle.left;\n el.style.left = value || 0;\n value = el.style.pixelLeft;\n el.style.left = style;\n el.runtimeStyle.left = runtimeStyle;\n\n return value;\n }\n\n var retVal = 0;\n el = el || document.body; // Not testable in phantonJS\n\n /* istanbul ignore else */ if (\n 'defaultView' in document &&\n 'getComputedStyle' in document.defaultView\n ) {\n retVal = document.defaultView.getComputedStyle(el, null);\n retVal = null !== retVal ? retVal[prop] : 0;\n } else {\n //IE8\n retVal = convertUnitsToPxForIE8(el.currentStyle[prop]);\n }\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 = getNow();\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 = getNow() - 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(dimention) {\n return [\n dimention.bodyOffset(),\n dimention.bodyScroll(),\n dimention.documentElementOffset(),\n dimention.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 (0 === elements.length) 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 compatability\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(\n getWidth.bodyScroll(),\n getWidth.documentElementScroll()\n );\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 ? customHeight : getHeight[heightCalcMode]();\n currentWidth =\n undefined !== customWidth ? customWidth : getWidth[widthCalcMode]();\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 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 } else {\n log('Trigger event cancelled: ' + triggerEvent);\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 size reset by host page');\n triggerReset('resetPage');\n } else {\n log('Page reset ignored by init');\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 compatability\n\n pageInfo: function pageInfoFromParent() {\n var msgBody = getData();\n log('PageInfoFromParent called from parent: ' + msgBody);\n pageInfoCallback(JSON.parse(msgBody));\n log(' --');\n },\n\n message: function messageFromParent() {\n var msgBody = getData();\n\n log('MessageCallback called from parent: ' + msgBody);\n messageCallback(JSON.parse(msgBody));\n log(' --');\n }\n };\n\n function isMessageForUs() {\n return msgID === ('' + event.data).substr(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.substr(event.data.indexOf(':') + 1);\n }\n\n function isMiddleTier() {\n return (\n (!(typeof module !== 'undefined' && module.exports) &&\n 'iFrameResize' in window) ||\n ('jQuery' in window && '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 compatibity.\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","/*\n * File: iframeResizer.js\n * Desc: Force iframes to size to content.\n * Requires: iframeResizer.contentWindow.js to be loaded into the target frame.\n * Doc: https://github.com/davidjbradshaw/iframe-resizer\n * Author: David J. Bradshaw - dave@bradshaw.net\n * Contributor: Jure Mav - jure.mav@gmail.com\n * Contributor: Reed Dadoune - reed@dadoune.com\n */\n\n(function(undefined) {\n 'use strict';\n\n if (typeof window === 'undefined') return; // don't run for server side render\n\n var count = 0,\n logEnabled = false,\n hiddenCheckEnabled = false,\n msgHeader = 'message',\n msgHeaderLen = msgHeader.length,\n msgId = '[iFrameSizer]', //Must match iframe msg ID\n msgIdLen = msgId.length,\n pagePosition = null,\n requestAnimationFrame = window.requestAnimationFrame,\n resetRequiredMethods = {\n max: 1,\n scroll: 1,\n bodyScroll: 1,\n documentElementScroll: 1\n },\n settings = {},\n timer = null,\n logId = 'Host Page',\n defaults = {\n autoResize: true,\n bodyBackground: null,\n bodyMargin: null,\n bodyMarginV1: 8,\n bodyPadding: null,\n checkOrigin: true,\n inPageLinks: false,\n enablePublicMethods: true,\n heightCalculationMethod: 'bodyOffset',\n id: 'iFrameResizer',\n interval: 32,\n log: false,\n maxHeight: Infinity,\n maxWidth: Infinity,\n minHeight: 0,\n minWidth: 0,\n resizeFrom: 'parent',\n scrolling: false,\n sizeHeight: true,\n sizeWidth: false,\n warningTimeout: 5000,\n tolerance: 0,\n widthCalculationMethod: 'scroll',\n closedCallback: function() {},\n initCallback: function() {},\n messageCallback: function() {\n warn('MessageCallback function not defined');\n },\n resizedCallback: function() {},\n scrollCallback: function() {\n return true;\n }\n };\n\n function getMutationObserver() {\n return window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;\n }\n\n function addEventListener(obj, evt, func) {\n /* istanbul ignore else */ // Not testable in PhantonJS\n if ('addEventListener' in window) {\n obj.addEventListener(evt, func, false);\n } else if ('attachEvent' in window) {\n //IE\n obj.attachEvent('on' + evt, func);\n }\n }\n\n function removeEventListener(el, evt, func) {\n /* istanbul ignore else */ // Not testable in phantonJS\n if ('removeEventListener' in window) {\n el.removeEventListener(evt, func, false);\n } else if ('detachEvent' in window) {\n //IE\n el.detachEvent('on' + evt, func);\n }\n }\n\n function setupRequestAnimationFrame() {\n var vendors = ['moz', 'webkit', 'o', 'ms'],\n x;\n\n // Remove vendor prefixing if prefixed and break early if not\n for (x = 0; x < vendors.length && !requestAnimationFrame; x += 1) {\n requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];\n }\n\n if (!requestAnimationFrame) {\n log('setup', 'RequestAnimationFrame not supported');\n }\n }\n\n function getMyID(iframeId) {\n var retStr = 'Host page: ' + iframeId;\n\n if (window.top !== window.self) {\n if (window.parentIFrame && window.parentIFrame.getId) {\n retStr = window.parentIFrame.getId() + ': ' + iframeId;\n } else {\n retStr = 'Nested host page: ' + iframeId;\n }\n }\n\n return retStr;\n }\n\n function formatLogHeader(iframeId) {\n return msgId + '[' + getMyID(iframeId) + ']';\n }\n\n function isLogEnabled(iframeId) {\n return settings[iframeId] ? settings[iframeId].log : logEnabled;\n }\n\n function log(iframeId, msg) {\n output('log', iframeId, msg, isLogEnabled(iframeId));\n }\n\n function info(iframeId, msg) {\n output('info', iframeId, msg, isLogEnabled(iframeId));\n }\n\n function warn(iframeId, msg) {\n output('warn', iframeId, msg, true);\n }\n\n function output(type, iframeId, msg, enabled) {\n if (true === enabled && 'object' === typeof window.console) {\n console[type](formatLogHeader(iframeId), msg);\n }\n }\n\n function iFrameListener(event) {\n function resizeIFrame() {\n function resize() {\n setSize(messageData);\n setPagePosition(iframeId);\n callback('resizedCallback', messageData);\n }\n\n ensureInRange('Height');\n ensureInRange('Width');\n\n syncResize(resize, messageData, 'init');\n }\n\n function processMsg() {\n var data = msg.substr(msgIdLen).split(':');\n\n return {\n iframe: settings[data[0]] && settings[data[0]].iframe,\n id: data[0],\n height: data[1],\n width: data[2],\n type: data[3]\n };\n }\n\n function ensureInRange(Dimension) {\n var max = Number(settings[iframeId]['max' + Dimension]),\n min = Number(settings[iframeId]['min' + Dimension]),\n dimension = Dimension.toLowerCase(),\n size = Number(messageData[dimension]);\n\n log(\n iframeId,\n 'Checking ' + dimension + ' is in range ' + min + '-' + max\n );\n\n if (size < min) {\n size = min;\n log(iframeId, 'Set ' + dimension + ' to min value');\n }\n\n if (size > max) {\n size = max;\n log(iframeId, 'Set ' + dimension + ' to max value');\n }\n\n messageData[dimension] = '' + size;\n }\n\n function isMessageFromIFrame() {\n function checkAllowedOrigin() {\n function checkList() {\n var i = 0,\n retCode = false;\n\n log(\n iframeId,\n 'Checking connection is from allowed list of origins: ' +\n checkOrigin\n );\n\n for (; i < checkOrigin.length; i++) {\n if (checkOrigin[i] === origin) {\n retCode = true;\n break;\n }\n }\n return retCode;\n }\n\n function checkSingle() {\n var remoteHost = settings[iframeId] && settings[iframeId].remoteHost;\n log(iframeId, 'Checking connection is from: ' + remoteHost);\n return origin === remoteHost;\n }\n\n return checkOrigin.constructor === Array ? checkList() : checkSingle();\n }\n\n var origin = event.origin,\n checkOrigin = settings[iframeId] && settings[iframeId].checkOrigin;\n\n if (checkOrigin && '' + origin !== 'null' && !checkAllowedOrigin()) {\n throw new Error(\n 'Unexpected message received from: ' +\n origin +\n ' for ' +\n messageData.iframe.id +\n '. Message was: ' +\n event.data +\n '. This error can be disabled by setting the checkOrigin: false option or by providing of array of trusted domains.'\n );\n }\n\n return true;\n }\n\n function isMessageForUs() {\n return (\n msgId === ('' + msg).substr(0, msgIdLen) &&\n msg.substr(msgIdLen).split(':')[0] in settings\n ); //''+Protects against non-string msg\n }\n\n function isMessageFromMetaParent() {\n //Test if this message is from a parent above us. This is an ugly test, however, updating\n //the message format would break backwards compatibity.\n var retCode = messageData.type in { true: 1, false: 1, undefined: 1 };\n\n if (retCode) {\n log(iframeId, 'Ignoring init message from meta parent page');\n }\n\n return retCode;\n }\n\n function getMsgBody(offset) {\n return msg.substr(msg.indexOf(':') + msgHeaderLen + offset);\n }\n\n function forwardMsgFromIFrame(msgBody) {\n log(\n iframeId,\n 'MessageCallback passed: {iframe: ' +\n messageData.iframe.id +\n ', message: ' +\n msgBody +\n '}'\n );\n callback('messageCallback', {\n iframe: messageData.iframe,\n message: JSON.parse(msgBody)\n });\n log(iframeId, '--');\n }\n\n function getPageInfo() {\n var bodyPosition = document.body.getBoundingClientRect(),\n iFramePosition = messageData.iframe.getBoundingClientRect();\n\n return JSON.stringify({\n iframeHeight: iFramePosition.height,\n iframeWidth: iFramePosition.width,\n clientHeight: Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n ),\n clientWidth: Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n ),\n offsetTop: parseInt(iFramePosition.top - bodyPosition.top, 10),\n offsetLeft: parseInt(iFramePosition.left - bodyPosition.left, 10),\n scrollTop: window.pageYOffset,\n scrollLeft: window.pageXOffset\n });\n }\n\n function sendPageInfoToIframe(iframe, iframeId) {\n function debouncedTrigger() {\n trigger(\n 'Send Page Info',\n 'pageInfo:' + getPageInfo(),\n iframe,\n iframeId\n );\n }\n debounceFrameEvents(debouncedTrigger, 32, iframeId);\n }\n\n function startPageInfoMonitor() {\n function setListener(type, func) {\n function sendPageInfo() {\n if (settings[id]) {\n sendPageInfoToIframe(settings[id].iframe, id);\n } else {\n stop();\n }\n }\n\n ['scroll', 'resize'].forEach(function(evt) {\n log(id, type + evt + ' listener for sendPageInfo');\n func(window, evt, sendPageInfo);\n });\n }\n\n function stop() {\n setListener('Remove ', removeEventListener);\n }\n\n function start() {\n setListener('Add ', addEventListener);\n }\n\n var id = iframeId; //Create locally scoped copy of iFrame ID\n\n start();\n\n if (settings[id]) {\n settings[id].stopPageInfo = stop;\n }\n }\n\n function stopPageInfoMonitor() {\n if (settings[iframeId] && settings[iframeId].stopPageInfo) {\n settings[iframeId].stopPageInfo();\n delete settings[iframeId].stopPageInfo;\n }\n }\n\n function checkIFrameExists() {\n var retBool = true;\n\n if (null === messageData.iframe) {\n warn(iframeId, 'IFrame (' + messageData.id + ') not found');\n retBool = false;\n }\n return retBool;\n }\n\n function getElementPosition(target) {\n var iFramePosition = target.getBoundingClientRect();\n\n getPagePosition(iframeId);\n\n return {\n x: Math.floor(Number(iFramePosition.left) + Number(pagePosition.x)),\n y: Math.floor(Number(iFramePosition.top) + Number(pagePosition.y))\n };\n }\n\n function scrollRequestFromChild(addOffset) {\n /* istanbul ignore next */ //Not testable in Karma\n function reposition() {\n pagePosition = newPosition;\n scrollTo();\n log(iframeId, '--');\n }\n\n function calcOffset() {\n return {\n x: Number(messageData.width) + offset.x,\n y: Number(messageData.height) + offset.y\n };\n }\n\n function scrollParent() {\n if (window.parentIFrame) {\n window.parentIFrame['scrollTo' + (addOffset ? 'Offset' : '')](\n newPosition.x,\n newPosition.y\n );\n } else {\n warn(\n iframeId,\n 'Unable to scroll to requested position, window.parentIFrame not found'\n );\n }\n }\n\n var offset = addOffset\n ? getElementPosition(messageData.iframe)\n : { x: 0, y: 0 },\n newPosition = calcOffset();\n\n log(\n iframeId,\n 'Reposition requested from iFrame (offset x:' +\n offset.x +\n ' y:' +\n offset.y +\n ')'\n );\n\n if (window.top !== window.self) {\n scrollParent();\n } else {\n reposition();\n }\n }\n\n function scrollTo() {\n if (false !== callback('scrollCallback', pagePosition)) {\n setPagePosition(iframeId);\n } else {\n unsetPagePosition();\n }\n }\n\n function findTarget(location) {\n function jumpToTarget() {\n var jumpPosition = getElementPosition(target);\n\n log(\n iframeId,\n 'Moving to in page link (#' +\n hash +\n ') at x: ' +\n jumpPosition.x +\n ' y: ' +\n jumpPosition.y\n );\n pagePosition = {\n x: jumpPosition.x,\n y: jumpPosition.y\n };\n\n scrollTo();\n log(iframeId, '--');\n }\n\n function jumpToParent() {\n if (window.parentIFrame) {\n window.parentIFrame.moveToAnchor(hash);\n } else {\n log(\n iframeId,\n 'In page link #' +\n hash +\n ' not found and window.parentIFrame not found'\n );\n }\n }\n\n var hash = location.split('#')[1] || '',\n hashData = decodeURIComponent(hash),\n target =\n document.getElementById(hashData) ||\n document.getElementsByName(hashData)[0];\n\n if (target) {\n jumpToTarget();\n } else if (window.top !== window.self) {\n jumpToParent();\n } else {\n log(iframeId, 'In page link #' + hash + ' not found');\n }\n }\n\n function callback(funcName, val) {\n return chkCallback(iframeId, funcName, val);\n }\n\n function actionMsg() {\n if (settings[iframeId] && settings[iframeId].firstRun) firstRun();\n\n switch (messageData.type) {\n case 'close':\n if (settings[iframeId].closeRequestCallback)\n chkCallback(\n iframeId,\n 'closeRequestCallback',\n settings[iframeId].iframe\n );\n else closeIFrame(messageData.iframe);\n break;\n case 'message':\n forwardMsgFromIFrame(getMsgBody(6));\n break;\n case 'scrollTo':\n scrollRequestFromChild(false);\n break;\n case 'scrollToOffset':\n scrollRequestFromChild(true);\n break;\n case 'pageInfo':\n sendPageInfoToIframe(\n settings[iframeId] && settings[iframeId].iframe,\n iframeId\n );\n startPageInfoMonitor();\n break;\n case 'pageInfoStop':\n stopPageInfoMonitor();\n break;\n case 'inPageLink':\n findTarget(getMsgBody(9));\n break;\n case 'reset':\n resetIFrame(messageData);\n break;\n case 'init':\n resizeIFrame();\n callback('initCallback', messageData.iframe);\n break;\n default:\n resizeIFrame();\n }\n }\n\n function hasSettings(iframeId) {\n var retBool = true;\n\n if (!settings[iframeId]) {\n retBool = false;\n warn(\n messageData.type +\n ' No settings for ' +\n iframeId +\n '. Message was: ' +\n msg\n );\n }\n\n return retBool;\n }\n\n function iFrameReadyMsgReceived() {\n for (var iframeId in settings) {\n trigger(\n 'iFrame requested init',\n createOutgoingMsg(iframeId),\n document.getElementById(iframeId),\n iframeId\n );\n }\n }\n\n function firstRun() {\n if (settings[iframeId]) {\n settings[iframeId].firstRun = false;\n }\n }\n\n function clearWarningTimeout() {\n if (settings[iframeId]) {\n clearTimeout(settings[iframeId].msgTimeout);\n settings[iframeId].warningTimeout = 0;\n }\n }\n\n var msg = event.data,\n messageData = {},\n iframeId = null;\n\n if ('[iFrameResizerChild]Ready' === msg) {\n iFrameReadyMsgReceived();\n } else if (isMessageForUs()) {\n messageData = processMsg();\n iframeId = logId = messageData.id;\n if (settings[iframeId]) {\n settings[iframeId].loaded = true;\n }\n\n if (!isMessageFromMetaParent() && hasSettings(iframeId)) {\n log(iframeId, 'Received: ' + msg);\n\n if (checkIFrameExists() && isMessageFromIFrame()) {\n actionMsg();\n }\n }\n } else {\n info(iframeId, 'Ignored: ' + msg);\n }\n }\n\n function chkCallback(iframeId, funcName, val) {\n var func = null,\n retVal = null;\n\n if (settings[iframeId]) {\n func = settings[iframeId][funcName];\n\n if ('function' === typeof func) {\n retVal = func(val);\n } else {\n throw new TypeError(\n funcName + ' on iFrame[' + iframeId + '] is not a function'\n );\n }\n }\n\n return retVal;\n }\n\n function removeIframeListeners(iframe) {\n var iframeId = iframe.id;\n delete settings[iframeId];\n }\n\n function closeIFrame(iframe) {\n var iframeId = iframe.id;\n log(iframeId, 'Removing iFrame: ' + iframeId);\n\n try {\n // Catch race condition error with React\n if (iframe.parentNode) {\n iframe.parentNode.removeChild(iframe);\n }\n } catch (e) {}\n\n chkCallback(iframeId, 'closedCallback', iframeId);\n log(iframeId, '--');\n removeIframeListeners(iframe);\n }\n\n function getPagePosition(iframeId) {\n if (null === pagePosition) {\n pagePosition = {\n x:\n window.pageXOffset !== undefined\n ? window.pageXOffset\n : document.documentElement.scrollLeft,\n y:\n window.pageYOffset !== undefined\n ? window.pageYOffset\n : document.documentElement.scrollTop\n };\n log(\n iframeId,\n 'Get page position: ' + pagePosition.x + ',' + pagePosition.y\n );\n }\n }\n\n function setPagePosition(iframeId) {\n if (null !== pagePosition) {\n window.scrollTo(pagePosition.x, pagePosition.y);\n log(\n iframeId,\n 'Set page position: ' + pagePosition.x + ',' + pagePosition.y\n );\n unsetPagePosition();\n }\n }\n\n function unsetPagePosition() {\n pagePosition = null;\n }\n\n function resetIFrame(messageData) {\n function reset() {\n setSize(messageData);\n trigger('reset', 'reset', messageData.iframe, messageData.id);\n }\n\n log(\n messageData.id,\n 'Size reset requested by ' +\n ('init' === messageData.type ? 'host page' : 'iFrame')\n );\n getPagePosition(messageData.id);\n syncResize(reset, messageData, 'reset');\n }\n\n function setSize(messageData) {\n function setDimension(dimension) {\n if (!messageData.id) {\n log('undefined', 'messageData id not set');\n return;\n }\n messageData.iframe.style[dimension] = messageData[dimension] + 'px';\n log(\n messageData.id,\n 'IFrame (' +\n iframeId +\n ') ' +\n dimension +\n ' set to ' +\n messageData[dimension] +\n 'px'\n );\n }\n\n function chkZero(dimension) {\n //FireFox sets dimension of hidden iFrames to zero.\n //So if we detect that set up an event to check for\n //when iFrame becomes visible.\n\n /* istanbul ignore next */ //Not testable in PhantomJS\n if (!hiddenCheckEnabled && '0' === messageData[dimension]) {\n hiddenCheckEnabled = true;\n log(iframeId, 'Hidden iFrame detected, creating visibility listener');\n fixHiddenIFrames();\n }\n }\n\n function processDimension(dimension) {\n setDimension(dimension);\n chkZero(dimension);\n }\n\n var iframeId = messageData.iframe.id;\n\n if (settings[iframeId]) {\n if (settings[iframeId].sizeHeight) {\n processDimension('height');\n }\n if (settings[iframeId].sizeWidth) {\n processDimension('width');\n }\n }\n }\n\n function syncResize(func, messageData, doNotSync) {\n /* istanbul ignore if */ //Not testable in PhantomJS\n if (doNotSync !== messageData.type && requestAnimationFrame) {\n log(messageData.id, 'Requesting animation frame');\n requestAnimationFrame(func);\n } else {\n func();\n }\n }\n\n function trigger(calleeMsg, msg, iframe, id, noResponseWarning) {\n function postMessageToIFrame() {\n var target = settings[id] && settings[id].targetOrigin;\n log(\n id,\n '[' +\n calleeMsg +\n '] Sending msg to iframe[' +\n id +\n '] (' +\n msg +\n ') targetOrigin: ' +\n target\n );\n iframe.contentWindow.postMessage(msgId + msg, target);\n }\n\n function iFrameNotFound() {\n warn(id, '[' + calleeMsg + '] IFrame(' + id + ') not found');\n }\n\n function chkAndSend() {\n if (\n iframe &&\n 'contentWindow' in iframe &&\n null !== iframe.contentWindow\n ) {\n //Null test for PhantomJS\n postMessageToIFrame();\n } else {\n iFrameNotFound();\n }\n }\n\n function warnOnNoResponse() {\n function warning() {\n if (settings[id] && !settings[id].loaded && !errorShown) {\n errorShown = true;\n warn(\n id,\n 'IFrame has not responded within ' +\n settings[id].warningTimeout / 1000 +\n ' 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.'\n );\n }\n }\n\n if (\n !!noResponseWarning &&\n settings[id] &&\n !!settings[id].warningTimeout\n ) {\n settings[id].msgTimeout = setTimeout(\n warning,\n settings[id].warningTimeout\n );\n }\n }\n\n var errorShown = false;\n\n id = id || iframe.id;\n\n if (settings[id]) {\n chkAndSend();\n warnOnNoResponse();\n }\n }\n\n function createOutgoingMsg(iframeId) {\n return (\n iframeId +\n ':' +\n settings[iframeId].bodyMarginV1 +\n ':' +\n settings[iframeId].sizeWidth +\n ':' +\n settings[iframeId].log +\n ':' +\n settings[iframeId].interval +\n ':' +\n settings[iframeId].enablePublicMethods +\n ':' +\n settings[iframeId].autoResize +\n ':' +\n settings[iframeId].bodyMargin +\n ':' +\n settings[iframeId].heightCalculationMethod +\n ':' +\n settings[iframeId].bodyBackground +\n ':' +\n settings[iframeId].bodyPadding +\n ':' +\n settings[iframeId].tolerance +\n ':' +\n settings[iframeId].inPageLinks +\n ':' +\n settings[iframeId].resizeFrom +\n ':' +\n settings[iframeId].widthCalculationMethod\n );\n }\n\n function setupIFrame(iframe, options) {\n function setLimits() {\n function addStyle(style) {\n if (\n Infinity !== settings[iframeId][style] &&\n 0 !== settings[iframeId][style]\n ) {\n iframe.style[style] = settings[iframeId][style] + 'px';\n log(\n iframeId,\n 'Set ' + style + ' = ' + settings[iframeId][style] + 'px'\n );\n }\n }\n\n function chkMinMax(dimension) {\n if (\n settings[iframeId]['min' + dimension] >\n settings[iframeId]['max' + dimension]\n ) {\n throw new Error(\n 'Value for min' +\n dimension +\n ' can not be greater than max' +\n dimension\n );\n }\n }\n\n chkMinMax('Height');\n chkMinMax('Width');\n\n addStyle('maxHeight');\n addStyle('minHeight');\n addStyle('maxWidth');\n addStyle('minWidth');\n }\n\n function newId() {\n var id = (options && options.id) || defaults.id + count++;\n if (null !== document.getElementById(id)) {\n id = id + count++;\n }\n return id;\n }\n\n function ensureHasId(iframeId) {\n logId = iframeId;\n if ('' === iframeId) {\n iframe.id = iframeId = newId();\n logEnabled = (options || {}).log;\n logId = iframeId;\n log(\n iframeId,\n 'Added missing iframe ID: ' + iframeId + ' (' + iframe.src + ')'\n );\n }\n\n return iframeId;\n }\n\n function setScrolling() {\n log(\n iframeId,\n 'IFrame scrolling ' +\n (settings[iframeId] && settings[iframeId].scrolling\n ? 'enabled'\n : 'disabled') +\n ' for ' +\n iframeId\n );\n iframe.style.overflow =\n false === (settings[iframeId] && settings[iframeId].scrolling)\n ? 'hidden'\n : 'auto';\n switch (settings[iframeId] && settings[iframeId].scrolling) {\n case 'omit':\n break;\n case true:\n iframe.scrolling = 'yes';\n break;\n case false:\n iframe.scrolling = 'no';\n break;\n default:\n iframe.scrolling = settings[iframeId]\n ? settings[iframeId].scrolling\n : 'no';\n }\n }\n\n //The V1 iFrame script expects an int, where as in V2 expects a CSS\n //string value such as '1px 3em', so if we have an int for V2, set V1=V2\n //and then convert V2 to a string PX value.\n function setupBodyMarginValues() {\n if (\n 'number' ===\n typeof (settings[iframeId] && settings[iframeId].bodyMargin) ||\n '0' === (settings[iframeId] && settings[iframeId].bodyMargin)\n ) {\n settings[iframeId].bodyMarginV1 = settings[iframeId].bodyMargin;\n settings[iframeId].bodyMargin =\n '' + settings[iframeId].bodyMargin + 'px';\n }\n }\n\n function checkReset() {\n // Reduce scope of firstRun to function, because IE8's JS execution\n // context stack is borked and this value gets externally\n // changed midway through running this function!!!\n var firstRun = settings[iframeId] && settings[iframeId].firstRun,\n resetRequertMethod =\n settings[iframeId] &&\n settings[iframeId].heightCalculationMethod in resetRequiredMethods;\n\n if (!firstRun && resetRequertMethod) {\n resetIFrame({ iframe: iframe, height: 0, width: 0, type: 'init' });\n }\n }\n\n function setupIFrameObject() {\n if (Function.prototype.bind && settings[iframeId]) {\n //Ignore unpolyfilled IE8.\n settings[iframeId].iframe.iFrameResizer = {\n close: closeIFrame.bind(null, settings[iframeId].iframe),\n\n removeListeners: removeIframeListeners.bind(\n null,\n settings[iframeId].iframe\n ),\n\n resize: trigger.bind(\n null,\n 'Window resize',\n 'resize',\n settings[iframeId].iframe\n ),\n\n moveToAnchor: function(anchor) {\n trigger(\n 'Move to anchor',\n 'moveToAnchor:' + anchor,\n settings[iframeId].iframe,\n iframeId\n );\n },\n\n sendMessage: function(message) {\n message = JSON.stringify(message);\n trigger(\n 'Send Message',\n 'message:' + message,\n settings[iframeId].iframe,\n iframeId\n );\n }\n };\n }\n }\n\n //We have to call trigger twice, as we can not be sure if all\n //iframes have completed loading when this code runs. The\n //event listener also catches the page changing in the iFrame.\n function init(msg) {\n function iFrameLoaded() {\n trigger('iFrame.onload', msg, iframe, undefined, true);\n checkReset();\n }\n\n function createDestroyObserver(MutationObserver) {\n if (!iframe.parentNode) {\n return;\n }\n\n var destroyObserver = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n var removedNodes = Array.prototype.slice.call(mutation.removedNodes); // Transform NodeList into an Array\n removedNodes.forEach(function (removedNode) {\n if (removedNode === iframe) {\n closeIFrame(iframe);\n }\n });\n });\n });\n destroyObserver.observe(iframe.parentNode, {\n childList: true\n });\n }\n\n var MutationObserver = getMutationObserver();\n if (MutationObserver) {\n createDestroyObserver(MutationObserver);\n }\n\n addEventListener(iframe, 'load', iFrameLoaded);\n trigger('init', msg, iframe, undefined, true);\n }\n\n function checkOptions(options) {\n if ('object' !== typeof options) {\n throw new TypeError('Options is not an object');\n }\n }\n\n function copyOptions(options) {\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option)) {\n settings[iframeId][option] = options.hasOwnProperty(option)\n ? options[option]\n : defaults[option];\n }\n }\n }\n\n function getTargetOrigin(remoteHost) {\n return '' === remoteHost || 'file://' === remoteHost ? '*' : remoteHost;\n }\n\n function processOptions(options) {\n options = options || {};\n settings[iframeId] = {\n firstRun: true,\n iframe: iframe,\n remoteHost: iframe.src\n .split('/')\n .slice(0, 3)\n .join('/')\n };\n\n checkOptions(options);\n copyOptions(options);\n\n if (settings[iframeId]) {\n settings[iframeId].targetOrigin =\n true === settings[iframeId].checkOrigin\n ? getTargetOrigin(settings[iframeId].remoteHost)\n : '*';\n }\n }\n\n function beenHere() {\n return iframeId in settings && 'iFrameResizer' in iframe;\n }\n\n var iframeId = ensureHasId(iframe.id);\n\n if (!beenHere()) {\n processOptions(options);\n setScrolling();\n setLimits();\n setupBodyMarginValues();\n init(createOutgoingMsg(iframeId));\n setupIFrameObject();\n } else {\n warn(iframeId, 'Ignored iFrame, already setup.');\n }\n }\n\n function debouce(fn, time) {\n if (null === timer) {\n timer = setTimeout(function() {\n timer = null;\n fn();\n }, time);\n }\n }\n\n var frameTimer = {};\n function debounceFrameEvents(fn, time, frameId) {\n if (!frameTimer[frameId]) {\n frameTimer[frameId] = setTimeout(function() {\n frameTimer[frameId] = null;\n fn();\n }, time);\n }\n } //Not testable in PhantomJS\n\n /* istanbul ignore next */ function fixHiddenIFrames() {\n function checkIFrames() {\n function checkIFrame(settingId) {\n function chkDimension(dimension) {\n return (\n '0px' ===\n (settings[settingId] && settings[settingId].iframe.style[dimension])\n );\n }\n\n function isVisible(el) {\n return null !== el.offsetParent;\n }\n\n if (\n settings[settingId] &&\n isVisible(settings[settingId].iframe) &&\n (chkDimension('height') || chkDimension('width'))\n ) {\n trigger(\n 'Visibility change',\n 'resize',\n settings[settingId].iframe,\n settingId\n );\n }\n }\n\n for (var settingId in settings) {\n checkIFrame(settingId);\n }\n }\n\n function mutationObserved(mutations) {\n log(\n 'window',\n 'Mutation observed: ' + mutations[0].target + ' ' + mutations[0].type\n );\n debouce(checkIFrames, 16);\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 observer = new MutationObserver(mutationObserved);\n\n observer.observe(target, config);\n }\n\n var MutationObserver = getMutationObserver();\n if (MutationObserver) {\n createMutationObserver();\n }\n }\n\n function resizeIFrames(event) {\n function resize() {\n sendTriggerMsg('Window ' + event, 'resize');\n }\n\n log('window', 'Trigger event: ' + event);\n debouce(resize, 16);\n } //Not testable in PhantomJS\n\n /* istanbul ignore next */ function tabVisible() {\n function resize() {\n sendTriggerMsg('Tab Visable', 'resize');\n }\n\n if ('hidden' !== document.visibilityState) {\n log('document', 'Trigger event: Visiblity change');\n debouce(resize, 16);\n }\n }\n\n function sendTriggerMsg(eventName, event) {\n function isIFrameResizeEnabled(iframeId) {\n return (\n settings[iframeId] &&\n 'parent' === settings[iframeId].resizeFrom &&\n settings[iframeId].autoResize &&\n !settings[iframeId].firstRun\n );\n }\n\n for (var iframeId in settings) {\n if (isIFrameResizeEnabled(iframeId)) {\n trigger(eventName, event, document.getElementById(iframeId), iframeId);\n }\n }\n }\n\n function setupEventListeners() {\n addEventListener(window, 'message', iFrameListener);\n\n addEventListener(window, 'resize', function() {\n resizeIFrames('resize');\n });\n\n addEventListener(document, 'visibilitychange', tabVisible);\n addEventListener(document, '-webkit-visibilitychange', tabVisible); //Andriod 4.4\n addEventListener(window, 'focusin', function() {\n resizeIFrames('focus');\n }); //IE8-9\n addEventListener(window, 'focus', function() {\n resizeIFrames('focus');\n });\n }\n\n function factory() {\n function init(options, element) {\n function chkType() {\n if (!element.tagName) {\n throw new TypeError('Object is not a valid DOM element');\n } else if ('IFRAME' !== element.tagName.toUpperCase()) {\n throw new TypeError(\n 'Expected