PageSourceSearch

https://levitation.fm/cdn/shop/t/31/assets/search-modal.js?v=43507529118325609681776320131

js levitation.fm collected 2026-10-03 19:59:31 UTC 7,663 bytes, 2 lines download raw bytes

1class SearchModal extends HTMLElement{constructor(){if(super(),this.isPredictiveSearchDisabled())return;this.modal=this.querySelector(".search-modal"),this.detailsContainer=this.querySelector("details"),this.summaryToggle=this.querySelector("summary"),this.input=this.querySelector(".search__input"),this.searchField=this.summaryToggle.querySelector(".search-field__text"),this.overlay=this.detailsContainer.querySelector(".search-modal__overlay"),this.isDrawer=this.modal.className.includes("drawer"),this.isDrawer?this.buttonClose=this.querySelector(".button-close--search-drawer"):this.buttonClose=this.querySelector(".button-close--search"),this.header=document.querySelector(".header"),this._modalParent=this.modal.parentNode,this._overlayParent=this.overlay?this.overlay.parentNode:null,document.addEventListener("keyup",event=>{event.code&&event.code.toUpperCase()==="ESCAPE"&&this.modal.className.includes("open")&&this.close()}),this.searchField?(this.summaryToggle.querySelector(".search-field__text").addEventListener("focus",event=>{this.isDrawer?(this.summaryToggle.querySelector(".search-field__text").readOnly=!0,setTimeout(()=>this.open(this,"focus"),100)):this.open(this,"focus")}),this.summaryToggle.querySelector(".button-close").addEventListener("focusout",this.close.bind(this))):this.summaryToggle.addEventListener("click",this.onSummaryClick.bind(this)),this.overlay&&this.overlay.addEventListener("click",event=>{this.reset(event),this.close()});const resetBtn=this.querySelector(".search__button");resetBtn&&resetBtn.addEventListener("click",this.reset.bind(this)),this.buttonClose.addEventListener("click",event=>{this.reset(event),this.close()}),this.header.addEventListener("click",event=>{this.modal.closest(".open")&&!event.target.closest(".search")&&(this.reset(event),this.close())}),this.summaryToggle.setAttribute("role","button")}isPredictiveSearchDisabled(){const shopifyFeatures=document.getElementById("shopify-features"),isPredictiveSearchSupported=(shopifyFeatures?JSON.parse(shopifyFeatures.textContent):{}).predictiveSearch===!0,supportedLanguages=["af","sq","hy","bs","bg","ca","hr","cs","da","nl","en","et","fo","fi","fr","gd","de","el","hu","is","id","it","la","lv","lt","mk","mo","no","nb","nn","pl","pt-BR","pt-PT","ro","ru","sr","sh","sk","sl","es","sv","tr","uk","vi","cy"],currentLanguage=document.documentElement.lang;return!isPredictiveSearchSupported||!supportedLanguages.includes(currentLanguage)}onSummaryClick(event){event.preventDefault(),event.target.closest("details").hasAttribute("open")?this.close():this.open(event)}onBodyClick(event){(event.target.classList.contains("search-modal__overlay")||event.target.closest(".button-close--search")||event.target.closest(".button-close--search-drawer"))&&this.close()}open(event,listerner){if(!(this.summaryToggle.querySelector(".search-field__text")&&this.summaryToggle.querySelector(".search-field__text").closest(".focused")&&listerner==!1)&&(this.focusElement=event.target,!(this.modal.className.includes("open")||document.querySelector("body > .search-modal.open")))){if(this.searchField&&!this.isDrawer){const scrollY=window.scrollY||window.pageYOffset;document.body.dataset.scrollY=scrollY,document.body.style.position="fixed",document.body.style.top=`-${scrollY}px`,document.body.style.left="0",document.body.style.right="0",document.body.classList.add("disable-scroll")}if(document.body.appendChild(this.modal),document.querySelector("body > .search-modal__overlay")||(this.overlay.classList.remove("open"),document.body.appendChild(this.overlay)),this.onBodyClickEvent=this.onBodyClickEvent||this.onBodyClick.bind(this),this.detailsContainer.setAttribute("open",!0),this.isDrawer?setTimeout(()=>this.overlay.classList.add("open"),300):this.overlay.classList.add("open"),document.body.addEventListener("click",this.onBodyClickEvent),this.isDrawer)requestAnimationFrame(()=>{this.overlay.classList.add("open"),document.body.classList.add("hidden","overlay-opened"),this.modal.classList.add("open");var headerEl2=this.closest(".header");headerEl2&&document.documentElement.setAttribute("style",`--header-offset-height: ${Math.floor(headerEl2.getBoundingClientRect().bottom)}px; --header-height: ${Math.floor(headerEl2.getBoundingClientRect().bottom)}px;`),document.dispatchEvent(new CustomEvent("searchmodal:open")),this.searchField?(this.input.setAttribute("value",this.searchField.value),this.input.value=this.searchField.value,trapFocus(this.searchField,this.input),this.input.readOnly=!0,requestAnimationFrame(()=>{requestAnimationFrame(()=>{this.input.focus({preventScroll:!0}),this.input.readOnly=!1})})):trapFocus(this.detailsContainer,this.input)});else{this.isDrawer||document.body.classList.add("search-modal--open"),document.body.classList.add("hidden","overlay-opened"),this.modal.classList.add("open");var headerEl=this.closest(".header");headerEl&&document.documentElement.setAttribute("style",`--header-offset-height: ${Math.floor(headerEl.getBoundingClientRect().bottom)}px; --header-height: ${Math.floor(headerEl.getBoundingClientRect().bottom)}px;`),document.dispatchEvent(new CustomEvent("searchmodal:open"))}this.searchField?(this.input.setAttribute("value",this.searchField.value),this.input.value=this.searchField.value,trapFocus(this.searchField,this.input),this.isDrawer&&(this.input.readOnly=!0),setTimeout(()=>{this.input.focus({preventScroll:!0}),this.isDrawer&&(this.input.readOnly=!1)})):trapFocus(this.detailsContainer,this.input)}}close(){if(this.searchField&&document.body.classList.contains("disable-scroll")){document.body.classList.add("after-focusout"),document.documentElement.style.scrollBehavior="auto";const scrollY=parseInt(document.body.dataset.scrollY||"0",10);document.body.classList.remove("disable-scroll"),document.body.style.position="",document.body.style.top="",document.body.style.left="",document.body.style.right="",window.scrollTo({top:scrollY,left:0,behavior:"auto"})}removeTrapFocus(this.focusElement),this.detailsContainer.removeAttribute("open"),document.body.removeEventListener("click",this.onBodyClickEvent),this.isDrawer||document.body.classList.remove("search-modal--open"),document.dispatchEvent(new CustomEvent("searchmodal:close")),document.body.classList.remove("hidden","overlay-opened"),this.querySelector(".search__button-text")&&this.querySelector(".search__button-text").classList.add("visually-hidden"),this.modal&&this.modal.classList.remove("open"),document.dispatchEvent(new CustomEvent("body:visible")),this.modal&&this.modal.parentNode===document.body&&(this._modalParent?this._modalParent.appendChild(this.modal):this.modal.remove());var openOverlay=document.querySelector("body > .search-modal__overlay.open");openOverlay&&(openOverlay.classList.remove("open"),this._overlayParent?this._overlayParent.appendChild(openOverlay):openOverlay.remove()),this.summaryToggle.querySelector(".search-field__text")&&this.summaryToggle.querySelector(".search-field__text").closest("form").querySelector(".search__button").setAttribute("tabindex","-1"),setTimeout(()=>document.documentElement.style.scrollBehavior="smooth",10),setTimeout(()=>document.body.classList.remove("after-focusout"),200),this.isDrawer&&this.summaryToggle.querySelector(".search-field__text")&&(this.summaryToggle.querySelector(".search-field__text").readOnly=!1)}reset(event){event.preventDefault(),this.querySelector('input[type="search"]')&&this.querySelector('input[type="search"]').hasAttribute("value")&&(this.querySelector('input[type="search"]').value="")}}customElements.define("search-modal",SearchModal);
2//# sourceMappingURL=/cdn/shop/t/31/assets/search-modal.js.map?v=43507529118325609681776320131

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.