1function resetHolsterRedeemBisUi(){const bisRoot=document.querySelector(".product-holster-redeem .pdp-back-in-stock-notify");if(!bisRoot)return;bisRoot.querySelector(".pdp-back-in-stock-notify__message")?.classList.remove("hidden"),bisRoot.querySelector(".pdp-back-in-stock-notify__form")?.classList.remove("hidden"),bisRoot.querySelector(".pdp-back-in-stock-notify__success")?.classList.add("hidden");const err=bisRoot.querySelector(".pdp-back-in-stock-notify__error");err&&(err.classList.add("hidden"),err.textContent="");const input=bisRoot.querySelector(".pdp-back-in-stock-notify__input");input&&(input.value="");const submit=bisRoot.querySelector(".pdp-back-in-stock-notify__submit");if(submit){submit.disabled=!1;const label=bisRoot.dataset.notifyLabel?.trim()||"Notify me";submit.textContent=label}}class FindYourDeviceForm extends HTMLElement{connectedCallback(){this.sectionId=this.dataset.sectionId,this.fallbackUrl=this.dataset.fallbackUrl||"/",this.brandSelect=this.querySelector('[data-role="brand"]'),this.modelSelect=this.querySelector('[data-role="model"]'),this.submitButton=this.querySelector('[data-role="submit"]'),this.errorElement=this.querySelector('[data-role="error"]'),this.selectedModel=null,!(!this.brandSelect||!this.modelSelect||!this.submitButton)&&(this.data=this.getSectionData(),this.data.length&&this.init())}getSectionData(){const script=document.getElementById(`device-data-${this.sectionId}`);if(!script)return[];try{return JSON.parse(script.textContent||"[]")}catch{return[]}}formatCategory(category){return category.split("-").map(word=>word.charAt(0).toUpperCase()+word.slice(1)).join(" ")}init(){const brandMap=new Map;this.data.forEach(item=>{brandMap.has(item.category_id)||brandMap.set(item.category_id,item.brand)}),new Map([...brandMap.entries()].sort((a,b)=>(a[1]||"").localeCompare(b[1]||"",void 0,{sensitivity:"base",numeric:!0}))).forEach((brandName,categoryId)=>{const option=document.createElement("option");option.value=categoryId,option.textContent=brandName,this.brandSelect.appendChild(option)}),this.brandSelect.addEventListener("change",this.handleBrandChange.bind(this)),this.modelSelect.addEventListener("change",this.handleModelChange.bind(this)),this.submitButton.addEventListener("click",this.handleSubmit.bind(this))}handleBrandChange(){const selectedCategory=this.brandSelect.value;if(this.modelSelect.innerHTML=`<option value="">${Theme.translations?.select_device}</option>`,this.modelSelect.disabled=!selectedCategory,this.submitButton.disabled=!0,!selectedCategory)return;this.data.filter(item=>item.category_id===selectedCategory).sort((a,b)=>a.display_name.localeCompare(b.display_name)).forEach(model=>{const option=document.createElement("option");option.value=model.id,option.dataset.url=model.target_url||"",option.textContent=model.display_name,this.modelSelect.appendChild(option)})}handleModelChange(){if(this.closest(".product-holster-details")){let variantInput=this.querySelector(".holster-variant-id"),selectedOptionValue=this.modelSelect.selectedOptions[0].value,variant=this.data.find(device=>device.id===selectedOptionValue),claimButton=document.querySelector(".product-holster-redeem__button"),applyPromoButton=document.querySelector(".add-promo-code__button"),bisWrapper=document.querySelector(".product-holster-redeem__bis"),bisNotify=document.querySelector(".product-holster-redeem .pdp-back-in-stock-notify");if(resetHolsterRedeemBisUi(),variant.holster_variant){document.querySelector("redeem-now-component")?.classList.remove("hidden"),variantInput.value=variant.holster_variant.id,variantInput.dataset.available=variant.holster_variant.available,bisNotify&&(bisNotify.dataset.variantId=String(variant.holster_variant.id));const redeemDisabled=!variant.holster_variant.available;claimButton&&(claimButton.disabled=redeemDisabled),applyPromoButton&&(applyPromoButton.disabled=redeemDisabled),variant.holster_variant.available?(bisWrapper&&bisWrapper.classList.add("hidden"),document.querySelector("redeem-now-component")?.classList.remove("hidden"),variant.holster_variant.product_handle&&claimButton&&(claimButton.dataset.targetUrl=this.holsterProductUrl(variant.holster_variant.product_handle,variantInput.value))):(bisWrapper&&bisWrapper.classList.remove("hidden"),document.querySelector("redeem-now-component")?.classList.add("hidden"))}else variantInput.value="",variantInput.dataset.available=!1,bisNotify&&(bisNotify.dataset.variantId=""),claimButton&&(claimButton.disabled=!0),applyPromoButton&&(applyPromoButton.disabled=!0),bisWrapper&&bisWrapper.classList.add("hidden"),document.querySelector("redeem-now-component")?.classList.add("hidden")}else{const url=this.modelSelect.selectedOptions[0]?.dataset?.url;if(this.submitButton.disabled=!url,url){const prefetch=document.createElement("link");prefetch.rel="prefetch",prefetch.href=url,document.head.appendChild(prefetch)}}}handleSubmit(){const url=this.modelSelect.selectedOptions[0]?.dataset?.url;if(!url){this.errorElement&&(this.errorElement.textContent=Theme.translations?.select_model_error||"Please select a model.");return}window.location.href=url||this.fallbackUrl}holsterProductUrl(productHandle,variantId){const query=new URLSearchParams({variant:String(variantId)}).toString();return`/products/${encodeURIComponent(productHandle)}?${query}`}}customElements.get("find-your-device-form")||customElements.define("find-your-device-form",FindYourDeviceForm); 2//# sourceMappingURL=/cdn/shop/t/2/assets/find-your-device-form.js.map?v=165715062895590836091778820939
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.