1var e=Object.defineProperty,t=Object.defineProperties,s=Object.getOwnPropertyDescriptors,i=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable,l=(t,s,i)=>s in t?e(t,s,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[s]=i,a=(e,t,s)=>l(e,"symbol"!=typeof t?t+"":t,s);import{A as o,m as h,S as d}from"./index.fwy4myo0zwt1lnjt.js";import{B as c}from"./index.cz83wh4sws6slzdm.js";const u="hme",p="find-your-bike",m=`[data-${u}-is='${p}']`,g="hme-find-your-bike__results-sort--expanded",f="hme-find-your-bike__filters--expanded",v="hme-find-your-bike__sort--expanded",b="hme-find-your-bike__pagination-page",P="hme-find-your-bike__pagination-page--active",y="hme-find-your-bike__pagination-ellipsis",S='[data-hme-hook-select-multifield="button"], [data-hme-hook-select-slider="button"]',k='[data-hme-hook-select-multifield="confirm"], [data-hme-hook-select-slider="confirm"]',F='[data-hme-is^="select-slider"]',M='[data-hme-is^="select-multifield"]';class E extends o{constructor(){super(...arguments),a(this,"isSortOpen",!1),a(this,"isFiltersOpen",!1),a(this,"isMobileSortOpen",!1),a(this,"itemsPerPage",this.getItemsPerPage()),a(this,"allItems",[]),a(this,"filteredItems",[]),a(this,"splide"),a(this,"hasInteractedWithFilters",!1),a(this,"currentPage",1),a(this,"sortOrder",null),a(this,"filters",{priceMin:null,priceMax:null,licenceIds:[],engineRanges:[],transmissions:[],usages:[]})}init(){this.elements.resultsSort&&(this.addEventHandlers(),this.addFilterNavEventHandlers(),this.addFilterEventHandlers(),this.addPaginationEventHandlers(),this.addResponsiveHandlers(),this.loadBikes())}addEventHandlers(){this.elements.resultsSortButton.addEventListener("click",()=>{this.toggleSort()}),this.elements.resultsSort.addEventListener("keydown",e=>{this.onSortKeydown(e)}),this.elements.resultsSort.addEventListener("focusout",e=>{this.onSortFocusOut(e)}),this.elements.resultsSortInputs.forEach(e=>{e.addEventListener("click",()=>{this.onSortOptionChange(e)}),e.addEventListener("keydown",t=>{"Enter"===t.key&&(t.preventDefault(),this.onSortOptionChange(e))})})}addFilterNavEventHandlers(){this.elements.filterToggle&&this.elements.sortToggle&&(this.elements.filterToggle.addEventListener("click",()=>{this.toggleFilters()}),this.elements.sortToggle.addEventListener("click",()=>{this.toggleMobileSort()}),this.elements.filterContainer.addEventListener("keydown",e=>{"Escape"===e.key&&(e.preventDefault(),this.closeFilters(),this.closeMobileSort())}),this.elements.filterContainer.addEventListener("focusout",e=>{const t=e.relatedTarget;t&&(this.elements.filterContainer.contains(t)||(this.closeFilters(!1),this.closeMobileSort(!1)))}),document.addEventListener("click",e=>{this.onFilterContainerDocumentClick(e)}),this.elements.filterConfirmMob.addEventListener("click",()=>{this.confirmMobileFilters()}),this.elements.sortPanelInputs.forEach(e=>{e.addEventListener("click",()=>{this.onMobileSortOptionChange(e)}),e.addEventListener("keydown",t=>{"Enter"===t.key&&(t.preventDefault(),this.onMobileSortOptionChange(e))})}))}onFilterContainerDocumentClick(e){const t=e.target;t&&(this.elements.filterContainer.contains(t)||(this.isFiltersOpen&&this.closeFilters(!1),this.isMobileSortOpen&&this.closeMobileSort(!1)))}addResponsiveHandlers(){this.updateFilterHeaderFocusability(),this.onResizeEvent(()=>{this.updateFilterHeaderFocusability();const e=this.getItemsPerPage();e!==this.itemsPerPage&&(this.itemsPerPage=e,this.currentPage=1,this.applyFiltersAndRender())})}getItemsPerPage(){return h("<tablet")?1:h("<desktop")?2:3}updateFilterHeaderFocusability(){const e=h(">=desktop");this.elements.filterList.querySelectorAll(S).forEach(t=>{t.tabIndex=e?0:-1})}toggleFilters(){this.isFiltersOpen?this.closeFilters():this.openFilters()}openFilters(){this.closeMobileSort(!1),this.isFiltersOpen=!0,this.elements.filtersPanel.classList.add(f),this.elements.filterToggle.setAttribute("aria-expanded","true")}closeFilters(e=!0){this.isFiltersOpen=!1,this.elements.filtersPanel.classList.remove(f),this.elements.filterToggle.setAttribute("aria-expanded","fal
1se"),e&&this.elements.filterToggle.focus()}confirmMobileFilters(){this.elements.filterList.querySelectorAll(k).forEach(e=>{e.click()}),this.closeFilters()}toggleMobileSort(){this.isMobileSortOpen?this.closeMobileSort():this.openMobileSort()}openMobileSort(){this.closeFilters(!1),this.isMobileSortOpen=!0,this.elements.sortPanel.classList.add(v),this.elements.sortToggle.setAttribute("aria-expanded","true")}closeMobileSort(e=!0){this.isMobileSortOpen=!1,this.elements.sortPanel.classList.remove(v),this.elements.sortToggle.setAttribute("aria-expanded","false"),e&&this.elements.sortToggle.focus()}onMobileSortOptionChange(e){e.checked=!0,this.closeMobileSort(),this.applySortValue(e.value,e.dataset.label||e.value)}openSort(){this.isSortOpen=!0,this.elements.resultsSort.classList.add(g),this.elements.resultsSortButton.setAttribute("aria-expanded","true")}closeSort(e=!0){this.isSortOpen=!1,this.elements.resultsSort.classList.remove(g),this.elements.resultsSortButton.setAttribute("aria-expanded","false"),e&&this.elements.resultsSortButton.focus()}toggleSort(){this.isSortOpen?this.closeSort():this.openSort()}onSortKeydown(e){"Escape"===e.key&&(e.preventDefault(),this.closeSort())}onSortFocusOut(e){if(!e.relatedTarget)return void this.closeSort(!1);const t=e.relatedTarget;this.elements.resultsSort.contains(t)||this.closeSort(!1)}onSortOptionChange(e){e.checked=!0,this.closeSort(),this.applySortValue(e.value,e.dataset.label||e.value)}applySortValue(e,t){this.sortOrder="low"===e||"high"===e?e:null,this.currentPage=1,this.elements.resultsSortButtonText.textContent=t,this.syncSortInputs(e),this.applyFiltersAndRender(),super.dispatchEvent("hme-find-your-bike.sort-change",{value:e})}syncSortInputs(e){[...this.elements.resultsSortInputs,...this.elements.sortPanelInputs||[]].forEach(t=>{t.checked=t.value===e})}addFilterEventHandlers(){var e;this.handleEvent("hme-select-slider.change",e=>{"price"===this.getFilterProperty(e)&&(this.filters.priceMin=e.detail.min,this.filters.priceMax=e.detail.max,this.onFiltersChanged())}),this.handleEvent("hme-select-multifield.change",e=>{const t=this.getFilterProperty(e);if("licenseId"===t)this.filters.licenceIds=e.detail.values;else if("engine"===t)this.filters.engineRanges=e.detail.values.map(e=>this.parseEngineRange(e));else if("transmission"===t)this.filters.transmissions=e.detail.values;else{if("usages"!==t)return;this.filters.usages=e.detail.values}this.onFiltersChanged()}),null==(e=this.elements.resetFiltersButton)||e.addEventListener("click",()=>{this.resetFilters()})}resetFilters(){this.filters={priceMin:null,priceMax:null,licenceIds:[],engineRanges:[],transmissions:[],usages:[]};const e=this.elements.filterList.querySelector(F);e&&super.dispatchEvent("hme-select-slider.setValue",{min:Number(e.dataset.hmeMin),max:Number(e.dataset.hmeMax)},e),this.elements.filterList.querySelectorAll(M).forEach(e=>{super.dispatchEvent("hme-select-multifield.setValue",{values:[]},e)}),this.onFiltersChanged()}getFilterProperty(e){var t;return null==(t=e.target.closest(".hme-find-your-bike__filter-item"))?void 0:t.dataset.property}parseEngineRange(e){const[t,s]=e.split("-");return{min:t?Number(t):-1/0,max:s?Number(s):1/0}}onFiltersChanged(){this.hasInteractedWithFilters=!0,this.currentPage=1,this.updateFilterCount(),this.applyFiltersAndRender()}updateFilterCount(){if(!this.elements.filterCount)return;const e=this.getActiveFilterCount();this.elements.filterCount.textContent=e>0?String(e):"",this.elements.filterCount.hidden=0===e}getActiveFilterCount(){const e=this.filters;let t=0;return null===e.priceMin&&null===e.priceMax||(t+=1),e.licenceIds.length>0&&(t+=1),e.engineRanges.length>0&&(t+=1),e.transmissions.length>0&&(t+=1),e.usages.length>0&&(t+=1),t}getDefaultBikeIds(){const e=this.elements.self.dataset.hmeDefaultBikes;return e?e.split(",").map(e=>e.trim()).filter(Boolean):[]}getBaseItems(){const e=this.getDefaultBikeIds();if(!this.hasInteractedWithFilters&&e.length>0){const t=new Map(e.map((e,t)=>[e,t]));return[...this.allItems].sort((e,s)=>{const i=t.get(e.id),n=t.get(s.id);return void 0!==i&&void 0!==n?i-n:void 0!==i?-1:void 0!==n?1:0})}return this.allItems}applyFilters(e){return e.filter(e=>!(null!==this.filters.priceMin&&null!==e.price&&e.price<this.filters.priceMin)&&(!(null!==this.filters.priceMax&&null!==e.price&&e.price>
1this.filters.priceMax)&&(!(this.filters.licenceIds.length>0&&!this.filters.licenceIds.includes(e.licenseId))&&(!(this.filters.engineRanges.length>0&&(null===e.engine||!this.filters.engineRanges.some(t=>e.engine>=t.min&&e.engine<=t.max)))&&(!(this.filters.transmissions.length>0&&!this.filters.transmissions.includes(e.transmission))&&!(this.filters.usages.length>0&&!e.usages.some(e=>this.filters.usages.includes(e))))))))}sortItems(e){return this.sortOrder?[...e].sort((e,t)=>null===e.price&&null===t.price?0:null===e.price?1:null===t.price?-1:"low"===this.sortOrder?e.price-t.price:t.price-e.price):e}loadBikes(){return e=this,t=null,s=function*(){const e=this.elements.self.dataset.hmeApi,t=this.elements.self.dataset.hmeRangeAdmin;if(e&&t){this.setLoading(!0);try{const s=yield fetch(`${e}?path=${encodeURIComponent(t)}`);if(!s.ok)throw new Error(`Request failed with status ${s.status}`);const i=yield s.json();this.allItems=Array.isArray(i)?i:[]}catch(s){console.error("Failed to load bikes for Find Your Bike",s),this.allItems=[]}finally{this.setLoading(!1),this.applyFiltersAndRender()}}else this.applyFiltersAndRender()},new Promise((i,n)=>{var r=e=>{try{a(s.next(e))}catch(t){n(t)}},l=e=>{try{a(s.throw(e))}catch(t){n(t)}},a=e=>e.done?i(e.value):Promise.resolve(e.value).then(r,l);a((s=s.apply(e,t)).next())});var e,t,s}setLoading(e){this.elements.loader.hidden=!e}applyFiltersAndRender(){var e;this.elements.warningTooMany.hidden=!0;
1const t=this.sortItems(this.applyFilters(this.getBaseItems()));this.filteredItems=t;const s=0===t.length;if(this.elements.warningNoResults.hidden=!s,this.elements.carousel.hidden=s,this.elements.pagination.hidden=s,this.updateResultsTotal(t.length),s)return null==(e=this.splide)||e.destroy(),this.splide=void 0,this.elements.carouselItems.replaceChildren(),void this.elements.pagination.replaceChildren();const i=Math.max(1,Math.ceil(t.length/this.itemsPerPage));this.currentPage=Math.min(Math.max(1,this.currentPage),i),this.renderItems(),this.renderPagination(i),this.updateNavButtons(i)}updateResultsTotal(e){const t=this.elements.totalDesk.closest(".hme-find-your-bike__results-total"),s=((null==t?void 0:t.dataset.text)||"{0}").replace("{0}",String(e));this.elements.totalDesk.textContent=s,this.elements.totalMob.textContent=s}getCurrency(){const e=this.elements.self.querySelector('.hme-find-your-bike__filter-item[data-property="price"] [data-hme-is^="select-slider"]');return(null==e?void 0:e.dataset.hmeCurrency)||"£"}renderItems(){const e=this.elements.self.dataset.hmeNoPrice||"",t=this.getCurrency(),s=document.createDocumentFragment();this.filteredItems.forEach(i=>{const n=this.elements.bikeItemTemplate.content.cloneNode(!0);this.fillItem(n,i,e,t),s.appendChild(n)}),this.elements.carouselItems.replaceChildren(s),this.initSplide()}initSplide(){var e,a,o;(null==(e=this.splide)||e.destroy(),0!==this.filteredItems.length)&&(this.splide=new d(this.elements.carousel,(a=((e,t)=>{for(var s in t||(t={}))n.call(t,s)&&l(e,s,t[s]);if(i)for(var s of i(t))r.call(t,s)&&l(e,s,t[s]);return e})({},this.getSplideOptions()),o={start:(this.currentPage-1)*this.itemsPerPage},t(a,s(o)))),this.splide.on("move",e=>{const t=Math.floor(e/this.itemsPerPage)+1;if(t===this.currentPage)return;this.currentPage=t;const s=Math.max(1,Math.ceil(this.filteredItems.length/this.itemsPerPage));this.renderPagination(s),this.updateNavButtons(s)}),this.splide.mount())}getSplideOptions(){return{perPage:1,perMove:1,gap:16,arrows:!1,pagination:!1,mediaQuery:"min",breakpoints:{[c.tablet]:{perPage:2,perMove:2,gap:16},[c.desktop]:{perPage:3,perMove:3,gap:24}}}}fillItem(e,t,s,i){const n=t=>e.querySelector(`[data-${u}-hook-template-${p}="${t}"]`),r=n("name");r&&(r.textContent=t.name);const l=n("range");l&&(l.textContent=t.range);const a=n("image");a&&t.image&&(a.src=t.image,a.alt=t.name);const o=n("price");o&&(o.textContent=t.price?`${i}${Math.round(t.price).toLocaleString()}`:s);const h=n("productLink");h&&(h.href=t.productLink||"#");const d=n("discoverLink");if(d){d.href=t.productLink||"#";const e=d.getAttribute("aria-label");e&&d.setAttribute("aria-label",e.replace("{0}",t.name))}const c=n("testDriveLink");if(c){c.href=t.testDriveLink||"#";const e=c.getAttribute("aria-label");e&&c.setAttribute("aria-label",e.replace("{0}",t.name))}}getPaginationPages(e){return e<=6?Array.from({length:e},(e,t)=>t+1):this.currentPage<=4?[1,2,3,4,"ellipsis",e]:this.currentPage>=e-1?[1,"ellipsis",e-2,e-1,e]:[1,"ellipsis",this.currentPage-1,this.currentPage,this.currentPage+1,"ellipsis",e]}renderPagination(e){this.elements.pagination.replaceChildren(),e<=1||this.getPaginationPages(e).forEach(e=>{if("ellipsis"===e){const e=document.createElement("span");return e.className=y,e.textContent="...",e.setAttribute("aria-hidden","true"),void this.elements.pagination.appendChild(e)}const t=document.createElement("button");t.type="button",t.className=b,t.textContent=String(e),t.setAttribute("aria-label",`Go to page ${e}`),e===this.currentPage&&(t.classList.add(P),t.setAttribute("aria-current","page")),t.addEventListener("click",()=>this.goToPage(e)),this.elements.pagination.appendChild(t)})}goToPage(e){const t=Math.max(1,Math.ceil(this.filteredItems.length/this.itemsPerPage));this.currentPage=Math.min(Math.max(1,e),t),this.splide&&this.splide.go((this.currentPage-1)*this.itemsPerPage),this.renderPagination(t),this.updateNavButtons(t)}updateNavButtons(e){this.elements.prevButton.disabled=this.currentPage<=1,this.elements.nextButton.disabled=this.currentPage>=e}addPaginationEventHandlers(){this.elements.prevButton.addEventListener("click",()=>this.goToPage(this.currentPage-1)),this.elements.nextButton.addEventListener("click",()=>this.goToPage(this.currentPage+1)),this.elements.tooManyButton.addEventListener("click",()=>
1{this.applyFiltersAndRender()})}}a(E,"SELF",m),a(E,"NS",u),a(E,"IS",p);export{m as SELF,E as default};
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.