PageSourceSearch

https://dudeperfect.store/cdn/shop/t/107/assets/mobile-quick-add.js?v=132367916364167998761788970986

js dudeperfect.store collected 2026-09-25 18:48:55 UTC 5,294 bytes, 2 lines download raw bytes

1customElements.get("mobile-quick-add-form")||customElements.define("mobile-quick-add-form",class extends HTMLElement{connectedCallback(){this.initialized||(this.initialized=!0,this.variants=this.parseVariants(),this.variants.length&&(this.optionInputs=Array.from(this.querySelectorAll("[data-mqa-option]")),this.variantIdInput=this.querySelector("[data-mqa-variant-id]"),this.submitButton=this.querySelector("[data-mqa-submit]"),this.submitLabel=this.querySelector("[data-mqa-submit-label]"),this.priceWrapper=this.querySelector("[data-mqa-price]"),this.priceCurrent=this.querySelector("[data-mqa-price-current]"),this.priceCompare=this.querySelector("[data-mqa-price-compare]"),this.track=this.querySelector("[data-mqa-track]"),this.slides=Array.from(this.querySelectorAll("[data-mqa-slide]")),this.dots=Array.from(this.querySelectorAll("[data-mqa-dot]")),this.addEventListener("change",event=>{event.target.matches("[data-mqa-option]")&&this.onOptionChange()}),this.dots.forEach(dot=>{dot.addEventListener("click",()=>this.scrollToSlide(Number(dot.dataset.mqaDot),!0))}),this.track&&this.dots.length&&this.track.addEventListener("scroll",this.onTrackScroll.bind(this),{passive:!0}),this.addEventListener("product-form:added",()=>{this.closest("modal-dialog")?.hide()}),this.updateFromSelection({scrollGallery:!1})))}parseVariants(){const node=this.querySelector("[data-mqa-variants]");if(!node)return[];try{return JSON.parse(node.textContent)}catch(error){return console.error("mobile-quick-add: could not parse variant data",error),[]}}get selectedValues(){return this.optionInputs.filter(input=>input.checked).sort((a,b)=>Number(a.dataset.mqaOption)-Number(b.dataset.mqaOption)).map(input=>input.value)}findVariant(values){return this.variants.find(variant=>variant.options.length===values.length&&variant.options.every((option,i)=>option===values[i]))}onOptionChange(){this.updateFromSelection({scrollGallery:!0})}updateFromSelection({scrollGallery}){const values=this.selectedValues,variant=this.optionInputs.length?this.findVariant(values):this.variants.find(candidate=>String(candidate.id)===this.variantIdInput?.value);this.updateOptionAvailability(values),this.updateSelectedValueLabels(),this.updatePrice(variant),this.updateSubmit(variant),variant&&scrollGallery&&this.scrollToVariantMedia(variant)}updateOptionAvailability(values){this.optionInputs.forEach(input=>{const index=Number(input.dataset.mqaOption)-1,candidate=values.slice();candidate[index]=input.value;const reachable=this.variants.some(variant=>variant.available&&candidate.every((value,i)=>variant.options[i]===value));reachable?input.removeAttribute("data-unavailable"):input.setAttribute("data-unavailable","true"),input.classList.toggle("visually-disabled",!reachable),input.nextElementSibling?.classList.toggle("is-unavailable",!reachable)})}updateSelectedValueLabels(){this.querySelectorAll("[data-mqa-selected-value]").forEach(node=>{const position=node.dataset.mqaSelectedValue,checked=this.optionInputs.find(input=>input.dataset.mqaOption===position&&input.checked);checked&&(node.textContent=checked.value)})}updatePrice(variant){if(!this.priceCurrent||!this.priceCompare||!this.priceWrapper)return;if(!variant){this.priceCompare.hidden=!0,this.priceWrapper.classList.remove("mqa__price--sale");return}this.priceCurrent.textContent=variant.price_text;const onSale=variant.compare_at_price&&variant.compare_at_price>variant.price;this.priceCompare.hidden=!onSale,this.priceCompare.textContent=onSale?variant.compare_at_price_text:"",this.priceWrapper.classList.toggle("mqa__price--sale",!!onSale)}updateSubmit(variant){if(!this.submitButton)return;const purchasable=!!(variant&&variant.available);variant&&this.variantIdInput&&(this.variantIdInput.value=variant.id),this.submitButton.disabled=!purchasable,this.submitButton.setAttribute("aria-disabled",String(!purchasable)),this.submitLabel&&(variant?variant.available?this.submitLabel.textContent=window.variantStrings?.addToCart||"Add to cart":this.submitLabel.textContent=window.variantStrings?.soldOut||"Sold out":this.submitLabel.textContent=window.variantStrings?.unavailable||"Unavailable")}scrollToVariantMedia(variant){if(!variant.featured_media_id||!this.slides.length)return;const index=this.slides.findIndex(slide=>Number(slide.dataset.mediaId)===variant.featured_media_id);index>-1&&this.scrollToSlide(index,!0)}scrollToSlide(index,smooth=!1){const slide=this.slides[index];
1!slide||!this.track||(this.track.scrollTo({left:slide.offsetLeft-this.track.offsetLeft,behavior:smooth?"smooth":"auto"}),this.setActiveDot(index))}onTrackScroll(){this.scrollFrame||(this.scrollFrame=requestAnimationFrame(()=>{this.scrollFrame=null;const center=this.track.scrollLeft+this.track.clientWidth/2;let closest=0,closestDistance=1/0;this.slides.forEach((slide,index)=>{const distance=Math.abs(slide.offsetLeft-this.track.offsetLeft+slide.offsetWidth/2-center);distance<closestDistance&&(closestDistance=distance,closest=index)}),this.setActiveDot(closest)}))}setActiveDot(index){this.dots.forEach((dot,i)=>{const active=i===index;dot.classList.toggle("is-active",active),active?dot.setAttribute("aria-current","true"):dot.removeAttribute("aria-current")})}});
2//# sourceMappingURL=/cdn/shop/t/107/assets/mobile-quick-add.js.map?v=132367916364167998761788970986

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.