1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/native-push-D-yUx6v1.js","assets/locale-DZsYCrre.js","assets/auth-7hVJkME9.js","assets/react-vendor-Del8TnYI.js","assets/commonjs-helpers-Cpj98o6Y.js","assets/desktop.generated-Bx_WBlTf.js","assets/event-D4qCYGNa.js","assets/storage-Do9ceHCw.js","assets/safe-json-parse-BPxbQ2iS.js"])))=>i.map(i=>d[i]); 2import{d as i,j as Ae}from"./react-vendor-Del8TnYI.js";import{ag as rt,eb as we,e$ as O,fp as oe,f0 as H,dO as ue,bF as ce,dm as _e,fZ as nt,f_ as Z,bV as it,bR as at,eR as Se,dU as Pe,fv as Me,cV as ot,dx as z,ba as te,g1 as G,aP as E,dh as ut,co as ct,eH as xe,ff as lt,bt as ft,eY as Qe,dT as ne,gi as ht,fa as Le,ey as dt,n as pt,aJ as gt,a as yt,cf as Ue,dj as Y,eT as De,gk as bt,h as vt,dg as mt,de as wt,fi as _t,aU as St,d7 as Rt,bi as Et,bT as kt,dn as Ne,fy as Ot,dD as Ct,bD as Tt}from"./auth-7hVJkME9.js";import{b3 as se,p as It,aI as Re,ai as At,e as Pt}from"./storage-Do9ceHCw.js";import{a0 as Ee,J as Mt,ae as Fe,ag as ze,I as xt,_ as Qt,j as Lt}from"./client-env-report-TV2APbpj.js";import{listOrganizationsApi as Ke,switchOrganizationApi as Ut,getOrganizationApi as Dt}from"./organizations-B2mf9CK2.js";import{_ as pe,A as Nt}from"./locale-DZsYCrre.js";import{w as Ve}from"./react-router-M2jLecQf.js";import{a as Ft}from"./toast-BlvMshgK.js";import{d as F}from"./debug-log-0ZVyGcQ0.js";import{p as zt}from"./paths-BpF7AGWU.js";import{s as Kt}from"./safe-json-parse-BPxbQ2iS.js";import{i as ke}from"./build-target-vyeUQQMA.js";import"./desktop.generated-Bx_WBlTf.js";var Vt=class extends rt{constructor(e,t){super(),this.options=t,this.#s=e,this.#n=null,this.#r=we(),this.bindMethods(),this.setOptions(t)}#s;#e=void 0;#p=void 0;#t=void 0;#a;#l;#r;#n;#g;#f;#h;#o;#u;#i;#d=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#e.addObserver(this),Oe(this.#e,this.options)?this.#c():this.updateResult(),this.#m())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return le(this.#e,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return le(this.#e,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#w(),this.#_(),this.#e.removeObserver(this)}setOptions(e){const t=this.options,s=this.#e;if(this.options=this.#s.defaultQueryOptions(e),this.options.enabled!==void 0&&typeof this.options.enabled!="boolean"&&typeof this.options.enabled!="function"&&typeof O(this.options.enabled,this.#e)!="boolean")throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");this.#S(),this.#e.setOptions(this.options),t._defaulted&&!oe(this.options,t)&&this.#s.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#e,observer:this});const r=this.hasListeners();r&&Ce(this.#e,s,this.options,t)&&this.#c(),this.updateResult(),r&&(this.#e!==s||O(this.options.enabled,this.#e)!==O(t.enabled,this.#e)||H(this.options.staleTime,this.#e)!==H(t.staleTime,this.#e))&&this.#y();const n=this.#b();r&&(this.#e!==s||O(this.options.enabled,this.#e)!==O(t.enabled,this.#e)||n!==this.#i)&&this.#v(n)}getOptimisticResult(e){const t=this.#s.getQueryCache().build(this.#s,e),s=this.createResult(t,e);return Wt(this,s)&&(this.#t=s,this.#l=this.options,this.#a=this.#e.state),s}getCurrentResult(){return this.#t}trackResult(e,t){return new Proxy(e,{get:(s,r)=>(this.trackProp(r),t?.(r),r==="promise"&&(this.trackProp("data"),!this.options.experimental_prefetchInRender&&this.#r.status==="pending"&&this.#r.reject(new Error("experimental_prefetchInRender feature flag is not enabled"))),Reflect.get(s,r))})}trackProp(e){this.#d.add(e)}getCurrentQuery(){return this.#e}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){const t=this.#s.defaultQueryOptions(e),s=this.#s.getQueryCache().build(this.#s,t);return s.fetch().then(()=>this.createResult(s,t))}fetch(e){return this.#c({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#t))}#c(e){this.#S();let t=this.#e.fetch(this.options,e);return e?.throwOnError||(t=t.catch(ue)),t}#y(){this.#w();const e=H(this.options.staleTime,this.#e);if(ce.isServer()||this.#t.isStale||!_e(e))return;const s=nt(this.#t.dataUpdatedAt,e)+1;this.#o=Z.setTimeout(()=>{this.#t.isStale||this.updateResult()},s)}#b(){return(typeof this.options.refetchInterval=="function"?this.options.refetchInterval(this.#e):this.options.refetchInterval)??!1}#v(e){this.#_(),this.#i=e,!(ce.isServer()||O(this.options.enabled,this.#e)===!1||!_e(this.#i)||this.#i===0)&&(this.#u=Z.setInterval(()=>
2{(this.options.refetchIntervalInBackground||it.isFocused())&&this.#c()},this.#i))}#m(){this.#y(),this.#v(this.#b())}#w(){this.#o!==void 0&&(Z.clearTimeout(this.#o),this.#o=void 0)}#_(){this.#u!==void 0&&(Z.clearInterval(this.#u),this.#u=void 0)}createResult(e,t){const s=this.#e,r=this.options,n=this.#t,o=this.#a,a=this.#l,u=e!==s?e.state:this.#p,{state:h}=e;let l={...h},m=!1,c;if(t._optimisticResults){const d=this.hasListeners(),T=!d&&Oe(e,t),P=d&&Ce(e,s,t,r);(T||P)&&(l={...l,...at(h.data,e.options)}),t._optimisticResults==="isRestoring"&&(l.fetchStatus="idle")}let{error:g,errorUpdatedAt:f,status:b}=l;c=l.data;let w=!1;if(t.placeholderData!==void 0&&c===void 0&&b==="pending"){let d;n?.isPlaceholderData&&t.placeholderData===a?.placeholderData?(d=n.data,w=!0):d=typeof t.placeholderData=="function"?t.placeholderData(this.#h?.state.data,this.#h):t.placeholderData,d!==void 0&&(b="success",c=Se(n?.data,d,t),m=!0)}if(t.select&&c!==void 0&&!w)if(n&&c===o?.data&&t.select===this.#g)c=this.#f;else try{this.#g=t.select,c=t.select(c),c=Se(n?.data,c,t),this.#f=c,this.#n=null}catch(d){this.#n=d}this.#n&&(g=this.#n,c=this.#f,f=Date.now(),b="error");const v=l.fetchStatus==="fetching",C=b==="pending",_=b==="error",L=C&&v,k=c!==void 0,S={status:b,fetchStatus:l.fetchStatus,isPending:C,isSuccess:b==="success",isError:_,isInitialLoading:L,isLoading:L,data:c,dataUpdatedAt:l.dataUpdatedAt,error:g,errorUpdatedAt:f,failureCount:l.fetchFailureCount,failureReason:l.fetchFailureReason,errorUpdateCount:l.errorUpdateCount,isFetched:e.isFetched(),isFetchedAfterMount:l.dataUpdateCount>u.dataUpdateCount||l.errorUpdateCount>u.errorUpdateCount,isFetching:v,isRefetching:v&&!C,isLoadingError:_&&!k,isPaused:l.fetchStatus==="paused",isPlaceholderData:m,isRefetchError:_&&k,isStale:ge(e,t),refetch:this.refetch,promise:this.#r,isEnabled:O(t.enabled,e)!==!1};if(this.options.experimental_prefetchInRender){const d=S.data!==void 0,T=S.status==="error"&&!d,P=A=>{T?A.reject(S.error):d&&A.resolve(S.data)},I=()=>{const A=this.#r=S.promise=we();P(A)},M=this.#r;switch(M.status){case"pending":e.queryHash===s.queryHash&&P(M);break;case"fulfilled":(T||S.data!==M.value)&&I();break;case"rejected":(!T||S.error!==M.reason)&&I();break}}return S}updateResult(){const e=this.#t,t=this.createResult(this.#e,this.options);if(this.#a=this.#e.state,this.#l=this.options,this.#a.data!==void 0&&(this.#h=this.#e),oe(t,e))return;this.#t=t;const s=()=>
2{if(!e)return!0;const{notifyOnChangeProps:r}=this.options,n=typeof r=="function"?r():r;if(n==="all"||!n&&!this.#d.size)return!0;const o=new Set(n??this.#d);return this.options.throwOnError&&o.add("error"),Object.keys(this.#t).some(a=>{const p=a;return this.#t[p]!==e[p]&&o.has(p)})};this.#R({listeners:s()})}#S(){const e=this.#s.getQueryCache().build(this.#s,this.options);if(e===this.#e)return;const t=this.#e;this.#e=e,this.#p=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#m()}#R(e){Pe.batch(()=>{e.listeners&&this.listeners.forEach(t=>{t(this.#t)}),this.#s.getQueryCache().notify({query:this.#e,type:"observerResultsUpdated"})})}};function Bt(e,t){return O(t.enabled,e)!==!1&&e.state.data===void 0&&!(e.state.status==="error"&&O(t.retryOnMount,e)===!1)}function Oe(e,t){return Bt(e,t)||e.state.data!==void 0&&le(e,t,t.refetchOnMount)}function le(e,t,s){if(O(t.enabled,e)!==!1&&H(t.staleTime,e)!=="static"){const r=typeof s=="function"?s(e):s;return r==="always"||r!==!1&&ge(e,t)}return!1}function Ce(e,t,s,r){return(e!==t||O(r.enabled,e)===!1)&&(!s.suspense||e.state.status!=="error")&&ge(e,s)}function ge(e,t){return O(t.enabled,e)!==!1&&e.isStaleByTime(H(t.staleTime,e))}function Wt(e,t){return!oe(e.getCurrentResult(),t)}var Be=i.createContext(void 0),J=e=>{const t=i.useContext(Be);if(!t)throw new Error("No QueryClient set, use QueryClientProvider to set one");return t},$s=({client:e,children:t})=>(i.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),Ae.jsx(Be.Provider,{value:e,children:t})),We=i.createContext(!1),jt=()=>i.useContext(We);We.Provider;function qt(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var Ht=i.createContext(qt()),Yt=()=>i.useContext(Ht),Gt=(e,t,s)=>{const r=s?.state.error&&typeof e.throwOnError=="function"?Me(e.throwOnError,[s.state.error,s]):e.throwOnError;(e.suspense||e.experimental_prefetchInRender||r)&&(t.isReset()||(e.retryOnMount=!1))},Jt=e=>{i.useEffect(()=>{e.clearReset()},[e])},$t=({result:e,errorResetBoundary:t,throwOnError:s,query:r,suspense:n})=>e.isError&&!t.isReset()&&!e.isFetching&&r&&(n&&e.data===void 0||Me(s,[e.error,r])),Xt=e=>{if(e.suspense){const s=n=>n==="static"?n:Math.max(n??1e3,1e3),r=e.staleTime;e.staleTime=typeof r=="function"?(...n)=>s(r(...n)):s(r),typeof e.gcTime=="number"&&(e.gcTime=Math.max(e.gcTime,1e3))}},Zt=(e,t)=>e.isLoading&&e.isFetching&&!t,es=(e,t)=>e?.suspense&&t.isPending,Te=(e,t,s)=>t.fetchOptimistic(e).catch(()=>{s.clearReset()});function ts(e,t,s){const r=jt(),n=Yt(),o=J(),a=o.defaultQueryOptions(e);o.getDefaultOptions().queries?._experimental_beforeQuery?.(a);const p=o.getQueryCache().get(a.queryHash);a._optimisticResults=r?"isRestoring":"optimistic",Xt(a),Gt(a,n,p),Jt(n);const u=!o.getQueryCache().get(a.queryHash),[h]=i.useState(()=>new t(o,a)),l=h.getOptimisticResult(a),m=!r&&e.subscribed!==!1;if(i.useSyncExternalStore(i.useCallback(c=>{const g=m?h.subscribe(Pe.batchCalls(c)):ue;return h.updateResult(),g},[h,m]),()=>h.getCurrentResult(),()=>h.getCurrentResult()),i.useEffect(()=>{h.setOptions(a)},[a,h]),es(a,l))throw Te(a,h,n);if($t({result:l,errorResetBoundary:n,throwOnError:a.throwOnError,query:p,suspense:a.suspense}))throw l.error;return o.getDefaultOptions().queries?._experimental_afterQuery?.(a,l),a.experimental_prefetchInRender&&!ce.isServer()&&Zt(l,r)&&(u?Te(a,h,n):p?.promise)?.catch(ue).finally(()=>{h.updateResult()}),a.notifyOnChangeProps?l:h.trackResult(l)}function fe(e,t){return ts(e,Vt)}function re(){return typeof window>"u"?!1:ot(window.location.pathname)}const Xs="https://online.moysklad.ru",je=60*1e3,ss=3e4;function qe(e,t){return{id:e.user_id,email:e.email||t,settings:e.settings||void 0,is_admin:e.is_admin||!1}}async function ye(e,t){try{return{success:!0,data:await e.fetchQuery({queryKey:E.me(),queryFn:async()=>G(await ct(t),"me_failed"),staleTime:ss})}}catch(s){return{success:!1,status:s?.status}}}async function Zs(e){await e.prefetchQuery({queryKey:E.organizations(),queryFn:async()=>G(await Ke(),"organizations_failed"),staleTime:1/0})}function He(e,t){return e.success?{success:!0,user:qe(e.data,t),subscription:e.data.subscription??null}:{success:!1,status:e.status}}
2async function Ye(e,t,s){return He(await ye(e,t),s)}async function rs(e,t){const s=await xe();if(s.kind!=="token")return{success:!1};const r=z();if(!r)return{success:!1};await e.invalidateQueries({queryKey:E.me()});const n=await Ye(e,s.value,t);return n.success?{success:!0,user:n.user,tokens:r.tokens,subscription:n.subscription}:{success:!1}}function ns(){if(re())return is(new URLSearchParams(window.location.search).get("accountId")),{status:"unauthenticated",user:null,tokens:null};if(!ut())return{status:"loading",user:null,tokens:null};const e=z();return e?e.tokens.expires_at<=Date.now()?{status:"loading",user:null,tokens:null}:{status:"authenticated",user:e.user,tokens:e.tokens}:{status:"unauthenticated",user:null,tokens:null}}function is(e){if(!e||!z())return;const s=se.get(It,null);s?.accountId&&s.accountId!==e&&te()}function as({tokensRef:e,commitSession:t,setUser:s,setIsLoading:r,recoverSubscriptionInBackground:n}){const o=J(),a=i.useCallback(async(c,g=!1)=>{const f=await lt(c,g);return f.success?f.data.blocked===!0?{success:!1,code:"EMAIL_BLOCKED",domain:f.data.domain??void 0}:f.data.deliverable===!1||f.data.success===!1?{success:!1,code:"EMAIL_UNDELIVERABLE",domain:f.data.domain??void 0}:{success:!0,retryAfter:f.data.retry_after_s??void 0}:{success:!1,error:f.error,code:f.code,retryAfter:f.retryAfter}},[]),p=i.useCallback(async c=>{const g=ft(c);o.removeQueries({queryKey:E.all()}),await Qe();const f=await ye(o,g.access_token),b=f.success?qe(f.data,c.email):{id:c.user_id,email:c.email};return ne(),t(b,g,{subscription:f.success?f.data.subscription??null:null}),Ee(),se.remove(Re),se.remove(At),{onboardingCompleted:f.success?!!f.data.onboarding_completed:!1,isNewUser:!!c.is_new_user}},[t,o]),u=i.useCallback(async(c,g,f)=>{r(!0);const b=await ht(c,g);if(!b.success)return r(!1),{success:!1,error:b.error,code:b.code,retryAfter:b.retryAfter};const w=await p(b.data);try{await f?.(w)}finally{r(!1)}return{success:!0,...w}},[p,r]),h=i.useCallback((c,g,f)=>{ne(),t({id:c.id,email:c.email},{access_token:g.access_token,refresh_token:g.refresh_token,expires_at:g.expires_at},f),f?.subscription===void 0&&n(!0),Ee(),se.remove(Re)},[t,n]),l=i.useCallback(c=>{s(g=>{if(!g)return g;const f={...g,...c};return e.current&&Le(f,e.current),f})},[s,e]),m=i.useCallback(()=>e.current?.refresh_token||null,[e]);return{sendOtp:a,verifyOtp:u,completeOAuthLogin:p,initSession:h,updateUser:l,getRefreshToken:m}}const os=e=>e?"user":"anon",us=300*1e3;async function cs(){return G(await gt(`${yt}/features`),"features_failed").features??{}}const ls=(e,t)=>{const s=t==="anon"?dt():null;return{queryKey:E.features(e,t),queryFn:cs,staleTime:us,initialData:s?.features,initialDataUpdatedAt:s?pt:void 0}};async function fs(e,t){await e.prefetchQuery(ls(Ue(e),t))}const hs=3600*1e3;function Ie(e,t,s){let r=!0;const n=pe(()=>import("./native-push-D-yUx6v1.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8])).then(o=>r?e(o,a=>{r&&t(a)}):null).catch(o=>(De(o,"push_presentation",{reason:s}),null));return()=>{r=!1,n.then(o=>o?.())}}function ds(e,t){const s=Ve();i.useEffect(()=>{if(!e||!Y())return;let r=!0;const n=()=>{pe(()=>import("./native-push-D-yUx6v1.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8])).then(a=>{r&&(a.nativePushRegistered()?a.nativePushReregisterDue()&&a.registerNativePush():a.reconcileNativePush(t))}).catch(a=>De(a,"push_registration"))};n();const o=setInterval(n,hs);return()=>{r=!1,clearInterval(o)}},[e,t]),i.useEffect(()=>{if(Y())return Ie((r,n)=>r.listenNativeNotificationTaps(n),r=>s(r),"tap_listener_setup")},[s]),i.useEffect(()=>{if(!(!e||!Y()))return Ie((r,n)=>r.listenNativeForegroundNotifications(n),({title:r,body:n,destination:o})=>{Ft(r,n,"brand",o?{action:{label:Nt("open"),onClick:()=>s(o)}}:void 0)},"foreground_listener_setup")},[e,s])}const ps=3e3;let be=null,he=null;async function Ge(){try{if(!navigator.serviceWorker?.controller&&!navigator.serviceWorker?.ready)return!1;const e=await bt(()=>navigator.serviceWorker.ready,{ms:ps,onExpire:()=>null});return e?await e.pushManager.getSubscription()!==null:!1}catch{return!1}}function er(){return be}function tr(){return he??=Ge().then(e=>(be=e,e)),he}function de(e){be=e,he=Promise.resolve(e)}const gs=`/sw.js?v=${encodeURIComponent(vt)}`;function ys(){return navigator.serviceWorker.register(gs)}
2function Je(){return"serviceWorker"in navigator&&"PushManager"in window}function bs(){const e=navigator.userAgent,t=/iPad|iPhone|iPod/.test(e)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1,s="standalone"in navigator&&navigator.standalone||wt();return t&&!s}function $e(){return Y()?"native":mt()?"none":bs()?"ios_install":Je()?"web":"none"}function sr(){return Je()?Notification.permission:"unsupported"}async function vs(){if(!("serviceWorker"in navigator))return null;try{return await ys()}catch{return null}}function ms(e){const t="=".repeat((4-e.length%4)%4),s=(e+t).replace(/-/g,"+").replace(/_/g,"/"),r=atob(s),n=new Uint8Array(new ArrayBuffer(r.length));for(let o=0;o<r.length;o++)n[o]=r.charCodeAt(o);return n}async function rr(e){try{const t=await Notification.requestPermission();if(t!=="granted")return F.warn("push","permission denied",t),!1;await vs();const s=await navigator.serviceWorker.ready;if(!s?.active)return F.error("push","no active service worker after ready"),!1;const r=await Mt();if(!r.success||!r.data.public_key)return F.error("push","vapid key fetch failed",r),!1;const n=ms(r.data.public_key),o=await s.pushManager.getSubscription();o&&await o.unsubscribe();const a=await s.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:n});if(!a)return F.error("push","pushManager.subscribe() returned null"),!1;const p=a.toJSON(),u=await Fe({endpoint:p.endpoint,keys:p.keys});return u.success||F.error("push","backend subscribe failed",u),de(u.success),u.success}catch{return!1}}async function nr(e){const t=await navigator.serviceWorker?.ready;if(!t)return!1;const s=await t.pushManager.getSubscription();if(!s)return de(!1),!0;const r=s.toJSON();await s.unsubscribe();const n=await ze({endpoint:r.endpoint,keys:r.keys});return de(!1),n.success}async function ws(e){if($e()==="web")try{const r=(await(await navigator.serviceWorker.getRegistration())?.pushManager.getSubscription())?.toJSON();if(!r?.endpoint||!r.keys)return;await ze({endpoint:r.endpoint,keys:r.keys},e)}catch{}}async function _s(){if($e()!=="web")return!1;try{const e=await(await navigator.serviceWorker.ready).pushManager.getSubscription();if(!e)return!1;const t=await xt();if(!t.success||t.data.subscribed)return t.success;const s=e.toJSON();if(!s.endpoint||!s.keys)return!1;const r=await Fe({endpoint:s.endpoint,keys:s.keys});return F.warn("push","server lost the subscription, re-announced",r.success),r.success}catch{return!1}}const ir=Ge;function Ss(e){const t=i.useRef(!1);i.useEffect(()=>{!e||t.current||(t.current=!0,_s())},[e])}function Rs(e,t,s){const r=_t.list("chat",t);e.getQueryData(r)||e.setQueryData(r,{pages:[s],pageParams:[0]})}const Es=E.me(),ee=new Set;let ae=null;function ks(e,t){return ee.add(t),ae??=e.getQueryCache().subscribe(s=>{if(!(s.type!=="updated"&&s.type!=="added"&&s.type!=="removed")&&E.matchesMe(s.query.queryKey))for(const r of[...ee])r()}),()=>{ee.delete(t),!(ee.size>0)&&(ae?.(),ae=null)}}function Os(){const e=J();return i.useSyncExternalStore(i.useCallback(t=>ks(e,t),[e]),()=>e.getQueryData(Es),()=>{})}function Cs(){return Os()?.active_org_id??void 0}const Ts=[];function Is(e,t){const s=J(),r=i.useRef(null),n=Cs(),o=fe({queryKey:E.organizations(),queryFn:async()=>G(await Ke(),"organizations_failed"),enabled:t,staleTime:1/0,gcTime:30*6e4}),a=o.data?.items??Ts,p=o.data?.total??a.length,u=i.useMemo(()=>n?a.find(g=>g.id===n)??null:null,[a,n]),h=fe({queryKey:E.organization(n??""),queryFn:async()=>G(await Dt(n),"organization_failed"),enabled:t&&!!n&&!u&&!o.isLoading,staleTime:1/0,gcTime:30*6e4}),l=u??h.data??null,m=i.useCallback(async()=>{await Promise.all([s.invalidateQueries({queryKey:E.organizations()}),...n?[s.invalidateQueries({queryKey:E.organization(n)})]:[]])},[s,n]),c=i.useCallback(async g=>{r.current?.abort();const f=new AbortController;r.current=f;const b=St(),w=s.getQueryData(E.me())?.active_org_id??n;try{const v=await Ut(g,f.signal);if(f.signal.aborted||!v.success)return;w&&await s.cancelQueries({predicate:C=>Rt(C.queryKey,w)}),await Et(s,w,g)}finally{kt(b)}},[n,s]);return{organizations:a,organizationsTotal:p,activeOrg:l,refreshOrganizations:m,switchOrg:c}}const As=30*1e3,Ps=2147483647;function Ms(e,t){const s=i.useRef(null),r=i.useCallback(()=>{s.current&&(clearTimeout(s.current),s.current=null)},[]),n=i.useCallback(async u=>{const h=await xe();if(h.kind!=="token")return!Ne(u)&&h.kind==="session_dead"&&await t(),null;const l=z();return l?(e(l.tokens),l.tokens):null},[e,t]),o=i.useCallback(async(u,h)=>{const l=await n(u);l&&h(l)},[n]),a=i.useCallback(u=>{r();const h=u.expires_at-Date.now(),l=Math.floor(Math.random()*As),m=Math.max(h-je-l,0);m>Ps||(s.current=setTimeout(()=>{o(u.refresh_token,a)},m))},[r,o]),p=i.useCallback(async()=>{const u=z();u&&await o(u.tokens.refresh_token,a)},[a,o]);return{scheduleTokenRefresh:a,refreshSessionNow:p,clearRefreshTimeout:r}}function xs(e,t,s,r,n,o){i.useEffect(()=>{const a=p=>{const u=p.detail;if(!u?.access_token||u.access_token===e.current?.access_token)return;const h={access_token:u.access_token,refresh_token:u.refresh_token,expires_at:u.expires_at};t(h),n(h)};return window.addEventListener("auth:tokens_refreshed",a),()=>window.removeEventListener("auth:tokens_refreshed",a)},[e,t,n]),i.useEffect(()=>{const a=()=>
2{if(document.visibilityState!=="visible"||!e.current)return;e.current.expires_at-Date.now()<=je?o():n(e.current)};return document.addEventListener("visibilitychange",a),()=>document.removeEventListener("visibilitychange",a)},[e,o,n]),i.useEffect(()=>{const a=p=>{if(p.key===Pt){if(!p.newValue){ne(),s(()=>null),t(null),r("unauthenticated");return}try{const u=JSON.parse(p.newValue);if(u.tokens.access_token===e.current?.access_token)return;Qs(p.oldValue)!==u.user.id&&ne(),s(()=>u.user),t(u.tokens),r("authenticated"),n(u.tokens)}catch{}}};return window.addEventListener("storage",a),()=>window.removeEventListener("storage",a)},[e,t,s,r,n])}function Qs(e){return e?Kt(e)?.user?.id:void 0}const Ls=[3e3,8e3,2e4],Us=2500;function Ds(){const e=ns(),[t,s]=i.useState(e.user),[r,n]=i.useState(e.status),[o,a]=i.useState(e.status==="loading"),[p,u]=i.useState(!1),[h,l]=i.useState(e.status!=="loading"),[m,c]=i.useState("pending"),g=i.useRef(e.user),f=i.useRef(!1),b=i.useRef(async()=>{}),w=i.useRef(!1),v=i.useRef(e.tokens),C=Ve(),_=i.useCallback(y=>{v.current=y},[]);i.useEffect(()=>{g.current=t},[t]);const L=i.useCallback(async()=>{await b.current()},[]),{scheduleTokenRefresh:k,refreshSessionNow:B,clearRefreshTimeout:S}=Ms(_,L),d=J(),{data:T}=fe({queryKey:E.me(),queryFn:()=>Promise.reject(new Error("read-only cache reader")),enabled:!1}),P=T?.subscription??null,I=i.useCallback((y,R,Q)=>{s(y),_(R),Q&&"subscription"in Q&&(d.setQueryData(E.me(),x=>x&&{...x,subscription:Q.subscription??null}),c("ready")),n("authenticated"),Le(y,R),k(R),Qt()},[_,k,d]),M=i.useRef(!1),A=i.useCallback(async()=>{const y=v.current?.access_token;return y?(await d.invalidateQueries({queryKey:E.me()}),(await ye(d,y)).success&&v.current?.access_token?(c("ready"),!0):!1):!1},[d]),$=i.useCallback(async(y=!1)=>{if(!(y&&await A())){for(const R of Ls)if(await Ot(R),M.current||!v.current?.access_token||await A())return;c("error")}},[A]),{organizations:Xe,organizationsTotal:Ze,activeOrg:et,refreshOrganizations:tt,switchOrg:me}=Is(v,r==="authenticated");xs(v,_,s,n,k,B);const W=r==="authenticated";ds(W,t?.id??null),Ss(W),i.useEffect(()=>{h&&fs(d,os(W))},[W,h,d]),i.useEffect(()=>{if(f.current)return;f.current=!0;const y=()=>{a(!1),l(!0)},R=()=>{n("unauthenticated"),c("ready"),y()},Q=async U=>{const D=await rs(d,U);D.success?I(D.user,D.tokens,{subscription:D.subscription}):(n("unauthenticated"),c("ready"),te())},x=Lt();return(async()=>{if(re()){R();return}await Tt();const U=x?await x:null;if(U?.kind==="session_dead"){te(),R();return}const D=z();if(!D){R();return}const{user:q,tokens:N}=D;if(U?.kind==="issuer_unavailable"){s(q),_(N),n("authenticated"),k(N),$(),y();return}const V=U?.kind==="me"&&U.accessToken===N.access_token?U:null;V?.result.success&&(d.setQueryData(E.me(),V.result.data),V.history?.success&&Rs(d,Ue(d),V.history.data));const X=V?He(V.result,q.email):await Ye(d,N.access_token,q.email);if(!X.success){X.status===401?await Q(q.email):(s(q),_(N),n("authenticated"),k(N),$()),y();return}I(X.user,N,{subscription:X.subscription}),y()})(),()=>{M.current=!0,S()}},[k,S,d,$,_,I]);const j=i.useCallback(async()=>{if(w.current)return;w.current=!0;const y=v.current?.access_token,R=g.current?.id;a(!0),u(!0),S(),s(null),_(null),c("ready"),n("unauthenticated"),te(R),d.cancelQueries(),d.removeQueries(),y&&(Y()&&pe(async()=>{const{unregisterNativePush:K}=await import("./native-push-D-yUx6v1.js");return{unregisterNativePush:K}},__vite__mapDeps([0,1,2,3,4,5,6,7,8])).then(({unregisterNativePush:K})=>K(y)).catch(K=>F.error("native-push","unregistration failed",K)),ws(y),Ct(y));const Q=Qe(),x=()=>{u(!1),a(!1),w.current=!1};if(!re()&&!ke){Q.catch(()=>{}),window.location.href=zt.home,setTimeout(x,Us);return}try{await Q}finally{x()}},[S,C,d,_]);i.useEffect(()=>{b.current=j},[j]),i.useEffect(()=>{const y=()=>{if(re())return;const R=z();R&&Ne(R.tokens.refresh_token)||!R&&!v.current||j()};return window.addEventListener("auth:unauthorized",y),()=>window.removeEventListener("auth:unauthorized",y)},[j]);const ie=i.useCallback(async()=>{await A()},[A]),st=i.useCallback(async y=>{await me(y),await ie()},[me,ie]);return{user:t,setUser:s,authStatus:r,isAuthenticated:W,isInitialized:h,isLoading:o,setIsLoading:a,isLoggingOut:p,subscription:P,subscriptionStatus:m,tokensRef:v,commitSession:I,logout:j,refreshSubscription:ie,recoverSubscriptionInBackgroun
2d:$,organizations:Xe,organizationsTotal:Ze,activeOrg:et,refreshOrganizations:tt,switchOrg:st}}const ve=i.createContext(void 0);function ar({children:e}){const{user:t,setUser:s,authStatus:r,isAuthenticated:n,isInitialized:o,isLoading:a,setIsLoading:p,isLoggingOut:u,subscription:h,subscriptionStatus:l,tokensRef:m,commitSession:c,logout:g,refreshSubscription:f,recoverSubscriptionInBackground:b,organizations:w,organizationsTotal:v,activeOrg:C,refreshOrganizations:_,switchOrg:L}=Ds(),{sendOtp:k,verifyOtp:B,completeOAuthLogin:S,initSession:d,updateUser:T,getRefreshToken:P}=as({tokensRef:m,commitSession:c,setUser:s,setIsLoading:p,recoverSubscriptionInBackground:b}),I=t?.is_admin??!1,M=i.useMemo(()=>({user:t,authStatus:r,isAuthenticated:n,isInitialized:o,isLoading:a,isLoggingOut:u,isAdmin:I,subscription:h,subscriptionStatus:l,organizations:w,organizationsTotal:v,activeOrg:C,logout:g,sendOtp:k,verifyOtp:B,completeOAuthLogin:S,initSession:d,updateUser:T,getRefreshToken:P,refreshSubscription:f,switchOrg:L,refreshOrganizations:_}),[t,r,n,o,a,u,I,h,l,w,v,C,g,k,B,S,d,T,P,f,L,_]);return Ae.jsx(ve.Provider,{value:M,children:e})}function or(){return i.useContext(ve)?.authStatus??"unauthenticated"}function ur(){const e=i.useContext(ve);if(!e)throw new Error("useAuth must be used within an AuthProvider");return e}export{ve as A,Cs as B,fe as C,J as D,Yt as E,Xs as M,$s as Q,ar as a,Vt as b,Gt as c,is as d,tr as e,Xt as f,os as g,ls as h,ye as i,Te as j,$t as k,sr as l,ir as m,er as n,$e as o,Zs as p,rr as q,ys as r,es as s,ur as t,nr as u,or as v,ts as w,Os as x,Jt as y,jt as z};
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.