PageSourceSearch

https://boutique.rcnarbonnais.fr/cdn/shop/t/2/assets/component-cart-quantity.js?v=9607346282266633731732546863

js rcnarbonnais.fr collected 2026-10-02 22:43:59 UTC 4,787 bytes, 2 lines download raw bytes

1(()=>{class CartQuantity extends HTMLElement{constructor(){super(),this.removeButton=this.querySelector("[data-cart-remove-item]"),this.adjustButtons=this.querySelectorAll("[data-cart-quantity-button]"),this.input=this.querySelector("[data-cart-quantity-input]"),this.cartCountIndicator=document.querySelector("[data-cart-count-indicator]"),this.handleButtonClick=this.handleButtonClick.bind(this),this.handleInputChange=this.handleInputChange.bind(this),this.handleQuantityChange=this.handleQuantityChange.bind(this),this.handleRemoveItem=this.handleRemoveItem.bind(this),this.updateCart=this.updateCart.bind(this),this.updateLineItem=this.updateLineItem.bind(this),this.updateCartCountIndicator=this.updateCartCountIndicator.bind(this),this.handleCartErrors=this.handleCartErrors.bind(this),this.setLoadingState=this.setLoadingState.bind(this),this.hideLoadingState=this.hideLoadingState.bind(this)}connectedCallback(){window.wetheme.webcomponentRegistry.register({key:"component-cart-quantity"}),this.removeButton?.addEventListener("click",this.handleRemoveItem),this.adjustButtons.forEach(button=>button.addEventListener("click",this.handleButtonClick)),this.input?.addEventListener("change",this.handleInputChange)}handleButtonClick(e){e.preventDefault();const previousValue=this.input.value,adjustment=e.currentTarget.name==="plus"?1:-1;this.adjustQuantity(adjustment),previousValue!==this.input.value&&this.handleQuantityChange(this.input.value)}adjustQuantity(adjustment){const newValue=parseInt(this.input.value)+adjustment;this.input.value=isNaN(newValue)?1:newValue,this.input.min&&parseInt(this.input.value)<parseInt(this.input.min)&&(this.input.value=this.input.min)}handleInputChange(e){e.preventDefault(),isNaN(this.input.value)&&(this.input.value=1),this.input.min&&parseInt(this.input.value)<parseInt(this.input.min)&&(this.input.value=this.input.min),this.handleQuantityChange(this.input.value)}handleQuantityChange(inputValue){const quantity=parseInt(inputValue);this.updateCart(this.itemIndex,quantity)}handleRemoveItem(){this.updateCart(this.itemIndex,0)}async updateCart(line,quantity){try{this.setLoadingState();let response=await this.updateLineItem(line,quantity);if(!response)return;if(this.hasGiftWrap){const adjustment=quantity-this.previousQuantity,cart=await this.getCart();this.getGiftWrapLine(cart)&&this.getGiftWrapQuantity(cart)&&(response=await this.updateLineItem(this.getGiftWrapLine(cart),this.getGiftWrapQuantity(cart)+adjustment))}if(!response)return;window.eventBus.emit("update:cart:drawer",response),this.updateCartCountIndicator()}catch(error){console.error("Error updating cart:",error)}}async updateLineItem(line,quantity){try{const body=JSON.stringify({line,quantity,sections:"cart-drawer"}),responseText=await(await fetch(window.routes.cart_change_url,{...this.fetchConfig(),body})).text();if(!responseText)return this.handleCartErrors(),null;const parsedResponse=JSON.parse(responseText);return parsedResponse.errors?(this.handleCartErrors(line,parsedResponse.errors),null):parsedResponse}catch(error){console.error("Error updating cart line item:",error)}}fetchConfig(type="json"){return{method:"POST",headers:{"Content-Type":"application/json",Accept:`application/${type}`}}}handleCartErrors(line,errors){this.hideLoadingState(),this.input.value=this.input.getAttribute("value"),this.renderErrorMessage(line,errors)}renderErrorMessage(line,message){const errorElement=document.querySelector(`[data-cart-error-index="${line}"]`);if(!errorElement)return;errorElement.innerHTML=message,errorElement.setAttribute("aria-hidden",!1),errorElement.getAttribute("data-cart-is-last-item")==="true"&&errorElement.scrollIntoView({behavior:"smooth"})}async getCart(){try{return await(await fetch(`${window.routes.cart_url}?view=compare`)).json()}catch(error){console.error(`Error fetching cart: ${error.description||error.message}`)}}updateCartCountIndicator(){this.cartCountIndicator&&this.getCart().then(cart=>window.wetheme.updateCartCount(cart))}getGiftWrapLine(cart){return cart.items.findIndex(item=>item.variant_id===this.giftWrapVariantId)+1||null}getGiftWrapQuantity(cart){return cart.items.find(item=>item.variant_id===this.giftWrapVariantId)?.quantity||null}setLoadingState(){this.classList.add("is-loading")}hideLoadingState(){this.classList.remove("is-loading")}get itemIndex(){return parseInt(this.getAttribute("data-item-index"))}get previousQuantity(){return parseInt(this.getAttribute("data-item-quantity"))}get hasGiftWrap(){return this.getAttribute("data-has-gift-wrap")==="true"}get giftWrapVariantId(){return parseInt(this.getAttribute("data-gift-wrap-variant-id"))}}customElements.define("cart-quantity",CartQuantity)})();
2//# sourceMappingURL=/cdn/shop/t/2/assets/component-cart-quantity.js.map?v=9607346282266633731732546863

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.