@iframe-resizer/core 5.5.6-beta.1 → 5.5.6-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -25,4 +25,4 @@ yarn add @iframe-resizer/core
25
25
 
26
26
  ---
27
27
 
28
- _iframe-resizer version 5.5.6-beta.1 2025-09-04 - 10:55:49.979Z_
28
+ _iframe-resizer version 5.5.6-beta.2 2025-09-05 - 13:24:50.871Z_
package/index.cjs.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * @preserve
3
3
  *
4
- * @module iframe-resizer/core 5.5.6-beta.1 (cjs) - 2025-09-04
4
+ * @module iframe-resizer/core 5.5.6-beta.2 (cjs) - 2025-09-05
5
5
  *
6
6
  * @license GPL-3.0 for non-commercial use only.
7
7
  * For commercial use, you must purchase a license from
@@ -17,5 +17,5 @@
17
17
  */
18
18
 
19
19
 
20
- "use strict";const e=require("auto-console-group"),t="5.5.6-beta.1",i="autoResize",o="init",n="iframe requested init",r="load",s="message",a="onload",l="pageInfo",c="parentInfo",d="reset",u="resize",f="scroll",p="none",m="vertical",h="horizontal",g="[iFrameSizer]",y=Object.freeze({max:1,scroll:1,bodyScroll:1,documentElementScroll:1}),b=Object.freeze({[a]:1,[o]:1,[n]:1}),v="expanded",w="collapsed",z=Object.freeze({[v]:1,[w]:1}),H=(e,t,i,o)=>e.addEventListener(t,i,o||!1),I=(e,t,i)=>e.removeEventListener(t,i,!1),$=e=>{if(!e)return"";let t=-559038744,i=1103547984;for(let o,n=0;n<e.length;n++)o=e.codePointAt(n),t=Math.imul(t^o,2246822519),i=Math.imul(i^o,3266489917);return t^=Math.imul(t^i>>>15,1935289751),i^=Math.imul(i^t>>>15,3405138345),t^=i>>>16,i^=t>>>16,(2097152*(i>>>0)+(t>>>11)).toString(36)},T=e=>e.replace(/[A-Za-z]/g,e=>String.fromCodePoint((e<="Z"?90:122)>=(e=e.codePointAt(0)+19)?e:e-26)),j=["spjluzl","rlf","clyzpvu"],k=["<yi>Puchspk Spjluzl Rlf</><iy><iy>","<yi>Tpzzpun Spjluzl Rlf</><iy><iy>","Aopz spiyhyf pz hchpshisl dpao ivao Jvttlyjphs huk Vwlu-Zvbyjl spjluzlz.<iy><iy><i>Jvttlyjphs Spjluzl</><iy>Mvy jvttlyjphs bzl, <p>pmyhtl-ylzpgly</> ylxbpylz h svd jvza vul aptl spjluzl mll. Mvy tvyl pumvythapvu cpzpa <b>oaawz://pmyhtl-ylzpgly.jvt/wypjpun</>.<iy><iy><i>Vwlu Zvbyjl Spjluzl</><iy>Pm fvb hyl bzpun aopz spiyhyf pu h uvu-jvttlyjphs vwlu zvbyjl wyvqlja aolu fvb jhu bzl pa mvy myll bukly aol alytz vm aol NWS C3 Spjluzl. Av jvumpyt fvb hjjlwa aolzl alytz, wslhzl zla aol <i>spjluzl</> rlf pu <p>pmyhtl-ylzpgly</> vwapvuz av <i>NWSc3</>.<iy><iy>Mvy tvyl pumvythapvu wslhzl zll: <b>oaawz://pmyhtl-ylzpgly.jvt/nws</>","<i>NWSc3 Spjluzl Clyzpvu</><iy><iy>Aopz clyzpvu vm <p>pmyhtl-ylzpgly</> pz ilpun bzlk bukly aol alytz vm aol <i>NWS C3</> spjluzl. Aopz spjluzl hssvdz fvb av bzl <p>pmyhtl-ylzpgly</> pu Vwlu Zvbyjl wyvqljaz, iba pa ylxbpylz fvby wyvqlja av il wbispj, wyvcpkl haaypibapvu huk il spjluzlk bukly clyzpvu 3 vy shaly vm aol NUB Nlulyhs Wbispj Spjluzl.<iy><iy>Pm fvb hyl bzpun aopz spiyhyf pu h uvu-vwlu zvbyjl wyvqlja vy dlizpal, fvb dpss ullk av wbyjohzl h svd jvza vul aptl jvttlyjphs spjluzl.<iy><iy>Mvy tvyl pumvythapvu cpzpa <b>oaawz://pmyhtl-ylzpgly.jvt/wypjpun</>.","<iy><yi>Zvsv spjluzl kvlz uva zbwwvya jyvzz-kvthpu</><iy><iy>Av bzl <p>pmyhtl-ylzpgly</> dpao jyvzz kvthpu pmyhtlz fvb ullk lpaoly aol Wyvmlzzpvuhs vy Ibzpulzz spjluzlz. Mvy klahpsz vu bwnyhkl wypjpun wslhzl jvuahja pumv@pmyhtl-ylzpgly.jvt."],G=["NWSc3","zvsv","wyv","ibzpulzz","vlt"],O=Object.fromEntries(["2cgs7fdf4xb","1c9ctcccr4z","1q2pc4eebgb","ueokt0969w","w2zxchhgqz","1umuxblj2e5"].map((e,t)=>[e,Math.max(0,t-1)])),R=e=>T(k[e]),x=e=>{const t=e[T(j[0])]||e[T(j[1])]||e[T(j[2])];if(!t)return-1;const i=t.split("-");let o=function(e=""){let t=-2;const i=$(T(e));return i in O&&(t=O[i]),t}(i[0]);return 0===o||(e=>e[2]===$(e[0]+e[1]))(i)||(o=-2),o},L=Object.hasOwn||((e,t)=>Object.prototype.hasOwnProperty.call(e,t)),M=e=>e,S=e=>t=>window.chrome?e(t.replaceAll("<br>","\n").replaceAll("<rb>","").replaceAll("</>","").replaceAll("<b>","").replaceAll("<i>","").replaceAll("<u>","")):e((e=>e.replaceAll("<br>","\n").replaceAll(/<[/a-z]+>/gi,""))(t)),E={},C=(N=e,N?.__esModule?N.default:N);var N;let A=!0;const W=C({expand:!1,label:"parent"}),F=e=>window.top===window.self?`parent(${e})`:`nested parent(${e})`;const B=e=>(t,...i)=>E[t]?E[t].console[e](...i):W[e](...i),P=e=>(t,...i)=>!0===(e=>E[e]?E[e].log:A)(t)?B(e)(t,...i):null,D=P("log"),U=D,q=P("debug"),J=B("warn"),V=B("error"),Z=B("event"),X=B("purge"),Y=B("errorBoundary");const _=(e,...t)=>E[e]?E[e].console.warn(S(M)(...t)):queueMicrotask(()=>console?.warn(S((e=>(...t)=>[`iframeResizer(${e})`,...t].join(" "))(e))(...t))),K=(e=>(t,i="renamed to")=>(o,n,r="",s="")=>e(s,`<rb>Deprecated ${t}(${o.replace("()","")})</>\n\nThe <b>${o}</> ${t.toLowerCase()} has been ${i} <b>${n}</>. ${r}Use of the old ${t.toLowerCase()} will be removed in a future version of <i>iframe-resizer</>.`))(_),Q=K("Option");function ee(e,t){const{msgTimeout:i,warningTimeout:o}=t[e];o&&(i&&clearTimeout(i),t[e].msgTimeout=setTimeout(function(){if(void 0===t[e])return;const{ready:i,loadErrorShown:o}=t[e];t[e].msgTimeout=void 0,i||o||(t[e].loadErrorShown=!0,function(e,t){const{iframe:i,waitForLoad:o}=t[e],{sandbox:n}=i,r="object"==typeof n&&n.length>0&&!(n.contains("allow-scripts")&&n.contains("allow-same-origin"));Z(e,"noResponse"),_(e,`<rb>No response from iframe</>\n \nThe iframe (<i>${e}</>) has not responded within ${t[e].warningTimeout/1e3} seconds. Check <b>@iframe-resizer/child</> package has been loaded in the iframe.\n${o?"\nThe <b>waitForLoad</> option is currently set to <b>'true'</>. If the iframe loads before <i>iframe-resizer</> runs, this option will prevent <i>iframe-resizer</> initialising. To disable this option, set <b>waitForLoad</> to <b>'false'</>. \n":""}${r?"\nThe iframe has the <b>sandbox</> attribute, please ensure it contains both the <i>'allow-same-origin'</> and <i>'allow-scripts'</> values.\n":""}\nThis message can be ignored if everything is working, or you can set the <b>warningTimeout</> option to a higher value or zero to suppress this warning.\n`)}(e,t))},o))}const te=Object.freeze({autoResize:!0,bodyBackground:null,bodyMargin:null,bodyPadding:null,checkOrigin:!0,direction:m,inPageLinks:!1,heightCalculationMethod:"auto",id:"iFrameResizer",log:!1,logExpand:!1,license:void 0,mouseEvents:!0,offsetHeight:null,offsetWidth:null,postMessageTarget:null,sameDomain:!1,scrolling:!1,sizeHeight:!0,sizeWidth:!1,tolerance:0,waitForLoad:!1,warningTimeout:5e3,widthCalculationMethod:"auto",onBeforeClose:()=>!0,onAfterClose(){},onInit:!1,onMessage:null,onMouseEnter(){},onMouseLeave(){},onReady:e=>{"function"==typeof E[e.id].onInit&&(Q("init()","onReady()","",e.id),E[e.id].onInit(e))},onResized(){},onScroll:()=>!0}),ie={position:null,version:t};function oe(a){function p(){ue(W),ce(P),M("onResized",W)}function m(e){if("border-box"!==e.boxSizing)return 0;return(e.paddingTop?parseInt(e.paddingTop,10):0)+(e.paddingBottom?parseInt(e.paddingBottom,10):0)}function h(e){if("border-box"!==e.boxSizing)return 0;return(e.borderTopWidth?parseInt(e.borderTopWidth,10):0)+(e.borderBottomWidth?parseInt(e.borderBottomWidth,10):0)}const y=e=>A.slice(A.indexOf(":")+7+e);const b=(e,t)=>(i,o)=>{const n={};var r,s;r=function(){pe(`${i} (${e})`,`${e}:${t()}`,o)},n[s=o]||(r(),n[s]=requestAnimationFrame(()=>{n[s]=null}))},v=(e,t)=>()=>{let i=!1;const o=t=>()=>{E[c]?i&&i!==t||(e(t,c),i=t,requestAnimationFrame(()=>{i=!1})):l()},n=o(f),s=o("resize window");function a(e,i){D(c,`${e}listeners for send${t}`),i(window,f,n),i(window,u,s)}function l(){Z(c,`stop${t}`),a("Remove ",I),d.disconnect(),p.disconnect(),I(E[c].iframe,r,l)}const c=P,d=new ResizeObserver(o("pageObserver")),p=new ResizeObserver(o("iframeObserver"));E[c]&&(E[c][`stop${t}`]=l,H(E[c].iframe,r,l),a("Add ",H),d.observe(document.body,{attributes:!0,childList:!0,subtree:!0}),p.observe(E[c].iframe,{attributes:!0,childList:!1,subtree:!1}))},w=e=>()=>{e in E[P]&&(E[P][e](),delete E[P][e])},z=b(l,function(){const e=document.body.getBoundingClientRect(),t=W.iframe.getBoundingClientRect(),{scrollY:i,scrollX:o,innerHeight:n,innerWidth:r}=window,{clientHeight:s,clientWidth:a}=document.documentElement;return JSON.stringify({iframeHeight:t.height,iframeWidth:t.width,clientHeight:Math.max(s,n||0),clientWidth:Math.max(a,r||0),offsetTop:parseInt(t.top-e.top,10),offsetLeft:parseInt(t.left-e.left,10),scrollTop:i,scrollLeft:o,documentHeight:s,documentWidth:a,windowHeight:n,windowWidth:r})}),$=b(c,function(){const{iframe:e}=W,{scrollWidth:t,scrollHeight:i}=document.documentElement,{width:o,height:n,offsetLeft:r,offsetTop:s,pageLeft:a,pageTop:l,scale:c}=window.visualViewport;return JSON.stringify({iframe:e.getBoundingClientRect(),document:{scrollWidth:t,scrollHeight:i},viewport:{width:o,height:n,offsetLeft:r,offsetTop:s,pageLeft:a,pageTop:l,scale:c}})}),T=v(z,"PageInfo"),j=v($,"ParentInfo"),k=w("stopPageInfo"),G=w("stopParentInfo");function O(e){const t=e.getBoundingClientRect();return ae(P),{x:Number(t.left)+Number(ie.position.x),y:Number(t.top)+Number(ie.position.y)}}function R(t){const i=t?O(W.iframe):{x:0,y:0};U(P,`Reposition requested (offset x:%c${i.x}%c y:%c${i.y})`,e.HIGHLIGHT,e.FOREGROUND,e.HIGHLIGHT);const o=((e,t)=>({x:e.width+t.x,y:e.height+t.y}))(W,i),n=window.parentIframe||window.parentIFrame;n?function(e,i){setTimeout(()=>e["scrollTo"+(t?"Offset":"")](i.x,i.y))}(n,o):function(e){ie.position=e,x(P)}(o)}function x(e){const{x:t,y:i}=ie.position,o=E[e]?.iframe;!1!==M("onScroll",{iframe:o,top:i,left:t,x:t,y:i})?ce(e):le()}function L(e){let t={};if(0===W.width&&0===W.height){const e=y(9).split(":");t={x:e[1],y:e[0]}}else t={x:W.width,y:W.height};M(e,{iframe:W.iframe,screenX:Number(t.x),screenY:Number(t.y),type:W.type})}const M=(e,t)=>ne(P,e,t);function S(){const{height:n,iframe:r,msg:a,type:u,width:f}=W;switch(E[P]?.firstRun&&function(){if(!E[P])return;ve(P,W.mode),E[P].firstRun=!1}(),u){case"close":se(r);break;case s:h=y(6),D(P,`onMessage passed: {iframe: %c${W.iframe.id}%c, message: %c${h}%c}`,e.HIGHLIGHT,e.FOREGROUND,e.HIGHLIGHT,e.FOREGROUND),M("onMessage",{iframe:W.iframe,message:JSON.parse(h)});break;case"mouseenter":L("onMouseEnter");break;case"mouseleave":L("onMouseLeave");break;case"beforeUnload":U(P,"Ready state reset"),E[P].ready=!1;break;case i:E[P].autoResize=JSON.parse(y(9));break;case"scrollBy":!function(){const t=W.width,i=W.height,o=window.parentIframe||window.parentIFrame||window;U(P,`scrollBy: x: %c${t}%c y: %c${i}`,e.HIGHLIGHT,e.FOREGROUND,e.HIGHLIGHT),o.scrollBy(t,i)}();break;case"scrollTo":R(!1);break;case"scrollToOffset":R(!0);break;case l:T();break;case c:j();break;case"pageInfoStop":k();break;case"parentInfoStop":G();break;case"inPageLink":!function(t){const i=t.split("#")[1]||"",o=decodeURIComponent(i);let n=document.getElementById(o)||document.getElementsByName(o)[0];n?function(){const t=O(n);U(P,`Moving to in page link: %c#${i}`,e.HIGHLIGHT),ie.position={x:t.x,y:t.y},x(P),window.location.hash=i}():window.top!==window.self?function(){const e=window.parentIframe||window.parentIFrame;e?e.moveToAnchor(i):D(P,`In page link #${i} not found`)}():D(P,`In page link #${i} not found`)}(y(9));break;case"title":!function(t,i){E[i]?.syncTitle&&(E[i].iframe.title=t,U(i,`Set iframe title attribute: %c${t}`,e.HIGHLIGHT))}(a,P);break;case d:de(W);break;case o:p(),function(t){try{E[t].sameOrigin=!!E[t]?.iframe?.contentWindow?.iframeChildListener}catch(e){E[t].sameOrigin=!1}D(t,`sameOrigin: %c${E[t].sameOrigin}`,e.HIGHLIGHT)}(P),(m=a)!==t&&(void 0!==m?D(P,`Version mismatch (Child: %c${m}%c !== Parent: %c${t})`,e.HIGHLIGHT,e.FOREGROUND,e.HIGHLIGHT):_(P,"<rb>Legacy version detected in iframe</>\n\nDetected legacy version of child page script. It is recommended to update the page in the iframe to use <b>@iframe-resizer/child</>.\n\nSee <u>https://iframe-resizer.com/setup/#child-page-setup</> for more details.\n")),ge=!0,M("onReady",r);break;default:if(0===f&&0===n)return void J(P,`Unsupported message received (${u}), this is likely due to the iframe containing a later version of iframe-resizer than the parent page`);if(0===f||0===n)return void D(P,"Ignoring message with 0 height or width");if(document.hidden)return void D(P,"Page hidden - ignored resize request");p()}var m,h}function C(e){if(!E[e])throw new Error(`${W.type} No settings for ${e}. Message was: ${A}`)}const N=e=>Object.keys(E).forEach((e=>t=>{const{ready:i,postMessageTarget:o}=E[t];i||e!==o||(pe(n,me(t),t),ee(t,E))})(e));let A=a.data;if("[iFrameResizerChild]Ready"===A)return void N(a.source);if(!(e=>g===`${e}`.slice(0,13)&&e.slice(13).split(":")[0]in E)(A)){if("string"!=typeof A)return;return Z("parent","ignoredMessage"),void q("parent",A)}const W=function(e){const t=e.slice(13).split(":"),i=t[1]?Number(t[1]):0,o=E[t[0]]?.iframe,n=getComputedStyle(o),r={iframe:o,id:t[0],height:i+m(n)+h(n),width:Number(t[2]),type:t[3],msg:t[4]};return t[5]&&(r.mode=t[5]),r}(A),{id:F,type:B}=W,P=F;P?(Z(P,B),Y(P,function(t){C(P),function(){const e=W.type in{true:1,false:1,undefined:1};return e&&D(P,"Ignoring init message from meta parent page"),e}()||(D(P,`Received: %c${t}`,e.HIGHLIGHT),E[P].ready=!0,(null!==W.iframe||(J(P,`The iframe (${W.id}) was not found.`),0))&&function(){const{origin:t,sameOrigin:i}=a;if(i)return!0;let o=E[P]?.checkOrigin;if(o&&"null"!=`${t}`&&!(o.constructor===Array?function(){let i=0,n=!1;for(D(P,`Checking connection is from allowed list of origins: %c${o}`,e.HIGHLIGHT);i<o.length;i++)if(o[i]===t){n=!0;break}return n}():function(){const i=E[P]?.remoteHost;return D(P,`Checking connection is from: %c${i}`,e.HIGHLIGHT),t===i}()))throw new Error(`Unexpected message received from: ${t} for ${W.iframe.id}. Message was: ${a.data}. This error can be disabled by setting the checkOrigin: false option or by providing of array of trusted domains.`);return!0}()&&S())})(A)):J("","iframeResizer received messageData without id, message was: ",A)}function ne(e,t,i){let o=null,n=null;if(E[e]){if(o=E[e][t],"function"!=typeof o)throw new TypeError(`${t} on iFrame[${e}] is not a function`);if("onBeforeClose"===t||"onScroll"===t)try{n=o(i)}catch(i){console.error(i),J(e,`Error in ${t} callback`)}else((e,...t)=>{setTimeout(()=>e(...t),0)})(o,i)}return n}function re(e){const{id:t}=e;D(t,"Disconnected from iframe"),delete E[t],delete e.iframeResizer}function se(t){const{id:i}=t;if(!1!==ne(i,"onBeforeClose",i)){D(i,`Removing iFrame: %c${i}`,e.HIGHLIGHT);try{t.parentNode&&t.remove()}catch(e){J(i,e)}ne(i,"onAfterClose",i),re(t)}else D(i,"Close iframe cancelled by onBeforeClose")}function ae(t){null===ie.position&&(ie.position={x:window.scrollX,y:window.scrollY},D(t,`Get page position: %c${ie.position.x}%c, %c${ie.position.y}`,e.HIGHLIGHT,e.FOREGROUND,e.HIGHLIGHT))}function le(){ie.position=null}function ce(t){null!==ie.position&&(window.scrollTo(ie.position.x,ie.position.y),U(t,`Set page position: %c${ie.position.x}%c, %c${ie.position.y}`,e.HIGHLIGHT,e.FOREGROUND,e.HIGHLIGHT),le())}function de(e){D(e.id,"Size reset requested by "+(e.type===o?"parent page":"child page")),ae(e.id),ue(e),pe(d,d,e.id)}function ue(t){function i(i){const n=`${t[i]}px`;t.iframe.style[i]=n,U(o,`Set ${i}: %c${n}`,e.HIGHLIGHT)}const{id:o}=t,{sizeHeight:n,sizeWidth:r}=E[o];n&&i("height"),r&&i("width")}const fe=e=>e.split(":").filter((e,t)=>19!==t).join(":");function pe(t,i,o){function n(n){const r=t in b?fe(i):i;U(o,n,e.HIGHLIGHT,e.FOREGROUND,e.HIGHLIGHT),U(o,`Message data: %c${r}`,e.HIGHLIGHT)}Z(o,t),E[o]&&(E[o]?.postMessageTarget?function(){const{iframe:e,postMessageTarget:r,sameOrigin:s,targetOrigin:a}=E[o];if(s)try{return e.contentWindow.iframeChildListener(g+i),void n(`Sending message to iframe %c${o}%c via same origin%c`)}catch(e){t in b?(E[o].sameOrigin=!1,D(o,"New iframe does not support same origin")):J(o,"Same origin messaging failed, falling back to postMessage")}n(`Sending message to iframe: %c${o}%c targetOrigin: %c${a}`),r.postMessage(g+i,a)}():J(o,`Iframe(${o}) not found`))}function me(e){const t=E[e];return[e,"8",t.sizeWidth,t.log,"32",!0,t.autoResize,t.bodyMargin,t.heightCalculationMethod,t.bodyBackground,t.bodyPadding,t.tolerance,t.inPageLinks,"child",t.widthCalculationMethod,t.mouseEvents,t.offsetHeight,t.offsetWidth,t.sizeHeight,t.license,ie.version,t.mode,"",t.logExpand].join(":")}let he=0,ge=!1,ye=!1,be=!1;function ve(i,o=-3){if(ye)return;const n=Math.max(E[i].mode,o);if(n>E[i].mode&&(E[i].mode=n),n<0)throw X(i),E[i].vAdvised||_(i||"Parent",`${R(n+2)}${R(2)}`),E[i].vAdvised=!0,R(n+2).replace(/<\/?[a-z][^>]*>|<\/>/gi,"");n>0&&be||function(t,i){queueMicrotask(()=>console.info(`%ciframe-resizer ${t}`,A||i<1?"font-weight: bold;":e.NORMAL))}(`v${t} (${(e=>T(G[e]))(n)})`,n),n<1&&_("Parent",R(3)),ye=!0}function we(){!1===document.hidden&&(D("document","Trigger event: Visibility change"),function(e,t){const i=e=>E[e]?.autoResize&&!E[e]?.firstRun;Object.keys(E).forEach(function(o){i(o)&&pe(e,t,o)})}("tabVisible",u))}const ze=(e=>{let t=!1;return function(){return t?void 0:(t=!0,Reflect.apply(e,this,arguments))}})(()=>{H(window,s,oe),H(document,"visibilitychange",we),window.iframeParentListener=e=>setTimeout(()=>oe({data:e,sameOrigin:!0}))});module.exports=t=>n=>{function l(){if(E[T]){const{iframe:e}=E[T],t={close:se.bind(null,e),disconnect:re.bind(null,e),removeListeners(){_(T,"<rb>Deprecated Method Name</>\n\nThe emoveListeners()</> method has been renamed to isconnect()</>.\n"),this.disconnect()},resize(){_(T,"<rb>Deprecated Method</>\n \nUse of the <b>resize()</> method from the parent page is deprecated and will be removed in a future version of <i>iframe-resizer</>. As their are no longer any edge cases that require triggering a resize from the parent page, it is recommended to remove this method from your code."),pe.bind(null,"Window resize",u,T)},moveToAnchor(e){((e,t,i)=>{if(typeof e!==t)throw new TypeError(`${i} is not a ${o=t,o.charAt(0).toUpperCase()+o.slice(1)}`);var o})(e,"string","moveToAnchor(anchor) anchor"),pe("Move to anchor",`moveToAnchor:${e}`,T)},sendMessage(e){e=JSON.stringify(e),pe(s,`${s}:${e}`,T)}};e.iframeResizer=t,e.iFrameResizer=t}}function c(e){const{id:t}=n,{waitForLoad:i}=E[t];H(n,r,()=>{pe(a,`${e}:${ge}`,t),ee(t,E),function(){const e=E[T]?.firstRun,t=E[T]?.heightCalculationMethod in y;!e&&t&&de({iframe:n,height:0,width:0,type:o})}()}),!0!==i&&(pe(o,`${e}:${ge}`,t),ee(t,E))}function d(e){return e?(("sizeWidth"in e||"sizeHeight"in e||i in e)&&_(T,`<rb>Deprecated Option</>\n\nThe <b>sizeWidth</>, <b>sizeHeight</> and <b>autoResize</> options have been replaced with new <b>direction</> option which expects values of <i>"${m}"</>, <i>"${h}"</> or <i>"${p}"</>.\n`),e):{}}function f(e){const t=E[e]?.iframe?.title;return""===t||void 0===t}function g(e,t){L(E[T],e)&&(_(T,`<rb>Deprecated option</>\n\nThe <b>${e}</> option has been renamed to <b>${t}</>. Use of the old name will be removed in a future version of <i>iframe-resizer</>.`),E[T][t]=E[T][e],delete E[T][e])}const b=e=>L(e,"onMouseEnter")||L(e,"onMouseLeave");function I(t){var i,o;E[T]={...E[T],iframe:n,firstRun:!0,remoteHost:n?.src.split("/").slice(0,3).join("/"),...te,...d(t),mouseEvents:b(t),mode:x(t),syncTitle:f(T)},g("offset","offsetSize"),g("onClose","onBeforeClose"),g("onClosed","onAfterClose"),Z(T,"setup"),function(){const{direction:t}=E[T];switch(t){case m:break;case h:E[T].sizeHeight=!1;case"both":E[T].sizeWidth=!0;break;case p:E[T].sizeWidth=!1,E[T].sizeHeight=!1,E[T].autoResize=!1;break;default:throw new TypeError(T,`Direction value of "${t}" is not valid`)}D(T,`direction: %c${t}`,e.HIGHLIGHT)}(),(i=t?.offsetSize||t?.offset)&&(E[T].direction===m?(E[T].offsetHeight=i,D(T,`Offset height: %c${i}`,e.HIGHLIGHT)):(E[T].offsetWidth=i,D(T,`Offset width: %c${i}`,e.HIGHLIGHT))),function(e){e?.offset&&_(T,"<rb>Deprecated option</>\n\n The <b>offset</> option has been renamed to <b>offsetSize</>. Use of the old name will be removed in a future version of <i>iframe-resizer</>.")}(t),E[T].warningTimeout||U(T,"warningTimeout:%c disabled",e.HIGHLIGHT),null===E[T].postMessageTarget&&(E[T].postMessageTarget=n.contentWindow),E[T].targetOrigin=!0===E[T].checkOrigin?""===(o=E[T].remoteHost)||null!==o.match(/^(about:blank|javascript:|file:\/\/)/)?"*":o:"*"}const $=()=>"iframeResizer"in n,T=function(e){if(e&&"string"!=typeof e)throw new TypeError("Invalid id for iFrame. Expected String");return""!==e&&e||(e=function(){let e=t?.id||te.id+he++;return null!==document.getElementById(e)&&(e+=he++),e}(),n.id=e,D(e,`Added missing iframe ID: ${e} (${n.src})`)),e}(n.id);if("object"!=typeof t)throw new TypeError("Options is not an object");return function(e){const{search:t}=window.location;t.includes("ifrlog")&&(e.log=w,e.logExpand=t.includes("ifrlog=expanded"))}(t),function(e,t){const i=L(t,"log"),o="string"==typeof t.log,n=i?!!o||t.log:te.log;L(t,"logExpand")||(t.logExpand=i&&o?t.log===v:te.logExpand),function(e){-1===e?.log&&(e.log=!1,be=!0)}(t),function({enabled:e,expand:t,iframeId:i}){const o=C({expand:t,label:F(i)});A=e,E[i]||(E[i]={console:o})}({enabled:n,expand:t.logExpand,iframeId:e}),o&&!(t.log in z)&&V(e,'Invalid value for options.log: Accepted values are "expanded" and "collapsed"'),t.log=n}(T,t),Y(T,function(e){$()?J(T,`Ignored iframe (${T}), already setup.`):(I(e),function(){if(ye)return;const{mode:e}=E[T];-1!==e&&ve(T,e)}(),ze(),function(){switch(D(T,`Iframe scrolling ${E[T]?.scrolling?"enabled":"disabled"} for ${T}`),n.style.overflow=!1===E[T]?.scrolling?"hidden":"auto",E[T]?.scrolling){case"omit":break;case!0:n.scrolling="yes";break;case!1:n.scrolling="no";break;default:n.scrolling=E[T]?E[T].scrolling:"no"}}(),function(){const{bodyMargin:e}=E[T];"number"!=typeof e&&"0"!==e||(E[T].bodyMargin=`${e}px`)}(),c(me(T)),l(),D(T,"Setup complete"))})(t),n?.iframeResizer};
20
+ "use strict";const e=require("auto-console-group"),i="5.5.6-beta.2",t="autoResize",n="init",o="iframeReady",r="load",s="message",a="onload",l="pageInfo",c="parentInfo",d="reset",u="resize",f="scroll",p="none",m="vertical",h="horizontal",g="[iFrameSizer]",y=Object.freeze({max:1,scroll:1,bodyScroll:1,documentElementScroll:1}),b=Object.freeze({[a]:1,[n]:1,[o]:1}),v="expanded",w="collapsed",z=Object.freeze({[v]:1,[w]:1}),H=(e,i,t,n)=>e.addEventListener(i,t,n||!1),I=(e,i,t)=>e.removeEventListener(i,t,!1),$=e=>{if(!e)return"";let i=-559038744,t=1103547984;for(let n,o=0;o<e.length;o++)n=e.codePointAt(o),i=Math.imul(i^n,2246822519),t=Math.imul(t^n,3266489917);return i^=Math.imul(i^t>>>15,1935289751),t^=Math.imul(t^i>>>15,3405138345),i^=t>>>16,t^=i>>>16,(2097152*(t>>>0)+(i>>>11)).toString(36)},T=e=>e.replace(/[A-Za-z]/g,e=>String.fromCodePoint((e<="Z"?90:122)>=(e=e.codePointAt(0)+19)?e:e-26)),j=["spjluzl","rlf","clyzpvu"],k=["<yi>Puchspk Spjluzl Rlf</><iy><iy>","<yi>Tpzzpun Spjluzl Rlf</><iy><iy>","Aopz spiyhyf pz hchpshisl dpao ivao Jvttlyjphs huk Vwlu-Zvbyjl spjluzlz.<iy><iy><i>Jvttlyjphs Spjluzl</><iy>Mvy jvttlyjphs bzl, <p>pmyhtl-ylzpgly</> ylxbpylz h svd jvza vul aptl spjluzl mll. Mvy tvyl pumvythapvu cpzpa <b>oaawz://pmyhtl-ylzpgly.jvt/wypjpun</>.<iy><iy><i>Vwlu Zvbyjl Spjluzl</><iy>Pm fvb hyl bzpun aopz spiyhyf pu h uvu-jvttlyjphs vwlu zvbyjl wyvqlja aolu fvb jhu bzl pa mvy myll bukly aol alytz vm aol NWS C3 Spjluzl. Av jvumpyt fvb hjjlwa aolzl alytz, wslhzl zla aol <i>spjluzl</> rlf pu <p>pmyhtl-ylzpgly</> vwapvuz av <i>NWSc3</>.<iy><iy>Mvy tvyl pumvythapvu wslhzl zll: <b>oaawz://pmyhtl-ylzpgly.jvt/nws</>","<i>NWSc3 Spjluzl Clyzpvu</><iy><iy>Aopz clyzpvu vm <p>pmyhtl-ylzpgly</> pz ilpun bzlk bukly aol alytz vm aol <i>NWS C3</> spjluzl. Aopz spjluzl hssvdz fvb av bzl <p>pmyhtl-ylzpgly</> pu Vwlu Zvbyjl wyvqljaz, iba pa ylxbpylz fvby wyvqlja av il wbispj, wyvcpkl haaypibapvu huk il spjluzlk bukly clyzpvu 3 vy shaly vm aol NUB Nlulyhs Wbispj Spjluzl.<iy><iy>Pm fvb hyl bzpun aopz spiyhyf pu h uvu-vwlu zvbyjl wyvqlja vy dlizpal, fvb dpss ullk av wbyjohzl h svd jvza vul aptl jvttlyjphs spjluzl.<iy><iy>Mvy tvyl pumvythapvu cpzpa <b>oaawz://pmyhtl-ylzpgly.jvt/wypjpun</>.","<iy><yi>Zvsv spjluzl kvlz uva zbwwvya jyvzz-kvthpu</><iy><iy>Av bzl <p>pmyhtl-ylzpgly</> dpao jyvzz kvthpu pmyhtlz fvb ullk lpaoly aol Wyvmlzzpvuhs vy Ibzpulzz spjluzlz. Mvy klahpsz vu bwnyhkl wypjpun wslhzl jvuahja pumv@pmyhtl-ylzpgly.jvt."],G=["NWSc3","zvsv","wyv","ibzpulzz","vlt"],R=Object.fromEntries(["2cgs7fdf4xb","1c9ctcccr4z","1q2pc4eebgb","ueokt0969w","w2zxchhgqz","1umuxblj2e5"].map((e,i)=>[e,Math.max(0,i-1)])),O=e=>T(k[e]),x=e=>{const i=e[T(j[0])]||e[T(j[1])]||e[T(j[2])];if(!i)return-1;const t=i.split("-");let n=function(e=""){let i=-2;const t=$(T(e));return t in R&&(i=R[t]),i}(t[0]);return 0===n||(e=>e[2]===$(e[0]+e[1]))(t)||(n=-2),n},L=Object.hasOwn||((e,i)=>Object.prototype.hasOwnProperty.call(e,i)),M=e=>e,S=e=>i=>window.chrome?e(i.replaceAll("<br>","\n").replaceAll("<rb>","").replaceAll("</>","").replaceAll("<b>","").replaceAll("<i>","").replaceAll("<u>","")):e((e=>e.replaceAll("<br>","\n").replaceAll(/<[/a-z]+>/gi,""))(i)),E={},C=(N=e,N?.__esModule?N.default:N);var N;let A=!0;const W=C({expand:!1,label:"parent"}),F=e=>window.top===window.self?`parent(${e})`:`nested parent(${e})`;const B=e=>(i,...t)=>E[i]?E[i].console[e](...t):W[e](...t),P=e=>(i,...t)=>!0===(e=>E[e]?E[e].log:A)(i)?B(e)(i,...t):null,D=P("log"),U=D,q=P("debug"),J=B("warn"),V=B("error"),Z=B("event"),X=B("purge"),Y=B("errorBoundary");const _=(e,...i)=>E[e]?E[e].console.warn(S(M)(...i)):queueMicrotask(()=>console?.warn(S((e=>(...i)=>[`iframeResizer(${e})`,...i].join(" "))(e))(...i))),K=(e=>(i,t="renamed to")=>(n,o,r="",s="")=>e(s,`<rb>Deprecated ${i}(${n.replace("()","")})</>\n\nThe <b>${n}</> ${i.toLowerCase()} has been ${t} <b>${o}</>. ${r}Use of the old ${i.toLowerCase()} will be removed in a future version of <i>iframe-resizer</>.`))(_),Q=K("Option");function ee(e,i){const{msgTimeout:t,warningTimeout:n}=i[e];n&&(t&&clearTimeout(t),i[e].msgTimeout=setTimeout(function(){if(void 0===i[e])return;const{initialised:t,loadErrorShown:n}=i[e];i[e].msgTimeout=void 0,t||n||(i[e].loadErrorShown=!0,function(e,i){const{iframe:t,waitForLoad:n}=i[e],{sandbox:o}=t,r="object"==typeof o&&o.length>0&&!(o.contains("allow-scripts")&&o.contains("allow-same-origin"));Z(e,"noResponse"),_(e,`<rb>No response from iframe</>\n \nThe iframe (<i>${e}</>) has not responded within ${i[e].warningTimeout/1e3} seconds. Check <b>@iframe-resizer/child</> package has been loaded in the iframe.\n${n?"\nThe <b>waitForLoad</> option is currently set to <b>'true'</>. If the iframe loads before <i>iframe-resizer</> runs, this option will prevent <i>iframe-resizer</> initialising. To disable this option, set <b>waitForLoad</> to <b>'false'</>. \n":""}${r?"\nThe iframe has the <b>sandbox</> attribute, please ensure it contains both the <i>'allow-same-origin'</> and <i>'allow-scripts'</> values.\n":""}\nThis message can be ignored if everything is working, or you can set the <b>warningTimeout</> option to a higher value or zero to suppress this warning.\n`)}(e,i))},n))}const ie=Object.freeze({autoResize:!0,bodyBackground:null,bodyMargin:null,bodyPadding:null,checkOrigin:!0,direction:m,firstRun:!0,inPageLinks:!1,heightCalculationMethod:"auto",id:"iFrameResizer",log:!1,logExpand:!1,license:void 0,mouseEvents:!0,offsetHeight:null,offsetWidth:null,postMessageTarget:null,sameDomain:!1,scrolling:!1,sizeHeight:!0,sizeWidth:!1,tolerance:0,waitForLoad:!1,warningTimeout:5e3,widthCalculationMethod:"auto",onBeforeClose:()=>!0,onAfterClose(){},onInit:!1,onMessage:null,onMouseEnter(){},onMouseLeave(){},onReady:e=>{"function"==typeof E[e.id].onInit&&(Q("init()","onReady()","",e.id),E[e.id].onInit(e))},onResized(){},onScroll:()=>!0}),te={position:null,version:i};function ne(a){function p(){ue(W),ce(P),M("onResized",W)}function m(e){if("border-box"!==e.boxSizing)return 0;return(e.paddingTop?parseInt(e.paddingTop,10):0)+(e.paddingBottom?parseInt(e.paddingBottom,10):0)}function h(e){if("border-box"!==e.boxSizing)return 0;return(e.borderTopWidth?parseInt(e.borderTopWidth,10):0)+(e.borderBottomWidth?parseInt(e.borderBottomWidth,10):0)}const y=e=>A.slice(A.indexOf(":")+7+e);const b=(e,i)=>(t,n)=>{const o={};var r,s;r=function(){pe(`${t} (${e})`,`${e}:${i()}`,n)},o[s=n]||(r(),o[s]=requestAnimationFrame(()=>{o[s]=null}))},v=(e,i)=>()=>{let t=!1;const n=i=>()=>{E[c]?t&&t!==i||(e(i,c),t=i,requestAnimationFrame(()=>{t=!1})):l()},o=n(f),s=n("resize window");function a(e,t){D(c,`${e}listeners for send${i}`),t(window,f,o),t(window,u,s)}function l(){Z(c,`stop${i}`),a("Remove ",I),d.disconnect(),p.disconnect(),I(E[c].iframe,r,l)}const c=P,d=new ResizeObserver(n("pageObserver")),p=new ResizeObserver(n("iframeObserver"));E[c]&&(E[c][`stop${i}`]=l,H(E[c].iframe,r,l),a("Add ",H),d.observe(document.body,{attributes:!0,childList:!0,subtree:!0}),p.observe(E[c].iframe,{attributes:!0,childList:!1,subtree:!1}))},w=e=>()=>{e in E[P]&&(E[P][e](),delete E[P][e])},z=b(l,function(){const e=document.body.getBoundingClientRect(),i=W.iframe.getBoundingClientRect(),{scrollY:t,scrollX:n,innerHeight:o,innerWidth:r}=window,{clientHeight:s,clientWidth:a}=document.documentElement;return JSON.stringify({iframeHeight:i.height,iframeWidth:i.width,clientHeight:Math.max(s,o||0),clientWidth:Math.max(a,r||0),offsetTop:parseInt(i.top-e.top,10),offsetLeft:parseInt(i.left-e.left,10),scrollTop:t,scrollLeft:n,documentHeight:s,documentWidth:a,windowHeight:o,windowWidth:r})}),$=b(c,function(){const{iframe:e}=W,{scrollWidth:i,scrollHeight:t}=document.documentElement,{width:n,height:o,offsetLeft:r,offsetTop:s,pageLeft:a,pageTop:l,scale:c}=window.visualViewport;return JSON.stringify({iframe:e.getBoundingClientRect(),document:{scrollWidth:i,scrollHeight:t},viewport:{width:n,height:o,offsetLeft:r,offsetTop:s,pageLeft:a,pageTop:l,scale:c}})}),T=v(z,"PageInfo"),j=v($,"ParentInfo"),k=w("stopPageInfo"),G=w("stopParentInfo");function R(e){const i=e.getBoundingClientRect();return ae(P),{x:Number(i.left)+Number(te.position.x),y:Number(i.top)+Number(te.position.y)}}function O(i){const t=i?R(W.iframe):{x:0,y:0};U(P,`Reposition requested (offset x:%c${t.x}%c y:%c${t.y})`,e.HIGHLIGHT,e.FOREGROUND,e.HIGHLIGHT);const n=((e,i)=>({x:e.width+i.x,y:e.height+i.y}))(W,t),o=window.parentIframe||window.parentIFrame;o?function(e,t){setTimeout(()=>e["scrollTo"+(i?"Offset":"")](t.x,t.y))}(o,n):function(e){te.position=e,x(P)}(n)}function x(e){const{x:i,y:t}=te.position,n=E[e]?.iframe;!1!==M("onScroll",{iframe:n,top:t,left:i,x:i,y:t})?ce(e):le()}function L(e){let i={};if(0===W.width&&0===W.height){const e=y(9).split(":");i={x:e[1],y:e[0]}}else i={x:W.width,y:W.height};M(e,{iframe:W.iframe,screenX:Number(i.x),screenY:Number(i.y),type:W.type})}const M=(e,i)=>oe(P,e,i);function S(){const{height:o,iframe:r,msg:a,type:u,width:f}=W;switch(E[P]?.firstRun&&function(){if(!E[P])return;D(P,`First run for ${P}`),be(P,W.mode),E[P].firstRun=!1}(),u){case"close":se(r);break;case s:h=y(6),D(P,`onMessage passed: {iframe: %c${W.iframe.id}%c, message: %c${h}%c}`,e.HIGHLIGHT,e.FOREGROUND,e.HIGHLIGHT,e.FOREGROUND),M("onMessage",{iframe:W.iframe,message:JSON.parse(h)});break;case"mouseenter":L("onMouseEnter");break;case"mouseleave":L("onMouseLeave");break;case"beforeUnload":U(P,"Ready state reset"),E[P].initialised=!1;break;case t:E[P].autoResize=JSON.parse(y(9));break;case"scrollBy":!function(){const i=W.width,t=W.height,n=window.parentIframe||window.parentIFrame||window;U(P,`scrollBy: x: %c${i}%c y: %c${t}`,e.HIGHLIGHT,e.FOREGROUND,e.HIGHLIGHT),n.scrollBy(i,t)}();break;case"scrollTo":O(!1);break;case"scrollToOffset":O(!0);break;case l:T();break;case c:j();break;case"pageInfoStop":k();break;case"parentInfoStop":G();break;case"inPageLink":!function(i){const t=i.split("#")[1]||"",n=decodeURIComponent(t);let o=document.getElementById(n)||document.getElementsByName(n)[0];o?function(){const i=R(o);U(P,`Moving to in page link: %c#${t}`,e.HIGHLIGHT),te.position={x:i.x,y:i.y},x(P),window.location.hash=t}():window.top!==window.self?function(){const e=window.parentIframe||window.parentIFrame;e?e.moveToAnchor(t):D(P,`In page link #${t} not found`)}():D(P,`In page link #${t} not found`)}(y(9));break;case"title":!function(i,t){E[t]?.syncTitle&&(E[t].iframe.title=i,U(t,`Set iframe title attribute: %c${i}`,e.HIGHLIGHT))}(a,P);break;case d:de(W);break;case n:p(),function(i){try{E[i].sameOrigin=!!E[i]?.iframe?.contentWindow?.iframeChildListener}catch(e){E[i].sameOrigin=!1}D(i,`sameOrigin: %c${E[i].sameOrigin}`,e.HIGHLIGHT)}(P),(m=a)!==i&&(void 0!==m?D(P,`Version mismatch (Child: %c${m}%c !== Parent: %c${i})`,e.HIGHLIGHT,e.FOREGROUND,e.HIGHLIGHT):_(P,"<rb>Legacy version detected in iframe</>\n\nDetected legacy version of child page script. It is recommended to update the page in the iframe to use <b>@iframe-resizer/child</>.\n\nSee <u>https://iframe-resizer.com/setup/#child-page-setup</> for more details.\n")),E[P].initialised=!0,M("onReady",r);break;default:if(0===f&&0===o)return void J(P,`Unsupported message received (${u}), this is likely due to the iframe containing a later version of iframe-resizer than the parent page`);if(0===f||0===o)return void D(P,"Ignoring message with 0 height or width");if(document.hidden)return void D(P,"Page hidden - ignored resize request");p()}var m,h}function C(e){if(!E[e])throw new Error(`${W.type} No settings for ${e}. Message was: ${A}`)}const N=e=>Object.keys(E).forEach((e=>i=>{const{initialised:t,postMessageTarget:n}=E[i];t||e!==n||(D(i,"iframe requested init"),pe(o,me(i),i),ee(i,E))})(e));let A=a.data;if("[iFrameResizerChild]Ready"===A)return void N(a.source);if(!(e=>g===`${e}`.slice(0,13)&&e.slice(13).split(":")[0]in E)(A)){if("string"!=typeof A)return;return Z("parent","ignoredMessage"),void q("parent",A)}const W=function(e){const i=e.slice(13).split(":"),t=i[1]?Number(i[1]):0,n=E[i[0]]?.iframe,o=getComputedStyle(n),r={iframe:n,id:i[0],height:t+m(o)+h(o),width:Number(i[2]),type:i[3],msg:i[4]};return i[5]&&(r.mode=i[5]),r}(A),{id:F,type:B}=W,P=F;P?(Z(P,B),Y(P,function(i){C(P),function(){const e=W.type in{true:1,false:1,undefined:1};return e&&D(P,"Ignoring init message from meta parent page"),e}()||(D(P,`Received: %c${i}`,e.HIGHLIGHT),(null!==W.iframe||(J(P,`The iframe (${W.id}) was not found.`),0))&&function(){const{origin:i,sameOrigin:t}=a;if(t)return!0;let n=E[P]?.checkOrigin;if(n&&"null"!=`${i}`&&!(n.constructor===Array?function(){let t=0,o=!1;for(D(P,`Checking connection is from allowed list of origins: %c${n}`,e.HIGHLIGHT);t<n.length;t++)if(n[t]===i){o=!0;break}return o}():function(){const t=E[P]?.remoteHost;return D(P,`Checking connection is from: %c${t}`,e.HIGHLIGHT),i===t}()))throw new Error(`Unexpected message received from: ${i} for ${W.iframe.id}. Message was: ${a.data}. This error can be disabled by setting the checkOrigin: false option or by providing of array of trusted domains.`);return!0}()&&S())})(A)):J("","iframeResizer received messageData without id, message was: ",A)}function oe(e,i,t){let n=null,o=null;if(E[e]){if(n=E[e][i],"function"!=typeof n)throw new TypeError(`${i} on iFrame[${e}] is not a function`);if("onBeforeClose"===i||"onScroll"===i)try{o=n(t)}catch(t){console.error(t),J(e,`Error in ${i} callback`)}else((e,...i)=>{setTimeout(()=>e(...i),0)})(n,t)}return o}function re(e){const{id:i}=e;D(i,"Disconnected from iframe"),delete E[i],delete e.iframeResizer}function se(i){const{id:t}=i;if(!1!==oe(t,"onBeforeClose",t)){D(t,`Removing iFrame: %c${t}`,e.HIGHLIGHT);try{i.parentNode&&i.remove()}catch(e){J(t,e)}oe(t,"onAfterClose",t),re(i)}else D(t,"Close iframe cancelled by onBeforeClose")}function ae(i){null===te.position&&(te.position={x:window.scrollX,y:window.scrollY},D(i,`Get page position: %c${te.position.x}%c, %c${te.position.y}`,e.HIGHLIGHT,e.FOREGROUND,e.HIGHLIGHT))}function le(){te.position=null}function ce(i){null!==te.position&&(window.scrollTo(te.position.x,te.position.y),U(i,`Set page position: %c${te.position.x}%c, %c${te.position.y}`,e.HIGHLIGHT,e.FOREGROUND,e.HIGHLIGHT),le())}function de(e){D(e.id,"Size reset requested by "+(e.type===n?"parent page":"child page")),ae(e.id),ue(e),pe(d,d,e.id)}function ue(i){function t(t){const o=`${i[t]}px`;i.iframe.style[t]=o,U(n,`Set ${t}: %c${o}`,e.HIGHLIGHT)}const{id:n}=i,{sizeHeight:o,sizeWidth:r}=E[n];o&&t("height"),r&&t("width")}const fe=e=>e.split(":").filter((e,i)=>19!==i).join(":");function pe(i,t,n){function o(o){const r=i in b?fe(t):t;U(n,o,e.HIGHLIGHT,e.FOREGROUND,e.HIGHLIGHT),U(n,`Message data: %c${r}`,e.HIGHLIGHT)}Z(n,i),E[n]&&(E[n]?.postMessageTarget?function(){const{iframe:e,postMessageTarget:r,sameOrigin:s,targetOrigin:a}=E[n];if(s)try{return e.contentWindow.iframeChildListener(g+t),void o(`Sending message to iframe %c${n}%c via same origin%c`)}catch(e){i in b?(E[n].sameOrigin=!1,D(n,"New iframe does not support same origin")):J(n,"Same origin messaging failed, falling back to postMessage")}o(`Sending message to iframe: %c${n}%c targetOrigin: %c${a}`),r.postMessage(g+t,a)}():J(n,`Iframe(${n}) not found`))}function me(e){const i=E[e];return[e,"8",i.sizeWidth,i.log,"32",!0,i.autoResize,i.bodyMargin,i.heightCalculationMethod,i.bodyBackground,i.bodyPadding,i.tolerance,i.inPageLinks,"child",i.widthCalculationMethod,i.mouseEvents,i.offsetHeight,i.offsetWidth,i.sizeHeight,i.license,te.version,i.mode,"",i.logExpand].join(":")}let he=0,ge=!1,ye=!1;function be(t,n=-3){if(ge)return;const o=Math.max(E[t].mode,n);if(o>E[t].mode&&(E[t].mode=o),o<0)throw X(t),E[t].vAdvised||_(t||"Parent",`${O(o+2)}${O(2)}`),E[t].vAdvised=!0,O(o+2).replace(/<\/?[a-z][^>]*>|<\/>/gi,"");o>0&&ye||function(i,t){queueMicrotask(()=>console.info(`%ciframe-resizer ${i}`,A||t<1?"font-weight: bold;":e.NORMAL))}(`v${i} (${(e=>T(G[e]))(o)})`,o),o<1&&_("Parent",O(3)),ge=!0}function ve(){!1===document.hidden&&(Z("document","visibilityChange"),D("document","Visibility Change:",document.hidden?"hidden":"visible"),function(e,i){const t=e=>E[e]?.autoResize&&!E[e]?.firstRun;Object.keys(E).forEach(function(n){t(n)&&pe(e,i,n)})}("tabVisible",u))}const we=(e=>{let i=!1;return function(){return i?void 0:(i=!0,Reflect.apply(e,this,arguments))}})(()=>{H(window,s,ne),H(document,"visibilitychange",ve),window.iframeParentListener=e=>setTimeout(()=>ne({data:e,sameOrigin:!0}))});module.exports=i=>o=>{function l(){if(E[T]){const{iframe:e}=E[T],i={close:se.bind(null,e),disconnect:re.bind(null,e),removeListeners(){_(T,"<rb>Deprecated Method Name</>\n\nThe emoveListeners()</> method has been renamed to isconnect()</>.\n"),this.disconnect()},resize(){_(T,"<rb>Deprecated Method</>\n \nUse of the <b>resize()</> method from the parent page is deprecated and will be removed in a future version of <i>iframe-resizer</>. As their are no longer any edge cases that require triggering a resize from the parent page, it is recommended to remove this method from your code."),pe.bind(null,"Window resize",u,T)},moveToAnchor(e){((e,i,t)=>{if(typeof e!==i)throw new TypeError(`${t} is not a ${n=i,n.charAt(0).toUpperCase()+n.slice(1)}`);var n})(e,"string","moveToAnchor(anchor) anchor"),pe("Move to anchor",`moveToAnchor:${e}`,T)},sendMessage(e){e=JSON.stringify(e),pe(s,`${s}:${e}`,T)}};e.iframeResizer=i,e.iFrameResizer=i}}function c(e,i){const t=t=>()=>setTimeout(()=>{E[e]&&!0!==E[e].initialised&&(pe(t,i,e),ee(e,E),E[e].firstRun||E[T]?.heightCalculationMethod in y&&de({iframe:o,height:1,width:1,type:n}))}),{waitForLoad:s}=E[e];if(H(o,r,t(a)),!0===s)return;const{src:l,srcdoc:c}=o;(c||null!=l&&""!==l&&"about:blank"!==l)&&t(n)()}function d(e){return e?(("sizeWidth"in e||"sizeHeight"in e||t in e)&&_(T,`<rb>Deprecated Option</>\n\nThe <b>sizeWidth</>, <b>sizeHeight</> and <b>autoResize</> options have been replaced with new <b>direction</> option which expects values of <i>"${m}"</>, <i>"${h}"</> or <i>"${p}"</>.\n`),e):{}}function f(e){const i=E[e]?.iframe?.title;return""===i||void 0===i}function g(e,i){L(E[T],e)&&(_(T,`<rb>Deprecated option</>\n\nThe <b>${e}</> option has been renamed to <b>${i}</>. Use of the old name will be removed in a future version of <i>iframe-resizer</>.`),E[T][i]=E[T][e],delete E[T][e])}const b=e=>L(e,"onMouseEnter")||L(e,"onMouseLeave");function I(i){var t,n;E[T]={...E[T],iframe:o,remoteHost:o?.src.split("/").slice(0,3).join("/"),...ie,...d(i),mouseEvents:b(i),mode:x(i),syncTitle:f(T)},g("offset","offsetSize"),g("onClose","onBeforeClose"),g("onClosed","onAfterClose"),Z(T,"setup"),function(){const{direction:i}=E[T];switch(i){case m:break;case h:E[T].sizeHeight=!1;case"both":E[T].sizeWidth=!0;break;case p:E[T].sizeWidth=!1,E[T].sizeHeight=!1,E[T].autoResize=!1;break;default:throw new TypeError(T,`Direction value of "${i}" is not valid`)}D(T,`direction: %c${i}`,e.HIGHLIGHT)}(),(t=i?.offsetSize||i?.offset)&&(E[T].direction===m?(E[T].offsetHeight=t,D(T,`Offset height: %c${t}`,e.HIGHLIGHT)):(E[T].offsetWidth=t,D(T,`Offset width: %c${t}`,e.HIGHLIGHT))),function(e){e?.offset&&_(T,"<rb>Deprecated option</>\n\n The <b>offset</> option has been renamed to <b>offsetSize</>. Use of the old name will be removed in a future version of <i>iframe-resizer</>.")}(i),E[T].warningTimeout||U(T,"warningTimeout:%c disabled",e.HIGHLIGHT),null===E[T].postMessageTarget&&(E[T].postMessageTarget=o.contentWindow),E[T].targetOrigin=!0===E[T].checkOrigin?""===(n=E[T].remoteHost)||null!==n.match(/^(about:blank|javascript:|file:\/\/)/)?"*":n:"*"}const $=()=>"iframeResizer"in o,T=function(e){if(e&&"string"!=typeof e)throw new TypeError("Invalid id for iFrame. Expected String");return""!==e&&e||(e=function(){let e=i?.id||ie.id+he++;return null!==document.getElementById(e)&&(e+=he++),e}(),o.id=e,Z(e,"assignId"),D(e,`Added missing iframe ID: ${e} (${o.src})`)),e}(o.id);if("object"!=typeof i)throw new TypeError("Options is not an object");return function(e){const{search:i}=window.location;i.includes("ifrlog")&&(e.log=w,e.logExpand=i.includes("ifrlog=expanded"))}(i),function(e,i){const t=L(i,"log"),n="string"==typeof i.log,o=t?!!n||i.log:ie.log;L(i,"logExpand")||(i.logExpand=t&&n?i.log===v:ie.logExpand),function(e){-1===e?.log&&(e.log=!1,ye=!0)}(i),function({enabled:e,expand:i,iframeId:t}){const n=C({expand:i,label:F(t)});A=e,E[t]||(E[t]={console:n})}({enabled:o,expand:i.logExpand,iframeId:e}),n&&!(i.log in z)&&V(e,'Invalid value for options.log: Accepted values are "expanded" and "collapsed"'),i.log=o}(T,i),Y(T,function(e){$()?J(T,`Ignored iframe (${T}), already setup.`):(I(e),function(){if(ge)return;const{mode:e}=E[T];-1!==e&&be(T,e)}(),we(),function(){switch(D(T,`Iframe scrolling ${E[T]?.scrolling?"enabled":"disabled"} for ${T}`),o.style.overflow=!1===E[T]?.scrolling?"hidden":"auto",E[T]?.scrolling){case"omit":break;case!0:o.scrolling="yes";break;case!1:o.scrolling="no";break;default:o.scrolling=E[T]?E[T].scrolling:"no"}}(),function(){const{bodyMargin:e}=E[T];"number"!=typeof e&&"0"!==e||(E[T].bodyMargin=`${e}px`)}(),c(T,me(T)),l(),D(T,"Setup complete"))})(i),o?.iframeResizer};
21
21
  //# sourceMappingURL=index.cjs.js.map
package/index.cjs.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../../packages/common/consts.js","../../packages/common/listeners.js","../../packages/common/mode.js","../../packages/common/utils.js","../../packages/common/format-advise.js","../../packages/core/values/settings.js","../../packages/core/console.js","../../packages/common/deprecate.js","../../packages/core/timeout.js","../../packages/core/values/defaults.js","../../packages/core/values/page.js","../../packages/core/index.js"],"sourcesContent":["export const VERSION = '[VI]{version}[/VI]'\nexport const LABEL = 'iframeResizer'\n\nexport const AUTO_RESIZE = 'autoResize'\nexport const BEFORE_UNLOAD = 'beforeUnload'\nexport const CLOSE = 'close'\nexport const IN_PAGE_LINK = 'inPageLink'\nexport const INIT = 'init'\nexport const INIT_FROM_IFRAME = 'iframe requested init'\nexport const LOAD = 'load'\nexport const MESSAGE = 'message'\nexport const MOUSE_ENTER = 'mouseenter'\nexport const MOUSE_LEAVE = 'mouseleave'\nexport const ONLOAD = 'onload'\nexport const PAGE_INFO = 'pageInfo'\nexport const PARENT_INFO = 'parentInfo'\nexport const PAGE_INFO_STOP = 'pageInfoStop'\nexport const PARENT_INFO_STOP = 'parentInfoStop'\nexport const RESET = 'reset'\nexport const RESIZE = 'resize'\nexport const SCROLL_BY = 'scrollBy'\nexport const SCROLL_TO = 'scrollTo'\nexport const SCROLL_TO_OFFSET = 'scrollToOffset'\nexport const TITLE = 'title'\n\nexport const BASE = 10\nexport const SINGLE = 1\nexport const MIN_SIZE = 1\n\nexport const SIZE_ATTR = 'data-iframe-size'\nexport const OVERFLOW_ATTR = 'data-iframe-overflowed'\nexport const IGNORE_ATTR = 'data-iframe-ignore'\n\nexport const HEIGHT = 'height'\nexport const WIDTH = 'width'\nexport const SCROLL = 'scroll'\n\nexport const READY_STATE_CHANGE = 'readystatechange'\n\nexport const HEIGHT_EDGE = 'bottom'\nexport const WIDTH_EDGE = 'right'\n\nexport const ENABLE = 'autoResizeEnabled'\nexport const SIZE_CHANGE_DETECTED = Symbol('sizeChanged')\nexport const MANUAL_RESIZE_REQUEST = 'manualResize'\nexport const PARENT_RESIZE_REQUEST = 'parentResize'\nexport const IGNORE_DISABLE_RESIZE = {\n [MANUAL_RESIZE_REQUEST]: 1,\n [PARENT_RESIZE_REQUEST]: 1,\n}\n\nexport const SET_OFFSET_SIZE = 'setOffsetSize'\n\nexport const RESIZE_OBSERVER = 'resizeObserver'\nexport const OVERFLOW_OBSERVER = 'overflowObserver'\nexport const MUTATION_OBSERVER = 'mutationObserver'\nexport const VISIBILITY_OBSERVER = 'visibilityObserver'\n\nexport const BOLD = 'font-weight: bold;'\nexport const NORMAL = 'font-weight: normal;'\nexport const ITALIC = 'font-style: italic;'\nexport const BLUE = 'color: #135CD2;'\nexport const BLUE_LIGHT = 'color: #A9C7FB;'\nexport const BLACK = 'color: black;'\nexport const WHITE = 'color: #E3E3E3;'\n\nexport const NONE = 'none'\nexport const BOTH = 'both'\nexport const VERTICAL = 'vertical'\nexport const HORIZONTAL = 'horizontal'\n\nexport const NO_CHANGE = 'No change in content size detected'\n\nexport const MESSAGE_HEADER_LENGTH = MESSAGE.length\nexport const MESSAGE_ID = '[iFrameSizer]' // Must match iframe msg ID\nexport const MESSAGE_ID_LENGTH = MESSAGE_ID.length\nexport const RESET_REQUIRED_METHODS = Object.freeze({\n max: 1,\n scroll: 1,\n bodyScroll: 1,\n documentElementScroll: 1,\n})\n\nexport const INIT_EVENTS = Object.freeze({\n [ONLOAD]: 1,\n [INIT]: 1,\n [INIT_FROM_IFRAME]: 1,\n})\n\nexport const EXPAND = 'expanded'\nexport const COLLAPSE = 'collapsed'\n\nexport const LOG_OPTIONS = Object.freeze({\n [EXPAND]: 1,\n [COLLAPSE]: 1,\n})\n\nexport const IGNORE_TAGS = new Set([\n 'head',\n 'body',\n 'meta',\n 'base',\n 'title',\n 'script',\n 'link',\n 'style',\n 'map',\n 'area',\n 'option',\n 'optgroup',\n 'template',\n 'track',\n 'wbr',\n 'nobr',\n])\n","export const addEventListener = (el, evt, func, options) =>\n el.addEventListener(evt, func, options || false)\n\nexport const removeEventListener = (el, evt, func) =>\n el.removeEventListener(evt, func, false)\n","const l = (l) => {\n if (!l) return ''\n let p = -559038744,\n y = 1103547984\n for (let z, t = 0; t < l.length; t++)\n ((z = l.codePointAt(t)),\n (p = Math.imul(p ^ z, 2246822519)),\n (y = Math.imul(y ^ z, 3266489917)))\n return (\n (p ^= Math.imul(p ^ (y >>> 15), 1935289751)),\n (y ^= Math.imul(y ^ (p >>> 15), 3405138345)),\n (p ^= y >>> 16),\n (y ^= p >>> 16),\n (2097152 * (y >>> 0) + (p >>> 11)).toString(36)\n )\n },\n p = (l) =>\n l.replace(/[A-Za-z]/g, (l) =>\n String.fromCodePoint(\n (l <= 'Z' ? 90 : 122) >= (l = l.codePointAt(0) + 19) ? l : l - 26,\n ),\n ),\n x = ['spjluzl', 'rlf', 'clyzpvu'],\n y = [\n '<yi>Puchspk Spjluzl Rlf</><iy><iy>',\n '<yi>Tpzzpun Spjluzl Rlf</><iy><iy>',\n 'Aopz spiyhyf pz hchpshisl dpao ivao Jvttlyjphs huk Vwlu-Zvbyjl spjluzlz.<iy><iy><i>Jvttlyjphs Spjluzl</><iy>Mvy jvttlyjphs bzl, <p>pmyhtl-ylzpgly</> ylxbpylz h svd jvza vul aptl spjluzl mll. Mvy tvyl pumvythapvu cpzpa <b>oaawz://pmyhtl-ylzpgly.jvt/wypjpun</>.<iy><iy><i>Vwlu Zvbyjl Spjluzl</><iy>Pm fvb hyl bzpun aopz spiyhyf pu h uvu-jvttlyjphs vwlu zvbyjl wyvqlja aolu fvb jhu bzl pa mvy myll bukly aol alytz vm aol NWS C3 Spjluzl. Av jvumpyt fvb hjjlwa aolzl alytz, wslhzl zla aol <i>spjluzl</> rlf pu <p>pmyhtl-ylzpgly</> vwapvuz av <i>NWSc3</>.<iy><iy>Mvy tvyl pumvythapvu wslhzl zll: <b>oaawz://pmyhtl-ylzpgly.jvt/nws</>',\n '<i>NWSc3 Spjluzl Clyzpvu</><iy><iy>Aopz clyzpvu vm <p>pmyhtl-ylzpgly</> pz ilpun bzlk bukly aol alytz vm aol <i>NWS C3</> spjluzl. Aopz spjluzl hssvdz fvb av bzl <p>pmyhtl-ylzpgly</> pu Vwlu Zvbyjl wyvqljaz, iba pa ylxbpylz fvby wyvqlja av il wbispj, wyvcpkl haaypibapvu huk il spjluzlk bukly clyzpvu 3 vy shaly vm aol NUB Nlulyhs Wbispj Spjluzl.<iy><iy>Pm fvb hyl bzpun aopz spiyhyf pu h uvu-vwlu zvbyjl wyvqlja vy dlizpal, fvb dpss ullk av wbyjohzl h svd jvza vul aptl jvttlyjphs spjluzl.<iy><iy>Mvy tvyl pumvythapvu cpzpa <b>oaawz://pmyhtl-ylzpgly.jvt/wypjpun</>.',\n '<iy><yi>Zvsv spjluzl kvlz uva zbwwvya jyvzz-kvthpu</><iy><iy>Av bzl <p>pmyhtl-ylzpgly</> dpao jyvzz kvthpu pmyhtlz fvb ullk lpaoly aol Wyvmlzzpvuhs vy Ibzpulzz spjluzlz. Mvy klahpsz vu bwnyhkl wypjpun wslhzl jvuahja pumv@pmyhtl-ylzpgly.jvt.',\n ],\n z = ['NWSc3', 'zvsv', 'wyv', 'ibzpulzz', 'vlt'],\n t = Object.fromEntries(\n [\n '2cgs7fdf4xb',\n '1c9ctcccr4z',\n '1q2pc4eebgb',\n 'ueokt0969w',\n 'w2zxchhgqz',\n '1umuxblj2e5',\n ].map((l, p) => [l, Math.max(0, p - 1)]),\n )\nexport const getModeData = (l) => p(y[l])\nexport const getModeLabel = (l) => p(z[l])\nexport const getKey = (l) => p(x[l])\nexport default (y) => {\n const z = y[p(x[0])] || y[p(x[1])] || y[p(x[2])]\n if (!z) return -1\n const u = z.split('-')\n let v = (function (y = '') {\n let z = -2\n const u = l(p(y))\n return u in t && (z = t[u]), z\n })(u[0])\n return 0 === v || ((p) => p[2] === l(p[0] + p[1]))(u) || (v = -2), v\n}\n","export const isElement = (node) => node.nodeType === Node.ELEMENT_NODE\n\nexport const isNumber = (value) => !Number.isNaN(value)\n\nexport const isolateUserCode = (func, ...val) =>\n setTimeout(() => func(...val), 0)\n\nexport const once = (fn) => {\n let done = false\n\n return function () {\n return done\n ? undefined\n : ((done = true), Reflect.apply(fn, this, arguments))\n }\n}\n\nexport const hasOwn =\n Object.hasOwn || ((o, k) => Object.prototype.hasOwnProperty.call(o, k))\n\nexport const isDarkModeEnabled = () =>\n window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches\n\nexport const id = (x) => x\n\nconst ROUNDING = 1000\n\nexport const round = (value) => Math.round(value * ROUNDING) / ROUNDING\n\nexport const capitalizeFirstLetter = (string) =>\n string.charAt(0).toUpperCase() + string.slice(1)\n\nexport const isDef = (value) => `${value}` !== '' && value !== undefined\n\nexport function getElementName(el) {\n switch (true) {\n case !isDef(el):\n return ''\n\n case isDef(el.id):\n return `${el.nodeName}#${el.id}`\n\n case isDef(el.name):\n return `${el.nodeName} (${el.name}`\n\n case isDef(el.className):\n return `${el.nodeName}.${el.className}`\n\n default:\n return el.nodeName\n }\n}\n\nexport const esModuleInterop = (mod) =>\n // eslint-disable-next-line no-underscore-dangle\n mod?.__esModule ? mod.default : mod\n\nexport const typeAssert = (value, type, error) => {\n // eslint-disable-next-line valid-typeof\n if (typeof value !== type) {\n throw new TypeError(`${error} is not a ${capitalizeFirstLetter(type)}`)\n }\n}\n","const encode = (s) =>\n s\n .replaceAll('<br>', '\\n')\n .replaceAll('<rb>', '\\u001B[31;1m')\n .replaceAll('</>', '\\u001B[m')\n .replaceAll('<b>', '\\u001B[1m')\n .replaceAll('<i>', '\\u001B[3m')\n .replaceAll('<u>', '\\u001B[4m')\n\nconst remove = (s) => s.replaceAll('<br>', '\\n').replaceAll(/<[/a-z]+>/gi, '')\n\nexport default (formatLogMsg) => (msg) =>\n window.chrome // Only show formatting in Chrome as not supported in other browsers\n ? formatLogMsg(encode(msg))\n : formatLogMsg(remove(msg))\n","export default {}\n","import acg, { NORMAL } from 'auto-console-group'\n\nimport { BOLD, LABEL } from '../common/consts'\nimport deprecate from '../common/deprecate'\nimport formatAdvise from '../common/format-advise'\nimport { esModuleInterop, id as identity } from '../common/utils'\nimport settings from './values/settings'\n\n// Deal with UMD not converting default exports to named exports\nconst createConsoleGroup = esModuleInterop(acg)\n\nlet consoleEnabled = true\n\nconst parent = createConsoleGroup({\n expand: false,\n label: 'parent',\n})\n\nconst getMyId = (iframeId) =>\n window.top === window.self\n ? `parent(${iframeId})`\n : `nested parent(${iframeId})`\n\nconst isLogEnabled = (iframeId) =>\n settings[iframeId] ? settings[iframeId].log : consoleEnabled\n\nexport function setupConsole({ enabled, expand, iframeId }) {\n const consoleGroup = createConsoleGroup({\n expand,\n label: getMyId(iframeId),\n })\n\n consoleEnabled = enabled\n\n if (!settings[iframeId])\n settings[iframeId] = {\n console: consoleGroup,\n }\n}\n\nconst output =\n (type) =>\n (iframeId, ...args) =>\n settings[iframeId]\n ? settings[iframeId].console[type](...args)\n : parent[type](...args)\n\nexport const outputSwitched =\n (type) =>\n (iframeId, ...args) =>\n isLogEnabled(iframeId) === true ? output(type)(iframeId, ...args) : null\n\nexport const log = outputSwitched('log')\nexport const info = log // outputSwitched('info')\nexport const debug = outputSwitched('debug')\nexport const assert = output('assert')\nexport const warn = output('warn')\nexport const error = output('error')\nexport const event = output('event')\nexport const purge = output('purge')\nexport const endAutoGroup = output('endAutoGroup')\nexport const errorBoundary = output('errorBoundary')\n\nexport function vInfo(ver, mode) {\n queueMicrotask(() =>\n // eslint-disable-next-line no-console\n console.info(\n `%ciframe-resizer ${ver}`,\n consoleEnabled || mode < 1 ? BOLD : NORMAL,\n ),\n )\n}\n\nconst formatLogMsg =\n (iframeId) =>\n (...args) =>\n [`${LABEL}(${iframeId})`, ...args].join(' ')\n\nexport const advise = (iframeId, ...args) =>\n settings[iframeId]\n ? settings[iframeId].console.warn(formatAdvise(identity)(...args))\n : queueMicrotask(\n // eslint-disable-next-line no-console\n () => console?.warn(formatAdvise(formatLogMsg(iframeId))(...args)),\n )\n\nconst deprecateAdvise = deprecate(advise)\nexport const deprecateFunction = deprecateAdvise('Function')\nexport const deprecateMethod = deprecateAdvise('Method')\nexport const deprecateOption = deprecateAdvise('Option')\n","export default (advise) =>\n (type, change = 'renamed to') =>\n (old, replacement, info = '', iframeId = '') =>\n advise(\n iframeId,\n `<rb>Deprecated ${type}(${old.replace('()', '')})</>\\n\\nThe <b>${old}</> ${type.toLowerCase()} has been ${change} <b>${replacement}</>. ${info}Use of the old ${type.toLowerCase()} will be removed in a future version of <i>iframe-resizer</>.`,\n )\n","import { advise, event } from './console'\n\nfunction showWarning(id, settings) {\n const { iframe, waitForLoad } = settings[id]\n const { sandbox } = iframe\n const hasSandbox =\n typeof sandbox === 'object' &&\n sandbox.length > 0 &&\n !(\n sandbox.contains('allow-scripts') && sandbox.contains('allow-same-origin')\n )\n\n event(id, 'noResponse')\n advise(\n id,\n `<rb>No response from iframe</>\n \nThe iframe (<i>${id}</>) has not responded within ${settings[id].warningTimeout / 1000} seconds. Check <b>@iframe-resizer/child</> package has been loaded in the iframe.\n${\n waitForLoad\n ? `\nThe <b>waitForLoad</> option is currently set to <b>'true'</>. If the iframe loads before <i>iframe-resizer</> runs, this option will prevent <i>iframe-resizer</> initialising. To disable this option, set <b>waitForLoad</> to <b>'false'</>. \n`\n : ''\n}${\n hasSandbox\n ? `\nThe iframe has the <b>sandbox</> attribute, please ensure it contains both the <i>'allow-same-origin'</> and <i>'allow-scripts'</> values.\n`\n : ''\n }\nThis message can be ignored if everything is working, or you can set the <b>warningTimeout</> option to a higher value or zero to suppress this warning.\n`,\n )\n}\n\nexport default function warnOnNoResponse(id, settings) {\n function warning() {\n if (settings[id] === undefined) return // iframe has been closed while we were waiting\n\n const { ready, loadErrorShown } = settings[id]\n\n settings[id].msgTimeout = undefined\n\n if (ready || loadErrorShown) return\n\n settings[id].loadErrorShown = true\n showWarning(id, settings)\n }\n\n const { msgTimeout, warningTimeout } = settings[id]\n\n if (!warningTimeout) return\n if (msgTimeout) clearTimeout(msgTimeout)\n\n settings[id].msgTimeout = setTimeout(warning, warningTimeout)\n}\n","import { VERTICAL } from '../../common/consts'\nimport { deprecateOption } from '../console'\nimport settings from './settings'\n\nconst onReadyDeprecated = (messageData) => {\n if (typeof settings[messageData.id].onInit === 'function') {\n deprecateOption('init()', 'onReady()', '', messageData.id)\n settings[messageData.id].onInit(messageData)\n }\n}\n\nexport default Object.freeze({\n autoResize: true,\n bodyBackground: null,\n bodyMargin: null,\n bodyPadding: null,\n checkOrigin: true,\n direction: VERTICAL,\n inPageLinks: false,\n heightCalculationMethod: 'auto',\n id: 'iFrameResizer', // TODO: v6 change to 'iframeResizer'\n log: false,\n logExpand: false,\n license: undefined,\n mouseEvents: true,\n offsetHeight: null,\n offsetWidth: null,\n postMessageTarget: null,\n sameDomain: false,\n scrolling: false,\n sizeHeight: true,\n // sizeSelector: '',\n sizeWidth: false,\n tolerance: 0,\n waitForLoad: false,\n warningTimeout: 5000,\n widthCalculationMethod: 'auto',\n onBeforeClose: () => true,\n onAfterClose() {},\n onInit: false,\n onMessage: null,\n onMouseEnter() {},\n onMouseLeave() {},\n onReady: onReadyDeprecated,\n onResized() {},\n onScroll: () => true,\n})\n","import { VERSION } from '../../common/consts'\n\nexport default {\n position: null,\n version: VERSION,\n}\n","import { FOREGROUND, HIGHLIGHT } from 'auto-console-group'\n\nimport {\n AUTO_RESIZE,\n BEFORE_UNLOAD,\n BOTH,\n CLOSE,\n COLLAPSE,\n EXPAND,\n HEIGHT,\n HORIZONTAL,\n IN_PAGE_LINK,\n INIT,\n INIT_EVENTS,\n INIT_FROM_IFRAME,\n LOAD,\n LOG_OPTIONS,\n MESSAGE,\n MESSAGE_HEADER_LENGTH,\n MESSAGE_ID,\n MESSAGE_ID_LENGTH,\n MOUSE_ENTER,\n MOUSE_LEAVE,\n NONE,\n ONLOAD,\n PAGE_INFO,\n PAGE_INFO_STOP,\n PARENT_INFO,\n PARENT_INFO_STOP,\n RESET,\n RESET_REQUIRED_METHODS,\n RESIZE,\n SCROLL,\n SCROLL_BY,\n SCROLL_TO,\n SCROLL_TO_OFFSET,\n TITLE,\n VERSION,\n VERTICAL,\n WIDTH,\n} from '../common/consts'\nimport { addEventListener, removeEventListener } from '../common/listeners'\nimport setMode, { getModeData, getModeLabel } from '../common/mode'\nimport { hasOwn, isolateUserCode, once, typeAssert } from '../common/utils'\nimport {\n advise,\n debug,\n error,\n errorBoundary,\n event as consoleEvent,\n info,\n log,\n purge as consoleClear,\n setupConsole,\n vInfo,\n warn,\n} from './console'\nimport warnOnNoResponse from './timeout'\nimport defaults from './values/defaults'\nimport page from './values/page'\nimport settings from './values/settings'\n\nfunction iframeListener(event) {\n function resizeIframe() {\n setSize(messageData)\n setPagePosition(iframeId)\n\n on('onResized', messageData)\n }\n\n function getPaddingEnds(compStyle) {\n if (compStyle.boxSizing !== 'border-box') return 0\n\n const top = compStyle.paddingTop ? parseInt(compStyle.paddingTop, 10) : 0\n const bot = compStyle.paddingBottom\n ? parseInt(compStyle.paddingBottom, 10)\n : 0\n\n return top + bot\n }\n\n function getBorderEnds(compStyle) {\n if (compStyle.boxSizing !== 'border-box') return 0\n\n const top = compStyle.borderTopWidth\n ? parseInt(compStyle.borderTopWidth, 10)\n : 0\n\n const bot = compStyle.borderBottomWidth\n ? parseInt(compStyle.borderBottomWidth, 10)\n : 0\n\n return top + bot\n }\n\n function processMessage(msg) {\n const data = msg.slice(MESSAGE_ID_LENGTH).split(':')\n const height = data[1] ? Number(data[1]) : 0\n const iframe = settings[data[0]]?.iframe\n const compStyle = getComputedStyle(iframe)\n\n const messageData = {\n iframe,\n id: data[0],\n height: height + getPaddingEnds(compStyle) + getBorderEnds(compStyle),\n width: Number(data[2]),\n type: data[3],\n msg: data[4],\n }\n\n // eslint-disable-next-line prefer-destructuring\n if (data[5]) messageData.mode = data[5]\n\n return messageData\n }\n\n function isMessageFromIframe() {\n function checkAllowedOrigin() {\n function checkList() {\n let i = 0\n let retCode = false\n\n log(\n iframeId,\n `Checking connection is from allowed list of origins: %c${checkOrigin}`,\n HIGHLIGHT,\n )\n\n for (; i < checkOrigin.length; i++) {\n if (checkOrigin[i] === origin) {\n retCode = true\n break\n }\n }\n\n return retCode\n }\n\n function checkSingle() {\n const remoteHost = settings[iframeId]?.remoteHost\n log(iframeId, `Checking connection is from: %c${remoteHost}`, HIGHLIGHT)\n return origin === remoteHost\n }\n\n return checkOrigin.constructor === Array ? checkList() : checkSingle()\n }\n\n const { origin, sameOrigin } = event\n\n if (sameOrigin) return true\n\n let checkOrigin = settings[iframeId]?.checkOrigin\n\n if (checkOrigin && `${origin}` !== 'null' && !checkAllowedOrigin()) {\n throw new Error(\n `Unexpected message received from: ${origin} for ${messageData.iframe.id}. Message was: ${event.data}. 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 const isMessageForUs = (msg) =>\n MESSAGE_ID === `${msg}`.slice(0, MESSAGE_ID_LENGTH) &&\n msg.slice(MESSAGE_ID_LENGTH).split(':')[0] in settings\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 compatibility.\n const 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 const getMsgBody = (offset) =>\n msg.slice(msg.indexOf(':') + MESSAGE_HEADER_LENGTH + offset)\n\n function forwardMsgFromIframe(msgBody) {\n log(\n iframeId,\n `onMessage passed: {iframe: %c${messageData.iframe.id}%c, message: %c${msgBody}%c}`,\n HIGHLIGHT,\n FOREGROUND,\n HIGHLIGHT,\n FOREGROUND,\n )\n\n on('onMessage', {\n iframe: messageData.iframe,\n message: JSON.parse(msgBody),\n })\n }\n\n function getPageInfo() {\n const bodyPosition = document.body.getBoundingClientRect()\n const iFramePosition = messageData.iframe.getBoundingClientRect()\n const { scrollY, scrollX, innerHeight, innerWidth } = window\n const { clientHeight, clientWidth } = document.documentElement\n\n return JSON.stringify({\n iframeHeight: iFramePosition.height,\n iframeWidth: iFramePosition.width,\n clientHeight: Math.max(clientHeight, innerHeight || 0),\n clientWidth: Math.max(clientWidth, innerWidth || 0),\n offsetTop: parseInt(iFramePosition.top - bodyPosition.top, 10),\n offsetLeft: parseInt(iFramePosition.left - bodyPosition.left, 10),\n scrollTop: scrollY,\n scrollLeft: scrollX,\n documentHeight: clientHeight,\n documentWidth: clientWidth,\n windowHeight: innerHeight,\n windowWidth: innerWidth,\n })\n }\n\n function getParentProps() {\n const { iframe } = messageData\n const { scrollWidth, scrollHeight } = document.documentElement\n const { width, height, offsetLeft, offsetTop, pageLeft, pageTop, scale } =\n window.visualViewport\n\n return JSON.stringify({\n iframe: iframe.getBoundingClientRect(),\n document: {\n scrollWidth,\n scrollHeight,\n },\n viewport: {\n width,\n height,\n offsetLeft,\n offsetTop,\n pageLeft,\n pageTop,\n scale,\n },\n })\n }\n\n const sendInfoToIframe = (type, infoFunction) => (requestType, iframeId) => {\n const gate = {}\n\n function throttle(func, frameId) {\n if (!gate[frameId]) {\n func()\n gate[frameId] = requestAnimationFrame(() => {\n gate[frameId] = null\n })\n }\n }\n\n function gatedTrigger() {\n trigger(`${requestType} (${type})`, `${type}:${infoFunction()}`, iframeId)\n }\n\n throttle(gatedTrigger, iframeId)\n }\n\n const startInfoMonitor = (sendInfoToIframe, type) => () => {\n let pending = false\n\n const sendInfo = (requestType) => () => {\n if (settings[id]) {\n if (!pending || pending === requestType) {\n sendInfoToIframe(requestType, id)\n\n pending = requestType\n requestAnimationFrame(() => {\n pending = false\n })\n }\n } else {\n stop()\n }\n }\n\n const sendScroll = sendInfo(SCROLL)\n const sendResize = sendInfo('resize window')\n\n function setListener(requestType, listener) {\n log(id, `${requestType}listeners for send${type}`)\n listener(window, SCROLL, sendScroll)\n listener(window, RESIZE, sendResize)\n }\n\n function stop() {\n consoleEvent(id, `stop${type}`)\n setListener('Remove ', removeEventListener)\n pageObserver.disconnect()\n iframeObserver.disconnect()\n removeEventListener(settings[id].iframe, LOAD, stop)\n }\n\n function start() {\n setListener('Add ', addEventListener)\n\n pageObserver.observe(document.body, {\n attributes: true,\n childList: true,\n subtree: true,\n })\n\n iframeObserver.observe(settings[id].iframe, {\n attributes: true,\n childList: false,\n subtree: false,\n })\n }\n\n const id = iframeId // Create locally scoped copy of iFrame ID\n\n const pageObserver = new ResizeObserver(sendInfo('pageObserver'))\n const iframeObserver = new ResizeObserver(sendInfo('iframeObserver'))\n\n if (settings[id]) {\n settings[id][`stop${type}`] = stop\n addEventListener(settings[id].iframe, LOAD, stop)\n start()\n }\n }\n\n const stopInfoMonitor = (stopFunction) => () => {\n if (stopFunction in settings[iframeId]) {\n settings[iframeId][stopFunction]()\n delete settings[iframeId][stopFunction]\n }\n }\n\n const sendPageInfoToIframe = sendInfoToIframe(PAGE_INFO, getPageInfo)\n const sendParentInfoToIframe = sendInfoToIframe(PARENT_INFO, getParentProps)\n\n const startPageInfoMonitor = startInfoMonitor(\n sendPageInfoToIframe,\n 'PageInfo',\n )\n const startParentInfoMonitor = startInfoMonitor(\n sendParentInfoToIframe,\n 'ParentInfo',\n )\n\n const stopPageInfoMonitor = stopInfoMonitor('stopPageInfo')\n const stopParentInfoMonitor = stopInfoMonitor('stopParentInfo')\n\n function checkIframeExists() {\n if (messageData.iframe === null) {\n warn(iframeId, `The iframe (${messageData.id}) was not found.`)\n return false\n }\n\n return true\n }\n\n function getElementPosition(target) {\n const iFramePosition = target.getBoundingClientRect()\n\n getPagePosition(iframeId)\n\n return {\n x: Number(iFramePosition.left) + Number(page.position.x),\n y: Number(iFramePosition.top) + Number(page.position.y),\n }\n }\n\n function scrollBy() {\n const x = messageData.width\n const y = messageData.height\n\n // Check for V4 as well\n const target = window.parentIframe || window.parentIFrame || window\n\n info(\n iframeId,\n `scrollBy: x: %c${x}%c y: %c${y}`,\n HIGHLIGHT,\n FOREGROUND,\n HIGHLIGHT,\n )\n\n target.scrollBy(x, y)\n }\n\n function scrollRequestFromChild(addOffset) {\n /* istanbul ignore next */ // Not testable in Karma\n function reposition(newPosition) {\n page.position = newPosition\n scrollTo(iframeId)\n }\n\n function scrollParent(target, newPosition) {\n setTimeout(() =>\n target[`scrollTo${addOffset ? 'Offset' : ''}`](\n newPosition.x,\n newPosition.y,\n ),\n )\n }\n\n const calcOffset = (messageData, offset) => ({\n x: messageData.width + offset.x,\n y: messageData.height + offset.y,\n })\n\n const offset = addOffset\n ? getElementPosition(messageData.iframe)\n : { x: 0, y: 0 }\n\n info(\n iframeId,\n `Reposition requested (offset x:%c${offset.x}%c y:%c${offset.y})`,\n HIGHLIGHT,\n FOREGROUND,\n HIGHLIGHT,\n )\n\n const newPosition = calcOffset(messageData, offset)\n\n // Check for V4 as well\n const target = window.parentIframe || window.parentIFrame\n\n if (target) scrollParent(target, newPosition)\n else reposition(newPosition)\n }\n\n function scrollTo(iframeId) {\n const { x, y } = page.position\n const iframe = settings[iframeId]?.iframe\n\n if (on('onScroll', { iframe, top: y, left: x, x, y }) === false) {\n unsetPagePosition()\n return\n }\n\n setPagePosition(iframeId)\n }\n\n function findTarget(location) {\n function jumpToTarget() {\n const jumpPosition = getElementPosition(target)\n\n info(iframeId, `Moving to in page link: %c#${hash}`, HIGHLIGHT)\n\n page.position = {\n x: jumpPosition.x,\n y: jumpPosition.y,\n }\n\n scrollTo(iframeId)\n window.location.hash = hash\n }\n\n function jumpToParent() {\n // Check for V4 as well\n const target = window.parentIframe || window.parentIFrame\n\n if (target) {\n target.moveToAnchor(hash)\n return\n }\n\n log(iframeId, `In page link #${hash} not found`)\n }\n\n const hash = location.split('#')[1] || ''\n const hashData = decodeURIComponent(hash)\n\n let target =\n document.getElementById(hashData) ||\n document.getElementsByName(hashData)[0]\n\n if (target) {\n jumpToTarget()\n return\n }\n\n if (window.top === window.self) {\n log(iframeId, `In page link #${hash} not found`)\n return\n }\n\n jumpToParent()\n }\n\n function onMouse(event) {\n let mousePos = {}\n\n if (messageData.width === 0 && messageData.height === 0) {\n const coords = getMsgBody(9).split(':')\n mousePos = {\n x: coords[1],\n y: coords[0],\n }\n } else {\n mousePos = {\n x: messageData.width,\n y: messageData.height,\n }\n }\n\n on(event, {\n iframe: messageData.iframe,\n screenX: Number(mousePos.x),\n screenY: Number(mousePos.y),\n type: messageData.type,\n })\n }\n\n const on = (funcName, val) => checkEvent(iframeId, funcName, val)\n\n function checkSameDomain(id) {\n try {\n settings[id].sameOrigin =\n !!settings[id]?.iframe?.contentWindow?.iframeChildListener\n } catch (error) {\n settings[id].sameOrigin = false\n }\n\n log(id, `sameOrigin: %c${settings[id].sameOrigin}`, HIGHLIGHT)\n }\n\n function checkVersion(version) {\n if (version === VERSION) return\n if (version === undefined) {\n advise(\n iframeId,\n `<rb>Legacy version detected in iframe</>\n\nDetected legacy version of child page script. It is recommended to update the page in the iframe to use <b>@iframe-resizer/child</>.\n\nSee <u>https://iframe-resizer.com/setup/#child-page-setup</> for more details.\n`,\n )\n return\n }\n log(\n iframeId,\n `Version mismatch (Child: %c${version}%c !== Parent: %c${VERSION})`,\n HIGHLIGHT,\n FOREGROUND,\n HIGHLIGHT,\n )\n }\n\n function setTitle(title, iframeId) {\n if (!settings[iframeId]?.syncTitle) return\n settings[iframeId].iframe.title = title\n info(iframeId, `Set iframe title attribute: %c${title}`, HIGHLIGHT)\n }\n\n function started() {\n setup = true\n }\n\n function eventMsg() {\n const { height, iframe, msg, type, width } = messageData\n if (settings[iframeId]?.firstRun) firstRun()\n\n switch (type) {\n case CLOSE:\n closeIframe(iframe)\n break\n\n case MESSAGE:\n forwardMsgFromIframe(getMsgBody(6))\n break\n\n case MOUSE_ENTER:\n onMouse('onMouseEnter')\n break\n\n case MOUSE_LEAVE:\n onMouse('onMouseLeave')\n break\n\n case BEFORE_UNLOAD:\n info(iframeId, 'Ready state reset')\n settings[iframeId].ready = false\n break\n\n case AUTO_RESIZE:\n settings[iframeId].autoResize = JSON.parse(getMsgBody(9))\n break\n\n case SCROLL_BY:\n scrollBy()\n break\n\n case SCROLL_TO:\n scrollRequestFromChild(false)\n break\n\n case SCROLL_TO_OFFSET:\n scrollRequestFromChild(true)\n break\n\n case PAGE_INFO:\n startPageInfoMonitor()\n break\n\n case PARENT_INFO:\n startParentInfoMonitor()\n break\n\n case PAGE_INFO_STOP:\n stopPageInfoMonitor()\n break\n\n case PARENT_INFO_STOP:\n stopParentInfoMonitor()\n break\n\n case IN_PAGE_LINK:\n findTarget(getMsgBody(9))\n break\n\n case TITLE:\n setTitle(msg, iframeId)\n break\n\n case RESET:\n resetIframe(messageData)\n break\n\n case INIT:\n resizeIframe()\n checkSameDomain(iframeId)\n checkVersion(msg)\n started()\n on('onReady', iframe)\n break\n\n default:\n if (width === 0 && height === 0) {\n warn(\n iframeId,\n `Unsupported message received (${type}), this is likely due to the iframe containing a later ` +\n `version of iframe-resizer than the parent page`,\n )\n return\n }\n\n if (width === 0 || height === 0) {\n log(iframeId, 'Ignoring message with 0 height or width')\n return\n }\n\n // Recheck document.hidden here, as only Firefox\n // correctly supports this in the iframe\n if (document.hidden) {\n log(iframeId, 'Page hidden - ignored resize request')\n return\n }\n\n resizeIframe()\n }\n }\n\n function checkSettings(iframeId) {\n if (!settings[iframeId]) {\n throw new Error(\n `${messageData.type} No settings for ${iframeId}. Message was: ${msg}`,\n )\n }\n }\n\n const initFromIframe = (source) => (iframeId) => {\n const { ready, postMessageTarget } = settings[iframeId]\n if (ready || source !== postMessageTarget) return\n trigger(INIT_FROM_IFRAME, createOutgoingMsg(iframeId), iframeId)\n warnOnNoResponse(iframeId, settings)\n }\n\n const iFrameReadyMsgReceived = (source) =>\n Object.keys(settings).forEach(initFromIframe(source))\n\n function firstRun() {\n if (!settings[iframeId]) return\n\n checkMode(iframeId, messageData.mode)\n settings[iframeId].firstRun = false\n }\n\n function screenMessage(msg) {\n checkSettings(iframeId)\n\n if (!isMessageFromMetaParent()) {\n log(iframeId, `Received: %c${msg}`, HIGHLIGHT)\n settings[iframeId].ready = true\n\n if (checkIframeExists() && isMessageFromIframe()) {\n eventMsg()\n }\n }\n }\n\n let msg = event.data\n\n if (msg === '[iFrameResizerChild]Ready') {\n iFrameReadyMsgReceived(event.source)\n return\n }\n\n if (!isMessageForUs(msg)) {\n if (typeof msg !== 'string') return\n consoleEvent('parent', 'ignoredMessage')\n debug('parent', msg)\n return\n }\n\n const messageData = processMessage(msg)\n const { id, type } = messageData\n const iframeId = id\n\n if (!iframeId) {\n warn(\n '',\n 'iframeResizer received messageData without id, message was: ',\n msg,\n )\n return\n }\n\n consoleEvent(iframeId, type)\n errorBoundary(iframeId, screenMessage)(msg)\n}\n\nfunction checkEvent(iframeId, funcName, val) {\n let func = null\n let retVal = null\n\n if (settings[iframeId]) {\n func = settings[iframeId][funcName]\n\n if (typeof func === 'function')\n if (funcName === 'onBeforeClose' || funcName === 'onScroll') {\n try {\n retVal = func(val)\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error)\n warn(iframeId, `Error in ${funcName} callback`)\n }\n } else isolateUserCode(func, val)\n else\n throw new TypeError(\n `${funcName} on iFrame[${iframeId}] is not a function`,\n )\n }\n\n return retVal\n}\n\nfunction removeIframeListeners(iframe) {\n const { id } = iframe\n log(id, 'Disconnected from iframe')\n delete settings[id]\n delete iframe.iframeResizer\n}\n\nfunction closeIframe(iframe) {\n const { id } = iframe\n\n if (checkEvent(id, 'onBeforeClose', id) === false) {\n log(id, 'Close iframe cancelled by onBeforeClose')\n return\n }\n\n log(id, `Removing iFrame: %c${id}`, HIGHLIGHT)\n\n try {\n // Catch race condition error with React\n if (iframe.parentNode) {\n iframe.remove()\n }\n } catch (error) {\n warn(id, error)\n }\n\n checkEvent(id, 'onAfterClose', id)\n removeIframeListeners(iframe)\n}\n\nfunction getPagePosition(iframeId) {\n if (page.position !== null) return\n\n page.position = {\n x: window.scrollX,\n y: window.scrollY,\n }\n\n log(\n iframeId,\n `Get page position: %c${page.position.x}%c, %c${page.position.y}`,\n HIGHLIGHT,\n FOREGROUND,\n HIGHLIGHT,\n )\n}\n\nfunction unsetPagePosition() {\n page.position = null\n}\n\nfunction setPagePosition(iframeId) {\n if (page.position === null) return\n\n window.scrollTo(page.position.x, page.position.y)\n info(\n iframeId,\n `Set page position: %c${page.position.x}%c, %c${page.position.y}`,\n HIGHLIGHT,\n FOREGROUND,\n HIGHLIGHT,\n )\n unsetPagePosition()\n}\n\nfunction resetIframe(messageData) {\n log(\n messageData.id,\n `Size reset requested by ${messageData.type === INIT ? 'parent page' : 'child page'}`,\n )\n\n getPagePosition(messageData.id)\n setSize(messageData)\n trigger(RESET, RESET, messageData.id)\n}\n\nfunction setSize(messageData) {\n function setDimension(dimension) {\n const size = `${messageData[dimension]}px`\n messageData.iframe.style[dimension] = size\n info(id, `Set ${dimension}: %c${size}`, HIGHLIGHT)\n }\n\n const { id } = messageData\n const { sizeHeight, sizeWidth } = settings[id]\n\n if (sizeHeight) setDimension(HEIGHT)\n if (sizeWidth) setDimension(WIDTH)\n}\n\nconst filterMsg = (msg) =>\n msg\n .split(':')\n .filter((_, index) => index !== 19)\n .join(':')\n\nfunction trigger(calleeMsg, msg, id) {\n function logSent(route) {\n const displayMsg = calleeMsg in INIT_EVENTS ? filterMsg(msg) : msg\n info(id, route, HIGHLIGHT, FOREGROUND, HIGHLIGHT)\n info(id, `Message data: %c${displayMsg}`, HIGHLIGHT)\n }\n\n function postMessageToIframe() {\n const { iframe, postMessageTarget, sameOrigin, targetOrigin } = settings[id]\n\n if (sameOrigin) {\n try {\n iframe.contentWindow.iframeChildListener(MESSAGE_ID + msg)\n logSent(`Sending message to iframe %c${id}%c via same origin%c`)\n return\n } catch (error) {\n if (calleeMsg in INIT_EVENTS) {\n settings[id].sameOrigin = false\n log(id, 'New iframe does not support same origin')\n } else {\n warn(id, 'Same origin messaging failed, falling back to postMessage')\n }\n }\n }\n\n logSent(\n `Sending message to iframe: %c${id}%c targetOrigin: %c${targetOrigin}`,\n )\n\n postMessageTarget.postMessage(MESSAGE_ID + msg, targetOrigin)\n }\n\n function checkAndSend() {\n if (!settings[id]?.postMessageTarget) {\n warn(id, `Iframe(${id}) not found`)\n return\n }\n\n postMessageToIframe()\n }\n\n consoleEvent(id, calleeMsg)\n\n if (settings[id]) checkAndSend()\n}\n\nfunction createOutgoingMsg(iframeId) {\n const iframeSettings = settings[iframeId]\n\n return [\n iframeId,\n '8', // Backwards compatibility (PaddingV1)\n iframeSettings.sizeWidth,\n iframeSettings.log,\n '32', // Backwards compatibility (Interval)\n true, // Backwards compatibility (EnablePublicMethods)\n iframeSettings.autoResize,\n iframeSettings.bodyMargin,\n iframeSettings.heightCalculationMethod,\n iframeSettings.bodyBackground,\n iframeSettings.bodyPadding,\n iframeSettings.tolerance,\n iframeSettings.inPageLinks,\n 'child', // Backwards compatibility (resizeFrom)\n iframeSettings.widthCalculationMethod,\n iframeSettings.mouseEvents,\n iframeSettings.offsetHeight,\n iframeSettings.offsetWidth,\n iframeSettings.sizeHeight,\n iframeSettings.license,\n page.version,\n iframeSettings.mode,\n '', // iframeSettings.sizeSelector,\n iframeSettings.logExpand,\n ].join(':')\n}\n\nlet count = 0\nlet setup = false\nlet vAdvised = false\nlet vInfoDisable = false\n\nfunction checkMode(iframeId, childMode = -3) {\n if (vAdvised) return\n const mode = Math.max(settings[iframeId].mode, childMode)\n if (mode > settings[iframeId].mode) settings[iframeId].mode = mode\n if (mode < 0) {\n consoleClear(iframeId)\n if (!settings[iframeId].vAdvised)\n advise(iframeId || 'Parent', `${getModeData(mode + 2)}${getModeData(2)}`)\n settings[iframeId].vAdvised = true\n throw getModeData(mode + 2).replace(/<\\/?[a-z][^>]*>|<\\/>/gi, '')\n }\n if (!(mode > 0 && vInfoDisable)) {\n vInfo(`v${VERSION} (${getModeLabel(mode)})`, mode)\n }\n if (mode < 1) advise('Parent', getModeData(3))\n vAdvised = true\n}\n\nexport default (options) => (iframe) => {\n function newId() {\n let id = options?.id || defaults.id + count++\n\n if (document.getElementById(id) !== null) {\n id += count++\n }\n\n return id\n }\n\n function ensureHasId(iframeId) {\n if (iframeId && typeof iframeId !== 'string') {\n throw new TypeError('Invalid id for iFrame. Expected String')\n }\n\n if (iframeId === '' || !iframeId) {\n iframeId = newId()\n iframe.id = iframeId\n log(iframeId, `Added missing iframe ID: ${iframeId} (${iframe.src})`)\n }\n\n return iframeId\n }\n\n function setScrolling() {\n log(\n iframeId,\n `Iframe scrolling ${\n settings[iframeId]?.scrolling ? 'enabled' : 'disabled'\n } for ${iframeId}`,\n )\n\n iframe.style.overflow =\n settings[iframeId]?.scrolling === false ? 'hidden' : 'auto'\n\n switch (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 function setupBodyMarginValues() {\n const { bodyMargin } = settings[iframeId]\n\n if (typeof bodyMargin === 'number' || bodyMargin === '0') {\n settings[iframeId].bodyMargin = `${bodyMargin}px`\n }\n }\n\n function checkReset() {\n const firstRun = settings[iframeId]?.firstRun\n const resetRequestMethod =\n settings[iframeId]?.heightCalculationMethod in RESET_REQUIRED_METHODS\n\n if (!firstRun && resetRequestMethod) {\n resetIframe({ iframe, height: 0, width: 0, type: INIT })\n }\n }\n\n function setupIframeObject() {\n if (settings[iframeId]) {\n const { iframe } = settings[iframeId]\n const resizer = {\n close: closeIframe.bind(null, iframe),\n\n disconnect: removeIframeListeners.bind(null, iframe),\n\n removeListeners() {\n advise(\n iframeId,\n `<rb>Deprecated Method Name</>\n\nThe \\u001B[removeListeners()</> method has been renamed to \\u001B[disconnect()</>.\n`,\n )\n this.disconnect()\n },\n\n resize() {\n advise(\n iframeId,\n `<rb>Deprecated Method</>\n \nUse of the <b>resize()</> method from the parent page is deprecated and will be removed in a future version of <i>iframe-resizer</>. As their are no longer any edge cases that require triggering a resize from the parent page, it is recommended to remove this method from your code.`,\n )\n trigger.bind(null, 'Window resize', RESIZE, iframeId)\n },\n\n moveToAnchor(anchor) {\n typeAssert(anchor, 'string', 'moveToAnchor(anchor) anchor')\n trigger('Move to anchor', `moveToAnchor:${anchor}`, iframeId)\n },\n\n sendMessage(message) {\n message = JSON.stringify(message)\n trigger(MESSAGE, `${MESSAGE}:${message}`, iframeId)\n },\n }\n\n iframe.iframeResizer = resizer\n iframe.iFrameResizer = resizer\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 const iFrameLoaded = () => {\n trigger(ONLOAD, `${msg}:${setup}`, id)\n warnOnNoResponse(id, settings)\n checkReset()\n }\n\n const { id } = iframe\n const { waitForLoad } = settings[id]\n\n addEventListener(iframe, LOAD, iFrameLoaded)\n\n if (waitForLoad === true) return\n\n trigger(INIT, `${msg}:${setup}`, id)\n warnOnNoResponse(id, settings)\n }\n\n function checkOptions(options) {\n if (!options) return {}\n\n if (\n 'sizeWidth' in options ||\n 'sizeHeight' in options ||\n AUTO_RESIZE in options\n ) {\n advise(\n iframeId,\n `<rb>Deprecated Option</>\n\nThe <b>sizeWidth</>, <b>sizeHeight</> and <b>autoResize</> options have been replaced with new <b>direction</> option which expects values of <i>\"${VERTICAL}\"</>, <i>\"${HORIZONTAL}\"</> or <i>\"${NONE}\"</>.\n`,\n )\n }\n\n return options\n }\n\n function setDirection() {\n const { direction } = settings[iframeId]\n\n switch (direction) {\n case VERTICAL:\n break\n\n case HORIZONTAL:\n settings[iframeId].sizeHeight = false\n // eslint-disable-next-line no-fallthrough\n case BOTH:\n settings[iframeId].sizeWidth = true\n break\n\n case NONE:\n settings[iframeId].sizeWidth = false\n settings[iframeId].sizeHeight = false\n settings[iframeId].autoResize = false\n break\n\n default:\n throw new TypeError(\n iframeId,\n `Direction value of \"${direction}\" is not valid`,\n )\n }\n\n log(iframeId, `direction: %c${direction}`, HIGHLIGHT)\n }\n\n function setOffsetSize(offset) {\n if (!offset) return // No offset set or offset is zero\n\n if (settings[iframeId].direction === VERTICAL) {\n settings[iframeId].offsetHeight = offset\n log(iframeId, `Offset height: %c${offset}`, HIGHLIGHT)\n } else {\n settings[iframeId].offsetWidth = offset\n log(iframeId, `Offset width: %c${offset}`, HIGHLIGHT)\n }\n }\n\n const getTargetOrigin = (remoteHost) =>\n remoteHost === '' ||\n remoteHost.match(/^(about:blank|javascript:|file:\\/\\/)/) !== null\n ? '*'\n : remoteHost\n\n function getPostMessageTarget() {\n if (settings[iframeId].postMessageTarget === null)\n settings[iframeId].postMessageTarget = iframe.contentWindow\n }\n\n function preModeCheck() {\n if (vAdvised) return\n const { mode } = settings[iframeId]\n if (mode !== -1) checkMode(iframeId, mode)\n }\n\n function checkTitle(iframeId) {\n const title = settings[iframeId]?.iframe?.title\n return title === '' || title === undefined\n }\n\n function updateOptionName(oldName, newName) {\n if (hasOwn(settings[iframeId], oldName)) {\n advise(\n iframeId,\n `<rb>Deprecated option</>\\n\\nThe <b>${oldName}</> option has been renamed to <b>${newName}</>. Use of the old name will be removed in a future version of <i>iframe-resizer</>.`,\n )\n settings[iframeId][newName] = settings[iframeId][oldName]\n delete settings[iframeId][oldName]\n }\n }\n\n function checkWarningTimeout() {\n if (!settings[iframeId].warningTimeout) {\n info(iframeId, 'warningTimeout:%c disabled', HIGHLIGHT)\n }\n }\n\n const hasMouseEvents = (options) =>\n hasOwn(options, 'onMouseEnter') || hasOwn(options, 'onMouseLeave')\n\n function setTargetOrigin() {\n settings[iframeId].targetOrigin =\n settings[iframeId].checkOrigin === true\n ? getTargetOrigin(settings[iframeId].remoteHost)\n : '*'\n }\n\n function checkOffset(options) {\n if (options?.offset) {\n advise(\n iframeId,\n `<rb>Deprecated option</>\\n\\n The <b>offset</> option has been renamed to <b>offsetSize</>. Use of the old name will be removed in a future version of <i>iframe-resizer</>.`,\n )\n }\n }\n\n function processOptions(options) {\n settings[iframeId] = {\n ...settings[iframeId],\n iframe,\n firstRun: true,\n remoteHost: iframe?.src.split('/').slice(0, 3).join('/'),\n ...defaults,\n ...checkOptions(options),\n mouseEvents: hasMouseEvents(options),\n mode: setMode(options),\n syncTitle: checkTitle(iframeId),\n }\n\n updateOptionName('offset', 'offsetSize')\n updateOptionName('onClose', 'onBeforeClose')\n updateOptionName('onClosed', 'onAfterClose')\n\n consoleEvent(iframeId, 'setup')\n setDirection()\n setOffsetSize(options?.offsetSize || options?.offset) // ignore zero offset\n checkOffset(options)\n checkWarningTimeout()\n getPostMessageTarget()\n setTargetOrigin()\n }\n\n function setupIframe(options) {\n if (beenHere()) {\n warn(iframeId, `Ignored iframe (${iframeId}), already setup.`)\n return\n }\n\n processOptions(options)\n preModeCheck()\n setupEventListenersOnce()\n setScrolling()\n setupBodyMarginValues()\n init(createOutgoingMsg(iframeId))\n setupIframeObject()\n log(iframeId, 'Setup complete')\n }\n\n function enableVInfo(options) {\n if (options?.log === -1) {\n options.log = false\n vInfoDisable = true\n }\n }\n\n function checkLocationSearch(options) {\n const { search } = window.location\n\n if (search.includes('ifrlog')) {\n options.log = COLLAPSE\n options.logExpand = search.includes('ifrlog=expanded')\n }\n }\n\n function startLogging(iframeId, options) {\n const isLogEnabled = hasOwn(options, 'log')\n const isLogString = typeof options.log === 'string'\n const enabled = isLogEnabled\n ? isLogString\n ? true\n : options.log\n : defaults.log\n\n if (!hasOwn(options, 'logExpand')) {\n options.logExpand =\n isLogEnabled && isLogString\n ? options.log === EXPAND\n : defaults.logExpand\n }\n\n enableVInfo(options)\n setupConsole({\n enabled,\n expand: options.logExpand,\n iframeId,\n })\n\n if (isLogString && !(options.log in LOG_OPTIONS))\n error(\n iframeId,\n 'Invalid value for options.log: Accepted values are \"expanded\" and \"collapsed\"',\n )\n\n options.log = enabled\n }\n\n const beenHere = () => 'iframeResizer' in iframe\n\n const iframeId = ensureHasId(iframe.id)\n\n if (typeof options !== 'object') {\n throw new TypeError('Options is not an object')\n }\n\n checkLocationSearch(options)\n startLogging(iframeId, options)\n errorBoundary(iframeId, setupIframe)(options)\n\n return iframe?.iframeResizer\n}\n\nfunction sendTriggerMsg(eventName, event) {\n function triggerEnabledIframe(iframeId) {\n if (isIframeResizeEnabled(iframeId)) {\n trigger(eventName, event, iframeId)\n }\n }\n\n const isIframeResizeEnabled = (iframeId) =>\n settings[iframeId]?.autoResize && !settings[iframeId]?.firstRun\n\n Object.keys(settings).forEach(triggerEnabledIframe)\n}\n\nfunction tabVisible() {\n if (document.hidden === false) {\n log('document', 'Trigger event: Visibility change')\n sendTriggerMsg('tabVisible', RESIZE)\n }\n}\n\nconst setupEventListenersOnce = once(() => {\n addEventListener(window, MESSAGE, iframeListener)\n addEventListener(document, 'visibilitychange', tabVisible)\n window.iframeParentListener = (data) =>\n setTimeout(() => iframeListener({ data, sameOrigin: true }))\n})\n"],"names":["VERSION","AUTO_RESIZE","INIT","INIT_FROM_IFRAME","LOAD","MESSAGE","ONLOAD","PAGE_INFO","PARENT_INFO","RESET","RESIZE","SCROLL","NONE","VERTICAL","HORIZONTAL","MESSAGE_ID","RESET_REQUIRED_METHODS","Object","freeze","max","scroll","bodyScroll","documentElementScroll","INIT_EVENTS","EXPAND","COLLAPSE","LOG_OPTIONS","addEventListener","el","evt","func","options","removeEventListener","l","p","y","z","t","length","codePointAt","Math","imul","toString","replace","String","fromCodePoint","x","fromEntries","map","getModeData","setMode","u","split","v","hasOwn","o","k","prototype","hasOwnProperty","call","id","formatAdvise","formatLogMsg","msg","window","chrome","replaceAll","s","remove","settings","createConsoleGroup","mod","acg","__esModule","default","consoleEnabled","parent","expand","label","getMyId","iframeId","top","self","output","type","args","console","outputSwitched","log","isLogEnabled","info","debug","warn","error","event","purge","errorBoundary","advise","identity","queueMicrotask","join","deprecateAdvise","change","old","replacement","toLowerCase","deprecate","deprecateOption","warnOnNoResponse","msgTimeout","warningTimeout","clearTimeout","setTimeout","undefined","ready","loadErrorShown","iframe","waitForLoad","sandbox","hasSandbox","contains","showWarning","defaults","autoResize","bodyBackground","bodyMargin","bodyPadding","checkOrigin","direction","inPageLinks","heightCalculationMethod","logExpand","license","mouseEvents","offsetHeight","offsetWidth","postMessageTarget","sameDomain","scrolling","sizeHeight","sizeWidth","tolerance","widthCalculationMethod","onBeforeClose","onAfterClose","onInit","onMessage","onMouseEnter","onMouseLeave","onReady","messageData","onResized","onScroll","page","position","version","iframeListener","resizeIframe","setSize","setPagePosition","on","getPaddingEnds","compStyle","boxSizing","paddingTop","parseInt","paddingBottom","getBorderEnds","borderTopWidth","borderBottomWidth","getMsgBody","offset","slice","indexOf","sendInfoToIframe","infoFunction","requestType","gate","frameId","trigger","requestAnimationFrame","startInfoMonitor","pending","sendInfo","stop","sendScroll","sendResize","setListener","listener","consoleEvent","pageObserver","disconnect","iframeObserver","ResizeObserver","observe","document","body","attributes","childList","subtree","stopInfoMonitor","stopFunction","sendPageInfoToIframe","bodyPosition","getBoundingClientRect","iFramePosition","scrollY","scrollX","innerHeight","innerWidth","clientHeight","clientWidth","documentElement","JSON","stringify","iframeHeight","height","iframeWidth","width","offsetTop","offsetLeft","left","scrollTop","scrollLeft","documentHeight","documentWidth","windowHeight","windowWidth","sendParentInfoToIframe","scrollWidth","scrollHeight","pageLeft","pageTop","scale","visualViewport","viewport","startPageInfoMonitor","startParentInfoMonitor","stopPageInfoMonitor","stopParentInfoMonitor","getElementPosition","target","getPagePosition","Number","scrollRequestFromChild","addOffset","HIGHLIGHT","FOREGROUND","newPosition","calcOffset","parentIframe","parentIFrame","scrollParent","scrollTo","reposition","unsetPagePosition","onMouse","mousePos","coords","screenX","screenY","funcName","val","checkEvent","eventMsg","firstRun","checkMode","mode","closeIframe","msgBody","message","parse","scrollBy","location","hash","hashData","decodeURIComponent","getElementById","getElementsByName","jumpPosition","jumpToTarget","moveToAnchor","jumpToParent","findTarget","title","syncTitle","setTitle","resetIframe","sameOrigin","contentWindow","iframeChildListener","checkSameDomain","setup","hidden","checkSettings","Error","iFrameReadyMsgReceived","source","keys","forEach","createOutgoingMsg","initFromIframe","data","isMessageForUs","getComputedStyle","processMessage","retCode","true","false","isMessageFromMetaParent","origin","constructor","Array","i","checkList","remoteHost","checkSingle","isMessageFromIframe","retVal","TypeError","isolateUserCode","removeIframeListeners","iframeResizer","parentNode","setDimension","dimension","size","style","filterMsg","filter","_","index","calleeMsg","logSent","route","displayMsg","targetOrigin","postMessage","postMessageToIframe","iframeSettings","count","vAdvised","vInfoDisable","childMode","consoleClear","ver","NORMAL","vInfo","getModeLabel","tabVisible","eventName","isIframeResizeEnabled","sendTriggerMsg","setupEventListenersOnce","fn","done","Reflect","apply","this","arguments","once","iframeParentListener","setupIframeObject","resizer","close","bind","removeListeners","resize","anchor","value","string","charAt","toUpperCase","typeAssert","sendMessage","iFrameResizer","init","resetRequestMethod","checkReset","checkOptions","checkTitle","updateOptionName","oldName","newName","hasMouseEvents","processOptions","src","setDirection","offsetSize","checkOffset","match","beenHere","newId","ensureHasId","search","includes","checkLocationSearch","isLogString","enabled","enableVInfo","consoleGroup","setupConsole","startLogging","preModeCheck","overflow","setScrolling","setupBodyMarginValues"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../../packages/common/consts.js","../../packages/common/listeners.js","../../packages/common/mode.js","../../packages/common/utils.js","../../packages/common/format-advise.js","../../packages/core/values/settings.js","../../packages/core/console.js","../../packages/common/deprecate.js","../../packages/core/timeout.js","../../packages/core/values/defaults.js","../../packages/core/values/page.js","../../packages/core/index.js"],"sourcesContent":["export const VERSION = '[VI]{version}[/VI]'\nexport const LABEL = 'iframeResizer'\n\nexport const AUTO_RESIZE = 'autoResize'\nexport const BEFORE_UNLOAD = 'beforeUnload'\nexport const CLOSE = 'close'\nexport const IN_PAGE_LINK = 'inPageLink'\nexport const INIT = 'init'\nexport const INIT_FROM_IFRAME = 'iframeReady'\nexport const LOAD = 'load'\nexport const MESSAGE = 'message'\nexport const MOUSE_ENTER = 'mouseenter'\nexport const MOUSE_LEAVE = 'mouseleave'\nexport const ONLOAD = 'onload'\nexport const PAGE_INFO = 'pageInfo'\nexport const PARENT_INFO = 'parentInfo'\nexport const PAGE_INFO_STOP = 'pageInfoStop'\nexport const PARENT_INFO_STOP = 'parentInfoStop'\nexport const RESET = 'reset'\nexport const RESIZE = 'resize'\nexport const SCROLL_BY = 'scrollBy'\nexport const SCROLL_TO = 'scrollTo'\nexport const SCROLL_TO_OFFSET = 'scrollToOffset'\nexport const TITLE = 'title'\n\nexport const BASE = 10\nexport const SINGLE = 1\nexport const MIN_SIZE = 1\n\nexport const SIZE_ATTR = 'data-iframe-size'\nexport const OVERFLOW_ATTR = 'data-iframe-overflowed'\nexport const IGNORE_ATTR = 'data-iframe-ignore'\n\nexport const HEIGHT = 'height'\nexport const WIDTH = 'width'\nexport const SCROLL = 'scroll'\n\nexport const READY_STATE_CHANGE = 'readystatechange'\n\nexport const HEIGHT_EDGE = 'bottom'\nexport const WIDTH_EDGE = 'right'\n\nexport const ENABLE = 'autoResizeEnabled'\nexport const SIZE_CHANGE_DETECTED = Symbol('sizeChanged')\nexport const MANUAL_RESIZE_REQUEST = 'manualResize'\nexport const PARENT_RESIZE_REQUEST = 'parentResize'\nexport const IGNORE_DISABLE_RESIZE = {\n [MANUAL_RESIZE_REQUEST]: 1,\n [PARENT_RESIZE_REQUEST]: 1,\n}\n\nexport const SET_OFFSET_SIZE = 'setOffsetSize'\n\nexport const RESIZE_OBSERVER = 'resizeObserver'\nexport const OVERFLOW_OBSERVER = 'overflowObserver'\nexport const MUTATION_OBSERVER = 'mutationObserver'\nexport const VISIBILITY_OBSERVER = 'visibilityObserver'\n\nexport const BOLD = 'font-weight: bold;'\nexport const NORMAL = 'font-weight: normal;'\nexport const ITALIC = 'font-style: italic;'\nexport const BLUE = 'color: #135CD2;'\nexport const BLUE_LIGHT = 'color: #A9C7FB;'\nexport const BLACK = 'color: black;'\nexport const WHITE = 'color: #E3E3E3;'\n\nexport const NONE = 'none'\nexport const BOTH = 'both'\nexport const VERTICAL = 'vertical'\nexport const HORIZONTAL = 'horizontal'\n\nexport const NO_CHANGE = 'No change in content size detected'\n\nexport const MESSAGE_HEADER_LENGTH = MESSAGE.length\nexport const MESSAGE_ID = '[iFrameSizer]' // Must match iframe msg ID\nexport const MESSAGE_ID_LENGTH = MESSAGE_ID.length\nexport const RESET_REQUIRED_METHODS = Object.freeze({\n max: 1,\n scroll: 1,\n bodyScroll: 1,\n documentElementScroll: 1,\n})\n\nexport const INIT_EVENTS = Object.freeze({\n [ONLOAD]: 1,\n [INIT]: 1,\n [INIT_FROM_IFRAME]: 1,\n})\n\nexport const EXPAND = 'expanded'\nexport const COLLAPSE = 'collapsed'\n\nexport const LOG_OPTIONS = Object.freeze({\n [EXPAND]: 1,\n [COLLAPSE]: 1,\n})\n\nexport const IGNORE_TAGS = new Set([\n 'head',\n 'body',\n 'meta',\n 'base',\n 'title',\n 'script',\n 'link',\n 'style',\n 'map',\n 'area',\n 'option',\n 'optgroup',\n 'template',\n 'track',\n 'wbr',\n 'nobr',\n])\n","export const addEventListener = (el, evt, func, options) =>\n el.addEventListener(evt, func, options || false)\n\nexport const removeEventListener = (el, evt, func) =>\n el.removeEventListener(evt, func, false)\n","const l = (l) => {\n if (!l) return ''\n let p = -559038744,\n y = 1103547984\n for (let z, t = 0; t < l.length; t++)\n ((z = l.codePointAt(t)),\n (p = Math.imul(p ^ z, 2246822519)),\n (y = Math.imul(y ^ z, 3266489917)))\n return (\n (p ^= Math.imul(p ^ (y >>> 15), 1935289751)),\n (y ^= Math.imul(y ^ (p >>> 15), 3405138345)),\n (p ^= y >>> 16),\n (y ^= p >>> 16),\n (2097152 * (y >>> 0) + (p >>> 11)).toString(36)\n )\n },\n p = (l) =>\n l.replace(/[A-Za-z]/g, (l) =>\n String.fromCodePoint(\n (l <= 'Z' ? 90 : 122) >= (l = l.codePointAt(0) + 19) ? l : l - 26,\n ),\n ),\n x = ['spjluzl', 'rlf', 'clyzpvu'],\n y = [\n '<yi>Puchspk Spjluzl Rlf</><iy><iy>',\n '<yi>Tpzzpun Spjluzl Rlf</><iy><iy>',\n 'Aopz spiyhyf pz hchpshisl dpao ivao Jvttlyjphs huk Vwlu-Zvbyjl spjluzlz.<iy><iy><i>Jvttlyjphs Spjluzl</><iy>Mvy jvttlyjphs bzl, <p>pmyhtl-ylzpgly</> ylxbpylz h svd jvza vul aptl spjluzl mll. Mvy tvyl pumvythapvu cpzpa <b>oaawz://pmyhtl-ylzpgly.jvt/wypjpun</>.<iy><iy><i>Vwlu Zvbyjl Spjluzl</><iy>Pm fvb hyl bzpun aopz spiyhyf pu h uvu-jvttlyjphs vwlu zvbyjl wyvqlja aolu fvb jhu bzl pa mvy myll bukly aol alytz vm aol NWS C3 Spjluzl. Av jvumpyt fvb hjjlwa aolzl alytz, wslhzl zla aol <i>spjluzl</> rlf pu <p>pmyhtl-ylzpgly</> vwapvuz av <i>NWSc3</>.<iy><iy>Mvy tvyl pumvythapvu wslhzl zll: <b>oaawz://pmyhtl-ylzpgly.jvt/nws</>',\n '<i>NWSc3 Spjluzl Clyzpvu</><iy><iy>Aopz clyzpvu vm <p>pmyhtl-ylzpgly</> pz ilpun bzlk bukly aol alytz vm aol <i>NWS C3</> spjluzl. Aopz spjluzl hssvdz fvb av bzl <p>pmyhtl-ylzpgly</> pu Vwlu Zvbyjl wyvqljaz, iba pa ylxbpylz fvby wyvqlja av il wbispj, wyvcpkl haaypibapvu huk il spjluzlk bukly clyzpvu 3 vy shaly vm aol NUB Nlulyhs Wbispj Spjluzl.<iy><iy>Pm fvb hyl bzpun aopz spiyhyf pu h uvu-vwlu zvbyjl wyvqlja vy dlizpal, fvb dpss ullk av wbyjohzl h svd jvza vul aptl jvttlyjphs spjluzl.<iy><iy>Mvy tvyl pumvythapvu cpzpa <b>oaawz://pmyhtl-ylzpgly.jvt/wypjpun</>.',\n '<iy><yi>Zvsv spjluzl kvlz uva zbwwvya jyvzz-kvthpu</><iy><iy>Av bzl <p>pmyhtl-ylzpgly</> dpao jyvzz kvthpu pmyhtlz fvb ullk lpaoly aol Wyvmlzzpvuhs vy Ibzpulzz spjluzlz. Mvy klahpsz vu bwnyhkl wypjpun wslhzl jvuahja pumv@pmyhtl-ylzpgly.jvt.',\n ],\n z = ['NWSc3', 'zvsv', 'wyv', 'ibzpulzz', 'vlt'],\n t = Object.fromEntries(\n [\n '2cgs7fdf4xb',\n '1c9ctcccr4z',\n '1q2pc4eebgb',\n 'ueokt0969w',\n 'w2zxchhgqz',\n '1umuxblj2e5',\n ].map((l, p) => [l, Math.max(0, p - 1)]),\n )\nexport const getModeData = (l) => p(y[l])\nexport const getModeLabel = (l) => p(z[l])\nexport const getKey = (l) => p(x[l])\nexport default (y) => {\n const z = y[p(x[0])] || y[p(x[1])] || y[p(x[2])]\n if (!z) return -1\n const u = z.split('-')\n let v = (function (y = '') {\n let z = -2\n const u = l(p(y))\n return u in t && (z = t[u]), z\n })(u[0])\n return 0 === v || ((p) => p[2] === l(p[0] + p[1]))(u) || (v = -2), v\n}\n","export const isElement = (node) => node.nodeType === Node.ELEMENT_NODE\n\nexport const isNumber = (value) => !Number.isNaN(value)\n\nexport const isolateUserCode = (func, ...val) =>\n setTimeout(() => func(...val), 0)\n\nexport const once = (fn) => {\n let done = false\n\n return function () {\n return done\n ? undefined\n : ((done = true), Reflect.apply(fn, this, arguments))\n }\n}\n\nexport const hasOwn =\n Object.hasOwn || ((o, k) => Object.prototype.hasOwnProperty.call(o, k))\n\nexport const isDarkModeEnabled = () =>\n window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches\n\nexport const id = (x) => x\n\nconst ROUNDING = 1000\n\nexport const round = (value) => Math.round(value * ROUNDING) / ROUNDING\n\nexport const capitalizeFirstLetter = (string) =>\n string.charAt(0).toUpperCase() + string.slice(1)\n\nexport const isDef = (value) => `${value}` !== '' && value !== undefined\n\nexport function getElementName(el) {\n switch (true) {\n case !isDef(el):\n return ''\n\n case isDef(el.id):\n return `${el.nodeName}#${el.id}`\n\n case isDef(el.name):\n return `${el.nodeName} (${el.name}`\n\n case isDef(el.className):\n return `${el.nodeName}.${el.className}`\n\n default:\n return el.nodeName\n }\n}\n\nexport const esModuleInterop = (mod) =>\n // eslint-disable-next-line no-underscore-dangle\n mod?.__esModule ? mod.default : mod\n\nexport const typeAssert = (value, type, error) => {\n // eslint-disable-next-line valid-typeof\n if (typeof value !== type) {\n throw new TypeError(`${error} is not a ${capitalizeFirstLetter(type)}`)\n }\n}\n","const encode = (s) =>\n s\n .replaceAll('<br>', '\\n')\n .replaceAll('<rb>', '\\u001B[31;1m')\n .replaceAll('</>', '\\u001B[m')\n .replaceAll('<b>', '\\u001B[1m')\n .replaceAll('<i>', '\\u001B[3m')\n .replaceAll('<u>', '\\u001B[4m')\n\nconst remove = (s) => s.replaceAll('<br>', '\\n').replaceAll(/<[/a-z]+>/gi, '')\n\nexport default (formatLogMsg) => (msg) =>\n window.chrome // Only show formatting in Chrome as not supported in other browsers\n ? formatLogMsg(encode(msg))\n : formatLogMsg(remove(msg))\n","export default {}\n","import acg, { NORMAL } from 'auto-console-group'\n\nimport { BOLD, LABEL } from '../common/consts'\nimport deprecate from '../common/deprecate'\nimport formatAdvise from '../common/format-advise'\nimport { esModuleInterop, id as identity } from '../common/utils'\nimport settings from './values/settings'\n\n// Deal with UMD not converting default exports to named exports\nconst createConsoleGroup = esModuleInterop(acg)\n\nlet consoleEnabled = true\n\nconst parent = createConsoleGroup({\n expand: false,\n label: 'parent',\n})\n\nconst getMyId = (iframeId) =>\n window.top === window.self\n ? `parent(${iframeId})`\n : `nested parent(${iframeId})`\n\nconst isLogEnabled = (iframeId) =>\n settings[iframeId] ? settings[iframeId].log : consoleEnabled\n\nexport function setupConsole({ enabled, expand, iframeId }) {\n const consoleGroup = createConsoleGroup({\n expand,\n label: getMyId(iframeId),\n })\n\n consoleEnabled = enabled\n\n if (!settings[iframeId])\n settings[iframeId] = {\n console: consoleGroup,\n }\n}\n\nconst output =\n (type) =>\n (iframeId, ...args) =>\n settings[iframeId]\n ? settings[iframeId].console[type](...args)\n : parent[type](...args)\n\nexport const outputSwitched =\n (type) =>\n (iframeId, ...args) =>\n isLogEnabled(iframeId) === true ? output(type)(iframeId, ...args) : null\n\nexport const log = outputSwitched('log')\nexport const info = log // outputSwitched('info')\nexport const debug = outputSwitched('debug')\nexport const assert = output('assert')\nexport const warn = output('warn')\nexport const error = output('error')\nexport const event = output('event')\nexport const purge = output('purge')\nexport const endAutoGroup = output('endAutoGroup')\nexport const errorBoundary = output('errorBoundary')\n\nexport function vInfo(ver, mode) {\n queueMicrotask(() =>\n // eslint-disable-next-line no-console\n console.info(\n `%ciframe-resizer ${ver}`,\n consoleEnabled || mode < 1 ? BOLD : NORMAL,\n ),\n )\n}\n\nconst formatLogMsg =\n (iframeId) =>\n (...args) =>\n [`${LABEL}(${iframeId})`, ...args].join(' ')\n\nexport const advise = (iframeId, ...args) =>\n settings[iframeId]\n ? settings[iframeId].console.warn(formatAdvise(identity)(...args))\n : queueMicrotask(\n // eslint-disable-next-line no-console\n () => console?.warn(formatAdvise(formatLogMsg(iframeId))(...args)),\n )\n\nconst deprecateAdvise = deprecate(advise)\nexport const deprecateFunction = deprecateAdvise('Function')\nexport const deprecateMethod = deprecateAdvise('Method')\nexport const deprecateOption = deprecateAdvise('Option')\n","export default (advise) =>\n (type, change = 'renamed to') =>\n (old, replacement, info = '', iframeId = '') =>\n advise(\n iframeId,\n `<rb>Deprecated ${type}(${old.replace('()', '')})</>\\n\\nThe <b>${old}</> ${type.toLowerCase()} has been ${change} <b>${replacement}</>. ${info}Use of the old ${type.toLowerCase()} will be removed in a future version of <i>iframe-resizer</>.`,\n )\n","import { advise, event } from './console'\n\nfunction showWarning(id, settings) {\n const { iframe, waitForLoad } = settings[id]\n const { sandbox } = iframe\n const hasSandbox =\n typeof sandbox === 'object' &&\n sandbox.length > 0 &&\n !(\n sandbox.contains('allow-scripts') && sandbox.contains('allow-same-origin')\n )\n\n event(id, 'noResponse')\n advise(\n id,\n `<rb>No response from iframe</>\n \nThe iframe (<i>${id}</>) has not responded within ${settings[id].warningTimeout / 1000} seconds. Check <b>@iframe-resizer/child</> package has been loaded in the iframe.\n${\n waitForLoad\n ? `\nThe <b>waitForLoad</> option is currently set to <b>'true'</>. If the iframe loads before <i>iframe-resizer</> runs, this option will prevent <i>iframe-resizer</> initialising. To disable this option, set <b>waitForLoad</> to <b>'false'</>. \n`\n : ''\n}${\n hasSandbox\n ? `\nThe iframe has the <b>sandbox</> attribute, please ensure it contains both the <i>'allow-same-origin'</> and <i>'allow-scripts'</> values.\n`\n : ''\n }\nThis message can be ignored if everything is working, or you can set the <b>warningTimeout</> option to a higher value or zero to suppress this warning.\n`,\n )\n}\n\nexport default function warnOnNoResponse(id, settings) {\n function warning() {\n if (settings[id] === undefined) return // iframe has been closed while we were waiting\n\n const { initialised, loadErrorShown } = settings[id]\n\n settings[id].msgTimeout = undefined\n\n if (initialised || loadErrorShown) return\n\n settings[id].loadErrorShown = true\n showWarning(id, settings)\n }\n\n const { msgTimeout, warningTimeout } = settings[id]\n\n if (!warningTimeout) return\n if (msgTimeout) clearTimeout(msgTimeout)\n\n settings[id].msgTimeout = setTimeout(warning, warningTimeout)\n}\n","import { VERTICAL } from '../../common/consts'\nimport { deprecateOption } from '../console'\nimport settings from './settings'\n\nconst onReadyDeprecated = (messageData) => {\n if (typeof settings[messageData.id].onInit === 'function') {\n deprecateOption('init()', 'onReady()', '', messageData.id)\n settings[messageData.id].onInit(messageData)\n }\n}\n\nexport default Object.freeze({\n autoResize: true,\n bodyBackground: null,\n bodyMargin: null,\n bodyPadding: null,\n checkOrigin: true,\n direction: VERTICAL,\n firstRun: true,\n inPageLinks: false,\n heightCalculationMethod: 'auto',\n id: 'iFrameResizer', // TODO: v6 change to 'iframeResizer'\n log: false,\n logExpand: false,\n license: undefined,\n mouseEvents: true,\n offsetHeight: null,\n offsetWidth: null,\n postMessageTarget: null,\n sameDomain: false,\n scrolling: false,\n sizeHeight: true,\n // sizeSelector: '',\n sizeWidth: false,\n tolerance: 0,\n waitForLoad: false,\n warningTimeout: 5000,\n widthCalculationMethod: 'auto',\n onBeforeClose: () => true,\n onAfterClose() {},\n onInit: false,\n onMessage: null,\n onMouseEnter() {},\n onMouseLeave() {},\n onReady: onReadyDeprecated,\n onResized() {},\n onScroll: () => true,\n})\n","import { VERSION } from '../../common/consts'\n\nexport default {\n position: null,\n version: VERSION,\n}\n","import { FOREGROUND, HIGHLIGHT } from 'auto-console-group'\n\nimport {\n AUTO_RESIZE,\n BEFORE_UNLOAD,\n BOTH,\n CLOSE,\n COLLAPSE,\n EXPAND,\n HEIGHT,\n HORIZONTAL,\n IN_PAGE_LINK,\n INIT,\n INIT_EVENTS,\n INIT_FROM_IFRAME,\n LOAD,\n LOG_OPTIONS,\n MESSAGE,\n MESSAGE_HEADER_LENGTH,\n MESSAGE_ID,\n MESSAGE_ID_LENGTH,\n MIN_SIZE,\n MOUSE_ENTER,\n MOUSE_LEAVE,\n NONE,\n ONLOAD,\n PAGE_INFO,\n PAGE_INFO_STOP,\n PARENT_INFO,\n PARENT_INFO_STOP,\n RESET,\n RESET_REQUIRED_METHODS,\n RESIZE,\n SCROLL,\n SCROLL_BY,\n SCROLL_TO,\n SCROLL_TO_OFFSET,\n TITLE,\n VERSION,\n VERTICAL,\n WIDTH,\n} from '../common/consts'\nimport { addEventListener, removeEventListener } from '../common/listeners'\nimport setMode, { getModeData, getModeLabel } from '../common/mode'\nimport { hasOwn, isolateUserCode, once, typeAssert } from '../common/utils'\nimport {\n advise,\n debug,\n error,\n errorBoundary,\n event as consoleEvent,\n info,\n log,\n purge as consoleClear,\n setupConsole,\n vInfo,\n warn,\n} from './console'\nimport warnOnNoResponse from './timeout'\nimport defaults from './values/defaults'\nimport page from './values/page'\nimport settings from './values/settings'\n\nfunction iframeListener(event) {\n function resizeIframe() {\n setSize(messageData)\n setPagePosition(iframeId)\n\n on('onResized', messageData)\n }\n\n function getPaddingEnds(compStyle) {\n if (compStyle.boxSizing !== 'border-box') return 0\n\n const top = compStyle.paddingTop ? parseInt(compStyle.paddingTop, 10) : 0\n const bot = compStyle.paddingBottom\n ? parseInt(compStyle.paddingBottom, 10)\n : 0\n\n return top + bot\n }\n\n function getBorderEnds(compStyle) {\n if (compStyle.boxSizing !== 'border-box') return 0\n\n const top = compStyle.borderTopWidth\n ? parseInt(compStyle.borderTopWidth, 10)\n : 0\n\n const bot = compStyle.borderBottomWidth\n ? parseInt(compStyle.borderBottomWidth, 10)\n : 0\n\n return top + bot\n }\n\n function processMessage(msg) {\n const data = msg.slice(MESSAGE_ID_LENGTH).split(':')\n const height = data[1] ? Number(data[1]) : 0\n const iframe = settings[data[0]]?.iframe\n const compStyle = getComputedStyle(iframe)\n\n const messageData = {\n iframe,\n id: data[0],\n height: height + getPaddingEnds(compStyle) + getBorderEnds(compStyle),\n width: Number(data[2]),\n type: data[3],\n msg: data[4],\n }\n\n // eslint-disable-next-line prefer-destructuring\n if (data[5]) messageData.mode = data[5]\n\n return messageData\n }\n\n function isMessageFromIframe() {\n function checkAllowedOrigin() {\n function checkList() {\n let i = 0\n let retCode = false\n\n log(\n iframeId,\n `Checking connection is from allowed list of origins: %c${checkOrigin}`,\n HIGHLIGHT,\n )\n\n for (; i < checkOrigin.length; i++) {\n if (checkOrigin[i] === origin) {\n retCode = true\n break\n }\n }\n\n return retCode\n }\n\n function checkSingle() {\n const remoteHost = settings[iframeId]?.remoteHost\n log(iframeId, `Checking connection is from: %c${remoteHost}`, HIGHLIGHT)\n return origin === remoteHost\n }\n\n return checkOrigin.constructor === Array ? checkList() : checkSingle()\n }\n\n const { origin, sameOrigin } = event\n\n if (sameOrigin) return true\n\n let checkOrigin = settings[iframeId]?.checkOrigin\n\n if (checkOrigin && `${origin}` !== 'null' && !checkAllowedOrigin()) {\n throw new Error(\n `Unexpected message received from: ${origin} for ${messageData.iframe.id}. Message was: ${event.data}. 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 const isMessageForUs = (msg) =>\n MESSAGE_ID === `${msg}`.slice(0, MESSAGE_ID_LENGTH) &&\n msg.slice(MESSAGE_ID_LENGTH).split(':')[0] in settings\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 compatibility.\n const 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 const getMsgBody = (offset) =>\n msg.slice(msg.indexOf(':') + MESSAGE_HEADER_LENGTH + offset)\n\n function forwardMsgFromIframe(msgBody) {\n log(\n iframeId,\n `onMessage passed: {iframe: %c${messageData.iframe.id}%c, message: %c${msgBody}%c}`,\n HIGHLIGHT,\n FOREGROUND,\n HIGHLIGHT,\n FOREGROUND,\n )\n\n on('onMessage', {\n iframe: messageData.iframe,\n message: JSON.parse(msgBody),\n })\n }\n\n function getPageInfo() {\n const bodyPosition = document.body.getBoundingClientRect()\n const iFramePosition = messageData.iframe.getBoundingClientRect()\n const { scrollY, scrollX, innerHeight, innerWidth } = window\n const { clientHeight, clientWidth } = document.documentElement\n\n return JSON.stringify({\n iframeHeight: iFramePosition.height,\n iframeWidth: iFramePosition.width,\n clientHeight: Math.max(clientHeight, innerHeight || 0),\n clientWidth: Math.max(clientWidth, innerWidth || 0),\n offsetTop: parseInt(iFramePosition.top - bodyPosition.top, 10),\n offsetLeft: parseInt(iFramePosition.left - bodyPosition.left, 10),\n scrollTop: scrollY,\n scrollLeft: scrollX,\n documentHeight: clientHeight,\n documentWidth: clientWidth,\n windowHeight: innerHeight,\n windowWidth: innerWidth,\n })\n }\n\n function getParentProps() {\n const { iframe } = messageData\n const { scrollWidth, scrollHeight } = document.documentElement\n const { width, height, offsetLeft, offsetTop, pageLeft, pageTop, scale } =\n window.visualViewport\n\n return JSON.stringify({\n iframe: iframe.getBoundingClientRect(),\n document: {\n scrollWidth,\n scrollHeight,\n },\n viewport: {\n width,\n height,\n offsetLeft,\n offsetTop,\n pageLeft,\n pageTop,\n scale,\n },\n })\n }\n\n const sendInfoToIframe = (type, infoFunction) => (requestType, iframeId) => {\n const gate = {}\n\n function throttle(func, frameId) {\n if (!gate[frameId]) {\n func()\n gate[frameId] = requestAnimationFrame(() => {\n gate[frameId] = null\n })\n }\n }\n\n function gatedTrigger() {\n trigger(`${requestType} (${type})`, `${type}:${infoFunction()}`, iframeId)\n }\n\n throttle(gatedTrigger, iframeId)\n }\n\n const startInfoMonitor = (sendInfoToIframe, type) => () => {\n let pending = false\n\n const sendInfo = (requestType) => () => {\n if (settings[id]) {\n if (!pending || pending === requestType) {\n sendInfoToIframe(requestType, id)\n\n pending = requestType\n requestAnimationFrame(() => {\n pending = false\n })\n }\n } else {\n stop()\n }\n }\n\n const sendScroll = sendInfo(SCROLL)\n const sendResize = sendInfo('resize window')\n\n function setListener(requestType, listener) {\n log(id, `${requestType}listeners for send${type}`)\n listener(window, SCROLL, sendScroll)\n listener(window, RESIZE, sendResize)\n }\n\n function stop() {\n consoleEvent(id, `stop${type}`)\n setListener('Remove ', removeEventListener)\n pageObserver.disconnect()\n iframeObserver.disconnect()\n removeEventListener(settings[id].iframe, LOAD, stop)\n }\n\n function start() {\n setListener('Add ', addEventListener)\n\n pageObserver.observe(document.body, {\n attributes: true,\n childList: true,\n subtree: true,\n })\n\n iframeObserver.observe(settings[id].iframe, {\n attributes: true,\n childList: false,\n subtree: false,\n })\n }\n\n const id = iframeId // Create locally scoped copy of iFrame ID\n\n const pageObserver = new ResizeObserver(sendInfo('pageObserver'))\n const iframeObserver = new ResizeObserver(sendInfo('iframeObserver'))\n\n if (settings[id]) {\n settings[id][`stop${type}`] = stop\n addEventListener(settings[id].iframe, LOAD, stop)\n start()\n }\n }\n\n const stopInfoMonitor = (stopFunction) => () => {\n if (stopFunction in settings[iframeId]) {\n settings[iframeId][stopFunction]()\n delete settings[iframeId][stopFunction]\n }\n }\n\n const sendPageInfoToIframe = sendInfoToIframe(PAGE_INFO, getPageInfo)\n const sendParentInfoToIframe = sendInfoToIframe(PARENT_INFO, getParentProps)\n\n const startPageInfoMonitor = startInfoMonitor(\n sendPageInfoToIframe,\n 'PageInfo',\n )\n const startParentInfoMonitor = startInfoMonitor(\n sendParentInfoToIframe,\n 'ParentInfo',\n )\n\n const stopPageInfoMonitor = stopInfoMonitor('stopPageInfo')\n const stopParentInfoMonitor = stopInfoMonitor('stopParentInfo')\n\n function checkIframeExists() {\n if (messageData.iframe === null) {\n warn(iframeId, `The iframe (${messageData.id}) was not found.`)\n return false\n }\n\n return true\n }\n\n function getElementPosition(target) {\n const iFramePosition = target.getBoundingClientRect()\n\n getPagePosition(iframeId)\n\n return {\n x: Number(iFramePosition.left) + Number(page.position.x),\n y: Number(iFramePosition.top) + Number(page.position.y),\n }\n }\n\n function scrollBy() {\n const x = messageData.width\n const y = messageData.height\n\n // Check for V4 as well\n const target = window.parentIframe || window.parentIFrame || window\n\n info(\n iframeId,\n `scrollBy: x: %c${x}%c y: %c${y}`,\n HIGHLIGHT,\n FOREGROUND,\n HIGHLIGHT,\n )\n\n target.scrollBy(x, y)\n }\n\n function scrollRequestFromChild(addOffset) {\n /* istanbul ignore next */ // Not testable in Karma\n function reposition(newPosition) {\n page.position = newPosition\n scrollTo(iframeId)\n }\n\n function scrollParent(target, newPosition) {\n setTimeout(() =>\n target[`scrollTo${addOffset ? 'Offset' : ''}`](\n newPosition.x,\n newPosition.y,\n ),\n )\n }\n\n const calcOffset = (messageData, offset) => ({\n x: messageData.width + offset.x,\n y: messageData.height + offset.y,\n })\n\n const offset = addOffset\n ? getElementPosition(messageData.iframe)\n : { x: 0, y: 0 }\n\n info(\n iframeId,\n `Reposition requested (offset x:%c${offset.x}%c y:%c${offset.y})`,\n HIGHLIGHT,\n FOREGROUND,\n HIGHLIGHT,\n )\n\n const newPosition = calcOffset(messageData, offset)\n\n // Check for V4 as well\n const target = window.parentIframe || window.parentIFrame\n\n if (target) scrollParent(target, newPosition)\n else reposition(newPosition)\n }\n\n function scrollTo(iframeId) {\n const { x, y } = page.position\n const iframe = settings[iframeId]?.iframe\n\n if (on('onScroll', { iframe, top: y, left: x, x, y }) === false) {\n unsetPagePosition()\n return\n }\n\n setPagePosition(iframeId)\n }\n\n function findTarget(location) {\n function jumpToTarget() {\n const jumpPosition = getElementPosition(target)\n\n info(iframeId, `Moving to in page link: %c#${hash}`, HIGHLIGHT)\n\n page.position = {\n x: jumpPosition.x,\n y: jumpPosition.y,\n }\n\n scrollTo(iframeId)\n window.location.hash = hash\n }\n\n function jumpToParent() {\n // Check for V4 as well\n const target = window.parentIframe || window.parentIFrame\n\n if (target) {\n target.moveToAnchor(hash)\n return\n }\n\n log(iframeId, `In page link #${hash} not found`)\n }\n\n const hash = location.split('#')[1] || ''\n const hashData = decodeURIComponent(hash)\n\n let target =\n document.getElementById(hashData) ||\n document.getElementsByName(hashData)[0]\n\n if (target) {\n jumpToTarget()\n return\n }\n\n if (window.top === window.self) {\n log(iframeId, `In page link #${hash} not found`)\n return\n }\n\n jumpToParent()\n }\n\n function onMouse(event) {\n let mousePos = {}\n\n if (messageData.width === 0 && messageData.height === 0) {\n const coords = getMsgBody(9).split(':')\n mousePos = {\n x: coords[1],\n y: coords[0],\n }\n } else {\n mousePos = {\n x: messageData.width,\n y: messageData.height,\n }\n }\n\n on(event, {\n iframe: messageData.iframe,\n screenX: Number(mousePos.x),\n screenY: Number(mousePos.y),\n type: messageData.type,\n })\n }\n\n const on = (funcName, val) => checkEvent(iframeId, funcName, val)\n\n function checkSameDomain(id) {\n try {\n settings[id].sameOrigin =\n !!settings[id]?.iframe?.contentWindow?.iframeChildListener\n } catch (error) {\n settings[id].sameOrigin = false\n }\n\n log(id, `sameOrigin: %c${settings[id].sameOrigin}`, HIGHLIGHT)\n }\n\n function checkVersion(version) {\n if (version === VERSION) return\n if (version === undefined) {\n advise(\n iframeId,\n `<rb>Legacy version detected in iframe</>\n\nDetected legacy version of child page script. It is recommended to update the page in the iframe to use <b>@iframe-resizer/child</>.\n\nSee <u>https://iframe-resizer.com/setup/#child-page-setup</> for more details.\n`,\n )\n return\n }\n log(\n iframeId,\n `Version mismatch (Child: %c${version}%c !== Parent: %c${VERSION})`,\n HIGHLIGHT,\n FOREGROUND,\n HIGHLIGHT,\n )\n }\n\n function setTitle(title, iframeId) {\n if (!settings[iframeId]?.syncTitle) return\n settings[iframeId].iframe.title = title\n info(iframeId, `Set iframe title attribute: %c${title}`, HIGHLIGHT)\n }\n\n function eventMsg() {\n const { height, iframe, msg, type, width } = messageData\n if (settings[iframeId]?.firstRun) firstRun()\n\n switch (type) {\n case CLOSE:\n closeIframe(iframe)\n break\n\n case MESSAGE:\n forwardMsgFromIframe(getMsgBody(6))\n break\n\n case MOUSE_ENTER:\n onMouse('onMouseEnter')\n break\n\n case MOUSE_LEAVE:\n onMouse('onMouseLeave')\n break\n\n case BEFORE_UNLOAD:\n info(iframeId, 'Ready state reset')\n settings[iframeId].initialised = false\n break\n\n case AUTO_RESIZE:\n settings[iframeId].autoResize = JSON.parse(getMsgBody(9))\n break\n\n case SCROLL_BY:\n scrollBy()\n break\n\n case SCROLL_TO:\n scrollRequestFromChild(false)\n break\n\n case SCROLL_TO_OFFSET:\n scrollRequestFromChild(true)\n break\n\n case PAGE_INFO:\n startPageInfoMonitor()\n break\n\n case PARENT_INFO:\n startParentInfoMonitor()\n break\n\n case PAGE_INFO_STOP:\n stopPageInfoMonitor()\n break\n\n case PARENT_INFO_STOP:\n stopParentInfoMonitor()\n break\n\n case IN_PAGE_LINK:\n findTarget(getMsgBody(9))\n break\n\n case TITLE:\n setTitle(msg, iframeId)\n break\n\n case RESET:\n resetIframe(messageData)\n break\n\n case INIT:\n resizeIframe()\n checkSameDomain(iframeId)\n checkVersion(msg)\n settings[iframeId].initialised = true\n on('onReady', iframe)\n break\n\n default:\n if (width === 0 && height === 0) {\n warn(\n iframeId,\n `Unsupported message received (${type}), this is likely due to the iframe containing a later ` +\n `version of iframe-resizer than the parent page`,\n )\n return\n }\n\n if (width === 0 || height === 0) {\n log(iframeId, 'Ignoring message with 0 height or width')\n return\n }\n\n // Recheck document.hidden here, as only Firefox\n // correctly supports this in the iframe\n if (document.hidden) {\n log(iframeId, 'Page hidden - ignored resize request')\n return\n }\n\n resizeIframe()\n }\n }\n\n function checkSettings(iframeId) {\n if (!settings[iframeId]) {\n throw new Error(\n `${messageData.type} No settings for ${iframeId}. Message was: ${msg}`,\n )\n }\n }\n\n const initFromIframe = (source) => (iframeId) => {\n const { initialised, postMessageTarget } = settings[iframeId]\n if (initialised || source !== postMessageTarget) return\n log(iframeId, 'iframe requested init')\n trigger(INIT_FROM_IFRAME, createOutgoingMsg(iframeId), iframeId)\n warnOnNoResponse(iframeId, settings)\n }\n\n const iFrameReadyMsgReceived = (source) =>\n Object.keys(settings).forEach(initFromIframe(source))\n\n function firstRun() {\n if (!settings[iframeId]) return\n log(iframeId, `First run for ${iframeId}`)\n checkMode(iframeId, messageData.mode)\n settings[iframeId].firstRun = false\n }\n\n function screenMessage(msg) {\n checkSettings(iframeId)\n\n if (!isMessageFromMetaParent()) {\n log(iframeId, `Received: %c${msg}`, HIGHLIGHT)\n\n if (checkIframeExists() && isMessageFromIframe()) {\n eventMsg()\n }\n }\n }\n\n let msg = event.data\n\n if (msg === '[iFrameResizerChild]Ready') {\n iFrameReadyMsgReceived(event.source)\n return\n }\n\n if (!isMessageForUs(msg)) {\n if (typeof msg !== 'string') return\n consoleEvent('parent', 'ignoredMessage')\n debug('parent', msg)\n return\n }\n\n const messageData = processMessage(msg)\n const { id, type } = messageData\n const iframeId = id\n\n if (!iframeId) {\n warn(\n '',\n 'iframeResizer received messageData without id, message was: ',\n msg,\n )\n return\n }\n\n consoleEvent(iframeId, type)\n errorBoundary(iframeId, screenMessage)(msg)\n}\n\nfunction checkEvent(iframeId, funcName, val) {\n let func = null\n let retVal = null\n\n if (settings[iframeId]) {\n func = settings[iframeId][funcName]\n\n if (typeof func === 'function')\n if (funcName === 'onBeforeClose' || funcName === 'onScroll') {\n try {\n retVal = func(val)\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error)\n warn(iframeId, `Error in ${funcName} callback`)\n }\n } else isolateUserCode(func, val)\n else\n throw new TypeError(\n `${funcName} on iFrame[${iframeId}] is not a function`,\n )\n }\n\n return retVal\n}\n\nfunction removeIframeListeners(iframe) {\n const { id } = iframe\n log(id, 'Disconnected from iframe')\n delete settings[id]\n delete iframe.iframeResizer\n}\n\nfunction closeIframe(iframe) {\n const { id } = iframe\n\n if (checkEvent(id, 'onBeforeClose', id) === false) {\n log(id, 'Close iframe cancelled by onBeforeClose')\n return\n }\n\n log(id, `Removing iFrame: %c${id}`, HIGHLIGHT)\n\n try {\n // Catch race condition error with React\n if (iframe.parentNode) {\n iframe.remove()\n }\n } catch (error) {\n warn(id, error)\n }\n\n checkEvent(id, 'onAfterClose', id)\n removeIframeListeners(iframe)\n}\n\nfunction getPagePosition(iframeId) {\n if (page.position !== null) return\n\n page.position = {\n x: window.scrollX,\n y: window.scrollY,\n }\n\n log(\n iframeId,\n `Get page position: %c${page.position.x}%c, %c${page.position.y}`,\n HIGHLIGHT,\n FOREGROUND,\n HIGHLIGHT,\n )\n}\n\nfunction unsetPagePosition() {\n page.position = null\n}\n\nfunction setPagePosition(iframeId) {\n if (page.position === null) return\n\n window.scrollTo(page.position.x, page.position.y)\n info(\n iframeId,\n `Set page position: %c${page.position.x}%c, %c${page.position.y}`,\n HIGHLIGHT,\n FOREGROUND,\n HIGHLIGHT,\n )\n unsetPagePosition()\n}\n\nfunction resetIframe(messageData) {\n log(\n messageData.id,\n `Size reset requested by ${messageData.type === INIT ? 'parent page' : 'child page'}`,\n )\n\n getPagePosition(messageData.id)\n setSize(messageData)\n trigger(RESET, RESET, messageData.id)\n}\n\nfunction setSize(messageData) {\n function setDimension(dimension) {\n const size = `${messageData[dimension]}px`\n messageData.iframe.style[dimension] = size\n info(id, `Set ${dimension}: %c${size}`, HIGHLIGHT)\n }\n\n const { id } = messageData\n const { sizeHeight, sizeWidth } = settings[id]\n\n if (sizeHeight) setDimension(HEIGHT)\n if (sizeWidth) setDimension(WIDTH)\n}\n\nconst filterMsg = (msg) =>\n msg\n .split(':')\n .filter((_, index) => index !== 19)\n .join(':')\n\nfunction trigger(calleeMsg, msg, id) {\n function logSent(route) {\n const displayMsg = calleeMsg in INIT_EVENTS ? filterMsg(msg) : msg\n info(id, route, HIGHLIGHT, FOREGROUND, HIGHLIGHT)\n info(id, `Message data: %c${displayMsg}`, HIGHLIGHT)\n }\n\n function postMessageToIframe() {\n const { iframe, postMessageTarget, sameOrigin, targetOrigin } = settings[id]\n\n if (sameOrigin) {\n try {\n iframe.contentWindow.iframeChildListener(MESSAGE_ID + msg)\n logSent(`Sending message to iframe %c${id}%c via same origin%c`)\n return\n } catch (error) {\n if (calleeMsg in INIT_EVENTS) {\n settings[id].sameOrigin = false\n log(id, 'New iframe does not support same origin')\n } else {\n warn(id, 'Same origin messaging failed, falling back to postMessage')\n }\n }\n }\n\n logSent(\n `Sending message to iframe: %c${id}%c targetOrigin: %c${targetOrigin}`,\n )\n\n postMessageTarget.postMessage(MESSAGE_ID + msg, targetOrigin)\n }\n\n function checkAndSend() {\n if (!settings[id]?.postMessageTarget) {\n warn(id, `Iframe(${id}) not found`)\n return\n }\n\n postMessageToIframe()\n }\n\n consoleEvent(id, calleeMsg)\n\n if (settings[id]) checkAndSend()\n}\n\nfunction createOutgoingMsg(iframeId) {\n const iframeSettings = settings[iframeId]\n\n return [\n iframeId,\n '8', // Backwards compatibility (PaddingV1)\n iframeSettings.sizeWidth,\n iframeSettings.log,\n '32', // Backwards compatibility (Interval)\n true, // Backwards compatibility (EnablePublicMethods)\n iframeSettings.autoResize,\n iframeSettings.bodyMargin,\n iframeSettings.heightCalculationMethod,\n iframeSettings.bodyBackground,\n iframeSettings.bodyPadding,\n iframeSettings.tolerance,\n iframeSettings.inPageLinks,\n 'child', // Backwards compatibility (resizeFrom)\n iframeSettings.widthCalculationMethod,\n iframeSettings.mouseEvents,\n iframeSettings.offsetHeight,\n iframeSettings.offsetWidth,\n iframeSettings.sizeHeight,\n iframeSettings.license,\n page.version,\n iframeSettings.mode,\n '', // iframeSettings.sizeSelector,\n iframeSettings.logExpand,\n ].join(':')\n}\n\nlet count = 0\nlet vAdvised = false\nlet vInfoDisable = false\n\nfunction checkMode(iframeId, childMode = -3) {\n if (vAdvised) return\n const mode = Math.max(settings[iframeId].mode, childMode)\n if (mode > settings[iframeId].mode) settings[iframeId].mode = mode\n if (mode < 0) {\n consoleClear(iframeId)\n if (!settings[iframeId].vAdvised)\n advise(iframeId || 'Parent', `${getModeData(mode + 2)}${getModeData(2)}`)\n settings[iframeId].vAdvised = true\n throw getModeData(mode + 2).replace(/<\\/?[a-z][^>]*>|<\\/>/gi, '')\n }\n if (!(mode > 0 && vInfoDisable)) {\n vInfo(`v${VERSION} (${getModeLabel(mode)})`, mode)\n }\n if (mode < 1) advise('Parent', getModeData(3))\n vAdvised = true\n}\n\nexport default (options) => (iframe) => {\n function newId() {\n let id = options?.id || defaults.id + count++\n\n if (document.getElementById(id) !== null) {\n id += count++\n }\n\n return id\n }\n\n function ensureHasId(iframeId) {\n if (iframeId && typeof iframeId !== 'string') {\n throw new TypeError('Invalid id for iFrame. Expected String')\n }\n\n if (iframeId === '' || !iframeId) {\n iframeId = newId()\n iframe.id = iframeId\n consoleEvent(iframeId, 'assignId')\n log(iframeId, `Added missing iframe ID: ${iframeId} (${iframe.src})`)\n }\n\n return iframeId\n }\n\n function setScrolling() {\n log(\n iframeId,\n `Iframe scrolling ${\n settings[iframeId]?.scrolling ? 'enabled' : 'disabled'\n } for ${iframeId}`,\n )\n\n iframe.style.overflow =\n settings[iframeId]?.scrolling === false ? 'hidden' : 'auto'\n\n switch (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 function setupBodyMarginValues() {\n const { bodyMargin } = settings[iframeId]\n\n if (typeof bodyMargin === 'number' || bodyMargin === '0') {\n settings[iframeId].bodyMargin = `${bodyMargin}px`\n }\n }\n\n function checkReset() {\n if (\n !(settings[iframeId]?.heightCalculationMethod in RESET_REQUIRED_METHODS)\n )\n return\n\n resetIframe({ iframe, height: MIN_SIZE, width: MIN_SIZE, type: INIT })\n }\n\n function setupIframeObject() {\n if (settings[iframeId]) {\n const { iframe } = settings[iframeId]\n const resizer = {\n close: closeIframe.bind(null, iframe),\n\n disconnect: removeIframeListeners.bind(null, iframe),\n\n removeListeners() {\n advise(\n iframeId,\n `<rb>Deprecated Method Name</>\n\nThe \\u001B[removeListeners()</> method has been renamed to \\u001B[disconnect()</>.\n`,\n )\n this.disconnect()\n },\n\n resize() {\n advise(\n iframeId,\n `<rb>Deprecated Method</>\n \nUse of the <b>resize()</> method from the parent page is deprecated and will be removed in a future version of <i>iframe-resizer</>. As their are no longer any edge cases that require triggering a resize from the parent page, it is recommended to remove this method from your code.`,\n )\n trigger.bind(null, 'Window resize', RESIZE, iframeId)\n },\n\n moveToAnchor(anchor) {\n typeAssert(anchor, 'string', 'moveToAnchor(anchor) anchor')\n trigger('Move to anchor', `moveToAnchor:${anchor}`, iframeId)\n },\n\n sendMessage(message) {\n message = JSON.stringify(message)\n trigger(MESSAGE, `${MESSAGE}:${message}`, iframeId)\n },\n }\n\n iframe.iframeResizer = resizer\n iframe.iFrameResizer = resizer\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(id, message) {\n const createIframeLoaded = (event) => () =>\n setTimeout(() => {\n if (!settings[id]) return\n if (settings[id].initialised === true) return\n trigger(event, message, id)\n warnOnNoResponse(id, settings)\n if (!settings[id].firstRun) checkReset()\n })\n\n const { waitForLoad } = settings[id]\n\n addEventListener(iframe, LOAD, createIframeLoaded(ONLOAD))\n\n if (waitForLoad === true) return\n\n const { src, srcdoc } = iframe\n\n if (!srcdoc && (src == null || src === '' || src === 'about:blank')) return\n\n createIframeLoaded(INIT)()\n }\n\n function checkOptions(options) {\n if (!options) return {}\n\n if (\n 'sizeWidth' in options ||\n 'sizeHeight' in options ||\n AUTO_RESIZE in options\n ) {\n advise(\n iframeId,\n `<rb>Deprecated Option</>\n\nThe <b>sizeWidth</>, <b>sizeHeight</> and <b>autoResize</> options have been replaced with new <b>direction</> option which expects values of <i>\"${VERTICAL}\"</>, <i>\"${HORIZONTAL}\"</> or <i>\"${NONE}\"</>.\n`,\n )\n }\n\n return options\n }\n\n function setDirection() {\n const { direction } = settings[iframeId]\n\n switch (direction) {\n case VERTICAL:\n break\n\n case HORIZONTAL:\n settings[iframeId].sizeHeight = false\n // eslint-disable-next-line no-fallthrough\n case BOTH:\n settings[iframeId].sizeWidth = true\n break\n\n case NONE:\n settings[iframeId].sizeWidth = false\n settings[iframeId].sizeHeight = false\n settings[iframeId].autoResize = false\n break\n\n default:\n throw new TypeError(\n iframeId,\n `Direction value of \"${direction}\" is not valid`,\n )\n }\n\n log(iframeId, `direction: %c${direction}`, HIGHLIGHT)\n }\n\n function setOffsetSize(offset) {\n if (!offset) return // No offset set or offset is zero\n\n if (settings[iframeId].direction === VERTICAL) {\n settings[iframeId].offsetHeight = offset\n log(iframeId, `Offset height: %c${offset}`, HIGHLIGHT)\n } else {\n settings[iframeId].offsetWidth = offset\n log(iframeId, `Offset width: %c${offset}`, HIGHLIGHT)\n }\n }\n\n const getTargetOrigin = (remoteHost) =>\n remoteHost === '' ||\n remoteHost.match(/^(about:blank|javascript:|file:\\/\\/)/) !== null\n ? '*'\n : remoteHost\n\n function getPostMessageTarget() {\n if (settings[iframeId].postMessageTarget === null)\n settings[iframeId].postMessageTarget = iframe.contentWindow\n }\n\n function preModeCheck() {\n if (vAdvised) return\n const { mode } = settings[iframeId]\n if (mode !== -1) checkMode(iframeId, mode)\n }\n\n function checkTitle(iframeId) {\n const title = settings[iframeId]?.iframe?.title\n return title === '' || title === undefined\n }\n\n function updateOptionName(oldName, newName) {\n if (hasOwn(settings[iframeId], oldName)) {\n advise(\n iframeId,\n `<rb>Deprecated option</>\\n\\nThe <b>${oldName}</> option has been renamed to <b>${newName}</>. Use of the old name will be removed in a future version of <i>iframe-resizer</>.`,\n )\n settings[iframeId][newName] = settings[iframeId][oldName]\n delete settings[iframeId][oldName]\n }\n }\n\n function checkWarningTimeout() {\n if (!settings[iframeId].warningTimeout) {\n info(iframeId, 'warningTimeout:%c disabled', HIGHLIGHT)\n }\n }\n\n const hasMouseEvents = (options) =>\n hasOwn(options, 'onMouseEnter') || hasOwn(options, 'onMouseLeave')\n\n function setTargetOrigin() {\n settings[iframeId].targetOrigin =\n settings[iframeId].checkOrigin === true\n ? getTargetOrigin(settings[iframeId].remoteHost)\n : '*'\n }\n\n function checkOffset(options) {\n if (options?.offset) {\n advise(\n iframeId,\n `<rb>Deprecated option</>\\n\\n The <b>offset</> option has been renamed to <b>offsetSize</>. Use of the old name will be removed in a future version of <i>iframe-resizer</>.`,\n )\n }\n }\n\n function processOptions(options) {\n settings[iframeId] = {\n ...settings[iframeId],\n iframe,\n remoteHost: iframe?.src.split('/').slice(0, 3).join('/'),\n ...defaults,\n ...checkOptions(options),\n mouseEvents: hasMouseEvents(options),\n mode: setMode(options),\n syncTitle: checkTitle(iframeId),\n }\n\n updateOptionName('offset', 'offsetSize')\n updateOptionName('onClose', 'onBeforeClose')\n updateOptionName('onClosed', 'onAfterClose')\n\n consoleEvent(iframeId, 'setup')\n setDirection()\n setOffsetSize(options?.offsetSize || options?.offset) // ignore zero offset\n checkOffset(options)\n checkWarningTimeout()\n getPostMessageTarget()\n setTargetOrigin()\n }\n\n function setupIframe(options) {\n if (beenHere()) {\n warn(iframeId, `Ignored iframe (${iframeId}), already setup.`)\n return\n }\n\n processOptions(options)\n preModeCheck()\n setupEventListenersOnce()\n setScrolling()\n setupBodyMarginValues()\n init(iframeId, createOutgoingMsg(iframeId))\n setupIframeObject()\n log(iframeId, 'Setup complete')\n }\n\n function enableVInfo(options) {\n if (options?.log === -1) {\n options.log = false\n vInfoDisable = true\n }\n }\n\n function checkLocationSearch(options) {\n const { search } = window.location\n\n if (search.includes('ifrlog')) {\n options.log = COLLAPSE\n options.logExpand = search.includes('ifrlog=expanded')\n }\n }\n\n function startLogging(iframeId, options) {\n const isLogEnabled = hasOwn(options, 'log')\n const isLogString = typeof options.log === 'string'\n const enabled = isLogEnabled\n ? isLogString\n ? true\n : options.log\n : defaults.log\n\n if (!hasOwn(options, 'logExpand')) {\n options.logExpand =\n isLogEnabled && isLogString\n ? options.log === EXPAND\n : defaults.logExpand\n }\n\n enableVInfo(options)\n setupConsole({\n enabled,\n expand: options.logExpand,\n iframeId,\n })\n\n if (isLogString && !(options.log in LOG_OPTIONS))\n error(\n iframeId,\n 'Invalid value for options.log: Accepted values are \"expanded\" and \"collapsed\"',\n )\n\n options.log = enabled\n }\n\n const beenHere = () => 'iframeResizer' in iframe\n\n const iframeId = ensureHasId(iframe.id)\n\n if (typeof options !== 'object') {\n throw new TypeError('Options is not an object')\n }\n\n checkLocationSearch(options)\n startLogging(iframeId, options)\n errorBoundary(iframeId, setupIframe)(options)\n\n return iframe?.iframeResizer\n}\n\nfunction sendTriggerMsg(eventName, event) {\n function triggerEnabledIframe(iframeId) {\n if (isIframeResizeEnabled(iframeId)) {\n trigger(eventName, event, iframeId)\n }\n }\n\n const isIframeResizeEnabled = (iframeId) =>\n settings[iframeId]?.autoResize && !settings[iframeId]?.firstRun\n\n Object.keys(settings).forEach(triggerEnabledIframe)\n}\n\nfunction tabVisible() {\n if (document.hidden === false) {\n consoleEvent('document', 'visibilityChange')\n log(\n 'document',\n 'Visibility Change:',\n document.hidden ? 'hidden' : 'visible',\n )\n sendTriggerMsg('tabVisible', RESIZE)\n }\n}\n\nconst setupEventListenersOnce = once(() => {\n addEventListener(window, MESSAGE, iframeListener)\n addEventListener(document, 'visibilitychange', tabVisible)\n window.iframeParentListener = (data) =>\n setTimeout(() => iframeListener({ data, sameOrigin: true }))\n})\n"],"names":["VERSION","AUTO_RESIZE","INIT","INIT_FROM_IFRAME","LOAD","MESSAGE","ONLOAD","PAGE_INFO","PARENT_INFO","RESET","RESIZE","SCROLL","NONE","VERTICAL","HORIZONTAL","MESSAGE_ID","RESET_REQUIRED_METHODS","Object","freeze","max","scroll","bodyScroll","documentElementScroll","INIT_EVENTS","EXPAND","COLLAPSE","LOG_OPTIONS","addEventListener","el","evt","func","options","removeEventListener","l","p","y","z","t","length","codePointAt","Math","imul","toString","replace","String","fromCodePoint","x","fromEntries","map","getModeData","setMode","u","split","v","hasOwn","o","k","prototype","hasOwnProperty","call","id","formatAdvise","formatLogMsg","msg","window","chrome","replaceAll","s","remove","settings","createConsoleGroup","mod","acg","__esModule","default","consoleEnabled","parent","expand","label","getMyId","iframeId","top","self","output","type","args","console","outputSwitched","log","isLogEnabled","info","debug","warn","error","event","purge","errorBoundary","advise","identity","queueMicrotask","join","deprecateAdvise","change","old","replacement","toLowerCase","deprecate","deprecateOption","warnOnNoResponse","msgTimeout","warningTimeout","clearTimeout","setTimeout","undefined","initialised","loadErrorShown","iframe","waitForLoad","sandbox","hasSandbox","contains","showWarning","defaults","autoResize","bodyBackground","bodyMargin","bodyPadding","checkOrigin","direction","firstRun","inPageLinks","heightCalculationMethod","logExpand","license","mouseEvents","offsetHeight","offsetWidth","postMessageTarget","sameDomain","scrolling","sizeHeight","sizeWidth","tolerance","widthCalculationMethod","onBeforeClose","onAfterClose","onInit","onMessage","onMouseEnter","onMouseLeave","onReady","messageData","onResized","onScroll","page","position","version","iframeListener","resizeIframe","setSize","setPagePosition","on","getPaddingEnds","compStyle","boxSizing","paddingTop","parseInt","paddingBottom","getBorderEnds","borderTopWidth","borderBottomWidth","getMsgBody","offset","slice","indexOf","sendInfoToIframe","infoFunction","requestType","gate","frameId","trigger","requestAnimationFrame","startInfoMonitor","pending","sendInfo","stop","sendScroll","sendResize","setListener","listener","consoleEvent","pageObserver","disconnect","iframeObserver","ResizeObserver","observe","document","body","attributes","childList","subtree","stopInfoMonitor","stopFunction","sendPageInfoToIframe","bodyPosition","getBoundingClientRect","iFramePosition","scrollY","scrollX","innerHeight","innerWidth","clientHeight","clientWidth","documentElement","JSON","stringify","iframeHeight","height","iframeWidth","width","offsetTop","offsetLeft","left","scrollTop","scrollLeft","documentHeight","documentWidth","windowHeight","windowWidth","sendParentInfoToIframe","scrollWidth","scrollHeight","pageLeft","pageTop","scale","visualViewport","viewport","startPageInfoMonitor","startParentInfoMonitor","stopPageInfoMonitor","stopParentInfoMonitor","getElementPosition","target","getPagePosition","Number","scrollRequestFromChild","addOffset","HIGHLIGHT","FOREGROUND","newPosition","calcOffset","parentIframe","parentIFrame","scrollParent","scrollTo","reposition","unsetPagePosition","onMouse","mousePos","coords","screenX","screenY","funcName","val","checkEvent","eventMsg","checkMode","mode","closeIframe","msgBody","message","parse","scrollBy","location","hash","hashData","decodeURIComponent","getElementById","getElementsByName","jumpPosition","jumpToTarget","moveToAnchor","jumpToParent","findTarget","title","syncTitle","setTitle","resetIframe","sameOrigin","contentWindow","iframeChildListener","checkSameDomain","hidden","checkSettings","Error","iFrameReadyMsgReceived","source","keys","forEach","createOutgoingMsg","initFromIframe","data","isMessageForUs","getComputedStyle","processMessage","retCode","true","false","isMessageFromMetaParent","origin","constructor","Array","i","checkList","remoteHost","checkSingle","isMessageFromIframe","retVal","TypeError","isolateUserCode","removeIframeListeners","iframeResizer","parentNode","setDimension","dimension","size","style","filterMsg","filter","_","index","calleeMsg","logSent","route","displayMsg","targetOrigin","postMessage","postMessageToIframe","iframeSettings","count","vAdvised","vInfoDisable","childMode","consoleClear","ver","NORMAL","vInfo","getModeLabel","tabVisible","eventName","isIframeResizeEnabled","sendTriggerMsg","setupEventListenersOnce","fn","done","Reflect","apply","this","arguments","once","iframeParentListener","setupIframeObject","resizer","close","bind","removeListeners","resize","anchor","value","string","charAt","toUpperCase","typeAssert","sendMessage","iFrameResizer","init","createIframeLoaded","src","srcdoc","checkOptions","checkTitle","updateOptionName","oldName","newName","hasMouseEvents","processOptions","setDirection","offsetSize","checkOffset","match","beenHere","newId","ensureHasId","search","includes","checkLocationSearch","isLogString","enabled","enableVInfo","consoleGroup","setupConsole","startLogging","preModeCheck","overflow","setScrolling","setupBodyMarginValues"],"mappings":"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"}