{"version":3,"file":"scripts.b3d21e4cecb70384.js","mappings":"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mBwD,yBAAyB,OAAOgB,qBAA+BL,sBAAsBF,mCAAkCjE,kDAAmD,kFAAkF,mBAAmBwD,yBAAyB,OAAOgB,qBAA+BL,sBAAsBF,uCAAsCjE,iDAAkD,2CAA2C,oBAAoBwD,0BAA0B,OAAOgB,qBAA+BL,sBAAsBF,iCAAgCjE,oDAAoDU,4DAApic,gFAAoicA,GAA4D,4ECO/0vC,YACD,+BAEA,SACAmE,MACAC,MAEAC,GADA,UACAC,OACAC,mBACAC,aACAC,OACAC,gCACAC,GACAC,MACAC,SACAC,aACAC,yBAEAC,KACAC,OACAC,IACAC,cACAC,oBACAC,gBACAC,eACAC,iBACAC,eACAC,eACAC,uBACAC,qCACArE,mBACAsE,YACAC,OACAC,cACAC,aACAC,YACAC,WACAC,eACAC,oBACAC,aACAC,cACAC,aACAC,mBACAC,YACAC,gCACAC,mBACA,QACA,EACAC,sBACAC,oBACAC,qBACAC,mCACA,EACAC,0BACAC,0BACAC,uBACAC,oBACA,QACA,GA2oCAC,KAsMAC,eAdA,cACAC,KAEMA,oBACNA,8BAKA,kCAJA,gBACAC,MACA,GAEAC,KACA,GARAC,0DAUA,CAGAC,gBAGA,sCACAC,aACI,2DAEJC,oBAEAP,4CAp5CA,CA4DA,cACA,OACAA,yBACAA,+BACAA,0BAEA,CAEA,mBACAQ,0BACA,CAEA,mBACAA,6BACA,CAwCA,eACA,uBACA,CAEA,gBACAC,mBACA,CAEA,iBACAA,oBACA,CAEA,gBACAA,iBACA,CAEA,sBACA,wCAEA/E,WAvBA,eACA,cAhBA,eACA,sBAEA,kCAGAgF,EADAV,+CACAA,mCAEA,wBAIAU,CACA,CAGAC,OACA,CAqBAC,MAEA,CAEA,eACA,aAOAC,YACAA,WAEAC,EATA,aACAC,KACAC,KACAC,iBACA,EAKAC,SACA,CAiBA,cACA,iCACA,GAEAC,2CACAA,gBACAC,6BACA,EAEA,CAEA,cACA,iCACA,GAEAD,iBACAC,8BACA,IACAD,oBACAC,iCACA,EAEA,CAEA,cACA,4BACAC,wBACAC,kBACAC,eAEA9C,2CAEA8C,MACAA,IACA9C,+BAGA8C,MACAA,IACA9C,+BAGAyC,SACA,CAqEA,cACA,sCACA,CA8CA,iBA+3BA,kBACAnB,OACAA,2BACAA,UACAzD,GACA,EAAOkF,GAEP,CAl4BAC,CAHA,aACAC,+BA5BA,aACA,4CACAC,mCAEA,uBACAC,sBACAC,oBACAC,sBACAxG,sCACA0E,uBAEA+B,qBACAzG,qCACA0E,sBAEAgC,mCACAC,sCACAC,6BACAC,8BACAC,qDACAC,mDACAC,gCACAC,+BAEA,CAIAC,OACA,EACA,KACA,CAoDA,cACA,gCAEA,YAEA,CACArG,yCACAvB,wCAEA,CAEA,cA6BA,QACA6H,YACA,CAActG,SACduG,EAxBA,aACA,OACAvG,sBACAvB,uBAEA,CAmBA+H,GAEAlE,EACAmE,EACA,8CACAC,IACA,MACAA,IACA,KAGA7C,yBA5BA,aACAA,oBACAA,gDACA0C,IACAA,KAGAhD,EACAkD,EACA,wEAGA,CAiBAE,GA1CA,aACAzF,IACA0F,IACAtE,SACA,CAwCAuE,EAEA,CAEA,cACA,qBACAhC,KAEAiC,GAEA,CAoDA,eACA,SAEA,8CACA,sBACAC,GACA/G,OACAvB,OAEA,MACAsI,GACA/G,UACAvB,YAIAqG,MACAkC,gBACAC,oBACAC,oBACA9H,aAEA,CAEA,iBACA,eACA,CA+GA,cACA2F,KACA0B,OAEA,iCAtBA,cAEA,eACAlB,EACA,wBACA4B,KACA1F,YACAgF,EAGA,CAaAW,GAjYA,aACA,OACApG,2BACAqG,+BAEA,CA6XMC,IACNvC,EA/eA,aACA,+BACAwC,2BACAP,0BACAhC,sBAEA,OACAgC,SACAjJ,QACAwJ,mBACAC,WACApI,UAEA,CAkeAqI,GAEAhG,EADAgF,UAEAhF,iBA/XA,aAGA,gBAA0CiG,4BAE1C,UACApF,mDAGAqF,CACA,CAwXAC,IAhDA,eACA,SAEA,cACAC,KACAtE,EACAwB,OACA,oBACA0B,EACA,kBACAY,KAIAQ,CACA,CAiCAC,MACAxF,qBAxRA,cACA,SAEA,yBACAiB,mCACAsE,MAEAA,CACA,CAkRAE,IA5bA,aA8BA,eACA9F,yBAEA,qBAhCA,aA0BA,6BAzBA,aACA,QACA0F,MAQA,IANArF,EACAmE,EACA,wDACAxE,GAGiBpF,WAAwBA,IACzC,aACA8K,MACA,KACA,CAEA,SACA,CAQAK,GANA,aACA,4BACA,8CACAC,KACA,CAEAC,EACA,CAKAC,GACA,gBACA,qCACAF,EACA,QACAlD,YACA,kBACAqD,OACA,sHAIA,QACA,CA8YAC,IA7HA,cAGA,OAFA5G,qBAsGA,cACAA,OACAA,iBAEA,CA1GA6G,GAEAvD,YACA,QACAwD,YACA,UAEA,WAhQA,cACAjG,EACAmE,EACA,8BACA1B,YACA,cACAyD,EACA,KAGA1D,gBACAkC,gBACAzG,wBAGA+B,SACA,CAiPAmG,OACA,UAEA,aACAC,mBACA,UAEA,aACAA,mBACA,UAEA,aACAjH,iCACA,UAEA,WACAkH,MACA,UAEA,iBACAA,MACA,UAEA,WACAC,EACAnH,kBACAgF,GAxOA,cACA,gBACA,cACAhF,KACAmH,iBAEAC,GAEA,CAES,yCACTvG,uCACAwG,eACA,EACA,CAEA,aACAC,eACA,CAMA,SAJA,aACAA,YACA,EAIAC,GAEAvH,OACAA,oBAEA,CA2MAwH,GACA,UAEA,gBA5MA,cACAxH,0BACAA,2BACAA,kBAEA,CAwMAyH,GACA,UAEA,cA1HA,cAmCA,0BACAC,wBACAC,EACAjK,4BACAA,iCAEAiK,EAxCA,aACA,YAEA9G,EACAmE,EACA,4BACA4C,EACA,WACAC,KACA,OACAA,MAEApI,GACAlB,OACAvB,QAGAmI,IACAtE,SACA,CAsBAiH,GACQ1F,yBArBR,aACAA,oBACAA,oCAEAvB,EACAmE,EACA,iBACA4C,EACA,+CAGA,CAWAG,GAEAlH,oCAEA,CA2EAmH,OACA,UAEA,QACAC,KACA,UAEA,OACAC,IACA7E,sBACA,cAIA,qBACA,qBAEAvB,EACA,iCACAwB,OACA,yGAIA4E,IAGA,CAsDAC,KAIA3F,oBAEA,CAEA,kBACA,WACA4F,OAEA,QAGA,uBAFAf,WAKA,oBACAgB,yCAHAD,MAIA,CAIA,QACA,CAEA,qBAEApI,EADAuF,KAEA,CAEA,cACA,WACA,0BAIA1E,2BAEA,IAEA0E,cACAA,2BAIA,CAFA,MAAMtG,GACN6C,IACA,CAEAwG,kBACAzH,UACA0H,IAdA,MAFA1H,8CAiBA,CAEA,cACA,UAWAA,EACAmE,EACA,uBAZAvF,GACAlB,EACA6D,uBACAA,mBACA1E,oCACAV,EACAoF,uBACAA,mBACA1E,qCAIAa,UAGA,CAEA,cACA,WACA6D,yBACAvB,EACAmE,EACA,mCAEAK,IAEA,CAEA,aACA5F,MACA,CAEA,cAMAoB,EACAyC,KACA,4BACA,uCAEAkF,QACAtF,EAXA,aACAC,KACAW,gCACA,EAQAR,UACA,CAEA,cAmBA,eAMAlE,iBACAA,MACAyB,4DA+bA,aACA,aA2BA4H,oCA1BA,cACA,cACA,MACA,SACAzI,2BAEA,CAOAA,MALA,cACA,4BACA,CAIA0I,gBACAC,0BAEA7E,EACA,oBACA,SACA9D,YACA4I,EAGA,CAGAC,GACA,EACA,CAEA,cACAhI,EACA,SACA,iDAEAiI,OACA,CAiBA,WACAC,GAhBA,aACA,qCASA,SAEAC,UAVA,CACAC,cACAC,qBACAC,iBACAC,yBACAC,aACAC,YAKA,CAIAC,EAEA,CA1fAC,GAEA,CAEA,eA/BA,cACAlG,MAIAA,4BACAzC,EACAyC,KACA,WACA0B,EACA,KACAtB,EACA,WACAJ,KACA,OAZAzC,uCAcA,EAgBA4I,IACAC,IACA,CAEA,kBAEA1J,OACAA,iBACA2J,YAEA3J,gBACA2J,WAGA,CAEA,kBAGAC,YACAlK,KAEA0C,gBAEAvB,qCACAnB,OAEA2H,GAEA,CAEA,sBA2DA,SAIArH,EAFA1D,aAxCA,aAEAiJ,GACA,qBACA,uBAxBA,aACA,8BACA1E,EACAvE,EACA,IACAuN,EACA,2BACAvN,EACA,MACAsJ,EACA,mBACA+B,GAEApC,mCACA,CAaAuE,GAXA,aACAhI,sCACA,CAWAiI,EAEA,CAgCAC,GA9BA,aAcAC,GACAjK,MACAA,sBAEAA,2BAjBA,aACAA,yBACAkK,KACApI,EACAxF,EACA,mCACA0D,wBACA,gOAGA,EASAA,qBAGA,CAQAmK,GAEA,CAEA,cACA,OACAnF,EACA,IACAhF,kBACA,IACAA,eACA,IACAA,SACA,IACAA,cACA,IACAA,yBACA,IACAA,gBACA,IACAA,gBACA,IACAA,6BACA,IACAA,oBACA,IACAA,iBACA,IACAA,eACA,IACAA,iBACA,IACAA,gBACA,IACAA,4BACA,IACAA,gBAEA,CAEA,gBAkOA,eACA,0BAEA,iBACA,MACA,gDACAtF,uBACAA,QACAoH,EACAkD,EACA,gBACAzH,EACA,uBACA6M,EACA,+DAEA,CACA,CA0BA,MA/NA,cACA,eAEA7E,OAXA,aACA,0BACA,2CACAjJ,SAEAA,CACA,CAKA+N,GACAlL,WAAmC0B,IACnCA,EACAmE,EACA,+CAIAA,CACA,CAmNAsF,QAJA,cACA,kCACA,CAIAC,IA1BA,eACAC,QACAxK,MACA6G,YACAtB,SACAkF,yDAnDA,cACA,sBACA,+CAEA,CAkDAC,IACAjC,6BAjDA,cAEA,gBACAA,6CACAzI,6CACAwK,EACAG,GAEAH,KACAtK,MAGA,CAsCA0K,IAEA5K,OACAA,mBACA,qBAxCA,cACA,cACA,uDACA,IACAyK,CACA,CAoCAI,kBACA,IAEA,CASAC,IApNA,aAcA,OAbAjK,EACAmE,EACA,qBACAhF,qBACA,UACA,YACA,QACAgF,GAEAO,kBACA,2BACA,SACA,OACAvF,0BACA,OACA,WAEA,EACAuF,kBACA,WAEA,EACAA,iBACA,cAGAA,iBACAvF,eACA,KAEA,CAsLA+K,GAhRA,aACA,cAEA/K,eACA,cAEAuF,wBACA1E,EACAmE,EACA,6BAGA,CAEA,cACA,GACAhF,cACAA,cAEA,gBACA,gBACA0D,EACA,+BACAA,EAGA,CAEAsH,YACAA,WAEAC,eACAA,eACAA,cACAA,aACA,CA8OAC,GAlLA,cAEA,iBACAlL,wBACA,iCAEAA,kCACAA,gBACAA,qBAEA,CAyKAmL,GA/GA,cA0BA,YACApC,IArBA,eACAxD,cAIA,oBACA6F,wBACAC,4CACAC,qBACAC,QACAzE,IAEA,EACA,EACA,GACAkC,sBACAK,cAEA,CAIAmC,KAGAC,YA9BA,aACA3H,4BA1DA,eAIA9D,uBAEAA,MACAA,mCAGAiI,GAAsB1C,uCAEtB,CA+CAmG,EACA,GA4BA5H,kBACA,CA+EA6H,OA1JA,aACA3L,OACAA,2BACA4L,+BAEAC,uBACA,KACA7L,aAGA8L,cACA,KACA,gBACA,SACA9L,aAGA+L,yBACAjI,EACA,iBACA,kBACA9D,YACAgF,EAEA,EAEAgH,wBAEAlI,EACA,eACA,YAHAhF,qBAIAkB,YACAgF,EAEA,GAGA,CAsHAiH,IAEAnK,qCAEA,CAEA,gBACA,WACA7B,wBACAA,OACAvB,GACA,EAAOkF,GAEP,CAwFA,aAKA,sCACA/C,gDACAiI,EANA,aACAoD,yBACA,EAIA,IAEA,CAEA,gBAUAzD,oCATA,cACA,OACAzI,MACA,4BACAA,kBACAA,aAEA,EAGAmM,KACArI,oBAEA,EACA,CAcA,aACA,gBAWAsI,IAVA,aACA,cACA,yDACU,sCACV,oBACA,+CAGA,CAGAC,GACA/J,OACAgK,UAEA,CAUA,MAEA,OAnxCA,cACA,IACA/N,EADAgO,4BAIA,QAAgBhO,gBAA8CA,KAC9DmB,wCAGAA,GAMAA,mBALAmB,gDAOA,CAkwCA2L,GAzCA,aACAf,wBAEAA,+BA1CA,cAKA5K,gCACAiI,EALA,aACAoD,uBACA,EAGA,GACA,CAoCAO,UACA,GAEAhB,kCAEAA,yCACA,CAgCAiB,GAEA,cAKA,OAJAJ,KAdA,cACA9B,0BACA1I,EACA,qGAGA,CAUA6K,WAEAhF,OACA,gBACA,SACA0D,6BACA3N,uCACAiO,aAEA,UAEA,SACAA,OACA,cAGA,2DAGA,QACA,CACA,CA2BA,CAt5CC","names":["e","n","s","getArgs","setArgs","this","getEvalOrigin","setEvalOrigin","toString","functionName","u","r","l","o","c","i","parse","extractLocation","parseV8OrIE","parseFFOrSafari","parseOpera","parseOpera9","fileName","parseOpera10","parseOpera11","a","sourceCache","method","bind","t","line","then","exports","id","generatedOffset","generatedLine","consumer","get","source","p","m","_","O","y","b","g","scheme","f","apiKey","h","key","L","url","document","type","screen","navigator","console","dateTime","w","severity","N","E","A","M","title","x","S","setTimeout","fn","breadcrumbs","XMLHttpRequest","toUpperCase","message","C","detail","error","charAt","logEnabled","hiddenCheckEnabled","msgHeaderLen","length","msgId","msgIdLen","pagePosition","requestAnimationFrame","resetRequiredMethods","max","scroll","bodyScroll","documentElementScroll","settings","timer","defaults","autoResize","bodyBackground","bodyMargin","bodyMarginV1","bodyPadding","checkOrigin","inPageLinks","enablePublicMethods","heightCalculationMethod","interval","log","maxHeight","maxWidth","minHeight","minWidth","mouseEvents","resizeFrom","scrolling","sizeHeight","sizeWidth","warningTimeout","tolerance","widthCalculationMethod","onClose","onClosed","onInit","onMessage","warn","onMouseEnter","onMouseLeave","onResized","onScroll","frameTimer","window","$","setupIFrame","end","info","createJQueryPublicMethod","define","module","el","output","retStr","getMyID","formatLogHeader","ensureInRange","syncResize","setSize","setPagePosition","on","messageData","compStyle","parseInt","min","dimension","size","time","debounceFrameEvents","trigger","iFramePosition","iframeHeight","iframeWidth","clientHeight","clientWidth","offsetTop","offsetLeft","scrollTop","scrollLeft","documentHeight","documentWidth","windowHeight","windowWidth","getPageInfo","getElementPosition","newPosition","calcOffset","iframeId","offset","scrollParent","scrollTo","reposition","unsetPagePosition","mousePos","iframe","screenX","screenY","createOutgoingMsg","iFrameReadyMsgReceived","msg","isMessageForUs","height","width","processMsg","true","retCode","isMessageFromMetaParent","retBool","hasSettings","checkIFrameExists","checkList","origin","checkSingle","checkAllowedOrigin","event","isMessageFromIFrame","firstRun","closeIFrame","msgBody","forwardMsgFromIFrame","onMouse","scrollRequestFromChild","sendPageInfoToIframe","stop","func","setListener","start","startPageInfoMonitor","stopPageInfoMonitor","hashData","target","hash","jumpPosition","jumpToTarget","jumpToParent","findTarget","resetIFrame","resizeIFrame","actionMsg","retVal","funcName","chkEvent","removeIframeListeners","getPagePosition","Object","isVisible","chkDimension","settingId","checkIFrame","debouce","MutationObserver","observe","attributes","attributeOldValue","characterData","characterDataOldValue","childList","subtree","createMutationObserver","fixHiddenIFrames","setDimension","chkZero","processDimension","doNotSync","calleeMsg","postMessageToIFrame","iFrameNotFound","chkAndSend","noResponseWarning","errorShown","warnOnNoResponse","name","newId","ensureHasId","beenHere","options","remoteHost","checkOptions","option","copyOptions","getTargetOrigin","processOptions","setScrolling","chkMinMax","addStyle","setLimits","setupBodyMarginValues","mutations","Array","forEach","removedNode","createDestroyObserver","addEventListener","checkReset","init","close","removeListeners","resize","moveToAnchor","sendMessage","setupIFrameObject","sendTriggerMsg","isIFrameResizeEnabled","element","chkType","iFrames","vendors","setupRequestAnimationFrame","resizeIFrames","setupEventListeners","warnDeprecatedOptions"],"sourceRoot":"webpack:///","sources":["node_modules\\elmah.io.javascript\\dist\\elmahio.min.js","src\\assets\\js\\iframeResizer.js"],"sourcesContent":["/*!\r\n * elmah.io Javascript Logger - version 3.7.1\r\n * (c) 2018 elmah.io, Apache 2.0 License, https://elmah.io\r\n */\r\n!function(e,t){\"function\"==typeof define&&define.amd?define([],function(){return t(e)}):\"object\"==typeof exports?module.exports=t(e):e.Elmahio=t(e)}(\"undefined\"!=typeof global?global:\"undefined\"!=typeof window?window:this,function(e){\"use strict\";for(var t,n,r,o=function(){function e(e){return!isNaN(parseFloat(e))&&isFinite(e)}function t(e){return e.charAt(0).toUpperCase()+e.substring(1)}function n(e){return function(){return this[e]}}var r=[\"isConstructor\",\"isEval\",\"isNative\",\"isToplevel\"],o=[\"columnNumber\",\"lineNumber\"],i=[\"fileName\",\"functionName\",\"source\"],a=r.concat(o,i,[\"args\"]);function s(e){if(e instanceof Object)for(var n=0;n-1&&(e=e.replace(/eval code/g,\"eval\").replace(/(\\(eval at [^\\()]*)|(\\)\\,.*$)/g,\"\"));var t=e.replace(/^\\s+/,\"\").replace(/\\(eval code/g,\"(\").split(/\\s+/).slice(1),n=this.extractLocation(t.pop()),r=t.join(\" \")||void 0,i=[\"eval\",\"\"].indexOf(n[0])>-1?void 0:n[0];return new o({functionName:r,fileName:i,lineNumber:n[1],columnNumber:n[2],source:e})},this)},parseFFOrSafari:function(e){return e.stack.split(\"\\n\").filter(function(e){return!e.match(r)},this).map(function(e){if(e.indexOf(\" > eval\")>-1&&(e=e.replace(/ line (\\d+)(?: > eval line \\d+)* > eval\\:\\d+\\:\\d+/g,\":$1\")),-1===e.indexOf(\"@\")&&-1===e.indexOf(\":\"))return new o({functionName:e});var t=/((.*\".+\"[^@]*)?[^@]*)(?:@)/,n=e.match(t),r=n&&n[1]?n[1]:void 0,i=this.extractLocation(e.replace(t,\"\"));return new o({functionName:r,fileName:i[0],lineNumber:i[1],columnNumber:i[2],source:e})},this)},parseOpera:function(e){return!e.stacktrace||e.message.indexOf(\"\\n\")>-1&&e.message.split(\"\\n\").length>e.stacktrace.split(\"\\n\").length?this.parseOpera9(e):e.stack?this.parseOpera11(e):this.parseOpera10(e)},parseOpera9:function(e){for(var t=/Line (\\d+).*script (?:in )?(\\S+)/i,n=e.message.split(\"\\n\"),r=[],i=2,a=n.length;i/,\"$2\").replace(/\\([^\\)]*\\)/g,\"\")||void 0;i.match(/\\(([^\\)]*)\\)/)&&(t=i.replace(/^[^\\(]+\\(([^\\)]*)\\)$/,\"$1\"));var s=void 0===t||\"[arguments not available]\"===t?void 0:t.split(\",\");return new o({functionName:a,args:s,fileName:r[0],lineNumber:r[1],columnNumber:r[2],source:e})},this)}}),a=function(t,n){function r(e){return new Promise(function(t,n){var r=new XMLHttpRequest;r.open(\"get\",e),r.onerror=n,r.onreadystatechange=function(){4===r.readyState&&(r.status>=200&&r.status<300||\"file://\"===e.substr(0,7)&&r.responseText?t(r.responseText):n(new Error(\"HTTP status: \"+r.status+\" retrieving \"+e)))},r.send()})}function o(t){if(void 0!==e&&e.atob)return e.atob(t);throw new Error(\"You must supply a polyfill for window.atob in this environment\")}function i(e){if(\"object\"!=typeof e)throw new TypeError(\"Given StackFrame is not an object\");if(\"string\"!=typeof e.fileName)throw new TypeError(\"Given file name is not a String\");if(\"number\"!=typeof e.lineNumber||e.lineNumber%1!=0||e.lineNumber<1)throw new TypeError(\"Given line number must be a positive integer\");if(\"number\"!=typeof e.columnNumber||e.columnNumber%1!=0||e.columnNumber<0)throw new TypeError(\"Given column number must be a non-negative integer\");return!0}return function e(a){if(!(this instanceof e))return new e(a);a=a||{},this.sourceCache=a.sourceCache||{},this.sourceMapConsumerCache=a.sourceMapConsumerCache||{},this.ajax=a.ajax||r,this._atob=a.atob||o,this._get=function(e){return new Promise(function(t,n){var r=\"data:\"===e.substr(0,5);if(this.sourceCache[e])t(this.sourceCache[e]);else if(a.offline&&!r)n(new Error(\"Cannot make network requests in offline mode\"));else if(r){var o=e.match(/^data:application\\/json;([\\w=:\"-]+;)*base64,/);if(o){var i=o[0].length,s=e.substr(i),u=this._atob(s);this.sourceCache[e]=u,t(u)}else n(new Error(\"The encoding of the inline sourcemap is not supported\"))}else{var l=this.ajax(e,{method:\"get\"});this.sourceCache[e]=l,l.then(t,n)}}.bind(this))},this._getSourceMapConsumer=function(e,n){return new Promise(function(r,o){if(this.sourceMapConsumerCache[e])r(this.sourceMapConsumerCache[e]);else{var i=new Promise(function(r,o){return this._get(e).then(function(e){\"string\"==typeof e&&(e=function(e){if(\"undefined\"!=typeof JSON&&JSON.parse)return JSON.parse(e);throw new Error(\"You must supply a polyfill for JSON.parse in this environment\")}(e.replace(/^\\)\\]\\}'/,\"\"))),void 0===e.sourceRoot&&(e.sourceRoot=n),r(new t.SourceMapConsumer(e))},o)}.bind(this));this.sourceMapConsumerCache[e]=i,r(i)}}.bind(this))},this.pinpoint=function(e){return new Promise(function(t,n){this.getMappedLocation(e).then(function(e){function n(){t(e)}this.findFunctionName(e).then(t,n).catch(n)}.bind(this),n)}.bind(this))},this.findFunctionName=function(e){return new Promise(function(t,r){i(e),this._get(e.fileName).then(function(r){var o=e.lineNumber,i=e.columnNumber,a=function(e,t){for(var n=[/['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*function\\b/,/function\\s+([^('\"`]*?)\\s*\\(([^)]*)\\)/,/['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*(?:eval|new Function)\\b/,/\\b(?!(?:if|for|switch|while|with|catch)\\b)(?:(?:static)\\s+)?(\\S+)\\s*\\(.*?\\)\\s*\\{/,/['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*\\(.*?\\)\\s*=>/],r=e.split(\"\\n\"),o=\"\",i=Math.min(t,20),a=0;a=0&&(s=s.substr(0,u)),s){o=s+o;for(var l=n.length,c=0;c=0){var s=this._originalMappings[a];if(void 0===e.column)for(var u=s.originalLine;s&&s.originalLine===u;)i.push({line:r.getArg(s,\"generatedLine\",null),column:r.getArg(s,\"generatedColumn\",null),lastColumn:r.getArg(s,\"lastGeneratedColumn\",null)}),s=this._originalMappings[++a];else for(var l=s.originalColumn;s&&s.originalLine===t&&s.originalColumn==l;)i.push({line:r.getArg(s,\"generatedLine\",null),column:r.getArg(s,\"generatedColumn\",null),lastColumn:r.getArg(s,\"lastGeneratedColumn\",null)}),s=this._originalMappings[++a]}return i},t.SourceMapConsumer=u,l.prototype=Object.create(u.prototype),l.prototype.consumer=u,l.fromSourceMap=function(e){var t=Object.create(l.prototype),n=t._names=i.fromArray(e._names.toArray(),!0),o=t._sources=i.fromArray(e._sources.toArray(),!0);t.sourceRoot=e._sourceRoot,t.sourcesContent=e._generateSourcesContent(t._sources.toArray(),t.sourceRoot),t.file=e._file;for(var a=e._mappings.toArray().slice(),u=t.__generatedMappings=[],g=t.__originalMappings=[],p=0,f=a.length;p1&&(n.source=m+i[1],m+=i[1],n.originalLine=f+i[2],f=n.originalLine,n.originalLine+=1,n.originalColumn=h+i[3],h=n.originalColumn,i.length>4&&(n.name=d+i[4],d+=i[4])),C.push(n),\"number\"==typeof n.originalLine&&O.push(n)}s(C,r.compareByGeneratedPositionsDeflated),this.__generatedMappings=C,s(O,r.compareByOriginalPositions),this.__originalMappings=O},l.prototype._findMapping=function(e,t,n,r,i,a){if(e[n]<=0)throw new TypeError(\"Line must be greater than or equal to 1, got \"+e[n]);if(e[r]<0)throw new TypeError(\"Column must be greater than or equal to 0, got \"+e[r]);return o.search(e,t,i,a)},l.prototype.computeColumnSpans=function(){for(var e=0;e=0){var o=this._generatedMappings[n];if(o.generatedLine===t.generatedLine){var i=r.getArg(o,\"source\",null);null!==i&&(i=this._sources.at(i),null!=this.sourceRoot&&(i=r.join(this.sourceRoot,i)));var a=r.getArg(o,\"name\",null);return null!==a&&(a=this._names.at(a)),{source:i,line:r.getArg(o,\"originalLine\",null),column:r.getArg(o,\"originalColumn\",null),name:a}}}return{source:null,line:null,column:null,name:null}},l.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e})},l.prototype.sourceContentFor=function(e,t){if(!this.sourcesContent)return null;if(null!=this.sourceRoot&&(e=r.relative(this.sourceRoot,e)),this._sources.has(e))return this.sourcesContent[this._sources.indexOf(e)];var n;if(null!=this.sourceRoot&&(n=r.urlParse(this.sourceRoot))){var o=e.replace(/^file:\\/\\//,\"\");if(\"file\"==n.scheme&&this._sources.has(o))return this.sourcesContent[this._sources.indexOf(o)];if((!n.path||\"/\"==n.path)&&this._sources.has(\"/\"+e))return this.sourcesContent[this._sources.indexOf(\"/\"+e)]}if(t)return null;throw new Error('\"'+e+'\" is not in the SourceMap.')},l.prototype.generatedPositionFor=function(e){var t=r.getArg(e,\"source\");if(null!=this.sourceRoot&&(t=r.relative(this.sourceRoot,t)),!this._sources.has(t))return{line:null,column:null,lastColumn:null};var n={source:t=this._sources.indexOf(t),originalLine:r.getArg(e,\"line\"),originalColumn:r.getArg(e,\"column\")},o=this._findMapping(n,this._originalMappings,\"originalLine\",\"originalColumn\",r.compareByOriginalPositions,r.getArg(e,\"bias\",u.GREATEST_LOWER_BOUND));if(o>=0){var i=this._originalMappings[o];if(i.source===n.source)return{line:r.getArg(i,\"generatedLine\",null),column:r.getArg(i,\"generatedColumn\",null),lastColumn:r.getArg(i,\"lastGeneratedColumn\",null)}}return{line:null,column:null,lastColumn:null}},t.BasicSourceMapConsumer=l,g.prototype=Object.create(u.prototype),g.prototype.constructor=u,g.prototype._version=3,Object.defineProperty(g.prototype,\"sources\",{get:function(){for(var e=[],t=0;t=0;c--)\".\"===(a=u[c])?u.splice(c,1):\"..\"===a?l++:l>0&&(\"\"===a?(u.splice(c+1,l),l=0):(u.splice(c,2),l--));return\"\"===(n=u.join(\"/\"))&&(n=s?\"/\":\".\"),r?(r.path=n,i(r)):n}t.urlParse=o,t.urlGenerate=i,t.normalize=a,t.join=function(e,t){\"\"===e&&(e=\".\"),\"\"===t&&(t=\".\");var n=o(t),s=o(e);if(s&&(e=s.path||\"/\"),n&&!n.scheme)return s&&(n.scheme=s.scheme),i(n);if(n||t.match(r))return t;if(s&&!s.host&&!s.path)return s.host=t,i(s);var u=\"/\"===t.charAt(0)?t:a(e.replace(/\\/+$/,\"\")+\"/\"+t);return s?(s.path=u,i(s)):u},t.isAbsolute=function(e){return\"/\"===e.charAt(0)||!!e.match(n)},t.relative=function(e,t){\"\"===e&&(e=\".\"),e=e.replace(/\\/$/,\"\");for(var n=0;0!==t.indexOf(e+\"/\");){var r=e.lastIndexOf(\"/\");if(r<0)return t;if((e=e.slice(0,r)).match(/^([^\\/]+:\\/)?\\/*$/))return t;++n}return Array(n+1).join(\"../\")+t.substr(e.length+1)};var s=!(\"__proto__\"in Object.create(null));function u(e){return e}function l(e){if(!e)return!1;var t=e.length;if(t<9)return!1;if(95!==e.charCodeAt(t-1)||95!==e.charCodeAt(t-2)||111!==e.charCodeAt(t-3)||116!==e.charCodeAt(t-4)||111!==e.charCodeAt(t-5)||114!==e.charCodeAt(t-6)||112!==e.charCodeAt(t-7)||95!==e.charCodeAt(t-8)||95!==e.charCodeAt(t-9))return!1;for(var n=t-10;n>=0;n--)if(36!==e.charCodeAt(n))return!1;return!0}function c(e,t){return e===t?0:e>t?1:-1}t.toSetString=s?u:function(e){return l(e)?\"$\"+e:e},t.fromSetString=s?u:function(e){return l(e)?e.slice(1):e},t.compareByOriginalPositions=function(e,t,n){var r=e.source-t.source;return 0!==r?r:0!=(r=e.originalLine-t.originalLine)?r:0!=(r=e.originalColumn-t.originalColumn)||n?r:0!=(r=e.generatedColumn-t.generatedColumn)?r:0!=(r=e.generatedLine-t.generatedLine)?r:e.name-t.name},t.compareByGeneratedPositionsDeflated=function(e,t,n){var r=e.generatedLine-t.generatedLine;return 0!==r?r:0!=(r=e.generatedColumn-t.generatedColumn)||n?r:0!=(r=e.source-t.source)?r:0!=(r=e.originalLine-t.originalLine)?r:0!=(r=e.originalColumn-t.originalColumn)?r:e.name-t.name},t.compareByGeneratedPositionsInflated=function(e,t){var n=e.generatedLine-t.generatedLine;return 0!==n?n:0!=(n=e.generatedColumn-t.generatedColumn)?n:0!==(n=c(e.source,t.source))?n:0!=(n=e.originalLine-t.originalLine)?n:0!=(n=e.originalColumn-t.originalColumn)?n:c(e.name,t.name)}},function(e,t){t.GREATEST_LOWER_BOUND=1,t.LEAST_UPPER_BOUND=2,t.search=function(e,n,r,o){if(0===n.length)return-1;var i=function e(n,r,o,i,a,s){var u=Math.floor((r-n)/2)+n,l=a(o,i[u],!0);return 0===l?u:l>0?r-u>1?e(u,r,o,i,a,s):s==t.LEAST_UPPER_BOUND?r1?e(n,u,o,i,a,s):s==t.LEAST_UPPER_BOUND?u:n<0?-1:n}(-1,n.length,e,n,r,o||t.GREATEST_LOWER_BOUND);if(i<0)return-1;for(;i-1>=0&&0===r(n[i],n[i-1],!0);)--i;return i}},function(e,t,n){var r=n(1),o=Object.prototype.hasOwnProperty;function i(){this._array=[],this._set=Object.create(null)}i.fromArray=function(e,t){for(var n=new i,r=0,o=e.length;r=0&&e>>=5)>0&&(t|=32),o+=r.encode(t)}while(i>0);return o},t.decode=function(e,t,n){var o,i,a,s,u=e.length,l=0,c=0;do{if(t>=u)throw new Error(\"Expected more digits in base 64 VLQ value.\");if(-1===(i=r.decode(e.charCodeAt(t++))))throw new Error(\"Invalid base64 digit: \"+e.charAt(t-1));o=!!(32&i),l+=(i&=31)<>1,1==(1&a)?-s:s),n.rest=t}},function(e,t){var n=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\".split(\"\");t.encode=function(e){if(0<=e&&e \".length;e&&r++<5&&!(\"html\"===(t=w(e))||r>1&&o+n.length*i+t.length>=80);)n.push(t),o+=t.length,e=e.parentNode;return n.reverse().join(\" > \")}function w(e){var t,n,r,o,i,a=[];if(!e||!e.tagName)return\"\";if(a.push(e.tagName.toLowerCase()),e.id&&a.push(\"#\"+e.id),(t=e.className)&&O(t))for(n=t.split(/\\s+/),i=0;i=0&&\"number\"==typeof t.breadcrumbsNumber&&(t.breadcrumbsNumber>25?r=25:t.breadcrumbsNumber<=25&&(r=t.breadcrumbsNumber)),o.length>r&&o.shift()},L=function(e){var t;try{t=C(e.target)}catch(e){t=\"\"}w({severity:\"Information\",action:\"Click\",message:t})},N=function(e){var t;try{t=C(e.target)}catch(e){t=\"\"}w({severity:\"Information\",action:\"Form submit\",message:t})},E=function(t){var n=null;switch(t.type){case\"load\":n=\"Page loaded\";break;case\"DOMContentLoaded\":n=\"DOMContentLoaded\";break;case\"pageshow\":n=\"Page shown\";break;case\"pagehide\":n=\"Page hidden\";break;case\"popstate\":n=\"Navigated from: \"+s+\" to: \"+e.location.href}w({severity:\"Information\",action:\"Navigation\",message:n})},A=function(e){var t=e.oldURL,n=e.newURL,r=null;r=t&&n?\"from: '\"+S(t)+\"' to: '\"+S(n)+\"'\":\"to: '\"+location.hash+\"'\",w({severity:\"Information\",action:\"Navigation\",message:\"Hash changed \"+r})},M=function(e,t,a,s,l,p){var f=e,h=t,d=s,v=p,y=l,O=1,C=b();if((null===f||null===h)&&2!==g)return console.log(\"Login api error\");c.hasOwnProperty(\"apiKey\")&&c.hasOwnProperty(\"logId\")&&(f=c.apiKey,h=c.logId);var w=new XMLHttpRequest;if(w.open(\"POST\",\"https://api.elmah.io/v3/messages/\"+h+\"?api_key=\"+f,!0),w.setRequestHeader(\"Content-type\",\"application/json\"),w.onload=function(e){4===w.readyState&&(201===w.status&&a(\"success\",w.statusText),w.status>=400&&w.status<=499&&(a(\"error\",w.statusText),r.emit(\"error\",w.status,w.statusText)))},w.onerror=function(e){a(\"error\",w.statusText),r.emit(\"error\",w.status,w.statusText)},\"Log\"!==d){var S=v?i.parse(v):null;L=_(L={title:y,source:S&&S.length>0?S[0].fileName:null,detail:v?v.stack:null,severity:d,type:v?v.name:null,queryString:JSON.parse(JSON.stringify(C))},u())}else var L=v;if(null!==n.filter&&n.filter(L)&&(O=0),1===O)if(L.title){if(o.length>0){if(L.breadcrumbs&&L.breadcrumbs.length>0){o=o.reverse();for(var N=0;N1)if(String(e).match(/%[sdif]/g)){var r=0;n=String(e).replace(/%[sdif]/g,function(e){switch(e){case\"%s\":return t[++r]?String(t[r]):\"%s\";case\"%d\":return t[++r]?d(t[r])||v(t[r])?parseInt(t[r]):\"NaN\":\"%d\";case\"%i\":return t[++r]?d(t[r])||v(t[r])?parseInt(t[r]):\"NaN\":\"%i\";case\"%f\":return t[++r]?d(t[r])||v(t[r])?parseFloat(t[r]):\"NaN\":\"%f\";default:return e}});for(var o=t.length,i=t[++r];r=400&&w.status<=499&&(i(\"error\",w.statusText),r.emit(\"error\",w.status,w.statusText)))},w.onerror=function(e){i(\"error\",w.statusText),r.emit(\"error\",w.status,w.statusText)};var S={title:f,titleTemplate:h,detail:function(e,t,n){for(var r=[],o=0;o0&&(S.breadcrumbs=o,o=[]),null!==n.filter&&n.filter(S)&&(O=0),1===O&&(S.title?(r.emit(\"message\",S),w.send(JSON.stringify(S))):i(\"missing-title\",w.statusText))};return r.error=function(e,t){setTimeout(function(){M(n.apiKey,n.logId,l,\"Error\",e,t)},n.breadcrumbs?100:0)},r.verbose=function(e,t){setTimeout(function(){M(n.apiKey,n.logId,l,\"Verbose\",e,t)},n.breadcrumbs?100:0)},r.debug=function(e,t){setTimeout(function(){M(n.apiKey,n.logId,l,\"Debug\",e,t)},n.breadcrumbs?100:0)},r.information=function(e,t){setTimeout(function(){M(n.apiKey,n.logId,l,\"Information\",e,t)},n.breadcrumbs?100:0)},r.warning=function(e,t){setTimeout(function(){M(n.apiKey,n.logId,l,\"Warning\",e,t)},n.breadcrumbs?100:0)},r.fatal=function(e,t){setTimeout(function(){M(n.apiKey,n.logId,l,\"Fatal\",e,t)},n.breadcrumbs?100:0)},r.log=function(e){setTimeout(function(){M(n.apiKey,n.logId,l,\"Log\",null,e)},n.breadcrumbs?100:0)},r.message=function(e){return function(e){if(!e)return u();var t=e,n=t?i.parse(t):null,r={title:t.message,source:n&&n.length>0?n[0].fileName:null,detail:t?t.stack:null,severity:\"Error\",type:t?t.name:null,errorObject:t};return r=_(r,u())}(e)},r.addBreadcrumb=function(e,t,n){w({severity:null!=t&&O(t)?t:\"Information\",action:null!=n&&O(n)?n:\"Log\",message:null!=e&&O(e)?e:\"This is just a test message.\"})},r.on=function(e,t,n){var r=this.e||(this.e={});return(r[e]||(r[e]=[])).push({fn:t,ctx:n}),this},r.emit=function(e){for(var t=[].slice.call(arguments,1),n=((this.e||(this.e={}))[e]||[]).slice(),r=0,o=n.length;r0&&r<400?o=\"Information\":r>399&&r<500?o=\"Warning\":r>=500&&(o=\"Error\"),w({severity:o,action:\"Request\",message:\"[\"+t+\"] \"+n+(r>0?\" (\"+r+\")\":\"\")}))}(n,e,t)},!1),s.apply(this,arguments)}}}if(e.onerror=function(e,t,a,s,f){var h={message:e,source:t,lineno:a,colno:s,error:f};return setTimeout(function(){!function(e,t,a,s){var l=e,f=t,h=s,d=1,v=b(),O=h.error&&0!==y(h.error.stack)&&\"object\"==typeof h.error?i.parse(h.error):\"\";if(!h||0!==h.colno||0!==h.lineno||O&&\"\"!==O||!h.message||\"Script error.\"!==h.message&&\"Script error\"!==h.message){if((null===l||null===f)&&2!==g)return console.log(\"Login api error\");c.hasOwnProperty(\"apiKey\")&&c.hasOwnProperty(\"logId\")&&(l=c.apiKey,f=c.logId);var C=new XMLHttpRequest;C.open(\"POST\",\"https://api.elmah.io/v3/messages/\"+f+\"?api_key=\"+l,!0),C.setRequestHeader(\"Content-type\",\"application/json\"),C.onload=function(e){4===C.readyState&&(201===C.status&&a(\"success\",C.statusText),C.status>=400&&C.status<=499&&(a(\"error\",C.statusText),r.emit(\"error\",C.status,C.statusText)))},C.onerror=function(e){a(\"error\",C.statusText),r.emit(\"error\",C.status,C.statusText)};var w={detail:h.error?h.error.stack:null,title:h.message||\"Unspecified error\",source:O&&O.length>0?O[0].fileName:null,severity:\"Error\",type:h.error?h.error.name:null,queryString:JSON.parse(JSON.stringify(v))};if(h.error&&0===y(h.error.stack)&&void 0===w.detail){var S=typeof s.error,L=S.charAt(0).toUpperCase()+S.slice(1);w.detail=function(e){var t=typeof e.error;return t.charAt(0).toUpperCase()+t.slice(1)+\": \"+e.error+\"\\n at (\"+e.source+\":\"+e.lineno+\":\"+e.colno+\")\"}(s),w.source=s.source,w.title=\"Uncaught \"+L+\": \"+s.error}w=_(w,u()),o.length>0&&(w.breadcrumbs=o,o=[]),null!==n.filter&&n.filter(w)&&(d=0),1===d&&(r.emit(\"message\",w),h.error&&\"object\"==typeof h.error&&0!==y(h.error.stack)&&\"undefined\"!=typeof Promise&&-1!==Promise.toString().indexOf(\"[native code]\")?m(h.error,C,w):C.send(JSON.stringify(w)))}else n.debug&&console.log(\"%c ⯈ Error log: %c 🛈 Ignoring error from external script \",p.lightCSS,p.warningCSS)}(n.apiKey,n.logId,l,h)},n.breadcrumbs?100:0),!1},t&&\"none\"!==t.captureConsoleMinimumLevel){if(\"info\"===t.captureConsoleMinimumLevel||\"warn\"===t.captureConsoleMinimumLevel||\"error\"===t.captureConsoleMinimumLevel||\"debug\"===t.captureConsoleMinimumLevel){var d=console.error;if(console.error=function(e){var t={message:e,arguments:arguments};setTimeout(function(){x(n.apiKey,n.logId,l,\"Error\",t)},n.breadcrumbs?100:0),d.apply(console,arguments)},\"error\"!==t.captureConsoleMinimumLevel){var v=console.warn;console.warn=function(e){var t={message:e,arguments:arguments};setTimeout(function(){x(n.apiKey,n.logId,l,\"Warning\",t)},n.breadcrumbs?100:0),v.apply(console,arguments)}}}if(\"info\"===t.captureConsoleMinimumLevel||\"debug\"===t.captureConsoleMinimumLevel){var O=console.info;console.info=function(e){var t={message:e,arguments:arguments};setTimeout(function(){x(n.apiKey,n.logId,l,\"Information\",t)},n.breadcrumbs?100:0),O.apply(console,arguments)}}if(\"debug\"===t.captureConsoleMinimumLevel){var C=console.debug;console.debug=function(e){var t={message:e,arguments:arguments};setTimeout(function(){x(n.apiKey,n.logId,l,\"Debug\",t)},n.breadcrumbs?100:0),C.apply(console,arguments)}}}},r.init(t),n.debug&&console.log(\"%c\"+p.label,p.labelCSS),r};return g&&c.hasOwnProperty(\"apiKey\")&&c.hasOwnProperty(\"logId\")?new L:L});\r\n//# sourceMappingURL=elmahio.min.js.map\r\n","/*\r\n * File: iframeResizer.js\r\n * Desc: Force iframes to size to content.\r\n * Requires: iframeResizer.contentWindow.js to be loaded into the target frame.\r\n * Doc: https://github.com/davidjbradshaw/iframe-resizer\r\n * Author: David J. Bradshaw - dave@bradshaw.net\r\n * Contributor: Jure Mav - jure.mav@gmail.com\r\n * Contributor: Reed Dadoune - reed@dadoune.com\r\n */\r\n\r\n// eslint-disable-next-line sonarjs/cognitive-complexity, no-shadow-restricted-names\r\n;(function (undefined) {\r\n if (typeof window === 'undefined') return // don't run for server side render\r\n\r\n var count = 0,\r\n logEnabled = false,\r\n hiddenCheckEnabled = false,\r\n msgHeader = 'message',\r\n msgHeaderLen = msgHeader.length,\r\n msgId = '[iFrameSizer]', // Must match iframe msg ID\r\n msgIdLen = msgId.length,\r\n pagePosition = null,\r\n requestAnimationFrame = window.requestAnimationFrame,\r\n resetRequiredMethods = {\r\n max: 1,\r\n scroll: 1,\r\n bodyScroll: 1,\r\n documentElementScroll: 1\r\n },\r\n settings = {},\r\n timer = null,\r\n defaults = {\r\n autoResize: true,\r\n bodyBackground: null,\r\n bodyMargin: null,\r\n bodyMarginV1: 8,\r\n bodyPadding: null,\r\n checkOrigin: true,\r\n inPageLinks: false,\r\n enablePublicMethods: true,\r\n heightCalculationMethod: 'bodyOffset',\r\n id: 'iFrameResizer',\r\n interval: 32,\r\n log: false,\r\n maxHeight: Infinity,\r\n maxWidth: Infinity,\r\n minHeight: 0,\r\n minWidth: 0,\r\n mouseEvents: true,\r\n resizeFrom: 'parent',\r\n scrolling: false,\r\n sizeHeight: true,\r\n sizeWidth: false,\r\n warningTimeout: 5000,\r\n tolerance: 0,\r\n widthCalculationMethod: 'scroll',\r\n onClose: function () {\r\n return true\r\n },\r\n onClosed: function () {},\r\n onInit: function () {},\r\n onMessage: function () {\r\n warn('onMessage function not defined')\r\n },\r\n onMouseEnter: function () {},\r\n onMouseLeave: function () {},\r\n onResized: function () {},\r\n onScroll: function () {\r\n return true\r\n }\r\n }\r\n\r\n function getMutationObserver() {\r\n return (\r\n window.MutationObserver ||\r\n window.WebKitMutationObserver ||\r\n window.MozMutationObserver\r\n )\r\n }\r\n\r\n function addEventListener(el, evt, func) {\r\n el.addEventListener(evt, func, false)\r\n }\r\n\r\n function removeEventListener(el, evt, func) {\r\n el.removeEventListener(evt, func, false)\r\n }\r\n\r\n function setupRequestAnimationFrame() {\r\n var vendors = ['moz', 'webkit', 'o', 'ms']\r\n var x\r\n\r\n // Remove vendor prefixing if prefixed and break early if not\r\n for (x = 0; x < vendors.length && !requestAnimationFrame; x += 1) {\r\n requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame']\r\n }\r\n\r\n if (!requestAnimationFrame) {\r\n log('setup', 'RequestAnimationFrame not supported')\r\n } else {\r\n // Firefox extension content-scripts have a globalThis object that is not the same as window.\r\n // Binding `requestAnimationFrame` to window allows the function to work and prevents errors\r\n // being thrown when run in that context, and should be a no-op in every other context.\r\n requestAnimationFrame = requestAnimationFrame.bind(window)\r\n }\r\n }\r\n\r\n function getMyID(iframeId) {\r\n var retStr = 'Host page: ' + iframeId\r\n\r\n if (window.top !== window.self) {\r\n // eslint-disable-next-line unicorn/prefer-ternary\r\n if (window.parentIFrame && window.parentIFrame.getId) {\r\n retStr = window.parentIFrame.getId() + ': ' + iframeId\r\n } else {\r\n retStr = 'Nested host page: ' + iframeId\r\n }\r\n }\r\n\r\n return retStr\r\n }\r\n\r\n function formatLogHeader(iframeId) {\r\n return msgId + '[' + getMyID(iframeId) + ']'\r\n }\r\n\r\n function isLogEnabled(iframeId) {\r\n return settings[iframeId] ? settings[iframeId].log : logEnabled\r\n }\r\n\r\n function log(iframeId, msg) {\r\n output('log', iframeId, msg, isLogEnabled(iframeId))\r\n }\r\n\r\n function info(iframeId, msg) {\r\n output('info', iframeId, msg, isLogEnabled(iframeId))\r\n }\r\n\r\n function warn(iframeId, msg) {\r\n output('warn', iframeId, msg, true)\r\n }\r\n\r\n function output(type, iframeId, msg, enabled) {\r\n if (true === enabled && 'object' === typeof window.console) {\r\n // eslint-disable-next-line no-console\r\n console[type](formatLogHeader(iframeId), msg)\r\n }\r\n }\r\n\r\n function iFrameListener(event) {\r\n function resizeIFrame() {\r\n function resize() {\r\n setSize(messageData)\r\n setPagePosition(iframeId)\r\n on('onResized', messageData)\r\n }\r\n\r\n ensureInRange('Height')\r\n ensureInRange('Width')\r\n\r\n syncResize(resize, messageData, 'init')\r\n }\r\n\r\n function processMsg() {\r\n var data = msg.substr(msgIdLen).split(':')\r\n var height = data[1] ? parseInt(data[1], 10) : 0\r\n var iframe = settings[data[0]] && settings[data[0]].iframe\r\n var compStyle = getComputedStyle(iframe)\r\n\r\n return {\r\n iframe: iframe,\r\n id: data[0],\r\n height: height + getPaddingEnds(compStyle) + getBorderEnds(compStyle),\r\n width: data[2],\r\n type: data[3]\r\n }\r\n }\r\n\r\n function getPaddingEnds(compStyle) {\r\n if (compStyle.boxSizing !== 'border-box') {\r\n return 0\r\n }\r\n var top = compStyle.paddingTop ? parseInt(compStyle.paddingTop, 10) : 0\r\n var bot = compStyle.paddingBottom\r\n ? parseInt(compStyle.paddingBottom, 10)\r\n : 0\r\n return top + bot\r\n }\r\n\r\n function getBorderEnds(compStyle) {\r\n if (compStyle.boxSizing !== 'border-box') {\r\n return 0\r\n }\r\n var top = compStyle.borderTopWidth\r\n ? parseInt(compStyle.borderTopWidth, 10)\r\n : 0\r\n var bot = compStyle.borderBottomWidth\r\n ? parseInt(compStyle.borderBottomWidth, 10)\r\n : 0\r\n return top + bot\r\n }\r\n\r\n function ensureInRange(Dimension) {\r\n var max = Number(settings[iframeId]['max' + Dimension]),\r\n min = Number(settings[iframeId]['min' + Dimension]),\r\n dimension = Dimension.toLowerCase(),\r\n size = Number(messageData[dimension])\r\n\r\n log(iframeId, 'Checking ' + dimension + ' is in range ' + min + '-' + max)\r\n\r\n if (size < min) {\r\n size = min\r\n log(iframeId, 'Set ' + dimension + ' to min value')\r\n }\r\n\r\n if (size > max) {\r\n size = max\r\n log(iframeId, 'Set ' + dimension + ' to max value')\r\n }\r\n\r\n messageData[dimension] = '' + size\r\n }\r\n\r\n function isMessageFromIFrame() {\r\n function checkAllowedOrigin() {\r\n function checkList() {\r\n var i = 0,\r\n retCode = false\r\n\r\n log(\r\n iframeId,\r\n 'Checking connection is from allowed list of origins: ' +\r\n checkOrigin\r\n )\r\n\r\n for (; i < checkOrigin.length; i++) {\r\n if (checkOrigin[i] === origin) {\r\n retCode = true\r\n break\r\n }\r\n }\r\n return retCode\r\n }\r\n\r\n function checkSingle() {\r\n var remoteHost = settings[iframeId] && settings[iframeId].remoteHost\r\n log(iframeId, 'Checking connection is from: ' + remoteHost)\r\n return origin === remoteHost\r\n }\r\n\r\n return checkOrigin.constructor === Array ? checkList() : checkSingle()\r\n }\r\n\r\n var origin = event.origin,\r\n checkOrigin = settings[iframeId] && settings[iframeId].checkOrigin\r\n\r\n if (checkOrigin && '' + origin !== 'null' && !checkAllowedOrigin()) {\r\n throw new Error(\r\n 'Unexpected message received from: ' +\r\n origin +\r\n ' for ' +\r\n messageData.iframe.id +\r\n '. Message was: ' +\r\n event.data +\r\n '. This error can be disabled by setting the checkOrigin: false option or by providing of array of trusted domains.'\r\n )\r\n }\r\n\r\n return true\r\n }\r\n\r\n function isMessageForUs() {\r\n return (\r\n msgId === ('' + msg).substr(0, msgIdLen) &&\r\n msg.substr(msgIdLen).split(':')[0] in settings\r\n ) // ''+Protects against non-string msg\r\n }\r\n\r\n function isMessageFromMetaParent() {\r\n // Test if this message is from a parent above us. This is an ugly test, however, updating\r\n // the message format would break backwards compatibity.\r\n var retCode = messageData.type in { true: 1, false: 1, undefined: 1 }\r\n\r\n if (retCode) {\r\n log(iframeId, 'Ignoring init message from meta parent page')\r\n }\r\n\r\n return retCode\r\n }\r\n\r\n function getMsgBody(offset) {\r\n return msg.substr(msg.indexOf(':') + msgHeaderLen + offset)\r\n }\r\n\r\n function forwardMsgFromIFrame(msgBody) {\r\n log(\r\n iframeId,\r\n 'onMessage passed: {iframe: ' +\r\n messageData.iframe.id +\r\n ', message: ' +\r\n msgBody +\r\n '}'\r\n )\r\n\r\n on('onMessage', {\r\n iframe: messageData.iframe,\r\n message: JSON.parse(msgBody)\r\n })\r\n\r\n log(iframeId, '--')\r\n }\r\n\r\n function getPageInfo() {\r\n var bodyPosition = document.body.getBoundingClientRect(),\r\n iFramePosition = messageData.iframe.getBoundingClientRect()\r\n\r\n return JSON.stringify({\r\n iframeHeight: iFramePosition.height,\r\n iframeWidth: iFramePosition.width,\r\n clientHeight: Math.max(\r\n document.documentElement.clientHeight,\r\n window.innerHeight || 0\r\n ),\r\n clientWidth: Math.max(\r\n document.documentElement.clientWidth,\r\n window.innerWidth || 0\r\n ),\r\n offsetTop: parseInt(iFramePosition.top - bodyPosition.top, 10),\r\n offsetLeft: parseInt(iFramePosition.left - bodyPosition.left, 10),\r\n scrollTop: window.pageYOffset,\r\n scrollLeft: window.pageXOffset,\r\n documentHeight: document.documentElement.clientHeight,\r\n documentWidth: document.documentElement.clientWidth,\r\n windowHeight: window.innerHeight,\r\n windowWidth: window.innerWidth\r\n })\r\n }\r\n\r\n function sendPageInfoToIframe(iframe, iframeId) {\r\n function debouncedTrigger() {\r\n trigger('Send Page Info', 'pageInfo:' + getPageInfo(), iframe, iframeId)\r\n }\r\n debounceFrameEvents(debouncedTrigger, 32, iframeId)\r\n }\r\n\r\n function startPageInfoMonitor() {\r\n function setListener(type, func) {\r\n function sendPageInfo() {\r\n if (settings[id]) {\r\n sendPageInfoToIframe(settings[id].iframe, id)\r\n } else {\r\n stop()\r\n }\r\n }\r\n\r\n ;['scroll', 'resize'].forEach(function (evt) {\r\n log(id, type + evt + ' listener for sendPageInfo')\r\n func(window, evt, sendPageInfo)\r\n })\r\n }\r\n\r\n function stop() {\r\n setListener('Remove ', removeEventListener)\r\n }\r\n\r\n function start() {\r\n setListener('Add ', addEventListener)\r\n }\r\n\r\n var id = iframeId // Create locally scoped copy of iFrame ID\r\n\r\n start()\r\n\r\n if (settings[id]) {\r\n settings[id].stopPageInfo = stop\r\n }\r\n }\r\n\r\n function stopPageInfoMonitor() {\r\n if (settings[iframeId] && settings[iframeId].stopPageInfo) {\r\n settings[iframeId].stopPageInfo()\r\n delete settings[iframeId].stopPageInfo\r\n }\r\n }\r\n\r\n function checkIFrameExists() {\r\n var retBool = true\r\n\r\n if (null === messageData.iframe) {\r\n warn(iframeId, 'IFrame (' + messageData.id + ') not found')\r\n retBool = false\r\n }\r\n return retBool\r\n }\r\n\r\n function getElementPosition(target) {\r\n var iFramePosition = target.getBoundingClientRect()\r\n\r\n getPagePosition(iframeId)\r\n\r\n return {\r\n x: Math.floor(Number(iFramePosition.left) + Number(pagePosition.x)),\r\n y: Math.floor(Number(iFramePosition.top) + Number(pagePosition.y))\r\n }\r\n }\r\n\r\n function scrollRequestFromChild(addOffset) {\r\n /* istanbul ignore next */ // Not testable in Karma\r\n function reposition() {\r\n pagePosition = newPosition\r\n scrollTo()\r\n log(iframeId, '--')\r\n }\r\n\r\n function calcOffset() {\r\n return {\r\n x: Number(messageData.width) + offset.x,\r\n y: Number(messageData.height) + offset.y\r\n }\r\n }\r\n\r\n function scrollParent() {\r\n if (window.parentIFrame) {\r\n window.parentIFrame['scrollTo' + (addOffset ? 'Offset' : '')](\r\n newPosition.x,\r\n newPosition.y\r\n )\r\n } else {\r\n warn(\r\n iframeId,\r\n 'Unable to scroll to requested position, window.parentIFrame not found'\r\n )\r\n }\r\n }\r\n\r\n var offset = addOffset\r\n ? getElementPosition(messageData.iframe)\r\n : { x: 0, y: 0 },\r\n newPosition = calcOffset()\r\n\r\n log(\r\n iframeId,\r\n 'Reposition requested from iFrame (offset x:' +\r\n offset.x +\r\n ' y:' +\r\n offset.y +\r\n ')'\r\n )\r\n\r\n if (window.top !== window.self) {\r\n scrollParent()\r\n } else {\r\n reposition()\r\n }\r\n }\r\n\r\n function scrollTo() {\r\n if (false !== on('onScroll', pagePosition)) {\r\n setPagePosition(iframeId)\r\n } else {\r\n unsetPagePosition()\r\n }\r\n }\r\n\r\n function findTarget(location) {\r\n function jumpToTarget() {\r\n var jumpPosition = getElementPosition(target)\r\n\r\n log(\r\n iframeId,\r\n 'Moving to in page link (#' +\r\n hash +\r\n ') at x: ' +\r\n jumpPosition.x +\r\n ' y: ' +\r\n jumpPosition.y\r\n )\r\n pagePosition = {\r\n x: jumpPosition.x,\r\n y: jumpPosition.y\r\n }\r\n\r\n scrollTo()\r\n log(iframeId, '--')\r\n }\r\n\r\n function jumpToParent() {\r\n if (window.parentIFrame) {\r\n window.parentIFrame.moveToAnchor(hash)\r\n } else {\r\n log(\r\n iframeId,\r\n 'In page link #' +\r\n hash +\r\n ' not found and window.parentIFrame not found'\r\n )\r\n }\r\n }\r\n\r\n var hash = location.split('#')[1] || '',\r\n hashData = decodeURIComponent(hash),\r\n target =\r\n document.getElementById(hashData) ||\r\n document.getElementsByName(hashData)[0]\r\n\r\n if (target) {\r\n jumpToTarget()\r\n } else if (window.top !== window.self) {\r\n jumpToParent()\r\n } else {\r\n log(iframeId, 'In page link #' + hash + ' not found')\r\n }\r\n }\r\n\r\n function onMouse(event) {\r\n var mousePos = {}\r\n\r\n if (Number(messageData.width) === 0 && Number(messageData.height) === 0) {\r\n var data = getMsgBody(9).split(':')\r\n mousePos = {\r\n x: data[1],\r\n y: data[0]\r\n }\r\n } else {\r\n mousePos = {\r\n x: messageData.width,\r\n y: messageData.height\r\n }\r\n }\r\n\r\n on(event, {\r\n iframe: messageData.iframe,\r\n screenX: Number(mousePos.x),\r\n screenY: Number(mousePos.y),\r\n type: messageData.type\r\n })\r\n }\r\n\r\n function on(funcName, val) {\r\n return chkEvent(iframeId, funcName, val)\r\n }\r\n\r\n function actionMsg() {\r\n if (settings[iframeId] && settings[iframeId].firstRun) firstRun()\r\n\r\n switch (messageData.type) {\r\n case 'close':\r\n closeIFrame(messageData.iframe)\r\n break\r\n\r\n case 'message':\r\n forwardMsgFromIFrame(getMsgBody(6))\r\n break\r\n\r\n case 'mouseenter':\r\n onMouse('onMouseEnter')\r\n break\r\n\r\n case 'mouseleave':\r\n onMouse('onMouseLeave')\r\n break\r\n\r\n case 'autoResize':\r\n settings[iframeId].autoResize = JSON.parse(getMsgBody(9))\r\n break\r\n\r\n case 'scrollTo':\r\n scrollRequestFromChild(false)\r\n break\r\n\r\n case 'scrollToOffset':\r\n scrollRequestFromChild(true)\r\n break\r\n\r\n case 'pageInfo':\r\n sendPageInfoToIframe(\r\n settings[iframeId] && settings[iframeId].iframe,\r\n iframeId\r\n )\r\n startPageInfoMonitor()\r\n break\r\n\r\n case 'pageInfoStop':\r\n stopPageInfoMonitor()\r\n break\r\n\r\n case 'inPageLink':\r\n findTarget(getMsgBody(9))\r\n break\r\n\r\n case 'reset':\r\n resetIFrame(messageData)\r\n break\r\n\r\n case 'init':\r\n resizeIFrame()\r\n on('onInit', messageData.iframe)\r\n break\r\n\r\n default:\r\n if (\r\n Number(messageData.width) === 0 &&\r\n Number(messageData.height) === 0\r\n ) {\r\n warn(\r\n 'Unsupported message received (' +\r\n messageData.type +\r\n '), this is likely due to the iframe containing a later ' +\r\n 'version of iframe-resizer than the parent page'\r\n )\r\n } else {\r\n resizeIFrame()\r\n }\r\n }\r\n }\r\n\r\n function hasSettings(iframeId) {\r\n var retBool = true\r\n\r\n if (!settings[iframeId]) {\r\n retBool = false\r\n warn(\r\n messageData.type +\r\n ' No settings for ' +\r\n iframeId +\r\n '. Message was: ' +\r\n msg\r\n )\r\n }\r\n\r\n return retBool\r\n }\r\n\r\n function iFrameReadyMsgReceived() {\r\n // eslint-disable-next-line no-restricted-syntax, guard-for-in\r\n for (var iframeId in settings) {\r\n trigger(\r\n 'iFrame requested init',\r\n createOutgoingMsg(iframeId),\r\n settings[iframeId].iframe,\r\n iframeId\r\n )\r\n }\r\n }\r\n\r\n function firstRun() {\r\n if (settings[iframeId]) {\r\n settings[iframeId].firstRun = false\r\n }\r\n }\r\n\r\n var msg = event.data,\r\n messageData = {},\r\n iframeId = null\r\n\r\n if ('[iFrameResizerChild]Ready' === msg) {\r\n iFrameReadyMsgReceived()\r\n } else if (isMessageForUs()) {\r\n messageData = processMsg()\r\n iframeId = messageData.id\r\n if (settings[iframeId]) {\r\n settings[iframeId].loaded = true\r\n }\r\n\r\n if (!isMessageFromMetaParent() && hasSettings(iframeId)) {\r\n log(iframeId, 'Received: ' + msg)\r\n\r\n if (checkIFrameExists() && isMessageFromIFrame()) {\r\n actionMsg()\r\n }\r\n }\r\n } else {\r\n info(iframeId, 'Ignored: ' + msg)\r\n }\r\n }\r\n\r\n function chkEvent(iframeId, funcName, val) {\r\n var func = null,\r\n retVal = null\r\n\r\n if (settings[iframeId]) {\r\n func = settings[iframeId][funcName]\r\n\r\n if ('function' === typeof func) {\r\n retVal = func(val)\r\n } else {\r\n throw new TypeError(\r\n funcName + ' on iFrame[' + iframeId + '] is not a function'\r\n )\r\n }\r\n }\r\n\r\n return retVal\r\n }\r\n\r\n function removeIframeListeners(iframe) {\r\n var iframeId = iframe.id\r\n delete settings[iframeId]\r\n }\r\n\r\n function closeIFrame(iframe) {\r\n var iframeId = iframe.id\r\n if (chkEvent(iframeId, 'onClose', iframeId) === false) {\r\n log(iframeId, 'Close iframe cancelled by onClose event')\r\n return\r\n }\r\n log(iframeId, 'Removing iFrame: ' + iframeId)\r\n\r\n try {\r\n // Catch race condition error with React\r\n if (iframe.parentNode) {\r\n iframe.parentNode.removeChild(iframe)\r\n }\r\n } catch (error) {\r\n warn(error)\r\n }\r\n\r\n chkEvent(iframeId, 'onClosed', iframeId)\r\n log(iframeId, '--')\r\n removeIframeListeners(iframe)\r\n }\r\n\r\n function getPagePosition(iframeId) {\r\n if (null === pagePosition) {\r\n pagePosition = {\r\n x:\r\n window.pageXOffset !== undefined\r\n ? window.pageXOffset\r\n : document.documentElement.scrollLeft,\r\n y:\r\n window.pageYOffset !== undefined\r\n ? window.pageYOffset\r\n : document.documentElement.scrollTop\r\n }\r\n log(\r\n iframeId,\r\n 'Get page position: ' + pagePosition.x + ',' + pagePosition.y\r\n )\r\n }\r\n }\r\n\r\n function setPagePosition(iframeId) {\r\n if (null !== pagePosition) {\r\n window.scrollTo(pagePosition.x, pagePosition.y)\r\n log(\r\n iframeId,\r\n 'Set page position: ' + pagePosition.x + ',' + pagePosition.y\r\n )\r\n unsetPagePosition()\r\n }\r\n }\r\n\r\n function unsetPagePosition() {\r\n pagePosition = null\r\n }\r\n\r\n function resetIFrame(messageData) {\r\n function reset() {\r\n setSize(messageData)\r\n trigger('reset', 'reset', messageData.iframe, messageData.id)\r\n }\r\n\r\n log(\r\n messageData.id,\r\n 'Size reset requested by ' +\r\n ('init' === messageData.type ? 'host page' : 'iFrame')\r\n )\r\n getPagePosition(messageData.id)\r\n syncResize(reset, messageData, 'reset')\r\n }\r\n\r\n function setSize(messageData) {\r\n function setDimension(dimension) {\r\n if (!messageData.id) {\r\n log('undefined', 'messageData id not set')\r\n return\r\n }\r\n messageData.iframe.style[dimension] = messageData[dimension] + 'px'\r\n log(\r\n messageData.id,\r\n 'IFrame (' +\r\n iframeId +\r\n ') ' +\r\n dimension +\r\n ' set to ' +\r\n messageData[dimension] +\r\n 'px'\r\n )\r\n }\r\n\r\n function chkZero(dimension) {\r\n // FireFox sets dimension of hidden iFrames to zero.\r\n // So if we detect that set up an event to check for\r\n // when iFrame becomes visible.\r\n\r\n /* istanbul ignore next */ // Not testable in PhantomJS\r\n if (!hiddenCheckEnabled && '0' === messageData[dimension]) {\r\n hiddenCheckEnabled = true\r\n log(iframeId, 'Hidden iFrame detected, creating visibility listener')\r\n fixHiddenIFrames()\r\n }\r\n }\r\n\r\n function processDimension(dimension) {\r\n setDimension(dimension)\r\n chkZero(dimension)\r\n }\r\n\r\n var iframeId = messageData.iframe.id\r\n\r\n if (settings[iframeId]) {\r\n if (settings[iframeId].sizeHeight) {\r\n processDimension('height')\r\n }\r\n if (settings[iframeId].sizeWidth) {\r\n processDimension('width')\r\n }\r\n }\r\n }\r\n\r\n function syncResize(func, messageData, doNotSync) {\r\n /* istanbul ignore if */ // Not testable in PhantomJS\r\n if (\r\n doNotSync !== messageData.type &&\r\n requestAnimationFrame &&\r\n // including check for jasmine because had trouble getting spy to work in unit test using requestAnimationFrame\r\n !window.jasmine\r\n ) {\r\n log(messageData.id, 'Requesting animation frame')\r\n requestAnimationFrame(func)\r\n } else {\r\n func()\r\n }\r\n }\r\n\r\n function trigger(calleeMsg, msg, iframe, id, noResponseWarning) {\r\n function postMessageToIFrame() {\r\n var target = settings[id] && settings[id].targetOrigin\r\n log(\r\n id,\r\n '[' +\r\n calleeMsg +\r\n '] Sending msg to iframe[' +\r\n id +\r\n '] (' +\r\n msg +\r\n ') targetOrigin: ' +\r\n target\r\n )\r\n iframe.contentWindow.postMessage(msgId + msg, target)\r\n }\r\n\r\n function iFrameNotFound() {\r\n warn(id, '[' + calleeMsg + '] IFrame(' + id + ') not found')\r\n }\r\n\r\n function chkAndSend() {\r\n if (\r\n iframe &&\r\n 'contentWindow' in iframe &&\r\n null !== iframe.contentWindow\r\n ) {\r\n // Null test for PhantomJS\r\n postMessageToIFrame()\r\n } else {\r\n iFrameNotFound()\r\n }\r\n }\r\n\r\n function warnOnNoResponse() {\r\n function warning() {\r\n if (settings[id] && !settings[id].loaded && !errorShown) {\r\n errorShown = true\r\n warn(\r\n id,\r\n 'IFrame has not responded within ' +\r\n settings[id].warningTimeout / 1000 +\r\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.'\r\n )\r\n }\r\n }\r\n\r\n if (\r\n !!noResponseWarning &&\r\n settings[id] &&\r\n !!settings[id].warningTimeout\r\n ) {\r\n settings[id].msgTimeout = setTimeout(\r\n warning,\r\n settings[id].warningTimeout\r\n )\r\n }\r\n }\r\n\r\n var errorShown = false\r\n\r\n id = id || iframe.id\r\n\r\n if (settings[id]) {\r\n chkAndSend()\r\n warnOnNoResponse()\r\n }\r\n }\r\n\r\n function createOutgoingMsg(iframeId) {\r\n return (\r\n iframeId +\r\n ':' +\r\n settings[iframeId].bodyMarginV1 +\r\n ':' +\r\n settings[iframeId].sizeWidth +\r\n ':' +\r\n settings[iframeId].log +\r\n ':' +\r\n settings[iframeId].interval +\r\n ':' +\r\n settings[iframeId].enablePublicMethods +\r\n ':' +\r\n settings[iframeId].autoResize +\r\n ':' +\r\n settings[iframeId].bodyMargin +\r\n ':' +\r\n settings[iframeId].heightCalculationMethod +\r\n ':' +\r\n settings[iframeId].bodyBackground +\r\n ':' +\r\n settings[iframeId].bodyPadding +\r\n ':' +\r\n settings[iframeId].tolerance +\r\n ':' +\r\n settings[iframeId].inPageLinks +\r\n ':' +\r\n settings[iframeId].resizeFrom +\r\n ':' +\r\n settings[iframeId].widthCalculationMethod +\r\n ':' +\r\n settings[iframeId].mouseEvents\r\n )\r\n }\r\n\r\n function setupIFrame(iframe, options) {\r\n function setLimits() {\r\n function addStyle(style) {\r\n if (\r\n Infinity !== settings[iframeId][style] &&\r\n 0 !== settings[iframeId][style]\r\n ) {\r\n iframe.style[style] = settings[iframeId][style] + 'px'\r\n log(\r\n iframeId,\r\n 'Set ' + style + ' = ' + settings[iframeId][style] + 'px'\r\n )\r\n }\r\n }\r\n\r\n function chkMinMax(dimension) {\r\n if (\r\n settings[iframeId]['min' + dimension] >\r\n settings[iframeId]['max' + dimension]\r\n ) {\r\n throw new Error(\r\n 'Value for min' +\r\n dimension +\r\n ' can not be greater than max' +\r\n dimension\r\n )\r\n }\r\n }\r\n\r\n chkMinMax('Height')\r\n chkMinMax('Width')\r\n\r\n addStyle('maxHeight')\r\n addStyle('minHeight')\r\n addStyle('maxWidth')\r\n addStyle('minWidth')\r\n }\r\n\r\n function newId() {\r\n var id = (options && options.id) || defaults.id + count++\r\n if (null !== document.getElementById(id)) {\r\n id += count++\r\n }\r\n return id\r\n }\r\n\r\n function ensureHasId(iframeId) {\r\n if ('' === iframeId) {\r\n // eslint-disable-next-line no-multi-assign\r\n iframe.id = iframeId = newId()\r\n logEnabled = (options || {}).log\r\n log(\r\n iframeId,\r\n 'Added missing iframe ID: ' + iframeId + ' (' + iframe.src + ')'\r\n )\r\n }\r\n\r\n return iframeId\r\n }\r\n\r\n function setScrolling() {\r\n log(\r\n iframeId,\r\n 'IFrame scrolling ' +\r\n (settings[iframeId] && settings[iframeId].scrolling\r\n ? 'enabled'\r\n : 'disabled') +\r\n ' for ' +\r\n iframeId\r\n )\r\n iframe.style.overflow =\r\n false === (settings[iframeId] && settings[iframeId].scrolling)\r\n ? 'hidden'\r\n : 'auto'\r\n switch (settings[iframeId] && settings[iframeId].scrolling) {\r\n case 'omit':\r\n break\r\n\r\n case true:\r\n iframe.scrolling = 'yes'\r\n break\r\n\r\n case false:\r\n iframe.scrolling = 'no'\r\n break\r\n\r\n default:\r\n iframe.scrolling = settings[iframeId]\r\n ? settings[iframeId].scrolling\r\n : 'no'\r\n }\r\n }\r\n\r\n // The V1 iFrame script expects an int, where as in V2 expects a CSS\r\n // string value such as '1px 3em', so if we have an int for V2, set V1=V2\r\n // and then convert V2 to a string PX value.\r\n function setupBodyMarginValues() {\r\n if (\r\n 'number' ===\r\n typeof (settings[iframeId] && settings[iframeId].bodyMargin) ||\r\n '0' === (settings[iframeId] && settings[iframeId].bodyMargin)\r\n ) {\r\n settings[iframeId].bodyMarginV1 = settings[iframeId].bodyMargin\r\n settings[iframeId].bodyMargin =\r\n '' + settings[iframeId].bodyMargin + 'px'\r\n }\r\n }\r\n\r\n function checkReset() {\r\n // Reduce scope of firstRun to function, because IE8's JS execution\r\n // context stack is borked and this value gets externally\r\n // changed midway through running this function!!!\r\n var firstRun = settings[iframeId] && settings[iframeId].firstRun,\r\n resetRequertMethod =\r\n settings[iframeId] &&\r\n settings[iframeId].heightCalculationMethod in resetRequiredMethods\r\n\r\n if (!firstRun && resetRequertMethod) {\r\n resetIFrame({ iframe: iframe, height: 0, width: 0, type: 'init' })\r\n }\r\n }\r\n\r\n function setupIFrameObject() {\r\n if (settings[iframeId]) {\r\n settings[iframeId].iframe.iFrameResizer = {\r\n close: closeIFrame.bind(null, settings[iframeId].iframe),\r\n\r\n removeListeners: removeIframeListeners.bind(\r\n null,\r\n settings[iframeId].iframe\r\n ),\r\n\r\n resize: trigger.bind(\r\n null,\r\n 'Window resize',\r\n 'resize',\r\n settings[iframeId].iframe\r\n ),\r\n\r\n moveToAnchor: function (anchor) {\r\n trigger(\r\n 'Move to anchor',\r\n 'moveToAnchor:' + anchor,\r\n settings[iframeId].iframe,\r\n iframeId\r\n )\r\n },\r\n\r\n sendMessage: function (message) {\r\n message = JSON.stringify(message)\r\n trigger(\r\n 'Send Message',\r\n 'message:' + message,\r\n settings[iframeId].iframe,\r\n iframeId\r\n )\r\n }\r\n }\r\n }\r\n }\r\n\r\n // We have to call trigger twice, as we can not be sure if all\r\n // iframes have completed loading when this code runs. The\r\n // event listener also catches the page changing in the iFrame.\r\n function init(msg) {\r\n function iFrameLoaded() {\r\n trigger('iFrame.onload', msg, iframe, undefined, true)\r\n checkReset()\r\n }\r\n\r\n function createDestroyObserver(MutationObserver) {\r\n if (!iframe.parentNode) {\r\n return\r\n }\r\n\r\n var destroyObserver = new MutationObserver(function (mutations) {\r\n mutations.forEach(function (mutation) {\r\n var removedNodes = Array.prototype.slice.call(mutation.removedNodes) // Transform NodeList into an Array\r\n removedNodes.forEach(function (removedNode) {\r\n if (removedNode === iframe) {\r\n closeIFrame(iframe)\r\n }\r\n })\r\n })\r\n })\r\n destroyObserver.observe(iframe.parentNode, {\r\n childList: true\r\n })\r\n }\r\n\r\n var MutationObserver = getMutationObserver()\r\n if (MutationObserver) {\r\n createDestroyObserver(MutationObserver)\r\n }\r\n\r\n addEventListener(iframe, 'load', iFrameLoaded)\r\n trigger('init', msg, iframe, undefined, true)\r\n }\r\n\r\n function checkOptions(options) {\r\n if ('object' !== typeof options) {\r\n throw new TypeError('Options is not an object')\r\n }\r\n }\r\n\r\n function copyOptions(options) {\r\n // eslint-disable-next-line no-restricted-syntax\r\n for (var option in defaults) {\r\n if (Object.prototype.hasOwnProperty.call(defaults, option)) {\r\n settings[iframeId][option] = Object.prototype.hasOwnProperty.call(\r\n options,\r\n option\r\n )\r\n ? options[option]\r\n : defaults[option]\r\n }\r\n }\r\n }\r\n\r\n function getTargetOrigin(remoteHost) {\r\n return '' === remoteHost ||\r\n null !== remoteHost.match(/^(about:blank|javascript:|file:\\/\\/)/)\r\n ? '*'\r\n : remoteHost\r\n }\r\n\r\n function depricate(key) {\r\n var splitName = key.split('Callback')\r\n\r\n if (splitName.length === 2) {\r\n var name =\r\n 'on' + splitName[0].charAt(0).toUpperCase() + splitName[0].slice(1)\r\n this[name] = this[key]\r\n delete this[key]\r\n warn(\r\n iframeId,\r\n \"Deprecated: '\" +\r\n key +\r\n \"' has been renamed '\" +\r\n name +\r\n \"'. The old method will be removed in the next major version.\"\r\n )\r\n }\r\n }\r\n\r\n function processOptions(options) {\r\n options = options || {}\r\n settings[iframeId] = {\r\n firstRun: true,\r\n iframe: iframe,\r\n remoteHost: iframe.src && iframe.src.split('/').slice(0, 3).join('/')\r\n }\r\n\r\n checkOptions(options)\r\n Object.keys(options).forEach(depricate, options)\r\n copyOptions(options)\r\n\r\n if (settings[iframeId]) {\r\n settings[iframeId].targetOrigin =\r\n true === settings[iframeId].checkOrigin\r\n ? getTargetOrigin(settings[iframeId].remoteHost)\r\n : '*'\r\n }\r\n }\r\n\r\n function beenHere() {\r\n return iframeId in settings && 'iFrameResizer' in iframe\r\n }\r\n\r\n var iframeId = ensureHasId(iframe.id)\r\n\r\n if (!beenHere()) {\r\n processOptions(options)\r\n setScrolling()\r\n setLimits()\r\n setupBodyMarginValues()\r\n init(createOutgoingMsg(iframeId))\r\n setupIFrameObject()\r\n } else {\r\n warn(iframeId, 'Ignored iFrame, already setup.')\r\n }\r\n }\r\n\r\n function debouce(fn, time) {\r\n if (null === timer) {\r\n timer = setTimeout(function () {\r\n timer = null\r\n fn()\r\n }, time)\r\n }\r\n }\r\n\r\n var frameTimer = {}\r\n function debounceFrameEvents(fn, time, frameId) {\r\n if (!frameTimer[frameId]) {\r\n frameTimer[frameId] = setTimeout(function () {\r\n frameTimer[frameId] = null\r\n fn()\r\n }, time)\r\n }\r\n }\r\n\r\n // Not testable in PhantomJS\r\n /* istanbul ignore next */\r\n\r\n function fixHiddenIFrames() {\r\n function checkIFrames() {\r\n function checkIFrame(settingId) {\r\n function chkDimension(dimension) {\r\n return (\r\n '0px' ===\r\n (settings[settingId] && settings[settingId].iframe.style[dimension])\r\n )\r\n }\r\n\r\n function isVisible(el) {\r\n return null !== el.offsetParent\r\n }\r\n\r\n if (\r\n settings[settingId] &&\r\n isVisible(settings[settingId].iframe) &&\r\n (chkDimension('height') || chkDimension('width'))\r\n ) {\r\n trigger(\r\n 'Visibility change',\r\n 'resize',\r\n settings[settingId].iframe,\r\n settingId\r\n )\r\n }\r\n }\r\n\r\n Object.keys(settings).forEach(function (key) {\r\n checkIFrame(key)\r\n })\r\n }\r\n\r\n function mutationObserved(mutations) {\r\n log(\r\n 'window',\r\n 'Mutation observed: ' + mutations[0].target + ' ' + mutations[0].type\r\n )\r\n debouce(checkIFrames, 16)\r\n }\r\n\r\n function createMutationObserver() {\r\n var target = document.querySelector('body'),\r\n config = {\r\n attributes: true,\r\n attributeOldValue: false,\r\n characterData: true,\r\n characterDataOldValue: false,\r\n childList: true,\r\n subtree: true\r\n },\r\n observer = new MutationObserver(mutationObserved)\r\n\r\n observer.observe(target, config)\r\n }\r\n\r\n var MutationObserver = getMutationObserver()\r\n if (MutationObserver) {\r\n createMutationObserver()\r\n }\r\n }\r\n\r\n function resizeIFrames(event) {\r\n function resize() {\r\n sendTriggerMsg('Window ' + event, 'resize')\r\n }\r\n\r\n log('window', 'Trigger event: ' + event)\r\n debouce(resize, 16)\r\n }\r\n\r\n // Not testable in PhantomJS\r\n /* istanbul ignore next */\r\n function tabVisible() {\r\n function resize() {\r\n sendTriggerMsg('Tab Visable', 'resize')\r\n }\r\n\r\n if ('hidden' !== document.visibilityState) {\r\n log('document', 'Trigger event: Visiblity change')\r\n debouce(resize, 16)\r\n }\r\n }\r\n\r\n function sendTriggerMsg(eventName, event) {\r\n function isIFrameResizeEnabled(iframeId) {\r\n return (\r\n settings[iframeId] &&\r\n 'parent' === settings[iframeId].resizeFrom &&\r\n settings[iframeId].autoResize &&\r\n !settings[iframeId].firstRun\r\n )\r\n }\r\n\r\n Object.keys(settings).forEach(function (iframeId) {\r\n if (isIFrameResizeEnabled(iframeId)) {\r\n trigger(eventName, event, settings[iframeId].iframe, iframeId)\r\n }\r\n })\r\n }\r\n\r\n function setupEventListeners() {\r\n addEventListener(window, 'message', iFrameListener)\r\n\r\n addEventListener(window, 'resize', function () {\r\n resizeIFrames('resize')\r\n })\r\n\r\n addEventListener(document, 'visibilitychange', tabVisible)\r\n\r\n addEventListener(document, '-webkit-visibilitychange', tabVisible)\r\n }\r\n\r\n function factory() {\r\n function init(options, element) {\r\n function chkType() {\r\n if (!element.tagName) {\r\n throw new TypeError('Object is not a valid DOM element')\r\n } else if ('IFRAME' !== element.tagName.toUpperCase()) {\r\n throw new TypeError(\r\n 'Expected