1window.theme=window.theme||{},function(t){const e={defaultTo:function(t,e){return null==t||t!=t?e:t},trapFocus:function(e){var i=e.namespace?"focusin."+e.namespace:"focusin";e.$elementToFocus||(e.$elementToFocus=e.$container),e.$container.attr("tabindex","-1"),e.$elementToFocus.focus(),t(document).off("focusin"),t(document).on(i,(function(t){e.$container[0]===t.target||e.$container.has(t.target).length||e.$container.focus()}))},removeTrapFocus:function(e){var i=e.namespace?"focusin."+e.namespace:"focusin";e.$container&&e.$container.length&&e.$container.removeAttr("tabindex"),t(document).off(i)},lockMobileScrolling:function(e,i){if(i)var s=i;else s=t(document.documentElement).add("body");s.on("touchmove"+e,(function(){return!1}))},unlockMobileScrolling:function(e,i){if(i)var s=i;else s=t(document.documentElement).add("body");s.off(e)}};function i(t,i,s,r){if(i=e.defaultTo(i,2),s=e.defaultTo(s,","),r=e.defaultTo(r,"."),isNaN(t)||null==t)return 0;const a=(t=(t/100).toFixed(i)).split(".");return a[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g,"$1"+s)+(a[1]?r+a[1]:"")}theme.Currency={formatMoney:function(t,e){"string"==typeof t&&(t=t.replace(".",""));var s="",r=/\{\{\s*(\w+)\s*\}\}/;switch(e.match(r)[1]){case"amount":s=i(t,2);break;case"amount_no_decimals":s=i(t,0);break;case"amount_with_comma_separator":s=i(t,2,".",",");break;case"amount_no_decimals_with_comma_separator":s=i(t,0,".",",");break;case"amount_no_decimals_with_space_separator":s=i(t,0," ")}return e.replace(r,s)},getBaseUnit:function(t){if(t&&t.unit_price_measurement&&t.unit_price_measurement.reference_value)return 1===t.unit_price_measurement.reference_value?t.unit_price_measurement.reference_unit:t.unit_price_measurement.reference_value+t.unit_price_measurement.reference_unit}},theme.customerTemplates=function(){function e(){t("#RecoverPasswordForm").toggleClass("hide"),t("#CustomerLoginForm").toggleClass("hide")}return{init:function(){var i,s;"#recover"===window.location.hash&&e(),t("#RecoverPassword").on("click",(function(t){t.preventDefault(),e()})),t("#HideRecoverPasswordLink").on("click",(function(t){t.preventDefault(),e()})),t(".reset-password-success").length&&t("#ResetSuccess").removeClass("hide"),i=t("#AddressNewForm"),s=t(".js-address-form"),i.length&&s.length&&(Shopify&&t(".js-address-country").each((function(){var e=t(this),i=e.data("country-id"),s=e.data("province-id"),r=e.data("province-container-id");new Shopify.CountryProvinceSelector(i,s,{hideElement:r})})),t(".address-new-toggle").on("click",(function(){i.toggleClass("hide")})),t(".address-edit-toggle").on("click",(function(){var e=t(this).data("form-id");t("#EditAddress_"+e).toggleClass("hide")})),t(".address-delete").on("click",(function(){var e=t(this),i=e.data("form-id"),s=e.data("confirm-message");confirm(s||"Are you sure you wish to delete this address?")&&Shopify.postLink("/account/addresses/"+i,{parameters:{_method:"delete"}})})))}}}(),theme.bp={},theme.config={youTubeReady:!1,vimeoReady:!1,vimeoLoading:!1,isTouch:!!("ontouchstart"in window||window.DocumentTouch&&window.document instanceof DocumentTouch||window.navigator.maxTouchPoints||window.navigator.msMaxTouchPoints),recentlyViewed:[]},theme.recentlyViewed={recent:{},productInfo:{}},window.onYouTubeIframeAPIReady=function(){theme.config.youTubeReady=!0,t("body").trigger("youTubeReady")},theme.init=function(){theme.setGlobals(),t(document).on("keydown",(function(e){"Tab"===e.key&&t("html").addClass("tab-outline")})),t(document).on("mousedown touchstart",(function(){t("html").removeClass("tab-outline")})),t(".footer__newsletter-input").on("keyup",(function(){t(this).addClass("footer__newsletter-input--active")})),theme.customerTemplates.init()},theme.setGlobals=function(){theme.config.isTouch&&t("body").addClass("supports-touch")},t(document).ready((function(){theme.init()})),window.themeUtils=e}(jQuery),window.utilities={controlYoutubeVideo:(t,e)=>{t.contentWindow.postMessage(`{"event":"command","func":"${e}","args":""}'`,"*")},handleize:t=>t.trim().toLowerCase().replace(/[^\w]+/g,"-").replace(/-$/,"")},function(){let t=null,e=!0;const i=document.getElementById("mongoose-navbar");
1if(!i)return;const s=document.getElementById("globalHeaderSection").parentElement,r=Array.from(document.querySelectorAll(".-js-on-scroll")).map((t=>{const e="true"===t.dataset.useParent?t.parentElement:t;let i,s;switch(t.dataset.offset){case"page load":i=()=>!0;break;case"one quarter elem":i=t=>{const i=t-e.clientHeight/4;return e.getBoundingClientRect().top<=i};break;default:i=(t,i)=>e.getBoundingClientRect().top<=t-i}if("play video"===t.dataset.action)s=()=>t.play();else s=()=>t.classList.add("-animated");return function(t,e){return!!i(t,e)&&(s(),!0)}})),a=Array.from(document.querySelectorAll(".-js-parallax-scroll")).map((t=>{const e="true"===t.dataset.useParent?t.parentElement:t,i=t.dataset.parallaxMin?parseInt(t.dataset.parallaxMin):0,s=parseInt(t.dataset.parallaxMax)-i;let r;switch(t.dataset.action){case"px":r=e=>t.style.setProperty("--parallax-val",`${e}px`);break;case"vw":r=e=>{t.style.setProperty("--parallax-val",`${e}vw`)};break;default:r=e=>t.style.setProperty("--parallax-val",`${e}%`)}return function(a){let n=-1*e.clientHeight;t.classList.contains("-js-parallax-scroll__img-mask")&&(a=.75*window.innerHeight,n=.25*window.innerHeight);const l=a-n,o=e.getBoundingClientRect().top;r(i+s*(o<n?1:o>a?0:(a-o)/l))}}));function n(){window.scrollY<60?(s.classList.remove("-has-pinned-nav"),i.classList.remove("pinned-nav")):(s.classList.add("-has-pinned-nav"),i.classList.add("pinned-nav"));const t=window.innerHeight,a=t/4;e&&(document.querySelectorAll(".-js-on-scroll").forEach((t=>{t.getBoundingClientRect().top<-1e3&&t.classList.add("-no-animate")})),e=!1);let n=r.length;for(;--n>-1;){r[n](t,a)&&r.splice(n,1)}}function l(e){t&&window.clearTimeout(t),t=window.setTimeout(n,10)}document.addEventListener("DOMContentLoaded",n),window.addEventListener("scroll",l),window.addEventListener("resize",l),window.addEventListener("scroll",(function(){const t=window.innerHeight,e=t-0;a.forEach((i=>i(t,0,e)))}))}(),function(){window._handleClickLoadMore=function(t,e={prefix:"chunk",btnSuffix:"load",contentSuffix:"content"}){document.getElementById(`${e.prefix}-${t}-${e.btnSuffix}`).classList.add("hidden"),document.getElementById(`${e.prefix}-${t}-${e.contentSuffix}`).classList.remove("hidden");let i=document.getElementById(`${e.prefix}-${t+1}-${e.btnSuffix}`);i&&i.classList.remove("hidden")};window.BlogFilter=class{constructor(t,{filterKeys:e,filterFns:i,language:s,settings:r,sortOptions:a,translations:n,isSearchPage:l,blog:o}){this.elem=t,this.firstLoad=!0,this.elemOffset=this.elem.offsetTop;const c={clearfilters:"Clear all",resultstext:"results",sortlabel:"Sort by"};n?(this.hasTranslation=!0,this.TEXT={...c,...n}):this.TEXT=c,this.settings=r,this.isSearchPage=l,this.language=s,this.blog=o,this.mobileCloseElems=t.querySelectorAll(".filter-and-sort-js-close"),this.filtersElem=t.querySelector(".filter-and-sort__filters"),this.outputElem=t.querySelector(".filter-and-sort__products"),this.filterArea=t.querySelector(".filter-and-sort__container"),this.resultCountParent=t.querySelector(".plp-filter__controls"),this.resultCountElem=t.querySelector(".filter-and-sort__status__result-count"),this.resultCountTextElem=t.querySelector(".filter-and-sort__status__result-count__text"),this.clearFiltersElem=t.querySelector(".filter-and-sort-js-clear"),this.filtersToggleElem=t.querySelector(".plp-filter__toggle"),this.filtersToggleTextElem=this.filtersToggleElem.querySelector(".plp-filter__toggle--text"),this.filtersToggleBtnElem=this.filtersToggleElem.querySelector(".plp-filter__toggle--button"),this.activeFiltersListElem=t.querySelector(".filter-and-sort__active-filters-list"),this.sortParent=t.querySelector(".filter-and-sort__sort ul"),this.sortLabel=t.querySelector(".filter-and-sort__sort-label"),this.sortText=t.querySelector("#filter-and-sort__sort-label__variable"),this.mobileClearAllElem=this.elem.querySelector(".filter-and-sort__mobile-clear-filters"),this.filterCountElem=this.elem.querySelector(".filter-and-sort__mobile-filters-count"),this.toggleCountElem=this.elem.querySelector(".filter-and-sort__toggle__filter-count"),this.baseSearchRules=[],this.baseProducts=[],this.priceFilteredProducts=[],this.results=[],this.filterKeys="string"==typeof e?e.split(","):e,this.filterFns=i||{},this.sortOptions=a,this.filters=this.filterKeys.reduce(((t,e)=>{const i=this.elem.querySelector(`.filter-and-sort__filter[data-filterkey='${e}']`);return i&&(t[e]={parentElem:i,listElem:i.querySelector("ul"),values:i.dataset.f
1iltervalues.split(",").reduce(((t,e)=>("_"!==e[0]&&t.push({display:e.replace(/'/g,"'").replace(/"/g,"""),tag:window.utilities.handleize(e.replace(/"/g,'"'))}),t)),[])}),t}),{}),this.filterKeys.length||(this.noFilters=!0),this.noSort&&this.noFilters&&this.resultCountParent.classList.add("hidden"),this.activeFilters={},this.bindClickEvents(),this.filterKeys.length||this.elem.classList.add("-filters-hidden"),this.firstLoad&&(this._checkForMobile()?(this.filtersElem.classList.add("-hide-filters"),this.elem.classList.add("-filters-hidden")):this.elem.querySelectorAll(".js-expandable").forEach((t=>{t.classList.add("-open"),t.style.height="auto"})),this.getFiltersFromURL(),this.firstLoad=!1)}_getQueryParams(t){return decodeURIComponent(t).split("&").reduce(((t,e)=>{const[i,s]=e.split("=");return t[i]=s,t}),{})}getFiltersFromURL(){const[t,e]=window.location.href.split("?"),i=e?this._getQueryParams(e):null;i&&i.activeFilters&&(this.activeFilters=i.activeFilters.split("|").reduce(((t,e)=>{const[i,s]=e.split("~");return t[i]=s.split("_"),t}),{}))}saveFiltersToURL(){const[t,e]=window.location.href.split("?"),i=e?this._getQueryParams(e):{},s=Object.keys(this.activeFilters);i.activeSort=this.activeSort,i.activeSortDirection=this.activeSortDirection,this.filterByStock?i.filterByStock="true":delete i.filterByStock,s.length?i.activeFilters=s.map((t=>`${t}~${this.activeFilters[t].join("_")}`)).join("|"):delete i.activeFilters;const r=[t,Object.keys(i).map((t=>`${t}=${i[t]}`)).join("&")].join("?");window.history.replaceState({path:r},"",r)}_checkForMobile(){return"fixed"==window.getComputedStyle(this.filtersElem).position}toggleFilters(){this.elem.classList.toggle("-filters-hidden"),this.filtersElem.classList.toggle("-hide-filters"),this.elem.classList.contains("-filters-hidden")?document.documentElement.classList.remove("noScrollMobile"):document.documentElement.classList.add("noScrollMobile");const t=this.filtersToggleTextElem.dataset.toggleText,e=this.filtersToggleTextElem.textContent,i=Object.keys(this.activeFilters).length;this.filtersToggleTextElem.dataset.toggleText=e,this.filtersToggleTextElem.textContent=t,this.filtersToggleBtnElem.classList.toggle("-active"),!this._checkForMobile()&&this.firstLoad&&(this.firstLoad=!1,this.elem.querySelectorAll(".js-expandable").forEach((t=>{t.classList.add("-open"),t.style.height="auto"}))),toggleClassOnScroll(this.filtersElem,"-adjusted-position",{andConditional:this._checkForMobile()}),i>0?this.mobileClearAllElem.classList.remove("hidden"):this.mobileClearAllElem.classList.add("hidden")}bindClickEvents(){const t=this.filtersElem.querySelectorAll(".filter-and-sort__filter");t.length>0&&(t.forEach((t=>{t.addEventListener("click",(e=>{const i="SPAN"===e.target.nodeName?e.target.parentElement:e.target,s=i?i.dataset.f
1ilterval:null;if(i.classList.toggle("-active"),null!=s){const e=t.dataset.filterkey;if(this.activeFilters[e]){const t=this.activeFilters[e].indexOf(s);t>-1?(this.activeFilters[e].splice(t,1),0===this.activeFilters[e].length&&delete this.activeFilters[e]):this.activeFilters[e].push(s)}else this.activeFilters[e]=[s];this.filter()}}))})),this.activeFiltersListElem.addEventListener("click",(t=>{if(t.target.closest(".filter-and-sort-js-clear"))this.activeFilters={},this.filter();else{const e=t.target.closest(".filter-and-sort__active-filters-list__item");if(e){const t=e.dataset.filterval;if(null!=t){const i=e.dataset.filterkey,s=this.activeFilters[i].indexOf(t);this.activeFilters[i].splice(s,1),0===this.activeFilters[i].length&&delete this.activeFilters[i],this.filter()}}}})),this.clearFiltersElem.addEventListener("click",(()=>{this.activeFilters={},this.filter()})),this.elem.querySelectorAll(".view-more-filters").forEach((t=>{t.addEventListener("click",(()=>{t.closest(".filter-and-sort__filter").classList.remove("-show-view-more")}))}))),this.filtersToggleElem.addEventListener("click",(()=>this.toggleFilters()));
1this.mobileCloseElems.forEach((t=>{t.onclick=()=>{this.toggleFilters(),window.setTimeout((()=>{window.scrollTo(0,this.elemOffset-164)}),0),this.resultCountParent.style.removeProperty("position")}}))}getFilteredResults(t){const e=Object.keys(t);let i=this.filterByStock?this.priceFilteredProducts.filter((t=>t.available)):this.priceFilteredProducts;if(0===e.length)return i;const s=e.map((t=>{const e=this.activeFilters[t];return{key:t,values:e,len:e.length}}));return i=i.filter((t=>{let e=s.length;for(;--e>-1;){let i=s[e],r=i.len,a=i.values,n=!1;for(;--r>-1;)if(t.tags.indexOf(a[r])>-1){n=!0;break}if(!n)return!1}return!0})),i}filter(){this.results=this.getFilteredResults(this.activeFilters),this.render(this.results,this.results.length),this.renderFilters(),this.saveFiltersToURL()}renderResult(t){return`\n <div class="plp-content__card">\n <div class="product-card" data-base-url="/blogs/${this.blog}/${t.handle}">\n <div class="">\n <a href="/blogs/${this.blog}/${t.handle}" aria-label="{{ 'home_page.onboarding.product_title' | t }}" class="grid-product__link">\n\n <div class="image-wrap blog-card__wrapper">\n <img class="grid-product__image blog-card__image image-zoom" src="${t.defaultImage}" alt="" />\n </div>\n </a>\n </div>\n\n <div class="product-card__details">\n <a href="/blogs/${this.blog}/${t.handle}" class="grid-product__link">\n <div class="product-card__title grid-product__title--body blog-card__body">\n ${t.title}\n </div>\n </a>\n </div>\n </div>\n </div>\n `}render(t,e){this.resultCountTextElem.textContent=e+" "+(1===e?"Result":"Results"),this.resultCountElem.dataset.state=1===e?"singular":"plural";const i=_chunkArray(t);if(this.outputElem.innerHTML=i.map(((t,e)=>`\n <div id="chunk-${e}-load" class="${1!==e?"hidden":""}" style="width:100%; margin-bottom: 32px; display: flex; justify-content: center;">\n <div class="button button__primary theme__dark" onClick="window._handleClickLoadMore(${e})"> More Articles <svg style="margin-left: 24px; width: 12px;" width="16" height="8" viewBox="0 0 16 8" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M1.5 1.00636C3.55856 2.96372 7.67568 6.87845 7.67568 6.87845C7.75695 6.95574 7.87372 7 7.99638 7C8.11903 7 8.2358 6.95574 8.31707 6.87845C8.31707 6.87845 12.439 2.95948 14.5 1" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>\n </svg> </div>\n </div>\n <div id="chunk-${e}-content" class="${e>0?"hidden":""}" style="width:100%; display: flex; flex-wrap: wrap;">\n ${t.map((t=>`${this.renderResult(t)}`)).join("")}\n </div>`)).join(""),e<3)for(let t=0;t<3-e;t++)this.outputElem.innerHTML+='<div class="plp-spacer-div"></div>';this.outputElem.querySelectorAll("img").forEach((t=>{t.onload=function(){t.style.opacity=1}}))}_renderFilterLineItem(t,e,i){return`<li class="filter-and-sort__filter-item filter-and-sort__filter-item__default" data-filterval="${e.tag}">${e.display} ( ${i} )</li>`}_renderFilterGroupBasedOnProductSet(t,e){const i=this.filters[t];if(!i)return;let s;s=i.values.sort(((t,e)=>t.display.localeCompare(e.display))).reduce(((i,s)=>{let r=0;return e.forEach((t=>{t.tags.indexOf(s.tag)>-1&&++r})),r>0&&i.push(this._renderFilterLineItem(t,s,r)),i}),[]),s.length>6?i.parentElem.classList.add("-has-overflow"):i.parentElem.classList.remove("-has-overflow"),s.length?(i.parentElem.classList.remove("hidden"),i.listElem.innerHTML=s.join("")):(i.parentElem.classList.add("hidden"),i.listElem.innerHTML="")}renderFilters(){if(Object.keys(this.activeFilters).length>0){this.filterKeys.forEach((t=>{const e=JSON.parse(JSON.stringify(this.activeFilters));delete e[t];const i=this.getFilteredResults(e);this._renderFilterGroupBasedOnProductSet(t,i)}));const t=Object.keys(this.activeFilters).reduce(((t,e)=>(this.activeFilters[e].forEach((i=>{const s=this.filtersElem.querySelector(`.filter-and-sort__filter[data-filterkey="${e}"] .filter-and-sort__filter-item[data-filterval="${i}"]`);let r=i.trim();s&&(s.classList.add("-active"),r=s.textContent.split("(")[0].trim()),t.push(`<li class="filter-and-sort__active-filters-list__item" data-filterkey="${e}" data-filterval="${i}"><span>${r}</span></li>`)})),t)),[]);t.push(`<li class="filter-and-sort__clear-filters filter-and-sort-js-clear">${this.TEXT.clearfilters}</li>`),this.activeFiltersListElem.innerHTML=t.join("")}else this.filterKeys.forEach((t=>{this._renderFilterGroupBasedOnProductSet(t,this.results)})),this.activeFiltersListElem.innerHTML="";this.updateMobileFilterCount()}updateMobileFilterCount(){let t=0;for(let e=0;e<Object.keys(this.activeFilters).length;e++)t+=this.activeFilters[Object.keys(this.activeFilters)[e]].length;if(t>0){this.mobileClearAllElem.classList.remove("hidden"),this.toggleCountElem.classList.remove("hidden");const e=`( ${t} )`;this.filterCountElem.innerHTML=e,this.toggleCountElem.innerHTML=` ${e}`}else this.mobileClearAllElem.classList.add("hidden"),this.toggleCountElem.classList.add("hidden")}toggleVisibility(t){switch(t){case"show":this.elem.classList.remove("hidden");break;case"hide":this.elem.classList.add("hidden");break;default:this.elem.classList.toggle("hidden")}}prepareResultData(t){if(!t||!t.length)return[];return t.map((t=>{const e=t.base_data;return e.top_rated=!!t.top_rated,e.is_new=!!t.is_new,e.defaultImage=t.defaultImage,e.has_custom_label=!1,"string"==typeof e.tags&&(e.tags=e.tags.split(",")),e.tags=e.tags.map((t=>("_"===t[0]&&(e.has_custom_label=!0,e.custom_label=t.replace("_label_","")),window.utilities.handleize(t)))),e}))}updateResults({doReset:t,products:e,baseSearchRules:i,showResultsLink:s}){this.baseSearchRules=i;const r=this.prepareResultData(e);if(this.baseProducts=r,this.priceFilteredProducts=this.baseProducts,this.results=r,t)this.elem.dataset.state="initial";else if(0===e.length)this.elem.dataset.state="no results";else{this.elem.dataset.state="has results";const t=!s||s.error?"":s.url;document.getElementById("bikefinder_results_link")&&(document.getElementById("bikefinder_results_link").value=t),!this.hidepricing&&this.priceFilter&&this.priceFilter.updateBaseValues(this.currentPriceRange.min,this.currentPriceRange.max),this.filter()}if(this.initialUpdateFired){const t=this.isSearchPage?0:this.elem.offsetTop;window.scrollTo(0,t)}else this.initialUpdateFired=!0;return this.elem.dataset.state}}}();const _chunkArray=(t,e=12)=>{var i,s,r=[];for(i=0,s=t.length;i<s;i+=e){let s=t.slice(i,i+e);r.push(s)}return r},toggleClassOnScroll=(t,e,{bToggleAboveThreshold:i=!0,threshold:s=60,andConditional:r=!0}={})=>{const a=i?window.scrollY<s:window.scrollY>s;r=void 0===r||(typeof r==typeof[]?evalBoolArr_And(r):r),toggleClass(t,e,a&&r)},toggleClass=(t,e,i)=>{i?t.classList.add(e):t.classList.remove(e)},evalBoolArr_And=t=>{for(const e in t)if(!e)return!1;return!0},evalBoolArr_Or=t=>{for(const e in t)if(e)return!0;return!1};!function(){async function t(t,e){const i=await fetch(t,{headers:{Accept:"application/json","Content-Type":"application/json"},method:"POST",body:JSON.stringify(e)}),s=await i.json();if(!i.ok){const t=new Error(s.description||s.message||"Cart update failed");throw t.status=i.status,t.data=s,t}return s}class e{constructor(t,e){this.elem=t,this.name=e,this.openElem=document.querySelector(`.js-drawer-open-${e}`),this.closeElem=this.elem.querySelector(".js-drawer-close"),this.activeSource=null,this.scrollLockY=0,this.isOpen=!1,document.documentElement.addEventListener("click",(t=>{!!t.target.closest(`#${this.elem.id}`)||this.close()})),document.documentElement.addEventListener("keyup",(t=>{27===t.keyCode&&this.close()})),this.openElem.setAttribute("aria-controls",this.elem.id),this.openElem.setAttribute("aria-expanded","fal
1se"),this.elem.setAttribute("aria-hidden","true"),this.elem.setAttribute("inert",""),this.openElem.addEventListener("click",(t=>this.open(t))),this.closeElem.addEventListener("click",(()=>this.close()))}lockPageScroll(){this.scrollLockY=window.pageYOffset||document.documentElement.scrollTop||0,document.body.style.position="fixed",document.body.style.top=`-${this.scrollLockY}px`,document.body.style.left="0",document.body.style.right="0",document.body.style.width="100%"}unlockPageScroll(){const t=this.scrollLockY||0;document.body.style.position="",document.body.style.top="",document.body.style.left="",document.body.style.right="",document.body.style.width="",window.scrollTo(0,t),this.scrollLockY=0}close(){if(!this.isOpen)return;const t=this.activeSource||this.openElem;document.activeElement.blur(),this.elem.classList.remove("drawer--is-open"),this.elem.setAttribute("aria-hidden","true"),this.elem.setAttribute("inert",""),this.openElem.setAttribute("aria-expanded","false"),document.documentElement.classList.remove("js-drawer-open"),document.documentElement.classList.add("js-drawer-closing"),"cart"===this.name&&(document.documentElement.classList.remove("js-cart-drawer-open"),document.documentElement.classList.add("js-cart-drawer-closing"),this.unlockPageScroll()),window.setTimeout((function(){document.documentElement.classList.remove("js-drawer-closing"),document.documentElement.classList.remove("js-cart-drawer-closing")}),500),this.isOpen=!1,themeUtils.removeTrapFocus({$container:$(this.elem),namespace:"drawer_focus"}),this.activeSource&&this.activeSource.attributes["aria-expanded"]&&this.activeSource.setAttribute("aria-expanded","false"),window.setTimeout((()=>{t&&"function"==typeof t.focus&&t.focus()}),0)}open(t){t&&t.preventDefault(),this.isOpen||(t&&(t.stopPropagation(),this.activeSource=t.currentTarget||this.openElem),this.elem.classList.add("drawer--is-open"),this.elem.setAttribute("aria-hidden","false"),this.elem.removeAttribute("inert"),this.openElem.setAttribute("aria-expanded","true"),document.documentElement.classList.add("js-drawer-open"),"cart"===this.name&&(document.documentElement.classList.add("js-cart-drawer-open"),this.lockPageScroll()),this.isOpen=!0,themeUtils.trapFocus({$container:$(this.elem),namespace:"drawer_focus"}),this.closeElem&&this.closeElem.focus(),this.activeSource&&this.activeSource.attributes["aria-expanded"]&&this.activeSource.setAttribute("aria-expanded","true"))}}window.theCart=new class{constructor(){this.namespace=".ajaxcart",this.drawer=new e(document.getElementById("CartDrawer"),"cart"),this.rebuyEnabled=!!(window.theme&&window.theme.rebuy&&window.theme.rebuy.enabled),this.rebuyWidgetId=window.theme&&window.theme.rebuy?window.theme.rebuy.cartFlyoutId:null,this._rebuyInitDone=!1,this._rebuyCartSync=null,this._rebuyAtcArmed=!1,this._rebuyAtcArmTimer=null,this._rebuyStyleObserver=null,this._rebuyCarouselRefresh=null,this._rebuyCarouselObserver=null;const t=this.drawer.open.bind(this.drawer);this.drawer.open=e=>{t(e),this.initRebuyOnce()},this.status={loaded:!1,loading:!1},this.elem=document.getElementById("CartDrawer"),this.container=document.getElementById("CartContainer"),this.MiniCartEmpty=document.getElementById("MiniCartEmpty"),this.MiniCartWithItems=document.getElementById("MiniCartWithItems"),this.MiniCartItems=document.getElementById("MiniCartItems"),this.MiniCartFooter=document.getElementById("MiniCartFooter"),this.MiniCartPrice=document.getElementById("MiniCartPrice"),this.MiniCartSubmit=document.getElementById("MiniCartSubmit"),this.MiniCartShippingNote=document.getElementById("MiniCartShippingNote"),this.MiniCartShippingProgress=document.getElementById("MiniCartShippingProgress"),this.MiniCartFooterShipping=document.getElementById("MiniCartFooterShipping"),this.template=document.getElementById("CartTemplate"),this.cartBubble=document.querySelector(".cart-link__bubble"),this.cartCount=document.querySelector(".icon-cart-count"),document.body.addEventListener("click",(t=>{const e=t.target.closest(".cart__checkout");e&&e.classList.add("btn--loading")})),document.body.addEventListener("change",(t=>{const e=t.target.closest('textarea[name="note"]');e&&this.updateNote(e.value)})),document.body.addEventListener("click",(t=>
1{t.target.closest(".js-rebuy-atc")&&(this._rebuyAtcArmed=!0,clearTimeout(this._rebuyAtcArmTimer),this._rebuyAtcArmTimer=setTimeout((()=>{this._rebuyAtcArmed=!1}),2e3))}),!0),document.addEventListener("rebuy:cart.change",(()=>{clearTimeout(this._rebuyCartSync),this._rebuyCartSync=setTimeout((()=>{if(!this.status.loaded)return;const t=!!this._rebuyAtcArmed;this._rebuyAtcArmed=!1,this.updateCart(t)}),150)})),this.quantityListeners(),this.updateCart(!1)}getRebuyMount(){return this.elem&&this.rebuyWidgetId?this.elem.querySelector(`.mini-cart__rebuy[data-rebuy-id="${this.rebuyWidgetId}"]`):null}isRebuyInitialized(){const t=this.getRebuyMount();return!(!t||"true"!==t.getAttribute("data-initialized"))}startRebuyDisplayGuard(){if(this._rebuyStyleObserver)return;const t=this.getRebuyMount();t&&(this._rebuyStyleObserver=new MutationObserver((()=>{const t=this.getRebuyMount();if(!t)return;const e=this.MiniCartWithItems&&!this.MiniCartWithItems.classList.contains("hidden"),i=this._rebuyInitDone||this.isRebuyInitialized();e&&i&&t.style&&"none"===t.style.display&&t.style.removeProperty("display")})),this._rebuyStyleObserver.observe(t,{attributes:!0,attributeFilter:["style"]}))}async addMiniCartRebuyItem(e,i){if(this.status.loading)return;const s=i&&i.currentTarget?i.currentTarget:null,r=s?s.closest(".mini-cart-rebuy__card"):null,a=r?r.querySelector(".mini-cart-rebuy__select--variant"):null,n=a&&a.value||e.selected_variant_id||e.selected_variant&&e.selected_variant.id,l=e.variants||[],o=l.find((t=>String(t.id)===String(n))),c=l.find((t=>!1!==t.available)),d=o||e.selected_variant||c||l[0];if(d&&!1!==d.available){this.loading(!0),e.status&&(e.status="adding");try{await t("/cart/add.js",{id:d.id,quantity:1}),await this.updateCart(!1)}catch(t){console.warn("[Mini Cart Rebuy] Add failed",t);const e=s?s.textContent:"",i=t&&t.message?t.message:"Unable to add";s&&(s.dataset.errorText=i,s.classList.add("has-error"),s.textContent="Unable to add",window.setTimeout((()=>{s.classList.remove("has-error"),s.textContent=e||"Add",delete s.dataset.errorText}),2500))}finally{e.status&&(e.status="ready"),this.loading(!1)}}}initMiniRebuyCarousel(t=!1){const e=this.getRebuyMount();if(!e)return;const i=e.querySelector(".js-mini-cart-rebuy-carousel");i&&(t||"true"!==i.dataset.carouselInit)&&(i.dataset.carouselInit="true",new ScrollableContent(i))}refreshMiniRebuyCarousel(){const t=this.getRebuyMount();if(!t)return;const e=t.querySelector(".js-mini-cart-rebuy-carousel");e&&(e.removeAttribute("data-carousel-init"),requestAnimationFrame((()=>{this.initMiniRebuyCarousel(!0)})))}startMiniRebuyCarouselObserver(){if(this._rebuyCarouselObserver)return;const t=this.getRebuyMount();t&&(this._rebuyCarouselObserver=new MutationObserver((()=>{clearTimeout(this._rebuyCarouselRefresh),this._rebuyCarouselRefresh=setTimeout((()=>{const e=t.querySelector(".js-mini-cart-rebuy-carousel");e&&(e.removeAttribute("data-carousel-init"),this.initMiniRebuyCarousel(!0))}),60)})),this._rebuyCarouselObserver.observe(t,{childList:!0,subtree:!0}))}initRebuyOnce(){const t=this.getRebuyMount();if(!t)return;if(!this.rebuyEnabled||!this.rebuyWidgetId)return;if(!this.MiniCartWithItems||this.MiniCartWithItems.classList.contains("hidden"))return void this.hideRebuyMount(t,!0);if(this._rebuyInitDone||this.isRebuyInitialized())return this._rebuyInitDone=!0,this.startRebuyDisplayGuard(),this.startMiniRebuyCarouselObserver(),this.showRebuyMount(t),void this.refreshMiniRebuyCarousel();if(!window.Rebuy||"function"!=typeof window.Rebuy.init)return void this.hideRebuyMount(t,!0);this.hideRebuyMount(t,!0);try{window.Rebuy.init()}catch(e){return console.warn("[Rebuy] init failed",e),void this.hideRebuyMount(t,!0)}let e=0;const i=()=>this.isRebuyInitialized()?(this._rebuyInitDone=!0,this.startRebuyDisplayGuard(),this.startMiniRebuyCarouselObserver(),this.showRebuyMount(t),void this.refreshMiniRebuyCarousel()):++e<10?setTimeout(i,100):(this._rebuyInitDone=!0,this.startRebuyDisplayGuard(),this.startMiniRebuyCarouselObserver(),this.showRebuyMount(t),void this.refreshMiniRebuyCarousel());i()}hideRebuyMount(t,e=!1){if(!t)return;!(this._rebuyInitDone||this.isRebuyInitialized())||e?(t.classList.add("is-hidden"),t.style.display="none"):t.classList.add("is-hidden")}showRebuyMount(t){t&&(t.classList.remove("is-hidden"),(this._rebuyInitDone||this.isRebuyInitialized())&&(t.style.removeProperty("display"),requestAnimationFrame((()=>{this.initMiniRebuyAccordion(),this.refreshMiniRebuyCarousel()}))))}initMiniRebuyAccordion(){const t=this.getRebuyMount();if(!t)return;const e=t.querySelector(".mini-cart-rebuy-accordion");if(!e||"true"===e.dataset.accordionInit)return;const i=e.querySelector(".mini-cart-rebuy-accordion__label"),s=e.querySelector(".mini-cart-rebuy-accordion__content"),r=e.querySelector(".mini-cart-rebuy__top")||i;if(!i||!s||!r)return;e.dataset.accordionInit="true";const a=()=>r.offsetHeight,n=()=>r.offsetHeight+(()=>{const t=window.getComputedStyle(r);
1return parseFloat(t.marginBottom)||0})()+s.scrollHeight,l=e.classList.contains("is-open");i.setAttribute("aria-expanded",l?"true":"false"),e.style.height=l?`${n()}px`:`${a()}px`,l&&requestAnimationFrame((()=>{e.style.height="auto",this.refreshMiniRebuyCarousel()})),i.addEventListener("click",(()=>{const t=e.classList.contains("is-open");e.classList.add("is-animating"),e.style.height=`${e.offsetHeight}px`,requestAnimationFrame((()=>{t?(e.classList.remove("is-open"),i.setAttribute("aria-expanded","false"),e.style.height=`${a()}px`):(e.classList.add("is-open"),i.setAttribute("aria-expanded","true"),e.style.height=`${n()}px`)}))})),e.addEventListener("transitionend",(t=>{"height"===t.propertyName&&(e.classList.remove("is-animating"),e.classList.contains("is-open")&&(e.style.height="auto",this.refreshMiniRebuyCarousel()))}))}async updateCart(t){const e=await this.getCart();return this.buildCart(e,t)}async addItemFromForm(e){try{return await t("/cart/add.js",e),await this.updateCart(!0)}catch(t){console.warn("Error adding item to cart",t)}}updateCartNotification(t){t.item_count>0?(this.cartCount.classList.remove("icon-cart-count-hidden"),this.cartCount.textContent=t.item_count):(this.cartCount.classList.add("icon-cart-count-hidden"),this.cartCount.textContent="")}showLineItemError(t,e){const i=Array.from(this.elem.querySelectorAll(".js-qty__num")).find((e=>e.dataset.key===t));if(!i)return;const s=i.closest(".mini-cart__item");if(!s)return;const r=s.querySelector(".mini-cart__item-error");r&&(r.textContent=e||"Unable to update this item.",r.hidden=!1)}async buildCart(t,e){this.loading(!0);const i=t.items_subtotal_price/100;if(this.updateShippingUI(i),0===t.item_count){this.MiniCartWithItems.classList.add("hidden"),this.MiniCartEmpty.classList.remove("hidden");const t=this.getRebuyMount();this.hideRebuyMount(t,!0)}else{let e=1;await this.ensureVariantCompareAt(t.items);let i=0;const r=t.items.map((t=>{const s=null!=t.image?t.image.replace(/(\.[^.]*)$/,"_400x$1"):"//cdn.shopify.com/s/assets/admin/no-image-medium-cc9732cb976dd349a0df1d39816fbcc7.gif";if(null!==t.properties&&Object.keys(t.properties).forEach((e=>{"_"!==e[0]&&t.properties[e]||delete t.properties[e]})),0!==t.line_level_discount_allocations.length)for(var r in t.line_level_discount_allocations){let e=t.line_level_discount_allocations[r].amount;t.line_level_discount_allocations[r].formattedAmount=theme.Currency.formatMoney(e,theme.settings.moneyFormat)}e+=2;const a=window.theme&&window.theme.variantCompareAt&&Number(window.theme.variantCompareAt[String(t.id)]||0),n=t.final_price??t.price,l=a>0?a*t.quantity:0,o=null!=t.final_line_price?t.final_line_price:n*t.quantity,c=l>o,d=c?l-o:0;i+=d;const h=l>0?Math.floor(d/l*100):0;return{key:t.key,url:t.url,img:s,animationRow:e,name:t.product_title,variation:t.variant_title,properties:t.properties,itemQty:t.quantity,originalPrice:c?theme.Currency.formatMoney(l,theme.settings.moneyFormat):"",price:theme.Currency.formatMoney(o,theme.settings.moneyFormat),unitPrice:theme.Currency.formatMoney(t.unit_price,theme.settings.moneyFormat),unitBase:theme.Currency.getBaseUnit(t),discounts:t.line_level_discount_allocations||[],discountsApplied:c,savedLabel:c?`Save ${theme.Currency.formatMoney(d,theme.settings.moneyFormat)} (${h}%)`:"",vendor:t.vendor}}));if(e+=2,0!==t.cart_level_discount_applications.length)for(var s in t.cart_level_discount_applications){let e=t.cart_level_discount_applications[s].total_allocated_amount;t.cart_level_discount_applications[s].formattedAmount=theme.Currency.formatMoney(e,theme.settings.moneyFormat)}const a={items:r,note:t.note,lastAnimationRow:e,cartDiscounts:t.cart_level_discount_applications,cartDiscountsApplied:0!==t.cart_level_discount_applications.length,totalPrice:theme.Currency.formatMoney(t.total_price,theme.settings.moneyFormat),subTotalPrice:theme.Currency.formatMoney(t.items_subtotal_price,theme.settings.moneyFormat),subtotalOriginalPrice:i>0?theme.Currency.formatMoney(t.items_subtotal_price+i,theme.settings.moneyFormat):"",shippingThreshold:t.items_subtotal_price/100};this.render(a),this.MiniCartWithItems.classList.remove("hidden"),this.MiniCartEmpty.classList.add("hidden");const n=this.getRebuyMount();(this._rebuyInitDone||this.isRebuyInitialized())&&this.showRebuyMount(n)}this.status.loaded=!0,this.loading(!1),this.updateCartNotification(t),window.Shopify&&Shopify.StorefrontExpressButtons&&Shopify.StorefrontExpressButtons.initialize(),!0===e&&this.drawer.open()}loading(t){this.status.loading=t,t?this.container.classList.add("is-loading"):this.container.classList.remove("is-loading")}toggleButtonLoading(t){const e=t?"add":"remove";this.MiniCartSubmit.classList[e]("btn--loading"),this.MiniCartSubmit.disabled=t}_validateQuantity(t){return(parseFloat(t)!=parseInt(t)||isNaN(t))&&(t=1),parseInt(t)}quantityListeners(){this.elem.addEventListener("click",(t=>
1{const e=t.target.closest(".js-qty__adjust");if(e){const t="plus"===e.dataset.action?1:-1,i=e.parentElement.querySelector("input"),s=i.dataset.key,r=t+this._validateQuantity(i.value);this.updateItem(s,r)}})),this.elem.addEventListener("change",(t=>{const e=t.target.closest(".js-qty__num");if(e){const t=this._validateQuantity(e.value);this.updateItem(e.dataset.key,t)}}))}async updateItem(e,i){if(!this.status.loading){this.loading(!0);try{const s=await t("/cart/change.js",{id:e,quantity:i});await this.buildCart(s)}catch(t){console.warn("Cart update error",t),await this.updateCart(!1),this.showLineItemError(e,t.message)}finally{this.loading(!1)}}}async getCart(){return(await fetch("/cart.js")).json()}updateNote(e){return t("/cart/update.js",{note:e})}getProductHandleFromUrl(t){if(!t)return"";const e=t.split("?")[0].match(/\/products\/([^/]+)/);return e?e[1]:""}async ensureVariantCompareAt(t){window.theme=window.theme||{},window.theme.variantCompareAt=window.theme.variantCompareAt||{};const e=new Set;t.forEach((t=>{const i=String(t.id);if(null!=window.theme.variantCompareAt[i])return;const s=this.getProductHandleFromUrl(t.url);s&&e.add(s)})),e.size&&await Promise.all(Array.from(e).map((async t=>{try{const e=await fetch(`${window.Shopify.routes.root}products/${t}.js`);if(!e.ok)return;const i=await e.json();if(!i||!i.variants)return;
1i.variants.forEach((t=>{window.theme.variantCompareAt[String(t.id)]=Number(t.compare_at_price||0)}))}catch(e){console.warn(`[Mini Cart] Failed to load compare-at pricing for ${t}`,e)}})))}updateShippingUI(t){const e=Math.max(0,49-t),i=Math.min(t/49*100,100),s=0===e;this.MiniCartShippingNote.textContent=t<=0?"Spend $49 to earn free shipping!":e>0?`Spend $${e.toFixed(2)} more to earn free shipping!`:"You've unlocked free shipping!",this.MiniCartShippingProgress&&(this.MiniCartShippingProgress.style.width=`${i}%`),this.MiniCartFooterShipping&&(this.MiniCartFooterShipping.textContent=s?"Free":"Calculated at checkout",this.MiniCartFooterShipping.classList.toggle("mini-cart__footer-shipping-value--free",s))}renderItem(t){const e=[t.variation?`<span class="mini-cart__item-variants">${t.variation}</span>`:"",t.properties?Object.keys(t.properties).map((e=>t.properties[e]?`<span class="mini-cart__item-variants">${e}: ${t.properties[e]}</span>`:"")).join(""):""].filter(Boolean).join("");return`\n <div class="mini-cart__item appear-animation appear-delay-${t.animationRow}">\n <div class="mini-cart__item-main">\n <div class="mini-cart__item-info">\n <div class="mini-cart__item-media-wrap">\n <a href="${t.url}" class="mini-cart__item-media">\n <span class="mini-cart__item-media-inner">\n <img src="${t.img}" alt="${t.name}" class="mini-cart__item-image">\n </span>\n </a>\n </div>\n\n <div class="mini-cart__item-details">\n <a href="${t.url}" class="mini-cart__item-title">${t.name}</a>\n\n ${e?`<div class="mini-cart__item-variants-wrap">${e}</div>`:""}\n </div>\n </div>\n\n <div class="mini-cart__item-side">\n <div class="mini-cart__item-qty">\n <label for="updates_${t.key}" class="visually-hidden">Quantity</label>\n\n <div class="mini-cart__item-qty-control js-qty__wrapper">\n <button\n type="button"\n class="mini-cart__item-qty-button js-qty__adjust js-qty__adjust--minus"\n data-action="minus"\n aria-label="Reduce item quantity by one"\n >\n <svg aria-hidden="true" focusable="false" class="icon icon-minus" role="img" viewBox="0 0 20 20">\n <path fill="#444" d="M17.543 11.029H2.1A1.032 1.032 0 0 1 1.071 10c0-.566.463-1.029 1.029-1.029h15.443c.566 0 1.029.463 1.029 1.029 0 .566-.463 1.029-1.029 1.029z" />\n </svg>\n <span class="icon__fallback-text" aria-hidden="true">−</span>\n </button>\n\n <input\n type="text"\n id="updates_${t.key}"\n class="mini-cart__item-qty-input js-qty__num"\n value="${t.itemQty}"\n data-id="${t.key}"\n data-key="${t.key}"\n min="0"\n aria-label="quantity"\n pattern="[0-9]*"\n name="updates[]"\n >\n\n <button\n type="button"\n class="mini-cart__item-qty-button js-qty__adjust js-qty__adjust--plus"\n data-action="plus"\n aria-label="Increase item quantity by one"\n >\n <svg aria-hidden="true" focusable="false" class="icon icon-plus" role="img" viewBox="0 0 20 20">\n <path fill="#444" d="M17.409 8.929h-6.695V2.258c0-.566-.506-1.029-1.071-1.029s-1.071.463-1.071 1.029v6.671H1.967C1.401 8.929.938 9.435.938 10s.463 1.071 1.029 1.071h6.605V17.7c0 .566.506 1.071 1.071 1.071s1.071-.463 1.071-1.071v-6.629h6.695c.566 0 1.029-.506 1.029-1.071s-.463-1.071-1.029-1.071z" />\n </svg>\n <span class="icon__fallback-text" aria-hidden="true">+</span>\n </button>\n </div>\n </div>\n\n <div class="mini-cart__item-pricing">\n <div class="mini-cart__item-price-row">\n ${t.discountsApplied?`\n <small class="mini-cart__item-price-compare">${t.originalPrice}</small>
1\n <span class="mini-cart__item-price mini-cart__item-price--sale">${t.price}</span>\n `:`\n <span class="mini-cart__item-price">${t.price}</span>\n `}\n </div>\n\n ${t.savedLabel?`<div class="mini-cart__item-saved">${t.savedLabel}</div>`:""}\n\n ${t.discountsApplied?`\n <div class="mini-cart__item-discounts">\n ${t.discounts.map((t=>`\n <small class="mini-cart__item-discount">\n ${t.discount_application.title} (-${t.formattedAmount})\n </small>\n `)).join("")}\n </div>\n `:""}\n\n ${t.unitBase?`\n <div class="mini-cart__item-unit-price">\n ${t.unitPrice}/${t.unitBase}\n </div>\n `:""}\n </div>\n </div>\n </div>\n <div class="mini-cart__item-error" role="alert" aria-live="polite" hidden></div>\n </div>\n `}render(t){this.MiniCartItems.innerHTML=t.items.map((t=>this.renderItem(t))).join(""),this.MiniCartPrice.innerHTML=t.subtotalOriginalPrice?`\n <small class="mini-cart__footer-subtotal-compare">${t.subtotalOriginalPrice}</small>\n <span class="mini-cart__footer-subtotal-current">${t.subTotalPrice}</span>\n `:t.subTotalPrice,this.MiniCartFooter.className=this.MiniCartFooter.className.replace(/appear-delay-\d+/,`appear-delay-${t.lastAnimationRow}`)}}}();class CompareTable{constructor(t){document.querySelectorAll(".compare-content__item__price").forEach((t=>{this.togglePriceValues(t,!0)})),t.addEventListener("click",(t=>{"BUTTON"===t.target.tagName&&this.handleClick(t.target)}))}handleClick(t){document.querySelectorAll(`[data-col="${t.dataset.col}"]`).forEach((t=>{if("BUTTON"==t.tagName)t.disabled?t.classList.remove("-selected-style"):t.classList.add("-selected-style"),t.toggleAttribute("disabled");else{const e="IMG"==t.nodeName?t.src:"A"==t.nodeName?t.href:t.textContent,i=t.dataset.toggleValue;t.dataset.toggleValue=e,t.classList.contains("compare-content__item__price")?this.togglePriceValues(t):t.classList.contains("tt-product-block__rating")?this.toggleProductReview(t):t.classList.contains("tt-product-block__stars")?this.toggleRatingStars(t):t.href?t.href=i:t.src?t.src=i:"SPAN"!=t.tagName&&(t.textContent=i)}}))}togglePriceValues(t,e){e||(t.dataset.product="1"===t.dataset.product?"2":"1");const i=t.getAttribute(`data-price-${t.dataset.product}`).split("|");i.length>1?t.innerHTML=`<span class="-compare-price">${i[0]}</span> <span class="-original-price">${i[1]}</span>`:t.innerHTML=i[0]}toggleProductReview(t){t.dataset.product="1"===t.dataset.product?"2":"1";const e=t.textContent,i=t.dataset.productReview;t.dataset.productReview=e,t.textContent=i}toggleRatingStars(t){t.dataset.product="1"===t.dataset.product?"2":"1";if(1==t.dataset.product){const e=t.getAttribute("data-product-1-rating");t.querySelectorAll(".TTteaser__star").forEach(((t,i)=>{let s=e>i?"full":e>=.75&&e<i?"half":"empty";t.querySelector("svg").setAttribute("class",`TTteaser__icon--${s}`),t.querySelector("svg").innerHTML=`<use xlink:href="#tt-teaser-star--${s}"></use>`}))}else{const e=t.getAttribute("data-product-2-rating");t.querySelectorAll(".TTteaser__star").forEach(((t,i)=>{let s=e>i?"full":e>=.75&&e<i?"half":"empty";t.querySelector("svg").setAttribute("class",`TTteaser__icon--${s}`),t.querySelector("svg").innerHTML=`<use xlink:href="#tt-teaser-star--${s}"></use>`}))}}}class CountdownTimer{constructor(t){this.el=t,this.display=t.querySelector("[data-time-display]"),this.year=t.dataset.year,this.month=t.dataset.month,this.day=t.dataset.day,this.hour=t.dataset.hour,this.minute=t.dataset.minute,this.daysPlaceholder=t.querySelector("[date-days-placeholder]"),this.hoursPlaceholder=t.querySelector("[date-hours-placeholder]"),this.minutesPlaceholder=t.querySelector("[date-minutes-placeholder]"),this.secondsPlaceholder=t.querySelector("[date-seconds-placeholder]"),this.wrapper=t.closest(".countdown-timer"),this.messagePlaceholder=this.wrapper.querySelector("[data-message-placeholder]"),this.hideTimerOnComplete=this.wrapper.dataset.hideTimer,this.completeMessage=this.wrapper.dataset.completeMessage,this.contentWrapper=this.wrapper.querySelector(".countdown-timer__content"),this.timerComplete=!1,this.init()}init(){this._calculate(),this.intervalId=setInterval((()=>{this.timerComplete?clearInterval(this.intervalId):this._calculate()}),1e3)}_calculate(){const t=new Date(`${this.month}/${this.day}/${this.year} ${this.hour}:${this.minute}:00`).getTime()-Date.now(),e=t=>String(t).padStart(2,"0");if(t>0){const i={days:Math.floor(t/864e5),hours:Math.floor(t/36e5%24),minutes:Math.floor(t/1e3/60%60),seconds:Math.floor(t/1e3%60)};this.daysPlaceholder&&(this.daysPlaceholder.innerHTML=e(i.days)),this.hoursPlaceholder&&(this.hoursPlaceholder.innerHTML=e(i.hours)),this.minutesPlaceholder&&(this.minutesPlaceholder.innerHTML=e(i.minutes)),this.secondsPlaceholder&&(this.secondsPlaceholder.innerHTML=e(i.seconds)),this.contentWrapper&&this.contentWrapper.classList.add("countdown-timer__content--visible"),this.display&&setTimeout((()=>{this.display.classList.add("countdown-timer__display--loaded")}),1)}else{("true"===this.hideTimerOnComplete||"1"===this.hideTimerOnComplete||!0===this.hideTimerOnComplete)&&(this.contentWrapper&&(this.contentWrapper.style.display="none"),this.messagePlaceholder&&this.completeMessage&&this.messagePlaceholder.classList.add("countdown-timer__message--visible")),this.timerComplete=!0}}}class Expandable{constructor(t,e){this.elem=t,this.label=t.children[0],this.content=t.children[1],this.getGroup=e,this.elem.style.height=this.label.scrollHeight+"px",this.content.style.display="block",this.label.onclick=()=>this.toggle(),window.addEventListener("resize",(t=>{this.adjustOnResizeTimeout&&window.clearTimeout(this.adjustOnResizeTimeout),this.adjustOnResizeTimeout=window.setTimeout((()=>{this.adjustOnResize()}),100)})),this.contentSizeObserver=new ResizeObserver((()=>{this.adjustOnResize()})),this.contentSizeObserver.observe(this.content)}_animateHeight(t,e){this.elem.style.height=t+"px",window.setTimeout((()=>{this.elem.style.height=e+"px"}),0)}adjustOnResize(){if(this.elem.classList.contains("-open")){const t=this.label.scrollHeight+this.content.scrollHeight;this._animateHeight(this.elem.scrollHeight,t)}else this.elem.style.height=this.label.scrollHeight+"px"}close(){this.elem.classList.contains("-open")&&(this.elem.classList.remove("-open"),this._animateHeight(this.elem.scrollHeight,this.label.scrollHeight))}open(){this.elem.classList.contains("-open")||(this.elem.classList.add("-open"),this._animateHeight(this.label.scrollHeight,this.label.scrollHeight+this.content.scrollHeight))}toggle(){const t=this.elem.classList.contains("-open");
1this.getGroup&&this.getGroup().forEach((t=>{t!==this&&t.close()})),t?this.close():this.open()}}const groups=new Map;document.querySelectorAll(".js-expandable").forEach((t=>{const e=t.closest("[data-accordion-group]");if(e){groups.has(e)||groups.set(e,[]);const i=new Expandable(t,(()=>groups.get(e)));groups.get(e).push(i)}else new Expandable(t,null)})),function(){class t{constructor(t,e=(()=>{}),i={}){const{min:s=0,max:r=100,format:a="$1,000.00",language:n="en"}=i,l=a.replace(/\d/g,"").split(""),o=l[0],c=l[l.length-1],d="."===c?",":".";this.formatCharacters={currencySymbol:o,decimalDelimiter:c,thousandsDelimiter:d},this.priceFormatLanguage="."===c?"en-us":"en-uk",this.elem=t,this.updateCallback=e,this.barElem=t.querySelector(".js-price-range__bar"),this.absoluteMin=null,this.absoluteMax=null,this.pctBasis=null,this.min=null,this.max=null,this.EVENT_NAMES={MOUSE:{start:"mousedown",move:"mousemove",end:"mouseup"},TOUCH:{start:"touchstart",move:"touchmove",end:"touchend"}},this.activeOrb=null,this.orbs=Array.from(t.querySelectorAll(".js-price-range__bar-orb")).reduce(((t,e)=>(t[e.dataset.val]={pct:null,elem:e},t)),{}),this.inputs=Array.from(t.querySelectorAll(".js-price-range__inputs-input")).reduce(((t,e)=>(e.addEventListener("keydown",(t=>{if(188===t.keyCode||190===t.keyCode||110===t.keyCode)return t.preventDefault(),!1})),t[e.dataset.val]={elem:e.closest(".js-price-range__inputs-input__outer"),input:e},t)),{}),this.updateBaseValues(s,r),this.updateOrb("min"),this.updateOrb("max"),this.bindEvents()}static normalizePageXY(t){const e=t.touches,i=e?e[0]:t;return{pageX:i.pageX,pageY:i.pageY}}generatePct(t){return(t-this.absoluteMin)/this.pctBasis}generatePrice(t){return Math.round(this.absoluteMin+this.pctBasis*t)}_generateMouseupFunction(t,e){return function(){document.removeEventListener(t.move,e)}}_generateMoveOrbFunction({orb:e,inputObj:i,moveLimits:s,barRect:r,generatePriceFn:a,updateHook:n}){return function(l){let o=(t.normalizePageXY(l).pageX-r.left)/r.width;o<s.min?o=s.min:o>s.max&&(o=s.max),e.pct=o,e.elem.style.setProperty("--pct",o),i.input.value=a(o),i.elem.dataset.formattedPrice=parseInt(i.input.value),n()}}inputChangeHandler(t){const e=this.inputs[t],i="min"===t?{min:this.absoluteMin,max:this.max}:{min:this.min,max:this.absoluteMax};let s=parseInt(e.input.value);s<i.min?s=i.min:s>i.max&&(s=i.max),this[t]=s,e.input.value=s,e.elem.dataset.formattedPrice=s,this.updateOrb(t),this.updateCallback(this.min,this.max)}mousedownHandler(t,e){const i="min"===e?"max":"min";this.orbs[i].elem.classList.remove("-last-active"),this.activeOrb=this.orbs[e],this.activeOrb.elem.classList.add("-last-active"),this.activeInput=this.inputs[e],this.orbs[e].elem.classList.add("-active"),this.inputs[e].elem.classList.add("-active");const s="min"===e?{min:0,max:this.orbs.max.pct}:{min:this.orbs.min.pct,max:1},r=this._generateMoveOrbFunction({orb:this.orbs[e],inputObj:this.inputs[e],moveLimits:s,barRect:this.barElem.getBoundingClientRect(),updateHook:this._updateHook.bind(this),generatePriceFn:this.generatePrice.bind(this)}),a=this._generateMouseupFunction(t,r);document.addEventListener(t.move,r),document.addEventListener(t.end,a,{once:!0})}mouseupHandler(){this.activeOrb&&(this.min=this.generatePrice(this.orbs.min.pct),this.max=this.generatePrice(this.orbs.max.pct),this.activeInput.elem.classList.remove("-active"),this.activeOrb.elem.classList.remove("-active"),this.activeOrb=null,this.updateCallback(this.min,this.max))}bindEvents(){window.addEventListener("load",(()=>{["min","max"].forEach((t=>{this.orbs[t].elem.addEventListener(this.EVENT_NAMES.MOUSE.start,(e=>{this.mousedownHandler(this.EVENT_NAMES.MOUSE,t)})),this.orbs[t].elem.addEventListener(this.EVENT_NAMES.TOUCH.start,(e=>{this.mousedownHandler(this.EVENT_NAMES.TOUCH,t)})),this.inputs[t].input.addEventListener("change",(e=>{this.inputChangeHandler(t)}))})),document.addEventListener(this.EVENT_NAMES.MOUSE.end,(t=>{this.mouseupHandler()})),document.addEventListener(this.EVENT_NAMES.TOUCH.end,(t=>{this.mouseupHandler()}))}))}_updateHook(){this.barElem.style.setProperty("--bar-left",[this.orbs.min.pct*this.barElem.offsetWidth,"px"].join("")),this.barElem.style.setProperty("--bar-width",this.orbs.max.pct-this.orbs.min.pct)}updateBaseValues(t,e){if(t===e)return{error:"values are the same"};this.absoluteMin=t,this.absoluteMax=e,this.pctBasis=e-t,this.min=this.absoluteMin,this.max=this.absoluteMax,this.updateOrb("min"),this.updateOrb("max")}
1updateOrb(t){this.orbs[t].pct=this.generatePct(this[t]),this.orbs[t].elem.style.setProperty("--pct",this.orbs[t].pct),this._updateHook()}}window.FilterAndSort=class{constructor(e,{filterKeys:i,filterFns:s,language:r,settings:a,sortOptions:n,translations:l,isSearchPage:o}){this.elem=e,this.firstLoad=!0;const c={clearfilters:"Clear all",colorfilter:"Color",platformfilter:"Platform",pricefilter:"Price",pricerangetext:"to",hidepricing:!1,currencycharacter:"$",resultstext:"results",sortlabel:"Sort by",platformsortlabel:"Platform",lowhighsortlabel:"Price ($ - $$$)",highlowsortlabel:"Price ($$$ - $)",bikesingular:"Bike",bikeplural:"Bikes",sold_out:"Out of Stock"};l?(this.hasTranslation=!0,this.TEXT={...c,...l}):this.TEXT=c,this.settings=a,this.isSearchPage=o,this.language=r,this.hidepricing=this.TEXT.hidepricing,this.filterByStock=!1,this.mobileCloseElems=e.querySelectorAll(".filter-and-sort-js-close"),this.filtersElem=e.querySelector(".filter-and-sort__filters"),this.outputElem=e.querySelector(".filter-and-sort__products"),this.hasMidpageBanner=!!window.plpMidpageBanner,this.hasPromoCards=!!window.plpPromoCards,this.filterArea=e.querySelector(".filter-and-sort__container"),this.resultCountParent=e.querySelector(".plp-filter__controls"),this.resultCountElem=e.querySelector(".filter-and-sort__status__result-count"),this.resultCountTextElem=e.querySelector(".filter-and-sort__status__result-count__text"),this.clearFiltersElem=e.querySelector(".filter-and-sort-js-clear"),this.filtersToggleElem=e.querySelector(".plp-filter__toggle"),this.filtersToggleTextElem=this.filtersToggleElem.querySelector(".plp-filter__toggle--text"),this.filtersToggleBtnElem=this.filtersToggleElem.querySelector(".plp-filter__toggle--button"),this.activeFiltersListElem=e.querySelector(".filter-and-sort__active-filters-list"),this.sortParent=e.querySelector(".filter-and-sort__sort ul"),this.sortLabel=e.querySelector(".filter-and-sort__sort-label"),this.sortText=e.querySelector("#filter-and-sort__sort-label__variable"),this.mobileClearAllElem=this.elem.querySelector(".filter-and-sort__mobile-clear-filters"),this.filterCountElem=this.elem.querySelector(".filter-and-sort__mobile-filters-count"),this.toggleCountElem=this.elem.querySelector(".filter-and-sort__toggle__filter-count"),!this.hidepricing&&e.querySelector(".js-price-range")&&(this.priceFilter=new t(e.querySelector(".js-price-range"),((t,e)=>{this.filterByPrice(t,e)}),{language:this.language})),this.baseSearchRules=[],this.baseProducts=[],this.priceFilteredProducts=[],this.products=[],this.filterKeys="string"==typeof i?i.split(","):i,this.filterFns=s||{},this.sortOptions=n,this.elem.querySelectorAll(".filter-and-sort__sort-item").length||(this.elem.querySelector(".filter-and-sort__sort").classList.add("hidden"),this.noSort=!0),this.defaultSortFn=(t,e)=>null==t&&null==e?0:null==t?1:null==e?-1:t.localeCompare(e),this.minPrice=null,this.maxPrice=null,this.currentPriceRange={min:null,max:null},"string"==typeof i&&(i=i.split(",")),this.filters=i.reduce(((t,e)=>{const i=this.elem.querySelector(`.filter-and-sort__filter[data-filterkey='${e}']`);return i&&(t[e]={parentElem:i,listElem:i.querySelector("ul"),values:i.dataset.filtervalues.split(",\n").map((t=>({display:t.replace(/'/g,"'").replace(/"/g,"""),tag:window.utilities.handleize(t.replace(/"/g,'"'))})))}),t}),{}),i.length||(this.noFilters=!0),this.noSort&&this.noFilters&&this.resultCountParent.classList.add("hidden"),this.activeFilters={};const d=this.elem.querySelector(".filter-and-sort__sort-item.-active");d?(this.sortParent.classList.remove("-no-active-sort"),this.activeSort=d.dataset.sort,this.activeSortDirection=d.dataset.sortDirection):(this.sortParent.classList.add("-no-active-sort"),this.activeSort=null,this.activeSortDirection=null),this.bindClickEvents(),this.filterKeys.length||this.elem.classList.add("-filters-hidden"),this.firstLoad&&(this._checkForMobile()?(this.filtersElem.classList.add("-hide-filters"),this.elem.classList.add("-filters-hidden")):this.elem.querySelectorAll(".js-expandable").forEach((t=>{t.classList.add("-open"),t.style.height="auto"})),this.getFiltersFromURL(),window.addEventListener("load",(()=>{console.log("Page fully loaded. Initializing uniform heights..."),this.setUniformHeights()})),this.firstLoad=!1)}_getQueryParams(t){return decodeURIComponent(t).split("&").reduce(((t,e)=>{const[i,s]=e.split("=");return t[i]=s,t}),{})}setUniformHeights(){const t=this.elem.querySelectorAll(".plp-content__card"),e=this.elem.querySelectorAll(".plp-content__promo"),i=Array.from(this.elem.querySelectorAll(".plp-content__card img"));let s=0;const r=()=>{t.forEach((t=>{t.style.height="auto"})),e.forEach((t=>{t.style.height="auto"})),requestAnimationFrame((()=>{t.forEach((t=>{const e=t.getBoundingClientRect().height;e>s&&(s=e)})),e.forEach((t=>{t.style.height=`${s}px`}))}))};if(i.every((t=>t.complete)))r();else{let t=0;
1i.forEach((e=>{e.complete?t++:e.onload=()=>{t++,t===i.length&&r()}}))}}getFiltersFromURL(){const[t,e]=window.location.href.split("?"),i=e?this._getQueryParams(e):null;i&&(i.activeSort&&(this.activeSort=i.activeSort,this.activeSortDirection=i.activeSortDirection,this.elem.querySelector(".filter-and-sort__sort-item.-active").classList.remove("-active"),this.elem.querySelector(`.filter-and-sort__sort-item[data-sort="${i.activeSort}"][data-sort-direction="${i.activeSortDirection}"]`).classList.add("-active")),i.filterByStock&&(this.filterByStock=!0,this.elem.querySelector(".filter-and-sort-js-stock").classList.add("-active")),i.activeFilters&&(this.activeFilters=i.activeFilters.split("|").reduce(((t,e)=>{const[i,s]=e.split("~");return t[i]=s.split("_"),t}),{})))}saveFiltersToURL(){const[t,e]=window.location.href.split("?"),i=e?this._getQueryParams(e):{},s=Object.keys(this.activeFilters);i.activeSort=this.activeSort,i.activeSortDirection=this.activeSortDirection,this.filterByStock?i.filterByStock="true":delete i.filterByStock,s.length?i.activeFilters=s.map((t=>`${t}~${this.activeFilters[t].join("_")}`)).join("|"):delete i.activeFilters;const r=[t,Object.keys(i).map((t=>`${t}=${i[t]}`)).join("&")].join("?");window.history.replaceState({path:r},"",r)}_checkForMobile(){return"fixed"==window.getComputedStyle(this.filtersElem).position}toggleFilters(){this.elem.classList.toggle("-filters-hidden"),this.filtersElem.classList.toggle("-hide-filters"),this.elem.classList.contains("-filters-hidden")?document.documentElement.classList.remove("noScrollMobile"):document.documentElement.classList.add("noScrollMobile");const t=this.filtersToggleTextElem.dataset.toggleText,e=this.filtersToggleTextElem.textContent,i=Object.keys(this.activeFilters).length;this.filtersToggleTextElem.dataset.toggleText=e,this.filtersToggleTextElem.textContent=t,this.filtersToggleBtnElem.classList.toggle("-active"),!this._checkForMobile()&&this.firstLoad&&(this.firstLoad=!1,this.elem.querySelectorAll(".js-expandable").forEach((t=>{t.classList.add("-open"),t.style.height="auto"}))),i>0?this.mobileClearAllElem.classList.remove("hidden"):this.mobileClearAllElem.classList.add("hidden"),setTimeout((()=>{this.setUniformHeights(),console.log("toggle pressed")}),300)}toggleSort(t={}){const e=!t.forceClose&&void 0;this.sortParent.style.setProperty("--mobile-height",this.sortParent.scrollHeight+"px"),this.sortLabel.classList.toggle("-active",e),this.sortParent.classList.toggle("-open",e)}bindClickEvents(){const t=this.filtersElem.querySelectorAll(".filter-and-sort__filter"),e=this.elem.querySelector(".filter-and-sort-js-stock");e&&e.addEventListener("click",(()=>{e.classList.toggle("-active"),this.filterByStock=!this.filterByStock,this.filter()})),t.length>0&&(t.forEach((t=>{t.addEventListener("click",(e=>{const i="SPAN"===e.target.nodeName?e.target.parentElement:e.target,s=i?i.dataset.f
1ilterval:null;if(i.classList.toggle("-active"),null!=s){const e=t.dataset.filterkey;if(this.activeFilters[e]){const t=this.activeFilters[e].indexOf(s);t>-1?(this.activeFilters[e].splice(t,1),0===this.activeFilters[e].length&&delete this.activeFilters[e]):this.activeFilters[e].push(s)}else this.activeFilters[e]=[s];this.filter()}}))})),this.activeFiltersListElem.addEventListener("click",(t=>{if(t.target.closest(".filter-and-sort-js-clear"))this.clearPriceFilter(),this.activeFilters={},this.filter();else{const e=t.target.closest(".filter-and-sort__active-filters-list__item");if(e){const t=e.dataset.filterval;if(null!=t){const i=e.dataset.filterkey,s=this.activeFilters[i].indexOf(t);this.activeFilters[i].splice(s,1),0===this.activeFilters[i].length&&delete this.activeFilters[i],this.filter()}else{if("price"===e.dataset.specialFilter)this.clearPriceFilter()}}}})),this.clearFiltersElem.addEventListener("click",(()=>{this.clearPriceFilter(),this.activeFilters={},this.filter()})),this.elem.querySelectorAll(".view-more-filters").forEach((t=>{t.addEventListener("click",(()=>{t.closest(".filter-and-sort__filter").classList.remove("-show-view-more")}))}))),this.filtersToggleElem.addEventListener("click",(()=>
1this.toggleFilters())),this.mobileCloseElems.forEach((t=>{t.onclick=()=>{this.toggleFilters(),window.setTimeout((()=>{window.scrollTo(0,this.elem.offsetTop-82)}),0),this.resultCountParent.style.removeProperty("position")}})),this.elem.querySelectorAll(".filter-and-sort__sort-item").forEach((t=>{t.addEventListener("click",(()=>{const e=this.elem.querySelector(".filter-and-sort__sort-item.-active");e&&e.classList.remove("-active"),this.sortParent.classList.remove("-no-active-sort"),t.classList.add("-active"),this.activeSort=t.dataset.sort,this.activeSortDirection=t.dataset.sortDirection,this.sort(),this.saveFiltersToURL()}))})),window.addEventListener("resize",(()=>this.setUniformHeights()))}getFilteredProducts(t){const e=Object.keys(t);let i=this.filterByStock?this.priceFilteredProducts.filter((t=>t.available)):this.priceFilteredProducts;if(0===e.length)return i;const s=e.map((t=>{const e=this.activeFilters[t];return{key:t,values:e,len:e.length}}));return i=i.filter((t=>{let e=s.length;for(;--e>-1;){let i=s[e],r=i.len,a=i.values,n=!1;for(;--r>-1;)if(t.tags.indexOf(a[r])>-1){n=!0;break}if(!n)return!1}return!0})),i}filter(){this.products=this.getFilteredProducts(this.activeFilters),this.sort(),this.renderFilters(),this.saveFiltersToURL(),this.setUniformHeights()}filterByPrice(t,e){this.hidepricing||!this.priceFilter||null==t||null==e||t===this.currentPriceRange.min&&e===this.currentPriceRange.max?(this.priceFilteredProducts=this.baseProducts,this.isFilteredByPrice=!1):(this.priceFilteredProducts=this.baseProducts.filter((i=>i.price>=t&&i.price<=e)),this.isFilteredByPrice=!0),this.filter()}clearPriceFilter(){!this.hidepricing&&this.priceFilter&&(this.priceFilter.updateBaseValues(this.currentPriceRange.min,this.currentPriceRange.max),this.filterByPrice(this.currentPriceRange.min,this.currentPriceRange.max))}sort(){const t=this.activeSort?this.activeSort:this.hidepricing?"title":"price",e=this.sortOptions[t]||{},i=this.activeSortDirection?this.activeSortDirection:this.hidepricing?"ascending":"descending",s=e.fn||this.defaultSortFn;let r,a=[];if("grouped"===e.type)a=e.fn(this.products,i),r=a.reduce(((t,e)=>t+e.products.length),0);else{const e=this.products.slice(0);"featured"===t||e.sort(((e,r)=>{let a=t;if("newest"===t)a="created_at";else a=t;return"ascending"===i?s(e[a],r[a]):s(r[a],e[a])})),a=[{products:e}],r=e.length;let n=t.replace(/^\w/,(t=>t.toUpperCase()));if("Price"===n)n+="ascending"===i?": Low to High":": High to Low";this.sortText.innerHTML=n}this.render(a,r)}renderTags(t){const e=[],i=["Sale","New","Top Rated","Low Stock"],s=["sale","new","top_rated","low_stock"];let r=0,a=-1,n=s.length;for(;r<2&&++a<n;)t.badges[s[a]]&&(++r,e.push(`<div class="product-card__tag product-card__tag--${s[a]}">${i[a]}</div>`));return e.join("")}renderProduct(t){const e=theme.Currency.formatMoney(t.price,theme.settings.moneyFormat),i=t.compare_at_price,s=i&&i>t.price?theme.Currency.formatMoney(i,theme.settings.moneyFormat):null;return`\n <div class="plp-content__card product-card" data-base-url="/products/${t.handle}">\n <div class="product-card__content">\n <div class="product-card__tags">\n ${t.has_custom_label?`\n <div class="product-card__tag product-card__tag--custom">\n ${t.custom_label}\n </div>\n `:`\n ${t.sold_out?`\n <div class="product-card__tag product-card__tag--sold-out">\n ${this.TEXT.sold_out}\n </div>\n `:`\n ${this.renderTags(t)}\n `}\n `}\n </div>\n\n <a href="/products/${t.handle}" class="grid-product__link ${t.sold_out?"grid-product__link--disabled":""}">\n <div class="grid-product__image-mask image-zoom ">\n <div class="image-wrap">\n <img class="grid-product__image" src="${t.defaultImage}" alt="${t.title}" width="600" height="450" />\n </div>\n \n </div>\n </a>\n\n ${t.colors.length>0?`\n <div class="grid-product__colors grid-product__colors--${t.id}">\n ${t.colors.map(((e,i)=>{const s=t.color_variant_refs[e];if(!s.featured_image)return console.warn("No featured image set for this variant",s),"";const r=e===t.defaultColor;return`\n <button class="color-swatch color-swatch--small color-swatch--${t.swatch_lookup[e]} color-swatch--with-image color-swatch--plp ${r?"-active":""}" data-variant-id="${s.id}" data-variant-image="${s.featured_image.src.replace(/\.(png|jpg)/,"_600x.$1")}"></button>\n `})).join("")}\n </div>\n `:""}\n\n </div><div class="product-card__details">\n <a href="/products/${t.handle}" class="grid-product__link ${t.sold_out?"grid-product__link--disabled":""}">\n <div class="product-card__title grid-product__title--body">\n ${t.title}\n </div>\n ${t.plp_callout?`<p class="product-card__details--plp-callout">${t.plp_callout}</p>`:""}\n\n ${t.badges.electric?'\n <div class="product-card__electric">\n <svg version="1.1" style="width:96px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 533.6 101.8" style="enable-background:new 0 0 533.6 101.8;" xml:space="preserve"> <g id="Layer_1"></g><g id="e_insignia__x2B__Electric"><g><g><g><g><path d="M135.6,0.7V0h3.4v0.7h-1.3V4h-0.8V0.7H135.6z M140.8,0l1,2.9l1-2.9h1.1v4h-0.7V0.8L142.2,4h-0.6l-1.1-3.2V4h-0.7V0H140.8z"/></g></g><g><g><g><path d="M186.7,57.3h20.9v7.3h-29.2v-45h29v7.3h-20.6v10.8H206v6.8h-19.3V57.3z"/><path d="M234.7,56.8h19.8v7.7h-28.2v-45h8.4V56.8z"/><path d="M279.2,57.3h20.9v7.3h-29.2v-45h29v7.3h-20.6v10.8h19.3v6.8h-19.3V57.3z"/><path d="M316,42.2c0-14,9.6-24,23.8-24c6.1,0,10.9,1.9,13.9,3.9v8.4c-3.1-2.4-7.3-4.4-12.8-4.4c-10,
10-16.2,6.7-16.2,15.9c0,9.3,6.2,16.1,16.3,16.1c5.1,0,9.8-1.9,12.8-4.3v8c-3.7,2.6-8.7,4.1-14.1,4.1C324.7,65.8,316,55.4,316,42.2z"/><path d="M401.6,27.2h-13.2v37.3h-8.3V27.2h-12.9v-7.6h34.4V27.2z"/><path d="M452.1,64.5h-10.3l-15.6-20.3v20.3h-8.4v-45h18.5c8.9,0,14.6,5.4,14.6,13.3c0,7.5-5.1,12.7-14,13L452.1,64.5zM426.3,26.8v13.7h7.6c5.6,0,8.4-2.6,8.4-7c0-4.2-2.6-6.7-7.5-6.7H426.3z"/><path d="M469.3,64.5v-45h8.4v45H469.3z"/><path d="M495.8,42.2c0-14,9.6-24,23.8-24c6.1,0,10.9,1.9,13.9,3.9v8.4c-3.1-2.4-7.3-4.4-12.8-4.4c-10,0-16.2,6.7-16.2,15.9c0,9.3,6.2,16.1,16.3,16.1c5.1,0,9.8-1.9,12.8-4.3v8c-3.7,2.6-8.7,4.1-14.1,4.1C504.4,65.8,495.8,55.4,495.8,42.2z"/></g></g></g></g><g><path d="M83,64.3H34.3c-5.1,0-8.9-1.3-11.2-3.9c-2.2-2.4-3-5.6-3.2-8.3h53.2L93.9,0H48.4C34.6,0,22,6,12.7,16.8C4.6,26.3,0,38.5,0,50.2c0,9.3,2.9,17.5,8.4,23.5c4.3,4.7,12.3,10.4,25.9,10.4h40.8L83,64.3z M48.4,19.8h16.3l-5,12.4H25.8C30.6,25.3,38.2,19.8,48.4,19.8z M82.9,101.8l19.8-49.7h-0.2H87.9L108.7,0h21.3l-12.9,32.3h0.1h15.4L82.9,101.8z"/></g></g></g></svg>\n </div>\n ':'\n <div class="product-card__details--spacer"> </div>\n '}\n\n ${this.settings.vendor_enable?`<div class="product-card__vendor">${t.vendor}</div>`:""}\n </a>\n <div class="product-card__price__wrapper">\n ${s?`\n <span class="product-card__sale_price">${e}</span>\n <span class="product-card__original_price">${s}</span>\n ${t.plp_promo_cta?"":`<span class="product-card__sale_saved"> Save ${theme.Currency.formatMoney(t.compare_at_price-t.price,theme.settings.moneyFormat)} (${Math.floor((t.compare_at_price-t.price)/t.compare_at_price*100)}%)</span>`}`:`\n <span class="product-card__price">${e}</span>\n `}\n </div>\n\n ${t.plp_promo_cta?`<div class="product-card__promo" style="color: ${t.plp_promo_color}; background-color:${t.plp_promo_bgcolor}";>${t.plp_promo_cta}</div>`:""} \n\n <div class="product-card__bv-reviews">\n <div data-bv-show="inline_rating" data-bv-product-id="${t.id}" data-bv-redirect-url="/products/${t.handle}" data-bv-seo="false"></div>\n </div>\n \n </div>\n </div>\n </div>\n `}render(t,e){if(this.resultCountTextElem.textContent=e+" "+(1===e?"Result":"Results"),this.resultCountElem.dataset.state=1===e?"singular":"plural",this.hasMidpageBanner,this.hasPromoCards,this.outputElem.innerHTML=t.map((t=>{const i=t.products.map((t=>this.renderProduct(t)));return e>=9&&this.hasMidpageBanner&&i.splice(6,0,window.plpMidpageBanner),e<4&&this.hasPromoCards?window.plpPromoCards.forEach((function(t){i.push(t)})):e>=4&&this.hasPromoCards&&window.plpPromoCardLocations.forEach((function(t,e){e<window.plpPromoCards.length&&i.splice(t,0,window.plpPromoCards[e])})),`\n ${t.info?`\n <div class="filter-and-sort__products-group__info">\n <h3 class="filter-and-sort__products-group__info-title">\n <a href="${t.info.url}">${t.info.title}</a>\n <span class="filter-and-sort__products-group__info-result-count">${t.products.length} ${1===t.products.length?this.TEXT.bikesingular:this.TEXT.bikeplural}</span>\n </h3>\n <p class="filter-and-sort__products-group__info-description">${t.info.text}</p>\n </div>\n `:""}\n ${i.join("")}\n `})).join(""),e<3)for(let t=0;t<3-e;t++)this.outputElem.innerHTML+='<div class="plp-spacer-div"></div>';this.outputElem.querySelectorAll("img").forEach((t=>{t.onload=function(){t.style.opacity=1}}))}_renderFilterLineItem(t,e,i){switch(t){case"color":case"colors":const t="White"===e.display?"border: 1px solid black;":"border: 1px solid transparent;";return`<li class="filter-and-sort__filter-item filter-and-sort__filter-item__color" data-filterval="${e.tag}"><span class="filter-and-sort__filter-item__color-swatch color color-swatch--${e.tag}" style="${t};
1 width: 20px; height: 20px; border-radius:50%;"></span><span class="colorname">${e.display}</span> <span>( ${i} )</span></li>`;default:return`<li class="filter-and-sort__filter-item filter-and-sort__filter-item__default" data-filterval="${e.tag}">${e.display} ( ${i} )</li>`}}_renderFilterGroupBasedOnProductSet(t,e){const i=this.filters[t];if(!i)return;let s;s=i.values.sort(((t,e)=>t.display.localeCompare(e.display))).reduce(((i,s)=>{let r=0;return e.forEach((t=>{t.tags.indexOf(s.tag)>-1&&++r})),r>0&&i.push(this._renderFilterLineItem(t,s,r)),i}),[]),s.length>4?i.parentElem.classList.add("-has-overflow"):i.parentElem.classList.remove("-has-overflow"),s.length?(i.parentElem.classList.remove("hidden"),i.listElem.innerHTML=s.join("")):(i.parentElem.classList.add("hidden"),i.listElem.innerHTML="")}renderFilters(){if(Object.keys(this.activeFilters).length>0){this.filterKeys.forEach((t=>{const e=JSON.parse(JSON.stringify(this.activeFilters));delete e[t];const i=this.getFilteredProducts(e);this._renderFilterGroupBasedOnProductSet(t,i)}));const t=Object.keys(this.activeFilters).reduce(((t,e)=>(this.activeFilters[e].forEach((i=>{const s=this.filtersElem.querySelector(`.filter-and-sort__filter[data-filterkey="${e}"] .filter-and-sort__filter-item[data-filterval="${i}"]`);let r=i.trim();s&&(s.classList.add("-active"),r=s.textContent.split("(")[0].trim()),t.push(`<li class="filter-and-sort__active-filters-list__item" data-filterkey="${e}" data-filterval="${i}"><span style="text-transform: capitalize; margin-right: 4px;">${e}:</span><span>${r}</span></li>`)})),t)),[]);if(this.isFilteredByPrice){const e=`<li class="filter-and-sort__active-filters-list__item" data-special-filter="price"><span>${this.TEXT.currencycharacter}${this.priceFilter.min} - ${this.TEXT.currencycharacter}${this.priceFilter.max}</span></li>`;t.push(e)}t.push(`<li class="filter-and-sort__clear-filters filter-and-sort-js-clear">${this.TEXT.clearfilters}</li>`),this.activeFiltersListElem.innerHTML=t.join("")}else this.filterKeys.forEach((t=>{this._renderFilterGroupBasedOnProductSet(t,this.products)})),this.isFilteredByPrice?this.activeFiltersListElem.innerHTML=`<li class="filter-and-sort__active-filters-list__item" data-special-filter="price"><span>${this.TEXT.currencycharacter}${this.priceFilter.min} - ${this.TEXT.currencycharacter}${this.priceFilter.max}</span></li>\n <li class="filter-and-sort__clear-filters filter-and-sort-js-clear">${this.TEXT.clearfilters}</li>`:this.activeFiltersListElem.innerHTML="";this.updateMobileFilterCount()}updateMobileFilterCount(){let t=0;for(let e=0;e<Object.keys(this.activeFilters).length;e++)t+=this.activeFilters[Object.keys(this.activeFilters)[e]].length;if(t>0){this.mobileClearAllElem.classList.remove("hidden"),this.toggleCountElem.classList.remove("hidden");const e=`( ${t} )`;this.filterCountElem.innerHTML=e,this.toggleCountElem.innerHTML=` ${e}`}else this.mobileClearAllElem.classList.add("hidden"),this.toggleCountElem.classList.add("hidden")}toggleVisibility(t){switch(t){case"show":this.elem.classList.remove("hidden");break;case"hide":this.elem.classList.add("hidden");break;default:this.elem.classList.toggle("hidden")}}prepareProductData(t){if(!t||!t.length)return[];this.minPrice=t[0].base_data.price,this.maxPrice=t[0].base_data.price;const e=t.map((t=>{const e=t.base_data;return e.badges=Object.keys(t.badges).reduce(((e,i)=>(e[i]=!!t.badges[i],e)),{}),e.defaultImage=t.defaultImage,e.defaultColor=t.defaultColor,e.total_stock=t.total_stock,e.plp_callout=t.plp_callout,e.plp_promo_cta=t.plp_promo_cta,e.plp_promo_color=t.plp_promo_color,e.plp_promo_bgcolor=t.plp_promo_bgcolor,e.colors=[],e.swatch_lookup={},e.color_variant_refs={}
1,e.variants.forEach((t=>{-1===e.colors.indexOf(t.option1)&&(e.colors.push(t.option1),e.color_variant_refs[t.option1]=t,e.swatch_lookup[t.option1]=t.option1.toLowerCase().replace(/ /g,"-"))})),e.price<this.minPrice?this.minPrice=e.price:e.price>this.maxPrice&&(this.maxPrice=e.price),e.sold_out=!e.available,e.badges.low_stock=e.total_stock<=5,e.has_custom_label=!1,"string"==typeof e.tags&&(e.tags=e.tags.split(",")),e.tags=e.tags.map((t=>("_"===t[0]&&(e.has_custom_label=!0,e.custom_label=t.replace("_label_","")),window.utilities.handleize(t)))),e}));return this.currentPriceRange.min=Math.floor(this.minPrice),this.currentPriceRange.max=Math.ceil(this.maxPrice),e}updateProducts({doReset:t,products:e,baseSearchRules:i,showResultsLink:s}){this.baseSearchRules=i;const r=this.prepareProductData(e);if(this.baseProducts=r,this.priceFilteredProducts=this.baseProducts,this.products=r,t)this.elem.dataset.state="initial";else if(0===e.length)this.elem.dataset.state="no results";else{this.elem.dataset.state="has results";const t=!s||s.error?"":s.url;document.getElementById("bikefinder_results_link")&&(document.getElementById("bikefinder_results_link").value=t),!this.hidepricing&&this.priceFilter&&this.priceFilter.updateBaseValues(this.currentPriceRange.min,this.currentPriceRange.max),this.filter()}if(this.initialUpdateFired){const t=this.isSearchPage?0:this.elem.offsetTop;window.scrollTo(0,t)}else this.initialUpdateFired=!0;return this.elem.dataset.state}}}(),window.initImgCarousel=(t,e)=>{const i=`overlap-carousel-${e}`,s=`${i}__img-tag`,r=`${i}__cta__a`,a=`${i}__left`,n=`${i}__right`,l=document.getElementById(a),o=document.getElementById(n),c=document.getElementById(s),d=document.getElementById(r),h=`${i}__img-link`,u=document.getElementById(h);let m=0;const p=()=>{const e=t[m];c.src=e.desktopImg,c.setAttribute("alt",e.ctaText),e.ctaURL&&e.ctaText?(d.style.display="block",d.setAttribute("href",e.ctaURL),d.setAttribute("target",e.ctaTarget),d.setAttribute("aria-label",e.ctaText),d.innerHTML=e.ctaText+'<span class="arrow"><svg width="8" height="14" viewBox="0 0 8 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.12151 1C2.75265 2.90021 6.01492 6.70063 6.01492 6.70063C6.07933 6.77564 6.11621 6.88343 6.11621 6.99665C6.11621 7.10988 6.07933 7.21767 6.01492 7.29268C6.01492 7.29268 2.74911 11.0976 1.11621 13" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></span>',u.setAttribute("href",e.ctaURL),u.setAttribute("target",e.ctaTarget),u.setAttribute("aria-label",e.ctaText),u.removeAttribute("aria-disabled"),u.removeAttribute("tabindex"),u.style.pointerEvents=""):(d.style.display="none",u.removeAttribute("href"),u.removeAttribute("target"),u.setAttribute("aria-disabled","true"),u.setAttribute("tabindex","-1"),u.style.pointerEvents="none")};l.onclick=()=>{--m<0&&(m=t.length-1),p()},o.onclick=()=>{++m>t.length-1&&(m=0),p()},p()};class KidsSizeChart{constructor(t){this.elem=t,this.mobileDropdown=t.querySelector(".-js-height-dropdown"),this.mobileOutput=t.querySelector(".kids-size-chart__dropdown-output"),this.initialMobileOutputHTML=this.mobileOutput.innerHTML,this.sliderControl=t.querySelector(".kids-size-chart__slider-control"),this.sliderControlHead=t.querySelector(".kids-size-chart__slider-control__head"),this.sliderControlOutput=t.querySelector(".kids-size-chart__slider-control__output"),this.sliderControlOutputVal=this.sliderControlOutput.querySelector("span"),this.absoluteMin=null,this.absoluteMax=null,this.firstUpdate=!0,this.columns=Array.from(t.querySelectorAll(".-js-column")).map((t=>{const e=parseInt(t.dataset.min)||null,i=parseInt(t.dataset.max)||null;return(e&&e<this.absoluteMin||!this.absoluteMin)&&(this.absoluteMin=e),(i&&i>this.absoluteMax||!this.absoluteMax)&&(this.absoluteMax=i),{min:e,max:i,elem:t,elemHTML:t.outerHTML}})),++this.absoluteMax,this.fullHeightRange=this.absoluteMax-this.absoluteMin,this.userHeight=null,this.mobileDropdown.addEventListener("input",(()=>{""===this.mobileDropdown.value?(this.mobileDropdown.classList.add("-initial-state"),this.mobileDropdown.classList.remove("-has-two"),this.mobileOutput.innerHTML=this.initialMobileOutputHTML):(this.mobileDropdown.classList.remove("-initial-state"),this.updateUserHeight(this.mobileDropdown.value))})),this.bindInteractions()}bindInteractions(){this.isDragging=!1,this.sliderControlHead.addEventListener("touchstart",(()=>this.isDragging=!0)),this.sliderControlHead.addEventListener("mousedown",(()=>this.isDragging=!0)),document.addEventListener("touchend",(()=>this.isDragging=!1)),document.addEventListener("mouseup",(()=>this.isDragging=!1)),document.body.addEventListener("mousemove",(t=>this.updateOnDrag(t.pageX))),document.body.addEventListener("touchmove",(t=>this.updateOnDrag(t.changedTouches[0].pageX)))}updateOnDrag(t){if(this.isDragging){const e=this.sliderControl.offsetWidth,i=(t-this.sliderControl.getBoundingClientRect().left)/e,s=Math.floor(i*this.fullHeightRange)+this.absoluteMin,r=s<this.absoluteMin?this.absoluteMin:s>this.absoluteMax?this.absoluteMax:s;this.updateUserHeight(r)}}updateUserHeight(t){this.firstUpdate&&(this.elem.classList.add("-slider-engaged"),this.sliderControlOutput.classList.add("-active"),this.firstUpdate=!1),this.userHeight=t;let e=this.columns.filter((e=>t>=e.min&&(!e.max||t<=e.max)));e.length>2&&(e=e.slice(-2));const i=(t-this.absoluteMin)/this.fullHeightRange*100,s=t===this.absoluteMax?'"+':'"';this.sliderControlHead.style.marginLeft=[i,"%"].join(""),this.sliderControlOutputVal.textContent=[t,s].join(""),this.columns.forEach((t=>t.elem.classList.remove("-featured","-featured-first","-featured-second"))),e.forEach((t=>t.elem.classList.add("-featured"))),this.elem.classList.add("-has-two-featured",2===e.length),2===e.length&&(e[0].elem.classList.add("-featured-first"),e[1].elem.classList.add("-featured-second")),this.mobileOutput.classList.toggle("-has-two",2===e.length),this.mobileOutput.innerHTML=e.map((t=>t.elemHTML)).join("")}}!function(){const t=document.querySelector(".header-wrapper"),e=document.getElementById("Navigation-Links"),i=document.querySelector(".site-header__search-container"),s=[document.documentElement,document.body],r=document.getElementById("MainContent");let a=null;function n(){return"column"===window.getComputedStyle(e).flexDirection}function l(){return document.activeElement&&document.activeElement.blur(),s.forEac
1h((t=>t.classList.remove("js-drawer-open","js-drawer-open--search"))),i.classList.remove("is-active"),i.setAttribute("aria-hidden","true"),i.setAttribute("inert",""),o&&o.setAttribute("aria-expanded","false"),themeUtils.removeTrapFocus({$container:$(i),namespace:"header_search"}),themeUtils.unlockMobileScrolling(".siteNav"),r.removeEventListener("click",l),a&&(a.focus(),a=null),!1}document.querySelectorAll("#navDrawerOpen, #navDrawerClose").forEach((e=>{e.addEventListener("click",(()=>{e.classList.add("hide"),document.getElementById(e.dataset.toggle).classList.remove("hide"),"navDrawerOpen"===e.dataset.toggle?(t.classList.remove("-mobile-menu-open"),s.forEach((t=>t.classList.remove("js-drawer-open")))):(t.classList.add("-mobile-menu-open"),s.forEach((t=>t.classList.add("js-drawer-open"))))}))})),document.querySelectorAll(".main-navigation__top-level-item__link").forEach((t=>{t.addEventListener("click",(e=>{n()&&(e.preventDefault(),t.parentElement.classList.toggle("-open-links"))}))}));const o=document.querySelector(".js-search-header");o&&o.addEventListener("click",(t=>{t.preventDefault(),t.stopPropagation(),a=t.currentTarget,i.classList.add("is-active"),i.removeAttribute("inert"),i.setAttribute("aria-hidden","false"),o&&o.setAttribute("aria-expanded","true"),s.forEach((t=>t.classList.add("js-drawer-open","js-drawer-open--search"))),themeUtils.trapFocus({$container:$(i),namespace:"header_search",$elementToFocus:$(i).find("input")}),themeUtils.lockMobileScrolling(".siteNav"),r.addEventListener("click",l),document.dispatchEvent(new CustomEvent("predictive-search:open",{detail:{context:"header"},bubbles:!0}))}));const c=document.querySelector(".js-search-header-close");c&&c.addEventListener("click",(t=>{t.preventDefault(),l(),document.dispatchEvent(new CustomEvent("predictive-search:close"))}));const d=i.querySelector(".site-header__search-input");let h;d&&d.addEventListener("keyup",(function(t){27===t.keyCode&&l()})),document.addEventListener("predictive-search:close-all",(()=>{l()})),document.querySelectorAll(".main-navigation__top-level-item").forEach((t=>{let e;t.addEventListener("mouseenter",(()=>{clearTimeout(h),clearTimeout(e),e=setTimeout((()=>{document.querySelectorAll(".main-navigation__top-level-item.-megamenu-hold").forEach((e=>{e!==t&&e.classList.remove("-megamenu-hold")})),t.classList.add("-megamenu-hold")}),350)})),t.addEventListener("mouseleave",(()=>{clearTimeout(e),h=setTimeout((()=>{t.classList.remove("-megamenu-hold")}),350)}))})),document.querySelectorAll(".main-navigation__top-level-item__link").forEach((t=>{t.setAttribute("aria-haspopup","true"),t.setAttribute("aria-expanded","false")}));function u(t,e){const i=t.querySelector(".main-navigation__top-level-item__link");i&&i.setAttribute("aria-expanded",e?"true":"false")}document.querySelectorAll(".main-navigation__top-level-item").forEach((t=>{t.addEventListener("focusin",(()=>{n()||function(t){document.querySelectorAll(".main-navigation__top-level-item.-megamenu-hold").forEach((e=>{e!==t&&(e.classList.remove("-megamenu-hold"),u(e,!1))})),t.classList.add("-megamenu-hold"),u(t,!0)}(t)})),t.addEventListener("focusout",(e=>{const i=e.relatedTarget;t.contains(i)||n()||function(t){t.classList.remove("-megamenu-hold"),u(t,!1)}(t)}))})),document.addEventListener("keydown",(t=>{if("Escape"!==t.key)return;if(n())return;const e=document.querySelector(".main-navigation__top-level-item.-megamenu-hhold, .main-navigation__top-level-item.-megamenu-hold");if(!e)return;e.classList.remove("-megamenu-hold");const i=e.querySelector(".main-navigation__top-level-item__link");i&&(i.setAttribute("aria-expanded","false"),i.focus())}))}();class PredictiveSearch{constructor(t){if(this.el=t,this.enabled=this.el.getAttribute("data-enabled"),this.context=this.el.getAttribute("data-context"),this.predictiveUrl=this.el.getAttribute("data-predictive-url")||"/search/suggest",this.input=this.el.querySelector('input[type="search"]'),this.predictiveSearchResults=this.el.querySelector("#predictive-search"),this.closeBtn=this.el.querySelector(".btn--close-search"),this.screen=this.el.querySelector("[data-screen]"),this.SearchModal=this.el.closest("#SearchModal")||null,this.clearBtn=this.el.querySelector(".predictive-search__input-wrap [data-clear-search]"),document.addEventListener("predictive-search:open",(t=>{t.detail.context===this.context&&(this.el.classList.add("is-active"),setTimeout((()=>{this.input&&this.input.focus()}),100),document.body.classList.add("predictive-overflow-hidden"))})),this.SearchModal){new MutationObserver((t=>{t.forEach((t=>{if("class"===t.attributeName){t.target.className.indexOf("modal--is-active")>-1&&setTimeout((()=>{this.input&&this.input.focus()}),100)}}))})).observe(this.SearchModal,{attributes:!0})}if("false"!==this.enabled&&(this.input&&(this.input.addEventListener("keydown",(()=>{this.el.classList.add("is-active")})),this.input.addEventListener("input",this.debounce((t=>{this.onChange(t)}
1),300).bind(this))),document.addEventListener("predictive-search:close",(()=>{this.close()})),document.addEventListener("keydown",(t=>{if("Escape"===t.key||27===t.keyCode){if(!this.el.classList.contains("is-active"))return;this.close()}})),this.closeBtn&&this.closeBtn.addEventListener("click",(t=>{t.preventDefault(),this.close()})),this.screen&&this.screen.addEventListener("click",(()=>{this.close()})),this.clearBtn&&this.input)){const t=()=>{const t=this.input.value.trim().length>0;this.clearBtn.hidden=!t};t(),this.input.addEventListener("input",t),this.clearBtn.addEventListener("click",(e=>{e.preventDefault(),this.input.value="",this.input.focus(),this.predictiveSearchResults&&(this.predictiveSearchResults.innerHTML="",this.predictiveSearchResults.style.display="none"),t()}))}}onChange(){const t=this.input.value.trim();t.length&&this.getSearchResults(t)}getSearchResults(t){const e={q:t,"resources[limit]":5,"resources[limit_scope]":"each"},i=this.paramUrl(e);fetch(`${this.predictiveUrl}?${i}§ion_id=search-results`).then((t=>{if(!t.ok){const e=new Error(t.status);throw this.close(),e}return t.text()})).then((t=>{const e=(new DOMParser).parseFromString(t,"text/html").querySelector("#shopify-section-search-results");if(!e)return void this.close();const i=e.innerHTML;this.predictiveSearchResults.innerHTML=i,this.open(),window.AOS&&"function"==typeof AOS.refreshHard&&AOS.refreshHard()})).catch((t=>{this.close(),console.error("Predictive search error:",t)}))}open(){this.predictiveSearchResults&&(this.predictiveSearchResults.style.display="block")}close(){this.el.classList.contains("is-active")&&(this.predictiveSearchResults&&(this.predictiveSearchResults.style.display="none",this.predictiveSearchResults.innerHTML=""),this.el.classList.remove("is-active"),document.body.classList.remove("predictive-overflow-hidden"),document.dispatchEvent(new CustomEvent("predictive-search:close-all")))}debounce(t,e){let i;return(...s)=>{clearTimeout(i),i=setTimeout((()=>t.apply(this,s)),e)}}paramUrl(t){return Object.keys(t).map((function(e){return e+"="+encodeURIComponent(t[e])})).join("&")}}function preventClick(t){return t.preventDefault(),!1}document.addEventListener("DOMContentLoaded",(()=>{document.querySelectorAll("[data-predictive-search]").forEach((t=>{new PredictiveSearch(t)}))}));class ScrollableContent{constructor(t,e){this.scrollElem=t.querySelector(".scrollable-content__scroller"),this.scrollParent=this.scrollElem.parentElement,this.scrollBar=t.querySelector(".scrollable-content__scrollbar"),this.scrollHead=t.querySelector(".scrollable-content__scrollbar-head"),this.swipePositionHistory=[],this.transitionTimeout=null,this.transitionTimeoutLength=400,this.snapToFullSlide=!0,this.interactionType=null,this.items=e?Array.from(e):Array.from(this.scrollElem.children),this.itemsLen=this.items.length,this.startOffset=parseFloat(window.getComputedStyle(t).getPropertyValue("--scrollable-start-offset"))||0,this.startOffset&&(this.scrollElem.style.marginLeft=`${this.startOffset}px`),this.arrows=t.querySelectorAll(".scrollable-content__arrow"),this.arrows.forEach((t=>{t.addEventListener("click",(()=>{this.scrollByArrow(parseInt(t.dataset.direction))}))})),this.updateArrows(),this.scrollTimeout=null,this.swipeStartX=null,this.swipeStartY=null,this.swipeStartElemLeft=null,this.isSwiping=!1,this.shouldSwipe=!1,this.bindScrollInteractions(),this.scrollElem.addEventListener("scroll",(()=>{this.scrollTimeout&&window.clearTimeout(this.scrollTimeout),this.scrollTimeout=window.setTimeout((()=>{this.updateArrows()}),100)})),this.scrollElem.addEventListener("resize",(()=>{this.scrollTimeout&&window.clearTimeout(this.scrollTimeout),this.scrollTimeout=window.setTimeout((()=>{this.updateArrows()}),100)})),this.index=0}_saveSwipeStart(t,e,i){if(this.interactionType=i,this.disableScroll)return;this.transitionTimeout&&window.clearTimeout(this.transitionTimeout),this._toggleTransitioning(!1),this.swipeStartX=t.pageX,this.swipeStartY=t.pageY;const s=parseFloat(window.getComputedStyle(this.scrollElem).marginLeft);this.swipeStartElemLeft=Number.isNaN(s)?this.startOffset:s,this.swipeTargetElem=e,this.shouldSwipe=!0,this.swipePositionHistory=[this.swipeStartX],this.swipePositionInterval=window.setInterval((()=>{this.swipePositionHistory.push(this.currentX||this.swipeStartX)}),50)}_swipeMove(t){const e=t.pageX,i=e-this.swipeStartX,s=Math.abs(i)>Math.abs(t.pageY-this.swipeStartY);if(this.isSwiping||this.shouldSwipe&&s){this.currentX=e;const t=this.swipeStartElemLeft+i;this.isSwiping=!0,this.moveTo(t),"touch"===this.interactionType&&document.documentElement.classList.add("noScroll"),this.swipeTargetElem.addEventListener("click",preventClick)}else this.isSwiping=!1}_endSwipe(){if(!this.isSwiping)return void(this.shouldSwipe=!1);this.swipePositionInterval&&window.clearInterval(this.swipePositionInterval);const t=this.swipePositionHistory.length-5,e=t<0?0:t,i=this.swipePositionHistory[e],s=this.currentX-i;let r=0===e?this.swipePositionHistory.length:5;0===r&&(r=1);const a=5*s/r;if(this.snapToFullSlide){const t=0===a?0:-a/Math.abs(a);t&&this.scrollByArrow(t)}else this.scrollByArrow(null,-a);this.shouldSwipe=!1,this.isSwiping=!1,window.setTimeout((()=>{"touch"===this.interactionType&&document.documentElement.classList.remove("noScroll"),this.swipeTargetElem&&this.swipeTargetElem.removeEventListener("click",preventClick)}),0)}bindScrollInteractions(){this.scrollParent.querySelectorAll("a").forEach((t=>t.ondragstart=t=>t.preventDefault())),this.scrollParent.ontouchstart=t=>{this._saveSwipeStart(t.changedTouches[0],t.target,"touch")},this.scrollParent.onmousedown=t=>this._saveSwipeStart(t,t.target,"pointer"),this.scrollParent.ontouchmove=t=>this._swipeMove(t.changedTouches[0]),this.scrollParent.onmousemove=t=>this._swipeMove(t),document.body.addEventListener("touchend",(t=>this._endSwipe(t.changedTouches[0]))),document.body.addEventListener("mouseup",(t=>this._endSwipe(t))),this.scrollParent.onmouseleave=t=>{this._endSwipe(t)}}_getMaxLeft(){return this.scrollParent.offsetWidth-this.scrollElem.scrollWidth-parseFloat(window.getComputedStyle(this.items[0]).marginLeft)}_setArrowDisabled(t,e){t.classList.toggle("hidden",e),"BUTTON"===t.tagName&&(t.disabled=e)}updateArrows(){const t=this.arrows&&this.arrows.length,e=Math.floor(this.scrollElem.offsetLeft);this.disableScroll=!1,this.scrollBar.classList.remove("hidden"),this.scrollElem.scrollWidth-2<=this.scrollParent.offsetWidth?(this.scrollBar.classList.add("hidden"),t&&(this._setArrowDisabled(this.arrows[0],!0),this._setArrowDisabled(this.arrows[1],!0)),this.disableScroll=!0):e===Math.floor(this.startOffset)?t&&(this._setArrowDisabled(this.arrows[0],!0),this._setArrowDisabled(this.arrows[1],!1)):e===Math.floor(this._getMaxLeft())?t&&(this._setArrowDisabled(this.arrows[0],!1),this._setArrowDisabled(this.arrows[1],!0)):t&&(this._setArrowDisabled(this.arrows[0],!1),this._setArrowDisabled(this.arrows[1],!1))}updateItems(){this.items=Array.from(this.scrollElem.children),this.itemsLen=this.items.length,this.updateArrows()}getScrollDestination(t){let e;if(1===t)for(e=-1;++e<this.itemsLen;){if(this.items[e].offsetLeft>this.startOffset+10)break}else for(e=this.itemsLen;--e>-1;){if(this.items[e].offsetLeft<this.startOffset-10)break}const i=this.items[0].offsetWidth*e,s=parseFloat(window.getComputedStyle(this.items[1]).marginRight)*e;return this.startOffset-(i+s)}scrollToSlide(t){const e=this.items[0],i=e.offsetWidth+parseInt(getComputedStyle(e).marginRight),s=this.startOffset-i*t;this.moveTo(s,!0)}_toggleTransitioning(t){[this.scrollElem,this.scrollHead].forEac
1h((e=>e.classList.toggle("-transitioning",t)))}moveTo(t,e,i){const s=this._getMaxLeft();let r=t>this.startOffset?this.startOffset:t<s?s:t;e&&1===i&&Math.abs(s-t)<150&&(r=s);const a=r/s*100,n=`calc(${a}% - ${a/100*this.scrollHead.clientWidth}px)`;this.scrollElem.style.marginLeft=[r,"px"].join(""),this.scrollHead.style.left=n,this.updateArrows()}scrollByArrow(t,e){let i;i=e?parseFloat(window.getComputedStyle(this.scrollElem).marginLeft)-e:this.getScrollDestination(t),this.transitionTimeout&&window.clearTimeout(this.transitionTimeout),this._toggleTransitioning(!0),this.moveTo(i,!0,t),this.transitionTimeout=window.setTimeout((()=>{this._toggleTransitioning(!1),this.updateArrows()}),this.transitionTimeoutLength)}}class SimpleSlider{constructor(t){this.elem=t,this.slides=Array.from(t.children),this.slides.length>1&&this.init()}generateHTML(){this.nextIndex=this.slideIndex+1,this.nextIndex===this.slidesLength&&(this.nextIndex=0);const t=[this.slidesHTML[this.slideIndex],this.slidesHTML[this.nextIndex]].join("");return this.slideIndex=this.nextIndex,t}init(){this.slidesLength=this.slides.length,this.slidesHTML=this.slides.map((t=>t.outerHTML)),this.slideIndex=0,this.next()}next(){this.elem.innerHTML=this.generateHTML(),window.setTimeout((()=>{this.elem.children[0].style.marginLeft="-100%"}),3e3),window.setTimeout((()=>{this.next()}),5e3)}}class VideoSourceSwitcher{constructor(t){t&&t.dataset.desktopSrc&&(this.vidElem=t,this.currentState=null,this.replaceVideoSrc(),window.addEventListener("resize",(()=>this.replaceVideoSrc())))}replaceVideoSrc(){const t=window.innerWidth<=1024?"mobile":"desktop";if(this.currentState===t)return;this.currentState=t;const e=this.vidElem.getAttribute(`data-${t}-poster`);e&&(this.vidElem.poster=e);const i=this.vidElem.getAttribute(`data-${t}-src`);if(!i)return;const s=!this.vidElem.paused&&!this.vidElem.ended,r=this.vidElem.querySelector("source");if(r?(r.src=i,this.vidElem.load()):(this.vidElem.src=i,this.vidElem.load()),s){const t=this.vidElem.play();t&&"function"==typeof t.catch&&t.catch((()=>{}))}}}document.querySelectorAll(".video").forEach((t=>{const e=t.querySelector(".video__poster-image");if(!e)return;const i=t.querySelector("video"),s=e.querySelector(".video__play-button");if(!i||!s)return;const r=i.hasAttribute("controls");i.removeAttribute("controls"),i.tabIndex=-1,s.hasAttribute("tabindex")||"BUTTON"===s.tagName||(s.setAttribute("tabindex","0"),s.setAttribute("role","button"));const a=new Image;a.onload=()=>{t.classList.add("-poster-loaded");const a=()=>{if(e.classList.add("hidden"),t.classList.add("is-playing"),r&&i.setAttribute("controls",""),i.tabIndex=0,i&&"function"==typeof i.play){const t=i.play();t&&"function"==typeof t.catch&&t.catch((()=>{}))}i.focus()};s.onclick=a,s.addEventListener("keydown",(t=>{"BUTTON"!==s.tagName&&("Enter"!==t.key&&" "!==t.key||(t.preventDefault(),a()))}))};const n=e.style.backgroundImage;n?a.src=n.replace(/^url\(["'"](.+)["'"]\)$/,"$1"):t.classList.add("-poster-loaded")})),function(){const t=document.documentElement;function e(){t.style.setProperty("--vh",[t.clientHeight/100,"px"].join(""))}e(),window.addEventListener("resize",e),window.jqueryHookFunctions.forEach((t=>t())),document.addEventListener("click",(t=>{if(t.target.classList.contains("color-swatch")){const e=t.target.closest(".product-card");if(!e)return;const i=e.querySelectorAll(".grid-product__link"),s=e.querySelectorAll(".color-swatch"),r=e.querySelector(".grid-product__image"),a=`${e.dataset.baseUrl}?variant=${t.target.dataset.variantId}`;s.forEach((e=>{e===t.target?e.classList.add("-active"):e.classList.remove("-active")})),r.removeAttribute("srcset"),r.src=t.target.dataset.variantImage,i.forEach((t=>t.href=a))}}));const i=document.getElementById("AnnouncementSlider");i&&new SimpleSlider(i)}();
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.