1class BarikiShell{constructor(){this.menuRoot=document.querySelector("[data-menu-root]"),this.menuToggleButton=document.querySelector("[data-menu-toggle]"),this.menuToggle=this.menuToggleButton?.closest(".mega-menu-toggle")||this.menuToggleButton,this.menuClose=document.querySelector("[data-menu-close]"),this.menuList=document.querySelector("#mega-menu-primary"),this.mobileMenuLinks=document.querySelectorAll("#mega-menu-primary .mega-menu-item-has-children > .mega-menu-link"),this.searchButton=document.querySelector("[data-search-toggle]"),this.searchForm=document.querySelector("[data-search-form]"),this.menuToggleButton&&this.menuToggleButton.addEventListener("click",()=>{this.isMenuOpen()?this.closeMenu():this.openMenu()}),this.menuClose&&this.menuClose.addEventListener("click",()=>this.closeMenu()),this.searchButton&&this.searchForm&&this.searchButton.addEventListener("click",()=>this.toggleSearch()),this.mobileMenuLinks.forEach(link=>{link.addEventListener("click",event=>{if(window.innerWidth>992)return;event.preventDefault();const item=link.closest(".mega-menu-item");item&&(item.classList.contains("mega-toggle-on")?(item.classList.remove("mega-toggle-on"),link.setAttribute("aria-expanded","false")):(this.closeSiblingSubmenus(item),item.classList.add("mega-toggle-on"),link.setAttribute("aria-expanded","true")))})}),document.addEventListener("click",event=>{!this.isMenuOpen()||window.innerWidth>992||this.menuRoot?.contains(event.target)||this.closeMenu()}),document.addEventListener("keydown",event=>{event.key==="Escape"&&this.closeMenu()}),document.querySelectorAll("[data-accordion-toggle]").forEach(button=>{button.addEventListener("click",event=>{event.preventDefault();const item=button.closest(".accordion-item"),panel=item?.querySelector(".accordion-collapse");if(!item||!panel)return;const isOpen=item.classList.contains("is-open"),icon=button.querySelector(".accordion-icon"),isMobile=window.innerWidth<=768,buttonTopBefore=button.getBoundingClientRect().top;isOpen?(panel.style.maxHeight=panel.scrollHeight+"px",requestAnimationFrame(()=>{panel.style.maxHeight="0px"}),item.classList.remove("is-open"),button.classList.add("collapsed"),button.setAttribute("aria-expanded","false"),icon&&(icon.textContent="+"),panel.addEventListener("transitionend",function handler(){panel.hidden=!0,panel.removeEventListener("transitionend",handler)},{once:!0})):(panel.hidden=!1,panel.style.maxHeight="0px",requestAnimationFrame(()=>{panel.style.maxHeight=panel.scrollHeight+"px"}),item.classList.add("is-open"),button.classList.remove("collapsed"),button.setAttribute("aria-expanded","true"),icon&&(icon.textContent="\u2013"),panel.addEventListener("transitionend",function handler(){if(panel.style.maxHeight="none",panel.removeEventListener("transitionend",handler),isMobile){const delta=button.getBoundingClientRect().top-buttonTopBefore;Math.abs(delta)>1&&window.scrollBy(0,delta)}},{once:!0}))})}),document.querySelectorAll(".accordion-item.is-open .accordion-collapse").forEach(panel=>{panel.style.maxHeight="none";const icon=panel.closest(".accordion-item")?.querySelector(".accordion-icon");icon&&(icon.textContent="\u2013")}),document.querySelectorAll("[data-collection-toolbar]").forEach(form=>{const filterToggle=form.querySelector("[data-filter-toggle]"),filterPills=form.querySelector("[data-filter-pills]"),sortInput=form.querySelector("[data-sort-input]"),sortLabel=form.querySelector("[data-sort-label]"),dropdowns=Array.from(form.querySelectorAll("[data-dd]")),triggers=Array.from(form.querySelectorAll("[data-sort-trigger], [data-pill-trigger]")),closeAllDropdowns=except=>{dropdowns.forEach(dd=>{dd!==except&&(dd.hidden=!0)}),triggers.forEach(tr=>{const ctrl=tr.getAttribute("aria-controls");ctrl&&document.getElementById(ctrl)===except||tr.setAttribute("aria-expanded","false")})};triggers.forEach(trigger=>{trigger.addEventListener("click",event=>{if(event.target.closest("[data-category-clear]"))return;event.stopPropagation();const targetId=trigger.getAttribute("aria-controls"),target=targetId?document.getElementById(targetId):null;if(!target)return;const willOpen=target.hidden;closeAllDropdowns(willOpen?target:null),target.hidden=!willOpen,trigger.setAttribute("aria-expanded",willOpen?"true":"false")})}),filterToggle&&filterPills&&filterToggle.addEventListener("click",event=>{event.stopPropagation();const willExpand=!(filterToggle.getAttribute("aria-expanded")==="true");filterToggle.setAttribute("aria-expanded",willExpand?"true":"false"),filterPills.hidden=!willExpand,willExpand||closeAllDropdowns(null)}),form.querySelectorAll("[data-sort-value]").forEach(item=>{item.addEventListener("click",event=>{event.preventDefault();const value=item.dataset.sortValue,text=item.dataset.sortText;sortInput&&(sortInput.value=value),sortLabel&&text&&(sortLabel.textContent=text.toUpperCase()),form.querySelectorAll("[data-sort-value]").forEach(el=>el.classList.remove("is-active")),item.classList.add("is-active"),form.submit()})}),form.querySelectorAll("[data-category-url]").forEach(item=>{item.addEventListener("click",event=>{event.preventDefault();const target=item.dataset.categoryUrl;if(!target)return;const params=new URLSearchParams;sortInput&&sortInput.value&¶ms.set("sort_by",sortInput.value);const min=form.querySelector("[data-price-min]"),max=form.querySelector("[data-price-max]");min&&min.value&¶ms.set(min.name,min.value),max&&max.value&¶ms.set(max.name,max.value);const qs=params.toString();window.location.href=qs?target+"?"+qs:target})});const slider=form.querySelector("[data-price-slider]"),minInput=form.querySelector("[data-price-min]"),maxInput=form.querySelector("[data-price-max]"),range=form.querySelector("[data-price-range]"),thumbMin=form.querySelector("[data-price-thumb-min]"),thumbMax=form.querySelector("[data-price-thumb-max]");if(slider&&minInput&&maxInput&&range&&thumbMin&&thumbMax){const cap=Number(slider.dataset.priceMaxCap)||1e4,clampPair=()=>{let mn=Number(minInput.value||0),mx=Number(maxInput.value||cap);mn<0&&(mn=0),mx>cap&&(mx=cap),mn>mx&&(mn=mx);const minPct=mn/cap*100,maxPct=mx/cap*100;thumbMin.style.left=minPct+"%",thumbMax.style.left=maxPct+"%",range.style.left=minPct+"%",range.style.right=100-maxPct+"%"};clampPair(),minInput.addEventListener("input",clampPair),maxInput.addEventListener("input",clampPair);const dragThumb=(thumb,isMin)=>{let dragging=!1;
1const move=clientX=>{const rect=slider.getBoundingClientRect(),pct=Math.max(0,Math.min(1,(clientX-rect.left)/rect.width)),value=Math.round(pct*cap);isMin?minInput.value=String(Math.min(value,Number(maxInput.value||cap))):maxInput.value=String(Math.max(value,Number(minInput.value||0))),clampPair()};thumb.addEventListener("pointerdown",e=>{dragging=!0,thumb.setPointerCapture?.(e.pointerId),e.preventDefault()}),thumb.addEventListener("pointermove",e=>{dragging&&move(e.clientX)});const stop=e=>{if(dragging){dragging=!1;try{thumb.releasePointerCapture?.(e.pointerId)}catch{}}};thumb.addEventListener("pointerup",stop),thumb.addEventListener("pointercancel",stop)};dragThumb(thumbMin,!0),dragThumb(thumbMax,!1)}form.addEventListener("click",event=>{event.target.closest("[data-dd]")&&event.stopPropagation()})}),document.addEventListener("click",event=>{event.target.closest("[data-collection-toolbar]")||(document.querySelectorAll("[data-collection-toolbar] [data-dd]").forEach(dd=>{dd.hidden=!0}),document.querySelectorAll("[data-collection-toolbar] [data-sort-trigger], [data-collection-toolbar] [data-pill-trigger]").forEach(tr=>{tr.setAttribute("aria-expanded","false")}))}),document.querySelectorAll("[data-qty-change]").forEach(button=>{button.addEventListener("click",()=>{const input=button.parentElement?.querySelector('input[type="number"]');if(!input)return;const step=Number(button.dataset.qtyChange||0),currentValue=Number(input.value||1);input.value=String(Math.max(1,currentValue+step))})}),document.querySelectorAll("[data-enquiry-button]").forEach(button=>{button.addEventListener("click",event=>{event.preventDefault(),event.stopPropagation();const contactUrl=document.body.dataset.contactPageUrl||"/contact-us/",url=new URL(contactUrl,window.location.origin);url.searchParams.set("source","product"),url.searchParams.set("product",button.dataset.productHandle||""),url.searchParams.set("title",button.dataset.productTitle||""),window.location.href=url.toString()})});const sortSelect=document.querySelector("[data-sort-products]");sortSelect&&sortSelect.addEventListener("change",()=>{const productList=document.querySelector("ul.products.columns-4");if(!productList)return;const items=Array.from(productList.querySelectorAll(":scope > li.product"));items.sort((a,b)=>{const priceA=parseFloat(a.dataset.price||"0"),priceB=parseFloat(b.dataset.price||"0"),dateA=a.dataset.date||"",dateB=b.dataset.date||"",orderA=parseInt(a.dataset.order||"0",10),orderB=parseInt(b.dataset.order||"0",10);switch(sortSelect.value){case"price-asc":return priceA-priceB;case"price-desc":return priceB-priceA;case"latest":return dateB.localeCompare(dateA);case"popularity":return orderA-orderB;default:return orderA-orderB}}),items.forEach(item=>productList.appendChild(item))});const priceMin=document.querySelector("[data-price-min]"),priceMax=document.querySelector("[data-price-max]");if(priceMin&&priceMax){const applyPriceFilter=()=>{const min=parseFloat(priceMin.value)||0,max=parseFloat(priceMax.value)||1/0,productList=document.querySelector("ul.products.columns-4");productList&&productList.querySelectorAll(":scope > li.product").forEach(item=>{const price=parseFloat(item.dataset.price||"0");item.style.display=price>=min&&price<=max?"":"none"})};priceMin.addEventListener("change",applyPriceFilter),priceMax.addEventListener("change",applyPriceFilter)}}isMenuOpen(){return this.menuToggle?.classList.contains("mega-menu-open")}openMenu(){this.menuToggle&&(this._savedScrollY=window.scrollY,this.menuToggle.classList.add("mega-menu-open"),this.menuToggleButton?.setAttribute("aria-expanded","true"),document.documentElement.classList.add("mega-menu-primary-off-canvas-open"),document.body.style.top=`-${this._savedScrollY}px`)}closeMenu(){this.menuToggle&&(this.menuToggle.classList.remove("mega-menu-open"),this.menuToggleButton?.setAttribute("aria-expanded","false"),document.documentElement.classList.remove("mega-menu-primary-off-canvas-open"),document.body.style.top="",window.scrollTo(0,this._savedScrollY||0),this.menuList?.querySelectorAll(".mega-menu-item-has-children.mega-toggle-on").forEach(item=>{item.classList.remove("mega-toggle-on"),item.querySelector(".mega-menu-link")?.setAttribute("aria-expanded","fal
1se")}))}closeSiblingSubmenus(currentItem){const siblings=currentItem.parentElement?.children||[];Array.from(siblings).forEach(sibling=>{!(sibling instanceof HTMLElement)||sibling===currentItem||(sibling.classList.remove("mega-toggle-on"),sibling.querySelector(".mega-menu-link")?.setAttribute("aria-expanded","false"))})}toggleSearch(){if(!this.searchForm)return;const isOpen=document.body.classList.contains("search-open");if(this.searchForm.style.display&&(this.searchForm.style.display=""),document.body.classList.toggle("search-open",!isOpen),!isOpen){const input=this.searchForm.querySelector('input[name="q"]')||this.searchForm.querySelector('input[type="text"]');requestAnimationFrame(()=>input?.focus())}}}window.addEventListener("DOMContentLoaded",()=>{new BarikiShell,injectEnquiryOnlyProducts(),bindCartPageDiscount(),initHeaderHeightSync(),initNewsletterForm(),initScrollAutoplayVideos()});function initScrollAutoplayVideos(){const videos=document.querySelectorAll("video[data-artisan-video], video[data-scroll-autoplay]");if(!videos.length)return;if(videos.forEach(video=>{video.muted=!0,video.playsInline=!0}),!("IntersectionObserver"in window)){videos.forEach(video=>video.play().catch(()=>{}));return}const observer=new IntersectionObserver(entries=>{entries.forEach(entry=>{const video=entry.target;entry.isIntersecting?video.play().catch(()=>{}):video.paused||video.pause()})},{threshold:.25});videos.forEach(video=>observer.observe(video))}const KLAVIYO_PUBLIC_API_KEY="SjCN34",KLAVIYO_NEWSLETTER_LIST_ID="RQsvZ4",KLAVIYO_API_REVISION="2024-10-15";function initNewsletterForm(){const wrap=document.querySelector("[data-newsletter]");if(!wrap)return;const form=wrap.querySelector("form"),input=wrap.querySelector('input[type="email"]'),message=wrap.querySelector("[data-newsletter-message]");if(!form||!input||!message)return;const setState=(state,msg)=>{wrap.classList.remove("is-focus","is-success","is-error"),state&&wrap.classList.add("is-"+state),msg?(message.textContent=msg,message.hidden=!1):(message.hidden=!0,message.textContent="")};input.addEventListener("focus",()=>{!wrap.classList.contains("is-success")&&!wrap.classList.contains("is-error")&&wrap.classList.add("is-focus")}),input.addEventListener("blur",()=>wrap.classList.remove("is-focus")),input.addEventListener("input",()=>{(wrap.classList.contains("is-error")||wrap.classList.contains("is-success"))&&setState(null)});const isValidEmail=v=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(String(v||"").trim()),subscribeViaKlaviyo=async email=>{const body=JSON.stringify({data:{type:"subscription",attributes:{custom_source:"Footer signup",profile:{data:{type:"profile",attributes:{email}}}},relationships:{list:{data:{type:"list",id:KLAVIYO_NEWSLETTER_LIST_ID}}}}}),url="https://a.klaviyo.com/client/subscriptions/?company_id="+encodeURIComponent(KLAVIYO_PUBLIC_API_KEY),res=await fetch(url,{method:"POST",headers:{"Content-Type":"application/json",revision:KLAVIYO_API_REVISION,Accept:"application/json"},body});if(res.status>=200&&res.status<300)return{ok:!0};let detail="";try{const j=await res.json();detail=j.errors&&j.errors[0]&&(j.errors[0].detail||j.errors[0].title)||""}catch{}return{ok:!1,status:res.status,detail}};form.addEventListener("submit",async e=>{e.preventDefault();const email=input.value.trim();if(!isValidEmail(email)){setState("error","Invalid email"),input.focus();return}setState(null);const submitBtn=form.querySelector('button[type="submit"]');submitBtn&&(submitBtn.disabled=!0);try{const result=await subscribeViaKlaviyo(email);result.ok?(setState("success","Thanks \u2014 you are subscribed to our newsletter"),form.reset()):setState("error",result.detail||"Could not subscribe. Please try again.")}catch{setState("error","Network error. Please retry.")}finally{submitBtn&&(submitBtn.disabled=!1)}})}function initHeaderHeightSync(){const header=document.querySelector("header.site-header")||document.querySelector("header");if(!header)return;const sync=()=>{const bottom=header.getBoundingClientRect().bottom;bottom>0&&document.documentElement.style.setProperty("--header-height",Math.ceil(bottom)+"px")};sync(),document.fonts&&document.fonts.ready&&document.fonts.ready.then(sync),setTimeout(sync,250),typeof ResizeObserver<"u"?new ResizeObserver(sync).observe(header):window.addEventListener("resize",sync);let scrollScheduled=!1;window.addEventListener("scroll",()=>{scrollScheduled||(scrollScheduled=!0,requestAnimationFrame(()=>{scrollScheduled=!1,sync()}))},{passive:!0}),document.querySelector("[data-search-toggle]")?.addEventListener("click",()=>{requestAnimationFrame(sync)})}function bindCartPageDiscount(){const apply=document.querySelector("[data-cart-apply-discount]"),input=document.getElementById("CartDiscountCode");if(!apply||!input)return;const submit=()=>{const code=(input.value||"").trim();code&&(window.location.href=`/discount/${encodeURIComponent(code)}?redirect=${encodeURIComponent("/cart")}`)};
1apply.addEventListener("click",submit),input.addEventListener("keydown",e=>{e.key==="Enter"&&(e.preventDefault(),submit())})}function injectEnquiryOnlyProducts(){const grid=document.querySelector("[data-products-grid][data-collection-handle]");if(!grid)return;const handle=grid.dataset.collectionHandle,params=new URLSearchParams(location.search);(params.has("filter.v.price.gte")||params.has("filter.v.price.lte"))&&fetch(`/collections/${handle}/products.json?limit=250`,{credentials:"same-origin"}).then(r=>r.ok?r.json():{products:[]}).then(data=>{const onPage=new Set(Array.from(grid.querySelectorAll('a[href*="/products/"]')).map(a=>(a.getAttribute("href")||"").match(/\/products\/([^/?#]+)/)?.[1]).filter(Boolean)),enquiryProducts=(data.products||[]).filter(p=>(p.tags||[]).some(t=>t==="enquire-now"||t==="enquiry-only")&&!onPage.has(p.handle));if(enquiryProducts.length===0)return;const escape=s=>String(s||"").replace(/[&<>"']/g,c=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[c]);enquiryProducts.forEach(p=>{const img=p.images?.[0]?.src||"",title=escape(p.title),li=document.createElement("li");li.className="product type-product product_tag-enquire-now enquiry-injected",li.innerHTML=` 2 <div class="univercell-product"> 3 <figure> 4 <a href="/products/${escape(p.handle)}" class="woocommerce-LoopProduct-link woocommerce-loop-product__link"> 5 ${img?`<img src="${escape(img)}" alt="${title}" loading="lazy">`:""} 6 </a> 7 </figure> 8 <figcaption> 9 <h2 class="woocommerce-loop-product__title"><a href="/products/${escape(p.handle)}">${title}</a></h2> 10 <button type="button" class="enquire-now-custom-btn-list" data-product="${title}" data-product-handle="${escape(p.handle)}">Enquire Now</button> 11 </figcaption> 12 </div>`,grid.appendChild(li)})}).catch(()=>{})}window.addEventListener("load",function(){const modal=document.getElementById("enquire-now-modal");if(!modal)return;const productField=modal.querySelector("#enquire-product"),handleField=modal.querySelector("#enquire-product-handle"),urlField=modal.querySelector("#enquire-page-url"),form=modal.querySelector("#enquire-now-form"),closeModal=()=>{modal.style.display="none",form&&form.reset()};document.addEventListener("click",function(e){const target=e.target,trigger=target.closest(".enquire-now-custom-btn, .enquire-now-custom-btn-list");if(trigger){e.preventDefault();const productName=trigger.dataset.product||"",productHandle=trigger.dataset.productHandle||"";productField&&(productField.value=productName,productField.setAttribute("readonly",!0)),handleField&&(handleField.value=productHandle),urlField&&(urlField.value=window.location.href),modal.style.display="flex";const emailField=modal.querySelector("#enquire-email");emailField&&emailField.focus();return}target.closest(".enquire-now-close")&&closeModal()}),window.addEventListener("click",function(e){e.target===modal&&closeModal()}),document.addEventListener("keydown",function(e){e.key==="Escape"&&modal.style.display==="flex"&&closeModal()}),modal.querySelector("[data-enquire-success], [data-enquire-error]")&&(modal.style.display="flex")}); 13//# sourceMappingURL=/cdn/shop/t/35/assets/theme.js.map?v=72383073755191073321786606142
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.