{"version":3,"sources":["webpack://[name]/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js","webpack://[name]/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js","webpack://[name]/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/includes.js","webpack://[name]/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/some.js","webpack://[name]/./node_modules/@babel/runtime-corejs3/core-js/object/define-property.js","webpack://[name]/./node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js","webpack://[name]/./node_modules/@babel/runtime-corejs3/helpers/createClass.js","webpack://[name]/./desktop/static/js/iframe-common.js","webpack://[name]/./desktop/static/js/iframe.js","webpack://[name]/./desktop/static/js/models/InjectedData.js","webpack://[name]/./desktop/static/js/is-staging.js","webpack://[name]/./desktop/static/js/models/domaintypes.js","webpack://[name]/./node_modules/core-js-pure/es/array/virtual/concat.js","webpack://[name]/./node_modules/core-js-pure/es/array/virtual/filter.js","webpack://[name]/./node_modules/core-js-pure/es/array/virtual/includes.js","webpack://[name]/./node_modules/core-js-pure/es/array/virtual/some.js","webpack://[name]/./node_modules/core-js-pure/es/instance/concat.js","webpack://[name]/./node_modules/core-js-pure/es/instance/filter.js","webpack://[name]/./node_modules/core-js-pure/es/instance/includes.js","webpack://[name]/./node_modules/core-js-pure/es/instance/some.js","webpack://[name]/./node_modules/core-js-pure/es/object/define-property.js","webpack://[name]/./node_modules/core-js-pure/es/string/virtual/includes.js","webpack://[name]/./node_modules/core-js-pure/features/object/define-property.js","webpack://[name]/./node_modules/core-js-pure/internals/a-function.js","webpack://[name]/./node_modules/core-js-pure/internals/add-to-unscopables.js","webpack://[name]/./node_modules/core-js-pure/internals/an-object.js","webpack://[name]/./node_modules/core-js-pure/internals/array-includes.js","webpack://[name]/./node_modules/core-js-pure/internals/array-iteration.js","webpack://[name]/./node_modules/core-js-pure/internals/array-method-has-species-support.js","webpack://[name]/./node_modules/core-js-pure/internals/array-method-is-strict.js","webpack://[name]/./node_modules/core-js-pure/internals/array-method-uses-to-length.js","webpack://[name]/./node_modules/core-js-pure/internals/array-species-create.js","webpack://[name]/./node_modules/core-js-pure/internals/classof-raw.js","webpack://[name]/./node_modules/core-js-pure/internals/correct-is-regexp-logic.js","webpack://[name]/./node_modules/core-js-pure/internals/create-non-enumerable-property.js","webpack://[name]/./node_modules/core-js-pure/internals/create-property-descriptor.js","webpack://[name]/./node_modules/core-js-pure/internals/create-property.js","webpack://[name]/./node_modules/core-js-pure/internals/descriptors.js","webpack://[name]/./node_modules/core-js-pure/internals/document-create-element.js","webpack://[name]/./node_modules/core-js-pure/internals/engine-user-agent.js","webpack://[name]/./node_modules/core-js-pure/internals/engine-v8-version.js","webpack://[name]/./node_modules/core-js-pure/internals/entry-virtual.js","webpack://[name]/./node_modules/core-js-pure/internals/export.js","webpack://[name]/./node_modules/core-js-pure/internals/fails.js","webpack://[name]/./node_modules/core-js-pure/internals/function-bind-context.js","webpack://[name]/./node_modules/core-js-pure/internals/get-built-in.js","webpack://[name]/./node_modules/core-js-pure/internals/global.js","webpack://[name]/./node_modules/core-js-pure/internals/has.js","webpack://[name]/./node_modules/core-js-pure/internals/ie8-dom-define.js","webpack://[name]/./node_modules/core-js-pure/internals/indexed-object.js","webpack://[name]/./node_modules/core-js-pure/internals/is-array.js","webpack://[name]/./node_modules/core-js-pure/internals/is-forced.js","webpack://[name]/./node_modules/core-js-pure/internals/is-object.js","webpack://[name]/./node_modules/core-js-pure/internals/is-pure.js","webpack://[name]/./node_modules/core-js-pure/internals/is-regexp.js","webpack://[name]/./node_modules/core-js-pure/internals/native-symbol.js","webpack://[name]/./node_modules/core-js-pure/internals/not-a-regexp.js","webpack://[name]/./node_modules/core-js-pure/internals/object-define-property.js","webpack://[name]/./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js","webpack://[name]/./node_modules/core-js-pure/internals/object-property-is-enumerable.js","webpack://[name]/./node_modules/core-js-pure/internals/path.js","webpack://[name]/./node_modules/core-js-pure/internals/require-object-coercible.js","webpack://[name]/./node_modules/core-js-pure/internals/set-global.js","webpack://[name]/./node_modules/core-js-pure/internals/shared-store.js","webpack://[name]/./node_modules/core-js-pure/internals/shared.js","webpack://[name]/./node_modules/core-js-pure/internals/to-absolute-index.js","webpack://[name]/./node_modules/core-js-pure/internals/to-indexed-object.js","webpack://[name]/./node_modules/core-js-pure/internals/to-integer.js","webpack://[name]/./node_modules/core-js-pure/internals/to-length.js","webpack://[name]/./node_modules/core-js-pure/internals/to-object.js","webpack://[name]/./node_modules/core-js-pure/internals/to-primitive.js","webpack://[name]/./node_modules/core-js-pure/internals/uid.js","webpack://[name]/./node_modules/core-js-pure/internals/use-symbol-as-uid.js","webpack://[name]/./node_modules/core-js-pure/internals/well-known-symbol.js","webpack://[name]/./node_modules/core-js-pure/modules/es.array.concat.js","webpack://[name]/./node_modules/core-js-pure/modules/es.array.filter.js","webpack://[name]/./node_modules/core-js-pure/modules/es.array.includes.js","webpack://[name]/./node_modules/core-js-pure/modules/es.array.some.js","webpack://[name]/./node_modules/core-js-pure/modules/es.object.define-property.js","webpack://[name]/./node_modules/core-js-pure/modules/es.string.includes.js","webpack://[name]/./node_modules/core-js-pure/stable/instance/concat.js","webpack://[name]/./node_modules/core-js-pure/stable/instance/filter.js","webpack://[name]/./node_modules/core-js-pure/stable/instance/includes.js","webpack://[name]/./node_modules/core-js-pure/stable/instance/some.js","webpack://[name]/./node_modules/iframe-resizer/index.js","webpack://[name]/./node_modules/iframe-resizer/js/iframeResizer.contentWindow.js","webpack://[name]/./node_modules/iframe-resizer/js/iframeResizer.js","webpack://[name]/./node_modules/iframe-resizer/js/index.js","webpack://[name]/webpack/bootstrap","webpack://[name]/webpack/startup","webpack://[name]/webpack/runtime/compat get default export","webpack://[name]/webpack/runtime/define property getters","webpack://[name]/webpack/runtime/global","webpack://[name]/webpack/runtime/hasOwnProperty shorthand","webpack://[name]/webpack/runtime/make namespace object"],"names":["module","exports","instance","Constructor","TypeError","_Object$defineProperty","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","key","protoProps","staticProps","prototype","require","domain","queryParam","urlParam","isLocalHost","window","location","host","split","containerEl","document","querySelector","iframe","createElement","pathToIndex","dataset","path","allow","calcFrameSrc","verticalUrl","paramString","search","params","substr","replace","referrerPageUrl","referrer","new_params","param","kv","push","iframeUrl","join","src","frameBorder","style","width","minWidth","id","addEventListener","documentElement","scrollTop","body","onpopstate","contentWindow","appendChild","iFrameResize","checkOrigin","onMessage","messageData","message","JSON","parse","action","iframeOffsetTop","offsetTop","pageTitle","title","iFrameResizer","resize","newLocation","href","history","replaceState","query","generateIFrame","this","injectedData","process","stagingDomains","defaultStagingDomains","_stagingDomains","currentUrl","pages","getStagingDomain","getProdDomain","_getDomain","DomainTypes","domainType","injectedDomains","_getInjectedPagesDomains","isHttps","domains","getDomain","STAGING","PROD","entryVirtual","concat","filter","includes","some","ArrayPrototype","Array","it","own","arrayIncludes","stringIncludes","StringPrototype","String","Object","defineProperty","desc","sham","parent","isObject","toIndexedObject","toLength","toAbsoluteIndex","createMethod","IS_INCLUDES","$this","el","fromIndex","value","O","index","indexOf","bind","IndexedObject","toObject","arraySpeciesCreate","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","callbackfn","that","specificCreate","result","self","boundFunction","create","undefined","call","forEach","map","every","find","findIndex","fails","wellKnownSymbol","V8_VERSION","SPECIES","METHOD_NAME","array","constructor","foo","Boolean","argument","method","DESCRIPTORS","has","cache","thrower","options","ACCESSORS","argument0","argument1","get","isArray","originalArray","C","toString","slice","MATCH","regexp","e","f","definePropertyModule","createPropertyDescriptor","object","bitmap","toPrimitive","propertyKey","global","EXISTS","getBuiltIn","match","version","userAgent","versions","v8","CONSTRUCTOR","getOwnPropertyDescriptor","isForced","createNonEnumerableProperty","wrapConstructor","NativeConstructor","Wrapper","a","b","c","arguments","apply","source","USE_NATIVE","VIRTUAL_PROTOTYPE","sourceProperty","targetProperty","nativeProperty","resultProperty","TARGET","GLOBAL","STATIC","stat","PROTO","proto","nativeSource","targetPrototype","forced","noTargetGet","wrap","Function","real","exec","error","aFunction","fn","variable","namespace","check","Math","globalThis","g","hasOwnProperty","classof","propertyIsEnumerable","arg","replacement","feature","detection","data","normalize","POLYFILL","NATIVE","string","toLowerCase","isRegExp","getOwnPropertySymbols","Symbol","IE8_DOM_DEFINE","anObject","nativeDefineProperty","P","Attributes","propertyIsEnumerableModule","nativeGetOwnPropertyDescriptor","nativePropertyIsEnumerable","NASHORN_BUG","1","V","setGlobal","SHARED","store","IS_PURE","mode","copyright","toInteger","max","min","integer","requireObjectCoercible","ceil","floor","isNaN","input","PREFERRED_STRING","val","valueOf","postfix","random","NATIVE_SYMBOL","iterator","shared","uid","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","name","$","createProperty","arrayMethodHasSpeciesSupport","IS_CONCAT_SPREADABLE","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_INDEX_EXCEEDED","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","k","len","E","A","n","$filter","arrayMethodUsesToLength","HAS_SPECIES_SUPPORT","USES_TO_LENGTH","$includes","addToUnscopables","$some","arrayMethodIsStrict","STRICT_METHOD","notARegExp","correctIsRegExpLogic","searchString","autoResize","bodyBackground","bodyMargin","bodyMarginStr","bodyObserver","bodyPadding","calculateWidth","doubleEventList","click","eventCancelTimer","firstRun","height","heightCalcModeDefault","heightCalcMode","initLock","initMsg","inPageLinks","interval","intervalTimer","logging","msgID","msgIdLen","myID","resetRequiredMethods","bodyScroll","documentElementScroll","resizeFrom","targetOriginDefault","tolerance","triggerLocked","triggerLockedTimer","throttledTimer","widthCalcModeDefault","widthCalcMode","win","warn","onReady","onPageInfo","customCalcMethods","offsetHeight","scrollWidth","eventHandlersByName","passiveSupported","passive","noop","removeEventListener","func","context","args","timeout","previous","later","getNow","Date","now","getTime","getHeight","bodyOffset","getComputedStyle","offset","scrollHeight","custom","documentElementOffset","getAllMeasurements","grow","lowestElement","getMaxElement","getAllElements","taggedElement","getTaggedElements","getWidth","offsetWidth","scroll","rightMostElement","sizeIFrameThrottled","sizeIFrame","remaining","clearTimeout","setTimeout","event","messageType","processRequestFromParent","init","clearFix","attr","strBool","str","Number","enable","readDataFromParent","log","readData","stringify","keys","depricate","targetOrigin","heightCalculationMethod","widthCalculationMethod","setupCustomCalcMethods","calcMode","calcFunc","readDataFromPage","setBodyStyle","clear","display","checkHeightMode","checkWidthMode","parentIFrame","startEventListeners","manageEventListeners","disconnect","clearInterval","sendMsg","close","getId","getPageInfo","callback","moveToAnchor","hash","findTarget","reset","resetIFrame","scrollTo","x","y","scrollToOffset","sendMessage","msg","setHeightCalculationMethod","setWidthCalculationMethod","setTargetOrigin","size","customHeight","customWidth","sendSize","getPagePosition","pageXOffset","scrollLeft","pageYOffset","getElementPosition","elPosition","getBoundingClientRect","pagePosition","parseInt","left","top","jumpToTarget","jumpPosition","hashData","decodeURIComponent","getElementById","getElementsByName","checkLocationHash","bindAnchors","setupLink","linkClicked","preventDefault","getAttribute","querySelectorAll","bindLocationHash","initCheck","enableInPageLinks","setupInPageLinks","triggerReset","getData","inPageLink","pageInfo","msgBody","getMessageType","isInitMsg","true","false","jQuery","chkLateLoaded","evt","capitalizeFirstLetter","charAt","toUpperCase","formatLogMsg","console","splitName","manageTriggerEvent","listener","add","eventName","handleEvent","eventType","remove","eventNames","checkCalcMode","calcModeDefault","modes","type","forceIntervalTimer","MutationObserver","WebKitMutationObserver","initInterval","addImageLoadListners","mutation","addImageLoadListener","element","complete","imageLoaded","imageError","elements","attributeName","removeImageLoadListener","splice","removeFromArray","imageEventTriggered","typeDesc","mutationObserved","mutations","observer","observe","attributes","attributeOldValue","characterData","characterDataOldValue","childList","subtree","createMutationObserver","setupBodyMutationObserver","setInterval","abs","prop","retVal","defaultView","side","elementsLength","elVal","maxVal","Side","timer","chkEventThottle","dimention","tag","triggerEvent","triggerEventDesc","currentHeight","currentWidth","checkTolarance","isSizeChangeDetected","lockTrigger","resetPage","hcm","postMessage","readyState","count","logEnabled","hiddenCheckEnabled","msgHeaderLen","msgId","requestAnimationFrame","settings","defaults","bodyMarginV1","enablePublicMethods","maxHeight","Infinity","maxWidth","minHeight","scrolling","sizeHeight","sizeWidth","warningTimeout","onClose","onClosed","onInit","onResized","onScroll","frameTimer","each","setupIFrame","end","info","factory","getMutationObserver","MozMutationObserver","isLogEnabled","iframeId","output","enabled","retStr","getMyID","formatLogHeader","iFrameListener","resizeIFrame","ensureInRange","syncResize","setSize","setPagePosition","on","Dimension","dimension","getMsgBody","sendPageInfoToIframe","frameId","bodyPosition","iFramePosition","trigger","iframeHeight","iframeWidth","clientHeight","innerHeight","clientWidth","innerWidth","offsetLeft","documentHeight","documentWidth","windowHeight","windowWidth","scrollRequestFromChild","addOffset","newPosition","unsetPagePosition","funcName","chkEvent","retBool","retCode","compStyle","createOutgoingMsg","iFrameReadyMsgReceived","boxSizing","paddingTop","paddingBottom","getPaddingEnds","borderTopWidth","borderBottomWidth","getBorderEnds","loaded","hasSettings","remoteHost","origin","checkList","Error","isMessageFromIFrame","closeIFrame","setListener","sendPageInfo","stop","stopPageInfo","startPageInfoMonitor","actionMsg","removeIframeListeners","parentNode","removeChild","chkZero","checkIFrames","settingId","chkDimension","offsetParent","checkIFrame","debouce","fixHiddenIFrames","processDimension","setDimension","doNotSync","jasmine","calleeMsg","noResponseWarning","errorShown","msgTimeout","ensureHasId","checkOptions","option","copyOptions","processOptions","overflow","setScrolling","addStyle","chkMinMax","setLimits","removedNodes","removedNode","createDestroyObserver","resetRequertMethod","removeListeners","anchor","time","tabVisible","visibilityState","sendTriggerMsg","isIFrameResizeEnabled","tagName","chkType","iFrames","vendors","setupRequestAnimationFrame","warnDeprecatedOptions","iframeResize","iframeResizer","iframeResizerContentWindow","__webpack_module_cache__","__webpack_require__","moduleId","__webpack_modules__","getter","__esModule","d","definition","o","obj","r","toStringTag"],"mappings":"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","file":"iframe.js","sourcesContent":["module.exports = require(\"core-js-pure/stable/instance/concat\");","module.exports = require(\"core-js-pure/stable/instance/filter\");","module.exports = require(\"core-js-pure/stable/instance/includes\");","module.exports = require(\"core-js-pure/stable/instance/some\");","module.exports = require(\"core-js-pure/features/object/define-property\");","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","var _Object$defineProperty = require(\"../core-js/object/define-property\");\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n\n _Object$defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","require('iframe-resizer');\n\nexport function generateIFrame(domain, queryParam, urlParam) {\n var isLocalHost = window.location.host.split(':')[0] === 'localhost';\n var containerEl = document.querySelector('#answers-container');\n var iframe = document.createElement('iframe');\n var pathToIndex = containerEl.dataset.path;\n iframe.allow = 'geolocation';\n\n domain = domain || '';\n queryParam = queryParam || 'query';\n urlParam = urlParam || 'verticalUrl';\n\n var calcFrameSrc = function() {\n var paramString = window.location.search;\n paramString = paramString.substr(1, paramString.length);\n\n // Decode ASCII forward slash to avod repeat encodings on page refreshes\n paramString = paramString.replace(\"%2F\", \"/\");\n\n // Parse the params out of the URL\n var params = paramString.split('&'),\n verticalUrl;\n var referrerPageUrl = document.referrer.split('?')[0].split('#')[0];\n\n if (pathToIndex) {\n verticalUrl = pathToIndex;\n } else if (isLocalHost) {\n verticalUrl = 'index.html'; // Default for localhost is index.html, empty o/w\n }\n\n // Don't include the verticalUrl or raw referrerPageUrl in the frame src\n var new_params = params.filter(function(param) {\n return (param.split('=')[0] !== 'verticalUrl') &&\n (param.split('=')[0] !== 'referrerPageUrl');\n });\n\n for (var i = 0; i < params.length; i ++) {\n var kv = params[i].split('=');\n if (kv[0] === 'verticalUrl') {\n verticalUrl = kv[1];\n }\n\n if (kv[0] === 'referrerPageUrl') {\n referrerPageUrl = kv[1];\n }\n }\n\n new_params.push('referrerPageUrl=' + referrerPageUrl);\n\n // Build the Iframe URL\n var iframeUrl = domain;\n if (verticalUrl) {\n iframeUrl += '/' + verticalUrl;\n }\n\n iframeUrl += '?' + new_params.join('&');\n return iframeUrl;\n };\n \n iframe.src = calcFrameSrc();\n iframe.frameBorder = 0;\n\n // For dynamic iFrame sizing\n iframe.style.width = '1px';\n iframe.style.minWidth = '100%';\n iframe.id = 'answers-frame';\n\n // Scroll to the top of the page when the iframe loads or a link is clicked.\n iframe.addEventListener('load', () => {\n document.documentElement.scrollTop = 0;\n // For Safari\n document.body.scrollTop = 0;\n });\n\n window.onpopstate = function() {\n iframe.contentWindow.location.replace(calcFrameSrc());\n };\n\n containerEl.appendChild(iframe);\n\n // For dynamic iFrame resizing\n iFrameResize({\n checkOrigin: false,\n onMessage: function(messageData) {\n const message = JSON.parse(messageData.message);\n if (message.action === \"paginate\") {\n const iframeOffsetTop = iframe.offsetTop;\n document.documentElement.scrollTop = iframeOffsetTop;\n document.body.scrollTop = iframeOffsetTop; // For Safari\n return;\n }\n const params = message.params;\n const pageTitle = message.pageTitle;\n pageTitle && (iframe.title = pageTitle);\n iframe.iFrameResizer.resize();\n var currLocation = window.location.href.split('?')[0];\n var newLocation = currLocation + '?' + params;\n if (window.location.href !== newLocation) {\n history.replaceState({query: params}, window.document.title, newLocation);\n }\n }\n }, '#answers-frame');\n}\n","import { generateIFrame } from './iframe-common';\nimport InjectedData from './models/InjectedData';\n\nconst domain = new InjectedData().getDomain();\ngenerateIFrame(domain);\n","import { isStaging } from '../is-staging';\nimport { DomainTypes } from './domaintypes';\n\n/**\n * InjectedData represents the data injected by Jambo\n */\nexport default class InjectedData {\n constructor() {\n /**\n * @type {Object}\n */\n this.injectedData = JSON.parse(process.env.JAMBO_INJECTED_DATA || '{}');\n }\n\n /**\n * Returns the domain injected by jambo based whether the current site is staging or not\n *\n * @returns {string}\n */\n getDomain() {\n const injectedPagesData = this.injectedData.pages || {};\n return isStaging(injectedPagesData.stagingDomains)\n ? this.getStagingDomain()\n : this.getProdDomain();\n }\n\n /**\n * Returns the injected staging domain\n *\n * @returns {boolean}\n */\n getStagingDomain() {\n return this._getDomain(DomainTypes.STAGING)\n }\n\n /**\n * Returns the injected prod domain\n *\n * @returns {boolean}\n */\n getProdDomain() {\n return this._getDomain(DomainTypes.PROD)\n }\n\n /**\n * Returns the injected domain based on the given type\n *\n * @param {string} domainType\n * @returns {string}\n */\n _getDomain(domainType) {\n const injectedDomains = this._getInjectedPagesDomains() || {};\n if (!injectedDomains[domainType] || !injectedDomains[domainType].domain) {\n return '';\n }\n const isHttps = injectedDomains[domainType].isHttps;\n const protocol = isHttps ? 'https://' : 'http://';\n return protocol + injectedDomains[domainType].domain;\n }\n\n /**\n * Returns the injected pages domains object if present\n *\n * @returns {Object}\n */\n _getInjectedPagesDomains() {\n return this.injectedData.pages && this.injectedData.pages.domains;\n }\n}\n","/**\n * Determines whether the current url is staging or production.\n */\nexport function isStaging(stagingDomains) {\n const defaultStagingDomains = ['127.0.0.1', 'localhost', 'office.yext.com'];\n const _stagingDomains = defaultStagingDomains.concat(stagingDomains);\n const currentUrl = window.location.href;\n return _stagingDomains.some(domain => currentUrl.includes(domain));\n}\n","exports.DomainTypes = {\n STAGING: 'staging',\n PROD: 'prod'\n};","require('../../../modules/es.array.concat');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').concat;\n","require('../../../modules/es.array.filter');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').filter;\n","require('../../../modules/es.array.includes');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').includes;\n","require('../../../modules/es.array.some');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').some;\n","var concat = require('../array/virtual/concat');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.concat;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.concat) ? concat : own;\n};\n","var filter = require('../array/virtual/filter');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.filter;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.filter) ? filter : own;\n};\n","var arrayIncludes = require('../array/virtual/includes');\nvar stringIncludes = require('../string/virtual/includes');\n\nvar ArrayPrototype = Array.prototype;\nvar StringPrototype = String.prototype;\n\nmodule.exports = function (it) {\n var own = it.includes;\n if (it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.includes)) return arrayIncludes;\n if (typeof it === 'string' || it === StringPrototype || (it instanceof String && own === StringPrototype.includes)) {\n return stringIncludes;\n } return own;\n};\n","var some = require('../array/virtual/some');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.some;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.some) ? some : own;\n};\n","require('../../modules/es.object.define-property');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nvar defineProperty = module.exports = function defineProperty(it, key, desc) {\n return Object.defineProperty(it, key, desc);\n};\n\nif (Object.defineProperty.sham) defineProperty.sham = true;\n","require('../../../modules/es.string.includes');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('String').includes;\n","var parent = require('../../es/object/define-property');\n\nmodule.exports = parent;\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","module.exports = function () { /* empty */ };\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6)\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\n\nvar defineProperty = Object.defineProperty;\nvar cache = {};\n\nvar thrower = function (it) { throw it; };\n\nmodule.exports = function (METHOD_NAME, options) {\n if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];\n if (!options) options = {};\n var method = [][METHOD_NAME];\n var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;\n var argument0 = has(options, 0) ? options[0] : thrower;\n var argument1 = has(options, 1) ? options[1] : undefined;\n\n return cache[METHOD_NAME] = !!method && !fails(function () {\n if (ACCESSORS && !DESCRIPTORS) return true;\n var O = { length: -1 };\n\n if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower });\n else O[1] = 1;\n\n method.call(O, argument0, argument1);\n });\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (e) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (f) { /* empty */ }\n } return false;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","var path = require('../internals/path');\n\nmodule.exports = function (CONSTRUCTOR) {\n return path[CONSTRUCTOR + 'Prototype'];\n};\n","'use strict';\nvar global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar isForced = require('../internals/is-forced');\nvar path = require('../internals/path');\nvar bind = require('../internals/function-bind-context');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\n\nvar wrapConstructor = function (NativeConstructor) {\n var Wrapper = function (a, b, c) {\n if (this instanceof NativeConstructor) {\n switch (arguments.length) {\n case 0: return new NativeConstructor();\n case 1: return new NativeConstructor(a);\n case 2: return new NativeConstructor(a, b);\n } return new NativeConstructor(a, b, c);\n } return NativeConstructor.apply(this, arguments);\n };\n Wrapper.prototype = NativeConstructor.prototype;\n return Wrapper;\n};\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var PROTO = options.proto;\n\n var nativeSource = GLOBAL ? global : STATIC ? global[TARGET] : (global[TARGET] || {}).prototype;\n\n var target = GLOBAL ? path : path[TARGET] || (path[TARGET] = {});\n var targetPrototype = target.prototype;\n\n var FORCED, USE_NATIVE, VIRTUAL_PROTOTYPE;\n var key, sourceProperty, targetProperty, nativeProperty, resultProperty, descriptor;\n\n for (key in source) {\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contains in native\n USE_NATIVE = !FORCED && nativeSource && has(nativeSource, key);\n\n targetProperty = target[key];\n\n if (USE_NATIVE) if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(nativeSource, key);\n nativeProperty = descriptor && descriptor.value;\n } else nativeProperty = nativeSource[key];\n\n // export native or implementation\n sourceProperty = (USE_NATIVE && nativeProperty) ? nativeProperty : source[key];\n\n if (USE_NATIVE && typeof targetProperty === typeof sourceProperty) continue;\n\n // bind timers to global for call from export context\n if (options.bind && USE_NATIVE) resultProperty = bind(sourceProperty, global);\n // wrap global constructors for prevent changs in this version\n else if (options.wrap && USE_NATIVE) resultProperty = wrapConstructor(sourceProperty);\n // make static versions for prototype methods\n else if (PROTO && typeof sourceProperty == 'function') resultProperty = bind(Function.call, sourceProperty);\n // default case\n else resultProperty = sourceProperty;\n\n // add a flag to not completely full polyfills\n if (options.sham || (sourceProperty && sourceProperty.sham) || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(resultProperty, 'sham', true);\n }\n\n target[key] = resultProperty;\n\n if (PROTO) {\n VIRTUAL_PROTOTYPE = TARGET + 'Prototype';\n if (!has(path, VIRTUAL_PROTOTYPE)) {\n createNonEnumerableProperty(path, VIRTUAL_PROTOTYPE, {});\n }\n // export virtual prototype methods\n path[VIRTUAL_PROTOTYPE][key] = sourceProperty;\n // export real prototype methods\n if (options.real && targetPrototype && !targetPrototype[key]) {\n createNonEnumerableProperty(targetPrototype, key, sourceProperty);\n }\n }\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func\n Function('return this')();\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = true;\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","module.exports = {};\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.6.4',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n // eslint-disable-next-line no-undef\n && !Symbol.sham\n // eslint-disable-next-line no-undef\n && typeof Symbol.iterator == 'symbol';\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name)) {\n if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n concat: function concat(arg) { // eslint-disable-line no-unused-vars\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n// Edge 14- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n// `Array.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: !USES_TO_LENGTH }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\nvar $ = require('../internals/export');\nvar $some = require('../internals/array-iteration').some;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('some');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('some');\n\n// `Array.prototype.some` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar objectDefinePropertyModile = require('../internals/object-define-property');\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\n$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, {\n defineProperty: objectDefinePropertyModile.f\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~String(requireObjectCoercible(this))\n .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var parent = require('../../es/instance/concat');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/filter');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/includes');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/some');\n\nmodule.exports = parent;\n","module.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 *\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 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 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 = getNow()\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 = 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 // 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 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 // 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 (' + 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 onReady()\n }\n\n function readDataFromParent() {\n function strBool(str) {\n return 'true' === str\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 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 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 // 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 ? 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 } 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, 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 / 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 ? retVal[prop] : 0\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(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 ? 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 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).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// 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 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 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 onClose: function () {\n return true\n },\n onClosed: function () {},\n onInit: function () {},\n onMessage: function () {\n warn('onMessage function not defined')\n },\n onResized: function () {},\n onScroll: function () {\n return true\n }\n }\n\n function getMutationObserver() {\n return (\n window.MutationObserver ||\n window.WebKitMutationObserver ||\n window.MozMutationObserver\n )\n }\n\n function addEventListener(el, evt, func) {\n el.addEventListener(evt, func, false)\n }\n\n function removeEventListener(el, evt, func) {\n el.removeEventListener(evt, func, false)\n }\n\n function setupRequestAnimationFrame() {\n var vendors = ['moz', 'webkit', 'o', 'ms']\n var 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 } else {\n // Firefox extension content-scripts have a globalThis object that is not the same as window.\n // Binding `requestAnimationFrame` to window allows the function to work and prevents errors\n // being thrown when run in that context, and should be a no-op in every other context.\n requestAnimationFrame = requestAnimationFrame.bind(window)\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 // eslint-disable-next-line no-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 on('onResized', 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 var height = data[1] ? parseInt(data[1], 10) : 0\n var iframe = settings[data[0]] && settings[data[0]].iframe\n var compStyle = getComputedStyle(iframe)\n\n return {\n iframe: iframe,\n id: data[0],\n height: height + getPaddingEnds(compStyle) + getBorderEnds(compStyle),\n width: data[2],\n type: data[3]\n }\n }\n\n function getPaddingEnds(compStyle) {\n if (compStyle.boxSizing !== 'border-box') {\n return 0\n }\n var top = compStyle.paddingTop ? parseInt(compStyle.paddingTop, 10) : 0\n var bot = compStyle.paddingBottom\n ? parseInt(compStyle.paddingBottom, 10)\n : 0\n return top + bot\n }\n\n function getBorderEnds(compStyle) {\n if (compStyle.boxSizing !== 'border-box') {\n return 0\n }\n var top = compStyle.borderTopWidth\n ? parseInt(compStyle.borderTopWidth, 10)\n : 0\n var bot = compStyle.borderBottomWidth\n ? parseInt(compStyle.borderBottomWidth, 10)\n : 0\n return top + bot\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(iframeId, 'Checking ' + dimension + ' is in range ' + min + '-' + max)\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 'onMessage passed: {iframe: ' +\n messageData.iframe.id +\n ', message: ' +\n msgBody +\n '}'\n )\n on('onMessage', {\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 documentHeight: document.documentElement.clientHeight,\n documentWidth: document.documentElement.clientWidth,\n windowHeight: window.innerHeight,\n windowWidth: window.innerWidth\n })\n }\n\n function sendPageInfoToIframe(iframe, iframeId) {\n function debouncedTrigger() {\n trigger('Send Page Info', 'pageInfo:' + getPageInfo(), iframe, iframeId)\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 !== on('onScroll', 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 on(funcName, val) {\n return chkEvent(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 closeIFrame(messageData.iframe)\n break\n\n case 'message':\n forwardMsgFromIFrame(getMsgBody(6))\n break\n\n case 'autoResize':\n settings[iframeId].autoResize = JSON.parse(getMsgBody(9))\n break\n\n case 'scrollTo':\n scrollRequestFromChild(false)\n break\n\n case 'scrollToOffset':\n scrollRequestFromChild(true)\n break\n\n case 'pageInfo':\n sendPageInfoToIframe(\n settings[iframeId] && settings[iframeId].iframe,\n iframeId\n )\n startPageInfoMonitor()\n break\n\n case 'pageInfoStop':\n stopPageInfoMonitor()\n break\n\n case 'inPageLink':\n findTarget(getMsgBody(9))\n break\n\n case 'reset':\n resetIFrame(messageData)\n break\n\n case 'init':\n resizeIFrame()\n on('onInit', messageData.iframe)\n break\n\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 // eslint-disable-next-line no-restricted-syntax, guard-for-in\n for (var iframeId in settings) {\n trigger(\n 'iFrame requested init',\n createOutgoingMsg(iframeId),\n settings[iframeId].iframe,\n iframeId\n )\n }\n }\n\n function firstRun() {\n if (settings[iframeId]) {\n settings[iframeId].firstRun = false\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 = 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 chkEvent(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 if (chkEvent(iframeId, 'onClose', iframeId) === false) {\n log(iframeId, 'Close iframe cancelled by onClose event')\n return\n }\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 (error) {\n warn(error)\n }\n\n chkEvent(iframeId, 'onClosed', 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 (\n doNotSync !== messageData.type &&\n requestAnimationFrame &&\n // including check for jasmine because had trouble getting spy to work in unit test using requestAnimationFrame\n !window.jasmine\n ) {\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 += count++\n }\n return id\n }\n\n function ensureHasId(iframeId) {\n if ('' === iframeId) {\n // eslint-disable-next-line no-multi-assign\n iframe.id = iframeId = newId()\n logEnabled = (options || {}).log\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\n case true:\n iframe.scrolling = 'yes'\n break\n\n case false:\n iframe.scrolling = 'no'\n break\n\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 (settings[iframeId]) {\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 // eslint-disable-next-line no-restricted-syntax\n for (var option in defaults) {\n if (Object.prototype.hasOwnProperty.call(defaults, option)) {\n settings[iframeId][option] = Object.prototype.hasOwnProperty.call(\n options,\n option\n )\n ? options[option]\n : defaults[option]\n }\n }\n }\n\n function getTargetOrigin(remoteHost) {\n return '' === remoteHost ||\n null !== remoteHost.match(/^(about:blank|javascript:|file:\\/\\/)/)\n ? '*'\n : remoteHost\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 iframeId,\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 processOptions(options) {\n options = options || {}\n settings[iframeId] = {\n firstRun: true,\n iframe: iframe,\n remoteHost: iframe.src && iframe.src.split('/').slice(0, 3).join('/')\n }\n\n checkOptions(options)\n Object.keys(options).forEach(depricate, 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 }\n\n // Not testable in PhantomJS\n /* istanbul ignore next */\n\n 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 Object.keys(settings).forEach(function (key) {\n checkIFrame(key)\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 }\n\n // Not testable in PhantomJS\n /* istanbul ignore next */\n 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 Object.keys(settings).forEach(function (iframeId) {\n if (isIFrameResizeEnabled(iframeId)) {\n trigger(eventName, event, settings[iframeId].iframe, 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\n addEventListener(document, '-webkit-visibilitychange', tabVisible)\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