1(function(){function adjustScrollPadding(elementId,paddingOffset=32){const contentElement=document.getElementById("main__html"),targetElement=document.querySelector(elementId);if(!targetElement)return;function updateScrollPadding(){const adjustedPadding=targetElement.clientHeight+paddingOffset;contentElement.style.scrollPaddingTop=`${adjustedPadding}px`}updateScrollPadding(),new ResizeObserver(updateScrollPadding).observe(targetElement)}document.addEventListener("DOMContentLoaded",function(){adjustScrollPadding("#navigation__bar .theme__header")})})(),(function(axios){const selectors$QS={quickshopTrigger:"[data-quickshop-trigger]",quickshopModal:"[data-quickshop-modal]",productJson:"[data-product-json]",wrapper:"[data-add-action-wrapper]",addButton:"[data-add-to-cart]",errors:"[data-add-action-errors]",addVariantDetached:"data-add-to-cart-variant",drawer:'[data-drawer="drawer-cart"]',cartPage:"[data-ajax-disable]",popoutWrapper:"[data-upsell-modal]",checkoutButton:"[data-checkout-button]"},classes$QS={loading:"loading",success:"has-success",open:"is-open"};let QuickShopTemplate=class{init(trigger){let reloadCart=!1;this.trigger=trigger,this.modal=document.getElementById(trigger.dataset.quickshopTrigger),this.button=this.modal.querySelector(selectors$QS.addButton),this.errors=this.modal.querySelector(selectors$QS.errors),this.drawer=document.querySelector(selectors$QS.drawer),this.reloadCart=reloadCart,MicroModal.init({openClass:"is-open",disableScroll:!0,disableFocus:!1,awaitOpenAnimation:!1,awaitCloseAnimation:!1}),document.addEventListener("keydown",function(event){const key=event.key;(key==="Backspace"||key==="Delete")&&MicroModal.close(trigger.dataset.quickshopTrigger)}),document.querySelector(selectors$QS.cartPage)&&(this.reloadCart=!0),this.button&&(this.button.hasAttribute(selectors$QS.addVariantDetached)?this.initDetached():this.initWithForm())}initWithForm(){this.button.addEventListener("click",function(evt){const outerForm=evt.target.closest("form");if(outerForm.querySelector('[type="file"]'))return;this.reloadCart||evt.preventDefault(),this.button.setAttribute("disabled",!0),this.button.classList.add(classes$QS.loading);const formData=new FormData(outerForm),formString=new URLSearchParams(formData).toString();this.addToCartAction(formString)}.bind(this))}initDetached(){this.button.addEventListener("click",function(evt){evt.preventDefault(),this.button.setAttribute("disabled",!0),this.button.classList.add(classes$QS.loading);const formString=`form_type=product&id=${this.button.getAttribute(selectors$QS.addVariantDetached)}`;this.addToCartAction(formString)}.bind(this))}addToCartAction(formData){const url=`${window.theme.routes.cart}/add.js`,instance=this;axios.post(url,formData,{headers:{"X-Requested-With":"XMLHttpRequest","Content-Type":"application/x-www-form-urlencoded"}}).then(function(response){instance.onSuccess(response.data)}).catch(function(error){console.warn(error),instance.onError(error.data)})}onSuccess(variant){this.updateHeaderTotal(),this.button.classList.remove(classes$QS.loading),this.button.classList.add(classes$QS.success),MicroModal.close(this.trigger.dataset.quickshopTrigger),setTimeout(()=>{this.button.classList.remove(classes$QS.success),this.button.removeAttribute("disabled")},3500),this.reloadCart?document.dispatchEvent(new CustomEvent("theme:cart:reload",{bubbles:!0})):this.drawer&&this.drawer.dispatchEvent(new CustomEvent("theme:drawer:open",{detail:{variant,reinit:!0},bubbles:!0}));const upsellModal=document.querySelector(selectors$QS.popoutWrapper);upsellModal&&(upsellModal.classList.remove(classes$QS.open),upsellModal.setAttribute("aria-hidden",!0))}onError(error){if(error){error.description&&typeof error.description=="string"?this.error=error.description:error.message&&typeof error.message=="string"?this.error=error.message:error.description&&typeof error.description=="object"?this.error=Object.keys(error.description).map(key=>`${key}: ${error.description[key]}`).join("<br>"):this.error="Network error: please try again";const errorsHTML=`<div class="errors">${this.error}</div>`;this.button.classList.remove(classes$QS.loading),this.button.removeAttribute("disabled"),this.errors.innerHTML=errorsHTML,slideDown(this.errors),setTimeout(()=>{slideUp(this.errors)},5e3)}else throw error}updateHeaderTotal(){axios.get(`${window.theme.routes.cart}.js`).then(response=>{document.dispatchEvent(new CustomEvent("theme:cart:change",{detail:{cart:response.data},bubbles:!0}))}).catch(e=>{console.error(e)})}constructor(trigger){this.init(trigger)}};document.addEventListener("DOMContentLoaded",function(){const elementToObserve=d
1ocument.querySelector("html"),observer=new MutationObserver(()=>{const triggers=document.querySelectorAll(selectors$QS.quickshopTrigger);triggers.length>0&&(triggers.forEach(trigger=>{new QuickShopTemplate(trigger)}),observer.disconnect())});observer.observe(elementToObserve,{subtree:!0,childList:!0})})})(themeVendor.axios);function addToCartPG(formData,addButton){const url=`${window.theme.routes.cart}/add.js`;window.fetch(url,{method:"post",headers:{"X-Requested-With":"XMLHttpRequest","Content-Type":"application/x-www-form-urlencoded"},body:JSON.stringify(formData)}).then(function(response){onSuccessPG(response.data,addButton),document.dispatchEvent(new CustomEvent("theme:cart:reload",{}))}).catch(function(error){console.warn(error),onErrorPG(error.data,addButton)})}async function onSuccessPG(variant,addButton){addButton.classList.remove("loading"),addButton.classList.add("has-success"),setTimeout(()=>{addButton.classList.remove("has-success"),addButton.removeAttribute("disabled")},3500),document.querySelector('[data-drawer="drawer-cart"]').dispatchEvent(new CustomEvent("theme:drawer:open",{detail:{variant,reinit:!0},bubbles:!0}))}function onErrorPG(error,addButton){if(error){error.description&&typeof error.description=="string"?this.error=error.description:error.message&&typeof error.message=="string"?this.error=error.message:error.description&&typeof error.description=="object"?this.error=Object.keys(error.description).map(key=>`${key}: ${error.description[key]}`).join("<br>"):this.error="Network error: please try again";const errorsHTML=`<div class="errors">${this.error}</div>`;addButton.classList.remove("loading"),addButton.removeAttribute("disabled"),this.errors.innerHTML=errorsHTML,slideDown(this.errors),setTimeout(()=>{slideUp(this.errors)},5e3)}else throw error}function updateHeaderTotalPG(){window.fetch(`${window.theme.routes.cart}.js`).then(res=>res.json()).then(response=>{document.dispatchEvent(new CustomEvent("theme:cart:change",{detail:{cart:response},bubbles:!0}))}).catch(e=>{console.error(e)})}document.addEventListener("theme:cart:reload_finished",function(event){updateHeaderTotalPG()});function isMembershipInCart(cartItems){return cartItems.some(item=>item.variant_id===window.newAutoship12||item.variant_id===window.newAutoship6)}function updateWidgets(cartItems){const isMember=isMembershipInCart(cartItems),membershipWidgets=document.querySelectorAll(".membership-in-cart"),nonMembershipWidgets=document.querySelectorAll(".membership-not-in-cart");membershipWidgets.forEach(element=>element.classList.toggle("hide",!isMember)),nonMembershipWidgets.forEach(element=>element.classList.toggle("hide",isMember));const nonPackWidget=document.querySelector(".non-pack-pdp-non-member");nonPackWidget&&nonPackWidget.classList.toggle("hide",!isMember)}document.addEventListener("rebuy.productsChange",function(event){const cartItems=window.Rebuy.Cart.getItems();setTimeout(()=>{updateWidgets(cartItems)},200)}),document.addEventListener("rebuy:cart.change",function(event){const cartItems=window.Rebuy.Cart.getItems();setTimeout(()=>{updateWidgets(cartItems)},200)}),document.addEventListener("rebuy.add",function(event){const cartDrawer=document.querySelector('[data-drawer="drawer-cart"]'),rebuyWidgetId=event.detail?.widget?.id,actualWidgetElement=document.querySelector(`[data-rebuy-id="${rebuyWidgetId}"]`);cartDrawer&&!actualWidgetElement.closest('[data-drawer="drawer-cart"]')&&cartDrawer.dispatchEvent(new CustomEvent("theme:drawer:open",{detail:{reinit:!0},bubbles:!0}))});async function fetchYotpoData(productId,container,yotpoKey){const endpoint=`https://api-cdn.yotpo.com/v1/widget/${yotpoKey}/products/${productId}/reviews.json`;try{const response=await fetch(endpoint);if(!response.ok)throw new Error(`HTTP error! Status: ${response.status}`);const bottomline=(await response.json())?.response?.bottomline;if(!bottomline||!bottomline.star_distribution||bottomline.total_review===0){console.error(`No reviews found for product ${productId}`);return}renderStarDistribution(bottomline,container)}catch(error){console.error(`Error fetching Yotpo data for product ${productId}:`,error)}}
1function renderStarDistribution(bottomline,container){const{total_review,star_distribution}=bottomline,distributionContainer=container.querySelector(".yotpo-star-distribution");if(!distributionContainer){console.error("Star distribution container not found");return}const recommendationPercentage=(((star_distribution[4]||0)+(star_distribution[5]||0))/total_review*100).toFixed(0),recommendationText=document.createElement("div");if(recommendationText.classList.add("recommendation-percentage"),recommendationText.textContent=`${recommendationPercentage}% would recommend this product`,total_review===0)return;distributionContainer.classList.remove("empty"),distributionContainer.innerHTML="",distributionContainer.appendChild(recommendationText);const fragment=document.createDocumentFragment();Object.keys(star_distribution).sort((a,b)=>b-a).forEach(star=>{const count=star_distribution[star],percentage=(count/total_review*100).toFixed(2),starRow=document.createElement("div");starRow.classList.add("yotpo-star-distribution-row-wrapper","default-row","yotpo-distribution-row"),starRow.setAttribute("aria-label",`${star} star by ${count} reviews`),starRow.setAttribute("role","button"),starRow.setAttribute("tabindex","0"),starRow.innerHTML=` 2 <div class="yotpo-star-distribution-index-wrapper"> 3 <div class="yotpo-star-distribution-index" aria-hidden="true">${star}</div> 4 <svg xmlns="http://www.w3.org/2000/svg" width="20" height="19" viewBox="0 0 20 19" fill="none"> 5 <path d="M9.99985 16.0596L5.92593 18.5161C5.62883 18.6944 5.32574 18.7728 5.01668 18.7514C4.70763 18.7301 4.43897 18.6303 4.2107 18.452C3.97302 18.2831 3.79947 18.059 3.69005 17.7797C3.58064 17.5003 3.55926 17.1954 3.62593 16.865L4.7183 12.2161L1.0944 9.06718C0.832802 8.85558 0.669936 8.60178 0.605802 8.30576C0.541669 8.00974 0.551269 7.72152 0.634602 7.44108C0.727352 7.17007 0.890219 6.93709 1.1232 6.74216C1.35617 6.54723 1.64259 6.43309 1.98245 6.39976L6.73463 5.98564L8.57703 1.59758C8.71253 1.27657 8.90926 1.04178 9.16723 0.893234C9.42521 0.744684 9.70275 0.67041 9.99985 0.67041C10.297 0.67041 10.5745 0.744684 10.8325 0.893234C11.0904 1.04178 11.2872 1.27657 11.4227 1.59758L13.2651 5.98564L18.0173 6.39976C18.3571 6.43309 18.6435 6.54723 18.8765 6.74216C19.1095 6.93709 19.2724 7.17007 19.3651 7.44108C19.4484 7.72152 19.458 8.00974 19.3939 8.30576C19.3298 8.60178 19.1669 8.85558 18.9053 9.06718L15.2814 12.2161L16.3738 16.865C16.4404 17.1954 16.4191 17.5003 16.3097 17.7797C16.2002 18.059 16.0267 18.2831 15.789 18.452C15.5607 18.6303 15.2921 18.7301 14.983 18.7514C14.674 18.7728 14.3709 18.6944 14.0738 18.5161L9.99985 16.0596Z" fill="#060F0C"/> 6 </svg> 7 </div> 8 <div class="yotpo-star-distribution-bar"> 9 <div class="yotpo-progress-bar"> 10 <div class="yotpo-progress-bar-score" style="width: ${percentage}%;"></div> 11 </div> 12 </div> 13 <div class="yotpo-star-distribution-value" aria-hidden="true">${count}</div> 14 `,fragment.appendChild(starRow)}),distributionContainer.appendChild(fragment)}document.addEventListener("DOMContentLoaded",()=>{const productContainers=document.querySelectorAll(".ratings-container");if(productContainers.length===0)return;const yotpoKey=productContainers[0]?.getAttribute("data-key");productContainers.forEach(container=>{const productId=container.getAttribute("data-product-id");productId&&fetchYotpoData(productId,container,yotpoKey)})}),document.querySelectorAll(".faq-inner").forEach(faqInner=>{faqInner.querySelectorAll(".faq-question").forEach(button=>{button.addEventListener("click",()=>{let answer=button.nextElementSibling,icon=button.querySelector("svg");if(window.innerWidth>768){let isOpen=answer.style.maxHeight;answer.style.maxHeight=isOpen?null:answer.scrollHeight+"px",icon.classList.toggle("open",!isOpen)}else{faqInner.querySelectorAll(".faq-answer").forEach(otherAnswer=>{otherAnswer!==answer&&(otherAnswer.style.maxHeight=null,otherAnswer.previousElementSibling.querySelector("svg").classList.remove("open"))});let isOpen=answer.style.maxHeight;answer.style.maxHeight=isOpen?null:answer.scrollHeight+"px",icon.classList.toggle("open",!isOpen)}})})}),(function(Flickity){document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll(".marquee-track").forEach(track=>{const slides=Array.from(track.children);if(slides.length===0)return;
14slides.forEach(slide=>{let clone=slide.cloneNode(!0);track.appendChild(clone)});let speed=2,position=0,firstClone=track.children[slides.length];const animate=()=>{position-=speed,track.style.transform=`translateX(${position}px)`,Math.abs(position)>=firstClone.offsetLeft&&(position=0),requestAnimationFrame(animate)};animate()});function initFlickityQuotes(){document.querySelectorAll(".quote-carousel").forEach(slider=>{let flktyInstance=null;const destroyInstances=()=>{flktyInstance&&(flktyInstance.destroy(),flktyInstance=null),slider.querySelectorAll(".quote-slide, .quote-slide-img").forEach(slide=>{slide.style.height=""})},initializeRegularCarousel=()=>{const slides=slider.querySelectorAll(".quote-slide");slides.length<=1||(flktyInstance=new Flickity(slider,{wrapAround:!0,groupCells:1,cellAlign:"center",pageDots:!0,prevNextButtons:!1,autoPlay:15e3,pauseAutoPlayOnHover:!1,on:{ready:()=>slides.forEach(slide=>slide.style.height="100%")}}))},updateFlickity=()=>{destroyInstances(),initializeRegularCarousel()};updateFlickity();let lastWidth=window.innerWidth;window.addEventListener("resize",()=>{const currentWidth=window.innerWidth;currentWidth!==lastWidth&&(lastWidth=currentWidth,updateFlickity())})})}initFlickityQuotes()})})(themeVendor.Flickity); 15//# sourceMappingURL=/cdn/shop/t/90/assets/custom.js.map?v=170527641382220127081744649399
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.