1/*! Copyright (c) Safe As Milk. All rights reserved. */class DynamicProductSearchInfinite{constructor(root){this.root=root,this.isLoadMoreLoading=!1,this.previousResultsHTML="",this.loadMoreButton=null,this.scrollObserver=null,this.onLoadMoreClick=this.onLoadMoreClick.bind(this),this.onLoaded=this.onLoaded.bind(this),this.root.addEventListener("on:dynamic-product-search:loaded",this.onLoaded),this.setupLoadMoreButton()}onLoaded(){const results=this.root.querySelector(".js-results");this.isLoadMoreLoading&&results&&this.previousResultsHTML&&(results.innerHTML=this.previousResultsHTML+results.innerHTML,this.isLoadMoreLoading=!1,this.previousResultsHTML=""),this.updateCount(),this.setupLoadMoreButton()}updateCount(){const countEl=this.root.querySelector(".js-infinite-counter");if(!countEl)return;const showingCount=this.root.querySelectorAll(".js-results product-card, .js-results .search-grid-item").length,totalCount=this.root.querySelector(".js-infinite-products-count").dataset.productsCount;countEl.querySelector(".js-infinite-showing-count").textContent=`${showingCount}`,countEl.querySelector(".js-infinite-total-count").textContent=`${totalCount}`}setButtonIdleState(){this.loadMoreButton&&(this.loadMoreButton.classList.remove("js-loading"),this.loadMoreButton.disabled=!1,this.loadMoreButton.hidden=!1)}setButtonLoadingState(){this.loadMoreButton&&(this.loadMoreButton.classList.add("js-loading"),this.loadMoreButton.disabled=!0)}setupLoadMoreButton(){this.loadMoreButton&&(this.loadMoreButton.removeEventListener("click",this.onLoadMoreClick),this.loadMoreButton=null),this.scrollObserver&&(this.scrollObserver.disconnect(),this.scrollObserver=null);const btn=this.root.querySelector(".js-infinite-load-button");if(!btn)return;if(this.loadMoreButton=btn,!this.getNextPageUrl()){this.loadMoreButton.disabled=!0,this.loadMoreButton.hidden=!0,this.loadMoreButton.classList.remove("js-loading");return}this.setButtonIdleState(),this.loadMoreButton.addEventListener("click",this.onLoadMoreClick),this.root.dataset.infiniteScroll==="true"&&this.setupScrollObserver()}setupScrollObserver(){this.loadMoreButton&&(this.scrollObserver=new IntersectionObserver((entries=>{entries.forEach((entry=>{entry.isIntersecting&&this.onLoadMore()}))}),{root:null,rootMargin:"0px 0px",threshold:0}),this.scrollObserver.observe(this.loadMoreButton))}getNextPageUrl(){const link=this.root.querySelector('.js-infinite-pagination a[rel="next"]');return link?link.getAttribute("href"):null}onLoadMoreClick(e){e.preventDefault(),this.onLoadMore()}onLoadMore(){if(this.root.loading||this.isLoadMoreLoading)return;const activeEl=document.activeElement;
1activeEl&&this.root.contains(activeEl)&&typeof activeEl.blur=="function"&&activeEl.blur();const url=this.getNextPageUrl();if(!url){this.setupLoadMoreButton();return}const query=url.split("?")[1]||"",results=this.root.querySelector(".js-results");if(this.isLoadMoreLoading=!0,results){const clone=results.cloneNode(!0);clone.querySelectorAll(".js-infinite-pagination, .js-infinite-products-count").forEach((el=>el.remove())),this.previousResultsHTML=clone.innerHTML}this.loadMoreButton&&this.setButtonLoadingState(),this.root.renderCollection({query,updateURL:!1,scrollUp:!1})}}function resetToFirstPageInEditor(root){if(!window.Shopify||!window.Shopify.designMode)return;const{search}=window.location;if(!search)return;const params=new URLSearchParams(search),pageParam=params.get("page"),page=pageParam?parseInt(pageParam,10):0;if(!page||Number.isNaN(page)||page<=1)return;params.delete("page");const query=params.toString();root.renderCollection({query,updateURL:!1,scrollUp:!1})}function initInfiniteSearch(){const root=document.querySelector('dynamic-product-search[data-infinite="true"]');root&&(root.infiniteController=new DynamicProductSearchInfinite(root),resetToFirstPageInEditor(root))}document.addEventListener("DOMContentLoaded",initInfiniteSearch),document.addEventListener("shopify:section:load",(event=>{const root=event.target.querySelector('dynamic-product-search[data-infinite="true"]');root&&(root.infiniteController=new DynamicProductSearchInfinite(root),resetToFirstPageInEditor(root))}));export default DynamicProductSearchInfinite; 2//# sourceMappingURL=/cdn/shop/t/80/assets/dynamic-product-search-infinite.js.map?v=172869979061509761671789440213
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.