{"version":3,"sources":["webpack://@verndale/toolkit/./src/js/modules/gated-alert-banner.js"],"names":[],"mappings":"uKAIA,MAAM,SAAyB,KAAU,CACvC,eAAgB,CACd,KAAK,IAAM,CACT,MAAO,KAAK,GACZ,MAAO,SAAS,cAAc,MAAM,EACpC,QAAS,SAAS,cAAc,kBAAkB,CACpD,EAEA,OAAO,SAAS,EAAG,CAAC,EAEpB,KAAS,IAAI,QACX,MAAK,aAAe,OAAO,WAC3B,KAAK,cAAc,GAEnB,SAAS,KAAK,MAAM,SAAW,QAEnC,CAEA,cAAe,CACb,KAAS,KAAK,SACZ,QAAO,iBAAiB,SAAU,KAAK,aAAa,KAAK,IAAI,EAAG,CAC9D,QAAS,EACX,CAAC,EACD,OAAO,iBAAiB,YAAa,KAAK,aAAa,KAAK,IAAI,EAAG,CACjE,QAAS,EACX,CAAC,EACD,OAAO,iBACL,SACA,eAAS,KAAK,aAAa,KAAK,IAAI,EAAG,GAAG,CAC5C,EAEJ,CAEA,eAAgB,CACd,KAAS,KAAK,SACZ,KAAK,IAAI,QAAQ,MAAM,YACrB,oBACA,GAAG,KAAK,KAAK,OAAO,aAAe,MACrC,CAEJ,CAEA,cAAe,CACb,GAAI,KAAK,KAAK,QAAS,CACrB,KAAM,GAAO,KAAK,KAAK,QAAQ,sBAAsB,EACrD,MACE,GAAK,KAAO,GACZ,EAAK,MAAQ,GACb,EAAK,QACF,QAAO,aAAe,SAAS,gBAAgB,eAClD,EAAK,OACF,QAAO,YAAc,SAAS,gBAAgB,YAErD,CAEA,MAAO,EACT,CAEA,cAAe,CACb,KAAS,cAAgB,KAAK,eAAiB,OAAO,YACpD,MAAK,aAAe,OAAO,WAC3B,KAAK,cAAc,EACnB,KAAK,YAAc,OACnB,OAAO,SAAS,EAAG,CAAC,EAExB,CAEA,cAAe,CACb,KAAS,aAAe,OAAO,QAAU,KAAK,aAC5C,OAAO,SAAS,EAAG,KAAK,WAAW,EAGjC,KAAK,aAAa,GACf,MAAK,aAAa,MAAK,YAAc,OAAO,SAErD,CACF,CAEA,UAAe,C","file":"scripts/4101.ed4bbfb15e90e14f7306.js","sourcesContent":["// @ts-check\nimport { Component } from '@verndale/core';\nimport { debounce } from 'lodash';\n\nclass GatedAlertBanner extends Component {\n setupDefaults() {\n this.dom = {\n $gate: this.el,\n $body: document.querySelector('body'),\n $teaser: document.querySelector('.security-teaser')\n };\n\n window.scrollTo(0, 0);\n\n if (this.dom.$teaser) {\n this.initialWidth = window.innerWidth;\n this.setGateOffset();\n } else {\n document.body.style.overflow = 'hidden';\n }\n }\n\n addListeners() {\n if (this.dom?.$teaser) {\n window.addEventListener('scroll', this.handleScroll.bind(this), {\n passive: false\n }); // modern desktop\n window.addEventListener('touchmove', this.handleScroll.bind(this), {\n passive: false\n }); // mobile\n window.addEventListener(\n 'resize',\n debounce(this.handleResize.bind(this), 100)\n );\n }\n }\n\n setGateOffset() {\n if (this.dom?.$teaser) {\n this.dom.$teaser.style.setProperty(\n 'padding-block-end',\n `${this.dom?.$gate?.clientHeight + 15}px`\n );\n }\n }\n\n isInViewport() {\n if (this.dom?.$teaser) {\n const rect = this.dom?.$teaser.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <=\n (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <=\n (window.innerWidth || document.documentElement.clientWidth)\n );\n }\n\n return false;\n }\n\n handleResize() {\n if (this.initialWidth && this.initialWidth !== window.innerWidth) {\n this.initialWidth = window.innerWidth;\n this.setGateOffset();\n this.maxDistance = undefined;\n window.scrollTo(0, 0);\n }\n }\n\n handleScroll() {\n if (this.maxDistance && window.scrollY > this.maxDistance) {\n window.scrollTo(0, this.maxDistance);\n }\n\n if (this.isInViewport()) {\n if (!this.maxDistance) this.maxDistance = window.scrollY;\n }\n }\n}\n\nexport default GatedAlertBanner;\n"],"sourceRoot":""}