1import{a as p}from"./postsService-8803795b.js";import{s as h,F as b}from"./groupsService-00887703.js";import{cF as _,cI as y,cJ as A,cp as G,cC as P}from"./index-109ef59a.js";import{s as $,f as R}from"./marketplaceService-fe0b6948.js";import{B as E,G as S}from"./articles-5be4499c.js";import"./react-vendor-2456d756.js";import"./sentry-2cabdd57.js";import"./supabase-e274f090.js";import"./lucide-a6f07388.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{};e.SENTRY_RELEASE={id:"84e0629e1e011ac8c99cdc99289c0cc630b75609"};var t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="8256470b-813d-4416-b3cf-25f927fe6faf",e._sentryDebugIdIdentifier="sentry-dbid-8256470b-813d-4416-b3cf-25f927fe6faf")}catch{}})();const w={vehicle:"Vehicles",user:"Members",group:"Groups",groupPost:"Group Posts",listing:"Listings",product:"Shop",article:"Articles"},I=["vehicle","user","group","groupPost","listing","product","article"],k=(e,t=64)=>{const i=(e||"").trim();return i.length>t?`${i.slice(0,t-1).trimEnd()}â¦`:i},l=e=>e.status==="fulfilled"&&Array.isArray(e.value)?e.value:[],B=e=>({type:"user",id:e.id,title:e.display_name||e.username||"Member",subtitle:e.username?`@${e.username}`:"",href:`/profile/${e.id}`,image:e.avatar_url||null,imageAlt:e.display_name||e.username||"",verified:!!e.is_verified}),v=e=>{const t=[e.year,e.make,e.model].filter(Boolean).join(" "),i=(e.name||"").trim();return{type:"vehicle",id:e.id,title:i||t||"Vehicle",subtitle:i?[t,e.trim].filter(Boolean).join(" "):e.trim||"",href:`/vehicles/${e.slug||e.id}`,image:e.thumbnail_url||e.photo_uri||null,imageAlt:i||t}},z=e=>({type:"group",id:e.id,title:e.name,subtitle:`${e.member_count??0} member${(e.member_count??0)===1?"":"s"}`,href:`/groups/${e.slug||e.id}`,image:e.avatar_url||null,imageAlt:e.name||""}),D=e=>{const t=e.group||{};return{type:"groupPost",id:e.id,title:(e.title||"").trim()||k(e.body,60)||"Group post",subtitle:t.name?`in ${t.name}`:"Group post",href:`/groups/${t.slug||t.id}?post=${e.id}`,image:e.profile?.avatar_url||t.avatar_url||null,imageAlt:t.name||""}},U=e=>{const t=(e.images||[])[0];return{type:"listing",id:e.id,title:e.title,subtitle:[R(e.price),e.brand].filter(Boolean).join(" · "),href:`/marketplace/listings/${e.slug||e.id}`,image:t?.thumbnail_url||t?.image_url||null,imageAlt:e.title||""}},C=e=>{const t=Array.isArray(e.images)?e.images[0]:null;return{type:"product",id:e.id,title:e.title,subtitle:[G(e.base_price_cents),e.subtitle].filter(Boolean).join(" · "),href:`/shop/product/${e.slug}`,image:t?.url||null,imageAlt:t?.alt||e.title||""}},O=e=>{const t=P(e.slug);return{type:"article",id:e.slug,title:e.title,subtitle:e.kind==="guide"?"Guide":"Blog",href:e.kind==="guide"?`/guides/${e.slug}`:`/blog/${e.slug}`,image:t?.card||null,imageAlt:t?.alt||e.title}};function j(e){const t=(e||"").trim().toLowerCase();if(!t)return[];const i=r=>r.title.toLowerCase().includes(t)||(r.description||"").toLowerCase().includes(t);return[...E.filter(i).map(r=>({...r,kind:"blog"})),...S.filter(i).map(r=>({...r,kind:"guide"}))]}async function Q(e,{perTypeLimit:t=5}={}){const i=(e||"").trim();if(i.length<_)return{query:i,total:0,groups:[]};const[r,u,c,m,o,d]=await Promise.allSettled([p(i,{limit:t}),y(i,{limit:t}),h(i),b(i,{limit:t}),$(i,{limit:t}),A(i,{limit:t})]),a={user:l(r).slice(0,t).map(B),vehicle:l(u).slice(0,t).map(v),group:l(c).slice(0,t).map(z),groupPost:l(m).slice(0,t).map(D),listing:(o.status==="fulfilled"?o.value?.listings||[]:[]).slice(0,t).map(U),product:l(d).slice(0,t).map(C),article:j(i).slice(0,t).map(O)},n=I.filter(s=>a[s].length>0).map(s=>({type:s,label:w[s],items:a[s]})),g=n.reduce((s,f)=>s+f.items.length,0);return{query:i,total:g,groups:n}}export{_ as MIN_QUERY_LENGTH,Q as globalSearch,j as searchArticles};
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.