1import{j as C}from"./jsx-runtime-BJcAWMsb.js";import{r}from"./chunk-62JRHF6Z-CiITS9Lr.js";import{s as S}from"./theme-client-CKcweOu0.js";import{u as b}from"./cn-ikUPuW0X-De5nhjqQ.js";const v=["light","dark","system"],h=e=>{const s=document.documentElement;s.classList.toggle("dark",e),s.classList.toggle("light",!e)},y=e=>{const s=document.documentElement;switch(s.classList.remove(...v),s.classList.add(e),e){case"dark":case"dark_v2":s.classList.add("dark");break;case"light":s.classList.add("light");break;case"system":const m=window.matchMedia("(prefers-color-scheme: dark)").matches;h(m);break}},g=r.createContext(void 0),R=({children:e,currentUser:s,initialTheme:m,initialLanguage:E})=>{const[n,k]=r.useState(m),[c,p]=r.useState(E),[i,L]=r.useState(s),{i18n:d}=b();r.useEffect(()=>{y(n)},[n]),r.useEffect(()=>{if(n!=="system")return;const t=a=>{h(a.matches)},o=window.matchMedia("(prefers-color-scheme: dark)");return o.addEventListener("change",t),()=>{o.removeEventListener("change",t)}},[n]),r.useEffect(()=>{c&&c!==d.language&&d.changeLanguage(c)},[c,d]);const T=r.useCallback(t=>{k(t),S(t)},[]),P=r.useCallback(t=>{p(t)},[]),x=r.useCallback((t,o)=>{i&&L(a=>{if(!a)return a;const l=a.preferences?.map(u=>u.name===t?{...u,value:o}:u)||[];return l.find(u=>u.name===t)||l.push({name:t,value:o}),{...a,preferences:l}})},[i]);return C.jsx(g.Provider,{value:{currentUser:i,theme:n,setTheme:T,language:c,setLanguage:P,updateUserPreference:x},children:e})},f=()=>{const e=r.useContext(g);if(e===void 0)throw new Error("useUserPreferences must be used within a UserPreferencesProvider");return e},_=()=>{const{theme:e,setTheme:s}=f();return{theme:e,setTheme:s}},A=()=>{const{language:e,setLanguage:s}=f();return{language:e,setLanguage:s}};export{R as U,f as a,A as b,_ 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.