import{h as z,W as B,as as G,at as H,au as m}from"./BmsEUx_s.js";import{p as w}from"./Dl_woRDU.js";import{a as h,i as A,l as a,p as I}from"./BO9AmBA3.js";function C(r){return r&&typeof r=="object"&&!Array.isArray(r)}function y(r,...o){if(!o.length)return r;const u=o.shift();if(u===void 0)return r;if(C(r)&&C(u))for(const i in u)C(u[i])?(r[i]||Object.assign(r,{[i]:{}}),y(r[i],u[i])):Object.assign(r,{[i]:u[i]});return y(r,...o)}function Y(r){var v;const o=(r==null?void 0:r.listingType)||"categoryListing",{apiInstance:u}=z();let i;if(o==="productSearchListing")i=async g=>G(g,u);else{let g;try{const{category:s}=B();g=(v=s.value)==null?void 0:v.id}catch(s){s instanceof ContextError&&(g=r==null?void 0:r.categoryId)}i=async s=>{if(!g)throw new Error("[useListing][search] Search category id does not exist.");return H(g,s,u)}}return J({listingKey:o,searchMethod:i,searchDefaults:(r==null?void 0:r.defaultSearchCriteria)||{}})}function J({searchMethod:r,searchDefaults:o,listingKey:u}){const i=h(!1),v=h(!1),g=A(`useListingInitial-${u}`,h());I(`useListingInitial-${u}`,g);const s=A(`useListingApplied-${u}`,h());I(`useListingApplied-${u}`,s);const p=a(()=>g.value),x=async e=>{g.value=e,s.value=null},b=async e=>{i.value=!0;try{const t=y({},o,e,...w);return await r(t)}catch(t){throw t}finally{i.value=!1}};async function f(e,t){i.value=!0;try{const n=y({},o,e,w),l=await r(n);s.value=l}catch(n){throw n}finally{i.value=!1}}const j=async e=>{var t;v.value=!0;try{const n=e||{p:F.value+1},l=y({},o,n),S=await r(l);s.value={...c.value,page:S.page,elements:[...((t=c.value)==null?void 0:t.elements)||[],...S.elements]}}catch(n){throw n}finally{v.value=!1}},c=a(()=>s.value||p.value),P=a(()=>{var e;return((e=c.value)==null?void 0:e.elements)||[]}),L=a(()=>{var e;return((e=c.value)==null?void 0:e.total)||0}),O=a(()=>{var e;return((e=c.value)==null?void 0:e.limit)||(o==null?void 0:o.limit)||10}),T=a(()=>Math.ceil(L.value/O.value)),E=a(()=>{var t,n;const e=Object.values(((t=c.value)==null?void 0:t.sortings)||{});return((n=c.value)==null?void 0:n.availableSortings)||e}),$=a(()=>{var e;return(e=p.value)==null?void 0:e.sorting}),q=a(()=>{var e;return(e=c.value)==null?void 0:e.defaultSorting});async function M(e,t){await f(Object.assign({order:e},t||{}))}const F=a(()=>{var e;return((e=c.value)==null?void 0:e.page)||1}),k=async(e,t)=>{await f(Object.assign({p:Number(e)},t||{}))},Q=a(()=>{var e;return m((e=p.value)==null?void 0:e.aggregations)}),_=a(()=>{var e,t;return m(((e=s.value)==null?void 0:e.aggregations)||((t=c.value)==null?void 0:t.aggregations))}),d=a(()=>{var n;const e=[],t={...(n=c.value)==null?void 0:n.currentFilters};return Object.keys(t).forEach(l=>{if(t[l]&&l!=="navigationId"){if(l==="price"){t[l].min&&(e["min-price"]=t[l].min),t[l].max&&(e["max-price"]=t[l].max);return}l!=="p"&&(e[l]=t[l])}}),e}),N=e=>{const t=Object.assign({},d.value,e,{query:d.value.search});return s.value&&(s.value.currentFilters=t),f(t)},R=()=>{const e=Object.assign({manufacturer:"",properties:"",price:{min:0,max:0},search:d.value.search},o);return s.value.currentFilters=e,f({query:d.value.search})},W=e=>{let t={};for(const n in e)e[n]&&(Array.isArray(e[n])&&e[n].length?t[n]=e[n].join("|"):Array.isArray(e[n])||(t[n]=e[n]));return t};return{getInitialListing:p,setInitialListing:x,initSearch:b,search:f,getCurrentListing:c,getElements:P,getSortingOrders:E,getCurrentSortingOrder:$,getDefaultSortingOrder:q,changeCurrentSortingOrder:M,getCurrentPage:F,changeCurrentPage:k,getTotal:L,getTotalPagesCount:T,getLimit:O,getInitialFilters:Q,getAvailableFilters:_,getCurrentFilters:d,setCurrentFilters:N,loading:a(()=>i.value),loadMore:j,loadingMore:a(()=>v.value),resetFilters:R,filtersToQuery:W}}export{Y as u};