https://burtsbeesbaby.com/cdn/shop/t/662/assets/collection-browse-…?v=138173849551542792351788466337
1class CollectionBrowseStateLayer{constructor(){this.eventBus=window.theme.collectionBrowse.eventBus,this.state={collectionHandle:this.collectionHandle,facets:[],pagination:{currentPage:this.currentPage,highestLoadedPage:this.currentPage,lowestLoadedPage:this.currentPage,loadedPages:[this.currentPage],lastIntent:"replace",resultId:null,size:this.resultsPerPage,total:0,totalPages:0},pageProducts:{},products:[],request:null,requestInFlight:!1,requestMeta:null,requestSequence:0,searchParams:new URLSearchParams(window.location.search),sortBy:this.sortBy,sortOrder:this.sortOrder},this.subscribeToEvents()}subscribeToEvents(){this.eventBus.subscribe("collectionBrowse:ui:params:changed",({intent="replace",searchParams})=>{const requestMeta=this.setSearchParams(searchParams,intent);requestMeta&&this.eventBus.publish("collectionBrowse:api:fetch:products",requestMeta)}),this.eventBus.subscribe("collectionBrowse:api:results:fetched",response=>{const requestMeta=response.requestMeta||this.state.requestMeta||{};if(requestMeta.requestId&&requestMeta.requestId!==this.state.requestSequence)return;const currentPage=requestMeta.targetPage||response.request?.page||1,pageProducts=(response.products.hits||[]).map(product=>({...product,sourcePage:product.sourcePage||currentPage})),nextPageProducts=this.getNextPageProducts({intent:requestMeta.intent,pageProducts,targetPage:currentPage}),loadedPages=this.getLoadedPages(nextPageProducts),pagination={currentPage,highestLoadedPage:loadedPages[loadedPages.length-1]||currentPage,lastIntent:requestMeta.intent||"replace",loadedPages,lowestLoadedPage:loadedPages[0]||currentPage,resultId:response.products.resultId||null,size:response.request?.num_results_per_page||this.state.pagination.size||this.resultsPerPage,total:response.products.total||0,totalPages:Math.max(1,Math.ceil((response.products.total||0)/(response.request?.num_results_per_page||this.state.pagination.size||this.resultsPerPage)))};this.state.pagination=pagination,this.state.pageProducts=nextPageProducts,this.state.products=pageProducts,this.state.facets=response.products.facets||[],this.state.request=response.request||null,this.state.requestInFlight=!1,this.state.requestMeta=requestMeta,this.state.sortBy=this.sortBy,this.state.sortOrder=this.sortOrder,this.eventBus.publish("collectionBrowse:state:facets:updated",{facets:this.state.facets,pagination:this.state.pagination,request:this.state.request}),this.eventBus.publish("collectionBrowse:state:products:updated",{pagination:this.state.pagination,products:this.state.products,request:this.state.request,selectedFilters:this.selectedFilters,sortBy:this.state.sortBy,sortOrder:this.state.sortOrder})})}setSearchParams(searchParams,intent="replace"){const nextSearchParams=new URLSearchParams(searchParams.toString()),filtersChanged=this.haveNonPageParamsChanged(nextSearchParams),nextIntent=filtersChanged?"replace":this.normalizeIntent(intent);filtersChanged&&nextSearchParams.delete("page"),this.state.searchParams=nextSearchParams;const targetPage=this.getTargetPage(nextIntent),requestId=this.state.requestSequence+1,nextParamsString=nextSearchParams.toString();return this.state.requestInFlight&&this.state.requestMeta?.intent===nextIntent&&this.state.requestMeta?.targetPage===targetPage&&this.state.requestMeta?.searchParams===nextParamsString?null:(this.state.requestInFlight=!0,this.state.requestMeta={intent:nextIntent,requestId,targetPage,searchParams:nextParamsString},this.state.requestSequence=requestId,this.state.pagination.currentPage=targetPage,this.state.sortBy=this.sortBy,this.state.sortOrder=this.sortOrder,this.state.requestMeta)}requestProducts(){const requestId=this.state.requestSequence+1;this.state.requestInFlight=!0,this.state.requestMeta={intent:"replace",requestId,targetPage:this.currentPage},this.state.requestSequence=requestId,this.eventBus.publish("collectionBrowse:api:fetch:products",this.state.requestMeta)}normalizeIntent(intent="replace"){return intent==="append-next"||intent==="prepend-previous"?intent:"replace"}haveNonPageParamsChanged(searchParams){const previousParams=new URLSearchParams(this.state.searchParams.toString()),nextParams=new URLSearchParams(searchParams.toString());return previousParams.delete("page"),nextParams.delete("page"),previousParams.toString()!==nextParams.toString()}
1getTargetPage(intent="replace"){const highestLoadedPage=this.state.pagination.highestLoadedPage||1,lowestLoadedPage=this.state.pagination.lowestLoadedPage||1,requestedPage=this.currentPage,totalPages=this.state.pagination.totalPages||1;return intent==="append-next"?Math.min(highestLoadedPage+1,totalPages):intent==="prepend-previous"?Math.max(lowestLoadedPage-1,1):requestedPage}getNextPageProducts({intent="replace",pageProducts=[],targetPage}){return intent==="replace"?{[targetPage]:pageProducts}:{...this.state.pageProducts,[targetPage]:pageProducts}}getLoadedPages(pageProducts={}){return Object.keys(pageProducts).map(page=>Number(page)).filter(page=>Number.isFinite(page)).sort((firstPage,secondPage)=>firstPage-secondPage)}get selectedFilters(){return this.state.facets.reduce((selectedFilters,facet)=>{if(facet.type==="range"){const rangeValue=this.getSelectedRangeFilterValue(facet);return rangeValue&&(selectedFilters[facet.field]=[rangeValue]),selectedFilters}if(!Array.isArray(facet.data))return selectedFilters;const selectedValues=facet.data.filter(value=>value.selected).map(value=>value.value);return selectedValues.length===0||(selectedFilters[facet.field]=selectedValues),selectedFilters},{})}getSelectedRangeFilterValue(facet={}){if(facet.field!=="price")return"";const min=this.state.searchParams.get("filter.v.price.gte"),max=this.state.searchParams.get("filter.v.price.lte");return!min&&!max?"":window.theme.constructorApiHelpers.buildRangeFacetValue({min,max})}get currentPage(){return Number(this.state?.searchParams?.get("page")||this.searchParams.get("page"))||1}get sortBy(){switch(this.state?.searchParams?.get("sort_by")||this.searchParams.get("sort_by")||"best-selling"){case"price-ascending":return"price";case"price-descending":return"price";case"title-ascending":return"name";case"title-descending":return"name";case"created-descending":return"datePublished";default:return""}}get sortOrder(){switch(this.state?.searchParams?.get("sort_by")||this.searchParams.get("sort_by")||"best-selling"){case"price-ascending":case"title-ascending":return"ascending";case"price-descending":case"title-descending":case"created-descending":return"descending";default:return""}}get searchParams(){return new URLSearchParams(window.location.search)}get resultsPerPage(){const productGrid=document.querySelector("[data-cnstrc-browse]"),configuredResultsPerPage=Number(productGrid?.dataset?.cnstrcResultsPerPage);return configuredResultsPerPage>0?configuredResultsPerPage:window.theme?.categoryConfig?.productsPerPage||24}get collectionHandle(){const productGrid=document.querySelector("[data-cnstrc-browse]");return productGrid?.dataset?.collectionHandle||productGrid?.dataset?.cnstrcFilterValue||""}}window.theme.collectionBrowse.stateLayer=new CollectionBrowseStateLayer; 2//# sourceMappingURL=/cdn/shop/t/662/assets/collection-browse-state-layer.js.map?v=138173849551542792351788466337
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.