1customElements.get("pickup-availability")||customElements.define("pickup-availability",class extends HTMLElement{constructor(){super(),this.errorHtml=this.querySelector("template")?.content.firstElementChild.cloneNode(!0),this.info=this.querySelector(".js-pickup-availability-info"),this.pickupAvailabilityConfirmStore=this.querySelector(".pickup-availability__confirm-store"),this.storeLocator=document.querySelector("my-store-locator"),this.storeLocatorDrawer=document.querySelector("my-store-locator-drawer"),this.storeConfirmationMessage=window.cartStrings.storeConfirmationMessage}renderError(){this.info.innerHTML="",this.info.append(this.errorHtml)}renderLoading(){this.info.innerHTML="",this.pickupAvailabilityConfirmStore&&(this.pickupAvailabilityConfirmStore.innerHTML="");const loadingHtml=` 2 <p class="caption"> 3 ${this.storeLocator.dataset.loadingText} <i class="fa fa-spinner fa-spin"></i> 4 </p> 5 `,loadingNode=new DOMParser().parseFromString(loadingHtml,"text/html").body.childNodes[0];this.info.append(loadingNode)}renderPreview(location){if(this.dataset?.cto){location?.available?this.classList.add("is-active"):this.classList.remove("is-active");return}if(this.dataset?.itemKey&&location){const itemLocationsData=this.storeLocator.itemLocationsData[this.dataset.itemKey];if(itemLocationsData){const itemLocation=itemLocationsData.find(itemLocation2=>itemLocation2.id===location.id);itemLocation&&(location=itemLocation)}}this.info.innerHTML="",this.pickupAvailabilityConfirmStore&&(this.pickupAvailabilityConfirmStore.innerHTML="");let buttonText=this.storeLocator.dataset.viewStoreAvailabilityText,unavailableHtml="",timeHtml="",stockHtml="",messageOverridden=!1;if(location){const itemsAdded=this.dataset?.itemQuantity?parseInt(this.dataset.itemQuantity):null;buttonText=location.name;let pickUpTimeTranslated="";if(location.pickUpTime){const key=location.pickUpTime,languageKey=SDG.Data.language?.toLowerCase()||"en";pickUpTimeTranslated=window.deliveryOptionsStrings?.[languageKey]?.[key]||location.pickUpTime}let overridePickupMessage=this.dataset?.overridePickupMessage;const messageType=this.dataset?.messageType;if(!overridePickupMessage&&messageType){const languageKey=SDG.Data.language?.toLowerCase()||"en",pickupMessagesJson=JSON.parse(location.pickupMessages?.value||null),pickupMessages=pickupMessagesJson?.[languageKey]||pickupMessagesJson?.en;switch(messageType){case"cto":overridePickupMessage=pickupMessages?.cto;break;case"preorder":overridePickupMessage=pickupMessages?.preOrder;break;case"in stock":overridePickupMessage=pickupMessages?.inStock;break}}if(overridePickupMessage&&location.productPickupOfferedAtLocation&&!(messageType==="in stock"&&!location.available))timeHtml=` 6 <p class="caption"> 7 <span class="pickup-availability__time"> 8 ${overridePickupMessage} 9 </span> 10 </p> 11 `,window.location.href.includes("/cart")&&(this.pickupAvailabilityConfirmStore.innerHTML=this.storeConfirmationMessage),messageOverridden=!0;else if(location.available)this.dataset.quantityAvailable=location.quantityAvailable,timeHtml=` 12 <p class="caption"> 13 <span class="pickup-availability__time"> 14 ${pickUpTimeTranslated} 15 </span> 16 </p> 17 `,location.quantityAvailable<10&&(stockHtml=` 18 <p class="caption"> 19 <span class="pickup-availability__stock"> 20 ${this.storeLocator.dataset.lowStockHtml.replace("{{ quantity }}",location.quantityAvailable)} 21 </span> 22 </p> 23 `),itemsAdded&&itemsAdded>location.quantityAvailable&&(timeHtml=` 24 <p class="caption"> 25 <span class="pickup-availability__error"> 26 ${this.dataset.error} 27 </span> 28 </p> 29 `),window.location.href.includes("/cart")&&(this.pickupAvailabilityConfirmStore.innerHTML=this.storeConfirmationMessage);else if(location.available===!1){const overrideUnavailableMessage=this.dataset?.overrideUnavailableMessage;unavailableHtml=` 30 <p class="caption"> 31 ${overrideUnavailableMessage?`<span class="pickup-availability__unavailable-override">${overrideUnavailableMessage}</span>`:this.storeLocator.dataset.unavailableText} 32 </p> 33 `,messageOverridden=!!overrideUnavailableMessage}}const infoHtml=`
34 <div class="pickup-availability-info-details"> 35 ${unavailableHtml} 36 ${timeHtml} 37 ${stockHtml} 38 <button 39 class="js-my-store-locator-drawer-btn pickup-availability-button link link--text underlined-link" 40 aria-haspopup="dialog" 41 ${this.dataset?.itemKey?`data-item-key="${this.dataset.itemKey}"`:""} 42 > 43 ${buttonText} 44 ${this.classList.contains("cto__pickup")?'<i class="fa-solid fa-chevron-right cto-chevron"></i>':""} 45 </button> 46 </div> 47 `,infoNode=new DOMParser().parseFromString(infoHtml,"text/html").body.childNodes[0];this.info.append(infoNode),messageOverridden?this.classList.add("is-overridden"):this.classList.remove("is-overridden");const button=this.querySelector("button");button&&button.addEventListener("click",evt=>{if(evt.preventDefault(),this.storeLocatorDrawer.selectedItemLocationsKey=null,this.dataset?.itemKey){const selectedItemLocationsData=this.storeLocator.itemLocationsData[this.dataset.itemKey];selectedItemLocationsData&&(this.storeLocatorDrawer.selectedItemLocationsKey=this.dataset.itemKey,this.storeLocatorDrawer.updateStoreDetails(selectedItemLocationsData,""))}this.storeLocatorDrawer.show(evt.currentTarget)})}}); 48//# sourceMappingURL=/cdn/shop/t/14/assets/pickup-availability.js.map?v=741939373213593171742784889
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.