;
(self.AMP=self.AMP||[]).push({m:1,v:"2601162341000",n:"amp-position-observer",ev:"0.1",l:!0,f:function(t,i){(()=>{var{isArray:i}=Array;function s(t,i){const s=[];let n=0;for(let h=0;h<t.length;h++){const r=t[h];i(r,h,t)?s.push(r):(n<h&&(t[n]=r),n++)}return n<t.length&&(t.length=n),s}var{hasOwnProperty:n,toString:h}=Object.prototype;function r(t){return 1==(null==(i=t)?void 0:i.nodeType)?t.tagName.toLowerCase()+(t.id?`#${t.id}`:""):t;var i}function e(t,i,n,h,e,o,l,u,c,a,f){return function(t,i,n="Assertion failed",h){var e,o;if(i)return i;t&&-1==n.indexOf(t)&&(n+=t);let l=3;const u=n.split("%s");let c=u.shift();const a=[c];for(;u.length;){const t=arguments[l++],i=u.shift();c+=r(t)+i,a.push(t,i.trim())}const f=new Error(c);throw f.messageArray=s(a,(t=>""!==t)),null===(e=(o=self).__AMP_REPORT_ERROR)||void 0===e||e.call(o,f),f}("​​​",t,i,n,h,e,o,l,u,c,a,f)}function o(t){return e(/^\d+(\.\d+)?(px|em|rem|vh|vw|vmin|vmax|cm|mm|q|in|pc|pt)$/.test(null!=t?t:""),"Invalid length value: %s",t),t}var l="inside",u="bottom";function c(t,i,s,n){return{left:t,top:i,width:s,height:n,bottom:i+n,right:t+s,x:t,y:i}}function a(t,i){return t.top<i.top?"top":t.bottom>i.bottom?u:l}function f(t,i){return!(!t||!i)&&t.left==i.left&&t.top==i.top&&t.width==i.width&&t.height==i.height}self.__AMP_LOG=self.__AMP_LOG||{user:null,dev:null,userForEmbed:null};var _=self.__AMP_LOG;function v(t,i){throw new Error("failed to call initLogConstructor")}function A(t){return _.user||(_.user=P()),function(t,i){return i&&i.ownerDocument.defaultView!=t}(_.user.win,t)?_.userForEmbed||(_.userForEmbed=P()):_.user}function P(t){return v()}function d(t,i,s,n,h,r,e,o,l,u,c){return t}function p(t,i,s,n,h,r,e,o,l,u,c){return A().assert(t,i,s,n,h,r,e,o,l,u,c)}function m(t,i){return b(t=function(t){return t.__AMP_TOP||(t.__AMP_TOP=t)}(t),i)}function R(t,i){return b(M(E(t)),i)}function E(t){return t.nodeType?(s=t,i=(s.ownerDocument||s).defaultView,m(i,"ampdoc")).getAmpDoc(t):t;var i,s}function M(t){const i=E(t);return i.isSingleDoc()?i.win:i}function b(t,i){d(V(t,i));const s=I(t)[i];return s.obj||(d(s.ctor),d(s.context),s.obj=new s.ctor(s.context),d(s.obj),s.context=null,s.resolve&&s.resolve(s.obj)),s.obj}function I(t){let i=t.__AMP_SERVICES;return i||(i=t.__AMP_SERVICES={}),i}function V(t,i){const s=t.__AMP_SERVICES&&t.__AMP_SERVICES[i];return!(!s||!s.ctor)}var T=t=>R(t,"viewport");function g(t){!function(t,i,s,n){const h=E(t),r=M(h);!function(t,i,s,n,h,r){const e=I(t);let o=e[s];o||(o=e[s]={obj:null,promise:null,resolve:null,reject:null,context:null,ctor:null,sharedInstance:!1}),o.ctor||(o.ctor=n,o.context=i,o.sharedInstance=!1,o.resolve&&b(t,s))}(r,h,i,class{constructor(t){this.zi=t,this.i=t.win,this.uA=[],this.Xr=m(this.i,"vsync"),this.Il=T(t),this.C_=[],this.cA=!1,this.fA=!1,this._A=!1,this.vA=function(t,i,s){let n=0,h=0,r=null;function e(){n=0;const o=s-(t.Date.now()-h);var l;o>0?n=t.setTimeout(e,o):(l=r,r=null,i.apply(null,l))}return function(...i){h=t.Date.now(),r=i,n||(n=t.setTimeout(e,s))}}(this.i,(()=>{this.cA=!1}),500)}observe(t,i,s){const n=new class{constructor(t,i,s,n){this.element=i,this.cn=n,this.fidelity=s,this.turn=0==s?Math.floor(4*Math.random()):0,this.AA=null,this.Il=T(t)}on(t){const i=this.AA;if(i&&f(i.positionRect,t.positionRect)&&f(i.viewportRect,t.viewportRect))return;d(t.positionRect);const s=t.positionRect;var n,h;t.relativePos=a(s,t.viewportRect),n=s,h=t.viewportRect,n.top<=h.bottom&&h.top<=n.bottom&&n.left<=h.right&&h.left<=n.right?(this.AA=t,this.cn(t)):this.AA&&(this.AA=null,t.positionRect=null,this.cn(t))}update(t){if(!t){if(0!=this.turn)return void this.turn--;0==this.fidelity&&(this.turn=4)}const i=this.Il.getSize(),s=c(0,0,i.width,i.height);this.Il.getClientRectAsync(this.element).then((t=>{this.on({positionRect:t,viewportRect:s,relativePos:null})}))}}(this.zi,t,i,s);return this.uA.push(n),this._A||this.PA(),n.update(),()=>{for(let t=0;t<this.uA.length;t++)if(this.uA[t]==n)return void this.dA(t)}}unobserve(t){for(let i=0;i<this.uA.length;i++)if(this.uA[i].element==t)return void this.dA(i);(_.dev||(_.dev=v())).error("POSITION_OBSERVER","cannot unobserve unobserved element")}dA(t){this.uA.splice(t,1),0==this.uA.length&&this.pA()}PA(){this._A=!0,this.C_.push(this.Il.onScroll((()=>{this.mA()}))),this.C_.push(this.Il.onResize((()=>{this.RA()})))}pA(){for(this._A=!1;this.C_.length;)this.C_.pop()()}updateAllEntries(t){for(let i=0;i<this.uA.length;i++)this.uA[i].update(t)}mA(){this.vA(),this.cA=!0,this.fA||this.EA()}RA(){this.updateAllEntries(!0)}EA(){this.updateAllEntries(),this.fA=!0,this.cA?this.Xr.measure((()=>{this.EA()})):this.fA=!1}})}(t,"position-observer")}function w(t,i,s,n){const h={detail:s};return Object.assign(h,n),new t.CustomEvent(i,h)}var x="amp-position-observer",y=class extends t.BaseElement{constructor(t){super(t),this.$c=null,this.nf=null,this.Il=null,this._s=!1,this.MA=0,this.bA=0,this.IA="0",this.VA="0",this.TA=0,this.gA=0,this.ef=null,this.wA=null,this.xA=null,this.yA=0,this.OA=0,this.SA=!1,this.$A=!1}buildCallback(){this.getAmpDoc().whenFirstVisible().then(this.sl.bind(this)),this.SA=this.element.hasAttribute("once")}sl(){this.ly(),this.$c=function(t,i){const s=M(E(t));return V(s,i)?b(s,i):null}(this.element,"action"),this.Il=T(this.element),this.FA(),this.getAmpDoc().whenReady().then((()=>{const t=this.jA();this.nf.observe(t,1,this.CA.bind(this))}))}kA(){const t=w(this.win,`${x}.enter`,{});this.$c.trigger(this.element,"enter",t,1)}zA(){const t=w(this.win,`${x}.exit`,{});this.$c.trigger(this.element,"exit",t,1)}qA(){const t=this.Il.getScrollTop(),i={"start-scroll-offset":t,"end-scroll-offset":t+this.OA,"initial-inview-percent":this.yA},s=w(this.win,`${x}.scroll`,{"percent":this.yA,"positionObserverData":i});this.$c.trigger(this.element,"scroll",s,1)}CA(t){if(this.SA&&this.$A)return;const i=this._s,s=this.ef&&this.ef.height;this.HA(t),this.ef=t.viewportRect,s!=t.viewportRect.height&&this.NA();const n=this.BA(t.viewportRect),{positionRect:h}=t;let r;h?(r=a(h,n),this.Hh(h,n,r)):(this._s=!1,r=t.relativePos),i&&!this._s&&(this.yA=r==u?0:1,this.qA(),this.zA(),this.$A=!0),!i&&this._s&&this.kA(),this._s&&(this.DA(h,n),this.qA())}Hh(t,i,s){if(s==l)return void(this._s=!0);const n="top"==s?this.MA:this.bA,h=t.height*n;this._s=s==u?t.top<=i.bottom-h:t.bottom>=i.top+h}DA(t,i){if(!t)return;const s=t.height*this.bA+t.height*this.MA,n=i.height+t.height-s,h=Math.abs(t.top-this.TA-(i.height-t.height*this.bA));this.yA=h/n,this.OA=n-h}ly(){const t=this.element.getAttribute("intersection-ratios");if(t){const i=t.trim().split(" ");this.MA=this.LA(i[0]),this.bA=this.MA,i[1]&&(this.bA=this.LA(i[1]))}const i=this.element.getAttribute("viewport-margins");if(i){const t=i.trim().split(" ");this.IA=t[0],this.VA=this.IA,t[1]&&(this.VA=t[1])}this.wA=this.element.getAttribute("target")}jA(){let t;return t=this.wA?A().assertElement(this.win.document.getElementById(this.wA),"No element found with id:"+this.wA):this.element.parentNode,this.win.document.body===t&&(t=this.win.document.documentElement),t}UA(t){var i;const s=function(t){o(t);const i=/[a-z]+/i.exec(null!=t?t:"");return e(i,"Failed to read units from %s",t),i[0]}(t=o("number"==typeof(i=t)?i+"px":i&&/^\d+(\.\d+)?(px|em|rem|vh|vw|vmin|vmax|cm|mm|q|in|pc|pt)?$/.test(i)?/^\d+(\.\d+)?$/.test(i)?i+"px":i:void 0));let n=function(t){const i=parseFloat(t);return"number"==typeof(s=i)&&isFinite(s)?i:void 0;var s}(t);return n?(p("px"==s||"vh"==s,"Only pixel or vh are valid as units for exclusion margins: "+t),"vh"==s&&(n=n/100*this.ef.height),n):0}LA(t){const i=parseFloat(t);return p(i>=0&&i<=1,"Ratios must be a decimal between 0 and 1: "+t),i}NA(){d(this.ef),d(this.VA),d(this.IA),this.TA=this.UA(this.IA),this.gA=this.UA(this.VA)}BA(t){return d(t),c(t.left,t.top+this.TA,t.width,t.height-this.gA-this.TA)}HA(t){this.xA||(this.xA=t.viewportRect.height);const i=this.xA-t.viewportRect.height;let s=0;Math.abs(i)<150?s=i:this.xA=null,t.viewportRect=c(t.viewportRect.left,t.viewportRect.top,t.viewportRect.width,t.viewportRect.height+s)}FA(){this.nf||(g(this.getAmpDoc()),this.nf=R(this.element,"position-observer"))}WA(){if(this.nf){const t=this.jA();this.nf.unobserve(t),this.nf=null}}};t.registerElement(x,y)})();
/*! https://mths.be/cssescape v1.5.1 by @mathias | MIT license */}});
//# sourceMappingURL=amp-position-observer-0.1.mjs.map