1customElements.get("sticky-atc-bar")||customElements.define("sticky-atc-bar",class extends HTMLElement{constructor(){super(),document.body.classList.add("sticky-atc-bar-enabled"),this.selectors={variantIdSelect:'[name="id"]'}}get quantityInput(){return this.querySelector("quantity-input input")}get quantity(){return this.querySelector("quantity-input")}get sectionId(){return this.dataset.originalSection||this.dataset.section}get productId(){return this.getAttribute("data-product-id")}get select(){return this.querySelector("select")}get productForm(){return this.querySelector('form[is="product-form"]')}connectedCallback(){this.productFormActions=document.querySelector(`.main-product-form[data-product-id="${this.productId}"]`),this.mainProductInfo=document.querySelector(`product-info[data-product-id="${this.productId}"]`),this.container=this.closest(".sticky-atc-bar"),this.submitButton=this.querySelector('[type="submit"]'),this.selectedVariantId=this.querySelector(this.selectors.variantIdSelect).value,this.variantData=this.getVariantData(),this.init(),this.select.addEventListener("change",e=>{if(this.isUpdating)return;this.isUpdating=!0,this.updateQuantityInput(),this.mainVariantSelects=this.mainProductInfo&&this.mainProductInfo.querySelector("variant-selects");const selectedVariantId=this.querySelector(this.selectors.variantIdSelect).value;this.currentVariant=this.variantData.find(variant=>variant.id===Number(selectedVariantId)),this.mainVariantSelects?(Array.from(this.mainVariantSelects.querySelectorAll("select, fieldset"),(element,index)=>{const variantOptionVal=this.currentVariant.options[index];switch(element.tagName){case"SELECT":element.value=variantOptionVal,element.querySelectorAll("option").forEach(option=>option.removeAttribute("selected")),element.value=variantOptionVal;const selectedOption=element.querySelector(`option[value="${variantOptionVal}"]`);selectedOption&&selectedOption.setAttribute("selected","selected");break;case"FIELDSET":Array.from(element.querySelectorAll("input")).forEach(radio=>{radio.value===variantOptionVal&&(radio.checked=!0)});break}}),setTimeout(()=>{this.mainVariantSelects.dispatchEvent(new Event("change",{detail:{formStickty:!0}})),this.isUpdating=!1},0)):this.isUpdating=!1,this.updatePrice(),this.updateButton(!0,"",!1),this.currentVariant?this.updateButton(!this.currentVariant.available,FoxTheme.variantStrings.soldOut):this.updateButton(!0,"",!0)}),this.validateMainProductRequiredFields()&&this.submitButton.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation(),this.productFormActions.scrollIntoView({behavior:"smooth",block:"center"}),setTimeout(()=>{this.productFormActions.requestSubmit()},300)})}validateMainProductRequiredFields(){const mainForm=this.mainProductInfo;return mainForm?mainForm.querySelectorAll("[data-custom-property]").length>0:!0}updateQuantityInput(){this.currentVariant=this.variantData.find(variant=>variant.id===Number(this.selectedVariantId)),fetch(`${this.getAttribute("data-url")}?variant=${this.currentVariant.id}§ion_id=${this.sectionId}`).then(response=>response.text()).then(responseText=>{const parsedHTML=new DOMParser().parseFromString(responseText,"text/html"),quantity=document.querySelector(`#QuantitySticky-${this.sectionId}`),newQuantity=parsedHTML.querySelector(`#QuantitySticky-${this.sectionId}`);newQuantity&&(quantity.innerHTML=newQuantity.innerHTML)}).catch(error=>{console.error(error)}).finally(()=>{})}getVariantData(){return this.variantData=this.variantData||JSON.parse(this.container.querySelector('[type="application/json"]').textContent),this.variantData}init(){if(!this.productFormActions){this.container.classList.add("sticky-atc-bar--show");return}const mql=window.matchMedia(FoxTheme.config.mediaQueryMobile);mql.onchange=this.checkDevice.bind(this),this.checkDevice();const rootMargin="-80px 0px 0px 0px";this.observer=new IntersectionObserver(entries=>{entries.forEach(entry=>{const method=entry.intersectionRatio!==1?"add":"remove";this.container.classList[method]("sticky-atc-bar--show")})},{threshold:1,rootMargin}
1),this.setObserveTarget(),this.syncWithMainProductForm()}setObserveTarget(){this.observer.observe(this.productFormActions),this.observeTarget=this.productFormActions}checkDevice(e){document.documentElement.style.setProperty("--sticky-atc-bar-height",this.clientHeight+"px")}updateButton(disable=!0,text,modifyClass=!0){const productForm=this.querySelector("#product-form-sticky-atc-bar");if(!productForm)return;const addButton=productForm.querySelector('[name="add"]');if(!addButton)return;const addButtonText=addButton.querySelector("span");disable?(addButton.setAttribute("disabled","disabled"),text&&(addButtonText.textContent=text)):(addButton.removeAttribute("disabled"),addButtonText.textContent=FoxTheme.variantStrings.addToCart)}updatePrice(){const classes={onSale:"f-price--on-sale",soldOut:"f-price--sold-out"},selectors={priceWrapper:".f-price",salePrice:".f-price-item--sale",compareAtPrice:[".f-price-item--regular"],unitPriceWrapper:".f-price__unit-wrapper"},moneyFormat=FoxTheme.settings.moneyFormat,{priceWrapper,salePrice,unitPriceWrapper,compareAtPrice}=FoxTheme.utils.queryDomNodes(selectors,this),unitPrice=unitPriceWrapper.querySelector(".f-price__unit"),{compare_at_price,price,unit_price_measurement}=this.currentVariant;if(compare_at_price&&compare_at_price>price?priceWrapper.classList.add(classes.onSale):priceWrapper.classList.remove(classes.onSale),this.currentVariant.available?priceWrapper.classList.remove(classes.soldOut):priceWrapper.classList.add(classes.soldOut),salePrice&&(salePrice.innerHTML=FoxTheme.Currency.formatMoney(price,moneyFormat)),compareAtPrice&&compareAtPrice.length&&compare_at_price>price?compareAtPrice.forEach(item=>item.innerHTML=FoxTheme.Currency.formatMoney(compare_at_price,moneyFormat)):compareAtPrice.forEach(item=>item.innerHTML=FoxTheme.Currency.formatMoney(price,moneyFormat)),unit_price_measurement&&unitPrice){unitPriceWrapper.classList.remove("hidden");const unitPriceContent=`<span>${FoxTheme.Currency.formatMoney(this.currentVariant.unit_price,moneyFormat)}</span>/<span data-unit-price-base-unit>${FoxTheme.Currency.getBaseUnit(this.currentVariant)}</span>`;unitPrice.innerHTML=unitPriceContent}else unitPriceWrapper.classList.add("hidden")}syncWithMainProductForm(){FoxTheme.pubsub.subscribe(FoxTheme.pubsub.PUB_SUB_EVENTS.variantChange,event=>{if(!(event.data.sectionId===this.mainProductInfo.dataset.section))return;const variant=event.data.variant,variantInput=this.querySelector('[name="id"]');this.currentVariant=variant,variantInput.value=variant.id,this.updatePrice(),this.updateButton(!0,"",!1),variant?this.updateButton(!variant.available,FoxTheme.variantStrings.soldOut):this.updateButton(!0,"",!0),this.updateQuantityInput()})}}); 2//# sourceMappingURL=/cdn/shop/t/18/assets/sticky-atc-bar.js.map?v=77356997758855919871770743871
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.