PageSourceSearch

https://www.tirol.at/_assets/1798f66a72c0609b2ee5b404d10475ff/Distribution/Organisms/Popup.js?1790840481

js tirol.at collected 2026-10-02 04:26:08 UTC 3,285 bytes, 1 lines download raw bytes

1(()=>{"use strict";(()=>{const e={NOSCROLL:"noscroll"};window._psc=window._psc??{[e.NOSCROLL]:!1};class t{constructor(){this.root=document.documentElement||document.querySelector("html")}has(e){return _psc[e]??!1}add(e){if(!this._exists(e))throw new Error(`State ${e} does not exist.`);this.has(e)||(_psc[e]=!0,window.requestAnimationFrame((()=>this.root.classList.add(this._prefix(e)))),document.dispatchEvent(new CustomEvent("pageState.add",{detail:e})))}remove(e){if(!this._exists(e))throw new Error(`State ${e} does not exist.`);this.has(e)&&(_psc[e]=!1,window.requestAnimationFrame((()=>this.root.classList.remove(this._prefix(e)))),document.dispatchEvent(new CustomEvent("pageState.remove",{detail:e})))}_exists(t){return Object.values(e).includes(t)}_prefix(e){return`-state-${e}`}}const s=".popup-close-button",o="popup-visible";class i{constructor(){this.pageState=new t,this.STORAGE_KEY="popup_closed",this.COOKIE_KEY="popup_never_show",this.COOKIE_EXPIRY_DAYS=400,this.overlay=document.querySelector("#popup-overlay"),this.overlay&&(this.DISPLAY_DELAY_SECONDS=parseInt(this.overlay.dataset.delay,10)||30,this.form=this.overlay.querySelector(".popup-form form"),this.init())}init(){this.shouldShowPopup()&&this.schedulePopup(),this.bindEvents()}shouldShowPopup(){return!this.getCookie(this.COOKIE_KEY)&&!sessionStorage.getItem(this.STORAGE_KEY)}schedulePopup(){setTimeout((()=>{this.showPopup()}),1e3*this.DISPLAY_DELAY_SECONDS)}showPopup(){this.overlay&&(this.overlay.setAttribute("aria-hidden","false"),this.overlay.classList.add(o),this.trapFocus(),this.pageState.add(e.NOSCROLL))}hidePopup(){this.overlay&&(this.overlay.setAttribute("aria-hidden","true"),this.overlay.classList.remove(o),this.pageState.remove(e.NOSCROLL))}closePopup(){this.hidePopup(),sessionStorage.setItem(this.STORAGE_KEY,"true")}neverShowAgain(){this.hidePopup(),this.setCookie(this.COOKIE_KEY,"true",this.COOKIE_EXPIRY_DAYS)}bindEvents(){if(!this.overlay)return;const e=this.overlay.querySelector(s);e&&e.addEventListener("click",(()=>this.closePopup()));const t=this.overlay.querySelector(".popup-never-show");t&&t.addEventListener("click",(()=>this.neverShowAgain())),this.overlay.addEventListener("click",(e=>{e.target===this.overlay&&this.closePopup()})),document.addEventListener("keydown",(e=>{"Escape"===e.key&&this.overlay.classList.contains(o)&&this.closePopup()})),this.form&&this.form.addEventListener("submit",(e=>{this.neverShowAgain()}))}trapFocus(){const e=this.overlay.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');if(0===e.length)return;const t=e[0],o=e[e.length-1];(this.overlay.querySelector(s)||t).focus(),this.overlay.addEventListener("keydown",(e=>{"Tab"===e.key&&(e.shiftKey?document.activeElement===t&&(e.preventDefault(),o.focus()):document.activeElement===o&&(e.preventDefault(),t.focus()))}))}setCookie(e,t,s){const o=new Date;o.setTime(o.getTime()+24*s*60*60*1e3),document.cookie=`${e}=${t};expires=${o.toUTCString()};path=/;SameSite=Lax`}getCookie(e){const t=e+"=",s=document.cookie.split(";");for(let e=0;e<s.length;e++){let o=s[e];for(;" "===o.charAt(0);)o=o.substring(1,o.length);if(0===o.indexOf(t))return o.substring(t.length,o.length)}return null}}document.addEventListener("DOMContentLoaded",(()=>{new i}))})()})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.