@burdenoff/fe-libs 2026.928.1 → 2026.928.3
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.
- package/dist/chrome/SideNavigation.d.ts.map +1 -1
- package/dist/chrome/SideNavigation.js +71 -68
- package/dist/chrome/sideNavigation/sideNavEscape.d.ts +41 -0
- package/dist/chrome/sideNavigation/sideNavEscape.d.ts.map +1 -0
- package/dist/chrome/sideNavigation/sideNavEscape.js +8 -0
- package/dist/chrome/sideNavigation/useSideNavigationState.d.ts +8 -1
- package/dist/chrome/sideNavigation/useSideNavigationState.d.ts.map +1 -1
- package/dist/chrome/sideNavigation/useSideNavigationState.js +35 -23
- package/dist/shared/assistant/ui/AIAssistantPanel.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AIAssistantPanel.js +82 -79
- package/dist/shared/assistant/ui/AssistantOverlay.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantOverlay.js +86 -84
- package/dist/shared/assistant/ui/assistantOverlayState.d.ts +31 -8
- package/dist/shared/assistant/ui/assistantOverlayState.d.ts.map +1 -1
- package/dist/shared/assistant/ui/assistantOverlayState.js +22 -16
- package/dist/shared/assistant/ui/panelOverlays.d.ts +31 -0
- package/dist/shared/assistant/ui/panelOverlays.d.ts.map +1 -1
- package/dist/shared/assistant/ui/panelOverlays.js +11 -8
- package/dist/shared/assistant/ui/voice/AssistantVoiceSession.d.ts.map +1 -1
- package/dist/shared/assistant/ui/voice/AssistantVoiceSession.js +78 -74
- package/dist/shared/assistant/ui/voice/VoiceTranscriptDrawer.d.ts.map +1 -1
- package/dist/shared/assistant/ui/voice/VoiceTranscriptDrawer.js +40 -39
- package/dist/shared/assistant/ui/voice/voiceSessionEscape.d.ts.map +1 -1
- package/dist/shared/assistant/ui/voice/voiceSessionEscape.js +7 -10
- package/dist/shared/assistant/useAssistantKeyboardShortcuts.d.ts +3 -1
- package/dist/shared/assistant/useAssistantKeyboardShortcuts.d.ts.map +1 -1
- package/dist/shared/assistant/useAssistantKeyboardShortcuts.js +25 -25
- package/dist/shared/graphql/fetch.d.ts +12 -1
- package/dist/shared/graphql/fetch.d.ts.map +1 -1
- package/dist/shared/graphql/fetch.js +101 -80
- package/dist/shared/hooks/index.d.ts +1 -0
- package/dist/shared/hooks/index.d.ts.map +1 -1
- package/dist/shared/hooks/useReturnFocus.d.ts +56 -0
- package/dist/shared/hooks/useReturnFocus.d.ts.map +1 -0
- package/dist/shared/hooks/useReturnFocus.js +41 -0
- package/dist/shared/providers/AppShellProvider.d.ts +12 -1
- package/dist/shared/providers/AppShellProvider.d.ts.map +1 -1
- package/dist/shared/providers/AppShellProvider.js +175 -161
- package/dist/shared/providers/shell/ActiveContextProvider.d.ts.map +1 -1
- package/dist/shared/providers/shell/ActiveContextProvider.js +28 -26
- package/dist/shared/providers/shell/PersonaSurfaceProvider.d.ts.map +1 -1
- package/dist/shared/providers/shell/PersonaSurfaceProvider.js +165 -193
- package/dist/shared/providers/shell/personaSurfaceRemote.d.ts +8 -2
- package/dist/shared/providers/shell/personaSurfaceRemote.d.ts.map +1 -1
- package/dist/shared/providers/shell/personaSurfaceRemote.js +37 -15
- package/dist/shared/providers/shell/useRemoteNavPreferences.d.ts +30 -0
- package/dist/shared/providers/shell/useRemoteNavPreferences.d.ts.map +1 -0
- package/dist/shared/providers/shell/useRemoteNavPreferences.js +43 -0
- package/dist/shared-assistant.js +76 -76
- package/dist/shared-hooks.js +34 -33
- package/dist/shared.js +89 -88
- package/dist/ui/modal-shell.d.ts.map +1 -1
- package/dist/ui/modal-shell.js +23 -13
- package/package.json +2 -2
|
@@ -35,7 +35,7 @@ function x() {
|
|
|
35
35
|
return null;
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
-
function
|
|
38
|
+
function ee() {
|
|
39
39
|
try {
|
|
40
40
|
let e = sessionStorage.getItem("bf-active-profile");
|
|
41
41
|
if (!e) return !1;
|
|
@@ -45,7 +45,7 @@ function S() {
|
|
|
45
45
|
return !1;
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
-
function
|
|
48
|
+
function S(e) {
|
|
49
49
|
try {
|
|
50
50
|
let [, t] = e.split(".");
|
|
51
51
|
if (!t || typeof globalThis.atob != "function") return null;
|
|
@@ -55,8 +55,8 @@ function C(e) {
|
|
|
55
55
|
return null;
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
-
function
|
|
59
|
-
let t =
|
|
58
|
+
function C(e) {
|
|
59
|
+
let t = S(e)?.exp;
|
|
60
60
|
return typeof t == "number" ? t * 1e3 <= Date.now() + 3e4 : !1;
|
|
61
61
|
}
|
|
62
62
|
function w() {
|
|
@@ -103,7 +103,7 @@ function A() {
|
|
|
103
103
|
return null;
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
|
-
function
|
|
106
|
+
function j(e) {
|
|
107
107
|
return {
|
|
108
108
|
workspaceId: typeof e.workspaceId == "string" ? e.workspaceId : E() || void 0,
|
|
109
109
|
organizationId: typeof e.organizationId == "string" ? e.organizationId : D() || A() || void 0,
|
|
@@ -111,14 +111,22 @@ function te(e) {
|
|
|
111
111
|
projectId: typeof e.projectId == "string" ? e.projectId : k() || void 0
|
|
112
112
|
};
|
|
113
113
|
}
|
|
114
|
-
function
|
|
114
|
+
function M(e, t, n) {
|
|
115
115
|
try {
|
|
116
116
|
let r = a() ?? x();
|
|
117
117
|
if (!r) return;
|
|
118
118
|
o(r, t), sessionStorage.setItem("burdenoff-active-context-workspace", e), n && sessionStorage.setItem("burdenoff-active-context-organization", n);
|
|
119
119
|
} catch {}
|
|
120
120
|
}
|
|
121
|
-
|
|
121
|
+
function N(e, t, n) {
|
|
122
|
+
return t ? t.aborted ? Promise.resolve(n) : new Promise((r) => {
|
|
123
|
+
let i = () => r(n);
|
|
124
|
+
t.addEventListener("abort", i, { once: !0 }), e.then(r, () => r(n)).finally(() => {
|
|
125
|
+
t.removeEventListener("abort", i);
|
|
126
|
+
});
|
|
127
|
+
}) : e;
|
|
128
|
+
}
|
|
129
|
+
async function P(e) {
|
|
122
130
|
let { url: t, authToken: n, workspaceId: r, organizationId: i, projectId: a, locale: o, signal: s, currentQuery: c } = e;
|
|
123
131
|
if (!n || c.includes("issueWorkspaceToken")) return null;
|
|
124
132
|
let l = r || E();
|
|
@@ -130,7 +138,7 @@ async function M(e) {
|
|
|
130
138
|
projectId: a
|
|
131
139
|
})) return u;
|
|
132
140
|
let m = `${p ?? ""}:${l}:${a ?? ""}`, h = v.get(m);
|
|
133
|
-
if (h) return h;
|
|
141
|
+
if (h) return N(h, s, null);
|
|
134
142
|
let g = fetch(t, {
|
|
135
143
|
method: "POST",
|
|
136
144
|
headers: {
|
|
@@ -146,62 +154,67 @@ async function M(e) {
|
|
|
146
154
|
...p ? { organizationId: p } : {},
|
|
147
155
|
...a ? { projectId: a } : {}
|
|
148
156
|
} }
|
|
149
|
-
})
|
|
150
|
-
signal: s
|
|
157
|
+
})
|
|
151
158
|
}).then(async (e) => {
|
|
152
159
|
let t = (await e.json()).data?.issueWorkspaceToken;
|
|
153
|
-
return t?.success && t.token ? (
|
|
160
|
+
return t?.success && t.token ? (M(t.workspaceId || l, t.token, p ?? void 0), t.token) : null;
|
|
154
161
|
}).catch(() => null).finally(() => {
|
|
155
162
|
v.delete(m);
|
|
156
163
|
});
|
|
157
|
-
return v.set(m, g), g;
|
|
164
|
+
return v.set(m, g), N(g, s, null);
|
|
158
165
|
}
|
|
159
|
-
function
|
|
166
|
+
function F(e, n) {
|
|
160
167
|
let i = r[e], a = t(), o = e === "global" ? a.globalBaseUrl : a.workspaceBaseUrl, s = n || o;
|
|
161
168
|
return `${s.endsWith("/") ? s.slice(0, -1) : s}${i.graphql}`;
|
|
162
169
|
}
|
|
163
|
-
function
|
|
170
|
+
function I(e) {
|
|
171
|
+
return e.reason ?? new DOMException("The operation was aborted.", "AbortError");
|
|
172
|
+
}
|
|
173
|
+
function L(e) {
|
|
174
|
+
if (e?.aborted) throw I(e);
|
|
175
|
+
}
|
|
176
|
+
function R() {
|
|
164
177
|
return globalThis;
|
|
165
178
|
}
|
|
166
|
-
function
|
|
167
|
-
let e =
|
|
179
|
+
function z() {
|
|
180
|
+
let e = R();
|
|
168
181
|
return e.__graphqlFetchQueues ||= /* @__PURE__ */ new Map(), e.__graphqlFetchQueues;
|
|
169
182
|
}
|
|
170
|
-
function
|
|
171
|
-
let e =
|
|
183
|
+
function B() {
|
|
184
|
+
let e = R();
|
|
172
185
|
return e.__graphqlFetchResponseCache ||= /* @__PURE__ */ new Map(), e.__graphqlFetchResponseCache;
|
|
173
186
|
}
|
|
174
|
-
function
|
|
175
|
-
let e =
|
|
187
|
+
function V() {
|
|
188
|
+
let e = R();
|
|
176
189
|
return e.__graphqlFetchPendingResponses ||= /* @__PURE__ */ new Map(), e.__graphqlFetchPendingResponses;
|
|
177
190
|
}
|
|
178
|
-
function
|
|
179
|
-
|
|
191
|
+
function H() {
|
|
192
|
+
B().clear(), V().clear(), n();
|
|
180
193
|
}
|
|
181
|
-
var
|
|
194
|
+
var te = 10, ne = 600, U = 100, re = 1e4, W = 15e3, ie = new Set([
|
|
182
195
|
"traceparent",
|
|
183
196
|
"tracestate",
|
|
184
197
|
"baggage"
|
|
185
198
|
]), G = "Apollo-Require-Preflight";
|
|
186
|
-
function
|
|
187
|
-
if (typeof performance > "u") return
|
|
188
|
-
let e =
|
|
189
|
-
return e.__graphqlFetchBurstStartedAt ??= performance.now(), performance.now() - e.__graphqlFetchBurstStartedAt <
|
|
199
|
+
function ae() {
|
|
200
|
+
if (typeof performance > "u") return U;
|
|
201
|
+
let e = R();
|
|
202
|
+
return e.__graphqlFetchBurstStartedAt ??= performance.now(), performance.now() - e.__graphqlFetchBurstStartedAt < re ? ne : U;
|
|
190
203
|
}
|
|
191
|
-
function
|
|
204
|
+
function oe(e) {
|
|
192
205
|
return typeof e.query == "string" ? /^\s*query\b/.test(e.query) : !1;
|
|
193
206
|
}
|
|
194
|
-
function
|
|
207
|
+
function se(e) {
|
|
195
208
|
return typeof e.operationName == "string" && e.operationName.length > 0 ? {
|
|
196
209
|
operationName: e.operationName,
|
|
197
210
|
variables: e.variables ?? null
|
|
198
211
|
} : e;
|
|
199
212
|
}
|
|
200
|
-
function
|
|
213
|
+
function ce(e) {
|
|
201
214
|
let t = /* @__PURE__ */ new Map();
|
|
202
215
|
for (let [n, r] of Object.entries(e)) {
|
|
203
216
|
let e = n.toLowerCase();
|
|
204
|
-
|
|
217
|
+
ie.has(e) || t.set(e, r);
|
|
205
218
|
}
|
|
206
219
|
return Object.fromEntries(Array.from(t.entries()).sort(([e], [t]) => e.localeCompare(t)));
|
|
207
220
|
}
|
|
@@ -214,13 +227,13 @@ function K(t) {
|
|
|
214
227
|
};
|
|
215
228
|
}
|
|
216
229
|
function q(e) {
|
|
217
|
-
return
|
|
230
|
+
return le(e) && Array.isArray(e.errors);
|
|
218
231
|
}
|
|
219
232
|
function J(e) {
|
|
220
233
|
let t = e.status;
|
|
221
234
|
return t === 401 ? "Invalid email or password." : t === 403 ? "You do not have permission to do that." : t === 404 ? "We could not find what you were looking for." : t === 408 || t === 504 ? "The server took too long to respond. Please try again." : t === 429 ? "Too many requests. Please wait a moment and try again." : t >= 500 && t < 600 ? "The server is having trouble right now. Please try again in a moment." : t >= 400 && t < 500 ? "The request could not be processed. Please refresh and try again." : "We could not reach the server. Please check your connection and try again.";
|
|
222
235
|
}
|
|
223
|
-
function
|
|
236
|
+
function le(e) {
|
|
224
237
|
return typeof e == "object" && !!e && !Array.isArray(e);
|
|
225
238
|
}
|
|
226
239
|
async function Y(e) {
|
|
@@ -245,9 +258,9 @@ async function X(e, t, n) {
|
|
|
245
258
|
...r.keepalive ? { keepalive: !0 } : {}
|
|
246
259
|
}), i = await Y(n);
|
|
247
260
|
if (!n.ok && !q(i)) throw Error(J(n));
|
|
248
|
-
r.cacheKey && !q(i) &&
|
|
261
|
+
r.cacheKey && !q(i) && B().set(r.cacheKey, {
|
|
249
262
|
value: i,
|
|
250
|
-
expiresAt: Date.now() +
|
|
263
|
+
expiresAt: Date.now() + W
|
|
251
264
|
}), r.resolve(i);
|
|
252
265
|
} catch (e) {
|
|
253
266
|
r.reject(e);
|
|
@@ -265,9 +278,9 @@ async function X(e, t, n) {
|
|
|
265
278
|
if (!i.ok && !q(a)) throw Error(J(i));
|
|
266
279
|
if (Array.isArray(a)) a.forEach((e, t) => {
|
|
267
280
|
let r = n[t];
|
|
268
|
-
r && (r.cacheKey && !q(e) &&
|
|
281
|
+
r && (r.cacheKey && !q(e) && B().set(r.cacheKey, {
|
|
269
282
|
value: e,
|
|
270
|
-
expiresAt: Date.now() +
|
|
283
|
+
expiresAt: Date.now() + W
|
|
271
284
|
}), r.resolve(e));
|
|
272
285
|
});
|
|
273
286
|
else {
|
|
@@ -279,14 +292,15 @@ async function X(e, t, n) {
|
|
|
279
292
|
}
|
|
280
293
|
}
|
|
281
294
|
function Z(e, t, n, r, i) {
|
|
282
|
-
let a =
|
|
295
|
+
let a = ce(t), o = i?.keepalive === !0, s = o ? 1 : Math.max(1, i?.batchMax ?? te), c = Math.max(0, i?.batchInterval ?? ae()), l = `${e}|${JSON.stringify(a)}`, u = oe(n) ? `${l}|${JSON.stringify(se(n))}` : void 0;
|
|
296
|
+
if (r?.aborted) return Promise.reject(I(r));
|
|
283
297
|
if (u) {
|
|
284
|
-
let e =
|
|
298
|
+
let e = B(), t = e.get(u);
|
|
285
299
|
if (t) {
|
|
286
300
|
if (t.expiresAt > Date.now()) return Promise.resolve(t.value);
|
|
287
301
|
e.delete(u);
|
|
288
302
|
}
|
|
289
|
-
let n =
|
|
303
|
+
let n = V().get(u);
|
|
290
304
|
if (n) return n;
|
|
291
305
|
}
|
|
292
306
|
let d = new Promise((t, i) => {
|
|
@@ -301,90 +315,97 @@ function Z(e, t, n, r, i) {
|
|
|
301
315
|
}]);
|
|
302
316
|
return;
|
|
303
317
|
}
|
|
304
|
-
let d =
|
|
305
|
-
|
|
318
|
+
let d = z(), f = d.get(l);
|
|
319
|
+
f || (f = {
|
|
306
320
|
requests: [],
|
|
307
321
|
timer: null,
|
|
308
322
|
batchMax: s,
|
|
309
323
|
batchInterval: c
|
|
310
|
-
}, d.set(l, f))
|
|
324
|
+
}, d.set(l, f));
|
|
325
|
+
let p = {
|
|
311
326
|
body: n,
|
|
312
327
|
resolve: t,
|
|
313
328
|
reject: i,
|
|
314
329
|
signal: r,
|
|
315
330
|
cacheKey: u
|
|
316
|
-
}
|
|
331
|
+
};
|
|
332
|
+
if (f.requests.push(p), r && r.addEventListener("abort", () => {
|
|
333
|
+
let e = z().get(l), t = e ? e.requests.indexOf(p) : -1;
|
|
334
|
+
e && t >= 0 && (e.requests.splice(t, 1), e.requests.length === 0 && (e.timer && clearTimeout(e.timer), z().delete(l))), i(I(r));
|
|
335
|
+
}, { once: !0 }), f.requests.length >= f.batchMax) {
|
|
317
336
|
Q(e, a, l);
|
|
318
337
|
return;
|
|
319
338
|
}
|
|
320
339
|
f.timer ||= setTimeout(() => Q(e, a, l), f.batchInterval);
|
|
321
340
|
});
|
|
322
|
-
return u && (
|
|
323
|
-
|
|
341
|
+
return u && !r && (V().set(u, d), d.finally(() => {
|
|
342
|
+
V().delete(u);
|
|
324
343
|
}).catch(() => {})), d;
|
|
325
344
|
}
|
|
326
345
|
function Q(e, t, n) {
|
|
327
|
-
let r =
|
|
346
|
+
let r = z(), i = r.get(n);
|
|
328
347
|
i && (r.delete(n), i.timer &&= (clearTimeout(i.timer), null), X(e, t, i.requests));
|
|
329
348
|
}
|
|
330
349
|
async function $(e) {
|
|
331
|
-
let { gateway: n, query: r, variables: i, operationName: a, authToken: o, workspaceToken: s, workspaceId: c, organizationId: u, tenantId: h, projectId: _, locale: v, baseUrl: x, extraHeaders:
|
|
332
|
-
|
|
350
|
+
let { gateway: n, query: r, variables: i, operationName: a, authToken: o, workspaceToken: s, workspaceId: c, organizationId: u, tenantId: h, projectId: _, locale: v, baseUrl: x, extraHeaders: S, signal: E, suppressGlobalErrorEvent: D, keepalive: k } = e;
|
|
351
|
+
L(E);
|
|
352
|
+
let A = d(F(n, x)), M = o && !C(o) ? o : y();
|
|
353
|
+
if (!M && !e.skipAuthRetry && typeof window < "u" && !window.location.pathname.startsWith("/auth/") && ee()) {
|
|
333
354
|
let e = await import("../utils/authErrorHandling.js");
|
|
334
355
|
await e.attemptTokenRefresh({
|
|
335
356
|
globalBaseUrl: n === "global" && x ? x : t().globalBaseUrl,
|
|
336
357
|
...e.getSharedTokenRefreshRefs()
|
|
337
|
-
}) ?
|
|
358
|
+
}) ? M = y() : g({
|
|
338
359
|
operationName: a,
|
|
339
360
|
gateway: n
|
|
340
|
-
});
|
|
361
|
+
}), L(E);
|
|
341
362
|
}
|
|
342
|
-
let
|
|
363
|
+
let N = v ?? T(), I = j({
|
|
343
364
|
workspaceId: c,
|
|
344
365
|
organizationId: u,
|
|
345
366
|
tenantId: h,
|
|
346
367
|
projectId: _
|
|
347
|
-
}),
|
|
368
|
+
}), R = {
|
|
348
369
|
"Content-Type": "application/json",
|
|
349
370
|
[G]: "true"
|
|
350
371
|
};
|
|
351
|
-
|
|
352
|
-
let
|
|
353
|
-
if (
|
|
372
|
+
M && (R.Authorization = `Bearer ${M}`), N && (R["Accept-Language"] = N);
|
|
373
|
+
let z = w();
|
|
374
|
+
if (z?.country && (R["X-Geo-Country"] = z.country), z?.currency && (R["X-Geo-Currency"] = z.currency), z?.timezone && (R["X-Geo-Timezone"] = z.timezone), n === "workspace" ? s !== !1 : s) {
|
|
354
375
|
let e = typeof s == "string" ? s : b();
|
|
355
|
-
e && !f(e,
|
|
376
|
+
e && !f(e, I) && (e = null), !e && (s === !0 || n === "workspace" && s === void 0 || typeof s == "string") && (e = await P({
|
|
356
377
|
url: A,
|
|
357
|
-
authToken:
|
|
358
|
-
workspaceId:
|
|
359
|
-
organizationId:
|
|
360
|
-
projectId:
|
|
361
|
-
locale:
|
|
378
|
+
authToken: M,
|
|
379
|
+
workspaceId: I.workspaceId,
|
|
380
|
+
organizationId: I.organizationId,
|
|
381
|
+
projectId: I.projectId,
|
|
382
|
+
locale: N,
|
|
362
383
|
signal: E,
|
|
363
384
|
currentQuery: r
|
|
364
|
-
})), e && (
|
|
385
|
+
}), L(E)), e && (R["X-Workspace-Authorization"] = `Bearer ${e}`);
|
|
365
386
|
}
|
|
366
387
|
if (n === "workspace" || c) {
|
|
367
|
-
let e =
|
|
368
|
-
e && (
|
|
388
|
+
let e = I.workspaceId;
|
|
389
|
+
e && (R["x-workspace-id"] = e);
|
|
369
390
|
}
|
|
370
391
|
if (n === "global" || u) {
|
|
371
|
-
let e =
|
|
372
|
-
e && (
|
|
392
|
+
let e = I.organizationId;
|
|
393
|
+
e && (R["x-org-id"] = e);
|
|
373
394
|
}
|
|
374
395
|
if (h) {
|
|
375
396
|
let e = typeof h == "string" ? h : O();
|
|
376
|
-
e && (
|
|
397
|
+
e && (R["x-tenant-id"] = e);
|
|
377
398
|
}
|
|
378
399
|
if (n === "workspace" || _) {
|
|
379
|
-
let e =
|
|
380
|
-
e && (
|
|
400
|
+
let e = I.projectId;
|
|
401
|
+
e && (R["x-project-id"] = e);
|
|
381
402
|
}
|
|
382
|
-
let
|
|
383
|
-
|
|
384
|
-
let
|
|
385
|
-
i && (
|
|
386
|
-
let
|
|
387
|
-
if (e.skipAuthRetry || !
|
|
403
|
+
let B = l(S);
|
|
404
|
+
B && Object.assign(R, B);
|
|
405
|
+
let V = { query: r };
|
|
406
|
+
i && (V.variables = i), a && (V.operationName = a);
|
|
407
|
+
let H = async (r) => {
|
|
408
|
+
if (e.skipAuthRetry || !M || typeof window > "u" || !r?.length) return null;
|
|
388
409
|
let i = await import("../utils/authErrorHandling.js");
|
|
389
410
|
return i.hasAuthGraphQLErrors(r) ? await i.attemptTokenRefresh({
|
|
390
411
|
globalBaseUrl: n === "global" && x ? x : t().globalBaseUrl,
|
|
@@ -400,9 +421,9 @@ async function $(e) {
|
|
|
400
421
|
}), null) : null;
|
|
401
422
|
};
|
|
402
423
|
try {
|
|
403
|
-
let e = await Z(A,
|
|
424
|
+
let e = await Z(A, R, V, E, k ? { keepalive: !0 } : void 0);
|
|
404
425
|
if (m(), e.errors?.length) {
|
|
405
|
-
let t = await
|
|
426
|
+
let t = await H(e.errors);
|
|
406
427
|
if (t) return t;
|
|
407
428
|
D || p({ errors: e.errors }, { operationName: a });
|
|
408
429
|
}
|
|
@@ -410,7 +431,7 @@ async function $(e) {
|
|
|
410
431
|
} catch (e) {
|
|
411
432
|
let t = e.errors;
|
|
412
433
|
if (t?.length) {
|
|
413
|
-
let e = await
|
|
434
|
+
let e = await H(t);
|
|
414
435
|
if (e) return e;
|
|
415
436
|
}
|
|
416
437
|
throw D || p(e, {
|
|
@@ -420,4 +441,4 @@ async function $(e) {
|
|
|
420
441
|
}
|
|
421
442
|
}
|
|
422
443
|
//#endregion
|
|
423
|
-
export { h as SESSION_EXPIRED_EVENT,
|
|
444
|
+
export { h as SESSION_EXPIRED_EVENT, H as clearGraphqlFetchResponseCache, Z as enqueueGraphQLFetch, P as ensureWorkspaceToken, y as getStoredAuthToken, T as getStoredLocale, D as getStoredOrganizationId, k as getStoredProjectId, E as getStoredWorkspaceId, b as getStoredWorkspaceToken, $ as graphqlFetch, F as resolveGatewayUrl };
|
|
@@ -16,6 +16,7 @@ export { useOnClickOutside, useOnClickOutsideWithRef } from './useOnClickOutside
|
|
|
16
16
|
export { useKeyPress, useKeyboardShortcut } from './useKeyPress';
|
|
17
17
|
export { useCopyToClipboard } from './useCopyToClipboard';
|
|
18
18
|
export { useExclusiveMenu } from './useExclusiveMenu';
|
|
19
|
+
export { useReturnFocus, type UseReturnFocusOptions } from './useReturnFocus';
|
|
19
20
|
export { useLocalStorage } from './useLocalStorage';
|
|
20
21
|
export { useSessionStorage } from './useSessionStorage';
|
|
21
22
|
export { usePrevious, usePreviousDistinct, usePreviousHistory } from './usePrevious';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/hooks/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAc,MAAM,OAAO,CAAC;AACnC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,oBAAoB,8CAA2D,CAAC;AAE7F;;GAEG;AACH,wBAAgB,uBAAuB,2BAMtC;AAOD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/hooks/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAc,MAAM,OAAO,CAAC;AACnC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,oBAAoB,8CAA2D,CAAC;AAE7F;;GAEG;AACH,wBAAgB,uBAAuB,2BAMtC;AAOD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAG9E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EACL,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,GACzB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAG9E,cAAc,aAAa,CAAC;AAG5B,cAAc,WAAW,CAAC;AAG1B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,YAAY,EAAE,gCAAgC,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,kBAAkB,EAClB,6BAA6B,EAC7B,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAGjG,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,uBAAuB,EACvB,sBAAsB,EACtB,cAAc,EACd,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,6BAA6B,EAC7B,mBAAmB,GACpB,MAAM,iCAAiC,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
/** The slice of a document this reads. */
|
|
3
|
+
export type FocusReturnDocument = Pick<Document, 'activeElement' | 'body'>;
|
|
4
|
+
type Focusable = Element & {
|
|
5
|
+
focus(options?: FocusOptions): void;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Was focus dropped, rather than moved somewhere on purpose?
|
|
9
|
+
*
|
|
10
|
+
* Yes when nothing is focused, `<body>` is (where the browser puts it when the
|
|
11
|
+
* focused element is removed), the focused element is no longer in the
|
|
12
|
+
* document, or it is inside `layer`, the layer that is closing.
|
|
13
|
+
*/
|
|
14
|
+
export declare function focusWasDropped(doc: FocusReturnDocument, layer?: Pick<Node, 'contains'> | null): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Is `candidate` worth trying: still in the document, able to take focus at
|
|
17
|
+
* all, and not disabled?
|
|
18
|
+
*/
|
|
19
|
+
export declare function canReturnFocusTo(candidate: Element | null | undefined): candidate is Focusable;
|
|
20
|
+
/**
|
|
21
|
+
* Focus the first candidate that takes it, and return it; null when none did.
|
|
22
|
+
*
|
|
23
|
+
* ★ Checked by reading focus back. `focus()` fails silently on an element that
|
|
24
|
+
* is hidden (`display: none`, such as the launcher on a phone while the panel
|
|
25
|
+
* is open) or inside an `inert` subtree (the composer behind a live voice
|
|
26
|
+
* session), so "it did not throw" says nothing. The next candidate gets its
|
|
27
|
+
* turn instead.
|
|
28
|
+
*/
|
|
29
|
+
export declare function returnFocusTo(doc: FocusReturnDocument, candidates: ReadonlyArray<Element | null | undefined>): Element | null;
|
|
30
|
+
/** What is focused, when it is a real control rather than `<body>`. */
|
|
31
|
+
export declare function focusedControl(doc: FocusReturnDocument): Element | null;
|
|
32
|
+
export interface UseReturnFocusOptions {
|
|
33
|
+
/**
|
|
34
|
+
* Where focus goes when the opener is gone: the nearest ancestor of the
|
|
35
|
+
* layer matching this selector, found while the layer is still mounted.
|
|
36
|
+
* The assistant's layers pass the panel root, which is focusable
|
|
37
|
+
* (`tabIndex=-1`) and keeps focus inside the assistant.
|
|
38
|
+
*/
|
|
39
|
+
fallbackSelector?: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Return focus to this layer's opener when it closes.
|
|
43
|
+
*
|
|
44
|
+
* The opener is what had focus when the layer first RENDERED, before any
|
|
45
|
+
* effect of its own (the voice session focuses End on open) moves focus into
|
|
46
|
+
* it. If that element is gone by the time the layer mounts, what focus fell
|
|
47
|
+
* back to then is used instead: the post-session transcript drawer renders
|
|
48
|
+
* while End still has focus, End is removed in that same commit, and by the
|
|
49
|
+
* time the drawer's effects run the voice session has handed focus back to
|
|
50
|
+
* the voice button.
|
|
51
|
+
*
|
|
52
|
+
* @param layerRef the layer's root element.
|
|
53
|
+
*/
|
|
54
|
+
export declare function useReturnFocus(layerRef: RefObject<Element | null>, { fallbackSelector }?: UseReturnFocusOptions): void;
|
|
55
|
+
export {};
|
|
56
|
+
//# sourceMappingURL=useReturnFocus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useReturnFocus.d.ts","sourceRoot":"","sources":["../../../src/shared/hooks/useReturnFocus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAuB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5D,0CAA0C;AAC1C,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAAC,CAAC;AAE3E,KAAK,SAAS,GAAG,OAAO,GAAG;IAAE,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,CAAA;CAAE,CAAC;AAOnE;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,mBAAmB,EACxB,KAAK,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,IAAI,GACpC,OAAO,CAIT;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,IAAI,SAAS,CAK9F;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,mBAAmB,EACxB,UAAU,EAAE,aAAa,CAAC,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,GACpD,OAAO,GAAG,IAAI,CAOhB;AAED,uEAAuE;AACvE,wBAAgB,cAAc,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,GAAG,IAAI,CAGvE;AAID,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,EACnC,EAAE,gBAAgB,EAAE,GAAE,qBAA0B,GAC/C,IAAI,CA0BN"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { useEffect as e, useState as t } from "react";
|
|
2
|
+
//#region src/shared/hooks/useReturnFocus.ts
|
|
3
|
+
function n(e) {
|
|
4
|
+
return "focus" in e && typeof e.focus == "function";
|
|
5
|
+
}
|
|
6
|
+
function r(e, t) {
|
|
7
|
+
let n = e.activeElement;
|
|
8
|
+
return !n || n === e.body || !n.isConnected ? !0 : !!(t && t.contains(n));
|
|
9
|
+
}
|
|
10
|
+
function i(e) {
|
|
11
|
+
return !e || !e.isConnected || !n(e) ? !1 : !("disabled" in e && e.disabled === !0);
|
|
12
|
+
}
|
|
13
|
+
function a(e, t) {
|
|
14
|
+
for (let n of t) if (i(n) && (n.focus(), e.activeElement === n)) return n;
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
function o(e) {
|
|
18
|
+
let t = e.activeElement;
|
|
19
|
+
return t && t !== e.body ? t : null;
|
|
20
|
+
}
|
|
21
|
+
var s = () => typeof document > "u" ? null : document;
|
|
22
|
+
function c(n, { fallbackSelector: i } = {}) {
|
|
23
|
+
let [c] = t(() => {
|
|
24
|
+
let e = s();
|
|
25
|
+
return e ? o(e) : null;
|
|
26
|
+
});
|
|
27
|
+
e(() => {
|
|
28
|
+
let e = s(), t = n.current;
|
|
29
|
+
if (!e || !t) return;
|
|
30
|
+
let l = i ? t.closest(i) : null, u = o(e), d = c?.isConnected ? c : u && !t.contains(u) ? u : null;
|
|
31
|
+
return () => {
|
|
32
|
+
t.isConnected || r(e, t) && a(e, [d, l]);
|
|
33
|
+
};
|
|
34
|
+
}, [
|
|
35
|
+
n,
|
|
36
|
+
c,
|
|
37
|
+
i
|
|
38
|
+
]);
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
41
|
+
export { r as focusWasDropped, o as focusedControl, a as returnFocusTo, c as useReturnFocus };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
1
|
+
import { CSSProperties, ReactNode } from 'react';
|
|
2
2
|
import { Brand, ThemeMode, Density, Typography, GlassIntensity } from './shell/ThemeProvider';
|
|
3
3
|
import { TranslationDictionary } from './shell/I18nProvider';
|
|
4
4
|
import { BurdenoffEventName } from '../events';
|
|
@@ -116,6 +116,17 @@ export interface AppShellObservabilityEnv {
|
|
|
116
116
|
VITE_OTEL_HTTP_ENDPOINT?: string;
|
|
117
117
|
VITE_BACKEND_AUDIT_ENDPOINT?: string;
|
|
118
118
|
}
|
|
119
|
+
/**
|
|
120
|
+
* sonner's `richColors` palette, mapped onto the semantic status tokens.
|
|
121
|
+
*
|
|
122
|
+
* Left to itself sonner paints rich toasts with its own hard-coded colours, and
|
|
123
|
+
* its error pair measures 4.35:1 — under the WCAG AA 4.5:1 floor for the
|
|
124
|
+
* toast's 13px text (BOFF-8074). The status tokens clear AA in the light, dark
|
|
125
|
+
* and high-contrast themes, and they follow the app's theme, which sonner's own
|
|
126
|
+
* `data-sonner-theme` (always `light` here) does not. Set inline on the toaster
|
|
127
|
+
* element, they override sonner's stylesheet defaults.
|
|
128
|
+
*/
|
|
129
|
+
export declare const RICH_TOAST_TOKEN_STYLE: CSSProperties;
|
|
119
130
|
export declare function resolveAppShellObservabilityConfig(productSlug: string, env: AppShellObservabilityEnv): AppShellObservabilityConfig;
|
|
120
131
|
export interface AppShellProviderProps {
|
|
121
132
|
config: AppShellConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppShellProvider.d.ts","sourceRoot":"","sources":["../../../src/shared/providers/AppShellProvider.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"AppShellProvider.d.ts","sourceRoot":"","sources":["../../../src/shared/providers/AppShellProvider.tsx"],"names":[],"mappings":"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"}
|