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

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,60 +1,63 @@
1
- import { jsxs as ne, jsx as G } from "react/jsx-runtime";
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
- 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
- import * as g from "react";
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";
6
- import { MSG as k, DEFAULT_SETUP_STATE as Ce } from "@bodhiapp/setup-modal-types";
7
- function Ee({
8
- client: e,
9
- modalHtmlPath: s,
10
- hideSetup: S,
11
- onSetupReady: v,
12
- setupState: b,
13
- basePath: f = "/",
14
- logLevel: p = "warn"
1
+ import { jsxs as se, jsx as j } from "react/jsx-runtime";
2
+ import { Logger as K, BodhiClientUserPrefsManager as Q, createStoragePrefixWithNamespace as W, detectBrowser as oe, detectOS as ce, getServerUrl as ae, isDirectServerReady as ie, isExtensionServerReady as ue, OS_CONFIGS as le, BROWSER_CONFIGS as de, OnboardingModal as fe, OnboardingModalV2 as pe, BACKEND_SERVER_NOT_CONNECTED as ee, isExtensionState as he, INITIAL_AUTH_STATE as me, NOOP_STATE_CALLBACK as ge, isWebUIClient as Se, BodhiError as Z } from "@bodhiapp/bodhi-js-core";
3
+ import { BodhiApiError as Ye, BodhiError as $e, InMemoryStorage as He, LoginOptionsBuilder as Je, createApiError as Xe, createOperationError as Ze, isAuthError as Qe, isAuthLoading as er, isAuthenticated as rr, isClientReady as tr, isDirectState as nr, isExtensionState as sr, isWebUIClient as or, unwrapResponse as cr } from "@bodhiapp/bodhi-js-core";
4
+ import * as m from "react";
5
+ import { useMemo as x, useRef as z, useCallback as p, useEffect as N, createContext as ve, useState as V, useContext as Ce } from "react";
6
+ import { MSG as T, DEFAULT_SETUP_STATE as Ee } from "@bodhiapp/setup-modal-types";
7
+ function q(r) {
8
+ return r.replace(/\/+$/, "");
9
+ }
10
+ function ye({
11
+ client: r,
12
+ modalHtmlPath: n,
13
+ hideSetup: C,
14
+ onSetupReady: w,
15
+ setupState: M,
16
+ basePath: d = "/",
17
+ logLevel: i = "warn"
15
18
  }) {
16
- const I = b !== "ready", _ = O(() => new W("SetupModalProcessor", p), [p]), d = z(null), o = O(
17
- () => new X(H(f, "bodhijs:")),
18
- [f]
19
- ), l = z(null), M = h(
20
- (t) => t === "direct" ? "lna" : t === "extension" ? "extension" : null,
19
+ const I = M !== "ready", _ = x(() => new K("SetupModalProcessor", i), [i]), u = z(null), h = x(
20
+ () => new Q(W(d, "bodhijs:")),
21
+ [d]
22
+ ), l = z(null), E = p(
23
+ (e) => e === "direct" ? "lna" : e === "extension" ? "extension" : null,
21
24
  []
22
- ), A = h((t) => t.extension === "ready" ? {
25
+ ), O = p((e) => e.extension === "ready" ? {
23
26
  status: "ready",
24
27
  version: "unknown",
25
28
  // TODO: have ExtensionState also get extension version
26
- id: t.extensionId
27
- } : t.extension === "not-found" ? {
29
+ id: e.extensionId
30
+ } : e.extension === "not-found" ? {
28
31
  status: "not-installed",
29
32
  error: { message: "Extension not found", code: "ext-not-installed" }
30
33
  } : {
31
34
  status: "unreachable",
32
35
  error: { message: "Client not initialized", code: "ext-connection-failed" }
33
- }, []), L = h((t) => {
34
- if (t.server.status === "pending-extension-ready")
36
+ }, []), b = p((e) => {
37
+ if (e.server.status === "pending-extension-ready")
35
38
  return {
36
39
  status: "pending-extension-ready",
37
40
  error: { message: "Extension not ready", code: "server-pending-ext-ready" }
38
41
  };
39
- const n = t.server;
40
- switch (n.status) {
42
+ const t = e.server;
43
+ switch (t.status) {
41
44
  case "ready":
42
- return { status: "ready", version: n.version || "unknown" };
45
+ return { status: "ready", version: t.version || "unknown" };
43
46
  case "setup":
44
47
  return {
45
48
  status: "setup",
46
- version: n.version || "unknown",
49
+ version: t.version || "unknown",
47
50
  error: {
48
- message: n.error?.message || "Setup required",
51
+ message: t.error?.message || "Setup required",
49
52
  code: "server-in-setup-status"
50
53
  }
51
54
  };
52
55
  case "resource_admin":
53
56
  return {
54
57
  status: "resource_admin",
55
- version: n.version || "unknown",
58
+ version: t.version || "unknown",
56
59
  error: {
57
- message: n.error?.message || "Resource admin required",
60
+ message: t.error?.message || "Resource admin required",
58
61
  code: "server-in-admin-status"
59
62
  }
60
63
  };
@@ -62,7 +65,7 @@ function Ee({
62
65
  return {
63
66
  status: "error",
64
67
  error: {
65
- message: n.error?.message || "Unknown error",
68
+ message: t.error?.message || "Unknown error",
66
69
  code: "server-unexpected-error"
67
70
  }
68
71
  };
@@ -70,7 +73,7 @@ function Ee({
70
73
  return {
71
74
  status: "unreachable",
72
75
  error: {
73
- message: n.error?.message || "Server not reachable",
76
+ message: t.error?.message || "Server not reachable",
74
77
  code: "server-conn-refused"
75
78
  }
76
79
  };
@@ -83,22 +86,22 @@ function Ee({
83
86
  }
84
87
  };
85
88
  }
86
- }, []), C = h((t) => {
87
- if (t.server.status === "not-connected")
89
+ }, []), A = p((e) => {
90
+ if (e.server.status === "not-connected")
88
91
  return { status: "pending-lna-ready" };
89
- const n = t.server;
90
- switch (n.status) {
92
+ const t = e.server;
93
+ switch (t.status) {
91
94
  case "ready":
92
- return { status: "ready", version: n.version || "unknown" };
95
+ return { status: "ready", version: t.version || "unknown" };
93
96
  case "setup":
94
- return { status: "setup", version: n.version || "unknown" };
97
+ return { status: "setup", version: t.version || "unknown" };
95
98
  case "resource_admin":
96
- return { status: "resource_admin", version: n.version || "unknown" };
99
+ return { status: "resource_admin", version: t.version || "unknown" };
97
100
  case "error":
98
101
  case "not-reachable":
99
102
  return {
100
103
  status: "error",
101
- error: { message: n.error?.message || "Connection error" }
104
+ error: { message: t.error?.message || "Connection error" }
102
105
  };
103
106
  default:
104
107
  return {
@@ -106,516 +109,524 @@ function Ee({
106
109
  error: { message: "Unknown server status" }
107
110
  };
108
111
  }
109
- }, []), x = h(
110
- (t, n) => {
111
- if (t.server.status !== "pending-extension-ready") {
112
- const i = t.server.status;
113
- if (i === "ready" || i === "setup" || i === "resource_admin")
112
+ }, []), R = p(
113
+ (e, t) => {
114
+ if (e.server.status !== "pending-extension-ready") {
115
+ const s = e.server.status;
116
+ if (s === "ready" || s === "setup" || s === "resource_admin")
114
117
  return !0;
115
118
  }
116
- if (n.server.status !== "not-connected") {
117
- const i = n.server.status;
118
- if (i === "ready" || i === "setup" || i === "resource_admin")
119
+ if (t.server.status !== "not-connected") {
120
+ const s = t.server.status;
121
+ if (s === "ready" || s === "setup" || s === "resource_admin")
119
122
  return !0;
120
123
  }
121
124
  return !1;
122
125
  },
123
126
  []
124
- ), w = h(
125
- (t, n, i) => {
126
- if (n === "skipped")
127
- return { status: "skipped", serverUrl: i };
128
- if (t.server.status !== "not-connected") {
129
- const m = t.server;
130
- return m.status === "ready" || m.status === "setup" || m.status === "resource_admin" ? { status: "granted", serverUrl: i } : {
127
+ ), y = p(
128
+ (e, t, s) => {
129
+ if (t === "skipped")
130
+ return { status: "skipped", serverUrl: s };
131
+ if (e.server.status !== "not-connected") {
132
+ const a = e.server;
133
+ return a.status === "ready" || a.status === "setup" || a.status === "resource_admin" ? { status: "granted", serverUrl: s } : {
131
134
  status: "unreachable",
132
- serverUrl: i,
135
+ serverUrl: s,
133
136
  error: {
134
- message: m.error?.message || "Server unreachable",
137
+ message: a.error?.message || "Server unreachable",
135
138
  code: "lna-unreachable"
136
139
  }
137
140
  };
138
141
  }
139
- return n === "granted" ? { status: "granted", serverUrl: i } : { status: "prompt", serverUrl: i };
142
+ return t === "granted" ? { status: "granted", serverUrl: s } : { status: "prompt", serverUrl: s };
140
143
  },
141
144
  []
142
- ), E = h(
143
- async (t = !1) => {
144
- const n = se().type, i = ae().type;
145
- let m = await e.getExtensionState();
146
- (m.extension === "not-initialized" || t) && (m = await e.testExtensionConnectivity());
147
- let y = await e.getDirectState();
148
- const T = o.getDirectStatus();
149
- T === "granted" && (y.server.status === "not-connected" || t) && (y = await e.testDirectConnectivity());
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
- extension: A(m),
153
- server: L(m),
154
- lna: U,
155
- lnaServer: C(y),
156
- env: { browser: n, os: i },
157
- browsers: le,
158
- os: ue,
159
- userConfirmations: { serverInstall: o.isServerInstallConfirmed() },
160
- selectedConnection: M(e.getConnectionMode())
145
+ ), g = p(
146
+ async (e = !1) => {
147
+ const t = oe().type, s = ce().type;
148
+ let a = await r.getExtensionState();
149
+ (a.extension === "not-initialized" || e) && (a = await r.testExtensionConnectivity());
150
+ let v = await r.getDirectState();
151
+ const L = h.getDirectStatus();
152
+ L === "granted" && (v.server.status === "not-connected" || e) && (v = await r.testDirectConnectivity());
153
+ const B = ae(v) || "http://localhost:1135", P = y(v, L, B);
154
+ return r.getConnectionMode() === null && (ie(v) ? await r.setConnectionMode("direct") : ue(a) && await r.setConnectionMode("extension")), h.isServerInstallConfirmed() || R(a, v) && h.setServerInstallConfirmed(!0), {
155
+ extension: O(a),
156
+ server: b(a),
157
+ lna: P,
158
+ lnaServer: A(v),
159
+ env: { browser: t, os: s },
160
+ browsers: de,
161
+ os: le,
162
+ userConfirmations: { serverInstall: h.isServerInstallConfirmed() },
163
+ selectedConnection: E(r.getConnectionMode())
161
164
  };
162
165
  },
163
166
  [
164
- e,
165
- o,
167
+ r,
168
+ h,
169
+ O,
170
+ b,
166
171
  A,
167
- L,
168
- C,
169
- M,
170
- w,
171
- x
172
+ E,
173
+ y,
174
+ R
172
175
  ]
173
- ), r = h(() => {
176
+ ), S = p(() => {
174
177
  if (!l.current)
175
178
  throw new Error("Cannot get state: currentStateRef is null");
176
179
  return {
177
180
  ...l.current,
178
181
  // Override userConfirmations from storage (in case updated outside buildSetupState)
179
182
  userConfirmations: {
180
- serverInstall: o.isServerInstallConfirmed()
183
+ serverInstall: h.isServerInstallConfirmed()
181
184
  },
182
185
  // Override selectedConnection from client (in case changed via handler)
183
- selectedConnection: M(e.getConnectionMode())
186
+ selectedConnection: E(r.getConnectionMode())
184
187
  };
185
- }, [o, e, M]), c = O(
188
+ }, [h, r, E]), o = x(
186
189
  () => ({
187
- [k.MODAL_READY]: async () => (_.info("MODAL_READY: returning current state or default"), l.current ? { setupState: r() } : { setupState: Ce }),
188
- [k.MODAL_REFRESH]: async () => {
190
+ [T.MODAL_READY]: async () => (_.info("MODAL_READY: returning current state or default"), l.current ? { setupState: S() } : { setupState: Ee }),
191
+ [T.MODAL_REFRESH]: async () => {
189
192
  _.info("MODAL_REFRESH: refreshing state");
190
- const t = await E(!0);
191
- l.current = t;
192
- const n = r();
193
+ const e = await g(!0);
194
+ l.current = e;
195
+ const t = S();
193
196
  return _.info(`MODAL_REFRESH: state refreshed
194
- `, JSON.stringify(n, null, 2)), d.current?.updateState(r()), { setupState: n };
197
+ `, JSON.stringify(t, null, 2)), u.current?.updateState(S()), { setupState: t };
195
198
  },
196
- [k.MODAL_LNA_CONNECT]: async (t) => {
197
- const n = t.payload.serverUrl;
198
- console.log("[SetupModalProcessor] LNA connect:", n);
199
- const i = await e.testDirectConnectivity(n);
200
- if (i.server.status !== "not-connected") {
201
- const y = i.server.status;
202
- if (y === "ready" || y === "setup" || y === "resource_admin") {
203
- o.setDirectStatus("granted"), e.getConnectionMode() === null && await e.setConnectionMode("direct");
204
- const T = await E();
205
- return l.current = T, d.current?.updateState(r()), { success: !0 };
199
+ [T.MODAL_LNA_CONNECT]: async (e) => {
200
+ const t = q(e.payload.serverUrl);
201
+ console.log("[SetupModalProcessor] LNA connect:", t);
202
+ const s = await r.testDirectConnectivity(t);
203
+ if (s.server.status !== "not-connected") {
204
+ const v = s.server.status;
205
+ if (v === "ready" || v === "setup" || v === "resource_admin") {
206
+ h.setDirectStatus("granted"), r.getConnectionMode() === null && await r.setConnectionMode("direct");
207
+ const L = await g();
208
+ return l.current = L, u.current?.updateState(S()), { success: !0 };
206
209
  }
207
210
  }
208
- const m = await E();
209
- return l.current = m, d.current?.updateState(r()), { success: !1 };
211
+ const a = await g();
212
+ return l.current = a, u.current?.updateState(S()), { success: !1 };
210
213
  },
211
- [k.MODAL_LNA_SKIP]: async () => {
212
- o.setDirectStatus("skipped");
213
- const t = await E();
214
- return l.current = t, d.current?.updateState(r()), { success: !0 };
214
+ [T.MODAL_LNA_SKIP]: async () => {
215
+ h.setDirectStatus("skipped");
216
+ const e = await g();
217
+ return l.current = e, u.current?.updateState(S()), { success: !0 };
215
218
  },
216
- [k.MODAL_CLOSE]: () => {
217
- S();
219
+ [T.MODAL_CLOSE]: () => {
220
+ C();
218
221
  },
219
- [k.MODAL_COMPLETE]: () => {
220
- S();
222
+ [T.MODAL_COMPLETE]: () => {
223
+ C();
221
224
  },
222
- [k.MODAL_CONFIRM_SERVER_INSTALL]: (t) => (o.setServerInstallConfirmed(t.payload.confirmed), d.current?.updateState(r()), { success: !0 }),
223
- [k.MODAL_SELECT_CONNECTION]: async (t) => {
224
- const i = t.payload.connection === "lna" ? "direct" : "extension";
225
- return await e.setConnectionMode(i), d.current?.updateState(r()), { success: !0 };
225
+ [T.MODAL_CONFIRM_SERVER_INSTALL]: (e) => (h.setServerInstallConfirmed(e.payload.confirmed), u.current?.updateState(S()), { success: !0 }),
226
+ [T.MODAL_SELECT_CONNECTION]: async (e) => {
227
+ const s = e.payload.connection === "lna" ? "direct" : "extension";
228
+ return await r.setConnectionMode(s), u.current?.updateState(S()), { success: !0 };
226
229
  }
227
230
  }),
228
- [_, e, o, E, r, C, S]
231
+ [_, r, h, g, S, A, C]
229
232
  );
230
- return N(() => (d.current = new de({ modalHtmlPath: s, handlers: c }), () => {
231
- d.current?.destroy(), d.current = null;
232
- }), [s, c]), N(() => {
233
- I && d.current ? (d.current.showLoading(), E(!0).then((t) => {
234
- l.current = t, d.current?.updateState(t), v?.();
235
- }).catch((t) => {
236
- console.error("[SetupModalProcessor] buildSetupState failed:", t);
237
- })) : !I && d.current && d.current.destroy();
238
- }, [I, E, v]), null;
233
+ return N(() => (u.current = new fe({ modalHtmlPath: n, handlers: o }), () => {
234
+ u.current?.destroy(), u.current = null;
235
+ }), [n, o]), N(() => {
236
+ I && u.current ? (u.current.showLoading(), g(!0).then((e) => {
237
+ l.current = e, u.current?.updateState(e), w?.();
238
+ }).catch((e) => {
239
+ console.error("[SetupModalProcessor] buildSetupState failed:", e);
240
+ })) : !I && u.current && u.current.destroy();
241
+ }, [I, g, w]), null;
239
242
  }
240
- const ye = "http://localhost:1135", F = {
243
+ const we = "http://localhost:1135", F = {
241
244
  MODAL_READY: "modal:ready",
242
245
  MODAL_PROBE: "modal:probe",
243
246
  MODAL_COMPLETE: "modal:complete",
244
247
  MODAL_CLOSE: "modal:close"
245
- }, we = 130, be = 143;
246
- function Me(e = navigator.userAgent) {
247
- const s = e.toLowerCase(), S = s.match(/edg\/(\d+)/);
248
- if (S) {
249
- const p = parseInt(S[1], 10);
250
- return { name: "edge", version: p, supported: p >= be };
248
+ }, Me = 130, be = 143;
249
+ function _e(r = navigator.userAgent) {
250
+ const n = r.toLowerCase(), C = n.match(/edg\/(\d+)/);
251
+ if (C) {
252
+ const i = parseInt(C[1], 10);
253
+ return { name: "edge", version: i, supported: i >= be };
251
254
  }
252
- const v = s.match(/chrome\/(\d+)/);
253
- if (v && !s.includes("edg/")) {
254
- const p = parseInt(v[1], 10);
255
- return { name: "chrome", version: p, supported: p >= we };
255
+ const w = n.match(/chrome\/(\d+)/);
256
+ if (w && !n.includes("edg/")) {
257
+ const i = parseInt(w[1], 10);
258
+ return { name: "chrome", version: i, supported: i >= Me };
256
259
  }
257
- const b = s.match(/firefox\/(\d+)/);
258
- if (b)
259
- return { name: "firefox", version: parseInt(b[1], 10), supported: !1 };
260
- const f = s.match(/version\/(\d+).*safari/);
261
- return f && !s.includes("chrome/") ? { name: "safari", version: parseInt(f[1], 10), supported: !1 } : { name: "unknown", version: 0, supported: !1 };
260
+ const M = n.match(/firefox\/(\d+)/);
261
+ if (M)
262
+ return { name: "firefox", version: parseInt(M[1], 10), supported: !1 };
263
+ const d = n.match(/version\/(\d+).*safari/);
264
+ return d && !n.includes("chrome/") ? { name: "safari", version: parseInt(d[1], 10), supported: !1 } : { name: "unknown", version: 0, supported: !1 };
262
265
  }
263
266
  function Ae({
264
- client: e,
265
- modalHtmlPath: s,
266
- hideSetup: S,
267
- onSetupReady: v,
268
- setupState: b,
269
- basePath: f = "/",
270
- logLevel: p = "warn",
271
- autoProbe: I = !0
267
+ client: r,
268
+ modalHtmlPath: n,
269
+ hideSetup: C,
270
+ onSetupReady: w,
271
+ setupState: M,
272
+ basePath: d = "/",
273
+ logLevel: i = "warn",
274
+ autoProbe: I = !0,
275
+ defaultHost: _
272
276
  }) {
273
- const _ = b !== "ready", d = O(() => new W("SetupModalV2Processor", p), [p]), o = z(null), l = z(null), M = O(
274
- () => new X(H(f, "bodhijs:")),
275
- [f]
276
- ), A = O(
277
- () => `${H(f, "bodhijs:")}setup-v2.connection`,
278
- [f]
279
- ), L = h(() => {
277
+ const u = M !== "ready", h = x(() => new K("SetupModalV2Processor", i), [i]), l = z(null), E = z(null), O = x(
278
+ () => new Q(W(d, "bodhijs:")),
279
+ [d]
280
+ ), b = x(
281
+ () => `${W(d, "bodhijs:")}setup-v2.connection`,
282
+ [d]
283
+ ), A = p(() => {
280
284
  try {
281
- const r = localStorage.getItem(A);
282
- if (!r) return null;
283
- const c = JSON.parse(r);
284
- return typeof c?.serverUrl == "string" ? c : null;
285
+ const o = localStorage.getItem(b);
286
+ if (!o) return null;
287
+ const e = JSON.parse(o);
288
+ return typeof e?.serverUrl == "string" ? e : null;
285
289
  } catch {
286
290
  return null;
287
291
  }
288
- }, [A]), C = h(
289
- (r) => {
292
+ }, [b]), R = p(
293
+ (o) => {
290
294
  try {
291
295
  localStorage.setItem(
292
- A,
293
- JSON.stringify({ serverUrl: r, lastProbedAt: Date.now() })
296
+ b,
297
+ JSON.stringify({
298
+ serverUrl: q(o),
299
+ lastProbedAt: Date.now()
300
+ })
294
301
  );
295
302
  } catch {
296
303
  }
297
304
  },
298
- [A]
299
- ), x = h(
300
- async (r) => {
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
- serverUrl: r,
304
- browser: c,
305
+ [b]
306
+ ), y = p(
307
+ async (o) => {
308
+ const e = q(o), t = _e(), s = await r.testDirectConnectivity(e), a = s.server.status;
309
+ return a === "ready" ? (R(e), O.setDirectStatus("granted"), r.getConnectionMode() === null && await r.setConnectionMode("direct"), { serverUrl: e, browser: t, probeStatus: "connected", serverStatus: "ready" }) : a === "setup" || a === "resource_admin" ? { serverUrl: e, browser: t, probeStatus: "not-ready", serverStatus: a } : a === "error" ? {
310
+ serverUrl: e,
311
+ browser: t,
305
312
  probeStatus: "error",
306
313
  serverStatus: "error",
307
- error: t.server.error ? { code: "server-error", message: t.server.error.message } : void 0
314
+ error: s.server.error ? { code: "server-error", message: s.server.error.message } : void 0
308
315
  } : {
309
- serverUrl: r,
310
- browser: c,
316
+ serverUrl: e,
317
+ browser: t,
311
318
  probeStatus: "network-error",
312
319
  serverStatus: "unreachable",
313
- error: t.server.error ? { code: "network-error", message: t.server.error.message } : void 0
320
+ error: s.server.error ? { code: "network-error", message: s.server.error.message } : void 0
314
321
  };
315
322
  },
316
- [e, M, C]
317
- ), w = h(async () => {
318
- const c = L()?.serverUrl ?? ye;
319
- return x(c);
320
- }, [x, L]), E = O(
323
+ [r, O, R]
324
+ ), g = p(async () => {
325
+ const e = A()?.serverUrl ?? _ ?? we;
326
+ return y(e);
327
+ }, [y, A, _]), S = x(
321
328
  () => ({
322
329
  [F.MODAL_READY]: async () => {
323
- if (l.current)
324
- return { setupState: l.current };
325
- const r = await w();
326
- return l.current = r, { setupState: r };
330
+ if (E.current)
331
+ return { setupState: E.current };
332
+ const o = await g();
333
+ return E.current = o, { setupState: o };
327
334
  },
328
- [F.MODAL_PROBE]: async (r) => {
329
- const c = await x(r.payload.serverUrl);
330
- return l.current = c, o.current?.updateState(c), { setupState: c };
335
+ [F.MODAL_PROBE]: async (o) => {
336
+ const e = await y(o.payload.serverUrl);
337
+ return E.current = e, l.current?.updateState(e), { setupState: e };
331
338
  },
332
339
  [F.MODAL_COMPLETE]: () => {
333
- S();
340
+ C();
334
341
  },
335
342
  [F.MODAL_CLOSE]: () => {
336
- S();
343
+ C();
337
344
  }
338
345
  }),
339
- [w, x, S]
346
+ [g, y, C]
340
347
  );
341
- return N(() => (o.current = new fe({ modalHtmlPath: s, handlers: E }), () => {
342
- o.current?.destroy(), o.current = null;
343
- }), [s, E]), N(() => {
344
- I && w().then((r) => {
345
- l.current = r, d.info("Auto-probe complete:", r.probeStatus);
346
- }).catch((r) => {
347
- d.error("Auto-probe failed:", r);
348
+ return N(() => (l.current = new pe({ modalHtmlPath: n, handlers: S }), () => {
349
+ l.current?.destroy(), l.current = null;
350
+ }), [n, S]), N(() => {
351
+ I && g().then((o) => {
352
+ E.current = o, h.info("Auto-probe complete:", o.probeStatus);
353
+ }).catch((o) => {
354
+ h.error("Auto-probe failed:", o);
348
355
  });
349
- }, [I, w, d]), N(() => {
350
- let r = !1;
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
- r = !0;
356
+ }, [I, g, h]), N(() => {
357
+ let o = !1;
358
+ return u && l.current ? (l.current.showLoading(), E.current ? (l.current.updateState(E.current), w?.()) : g().then((e) => {
359
+ o || (E.current = e, l.current?.updateState(e), w?.());
360
+ }).catch((e) => {
361
+ o || h.error("buildInitialState failed:", e);
362
+ })) : !u && l.current && l.current.destroy(), () => {
363
+ o = !0;
357
364
  };
358
- }, [_, w, v, d]), null;
365
+ }, [u, g, w, h]), null;
359
366
  }
360
- const _e = {
367
+ const xe = {
361
368
  status: "not-initialized",
362
369
  mode: null,
363
370
  extensionId: null,
364
371
  url: null,
365
- server: Z,
372
+ server: ee,
366
373
  error: null
367
- }, xe = {
374
+ }, Oe = {
368
375
  status: "initializing",
369
376
  mode: null,
370
377
  extensionId: null,
371
378
  url: null,
372
- server: Z,
379
+ server: ee,
373
380
  error: null
374
381
  };
375
- function Oe(e) {
376
- return e.status === "not-initialized";
382
+ function Le(r) {
383
+ return r.status === "not-initialized";
377
384
  }
378
- function Ie(e) {
379
- return e.status === "initializing";
385
+ function Ie(r) {
386
+ return r.status === "initializing";
380
387
  }
381
- function Le(e) {
382
- return e.status !== "not-initialized" && e.status !== "initializing";
388
+ function Re(r) {
389
+ return r.status !== "not-initialized" && r.status !== "initializing";
383
390
  }
384
- function Q(e) {
385
- return e.status === "ready";
391
+ function re(r) {
392
+ return r.status === "ready";
386
393
  }
387
- function Te(e) {
388
- return Q(e) && e.server.status === "ready";
394
+ function De(r) {
395
+ return re(r) && r.server.status === "ready";
389
396
  }
390
- function Re(e) {
391
- return pe(e) ? {
392
- status: e.extension === "not-initialized" ? "initializing" : e.extension === "not-found" ? "extension-not-found" : "ready",
397
+ function Te(r) {
398
+ return he(r) ? {
399
+ status: r.extension === "not-initialized" ? "initializing" : r.extension === "not-found" ? "extension-not-found" : "ready",
393
400
  mode: "extension",
394
- extensionId: e.extensionId,
401
+ extensionId: r.extensionId,
395
402
  url: null,
396
- server: e.server,
397
- error: e.server.error
403
+ server: r.server,
404
+ error: r.server.error
398
405
  } : {
399
- status: e.url === null || e.server.status === "not-reachable" || e.server.status === "not-connected" ? "direct-not-connected" : "ready",
406
+ status: r.url === null || r.server.status === "not-reachable" || r.server.status === "not-connected" ? "direct-not-connected" : "ready",
400
407
  mode: "direct",
401
408
  extensionId: null,
402
- url: e.url,
403
- server: e.server,
404
- error: e.server.error
409
+ url: r.url,
410
+ server: r.server,
411
+ error: r.server.error
405
412
  };
406
413
  }
407
- const Ue = {
408
- isNotInitialized: Oe,
414
+ const Ve = {
415
+ isNotInitialized: Le,
409
416
  isInitializing: Ie,
410
- isInitialized: Le,
411
- isReady: Q,
412
- isOverallReady: Te
413
- }, K = Se(null);
414
- K.displayName = "BodhiContext";
415
- function qe({
416
- children: e,
417
- client: s,
418
- modalHtmlPath: S,
419
- handleCallback: v = !0,
420
- callbackPath: b,
421
- basePath: f = "/",
422
- logLevel: p = "warn",
417
+ isInitialized: Re,
418
+ isReady: re,
419
+ isOverallReady: De
420
+ }, Y = ve(null);
421
+ Y.displayName = "BodhiContext";
422
+ function Fe({
423
+ children: r,
424
+ client: n,
425
+ modalHtmlPath: C,
426
+ handleCallback: w = !0,
427
+ callbackPath: M,
428
+ basePath: d = "/",
429
+ logLevel: i = "warn",
423
430
  setupModal: I = "setup-modal-v2",
424
- autoProbe: _ = !0
431
+ autoProbe: _ = !0,
432
+ defaultHost: u
425
433
  }) {
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
- A.current = !0, E({
434
+ const h = d === "/" ? "" : d.replace(/\/$/, ""), l = M ?? `${h}/callback`, E = x(
435
+ () => u ? q(u) : void 0,
436
+ [u]
437
+ ), O = x(() => new K("BodhiProvider", i), [i]), b = z(!1), A = z(!1), R = z(!1), [y, g] = V(xe), [S, o] = V(me), [e, t] = V(!1), [s, a] = V("ready"), v = p((f, c) => {
438
+ A.current = !0, o({
428
439
  status: "error",
429
440
  user: null,
430
441
  accessToken: null,
431
- error: { code: a, message: u },
442
+ error: { code: f, message: c },
432
443
  refreshToken: null,
433
444
  expiresAt: null,
434
445
  isTokenRefresh: !1
435
- }), c(!1);
436
- }, []), m = h(() => {
446
+ }), t(!1);
447
+ }, []), L = p(() => {
437
448
  A.current = !1;
438
449
  }, []);
439
450
  N(() => {
440
- const a = (u) => {
441
- switch (u.type) {
451
+ const f = (c) => {
452
+ switch (c.type) {
442
453
  case "client-state":
443
- x(Re(u.state));
454
+ g(Te(c.state));
444
455
  break;
445
456
  case "auth-state":
446
- A.current || (E(u.state), c(!1));
457
+ A.current || (o(c.state), t(!1));
447
458
  break;
448
459
  }
449
460
  };
450
- return s.setStateCallback(a), () => {
451
- s.setStateCallback(me);
461
+ return n.setStateCallback(f), () => {
462
+ n.setStateCallback(ge);
452
463
  };
453
- }, [s]);
454
- const y = h(async () => {
455
- n("loading");
456
- }, []), T = h(() => {
457
- n("ready");
458
- }, []), Y = h(() => {
459
- n("loaded");
460
- }, []), P = h(
461
- async (a) => {
462
- x(xe);
464
+ }, [n]);
465
+ const G = p(async () => {
466
+ a("loading");
467
+ }, []), B = p(() => {
468
+ a("ready");
469
+ }, []), P = p(() => {
470
+ a("loaded");
471
+ }, []), $ = p(
472
+ async (f) => {
473
+ g(Oe);
463
474
  try {
464
- await s.init(a || {});
465
- } catch (u) {
466
- l.error("Init failed:", u);
475
+ await n.init(f || {});
476
+ } catch (c) {
477
+ O.error("Init failed:", c);
467
478
  }
468
479
  },
469
- [s, l]
480
+ [n, O]
470
481
  );
471
482
  N(() => {
472
- if (L.current) return;
473
- L.current = !0, (async () => {
474
- if (await P(), !v) return;
475
- const u = new URL(window.location.href);
476
- if (u.pathname !== o || M.current || !ge(s)) return;
477
- if (u.searchParams.get("bodhi_flow") === "access_request") {
478
- const R = u.searchParams.get("id");
479
- if (!R) {
480
- l.warn("Access request callback marker present but no id parameter"), window.history.replaceState({}, "", f);
481
- return;
482
- }
483
- M.current = !0, c(!0);
484
- try {
485
- await s.handleAccessRequestCallback(R);
486
- } catch (D) {
487
- l.error("Access request callback failed:", D);
488
- const re = D instanceof j ? D : null;
489
- i(
490
- re?.code ?? "access_request_callback_failed",
491
- D instanceof Error ? D.message : "Access request callback failed"
492
- ), window.history.replaceState({}, "", f);
493
- }
483
+ if (R.current) return;
484
+ R.current = !0, (async () => {
485
+ if (await $(), !w) return;
486
+ const c = new URL(window.location.href);
487
+ if (c.pathname !== l || b.current || !Se(n)) return;
488
+ const D = c.searchParams.get("error");
489
+ if (D) {
490
+ b.current = !0;
491
+ const k = c.searchParams.get("error_source") === "bodhi" && D === "access_denied";
492
+ v(
493
+ k ? "access_request_denied" : D,
494
+ c.searchParams.get("error_description") ?? D
495
+ ), window.history.replaceState({}, "", d);
494
496
  return;
495
497
  }
496
- const B = u.searchParams.get("code"), $ = u.searchParams.get("state");
497
- if (!(!B || !$)) {
498
- M.current = !0, c(!0);
498
+ const U = c.searchParams.get("code"), X = c.searchParams.get("state");
499
+ if (!(!U || !X)) {
500
+ b.current = !0, t(!0);
499
501
  try {
500
- await s.handleOAuthCallback(B, $), window.history.replaceState({}, "", f);
501
- } catch (R) {
502
- l.error("OAuth callback failed:", R);
503
- const D = R instanceof j ? R : null;
504
- i(
505
- D?.code ?? "oauth_callback_failed",
506
- R instanceof Error ? R.message : "OAuth callback failed"
507
- ), window.history.replaceState({}, "", f);
502
+ await n.handleOAuthCallback(U, X), window.history.replaceState({}, "", d);
503
+ } catch (k) {
504
+ O.error("OAuth callback failed:", k);
505
+ const ne = k instanceof Z ? k : null;
506
+ v(
507
+ ne?.code ?? "oauth_callback_failed",
508
+ k instanceof Error ? k.message : "OAuth callback failed"
509
+ ), window.history.replaceState({}, "", d);
508
510
  }
509
511
  }
510
512
  })();
511
- }, [P, s, v, o, f]);
512
- const U = h(
513
- async (a) => {
514
- m(), c(!0);
513
+ }, [$, n, w, l, d]);
514
+ const H = p(
515
+ async (f) => {
516
+ L(), t(!0);
515
517
  try {
516
- const u = a ? {
517
- ...a.userRole && { userRole: a.userRole },
518
- ...a.requested && { requested: a.requested },
519
- ...a.flowType && { flowType: a.flowType },
520
- ...a.redirectUrl && { redirectUrl: a.redirectUrl },
521
- ...a.onProgress && { onProgress: a.onProgress },
522
- ...a.pollIntervalMs && { pollIntervalMs: a.pollIntervalMs },
523
- ...a.pollTimeoutMs && { pollTimeoutMs: a.pollTimeoutMs }
524
- } : void 0, q = u && Object.keys(u).length > 0 ? u : void 0;
525
- await s.login(q);
526
- } catch (u) {
527
- const q = u instanceof j ? u : null, B = {
518
+ const c = f ? {
519
+ ...f.userRole && { userRole: f.userRole },
520
+ ...f.requested && { requested: f.requested },
521
+ ...f.onProgress && { onProgress: f.onProgress }
522
+ } : void 0, D = c && Object.keys(c).length > 0 ? c : void 0;
523
+ await n.login(D);
524
+ } catch (c) {
525
+ const D = c instanceof Z ? c : null, U = {
528
526
  status: "error",
529
527
  user: null,
530
528
  accessToken: null,
531
529
  error: {
532
- message: u instanceof Error ? u.message : "Login failed",
533
- code: q?.code ?? "login_failed"
530
+ message: c instanceof Error ? c.message : "Login failed",
531
+ code: D?.code ?? "login_failed"
534
532
  },
535
533
  refreshToken: null,
536
534
  expiresAt: null,
537
535
  isTokenRefresh: !1
538
536
  };
539
- return E(B), c(!1), B;
537
+ return o(U), t(!1), U;
540
538
  }
541
539
  },
542
- [s, m]
543
- ), J = h(async () => {
544
- m();
540
+ [n, L]
541
+ ), J = p(async () => {
542
+ L();
545
543
  try {
546
- await s.logout();
547
- } catch (a) {
548
- i("logout_failed", a instanceof Error ? a.message : "Logout failed");
544
+ await n.logout();
545
+ } catch (f) {
546
+ v("logout_failed", f instanceof Error ? f.message : "Logout failed");
549
547
  }
550
- }, [s, i, m]), ee = O(() => {
551
- const a = C.status === "ready", u = C.server.status === "ready";
548
+ }, [n, v, L]), te = x(() => {
549
+ const f = y.status === "ready", c = y.server.status === "ready";
552
550
  return {
553
- client: s,
554
- clientState: C,
555
- auth: w,
556
- isAuthLoading: r,
557
- login: U,
551
+ client: n,
552
+ clientState: y,
553
+ auth: S,
554
+ isAuthLoading: e,
555
+ login: H,
558
556
  logout: J,
559
- showSetup: y,
560
- hideSetup: T,
561
- setupState: t,
557
+ showSetup: G,
558
+ hideSetup: B,
559
+ setupState: s,
562
560
  // Computed auth properties
563
- isAuthenticated: w.status === "authenticated",
564
- canLogin: a && !r,
561
+ isAuthenticated: S.status === "authenticated",
562
+ canLogin: f && !e,
565
563
  // Computed connection properties
566
- isReady: a,
567
- isServerReady: u,
568
- isOverallReady: a && u,
569
- isInitializing: C.status === "initializing",
570
- isExtension: C.mode === "extension",
571
- isDirect: C.mode === "direct"
564
+ isReady: f,
565
+ isServerReady: c,
566
+ isOverallReady: f && c,
567
+ isInitializing: y.status === "initializing",
568
+ isExtension: y.mode === "extension",
569
+ isDirect: y.mode === "direct"
572
570
  };
573
- }, [s, C, w, r, t, U, J, y, T]), te = I === "setup-modal" ? Ee : Ae;
574
- return /* @__PURE__ */ ne(K.Provider, { value: ee, children: [
575
- /* @__PURE__ */ G(
576
- te,
571
+ }, [n, y, S, e, s, H, J, G, B]);
572
+ return /* @__PURE__ */ se(Y.Provider, { value: te, children: [
573
+ I === "setup-modal" ? /* @__PURE__ */ j(
574
+ ye,
577
575
  {
578
- client: s,
579
- modalHtmlPath: S,
580
- hideSetup: T,
581
- onSetupReady: Y,
582
- setupState: t,
583
- basePath: f,
584
- logLevel: p,
576
+ client: n,
577
+ modalHtmlPath: C,
578
+ hideSetup: B,
579
+ onSetupReady: P,
580
+ setupState: s,
581
+ basePath: d,
582
+ logLevel: i,
585
583
  autoProbe: _
586
584
  }
585
+ ) : /* @__PURE__ */ j(
586
+ Ae,
587
+ {
588
+ client: n,
589
+ modalHtmlPath: C,
590
+ hideSetup: B,
591
+ onSetupReady: P,
592
+ setupState: s,
593
+ basePath: d,
594
+ logLevel: i,
595
+ autoProbe: _,
596
+ defaultHost: E
597
+ }
587
598
  ),
588
- e
599
+ r
589
600
  ] });
590
601
  }
591
- function Ve() {
592
- const e = ve(K);
593
- if (!e) throw new Error("useBodhi must be used within BodhiProvider");
594
- return e;
602
+ function je() {
603
+ const r = Ce(Y);
604
+ if (!r) throw new Error("useBodhi must be used within BodhiProvider");
605
+ return r;
595
606
  }
596
- const ke = (e) => /* @__PURE__ */ g.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 479.995 479.995", width: "480px", height: "480px", ...e }, /* @__PURE__ */ g.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" }), /* @__PURE__ */ g.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" }), /* @__PURE__ */ g.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" }), /* @__PURE__ */ g.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" }), /* @__PURE__ */ g.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" }), /* @__PURE__ */ g.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" }), /* @__PURE__ */ g.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" }), /* @__PURE__ */ g.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" }), /* @__PURE__ */ g.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" }), /* @__PURE__ */ g.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" }), /* @__PURE__ */ g.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" }), /* @__PURE__ */ g.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" }), /* @__PURE__ */ g.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" }), /* @__PURE__ */ g.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" }), /* @__PURE__ */ g.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" }), /* @__PURE__ */ g.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" }), /* @__PURE__ */ g.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" })), De = {
607
+ const ke = (r) => /* @__PURE__ */ m.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 479.995 479.995", width: "480px", height: "480px", ...r }, /* @__PURE__ */ m.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" }), /* @__PURE__ */ m.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" }), /* @__PURE__ */ m.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" }), /* @__PURE__ */ m.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" }), /* @__PURE__ */ m.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" }), /* @__PURE__ */ m.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" }), /* @__PURE__ */ m.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" }), /* @__PURE__ */ m.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" }), /* @__PURE__ */ m.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" }), /* @__PURE__ */ m.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" }), /* @__PURE__ */ m.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" }), /* @__PURE__ */ m.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" }), /* @__PURE__ */ m.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" }), /* @__PURE__ */ m.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" }), /* @__PURE__ */ m.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" }), /* @__PURE__ */ m.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" }), /* @__PURE__ */ m.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" })), ze = {
597
608
  sm: 32,
598
609
  md: 48,
599
610
  lg: 64
600
611
  };
601
- function Fe({
602
- size: e = "md",
603
- variant: s = "light",
604
- className: S = "",
605
- style: v = {}
612
+ function qe({
613
+ size: r = "md",
614
+ variant: n = "light",
615
+ className: C = "",
616
+ style: w = {}
606
617
  }) {
607
- const b = De[e], f = {
618
+ const M = ze[r], d = {
608
619
  display: "inline-block",
609
620
  cursor: "pointer",
610
621
  transition: "all 250ms ease",
611
622
  borderRadius: "50%",
612
- ...s === "dark" && {
623
+ ...n === "dark" && {
613
624
  backgroundColor: "rgba(255, 255, 255, 0.05)",
614
625
  padding: "8px"
615
626
  },
616
- ...v
627
+ ...w
617
628
  };
618
- return /* @__PURE__ */ G(
629
+ return /* @__PURE__ */ j(
619
630
  "a",
620
631
  {
621
632
  href: "https://getbodhi.app",
@@ -623,46 +634,47 @@ function Fe({
623
634
  rel: "noopener noreferrer",
624
635
  title: "Powered by Bodhi",
625
636
  "aria-label": "Powered by Bodhi - Visit getbodhi.app",
626
- className: S,
627
- style: f,
628
- onMouseEnter: (p) => {
629
- p.currentTarget.style.transform = "scale(1.1)", p.currentTarget.style.boxShadow = "0 0 20px rgba(255, 164, 184, 0.6)";
637
+ className: C,
638
+ style: d,
639
+ onMouseEnter: (i) => {
640
+ i.currentTarget.style.transform = "scale(1.1)", i.currentTarget.style.boxShadow = "0 0 20px rgba(255, 164, 184, 0.6)";
630
641
  },
631
- onMouseLeave: (p) => {
632
- p.currentTarget.style.transform = "scale(1)", p.currentTarget.style.boxShadow = "none";
642
+ onMouseLeave: (i) => {
643
+ i.currentTarget.style.transform = "scale(1)", i.currentTarget.style.boxShadow = "none";
633
644
  },
634
- children: /* @__PURE__ */ G(ke, { width: b, height: b, style: { display: "block" } })
645
+ children: /* @__PURE__ */ j(ke, { width: M, height: M, style: { display: "block" } })
635
646
  }
636
647
  );
637
648
  }
638
- const je = "production";
649
+ const Ge = "production";
639
650
  export {
640
- We as BodhiApiError,
641
- Fe as BodhiBadge,
642
- Ke as BodhiError,
643
- qe as BodhiProvider,
644
- K as BodhiReactContext,
645
- Ue as ClientCtxState,
646
- xe as INITIALIZING_CLIENT_CONTEXT_STATE,
647
- _e as INITIAL_CLIENT_CONTEXT_STATE,
648
- Ye as InMemoryStorage,
651
+ Ye as BodhiApiError,
652
+ qe as BodhiBadge,
653
+ $e as BodhiError,
654
+ Fe as BodhiProvider,
655
+ Y as BodhiReactContext,
656
+ Ve as ClientCtxState,
657
+ Oe as INITIALIZING_CLIENT_CONTEXT_STATE,
658
+ xe as INITIAL_CLIENT_CONTEXT_STATE,
659
+ He as InMemoryStorage,
649
660
  Je as LoginOptionsBuilder,
650
- je as REACT_CORE_BUILD_MODE,
651
- Re as clientStateToContextState,
652
- $e as createApiError,
653
- Xe as createOperationError,
654
- Ze as isAuthError,
655
- Qe as isAuthLoading,
656
- et as isAuthenticated,
657
- Le as isClientCtxInitialized,
661
+ Ge as REACT_CORE_BUILD_MODE,
662
+ Te as clientStateToContextState,
663
+ Xe as createApiError,
664
+ Ze as createOperationError,
665
+ Qe as isAuthError,
666
+ er as isAuthLoading,
667
+ rr as isAuthenticated,
668
+ Re as isClientCtxInitialized,
658
669
  Ie as isClientCtxInitializing,
659
- Oe as isClientCtxNotInitialized,
660
- Q as isClientCtxReady,
661
- tt as isClientReady,
662
- rt as isDirectState,
663
- nt as isExtensionState,
664
- Te as isOverallReady,
665
- st as isWebUIClient,
666
- at as unwrapResponse,
667
- Ve as useBodhi
670
+ Le as isClientCtxNotInitialized,
671
+ re as isClientCtxReady,
672
+ tr as isClientReady,
673
+ nr as isDirectState,
674
+ sr as isExtensionState,
675
+ De as isOverallReady,
676
+ or as isWebUIClient,
677
+ q as normalizeServerUrl,
678
+ cr as unwrapResponse,
679
+ je as useBodhi
668
680
  };