1class CashbackOverlay extends HTMLElement{connectedCallback(){this.flowModal=this.querySelector("[data-cashback-flow]"),this.termsModal=this.querySelector("[data-cashback-terms]"),this.stepPanels=Array.from(this.querySelectorAll("[data-cashback-step]")),this.stepIndicators=Array.from(this.querySelectorAll("[data-cashback-step-indicator]")),this.titleEl=this.querySelector("[data-cashback-flow-title]"),this.listEl=this.querySelector("[data-cashback-list]"),this.summaryDevice=this.querySelector("[data-cashback-summary-device]"),this.summaryPrice=this.querySelector("[data-cashback-summary-price]"),this.nextButton=this.querySelector("[data-cashback-next]"),this.saveButton=this.querySelector("[data-cashback-save]"),this.confirmButton=this.querySelector("[data-cashback-confirm]"),this.termsOpenButton=this.querySelector("[data-cashback-terms-open]"),this.errorEl=this.querySelector("[data-cashback-error]"),this.searchInput=this.querySelector("[data-cashback-search]"),this.searchClearButton=this.querySelector("[data-cashback-search-clear]"),this.step=1,this.options=[],this.selectedProperty="",this.selectedVariantId="",this.selectedPrice="",this.activeBanner=null,this.blocked=!1,this.cartUpdateUnsubscriber=void 0,this.onNext=this.onNext.bind(this),this.onSave=this.onSave.bind(this),this.onConfirm=this.onConfirm.bind(this),this.onOpenTerms=this.onOpenTerms.bind(this),this.onRadioChange=this.onRadioChange.bind(this),this.onCartUpdate=this.onCartUpdate.bind(this),this.onSearchInput=this.onSearchInput.bind(this),this.onSearchClear=this.onSearchClear.bind(this),this.nextButton?.addEventListener("click",this.onNext),this.saveButton?.addEventListener("click",this.onSave),this.confirmButton?.addEventListener("click",this.onConfirm),this.termsOpenButton?.addEventListener("click",this.onOpenTerms),this.listEl?.addEventListener("change",this.onRadioChange),this.searchInput?.addEventListener("input",this.onSearchInput),this.searchClearButton?.addEventListener("click",this.onSearchClear),this.cartUpdateUnsubscriber=theme.pubsub.subscribe(theme.pubsub.PUB_SUB_EVENTS.cartUpdate,this.onCartUpdate)}disconnectedCallback(){this.nextButton?.removeEventListener("click",this.onNext),this.saveButton?.removeEventListener("click",this.onSave),this.confirmButton?.removeEventListener("click",this.onConfirm),this.termsOpenButton?.removeEventListener("click",this.onOpenTerms),this.listEl?.removeEventListener("change",this.onRadioChange),this.searchInput?.removeEventListener("input",this.onSearchInput),this.searchClearButton?.removeEventListener("click",this.onSearchClear),this.cartUpdateUnsubscriber?.()}get customerCashback(){return this.dataset.customerCashback==="true"}hasCashbackInCart(){return document.querySelector('[id^="CartDrawer-Item"][data-cashback="true"], [id^="CartItem-"][data-cashback="true"]')!==null}isBlocked(){return this.customerCashback||this.hasCashbackInCart()}onCartUpdate(){requestAnimationFrame(()=>{this.syncBlockedState(),this.activeBanner?.syncBlockedState?.(this.blocked)})}syncBlockedState(){this.blocked=this.isBlocked(),this.classList.toggle("is-blocked",this.blocked),this.errorEl&&(this.errorEl.hidden=!this.blocked),this.nextButton&&(this.nextButton.disabled=this.blocked,this.blocked?this.nextButton.setAttribute("aria-disabled","true"):this.nextButton.removeAttribute("aria-disabled")),this.blocked&&(this.activeBanner?.clearSelection?.(),this.flowModal?.open&&this.step!==1&&this.setStep(1))}open({banner,options=[],selectedProperty="",selectedVariantId="",startStep=1}={}){if(this.activeBanner=banner||null,this.options=Array.isArray(options)?options:[],this.selectedProperty=selectedProperty||"",this.selectedVariantId=selectedVariantId?String(selectedVariantId):"",this.selectedPrice="",this.selectedProperty&&this.selectedVariantId){const match=this.options.find(item=>item.name===this.selectedProperty&&String(item.variantId)===String(this.selectedVariantId));this.selectedPrice=match?.price||""}this.syncBlockedState(),this.resetSearch(),this.renderList(),this.setStep(this.blocked?1:startStep),this.flowModal?.show(banner?.openButton||null)}
1setStep(step){this.step=step,this.stepPanels.forEach(panel=>{panel.hidden=Number(panel.dataset.cashbackStep)!==step}),this.stepIndicators.forEach(indicator=>{const indicatorStep=Number(indicator.dataset.cashbackStepIndicator);indicator.classList.toggle("is-active",indicatorStep===step),indicator.classList.toggle("is-complete",indicatorStep<step)});const title=this.dataset[`titleStep${step}`]||"";this.titleEl&&title&&(this.titleEl.textContent=title),step===3&&this.updateSummary()}renderList(){this.listEl&&(this.listEl.innerHTML="",this.options.forEach((item,index)=>{const id=`cashback-option-${index}`,label=document.createElement("label");label.className="cashback-flow__item";const checked=item.name===this.selectedProperty&&String(item.variantId)===String(this.selectedVariantId);label.innerHTML=` 2 <input 3 type="radio" 4 class="cashback-flow__radio" 5 name="cashback-flow-option" 6 id="${id}" 7 value="${this.escapeAttr(item.name)}" 8 data-property="${this.escapeAttr(item.name)}" 9 data-variant="${this.escapeAttr(String(item.variantId))}" 10 data-price="${this.escapeAttr(item.price||"")}" 11 ${checked?"checked":""} 12 > 13 <span class="cashback-flow__radio-ui" aria-hidden="true"></span> 14 <span class="cashback-flow__item-name">${this.escapeHtml(item.name)}</span> 15 `,this.listEl.appendChild(label)}),this.filterList(),this.syncSaveState())}resetSearch(){this.searchInput&&(this.searchInput.value=""),this.syncSearchClear()}onSearchInput(){this.syncSearchClear(),this.filterList()}onSearchClear(event){event.preventDefault(),this.resetSearch(),this.filterList(),this.searchInput?.focus()}syncSearchClear(){this.searchClearButton&&(this.searchClearButton.hidden=!(this.searchInput?.value||"").length)}filterList(){if(!this.listEl)return;const query=(this.searchInput?.value||"").trim().toLowerCase();this.listEl.querySelectorAll(".cashback-flow__item").forEach(item=>{const name=item.querySelector(".cashback-flow__item-name")?.textContent||"",matches=!query||name.toLowerCase().includes(query);item.hidden=!matches})}onRadioChange(event){const radio=event.target.closest(".cashback-flow__radio");radio&&(this.selectedProperty=radio.dataset.property||"",this.selectedVariantId=radio.dataset.variant||"",this.selectedPrice=radio.dataset.price||"",this.syncSaveState(),this.updateSummary())}syncSaveState(){this.saveButton&&(this.saveButton.disabled=!(this.selectedProperty&&this.selectedVariantId))}updateSummary(){this.summaryDevice&&(this.summaryDevice.textContent=this.selectedProperty||""),this.summaryPrice&&(this.summaryPrice.textContent=this.selectedPrice||"")}onNext(event){if(event.preventDefault(),this.blocked||this.isBlocked()){this.syncBlockedState();return}this.setStep(2)}onSave(event){if(event.preventDefault(),this.blocked||this.isBlocked()){this.syncBlockedState();return}!this.selectedProperty||!this.selectedVariantId||this.setStep(3)}onConfirm(event){if(event.preventDefault(),this.blocked||this.isBlocked()){this.syncBlockedState();return}!this.selectedProperty||!this.selectedVariantId||(this.activeBanner?.applySelection(this.selectedProperty,this.selectedVariantId),this.termsModal?.hide(),this.flowModal?.hide())}onOpenTerms(event){event.preventDefault(),this.termsModal?.show(this.termsOpenButton)}escapeHtml(value){return String(value).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}escapeAttr(value){return this.escapeHtml(value).replace(/'/g,"'")}}customElements.define("cashback-overlay",CashbackOverlay); 16//# sourceMappingURL=/cdn/shop/t/56/assets/cashback-overlay.js.map?v=104441538708059199091786026789
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.