1import{d as T,g as I,D as k}from"./FGeB5CoV.js";import{S as q,T as $,U as x,V as L,W as Q}from"./HMxceEl1.js";import"./Css0hHqe.js";import{a as A,b as y}from"./BpaSnaNb.js";import{u as B}from"./IBVOXDlr.js";function f(s){const t=s.translations?.[0]??{},o=s.link,n=o?.translations?.[0]??{},e=s.product,r=e?.translations?.[0]??{};return{sys:{id:s.id},__typename:s.__typename,name:t.name??"",link:o?{slug:n.slug??"",external:o.external??!1}:void 0,submenu:s.submenu?.id?{sys:{id:s.submenu.id}}:void 0,product:e?{name:r.name??"",shortDescription:r.short_description??"",photo:e.photo?{url:y(e.photo,{width:400,height:400,format:"webp"}),title:""}:void 0}:void 0}}const O=T("mainMenuStore",{state:()=>({headerMenu:[],hamburgerMenu:[],submenuCache:new Map,countriesCache:new Map,countriesLoading:!1}),actions:{extractSubmenuId(s){return s?Array.isArray(s)?s[0]?.sys?.id??null:s?.sys?.id??null:null},async fetchSubmenuTree(s,t){const o=I(t),n=this.submenuCache.get(s);if(n)return n;const{resolveClient:e}=k(),r=e(),{data:a}=await r.query({query:$,variables:{submenuId:s},fetchPolicy:"no-cache",errorPolicy:"all"}),u=a?.sub_menu_by_id?.menu_item??[],m=[],h=[],p=[],g=[];for(const i of u){const c=i.item?.id;c&&(g.push({collection:i.collection,id:c}),i.collection==="menu_item"?m.push(c):i.collection==="continents"?h.push(c):i.collection==="superarea"&&p.push(c))}const[M,C,_]=await Promise.all([m.length?r.query({query:x,variables:{ids:m,locale:o},fetchPolicy:"no-cache",errorPolicy:"all"}).then(i=>i.data?.menu_item??[]):[],h.length?r.query({query:L,variables:{ids:h,locale:o},fetchPolicy:"no-cache",errorPolicy:"all"}).then(i=>i.data?.continents??[]):[],p.length?r.query({query:Q,variables:{ids:p,locale:o},fetchPolicy:"no-cache",errorPolicy:"all"}).then(i=>i.data?.superarea??[]):[]]),v=new Map(M.map(i=>[i.id,i])),w=new Map(C.map(i=>[i.id,i])),S=new Map(_.map(i=>[i.id,i])),P=g.map(({collection:i,id:c})=>{if(i==="menu_item"){const l=v.get(c);return l?f(l):null}if(i==="continents"){const l=w.get(c);if(!l)return null;const d=l.translations?.[0]??{};return{sys:{id:l.id},name:d.name??"",slug:d.slug??"",continentid:l.legacy_id}}if(i==="superarea"){const l=S.get(c);if(!l)return null;const d=l.translations?.[0]??{};return{sys:{id:l.id},name:d.name??"",slug:d.slug??"",superareaid:l.legacy_id}}return null}).filter(i=>i!==null),b=await this.resolveMenuItems(t,P);return this.submenuCache.set(s,b),b},async fetchCountries(s,t,o){const n=`${t}:${s}`,e=this.countriesCache.get(n);if(e)return e;const r=await $fetch("/api/countries-products/countries",{method:"POST",body:{lang:o,[t]:s}});return this.countriesCache.set(n,r),r},async resolveMenuItems(s,t=[]){return(await Promise.all(t.map(async n=>{if(n.continentid||n.superareaid)return{...n,submenu:void 0};if(n.link)return{...n,submenu:void 0};{const e=this.extractSubmenuId(n.submenu);if(!e)return{...n,submenu:void 0};const r=await this.fetchSubmenuTree(e,s);return{...n,submenu:{...n.submenu,menuItemCollection:{...n.submenu?.menuItemCollection??{},items:r}}}}}))).filter(n=>n.submenu||n.link||n.product||n.continentid||n.superareaid)},async enrichMenuWithCountries(s,t){const o=[],n=r=>{for(const a of r)a.continentid?o.push({id:a.continentid,type:"continentid"}):a.superareaid&&o.push({id:a.superareaid,type:"superareaid"}),a.submenu?.menuItemCollection?.items&&n(a.submenu.menuItemCollection.items)};if(n(t),!o.length)return;this.countriesLoading=!0;const e=o.map(async({id:r,type:a})=>{try{await this.fetchCountries(r,a,s),this.headerMenu=this.applyCountriesToMenu(this.headerMenu)}catch(u){console.warn(`[mainMenu] Failed to fetch countries for ${a}:${r}`,u)}});await Promise.allSettled(e),this.countriesLoading=!1},applyCountriesToMenu(s){return s.map(t=>{if(t.continentid){const n=(this.countriesCache.get(`continentid:${t.continentid}`)??[]).map(e=>{const r=e.translations?.[0]??{},a=e.continent?.translations?.[0]??{};return{...e,name:r.name??e.name??"",slug:r.slug??e.slug??"",id:e.legacyId??e.id??"",photo:e.photo?.id?{url:y(e.photo,{width:160,height:160,format:"webp"})}:void 0,continent:{slug:a.slug??e.continent?.translations?.[0]?.slug??t.slug??"",id:e.continent?.legacyId??t.continentid??""}}});return{...t,submenu:n.length?{menuItemCollection:{items:n}}:void 0}}else if(t.superareaid){const n=(this.countriesCache.get(`superareaid:${t.superareaid}`)??[]).map(e=>{const r=e.translations?.[0]??{},a=e.continent?.translations?.[0]??{};return{...e,name:r.name??e.name??"",slug:r.slug??e.slug??"",id:e.legacyId??e.id??"",photo:e.photo?.id?{url:y(e.photo,{width:160,height:160,format:"webp"})}:void 0,continent:{slug:a.slug??"",id:e.continent?.legacyId??""}}});return{...t,submenu:n.length?{menuItemCollection:{items:n}}:void 0}}else if(t.submenu?.menuItemCollection?.items)return{...t,submenu:{...t.submenu,menuItemCollection:{...t.submenu.menuItemCollection,items:this.applyCountriesToMenu(t.submenu.menuItemCollection.items)}}};return t})},async fetchHeader(s,t,o){if(this.headerMenu.length>0)return;const n=I(s),e=await A(q,"header",{locale:n,markets:B(t)}),r=(e??[]).find(u=>u.is_b2b)??e?.[0];if(!r){this.headerMenu=[],this.hamburgerMenu=[];return}const a=(r.menu?.menu_item??[]).map(u=>u.menu_item_id?f(u.menu_item_id):null).filter(u=>u!==null);this.headerMenu=await this.resolveMenuItems(n,a),this.hamburgerMenu=(r.hamburger_menu?.menu_item??[]).map(u=>u.menu_item_id?f(u.menu_item_id):null).filter(u=>u!==null),this.enrichMenuWithCountries(n,this.headerMenu)}}});
1export{O as m};
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.