1var v=Object.defineProperty,P=(S,f,t)=>f in S?v(S,f,{enumerable:!0,configurable:!0,writable:!0,value:t}):S[f]=t,y=(S,f,t)=>P(S,typeof f!="symbol"?f+"":f,t);import{P as q}from"./_constants.BwC9qmjn.js";import{s as I,p as _}from"./_pubsub._CAGtZQ9.js";import{H as w}from"./_html-update.B804_CxA.js";import{e as U}from"./magnify.js";customElements.get("product-info")||customElements.define("product-info",class extends HTMLElement{constructor(){super(),y(this,"quantityInput"),y(this,"quantityForm"),y(this,"onVariantChangeUnsubscriber"),y(this,"cartUpdateUnsubscriber"),y(this,"abortController"),y(this,"pendingRequestUrl",null),y(this,"preProcessHtmlCallbacks",[]),y(this,"postProcessHtmlCallbacks",[]),this.quantityInput=this.querySelector(".quantity__input")}connectedCallback(){this.initializeProductSwapUtility(),this.onVariantChangeUnsubscriber=I(q.optionValueSelectionChange,this.handleOptionValueChange.bind(this)),this.initQuantityHandlers(),this.dispatchEvent(new CustomEvent("product-info:loaded",{bubbles:!0})),this.wrapModalOpeners(),this.wrapCollapsibleRows()}addPreProcessCallback(t){this.preProcessHtmlCallbacks.push(t)}initQuantityHandlers(){this.quantityInput&&(this.quantityForm=this.querySelector(".product-form__quantity"),this.quantityForm&&(this.setQuantityBoundries(),this.dataset.originalSection||(this.cartUpdateUnsubscriber=I(q.cartUpdate,this.fetchQuantityRules.bind(this)))))}disconnectedCallback(){var t;this.onVariantChangeUnsubscriber(),(t=this.cartUpdateUnsubscriber)==null||t.call(this)}initializeProductSwapUtility(){this.preProcessHtmlCallbacks.push(t=>t.querySelectorAll(".scroll-trigger").forEach(i=>i.classList.add("scroll-trigger--cancel"))),this.postProcessHtmlCallbacks.push(t=>{var i,e,r;(e=(i=window?.Shopify)==null?void 0:i.PaymentButton)==null||e.init(
1),(r=window?.ProductModel)==null||r.loadShopifyXR()})}handleOptionValueChange({data:{event:t,target:i,selectedOptionValues:e}}){if(!this.contains(t.target))return;this.resetProductFormState();const r=i.dataset.productUrl||this.pendingRequestUrl||this.dataset.url;this.pendingRequestUrl=r;const a=this.dataset.url!==r,s=this.dataset.updateUrl==="true"&&a;this.renderProductInfo({requestUrl:this.buildRequestUrlWithParams(r,e,s),targetId:i.id,callback:a?this.handleSwapProduct(r,s):this.handleUpdateProductInfo(r)})}resetProductFormState(){const t=this.productForm;t?.toggleSubmitButton(!0),t?.handleErrorMessage()}handleSwapProduct(t,i){return e=>{var s;(s=this.productModal)==null||s.remove();const r=i?"product-info[id^='MainProduct']":"product-info",a=this.getSelectedVariant(e.querySelector(r));this.updateURL(t,a?.id),i?(document.querySelector("head title").innerHTML=e.querySelector("head title").innerHTML,w.viewTransition(document.querySelector("main"),e.querySelector("main"),this.preProcessHtmlCallbacks,this.postProcessHtmlCallbacks)):w.viewTransition(this,e.querySelector("product-info"),this.preProcessHtmlCallbacks,this.postProcessHtmlCallbacks)}}renderProductInfo({requestUrl:t,targetId:i,callback:e}){var r;(r=this.abortController)==null||r.abort(),this.abortController=new AbortController,fetch(t,{signal:this.abortController.signal}).then(a=>a.text()).then(a=>{this.pendingRequestUrl=null;const s=new DOMParser().parseFromString(a,"text/html");e(s)}).then(()=>{var a;(a=document.querySelector(`#${i}`))==null||a.focus()}).catch(a=>{a.name==="AbortError"?console.log("Fetch aborted by user"):console.error(a)})}getSelectedVariant(t){var e;const i=(e=t.querySelector("variant-selects [data-selected-variant]"))==null?void 0:e.innerHTML;return i?JSON.parse(i):null}buildRequestUrlWithParams(t,i,e=!1){const r=[];return!e&&r.push(`section_id=${this.sectionId}`),i.length&&r.push(`option_values=${i.join(",")}`),t.includes("?view")?`${t}&${r.join("&")}`:`${t}?${r.join("&")}`}updateOptionValues(t){const i=t.querySelector("variant-selects");i&&w.viewTransition(this.variantSelectors,i,this.preProcessHtmlCallbacks)}handleUpdateProductInfo(t){return i=>{var s,n,d,c,u,p;const e=this.getSelectedVariant(i);if((s=this.pickupAvailability)==null||s.update(e),this.updateOptionValues(i),this.updateURL(t,e?.id,!0),this.updateVariantInputs(e?.id),!e){this.setUnavailable();return}this.updateMedia(i,(n=e?.featured_media)==null?void 0:n.id);const r=(o,h=m=>!1)=>{const m=i.getElementById(`${o}-${this.sectionId}`),l=this.querySelector(`#${o}-${this.dataset.section}`);m&&l&&(l.innerHTML=m.innerHTML,l.classList.toggle("hidden",h(m)))};r("price"),r("Sku",({classList:o})=>o.contains("hidden")),r("Inventory",({innerText:o})=>o===""),r("Volume"),r("Price-Per-Item",({classList:o})=>o.contains("hidden")),this.updateQuantityRules(this.sectionId,i),(d=this.querySelector(`#Quantity-Rules-${this.dataset.section}`))==null||d.classList.remove("hidden"),(c=this.querySelector(`#Volume-Note-${this.dataset.section}`))==null||c.classList.remove("hidden");let a=this.classList.contains("product-info--modal")?`ProductSubmitButton-quickadd-${this.sectionId}`:`ProductSubmitButton-${this.sectionId}`;(p=this.productForm)==null||p.toggleSubmitButton(((u=i.getElementById(a))==null?void 0:u.hasAttribute("disabled"))??!0,window.variantStrings.soldOut),_(q.variantChange,{data:{sectionId:this.sectionId,html:i,variant:e}})}}updateVariantInputs(t){this.querySelectorAll(`#product-form-${this.dataset.section}, #product-form-installment-${this.dataset.section}`).forEach(i=>{const e=i.querySelector('input[name="id"]');e.value=t??"",e.dispatchEvent(new Event("change",{bubbles:!0}))})}updateURL(t,i,e=!1){var d;const r=new URL(t,window.location.origin).pathname,a=e&&window.location.pathname.endsWith(r)?window.location.pathname:t,s=new URL(a,window.location.origin);i?s.searchParams.set("variant",i):s.searchParams.delete("variant");const n=`${s.pathname}${s.search}${s.hash}`;(d=this.querySelector("share-button"))==null||d.updateUrl(`${window.shopUrl}${n}`),this.dataset.updateUrl!=="false"&&window.history.replaceState({},"",n)}setUnavailable(){var i;(i=this.productForm)==null||i.toggleSubmitButton(!0,window.variantStrings.unavailable);const t=["price","Inventory","Sku","Price-Per-Item","Volume-Note","Volume","Quantity-Rules"].map(e=>`#${e}-${this.dataset.section}`).join(", ");document.querySelectorAll(t).forEach(({classList:e})=>e.add("hidden"))}updateMedia(t,i){var e,r;i&&(this.updateMainGallery(t),this.updateThumbnailsGallery(t),(r=(e=this.querySelector("media-gallery-swiper"))==null?void 0:e.setActiveMedia)==null||r.call(e,`${this.dataset.section}-${i}`))}updateMainGallery(t){var s;const i=(s=this.querySelector("media-gallery-swiper"))==null?void 0:s.elements.viewer,e=this.querySelector("media-gallery-swiper .product__media-list"),r=t.querySelector("media-gallery-swiper .product__media-list"),a=()=>{this.hasAttribute("data-zoom-on-hover")&&U();const n=Array.from(e.querySelectorAll(".product__media-item[data-media-id]")),d=new Set(n.map(u=>u.dataset.mediaId)),c=new Map(n.map((u,p)=>[u.dataset.mediaId,{item:u,index:p}]));return[n,d,c]};if(e&&r){let[n,d,c]=a();const u=Array.from(r.querySelectorAll(".product__media-item[data-media-id]")),p=new Set(u.map(({dataset:h})=>h.mediaId));let o=!1;for(let h=u.length-1;h>=0;h--)d.has(u[h].dataset.mediaId)||(e.prepend(u[h]),o=!0);for(let h=0;h<n.length;h++)p.has(n[h].dataset.mediaId)||(n[h].remove(),o=!0);o&&([n,d,c]=a()),u.forEach((h,m)=>{const l=c.get(h.dataset.mediaId);l&&l.index!==m&&(e.insertBefore(l.item,e.querySelector(`.product__media-item:nth-of-type(${m+1})`)),[n,d,c]=a())}
1),i.swiper&&i.swiper.update()}}updateThumbnailsGallery(t){var s,n,d;const i=(n=(s=this.querySelector("media-gallery-swiper"))==null?void 0:s.elements.thumbnails)==null?void 0:n.querySelector(".swiper");if(!i)return;const e=this.querySelector("media-gallery-swiper .product__thumbnails-list"),r=t.querySelector("media-gallery-swiper .product__thumbnails-list"),a=()=>{const c=Array.from(e.querySelectorAll(".product__thumbnail[data-target]")),u=new Set(c.map(o=>o.dataset.target)),p=new Map(c.map((o,h)=>[o.dataset.target,{item:o,index:h}]));return[c,u,p]};if(e&&r){let[c,u,p]=a();const o=Array.from(r.querySelectorAll(".product__thumbnail[data-target]")),h=new Set(o.map(({dataset:l})=>l.target));let m=!1;for(let l=o.length-1;l>=0;l--)u.has(o[l].dataset.target)||(e.prepend(o[l]),o[l].querySelector("button").addEventListener("click",()=>{var b;(b=i.closest("media-gallery-swiper"))==null||b.setActiveMedia(o[l].dataset.target,!1)}),m=!0);for(let l=0;l<c.length;l++)h.has(c[l].dataset.target)||(o[l].querySelector("button").removeEventListener("click",(d=this.closest("media-gallery-swiper"))==null?void 0:d.setActiveMedia.bind(this,mediaToSwitch.dataset.target,!1)),c[l].remove(),m=!0);m&&([c,u,p]=a()),o.forEach((l,b)=>{const g=p.get(l.dataset.target);g&&g.index!==b&&(e.insertBefore(g.item,e.querySelector(`.product__thumbnail:nth-of-type(${b+1})`)),[c,u,p]=a())}),i.swiper&&i.swiper.update()}}setQuantityBoundries(){const t={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 i=t.min;const e=t.max===null?t.max:t.max-t.cartQuantity;e!==null&&(i=Math.min(i,e)),t.cartQuantity>=t.min&&(i=Math.min(i,t.step)),this.quantityInput.min=Math.max(i,1);let r=this.querySelector(".form .product-form__submit");i<=0?r&&(r.disabled=!0):r&&(r.disabled=!1),e?this.quantityInput.max=e:this.quantityInput.removeAttribute("max"),this.quantityInput.value=Math.max(i,1),_(q.quantityUpdate,void 0)}fetchQuantityRules(){var e,r;const t=(r=(e=this.productForm)==null?void 0:e.variantIdInput)==null?void 0:r.value;if(!t)return;const i=this.querySelector(".quantity__rules-cart .loading__spinner");i?.classList.remove("hidden"),fetch(`${this.dataset.url}?variant=${t}§ion_id=${this.dataset.section}`).then(a=>{if(a.ok)return a.text()}).then(a=>{const s=new DOMParser().parseFromString(a,"text/html");this.updateQuantityRules(this.dataset.section,s)}).catch(a=>console.error(a)).finally(()=>i.classList.add("hidden"))}updateQuantityRules(t,i){if(!this.quantityInput)return;const e=i.getElementById(`Quantity-Form-${t}`);if(!e)return;const r=[".quantity__input",".quantity__rules-cart",".quantity__label",".quantity__label__info"];for(let a of r){const s=this.quantityForm.querySelector(a),n=e.querySelector(a);if(!(!s||!n))if(a===".quantity__input"){const d=["data-cart-quantity","data-min","data-max","step"];for(let c of d){const u=n.getAttribute(c);u!==null?s.setAttribute(c,u):s.removeAttribute(c)}}else s.innerHTML!==n.innerHTML&&(s.innerHTML=n.innerHTML)}this.setQuantityBoundries()}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")}get relatedProducts(){const t=SectionId.getIdForSection(SectionId.parseId(this.sectionId),"related-products");return document.querySelector(`product-recommendations[data-section-id^="${t}"]`)}get quickOrderList(){const t=SectionId.getIdForSection(SectionId.parseId(this.sectionId),"quick_order_list");return document.querySelector(`quick-order-list[data-id^="${t}"]`)}get sectionId(){return this.dataset.originalSection||this.dataset.section}wrapModalOpeners(){const t=document.querySelectorAll(".product-popup-modal__opener");function i(r){if(r.length===0)return;const a=document.createElement("div");a.className="product__popups-wrapper",r[0].parentNode.insertBefore(a,r[0]),r.forEach(s=>a.appendChild(s))}let e=[];t.forEach((r,a)=>{a===0||r.previousElementSibling===t[a-1]?e.push(r):(i(e),e=[r])}),i(e)}wrapCollapsibleRows(){const t=this,i=this.querySelectorAll(".product__accordion");function e(a){if(a.length===0)return;const s=document.createElement("div");s.className="product__accordions-wrapper",a[0].parentNode.insertBefore(s,a[0]),a.forEach(n=>
1{n.querySelector("summary").addEventListener("click",t.closeSiblingAccordions),s.appendChild(n)})}let r=[];i.forEach((a,s)=>{s===0||a.previousElementSibling===i[s-1]?r.push(a):(e(r),r=[a])}),e(r)}closeSiblingAccordions(t){let i=t.target.closest("summary");t.target.closest(".product__accordions-wrapper").querySelectorAll(".product__accordion details").forEach(r=>{r.querySelector("summary")!=i&&r.removeAttribute("open")}),requestAnimationFrame(()=>{requestAnimationFrame(()=>{const r=document.querySelector(".shopify-section-header-sticky, .header--sticky"),a=r?r.offsetHeight+20:20,s=i.getBoundingClientRect(),n=window.pageYOffset+s.top-a,d=Math.max(0,n);window.scrollTo({top:d,behavior:"smooth"})})})}}); 2//# sourceMappingURL=/cdn/shop/t/24/assets/product-info.js.map?v=46558626619240242241787223180
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.