1class Wishlist{constructor(){this.storageKey="shopify_wishlist",this.wishlist=this.getWishlist(),this.init()}init(){this.updateUI(),document.addEventListener("click",e=>{const btn=e.target.closest(".js-wishlist-btn");btn&&(e.preventDefault(),this.toggleItem(btn.dataset.productHandle));const removeBtn=e.target.closest("[data-wishlist-remove-button]");removeBtn&&(e.preventDefault(),removeBtn.setAttribute("disabled","true"),this.toggleItem(removeBtn.dataset.productHandle))})}getWishlist(){const saved=localStorage.getItem(this.storageKey);return saved?JSON.parse(saved):[]}toggleItem(handle){const index=this.wishlist.indexOf(handle);index>-1?this.wishlist.splice(index,1):this.wishlist.push(handle),localStorage.setItem(this.storageKey,JSON.stringify(this.wishlist)),this.updateUI(),document.dispatchEvent(new CustomEvent("wishlist:updated",{detail:{wishlist:this.wishlist}}))}updateUI(){document.querySelectorAll(".js-wishlist-btn").forEach(btn=>{const isAdded=this.wishlist.includes(btn.dataset.productHandle);btn.classList.toggle("wishlist-button--added",isAdded),btn.setAttribute("aria-pressed",isAdded)});const headerIcon=document.querySelector(".js-wishlist-header-icon");headerIcon&&headerIcon.classList.toggle("wishlist-icon--has-items",this.wishlist.length>0)}async renderWishlist(){const grid=document.getElementById("wishlist-grid");if(!grid)return;const emptyMsg=document.querySelector(".js-wishlist-empty"),handles=this.getWishlist();if(handles.length===0){emptyMsg.classList.remove("hidden"),grid.innerHTML="";return}const rootPath=window.Shopify?.routes?.root||"/",requests=handles.map(handle=>fetch(`${rootPath}products/${handle}?view=card`).then(res=>res.text())),results=await Promise.all(requests);grid.innerHTML="",results.forEach(html=>{const div=document.createElement("div");div.classList.add("grid__item"),div.innerHTML=html,grid.appendChild(div.firstElementChild)}),this.updateUI(),document.dispatchEvent(new CustomEvent("hover-button:apply"))}}document.addEventListener("DOMContentLoaded",()=>{window.Wishlist=new Wishlist,window.Wishlist.renderWishlist(),document.addEventListener("wishlist:updated",()=>{window.Wishlist.renderWishlist()})}),Shopify.designMode&&document.addEventListener("shopify:section:load",event=>{(event.target.querySelector("#wishlist-grid")||event.target.querySelector(".js-wishlist-btn"))&&(window.Wishlist.updateUI(),window.Wishlist.renderWishlist())}); 2//# sourceMappingURL=/cdn/shop/t/175/assets/wishlist.js.map?v=141785192152093077671785830590
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.