1import{_ as vt,a as pt,b as mt}from"./M5abrhGA.js";import{_ as ft}from"./CZPPsbh3.js";import{_ as ht}from"./DMfTsiWl.js";import{aR as gt,ea as kt,et as wt,eu as Ct,eR as ce,cH as Fe,cF as $t,ep as Le,cu as Ae,ax as It,eW as Be,c$ as _,cL as r,aw as i,aB as l,f as h,d4 as C,dP as a,cv as ue,dD as c,aJ as Y,ay as b,aI as Oe,eX as Tt,cb as Nt,eO as St,at as o,bt as De,ew as Pt,a1 as Rt}from"./BQpWByWK.js";import{r as Et}from"./KI3naYzN.js";import{d as Mt}from"./Cp5cwtXO.js";import{j as qt,b as Ft,l as Lt}from"./CbapU1-B.js";import{u as At}from"./DXbo10_u.js";import{u as Bt}from"./DxJSeJLe.js";import{u as Ot}from"./COvWvA50.js";import"./D5hhDmY1.js";import"./nYV3oLWA.js";import"./B0tXIqJN.js";import"./CXrjN5r8.js";import"./BQWAG1Ph.js";import"./BfdIF0VO.js";import"./CZPZSw1p.js";import"./Dlv5-hx-.js";import"./w3XBMUx2.js";import"./BvCVExpy.js";import"./BDYPYTBS.js";import"./C1sFeeWI.js";import"./C3I7gg_Z.js";import"./DxCNposV.js";import"./KNeBdjIC.js";import"./ZnevxfK4.js";import"./C1s6BCIR.js";import"./C1VjYhya.js";import"./BhfifKLc.js";import"./DQCo6u8G.js";import"./4ocfwtbW.js";import"./DWEZbR2m.js";const Dt={class:"wc-nearby__title-row"},Kt={class:"wc-social__topbar-title"},Wt=["aria-label"],Vt=["aria-selected","onClick"],Ut={class:"wc-nearby"},Ht={class:"wc-nearby__head"},Jt=["aria-label"],Qt=["aria-selected","onClick"],Yt={class:"wc-nearby__sub"},jt=["aria-label"],zt=["aria-pressed","onClick"],Zt=["aria-label"],Gt={key:1,class:"wc-nearby__summary wc-num"},Xt={key:0,class:"wc-nearby__approx"},xt={key:2,class:"wc-nearby__loc"},ea={class:"wc-nearby__locsrc"},ta={key:3,class:"wc-nearby__notice"},aa={key:0,class:"wc-nearby__state"},na={key:1,class:"wc-nearby__state wc-nearby__state--action"},ra={class:"wc-nearby__state-actions"},la={key:2,class:"wc-nearby__state wc-nearby__state--action"},oa={key:3,class:"wc-nearby__state wc-nearby__state--action"},sa={key:0,class:"wc-nearby__locsrc"},ia={class:"wc-nearby__state-actions"},ca=["disabled"],ua={key:4,class:"wc-nearby__state wc-nearby__state--action"},da={key:0,class:"wc-nearby__locsrc"},ya={class:"wc-nearby__state-actions"},_a={key:0,class:"wc-nearby__grid wc-nearby__grid--vouchers"},ba={key:1,class:"wc-nearby__grid wc-nearby__grid--products"},va={key:2,class:"wc-nearby__grid"},pa={key:3,class:"wc-nearby__more"},ma=["disabled"],fa={key:0,class:"wc-nearby__more-error"},ha={key:1,class:"wc-nearby__more-error"},ga=["aria-label"],ka={class:"wc-nearby__modal-card"},wa={class:"wc-nearby__modal-head"},Ca=["aria-label"],$a=["placeholder"],Ia={key:0,class:"wc-nearby__modal-err"},Ta={class:"wc-nearby__modal-label"},Na={key:1,class:"wc-nearby__modal-empty"},Sa={key:2,class:"wc-nearby__modal-list"},Pa=["disabled","onClick"],Ke="wc_nearby_city",Ra=gt({__name:"nearby",setup(Ea){const{t:d}=kt(),O=wt(),de=Ct(),{region:ye}=At(),j=["vouchers","products","mall","ordering","channels"];function _e(e){const t=String(e??"").trim().toLowerCase();return j.includes(t)?t:""}const z=o(()=>_e(O.query.tab)),be=_(null);function ve(){const e=be.value,t=e?.querySelector(".wc-nearby__tab.is-active");if(!e||!t)return;const s=t.offsetLeft-(e.clientWidth-t.offsetWidth)/2;e.scrollTo({left:Math.max(0,s),behavior:"smooth"})}const g=o(()=>String(O.query.industry??"").trim()),pe=()=>Pt().public.apiBase||void 0,We=[1,3,5,10,20],m=_(5),y=_(null),P=_(!0),R=_(""),k=_(""),f=_("device"),me=o(()=>f.value==="ip"),Z=_(null),Ve=o(()=>Z.value?.label??"");function Ue(){try{const e=localStorage.getItem(Ke);if(!e)return null;const t=JSON.parse(e);return!t||typeof t.lat!="number"||typeof t.lng!="number"||!Number.isFinite(t.lat)||!Number.isFinite(t.lng)||t.lat===0&&t.lng===0?null:{cityId:String(t.cityId??""),label:String(t.label??""),lat:t.lat,lng:t.lng}}catch{return null}}function He(e){try{localStorage.setItem(Ke,JSON.stringify(e))}catch{}}function G(e){Z.value=e,y.value={lat:e.lat,lng:e.lng},k.value=e.label,f.value="city",R.value=""}async function E(){P.value=!0,R.value="";const e=Ue();e&&(Z.value=e);try{const t=await Mt({timeout:8e3,enableHighAccuracy:!0}),s=t.location;s&&typeof s.latitude=="number"&&typeof s.longitude=="number"&&s.source!=="ip"?(y.value={lat:s.latitude,lng:s.longitude},k.value=s.cityName||"",f.value="device"):e?G(e):s&&typeof s.latitude=="number"&&typeof s.longitude=="number"?(y.value={lat:s.latitude,lng:s.longitude},k.value=s.cityName||"",f.value="ip"):(y.value=null,R.value=t.failure||"unavailable")}catch{e?G(e):(y.value=null,R.value="unavailable")}finally{P.value=!1}}const D=_(!1),M=_(""),K=_([]),W=_([]),V=_(!1),$=_(""),X=o(()=>M.value.trim().length>=2),fe=o(()=>X.value?W.value:K.value);function U(){D.value=!0,$.value="",!(K.value.length>0)&&qt(ye.value,12).then(e=>{K.value=e}).catch(()=>{K.value=[]})}function Je(){D.value=!1}let x=null;ce(M,e=>{x&&clearTimeout(x);const t=e.trim();if(t.length<2){W.value=[];return}x=setTimeout(()=>{Lt(t,ye.value,20).then(s=>{W.value=s}
1).catch(()=>{W.value=[]})},250)});async function Qe(e){if(!V.value){V.value=!0,$.value="";try{const t=await Ft(e.value);if(!t.found||typeof t.latitude!="number"||typeof t.longitude!="number"){$.value=d("nearby.city_no_coords");return}const s={cityId:t.cityId||e.value,label:t.label||e.label,lat:t.latitude,lng:t.longitude};G(s),He(s),D.value=!1}catch{$.value=d("nearby.load_error")}finally{V.value=!1}}}const ee=Bt();let I=null;const he=new WeakMap;function Ye(){I||typeof IntersectionObserver>"u"||(I=new IntersectionObserver(e=>{for(const t of e){if(!t.isIntersecting||t.intersectionRatio<.5)continue;const s=he.get(t.target);s&&ee.trackImpression(s,"nearby")}},{threshold:.5}))}function te(e,t){!e||!t||(Ye(),I&&(he.set(e,t),I.observe(e)))}Fe(()=>{ee.resetImpressions(),E()}),$t(()=>{try{I?.disconnect(),I=null,ee.flush()}catch{}});class ge extends Error{constructor(){super("nearby_pending"),this.name="NearbyPendingError"}}const ae=e=>e instanceof ge;function q(e){return e==="mall"||e==="ordering"}async function ke(e,t,s,v,S,se){const ie=e==="vouchers"?"/api/app/nearby/vouchers":e==="products"?"/api/app/nearby/products":q(e)?"/api/app/nearby/catalog":"/api/app/nearby/channels",n=await $fetch(ie,{baseURL:pe(),credentials:"include",headers:De(),signal:se,query:{...q(e)?{module:e}:{},lat:t.lat,lng:t.lng,radiusKm:s,cursor:S,take:20,...v?{industry:v}:{}}});return Et(n?.nowUtc),n}const ne=Le({queryKey:["nearby-config"],queryFn:()=>$fetch("/api/app/nearby/config",{baseURL:pe(),credentials:"include",headers:De(),timeout:5e3}),enabled:o(()=>!0),staleTime:3e5,retry:0}),je=o(()=>_e(ne.data.value?.defaultTab)||"channels"),ze=o(()=>ne.isSuccess.value||ne.isError.value),u=o(()=>z.value||je.value);ce(u,()=>{Ae(ve)},{flush:"post"}),Fe(()=>Ae(ve));const Ze=o(()=>z.value!==""||ze.value);function we(e){u.value===e&&z.value!==""||de.replace({query:{...O.query,tab:e}})}function Ge(e){const t=g.value===e?"":e,s={};for(const[v,S]of Object.entries(O.query))typeof S=="string"&&(s[v]=S);s.tab=u.value,t?s.industry=t:delete s.industry,de.replace({query:s})}const Ce=o(()=>["nearby-feed",u.value,g.value,y.value?y.value.lat.toFixed(5):"",y.value?y.value.lng.toFixed(5):"",m.value]),{data:w,isLoading:Xe,isFetching:$e,isError:Ie,error:xe,refetch:Te}=Le({queryKey:Ce,queryFn:async()=>{const e=y.value;if(!e)throw new Error("nearby_no_center");const t=await ke(u.value,e,m.value,g.value,0);if(t.pending===!0)throw new ge;return t},enabled:o(()=>y.value!==null&&Ze.value),staleTime:6e4,retry:(e,t)=>ae(t)?e<2:e<1,retryDelay:(e,t)=>ae(t)?1500:Math.min(1e3*2**e,3e4)}),et=o(()=>w.value?.items??[]),Ne=o(()=>w.value?.totalCount??0),tt=o(()=>w.value?.truncated===!0),Se=o(()=>w.value?.industries??[]),at=o(()=>w.value?.activeIndustryId??""),nt=o(()=>w.value?.industryCountsAvailable!==!1),rt=o(()=>new Set(g.value?[g.value]:[])),H=_([]),re=_(null),T=_(!1),F=_(!1),L=_(!1);let A=0,J=null;const N=o(()=>[...et.value,...H.value]),lt=o(()=>u.value==="channels"?N.value:[]),ot=o(()=>u.value==="vouchers"?N.value:[]),st=o(()=>u.value==="products"||q(u.value)?N.value:[]),Pe=o(()=>re.value??w.value?.nextCursor??-1),Re=o(()=>Pe.value>=0);ce(Ce,()=>{A+=1,J?.abort(),J=null,H.value=[],re.value=null,T.value=!1,F.value=!1,L.value=!1});async function it(){const e=y.value;if(!e||T.value||!Re.value)return;const t=A,s=new AbortController;J=s,T.value=!0,F.value=!1,L.value=!1;try{const v=await ke(u.value,e,m.value,g.value,Pe.value,s.signal);if(t!==A)return;if(v.pending===!0){L.value=!0;return}H.value=[...H.value,...v.items??[]],re.value=v.nextCursor??-1}catch{if(t!==A)return;F.value=!0}finally{t===A&&(T.value=!1,J=null)}}const Q=o(()=>P.value||y.value!==null&&Xe.value),ct=o(()=>Q.value&&N.value.length===0),ut=o(()=>!P.value&&y.value===null),Ee=o(()=>Ie.value&&ae(xe.value)),le=o(()=>!Q.value&&y.value!==null&&Ie.value&&!Ee.value),oe=o(()=>!Q.value&&!le.value&&y.value!==null&&N.value.length===0&&Ee.value),Me=o(()=>!Q.value&&!le.value&&!oe.value&&y.value!==null&&N.value.length===0),dt=o(()=>g.value?d("nearby.industry_empty"):u.value==="vouchers"?d("nearby.vouchers_empty"):u.value==="products"?d("nearby.products_empty"):u.value==="mall"?d("nearby.mall_empty"):u.value==="ordering"?d("nearby.ordering_empty"):d("nearby.empty"));function qe(e){return d(e==="vouchers"?"nearby.tab_vouchers":e==="products"?"nearby.tab_products":e==="mall"?"nearby.tab_mall":e==="ordering"?"nearby.tab_ordering":"nearby.tab_channels")}const yt=o(()=>u.value==="vouchers"?"nearby.industry_voucher_count":u.value==="products"||q(u.value)?"nearby.industry_product_count":"market.industry_count"),_t=o(()=>{const e=Ne.value,t=m.value;return u.value==="vouchers"?d("nearby.result_count_vouchers",{n:e,km:t}):u.value==="products"?d("nearby.result_count_products",{n:e,km:t}):u.value==="mall"?d("nearby.result_count_mall",{n:e,km:t}):u.value==="ordering"?d("nearby.result_count_ordering",{n:e,km:t}):d("nearby.result_count",{n:e,km:t})}),B=o(()=>y.value===null?"":f.value==="city"?d("nearby.located_city_hint",{city:Ve.value}):me.value?k.value?d("nearby.located_approx_hint_city",{city:k.value}):d("nearby.located_approx_hint"):d("nearby.located_device_hint"));function bt(e){m.value!==e&&(m.value=e)}
1return Ot({title:()=>`${d("nearby.title")} · WeiCity`}),(e,t)=>{const s=vt,v=pt,S=mt,se=ft,ie=ht;return r(),It(ie,{"active-mode":"merchant","header-title":e.$t("nearby.title"),"back-to":"/marketplace","show-side":!1,"show-compose":!1,"hide-content-header-on-mobile":!0},{"header-title":Be(()=>[i("div",Dt,[i("h1",Kt,c(e.$t("nearby.title")),1),i("div",{class:"wc-nearby__tabs is-desk",role:"tablist","aria-label":e.$t("nearby.title")},[(r(),l(h,null,C(j,n=>i("button",{key:n,type:"button",role:"tab",class:ue(["wc-nearby__tab",{"is-active":a(u)===n}]),"aria-selected":a(u)===n,onClick:p=>we(n)},c(qe(n)),11,Vt)),64))],8,Wt)])]),default:Be(()=>[i("div",Ut,[i("header",Ht,[i("div",{ref_key:"mobTabsEl",ref:be,class:"wc-nearby__tabs is-mob",role:"tablist","aria-label":e.$t("nearby.title")},[(r(),l(h,null,C(j,n=>i("button",{key:n,type:"button",role:"tab",class:ue(["wc-nearby__tab",{"is-active":a(u)===n}]),"aria-selected":a(u)===n,onClick:p=>we(n)},c(qe(n)),11,Qt)),64))],8,Jt),i("p",Yt,c(e.$t("nearby.subtitle")),1),i("div",{class:"wc-nearby__radius",role:"group","aria-label":e.$t("nearby.radius_label")},[(r(),l(h,null,C(We,n=>i("button",{key:n,type:"button",class:ue(["wc-nearby__radius-btn",{"is-active":a(m)===n}]),"aria-pressed":a(m)===n,onClick:p=>bt(n)},c(e.$t("nearby.radius_km",{n})),11,zt)),64))],8,jt),a(Se).length>0?(r(),l("div",{key:0,class:"wc-nearby__cats",role:"group","aria-label":e.$t("nearby.category_label")},[Y(s,{industries:a(Se),"active-industry-id":a(at),"industry-tags":[],"active-category-ids":a(rt),"mobile-open":!0,"counts-available":a(nt),"count-label-key":a(yt),layout:"scroll",onSelectIndustry:Ge},null,8,["industries","active-industry-id","active-category-ids","counts-available","count-label-key"])],8,Zt)):b("",!0),a(y)&&a(Ne)>0?(r(),l("p",Gt,[Oe(c(a(_t))+" ",1),a(me)?(r(),l("span",Xt," · "+c(a(k)?e.$t("nearby.approx_from_city",{city:a(k)}):e.$t("nearby.approx")),1)):b("",!0)])):b("",!0),a(y)&&!a(Me)&&!a(oe)?(r(),l("p",xt,[i("span",ea,c(a(B)),1),i("button",{type:"button",class:"wc-nearby__loc-link",onClick:U},c(e.$t("nearby.pick_city")),1),a(f)!=="device"?(r(),l("button",{key:0,type:"button",class:"wc-nearby__loc-link",onClick:E},c(e.$t("nearby.use_precise_location")),1)):b("",!0)])):b("",!0),a(tt)?(r(),l("p",ta,[t[3]||(t[3]=i("i",{class:"fa-solid fa-circle-info","aria-hidden":"true"},null,-1)),Oe(" "+c(e.$t("nearby.truncated_hint")),1)])):b("",!0)]),a(ct)?(r(),l("p",aa,c(a(P)?e.$t("nearby.locating"):e.$t("common.loading")),1)):a(ut)?(r(),l("div",na,[i("p",null,c(a(R)==="denied"?e.$t("nearby.denied_hint"):e.$t("nearby.no_location_hint")),1),i("div",ra,[i("button",{type:"button",class:"wc-nearby__btn",onClick:E},c(e.$t("nearby.retry_locate")),1),i("button",{type:"button",class:"wc-nearby__btn wc-nearby__btn--ghost",onClick:U},c(e.$t("nearby.pick_city")),1)])])):a(le)?(r(),l("div",la,[i("p",null,c(e.$t("nearby.load_error")),1),i("button",{type:"button",class:"wc-nearby__btn",onClick:t[0]||(t[0]=()=>a(Te)())},c(e.$t("common.retry")),1)])):a(oe)?(r(),l("div",oa,[i("p",null,c(e.$t("nearby.pending")),1),a(B)?(r(),l("p",sa,c(a(B)),1)):b("",!0),i("div",ia,[i("button",{type:"button",class:"wc-nearby__btn",disabled:a($e),onClick:t[1]||(t[1]=()=>a(Te)())},c(a($e)?e.$t("common.loading"):e.$t("common.retry")),9,ca),a(f)!=="device"?(r(),l("button",{key:0,type:"button",class:"wc-nearby__btn wc-nearby__btn--ghost",onClick:E},c(e.$t("nearby.use_precise_location")),1)):b("",!0),i("button",{type:"button",class:"wc-nearby__btn wc-nearby__btn--ghost",onClick:U},c(e.$t("nearby.pick_city")),1)])])):a(Me)?(r(),l("div",ua,[i("p",null,c(a(dt)),1),a(B)?(r(),l("p",da,c(a(B)),1)):b("",!0),i("div",ya,[a(f)!=="device"?(r(),l("button",{key:0,type:"button",class:"wc-nearby__btn",onClick:E},c(e.$t("nearby.use_precise_location")),1)):b("",!0),i("button",{type:"button",class:"wc-nearby__btn wc-nearby__btn--ghost",onClick:U},c(e.$t("nearby.pick_city")),1)])])):(r(),l(h,{key:5},[a(u)==="vouchers"?(r(),l("div",_a,[(r(!0),l(h,null,C(a(ot),n=>(r(),l("div",{key:n.voucher.docId,ref_for:!0,ref:p=>te(p,n.channelId),class:"wc-nearby__cell"},[Y(v,{item:n},null,8,["item"])]))),128))])):a(u)==="products"||q(a(u))?(r(),l("div",ba,[(r(!0),l(h,null,C(a(st),n=>(r(),l("div",{key:n.product.id,ref_for:!0,ref:p=>te(p,n.channelId),class:"wc-nearby__cell"},[Y(S,{item:n},null,8,["item"])]))),128))])):(r(),l("div",va,[(r(!0),l(h,null,C(a(lt),n=>(r(),l("div",{key:n.card.channelId,ref_for:!0,ref:p=>te(p,n.card.channelId),class:"wc-nearby__cell"},[Y(se,{item:n.card,"tracking-source":"nearby",nearby:{distanceKm:n.distanceKm,openNow:n.openNow,
1claimed:n.claimed,latitude:n.latitude,longitude:n.longitude,hasDeal:n.hasDeal,dealStartsAt:n.dealStartsAt??void 0,dealTimeZoneId:n.dealTimeZoneId,vouchers:n.vouchers,voucherTotal:n.voucherTotal}},null,8,["item","nearby"])]))),128))])),a(Re)?(r(),l("div",pa,[i("button",{type:"button",class:"wc-nearby__btn",disabled:a(T),onClick:it},c(a(T)?e.$t("common.loading"):a(F)||a(L)?e.$t("common.retry"):e.$t("nearby.load_more")),9,ma),a(F)?(r(),l("p",fa,c(e.$t("nearby.load_error")),1)):a(L)?(r(),l("p",ha,c(e.$t("nearby.pending")),1)):b("",!0)])):b("",!0)],64)),a(D)?(r(),l("div",{key:6,class:"wc-nearby__modal",role:"dialog","aria-modal":"true","aria-label":e.$t("nearby.pick_city")},[i("div",ka,[i("header",wa,[i("strong",null,c(e.$t("nearby.pick_city")),1),i("button",{type:"button",class:"wc-nearby__loc-link","aria-label":e.$t("market.location.close_aria"),onClick:Je},[...t[4]||(t[4]=[i("i",{class:"fa-solid fa-xmark","aria-hidden":"true"},null,-1)])],8,Ca)]),Tt(i("input",{"onUpdate:modelValue":t[2]||(t[2]=n=>Nt(M)?M.value=n:null),type:"search",class:"wc-nearby__modal-input",placeholder:e.$t("market.location.search_city_placeholder")},null,8,$a),[[St,a(M)]]),a($)?(r(),l("p",Ia,c(a($)),1)):b("",!0),i("p",Ta,c(a(X)?e.$t("market.location.enter_location"):e.$t("market.location.popular_cities")),1),a(fe).length===0?(r(),l("p",Na,c(a(X)?e.$t("market.location.no_city_results"):e.$t("market.location.no_popular_cities")),1)):(r(),l("ul",Sa,[(r(!0),l(h,null,C(a(fe),n=>(r(),l("li",{key:n.value},[i("button",{type:"button",class:"wc-nearby__modal-city",disabled:a(V),onClick:p=>Qe(n)},c(n.label),9,Pa)]))),128))]))])],8,ga)):b("",!0)])]),_:1},8,["header-title"])}}}),dn=Rt(Ra,[["__scopeId","data-v-5a42f23d"]]);export{dn as default};
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.