1class QuantitySelector{constructor(container){this.el=container,this.el.querySelector("[data-quantity-input]")&&(this.input=container.querySelector("[data-quantity-input]"),this.incrementButton=container.querySelector("[data-quantity-increment]"),this.decrementButton=container.querySelector("[data-quantity-decrement]"),this.min=this.input.getAttribute("min")?parseInt(this.input.getAttribute("min"),10):0,this.max=this.input.getAttribute("max")?parseInt(this.input.getAttribute("max"),10):1/0,this._onInputChange=this._onInputChange.bind(this),this._adjustInput=this._adjustInput.bind(this),this._bindEvents())}_bindEvents(){this.decrementButton.addEventListener("click",()=>{this._adjustInput(-1)}),this.incrementButton.addEventListener("click",()=>{this._adjustInput(1)}),this.input.addEventListener("change",this._onInputChange)}_onInputChange(){this._setValue(this.input.value)}_formatValue(value){const baseValue=parseInt(value,10);return isNaN(baseValue)?this.min:baseValue}_adjustInput(adjustment){if(this.input.disabled)return;const value=this._formatValue(this.input.value)+adjustment;value>this.max?this.config.onError({min:this.min,max:this.max}):(this.input.value=value,this.input.dispatchEvent(new Event("change")))}_restrictValue(value){let val=Math.min(this.max,value);return val=Math.max(this.min,val),val}_setValue(value){const formatted=this._formatValue(value),constrainedValue=this._restrictValue(formatted);return value&&value===constrainedValue||(this.input.value=constrainedValue),constrainedValue}unload(){this.decrementButton.removeEventListener("click"),this.incrementButton.removeEventListener("click"),this.input.removeEventListener("change",this._onInputChange)}}document.addEventListener("DOMContentLoaded",()=>{const initQuantitySelector=container=>{const quantitySelectors=container.querySelectorAll("[data-quantity-selector]");quantitySelectors.length>0&&quantitySelectors.forEach(container=>{new QuantitySelector(container)})};initQuantitySelector(document),document.addEventListener("atlanticQuickShopOpen",event=>{initQuantitySelector(event.detail)})});
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.