PageSourceSearch

https://www.kickeepants.com/cdn/shop/t/81/assets/custom.js?v=109470688167999485811789763274

js kickeepants.com collected 2026-09-25 18:46:28 UTC 13,875 bytes, 2 lines download raw bytes

1class customJS{constructor(){this.setHeaderCartPopup(),this.isTouchDevice(),this.checkAndShowSwatchOptions(),this.setPaginationScrolling()}setPaginationScrolling(){const searchspring=window.searchspring,controller=searchspring&&searchspring.controller&&searchspring.controller.search;if(!controller||customJS.paginationScrolling||!document.querySelector(".collection-grid-section #searchspring-content"))return;let currentPage=controller.store.loaded?controller.store.pagination.page:null;controller.on("afterStore",async(search,next)=>{const nextPage=search.controller.store.pagination.page;currentPage!==null&&nextPage!==currentPage&&window.scrollTo({top:0,left:0,behavior:"instant"}),currentPage=nextPage,await next()}),customJS.paginationScrolling=!0}setHeaderCartPopup(){var submitButton=null,onlyItemCount=!1;ProductForm.prototype.addToCartModalPopup(submitButton,onlyItemCount)}isTouchDevice(){var isTouch="ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0;isTouch==!0&&document.body.classList.add("is-touchscreen")}checkAndShowSwatchOptions(){if(!customJS.swatchLoading){const state2={queue:[],active:0,pending:new WeakMap,groupResponses:new Map,sessionCacheMaxEntries:100,sessionCacheTtl:18e5,paused:!1};customJS.swatchLoading=state2}const state=customJS.swatchLoading,swatchOptions=Array.from(document.querySelectorAll("#swatchOption:not(.swatch-loaded)"));customJS.touchStoredSwatchGroups(new Set(swatchOptions.map(prd=>prd.getAttribute("data-swatch-tags")).filter(Boolean))),swatchOptions.forEach(prd=>{const pending=state.pending.get(prd);if(pending&&customJS.isCurrentSwatch(pending))return;const request={prd,prId:prd.getAttribute("data-main-product-id"),prHandle:prd.getAttribute("data-main-product-handle"),swatchTag:prd.getAttribute("data-swatch-tags")};state.pending.set(prd,request),state.queue.push(request)}),customJS.runSwatchQueue()}static isCurrentSwatch(request){const{prd,prId,prHandle,swatchTag}=request;return prd.isConnected&&customJS.swatchLoading.pending.get(prd)===request&&prd.getAttribute("data-main-product-id")===prId&&prd.getAttribute("data-main-product-handle")===prHandle&&prd.getAttribute("data-swatch-tags")===swatchTag}static runSwatchQueue(){const state=customJS.swatchLoading;if(state.active>0||state.paused)return;const batch=[];for(;batch.length<6&&state.queue.length>0;){const request=state.queue.shift();if(!customJS.isCurrentSwatch(request)||request.prd.classList.contains("swatch-loaded")){state.pending.get(request.prd)===request&&state.pending.delete(request.prd);continue}batch.push(request)}state.active=batch.length,batch.forEach(request=>{customJS.loadSwatch(request).catch(error=>{console.error("Unable to load product swatches",error)}).finally(()=>{state.pending.get(request.prd)===request&&state.pending.delete(request.prd),state.active-=1,state.active===0&&(state.paused=!0,setTimeout(()=>{state.paused=!1,customJS.runSwatchQueue()},100))})})}static loadSwatch(request){const collectionPath=window.location.pathname,{prd,prId,prHandle}=request;return customJS.getSwatchGroup(request).then(data=>customJS.prepareSwatchGroup(data,prId)).catch(error=>(console.error("Unable to load product swatches",error),null)).then(async container=>{if(!customJS.isCurrentSwatch(request))return;container&&prd.replaceChildren(container);const detailSelector=`[data-swatch-product-id="${prId}"]`;let mainDetails=container&&container.querySelector(detailSelector);if(!mainDetails){const response=await fetch(`/products/${prHandle}?view=quick-add-sizes`);if(!response.ok)throw new Error(`Quick Add request failed: ${response.status}`);const html=await response.text();if(!customJS.isCurrentSwatch(request))return;const fallback=new DOMParser().parseFromString(html,"text/html").querySelector(".swatches-container"),fallbackWrapper=fallback&&fallback.querySelector(".swatch-data-detail
1s-wrapper");if(mainDetails=fallbackWrapper&&fallbackWrapper.querySelector(detailSelector),!mainDetails)throw new Error(`Quick Add details missing for product ${prId}`);container?container.querySelector(".swatch-data-details-wrapper").appendChild(mainDetails):prd.replaceChildren(fallback)}prd.querySelectorAll(".swatch-data-details[data-swatch-product-id]").forEach(details=>{const quickAddProductId=details.getAttribute("data-swatch-product-id");details.querySelectorAll(".product-card-size-input").forEach(input=>{const label=input.nextElementSibling,controlId=`QuickAdd-${prId}-${quickAddProductId}-${input.value}`;input.id=controlId,input.name=`QuickAdd-${prId}-${quickAddProductId}`,label&&label.classList.contains("product-card-size-variant")&&label.setAttribute("for",controlId)})}),prd.classList.add("swatch-loaded"),mainDetails.classList.remove("d-none");var productSwatches=prd.querySelectorAll(".product-card-swtach-slider .swiper-wrapper a.swiper-slide img");productSwatches.length>0&&productSwatches.forEach(item=>{item.addEventListener("click",function(e){var dataId=item.getAttribute("data-img"),dataIdSrc=item.getAttribute("data-img-src");item.closest(".collection-listing-product-grid").querySelectorAll(".swatch-data-mobile .swatch-data-detail
1s:not(d-none)").forEach(i=>{i.classList.add("d-none")}),item.closest(".collection-listing-product-grid").querySelector(".swatch-data-mobile .swatch-data-details[data-swatch='"+dataId+"']").classList.remove("d-none");var productGrid=item.closest(".collection-listing-product-grid");if(productGrid!=null){var imgProduct=productGrid.querySelector(".product-card-image img");imgProduct.setAttribute("srcset",dataIdSrc);var dataTitle=item.closest("a").getAttribute("title"),dataHandle=item.closest("a").getAttribute("data-handle"),dataListPrice=item.closest("a").getAttribute("data-listPrice"),dataPrice=item.closest("a").getAttribute("data-price");productGrid.querySelector(".card-img a").setAttribute("href",collectionPath+"/products/"+dataHandle),productGrid.querySelector("span.price span").innerHTML=dataPrice,productGrid.querySelector("s.price")&&(dataListPrice===dataPrice?(productGrid.querySelector("s.price").classList.remove("d-block"),productGrid.querySelector("s.price").classList.add("d-none")):dataListPrice!=dataPrice&&(productGrid.querySelector("s.price").classList.add("d-block"),productGrid.querySelector("s.price").classList.remove("d-none"))),productGrid.querySelector("h6 a.product-link").innerHTML=dataTitle,productGrid.querySelector("h6 a.product-link").setAttribute("href",collectionPath+"/products/"+dataHandle)}})}),typeof window.setupAddToCartFunction=="function"&&window.setupAddToCartFunction(),typeof window.setupAddToCartFunctionDesk=="function"&&window.setupAddToCartFunctionDesk(),typeof window.setupContinueShoppingButton=="function"&&window.setupContinueShoppingButton()})}static getSwatchGroup(request){const state=customJS.swatchLoading,{swatchTag}=request;if(!swatchTag)return customJS.fetchSwatchGroup(request);const cached=state.groupResponses.get(swatchTag);if(cached&&Date.now()-cached.cachedAt<state.sessionCacheTtl)return cached.lastUsedAt=Date.now(),customJS.touchStoredSwatchGroups(new Set([swatchTag])),cached.response;cached&&state.groupResponses.delete(swatchTag);const stored=customJS.getStoredSwatchGroup(swatchTag);if(stored){const response2=Promise.resolve(stored.html);return state.groupResponses.set(swatchTag,{response:response2,cachedAt:stored.cachedAt,lastUsedAt:stored.lastUsedAt}),customJS.pruneMemorySwatchCache(),response2}const now=Date.now(),cacheEntry={response:null,cachedAt:now,lastUsedAt:now};let response;return response=customJS.fetchSwatchGroup(request).then(data=>(customJS.storeSwatchGroup(swatchTag,data),data)).catch(error=>{throw state.groupResponses.get(swatchTag)===cacheEntry&&state.groupResponses.delete(swatchTag),error}),cacheEntry.response=response,state.groupResponses.set(swatchTag,cacheEntry),customJS.pruneMemorySwatchCache(),response}static getSwatchSessionScope(){const shopify=window.Shopify||{},themeId=shopify.theme&&shopify.theme.id?shopify.theme.id:"theme",locale=shopify.locale||document.documentElement.lang||"locale",country=shopify.country||"country",currency=shopify.currency&&shopify.currency.active?shopify.currency.active:"currency";return`kp-swatch-groups-v1:${themeId}:${locale}:${country}:${currency}`}static getSwatchSessionEntryKey(swatchTag){return`${customJS.getSwatchSessionScope()}:entry:${swatchTag}`}static getSwatchSessionIndex(){try{const raw=sessionStorage.getItem(`${customJS.getSwatchSessionScope()}:index`)||"[]",index=JSON.parse(raw);return Array.isArray(index)?index.filter(item=>item&&typeof item.swatchTag=="string"&&Number.isFinite(item.cachedAt)).map(item=>({swatchTag:item.swatchTag,cachedAt:item.cachedAt,lastUsedAt:Number.isFinite(item.lastUsedAt)?item.lastUsedAt:item.cachedAt})):[]}catch{return[]}}static touchStoredSwatchGroups(swatchTags){const state=customJS.swatchLoading,now=Date.now(),indexKey=`${customJS.getSwatchSessionScope()}:index`;try{const index=customJS.getSwatchSessionIndex().filter(item=>{const keep=item.cachedAt<=now&&now-item.cachedAt<state.sessionCacheTtl;return keep||sessionStorage.removeItem(customJS.getSwatchSessionEntryKey(item.swatchTag)),keep});index.forEach(item=>{swatchTags.has(item.swatchTag)&&(item.lastUsedAt=now)}),sessionStorage.setItem(indexKey,JSON.stringify(index))}catch{return customJS.touchMemorySwatchGroups(swatchTags,now)}customJS.touchMemorySwatchGroups(swatchTags,now)}static touchMemorySwatchGroups(swatchTags,now){customJS.swatchLoading.groupResponses.forEac
1h((entry,swatchTag)=>{swatchTags.has(swatchTag)&&(entry.lastUsedAt=now)}),customJS.pruneMemorySwatchCache()}static pruneMemorySwatchCache(){const state=customJS.swatchLoading,now=Date.now();state.groupResponses.forEach((entry,swatchTag)=>{(!entry||!Number.isFinite(entry.cachedAt)||entry.cachedAt>now||now-entry.cachedAt>=state.sessionCacheTtl)&&state.groupResponses.delete(swatchTag)});const oldest=Array.from(state.groupResponses.entries()).sort((first,second)=>{const firstUsedAt=Number.isFinite(first[1].lastUsedAt)?first[1].lastUsedAt:first[1].cachedAt,secondUsedAt=Number.isFinite(second[1].lastUsedAt)?second[1].lastUsedAt:second[1].cachedAt;return firstUsedAt-secondUsedAt});for(;state.groupResponses.size>state.sessionCacheMaxEntries;)state.groupResponses.delete(oldest.shift()[0])}static getStoredSwatchGroup(swatchTag){try{const entryKey=customJS.getSwatchSessionEntryKey(swatchTag),raw=sessionStorage.getItem(entryKey);if(!raw)return null;const entry=JSON.parse(raw),now=Date.now();if(!entry||typeof entry.html!="string"||!Number.isFinite(entry.cachedAt)||entry.cachedAt>now||now-entry.cachedAt>=customJS.swatchLoading.sessionCacheTtl)return sessionStorage.removeItem(entryKey),null;const container=new DOMParser().parseFromString(entry.html,"text/html").querySelector(".swatches-container");
1return!container||!container.querySelector(".swatch-data-details-wrapper")?(sessionStorage.removeItem(entryKey),null):(entry.lastUsedAt=now,customJS.touchStoredSwatchGroups(new Set([swatchTag])),entry)}catch{return null}}static storeSwatchGroup(swatchTag,html){const state=customJS.swatchLoading,now=Date.now(),entryKey=customJS.getSwatchSessionEntryKey(swatchTag),indexKey=`${customJS.getSwatchSessionScope()}:index`;try{let index=customJS.getSwatchSessionIndex();for(index=index.filter(item=>{const keep=item.swatchTag!==swatchTag&&item.cachedAt<=now&&now-item.cachedAt<state.sessionCacheTtl;return keep||sessionStorage.removeItem(customJS.getSwatchSessionEntryKey(item.swatchTag)),keep}),index.sort((first,second)=>first.lastUsedAt-second.lastUsedAt);index.length>=state.sessionCacheMaxEntries;){const oldest=index.shift();sessionStorage.removeItem(customJS.getSwatchSessionEntryKey(oldest.swatchTag))}const value=JSON.stringify({cachedAt:now,html});let stored=!1;for(;!stored;)try{sessionStorage.setItem(entryKey,value),stored=!0}catch{const oldest=index.shift();if(!oldest)return;sessionStorage.removeItem(customJS.getSwatchSessionEntryKey(oldest.swatchTag))}index.push({swatchTag,cachedAt:now,lastUsedAt:now});try{sessionStorage.setItem(indexKey,JSON.stringify(index))}catch{sessionStorage.removeItem(entryKey)}}catch{return}}static fetchSwatchGroup(request){const{prHandle,swatchTag}=request;return fetch(`/collections/all/${swatchTag}?view=swatchesForPlp&cp_handle=${prHandle}`).then(res=>{if(!res.ok)throw new Error(`Swatch request failed: ${res.status}`);return res.text()}).then(data=>{const container=new DOMParser().parseFromString(data,"text/html").querySelector(".swatches-container");
1if(!container||!container.querySelector(".swatch-data-details-wrapper"))throw new Error("Swatch response did not contain product controls");return container.outerHTML})}static prepareSwatchGroup(data,prId){const container=new DOMParser().parseFromString(data,"text/html").querySelector(".swatches-container");if(!container||!container.querySelector(".swatch-data-details-wrapper"))throw new Error("Swatch response did not contain product controls");const slider=container.querySelector(".product-grid-swatch-images"),sliderOptions=slider&&slider.getAttribute("data-slider");if(sliderOptions){const options=JSON.parse(sliderOptions);options.navigation&&(options.navigation.nextEl=`.card-button-next-${prId}`,options.navigation.prevEl=`.card-button-prev-${prId}`,slider.setAttribute("data-slider",JSON.stringify(options)))}return customJS.setSwatchNavigationClass(container.querySelector(".swiper-button-next"),"card-button-next-",prId),customJS.setSwatchNavigationClass(container.querySelector(".swiper-button-prev"),"card-button-prev-",prId),container}static setSwatchNavigationClass(element,prefix,prId){if(!element)return;const classes=(element.getAttribute("class")||"").split(/\s+/).filter(name=>name&&!name.startsWith(prefix));classes.push(`${prefix}${prId}`),element.setAttribute("class",classes.join(" "))}}new customJS;
2//# sourceMappingURL=/cdn/shop/t/81/assets/custom.js.map?v=109470688167999485811789763274

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.