1"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[87382],{382:(t,e,i)=>{i.r(e),i.d(e,{default:()=>s});class s extends window.PluginBaseClass{init(){if(this.initVariables(),0===this.rows.length||!this.btn){this.quantityInput&&(this.quantityInput.addEventListener("input",this.onQuantityChange.bind(this)),this.quantityInput.addEventListener("blur",this.onQuantityBlur.bind(this)));return}this.validQuantities=Array.from(this.rows).map(t=>parseInt(t.querySelector("[data-row-quantity]").innerHTML,10)),this.getLowestPrice()&&(this.setSelectedRow(),this.updatePriceOnly(),this.setEventListeners(),this.el.initPrice=this.priceSelector.innerHTML)}initVariables(){var t,e,i,s;(t=this.el.querySelector("button"))===null||void 0===t||t.setAttribute("disabled","disabled"),this.card=this.el,this.btn=this.card.querySelector("[data-add-to-cart]"),this.rows=this.card.querySelectorAll("[data-rows-selector]"),this.quantityInput=this.card.querySelector("[data-buy-quantity]"),this.priceSelector=this.card.querySelector("[data-price-selector]"),this.minPurchase=(e=this.card.querySelector("[data-min-purchase]"))!==null&&void 0!==e?e:1,this.maxPurchase=(i=this.card.querySelector("[data-max-purchase]"))!==null&&void 0!==i?i:1,this.purchaseSteps=(s=this.card.querySelector("[data-purchase-steps]"))!==null&&void 0!==s?s:1,this.lowestPrice=null,this.lowestPriceRow=null,this.selectedRow=null,this.inputQuantity=null,this.debounceTimer=null,this.validQuantities=[]}getLowestPrice(){for(let t=0;t<this.rows.length;t++){let e=this.rows[t].querySelector("[data-row-price]");if(!e)return!1;let i=Number(e.innerHTML.replace(/[^0-9\.-]+/g,""));(null===this.lowestPrice||this.lowestPrice>i)&&(this.lowestPrice=i,this.lowestPriceRow=t)}return!0}setEventListeners(){if(this.quantityInput&&(this.quantityInput.addEventListener("input",this.onQuantityChange.bind(this)),this.quantityInput.addEventListener("blur",this.onQuantityBlur.b
1ind(this))),this.rows)for(let t of this.rows)t.addEventListener("click",this.onRowClick.bind(this,t))}onRowClick(t){this.selectedRow=t;let e=parseInt(this.selectedRow.querySelector("[data-row-quantity]").innerHTML,10);this.resetSelectedRow(),this.validateAndUpdate(e,!0)}onQuantityChange(t){let e=parseInt(t.target.value.trim(),10);isNaN(e)?this.changeTotal(0):this.changeTotal(e),this.activateButtonIfValid(e);let i=parseInt(this.purchaseSteps.value,10);clearTimeout(this.debounceTimer),1===i?this.runValidation(!0):this.debounceTimer=setTimeout(()=>{this.runValidation(!0)},500)}onQuantityBlur(){clearTimeout(this.debounceTimer),this.runValidation(!0)}activateButtonIfValid(t){let e=parseInt(this.minPurchase.value,10),i=parseInt(this.maxPurchase.value,10),s=this.el.querySelector("button");!isNaN(t)&&t>=e&&t<=i?null==s||s.removeAttribute("disabled"):null==s||s.setAttribute("disabled","disabled")}runValidation(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=parseInt(this.quantityInput.value.trim(),10);if(isNaN(e)){var i;(i=this.el.querySelector("button"))===null||void 0===i||i.setAttribute("disabled","disabled"),this.changeTotal(0);return}this.validateAndUpdate(e,!1),t&&(this.quantityInput.value=this.inputQuantity)}validateAndUpdate(t,e){if(0===this.rows.length||!this.btn){this.checkLegalInput(t),isNaN(this.inputQuantity)?this.el.querySelector("button").setAttribute("disabled","disabled"):this.el.querySelector("button").removeAttribute("disabled"),this.changeTotal(this.inputQuantity);return}this.checkLegalInput(t);let i=0;if(isNaN(this.inputQuantity))this.selectedRow||this.setSelectedRow(),this.el.querySelector("button").setAttribute("disabled","disabled");else{for(let t of this.rows){let e=parseInt(t.querySelector("[data-row-quantity]").innerHTML,10);if(this.inputQuantity<e)continue;let i=parseInt(this.selectedRow.querySelector("[data-row-quantity]").innerHTML,10);this.inputQuantity>=e&&(this.inputQuantity<i||e>i)&&(this.selectedRow=t)}let t=this.el.querySelector("button"),e=this.el.querySelectorAll('input[name*="quantity"]');t&&t.removeAttribute("disabled"),e&&e.forEach(t=>t.value=this.inputQuantity),i=this.inputQuantity}this.resetSelectedRow(),this.changeTotal(i);let s=this.el.querySelector("[data-before-selector]");s&&t>0?s.classList.add("d-none"):(this.priceSelector.innerHTML=this.el.initPrice,null==s||s.classList.remove("d-none"),this.rows.forEach(t=>t.classList.remove("active")))}setSelectedRow(){this.selectedRow=this.rows[this.lowestPriceRow]}resetSelectedRow(){this.selectedRow&&(this.rowPrice=this.selectedRow.querySelector("[data-row-price]").innerHTML,this.rows.forEach(t=>t.classList.remove("active")),this.selectedRow.classList.add("active"),this.rowPrice&&this.priceSelector&&(this.priceSelector.innerHTML=this.rowPrice.replace(".",",")))}updatePriceOnly(){this.selectedRow&&(this.rowPrice=this.selectedRow.querySelector("[data-row-price]").innerHTML,this.rowPrice&&this.priceSelector&&(this.priceSelector.innerHTML=this.rowPrice.replace(".",",")))}checkLegalInput(t){let e=parseInt(t,10);if(isNaN(e)){this.inputQuantity=NaN;return}let i=parseInt(this.minPurchase.value,10),s=parseInt(this.maxPurchase.value,10),r=parseInt(this.purchaseSteps.value,10),a=e;1===r?(e<i&&(a=i),e>s&&(a=s)):(a=e<=i?i:Math.floor((e-i)/r)*r+i)!==e&&this.createTooltip(),this.inputQuantity=a}changeTotal(t){let e=this.el.querySelector("[data-price-after]"),i=this.el.querySelector("[data-total-price]");if(!i)return;let s=parseFloat(this.priceSelector.innerHTML.replace(",",".").replace(/[^\d.]/g,""))*(t||0);if(e){let t=parseFloat(e.innerHTML.replace(",",".").replace(/[^\d.]/g,""));!isNaN(t)&&t>0&&(s/=t)}i.innerHTML=s.toFixed(2).replace(".",",")+" â¬"}createTooltip(){var t;let e=(t=this.el.querySelector("[data-tooltip]"))===null||void 0===t?void 0:t.value;if(!e||!this.quantityInput)return;let i=this.quantityInput.parentElement.querySelector(".custom-tooltip");i&&i.remove();let s=document.createElement("div");s.classList.add("custom-tooltip"),s.innerText=e,this.quantityInput.parentElement.appendChild(s),setTimeout(()=>setTimeout(()=>s.remove(),6e3),1e3)}}}}]);
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.