PageSourceSearch

https://travelpro.com/cdn/shop/t/426/assets/collection-grid-native.js?v=91045748999279234391790785805

js travelpro.com collected 2026-10-03 20:19:27 UTC 34,477 bytes, 2 lines download raw bytes

1(function(){"use strict";const YES_ICON='<svg class="ngrid__yes" viewBox="0 0 24 24" fill="none" aria-label="Yes"><path d="M5 13.3636L8.03559 16.3204C8.42388 16.6986 9.04279 16.6986 9.43108 16.3204L19 7" stroke="#16b10b" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg>',NO_ICON='<svg class="ngrid__no" viewBox="0 0 24 24" fill="none" aria-label="No"><path d="M16 8L8 16M8.00001 8L16 16" stroke="#e11919" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg>';function init(root){const sectionId=root.dataset.sectionId,products=root.querySelector("[data-products]");if(!products)return;const compareMax=parseInt(root.dataset.compareMax||"3",10),total=parseInt(root.dataset.total||"0",10),selected=new Map,i18n=(name,fallback)=>root.dataset[name]||fallback,drawer=root.querySelector(".ngrid__drawer"),backdrop=root.querySelector(".ngrid__backdrop"),openBtn=root.querySelector("[data-open-filters]"),focusables=()=>Array.from(drawer.querySelectorAll('a[href], button:not([disabled]), input:not([disabled]):not([type=hidden]), select, textarea, summary, [tabindex]:not([tabindex="-1"])')).filter(el=>el.offsetParent!==null);function trapTab(e){if(e.key!=="Tab")return;const f=focusables();if(!f.length)return;const first=f[0],last=f[f.length-1];e.shiftKey&&document.activeElement===first?(e.preventDefault(),last.focus()):!e.shiftKey&&document.activeElement===last&&(e.preventDefault(),first.focus())}function openDrawer(){drawer.hidden=!1,backdrop.hidden=!1,requestAnimationFrame(()=>{drawer.classList.add("is-open"),(drawer.querySelector("[data-close-filters]")||focusables()[0])?.focus()}),openBtn.setAttribute("aria-expanded","true"),document.body.style.overflow="hidden",drawer.addEventListener("keydown",trapTab)}function closeDrawer(){drawer.classList.contains("is-open")&&(drawer.classList.remove("is-open"),openBtn.setAttribute("aria-expanded","false"),document.body.style.overflow="",drawer.removeEventListener("keydown",trapTab),(drawer.contains(document.activeElement)||document.activeElement===document.body)&&openBtn.focus(),setTimeout(()=>{drawer.hidden=!0,backdrop.hidden=!0},300))}(function(){if(!openBtn||!drawer)return;const n=drawer.querySelectorAll("input[type=checkbox]:checked").length;let badge=openBtn.querySelector(".ngrid__filter-count");if(n===0){badge&&badge.remove();return}badge||(badge=document.createElement("span"),badge.className="ngrid__filter-count",openBtn.appendChild(badge)),badge.textContent=n})(),openBtn&&openBtn.addEventListener("click",openDrawer),root.querySelectorAll("[data-close-filters]").forEach(el=>el.addEventListener("click",closeDrawer)),document.addEventListener("keydown",e=>{e.key==="Escape"&&(closeDrawer(),closeCompare(),closeSort())});const bucketInputs=root.querySelectorAll("[data-price-bucket]");bucketInputs.forEach(cb=>cb.addEventListener("change",()=>{bucketInputs.forEach(o=>{o!==cb&&(o.checked=!1)});const min=root.querySelector("[data-price-min]"),max=root.querySelector("[data-price-max]");min&&(min.value=cb.checked?cb.dataset.min:""),max&&(max.value=cb.checked?cb.dataset.max:"")}));const form=root.querySelector("[data-filter-form]");form&&form.addEventListener("submit",()=>{form.querySelectorAll("input[type=hidden]").forEach(i=>{i.value===""&&(i.disabled=!0)}),form.querySelectorAll("[data-color-family]:checked").forEach(cb=>{cb.dataset.values.split("|~|").map(v=>v.trim()).filter(Boolean).forEach(v=>{const h=document.createElement("input");h.type="hidden",h.name=cb.dataset.param,h.value=v,form.appendChild(h)})})});const sortToggle=root.querySelector("[data-sort-toggle]"),sortList=root.querySelector("[data-sort-list]"),sortLabel=root.querySelector("[data-sort-label]"),urlSort=new URLSearchParams(window.location.search).get("sort_by")||"";urlSort&&(root.dataset.requestedSort=urlSort);const currentSort=urlSort||root.dataset.sort;if(urlSort&&form&&!form.querySelector("input[name=sort_by]")){const hidden=document.createElement("input");hidden.type="hidden",hidden.name="sort_by",hidden.value=urlSort,form.appendChild(hidden)}if(sortLabel){const mostRelevant=i18n("i18nSortMostRelevant","Most Relevant"),labels={"most-relevant":mostRelevant,manual:mostRelevant,rating:i18n("i18nSortRating","Top Rated"),"best-selling":i18n("i18nSortBestSelling","Best Sellers"),"price-descending":i18
1n("i18nSortPriceDescending","Price (High to Low)"),"price-ascending":i18n("i18nSortPriceAscending","Price (Low to High)"),"created-descending":i18n("i18nSortCreatedDescending","Newest")};urlSort&&labels[urlSort]&&(sortLabel.textContent=labels[urlSort]),sortToggle&&sortToggle.setAttribute("aria-label",i18n("i18nSortBy","Sort by: [label]").replace("[label]",()=>sortLabel.textContent.trim()))}function closeSort(){sortList&&(sortList.hidden=!0,sortToggle.setAttribute("aria-expanded","false"))}if(sortToggle){let focusOption=function(i){const n=(i+options.length)%options.length;options.forEach((li,j)=>li.setAttribute("tabindex",j===n?"0":"-1")),options[n].focus()};sortList.querySelectorAll(".ngrid__sort-option").forEach(li=>{const isSelected=urlSort?li.dataset.sortValue===urlSort:li.hasAttribute("data-sort-default");li.setAttribute("aria-selected",isSelected?"true":"false"),li.addEventListener("click",()=>{const value=li.dataset.sortValue,url=new URL(window.location.href);url.searchParams.set("sort_by",value),url.searchParams.delete("page"),window.location.href=url.toString()})}),sortToggle.addEventListener("click",()=>{const open=sortList.hidden;sortList.hidden=!open,sortToggle.setAttribute("aria-expanded",open?"true":"false"),open&&sortToggle.matches(":focus-visible")&&focusOption(selectedIndex())}),document.addEventListener("click",e=>{e.target.closest("[data-sort-wrapper]")||closeSort()});const options=Array.from(sortList.querySelectorAll(".ngrid__sort-option"));options.forEach(li=>li.setAttribute("tabindex","-1"));const selectedIndex=()=>Math.max(0,options.findIndex(li=>li.getAttribute("aria-selected")==="true"));sortToggle.addEventListener("keydown",e=>{(e.key==="ArrowDown"||e.key==="ArrowUp")&&(e.preventDefault(),sortList.hidden=!1,sortToggle.setAttribute("aria-expanded","true"),focusOption(selectedIndex()))}),sortList.addEventListener("keydown",e=>{const i=options.indexOf(document.activeElement);e.key==="ArrowDown"?(e.preventDefault(),focusOption(i+1)):e.key==="ArrowUp"?(e.preventDefault(),focusOption(i-1)):e.key==="Home"?(e.preventDefault(),focusOption(0)):e.key==="End"?(e.preventDefault(),focusOption(options.length-1)):e.key==="Enter"||e.key===" "?(e.preventDefault(),i>=0&&options[i].click()):e.key==="Escape"?(e.preventDefault(),closeSort(),sortToggle.focus()):e.key==="Tab"&&closeSort()})}const layoutControls=root.querySelector("[data-grid-layout-control
1s]"),mobileMq=window.matchMedia("(max-width: 989px)"),storagePrefix="ngrid-grid-view-";function currentViewport(){return mobileMq.matches?"mobile":"desktop"}function isMobileLayoutInput(input){return input.name.indexOf("ngrid-mobile-")!==-1}function normalizeLayout(viewport,value){return viewport==="mobile"?value==="mobile-single"?"mobile-single":"default":value==="cols-5"||value==="zoom-out"?value:"default"}function applyGridLayout(value,viewport){if(!products)return;const layout=normalizeLayout(viewport,value);products.setAttribute("data-ngrid-view",layout),root.classList.toggle("ngrid--mobile-single",viewport==="mobile"&&layout==="mobile-single"),root.classList.toggle("ngrid--zoom-out",viewport==="desktop"&&layout==="zoom-out"),products.classList.toggle("ngrid__products--mobile-single",viewport==="mobile"&&layout==="mobile-single"),products.removeAttribute("product-grid-view"),products.style.removeProperty("grid-template-columns"),viewport==="mobile"?layout==="mobile-single"?(products.style.setProperty("grid-template-columns","1fr","important"),products.querySelectorAll(":scope > .ngrid__product-cell, :scope > .ngrid__card, :scope > .ngrid__promo").forEach(cell=>{cell.style.gridColumn="unset",cell.style.gridRow="unset"})):(products.style.setProperty("grid-template-columns","repeat(2, minmax(0, 1fr))","important"),products.querySelectorAll(":scope > .ngrid__product-cell, :scope > .ngrid__card, :scope > .ngrid__promo").forEach(cell=>{cell.style.removeProperty("grid-column"),cell.style.removeProperty("grid-row")})):layout==="zoom-out"&&products.setAttribute("product-grid-view","zoom-out"),typeof syncPromoHeight=="function"&&syncPromoHeight(),syncCardImageSizes()}const CARD_VIEW_SIZES={"mobile-single":"100vw","cols-5":"(min-width: 1480px) 264px, (min-width: 1200px) calc((100vw - 160px) / 5), calc((100vw - 80px) / 5)"};function syncCardImageSizes(scope){if(!products)return;const view=products.getAttribute("data-ngrid-view");(scope||products).querySelectorAll(".card-gallery img.product-media__image").forEach(img=>{img.hasAttribute("data-default-sizes")||img.setAttribute("data-default-sizes",img.getAttribute("sizes")||"");const next=CARD_VIEW_SIZES[view]||img.getAttribute("data-default-sizes");next&&img.getAttribute("sizes")!==next&&img.setAttribute("sizes",next)})}function getStoredLayout(viewport){if(root.dataset.isSearch==="true")return"default";const stored=sessionStorage.getItem(storagePrefix+viewport)||"default";return normalizeLayout(viewport,stored)}function storeLayout(viewport,value){root.dataset.isSearch!=="true"&&sessionStorage.setItem(storagePrefix+viewport,value)}function syncLayoutInputs(viewport,value){if(!layoutControls)return;const selector=viewport==="desktop"?'input[name^="ngrid-desktop-"]':'input[name^="ngrid-mobile-"]';layoutControls.querySelectorAll(selector).forEach(input=>{input.checked=input.value===value})}function applyLayoutForCurrentViewport(){const viewport=currentViewport();applyGridLayout(getStoredLayout(viewport),viewport),syncLayoutInputs(viewport,getStoredLayout(viewport))}function handleLayoutInput(input){if(!input||input.type!=="radio")return;const storageViewport=isMobileLayoutInput(input)?"mobile":"desktop";storeLayout(storageViewport,input.value),storageViewport===currentViewport()?(applyGridLayout(input.value,storageViewport),syncLayoutInputs(storageViewport,normalizeLayout(storageViewport,input.value))):applyLayoutForCurrentViewport()}if(layoutControls&&products){layoutControls.addEventListener("change",e=>{const input=e.target.closest("[data-ngrid-layout-input]");input&&input.checked&&handleLayoutInput(input)}),layoutControls.addEventListener("click",e=>{const input=e.target.closest("[data-ngrid-layout-input]");input&&requestAnimationFrame(()=>{input.checked&&handleLayoutInput(input)})});const handleViewportChange=()=>applyLayoutForCurrentViewport();applyLayoutForCurrentViewport(),mobileMq.addEventListener?mobileMq.addEventListener("change",handleViewportChange):mobileMq.addListener(handleViewportChange)}const FAMILY_COLOURS=[["black|onyx|jet|shadow|charcoal|ebony|carbon|graphite","#111"],["grey|gray|slate|titanium|silver|pewter|stone|ash|vintage|gunmetal","#8a8a8a"],["navy","#1f3a63"],["blue|azure|baltic|ocean|sky|teal|indigo|denim|cobalt|patriot|ensign|estate","#24507f"],["green|sage|olive|forest|khaki|moss","#6b7a55"],["pink|rose|orchid|lilac|blush|powder|mauve","#d9a5b3"],["red|bordeaux|crimson|burgundy|wine|tibetan|cherry","#9a2530"],["brown|espresso|tan|taupe|mocha|chocolate|bronze|c
1ognac|walnut|coffee","#4a3226"],["white|ivory|cream|sand|pearl|bone|diamond","#fafafa"],["purple|violet|plum|lavender","#6b4a8a"]];function swatchFallback(sw){const m=(sw.style.backgroundImage||"").match(/url\(["']?([^"')]+)/);if(!m)return;const probe=new Image;probe.onerror=()=>{const name=(sw.title||"").toLowerCase(),hit=FAMILY_COLOURS.find(([kw])=>new RegExp("\\b("+kw+")\\b").test(name));sw.style.backgroundImage="none",sw.style.backgroundColor=hit?hit[1]:"#cfcfcf",hit&&hit[1]==="#fafafa"&&(sw.style.boxShadow="inset 0 0 0 1px rgba(0,0,0,.18)")},probe.src=m[1]}function wireCard(card){card.querySelectorAll("[data-swatch]").forEach(swatchFallback);const primary=card.querySelector("[data-primary-img]"),secondary=card.querySelector("[data-secondary-img]");card.querySelectorAll("[data-swatch]").forEach(sw=>{sw.addEventListener("click",e=>{e.preventDefault(),card.querySelectorAll("[data-swatch]").forEach(o=>o.classList.remove("is-selected")),sw.classList.add("is-selected"),primary&&sw.dataset.image&&(primary.src=sw.dataset.image,primary.removeAttribute("srcset")),secondary&&(secondary.style.display="none"),card.querySelectorAll("[data-card-link]").forEach(a=>{a.href=sw.dataset.url}),card.dataset.variantId=sw.dataset.variantId||card.dataset.variantId,card.dataset.variantAvailable=sw.dataset.available||"true";const qa=card.querySelector("[data-quick-add]");if(qa){const ok=card.dataset.variantAvailable==="true";qa.disabled=!ok,qa.querySelector("[data-quick-add-label]").textContent=ok?"Add to cart":"Sold out"}const cn=card.querySelector("[data-color-name]");cn&&sw.dataset.color&&(cn.textContent=sw.dataset.color.toLowerCase().replace(/(^|\s)\S/g,c=>c.toUpperCase()))})});const quick=card.querySelector("[data-quick-add]");quick&&quick.addEventListener("click",async e=>{if(e.preventDefault(),e.stopPropagation(),quick.disabled)return;const label=quick.querySelector("[data-quick-add-label]");quick.classList.add("is-busy"),label.textContent="Adding\u2026";const sectionIds=Array.from(document.querySelectorAll("cart-items-component")).map(el=>el.dataset.sectionId).filter(Boolean);try{const res=await fetch(window.Theme&&Theme.routes&&Theme.routes.cart_add_url||"/cart/add.js",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({items:[{id:parseInt(card.dataset.variantId,10),quantity:1}],sections:sectionIds.join(",")})}),data=await res.json();if(!res.ok)throw new Error(data.description||data.message||"Could not add");const ev=new Event("cart:update",{bubbles:!0});ev.detail={resource:{},sourceId:"ngrid-"+card.dataset.productId,data:{source:"product-form-component",itemCount:1,productId:card.dataset.productId,variantId:card.dataset.variantId,sections:data.sections}},document.dispatchEvent(ev);const drawer2=document.querySelector("cart-drawer-component");drawer2&&!drawer2.hasAttribute("auto-open")&&typeof drawer2.open=="function"&&drawer2.open(),label.textContent="Added"}catch(err){label.textContent="Try again",console.error(err)}finally{setTimeout(()=>{quick.classList.remove("is-busy"),!quick.disabled&&label.textContent!=="Sold out"&&(label.textContent="Add to cart")},1500)}});const check=card.querySelector("[data-compare-check]");check&&check.addEventListener("change",()=>{const id=card.dataset.productId;if(check.checked){if(selected.size>=compareMax){check.checked=!1;return}const data=JSON.parse(card.querySelector("[data-compare-data]").textContent);selected.set(id,data)}else selected.delete(id);renderCompareBar()})}products.querySelectorAll(".ngrid__card").forEach(wireCard);const touchMq=window.matchMedia("(hover: none), (max-width: 989px)");function placeQuickAdd(){products.querySelectorAll(".ngrid__card").forEach(card=>{const btn=card.querySelector("[data-quick-add]");if(!btn)return;const media=card.querySelector(".ngrid__media"),details=card.querySelector(".ngrid__details");touchMq.matches?(btn.parentElement!==details&&details.appendChild(btn),btn.classList.add("ngrid__quick-add--inline")):(btn.parentElement!==media&&media.appendChild(btn),btn.classList.remove("ngrid__quick-add--inline"))})}placeQuickAdd(),touchMq.addEventListener?touchMq.addEventListener("change",placeQuickAdd):touchMq.addListener(placeQuickAdd);const ownCompare=!root.hasAttribute("data-product-compare-root"),bar=root.querySelector("[data-compare-bar]"),barText=root.querySelector("[data-compare-text]"),modal=root.querySelector("[data-compare-modal]"),modalBackdrop=root.querySelector(".ngrid__compare-backdrop"),modalProducts=root.querySelector("[data-compare-products]");function renderCompareBar(){bar.hidden=selected.size===0,barText.textContent="Compare products ("+selected.size+" of "+compareMax+")",root.querySelectorAll("[data-compare-check]").forEach(cb=>{cb.disabled=!cb.checked&&selected.size>=compareMax})}function truthy(v){return/^(yes|true|y|1)$/i.test(String(v).trim())}function escapeHtml(s){return String(s).replace(/[&<>"]/g,c=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[c])}function specHtml(spec){return spec.image?spec.value?'<img class="ngrid__compare-alt" src="'+escapeHtml(spec.value)+'" alt="" loading="lazy">':"":spec.list?String(spec.value||"").split(/\r?\n|,/).map(s=>
1s.trim()).filter(Boolean).map(it=>'<div class="ngrid__feature"><span>'+YES_ICON+"</span>"+escapeHtml(it)+"</div>").join(""):spec.boolean?spec.value===""||spec.value==null?"":truthy(spec.value)?YES_ICON:NO_ICON:escapeHtml(spec.value||"")}function openCompare(){modalProducts.innerHTML="",Array.from(selected.values()).forEach(p=>{const col=document.createElement("div");col.className="ngrid__compare-product",col.innerHTML='<div class="img-outer"><img src="'+p.image+'" alt=""></div><a href="'+p.url+'" class="ngrid__compare-name">'+escapeHtml(p.title)+'</a><div class="ngrid__compare-price">'+p.price+'</div><a href="'+p.url+'" class="ngrid__compare-view">View Product</a><div class="ngrid__compare-specs">'+p.specs.map(s=>'<div class="ngrid__compare-spec'+(s.image?" ngrid__compare-spec--image":"")+'"><div class="ngrid__compare-title">'+escapeHtml(s.label)+'</div><div class="ngrid__compare-desc">'+specHtml(s)+"</div></div>").join("")+"</div>",modalProducts.appendChild(col)}),modal.hidden=!1,modalBackdrop.hidden=!1,document.body.style.overflow="hidden",compareOpener=document.activeElement,modal.addEventListener("keydown",trapCompareTab),modal.querySelector("[data-compare-close]")?.focus();const cols=modalProducts.querySelectorAll(".ngrid__compare-product"),rows=cols[0]?cols[0].querySelectorAll(".ngrid__compare-spec").length:0;for(let r=0;r<rows;r++){let h=0;const cells=[];cols.forEach(c=>{const cell=c.querySelectorAll(".ngrid__compare-spec")[r];cell&&!cell.classList.contains("ngrid__compare-spec--image")&&(cells.push(cell),cell.style.height="")}),cells.forEach(cell=>{h=Math.max(h,cell.offsetHeight)}),cells.forEach(cell=>{cell.style.height=h+"px"})}}let compareOpener=null;function trapCompareTab(e){if(e.key!=="Tab")return;const f=Array.from(modal.querySelectorAll("a[href], button:not([disabled])")).filter(el=>el.offsetParent!==null);f.length&&(e.shiftKey&&document.activeElement===f[0]?(e.preventDefault(),f[f.length-1].focus()):!e.shiftKey&&document.activeElement===f[f.length-1]&&(e.preventDefault(),f[0].focus()))}function closeCompare(){!ownCompare||!modal||modal.hidden||(modal.hidden=!0,modalBackdrop.hidden=!0,document.body.style.overflow="",modal.removeEventListener("keydown",trapCompareTab),compareOpener&&compareOpener.isConnected&&compareOpener.focus(),compareOpener=null)}const compareStart=root.querySelector("[data-compare-start]");ownCompare&&(compareStart&&compareStart.addEventListener("click",openCompare),root.querySelectorAll("[data-compare-close]").forEach(el=>el.addEventListener("click",closeCompare)));const cellSelector=".ngrid__product-cell, .ngrid__card";function syncPromoHeight(){const shaped=root.classList.contains("ngrid--shape-portrait")||root.classList.contains("ngrid--shape-tall"),tile=products.querySelector(".ngrid__card .ngrid__media-link")||products.querySelector(".ngrid__product-cell .product-card__media, .ngrid__product-cell .card-gallery");products.querySelectorAll(".ngrid__promo-media").forEach(m=>{shaped&&tile?(m.style.height=tile.offsetHeight+"px",m.classList.add("is-pinned")):(m.style.height="",m.classList.remove("is-pinned"))})}const PROMO_LAYOUTS=["d4","d5","m2","m1"];function syncPromoFit(){const count=products.querySelectorAll(":scope > .ngrid__product-cell, :scope > .ngrid__card").length;products.querySelectorAll(":scope > .ngrid__promo[data-promo-need-d4]").forEach(p=>{PROMO_LAYOUTS.forEach(layout=>{const need=parseInt(p.getAttribute("data-promo-need-"+layout),10);isNaN(need)||p.classList.toggle("ngrid__promo--off-"+layout,count<need)})})}function placePromos(){syncPromoFit(),Array.from(products.querySelectorAll(".ngrid__promo:not([hidden])")).forEach(p=>{const row=parseInt(p.dataset.promoRow||"2",10),span=parseInt(p.dataset.promoSpan||"2",10),idx=(row-1)*4+(p.dataset.promoSide==="left"?0:4-span),anchor=products.querySelectorAll(cellSelector)[idx];anchor?products.insertBefore(p,anchor):products.appendChild(p)}),syncPromoHeight()}window.addEventListener("resize",syncPromoHeight);const extras=root.querySelector("[data-search-extras]"),settleExtras=show=>{extras.classList.remove("ngrid__extras--loading"),extras.removeAttribute("aria-busy"),extras.hidden=!show};if(extras&&!extras.dataset.query&&settleExtras(!1),extras&&extras.dataset.query){const limit=parseInt(extras.dataset.limit||"6",10),url="/search/suggest.json?q="+encodeURIComponent(extras.dataset.query)+"&resources[type]=article,page&resources[limit]="+limit+"&resources[options][fields]=title,body";fetch(url,{headers:{Accept:"application/json"}}).then(r=>r.json()).then(json=>{const res=json.resources&&json.resources.results||{},items=[].concat((res.articles||[]).map(a=>({type:i18n("i18nResultArticle","Article"),title:a.title,url:a.url,image:a.image,text:a.summary_html||a.body||""})),(res.pages||[]).map(p=>({type:i18n("i18nResultPage","Page"),title:p.title,url:p.url,image:null,text:p.body||""}))),seen=new Set,unique=items.filter(it=>{const key=(it.title||"").toLowerCase().replace(/[^a-z0-9]+/g," ").trim();return!key||seen.has(key)?!1:(seen.add(key),!0)}),words=extras.dataset.query.toLowerCase().split(/[^a-z0-9]+/).filter(w=>w.length>2),titleHit=it=>words.some(w=>(it.title||"").toLowerCase().includes(w))?0:1;if(unique.sort((a,b)=>titleHit(a)-titleHit(b)),unique.splice(limit),!unique.length)return settleExtras(!1);const list=extras.querySelector("[data-extras-list]"),strip=h=>{const d=document.createElement("div");return d.innerHTML=h,(d.textContent||"").replace(/\s+/g," ").trim()};list.innerHTML=unique.map(it=>{const media=it.image?'<img class="ngrid__extra-img" src="'+it.image.replace(/(\.[a-z]+)(\?|$)/i,"_400x$1$2")+'" alt="" loading="lazy">':'<div class="ngrid__extra-img ngrid__extra-img--page" aria-hidden="true"><svg viewBox="0 0 24 24" width="28" height="28" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M6 3h8l4 4v14H6z"/><path d="M14 3v4h4M9 12h6M9 16h6"/></svg></div>',excerpt=strip(it.text).slice(0,110);return'<li class="ngrid__extra"><a href="'+it.url+'" class="ngrid__extra-link">'+media+'<div class="ngrid__extra-body"><div class="ngrid__extra-type">
1'+escapeHtml(it.type)+'</div><div class="ngrid__extra-title">'+escapeHtml(it.title)+"</div>"+(excerpt?'<div class="ngrid__extra-text">'+escapeHtml(excerpt)+(strip(it.text).length>110?"\u2026":"")+"</div>":"")+"</div></a></li>"}).join(""),settleExtras(!0)}).catch(()=>settleExtras(!1))}const CARD_IMAGE_WIDTHS=[240,352,450,550,650,832,1200,1600,1920,2560,3840];function sizedImageUrl(u,width){return/[?&]width=\d+/.test(u)?u.replace(/([?&])width=\d+/,"$1width="+width):u+(u.includes("?")?"&":"?")+"width="+width}function siblingData(cell,id){const tpl=cell.querySelector(':scope > template[data-ngrid-sibling="'+CSS.escape(String(id))+'"]'),json=tpl&&tpl.content.querySelector("[data-sibling-json]");if(!json)return null;try{const data=JSON.parse(json.textContent);return data.fragment=tpl.content,data}catch{return null}}function switchSibling(cell,id){const card=cell.querySelector("product-card");if(!card)return!1;const oldId=String(card.dataset.productId||""),s=siblingData(cell,id);if(!s)return!1;const newId=String(s.id);if(oldId===newId)return!0;const cardLink=card.querySelector('[ref="productCardLink"]'),oldHref=cardLink?(cardLink.getAttribute("href")||"").trim():"",quickAddEl=card.querySelector("quick-add-component"),oldTitle=quickAddEl&&quickAddEl.dataset.productTitle||(cardLink?cardLink.textContent.trim():""),inSwatches=el=>!!el.closest(".bundle-swatch-colors");cell.querySelectorAll("a[href]").forEach(a=>{!inSwatches(a)&&(a.getAttribute("href")||"").trim()===oldHref&&a.setAttribute("href",s.url)}),[cell,...cell.querySelectorAll("[data-product-id]")].forEach(el=>{el.dataset.productId===oldId&&!inSwatches(el)&&(el.dataset.productId=newId)});const gallery=card.querySelector('[ref="cardGallery"]');if(gallery&&s.media){const img=gallery.querySelector("img.product-media__image");if(img){img.srcset=CARD_IMAGE_WIDTHS.map(w=>sizedImageUrl(s.media.u,w)+" "+w+"w").join(", "),img.src=sizedImageUrl(s.media.u,832),img.alt=s.media.a||"",s.media.h&&(img.width=3840,img.height=s.media.h),img.hasAttribute("data_max_resolution")&&img.setAttribute("data_max_resolution",sizedImageUrl(s.media.u,3840));const mediaRoot=img.closest(".product-media");mediaRoot&&(mediaRoot.dataset.mediaId=String(s.media.id),s.media.r&&mediaRoot.style.setProperty("--ratio",String(s.media.r)))}gallery.dataset.initialMediaId=String(s.media.id),s.second?gallery.dataset.secondMediaId=String(s.second.id):delete gallery.dataset.secondMediaId;const map={};map[s.media.id]={u:s.media.u,a:s.media.a,r:s.media.r},s.second&&(map[s.second.id]={u:s.second.u,a:s.second.a,r:s.second.r});const oldMap=gallery.querySelector('script[ref="cardGalleryMediaData"]');if(oldMap){const nextMap=document.createElement("script");nextMap.type="application/json",nextMap.setAttribute("ref","cardGalleryMediaData"),nextMap.textContent=JSON.stringify(map),oldMap.replaceWith(nextMap)}const badges=gallery.querySelector(".product-badges"),nextBadges=s.fragment.querySelector('[data-sibling-part="badges"] .product-badges');badges&&nextBadges&&badges.replaceWith(nextBadges.cloneNode(!0));const seal=gallery.querySelector(".product-card__metafield-badge");if(seal){const sealImg=seal.querySelector("img");s.badge&&sealImg&&(sealImg.src=s.badge,sealImg.removeAttribute("srcset")),seal.hidden=!s.badge}}const transitionLink=card.closest("product-card-link");transitionLink&&s.media&&(transitionLink.dataset.featuredMediaUrl=sizedImageUrl(s.media.u,500));const nextPrice=s.fragment.querySelector('[data-sibling-part="price"] [ref="priceContainer"]');nextPrice&&card.querySelectorAll("product-price").forEach(priceEl=>{const current=priceEl.querySelector('[ref="priceContainer"]');if(!current)return;const next=nextPrice.cloneNode(!0);if(priceEl.dataset.saleFirst==="true"){const compareGroup=next.querySelector(".compare-at-price")?.closest('[role="group"]');compareGroup&&next.appendChild(compareGroup)}current.replaceWith(next)});const form2=card.querySelector("product-form-component");if(form2){const variantInput=form2.querySelector('input[name="id"]');variantInput&&(variantInput.value=String(s.variant),variantInput.disabled=!s.available);const productInput=form2.querySelector('input[name="product-id"]');productInput&&(productInput.value=newId);const addToCart=form2.querySelector("add-to-cart-component");addToCart&&s.media&&(addToCart.dataset.productVariantMedia=sizedImageUrl(s.media.u,100));const soldOutText=form2.dataset.soldOutText||"Sold out";form2.dataset.addToCartLabel=i18n("i18nAddToCart","Add [title] to cart").replace("[title]",()=>s.title),form2.dataset.soldOutLabel=s.title+" - "+soldOutText;const button=form2.querySelector('button[name="add"]');if(button){button.disabled=!s.available,button.setAttribute("aria-label",s.available?form2.dataset.addToCartLabel:form2.dataset.soldOutLabel);const text=button.querySelector(".add-to-cart-text__content");text&&(text.textContent=s.available?form2.dataset.addToCartText||"Add to cart":soldOutText)}}quickAddEl&&(quickAddEl.dataset.productTitle=s.title),oldTitle&&s.title&&oldTitle!==s.title&&(card.querySelectorAll(".visually-hidden, .product-card-title-text > p, .product-grid-view-zoom-out--details h3").forEach(el=>{el.textContent.replace(/\s+/g," ").trim()===oldTitle&&(el.textContent=s.title)}),card.querySelectorAll("[aria-label]").forEach(el=>{const label=el.getAttribute("aria-label");!inSwatches(el)&&label&&label.includes(oldTitle)&&el.setAttribute("aria-label",label.split(oldTitle).join(s.title))}));const colourName=card.querySelector(".product-card__selected-swatch-name");colourName&&s.colour&&(colourName.textContent=s.colour.toLowerCase()),card.querySelectorAll(".bundle-swatch-colors__link[data-sibling-id]").forEach(a=>{const on=a.dataset.siblingId===newId;a.classList.toggle("bundle-swatch-colors__link--active",on),on?a.setAttribute("aria-current","true"):a.removeAttribute("aria-current")});const compareData=card.querySelector("[data-compare-data]");if(compareData)try{const data=JSON.parse(compareData.textContent);data.id=Number(newId),data.title=s.title,data.url=s.url,s.compare&&(data.image=s.compare.image||(s.media?sizedImageUrl(s.media.u,500):data.image),data.price=s.compare.price,(data.specs||[]).forEac
1h(spec=>{spec.image&&(spec.value=s.compare.alt||"")})),compareData.textContent=JSON.stringify(data);const check=card.querySelector("[data-compare-check]"),compareSelected=root.__compareSelected;if(check&&check.checked&&compareSelected&&compareSelected.has(oldId)){const entries=Array.from(compareSelected.entries()).map(([key,value])=>key===oldId?[newId,data]:[key,value]);compareSelected.clear(),entries.forEach(([key,value])=>compareSelected.set(key,value))}}catch{}return!0}products.addEventListener("click",e=>{const swatch=e.target instanceof Element?e.target.closest(".bundle-swatch-colors__link[data-sibling-id]"):null;if(!swatch||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.button===1)return;const cell=swatch.closest(".ngrid__product-cell[data-group-members]");!cell||cell.parentElement!==products||switchSibling(cell,swatch.dataset.siblingId)&&(e.preventDefault(),e.stopPropagation())},!0);const loadMore=root.querySelector("[data-load-more]"),shownEl=root.querySelector("[data-shown]"),colorsNoteEl=root.querySelector("[data-colors-included]"),perPage=parseInt(root.dataset.perPage||"24",10);function pageProductCount(pageProducts){const n=parseInt(pageProducts.dataset.pageProducts,10);return Number.isNaN(n)?pageProducts.querySelectorAll(cellSelector).length:n}let loadedProducts=pageProductCount(products);function syncColorsNote(){if(!colorsNoteEl)return;const cards=products.querySelectorAll(":scope > .ngrid__product-cell, :scope > .ngrid__card").length;colorsNoteEl.hidden=cards>=loadedProducts}const LOAD_MORE_MIN_NEW=4;async function fetchPage(url){const u=new URL(url,window.location.origin);u.searchParams.set("section_id",sectionId);const html=await(await fetch(u.toString())).text();return new DOMParser().parseFromString(html,"text/html").querySelector("[data-products]")}function cellProductIds(cell){const ids=(cell.dataset.groupMembers||"").split(/\s+/).filter(Boolean);return cell.dataset.productId&&ids.push(cell.dataset.productId),ids}function representedProducts(){const map=new Map;return products.querySelectorAll(":scope > .ngrid__product-cell").forEach(cell=>{cellProductIds(cell).forEach(id=>map.set(id,cell))}),map}function addCells(nextProducts,keepOrder){const represented=representedProducts();let added=0;return nextProducts.querySelectorAll(cellSelector).forEach(card=>{if(card.classList.contains("ngrid__product-cell")){const existing=card.dataset.productId?represented.get(card.dataset.productId):null;if(existing){if(!(existing.hasAttribute("data-sold-out")&&!card.hasAttribute("data-sold-out")))return;represented.forEach((cell,id)=>{cell===existing&&represented.delete(id)}),existing.remove()}}else{const key=card.dataset.groupKey;if(key&&products.querySelector('[data-group-key="'+CSS.escape(key)+'"]'))return}const firstSoldOut=keepOrder||card.hasAttribute("data-sold-out")?null:products.querySelector(":scope > [data-sold-out]");firstSoldOut?products.insertBefore(card,firstSoldOut):products.appendChild(card),card.classList.contains("ngrid__card")&&wireCard(card);const cardIds=cellProductIds(card);!card.hasAttribute("data-sold-out")&&card.dataset.groupMembers&&new Set(represented.values()).forEach(cell=>{!cell.hasAttribute("data-sold-out")||!cell.isConnected||cellProductIds(cell).every(id=>cardIds.includes(id))&&(represented.forEach((c,id)=>{c===cell&&represented.delete(id)}),cell.remove())}),cardIds.forEach(id=>represented.set(id,card)),added+=1}),added}function syncShown(nextProducts){if(!shownEl)return;const page=parseInt(nextProducts&&nextProducts.dataset.page||"1",10);shownEl.textContent=Math.min(page*perPage,total)}async function appendNext(){if(!products.dataset.nextUrl)return;loadMore.disabled=!0;let added=0;try{for(;products.dataset.nextUrl&&added<LOAD_MORE_MIN_NEW;){const nextProducts=await fetchPage(products.dataset.nextUrl);if(!nextProducts)break;syncCardImageSizes(nextProducts),loadedProducts+=pageProductCount(nextProducts),added+=addCells(nextProducts,!1),products.dataset.nextUrl=nextProducts.dataset.nextUrl||"",syncShown(nextProducts),syncColorsNote()}}catch{}placeQuickAdd(),placePromos(),document.dispatchEvent(new CustomEvent("product-compare:refresh")),products.dataset.nextUrl?loadM
1ore.disabled=!1:loadMore.remove()}loadMore&&loadMore.addEventListener("click",appendNext);async function applyRatingSort(){for(;products.dataset.nextUrl;){const nextProducts=await fetchPage(products.dataset.nextUrl);if(!nextProducts)break;syncCardImageSizes(nextProducts),loadedProducts+=pageProductCount(nextProducts),addCells(nextProducts,!0),products.dataset.nextUrl=nextProducts.dataset.nextUrl||""}const cards=Array.from(products.querySelectorAll(":scope > .ngrid__product-cell, :scope > .ngrid__card"));cards.sort((a,b)=>{const soldA=a.hasAttribute("data-sold-out")||!!a.closest("[data-sold-out]"),soldB=b.hasAttribute("data-sold-out")||!!b.closest("[data-sold-out]");if(soldA!==soldB)return soldA?1:-1;const ra=parseFloat(a.dataset.rating)||0,rb=parseFloat(b.dataset.rating)||0;return rb!==ra?rb-ra:(parseInt(b.dataset.ratingCount)||0)-(parseInt(a.dataset.ratingCount)||0)}),cards.forEach(c=>products.appendChild(c)),placePromos(),shownEl&&(shownEl.textContent=total),syncColorsNote(),document.dispatchEvent(new CustomEvent("product-compare:refresh")),loadMore&&loadMore.remove(),sortLabel&&(sortLabel.textContent=i18n("i18nSortRating","Top Rated"))}root.dataset.requestedSort==="rating"&&root.dataset.isSearch!=="true"&&applyRatingSort()}function boot(){document.querySelectorAll(".ngrid").forEach(function(root){if(!root.dataset.inited){root.dataset.inited="1";try{init(root)}catch{}}})}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",boot):boot(),document.addEventListener("shopify:section:load",boot)})();
2//# sourceMappingURL=/cdn/shop/t/426/assets/collection-grid-native.js.map?v=91045748999279234391790785805

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.