UNPKG

@iframe-resizer/child

Version:

Keep iframes sized to their content.

21 lines (18 loc) 28.9 kB
/*! * @preserve * * @module iframe-resizer/child 5.5.7 (esm) - 2025-09-23 * * @license GPL-3.0 for non-commercial use only. * For commercial use, you must purchase a license from * https://iframe-resizer.com/pricing * * @description Keep same and cross domain iFrames sized to their content * * @author David J. Bradshaw <info@iframe-resizer.com> * * @see {@link https://iframe-resizer.com} * * @copyright (c) 2013 - 2025, David J. Bradshaw. All rights reserved. */ import e,{NORMAL as t,HIGHLIGHT as n,FOREGROUND as o,ITALIC as r,BOLD as a}from"auto-console-group";const i="5.5.7",s="iframeResizer",l=":",c="init",d="message",u="pageHide",m="pageInfo",f="parentInfo",p="scrollToOffset",h="title",y=10,g="data-iframe-size",b="data-iframe-overflowed",v="data-iframe-ignore",z="height",w="width",$="offset",S="offsetSize",O="string",E="number",M="object",k="function",j="auto",x="readystatechange",T="bottom",A="right",I="autoResizeEnabled",N=Symbol("sizeChanged"),C="manualResize",P="parentResize",R={[C]:1,[P]:1},B="setOffsetSize",L="resizeObserver",q="overflowObserver",D="mutationObserver",W="visibilityObserver",F="[iFrameSizer]",V=new Set(["head","body","meta","base","title","script","link","style","map","area","option","optgroup","template","track","wbr","nobr"]),H=(e,t,n,o)=>e.addEventListener(t,n,o||!1),U=e=>{if(!e)return"";let t=-559038744,n=1103547984;for(let o,r=0;r<e.length;r++)o=e.codePointAt(r),t=Math.imul(t^o,2246822519),n=Math.imul(n^o,3266489917);return t^=Math.imul(t^n>>>15,1935289751),n^=Math.imul(n^t>>>15,3405138345),t^=n>>>16,n^=t>>>16,(2097152*(n>>>0)+(t>>>11)).toString(36)},Z=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"],_=["<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.","Pu whnl spurpun ylxbpylz h Wyvmlzzpvuhs vy Ibzpulzz spjluzl. Wslhzl zll <b>oaawz://pmyhtl-ylzpgly.jvt/wypjpun</> mvy tvyl klahpsz."],Q=["NWSc3","zvsv","wyv","ibzpulzz","vlt"],Y=Object.fromEntries(["2cgs7fdf4xb","1c9ctcccr4z","1q2pc4eebgb","ueokt0969w","w2zxchhgqz","1umuxblj2e5"].map((e,t)=>[e,Math.max(0,t-1)])),G=e=>Z(_[e]),X=e=>{const t=e[Z(J[0])]||e[Z(J[1])]||e[Z(J[2])];if(!t)return-1;const n=t.split("-");let o=function(e=""){let t=-2;const n=U(Z(e));return n in Y&&(t=Y[n]),t}(n[0]);return 0===o||(e=>e[2]===U(e[0]+e[1]))(n)||(o=-2),o},K=(e,...t)=>setTimeout(()=>e(...t),0),ee=e=>{let t=!1;return function(){return t?void 0:(t=!0,Reflect.apply(e,this,arguments))}},te=e=>e,ne=e=>Math.round(1e3*e)/1e3,oe=e=>e.charAt(0).toUpperCase()+e.slice(1),re=e=>""!=`${e}`&&void 0!==e,ae=e=>e();const ie=(e,t,n)=>{if(typeof e!==t)throw new TypeError(`${n} is not a ${oe(t)}`)};let se=!0,le=s;var ce;const de=(ce=e,ce?.__esModule?ce.default:ce)({label:`${s}(child)`,expand:!1});var ue;const me=(ue="log",(...e)=>!se||de[ue](...e));const{assert:fe,endAutoGroup:pe,error:he,errorBoundary:ye,event:ge,label:be,purge:ve,warn:ze}=de,we=e=>{return de.warn((t=te,e=>window.chrome?t(e.replaceAll("<br>","\n").replaceAll("<rb>","").replaceAll("</>","").replaceAll("<b>","").replaceAll("<i>","").replaceAll("<u>","")):t(e.replaceAll("<br>","\n").replaceAll(/<[/a-z]+>/gi,"")))(e));var t},$e=(e=>(t,n="renamed to")=>(o,r,a="",i="")=>e(i,`<rb>Deprecated ${t}(${o.replace("()","")})</>\n\nThe <b>${o}</> ${t.toLowerCase()} has been ${n} <b>${r}</>. ${a}Use of the old ${t.toLowerCase()} will be removed in a future version of <i>iframe-resizer</>.`))((e,t)=>we(t)),Se=$e("Method"),Oe=$e("Method","replaced with"),Ee=$e("Option"),Me=["min-height","min-width","max-height","max-width"],ke=new Set,je=(e,t)=>window.getComputedStyle(e).getPropertyValue(t),xe=(e,t)=>{return(n=je(e,t))&&"0px"!==n&&n!==j&&"none"!==n;var n};function Te({href:e}){ke.has(e)||ke.add(e)}const Ae=(e,t)=>function(e,t){const n=e.style[t];return n?{source:"an inline style attribute",value:n}:null}(e,t)||function(e,t){for(const n of document.styleSheets)try{for(const o of n.cssRules||[])if(o.selectorText&&e.matches(o.selectorText)){const e=o.style[t];if(e)return{source:"STYLE"===n.ownerNode.tagName?"an inline <style> block":`stylesheet (${n.href})`,value:e}}}catch(e){Te(n)}return{source:"cross-origin stylesheet",value:je(e,t)}}(e,t),Ie=(e,t)=>{const{source:n,value:o}=Ae(e,t),r=(e=>e.tagName?e.tagName.toLowerCase():"unknown")(e);we(`The <b>${t}</> CSS property is set to <b>${o}</> on the <b><${r}></> element via ${n}. This may cause issues with the correct operation of <i>iframe-resizer</>.\n\nIf you wish to restrict the size of the iframe, then you should set this property on the iframe element itself, not the content inside it.`)};function Ne(){for(const e of[document.documentElement,document.body])for(const t of Me)xe(e,t)&&Ie(e,t)}const Ce=e=>t=>void 0===t?void 0:e(t),Pe=Ce(e=>"true"===e),Re=Ce(Number),Be=e=>e=>{e.size},Le=((e="")=>t=>n=>{n.size>0&&he(`${t}Observer ${e}:`,...Array.from(n).flatMap(e=>["\n",e]))})("already attached"),qe=e=>e=>{e.size},De=(e,o=!0)=>r=>{r>0&&me(`${o?"At":"De"}tached ${e}Observer ${o?"to":"from"} %c${r}%c element${1===r?"":"s"}`,n,t)},We=(e,t,n,o)=>{const r=qe(e);return e=>{const a=new Set;let i=0;for(const o of e)n.has(o)&&(t.unobserve(o),n.delete(o),a.add(o),i+=1);r(a),o(i),a.clear()}},Fe=new Set,Ve=new Set,He=new Set,Ue=[],Ze={attributes:!0,attributeFilter:[v,g],attributeOldValue:!1,characterData:!1,characterDataOldValue:!1,childList:!0,subtree:!0};let Je,_e=1,Qe=!1,Ye=0;const Ge=e=>{e.size},Xe=e=>{e.size},Ke=e=>{e.size},et=e=>e.nodeType!==Node.ELEMENT_NODE||V.has(e.tagName.toLowerCase());function tt(e){const t=e.addedNodes;for(const e of t)et(e)||Fe.add(e)}function nt(e){const t=e.removedNodes;for(const e of t)et(e)||(Fe.has(e)?(Fe.delete(e),He.add(e)):Ve.add(e))}const ot=e=>{me("Mutations:",e);for(const t of e)tt(t),nt(t);Ge(Fe),Xe(Ve),Ke(He),He.clear()};const rt=e=>()=>{const t=performance.now(),r=t-Ye,a=16*_e+++2;if(r>a&&r<200)return ge("mutationThrottled"),me("Update delayed due to heavy workload on the callStack"),me(`EventLoop busy time: %c${ne(r)}ms %c> Max wait: %c${a-2}ms`,n,o,n),setTimeout(Je,16*_e),void(Ye=t);_e=1,Ue.forEach(ot),Ue.length=0,Qe=!1,Ve.size,Fe.size,e({addedNodes:Fe,removedNodes:Ve}),Fe.clear(),Ve.clear()};function at(e){Ue.push(e),Qe||(Ye=performance.now(),Qe=!0,requestAnimationFrame(Je))}function it(e){const t=new window.MutationObserver(at),n=document.body||document.documentElement;return Je=rt(e),t.observe(n,Ze),me("Attached MutationObserver to body"),{...t,disconnect:()=>{Fe.clear(),Ve.clear(),Ue.length=0,t.disconnect(),me("Detached MutationObserver")}}}const st="Overflow",lt=De(st),ct=De(st,!1),dt=Be(st),ut=Le(st),mt=e=>e.hidden||null===e.offsetParent||"none"===e.style.display,ft=(e,t)=>{const n=t.side,o={root:t.root,rootMargin:"0px",threshold:1},r=window?.requestAnimationFrame||te,a=(t=!1)=>e(t),i=(e,t)=>0===e||e>t[n],s=(e,t)=>e.toggleAttribute(b,t);const l=new IntersectionObserver(function(e){for(const t of e){const{boundingClientRect:e,rootBounds:o,target:r}=t;if(!o)continue;const a=e[n],l=i(a,o)&&!mt(r);s(r,l)}r(a)},o),c=new WeakSet;return{attachObservers:function(e){const t=new Set,n=new Set;let o=0;for(const r of e)r.nodeType===Node.ELEMENT_NODE&&(c.has(r)?t.add(r):(l.observe(r),c.add(r),n.add(r),o+=1));ut(t),dt(n),lt(o),n.clear(),t.clear()},detachObservers:We(st,l,c,ct),disconnect:()=>{l.disconnect(),me("Detached OverflowObserver")}}},pt="--ifr-start",ht="--ifr-end",yt="--ifr-measure",gt=[];let bt,vt={},zt=0;function wt(){try{performance.clearMarks(pt),performance.clearMarks(ht),performance.clearMeasures(yt)}catch{}}function $t(e){e.getEntries().forEach(e=>{if(e.name===ht)try{const{duration:t}=performance.measure(yt,pt,ht);vt=e.detail,gt.push(t),gt.length>100&&gt.shift()}catch{}})}function St(){me("Attached PerformanceObserver to page");const e=new PerformanceObserver($t);return e.observe({entryTypes:["mark"]}),bt=setInterval(()=>{if(gt.length<10)return;if(vt.hasTags&&vt.len<25)return;gt.sort();const e=Math.min(gt.reduce((e,t)=>e+t,0)/gt.length,gt[Math.floor(gt.length/2)]),t=ne(e);t>zt&&(zt=t,ge("performanceObserver")),wt(),e<=4||(clearInterval(bt),we(`<rb>Performance Warning</>\n\nCalculating the page size is taking an excessive amount of time (${ne(e)}ms).\n\nTo improve performance add the <b>data-iframe-size</> attribute to the ${vt.Side.toLowerCase()} most element on the page. For more details see: <u>https://iframe-resizer.com/perf</>.`))},5e3),{disconnect:()=>{wt(),clearInterval(bt),e.disconnect(),me("Detached PerformanceObserver")}}}const Ot="Resize",Et=De(Ot),Mt=De(Ot,!1),kt=Be(Ot),jt=Le(Ot),xt=new WeakSet,Tt=new Set,At=new Set;let It;function Nt(e){let t=0;for(const n of e){if(n.nodeType!==Node.ELEMENT_NODE)continue;const e=getComputedStyle(n)?.position;""!==e&&"static"!==e&&(xt.has(n)?Tt.add(n):(It.observe(n),xt.add(n),At.add(n),t+=1))}jt(Tt),kt(At),Et(t),At.clear(),Tt.clear()}function Ct(e){const t=new IntersectionObserver(t=>e(t[0].isIntersecting),{threshold:0}),n=document.documentElement;return t.observe(n),me("Attached VisibilityObserver to page"),{disconnect:()=>{t.disconnect(),me("Detached VisibilityObserver")}}}const Pt=e=>(t,n)=>{if(n in t){if(typeof t[n]===e)return t[n];throw new TypeError(`${n} is not a ${e}.`)}},Rt=Pt(k),Bt=Pt(E),Lt=Pt(O);"undefined"!=typeof window&&function(){const e={height:()=>(ze("Custom height calculation function not defined"),In.auto()),width:()=>(ze("Custom width calculation function not defined"),Nn.auto())},U={bodyOffset:1,bodyScroll:1,offset:1,documentElementOffset:1,documentElementScroll:1,boundingClientRect:1,max:1,min:1,grow:1,lowestElement:1},_={},Y=j,ne=[],ce="scroll";let ue,$e,Me,ke,je,xe,Te,Ae=!0,Ie="",Ce=0,Be="",Le="",qe=!1,De=!0,Fe=!1,Ve=!0,He=!1,Ue=!1,Ze=!0,Je=!1,_e=1,Qe=Y,Ye="",Ge=!0,Xe={},Ke=!1,et=!1,tt=!1,nt=0,ot=!1,rt=0,at=0,st=new Set,lt="",ct="child",dt=!1,ut="",mt=[],yt=window.parent,gt="*",bt=0,vt=!1,zt=1,wt=ce,$t=window,Et=()=>{ze("onMessage function not defined")},kt=()=>{},jt=null,Tt=null;function At(t){var o;!function(e){lt=e[0]??lt,Ce=Re(e[1])??Ce,Fe=Pe(e[2])??Fe,tt=Pe(e[3])??tt,Ae=Pe(e[6])??Ae,Be=e[7]??Be,Qe=e[8]??Qe,Ie=e[9]??Ie,Le=e[10]??Le,bt=Re(e[11])??bt,Xe.enable=Pe(e[12])??!1,ct=e[13]??ct,wt=e[14]??wt,ot=Pe(e[15])??ot,rt=Re(e[16])??rt,at=Re(e[17])??at,De=Pe(e[18])??De,ue=e[19]??ue,xe=e[20]??xe,nt=Re(e[21])??nt,et=Pe(e[23])??et}(t),le=(o={id:lt,enabled:tt,expand:et}).id||s,de.label(`${le}`),de.expand(o.expand),se=o.enabled,function(){function t(e){Te=Rt(e,"onBeforeResize")??Te,Et=Rt(e,"onMessage")??Et,kt=Rt(e,"onReady")??kt,typeof e?.offset===E&&(Ee($,S),De&&(rt=Bt(e,$)??rt),Fe&&(at=Bt(e,$)??at)),typeof e?.offsetSize===E&&(De&&(rt=Bt(e,S)??rt),Fe&&(at=Bt(e,S)??at)),$e=Lt(e,Z(J[0]))??$e,Ye=Lt(e,"ignoreSelector")??Ye,ut=Lt(e,"sizeSelector")??ut,gt=Lt(e,"targetOrigin")??gt,Qe=e?.heightCalculationMethod||Qe,wt=e?.widthCalculationMethod||wt}function o(t,n){return typeof t===k&&(we(`<rb>Deprecated Option(${n}CalculationMethod)</>\n\nThe use of <b>${n}CalculationMethod</> as a function is deprecated and will be removed in a future version of <i>iframe-resizer</>. Please use the new <b>onBeforeResize</> event handler instead.\n\nSee <u>https://iframe-resizer.com/api/child</> for more details.`),e[n]=t,t="custom"),t}if(1===nt)return;const r=window.iframeResizer||window.iFrameResizer;typeof r===M&&(t(r),Qe=o(Qe,z),wt=o(wt,w),me(`Set targetOrigin for parent: %c${gt}`,n))}(),[Ut,Jt,an,Vt,Zt,on,rn,tn,Ht,Wt,qe?te:Ne,Yt,un,dn,cn,Gt,()=>_t("background",Ie),()=>_t("padding",Le),qe?te:Xt,ln,sn,Sn,qt].forEach(e=>{try{e()}catch(e){if(nt<0)throw e;we("<rb>Error in setup function</>\n<i>iframe-resizer</> detected an error during setup.\n\nPlease report the following error message at <u>https://github.com/davidjbradshaw/iframe-resizer/issues</>"),he(e)}}),Dt(ee(kt)),Dn(c,"Init message from host page",void 0,void 0,`${i}:${nt}`),document.title&&""!==document.title&&Vn(0,0,h,document.title)}function Pt({persisted:e}){e||Vn(0,0,"beforeUnload"),ge(u),me("Page persisted:",e),e||ne.forEach(ae)}const qt=()=>H(window,u.toLowerCase(),Pt);function Dt(e){"complete"===document.readyState?K(e):H(document,x,()=>Dt(e))}function Wt(){mt=document.querySelectorAll(`[${g}]`),Je=mt.length>0}let Ft=0;function Vt(){const e=document.querySelectorAll(`*[${v}]`);return He=e.length>0,He&&e.length!==Ft&&(function(e){const n=1===e.length?"":"s";ze(`%c[${v}]%c found on %c${e.length}%c element${n}`,a,t,a,t)}(e),Ft=e.length),He}function Ht(){"BackCompat"===document.compatMode&&we("<rb>Quirks Mode Detected</>\n\nThis iframe is running in the browser's legacy <b>Quirks Mode</>, this may cause issues with the correct operation of <i>iframe-resizer</>. It is recommended that you switch to the modern <b>Standards Mode</>.\n\nFor more information see <u>https://iframe-resizer.com/quirks-mode</>.\n")}function Ut(){xe&&""!==xe&&"false"!==xe?xe!==i&&we(`<b>Version mismatch</>\n\nThe parent and child pages are running different versions of <i>iframe resizer</>.\n\nParent page: ${xe} - Child page: ${i}.\n`):we("<rb>Legacy version detected on parent page</>\n\nDetected legacy version of parent page script. It is recommended to update the parent page to use <b>@iframe-resizer/parent</>.\n\nSee <u>https://iframe-resizer.com/setup/</> for more details.\n")}function Zt(){try{dt=1===nt||"iframeParentListener"in window.parent}catch(e){}}function Jt(){Fe===De&&(qe=!0)}function _t(e,t){void 0!==t&&""!==t&&"null"!==t&&(document.body.style.setProperty(e,t),me(`Set body ${e}: %c${t}`,n))}function Qt(e,t,n){if(""!==n)for(const e of document.querySelectorAll(n))e.toggleAttribute(t,!0)}function Yt(){Qt(0,g,ut),Qt(0,v,Ye)}function Gt(){var e,t;void 0===Be&&(Be=`${Ce}px`),_t("margin",(e="margin",(t=Be).includes("-")&&(ze(`Negative CSS value ignored for ${e}`),t=""),t))}function Xt(){const e=e=>e.style.setProperty(z,j,"important");e(document.documentElement),e(document.body)}function Kt(e){({add(t){function n(){Dn(e.eventName,e.eventType)}_[t]=n,H(window,t,n,{passive:!0})},remove(e){const t=_[e];var n,o;delete _[e],n=e,o=t,window.removeEventListener(n,o,!1)}})[e.method](e.eventName)}function en(e){Kt({method:e,eventType:"After Print",eventName:"afterprint"}),Kt({method:e,eventType:"Before Print",eventName:"beforeprint"}),Kt({method:e,eventType:"Ready State Change",eventName:x})}function tn(){let e=!1;const t=t=>document.querySelectorAll(`[${t}]`).forEach(n=>{e=!0,n.removeAttribute(t),n.toggleAttribute(g,!0)});t("data-iframe-height"),t("data-iframe-width"),e&&we("<rb>Deprecated Attributes</>\n \nThe <b>data-iframe-height</> and <b>data-iframe-width</> attributes have been deprecated and replaced with the single <b>data-iframe-size</> attribute. Use of the old attributes will be removed in a future version of <i>iframe-resizer</>.")}function nn(e,t,n){const{label:o}=n;return t!==e&&(e in n||(ze(`${e} is not a valid option for ${o}CalculationMethod.`),e=t),e in U)&&we(`<rb>Deprecated ${o}CalculationMethod (${e})</>\n\nThis version of <i>iframe-resizer</> can auto detect the most suitable ${o} calculation method. It is recommended that you ${xe?"remove this option.":`set this option to <b>'auto'</> when using an older version of <i>iframe-resizer</> on the parent page. This can be done on the child page by adding the following code:\n \nwindow.iframeResizer = {\n license: 'xxxx',\n ${o}CalculationMethod: AUTO,\n}\n`}\n`),e}function on(){Qe=nn(Qe,Y,In)}function rn(){wt=nn(wt,ce,Nn)}function an(){const e=nt,n=X({key:ue}),o=X({key:$e});if(nt=Math.max(n,o),nt<0){if(nt=Math.min(n,o),ve(),we(`${G(nt+2)}${G(2)}`),re(xe))throw G(nt+2).replace(/<\/?[a-z][^>]*>|<\/>/gi,"")}else(!re(xe)||e>-1&&nt>e)&&(sessionStorage.getItem("ifr")!==i&&function(e,n){console.info(`${le} %ciframe-resizer ${e}`,se||n<1?"font-weight: bold;":t)}(`v${i} (${(e=>Z(Q[e]))(nt)})`,nt),nt<2&&we(G(3)),sessionStorage.setItem("ifr",i))}function sn(){en("add"),ne.push(()=>en("remove"))}function ln(){const e=document.createElement("div");e.style.clear="both",e.style.display="block",e.style.height="0",document.body.append(e)}function cn(){function e(e){const t=e.getBoundingClientRect(),n={x:document.documentElement.scrollLeft,y:document.documentElement.scrollTop};return{x:parseInt(t.left,y)+parseInt(n.x,y),y:parseInt(t.top,y)+parseInt(n.y,y)}}function t(t){const n=t.split("#")[1]||t,o=decodeURIComponent(n),r=document.getElementById(o)||document.getElementsByName(o)[0];void 0===r?Vn(0,0,"inPageLink",`#${n}`):function(t){const n=e(t);Vn(n.y,n.x,p)}(r)}function n(){const{hash:e,href:n}=window.location;""!==e&&"#"!==e&&t(n)}const{enable:o}=Xe;o&&(1===nt?we(G(5)):(function(){for(const e of document.querySelectorAll('a[href^="#"]'))"#"!==e.getAttribute("href")&&H(e,"click",n=>{n.preventDefault(),t(e.getAttribute("href"))})}(),H(window,"hashchange",n),setTimeout(n,128))),Xe={...Xe,findTarget:t}}function dn(){function e(e){Vn(0,0,e.type,`${e.screenY}:${e.screenX}`)}function t(t,n){H(window.document,t,e)}!0===ot&&(t("mouseenter"),t("mouseleave"))}function un(){1!==nt&&($t.parentIframe=Object.freeze({autoResize:e=>(ie(e,"boolean","parentIframe.autoResize(enable) enable"),!1===Fe&&!1===De?(ge(I),we("Auto Resize can not be changed when <b>direction</> is set to 'none'."),!1):(!0===e&&!1===Ae?(Ae=!0,queueMicrotask(()=>Dn(I,"Auto Resize enabled"))):!1===e&&!0===Ae&&(Ae=!1),Vn(0,0,"autoResize",JSON.stringify(Ae)),Ae)),close(){Vn(0,0,"close")},getId:()=>lt,getOrigin:()=>(ge("getOrigin"),Se("getOrigin()","getParentOrigin()"),Me),getParentOrigin:()=>Me,getPageInfo(e){if(typeof e===k)return jt=e,Vn(0,0,m),void Oe("getPageInfo()","getParentProps()","See <u>https://iframe-resizer.com/upgrade</> for details. ");jt=null,Vn(0,0,"pageInfoStop")},getParentProps:e=>(ie(e,k,"parentIframe.getParentProps(callback) callback"),Tt=e,Vn(0,0,f),()=>{Tt=null,Vn(0,0,"parentInfoStop")}),getParentProperties(e){Se("getParentProperties()","getParentProps()"),this.getParentProps(e)},moveToAnchor(e){ie(e,O,"parentIframe.moveToAnchor(anchor) anchor"),Xe.findTarget(e)},reset(){!function(){const e=Qe;Qe=Y,vt||(vt=!0,requestAnimationFrame(()=>{vt=!1})),Wn("reset"),Qe=e}()},setOffsetSize(e){ie(e,E,"parentIframe.setOffsetSize(offset) offset"),rt=e,at=e,Dn(B,`parentIframe.setOffsetSize(${e})`)},scrollBy(e,t){ie(e,E,"parentIframe.scrollBy(x, y) x"),ie(t,E,"parentIframe.scrollBy(x, y) y"),Vn(t,e,"scrollBy")},scrollTo(e,t){ie(e,E,"parentIframe.scrollTo(x, y) x"),ie(t,E,"parentIframe.scrollTo(x, y) y"),Vn(t,e,"scrollTo")},scrollToOffset(e,t){ie(e,E,"parentIframe.scrollToOffset(x, y) x"),ie(t,E,"parentIframe.scrollToOffset(x, y) y"),Vn(t,e,p)},sendMessage(e,t){t&&ie(t,O,"parentIframe.sendMessage(msg, targetOrigin) targetOrigin"),Vn(0,0,d,JSON.stringify(e),t)},setHeightCalculationMethod(e){Qe=e,on()},setWidthCalculationMethod(e){wt=e,rn()},setTargetOrigin(e){ie(e,O,"parentIframe.setTargetOrigin(targetOrigin) targetOrigin"),gt=e},resize(e,t){void 0!==e&&ie(e,E,"parentIframe.resize(customHeight, customWidth) customHeight"),void 0!==t&&ie(t,E,"parentIframe.resize(customHeight, customWidth) customWidth"),Dn(C,`parentIframe.resize(${e||""}${t?`,${t}`:""})`,e,t)},size(e,t){Se("size()","resize()"),this.resize(e,t)}}),$t.parentIFrame=$t.parentIframe)}let mn=new Set;function fn(){const e=document.querySelectorAll(`[${b}]`);st=function(e){const t=new Set,n=new Set;for(const o of e)o.closest(`[${v}]`)?n.add(o):t.add(o);return n.size>0&&queueMicrotask(()=>{ge("overflowIgnored"),me("Ignoring elements with [data-iframe-ignore] > *:\n",n),pe()}),t}(e),Ue=st.size>0,typeof Set.prototype.symmetricDifference===k&&(Ze=st.symmetricDifference(mn).size>0),mn=st}function pn(){switch(fn(),!0){case!Ze:return;case st.size>1:me("Overflowed Elements:",st);break;case Ue:break;default:me("No overflow detected")}Dn(q,"Overflow updated")}function hn(e){const t={root:document.documentElement,side:De?T:A};return ke=ft(pn,t),ke.attachObservers(e),ke}function yn(e){if(!Array.isArray(e)||0===e.length)return;const t=e[0].target;Dn(L,`Element resized <${function(e){switch(!0){case!re(e):return"";case re(e.id):return`${e.nodeName}#${e.id}`;case re(e.name):return`${e.nodeName} (${e.name}`;case re(e.className):return`${e.nodeName}.${e.className}`;default:return e.nodeName}}(t)}>`)}function gn(e){return It=new ResizeObserver(yn),It.observe(document.body),xt.add(document.body),me("Attached ResizeObserver to body"),je={attachObserverToNonStaticElements:Nt,detachObservers:We(Ot,It,xt,Mt),disconnect:()=>{It.disconnect(),me("Detached ResizeObserver")}},je.attachObserverToNonStaticElements(e),je}function bn(e){Ke=!e,Dn(W,"Visibility changed")}const vn=e=>{const t=new Set;for(const n of e){t.add(n);for(const e of kn(n))t.add(e)}return me("Inspecting:\n",t),t},zn=e=>{if(0===e.size)return;ge("addObservers");const t=vn(e);ke.attachObservers(t),je.attachObserverToNonStaticElements(t),pe()},wn=e=>{if(0===e.size)return;ge("removeObservers");const t=vn(e);ke.detachObservers(t),je.detachObservers(t),pe()};function $n(e){!function({addedNodes:e,removedNodes:t}){ge("contentMutated"),Yt(),Wt(),fn(),pe(),wn(t),zn(e)}(e),Dn(D,"Mutation Observed")}function Sn(){const e=kn(document.documentElement);var t;t=[it($n),hn(e),St(),gn(e),Ct(bn)],ne.push(...t.map(e=>e.disconnect))}function On(e){performance.mark(pt);const t=oe(e);let r=1,a=document.documentElement,i=Je?0:document.documentElement.getBoundingClientRect().bottom;const s=Je?mt:Ue?Array.from(st):kn(document.documentElement);for(const t of s)r=t.getBoundingClientRect()[e]+parseFloat(getComputedStyle(t).getPropertyValue(`margin-${e}`)),r>i&&(i=r,a=t);return me(`${t} position calculated from:`,a),me(`Checked %c${s.length}%c elements`,n,o),performance.mark(ht,{detail:{hasTags:Je,len:s.length,logging:tt,Side:t}}),i}const En=e=>[e.bodyOffset(),e.bodyScroll(),e.documentElementOffset(),e.documentElementScroll(),e.boundingClientRect()],Mn=`* ${Array.from(V).map(e=>`:not(${e})`).join("")}`,kn=e=>e.querySelectorAll(Mn),jn={height:0,width:0},xn={height:0,width:0},Tn=[n,o,n];function An(e){function t(){return xn[r]=a,jn[r]=l,Math.max(a,1)}const o=e===In,r=e.label,a=e.boundingClientRect(),i=Math.ceil(a),s=Math.floor(a),l=(e=>e.documentElementScroll()+Math.max(0,e.getOffset()))(e),c=`HTML: %c${a}px %cPage: %c${l}px`;let d=1;switch(!0){case!e.enabled():return Math.max(l,1);case Je:me("Found element with data-iframe-size attribute"),d=e.taggedElement();break;case!Ue&&Ve&&0===xn[r]&&0===jn[r]:me(`Initial page size values: ${c}`,...Tn),d=t();break;case vt&&a===xn[r]&&l===jn[r]:me(`Size unchanged: ${c}`,...Tn),d=Math.max(a,l);break;case 0===a&&0!==l:me(`Page is hidden: ${c}`,...Tn),d=l;break;case!Ue&&a!==xn[r]&&l<=jn[r]:me(`New <html> size: ${c} `,...Tn),me(`Previous <html> size: %c${xn[r]}px`,n),d=t();break;case!o:d=e.taggedElement();break;case!Ue&&a<xn[r]:me(`<html> size decreased: ${c}`,...Tn),d=t();break;case l===s||l===i:me(`<html> size equals page size: ${c}`,...Tn),d=t();break;case a>l:me(`Page size < <html> size: ${c}`,...Tn),d=t();break;case Ue:me("Found elements possibly overflowing <html> "),d=e.taggedElement();break;default:me(`Using <html> size: ${c}`,...Tn),d=t()}return me(`Content ${r}: %c${d}px`,n),d+=function(e){const t=e.getOffset();return 0!==t&&me(`Page offsetSize: %c${t}px`,n),t}(e),Math.max(d,1)}const In={label:z,enabled:()=>De,getOffset:()=>rt,auto:()=>An(In),bodyOffset:()=>{const{body:e}=document,t=getComputedStyle(e);return e.offsetHeight+parseInt(t.marginTop,y)+parseInt(t.marginBottom,y)},bodyScroll:()=>document.body.scrollHeight,offset:()=>In.bodyOffset(),custom:()=>e.height(),documentElementOffset:()=>document.documentElement.offsetHeight,documentElementScroll:()=>document.documentElement.scrollHeight,boundingClientRect:()=>Math.max(document.documentElement.getBoundingClientRect().bottom,document.body.getBoundingClientRect().bottom),max:()=>Math.max(...En(In)),min:()=>Math.min(...En(In)),grow:()=>In.max(),lowestElement:()=>On(T),taggedElement:()=>On(T)},Nn={label:w,enabled:()=>Fe,getOffset:()=>at,auto:()=>An(Nn),bodyScroll:()=>document.body.scrollWidth,bodyOffset:()=>document.body.offsetWidth,custom:()=>e.width(),documentElementScroll:()=>document.documentElement.scrollWidth,documentElementOffset:()=>document.documentElement.offsetWidth,boundingClientRect:()=>Math.max(document.documentElement.getBoundingClientRect().right,document.body.getBoundingClientRect().right),max:()=>Math.max(...En(Nn)),min:()=>Math.min(...En(Nn)),rightMostElement:()=>On(A),scroll:()=>Math.max(Nn.bodyScroll(),Nn.documentElementScroll()),taggedElement:()=>On(A)},Cn=(e,t)=>!(Math.abs(e-t)<=bt);function Pn(e,t){const n=e[t](),o=e.enabled()&&void 0!==Te?function(e){const t=Te(e);if(void 0===t)throw new TypeError("No value returned from onBeforeResize(), expected a numeric value");if(Number.isNaN(t))throw new TypeError(`Invalid value returned from onBeforeResize(): ${t}, expected Number`);if(t<1)throw new RangeError(`Out of range value returned from onBeforeResize(): ${t}, must be at least 1`);return t}(n):n;return fe(o>=1,`New iframe ${e.label} is too small: ${o}, must be at least 1`),o}let Rn=!1;const Bn=ee(()=>we(G(4)));let Ln,qn=!1;const Dn=ye((e,t,n,o,r)=>{switch(ge(e),!0){case!0===Ke:if(!0===qn)break;qn=!0,Rn=!1,cancelAnimationFrame(Ln);break;case!0===Rn&&e!==q:ve();break;case!Ae&&!(e in R):me("Resizing disabled");break;default:qn=!1,Rn=!0,performance.now(),Ln=requestAnimationFrame(()=>{Rn=!1,ge("requestAnimationFrame")}),function(e,t,n,o,r){const a=n??Pn(In,Qe),i=o??Pn(Nn,wt);switch(De&&Cn(_e,a)||Fe&&Cn(zt,i)?N:e){case c:case I:case N:_e=a,zt=i;case B:Fn(_e,zt,e,r);break;case q:case D:case L:case W:ve();break;default:ve(),me("No change in content size detected")}}(e,0,n,o,r)}pe()});function Wn(e){_e=In[Qe](),zt=Nn[wt](),Vn(_e,zt,e)}function Fn(e,t,o,a,i){nt<-1||(void 0!==i||(i=gt),function(){const s=`${lt}:${e}:${t}:${o}${void 0===a?"":`:${a}`}`;if(dt)try{window.parent.iframeParentListener(F+s)}catch(e){if(1!==nt)throw e;return void Bn()}else yt.postMessage(F+s,i);me(`Sending message to parent page via ${dt?"sameOrigin":"postMessage"}: %c%c${s}`,r,n)}())}const Vn=ye((e,t,n,o,r)=>{ge(n),Fn(e,t,n,o,r),pe()}),Hn=ye(function(e){ge("onMessage");const{freeze:t}=Object,{parse:n}=JSON,o=e=>Vn(0,0,`${e}Stop`),r={init:function(){if("loading"===document.readyState)return;const t=e.data.slice(13).split(l);yt=e.source,Me=e.origin,At(t),Ve=!1,setTimeout(()=>{Ge=!1},128)},reset(){Ge||Wn("resetPage")},resize(){Dn(P,"Parent window requested size check")},moveToAnchor(){Xe.findTarget(i())},inPageLink(){this.moveToAnchor()},pageInfo(){const e=i();jt?K(jt,n(e)):o(m)},parentInfo(){const e=(r=i(),t(n(r)));var r;Tt?K(Tt,e):o(f)},message(){const e=i();K(Et,n(e))}},a=()=>e.data.split("]")[1].split(l)[0],i=()=>e.data.slice(e.data.indexOf(l)+1),s=()=>e.data.split(l)[2]in{true:1,false:1};function d(){const t=a();ge(t),t in r?r[t]():"iframeResize"in window||void 0!==window.jQuery&&""in window.jQuery.prototype||s()||ze(`Unexpected message (${e.data})`)}F===`${e.data}`.slice(0,13)&&function(){if(!1!==Ve)return s()?(be(a()),ge(c),void r.init()):void 0;d()}()});let Un=!1;const Zn=e=>e.postMessage("[iFrameResizerChild]Ready",window?.iframeResizer?.targetOrigin||"*");function Jn(){if("loading"===document.readyState||!Ve||Un)return;const{parent:e,top:t}=window;ge("ready"),Zn(e),e!==t&&Zn(t),Un=!0}"iframeChildListener"in window?ze("Already setup"):(window.iframeChildListener=e=>setTimeout(()=>Hn({data:e,sameOrigin:!0})),H(window,d,Hn),H(document,x,Jn),Jn())}();