PageSourceSearch

https://medroots.com/cdn/shop/t/4/assets/sticky-atc-bar.js?v=131471857894831639051731813104

js medroots.com collected 2026-10-09 18:23:41 UTC 4,823 bytes, 2 lines download raw bytes

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"]'}}connectedCallback(){this.productFormActions=document.querySelector(".main-product-form"),this.mainProductInfo=document.querySelector("product-info"),this.container=this.closest(".sticky-atc-bar"),this.variantData=this.getVariantData(),this.init(),this.addEventListener("change",()=>{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;break;case"FIELDSET":Array.from(element.querySelectorAll("input")).forEach(radio=>{radio.value===variantOptionVal&&(radio.checked=!0)});break}}),this.mainVariantSelects.dispatchEvent(new Event("change"))),this.updatePrice(),this.updateButton(!0,"",!1),this.currentVariant?this.updateButton(!this.currentVariant.available,FoxTheme.variantStrings.soldOut):this.updateButton(!0,"",!0)})}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}this.productId=this.dataset.productId;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}),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>${this._getBaseUnit()}</span>`;unitPrice.innerHTML=unitPriceContent}else unitPriceWrapper.classList.add("hidden")}
1syncWithMainProductForm(){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)})}});
2//# sourceMappingURL=/cdn/shop/t/4/assets/sticky-atc-bar.js.map?v=131471857894831639051731813104

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.