@bodhiapp/bodhi-js-react-core 0.0.36 → 0.0.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const U=require("react/jsx-runtime"),s=require("@bodhiapp/bodhi-js-core"),t=require("react"),I=require("@bodhiapp/setup-modal-types");function re(e){const c=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const S in e)if(S!=="default"){const b=Object.getOwnPropertyDescriptor(e,S);Object.defineProperty(c,S,b.get?b:{enumerable:!0,get:()=>e[S]})}}return c.default=e,Object.freeze(c)}const C=re(t);function ne({client:e,modalHtmlPath:c,hideSetup:S,onSetupReady:b,setupState:w,basePath:g="/",logLevel:h="warn"}){const T=w!=="ready",A=t.useMemo(()=>new s.Logger("SetupModalProcessor",h),[h]),p=t.useRef(null),u=t.useMemo(()=>new s.BodhiClientUserPrefsManager(s.createStoragePrefixWithBasePath(g,"bodhijs:")),[g]),f=t.useRef(null),O=t.useCallback(r=>r==="direct"?"lna":r==="extension"?"extension":null,[]),_=t.useCallback(r=>r.extension==="ready"?{status:"ready",version:"unknown",id:r.extensionId}:r.extension==="not-found"?{status:"not-installed",error:{message:"Extension not found",code:"ext-not-installed"}}:{status:"unreachable",error:{message:"Client not initialized",code:"ext-connection-failed"}},[]),k=t.useCallback(r=>{if(r.server.status==="pending-extension-ready")return{status:"pending-extension-ready",error:{message:"Extension not ready",code:"server-pending-ext-ready"}};const a=r.server;switch(a.status){case"ready":return{status:"ready",version:a.version||"unknown"};case"setup":return{status:"setup",version:a.version||"unknown",error:{message:a.error?.message||"Setup required",code:"server-in-setup-status"}};case"resource_admin":return{status:"resource_admin",version:a.version||"unknown",error:{message:a.error?.message||"Resource admin required",code:"server-in-admin-status"}};case"error":return{status:"error",error:{message:a.error?.message||"Unknown error",code:"server-unexpected-error"}};case"not-reachable":return{status:"unreachable",error:{message:a.error?.message||"Server not reachable",code:"server-conn-refused"}};default:return{status:"unreachable",error:{message:"Unknown server status",code:"server-unexpected-error"}}}},[]),E=t.useCallback(r=>{if(r.server.status==="not-connected")return{status:"pending-lna-ready"};const a=r.server;switch(a.status){case"ready":return{status:"ready",version:a.version||"unknown"};case"setup":return{status:"setup",version:a.version||"unknown"};case"resource_admin":return{status:"resource_admin",version:a.version||"unknown"};case"error":case"not-reachable":return{status:"error",error:{message:a.error?.message||"Connection error"}};default:return{status:"error",error:{message:"Unknown server status"}}}},[]),x=t.useCallback((r,a)=>{if(r.server.status!=="pending-extension-ready"){const l=r.server.status;if(l==="ready"||l==="setup"||l==="resource_admin")return!0}if(a.server.status!=="not-connected"){const l=a.server.status;if(l==="ready"||l==="setup"||l==="resource_admin")return!0}return!1},[]),M=t.useCallback((r,a,l)=>{if(a==="skipped")return{status:"skipped",serverUrl:l};if(r.server.status!=="not-connected"){const m=r.server;return m.status==="ready"||m.status==="setup"||m.status==="resource_admin"?{status:"granted",serverUrl:l}:{status:"unreachable",serverUrl:l,error:{message:m.error?.message||"Server unreachable",code:"lna-unreachable"}}}return a==="granted"?{status:"granted",serverUrl:l}:{status:"prompt",serverUrl:l}},[]),y=t.useCallback(async(r=!1)=>{const a=s.detectBrowser().type,l=s.detectOS().type;let m=await e.getExtensionState();(m.extension==="not-initialized"||r)&&(m=await e.testExtensionConnectivity());let v=await e.getDirectState();const L=u.getDirectStatus();L==="granted"&&(v.server.status==="not-connected"||r)&&(v=await e.testDirectConnectivity());const P=s.getServerUrl(v)||"http://localhost:1135",B=M(v,L,P);return e.getConnectionMode()===null&&(s.isDirectServerReady(v)?await e.setConnectionMode("direct"):s.isExtensionServerReady(m)&&await e.setConnectionMode("extension")),u.isServerInstallConfirmed()||x(m,v)&&u.setServerInstallConfirmed(!0),{extension:_(m),server:k(m),lna:B,lnaServer:E(v),env:{browser:a,os:l},browsers:s.BROWSER_CONFIGS,os:s.OS_CONFIGS,userConfirmations:{serverInstall:u.isServerInstallConfirmed()},selectedConnection:O(e.getConnectionMode())}},[e,u,_,k,E,O,M,x]),n=t.useCallback(()=>{if(!f.current)throw new Error("Cannot get state: currentStateRef is null");return{...f.current,userConfirmations:{serverInstall:u.isServerInstallConfirmed()},selectedConnection:O(e.getConnectionMode())}},[u,e,O]),i=t.useMemo(()=>({[I.MSG.MODAL_READY]:async()=>(A.info("MODAL_READY: returning current state or default"),f.current?{setupState:n()}:{setupState:I.DEFAULT_SETUP_STATE}),[I.MSG.MODAL_REFRESH]:async()=>{A.info("MODAL_REFRESH: refreshing state");const r=await y(!0);f.current=r;const a=n();return A.info(`MODAL_REFRESH: state refreshed
2
- `,JSON.stringify(a,null,2)),p.current?.updateState(n()),{setupState:a}},[I.MSG.MODAL_LNA_CONNECT]:async r=>{const a=r.payload.serverUrl;console.log("[SetupModalProcessor] LNA connect:",a);const l=await e.testDirectConnectivity(a);if(l.server.status!=="not-connected"){const v=l.server.status;if(v==="ready"||v==="setup"||v==="resource_admin"){u.setDirectStatus("granted"),e.getConnectionMode()===null&&await e.setConnectionMode("direct");const L=await y();return f.current=L,p.current?.updateState(n()),{success:!0}}}const m=await y();return f.current=m,p.current?.updateState(n()),{success:!1}},[I.MSG.MODAL_LNA_SKIP]:async()=>{u.setDirectStatus("skipped");const r=await y();return f.current=r,p.current?.updateState(n()),{success:!0}},[I.MSG.MODAL_CLOSE]:()=>{S()},[I.MSG.MODAL_COMPLETE]:()=>{S()},[I.MSG.MODAL_CONFIRM_SERVER_INSTALL]:r=>(u.setServerInstallConfirmed(r.payload.confirmed),p.current?.updateState(n()),{success:!0}),[I.MSG.MODAL_SELECT_CONNECTION]:async r=>{const l=r.payload.connection==="lna"?"direct":"extension";return await e.setConnectionMode(l),p.current?.updateState(n()),{success:!0}}}),[A,e,u,y,n,E,S]);return t.useEffect(()=>(p.current=new s.OnboardingModal({modalHtmlPath:c,handlers:i}),()=>{p.current?.destroy(),p.current=null}),[c,i]),t.useEffect(()=>{T&&p.current?(p.current.showLoading(),y(!0).then(r=>{f.current=r,p.current?.updateState(r),b?.()}).catch(r=>{console.error("[SetupModalProcessor] buildSetupState failed:",r)})):!T&&p.current&&p.current.destroy()},[T,y,b]),null}const se="http://localhost:1135",j={MODAL_READY:"modal:ready",MODAL_PROBE:"modal:probe",MODAL_COMPLETE:"modal:complete",MODAL_CLOSE:"modal:close"},ae=130,ce=143;function oe(e=navigator.userAgent){const c=e.toLowerCase(),S=c.match(/edg\/(\d+)/);if(S){const h=parseInt(S[1],10);return{name:"edge",version:h,supported:h>=ce}}const b=c.match(/chrome\/(\d+)/);if(b&&!c.includes("edg/")){const h=parseInt(b[1],10);return{name:"chrome",version:h,supported:h>=ae}}const w=c.match(/firefox\/(\d+)/);if(w)return{name:"firefox",version:parseInt(w[1],10),supported:!1};const g=c.match(/version\/(\d+).*safari/);return g&&!c.includes("chrome/")?{name:"safari",version:parseInt(g[1],10),supported:!1}:{name:"unknown",version:0,supported:!1}}function ie({client:e,modalHtmlPath:c,hideSetup:S,onSetupReady:b,setupState:w,basePath:g="/",logLevel:h="warn",autoProbe:T=!0}){const A=w!=="ready",p=t.useMemo(()=>new s.Logger("SetupModalV2Processor",h),[h]),u=t.useRef(null),f=t.useRef(null),O=t.useMemo(()=>new s.BodhiClientUserPrefsManager(s.createStoragePrefixWithBasePath(g,"bodhijs:")),[g]),_=t.useMemo(()=>`${s.createStoragePrefixWithBasePath(g,"bodhijs:")}setup-v2.connection`,[g]),k=t.useCallback(()=>{try{const n=localStorage.getItem(_);if(!n)return null;const i=JSON.parse(n);return typeof i?.serverUrl=="string"?i:null}catch{return null}},[_]),E=t.useCallback(n=>{try{localStorage.setItem(_,JSON.stringify({serverUrl:n,lastProbedAt:Date.now()}))}catch{}},[_]),x=t.useCallback(async n=>{const i=oe(),r=await e.testDirectConnectivity(n),a=r.server.status;return a==="ready"?(E(n),O.setDirectStatus("granted"),e.getConnectionMode()===null&&await e.setConnectionMode("direct"),{serverUrl:n,browser:i,probeStatus:"connected",serverStatus:"ready"}):a==="setup"||a==="resource_admin"?{serverUrl:n,browser:i,probeStatus:"not-ready",serverStatus:a}:a==="error"?{serverUrl:n,browser:i,probeStatus:"error",serverStatus:"error",error:r.server.error?{code:"server-error",message:r.server.error.message}:void 0}:{serverUrl:n,browser:i,probeStatus:"network-error",serverStatus:"unreachable",error:r.server.error?{code:"network-error",message:r.server.error.message}:void 0}},[e,O,E]),M=t.useCallback(async()=>{const i=k()?.serverUrl??se;return x(i)},[x,k]),y=t.useMemo(()=>({[j.MODAL_READY]:async()=>{if(f.current)return{setupState:f.current};const n=await M();return f.current=n,{setupState:n}},[j.MODAL_PROBE]:async n=>{const i=await x(n.payload.serverUrl);return f.current=i,u.current?.updateState(i),{setupState:i}},[j.MODAL_COMPLETE]:()=>{S()},[j.MODAL_CLOSE]:()=>{S()}}),[M,x,S]);return t.useEffect(()=>(u.current=new s.OnboardingModalV2({modalHtmlPath:c,handlers:y}),()=>{u.current?.destroy(),u.current=null}),[c,y]),t.useEffect(()=>{T&&M().then(n=>{f.current=n,p.info("Auto-probe complete:",n.probeStatus)}).catch(n=>{p.error("Auto-probe failed:",n)})},[T,M,p]),t.useEffect(()=>{let n=!1;return A&&u.current?(u.current.showLoading(),f.current?(u.current.updateState(f.current),b?.()):M().then(i=>{n||(f.current=i,u.current?.updateState(i),b?.())}).catch(i=>{n||p.error("buildInitialState failed:",i)})):!A&&u.current&&u.current.destroy(),()=>{n=!0}},[A,M,b,p]),null}const H={status:"not-initialized",mode:null,extensionId:null,url:null,server:s.BACKEND_SERVER_NOT_CONNECTED,error:null},K={status:"initializing",mode:null,extensionId:null,url:null,server:s.BACKEND_SERVER_NOT_CONNECTED,error:null};function J(e){return e.status==="not-initialized"}function X(e){return e.status==="initializing"}function Y(e){return e.status!=="not-initialized"&&e.status!=="initializing"}function G(e){return e.status==="ready"}function Z(e){return G(e)&&e.server.status==="ready"}function $(e){return s.isExtensionState(e)?{status:e.extension==="not-initialized"?"initializing":e.extension==="not-found"?"extension-not-found":"ready",mode:"extension",extensionId:e.extensionId,url:null,server:e.server,error:e.server.error}:{status:e.url===null?"direct-not-connected":"ready",mode:"direct",extensionId:null,url:e.url,server:e.server,error:e.server.error}}const ue={isNotInitialized:J,isInitializing:X,isInitialized:Y,isReady:G,isOverallReady:Z},q=t.createContext(null);q.displayName="BodhiContext";function le({children:e,client:c,modalHtmlPath:S,handleCallback:b=!0,callbackPath:w,basePath:g="/",logLevel:h="warn",setupModal:T="setup-modal-v2",autoProbe:A=!0}){const p=g==="/"?"":g.replace(/\/$/,""),u=w??`${p}/callback`,f=t.useMemo(()=>new s.Logger("BodhiProvider",h),[h]),O=t.useRef(!1),_=t.useRef(!1),k=t.useRef(!1),[E,x]=t.useState(H),[M,y]=t.useState(s.INITIAL_AUTH_STATE),[n,i]=t.useState(!1),[r,a]=t.useState("ready"),l=t.useCallback((o,d)=>{_.current=!0,y({status:"error",user:null,accessToken:null,error:{code:o,message:d},refreshToken:null,expiresAt:null,isTokenRefresh:!1}),i(!1)},[]),m=t.useCallback(()=>{_.current=!1},[]);t.useEffect(()=>{const o=d=>{switch(d.type){case"client-state":x($(d.state));break;case"auth-state":_.current||(y(d.state),i(!1));break}};return c.setStateCallback(o),()=>{c.setStateCallback(s.NOOP_STATE_CALLBACK)}},[c]);const v=t.useCallback(async()=>{a("loading")},[]),L=t.useCallback(()=>{a("ready")},[]),V=t.useCallback(()=>{a("loaded")},[]),P=t.useCallback(async o=>{x(K);try{await c.init(o||{})}catch(d){f.error("Init failed:",d)}},[c,f]);t.useEffect(()=>{if(k.current)return;k.current=!0,(async()=>{if(await P(),!b)return;const d=new URL(window.location.href);if(d.pathname!==u||O.current||!s.isWebUIClient(c))return;if(d.searchParams.get("bodhi_flow")==="access_request"){const R=d.searchParams.get("id");if(!R){f.warn("Access request callback marker present but no id parameter"),window.history.replaceState({},"",g);return}O.current=!0,i(!0);try{await c.handleAccessRequestCallback(R)}catch(D){f.error("Access request callback failed:",D);const te=D instanceof s.BodhiError?D:null;l(te?.code??"access_request_callback_failed",D instanceof Error?D.message:"Access request callback failed"),window.history.replaceState({},"",g)}return}const N=d.searchParams.get("code"),W=d.searchParams.get("state");if(!(!N||!W)){O.current=!0,i(!0);try{await c.handleOAuthCallback(N,W),window.history.replaceState({},"",g)}catch(R){f.error("OAuth callback failed:",R);const D=R instanceof s.BodhiError?R:null;l(D?.code??"oauth_callback_failed",R instanceof Error?R.message:"OAuth callback failed"),window.history.replaceState({},"",g)}}})()},[P,c,b,u,g]);const B=t.useCallback(async o=>{m(),i(!0);try{const d=o?{...o.userRole&&{userRole:o.userRole},...o.requested&&{requested:o.requested},...o.flowType&&{flowType:o.flowType},...o.redirectUrl&&{redirectUrl:o.redirectUrl},...o.onProgress&&{onProgress:o.onProgress},...o.pollIntervalMs&&{pollIntervalMs:o.pollIntervalMs},...o.pollTimeoutMs&&{pollTimeoutMs:o.pollTimeoutMs}}:void 0,z=d&&Object.keys(d).length>0?d:void 0;await c.login(z)}catch(d){const z=d instanceof s.BodhiError?d:null,N={status:"error",user:null,accessToken:null,error:{message:d instanceof Error?d.message:"Login failed",code:z?.code??"login_failed"},refreshToken:null,expiresAt:null,isTokenRefresh:!1};return y(N),i(!1),N}},[c,m]),F=t.useCallback(async()=>{m();try{await c.logout()}catch(o){l("logout_failed",o instanceof Error?o.message:"Logout failed")}},[c,l,m]),Q=t.useMemo(()=>{const o=E.status==="ready",d=E.server.status==="ready";return{client:c,clientState:E,auth:M,isAuthLoading:n,login:B,logout:F,showSetup:v,hideSetup:L,setupState:r,isAuthenticated:M.status==="authenticated",canLogin:o&&!n,isReady:o,isServerReady:d,isOverallReady:o&&d,isInitializing:E.status==="initializing",isExtension:E.mode==="extension",isDirect:E.mode==="direct"}},[c,E,M,n,r,B,F,v,L]),ee=T==="setup-modal"?ne:ie;return U.jsxs(q.Provider,{value:Q,children:[U.jsx(ee,{client:c,modalHtmlPath:S,hideSetup:L,onSetupReady:V,setupState:r,basePath:g,logLevel:h,autoProbe:A}),e]})}function de(){const e=t.useContext(q);if(!e)throw new Error("useBodhi must be used within BodhiProvider");return e}const fe=e=>C.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 479.995 479.995",width:"480px",height:"480px",...e},C.createElement("path",{fill:"#ffa4b8",d:"M239.998,374.56l-0.01-0.01c0-0.01,0.01-0.01,0.01-0.02c-4.64-8.78-65.7-144.8-212.22-85.2 c-14.36,5.85-19.78,23.45-11.19,36.36c11.11,16.69,22.86,30.01,34.91,40.53c-27.85,7.89-45.6,33.8-43.3,61.55 c0.96,11.6,13.29,18.52,23.71,13.35c33.99-16.84,60.03-2.51,80.35,2.14c56.68,12.99,113.71,4.53,125.52-46.29 c0.52-2.22,0.95-4.51,1.28-6.89c0.01-0.04,0.01-0.08,0.02-0.12c0.066-0.492,0.126-0.978,0.181-1.458 c0.455-3.631,0.712-7.438,0.739-11.452c-0.02-1.44-0.02-2.01,0-2.25v-0.09c0-0.02,0-0.04,0.01-0.05c0-0.02,0.01-0.03,0.02-0.06 c0-0.01,0.01-0.01,0.01-0.02C240.018,374.569,240.008,374.56,239.998,374.56z"}),C.createElement("path",{fill:"#ffa4b8",d:"M471.798,427.769c-0.96,11.6-13.29,18.52-23.71,13.35c-33.99-16.84-60.03-2.51-80.35,2.14 c-63.41,14.53-127.25,2.22-127.74-66.21c0.033-2.642-0.044-2.302,0.04-2.47c-0.02-0.01-0.03-0.02-0.04-0.02l0.01-0.01 c0-0.01-0.01-0.01-0.01-0.02c4.64-8.78,65.7-144.8,212.22-85.2c14.36,5.85,19.78,23.45,11.19,36.36 c-11.11,16.69-22.86,30.01-34.91,40.53C456.348,374.109,474.098,400.019,471.798,427.769z"}),C.createElement("path",{fill:"#befa91",d:"M428.498,366.219c27.85,7.89,45.6,33.8,43.3,61.55c-0.96,11.6-13.29,18.52-23.71,13.35 c-33.99-16.84-60.03-2.51-80.35,2.14c-63.41,14.53-127.928,2.222-127.74-66.21c0.007-2.683-0.02-2.351,0.04-2.47 C248.598,379.129,345.858,438.329,428.498,366.219z"}),C.createElement("path",{fill:"#befa91",d:"M51.498,366.219c82.76,72.22,180.18,12.74,188.5,8.34c0.01,0,0.02,0.01,0.04,0.02 c-0.058,0.116-0.047-0.169-0.04,2.47c0.188,68.432-64.33,80.74-127.74,66.21c-20.32-4.65-46.36-18.98-80.35-2.14 c-10.42,5.17-22.75-1.75-23.71-13.35C5.898,400.019,23.648,374.109,51.498,366.219z"}),C.createElement("path",{fill:"#ffbfcb",d:"M235.228,365.299c-32.29-36.09-89.98-73-179.74-36.49c-1.979,0.805-3.787,1.834-5.413,3.042 c-10.569,7.856-25.473,5.765-32.82-5.164c-0.223-0.331-0.445-0.664-0.667-0.997c-8.59-12.91-3.17-30.51,11.19-36.36 C155.168,237.509,217.948,333.56,235.228,365.299z"}),C.createElement("path",{fill:"#ffa4b8",d:"M239.998,374.549c-12.85-2.2-214.54-23.33-193.03-240.71c1.49-14.99,15.86-25.15,30.48-21.55 c108.49,26.72,149.07,91.39,162.55,149.92C252.768,317.699,241.178,367.679,239.998,374.549z"}),C.createElement("path",{fill:"#ffbfcb",d:"M193.698,174.638c11.866,12.406-3.013,31.792-18.056,23.52 c-21.875-12.028-50.044-10.573-70.207,3.701c-24.832,17.579-59.398-0.365-60.013-30.784c-0.237-11.724,0.248-24.123,1.545-37.237 c1.49-14.99,15.86-25.15,30.48-21.55C131.23,125.537,168.324,148.11,193.698,174.638z"}),C.createElement("path",{fill:"#ffa4b8",d:"M221.538,39.599c9.78-11.13,27.15-11.12,36.93,0.01c157.02,178.77-7.48,323.95-18.47,334.94 C229.988,364.549,63.948,218.989,221.538,39.599z"}),C.createElement("path",{fill:"#ffbfcb",d:"M261.523,43.131c9.452,11.033,8.166,27.623-2.74,37.221c-0.784,0.69-1.535,1.439-2.245,2.247 c-35.942,40.915-55.05,80.07-63.012,116.258c-5.176,23.523-39.936,19.717-39.551-4.366c0.741-46.282,18.411-98.941,67.563-154.892 c9.78-11.13,27.15-11.12,36.93,0.01C259.5,40.785,260.518,41.959,261.523,43.131z"}),C.createElement("path",{fill:"#ffa4b8",d:"M239.998,374.549c-1.18-6.87-12.77-56.85,0-112.34c13.48-58.53,54.06-123.2,162.55-149.92 c14.62-3.6,28.99,6.56,30.48,21.55C454.538,351.219,252.848,372.349,239.998,374.549z"}),C.createElement("path",{fill:"#ff8ca5",d:"M239.998,374.549c-3.115-0.536-17.362-2.183-36.835-7.483c-3.181-0.866-6.028-2.682-8.145-5.209 c-49.098-58.608-75.675-130.75-61.047-205.793c2.165-11.107,14.881-16.444,24.408-10.337c0.756,0.485,1.506,0.972,2.249,1.462 C126.798,274.139,232.088,366.649,239.998,374.549z"}),C.createElement("path",{fill:"#ff8ca5",d:"M281.608,365.729c-21.9,6.37-38.24,8.25-41.61,8.82c8.67-8.67,112.98-100.94,79.35-227.34v-0.01 c0.742-0.489,1.49-0.975,2.244-1.459c9.551-6.123,22.265-0.733,24.422,10.406C369.565,277.734,281.608,363.204,281.608,365.729z"}),C.createElement("path",{fill:"#ff8ca5",d:"M417.451,302.932c-32.211,44.193-80.706,72.823-134.571,87.345c-3.396,0.916-6.999,0.754-10.3-0.463 c-20.772-7.664-31.911-15.254-32.583-15.254c0.826-0.825,112.667-9.463,166.4-98.31C419.37,278.279,424.743,292.927,417.451,302.932 z"}),C.createElement("path",{fill:"#ff8ca5",d:"M62.565,302.932c32.211,44.193,80.705,72.823,134.571,87.345c3.396,0.916,6.999,0.754,10.3-0.463 c20.772-7.664,31.911-15.254,32.583-15.254c-0.828-0.828-112.665-9.458-166.4-98.31C60.646,278.279,55.273,292.927,62.565,302.932z"}),C.createElement("path",{fill:"#9ceb63",d:"M433.464,393.091c-52.749,39.415-118.979,42.09-182.861,13.657 c-4.441-1.977-7.606-6.011-8.633-10.763c-1.552-7.18-1.884-14.238-1.973-21.326c0.172-0.345,9.566,5.934,26.76,12.89 c36.31,14.71,102.75,30.15,161.74-21.33C440.977,369.752,443.403,385.664,433.464,393.091z"}),C.createElement("path",{fill:"#9ceb63",d:"M240.038,374.579c0,0.01-0.01,0.01-0.01,0.02s-0.01,0.03-0.01,0.05c0,0,0,0,0,0.01 c-0.01,0.03-0.01,0.06-0.02,0.1v0.04c-0.13,1.3,0.09,7.59-0.92,15.16c-0.01,0.04-0.01,0.08-0.02,0.12 c-0.26,1.91-0.59,3.91-1.03,5.92c-0.07,0.33-0.15,0.65-0.25,0.97c-1.23,4.33-4.28,7.95-8.41,9.79 c-63.06,28.05-129.47,26.21-182.79-13.63c-9.94-7.43-7.63-23.36,4.92-26.91c13.1,11.46,28.11,20.79,44.16,26.79 c19.78,7.48,34.99,8.98,53.83,8.68c34.33-0.55,60.1-11.03,90.51-27.13C240.008,374.56,240.018,374.569,240.038,374.579z"}),C.createElement("path",{d:"M443.143,363.426c9.579-9.648,18.604-20.804,26.926-33.305c11.399-17.132,4.201-40.447-14.837-48.202 c-12.321-5.012-24.515-8.844-36.391-11.454c17.945-34.197,27.974-78.94,22.188-137.413c-1.925-19.503-20.802-33.354-40.394-28.53 c-17.952,4.421-34.806,10.063-50.093,16.768c-4.046,1.775-5.888,6.494-4.113,10.54c1.774,4.046,6.493,5.887,10.54,4.113 c14.45-6.338,30.429-11.682,47.492-15.885c9.885-2.435,19.599,4.434,20.607,14.573c9.088,90.121-21.147,164.341-99.823,205.213 c-3.921,2.037-5.448,6.866-3.411,10.787c2.043,3.933,6.879,5.442,10.787,3.411c27.191-14.125,56.267-35.849,77.701-68.994 c12.564,2.375,25.617,6.296,38.878,11.69c9.68,3.943,13.334,15.824,7.549,24.518c-10.205,15.33-21.482,28.43-33.516,38.936 c-49.396,43.107-111.979,41.39-169.834,12.419c56.638-56.971,92.247-132.34,77.074-212.524 c-8.101-42.81-30.305-85.119-65.997-125.754c-12.964-14.759-36.003-14.748-48.946-0.016 c-28.645,32.607-48.657,66.371-59.602,100.512c-21.999-13.018-47.7-23.197-76.569-30.307c-19.338-4.763-38.383,8.699-40.354,28.53 C26.197,262.501,90.89,324.677,147.416,354.042c3.92,2.036,8.75,0.51,10.787-3.411c2.037-3.921,0.51-8.75-3.411-10.787 c-52.141-27.086-111.791-84.677-99.863-205.213c1.007-10.132,10.713-17.01,20.606-14.574c31.115,7.663,58.223,19.013,80.571,33.735 c4.863,3.204,10.891,0.586,12.257-4.539c9.392-35.245,29.306-70.362,59.188-104.378c6.581-7.492,18.316-7.487,24.904,0.014 c128.735,146.565,37.449,269.122-12.476,318.519c-30.274-29.828-76.759-87.727-78.002-162.831 c-0.073-4.417-3.698-7.933-8.131-7.867c-4.417,0.073-7.939,3.714-7.867,8.131c1.382,83.483,54.096,146.516,85.999,177.099 c-0.353,20.737-7.099,36.575-20.104,47.086c-20.129,16.267-55.786,20.072-97.831,10.438c-19.181-4.396-48.632-19.874-85.688-1.511 c-5.361,2.657-11.689-0.859-12.186-6.844c-1.888-22.74,12.042-43.926,33.548-51.893c13.4,11.096,27.797,19.551,43.11,25.275 c20.238,7.653,36.036,9.525,56.788,9.196c15.85-0.254,30.814-2.572,45.747-7.085c4.229-1.278,6.622-5.743,5.343-9.972 c-1.278-4.229-5.744-6.622-9.972-5.344c-13.494,4.078-27.027,6.173-41.373,6.403c-17.347,0.275-31.911-0.993-50.901-8.174 c-31.69-11.847-56.387-35.98-75.211-64.258c-5.791-8.704-2.122-20.58,7.548-24.52c4.092-1.667,6.058-6.335,4.391-10.427 c-1.667-4.092-6.334-6.058-10.427-4.391c-19.062,7.765-26.214,31.095-14.832,48.202c8.365,12.566,17.352,23.674,26.917,33.31 C12.89,375.664-2.037,401.187,0.226,428.434c1.427,17.192,19.743,27.533,35.235,19.857c30.84-15.283,54.311-1.971,75.01,2.771 c36.708,8.411,82.166,10.086,111.461-13.59c14.777-11.943,23.305-28.715,25.489-49.937 c61.607,30.736,128.694,32.482,182.835-12.326c21.516,7.959,35.456,29.153,33.567,51.902c-0.493,5.939-6.786,9.519-12.186,6.844 c-30.339-15.034-55.535-7.379-73.932-1.791c-31.306,9.51-74.736,14.144-102.884-2.498c-3.803-2.248-8.709-0.989-10.958,2.815 c-2.249,3.803-0.989,8.709,2.815,10.958c29.214,17.272,69.817,15.19,102.844,7.622c20.72-4.747,44.177-18.05,75.01-2.771 c15.523,7.691,33.811-2.693,35.235-19.856C482.032,401.183,467.102,375.655,443.143,363.426z"})),pe={sm:32,md:48,lg:64};function ge({size:e="md",variant:c="light",className:S="",style:b={}}){const w=pe[e],g={display:"inline-block",cursor:"pointer",transition:"all 250ms ease",borderRadius:"50%",...c==="dark"&&{backgroundColor:"rgba(255, 255, 255, 0.05)",padding:"8px"},...b};return U.jsx("a",{href:"https://getbodhi.app",target:"_blank",rel:"noopener noreferrer",title:"Powered by Bodhi","aria-label":"Powered by Bodhi - Visit getbodhi.app",className:S,style:g,onMouseEnter:h=>{h.currentTarget.style.transform="scale(1.1)",h.currentTarget.style.boxShadow="0 0 20px rgba(255, 164, 184, 0.6)"},onMouseLeave:h=>{h.currentTarget.style.transform="scale(1)",h.currentTarget.style.boxShadow="none"},children:U.jsx(fe,{width:w,height:w,style:{display:"block"}})})}const he="production";Object.defineProperty(exports,"BodhiApiError",{enumerable:!0,get:()=>s.BodhiApiError});Object.defineProperty(exports,"BodhiError",{enumerable:!0,get:()=>s.BodhiError});Object.defineProperty(exports,"InMemoryStorage",{enumerable:!0,get:()=>s.InMemoryStorage});Object.defineProperty(exports,"LoginOptionsBuilder",{enumerable:!0,get:()=>s.LoginOptionsBuilder});Object.defineProperty(exports,"createApiError",{enumerable:!0,get:()=>s.createApiError});Object.defineProperty(exports,"createOperationError",{enumerable:!0,get:()=>s.createOperationError});Object.defineProperty(exports,"isAuthError",{enumerable:!0,get:()=>s.isAuthError});Object.defineProperty(exports,"isAuthLoading",{enumerable:!0,get:()=>s.isAuthLoading});Object.defineProperty(exports,"isAuthenticated",{enumerable:!0,get:()=>s.isAuthenticated});Object.defineProperty(exports,"isClientReady",{enumerable:!0,get:()=>s.isClientReady});Object.defineProperty(exports,"isDirectState",{enumerable:!0,get:()=>s.isDirectState});Object.defineProperty(exports,"isExtensionState",{enumerable:!0,get:()=>s.isExtensionState});Object.defineProperty(exports,"isWebUIClient",{enumerable:!0,get:()=>s.isWebUIClient});Object.defineProperty(exports,"unwrapResponse",{enumerable:!0,get:()=>s.unwrapResponse});exports.BodhiBadge=ge;exports.BodhiProvider=le;exports.BodhiReactContext=q;exports.ClientCtxState=ue;exports.INITIALIZING_CLIENT_CONTEXT_STATE=K;exports.INITIAL_CLIENT_CONTEXT_STATE=H;exports.REACT_CORE_BUILD_MODE=he;exports.clientStateToContextState=$;exports.isClientCtxInitialized=Y;exports.isClientCtxInitializing=X;exports.isClientCtxNotInitialized=J;exports.isClientCtxReady=G;exports.isOverallReady=Z;exports.useBodhi=de;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const U=require("react/jsx-runtime"),s=require("@bodhiapp/bodhi-js-core"),t=require("react"),I=require("@bodhiapp/setup-modal-types");function re(e){const c=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const m in e)if(m!=="default"){const b=Object.getOwnPropertyDescriptor(e,m);Object.defineProperty(c,m,b.get?b:{enumerable:!0,get:()=>e[m]})}}return c.default=e,Object.freeze(c)}const C=re(t);function ne({client:e,modalHtmlPath:c,hideSetup:m,onSetupReady:b,setupState:w,basePath:g="/",logLevel:h="warn"}){const T=w!=="ready",A=t.useMemo(()=>new s.Logger("SetupModalProcessor",h),[h]),p=t.useRef(null),u=t.useMemo(()=>new s.BodhiClientUserPrefsManager(s.createStoragePrefixWithNamespace(g,"bodhijs:")),[g]),f=t.useRef(null),O=t.useCallback(r=>r==="direct"?"lna":r==="extension"?"extension":null,[]),_=t.useCallback(r=>r.extension==="ready"?{status:"ready",version:"unknown",id:r.extensionId}:r.extension==="not-found"?{status:"not-installed",error:{message:"Extension not found",code:"ext-not-installed"}}:{status:"unreachable",error:{message:"Client not initialized",code:"ext-connection-failed"}},[]),k=t.useCallback(r=>{if(r.server.status==="pending-extension-ready")return{status:"pending-extension-ready",error:{message:"Extension not ready",code:"server-pending-ext-ready"}};const a=r.server;switch(a.status){case"ready":return{status:"ready",version:a.version||"unknown"};case"setup":return{status:"setup",version:a.version||"unknown",error:{message:a.error?.message||"Setup required",code:"server-in-setup-status"}};case"resource_admin":return{status:"resource_admin",version:a.version||"unknown",error:{message:a.error?.message||"Resource admin required",code:"server-in-admin-status"}};case"error":return{status:"error",error:{message:a.error?.message||"Unknown error",code:"server-unexpected-error"}};case"not-reachable":return{status:"unreachable",error:{message:a.error?.message||"Server not reachable",code:"server-conn-refused"}};default:return{status:"unreachable",error:{message:"Unknown server status",code:"server-unexpected-error"}}}},[]),E=t.useCallback(r=>{if(r.server.status==="not-connected")return{status:"pending-lna-ready"};const a=r.server;switch(a.status){case"ready":return{status:"ready",version:a.version||"unknown"};case"setup":return{status:"setup",version:a.version||"unknown"};case"resource_admin":return{status:"resource_admin",version:a.version||"unknown"};case"error":case"not-reachable":return{status:"error",error:{message:a.error?.message||"Connection error"}};default:return{status:"error",error:{message:"Unknown server status"}}}},[]),x=t.useCallback((r,a)=>{if(r.server.status!=="pending-extension-ready"){const l=r.server.status;if(l==="ready"||l==="setup"||l==="resource_admin")return!0}if(a.server.status!=="not-connected"){const l=a.server.status;if(l==="ready"||l==="setup"||l==="resource_admin")return!0}return!1},[]),M=t.useCallback((r,a,l)=>{if(a==="skipped")return{status:"skipped",serverUrl:l};if(r.server.status!=="not-connected"){const S=r.server;return S.status==="ready"||S.status==="setup"||S.status==="resource_admin"?{status:"granted",serverUrl:l}:{status:"unreachable",serverUrl:l,error:{message:S.error?.message||"Server unreachable",code:"lna-unreachable"}}}return a==="granted"?{status:"granted",serverUrl:l}:{status:"prompt",serverUrl:l}},[]),y=t.useCallback(async(r=!1)=>{const a=s.detectBrowser().type,l=s.detectOS().type;let S=await e.getExtensionState();(S.extension==="not-initialized"||r)&&(S=await e.testExtensionConnectivity());let v=await e.getDirectState();const L=u.getDirectStatus();L==="granted"&&(v.server.status==="not-connected"||r)&&(v=await e.testDirectConnectivity());const P=s.getServerUrl(v)||"http://localhost:1135",z=M(v,L,P);return e.getConnectionMode()===null&&(s.isDirectServerReady(v)?await e.setConnectionMode("direct"):s.isExtensionServerReady(S)&&await e.setConnectionMode("extension")),u.isServerInstallConfirmed()||x(S,v)&&u.setServerInstallConfirmed(!0),{extension:_(S),server:k(S),lna:z,lnaServer:E(v),env:{browser:a,os:l},browsers:s.BROWSER_CONFIGS,os:s.OS_CONFIGS,userConfirmations:{serverInstall:u.isServerInstallConfirmed()},selectedConnection:O(e.getConnectionMode())}},[e,u,_,k,E,O,M,x]),n=t.useCallback(()=>{if(!f.current)throw new Error("Cannot get state: currentStateRef is null");return{...f.current,userConfirmations:{serverInstall:u.isServerInstallConfirmed()},selectedConnection:O(e.getConnectionMode())}},[u,e,O]),i=t.useMemo(()=>({[I.MSG.MODAL_READY]:async()=>(A.info("MODAL_READY: returning current state or default"),f.current?{setupState:n()}:{setupState:I.DEFAULT_SETUP_STATE}),[I.MSG.MODAL_REFRESH]:async()=>{A.info("MODAL_REFRESH: refreshing state");const r=await y(!0);f.current=r;const a=n();return A.info(`MODAL_REFRESH: state refreshed
2
+ `,JSON.stringify(a,null,2)),p.current?.updateState(n()),{setupState:a}},[I.MSG.MODAL_LNA_CONNECT]:async r=>{const a=r.payload.serverUrl;console.log("[SetupModalProcessor] LNA connect:",a);const l=await e.testDirectConnectivity(a);if(l.server.status!=="not-connected"){const v=l.server.status;if(v==="ready"||v==="setup"||v==="resource_admin"){u.setDirectStatus("granted"),e.getConnectionMode()===null&&await e.setConnectionMode("direct");const L=await y();return f.current=L,p.current?.updateState(n()),{success:!0}}}const S=await y();return f.current=S,p.current?.updateState(n()),{success:!1}},[I.MSG.MODAL_LNA_SKIP]:async()=>{u.setDirectStatus("skipped");const r=await y();return f.current=r,p.current?.updateState(n()),{success:!0}},[I.MSG.MODAL_CLOSE]:()=>{m()},[I.MSG.MODAL_COMPLETE]:()=>{m()},[I.MSG.MODAL_CONFIRM_SERVER_INSTALL]:r=>(u.setServerInstallConfirmed(r.payload.confirmed),p.current?.updateState(n()),{success:!0}),[I.MSG.MODAL_SELECT_CONNECTION]:async r=>{const l=r.payload.connection==="lna"?"direct":"extension";return await e.setConnectionMode(l),p.current?.updateState(n()),{success:!0}}}),[A,e,u,y,n,E,m]);return t.useEffect(()=>(p.current=new s.OnboardingModal({modalHtmlPath:c,handlers:i}),()=>{p.current?.destroy(),p.current=null}),[c,i]),t.useEffect(()=>{T&&p.current?(p.current.showLoading(),y(!0).then(r=>{f.current=r,p.current?.updateState(r),b?.()}).catch(r=>{console.error("[SetupModalProcessor] buildSetupState failed:",r)})):!T&&p.current&&p.current.destroy()},[T,y,b]),null}const se="http://localhost:1135",j={MODAL_READY:"modal:ready",MODAL_PROBE:"modal:probe",MODAL_COMPLETE:"modal:complete",MODAL_CLOSE:"modal:close"},ae=130,ce=143;function oe(e=navigator.userAgent){const c=e.toLowerCase(),m=c.match(/edg\/(\d+)/);if(m){const h=parseInt(m[1],10);return{name:"edge",version:h,supported:h>=ce}}const b=c.match(/chrome\/(\d+)/);if(b&&!c.includes("edg/")){const h=parseInt(b[1],10);return{name:"chrome",version:h,supported:h>=ae}}const w=c.match(/firefox\/(\d+)/);if(w)return{name:"firefox",version:parseInt(w[1],10),supported:!1};const g=c.match(/version\/(\d+).*safari/);return g&&!c.includes("chrome/")?{name:"safari",version:parseInt(g[1],10),supported:!1}:{name:"unknown",version:0,supported:!1}}function ie({client:e,modalHtmlPath:c,hideSetup:m,onSetupReady:b,setupState:w,basePath:g="/",logLevel:h="warn",autoProbe:T=!0}){const A=w!=="ready",p=t.useMemo(()=>new s.Logger("SetupModalV2Processor",h),[h]),u=t.useRef(null),f=t.useRef(null),O=t.useMemo(()=>new s.BodhiClientUserPrefsManager(s.createStoragePrefixWithNamespace(g,"bodhijs:")),[g]),_=t.useMemo(()=>`${s.createStoragePrefixWithNamespace(g,"bodhijs:")}setup-v2.connection`,[g]),k=t.useCallback(()=>{try{const n=localStorage.getItem(_);if(!n)return null;const i=JSON.parse(n);return typeof i?.serverUrl=="string"?i:null}catch{return null}},[_]),E=t.useCallback(n=>{try{localStorage.setItem(_,JSON.stringify({serverUrl:n,lastProbedAt:Date.now()}))}catch{}},[_]),x=t.useCallback(async n=>{const i=oe(),r=await e.testDirectConnectivity(n),a=r.server.status;return a==="ready"?(E(n),O.setDirectStatus("granted"),e.getConnectionMode()===null&&await e.setConnectionMode("direct"),{serverUrl:n,browser:i,probeStatus:"connected",serverStatus:"ready"}):a==="setup"||a==="resource_admin"?{serverUrl:n,browser:i,probeStatus:"not-ready",serverStatus:a}:a==="error"?{serverUrl:n,browser:i,probeStatus:"error",serverStatus:"error",error:r.server.error?{code:"server-error",message:r.server.error.message}:void 0}:{serverUrl:n,browser:i,probeStatus:"network-error",serverStatus:"unreachable",error:r.server.error?{code:"network-error",message:r.server.error.message}:void 0}},[e,O,E]),M=t.useCallback(async()=>{const i=k()?.serverUrl??se;return x(i)},[x,k]),y=t.useMemo(()=>({[j.MODAL_READY]:async()=>{if(f.current)return{setupState:f.current};const n=await M();return f.current=n,{setupState:n}},[j.MODAL_PROBE]:async n=>{const i=await x(n.payload.serverUrl);return f.current=i,u.current?.updateState(i),{setupState:i}},[j.MODAL_COMPLETE]:()=>{m()},[j.MODAL_CLOSE]:()=>{m()}}),[M,x,m]);return t.useEffect(()=>(u.current=new s.OnboardingModalV2({modalHtmlPath:c,handlers:y}),()=>{u.current?.destroy(),u.current=null}),[c,y]),t.useEffect(()=>{T&&M().then(n=>{f.current=n,p.info("Auto-probe complete:",n.probeStatus)}).catch(n=>{p.error("Auto-probe failed:",n)})},[T,M,p]),t.useEffect(()=>{let n=!1;return A&&u.current?(u.current.showLoading(),f.current?(u.current.updateState(f.current),b?.()):M().then(i=>{n||(f.current=i,u.current?.updateState(i),b?.())}).catch(i=>{n||p.error("buildInitialState failed:",i)})):!A&&u.current&&u.current.destroy(),()=>{n=!0}},[A,M,b,p]),null}const H={status:"not-initialized",mode:null,extensionId:null,url:null,server:s.BACKEND_SERVER_NOT_CONNECTED,error:null},K={status:"initializing",mode:null,extensionId:null,url:null,server:s.BACKEND_SERVER_NOT_CONNECTED,error:null};function J(e){return e.status==="not-initialized"}function X(e){return e.status==="initializing"}function Y(e){return e.status!=="not-initialized"&&e.status!=="initializing"}function G(e){return e.status==="ready"}function Z(e){return G(e)&&e.server.status==="ready"}function $(e){return s.isExtensionState(e)?{status:e.extension==="not-initialized"?"initializing":e.extension==="not-found"?"extension-not-found":"ready",mode:"extension",extensionId:e.extensionId,url:null,server:e.server,error:e.server.error}:{status:e.url===null||e.server.status==="not-reachable"||e.server.status==="not-connected"?"direct-not-connected":"ready",mode:"direct",extensionId:null,url:e.url,server:e.server,error:e.server.error}}const ue={isNotInitialized:J,isInitializing:X,isInitialized:Y,isReady:G,isOverallReady:Z},q=t.createContext(null);q.displayName="BodhiContext";function le({children:e,client:c,modalHtmlPath:m,handleCallback:b=!0,callbackPath:w,basePath:g="/",logLevel:h="warn",setupModal:T="setup-modal-v2",autoProbe:A=!0}){const p=g==="/"?"":g.replace(/\/$/,""),u=w??`${p}/callback`,f=t.useMemo(()=>new s.Logger("BodhiProvider",h),[h]),O=t.useRef(!1),_=t.useRef(!1),k=t.useRef(!1),[E,x]=t.useState(H),[M,y]=t.useState(s.INITIAL_AUTH_STATE),[n,i]=t.useState(!1),[r,a]=t.useState("ready"),l=t.useCallback((o,d)=>{_.current=!0,y({status:"error",user:null,accessToken:null,error:{code:o,message:d},refreshToken:null,expiresAt:null,isTokenRefresh:!1}),i(!1)},[]),S=t.useCallback(()=>{_.current=!1},[]);t.useEffect(()=>{const o=d=>{switch(d.type){case"client-state":x($(d.state));break;case"auth-state":_.current||(y(d.state),i(!1));break}};return c.setStateCallback(o),()=>{c.setStateCallback(s.NOOP_STATE_CALLBACK)}},[c]);const v=t.useCallback(async()=>{a("loading")},[]),L=t.useCallback(()=>{a("ready")},[]),V=t.useCallback(()=>{a("loaded")},[]),P=t.useCallback(async o=>{x(K);try{await c.init(o||{})}catch(d){f.error("Init failed:",d)}},[c,f]);t.useEffect(()=>{if(k.current)return;k.current=!0,(async()=>{if(await P(),!b)return;const d=new URL(window.location.href);if(d.pathname!==u||O.current||!s.isWebUIClient(c))return;if(d.searchParams.get("bodhi_flow")==="access_request"){const R=d.searchParams.get("id");if(!R){f.warn("Access request callback marker present but no id parameter"),window.history.replaceState({},"",g);return}O.current=!0,i(!0);try{await c.handleAccessRequestCallback(R)}catch(D){f.error("Access request callback failed:",D);const te=D instanceof s.BodhiError?D:null;l(te?.code??"access_request_callback_failed",D instanceof Error?D.message:"Access request callback failed"),window.history.replaceState({},"",g)}return}const N=d.searchParams.get("code"),W=d.searchParams.get("state");if(!(!N||!W)){O.current=!0,i(!0);try{await c.handleOAuthCallback(N,W),window.history.replaceState({},"",g)}catch(R){f.error("OAuth callback failed:",R);const D=R instanceof s.BodhiError?R:null;l(D?.code??"oauth_callback_failed",R instanceof Error?R.message:"OAuth callback failed"),window.history.replaceState({},"",g)}}})()},[P,c,b,u,g]);const z=t.useCallback(async o=>{S(),i(!0);try{const d=o?{...o.userRole&&{userRole:o.userRole},...o.requested&&{requested:o.requested},...o.flowType&&{flowType:o.flowType},...o.redirectUrl&&{redirectUrl:o.redirectUrl},...o.onProgress&&{onProgress:o.onProgress},...o.pollIntervalMs&&{pollIntervalMs:o.pollIntervalMs},...o.pollTimeoutMs&&{pollTimeoutMs:o.pollTimeoutMs}}:void 0,B=d&&Object.keys(d).length>0?d:void 0;await c.login(B)}catch(d){const B=d instanceof s.BodhiError?d:null,N={status:"error",user:null,accessToken:null,error:{message:d instanceof Error?d.message:"Login failed",code:B?.code??"login_failed"},refreshToken:null,expiresAt:null,isTokenRefresh:!1};return y(N),i(!1),N}},[c,S]),F=t.useCallback(async()=>{S();try{await c.logout()}catch(o){l("logout_failed",o instanceof Error?o.message:"Logout failed")}},[c,l,S]),Q=t.useMemo(()=>{const o=E.status==="ready",d=E.server.status==="ready";return{client:c,clientState:E,auth:M,isAuthLoading:n,login:z,logout:F,showSetup:v,hideSetup:L,setupState:r,isAuthenticated:M.status==="authenticated",canLogin:o&&!n,isReady:o,isServerReady:d,isOverallReady:o&&d,isInitializing:E.status==="initializing",isExtension:E.mode==="extension",isDirect:E.mode==="direct"}},[c,E,M,n,r,z,F,v,L]),ee=T==="setup-modal"?ne:ie;return U.jsxs(q.Provider,{value:Q,children:[U.jsx(ee,{client:c,modalHtmlPath:m,hideSetup:L,onSetupReady:V,setupState:r,basePath:g,logLevel:h,autoProbe:A}),e]})}function de(){const e=t.useContext(q);if(!e)throw new Error("useBodhi must be used within BodhiProvider");return e}const fe=e=>C.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 479.995 479.995",width:"480px",height:"480px",...e},C.createElement("path",{fill:"#ffa4b8",d:"M239.998,374.56l-0.01-0.01c0-0.01,0.01-0.01,0.01-0.02c-4.64-8.78-65.7-144.8-212.22-85.2 c-14.36,5.85-19.78,23.45-11.19,36.36c11.11,16.69,22.86,30.01,34.91,40.53c-27.85,7.89-45.6,33.8-43.3,61.55 c0.96,11.6,13.29,18.52,23.71,13.35c33.99-16.84,60.03-2.51,80.35,2.14c56.68,12.99,113.71,4.53,125.52-46.29 c0.52-2.22,0.95-4.51,1.28-6.89c0.01-0.04,0.01-0.08,0.02-0.12c0.066-0.492,0.126-0.978,0.181-1.458 c0.455-3.631,0.712-7.438,0.739-11.452c-0.02-1.44-0.02-2.01,0-2.25v-0.09c0-0.02,0-0.04,0.01-0.05c0-0.02,0.01-0.03,0.02-0.06 c0-0.01,0.01-0.01,0.01-0.02C240.018,374.569,240.008,374.56,239.998,374.56z"}),C.createElement("path",{fill:"#ffa4b8",d:"M471.798,427.769c-0.96,11.6-13.29,18.52-23.71,13.35c-33.99-16.84-60.03-2.51-80.35,2.14 c-63.41,14.53-127.25,2.22-127.74-66.21c0.033-2.642-0.044-2.302,0.04-2.47c-0.02-0.01-0.03-0.02-0.04-0.02l0.01-0.01 c0-0.01-0.01-0.01-0.01-0.02c4.64-8.78,65.7-144.8,212.22-85.2c14.36,5.85,19.78,23.45,11.19,36.36 c-11.11,16.69-22.86,30.01-34.91,40.53C456.348,374.109,474.098,400.019,471.798,427.769z"}),C.createElement("path",{fill:"#befa91",d:"M428.498,366.219c27.85,7.89,45.6,33.8,43.3,61.55c-0.96,11.6-13.29,18.52-23.71,13.35 c-33.99-16.84-60.03-2.51-80.35,2.14c-63.41,14.53-127.928,2.222-127.74-66.21c0.007-2.683-0.02-2.351,0.04-2.47 C248.598,379.129,345.858,438.329,428.498,366.219z"}),C.createElement("path",{fill:"#befa91",d:"M51.498,366.219c82.76,72.22,180.18,12.74,188.5,8.34c0.01,0,0.02,0.01,0.04,0.02 c-0.058,0.116-0.047-0.169-0.04,2.47c0.188,68.432-64.33,80.74-127.74,66.21c-20.32-4.65-46.36-18.98-80.35-2.14 c-10.42,5.17-22.75-1.75-23.71-13.35C5.898,400.019,23.648,374.109,51.498,366.219z"}),C.createElement("path",{fill:"#ffbfcb",d:"M235.228,365.299c-32.29-36.09-89.98-73-179.74-36.49c-1.979,0.805-3.787,1.834-5.413,3.042 c-10.569,7.856-25.473,5.765-32.82-5.164c-0.223-0.331-0.445-0.664-0.667-0.997c-8.59-12.91-3.17-30.51,11.19-36.36 C155.168,237.509,217.948,333.56,235.228,365.299z"}),C.createElement("path",{fill:"#ffa4b8",d:"M239.998,374.549c-12.85-2.2-214.54-23.33-193.03-240.71c1.49-14.99,15.86-25.15,30.48-21.55 c108.49,26.72,149.07,91.39,162.55,149.92C252.768,317.699,241.178,367.679,239.998,374.549z"}),C.createElement("path",{fill:"#ffbfcb",d:"M193.698,174.638c11.866,12.406-3.013,31.792-18.056,23.52 c-21.875-12.028-50.044-10.573-70.207,3.701c-24.832,17.579-59.398-0.365-60.013-30.784c-0.237-11.724,0.248-24.123,1.545-37.237 c1.49-14.99,15.86-25.15,30.48-21.55C131.23,125.537,168.324,148.11,193.698,174.638z"}),C.createElement("path",{fill:"#ffa4b8",d:"M221.538,39.599c9.78-11.13,27.15-11.12,36.93,0.01c157.02,178.77-7.48,323.95-18.47,334.94 C229.988,364.549,63.948,218.989,221.538,39.599z"}),C.createElement("path",{fill:"#ffbfcb",d:"M261.523,43.131c9.452,11.033,8.166,27.623-2.74,37.221c-0.784,0.69-1.535,1.439-2.245,2.247 c-35.942,40.915-55.05,80.07-63.012,116.258c-5.176,23.523-39.936,19.717-39.551-4.366c0.741-46.282,18.411-98.941,67.563-154.892 c9.78-11.13,27.15-11.12,36.93,0.01C259.5,40.785,260.518,41.959,261.523,43.131z"}),C.createElement("path",{fill:"#ffa4b8",d:"M239.998,374.549c-1.18-6.87-12.77-56.85,0-112.34c13.48-58.53,54.06-123.2,162.55-149.92 c14.62-3.6,28.99,6.56,30.48,21.55C454.538,351.219,252.848,372.349,239.998,374.549z"}),C.createElement("path",{fill:"#ff8ca5",d:"M239.998,374.549c-3.115-0.536-17.362-2.183-36.835-7.483c-3.181-0.866-6.028-2.682-8.145-5.209 c-49.098-58.608-75.675-130.75-61.047-205.793c2.165-11.107,14.881-16.444,24.408-10.337c0.756,0.485,1.506,0.972,2.249,1.462 C126.798,274.139,232.088,366.649,239.998,374.549z"}),C.createElement("path",{fill:"#ff8ca5",d:"M281.608,365.729c-21.9,6.37-38.24,8.25-41.61,8.82c8.67-8.67,112.98-100.94,79.35-227.34v-0.01 c0.742-0.489,1.49-0.975,2.244-1.459c9.551-6.123,22.265-0.733,24.422,10.406C369.565,277.734,281.608,363.204,281.608,365.729z"}),C.createElement("path",{fill:"#ff8ca5",d:"M417.451,302.932c-32.211,44.193-80.706,72.823-134.571,87.345c-3.396,0.916-6.999,0.754-10.3-0.463 c-20.772-7.664-31.911-15.254-32.583-15.254c0.826-0.825,112.667-9.463,166.4-98.31C419.37,278.279,424.743,292.927,417.451,302.932 z"}),C.createElement("path",{fill:"#ff8ca5",d:"M62.565,302.932c32.211,44.193,80.705,72.823,134.571,87.345c3.396,0.916,6.999,0.754,10.3-0.463 c20.772-7.664,31.911-15.254,32.583-15.254c-0.828-0.828-112.665-9.458-166.4-98.31C60.646,278.279,55.273,292.927,62.565,302.932z"}),C.createElement("path",{fill:"#9ceb63",d:"M433.464,393.091c-52.749,39.415-118.979,42.09-182.861,13.657 c-4.441-1.977-7.606-6.011-8.633-10.763c-1.552-7.18-1.884-14.238-1.973-21.326c0.172-0.345,9.566,5.934,26.76,12.89 c36.31,14.71,102.75,30.15,161.74-21.33C440.977,369.752,443.403,385.664,433.464,393.091z"}),C.createElement("path",{fill:"#9ceb63",d:"M240.038,374.579c0,0.01-0.01,0.01-0.01,0.02s-0.01,0.03-0.01,0.05c0,0,0,0,0,0.01 c-0.01,0.03-0.01,0.06-0.02,0.1v0.04c-0.13,1.3,0.09,7.59-0.92,15.16c-0.01,0.04-0.01,0.08-0.02,0.12 c-0.26,1.91-0.59,3.91-1.03,5.92c-0.07,0.33-0.15,0.65-0.25,0.97c-1.23,4.33-4.28,7.95-8.41,9.79 c-63.06,28.05-129.47,26.21-182.79-13.63c-9.94-7.43-7.63-23.36,4.92-26.91c13.1,11.46,28.11,20.79,44.16,26.79 c19.78,7.48,34.99,8.98,53.83,8.68c34.33-0.55,60.1-11.03,90.51-27.13C240.008,374.56,240.018,374.569,240.038,374.579z"}),C.createElement("path",{d:"M443.143,363.426c9.579-9.648,18.604-20.804,26.926-33.305c11.399-17.132,4.201-40.447-14.837-48.202 c-12.321-5.012-24.515-8.844-36.391-11.454c17.945-34.197,27.974-78.94,22.188-137.413c-1.925-19.503-20.802-33.354-40.394-28.53 c-17.952,4.421-34.806,10.063-50.093,16.768c-4.046,1.775-5.888,6.494-4.113,10.54c1.774,4.046,6.493,5.887,10.54,4.113 c14.45-6.338,30.429-11.682,47.492-15.885c9.885-2.435,19.599,4.434,20.607,14.573c9.088,90.121-21.147,164.341-99.823,205.213 c-3.921,2.037-5.448,6.866-3.411,10.787c2.043,3.933,6.879,5.442,10.787,3.411c27.191-14.125,56.267-35.849,77.701-68.994 c12.564,2.375,25.617,6.296,38.878,11.69c9.68,3.943,13.334,15.824,7.549,24.518c-10.205,15.33-21.482,28.43-33.516,38.936 c-49.396,43.107-111.979,41.39-169.834,12.419c56.638-56.971,92.247-132.34,77.074-212.524 c-8.101-42.81-30.305-85.119-65.997-125.754c-12.964-14.759-36.003-14.748-48.946-0.016 c-28.645,32.607-48.657,66.371-59.602,100.512c-21.999-13.018-47.7-23.197-76.569-30.307c-19.338-4.763-38.383,8.699-40.354,28.53 C26.197,262.501,90.89,324.677,147.416,354.042c3.92,2.036,8.75,0.51,10.787-3.411c2.037-3.921,0.51-8.75-3.411-10.787 c-52.141-27.086-111.791-84.677-99.863-205.213c1.007-10.132,10.713-17.01,20.606-14.574c31.115,7.663,58.223,19.013,80.571,33.735 c4.863,3.204,10.891,0.586,12.257-4.539c9.392-35.245,29.306-70.362,59.188-104.378c6.581-7.492,18.316-7.487,24.904,0.014 c128.735,146.565,37.449,269.122-12.476,318.519c-30.274-29.828-76.759-87.727-78.002-162.831 c-0.073-4.417-3.698-7.933-8.131-7.867c-4.417,0.073-7.939,3.714-7.867,8.131c1.382,83.483,54.096,146.516,85.999,177.099 c-0.353,20.737-7.099,36.575-20.104,47.086c-20.129,16.267-55.786,20.072-97.831,10.438c-19.181-4.396-48.632-19.874-85.688-1.511 c-5.361,2.657-11.689-0.859-12.186-6.844c-1.888-22.74,12.042-43.926,33.548-51.893c13.4,11.096,27.797,19.551,43.11,25.275 c20.238,7.653,36.036,9.525,56.788,9.196c15.85-0.254,30.814-2.572,45.747-7.085c4.229-1.278,6.622-5.743,5.343-9.972 c-1.278-4.229-5.744-6.622-9.972-5.344c-13.494,4.078-27.027,6.173-41.373,6.403c-17.347,0.275-31.911-0.993-50.901-8.174 c-31.69-11.847-56.387-35.98-75.211-64.258c-5.791-8.704-2.122-20.58,7.548-24.52c4.092-1.667,6.058-6.335,4.391-10.427 c-1.667-4.092-6.334-6.058-10.427-4.391c-19.062,7.765-26.214,31.095-14.832,48.202c8.365,12.566,17.352,23.674,26.917,33.31 C12.89,375.664-2.037,401.187,0.226,428.434c1.427,17.192,19.743,27.533,35.235,19.857c30.84-15.283,54.311-1.971,75.01,2.771 c36.708,8.411,82.166,10.086,111.461-13.59c14.777-11.943,23.305-28.715,25.489-49.937 c61.607,30.736,128.694,32.482,182.835-12.326c21.516,7.959,35.456,29.153,33.567,51.902c-0.493,5.939-6.786,9.519-12.186,6.844 c-30.339-15.034-55.535-7.379-73.932-1.791c-31.306,9.51-74.736,14.144-102.884-2.498c-3.803-2.248-8.709-0.989-10.958,2.815 c-2.249,3.803-0.989,8.709,2.815,10.958c29.214,17.272,69.817,15.19,102.844,7.622c20.72-4.747,44.177-18.05,75.01-2.771 c15.523,7.691,33.811-2.693,35.235-19.856C482.032,401.183,467.102,375.655,443.143,363.426z"})),pe={sm:32,md:48,lg:64};function ge({size:e="md",variant:c="light",className:m="",style:b={}}){const w=pe[e],g={display:"inline-block",cursor:"pointer",transition:"all 250ms ease",borderRadius:"50%",...c==="dark"&&{backgroundColor:"rgba(255, 255, 255, 0.05)",padding:"8px"},...b};return U.jsx("a",{href:"https://getbodhi.app",target:"_blank",rel:"noopener noreferrer",title:"Powered by Bodhi","aria-label":"Powered by Bodhi - Visit getbodhi.app",className:m,style:g,onMouseEnter:h=>{h.currentTarget.style.transform="scale(1.1)",h.currentTarget.style.boxShadow="0 0 20px rgba(255, 164, 184, 0.6)"},onMouseLeave:h=>{h.currentTarget.style.transform="scale(1)",h.currentTarget.style.boxShadow="none"},children:U.jsx(fe,{width:w,height:w,style:{display:"block"}})})}const he="production";Object.defineProperty(exports,"BodhiApiError",{enumerable:!0,get:()=>s.BodhiApiError});Object.defineProperty(exports,"BodhiError",{enumerable:!0,get:()=>s.BodhiError});Object.defineProperty(exports,"InMemoryStorage",{enumerable:!0,get:()=>s.InMemoryStorage});Object.defineProperty(exports,"LoginOptionsBuilder",{enumerable:!0,get:()=>s.LoginOptionsBuilder});Object.defineProperty(exports,"createApiError",{enumerable:!0,get:()=>s.createApiError});Object.defineProperty(exports,"createOperationError",{enumerable:!0,get:()=>s.createOperationError});Object.defineProperty(exports,"isAuthError",{enumerable:!0,get:()=>s.isAuthError});Object.defineProperty(exports,"isAuthLoading",{enumerable:!0,get:()=>s.isAuthLoading});Object.defineProperty(exports,"isAuthenticated",{enumerable:!0,get:()=>s.isAuthenticated});Object.defineProperty(exports,"isClientReady",{enumerable:!0,get:()=>s.isClientReady});Object.defineProperty(exports,"isDirectState",{enumerable:!0,get:()=>s.isDirectState});Object.defineProperty(exports,"isExtensionState",{enumerable:!0,get:()=>s.isExtensionState});Object.defineProperty(exports,"isWebUIClient",{enumerable:!0,get:()=>s.isWebUIClient});Object.defineProperty(exports,"unwrapResponse",{enumerable:!0,get:()=>s.unwrapResponse});exports.BodhiBadge=ge;exports.BodhiProvider=le;exports.BodhiReactContext=q;exports.ClientCtxState=ue;exports.INITIALIZING_CLIENT_CONTEXT_STATE=K;exports.INITIAL_CLIENT_CONTEXT_STATE=H;exports.REACT_CORE_BUILD_MODE=he;exports.clientStateToContextState=$;exports.isClientCtxInitialized=Y;exports.isClientCtxInitializing=X;exports.isClientCtxNotInitialized=J;exports.isClientCtxReady=G;exports.isOverallReady=Z;exports.useBodhi=de;
@@ -1,5 +1,5 @@
1
1
  import { jsxs as ne, jsx as G } from "react/jsx-runtime";
2
- import { Logger as W, BodhiClientUserPrefsManager as X, createStoragePrefixWithBasePath as H, detectBrowser as se, detectOS as ae, getServerUrl as oe, isDirectServerReady as ce, isExtensionServerReady as ie, OS_CONFIGS as ue, BROWSER_CONFIGS as le, OnboardingModal as de, OnboardingModalV2 as fe, BACKEND_SERVER_NOT_CONNECTED as Z, isExtensionState as pe, INITIAL_AUTH_STATE as he, NOOP_STATE_CALLBACK as me, isWebUIClient as ge, BodhiError as j } from "@bodhiapp/bodhi-js-core";
2
+ import { Logger as W, BodhiClientUserPrefsManager as X, createStoragePrefixWithNamespace as H, detectBrowser as se, detectOS as ae, getServerUrl as ce, isDirectServerReady as oe, isExtensionServerReady as ie, OS_CONFIGS as ue, BROWSER_CONFIGS as le, OnboardingModal as de, OnboardingModalV2 as fe, BACKEND_SERVER_NOT_CONNECTED as Z, isExtensionState as pe, INITIAL_AUTH_STATE as he, NOOP_STATE_CALLBACK as me, isWebUIClient as ge, BodhiError as j } from "@bodhiapp/bodhi-js-core";
3
3
  import { BodhiApiError as We, BodhiError as Ke, InMemoryStorage as Ye, LoginOptionsBuilder as Je, createApiError as $e, createOperationError as Xe, isAuthError as Ze, isAuthLoading as Qe, isAuthenticated as et, isClientReady as tt, isDirectState as rt, isExtensionState as nt, isWebUIClient as st, unwrapResponse as at } from "@bodhiapp/bodhi-js-core";
4
4
  import * as g from "react";
5
5
  import { useMemo as O, useRef as z, useCallback as h, useEffect as N, createContext as Se, useState as V, useContext as ve } from "react";
@@ -13,7 +13,7 @@ function Ee({
13
13
  basePath: f = "/",
14
14
  logLevel: p = "warn"
15
15
  }) {
16
- const I = b !== "ready", _ = O(() => new W("SetupModalProcessor", p), [p]), d = z(null), c = O(
16
+ const I = b !== "ready", _ = O(() => new W("SetupModalProcessor", p), [p]), d = z(null), o = O(
17
17
  () => new X(H(f, "bodhijs:")),
18
18
  [f]
19
19
  ), l = z(null), M = h(
@@ -145,10 +145,10 @@ function Ee({
145
145
  let m = await e.getExtensionState();
146
146
  (m.extension === "not-initialized" || t) && (m = await e.testExtensionConnectivity());
147
147
  let y = await e.getDirectState();
148
- const T = c.getDirectStatus();
148
+ const T = o.getDirectStatus();
149
149
  T === "granted" && (y.server.status === "not-connected" || t) && (y = await e.testDirectConnectivity());
150
- const P = oe(y) || "http://localhost:1135", U = w(y, T, P);
151
- return e.getConnectionMode() === null && (ce(y) ? await e.setConnectionMode("direct") : ie(m) && await e.setConnectionMode("extension")), c.isServerInstallConfirmed() || x(m, y) && c.setServerInstallConfirmed(!0), {
150
+ const P = ce(y) || "http://localhost:1135", U = w(y, T, P);
151
+ return e.getConnectionMode() === null && (oe(y) ? await e.setConnectionMode("direct") : ie(m) && await e.setConnectionMode("extension")), o.isServerInstallConfirmed() || x(m, y) && o.setServerInstallConfirmed(!0), {
152
152
  extension: A(m),
153
153
  server: L(m),
154
154
  lna: U,
@@ -156,13 +156,13 @@ function Ee({
156
156
  env: { browser: n, os: i },
157
157
  browsers: le,
158
158
  os: ue,
159
- userConfirmations: { serverInstall: c.isServerInstallConfirmed() },
159
+ userConfirmations: { serverInstall: o.isServerInstallConfirmed() },
160
160
  selectedConnection: M(e.getConnectionMode())
161
161
  };
162
162
  },
163
163
  [
164
164
  e,
165
- c,
165
+ o,
166
166
  A,
167
167
  L,
168
168
  C,
@@ -177,12 +177,12 @@ function Ee({
177
177
  ...l.current,
178
178
  // Override userConfirmations from storage (in case updated outside buildSetupState)
179
179
  userConfirmations: {
180
- serverInstall: c.isServerInstallConfirmed()
180
+ serverInstall: o.isServerInstallConfirmed()
181
181
  },
182
182
  // Override selectedConnection from client (in case changed via handler)
183
183
  selectedConnection: M(e.getConnectionMode())
184
184
  };
185
- }, [c, e, M]), o = O(
185
+ }, [o, e, M]), c = O(
186
186
  () => ({
187
187
  [k.MODAL_READY]: async () => (_.info("MODAL_READY: returning current state or default"), l.current ? { setupState: r() } : { setupState: Ce }),
188
188
  [k.MODAL_REFRESH]: async () => {
@@ -200,7 +200,7 @@ function Ee({
200
200
  if (i.server.status !== "not-connected") {
201
201
  const y = i.server.status;
202
202
  if (y === "ready" || y === "setup" || y === "resource_admin") {
203
- c.setDirectStatus("granted"), e.getConnectionMode() === null && await e.setConnectionMode("direct");
203
+ o.setDirectStatus("granted"), e.getConnectionMode() === null && await e.setConnectionMode("direct");
204
204
  const T = await E();
205
205
  return l.current = T, d.current?.updateState(r()), { success: !0 };
206
206
  }
@@ -209,7 +209,7 @@ function Ee({
209
209
  return l.current = m, d.current?.updateState(r()), { success: !1 };
210
210
  },
211
211
  [k.MODAL_LNA_SKIP]: async () => {
212
- c.setDirectStatus("skipped");
212
+ o.setDirectStatus("skipped");
213
213
  const t = await E();
214
214
  return l.current = t, d.current?.updateState(r()), { success: !0 };
215
215
  },
@@ -219,17 +219,17 @@ function Ee({
219
219
  [k.MODAL_COMPLETE]: () => {
220
220
  S();
221
221
  },
222
- [k.MODAL_CONFIRM_SERVER_INSTALL]: (t) => (c.setServerInstallConfirmed(t.payload.confirmed), d.current?.updateState(r()), { success: !0 }),
222
+ [k.MODAL_CONFIRM_SERVER_INSTALL]: (t) => (o.setServerInstallConfirmed(t.payload.confirmed), d.current?.updateState(r()), { success: !0 }),
223
223
  [k.MODAL_SELECT_CONNECTION]: async (t) => {
224
224
  const i = t.payload.connection === "lna" ? "direct" : "extension";
225
225
  return await e.setConnectionMode(i), d.current?.updateState(r()), { success: !0 };
226
226
  }
227
227
  }),
228
- [_, e, c, E, r, C, S]
228
+ [_, e, o, E, r, C, S]
229
229
  );
230
- return N(() => (d.current = new de({ modalHtmlPath: s, handlers: o }), () => {
230
+ return N(() => (d.current = new de({ modalHtmlPath: s, handlers: c }), () => {
231
231
  d.current?.destroy(), d.current = null;
232
- }), [s, o]), N(() => {
232
+ }), [s, c]), N(() => {
233
233
  I && d.current ? (d.current.showLoading(), E(!0).then((t) => {
234
234
  l.current = t, d.current?.updateState(t), v?.();
235
235
  }).catch((t) => {
@@ -270,7 +270,7 @@ function Ae({
270
270
  logLevel: p = "warn",
271
271
  autoProbe: I = !0
272
272
  }) {
273
- const _ = b !== "ready", d = O(() => new W("SetupModalV2Processor", p), [p]), c = z(null), l = z(null), M = O(
273
+ const _ = b !== "ready", d = O(() => new W("SetupModalV2Processor", p), [p]), o = z(null), l = z(null), M = O(
274
274
  () => new X(H(f, "bodhijs:")),
275
275
  [f]
276
276
  ), A = O(
@@ -280,8 +280,8 @@ function Ae({
280
280
  try {
281
281
  const r = localStorage.getItem(A);
282
282
  if (!r) return null;
283
- const o = JSON.parse(r);
284
- return typeof o?.serverUrl == "string" ? o : null;
283
+ const c = JSON.parse(r);
284
+ return typeof c?.serverUrl == "string" ? c : null;
285
285
  } catch {
286
286
  return null;
287
287
  }
@@ -298,16 +298,16 @@ function Ae({
298
298
  [A]
299
299
  ), x = h(
300
300
  async (r) => {
301
- const o = Me(), t = await e.testDirectConnectivity(r), n = t.server.status;
302
- return n === "ready" ? (C(r), M.setDirectStatus("granted"), e.getConnectionMode() === null && await e.setConnectionMode("direct"), { serverUrl: r, browser: o, probeStatus: "connected", serverStatus: "ready" }) : n === "setup" || n === "resource_admin" ? { serverUrl: r, browser: o, probeStatus: "not-ready", serverStatus: n } : n === "error" ? {
301
+ const c = Me(), t = await e.testDirectConnectivity(r), n = t.server.status;
302
+ return n === "ready" ? (C(r), M.setDirectStatus("granted"), e.getConnectionMode() === null && await e.setConnectionMode("direct"), { serverUrl: r, browser: c, probeStatus: "connected", serverStatus: "ready" }) : n === "setup" || n === "resource_admin" ? { serverUrl: r, browser: c, probeStatus: "not-ready", serverStatus: n } : n === "error" ? {
303
303
  serverUrl: r,
304
- browser: o,
304
+ browser: c,
305
305
  probeStatus: "error",
306
306
  serverStatus: "error",
307
307
  error: t.server.error ? { code: "server-error", message: t.server.error.message } : void 0
308
308
  } : {
309
309
  serverUrl: r,
310
- browser: o,
310
+ browser: c,
311
311
  probeStatus: "network-error",
312
312
  serverStatus: "unreachable",
313
313
  error: t.server.error ? { code: "network-error", message: t.server.error.message } : void 0
@@ -315,8 +315,8 @@ function Ae({
315
315
  },
316
316
  [e, M, C]
317
317
  ), w = h(async () => {
318
- const o = L()?.serverUrl ?? ye;
319
- return x(o);
318
+ const c = L()?.serverUrl ?? ye;
319
+ return x(c);
320
320
  }, [x, L]), E = O(
321
321
  () => ({
322
322
  [F.MODAL_READY]: async () => {
@@ -326,8 +326,8 @@ function Ae({
326
326
  return l.current = r, { setupState: r };
327
327
  },
328
328
  [F.MODAL_PROBE]: async (r) => {
329
- const o = await x(r.payload.serverUrl);
330
- return l.current = o, c.current?.updateState(o), { setupState: o };
329
+ const c = await x(r.payload.serverUrl);
330
+ return l.current = c, o.current?.updateState(c), { setupState: c };
331
331
  },
332
332
  [F.MODAL_COMPLETE]: () => {
333
333
  S();
@@ -338,8 +338,8 @@ function Ae({
338
338
  }),
339
339
  [w, x, S]
340
340
  );
341
- return N(() => (c.current = new fe({ modalHtmlPath: s, handlers: E }), () => {
342
- c.current?.destroy(), c.current = null;
341
+ return N(() => (o.current = new fe({ modalHtmlPath: s, handlers: E }), () => {
342
+ o.current?.destroy(), o.current = null;
343
343
  }), [s, E]), N(() => {
344
344
  I && w().then((r) => {
345
345
  l.current = r, d.info("Auto-probe complete:", r.probeStatus);
@@ -348,11 +348,11 @@ function Ae({
348
348
  });
349
349
  }, [I, w, d]), N(() => {
350
350
  let r = !1;
351
- return _ && c.current ? (c.current.showLoading(), l.current ? (c.current.updateState(l.current), v?.()) : w().then((o) => {
352
- r || (l.current = o, c.current?.updateState(o), v?.());
353
- }).catch((o) => {
354
- r || d.error("buildInitialState failed:", o);
355
- })) : !_ && c.current && c.current.destroy(), () => {
351
+ return _ && o.current ? (o.current.showLoading(), l.current ? (o.current.updateState(l.current), v?.()) : w().then((c) => {
352
+ r || (l.current = c, o.current?.updateState(c), v?.());
353
+ }).catch((c) => {
354
+ r || d.error("buildInitialState failed:", c);
355
+ })) : !_ && o.current && o.current.destroy(), () => {
356
356
  r = !0;
357
357
  };
358
358
  }, [_, w, v, d]), null;
@@ -396,7 +396,7 @@ function Re(e) {
396
396
  server: e.server,
397
397
  error: e.server.error
398
398
  } : {
399
- status: e.url === null ? "direct-not-connected" : "ready",
399
+ status: e.url === null || e.server.status === "not-reachable" || e.server.status === "not-connected" ? "direct-not-connected" : "ready",
400
400
  mode: "direct",
401
401
  extensionId: null,
402
402
  url: e.url,
@@ -423,7 +423,7 @@ function qe({
423
423
  setupModal: I = "setup-modal-v2",
424
424
  autoProbe: _ = !0
425
425
  }) {
426
- const d = f === "/" ? "" : f.replace(/\/$/, ""), c = b ?? `${d}/callback`, l = O(() => new W("BodhiProvider", p), [p]), M = z(!1), A = z(!1), L = z(!1), [C, x] = V(_e), [w, E] = V(he), [r, o] = V(!1), [t, n] = V("ready"), i = h((a, u) => {
426
+ const d = f === "/" ? "" : f.replace(/\/$/, ""), o = b ?? `${d}/callback`, l = O(() => new W("BodhiProvider", p), [p]), M = z(!1), A = z(!1), L = z(!1), [C, x] = V(_e), [w, E] = V(he), [r, c] = V(!1), [t, n] = V("ready"), i = h((a, u) => {
427
427
  A.current = !0, E({
428
428
  status: "error",
429
429
  user: null,
@@ -432,7 +432,7 @@ function qe({
432
432
  refreshToken: null,
433
433
  expiresAt: null,
434
434
  isTokenRefresh: !1
435
- }), o(!1);
435
+ }), c(!1);
436
436
  }, []), m = h(() => {
437
437
  A.current = !1;
438
438
  }, []);
@@ -443,7 +443,7 @@ function qe({
443
443
  x(Re(u.state));
444
444
  break;
445
445
  case "auth-state":
446
- A.current || (E(u.state), o(!1));
446
+ A.current || (E(u.state), c(!1));
447
447
  break;
448
448
  }
449
449
  };
@@ -473,14 +473,14 @@ function qe({
473
473
  L.current = !0, (async () => {
474
474
  if (await P(), !v) return;
475
475
  const u = new URL(window.location.href);
476
- if (u.pathname !== c || M.current || !ge(s)) return;
476
+ if (u.pathname !== o || M.current || !ge(s)) return;
477
477
  if (u.searchParams.get("bodhi_flow") === "access_request") {
478
478
  const R = u.searchParams.get("id");
479
479
  if (!R) {
480
480
  l.warn("Access request callback marker present but no id parameter"), window.history.replaceState({}, "", f);
481
481
  return;
482
482
  }
483
- M.current = !0, o(!0);
483
+ M.current = !0, c(!0);
484
484
  try {
485
485
  await s.handleAccessRequestCallback(R);
486
486
  } catch (D) {
@@ -495,7 +495,7 @@ function qe({
495
495
  }
496
496
  const B = u.searchParams.get("code"), $ = u.searchParams.get("state");
497
497
  if (!(!B || !$)) {
498
- M.current = !0, o(!0);
498
+ M.current = !0, c(!0);
499
499
  try {
500
500
  await s.handleOAuthCallback(B, $), window.history.replaceState({}, "", f);
501
501
  } catch (R) {
@@ -508,10 +508,10 @@ function qe({
508
508
  }
509
509
  }
510
510
  })();
511
- }, [P, s, v, c, f]);
511
+ }, [P, s, v, o, f]);
512
512
  const U = h(
513
513
  async (a) => {
514
- m(), o(!0);
514
+ m(), c(!0);
515
515
  try {
516
516
  const u = a ? {
517
517
  ...a.userRole && { userRole: a.userRole },
@@ -536,7 +536,7 @@ function qe({
536
536
  expiresAt: null,
537
537
  isTokenRefresh: !1
538
538
  };
539
- return E(B), o(!1), B;
539
+ return E(B), c(!1), B;
540
540
  }
541
541
  },
542
542
  [s, m]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bodhiapp/bodhi-js-react-core",
3
- "version": "0.0.36",
3
+ "version": "0.0.38",
4
4
  "description": "Core React bindings for Bodhi Browser SDK (dependency injection)",
5
5
  "type": "module",
6
6
  "main": "dist/bodhi-react-core.cjs.js",
@@ -57,11 +57,11 @@
57
57
  "typecheck": "tsc --noEmit"
58
58
  },
59
59
  "dependencies": {
60
- "@bodhiapp/bodhi-browser-types": "0.0.36",
61
- "@bodhiapp/setup-modal-types": "0.0.36",
62
- "@bodhiapp/setup-modal-v2-types": "0.0.36",
63
- "@bodhiapp/bodhi-js-core": "0.0.36",
64
- "@bodhiapp/ts-client": "0.1.31"
60
+ "@bodhiapp/bodhi-browser-types": "0.0.38",
61
+ "@bodhiapp/setup-modal-types": "0.0.38",
62
+ "@bodhiapp/setup-modal-v2-types": "0.0.38",
63
+ "@bodhiapp/bodhi-js-core": "0.0.38",
64
+ "@bodhiapp/ts-client": "0.1.32"
65
65
  },
66
66
  "peerDependencies": {
67
67
  "react": "^18.3.0 || ^19.0.0"