1import{r as S,t as _,n as l}from"./index-DS8uTh6M.js";import{r as T}from"./evx.es-COiEd2Ka.js";import{R as C}from"./recipe-item-D2AEfuuM.js";import{P as f}from"./product-item-CsBN91cn.js";import"./save-recipe-handler-C3ULORgI.js";import"./focus-trap.esm-DYjLEhSG.js";import"./tua-bsl-aO87w0ZW.js";import"./main-BCFY9a9_.js";import"./cart-D_LIHR5K.js";import"./storage-CVUx8WVm.js";import"./dispatch-custom-event-5MmuVbu3.js";import"./gated-access-C4SJnT1W.js";const d={products:{type:"product",sub:null,group:".results-group--product"},recipes:{type:"article",sub:"recipes",group:".results-group--recipes"},pages:{type:"page",sub:null,group:".results-group--pages"},articles:{type:"article",sub:"articles",group:".results-group--articles"}},b={pending:"is-pending",active:"is-active",disabled:"is-disabled"},v=["products","recipes","pages","articles"];S("search",{onLoad(){this.recipeItem=C(this.container),this.productItem=f(this.container),this._initSearchTabs()},_initSearchTabs(){this.tabsEl=l("[data-search-tabs]",this.container),this.rootEl=l("[data-partial]",this.container),!(!this.tabsEl||!this.rootEl)&&(this.nativePaginationEl=l("[data-native-pagination]",this.container),this.clientPaginationEl=l("[data-article-pagination]",this.container),this.resultsCountEl=l("[data-results-count]",this.container),this.totalResultsEl=l("[data-total-results]",this.container),this.loadingEl=l("[data-loading]",this.container),this.tabPerPage=parseInt(this.rootEl.dataset.perPage)||12,this.tabServerType=this.rootEl.dataset.searchType||"product",this.tabQ=this._tabParam("q")||this.container.dataset.searchTerm||"",this.tabSectionId=this.container.dataset.sectionId,this.tabDataStore={},this.tabCurrentPage={},this.activeTabKey=this._activeTabFromUrl(),this._fetchCache=new Map,this._bindPaginationClicks(),this._bootTabs())},_tabParam(t){return new URLSearchParams(window.location.search).get(t)},_activeTabFromUrl(){const t=this._tabParam("type")||"product",a=this._tabParam("tab");return t==="page"?"pages":t==="article"?a==="articles"?"articles":"recipes":"products"},_currentTabPage(){return parseInt(this._tabParam("page"))||1},_searchTabUrl(t,a){const e=d[t],i=new URLSearchParams;return i.set("q",this.tabQ),i.set("type",e.type),e.sub&&i.set("tab",e.sub),a&&a>1&&i.set("page",a),`${window.location.pathname}?${i.toString()}`},_tabFetchUrl(t,a){const e=new URLSearchParams;return e.set("section_id",this.tabSectionId),e.set("q",this.tabQ),e.set("type",t),a&&a>1&&e.set("page",a),`${window.location.pathname}?${e.toString()}`},_fetchTabDoc(t){return this._fetchCache.has(t)?Promise.resolve(this._fetchCache.get(t)):fetch(t).then(a=>a.text()).then(a=>{const e=new DOMParser().parseFromString(a,"text/html");if(this._fetchCache.set(t,e),this._fetchCache.size>30){const i=this._fetchCache.keys().next().value;this._fetchCache.delete(i)}return e})},_tabLabel(t){const a=l(`[data-search-tab="${t}"]`,this.tabsEl);return a?a.textContent.trim():t},_groupList(t){const a=l(d[t].group,this.rootEl);return a?l(".results-group__list",a):null},_ensureGroups(){const t=l(".search__results",this.rootEl);if(!t||l(".results-group--product",t))return;const a=l(".search__empty",t);a&&a.remove(),this.tabsEl.removeAttribute("style"),v.forEach(e=>{const i=d[e].group.replace(".",""),s=document.createElement("div");s.className=`results-group ${i}`,s.style.display="none",s.innerHTML=`<h2 class="results-group__heading ff-heading fs-heading-4-base">${this._tabLabel(e)}</h2><div class="results-group__list"></div>`,t.appendChild(s)})},_applyActiveVisibility(){v.forEach(t=>{const a=l(d[t].group,this.rootEl);a&&(a.style.display=t===this.activeTabKey?"":"none");const e=l(`[data-search-tab="${t}"]`,this.tabsEl);e&&e.classList.toggle(b.active,t===this.activeTabKey)})},_setLoading(t){this.loadingEl&&this.loadingEl.classList.toggle("is-active",t)},async _bootTabs(){const t=[];for(const i of["products","pages"]){const s=d[i];this.activeTabKey===i&&this.tabServerType===s.type?this.tabDataStore[i]={count:parseInt(this.rootEl.dataset.searchResultsCount)||0,pages:{}}:t.push(this._fetchNativeTabPage(i,1))}t.push(this._fetchAllArticleNodes());const a=t.length>0;a&&!["pages","products"].includes(this.activeTabKey)&&this._setLoa
1ding(!0);let e=!1;try{await Promise.all(t)}catch(i){e=!0,console.error("Search tabs fetch failed, keeping server-rendered results:",i)}finally{a&&this._setLoading(!1)}if(e){this._degradeToServerRender();return}if(!this._tabCount(this.activeTabKey)){const i=v.find(s=>this._tabCount(s)>0);i&&(this.activeTabKey=i)}this._renderTabsBar(),this._tabCount(this.activeTabKey)&&(this._ensureGroups(),this._bindTabClicks(),this._showActiveTab(!0))},_degradeToServerRender(){_("[data-search-tab]",this.tabsEl).forEach(t=>{t.classList.remove(b.pending),t.removeAttribute("aria-disabled")}),this._setNativePagination(!0),this.clientPaginationEl&&(this.clientPaginationEl.innerHTML=""),this._paginationClickHandler&&(this.container.removeEventListener("click",this._paginationClickHandler),this._paginationClickHandler=null)},_tabCount(t){var a;return((a=this.tabDataStore[t])==null?void 0:a.count)||0},async _fetchNativeTabPage(t,a){const e=d[t],i=await this._fetchTabDoc(this._tabFetchUrl(e.type,a)),s=l("[data-partial]",i),n=s?l(`${e.group} .results-group__list`,s):null,c=this._groupList(t),o=n?n.innerHTML:"";c&&(c.innerHTML=o);const r=s&&parseInt(s.dataset.searchResultsCount)||0;this.tabDataStore[t]||(this.tabDataStore[t]={count:0,pages:{}}),this.tabDataStore[t].count=r,this.tabDataStore[t].pages[a]=o},_renderNativeTabPage(t,a){var s,n;const e=this._groupList(t),i=(n=(s=this.tabDataStore[t])==null?void 0:s.pages)==null?void 0:n[a];e&&i!=null&&(e.innerHTML=i)},_articleStorageKey(){return`search_articles_${this.tabQ.replace(/[^a-z0-9]/gi,"_").slice(0,50)}`},async _fetchAllArticleNodes(){var r,p;if((r=this.tabDataStore.recipes)!=null&&r.nodes&&((p=this.tabDataStore.articles)!=null&&p.nodes))return;const t=this._articleStorageKey();try{const h=sessionStorage.getItem(t);if(h){const u=JSON.parse(h),g=y=>{const m=document.createElement("div");return y.map(P=>{m.innerHTML=P;const E=m.firstElementChild;return m.innerHTML="",E}).filter(Boolean)};this.tabDataStore.recipes={count:u.recipes.count,nodes:g(u.recipes.htmls)},this.tabDataStore.articles={count:u.articles.count,nodes:g(u.articles.htmls)};return}}catch{}const a=await this._fetchTabDoc(this._tabFetchUrl("article",1)),e=l("[data-partial]",a),i=e&&parseInt(e.dataset.totalPages)||1,s=[a];if(i>1){const h=await Promise.all(Array.from({length:i-1},(u,g)=>this._fetchTabDoc(this._tabFetchUrl("article",g+2))));s.push(...h)}const n=[],c=[];s.forEach(h=>{_(".results-group--recipes .results-group__list > *",h).forEach(u=>n.push(u)),_(".results-group--articles .results-group__list > *",h).forEach(u=>c.push(u))}),this.tabDataStore.recipes={count:n.length,nodes:n},this.tabDataStore.articles={count:c.length,nodes:c};const o=n.length+c.length;if(o>0&&o<=300)try{const h={recipes:{count:n.length,htmls:n.map(u=>u.outerHTML)},articles:{count:c.length,htmls:c.map(u=>u.outerHTML)}};sessionStorage.setItem(t,JSON.stringify(h))}catch{}},_renderTabsBar(){_("[data-search-tab]",this.tabsEl).forEach(t=>{const a=t.dataset.searchTab,e=this._tabCount(a)===0;if(t.classList.toggle(b.disabled,e),t.classList.remove(b.pending),e?t.setAttribute("aria-disabled","true"):t.removeAttribute("aria-disabled"),t.classList.toggle(b.active,a===this.activeTabKey),t.hasAttribute("data-results-count-rendered"))return;const i=this._tabCount(a),s=document.createElement("span");s.classList.add("results-count"),s.textContent=`(${i})`,t.appendChild(s),t.setAttribute("data-results-count-rendered","true")})},_updateResultsCount(){const t=this._tabCount(this.activeTabKey),a=v.reduce((e,i)=>e+this._tabCount(i),0);if(this.resultsCountEl){if(t===0)this.resultsCountEl.textContent=this.resultsCountEl.dataset.resultCountZero;else if(t===1){const e=this.resultsCountEl.dataset.resultCountOne;this.resultsCountEl.textContent=e.replace("{{ value }}",t)}else{const e=this.resultsCountEl.dataset.resultCountMany;this.resultsCountEl.textContent=e.replace("{{ value }}",t)}this.resultsCountEl.style.display="block"}if(this.totalResultsEl){const e=a===1?this.totalResultsEl.dataset.resultCountOne:this.totalResultsEl.dataset.resultCountOther;e&&(this.totalResultsEl.textContent=e.replace("{{ count }}",a).replace("{{ terms }}",this.tabQ))}},_scrollToResults(){window.scrollTo({top:0,behavior:"smooth"})},_showActiveTab(t){this._applyActiveVisibility();const a=d[this.activeTabKey],e=t&&this.tabServerType===a.type&&this.activeTabKey===this._activeTabFromUrl();let i;if(a.type==="article")i=this.activeTabKey===this._activeTabFromUrl()?this._currentTabPage():1,this._renderArticlePage(this.activeTabKey,i);else if(e){i=this._currentTabPage();const s=this._groupList(this.activeTabKey);s&&(this.tabDataStore[this.activeTabKey]||(this.tabDataStore[this.activeTabKey]={count:0,pages:{}}),this.tabDataStore[this.activeTabKey].pages[i]=s.innerHTML)}else i=this.tabCurrentPage[this.activeTabKey]||1,this._renderNativeTabPage(this.activeTabKey,i);this._setNativePagination(!1),this._setClientPagination(this._tabCount(this.activeTabKey),i),this.tabCurrentPage[this.activeTabKey]=i,this._updateResultsCount(),this.recipeItem&&this.recipeItem.unload(),this.productItem&&this.productItem.unload(),this.recipeItem=C(this.container),this.productItem=f(this.container),typeof window.updateSaveRecipeState=="function"&&window.updateSaveRecipeState(),T("collection:updated"),t||(history.pushState({tab:this.activeTabKey},"",this._searchTabUrl(this.activeTabKey,i)),this._scrollToResults())},_setNativePagination(t){this.nativePaginationEl&&(this.nativePaginationEl.style.display=t?"":"none")},_setClientPagination(t,a){this.clientPaginationEl&&(this.clientPaginationEl.innerHTML=this._buildTabPagination(this.activeTabKey,t,a))},_renderArticlePage(t,a){const e=this._groupList(t);if(!e)return;const i=this.tabDataStore[t]&&this.tabDataStore[t].nodes||[],s=(a-1)*this.tabPerPage;e.innerHTML="",i.slice(s,s+this.tabPerPage).forEach(n=>e.appendChild(n.cloneNode(!0)))},_buildTabPagination(t,a,e){const i=Math.ceil(a/this.tabPerPage);if(i<=1)return"";const s='<span class="icon icon-new arrow "><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22" width="22" height="22" fill="none"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="3.143" d="M3.143 7.857 11 15.714l7.858-7.857"></path></svg></span>',n=(r,p)=>p?`<li class="pagination__item pagination__item--active"><span class="pagination__navigation-button ff-heading fs-heading-5-base">${r}</span></li>`:`<li class="pagination__item"><a href="${this._searchTabUrl(t,r)}" class="pagination__navigation-button ff-heading fs-heading-5-base" aria-label="Page ${r} of results">${r}</a></li>`,c=()=>'<li class="pagination__item pagination__item--ellip"><span class="pagination__navigation-button ff-heading fs-heading-5-base">â¦</span></li>';let o='<div class="pagination"><ul class="pagination__list">';if(e<=1?o+=`<li class="pagination__item pagination__item--arrow"><a href="" class="pagination__navigation-button pagination__navigation-button--previous" aria-disabled="true" disabled="" aria-label="Previous page of results">${s}</a></li>`:o+=`<li class="pagination__item pagination__item--arrow"><a href="${this._searchTabUrl(t,e-1)}" class="pagination__navigation-button pagination__navigation-button--previous" aria-label="Previous page of results">${s}</a></li>`,i<=7)for(let r=1;r<=i;r++)o+=n(r,r===e);else if(e<=4){const r=e+2;for(let p=1;p<=r;p++)o+=n(p,p===e);o+=c(),o+=n(i,!1)}else if(e>=i-3){o+=n(1,!1),o+=c();for(let r=e-2;r<=i;r++)o+=n(r,r===e)}else{o+=n(1,!1),o+=c();for(let r=e-2;r<=e+2;r++)o+=n(r,r===e);o+=c(),o+=n(i,!1)}return e>=i?o+=`<li class="pagination__item pagination__item--arrow"><a href="" class="pagination__navigation-button pagination__navigation-button--next" aria-disabled="true" disabled="" aria-label="Next page of results">${s}</a></li>`:o+=`<li class="pagination__item pagination__item--arrow"><a href="${this._searchTabUrl(t,e+1)}" class="pagination__navigation-button pagination__navigation-button--next" aria-label="Next page of results">${s}</a></li>`,o+="</ul></div>",o},_bindTabClicks(){this._tabClickHandler=t=>{const a=t.target.closest("[data-search-tab]");if(!a)return;t.preventDefault();const e=a.dataset.searchTab;a.classList.contains(b.disabled)||e===this.activeTabKey||(this.activeTabKey=e,this._renderTabsBar(),this._showActiveTab(!1))},this.tabsEl.addEventListener("click",this._tabClickHandler)},_bindPaginationClicks(){this._paginationClickHandler=t=>{var o,r;const a=t.target.closest("a.pagination__navigation-button");if(!a||a.getAttribute("aria-disabled")==="true"||a.hasAttribute("disabled"))return;const e=a.getAttribute("href");if(!e)return;t.preventDefault();const i=new URL(e,window.location.origin),s=parseInt(i.searchParams.get("page"))||1,n=this.activeTabKey,c=d[n];s!==this.tabCurrentPage[n]&&(c.type==="article"?(this.tabCurrentPage[n]=s,this._renderArticlePage(n,s),this._setClientPagination(this._tabCount(n),s),history.pushState({tab:n},"",this._searchTabUrl(n,s)),this._scrollToResults()):((r=(o=this.tabDataStore[n])==null?void 0:o.pages)==null?void 0:r[s])!=null?(this.tabCurrentPage[n]=s,this._renderNativeTabPage(n,s),this._setClientPagination(this._tabCount(n),s),this._updateResultsCount(),history.pushState({tab:n},"",this._searchTabUrl(n,s)),this._scrollToResults(),this.productItem&&this.productItem.unload(),this.productItem=f(this.container),T("collection:updated")):(this._setLoa
1ding(!0),this._fetchNativeTabPage(n,s).then(()=>{this.tabCurrentPage[n]=s,this._setClientPagination(this._tabCount(n),s),this._updateResultsCount(),history.pushState({tab:n},"",this._searchTabUrl(n,s)),this._scrollToResults(),this.productItem&&this.productItem.unload(),this.productItem=f(this.container),T("collection:updated")}).catch(h=>{console.error("Pagination fetch error:",h)}).finally(()=>{this._setLoading(!1)})))},this.container.addEventListener("click",this._paginationClickHandler)},onUnload(){this.tabsEl&&this._tabClickHandler&&this.tabsEl.removeEventListener("click",this._tabClickHandler),this.container&&this._paginationClickHandler&&this.container.removeEventListener("click",this._paginationClickHandler),this.productItem&&this.productItem.unload(),this.recipeItem&&this.recipeItem.unload()}});
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.