https://www.lornajane.com/cdn/shop/t/88/assets/cart-promo-code.DnH…?v=103313440858175173521790811514
1class m extends HTMLElement{constructor(){super(...arguments),this.promoCodeSubmit=null,this.promoCodeInput=null,this.promoCodeError=null,this.promoCodeRemove=[],this.selectors={promoCodeSubmit:"[data-selector='promo-code-submit']",promoCodeInput:"[data-selector='promo-code-input']",promoCodeError:"[data-selector='promo-code-error']",promoCodeRemove:"[data-selector='promo-code-remove']"},this.classes={inputError:"input-error",buttonLoading:"button-loading"},this.dataAttributes={discountCodes:"data-discount-codes",discountCode:"data-discount-code"},this.handleSubmitPromoCode=async()=>{if(!this.promoCodeInput)return;const o=this.promoCodeInput.value;if(o.length===0){this.handleInputState(!0,CHROMA_TRANSLATIONS?.cart?.promoCodeEmpty);return}await this.submitPromoCode(o)},this.removePromoCode=async o=>{const t=this.getAttribute(this.dataAttributes.discountCodes),r=t?t.split(","):[],{target:s}=o,e=s?.closest(this.selectors.promoCodeRemove);if(!e)return;const i=e.getAttribute(this.dataAttributes.discountCode);if(!i)return;const d=r.filter(n=>n!==i).join(",");await window.cartService.removeDiscount(d,e)},this.handleErrorCode=()=>{this.handleInputState(!0,CHROMA_TRANSLATIONS?.cart?.promoCodeInvalid)},this.updateSubmitButtonState=()=>{this.promoCodeSubmit?.classList.toggle(this.classes.buttonLoading)},this.handleChangePromoCode=()=>{if(!this.promoCodeInput)return;const o=this.promoCodeInput.value;o&&o.length>0&&this.promoCodeInput.classList.contains(this.classes.inputError)&&this.handleInputState(!1)},this.handleInputState=(o,t)=>{o?(this.promoCodeInput?.classList.add(this.classes.inputError),this.promoCodeError&&t&&(this.promoCodeError.innerText=t)):(this.promoCodeInput?.classList.remove(this.classes.inputError),this.promoCodeError&&(this.promoCodeError.innerText=""))}}connectedCallback(){this.promoCodeSubmit=this.querySelector(this.selectors.promoCodeSubmit),this.promoCodeInput=this.querySelector(this.selectors.promoCodeInput),this.promoCodeError=this.querySelector(this.selectors.promoCodeError),this.promoCodeRemove=this.querySelectorAll(this.selectors.promoCodeRemove),!(!this.promoCodeSubmit||!this.promoCodeInput)&&(this.promoCodeSubmit.addEventListener("click",this.handleSubmitPromoCode),this.promoCodeInput.addEventListener("input",this.handleChangePromoCode),this.promoCodeRemove.forEach(o=>{o.addEventListener("click",this.removePromoCode)}))}disconnectedCallback(){this.promoCodeSubmit&&this.promoCodeSubmit.removeEventListener("click",this.handleSubmitPromoCode),this.promoCodeInput&&this.promoCodeInput.removeEventListener("input",this.handleChangePromoCode),this.promoCodeRemove.forEach(o=>{o.removeEventListener("click",this.removePromoCode)})}async submitPromoCode(o){const t=this.getAttribute(this.dataAttributes.discountCodes),r=t?t.split(","):[];if(r.find(e=>e===o))this.handleInputState(!0,CHROMA_TRANSLATIONS?.cart?.promoCodeApplied);else{const e=[...r,o].join(",");await window.cartService.applyDiscount(e,o,this)}}}customElements.get("cart-promo-code")||customElements.define("cart-promo-code",m);
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.