1import{j as k}from"./index-DtMfLgNe.js";import{r as t}from"./lucide-icons-Dqzz7N0e.js";import{f as I}from"./geo.client-s6lCZ-yG.js";import{l as b}from"./location.client-CMcl0h4r.js";import{s as j,a as A}from"./track-DWzooEyE.js";const m="longevity_selected_city";function L(n,u="en"){return{name:n.name[u]||n.name.en,slug:n.slug,country:n.country,coordinates:n.coordinates?[n.coordinates.latitude,n.coordinates.longitude]:[0,0],joinUrl:n.whatsappLink||"/community",image:n.image}}const P=[{name:"Munich",slug:"munich",coordinates:[48.1351,11.582],joinUrl:"/community"}],x=t.createContext(void 0);function O({children:n,chapters:u=[],locale:y="en"}){const s=t.useMemo(()=>u.length===0?P:u.filter(e=>e.coordinates).map(e=>L(e,y)),[u,y]),[r,g]=t.useState(null),[C,S]=t.useState(!1),[w,E]=t.useState(!1),l=t.useRef(null);t.useEffect(()=>{l.current=r},[r]);const f=t.useRef(!1),[T,p]=t.useState(!1);t.useEffect(()=>{if(typeof window>"u")return;const e=()=>{t.startTransition(()=>{try{const i=localStorage.getItem(m);if(i){const c=JSON.parse(i),v=s.find(h=>h.slug===c.slug);v&&(g(v),c.source==="auto"&&(f.current=!0,p(!0)))}}catch{}E(!0)})};if("requestIdleCallback"in window){const i=requestIdleCallback(e,{timeout:2e3});return()=>cancelIdleCallback(i)}const o=setTimeout(e,200);return()=>clearTimeout(o)},[s]),t.useEffect(()=>{w&&(r&&!T||s.length!==0&&(p(!1),d()))},[w,r,T,s.length]);const a=t.useCallback((e,o="manual")=>{g(e),f.current=!!e&&o==="auto",typeof window<"u"&&(e?j(m,JSON.stringify({slug:e.slug,source:o})):A(m))},[]),d=t.useCallback(async()=>{if(!(typeof window>"u")&&s.length!==0){t.startTransition(()=>{S(!0)});try{const e=await b.getLocation({requestPrecise:!1}),o=I(e.latitude,e.longitude,s),i=l.current,c=!i||f.current;o&&c&&o.slug!==i?.slug&&t.startTransition(()=>{a(o,"auto")})}catch{if(!l.current&&s.length>0){const e=s.find(o=>o.slug==="munich");t.startTransition(()=>{a(e||s[0],"auto")})}}finally{t.startTransition(()=>{S(!1)})}}},[a,s]),R=t.useMemo(()=>({selectedCity:r,setSelectedCity:a,cities:s,isDetecting:C,detectCity:d}),[r,a,s,C,d]);return k.jsx(x.Provider,{value:R,children:n})}function D(){const n=t.useContext(x);if(n===void 0)throw new Error("useCity must be used within a CityProvider");return n}export{O as C,D 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.