PageSourceSearch

https://www.lussostone.com/cdn/shop/t/318/assets/product-info.js?v=160687597663295635431785844650

js lussostone.com collected 2026-10-02 07:41:30 UTC 5,144 bytes, 2 lines download raw bytes

1customElements.get("product-info")||customElements.define("product-info",class extends HTMLElement{constructor(){super(),this.input=this.querySelector(".quantity__input"),this.currentVariant=this.querySelector(".product-variant-id"),this.variantSelects=this.querySelector("variant-radios"),this.submitButton=this.querySelector('[type="submit"]')}cartUpdateUnsubscriber=void 0;variantChangeUnsubscriber=void 0;connectedCallback(){this.input&&(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))),this.variantChangeUnsubscriber=subscribe(PUB_SUB_EVENTS.variantChange,event=>{const sectionId=this.dataset.originalSection?this.dataset.originalSection:this.dataset.section;event.data.sectionId===sectionId&&(this.updateVariantImages(event.data),this.updateQuantityRules(event.data.sectionId,event.data.html),this.updateAccordions(event.data.sectionId,event.data.html),this.setQuantityBoundries(),this.syncToThreeSixtyModal(event.data))})))}disconnectedCallback(){this.cartUpdateUnsubscriber&&this.cartUpdateUnsubscriber(),this.variantChangeUnsubscriber&&this.variantChangeUnsubscriber()}syncToThreeSixtyModal(data){}updateVariantImages({variant,html,variants}){if(!variants.closest(`[id^="MainProduct-${this.dataset.section}"]`))return;const currentMediaGallery=document.querySelector("media-gallery"),newMediaGallery=html.querySelector("media-gallery"),currentMediaModal=document.querySelector("product-modal"),newMediaModal=html.querySelector("product-modal");currentMediaGallery&&newMediaGallery&&currentMediaGallery!=newMediaGallery&&currentMediaGallery.replaceWith(newMediaGallery),currentMediaModal&&newMediaModal&&currentMediaModal!=newMediaModal&&currentMediaModal.replaceWith(newMediaModal)}updateAccordions(sectionId,html){const currentContainer=document.getElementById(`ProductAccordions-${sectionId}`),updatedContainer=html.getElementById(`ProductAccordions-${sectionId}`);if(!currentContainer||!updatedContainer)return;currentContainer.querySelectorAll("accordion-wrapper[data-type]").forEach(currentAccordion=>{const type=currentAccordion.dataset.type,updatedAccordion=updatedContainer.querySelector(`accordion-wrapper[data-type="${type}"]`);if(!updatedAccordion)return;const currentContent=currentAccordion.querySelector(".accordion__content"),updatedContent=updatedAccordion.querySelector(".accordion__content");currentContent&&updatedContent&&(currentContent.innerHTML=updatedContent.innerHTML),currentAccordion.hidden=updatedAccordion.hidden});const currentSamples=currentContainer.querySelector("accordion-wrapper.js-samples-accordion"),updatedSamples=updatedContainer.querySelector("accordion-wrapper.js-samples-accordion");if(currentSamples&&updatedSamples){const currentContent=currentSamples.querySelector(".accordion__content"),updatedContent=updatedSamples.querySelector(".accordion__content");currentContent&&updatedContent&&(currentContent.innerHTML=updatedContent.innerHTML)}else currentSamples&&!updatedSamples?currentSamples.remove():!currentSamples&&updatedSamples&&currentContainer.appendChild(updatedSamples)}setQuantityBoundries(){const data={cartQuantity:this.input.dataset.cartQuantity?parseInt(this.input.dataset.cartQuantity):0,min:this.input.dataset.min?parseInt(this.input.dataset.min):1,max:this.input.dataset.max?parseInt(this.input.dataset.max):null,step:this.input.step?parseInt(this.input.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.input.min=min,this.input.max=max,this.input.value=min,publish(PUB_SUB_EVENTS.quantityUpdate,void 0)}fetchQuantityRules(){!this.currentVariant||!this.currentVariant.value||(this.querySelector(".quantity__rules-cart .loading-overlay").classList.remove("hidden"),fetch(`${this.dataset.url}?variant=${this.currentVariant.value}&section_id=${this.dataset.section}`).then(response=>response.text()).then(responseText=>{const html=new DOMParser().parseFromString(responseText,"text/html");this.updateQuantityRules(this.dataset.section,html),this.setQuantityBoundries()}).catch(e=>{console.error(e)}).finally(()=>{this.querySelector(".quantity__rules-cart .loading-overlay").classList.add("hidden")}))}updateQuantityRules(sectionId,html){const quantityFormUpdated=html.getElementById(`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)}}else current.innerHTML=updated.innerHTML}}});
2//# sourceMappingURL=/cdn/shop/t/318/assets/product-info.js.map?v=160687597663295635431785844650

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.