PageSourceSearch

https://www.bareminerals.com/cdn/shop/t/1716/assets/component-cart-popup.js?v=48728447233153380471790177272

js bareminerals.com collected 2026-09-24 17:34:15 UTC 3,573 bytes, 2 lines download raw bytes

1class CartPopup extends HHBaseElement{CLOSE_TIMEOUT=3e3;SELECTORS_TO_UPDATE=["[data-cart-gwp]","[data-cart-footer]","[data-cart-content]","[data-cart-items-count]","price-progress"];constructor(){super(),this.stopPopupFocus=!1,this.open=this.open.bind(this),this.close=this.close.bind(this),this._show=this._show.bind(this),this._hide=this._hide.bind(this),this._handleDocumentClick=this._handleDocumentClick.bind(this),this.setPosition=this.setPosition.bind(this),this.closeBtn=this.querySelector("[data-cart-close]"),this.cartItemCountInHeader=document.querySelector("[data-header-cart-count]"),setTimeout(()=>{this.classList.add("block")},300)}connectedCallback(){this._attachListeners(),this._setupFocusTrap(),this.setPosition()}disconnectedCallback(){this._removeListeners()}static get observedAttributes(){return["anchor"]}get anchorElement(){return document.querySelector(this.getAttribute("anchor"))}get isTallerThenViewPort(){return this.clientHeight>window.innerHeight}setPosition(){try{const bounds=this.anchorElement.getBoundingClientRect();this.style.setProperty("--cart-popup-anchor-offset-top",20+bounds.top+bounds.height+"px"),this.style.setProperty("--cart-popup-anchor-offset-right",bounds.left+bounds.width*2+"px"),this.classList[this.isTallerThenViewPort?"add":"remove"]("taller")}catch{}}_handleDocumentClick(event){this.contains(event.target)||this.close()}_handleDocumentKeydown(event){event.key==="Escape"&&this.close()}_attachListeners(){document.addEventListener("cart-popup::open",this.open),document.addEventListener("click",this._handleDocumentClick),document.addEventListener("keydown",this._handleDocumentKeydown.bind(this)),this.closeBtn.addEventListener("click",this.close),this.addEventListener("nosto::rendered",this.setPosition)}_removeListeners(){document.removeEventListener("cart-popup::open",this.open),document.removeEventListener("click",this._handleDocumentClick),document.addEventListener("keydown",this._handleDocumentKeydown.bind(this)),this.closeBtn.removeEventListener("click",this.close),this.removeEventListener("nosto::rendered",this.setPosition)}async open(event){event.detail.stopPopupFocus&&(this.stopPopupFocus=event.detail.stopPopupFocus),await this.update(event.detail.items),this._show()}close(){this._hide()}_show(){this.setPosition(),this.classList.add("active"),this._lastFocusElement=document.activeElement,this._firstFocusableElement&&setTimeout(()=>{this.stopPopupFocus||this._firstFocusableElement.focus()},200)}_hide(){this.classList.remove("active"),this._lastFocusElement?setTimeout(()=>{this._lastFocusElement.focus(),this._lastFocusElement=null},100):document.body.focus()}async update(items=[]){const response=await fetch(`${window.Shopify.routes.root}cart?view=popup`),element=document.createElement("div");element.innerHTML=await response.text(),Array.from(element.querySelectorAll("[data-cart-content] .cart-popup__item")).forEach(($lineItem,index)=>{items.find(item=>String(item.id)===$lineItem.getAttribute("line-item-id"))||$lineItem.remove()}),this.SELECTORS_TO_UPDATE.forEach(selector=>{const content=element.querySelector(selector),target=this.querySelector(selector);!content||!target||(selector==="[data-cart-items-count]"?(this.cartItemCountInHeader.innerHTML=content.dataset.count,this.cartItemCountInHeader.classList.remove("hidden")):selector==="price-progress"?target.value=content.value:target.innerHTML=content.innerHTML)})}}window.customElements.define("cart-popup",CartPopup);
2//# sourceMappingURL=/cdn/shop/t/1716/assets/component-cart-popup.js.map?v=48728447233153380471790177272

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.