1import{j as L}from"./chunk-BUmnHJrbSQCzs.js";import{r as i}from"./chunk-rtlSGV0HlPFTb.js";import{m as x,u as E}from"./chunk-aP0lg0Gvtytoh.js";import{D as n,a as m,W as h,b as l}from"./chunk-CyONiOkNFaPdt.js";const u="userSettings";Object.values(n);const p=s=>{const c=localStorage[u];let r;c?r=JSON.parse(c):r={};const o={...r,...s};localStorage.setItem(u,JSON.stringify(o))},b={mobileAppBannerDismissed:!1,distanceUnit:m.US,windSpeedUnit:h.MPH,leftSidebarCollapsed:!1,appDisplayTheme:n.Light,displayTheme:n.Light,displayThemeSetting:l.System},T="(prefers-color-scheme: dark)",v=()=>window.matchMedia(T).matches?n.Dark:n.Light,f=i.createContext(null),{Provider:M}=f,J=({ssrState:s,children:c})=>{const[,r]=E([u]),[o,w]=i.useState(s||b),[y,D]=i.useState(!1),S=t=>w(e=>({...e,...t}));i.useEffect(()=>{if(!y){const t=localStorage[u];let e;t?e=JSON.parse(t):e={};const d=new URLSearchParams(window.location.search).get("distanceUnit");if(d===m.Metric||d===m.US?e.distanceUnit=d:e.distanceUnit||(window.navigator.language.toLowerCase().endsWith("us")||window.navigator.language==="en"?e.distanceUnit=m.US:e.distanceUnit=m.Metric),e.windSpeedUnit||(window.navigator.language.toLowerCase().endsWith("us")||window.navigator.language==="en"?e.windSpeedUnit=h.MPH:e.windSpeedUnit=h.MPS),!e.displayThemeSetting||(e==null?void 0:e.displayThemeSetting)===l.System){const a=v();e.displayThemeSetting=l.System,e.displayTheme=a}if(!e.timeFormat){const a=new Date(Date.UTC(2012,11,12,3,0,0)),C=a.toLocaleTimeString();/am|pm/i.exec(C)||/am|pm/i.exec(a.toString())?e.timeFormat=12:e.timeFormat=24}S(e),D(!0)}},[y]),i.useEffect(function(){const e=window.matchMedia(T);function d(){w(a=>a.displayThemeSetting===l.System?{...a,displayTheme:e.matches?n.Dark:n.Light}:a)}return e.addEventListener("change",d),()=>{window.removeEventListener("change",d)}},[]);const g=t=>e=>{p({[t]:e}),S({[t]:e})},U=i.useRef(!0);return i.useEffect(function(){if(U.current){U.current=!1;return}o&&r("userSettings",JSON.stringify(o),{path:"/",httpOnly:!1,sameSite:"lax"})},[o,r]),L.jsx(M,{value:{userSettings:o,setMobileAppBannerDismissed:g("mobileAppBannerDismissed"),setDistanceUnit:g("distanceUnit"),setWindSpeedUnit:g("windSpeedUnit"),setDisplayThemeSetting:t=>{p({displayThemeSetting:t}),S({displayThemeSetting:t});let e=n.Light;t===l.System?e=window.matchMedia("(prefers-color-scheme: dark)").matches?n.Dark:n.Light:t===l.AlwaysDark&&
1(e=n.Dark),p({displayTheme:e}),S({displayTheme:e})},setLeftSidebarCollapsed:g("leftSidebarCollapsed")},children:c})};function O(){const s=i.useContext(f);if(!s)throw new Error("useUserSettings should only be used under UserSettingsProvider");return s}function W(){const s=i.useContext(f);if(!s)throw new Error("useCurrentDisplayTheme should only be used under UserSettingsProvider");return i.useContext(x)?s.userSettings.appDisplayTheme??s.userSettings.displayTheme:s.userSettings.displayTheme}export{J as U,O as a,T as t,W 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.