1import{DialogComponent,DialogOpenEvent,DialogCloseEvent}from"@theme/dialog";import{CartAddEvent}from"@theme/events";import{isMobileBreakpoint}from"@theme/utilities";class CartDrawerComponent extends DialogComponent{#summaryThreshold=.5;#historyAbortController=null;connectedCallback(){super.connectedCallback(),document.addEventListener(CartAddEvent.eventName,this.#handleCartAdd),this.addEventListener(DialogOpenEvent.eventName,this.#updateStickyState),this.addEventListener(DialogOpenEvent.eventName,this.#handleHistoryOpen),this.addEventListener(DialogCloseEvent.eventName,this.#handleHistoryClose),history.state?.cartDrawerOpen&&history.replaceState(null,"")}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener(CartAddEvent.eventName,this.#handleCartAdd),this.removeEventListener(DialogOpenEvent.eventName,this.#updateStickyState),this.removeEventListener(DialogOpenEvent.eventName,this.#handleHistoryOpen),this.removeEventListener(DialogCloseEvent.eventName,this.#handleHistoryClose),this.#historyAbortController?.abort()}#handleHistoryOpen=()=>{isMobileBreakpoint()&&(history.state?.cartDrawerOpen||history.pushState({cartDrawerOpen:!0},""),this.#historyAbortController=new AbortController,window.addEventListener("popstate",this.#handlePopState,{signal:this.#historyAbortController.signal}))};#handleHistoryClose=()=>{this.#historyAbortController?.abort(),history.state?.cartDrawerOpen&&history.back()};#handlePopState=async()=>{this.refs.dialog?.open&&(this.refs.dialog.style.setProperty("--dialog-drawer-closing-animation","none"),await this.closeDialog(),this.refs.dialog.style.removeProperty("--dialog-drawer-closing-animation"))};#handleCartAdd=event=>{this.hasAttribute("auto-open")&&this.showDialog(),this.#announceCartCount(event.detail.resource?.item_count)};#announceCartCount(cartCount){const liveRegion=this.refs.liveRegion;!this.refs.dialog?.open||!liveRegion||cartCount===void 0||(liveRegion.textContent=`${Theme.translations.cart_count}: ${cartCount}`)}open(){this.showDialog(),customElements.whenDefined("shopify-payment-terms").then(()=>{document.querySelector("shopify-payment-terms")?.shadowRoot?.querySelector("#shopify-installments-cta")?.addEventListener("click",this.closeDialog,{once:!0})})}close(){this.closeDialog()}#updateStickyState(){const{dialog}=this.refs;if(!dialog)return;const content=dialog.querySelector(".cart-drawer__content"),summary=dialog.querySelector(".cart-drawer__summary");if(!content||!summary){dialog.setAttribute("cart-summary-sticky","false");return}const drawerHeight=dialog.getBoundingClientRect().height,ratio=summary.getBoundingClientRect().height/drawerHeight;dialog.setAttribute("cart-summary-sticky",ratio>this.#summaryThreshold?"false":"true")}}customElements.get("cart-drawer-component")||customElements.define("cart-drawer-component",CartDrawerComponent); 2//# sourceMappingURL=/cdn/shop/t/3/assets/cart-drawer.js.map?v=35649724213056774541789680726
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.