PageSourceSearch

https://berriorganics.com/cdn/shop/t/42/assets/sticky-add-to-cart.js?v=41298891008285151481785925346

js berriorganics.com collected 2026-09-29 20:04:14 UTC 6,053 bytes, 2 lines download raw bytes

1class StickyAddToCart extends HTMLElement{constructor(){super(),this.isVisible=!1}connectedCallback(){if(this.sectionId=this.dataset.sectionId,this.mainSubmit=document.getElementById(`ProductSubmitButton-${this.sectionId}`),this.stickySubmit=this.querySelector("[data-sticky-atc-submit]"),this.stickyButtonText=this.querySelector("[data-sticky-atc-button-text]"),this.stickyImage=this.querySelector("[data-sticky-atc-image]"),!this.mainSubmit||!this.stickySubmit){this.remove();return}this.parentElement!==document.body&&document.body.appendChild(this),this.onStickySubmit=this.handleStickySubmit.bind(this),this.onScrollOrResize=this.updateVisibility.bind(this),this.onJudgeMeLoaded=this.syncRatingVisibility.bind(this),this.stickySubmit.addEventListener("click",this.onStickySubmit),window.addEventListener("scroll",this.onScrollOrResize,{passive:!0}),window.addEventListener("resize",this.onScrollOrResize),window.addEventListener("judgeme:loaded",this.onJudgeMeLoaded),this.setupVisibilityObserver(),this.setupMainButtonObserver(),this.setupRatingObserver(),this.syncFromMainButton(),this.syncRatingVisibility(),requestAnimationFrame(()=>this.updateVisibility()),typeof subscribe=="function"&&typeof PUB_SUB_EVENTS<"u"&&(this.variantChangeUnsubscriber=subscribe(PUB_SUB_EVENTS.variantChange,event=>{event.data?.sectionId===this.sectionId&&this.handleVariantChange(event.data.variant)}),this.cartUpdateUnsubscriber=subscribe(PUB_SUB_EVENTS.cartUpdate,()=>{this.syncLoadingState()}),this.cartErrorUnsubscriber=subscribe(PUB_SUB_EVENTS.cartError,()=>{this.syncLoadingState()}))}disconnectedCallback(){this.visibilityObserver?.disconnect(),this.mainButtonObserver?.disconnect(),this.ratingObserver?.disconnect(),this.stickySubmit?.removeEventListener("click",this.onStickySubmit),window.removeEventListener("scroll",this.onScrollOrResize),window.removeEventListener("resize",this.onScrollOrResize),window.removeEventListener("judgeme:loaded",this.onJudgeMeLoaded),this.variantChangeUnsubscriber?.(),this.cartUpdateUnsubscriber?.(),this.cartErrorUnsubscriber?.()}setupVisibilityObserver(){this.visibilityObserver=new IntersectionObserver(()=>this.updateVisibility(),{threshold:[0,1]}),this.visibilityObserver.observe(this.mainSubmit)}setupMainButtonObserver(){this.mainButtonObserver=new MutationObserver(()=>{this.syncFromMainButton()}),this.mainButtonObserver.observe(this.mainSubmit,{attributes:!0,attributeFilter:["disabled","aria-disabled","class"],childList:!0,subtree:!0})}setupRatingObserver(){const ratingRoots=this.querySelectorAll("[data-sticky-atc-rating]");ratingRoots.length&&(this.ratingObserver=new MutationObserver(()=>{this.syncRatingVisibility()}),ratingRoots.forEach(root=>{this.ratingObserver.observe(root,{attributes:!0,attributeFilter:["data-average-rating","data-number-of-reviews"],childList:!0,subtree:!0})}),this.observePageJudgeMeBadge())}observePageJudgeMeBadge(){if(!this.ratingObserver||this.pageBadgeObserved)return;const pageBadge=document.querySelector(".product__title-row .jdgm-prev-badge, .product__info-container .jdgm-prev-badge");pageBadge&&(this.ratingObserver.observe(pageBadge,{attributes:!0,attributeFilter:["data-average-rating","data-number-of-reviews"]}),this.pageBadgeObserved=!0)}hasValidJudgeMeReviews(){const pageBadge=document.querySelector(".product__title-row .jdgm-prev-badge, .product__info-container .jdgm-prev-badge");if(!pageBadge)return!1;const average=pageBadge.getAttribute("data-average-rating"),count=Number(pageBadge.getAttribute("data-number-of-reviews")||0);return!(average==="0.00"||average==="0"||count<=0)}syncRatingVisibility(){const ratingBlocks=this.querySelectorAll("[data-sticky-atc-rating]");if(!ratingBlocks.length)return;this.observePageJudgeMeBadge();const show=this.hasValidJudgeMeReviews();ratingBlocks.forEach(block=>{block.hidden=!show,block.classList.toggle("is-visible",show)})}isMainSubmitVisible(){if(!this.mainSubmit)return!0;const rect=this.mainSubmit.getBoundingClientRect(),viewportHeight=window.innerHeight||document.documentElement.clientHeight;return rect.bottom>0&&rect.top<viewportHeight}updateVisibility(){const shouldShow=!this.isMainSubmitVisible();shouldShow!==this.isVisible&&(this.isVisible=shouldShow,this.classList.toggle("is-visible",shouldShow),this.setAttribute("aria-hidden",shouldShow?"false":"true"))}handleStickySubmit(event){event.preventDefault(),!(this.stickySubmit.disabled||this.mainSubmit.disabled)&&(this.mainSubmit.click(),this.syncLoadingState())}handleVariantChange(variant){if(variant){if(variant.featured_media?.preview_image?.src&&this.stickyImage){const image=variant.featured_media.preview_image,width=image.width?Math.min(image.width,120):120;this.stickyImage.src=`${image.src}${image.src.includes("?")?"&":"?"}width=${width}`,image.alt&&(this.stickyImage.alt=image.alt)}this.syncFromMainButton(),requestAnimationFrame(()=>this.updateVisibility())}}syncFromMainButton(){if(!this.mainSubmit||!this.stickySubmit)return;const isDisabled=this.mainSubmit.disabled||this.mainSubmit.getAttribute("aria-disabled")==="true";this.stickySubmit.disabled=isDisabled,this.syncLoadingState(),this.syncButtonText()}syncButtonText(){if(!this.mainSubmit||!this.stickyButtonText)return;const mainText=this.mainSubmit.querySelector(".product-form__submit-text"),soldOutMessage=this.mainSubmit.querySelector(".sold-out-message");if(soldOutMessage&&!soldOutMessage.classList.contains("hidden")){this.stickyButtonText.textContent=soldOutMessage.textContent.trim();return}if(mainText){this.stickyButtonText.innerHTML=mainText.innerHTML;return}this.mainSubmit.disabled&&(this.stickyButtonText.textContent=this.mainSubmit.textContent.trim())}syncLoadingState(){if(!this.mainSubmit||!this.stickySubmit)return;const isLoading=this.mainSubmit.classList.contains("loading");this.stickySubmit.classList.toggle("loading",isLoading),this.syncButtonText()}}customElements.get("sticky-add-to-cart")||customElements.define("sticky-add-to-cart",StickyAddToCart);
2//# sourceMappingURL=/cdn/shop/t/42/assets/sticky-add-to-cart.js.map?v=41298891008285151481785925346

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.