1class ProductBuyBar extends HTMLElement{constructor(){"use strict";super();let classes={show:"show"},mainProductForm=document.querySelector(".product-form");const observer=new IntersectionObserver(entries=>{entries.forEach(entry=>{entry.isIntersecting?this.classList.remove(classes.show):window.scrollY>200&&this.classList.add(classes.show)})},{threshold:.25});observer.observe(mainProductForm),document.addEventListener("DOMContentLoaded",function(){let siteFooter=document.querySelector("footer.footer");siteFooter&&observer.observe(siteFooter)})}}customElements.define("product-buy-bar",ProductBuyBar);class UpsellCard extends HTMLElement{constructor(){super(),this.select=this.querySelector("select"),this.image=this.querySelector(".card-media img"),this.select&&this.select.addEventListener("change",event=>{const newImgSrc=event.target.options[event.target.selectedIndex].getAttribute("data-variant-img-src");newImgSrc&&this.updateImage(newImgSrc)})}updateImage(newImgSrc){if(this.image&&newImgSrc){const sanitized=String(newImgSrc).trim().replace(/[\s<>"']/g,"");if(/^(javascript|data|vbscript|file|about):/i.test(sanitized))return;try{const url=new URL(sanitized,window.location.origin);(url.protocol==="http:"||url.protocol==="https:")&&(this.image.src=url.href)}catch{!sanitized.includes("javascript:")&&!sanitized.includes("data:")&&!sanitized.includes("vbscript:")&&!sanitized.includes("<")&&!sanitized.includes(">")&&(this.image.src=sanitized)}}}}customElements.define("upsell-card",UpsellCard); 2//# sourceMappingURL=/cdn/shop/t/20/assets/template-product.js.map?v=59646318061768794491775240865
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.