import{u as m}from"./DrJDeGiv.js";import{q as u,g as p}from"./2JCroH3R.js";function h(){const a=m("geo_location",()=>null),i=u(!1),c=u(null);async function l(){i.value=!0,c.value=null;let t=null;try{t=await g()}catch{}let e=null;try{e=await d(3e3)}catch{}if(t&&t.province)return e&&(t.latitude=e.latitude,t.longitude=e.longitude,t.source="gps"),a.value=t,r(t),i.value=!1,t;if(e){const o=await s(e.latitude,e.longitude),n={...e,province:o?.province||"",city:o?.city||"",district:o?.district||"",address:o?`${o.province} ${o.city} ${o.district}`.trim():"",source:"gps"};return a.value=n,r(n),i.value=!1,n}return i.value=!1,null}async function s(t,e){try{const n=await(await fetch(`/api/regions/match?lat=${t}&lng=${e}`)).json();if(n.code===0&&n.data)return{province:n.data.province||"",city:n.data.city||"",district:n.data.district||n.data.name||""}}catch{}return null}function d(t){return new Promise(e=>{if(!navigator.geolocation){e(null);return}navigator.geolocation.getCurrentPosition(o=>e({latitude:o.coords.latitude,longitude:o.coords.longitude}),()=>e(null),{enableHighAccuracy:!1,timeout:t,maximumAge:6e5})})}async function g(){const t=new AbortController,e=setTimeout(()=>t.abort(),3e3);try{const o=await fetch("https://ip-api.com/json/?fields=66846719&lang=zh-CN",{signal:t.signal});if(clearTimeout(e),!o.ok)return null;const n=await o.json();return n.status!=="success"?null:{latitude:n.lat||0,longitude:n.lon||0,province:n.regionName||"",city:n.city||"",district:"",address:`${n.regionName||""} ${n.city||""}`.trim(),source:"ip"}}catch{return clearTimeout(e),null}}function f(t,e,o){const n={latitude:0,longitude:0,province:t,city:e,district:o,address:`${t} ${e} ${o}`.trim(),source:"manual"};a.value=n,r(n)}function r(t){try{p().setManualLocation(t.province,t.city,t.district)}catch{}}return{location:a,loading:i,error:c,getCurrentLocation:l,setManualLocation:f}}export{h as u};