PageSourceSearch

https://chambermusiconthemountain.org/js/pickup-availability.js

js chambermusiconthemountain.org collected 2026-10-07 19:52:34 UTC 5,908 bytes, 48 lines download raw bytes

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.