1customElements.get("product-info")||customElements.define("product-info",class extends HTMLElement{quantityInput=void 0;quantityForm=void 0;onVariantChangeUnsubscriber=void 0;cartUpdateUnsubscriber=void 0;abortController=void 0;pendingRequestUrl=null;preProcessHtmlCallbacks=[];postProcessHtmlCallbacks=[];constructor(){super(),this.quantityInput=this.querySelector(".quantity__input")}connectedCallback(){this.initializeProductSwapUtility(),this.onVariantChangeUnsubscriber=subscribe(PUB_SUB_EVENTS.optionValueSelectionChange,this.handleOptionValueChange.bind(this)),this.initQuantityHandlers(),this.dispatchEvent(new CustomEvent("product-info:loaded",{bubbles:!0}));const variant=this.getSelectedVariant(this);this.dataset.layout=="card"&&this.updateCardMedia(variant?.featured_media?.id),this.dataset.zoomClick=="lightbox"&&this.initPhotoSwipe()}addPreProcessCallback(callback){this.preProcessHtmlCallbacks.push(callback)}initPhotoSwipe(){this.imgsrcs=[],this.querySelectorAll("li[data-media-id]").forEach((element,index)=>{element.addEventListener("click",this.openPhotoSwipe.bind(this)),element.idx=index;var imgElement=element.getElementsByTagName("img")[0];this.imgsrcs.push({src:imgElement.src,w:imgElement.getAttribute("data-width"),h:imgElement.getAttribute("data-height")})})}openPhotoSwipe(e){var pswpElement=this.querySelectorAll(".pswp")[0],options={index:e.currentTarget.idx,history:!1,focus:!1,tapAction:"close",bgOpacity:.6},gallery=new PhotoSwipe(pswpElement,PhotoSwipeUI_Default,this.imgsrcs,options);gallery.init()}initQuantityHandlers(){this.quantityInput&&(this.quantityForm=this.querySelector(".product-form__quantity"),this.quantityForm&&(this.setQuantityBoundries(),this.dataset.originalSection||(this.cartUpdateUnsubscriber=subscribe(PUB_SUB_EVENTS.cartUpdate,this.fetchQuantityRules.bind(this)))))}disconnectedCallback(){this.onVariantChangeUnsubscriber(),this.cartUpdateUnsubscriber?.()}initializeProductSwapUtility(){this.preProcessHtmlCallbacks.push(html=>html.querySelectorAll(".scroll-trigger").forEach(element=>element.classList.add("scroll-trigger--cancel"))),this.postProcessHtmlCallbacks.push(newNode=>{window?.Shopify?.PaymentButton?.init(),window?.ProductModel?.loadShopifyXR()})}handleOptionValueChange({data:{event,target,selectedOptionValues}}){if(!this.contains(event.target))return;this.resetProductFormState();const productUrl=target.dataset.productUrl||this.pendingRequestUrl||this.dataset.url;this.pendingRequestUrl=productUrl;const shouldSwapProduct=this.dataset.url!==productUrl,shouldFetchFullPage=this.dataset.updateUrl==="true"&&shouldSwapProduct&&this.dataset.layout!="card";this.renderProductInfo({requestUrl:this.buildRequestUrlWithParams(productUrl,selectedOptionValues,shouldFetchFullPage),targetId:target.id,callback:shouldSwapProduct&&this.dataset.layout!="card"?this.handleSwapProduct(productUrl,shouldFetchFullPage):this.handleUpdateProductInfo(productUrl,shouldFetchFullPage)})}resetProductFormState(){const productForm=this.productForm;productForm?.toggleSubmitButton(!0),productForm?.handleErrorMessage()}handleSwapProduct(productUrl,updateFullPage){return html=>{this.productModal?.remove();const selector=updateFullPage?"product-info[id^='MainProduct']":"product-info",variant=this.getSelectedVariant(html.querySelector(selector));this.updateURL(productUrl,variant?.id),updateFullPage?(document.querySelector("head title").innerHTML=html.querySelector("head title").innerHTML,HTMLUpdateUtility.viewTransition(document.querySelector("main"),html.querySelector("main"),this.preProcessHtmlCallbacks,this.postProcessHtmlCallbacks)):HTMLUpdateUtility.viewTransition(this,html.querySelector("product-info"),this.preProcessHtmlCallbacks,this.postProcessHtmlCallbacks)}}renderProductInfo({requestUrl,targetId,callback}){this.abortController?.abort(),this.abortController=new AbortController,fetch(requestUrl,{signal:this.abortController.signal}).then(response=>response.text()).then(responseText=>{if(this.pendingRequestUrl=null,this.dataset.layout=="card"){var wc_forloop_index=parseInt(document.querySelector(`#${targetId}`).getAttribute("data-forloop-index"));const originalHtml=new DOMParser().parseFromString(responseText,"text/html"),html=originalHtml.getElementById(this.id)?originalHtml.getElementById(this.id):originalHtml;wc_forloop_index>
1=0&&html.querySelectorAll(".wc_selector_operation").forEach(function(self,index){self.setAttribute("data-forloop-index",wc_forloop_index);var wc_name_attr=self.getAttribute("name");self.setAttribute("name",wc_name_attr+wc_forloop_index)}),callback(html)}else{const html=new DOMParser().parseFromString(responseText,"text/html");html.tagNam=="PRODUCT-INFO"?html.setAttribute("data-update-url","false"):html.querySelector("product-info")&&this.dataset.isQuickView&&(html.querySelector("product-info").setAttribute("data-update-url","false"),html.querySelector("product-info").setAttribute("data-is-quick-view","true")),callback(html)}}).then(()=>{document.querySelector(`#${targetId}`)?.focus()}).catch(error=>{error.name==="AbortError"?console.log("Fetch aborted by user"):console.error(error)})}getSelectedVariant(productInfoNode){const selectedVariant=productInfoNode.querySelector("variant-selects [data-selected-variant]")?.innerHTML||productInfoNode.querySelector("color-swatch [data-selected-variant]")?.innerHTML;return selectedVariant?JSON.parse(selectedVariant):null}buildRequestUrlWithParams(url,optionValues,shouldFetchFullPage=!1){const params=[];return!shouldFetchFullPage&¶ms.push(`section_id=${this.dataset.originalSection}`),optionValues.length&¶ms.push(`option_values=${optionValues.join(",")}`),`${url}${url.indexOf("?")>=0?"&":"?"}${params.join("&")}`}updateOptionValues(html){const variantSelects=html.querySelector("variant-selects");variantSelects&&HTMLUpdateUtility.viewTransition(this.variantSelectors,variantSelects,this.preProcessHtmlCallbacks)}handleUpdateProductInfo(productUrl,updateFullPage){return html=>{const selector=updateFullPage?"product-info[id^='MainProduct']":"product-info",variant=this.getSelectedVariant(html.querySelector(selector));if(this.dataset.layout=="card"&&(this.dataset.url!=productUrl&&(html.querySelectorAll(".product__media-item").forEach(mediaItem=>{mediaItem.dataset.mediaId=this.replaceStringBeforeLastDash(mediaItem.dataset.mediaId,`${this.dataset.section}-${this.dataset.productId}`)}),this.querySelector(".card__media").innerHTML=html.querySelector(".card__media").innerHTML),this.dataset.url=productUrl),this.pickupAvailability&&typeof this.pickupAvailability.update=="function"&&this.pickupAvailability.update(variant),this.updateOptionValues(html),this.updateURL(productUrl,variant?.id),this.updateVariantInputs(variant?.id),!variant){this.setUnavailable();return}variant.id&&this.dataset.isQuickView&&this.querySelector('input.product-variant-id[name="id"]').setAttribute("value",variant.id),this.updateMedia(html,variant?.featured_media?.id);const updateSourceFromDestination=(id,shouldHide=source=>!1)=>{const source=html.querySelector(`#${id}-${this.sectionId}`);var main_url_1=`#${id}-${this.dataset.section}`,main_url_2=`#${id}-quickadd-${this.dataset.section}`;const destination=this.querySelector(main_url_1)?this.querySelector(main_url_1):this.querySelector(main_url_2);source&&destination&&(destination.innerHTML=source.innerHTML,destination.classList.toggle("hidden",shouldHide(source)))};if(updateSourceFromDestination("price"),updateSourceFromDestination("Sku",({classList})=>classList.contains("hidden")),updateSourceFromDestination("Inventory",({innerText})=>innerText===""),updateSourceFromDestination("badge",({innerText})=>innerText===""),updateSourceFromDestination("vendor"),updateSourceFromDestination("title"),updateSourceFromDestination("Volume"),updateSourceFromDestination("Price-Per-Item",({classList})=>classList.contains("hidden")),this.updateQuantityRules(this.sectionId,html),this.querySelector(`#Quantity-Rules-${this.dataset.section}`)?this.querySelector(`#Quantity-Rules-${this.dataset.section}`)?.classList.remove("hidden"):this.querySelector(`#Quantity-Rules-quickadd-${this.dataset.section}`)?.classList.remove("hidden"),this.querySelector(`#Volume-Note-${this.dataset.section}`)?this.querySelector(`#Volume-Note-${this.dataset.section}`)?.classList.remove("hidden"):this.querySelector(`#Volume-Note-quickadd-${this.dataset.section}`)?.classList.remove("hidden"),html.querySelector(`#ProductSubmitButton-${this.sectionId}`)){var fullSelected=1;html.querySelectorAll(".product-form__input.product-form__input--pill, .product-form__input.product-form__input--swatch, .product_form_input.product-form__input, .product-form__input.product-form__input--dropdown").forEach(function(self,index){if(self.querySelector('input[type="radio"]:checked')&&self.querySelector('input[type="radio"]:checked').getAttribute("value")!==variant.options[index]&&(fullSelected=0),self.querySelector("select")){var selectedValue=self.querySelector("select").selectedOptions[0].getAttribute("value");selectedValue!==variant.options[index]&&(fullSelected=0)}}),fullSelected==0?this.productForm?.toggleSubmitButton(!0,window.variantStrings.unavailable):this.productForm?.toggleSubmitButton(html.querySelector(`#ProductSubmitButton-${this.sectionId}`)?.hasAttribute("disabled")??!0,window.variantStrings.soldOut)}else{var fullSelected=1;html.querySelectorAll(".product-form__input.product-form__input--pill, .product_form_input.product-form__input").forEach(function(self,index){if(self.querySelector('input[type="radio"]:checked')&&self.querySelector('input[type="radio"]:checked').getAttribute("value")!==variant.options[index]&&(fullSelected=0),self.querySelector("select")){var selectedValue=self.querySelector("select").selectedOptions[0].getAttribute("value");selectedValue!==variant.options[index]&&(fullSelected=0)}}),fullSelected==0?this.productForm?.toggleSubmitButton(!0,window.variantStrings.unavailable):this.productForm?.toggleSubmitButton(html.querySelector(`#ProductSubmitButton-quickadd-${this.sectionId}`)?.hasAttribute("disabled")??!0,window.variantStrings.soldOut)}publish(PUB_SUB_EVENTS.variantChange,{data:{sectionId:this.sectionId,html,variant}}
1)}}updateVariantInputs(variantId){const selecter=this.dataset.layout=="card"?this.dataset.section+"-"+this.dataset.productId:this.dataset.section;var $wc_this=this;setTimeout(function(){$wc_this.querySelectorAll(".thumbnail-list__item").forEach(item=>{item.addEventListener("click",function(){const targetMediaId=this.getAttribute("data-img-src-id");$wc_this.querySelectorAll(".protopimg-item").forEach(image=>{image.getAttribute("data-img-src-id")===targetMediaId?image.classList.add("is-active"):image.classList.remove("is-active")})})})},200),this.querySelectorAll(`#product-form-${selecter}, #product-form-installment-${selecter}`).forEach(productForm=>{const input=productForm.querySelector('input[name="id"]');input.value=variantId??"",input.dispatchEvent(new Event("change",{bubbles:!0}))})}updateURL(url,variantId){this.querySelector("share-button")?.updateUrl(`${window.shopUrl}${url}${variantId?`?variant=${variantId}`:""}`),this.dataset.updateUrl!=="false"&&window.history.replaceState({},"",`${url}${variantId?`?variant=${variantId}`:""}`)}setUnavailable(){this.productForm?.toggleSubmitButton(!0,window.variantStrings.unavailable);const selectors=["price","badge","Inventory","Sku","Price-Per-Item","Volume-Note","Volume","Quantity-Rules"].map(id=>`#${id}-${this.dataset.section}`).join(", ");this.querySelectorAll(selectors).forEach(({classList})=>classList.add("hidden"))}updateCardMedia(variantFeaturedMediaId){if(!variantFeaturedMediaId)return;const card=this.closest(".card")||this.querySelector(".card"),newMedia=card.querySelector(`[data-media-id="${this.dataset.section}-${this.dataset.productId}-${variantFeaturedMediaId}"]`);if(!newMedia)return;const modalContent=card.querySelector(".card__media"),parent=newMedia.parentElement;parent.firstChild!=newMedia&&parent.prepend(newMedia)}replaceStringBeforeLastDash(str,replacement){const lastDashIndex=str.lastIndexOf("-");return lastDashIndex===-1?str:replacement+str.substring(lastDashIndex)}updateMedia(html,variantFeaturedMediaId){if(variantFeaturedMediaId)if(this.dataset.layout=="card")this.updateCardMedia(variantFeaturedMediaId);else{const mediaGallerySource=this.querySelector("media-gallery ul"),mediaGalleryDestination=html.querySelector("media-gallery ul"),refreshSourceData=()=>{this.hasAttribute("data-zoom-on-hover")&&typeof enableZoomOnHover=="function"&&enableZoomOnHover(2);const mediaGallerySourceItems=Array.from(mediaGallerySource.querySelectorAll("li[data-media-id]")),sourceSet=new Set(mediaGallerySourceItems.map(item=>item.dataset.mediaId)),sourceMap=new Map(mediaGallerySourceItems.map((item,index)=>[item.dataset.mediaId,{item,index}]));return[mediaGallerySourceItems,sourceSet,sourceMap]};if(mediaGallerySource&&mediaGalleryDestination){let[mediaGallerySourceItems,sourceSet,sourceMap]=refreshSourceData();const mediaGalleryDestinationItems=Array.from(mediaGalleryDestination.querySelectorAll("li[data-media-id]")),destinationSet=new Set(mediaGalleryDestinationItems.map(({dataset})=>dataset.mediaId));let shouldRefresh=!1;if(!this.dataset.isQuickView){for(let i=mediaGalleryDestinationItems.length-1;i>=0;i--)sourceSet.has(mediaGalleryDestinationItems[i].dataset.mediaId)||(mediaGallerySource.prepend(mediaGalleryDestinationItems[i]),shouldRefresh=!0);for(let i=0;i<mediaGallerySourceItems.length;i++)destinationSet.has(mediaGallerySourceItems[i].dataset.mediaId)||(mediaGallerySourceItems[i].remove(),shouldRefresh=!0)}shouldRefresh&&([mediaGallerySourceItems,sourceSet,sourceMap]=refreshSourceData()),mediaGalleryDestinationItems.forEach((destinationItem,destinationIndex)=>{const sourceData=sourceMap.get(destinationItem.dataset.mediaId);sourceData&&sourceData.index!==destinationIndex&&(mediaGallerySource.insertBefore(sourceData.item,mediaGallerySource.querySelector(`li:nth-of-type(${destinationIndex+1})`)),[mediaGallerySourceItems,sourceSet,sourceMap]=refreshSourceData())})}const selector=this.dataset.isQuickView?"quickadd-":"";this.querySelector("media-gallery")?.setActiveMedia?.(`${selector}${this.dataset.section}-${variantFeaturedMediaId}`,!0);const modalContent=this.productModal?.querySelector(".product-media-modal__content"),newM
1odalContent=html.querySelector("product-modal .product-media-modal__content");modalContent&&newModalContent&&(modalContent.innerHTML=newModalContent.innerHTML)}}setQuantityBoundries(){const data={cartQuantity:this.quantityInput.dataset.cartQuantity?parseInt(this.quantityInput.dataset.cartQuantity):0,min:this.quantityInput.dataset.min?parseInt(this.quantityInput.dataset.min):1,max:this.quantityInput.dataset.max?parseInt(this.quantityInput.dataset.max):null,step:this.quantityInput.step?parseInt(this.quantityInput.step):1};let min=data.min;const max=data.max===null?data.max:data.max-data.cartQuantity;max!==null&&(min=Math.min(min,max)),data.cartQuantity>=data.min&&(min=Math.min(min,data.step)),this.quantityInput.min=min,max?this.quantityInput.max=max:this.quantityInput.removeAttribute("max"),this.quantityInput.value=min,publish(PUB_SUB_EVENTS.quantityUpdate,void 0)}fetchQuantityRules(){const currentVariantId=this.productForm?.variantIdInput?.value;currentVariantId&&(this.querySelector(".quantity__rules-cart .loading-overlay").classList.remove("hidden"),fetch(`${this.dataset.url}?variant=${currentVariantId}§ion_id=${this.dataset.section}`).then(response=>response.text()).then(responseText=>{const html=new DOMParser().parseFromString(responseText,"text/html");this.updateQuantityRules(this.dataset.section,html)}).catch(e=>console.error(e)).finally(()=>this.querySelector(".quantity__rules-cart .loading-overlay").classList.add("hidden")))}updateQuantityRules(sectionId,html){if(!this.quantityInput)return;this.setQuantityBoundries();const quantityFormUpdated=html.querySelector(`#Quantity-Form-${sectionId}`),selectors=[".quantity__input",".quantity__rules",".quantity__label"];for(let selector of selectors){const current=this.quantityForm.querySelector(selector),updated=quantityFormUpdated.querySelector(selector);if(!(!current||!updated))if(selector===".quantity__input"){const attributes=["data-cart-quantity","data-min","data-max","step"];for(let attribute of attributes){const valueUpdated=updated.getAttribute(attribute);valueUpdated!==null?current.setAttribute(attribute,valueUpdated):current.removeAttribute(attribute)}}else current.innerHTML=updated.innerHTML}}get productForm(){return this.querySelector("product-form")}get productModal(){return document.querySelector(`#ProductModal-${this.dataset.section}`)}get pickupAvailability(){return this.querySelector("pickup-availability")}get variantSelectors(){return this.querySelector("variant-selects")||this.querySelector("color-swatch")}get relatedProducts(){const relatedProductsSectionId=SectionId.getIdForSection(SectionId.parseId(this.sectionId),"related-products");return document.querySelector(`product-recommendations[data-section-id^="${relatedProductsSectionId}"]`)}get quickOrderList(){const quickOrderListSectionId=SectionId.getIdForSection(SectionId.parseId(this.sectionId),"quick_order_list");return document.querySelector(`quick-order-list[data-id^="${quickOrderListSectionId}"]`)}get sectionId(){return this.dataset.originalSection||this.dataset.section}}),document.addEventListener("change",function(event){if(event.target.classList.contains("wc_selector_operation")){let closestFeature=event.target.closest(".featured_collection_home");if(!closestFeature)return;let dataId=closestFeature.getAttribute("data-id");setTimeout(()=>{closestFeature.querySelectorAll(".wc_selector_operation").forEach(radio=>{let originalName=radio.getAttribute("data-original-name")||radio.getAttribute("name");radio.setAttribute("data-original-name",originalName),radio.setAttribute("name",`${originalName}_${dataId}`)})},1e3)}}); 2//# sourceMappingURL=/cdn/shop/t/98/assets/product-info.js.map?v=52957694368870181601788637934
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.