1import{Component}from"@theme/component";import{QuantitySelectorUpdateEvent}from"@theme/events";class QuantitySelectorComponent extends Component{increaseQuantity(event){event.target instanceof HTMLElement&&(event.preventDefault(),this.refs.quantityInput.stepUp(),this.#onQuantityChange(event))}decreaseQuantity(event){event.target instanceof HTMLElement&&(event.preventDefault(),this.refs.quantityInput.stepDown(),this.#onQuantityChange(event))}selectInputValue(event){const{quantityInput}=this.refs;!(event.target instanceof HTMLInputElement)||document.activeElement!==quantityInput||quantityInput.select()}setQuantity(event){event instanceof Event&&event.target instanceof HTMLElement?(event.preventDefault(),event.target instanceof HTMLInputElement&&(this.refs.quantityInput.value=event.target.value),this.#onQuantityChange(event)):(this.refs.quantityInput.value=String(event),this.#onQuantityChange(event))}prepareOptions(){const list=this.querySelector("[data-quantity-options]");if(!(list instanceof HTMLElement)||list.childElementCount>0)return;const current=Number(this.refs.quantityInput.value)||1,configuredMaximum=Number(list.dataset.max)||100,maximum=Math.max(current,Math.min(configuredMaximum,100)),fragment=document.createDocumentFragment();for(let quantity=1;quantity<=maximum;quantity+=1){const option=document.createElement("li");option.className=`cart__quantity-item${quantity===current?" is-disabled":""}`,option.setAttribute("on:click",`/setQuantity/${quantity}`),option.setAttribute("on:keydown","/handleOptionKeydown"),option.setAttribute("role","option"),option.setAttribute("aria-selected",String(quantity===current)),option.tabIndex=quantity===current?-1:0,option.textContent=String(quantity),fragment.appendChild(option)}list.appendChild(fragment)}handleOptionKeydown(event){if(event.key!=="Enter"&&event.key!==" ")return;event.preventDefault();const option=event.target?.closest?.('[role="option"]');option instanceof HTMLElement&&(this.setQuantity(Number(option.textContent)),option.closest("details")?.removeAttribute("open"))}#onQuantityChange(event){const{quantityInput}=this.refs;this.#checkQuantityRules();const newValue=parseInt(quantityInput.value);quantityInput.dispatchEvent(new QuantitySelectorUpdateEvent(newValue,Number(quantityInput.dataset.cartLine),quantityInput.dataset.cartKey))}#checkQuantityRules=()=>{const{quantityInput}=this.refs,min=Number(quantityInput.min)||0,max=quantityInput.max?Number(quantityInput.max):0,newValue=Number(quantityInput.value);newValue<min&&min&&(quantityInput.value=min),newValue>max&&max&&(quantityInput.value=max)};get quantityInput(){if(!this.refs.quantityInput)throw new Error('Missing <input ref="quantityInput" /> inside <quantity-selector-component />');return this.refs.quantityInput}}customElements.get("quantity-selector-component")||customElements.define("quantity-selector-component",QuantitySelectorComponent); 2//# sourceMappingURL=/cdn/shop/t/370/assets/component-quantity-selector.js.map?v=109933787692276575631788416711
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.