PageSourceSearch

https://superplastic.co/cdn/shop/t/119/assets/component-variant-picker.js?v=23930603990874073751743804706

js superplastic.co collected 2026-10-02 16:36:54 UTC 4,867 bytes, 2 lines download raw bytes

1class HHVariantPicker extends HTMLElement{constructor(){super(),this.addEventListener("change",this.onVariantChange)}onVariantChange(){this.updateOptions(),this.updateMasterId(),this.updatePickupAvailability(),this.currentVariant?(this.updateMedia(),this.updateURL(),this.updateVariantInput(),this.renderProductInfo(),this.updateVariantQuantity()):(this.toggleAddButton(!0,"",!0),this.setUnavailable())}updateOptions(){const fieldsets=Array.from(this.querySelectorAll("fieldset"));fieldsets&&fieldsets.length?this.options=fieldsets.map(fieldset=>Array.from(fieldset.querySelectorAll("input")).find(radio=>radio.checked).value):this.options=Array.from(this.querySelectorAll("select"),select=>select.value)}updateMasterId(){this.currentVariant=this.getVariantData().variants.find(variant=>!variant.options.map((option,index)=>this.options[index]===option).includes(!1))}updateMedia(){if(!this.currentVariant||!this.currentVariant?.featured_media)return;const selector=`${this.dataset.section}-${this.currentVariant.featured_media.id}`,featuredMedia=document.querySelector(`[data-media-id="${selector}"]`);if(!featuredMedia)return;const wrapper=featuredMedia.closest(".js-media-items"),section=wrapper.closest("section");wrapper.querySelectorAll("[data-media-id]").forEach(mediaItem=>{mediaItem.getAttribute("data-media-id")==selector?(mediaItem.classList.add("hidden"),section.querySelectorAll(".js-media-featured").forEach(element=>{element.innerHTML=featuredMedia.innerHTML})):mediaItem.classList.remove("hidden")}),window.setTimeout(()=>{window.scrollTo({top:0,behavior:"smooth"})},100)}updateURL(){this.currentVariant&&window.history.replaceState({},"",`${this.dataset.url}?variant=${this.currentVariant.id}`)}updateVariantInput(){document.querySelectorAll(`#product-form-${this.dataset.section}, #product-form-installment`).forEach(productForm=>{const input=productForm.querySelector('input[name="id"]');input.value=this.currentVariant.id,input.dispatchEvent(new Event("change",{bubbles:!0}))})}updatePickupAvailability(){const pickUpAvailability=document.querySelector("pickup-availability");pickUpAvailability&&(this.currentVariant?.available?pickUpAvailability.fetchAvailability(this.currentVariant.id):(pickUpAvailability.removeAttribute("available"),pickUpAvailability.innerHTML=""))}updateVariantQuantity(){const variantQuantityEl=document.querySelector("#current_variant_quantity");if(variantQuantityEl){const getVariantQty=id=>{const variant=this.getVariantData().quantities.find(v=>v.id===id);return variant?variant.quantity:null};this.newVariantQty=getVariantQty(this.currentVariant.id);const latestVariantQty=variantQuantityEl.dataset.inventory,inventoryCountThreshold=variantQuantityEl.dataset.inventoryCountThreshold;let variantQtyText=variantQuantityEl.innerHTML;variantQtyText=variantQtyText.replace(latestVariantQty,this.newVariantQty),variantQuantityEl.innerHTML=variantQtyText,variantQuantityEl.dataset.inventory=this.newVariantQty,variantQuantityEl.classList.toggle("hidden",this.newVariantQty>inventoryCountThreshold||this.newVariantQty==0)}}renderProductInfo(){fetch(`${this.dataset.url}?variant=${this.currentVariant.id}&section_id=${this.dataset.section}`).then(response=>response.text()).then(responseText=>{const id=`price-${this.dataset.section}`,source=new DOMParser().parseFromString(responseText,"text/html").getElementById(id),destination=document.getElementById(id),stickyDestination=document.querySelector("[data-sticky-variant-price]");source&&(destination&&(destination.innerHTML=source.innerHTML),stickyDestination&&(stickyDestination.innerHTML=source.innerHTML)),document.getElementById(`price-${this.dataset.section}`)?.classList.remove("visibility-hidden"),this.toggleAddButton(!this.currentVariant.available,window.variantStrings.soldOut)})}toggleAddButton(disable=!0,text,modifyClass=!0){const addButton=document.getElementById(`product-form-${this.dataset.section}`)?.querySelector('[name="add"]'),stickyAddButton=document.getElementById("sticky_atc")?.querySelector('[name="add"]');addButton&&[addButton,stickyAddButton].forEach(button=>{button&&(disable?(button.setAttribute("disabled",!0),text&&(button.textContent=text)):(button.removeAttribute("disabled"),button.textContent=window.variantStrings.addToCart))})}setUnavailable(){const addButton=document.getElementById(`product-form-${this.dataset.section}`)?.querySelector('[name="add"]');addButton&&(addButton.textContent=window.variantStrings.unavailable,document.getElementById(`price-${this.dataset.section}`)?.classList.add("visibility-hidden"))}getVariantData(){return this.variantData=this.variantData||JSON.parse(this.querySelector('[type="application/json"]').textContent),this.variantData}}customElements.define("hh-variant-picker",HHVariantPicker);
2//# sourceMappingURL=/cdn/shop/t/119/assets/component-variant-picker.js.map?v=23930603990874073751743804706

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.