1class OverlaySizes extends HTMLElement{constructor(){super(),this.data=[],this.sizes=[],this.overlay=this.querySelector(".overlay-sizes"),this.menu=this.overlay.querySelector(".overlay-sizes__menu"),this.addEventListener("variants-ready",this.onMount.bind(this)),this.handleOverlaySizesHidden(),this.setupEventListeners()}connectedCallback(){this.setData()}onMount(){this.setSizes(),this.render()}setupEventListeners(){this.addEventListener("click",this.handleOverlaySizesDisplay),this.addEventListener("mouseover",this.handleOverlaySizesDisplay),this.addEventListener("mouseout",this.handleOverlaySizesHidden)}handleOverlaySizesDisplay=()=>{this.overlay&&(this.overlay.classList.remove("hidden"),this.overlay.setAttribute("aria-hidden",!1))};handleOverlaySizesHidden=()=>{this.overlay&&(this.overlay.classList.add("hidden"),this.overlay.setAttribute("aria-hidden",!0))};setData(){const data=JSON.parse(this.dataset.variants).availableVariants;if(!data||!data?.length)return;this.data=data.filter(variant=>variant.productId===`gid://shopify/Product/${this.dataset.productId}`);const event=new CustomEvent("variants-ready");this.dispatchEvent(event)}setSizes(){const sortedVariants=this.sortSizes(this.data),removedVariants=this.removeDuplicateSizes(sortedVariants),formattedSizes=this.formatSizes(removedVariants);this.sizes=formattedSizes}sortSizes(variants=[]){return variants.toSorted((a,b)=>{const aSizeRank=a.variant_data.size.rank,aConditionRank=a.variant_data.condition.rank,bSizeRank=b.variant_data.size.rank,bConditionRank=b.variant_data.condition.rank;return aSizeRank===bSizeRank?aConditionRank===bConditionRank?0:aConditionRank<bConditionRank?-1:1:aSizeRank<bSizeRank?-1:1})}removeDuplicateSizes(variants=[]){const unique=[];for(const variant of variants)unique.find(element=>element.variant_data.size.code===variant.variant_data.size.code)||unique.push(variant);return unique}formatSizes(variants=[]){return variants.map(variant=>{const formattedVariant={};return formattedVariant.handle=variant.handle,formattedVariant.display=variant.variant_data.size.display,formattedVariant.code=variant.variant_data.size.code,formattedVariant.rank=variant.variant_data.size.rank,formattedVariant.variantId=variant.variantId.split("/").slice(-1)[0],formattedVariant})}render(){if(!!this.menu.children.length)return;const sizes=this.sizes;let markup="";
1sizes&&sizes.forEach(size=>{markup+=` 2 <li> 3 <a 4 href="/products/${size.handle}/?variant=${size.variantId}" 5 class="overlay-sizes__size" 6 id="overlay-sizes__size-${size.code}" 7 role="menuitem" 8 > 9 ${size.display} 10 </a> 11 </li> 12 `}),this.menu.insertAdjacentHTML("beforeend",markup)}}customElements.define("overlay-sizes",OverlaySizes); 13//# sourceMappingURL=/cdn/shop/t/223/assets/overlay-sizes.js.map?v=81770663972985937061789498335
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.