1import{u as C}from"./COfnBGkF.js";import{bL as p,B as y,R as w,J as g,P as F,c as A,D as S,f as l,o as b,a1 as k,G as h}from"./BOYQqkqS.js";import{u as I}from"./QoTQdY3v.js";const E=p("favorites",{state:()=>({favoriteCars:new Set,favoriteCompanies:new Set,loadingItems:new Set,isInitialized:!1,favoriteCounts:{car:0,company:0}}),getters:{isCarFavorite:t=>e=>t.favoriteCars.has(String(e)),isCompanyFavorite:t=>e=>t.favoriteCompanies.has(Number(e)),isItemLoading:t=>(e,a)=>{const n=`${e}:${a}`;return t.loadingItems.has(n)},favoriteCarsArray:t=>Array.from(t.favoriteCars),favoriteCompaniesArray:t=>Array.from(t.favoriteCompanies),totalCount:t=>(t.favoriteCounts.car||0)+(t.favoriteCounts.company||0)},actions:{async fetchFavorites(){if(this.isInitialized)return;const t=C(),e=t.value?.favorites?.car,a=t.value?.favorites?.company;typeof e=="number"&&(this.favoriteCounts.car=e),typeof a=="number"&&(this.favoriteCounts.company=a),this.isInitialized=!0},setFavoriteCars(t){typeof t=="number"?this.favoriteCars=new Set:this.favoriteCars=new Set((t||[]).map(e=>String(e))),this.isInitialized=!0},setFavoriteTotal(t){typeof t=="number"&&(this.favoriteCounts.car=Math.max(0,t)),this.isInitialized=!0},setCarFavorite(t,e){const a=String(t),n=this.favoriteCars.has(a);e?n||(this.favoriteCars.add(a),this.favoriteCounts.car+=1):n&&(this.favoriteCars.delete(a),this.favoriteCounts.car=Math.max(0,this.favoriteCounts.car-1)),this.isInitialized=!0},async toggleCar(t){const e=`car:${t}`,a=this.favoriteCars.has(String(t));if(!this.loadingItems.has(e)){this.loadingItems.add(e),a?(this.favoriteCars.delete(String(t)),this.favoriteCounts.car=Math.max(0,this.favoriteCounts.car-1)):(this.favoriteCars.add(String(t)),this.favoriteCounts.car+=1);try{const n=y(),c=w(),u=g(),f=await F(c).tokenStorage?.get(u),m=u.$sanctumClient,v=new FormData;return v.append("type","car"),v.append("id",String(t)),a&&v.append("_method","DELETE"),await m("/api/user/favorite",{method:"POST",body:v,headers:f?{Authorization:`Bearer ${f}`}:{}}),!0}catch(n){throw a?(this.favoriteCars.add(String(t)),this.favoriteCounts.car+=1):(this.favoriteCars.delete(String(t)),this.favoriteCounts.car=Math.max(0,this.favoriteCounts.car-1)),n}finally{this.loadingItems.delete(e)}}},async toggleCompany(t){const e=`company:${t}`,a=this.favoriteCompanies.has(Number(t));if(!this.loadingItems.has(e)){this.loadingItems.add(e),a?this.favoriteCompanies.delete(Number(t)):this.favoriteCompanies.add(Number(t));try{return!0}finally{this.loadingItems.delete(e)}}},reset(){this.favoriteCars.clear(),this.favoriteCompanies.clear(),this.loadingItems.clear(),this.isInitialized=!1,this.favoriteCounts.car=0,this.favoriteCounts.company=0}}}),x=()=>{const t=E(),e=C(),a=A(),{trackFavoriteAddedConversion:n}=I(),c=async()=>{!e.value||t.isInitialized||await t.fetchFavorites()};S(e,async r=>{r&&await c()},{immediate:!0});const u=(r,o="success")=>{try{const{toast:i}=g().$toast||{};if(i){const s={autoClose:o==="success"?3e3:5e3,position:"top-right",hideProgressBar:!1,closeOnClick:!0,pauseOnHover:!0,draggable:!0};o==="success"?i.success(r,s):i.error(r,s)}else{const s=o==="success"?"â
":"â"}}catch{}},f=async r=>{if(!e.value)return await h(a("/sign-in")),!1;await c();const o=t.isCarFavorite(r);try{return await t.toggleCar(r)===!0&&!o&&n({transactionId:r,props:{source:"car_favorite",car_id:String(r)}}),u(o?"Removed from favorites":"Added to favorites","success"),!0}catch(i){const s=i?.data?.message||i?.message||"Failed to update favorites";return u(s,"error"),!1}},m=async r=>{if(!e.value)return await h(a("/sign-in")),!1;await c();const o=t.isCompanyFavorite(r);try{return await t.toggleCompany(r),u(o?"Removed from favorites":"Added to favorites","success"),!0}catch(i){const s=i?.data?.message||i?.message||"Failed to update favorites";return u(s,"error"),!1}},v=(r,o)=>{const i=s=>{if((s.ctrlKey||s.metaKey)&&s.key==="d"){s.preventDefault(),r==="car"?f(o):m(o);return}if(s.key==="f"||s.key==="F"){const d=document.activeElement;if(d?.tagName==="INPUT"||d?.tagName==="TEXTAREA"||d?.isContentEditable)return;s.preventDefault(),r==="car"?f(o):m(o)}};b(()=>{window.addEventListener("keydown",i)}),k(()=>{window.removeEventListener("keydown",i)})};return{isCarFavorite:t.isCarFavorite,isCompanyFavorite:t.isCompanyFavorite,isItemLo
1ading:t.isItemLoading,totalCount:l(()=>t.totalCount),favoriteCarsArray:l(()=>t.favoriteCarsArray),favoriteCompaniesArray:l(()=>t.favoriteCompaniesArray),toggleCarFavorite:f,toggleCompanyFavorite:m,init:c,setupKeyboardShortcuts:v}};export{E as a,x as u};
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.