PageSourceSearch

https://bohodot.es/cdn/shop/t/4/assets/variants.js?v=111789684625475601381769430588

js bohodot.es collected 2026-10-06 16:54:15 UTC 10,346 bytes, 2 lines download raw bytes

1customElements.get("variant-options")||customElements.define("variant-options",class extends HTMLElement{whenLoaded=Promise.all([customElements.whenDefined("gallery-section")]);constructor(){super(),this.addEventListener("change",this.onVariantChange),this.addEventListener("keydown",this.onKeyDown),this.container=document.querySelector(`section[data-product-handle="${this.getAttribute("data-product-handle")}"]`)}connectedCallback(){this.whenLoaded.then(()=>{this.initialize()})}disconnectedCallback(){}initialize(){this.updateOptions(),this.updateMasterId(),this.currentVariant&&this.updateGallery(),this.updateVariantStatuses(),this.updateDropdownButtons()}onKeyDown(event){(event.key==="Enter"||event.keyCode===13)&&event.target.querySelector("input")?.click()}onVariantChange(){const variantChangeStartEvent=new CustomEvent("variantChangeStart",{bubbles:!0,composed:!0});this.dispatchEvent(variantChangeStartEvent),this.updateOptions(),this.updateMasterId(),this.updateGallery(),this.toggleAddButton(!0,"",!1),this.updatePickupAvailability(),this.removeErrorMessage(),this.updateVariantStatuses(),this.updateDropdownButtons(),this.currentVariant?(this.updateMedia(),this.lenOfVariantOptions=document.querySelectorAll("variant-options").length,this.lenOfVariantOptions===1&&this.updateURL(),this.updateVariantInput(),this.renderProductInfo(),this.updateShareUrl()):(this.toggleAddButton(!0,"",!0),this.setUnavailable());const variantChangeEndEvent=new CustomEvent("variantChangeEnd",{bubbles:!0,composed:!0});this.dispatchEvent(variantChangeEndEvent)}updateGallery(){const mediaGallery=document.getElementById(`MediaGallery-${this.dataset.section}`);let media_id=!1;this.currentVariant&&this.currentVariant.featured_media&&(media_id=this.currentVariant.featured_media.id);try{mediaGallery?.filterSlides(this.options,media_id,!0)}catch{}}updateDropdownButtons(){const fieldsets=Array.from(this.querySelectorAll(".wt-product__option"));this.options=fieldsets.map(fieldset=>Array.from(fieldset.querySelectorAll("input")).find(radio=>radio.checked)?.value||""),fieldsets.forEach(fieldset=>{const dropdown=fieldset.querySelector(".wt-product__option__dropdown");if(dropdown){const checkedInput=fieldset.querySelector("fieldset input:checked");if(!checkedInput)return;const isInputDisabled=checkedInput?.classList.contains("disabled");dropdown.classList.toggle("wt-product__option__dropdown--unavailable",isInputDisabled)}})}updateOptions(){const fieldsets=Array.from(this.querySelectorAll(".wt-product__option"));this.options=fieldsets.map(fieldset=>Array.from(fieldset.querySelectorAll("input")).find(radio=>radio.checked)?.value||""),this.checkedOptions=fieldsets.map(fieldset=>Array.from(fieldset.querySelectorAll("input")).find(radio=>radio.checked)||""),fieldsets.forEach((fieldset,index)=>{const selectedOption=this.options[index];if(!selectedOption)return;fieldset.querySelector(".wt-product__option__title .value").innerHTML=selectedOption;const dropdownSpan=fieldset.querySelector(".wt-product__option__dropdown span");dropdownSpan&&(dropdownSpan.innerHTML=selectedOption)})}updateMasterId(){this.currentVariant=this.getVariantData()?.find(variant=>!variant.options.map((option,index)=>this.options[index]===option).includes(!1))}updateMedia(){if(!this.currentVariant||(this.setAttribute("data-variant-id",this.currentVariant?.id),!this.currentVariant.featured_media))return;this.setAttribute("data-featured-image",this.currentVariant?.featured_media?.preview_image?.src),this.setAttribute("data-featured-image-id",this.currentVariant?.featured_media?.id);const modalContent=document.querySelector(`#ProductModal-${this.dataset.section} .product-media-modal__content`);if(!modalContent)return;const newMediaModal=modalContent.querySelector(`[data-media-id="${this.currentVariant.featured_media.id}"]`);modalContent.prepend(newMediaModal)}updateURL(){!this.currentVariant||this.dataset.updateUrl==="false"||window.history.replaceState({},"",`${this.dataset.url}?variant=${this.currentVariant.id}`)}updateShareUrl(){const shareButton=document.getElementById(`Share-${this.dataset.section}`);!shareButton||!shareButton.updateUrl||shareButton.updateUrl(`${window.shopUrl}${this.dataset.url}?variant=${this.currentVariant.id}`)}updateVariantInput(){document.querySelectorAll(`#product-form-${this.dataset.section}, #product-form-installment-${this.dataset.section}`).forEach(productForm=>{const input=productForm.querySelector('input[name="id"]');input.value=this.currentVariant.id,input.dispatchEvent(new Event("change",{bubbles:!0}))})}updateVariantStatuses(){const selectedOptionOneVariants=this.variantData?.filter(variant=>variant.available===!0),inputWrappers=[...this.querySelectorAll(".product-form__input")],checkedInputs=[...this.querySelectorAll(".product-form__input :checked")],checkedInputsValues=[...this.querySelectorAll(".product-form__input :checked")].map(input=>input.getAttribute("value")),previousSelectedOptions=[];
1inputWrappers.forEach((option,index)=>{if(index===0&&inputWrappers.length>1)return;const optionInputs=[...option.querySelectorAll('input[type="radio"], option')],previousOptionSelected=inputWrappers[index-1]?.querySelector(":checked")?.value;previousSelectedOptions.push(previousOptionSelected);const availableOptionInputsValue=selectedOptionOneVariants.filter(variant=>index===2?variant.available&&variant.option1===previousSelectedOptions[0]&&variant.option2===previousSelectedOptions[1]:variant.available&&variant[`option${index}`]===previousOptionSelected).map(variantOption=>variantOption[`option${index+1}`]);this.setInputAvailability(optionInputs,availableOptionInputsValue,checkedInputsValues,index,checkedInputs)})}setInputAvailability(listOfOptions,listOfAvailableOptions,checkedInputsValues,index,checkedInputs){function containsSubarray(arr,subarr){return arr.join(",").includes(subarr.join(","))}const checkedValues=checkedInputsValues.slice(0,index),listOfAvailableVariants=this.getVariantData().filter(variant=>{if(containsSubarray(variant.options,checkedValues))return!0}),isPreviousOptionChecked=checkedInputs.find(input=>input.dataset.position===`${index}`)||index===0;listOfOptions.forEach(input=>{if(!isPreviousOptionChecked)return;listOfAvailableOptions.includes(input.getAttribute("value"))?input.classList.remove("disabled"):input.classList.add("disabled");let inputOccurs=!1;
1listOfAvailableVariants.forEach(variant=>{variant.options.includes(input.getAttribute("value"))&&(inputOccurs=!0)}),inputOccurs||input.classList.add("disabled")})}updatePickupAvailability(){const pickUpAvailability=document.querySelector("pickup-availability");pickUpAvailability&&(pickUpAvailability.dataset.variantId=this.currentVariant?.id,this.currentVariant&&this.currentVariant.available?pickUpAvailability.fetchAvailability(this.currentVariant.id):(pickUpAvailability.removeAttribute("available"),pickUpAvailability.innerHTML=""))}removeErrorMessage(){const section=this.closest("section");if(!section)return;const productForm=section.querySelector("product-form");try{productForm?.handleErrorMessage()}catch(err){console.log(err)}}renderProductInfo(){const requestedVariantId=this.currentVariant?.id,sectionId=this.dataset.originalSection?this.dataset.originalSection:this.dataset.section;fetch(`${this.dataset.url}?variant=${requestedVariantId}&section_id=${this.dataset.originalSection?this.dataset.originalSection:this.dataset.section}`).then(response=>response.text()).then(responseText=>{if(this.currentVariant?.id!==requestedVariantId)return;const html=new DOMParser().parseFromString(responseText,"text/html"),destination=document.getElementById(`price-${this.dataset.section}`),source=html.getElementById(`price-${this.dataset.originalSection?this.dataset.originalSection:this.dataset.section}`),skuSource=html.getElementById(`Sku-${this.dataset.originalSection?this.dataset.originalSection:this.dataset.section}`),skuDestination=document.getElementById(`Sku-${this.dataset.section}`),inventorySource=html.getElementById(`Inventory-${this.dataset.originalSection?this.dataset.originalSection:this.dataset.section}`),inventoryDestination=document.getElementById(`Inventory-${this.dataset.section}`);source&&destination&&(destination.innerHTML=source.innerHTML),inventorySource&&inventoryDestination&&(inventoryDestination.innerHTML=inventorySource.innerHTML),skuSource&&skuDestination&&(skuDestination.innerHTML=skuSource.innerHTML,skuDestination.classList.toggle("visibility-hidden",skuSource.classList.contains("visibility-hidden")));const price=document.getElementById(`price-${this.dataset.section}`);price&&price.classList.remove("visibility-hidden"),inventoryDestination&&inventoryDestination.classList.toggle("visibility-hidden",inventorySource.innerText==="");const addButtonUpdated=html.getElementById(`ProductSubmitButton-${sectionId}`);this.toggleAddButton(addButtonUpdated?addButtonUpdated.hasAttribute("disabled"):!0,window.variantStrings.soldOut),publish(PUB_SUB_EVENTS.variantChange,{data:{sectionId,html,variant:this.currentVariant}})})}toggleAddButton(disable=!0,text,modifyClass=!0){const productForm=document.getElementById(`product-form-${this.dataset.section}`);if(!productForm)return;const addButton=productForm.querySelector('[name="add"]'),addButtonText=productForm.querySelector('[name="add"] > span');addButton&&(disable?(addButton.setAttribute("disabled","disabled"),text&&(addButtonText.textContent=text)):(addButton.removeAttribute("disabled"),addButtonText.textContent=window.variantStrings.addToCart))}setUnavailable(){const button=document.getElementById(`product-form-${this.dataset.section}`),addButton=button.querySelector('[name="add"]'),addButtonText=button.querySelector('[name="add"] > span'),price=document.getElementById(`price-${this.dataset.section}`),inventory=document.getElementById(`Inventory-${this.dataset.section}`),sku=document.getElementById(`Sku-${this.dataset.section}`);addButton&&(addButtonText.textContent=window.variantStrings.unavailable,price&&price.classList.add("visibility-hidden"),inventory&&inventory.classList.add("visibility-hidden"),sku&&sku.classList.add("visibility-hidden"))}getVariantData(){return this.variantData=this.variantData||JSON.parse(this.querySelector('[type="application/json"]').textContent),this.variantData}});
2//# sourceMappingURL=/cdn/shop/t/4/assets/variants.js.map?v=111789684625475601381769430588

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.