1(self.webpackChunkapp_project=self.webpackChunkapp_project||[]).push([[5027],{43683:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>i});var a=s(14863),n=s(12737),o=s(38302);class i extends o.default{constructor(e){super(e),this.checkBasketUrl=e.dataset.cartCheckUrl,this.isInvalidBasket="true"===e.dataset.invalidCart,this.addLineItemUrl=e.dataset.addLineItemUrl,this.loaderElement=this.element.querySelector(".cart-products"),this.isInvalidBasket&&this.checkBasket(),this.observeStickyButton(),this.handleEvents(),this.handleA11yAfterUpdate()}handleEvents(){this.moveToWishlistElements=[...this.element.querySelectorAll("button[data-move-to-wishlist]")],this.moveToWishlistElements.forEach((e=>{e.removeEventListener("click",this.handleMoveToWishList.bind(this)),e.addEventListener("click",this.handleMoveToWishList.bind(this))})),n.Z.on("product:afterAddToCart",this.handleAddToCart.bind(this))}async handleAddToCart(e){if(e&&e.pid){n.Z.emit("loader:start",{element:this.loaderElement});const t=await(0,a.ZP)("".concat(this.addLineItemUrl,"?pid=").concat(e.pid).concat(e.isBonus?"&isBonusProductLineItem=true":"")),s=await t.json();if(s.error)window.location.href=s.redirectUrl;else if(!e.addToCartResponse.error){this.totalsChange(s.basket.totals),this.shipmentChange(s.basket.shipments,s.basket.totals&&s.basket.totals.shippingCostAdjusted),this.promoCodeChange(s.promoTemplate),this.bonusProductsChange(s.bonusChoiceTemplate,s.bonusChoicePanelTemplate);const t=this.element.querySelector('.cart__product[data-pid="'.concat(s.id,'"]'));e.isBonus?this.addBonusLineItem(t,s.lineItemTemplate):t?this.updateLineItem(t,s.lineItemTemplate):this.addLineItemTemplate(s.lineItemTemplate),this.handleCounterChange(e.addToCartResponse)}n.Z.emit("loader:end",{element:this.loaderElement}),n.Z.emit("body:lock",{lock:!1})}}
1async checkBasket(){n.Z.emit("loader:start",{element:this.loaderElement});const e=await(0,a.ZP)(this.checkBasketUrl),t=await e.json();n.Z.emit("loader:end",{element:this.loaderElement}),t.isError&&t.checkedItems.filter((e=>e.error)).forEach((e=>{var t=this.element.querySelector('.cart__product[data-pid="'.concat(e.pid,'"]'));this.applyErrors(e,t),this.disableButtons(e,t)}))}disableButtons(e,t){if(e.message.length>0){const s=t.querySelector(".quantity-input"),a=t.querySelector(".quantity-input .increase"),n=t.querySelector(".container-price .pricing"),o=t.querySelectorAll("button[data-edit-line-item]");switch(e.status){case"availableInOtherVariation":s.classList.add("disabled"),n.classList.add("disabled");break;case"availableInOtherQuantity":a.classList.add("disabled");break;case"notAvailable":s.classList.add("disabled"),n.classList.add("disabled"),o.forEach((e=>e.classList.add("disabled")))}}}applyErrors(e,t){if(e.message.length>0){const s=this.element.querySelector('.js-error-cart-item[data-item-id="'.concat(e.pid,'"]'));s.querySelector(".js-error-message").innerHTML=e.message;let a=this.element.querySelector(".js_preorder-section");a&&(a.classList.add("hidden"),s.classList.add("has-margin-top")),s.classList.remove("hidden"),t.classList.add("has-error")}}async handleMoveToWishList(e){n.Z.emit("body:loading");const t=await(0,a.ZP)(e.target.dataset.action),s=await t.json();s.error?this.handleErrorResponse(s):this.handleCartChange(s),n.Z.emit("body:loaded"),n.Z.emit("notification:showPopup",{msg:s.msg})}handleCounterChange(e,t){const s=document.querySelector("#minicart-product-counter"),a=document.querySelector(".n-quantity-items"),n=e.basket?e.basket.numItems:e.cart?e.cart.numItems:0;s&&(s.innerHTML=n,s.classList.toggle("hidden",n<=0)),a&&(a.innerHTML=n,a.classList.toggle("hidden",n<=0))}handleCartChange(e){if(e.wishlistAddError||n.Z.emit("wishlist:add",{pid:e.pid}),!e.basket.items.length)return void n.Z.emit("cart:empty");const t=this.element.querySelector('.cart__product[data-pid="'.concat(e.pid,'"]'));t&&t.parentElement.removeChild(t),e.toBeDeletedBonusProducts.length>0&&e.toBeDeletedBonusProducts.forEach((e=>{const t=this.element.querySelector('.cart__product[data-pid="'.concat(e,'"]'));t&&t.parentElement.removeChild(t)})),this.totalsChange(e.basket.totals),this.shipmentChange(e.basket.shipments,e.basket.totals&&e.basket.totals.shippingCostAdjusted),this.promoCodeChange(e.promoTemplate),this.bonusProductsChange(e.bonusChoiceTemplate,e.bonusChoicePanelTemplate),this.handleCounterChange(e,!0)}promoCodeChange(e){const t=document.querySelector(".coupons-and-promos");t&&(t.innerHTML=e)}handleErrorResponse(e){n.Z.emit("notification:showPopup",{msg:e.msg})}totalsChange(e){const t=document.querySelector(".cart-grand-total"),s=document.querySelector(".sub-total"),a=document.querySelector(".cart-sales-tax .tax-total"),n=document.querySelector(".cart-duties-tax .tax-total");t&&(t.innerHTML=e.grandTotal),s&&(s.innerHTML=e.subTotal),a&&(a.innerHTML=e.totalTax),n&&(n.innerHTML=e.duties)}shipmentChange(e,t){let s="",a="";e[0].shippingMethods.forEach((n=>{e[0].selectedShippingMethod===n.ID&&(s=n.displayName,a=t&&t.formatted)}));const n=document.querySelector(".shipping-type"),o=document.querySelector(".shipping-total-cost");a.length>0?(n&&(n.innerHTML=s),o&&(o.parentElement.style.display="flex",o.innerHTML=a)):o&&(o.parentElement.style.display="none")}addLineItemTemplate(e){const t=(new DOMParser).parseFromString(e,"text/html");let s=t.querySelector(".cart__product");s||(s=t.querySelector(".card")),this.loaderElement.appendChild(s);const a=document.querySelector('div[data-component="CartEditLineItemModal"]');a&&a.componentInstance.setupLoadProduct();const n=s.querySelector("button[data-move-to-wishlist");n&&n.addEventListener("click",this.handleMoveToWishList.bind(this))}updateLineItem(e,t){const s=e.querySelector(".js-quantity-visible"),a=e.querySelector('input[name="quantity"]'),n=e.querySelector(".price-container"),o=(new DOMParser).parseFromString(t,"text/html").querySelector(".price-container"),i=parseInt(a.value)+1;n.innerHTML=o.innerHTML,a.value=i,s.innerHTML=i}addBonusLineItem(e,t){e.innerHTML=t,document.querySelector('div[data-component="C
1artEditLineItemModal"]').componentInstance.setupLoadProduct();const s=e.querySelector("button[data-move-to-wishlist");s&&(s.removeEventListener("click",this.handleMoveToWishList.bind(this)),s.addEventListener("click",this.handleMoveToWishList.bind(this)))}bonusProductsChange(e,t){const s=this.element.querySelector(".bonus-choice-wrapper"),a=document.querySelector(".bonus-panel-wrapper");s&&a&&(s.innerHTML="",a.innerHTML="",e&&t&&(s.innerHTML=e,a.innerHTML=t))}observeStickyButton(){const e=this.element.querySelector(".cart__totals-wrapper--buttons");document.addEventListener("scroll",(()=>{const t=e.getBoundingClientRect();e.classList.toggle("is-sticky",window.innerHeight-t.bottom<=0)}))}destroy(){n.Z.off("product:afterAddToCart",this.handleAddToCart.bind(this)),super.destroy()}handleA11yAfterUpdate(){const e=sessionStorage.getItem("cartUpdateStatus"),t=sessionStorage.getItem("focusUUID");if("updated"===e&&t){const e=document.getElementById("a11y-status-message");if(e){const s=e.getAttribute("data-msg-update");e.textContent="",setTimeout((()=>{e.textContent=s;const a=document.querySelector('[data-line-item="'.concat(t,'"]'));if(a){const e=a.querySelector("button[data-edit-line-item]");e&&e.focus()}}),100)}sessionStorage.removeItem("cartUpdateStatus"),sessionStorage.removeItem("focusUUID")}}}}}]);
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.