1"use strict";if(window.lastViewedProductId){let recentlyViewedProducts=getRecentlyViewedProducts();recentlyViewedProducts=recentlyViewedProducts.filter(viewedProduct=>viewedProduct.id!==lastViewedProductId),recentlyViewedProducts.push({timestamp:Date.now(),id:window.lastViewedProductId}),recentlyViewedProducts=saveRecentlyViewedProducts(recentlyViewedProducts)}function getRecentlyViewedProducts(){let recentlyViewedProducts=localStorage.getItem("recentlyViewedProducts");try{recentlyViewedProducts=JSON.parse(recentlyViewedProducts)}catch{recentlyViewedProducts=[]}return recentlyViewedProducts||(recentlyViewedProducts=[]),recentlyViewedProducts}function saveRecentlyViewedProducts(recentlyViewedProducts){return recentlyViewedProducts=recentlyViewedProducts.slice(-24),localStorage.setItem("recentlyViewedProducts",JSON.stringify(recentlyViewedProducts)),recentlyViewedProducts}if(!customElements.get("recently-viewed-products")){class RecentlyViewedProducts extends HTMLElement{constructor(){super(),this.recentlyViewedProducts=getRecentlyViewedProducts(),this.columns=parseInt(this.getAttribute("data-columns"),10),this.fetched=!1}connectedCallback(){this.recentlyViewedProducts&&!this.fetched&&this.fetch()}fetch(){if(this.recentlyViewedProducts){const foundIndex=this.recentlyViewedProducts.findIndex(product=>product.id===window.lastViewedProductId);foundIndex>-1&&this.recentlyViewedProducts.splice(foundIndex,1)}const searchString=this.recentlyViewedProducts.toReversed().map(product=>`id:${product.id}`).join(" OR "),url=`${window.routes.search_url}?section_id=${this.dataset.sectionId}&type=product&q=${encodeURIComponent(searchString)}`;fetch(url).then(response=>response.text()).then(content=>{const html=document.createElement("div");html.innerHTML=content,this.innerHTML=html.querySelector("recently-viewed-products").innerHTML,this.fetched=!0,this.querySelectorAll("product-card").forEach(product=>{const slider=product.closest("carousel-slider .grid-carousel"),productId=product.dataset.productId,viewEntry=this.recentlyViewedProducts.find(productEntry=>productEntry.id===productId);if(!viewEntry)return;const rtf=new Intl.RelativeTimeFormat(window.recentlyViewedStrings.currentLanguage,{numeric:"auto"}),diffSec=(Date.now()-viewEntry.timestamp)/1e3,diffMin=Math.trunc(diffSec/60),diffHours=Math.trunc(diffMin/60),diffDays=Math.trunc(diffHours/24),diffMonths=Math.trunc(diffDays/30),diffYears=Math.trunc(diffMonths/12);let relativeTime=window.recentlyViewedStrings.justNow;diffYears>=1?relativeTime=rtf.format(-diffYears,"years"):diffMonths>=1?relativeTime=rtf.format(-diffMonths,"months"):diffDays>=1?relativeTime=rtf.format(-diffDays,"days"):diffHours>=1?relativeTime=rtf.format(-diffHours,"hours"):diffMin>=1?relativeTime=rtf.format(-diffMin,"minutes"):relativeTime=window.recentlyViewedStrings.lessThanMinute;const textElement=document.createElement("div");textElement.classList.add("card-product-recently-viewed-time"),textElement.innerHTML=`<span>${relativeTime}</span> <button type="button" class="button-text-link card-product-recently-viewed-dismiss">${window.recentlyViewedStrings.remove}</button>`,textElement.querySelector("button").addEventListener("click",e=>{let items=getRecentlyViewedProducts();items=items.filter(item=>item.id.toString()!==productId.toString()),saveRecentlyViewedProducts(items);const visibleItems=product.closest(".flickity-slider")?.children;product.parentElement.remove(),items.length<2&&(this.style.display="none"),slider&&(Flickity.data(slider).resize(),this.sliderNav=this.querySelector("carousel-navigation"),visibleItems?.length<=this.columns&&this.sliderNav&&(this.sliderNav.style.display="none"))}),product.querySelector(".card-footer")?.append?.(textElement),slider&&(Flickity.data(slider)?.resize(),this.sliderNav=this.querySelector("carousel-navigation"),this.recentlyViewedProducts.length<=this.columns&&this.sliderNav&&(this.sliderNav.style.display="none"))})})}}customElements.define("recently-viewed-products",RecentlyViewedProducts)} 2//# sourceMappingURL=/cdn/shop/t/31/assets/recently-viewed-products.js.map?v=149478910179156159531791291831
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.