@devsym/graph-toolkit-react 1.0.0-next.9 → 1.1.0
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/AGENTS.md +8 -0
- package/CONTRIBUTING.md +64 -0
- package/README.md +257 -0
- package/dist/components/People/People.d.ts +16 -0
- package/dist/components/People/People.d.ts.map +1 -0
- package/dist/components/People/People.types.d.ts +103 -0
- package/dist/components/People/People.types.d.ts.map +1 -0
- package/dist/components/People/index.d.ts +6 -0
- package/dist/components/People/index.d.ts.map +1 -0
- package/dist/components/PeoplePicker/PeoplePicker.d.ts.map +1 -1
- package/dist/components/PeoplePicker/PeoplePicker.types.d.ts +35 -0
- package/dist/components/PeoplePicker/PeoplePicker.types.d.ts.map +1 -1
- package/dist/components/PeoplePicker/index.d.ts +1 -1
- package/dist/components/PeoplePicker/index.d.ts.map +1 -1
- package/dist/components/Person/Person.d.ts.map +1 -1
- package/dist/components/Person/Person.types.d.ts +48 -0
- package/dist/components/Person/Person.types.d.ts.map +1 -1
- package/dist/components/Person/index.d.ts +1 -1
- package/dist/components/Person/index.d.ts.map +1 -1
- package/dist/hooks/usePeopleList.d.ts +74 -0
- package/dist/hooks/usePeopleList.d.ts.map +1 -0
- package/dist/hooks/usePeopleSearch.d.ts +6 -1
- package/dist/hooks/usePeopleSearch.d.ts.map +1 -1
- package/dist/hooks/usePersonData.d.ts.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.mjs +1584 -1352
- package/dist/providers/IPersonDataProvider.d.ts +14 -1
- package/dist/providers/IPersonDataProvider.d.ts.map +1 -1
- package/dist/providers/MockProvider.d.ts.map +1 -1
- package/dist/utils/graph.d.ts +17 -0
- package/dist/utils/graph.d.ts.map +1 -1
- package/docs/assets/readme/banner.jpg +0 -0
- package/docs/assets/readme/banner.png +0 -0
- package/docs/assets/readme/provider-flow.svg +76 -0
- package/package.json +26 -25
- package/readme.md +0 -415
package/dist/index.mjs
CHANGED
|
@@ -1,1389 +1,1621 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import { Client as
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
}) => {
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
1
|
+
import * as e from "react";
|
|
2
|
+
import t, { createContext as n, useCallback as r, useContext as i, useEffect as a, useMemo as o, useRef as s, useState as c, useSyncExternalStore as l } from "react";
|
|
3
|
+
import { Avatar as u, AvatarGroup as d, AvatarGroupItem as f, AvatarGroupPopover as p, InteractionTag as m, InteractionTagPrimary as h, InteractionTagSecondary as g, Persona as _, Skeleton as v, SkeletonItem as y, Spinner as b, TagPicker as x, TagPickerControl as ee, TagPickerGroup as te, TagPickerInput as S, TagPickerList as ne, TagPickerOption as re } from "@fluentui/react-components";
|
|
4
|
+
import { jsx as C, jsxs as w } from "react/jsx-runtime";
|
|
5
|
+
import { Client as ie } from "@microsoft/microsoft-graph-client";
|
|
6
|
+
//#region src/utils/personCache.ts
|
|
7
|
+
var T = "graph-toolkit-person-cache", E = "personData", D = 1, O = {
|
|
8
|
+
enabled: !0,
|
|
9
|
+
userTtlMs: 3600 * 1e3,
|
|
10
|
+
photoTtlMs: 3600 * 1e3,
|
|
11
|
+
presenceTtlMs: 300 * 1e3
|
|
12
|
+
}, k = () => typeof window < "u" && window.indexedDB !== void 0, A = (e) => new Promise((t, n) => {
|
|
13
|
+
e.onsuccess = () => t(e.result), e.onerror = () => n(e.error);
|
|
14
|
+
}), j = () => new Promise((e, t) => {
|
|
15
|
+
if (!k()) {
|
|
16
|
+
t(/* @__PURE__ */ Error("IndexedDB unavailable"));
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
let n = window.indexedDB.open(T, D);
|
|
20
|
+
n.onupgradeneeded = () => {
|
|
21
|
+
let e = n.result;
|
|
22
|
+
e.objectStoreNames.contains(E) || e.createObjectStore(E);
|
|
23
|
+
}, n.onsuccess = () => e(n.result), n.onerror = () => t(n.error);
|
|
24
|
+
}), M = (e) => `person:${e.trim().toLowerCase()}`, N = (e, t) => e ? Date.now() - e < t : !1, P = async (e) => {
|
|
25
|
+
if (!k()) return null;
|
|
26
|
+
let t = null;
|
|
27
|
+
try {
|
|
28
|
+
return t = await j(), await A(t.transaction(E, "readonly").objectStore(E).get(e)) ?? null;
|
|
29
|
+
} catch {
|
|
30
|
+
return null;
|
|
31
|
+
} finally {
|
|
32
|
+
t?.close();
|
|
33
|
+
}
|
|
34
|
+
}, F = async (e, t) => {
|
|
35
|
+
if (!k()) return;
|
|
36
|
+
let n = null;
|
|
37
|
+
try {
|
|
38
|
+
n = await j(), await A(n.transaction(E, "readwrite").objectStore(E).put(t, e));
|
|
39
|
+
} catch {
|
|
40
|
+
return;
|
|
41
|
+
} finally {
|
|
42
|
+
n?.close();
|
|
43
|
+
}
|
|
44
|
+
}, I = n({
|
|
45
|
+
provider: null,
|
|
46
|
+
state: "Loading",
|
|
47
|
+
personCacheOptions: O
|
|
48
|
+
}), ae = ({ provider: e, children: t, personCacheOptions: n }) => {
|
|
49
|
+
let i = r(() => e?.getState?.() ?? "Loading", [e]), a = l(r((t) => (e.onStateChanged?.(t), () => {
|
|
50
|
+
let n = e;
|
|
51
|
+
typeof n.removeStateChangedHandler == "function" && n.removeStateChangedHandler(t);
|
|
52
|
+
}), [e]), i, i), s = o(() => ({
|
|
53
|
+
...O,
|
|
54
|
+
...n ?? {}
|
|
55
|
+
}), [n]), c = o(() => ({
|
|
56
|
+
provider: e,
|
|
57
|
+
state: a,
|
|
58
|
+
personCacheOptions: s
|
|
59
|
+
}), [
|
|
60
|
+
e,
|
|
61
|
+
a,
|
|
62
|
+
s
|
|
63
|
+
]);
|
|
64
|
+
return /* @__PURE__ */ C(I.Provider, {
|
|
65
|
+
value: c,
|
|
66
|
+
children: t
|
|
67
|
+
});
|
|
68
|
+
}, L = () => {
|
|
69
|
+
let { provider: e } = i(I);
|
|
70
|
+
return e;
|
|
71
|
+
}, R = () => {
|
|
72
|
+
let { state: e } = i(I);
|
|
73
|
+
return e;
|
|
74
|
+
}, z = () => {
|
|
75
|
+
let { personCacheOptions: e } = i(I);
|
|
76
|
+
return e;
|
|
77
|
+
}, oe = (e) => ie.init({ authProvider: async (t) => {
|
|
78
|
+
try {
|
|
79
|
+
t(null, await e.getAccessToken());
|
|
80
|
+
} catch (e) {
|
|
81
|
+
t(e, null);
|
|
82
|
+
}
|
|
83
|
+
} }), se = (e) => {
|
|
84
|
+
if (!e) return "";
|
|
85
|
+
let t = e.trim().split(" ");
|
|
86
|
+
return t.length === 1 ? t[0].substring(0, 2).toUpperCase() : (t[0][0] + t[t.length - 1][0]).toUpperCase();
|
|
87
|
+
}, ce = async (e) => {
|
|
88
|
+
if (!e) return null;
|
|
89
|
+
if (typeof e == "string") return e;
|
|
90
|
+
let t = e instanceof Blob ? e : e instanceof ArrayBuffer ? new Blob([e]) : null;
|
|
91
|
+
return t ? new Promise((e, n) => {
|
|
92
|
+
let r = new FileReader();
|
|
93
|
+
r.onloadend = () => e(typeof r.result == "string" ? r.result : null), r.onerror = () => n(r.error), r.readAsDataURL(t);
|
|
94
|
+
}) : null;
|
|
95
|
+
}, B = (e) => encodeURIComponent(e.trim()), V = () => {
|
|
96
|
+
let e = L(), t = R();
|
|
97
|
+
return o(() => !e || t !== "SignedIn" ? null : oe(e), [e, t]);
|
|
98
|
+
}, H = (e) => typeof e == "object" && !!e && typeof e.getPersonData == "function", U = (e) => typeof e == "object" && !!e && typeof e.searchPeople == "function", le = [
|
|
99
|
+
"id",
|
|
100
|
+
"displayName",
|
|
101
|
+
"jobTitle",
|
|
102
|
+
"mail",
|
|
103
|
+
"department",
|
|
104
|
+
"officeLocation",
|
|
105
|
+
"userPrincipalName"
|
|
106
|
+
], ue = (e) => {
|
|
107
|
+
let t = V(), n = L(), r = R(), i = z(), { userId: o, userPrincipalName: s, fetchPresence: l = !1, fetchPhoto: u = !0, selectFields: d } = e, f = [...new Set([...le, ...(d ?? []).map((e) => e.trim()).filter((e) => e.length > 0 && /^[a-zA-Z0-9_./]+$/.test(e))])].join(","), [p, m] = c({
|
|
108
|
+
user: null,
|
|
109
|
+
presence: null,
|
|
110
|
+
photoUrl: null,
|
|
111
|
+
loading: !0,
|
|
112
|
+
error: null
|
|
113
|
+
});
|
|
114
|
+
return a(() => {
|
|
115
|
+
let e = !1, a = f.split(",").filter((e) => !le.includes(e));
|
|
116
|
+
return (async () => {
|
|
117
|
+
let c = o || s;
|
|
118
|
+
if (H(n)) {
|
|
119
|
+
try {
|
|
120
|
+
let t = await n.getPersonData({
|
|
121
|
+
identifier: c,
|
|
122
|
+
fetchPresence: l,
|
|
123
|
+
fetchPhoto: u,
|
|
124
|
+
selectFields: a.length > 0 ? a : void 0
|
|
125
|
+
});
|
|
126
|
+
e || m({
|
|
127
|
+
user: t.user,
|
|
128
|
+
presence: t.presence,
|
|
129
|
+
photoUrl: t.photoUrl,
|
|
130
|
+
loading: !1,
|
|
131
|
+
error: null
|
|
132
|
+
});
|
|
133
|
+
} catch (t) {
|
|
134
|
+
e || m({
|
|
135
|
+
user: null,
|
|
136
|
+
presence: null,
|
|
137
|
+
photoUrl: null,
|
|
138
|
+
loading: !1,
|
|
139
|
+
error: t
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
if (r !== "SignedIn") {
|
|
145
|
+
e || m({
|
|
146
|
+
user: null,
|
|
147
|
+
presence: null,
|
|
148
|
+
photoUrl: null,
|
|
149
|
+
loading: !1,
|
|
150
|
+
error: r === "SignedOut" ? null : /* @__PURE__ */ Error("Provider not signed in")
|
|
151
|
+
});
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
if (!t) {
|
|
155
|
+
e || m((e) => ({
|
|
156
|
+
...e,
|
|
157
|
+
loading: !0
|
|
158
|
+
}));
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
if (!c) {
|
|
162
|
+
e || m({
|
|
163
|
+
user: null,
|
|
164
|
+
presence: null,
|
|
165
|
+
photoUrl: null,
|
|
166
|
+
loading: !1,
|
|
167
|
+
error: null
|
|
168
|
+
});
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
let d = M(c), p = i.enabled ? await P(d) : null, h = !!(p?.user && N(p.userCachedAt, i.userTtlMs)), g = !!(p?.presenceCachedAt && N(p.presenceCachedAt, i.presenceTtlMs)), _ = !!(p?.photoCachedAt && N(p.photoCachedAt, i.photoTtlMs));
|
|
172
|
+
if (h && (!l || g) && (!u || _)) {
|
|
173
|
+
e || m({
|
|
174
|
+
user: p?.user ?? null,
|
|
175
|
+
presence: l ? p?.presence ?? null : null,
|
|
176
|
+
photoUrl: u ? p?.photoUrl ?? null : null,
|
|
177
|
+
loading: !1,
|
|
178
|
+
error: null
|
|
179
|
+
});
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
try {
|
|
183
|
+
m((e) => ({
|
|
184
|
+
...e,
|
|
185
|
+
loading: !0,
|
|
186
|
+
error: null
|
|
187
|
+
}));
|
|
188
|
+
let n = c.toLowerCase() === "me", r = Date.now(), a = !1, o = !1, s = !1, v = h ? p?.user ?? null : null;
|
|
189
|
+
if (v || (v = await t.api(n ? "/me" : `/users/${B(c)}`).select(f).get(), a = !0), e) return;
|
|
190
|
+
let y = null, b = null;
|
|
191
|
+
if (l) {
|
|
192
|
+
if (g) y = p?.presence ?? null;
|
|
193
|
+
else if (v?.id) {
|
|
194
|
+
try {
|
|
195
|
+
y = await t.api(n ? "/me/presence" : `/users/${B(v.id)}/presence`).get();
|
|
196
|
+
} catch (e) {
|
|
197
|
+
console.warn("Failed to fetch presence:", e);
|
|
198
|
+
}
|
|
199
|
+
o = !0;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
if (u) {
|
|
203
|
+
if (_) b = p?.photoUrl ?? null;
|
|
204
|
+
else if (v?.id) {
|
|
205
|
+
try {
|
|
206
|
+
b = await ce(await t.api(n ? "/me/photo/$value" : `/users/${B(v.id)}/photo/$value`).get());
|
|
207
|
+
} catch (e) {
|
|
208
|
+
console.warn("Failed to fetch photo:", e);
|
|
209
|
+
}
|
|
210
|
+
s = !0;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
let x = { ...p ?? {} };
|
|
214
|
+
a && v && (x.user = v, x.userCachedAt = r), l && (o || g) && (x.presence = o ? y : p?.presence, x.presenceCachedAt = o ? r : p?.presenceCachedAt), u && (s || _) && (x.photoUrl = s ? b : p?.photoUrl, x.photoCachedAt = s ? r : p?.photoCachedAt), i.enabled && (a || o || s) && x.user && await F(d, x), e || m({
|
|
215
|
+
user: v,
|
|
216
|
+
presence: y,
|
|
217
|
+
photoUrl: b,
|
|
218
|
+
loading: !1,
|
|
219
|
+
error: null
|
|
220
|
+
});
|
|
221
|
+
} catch (t) {
|
|
222
|
+
e || m({
|
|
223
|
+
user: null,
|
|
224
|
+
presence: null,
|
|
225
|
+
photoUrl: null,
|
|
226
|
+
loading: !1,
|
|
227
|
+
error: t
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
})(), () => {
|
|
231
|
+
e = !0;
|
|
232
|
+
};
|
|
233
|
+
}, [
|
|
234
|
+
t,
|
|
235
|
+
n,
|
|
236
|
+
r,
|
|
237
|
+
o,
|
|
238
|
+
s,
|
|
239
|
+
l,
|
|
240
|
+
u,
|
|
241
|
+
i,
|
|
242
|
+
f
|
|
243
|
+
]), p;
|
|
244
|
+
}, de = (e) => {
|
|
245
|
+
switch (e?.toLowerCase()) {
|
|
246
|
+
case "available":
|
|
247
|
+
case "availableidle": return "available";
|
|
248
|
+
case "away":
|
|
249
|
+
case "berightback": return "away";
|
|
250
|
+
case "busy":
|
|
251
|
+
case "busyidle":
|
|
252
|
+
case "donotdisturb": return "busy";
|
|
253
|
+
default: return "offline";
|
|
254
|
+
}
|
|
255
|
+
}, fe = {
|
|
256
|
+
avatar: [
|
|
257
|
+
void 0,
|
|
258
|
+
void 0,
|
|
259
|
+
void 0,
|
|
260
|
+
void 0
|
|
261
|
+
],
|
|
262
|
+
oneline: [
|
|
263
|
+
"displayName",
|
|
264
|
+
void 0,
|
|
265
|
+
void 0,
|
|
266
|
+
void 0
|
|
267
|
+
],
|
|
268
|
+
twolines: [
|
|
269
|
+
"displayName",
|
|
270
|
+
"jobTitle",
|
|
271
|
+
void 0,
|
|
272
|
+
void 0
|
|
273
|
+
],
|
|
274
|
+
threelines: [
|
|
275
|
+
"displayName",
|
|
276
|
+
"jobTitle",
|
|
277
|
+
"department",
|
|
278
|
+
void 0
|
|
279
|
+
],
|
|
280
|
+
fourlines: [
|
|
281
|
+
"displayName",
|
|
282
|
+
"jobTitle",
|
|
283
|
+
"department",
|
|
284
|
+
"officeLocation,mail"
|
|
285
|
+
]
|
|
286
|
+
}, pe = new Set(["presenceActivity", "presenceAvailability"]), me = new Set(["email", ...pe]), he = 16, ge = 12, _e = {
|
|
287
|
+
1: "8rem",
|
|
288
|
+
2: "6rem",
|
|
289
|
+
3: "5rem",
|
|
290
|
+
4: "7rem"
|
|
291
|
+
}, ve = (e) => e?.split(",").map((e) => e.trim()).filter(Boolean) ?? [], W = (e) => {
|
|
292
|
+
if (e != null) {
|
|
293
|
+
if (typeof e == "string") return e || void 0;
|
|
294
|
+
if (typeof e == "number" || typeof e == "boolean") return String(e);
|
|
295
|
+
if (Array.isArray(e)) {
|
|
296
|
+
let t = e.map((e) => W(e)).filter((e) => !!e);
|
|
297
|
+
return t.length > 0 ? t.join(", ") : void 0;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}, ye = (e) => W(e.mail) ?? W(e.email) ?? W(e.userPrincipalName), G = (e, t) => {
|
|
301
|
+
let n = ve(t);
|
|
302
|
+
for (let t of n) switch (t) {
|
|
303
|
+
case "mail":
|
|
304
|
+
case "email": {
|
|
305
|
+
let t = ye(e);
|
|
306
|
+
if (t) return t;
|
|
307
|
+
break;
|
|
308
|
+
}
|
|
309
|
+
default: {
|
|
310
|
+
let n = W(e[t]);
|
|
311
|
+
if (n) return n;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}, be = (e, t, n) => ({
|
|
315
|
+
line: e,
|
|
316
|
+
person: t,
|
|
317
|
+
text: n
|
|
318
|
+
}), K = (e, t, n, r) => r ? r(be(e, t, n)) : n, q = (e) => /* @__PURE__ */ C(v, { children: /* @__PURE__ */ C(y, {
|
|
319
|
+
size: e === 1 ? he : ge,
|
|
320
|
+
style: {
|
|
321
|
+
width: _e[e],
|
|
322
|
+
maxWidth: "100%"
|
|
323
|
+
}
|
|
324
|
+
}) }), J = (e, t, n) => n ?? fe[e][t - 1], xe = (e) => {
|
|
325
|
+
switch (e) {
|
|
326
|
+
case "avatar": return 0;
|
|
327
|
+
case "oneline": return 1;
|
|
328
|
+
case "twolines": return 2;
|
|
329
|
+
case "threelines": return 3;
|
|
330
|
+
default: return 4;
|
|
331
|
+
}
|
|
332
|
+
}, Y = (e, t) => t <= xe(e), Se = (e) => [...new Set(e.flatMap((e) => ve(e)))].filter((e) => !me.has(e)), Ce = ({ userId: e, userPrincipalName: t, email: n, personDetails: r, view: i = "oneline", showPresence: s = !1, line1Property: c, line2Property: l, line3Property: u, line4Property: d, renderLine1: f, renderLine2: p, renderLine3: m, renderLine4: h, fetchImage: g = !0, onUpdated: v, ...y }) => {
|
|
333
|
+
let b = i === "avatar", x = Y(i, 1) ? J(i, 1, c) : void 0, ee = Y(i, 2) ? J(i, 2, l) : void 0, te = Y(i, 3) ? J(i, 3, u) : void 0, S = Y(i, 4) ? J(i, 4, d) : void 0, ne = [
|
|
334
|
+
x,
|
|
335
|
+
ee,
|
|
336
|
+
te,
|
|
337
|
+
S
|
|
338
|
+
].some((e) => ve(e).some((e) => pe.has(e))), { user: re, presence: w, photoUrl: ie, loading: T, error: E } = ue({
|
|
339
|
+
userId: r ? void 0 : e || t || n,
|
|
340
|
+
fetchPresence: s || ne,
|
|
341
|
+
fetchPhoto: g,
|
|
342
|
+
selectFields: Se([
|
|
343
|
+
x,
|
|
344
|
+
ee,
|
|
345
|
+
te,
|
|
346
|
+
S
|
|
347
|
+
])
|
|
348
|
+
}), D = r || re, O = D || null, k = o(() => O ? {
|
|
349
|
+
...O,
|
|
350
|
+
email: n ?? W(O.email),
|
|
351
|
+
presenceActivity: w?.activity ?? W(O.presenceActivity),
|
|
352
|
+
presenceAvailability: w?.availability ?? W(O.presenceAvailability)
|
|
353
|
+
} : null, [
|
|
354
|
+
n,
|
|
355
|
+
w?.activity,
|
|
356
|
+
w?.availability,
|
|
357
|
+
O
|
|
358
|
+
]);
|
|
359
|
+
if (a(() => {
|
|
360
|
+
if (!(!v || T)) {
|
|
361
|
+
if (r && k) {
|
|
362
|
+
v({
|
|
363
|
+
trigger: "personDetailsChanged",
|
|
364
|
+
person: k,
|
|
365
|
+
loading: !1,
|
|
366
|
+
error: E
|
|
367
|
+
});
|
|
368
|
+
return;
|
|
369
|
+
}
|
|
370
|
+
if (E) {
|
|
371
|
+
v({
|
|
372
|
+
trigger: "personLoadFailed",
|
|
373
|
+
person: null,
|
|
374
|
+
loading: !1,
|
|
375
|
+
error: E
|
|
376
|
+
});
|
|
377
|
+
return;
|
|
378
|
+
}
|
|
379
|
+
k && v({
|
|
380
|
+
trigger: "personLoaded",
|
|
381
|
+
person: k,
|
|
382
|
+
loading: !1,
|
|
383
|
+
error: null
|
|
384
|
+
});
|
|
385
|
+
}
|
|
386
|
+
}, [
|
|
387
|
+
E,
|
|
388
|
+
T,
|
|
389
|
+
v,
|
|
390
|
+
r,
|
|
391
|
+
k
|
|
392
|
+
]), T) return /* @__PURE__ */ C(_, {
|
|
393
|
+
...y,
|
|
394
|
+
name: b ? void 0 : y.name,
|
|
395
|
+
primaryText: b || !Y(i, 1) ? void 0 : y.primaryText === void 0 ? q(1) : y.primaryText,
|
|
396
|
+
secondaryText: b || !Y(i, 2) ? void 0 : y.secondaryText === void 0 ? q(2) : y.secondaryText,
|
|
397
|
+
tertiaryText: b || !Y(i, 3) ? void 0 : y.tertiaryText === void 0 ? q(3) : y.tertiaryText,
|
|
398
|
+
quaternaryText: b || !Y(i, 4) ? void 0 : y.quaternaryText === void 0 ? q(4) : y.quaternaryText
|
|
399
|
+
});
|
|
400
|
+
if (!D) return null;
|
|
401
|
+
let A = k ?? O, j = D.displayName || "Unknown User", M = se(j), N = G(A, x), P = G(A, ee), F = G(A, te), I = G(A, S), ae = Y(i, 1) ? x && N !== j || f ? K(1, A, N, f) : y.primaryText : void 0, L = Y(i, 2) ? K(2, A, P, p) : void 0, R = Y(i, 3) ? K(3, A, F, m) : void 0, z = Y(i, 4) ? K(4, A, I, h) : void 0, oe = s && w ? { status: de(w.availability) } : void 0, ce = y.presence ?? oe, B = (typeof A.photoUrl == "string" && A.photoUrl.length > 0 ? A.photoUrl : void 0) ?? ie ?? void 0, V = y.avatar ?? {
|
|
402
|
+
image: B ? { src: B } : void 0,
|
|
403
|
+
initials: B ? void 0 : M,
|
|
404
|
+
name: j
|
|
405
|
+
}, H = b ? void 0 : y.name ?? j, U = b ? void 0 : y.primaryText ?? ae, le = b ? void 0 : y.secondaryText ?? L, fe = b ? void 0 : y.tertiaryText ?? R, me = b ? void 0 : y.quaternaryText ?? z;
|
|
406
|
+
return /* @__PURE__ */ C(_, {
|
|
407
|
+
...y,
|
|
408
|
+
name: H,
|
|
409
|
+
primaryText: U,
|
|
410
|
+
avatar: V,
|
|
411
|
+
presence: ce,
|
|
412
|
+
secondaryText: le,
|
|
413
|
+
tertiaryText: fe,
|
|
414
|
+
quaternaryText: me
|
|
415
|
+
});
|
|
416
|
+
}, we = [
|
|
417
|
+
"id",
|
|
418
|
+
"displayName",
|
|
419
|
+
"mail",
|
|
420
|
+
"userPrincipalName",
|
|
421
|
+
"jobTitle",
|
|
422
|
+
"department"
|
|
423
|
+
], Te = new Set(we), Ee = 10, De = /^[a-zA-Z0-9_./]+$/, Oe = "asc", ke = (e) => ({
|
|
424
|
+
id: e.id ?? e.userPrincipalName ?? e.mail ?? "unknown-user",
|
|
425
|
+
givenName: e.givenName ?? null,
|
|
426
|
+
surname: e.surname ?? null,
|
|
427
|
+
displayName: e.displayName ?? null,
|
|
428
|
+
mail: e.mail ?? null,
|
|
429
|
+
userPrincipalName: e.userPrincipalName ?? null,
|
|
430
|
+
jobTitle: e.jobTitle ?? null,
|
|
431
|
+
department: e.department ?? null
|
|
432
|
+
}), Ae = (e, t) => ({
|
|
433
|
+
...e,
|
|
434
|
+
presenceActivity: t?.activity ?? null,
|
|
435
|
+
presenceAvailability: t?.availability ?? null
|
|
436
|
+
}), je = (e) => e.id ?? e.userPrincipalName ?? e.mail ?? void 0, Me = (e) => e.userPrincipalName ?? e.mail ?? e.id ?? void 0, Ne = (e) => Array.from(new Set((e ?? []).map((e) => e.trim()).filter(Boolean))), Pe = (e) => Array.from(new Set((e ?? []).map((e) => e.trim()).filter((e) => e.length > 0 && De.test(e)))), Fe = (e, t) => {
|
|
437
|
+
let n = [...we, ...Pe(e)];
|
|
438
|
+
return (t === "givenName" || t === "surname") && n.push(t), Array.from(new Set(n));
|
|
439
|
+
}, Ie = (e) => {
|
|
440
|
+
let t = e.filter((e) => !Te.has(e));
|
|
441
|
+
return t.length > 0 ? t : void 0;
|
|
442
|
+
}, Le = (e, t) => {
|
|
443
|
+
let n = e[t];
|
|
444
|
+
return typeof n == "string" && n.trim().length > 0 ? n : e.displayName ?? e.mail ?? e.userPrincipalName ?? e.id;
|
|
445
|
+
}, Re = (e, t, n = Oe) => {
|
|
446
|
+
if (!t) return e;
|
|
447
|
+
let r = new Intl.Collator(void 0, {
|
|
448
|
+
sensitivity: "base",
|
|
449
|
+
numeric: !0
|
|
450
|
+
}), i = n === "desc" ? -1 : 1;
|
|
451
|
+
return e.map((e, t) => ({
|
|
452
|
+
person: e,
|
|
453
|
+
index: t
|
|
454
|
+
})).sort((e, n) => {
|
|
455
|
+
let a = r.compare(Le(e.person, t), Le(n.person, t));
|
|
456
|
+
return a === 0 ? e.index - n.index : a * i;
|
|
457
|
+
}).map((e) => e.person);
|
|
458
|
+
}, ze = (e) => {
|
|
459
|
+
let t = V(), n = L(), r = R(), i = JSON.stringify(e?.people ?? null), s = JSON.stringify(Ne(e?.userIds)), l = JSON.stringify(Pe(e?.selectFields).filter((e) => !Te.has(e))), u = o(() => {
|
|
460
|
+
if (i !== "null") return JSON.parse(i);
|
|
461
|
+
}, [i]), d = o(() => JSON.parse(s), [s]), f = o(() => JSON.parse(l), [l]), p = o(() => Fe(f, e?.sortBy), [f, e?.sortBy]), m = o(() => Ie(p), [p]), h = o(() => e?.groupId?.trim(), [e?.groupId]), g = e?.maxPeople ?? Ee, _ = e?.showPresence ?? !1, v = e?.sortBy, y = e?.sortDirection ?? Oe, [b, x] = c({
|
|
462
|
+
people: [],
|
|
463
|
+
loading: !0,
|
|
464
|
+
error: null
|
|
465
|
+
});
|
|
466
|
+
return a(() => {
|
|
467
|
+
let e = !1, i = async (e) => {
|
|
468
|
+
if (H(n)) {
|
|
469
|
+
let t = await n.getPersonData({
|
|
470
|
+
identifier: e,
|
|
471
|
+
fetchPresence: _,
|
|
472
|
+
fetchPhoto: !0,
|
|
473
|
+
selectFields: m
|
|
474
|
+
});
|
|
475
|
+
return t.user ? {
|
|
476
|
+
...ke(t.user),
|
|
477
|
+
photoUrl: t.photoUrl,
|
|
478
|
+
presenceActivity: t.presence?.activity ?? null,
|
|
479
|
+
presenceAvailability: t.presence?.availability ?? null
|
|
480
|
+
} : null;
|
|
481
|
+
}
|
|
482
|
+
if (r !== "SignedIn" || !t) return null;
|
|
483
|
+
let i = e.toLowerCase() === "me", a = await t.api(i ? "/me" : `/users/${B(e)}`).select(p.join(",")).get(), o = null, s = null;
|
|
484
|
+
if (_ && a.id) try {
|
|
485
|
+
o = await t.api(i ? "/me/presence" : `/users/${B(a.id)}/presence`).get();
|
|
486
|
+
} catch {
|
|
487
|
+
o = null;
|
|
488
|
+
}
|
|
489
|
+
if (a.id) try {
|
|
490
|
+
s = await ce(await t.api(i ? "/me/photo/$value" : `/users/${B(a.id)}/photo/$value`).get());
|
|
491
|
+
} catch {
|
|
492
|
+
s = null;
|
|
493
|
+
}
|
|
494
|
+
return {
|
|
495
|
+
...ke(a),
|
|
496
|
+
photoUrl: s,
|
|
497
|
+
presenceActivity: o?.activity ?? null,
|
|
498
|
+
presenceAvailability: o?.availability ?? null
|
|
499
|
+
};
|
|
500
|
+
}, a = async (e, t = je) => (await Promise.all(e.map(async (e) => {
|
|
501
|
+
let n = t(e);
|
|
502
|
+
if (!n) return _ ? Ae(e, null) : e;
|
|
503
|
+
let r = _ && !e.presenceAvailability && !e.presenceActivity, a = !e.photoUrl;
|
|
504
|
+
if (!r && !a) return e;
|
|
505
|
+
try {
|
|
506
|
+
let t = await i(n);
|
|
507
|
+
return t ? {
|
|
508
|
+
...e,
|
|
509
|
+
photoUrl: e.photoUrl ?? t.photoUrl,
|
|
510
|
+
presenceActivity: e.presenceActivity ?? t.presenceActivity,
|
|
511
|
+
presenceAvailability: e.presenceAvailability ?? t.presenceAvailability
|
|
512
|
+
} : e;
|
|
513
|
+
} catch {
|
|
514
|
+
return e;
|
|
515
|
+
}
|
|
516
|
+
}))).filter((e) => !!e.id);
|
|
517
|
+
return (async () => {
|
|
518
|
+
if (e || x((e) => ({
|
|
519
|
+
...e,
|
|
520
|
+
loading: !0,
|
|
521
|
+
error: null
|
|
522
|
+
})), u) {
|
|
523
|
+
let t = _ || u.some((e) => !e.photoUrl) ? await a(u, Me) : u;
|
|
524
|
+
e || x({
|
|
525
|
+
people: Re(t, v, y),
|
|
526
|
+
loading: !1,
|
|
527
|
+
error: null
|
|
528
|
+
});
|
|
529
|
+
return;
|
|
530
|
+
}
|
|
531
|
+
if (d.length > 0) {
|
|
532
|
+
let t = (await Promise.allSettled(d.map((e) => i(e)))).flatMap((e) => e.status === "fulfilled" && e.value ? [e.value] : []);
|
|
533
|
+
e || x({
|
|
534
|
+
people: Re(t, v, y),
|
|
535
|
+
loading: !1,
|
|
536
|
+
error: null
|
|
537
|
+
});
|
|
538
|
+
return;
|
|
539
|
+
}
|
|
540
|
+
if (!U(n) && r !== "SignedIn") {
|
|
541
|
+
e || x({
|
|
542
|
+
people: [],
|
|
543
|
+
loading: !1,
|
|
544
|
+
error: null
|
|
545
|
+
});
|
|
546
|
+
return;
|
|
547
|
+
}
|
|
548
|
+
try {
|
|
549
|
+
let i = [];
|
|
550
|
+
h ? t && r === "SignedIn" && (i = ((await t.api(`/groups/${B(h)}/members/microsoft.graph.user`).select(p.join(",")).top(g).get()).value ?? []).map(ke)) : U(n) ? i = (await n.searchPeople("", g)).map((e) => ({
|
|
551
|
+
...e,
|
|
552
|
+
presenceActivity: null,
|
|
553
|
+
presenceAvailability: null
|
|
554
|
+
})) : t && r === "SignedIn" && (i = ((await t.api("/users").select(p.join(",")).top(g).get()).value ?? []).map(ke)), (_ || i.some((e) => !e.photoUrl)) && (i = await a(i)), e || x({
|
|
555
|
+
people: Re(i, v, y),
|
|
556
|
+
loading: !1,
|
|
557
|
+
error: null
|
|
558
|
+
});
|
|
559
|
+
} catch (t) {
|
|
560
|
+
e || x({
|
|
561
|
+
people: [],
|
|
562
|
+
loading: !1,
|
|
563
|
+
error: t
|
|
564
|
+
});
|
|
565
|
+
}
|
|
566
|
+
})(), () => {
|
|
567
|
+
e = !0;
|
|
568
|
+
};
|
|
569
|
+
}, [
|
|
570
|
+
u,
|
|
571
|
+
i,
|
|
572
|
+
t,
|
|
573
|
+
h,
|
|
574
|
+
g,
|
|
575
|
+
n,
|
|
576
|
+
m,
|
|
577
|
+
r,
|
|
578
|
+
p,
|
|
579
|
+
_,
|
|
580
|
+
v,
|
|
581
|
+
y,
|
|
582
|
+
d
|
|
583
|
+
]), b;
|
|
584
|
+
}, Be = 3, Ve = 10, He = (e) => {
|
|
585
|
+
switch (e?.toLowerCase()) {
|
|
586
|
+
case "available":
|
|
587
|
+
case "availableidle": return "available";
|
|
588
|
+
case "away":
|
|
589
|
+
case "berightback": return "away";
|
|
590
|
+
case "busy":
|
|
591
|
+
case "busyidle":
|
|
592
|
+
case "donotdisturb": return "busy";
|
|
593
|
+
case "offline":
|
|
594
|
+
case "presenceunknown": return "offline";
|
|
595
|
+
default: return;
|
|
596
|
+
}
|
|
597
|
+
}, Ue = (e) => e.displayName ?? e.mail ?? e.userPrincipalName ?? e.id, We = (e) => {
|
|
598
|
+
let t = Ue(e), n = He(e.presenceAvailability);
|
|
599
|
+
return /* @__PURE__ */ C(f, {
|
|
600
|
+
name: t,
|
|
601
|
+
avatar: {
|
|
602
|
+
name: t,
|
|
603
|
+
image: e.photoUrl ? { src: e.photoUrl } : void 0,
|
|
604
|
+
badge: n ? { status: n } : void 0,
|
|
605
|
+
color: "colorful"
|
|
606
|
+
}
|
|
607
|
+
}, e.id);
|
|
608
|
+
}, Ge = ({ people: e, userIds: t, selectFields: n, sortBy: r, sortDirection: i, groupId: o, showMax: s = Be, showPresence: c = !1, layout: l = "stack", size: u = 32, onUpdated: f, ...m }) => {
|
|
609
|
+
let { people: h, loading: g, error: _ } = ze({
|
|
610
|
+
people: e,
|
|
611
|
+
userIds: t,
|
|
612
|
+
selectFields: n,
|
|
613
|
+
sortBy: r,
|
|
614
|
+
sortDirection: i,
|
|
615
|
+
groupId: o,
|
|
616
|
+
maxPeople: Math.max(Ve, s + 5),
|
|
617
|
+
showPresence: c
|
|
618
|
+
});
|
|
619
|
+
if (a(() => {
|
|
620
|
+
if (!f || g) return;
|
|
621
|
+
let t = "peopleLoaded";
|
|
622
|
+
_ ? t = "peopleLoadFailed" : e && (t = "peopleChanged"), f({
|
|
623
|
+
trigger: t,
|
|
624
|
+
people: h,
|
|
625
|
+
loading: !1,
|
|
626
|
+
error: _
|
|
627
|
+
});
|
|
628
|
+
}, [
|
|
629
|
+
_,
|
|
630
|
+
g,
|
|
631
|
+
f,
|
|
632
|
+
e,
|
|
633
|
+
h
|
|
634
|
+
]), g) return /* @__PURE__ */ C(b, { size: "tiny" });
|
|
635
|
+
if (h.length === 0) return null;
|
|
636
|
+
let v = Math.max(0, s), y = h.slice(0, v), x = h.slice(v);
|
|
637
|
+
return /* @__PURE__ */ w(d, {
|
|
638
|
+
layout: l,
|
|
639
|
+
size: u,
|
|
640
|
+
...m,
|
|
641
|
+
children: [y.map(We), x.length > 0 && /* @__PURE__ */ C(p, {
|
|
642
|
+
count: x.length,
|
|
643
|
+
children: x.map(We)
|
|
644
|
+
})]
|
|
645
|
+
});
|
|
646
|
+
}, Ke = typeof window > "u" ? global : window, qe = "@griffel/";
|
|
647
|
+
function Je(e, t) {
|
|
648
|
+
return Ke[Symbol.for(qe + e)] || (Ke[Symbol.for(qe + e)] = t), Ke[Symbol.for(qe + e)];
|
|
373
649
|
}
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
case 2:
|
|
386
|
-
e ^= (t.charCodeAt(s + 1) & 255) << 8;
|
|
387
|
-
case 1:
|
|
388
|
-
e ^= t.charCodeAt(s) & 255, e = /* Math.imul(h, m): */
|
|
389
|
-
(e & 65535) * 1540483477 + ((e >>> 16) * 59797 << 16);
|
|
390
|
-
}
|
|
391
|
-
return e ^= e >>> 13, e = /* Math.imul(h, m): */
|
|
392
|
-
(e & 65535) * 1540483477 + ((e >>> 16) * 59797 << 16), ((e ^ e >>> 15) >>> 0).toString(36);
|
|
650
|
+
var Ye = /* @__PURE__ */ Je("DEBUG_RESET_CLASSES", {}), X = /* @__PURE__ */ Je("DEFINITION_LOOKUP_TABLE", {}), Z = "data-make-styles-bucket", Xe = "data-priority", Ze = process.env.NODE_ENV === "production" ? 10 : 18;
|
|
651
|
+
//#endregion
|
|
652
|
+
//#region node_modules/@emotion/hash/dist/emotion-hash.esm.js
|
|
653
|
+
function Qe(e) {
|
|
654
|
+
for (var t = 0, n, r = 0, i = e.length; i >= 4; ++r, i -= 4) n = e.charCodeAt(r) & 255 | (e.charCodeAt(++r) & 255) << 8 | (e.charCodeAt(++r) & 255) << 16 | (e.charCodeAt(++r) & 255) << 24, n = (n & 65535) * 1540483477 + ((n >>> 16) * 59797 << 16), n ^= n >>> 24, t = (n & 65535) * 1540483477 + ((n >>> 16) * 59797 << 16) ^ (t & 65535) * 1540483477 + ((t >>> 16) * 59797 << 16);
|
|
655
|
+
switch (i) {
|
|
656
|
+
case 3: t ^= (e.charCodeAt(r + 2) & 255) << 16;
|
|
657
|
+
case 2: t ^= (e.charCodeAt(r + 1) & 255) << 8;
|
|
658
|
+
case 1: t ^= e.charCodeAt(r) & 255, t = (t & 65535) * 1540483477 + ((t >>> 16) * 59797 << 16);
|
|
659
|
+
}
|
|
660
|
+
return t ^= t >>> 13, t = (t & 65535) * 1540483477 + ((t >>> 16) * 59797 << 16), ((t ^ t >>> 15) >>> 0).toString(36);
|
|
393
661
|
}
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
662
|
+
//#endregion
|
|
663
|
+
//#region node_modules/@griffel/core/src/runtime/utils/hashSequence.js
|
|
664
|
+
function $e(e) {
|
|
665
|
+
let t = e.length;
|
|
666
|
+
if (t === 7) return e;
|
|
667
|
+
for (let n = t; n < 7; n++) e += "0";
|
|
668
|
+
return e;
|
|
401
669
|
}
|
|
402
|
-
function
|
|
403
|
-
|
|
670
|
+
function et(e, t, n = []) {
|
|
671
|
+
return process.env.NODE_ENV === "production" ? "___" + $e(Qe(e + t)) : "___" + $e(Qe(e + t)) + "_" + $e(Qe(n.join("")));
|
|
404
672
|
}
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
673
|
+
//#endregion
|
|
674
|
+
//#region node_modules/@griffel/core/src/runtime/reduceToClassNameForSlots.js
|
|
675
|
+
function tt(e, t) {
|
|
676
|
+
let n = "", r = "";
|
|
677
|
+
for (let i in e) {
|
|
678
|
+
let a = e[i];
|
|
679
|
+
if (a === 0) {
|
|
680
|
+
r += i + " ";
|
|
681
|
+
continue;
|
|
682
|
+
}
|
|
683
|
+
let o = Array.isArray(a), s = t === "rtl" ? (o ? a[1] : a) + " " : (o ? a[0] : a) + " ";
|
|
684
|
+
n += s, r += s;
|
|
685
|
+
}
|
|
686
|
+
return [n.slice(0, -1), r.slice(0, -1)];
|
|
417
687
|
}
|
|
418
|
-
function
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
688
|
+
function nt(e, t) {
|
|
689
|
+
let n = {};
|
|
690
|
+
for (let r in e) {
|
|
691
|
+
let [i, a] = tt(e[r], t);
|
|
692
|
+
if (a === "") {
|
|
693
|
+
n[r] = "";
|
|
694
|
+
continue;
|
|
695
|
+
}
|
|
696
|
+
let o = et(a, t), s = o + (i === "" ? "" : " " + i);
|
|
697
|
+
X[o] = [e[r], t], n[r] = s;
|
|
698
|
+
}
|
|
699
|
+
return n;
|
|
430
700
|
}
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
}
|
|
465
|
-
const i = Object.assign.apply(
|
|
466
|
-
Object,
|
|
467
|
-
// .assign() mutates the first object, we can't mutate mappings as it will produce invalid results later
|
|
468
|
-
[{}].concat(c)
|
|
469
|
-
), [a, h] = ve(i, t), u = Ge(h, t, s), d = u + " " + a;
|
|
470
|
-
return z[n] = d, L[u] = [i, t], e + d;
|
|
701
|
+
//#endregion
|
|
702
|
+
//#region node_modules/@griffel/core/src/mergeClasses.js
|
|
703
|
+
var rt = {};
|
|
704
|
+
function it() {
|
|
705
|
+
let e = null, t = "", n = "", r = Array(arguments.length), i = "";
|
|
706
|
+
for (let e = 0; e < arguments.length; e++) {
|
|
707
|
+
let a = arguments[e];
|
|
708
|
+
if (typeof a == "string" && a !== "") {
|
|
709
|
+
let o = a.indexOf("___");
|
|
710
|
+
if (o === -1) process.env.NODE_ENV !== "production" && a.split(" ").forEach((e) => {
|
|
711
|
+
e.startsWith("r") && Ye[e] && (i ? console.error(`mergeClasses(): a passed string contains multiple classes produced by makeResetStyles (${a} & ${t}, this will lead to non-deterministic behavior. Learn more:https://griffel.js.org/react/api/make-reset-styles#limitations
|
|
712
|
+
Source string: ${a}`) : i = e);
|
|
713
|
+
}), t += a + " ";
|
|
714
|
+
else {
|
|
715
|
+
let i = a.substr(o, Ze);
|
|
716
|
+
o > 0 && (t += a.slice(0, o)), n += i, r[e] = i;
|
|
717
|
+
}
|
|
718
|
+
process.env.NODE_ENV !== "production" && a.indexOf("___", o + 1) !== -1 && console.error(`mergeClasses(): a passed string contains multiple identifiers of atomic classes (classes that start with "___"), it's possible that passed classes were concatenated in a wrong way. Source string: ${a}`);
|
|
719
|
+
}
|
|
720
|
+
}
|
|
721
|
+
if (n === "") return t.slice(0, -1);
|
|
722
|
+
let a = rt[n];
|
|
723
|
+
if (a !== void 0) return t + a;
|
|
724
|
+
let o = [];
|
|
725
|
+
for (let t = 0; t < arguments.length; t++) {
|
|
726
|
+
let n = r[t];
|
|
727
|
+
if (n) {
|
|
728
|
+
let r = X[n];
|
|
729
|
+
r ? (o.push(r[0]), process.env.NODE_ENV !== "production" && e !== null && e !== r[1] && console.error(`mergeClasses(): a passed string contains an identifier (${n}) that has different direction (dir="${r[1] ? "rtl" : "ltr"}") setting than other classes. This is not supported. Source string: ${arguments[t]}`), e = r[1]) : process.env.NODE_ENV !== "production" && console.error(`mergeClasses(): a passed string contains an identifier (${n}) that does not match any entry in cache. Source string: ${arguments[t]}`);
|
|
730
|
+
}
|
|
731
|
+
}
|
|
732
|
+
let s = Object.assign.apply(Object, [{}].concat(o)), [c, l] = tt(s, e), u = et(l, e, r), d = u + " " + c;
|
|
733
|
+
return rt[n] = d, X[u] = [s, e], t + d;
|
|
471
734
|
}
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
735
|
+
//#endregion
|
|
736
|
+
//#region node_modules/@griffel/core/src/devtools/store.js
|
|
737
|
+
var at = {}, ot = /* @__PURE__ */ new Set(), Q = {
|
|
738
|
+
getChildrenSequences: (e) => {
|
|
739
|
+
let t = Object.keys(rt).find((t) => rt[t].startsWith(e));
|
|
740
|
+
return t ? t.split("___").filter((e) => e.length).map((e) => "___" + e) : [];
|
|
741
|
+
},
|
|
742
|
+
addCSSRule: (e) => {
|
|
743
|
+
ot.add(e);
|
|
744
|
+
},
|
|
745
|
+
addSequenceDetails: (e, t) => {
|
|
746
|
+
Object.entries(e).forEach(([e, n]) => {
|
|
747
|
+
at[n.substring(0, Ze)] = {
|
|
748
|
+
slotName: e,
|
|
749
|
+
sourceURL: t
|
|
750
|
+
};
|
|
751
|
+
});
|
|
752
|
+
},
|
|
753
|
+
getCSSRules: () => Array.from(ot),
|
|
754
|
+
getSequenceDetails: (e) => at[e]
|
|
490
755
|
};
|
|
491
|
-
|
|
492
|
-
|
|
756
|
+
//#endregion
|
|
757
|
+
//#region node_modules/@griffel/core/src/devtools/utils.js
|
|
758
|
+
function st(e, t) {
|
|
759
|
+
return Array.isArray(e) ? t === "rtl" ? e[1] : e[0] : e || "";
|
|
493
760
|
}
|
|
494
|
-
function
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
}) => l === a).length > 0).length > 0 : !1) ? u.className : u.overriddenBy : (!u && !e[0][c] || u && !e[0][c]) && (h = void 0);
|
|
508
|
-
}
|
|
509
|
-
return {
|
|
510
|
-
className: a,
|
|
511
|
-
overriddenBy: h
|
|
512
|
-
};
|
|
513
|
-
});
|
|
761
|
+
function ct(e, t, n, r) {
|
|
762
|
+
let i = e[0], a = e[1];
|
|
763
|
+
return Object.entries(i).map(([e, i]) => {
|
|
764
|
+
let o = st(i, a), s;
|
|
765
|
+
if (n && t) {
|
|
766
|
+
let i = n.find(({ className: e }) => e === o);
|
|
767
|
+
!i && t[0][e] ? s = st(t[0][e], t[1]) : i && t[0][e] ? s = r && r.filter(({ debugClassNames: e }) => e.filter(({ className: e }) => e === o).length > 0).length > 0 ? i.className : i.overriddenBy : (!i && !t[0][e] || i && !t[0][e]) && (s = void 0);
|
|
768
|
+
}
|
|
769
|
+
return {
|
|
770
|
+
className: o,
|
|
771
|
+
overriddenBy: s
|
|
772
|
+
};
|
|
773
|
+
});
|
|
514
774
|
}
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
})), o;
|
|
775
|
+
//#endregion
|
|
776
|
+
//#region node_modules/@griffel/core/src/devtools/getAtomicDebugSequenceTree.js
|
|
777
|
+
function lt(e, t) {
|
|
778
|
+
let n = X[e];
|
|
779
|
+
if (n === void 0) return;
|
|
780
|
+
let r = ct(n, t ? X[t.sequenceHash] : void 0, t?.debugClassNames, t?.children), i = {
|
|
781
|
+
sequenceHash: e,
|
|
782
|
+
direction: n[1],
|
|
783
|
+
children: [],
|
|
784
|
+
debugClassNames: r
|
|
785
|
+
};
|
|
786
|
+
return Q.getChildrenSequences(i.sequenceHash).reverse().forEach((e) => {
|
|
787
|
+
let t = lt(e, i);
|
|
788
|
+
t && i.children.push(t);
|
|
789
|
+
}), i.children.length || (i.rules = {}, i.debugClassNames.forEach(({ className: t }) => {
|
|
790
|
+
let n = Q.getSequenceDetails(e);
|
|
791
|
+
n && (i.slot = n.slotName, i.sourceURL = n.sourceURL);
|
|
792
|
+
let r = Q.getCSSRules().find((e) => e.includes(t));
|
|
793
|
+
i.rules[t] = r;
|
|
794
|
+
})), i;
|
|
536
795
|
}
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
className: r
|
|
551
|
-
}] = s.debugClassNames, o = M.getCSSRules().filter((c) => c.includes(`.${r}`));
|
|
552
|
-
return s.rules[r] = o.join(""), s;
|
|
796
|
+
//#endregion
|
|
797
|
+
//#region node_modules/@griffel/core/src/devtools/getResetDebugSequence.js
|
|
798
|
+
function ut(e) {
|
|
799
|
+
if (Ye[e] === void 0) return;
|
|
800
|
+
let t = {
|
|
801
|
+
sequenceHash: e,
|
|
802
|
+
direction: "ltr",
|
|
803
|
+
children: [],
|
|
804
|
+
debugClassNames: [{ className: e }]
|
|
805
|
+
};
|
|
806
|
+
t.rules = {}, t.slot = "makeResetStyles()";
|
|
807
|
+
let [{ className: n }] = t.debugClassNames, r = Q.getCSSRules().filter((e) => e.includes(`.${n}`));
|
|
808
|
+
return t.rules[n] = r.join(""), t;
|
|
553
809
|
}
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
810
|
+
//#endregion
|
|
811
|
+
//#region node_modules/@griffel/core/src/devtools/mergeDebugSequence.js
|
|
812
|
+
function dt(e, t) {
|
|
813
|
+
let n = e ? lt(e) : void 0, r = t ? ut(t) : void 0;
|
|
814
|
+
if (!(!n && !r)) return n ? r ? {
|
|
815
|
+
sequenceHash: n.sequenceHash + r.sequenceHash,
|
|
816
|
+
direction: n.direction,
|
|
817
|
+
children: [n, r],
|
|
818
|
+
debugClassNames: [...n.debugClassNames, ...r.debugClassNames]
|
|
819
|
+
} : n : r;
|
|
562
820
|
}
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
}
|
|
581
|
-
});
|
|
821
|
+
//#endregion
|
|
822
|
+
//#region node_modules/@griffel/core/src/devtools/injectDevTools.js
|
|
823
|
+
function ft(e) {
|
|
824
|
+
let t = e.defaultView;
|
|
825
|
+
if (!t || t.__GRIFFEL_DEVTOOLS__) return;
|
|
826
|
+
let n = { getInfo: (e) => {
|
|
827
|
+
let t, n;
|
|
828
|
+
for (let r of e.classList) r.startsWith("___") && (t = r), Ye[r] && (n = r);
|
|
829
|
+
return dt(t, n);
|
|
830
|
+
} };
|
|
831
|
+
Object.defineProperty(t, "__GRIFFEL_DEVTOOLS__", {
|
|
832
|
+
configurable: !1,
|
|
833
|
+
enumerable: !1,
|
|
834
|
+
get() {
|
|
835
|
+
return n;
|
|
836
|
+
}
|
|
837
|
+
});
|
|
582
838
|
}
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
}
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
if (process.env.NODE_ENV !== "production" && t.length > 2)
|
|
595
|
-
throw new Error("CSS Bucket contains an entry with greater than 2 items, please report this to https://github.com/microsoft/griffel/issues");
|
|
596
|
-
return t;
|
|
839
|
+
//#endregion
|
|
840
|
+
//#region node_modules/@griffel/core/src/devtools/isDevToolsEnabled.js
|
|
841
|
+
var pt = (() => {
|
|
842
|
+
try {
|
|
843
|
+
return !!(typeof window < "u" && window.sessionStorage?.getItem("__GRIFFEL_DEVTOOLS__"));
|
|
844
|
+
} catch {
|
|
845
|
+
return !1;
|
|
846
|
+
}
|
|
847
|
+
})(), mt = "<unknown>";
|
|
848
|
+
function ht(e) {
|
|
849
|
+
return yt(e) || St(e) || wt(e);
|
|
597
850
|
}
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
elementAttributes: s,
|
|
608
|
-
insertRule: o,
|
|
609
|
-
element: t,
|
|
610
|
-
bucketName: e,
|
|
611
|
-
cssRules() {
|
|
612
|
-
return t?.sheet ? Array.from(t.sheet.cssRules).map((c) => c.cssText) : r;
|
|
613
|
-
}
|
|
614
|
-
};
|
|
851
|
+
var gt = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\/|[a-z]:\\|\\\\).*?)?\)?\s*$/i, _t = /^\s*at ()((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\/|[a-z]:\\|\\\\).*?)\s*$/i, vt = /\((\S*)\)/;
|
|
852
|
+
function yt(e) {
|
|
853
|
+
let t = gt.exec(e) || _t.exec(e);
|
|
854
|
+
if (!t) return null;
|
|
855
|
+
let n = t[2], r = n && n.indexOf("native") === 0, i = n && n.indexOf("eval") === 0, a = vt.exec(n);
|
|
856
|
+
return i && a !== null && (n = a[1]), {
|
|
857
|
+
loc: r ? null : t[2],
|
|
858
|
+
name: t[1] || mt
|
|
859
|
+
};
|
|
615
860
|
}
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
// focus-within
|
|
626
|
-
"w",
|
|
627
|
-
// focus
|
|
628
|
-
"f",
|
|
629
|
-
// focus-visible
|
|
630
|
-
"i",
|
|
631
|
-
// hover
|
|
632
|
-
"h",
|
|
633
|
-
// active
|
|
634
|
-
"a",
|
|
635
|
-
// at rules for reset styles
|
|
636
|
-
"s",
|
|
637
|
-
// keyframes
|
|
638
|
-
"k",
|
|
639
|
-
// at-rules
|
|
640
|
-
"t",
|
|
641
|
-
// @media rules
|
|
642
|
-
"m",
|
|
643
|
-
// @container rules
|
|
644
|
-
"c"
|
|
645
|
-
], Be = /* @__PURE__ */ Lt.reduce((t, e, n) => (t[e] = n, t), {});
|
|
646
|
-
function bt(t, e, n) {
|
|
647
|
-
return (t === "m" ? t + e : t) + n;
|
|
861
|
+
var bt = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)\s*$/i, xt = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i;
|
|
862
|
+
function St(e) {
|
|
863
|
+
let t = bt.exec(e);
|
|
864
|
+
if (!t) return null;
|
|
865
|
+
let n = t[3], r = n && n.indexOf(" > eval") > -1, i = xt.exec(n);
|
|
866
|
+
return r && i !== null && (n = i[1]), {
|
|
867
|
+
loc: t[3],
|
|
868
|
+
name: t[1] || mt
|
|
869
|
+
};
|
|
648
870
|
}
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
s.stylesheets[u] = g, e?.head && d && e.head.insertBefore(d, Yt(e, n, t, s, r));
|
|
657
|
-
}
|
|
658
|
-
return s.stylesheets[u];
|
|
871
|
+
var Ct = /^\s*(?:([^@]*)(?:\((.*?)\))?@)?(\S.*?)\s*$/i;
|
|
872
|
+
function wt(e) {
|
|
873
|
+
let t = Ct.exec(e);
|
|
874
|
+
return t ? {
|
|
875
|
+
loc: t[3],
|
|
876
|
+
name: t[1] || mt
|
|
877
|
+
} : null;
|
|
659
878
|
}
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
879
|
+
//#endregion
|
|
880
|
+
//#region node_modules/@griffel/core/src/devtools/getSourceURLfromError.js
|
|
881
|
+
function Tt() {
|
|
882
|
+
let e = Et(String((/* @__PURE__ */ Error()).stack).split("\n"));
|
|
883
|
+
return e === void 0 ? void 0 : ht(e)?.loc;
|
|
664
884
|
}
|
|
665
|
-
function
|
|
666
|
-
|
|
667
|
-
const i = Be[n], a = (o = r.m) !== null && o !== void 0 ? o : "", h = (c = r.p) !== null && c !== void 0 ? c : 0;
|
|
668
|
-
let u = (A) => i - Be[A.getAttribute(N)], d = t.head.querySelectorAll(`[${N}]`);
|
|
669
|
-
if (n === "m") {
|
|
670
|
-
const A = t.head.querySelectorAll(`[${N}="${n}"]`);
|
|
671
|
-
A.length && (d = A, u = (w) => s.compareMediaQueries(a, w.media));
|
|
672
|
-
}
|
|
673
|
-
const g = (A) => Wt(A, n, r) ? h - Number(A.getAttribute("data-priority")) : u(A), l = d.length;
|
|
674
|
-
let S = l - 1;
|
|
675
|
-
for (; S >= 0; ) {
|
|
676
|
-
const A = d.item(S);
|
|
677
|
-
if (g(A) > 0)
|
|
678
|
-
return A.nextSibling;
|
|
679
|
-
S--;
|
|
680
|
-
}
|
|
681
|
-
return l > 0 ? d.item(0) : e ? e.nextSibling : null;
|
|
885
|
+
function Et(e) {
|
|
886
|
+
for (let t = e.length - 1; t >= 0; --t) if (e[t].includes("at getSourceURLfromError")) return e[t + 3];
|
|
682
887
|
}
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
}
|
|
888
|
+
//#endregion
|
|
889
|
+
//#region node_modules/@griffel/core/src/runtime/utils/normalizeCSSBucketEntry.js
|
|
890
|
+
function Dt(e) {
|
|
891
|
+
if (!Array.isArray(e)) return [e];
|
|
892
|
+
if (process.env.NODE_ENV !== "production" && e.length > 2) throw Error("CSS Bucket contains an entry with greater than 2 items, please report this to https://github.com/microsoft/griffel/issues");
|
|
893
|
+
return e;
|
|
690
894
|
}
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
function
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
for (const h in a) {
|
|
709
|
-
const u = a[h];
|
|
710
|
-
for (let d = 0, g = u.length; d < g; d++) {
|
|
711
|
-
const [l, S] = Ft(u[d]), A = qt(h, t, r || null, i, S);
|
|
712
|
-
i.insertionCache[l] || (i.insertionCache[l] = h, process.env.NODE_ENV !== "production" && X && M.addCSSRule(l), s ? s(l) && Ie(A, l) : Ie(A, l));
|
|
713
|
-
}
|
|
714
|
-
}
|
|
715
|
-
}
|
|
716
|
-
};
|
|
717
|
-
return t && process.env.NODE_ENV !== "production" && X && Nt(t), i;
|
|
895
|
+
//#endregion
|
|
896
|
+
//#region node_modules/@griffel/core/src/renderer/createIsomorphicStyleSheet.js
|
|
897
|
+
function Ot(e, t, n, r) {
|
|
898
|
+
let i = [];
|
|
899
|
+
if (r[Z] = t, r[Xe] = String(n), e) for (let t in r) e.setAttribute(t, r[t]);
|
|
900
|
+
function a(t) {
|
|
901
|
+
return e?.sheet ? e.sheet.insertRule(t, e.sheet.cssRules.length) : i.push(t);
|
|
902
|
+
}
|
|
903
|
+
return {
|
|
904
|
+
elementAttributes: r,
|
|
905
|
+
insertRule: a,
|
|
906
|
+
element: e,
|
|
907
|
+
bucketName: t,
|
|
908
|
+
cssRules() {
|
|
909
|
+
return e?.sheet ? Array.from(e.sheet.cssRules).map((e) => e.cssText) : i;
|
|
910
|
+
}
|
|
911
|
+
};
|
|
718
912
|
}
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
913
|
+
var kt = /* @__PURE__ */ [
|
|
914
|
+
"r",
|
|
915
|
+
"d",
|
|
916
|
+
"l",
|
|
917
|
+
"v",
|
|
918
|
+
"w",
|
|
919
|
+
"f",
|
|
920
|
+
"i",
|
|
921
|
+
"h",
|
|
922
|
+
"a",
|
|
923
|
+
"s",
|
|
924
|
+
"k",
|
|
925
|
+
"t",
|
|
926
|
+
"m",
|
|
927
|
+
"c"
|
|
928
|
+
].reduce((e, t, n) => (e[t] = n, e), {});
|
|
929
|
+
function At(e, t, n) {
|
|
930
|
+
return (e === "m" ? e + t : e) + n;
|
|
722
931
|
}
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
};
|
|
932
|
+
function jt(e, t, n, r, i = {}) {
|
|
933
|
+
let a = e === "m", o = i.m ?? "0", s = i.p ?? 0, c = At(e, o, s);
|
|
934
|
+
if (!r.stylesheets[c]) {
|
|
935
|
+
let l = t && t.createElement("style"), u = Ot(l, e, s, {
|
|
936
|
+
...r.styleElementAttributes,
|
|
937
|
+
...a && { media: o }
|
|
938
|
+
});
|
|
939
|
+
r.stylesheets[c] = u, t?.head && l && t.head.insertBefore(l, Nt(t, n, e, r, i));
|
|
940
|
+
}
|
|
941
|
+
return r.stylesheets[c];
|
|
734
942
|
}
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
const e = rn.exec(t);
|
|
738
|
-
if (!e)
|
|
739
|
-
return null;
|
|
740
|
-
let n = e[3];
|
|
741
|
-
const s = n && n.indexOf(" > eval") > -1, r = on.exec(n);
|
|
742
|
-
return s && r != null && (n = r[1]), {
|
|
743
|
-
loc: e[3],
|
|
744
|
-
name: e[1] || ue
|
|
745
|
-
};
|
|
943
|
+
function Mt(e, t, n) {
|
|
944
|
+
return t + (n.m ?? "") === e.getAttribute(Z) + (e.media ?? "");
|
|
746
945
|
}
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
946
|
+
function Nt(e, t, n, r, i = {}) {
|
|
947
|
+
let a = kt[n], o = i.m ?? "", s = i.p ?? 0, c = (e) => a - kt[e.getAttribute(Z)], l = e.head.querySelectorAll(`[${Z}]`);
|
|
948
|
+
if (n === "m") {
|
|
949
|
+
let t = e.head.querySelectorAll(`[${Z}="${n}"]`);
|
|
950
|
+
t.length && (l = t, c = (e) => r.compareMediaQueries(o, e.media));
|
|
951
|
+
}
|
|
952
|
+
let u = (e) => Mt(e, n, i) ? s - Number(e.getAttribute("data-priority")) : c(e), d = l.length, f = d - 1;
|
|
953
|
+
for (; f >= 0;) {
|
|
954
|
+
let e = l.item(f);
|
|
955
|
+
if (u(e) > 0) return e.nextSibling;
|
|
956
|
+
f--;
|
|
957
|
+
}
|
|
958
|
+
return d > 0 ? l.item(0) : t ? t.nextSibling : null;
|
|
754
959
|
}
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
960
|
+
//#endregion
|
|
961
|
+
//#region node_modules/@griffel/core/src/renderer/safeInsertRule.js
|
|
962
|
+
var Pt = /* @__PURE__ */ RegExp(`:(${/* @__PURE__ */ [
|
|
963
|
+
"-moz-placeholder",
|
|
964
|
+
"-moz-focus-inner",
|
|
965
|
+
"-moz-focusring",
|
|
966
|
+
"-ms-input-placeholder",
|
|
967
|
+
"-moz-read-write",
|
|
968
|
+
"-moz-read-only"
|
|
969
|
+
].join("|")})`);
|
|
970
|
+
function Ft(e, t) {
|
|
971
|
+
try {
|
|
972
|
+
e.insertRule(t);
|
|
973
|
+
} catch (e) {
|
|
974
|
+
process.env.NODE_ENV !== "production" && !Pt.test(t) && console.error(`There was a problem inserting the following rule: "${t}"`, e);
|
|
975
|
+
}
|
|
762
976
|
}
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
977
|
+
//#endregion
|
|
978
|
+
//#region node_modules/@griffel/core/src/renderer/createDOMRenderer.js
|
|
979
|
+
var It = 0, Lt = (e, t) => e < t ? -1 : +(e > t);
|
|
980
|
+
function Rt(e = typeof document > "u" ? void 0 : document, t = {}) {
|
|
981
|
+
let { classNameHashSalt: n, unstable_filterCSSRule: r, insertionPoint: i, styleElementAttributes: a, compareMediaQueries: o = Lt } = t, s = {
|
|
982
|
+
classNameHashSalt: n,
|
|
983
|
+
insertionCache: {},
|
|
984
|
+
stylesheets: {},
|
|
985
|
+
styleElementAttributes: Object.freeze(a),
|
|
986
|
+
compareMediaQueries: o,
|
|
987
|
+
id: `d${It++}`,
|
|
988
|
+
insertCSSRules(t) {
|
|
989
|
+
for (let n in t) {
|
|
990
|
+
let a = t[n];
|
|
991
|
+
for (let t = 0, o = a.length; t < o; t++) {
|
|
992
|
+
let [o, c] = Dt(a[t]), l = jt(n, e, i || null, s, c);
|
|
993
|
+
s.insertionCache[o] || (s.insertionCache[o] = n, process.env.NODE_ENV !== "production" && pt && Q.addCSSRule(o), r ? r(o) && Ft(l, o) : Ft(l, o));
|
|
994
|
+
}
|
|
995
|
+
}
|
|
996
|
+
}
|
|
997
|
+
};
|
|
998
|
+
return e && process.env.NODE_ENV !== "production" && pt && ft(e), s;
|
|
767
999
|
}
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
1000
|
+
//#endregion
|
|
1001
|
+
//#region node_modules/@griffel/core/src/insertionFactory.js
|
|
1002
|
+
var zt = () => {
|
|
1003
|
+
let e = {};
|
|
1004
|
+
return function(t, n) {
|
|
1005
|
+
e[t.id] === void 0 && (t.insertCSSRules(n), e[t.id] = !0);
|
|
1006
|
+
};
|
|
773
1007
|
};
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
}
|
|
787
|
-
return i;
|
|
1008
|
+
//#endregion
|
|
1009
|
+
//#region node_modules/@griffel/core/src/__styles.js
|
|
1010
|
+
function Bt(e, t, n = zt) {
|
|
1011
|
+
let r = n(), i = null, a = null, o;
|
|
1012
|
+
process.env.NODE_ENV !== "production" && pt && (o = Tt());
|
|
1013
|
+
function s(n) {
|
|
1014
|
+
let { dir: s, renderer: c } = n, l = s === "ltr";
|
|
1015
|
+
l ? i === null && (i = nt(e, s)) : a === null && (a = nt(e, s)), r(c, t);
|
|
1016
|
+
let u = l ? i : a;
|
|
1017
|
+
return process.env.NODE_ENV !== "production" && pt && Q.addSequenceDetails(u, o), u;
|
|
1018
|
+
}
|
|
1019
|
+
return s;
|
|
788
1020
|
}
|
|
789
|
-
|
|
790
|
-
|
|
1021
|
+
//#endregion
|
|
1022
|
+
//#region node_modules/@griffel/react/src/utils/canUseDOM.js
|
|
1023
|
+
function Vt() {
|
|
1024
|
+
return typeof window < "u" && !!(window.document && window.document.createElement);
|
|
791
1025
|
}
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
function pn() {
|
|
809
|
-
return j.useContext(Sn);
|
|
1026
|
+
//#endregion
|
|
1027
|
+
//#region node_modules/@griffel/react/src/useInsertionEffect.js
|
|
1028
|
+
var Ht = t.useInsertionEffect ? t.useInsertionEffect : void 0, Ut = () => {
|
|
1029
|
+
let e = {};
|
|
1030
|
+
return function(t, n) {
|
|
1031
|
+
if (Ht && Vt()) {
|
|
1032
|
+
Ht(() => {
|
|
1033
|
+
t.insertCSSRules(n);
|
|
1034
|
+
}, [t, n]);
|
|
1035
|
+
return;
|
|
1036
|
+
}
|
|
1037
|
+
e[t.id] === void 0 && (t.insertCSSRules(n), e[t.id] = !0);
|
|
1038
|
+
};
|
|
1039
|
+
}, Wt = /* @__PURE__ */ n(/* @__PURE__ */ Rt());
|
|
1040
|
+
function Gt() {
|
|
1041
|
+
return i(Wt);
|
|
810
1042
|
}
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
1043
|
+
//#endregion
|
|
1044
|
+
//#region node_modules/@griffel/react/src/TextDirectionContext.js
|
|
1045
|
+
var Kt = /* @__PURE__ */ n("ltr");
|
|
1046
|
+
function qt() {
|
|
1047
|
+
return i(Kt);
|
|
814
1048
|
}
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
1049
|
+
//#endregion
|
|
1050
|
+
//#region node_modules/@griffel/react/src/__styles.js
|
|
1051
|
+
function Jt(e, t) {
|
|
1052
|
+
let n = Bt(e, t, Ut);
|
|
1053
|
+
return function() {
|
|
1054
|
+
return n({
|
|
1055
|
+
dir: qt(),
|
|
1056
|
+
renderer: Gt()
|
|
1057
|
+
});
|
|
1058
|
+
};
|
|
824
1059
|
}
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
}
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
}
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
}, Rn = "data:image/jpeg;base64,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", Jn = [
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
jobTitle: "HR Manager",
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1060
|
+
//#endregion
|
|
1061
|
+
//#region node_modules/@fluentui/react-icons/lib/contexts/IconDirectionContext.js
|
|
1062
|
+
var Yt = e.createContext(void 0), Xt = {};
|
|
1063
|
+
Yt.Provider;
|
|
1064
|
+
var Zt = () => e.useContext(Yt) ?? Xt, Qt = Jt({
|
|
1065
|
+
root: {
|
|
1066
|
+
mc9l5x: "f1w7gpdv",
|
|
1067
|
+
Bg96gwp: "fez10in"
|
|
1068
|
+
},
|
|
1069
|
+
rtl: { Bz10aip: "f13rod7r" }
|
|
1070
|
+
}, { d: [
|
|
1071
|
+
".f1w7gpdv{display:inline;}",
|
|
1072
|
+
".fez10in{line-height:0;}",
|
|
1073
|
+
".f13rod7r{transform:scaleX(-1);}"
|
|
1074
|
+
] }), $t = (e, t) => {
|
|
1075
|
+
let { filled: n, title: r, primaryFill: i = "currentColor", ...a } = e, o = {
|
|
1076
|
+
...a,
|
|
1077
|
+
fill: i
|
|
1078
|
+
}, s = Qt(), c = Zt();
|
|
1079
|
+
return o.className = it(s.root, t?.flipInRtl && c?.textDirection === "rtl" && s.rtl, o.className), r && (o["aria-label"] = r), !o["aria-label"] && !o["aria-labelledby"] ? o["aria-hidden"] = !0 : o.role = "img", o;
|
|
1080
|
+
}, en = Jt({ root: { B8gzw0y: "f1dd5bof" } }, { m: [["@media (forced-colors: active){.f1dd5bof{forced-color-adjust:auto;}}", { m: "(forced-colors: active)" }]] }), tn = "fui-Icon", nn = (t, n) => {
|
|
1081
|
+
let [r, i, ...a] = t;
|
|
1082
|
+
return e.createElement(r, {
|
|
1083
|
+
...i,
|
|
1084
|
+
key: n
|
|
1085
|
+
}, ...a.map(nn));
|
|
1086
|
+
}, rn = /* @__PURE__ */ ((t, n, r, i) => {
|
|
1087
|
+
let a = n === "1em" ? "20" : n, o = typeof r != "string" && (i?.color || Array.isArray(r[0])) ? r.map(nn) : void 0, s = e.forwardRef((t, s) => {
|
|
1088
|
+
let c = en(), l = $t(t, { flipInRtl: i?.flipInRtl }), u = {
|
|
1089
|
+
...l,
|
|
1090
|
+
className: it(tn, l.className, c.root),
|
|
1091
|
+
ref: s,
|
|
1092
|
+
width: n,
|
|
1093
|
+
height: n,
|
|
1094
|
+
viewBox: `0 0 ${a} ${a}`,
|
|
1095
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
1096
|
+
};
|
|
1097
|
+
return typeof r == "string" ? e.createElement("svg", {
|
|
1098
|
+
...u,
|
|
1099
|
+
dangerouslySetInnerHTML: { __html: r }
|
|
1100
|
+
}) : o ? e.createElement("svg", u, ...o) : e.createElement("svg", u, ...r.map((t) => e.createElement("path", {
|
|
1101
|
+
d: t,
|
|
1102
|
+
fill: u.fill
|
|
1103
|
+
})));
|
|
1104
|
+
});
|
|
1105
|
+
return s.displayName = t, s;
|
|
1106
|
+
})("SearchRegular", "1em", ["M13.73 14.44a6.5 6.5 0 1 1 .7-.7l3.42 3.4a.5.5 0 0 1-.63.77l-.07-.06-3.42-3.41Zm-.71-.71A5.54 5.54 0 0 0 15 9.5a5.5 5.5 0 1 0-1.98 4.23Z"]), an = "id,displayName,mail,userPrincipalName,jobTitle,department", on = [], sn = (e) => e.trim().replace(/"/g, "").trim(), cn = (e, t) => {
|
|
1107
|
+
let n = V(), r = L(), i = R(), o = t?.minChars ?? 1, s = t?.maxResults ?? 10, l = t?.loadInitialResults ?? !1, [u, d] = c([]), [f, p] = c(!1), m = sn(e), h = l && e.length === 0, g = !h && (!m || m.length < o);
|
|
1108
|
+
return a(() => {
|
|
1109
|
+
if (g) return;
|
|
1110
|
+
let e = !1, t = async () => {
|
|
1111
|
+
p(!0);
|
|
1112
|
+
try {
|
|
1113
|
+
if (U(r)) {
|
|
1114
|
+
let t = await r.searchPeople(h ? "" : m, s);
|
|
1115
|
+
e || d(t);
|
|
1116
|
+
} else if (i === "SignedIn" && n) {
|
|
1117
|
+
let t;
|
|
1118
|
+
t = h ? (await n.api("/users").select(an).top(s).get()).value ?? [] : (await n.api("/users").header("ConsistencyLevel", "eventual").search(`"displayName:${m}" OR "mail:${m}" OR "userPrincipalName:${m}"`).select(an).top(s).get()).value ?? [], e || d(t);
|
|
1119
|
+
} else e || d([]);
|
|
1120
|
+
} catch {
|
|
1121
|
+
e || d([]);
|
|
1122
|
+
} finally {
|
|
1123
|
+
e || p(!1);
|
|
1124
|
+
}
|
|
1125
|
+
};
|
|
1126
|
+
if (h) return t(), () => {
|
|
1127
|
+
e = !0, p(!1);
|
|
1128
|
+
};
|
|
1129
|
+
let a = setTimeout(() => {
|
|
1130
|
+
t();
|
|
1131
|
+
}, 300);
|
|
1132
|
+
return () => {
|
|
1133
|
+
e = !0, clearTimeout(a), p(!1);
|
|
1134
|
+
};
|
|
1135
|
+
}, [
|
|
1136
|
+
e,
|
|
1137
|
+
n,
|
|
1138
|
+
r,
|
|
1139
|
+
i,
|
|
1140
|
+
o,
|
|
1141
|
+
s,
|
|
1142
|
+
l,
|
|
1143
|
+
m,
|
|
1144
|
+
h,
|
|
1145
|
+
g
|
|
1146
|
+
]), {
|
|
1147
|
+
results: g ? on : u,
|
|
1148
|
+
loading: g ? !1 : f
|
|
1149
|
+
};
|
|
1150
|
+
}, ln = "__no_results__", un = 50, dn = (e, t, n, r) => e.filter((e) => !t.includes(e.id) && !n.includes(e.id)).slice(0, r), fn = (e) => e.displayName || e.mail || e.userPrincipalName || e.id, pn = (e) => e.mail ?? e.userPrincipalName ?? void 0, mn = ({ person: e, size: t, photoUrl: n }) => /* @__PURE__ */ C(u, {
|
|
1151
|
+
name: e.displayName ?? void 0,
|
|
1152
|
+
image: n ? { src: n } : void 0,
|
|
1153
|
+
initials: n ? void 0 : se(e.displayName ?? void 0),
|
|
1154
|
+
size: t
|
|
1155
|
+
}), hn = ({ person: e, size: t }) => {
|
|
1156
|
+
let { photoUrl: n } = ue({
|
|
1157
|
+
userId: e.id,
|
|
1158
|
+
fetchPhoto: !0
|
|
1159
|
+
});
|
|
1160
|
+
return /* @__PURE__ */ C(mn, {
|
|
1161
|
+
person: e,
|
|
1162
|
+
size: t,
|
|
1163
|
+
photoUrl: n
|
|
1164
|
+
});
|
|
1165
|
+
}, gn = ({ person: e, size: t }) => e.photoUrl ? /* @__PURE__ */ C(mn, {
|
|
1166
|
+
person: e,
|
|
1167
|
+
size: t,
|
|
1168
|
+
photoUrl: e.photoUrl
|
|
1169
|
+
}) : /* @__PURE__ */ C(hn, {
|
|
1170
|
+
person: e,
|
|
1171
|
+
size: t
|
|
1172
|
+
}), _n = ({ selectedPeople: e, defaultSelectedPeople: t, onSelectionChange: n, placeholder: i = "Search for people...", maxPeople: l, searchMinChars: u = 1, maxSearchResults: d = 10, excludeUserIds: f = [], appearance: p, size: _, disabled: v, onUpdated: y }) => {
|
|
1173
|
+
let b = e !== void 0, [ie, T] = c(t ?? []), E = b ? e : ie, [D, O] = c(""), [k, A] = c(!1), j = o(() => Array.from(new Set(f)), [f]), { results: M, loading: N } = cn(D, {
|
|
1174
|
+
minChars: u,
|
|
1175
|
+
maxResults: Math.min(d + j.length, un),
|
|
1176
|
+
loadInitialResults: k
|
|
1177
|
+
}), P = o(() => {
|
|
1178
|
+
let e = /* @__PURE__ */ new Map();
|
|
1179
|
+
for (let t of E) e.set(t.id, t);
|
|
1180
|
+
for (let t of M) e.set(t.id, t);
|
|
1181
|
+
return e;
|
|
1182
|
+
}, [E, M]), F = o(() => E.map((e) => e.id), [E]), I = o(() => dn(M, F, j, d), [
|
|
1183
|
+
M,
|
|
1184
|
+
F,
|
|
1185
|
+
j,
|
|
1186
|
+
d
|
|
1187
|
+
]), ae = r((e, t) => {
|
|
1188
|
+
let r = t.selectedOptions.filter((e) => e !== ln).map((e) => P.get(e)).filter((e) => e !== void 0), i = dn(M, r.map((e) => e.id), j, d);
|
|
1189
|
+
b || T(r), n?.(r), y?.({
|
|
1190
|
+
trigger: "selectionChanged",
|
|
1191
|
+
searchQuery: "",
|
|
1192
|
+
selectedPeople: r,
|
|
1193
|
+
searchResults: i,
|
|
1194
|
+
loading: N
|
|
1195
|
+
}), O("");
|
|
1196
|
+
}, [
|
|
1197
|
+
b,
|
|
1198
|
+
d,
|
|
1199
|
+
n,
|
|
1200
|
+
y,
|
|
1201
|
+
P,
|
|
1202
|
+
N,
|
|
1203
|
+
M,
|
|
1204
|
+
j
|
|
1205
|
+
]), L = r((e) => {
|
|
1206
|
+
O(e.target.value);
|
|
1207
|
+
}, []), R = r(() => {
|
|
1208
|
+
A(!0);
|
|
1209
|
+
}, []), z = r(() => {
|
|
1210
|
+
A(!1);
|
|
1211
|
+
}, []), oe = l !== void 0 && E.length >= l, se = s(!0);
|
|
1212
|
+
return a(() => {
|
|
1213
|
+
if (!y || N) return;
|
|
1214
|
+
let e = se.current && D.length === 0 && I.length === 0;
|
|
1215
|
+
se.current = !1, !e && y({
|
|
1216
|
+
trigger: "searchResultsUpdated",
|
|
1217
|
+
searchQuery: D,
|
|
1218
|
+
selectedPeople: E,
|
|
1219
|
+
searchResults: I,
|
|
1220
|
+
loading: !1
|
|
1221
|
+
});
|
|
1222
|
+
}, [
|
|
1223
|
+
E,
|
|
1224
|
+
I,
|
|
1225
|
+
y,
|
|
1226
|
+
N,
|
|
1227
|
+
D
|
|
1228
|
+
]), /* @__PURE__ */ w(x, {
|
|
1229
|
+
onOptionSelect: ae,
|
|
1230
|
+
selectedOptions: F,
|
|
1231
|
+
appearance: p,
|
|
1232
|
+
size: _,
|
|
1233
|
+
disabled: v,
|
|
1234
|
+
children: [/* @__PURE__ */ w(ee, {
|
|
1235
|
+
expandIcon: /* @__PURE__ */ C(rn, {}),
|
|
1236
|
+
children: [/* @__PURE__ */ C(te, { children: E.map((e) => /* @__PURE__ */ w(m, {
|
|
1237
|
+
value: e.id,
|
|
1238
|
+
shape: "rounded",
|
|
1239
|
+
children: [/* @__PURE__ */ C(h, {
|
|
1240
|
+
hasSecondaryAction: !0,
|
|
1241
|
+
media: /* @__PURE__ */ C(gn, {
|
|
1242
|
+
person: e,
|
|
1243
|
+
size: 16
|
|
1244
|
+
}),
|
|
1245
|
+
children: fn(e)
|
|
1246
|
+
}), /* @__PURE__ */ C(g, { "aria-label": `Remove ${fn(e)}` })]
|
|
1247
|
+
}, e.id)) }), !oe && /* @__PURE__ */ C(S, {
|
|
1248
|
+
value: D,
|
|
1249
|
+
onChange: L,
|
|
1250
|
+
onFocus: R,
|
|
1251
|
+
onBlur: z,
|
|
1252
|
+
placeholder: E.length === 0 ? i : void 0,
|
|
1253
|
+
disabled: v
|
|
1254
|
+
})]
|
|
1255
|
+
}), /* @__PURE__ */ w(ne, { children: [D.length >= u && !N && I.length === 0 && /* @__PURE__ */ C(re, {
|
|
1256
|
+
value: ln,
|
|
1257
|
+
text: "No people found",
|
|
1258
|
+
style: {
|
|
1259
|
+
pointerEvents: "none",
|
|
1260
|
+
color: "var(--colorNeutralForegroundDisabled)"
|
|
1261
|
+
},
|
|
1262
|
+
children: "No people found"
|
|
1263
|
+
}), I.map((e) => /* @__PURE__ */ C(re, {
|
|
1264
|
+
value: e.id,
|
|
1265
|
+
media: /* @__PURE__ */ C(gn, {
|
|
1266
|
+
person: e,
|
|
1267
|
+
size: 32
|
|
1268
|
+
}),
|
|
1269
|
+
secondaryContent: pn(e),
|
|
1270
|
+
children: fn(e)
|
|
1271
|
+
}, e.id))] })]
|
|
1272
|
+
});
|
|
1273
|
+
}, vn = "data:image/jpeg;base64,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", $ = [
|
|
1274
|
+
{
|
|
1275
|
+
id: "00000000-0000-0000-0000-000000000001",
|
|
1276
|
+
givenName: "Adele",
|
|
1277
|
+
surname: "Vance",
|
|
1278
|
+
displayName: "Adele Vance",
|
|
1279
|
+
mail: "adelev@contoso.com",
|
|
1280
|
+
userPrincipalName: "adelev@contoso.com",
|
|
1281
|
+
jobTitle: "Product Manager",
|
|
1282
|
+
department: "Marketing"
|
|
1283
|
+
},
|
|
1284
|
+
{
|
|
1285
|
+
id: "00000000-0000-0000-0000-000000000002",
|
|
1286
|
+
givenName: "Alex",
|
|
1287
|
+
surname: "Wilber",
|
|
1288
|
+
displayName: "Alex Wilber",
|
|
1289
|
+
mail: "alexw@contoso.com",
|
|
1290
|
+
userPrincipalName: "alexw@contoso.com",
|
|
1291
|
+
jobTitle: "Marketing Assistant",
|
|
1292
|
+
department: "Marketing"
|
|
1293
|
+
},
|
|
1294
|
+
{
|
|
1295
|
+
id: "00000000-0000-0000-0000-000000000003",
|
|
1296
|
+
givenName: "Diego",
|
|
1297
|
+
surname: "Siciliani",
|
|
1298
|
+
displayName: "Diego Siciliani",
|
|
1299
|
+
mail: "diegosi@contoso.com",
|
|
1300
|
+
userPrincipalName: "diegosi@contoso.com",
|
|
1301
|
+
jobTitle: "HR Manager",
|
|
1302
|
+
department: "Human Resources"
|
|
1303
|
+
},
|
|
1304
|
+
{
|
|
1305
|
+
id: "00000000-0000-0000-0000-000000000004",
|
|
1306
|
+
givenName: "Grady",
|
|
1307
|
+
surname: "Archie",
|
|
1308
|
+
displayName: "Grady Archie",
|
|
1309
|
+
mail: "gradya@contoso.com",
|
|
1310
|
+
userPrincipalName: "gradya@contoso.com",
|
|
1311
|
+
jobTitle: "Accountant",
|
|
1312
|
+
department: "Finance"
|
|
1313
|
+
},
|
|
1314
|
+
{
|
|
1315
|
+
id: "00000000-0000-0000-0000-000000000005",
|
|
1316
|
+
givenName: "Henrietta",
|
|
1317
|
+
surname: "Mueller",
|
|
1318
|
+
displayName: "Henrietta Mueller",
|
|
1319
|
+
mail: "henriettam@contoso.com",
|
|
1320
|
+
userPrincipalName: "henriettam@contoso.com",
|
|
1321
|
+
jobTitle: "Graphic Designer",
|
|
1322
|
+
department: "Creative"
|
|
1323
|
+
},
|
|
1324
|
+
{
|
|
1325
|
+
id: "00000000-0000-0000-0000-000000000006",
|
|
1326
|
+
givenName: "Isaiah",
|
|
1327
|
+
surname: "Langer",
|
|
1328
|
+
displayName: "Isaiah Langer",
|
|
1329
|
+
mail: "isaiahl@contoso.com",
|
|
1330
|
+
userPrincipalName: "isaiahl@contoso.com",
|
|
1331
|
+
jobTitle: "Sales Rep",
|
|
1332
|
+
department: "Sales"
|
|
1333
|
+
},
|
|
1334
|
+
{
|
|
1335
|
+
id: "00000000-0000-0000-0000-000000000007",
|
|
1336
|
+
givenName: "Johanna",
|
|
1337
|
+
surname: "Lorenz",
|
|
1338
|
+
displayName: "Johanna Lorenz",
|
|
1339
|
+
mail: "johannal@contoso.com",
|
|
1340
|
+
userPrincipalName: "johannal@contoso.com",
|
|
1341
|
+
jobTitle: "Research Lead",
|
|
1342
|
+
department: "R&D"
|
|
1343
|
+
},
|
|
1344
|
+
{
|
|
1345
|
+
id: "00000000-0000-0000-0000-000000000008",
|
|
1346
|
+
givenName: "Joni",
|
|
1347
|
+
surname: "Sherman",
|
|
1348
|
+
displayName: "Joni Sherman",
|
|
1349
|
+
mail: "jonis@contoso.com",
|
|
1350
|
+
userPrincipalName: "jonis@contoso.com",
|
|
1351
|
+
jobTitle: "Paralegal",
|
|
1352
|
+
department: "Legal"
|
|
1353
|
+
},
|
|
1354
|
+
{
|
|
1355
|
+
id: "00000000-0000-0000-0000-000000000009",
|
|
1356
|
+
givenName: "Lee",
|
|
1357
|
+
surname: "Gu",
|
|
1358
|
+
displayName: "Lee Gu",
|
|
1359
|
+
mail: "leeg@contoso.com",
|
|
1360
|
+
userPrincipalName: "leeg@contoso.com",
|
|
1361
|
+
jobTitle: "Director",
|
|
1362
|
+
department: "Engineering"
|
|
1363
|
+
},
|
|
1364
|
+
{
|
|
1365
|
+
id: "00000000-0000-0000-0000-000000000010",
|
|
1366
|
+
givenName: "Megan",
|
|
1367
|
+
surname: "Bowen",
|
|
1368
|
+
displayName: "Megan Bowen",
|
|
1369
|
+
mail: "meganb@contoso.com",
|
|
1370
|
+
userPrincipalName: "meganb@contoso.com",
|
|
1371
|
+
jobTitle: "Marketing Manager",
|
|
1372
|
+
department: "Marketing"
|
|
1373
|
+
}
|
|
1374
|
+
].map((e) => ({
|
|
1375
|
+
...e,
|
|
1376
|
+
photoUrl: vn
|
|
1377
|
+
})), yn = class {
|
|
1378
|
+
state = "SignedOut";
|
|
1379
|
+
listeners = [];
|
|
1380
|
+
constructor(e) {
|
|
1381
|
+
e?.autoSignIn && (this.state = "SignedIn");
|
|
1382
|
+
}
|
|
1383
|
+
getAccessToken() {
|
|
1384
|
+
return this.state === "SignedIn" ? Promise.resolve("mock-token") : Promise.reject(/* @__PURE__ */ Error("Not signed in"));
|
|
1385
|
+
}
|
|
1386
|
+
async getPersonData(e) {
|
|
1387
|
+
let t = e.identifier?.trim(), n = t?.toLowerCase(), r = n && n !== "me" ? $.find((e) => e.id.toLowerCase() === n || e.mail?.toLowerCase() === n || e.userPrincipalName?.toLowerCase() === n || e.displayName?.toLowerCase() === n) : $[0], i = r ?? $[0], a = r || !t || t === "me" ? i.userPrincipalName : t, o = {
|
|
1388
|
+
id: i.id,
|
|
1389
|
+
givenName: i.givenName,
|
|
1390
|
+
surname: i.surname,
|
|
1391
|
+
displayName: i.displayName,
|
|
1392
|
+
userPrincipalName: a,
|
|
1393
|
+
jobTitle: i.jobTitle,
|
|
1394
|
+
department: i.department,
|
|
1395
|
+
officeLocation: "19/3106",
|
|
1396
|
+
mail: i.mail
|
|
1397
|
+
}, s = {
|
|
1398
|
+
availability: "Available",
|
|
1399
|
+
activity: "Available",
|
|
1400
|
+
id: o.id,
|
|
1401
|
+
odataType: "#microsoft.graph.presence"
|
|
1402
|
+
};
|
|
1403
|
+
return {
|
|
1404
|
+
user: o,
|
|
1405
|
+
presence: e.fetchPresence ? s : null,
|
|
1406
|
+
photoUrl: e.fetchPhoto ? vn : null
|
|
1407
|
+
};
|
|
1408
|
+
}
|
|
1409
|
+
async searchPeople(e, t = 10) {
|
|
1410
|
+
let n = e.trim();
|
|
1411
|
+
if (!n) return $.slice(0, t);
|
|
1412
|
+
let r = n.toLowerCase();
|
|
1413
|
+
return $.filter((e) => e.displayName?.toLowerCase().includes(r) || e.mail?.toLowerCase().includes(r) || e.userPrincipalName?.toLowerCase().includes(r)).slice(0, t);
|
|
1414
|
+
}
|
|
1415
|
+
async login() {
|
|
1416
|
+
this.state = "SignedIn", this.emit();
|
|
1417
|
+
}
|
|
1418
|
+
async logout() {
|
|
1419
|
+
this.state = "SignedOut", this.emit();
|
|
1420
|
+
}
|
|
1421
|
+
getState() {
|
|
1422
|
+
return this.state;
|
|
1423
|
+
}
|
|
1424
|
+
onStateChanged(e) {
|
|
1425
|
+
this.listeners.push(e);
|
|
1426
|
+
}
|
|
1427
|
+
removeStateChangedHandler(e) {
|
|
1428
|
+
this.listeners = this.listeners.filter((t) => t !== e);
|
|
1429
|
+
}
|
|
1430
|
+
emit() {
|
|
1431
|
+
for (let e of this.listeners) try {
|
|
1432
|
+
e();
|
|
1433
|
+
} catch {}
|
|
1434
|
+
}
|
|
1435
|
+
}, bn = () => new yn({ autoSignIn: !0 });
|
|
1436
|
+
//#endregion
|
|
1437
|
+
//#region node_modules/@azure/msal-common/dist-browser/error/AuthError.mjs
|
|
1438
|
+
function xn(e) {
|
|
1439
|
+
return `See https://aka.ms/msal.js.errors#${e} for details`;
|
|
1159
1440
|
}
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1441
|
+
var Sn = class e extends Error {
|
|
1442
|
+
constructor(t, n, r, i) {
|
|
1443
|
+
let a = r || (t ? xn(t) : ""), o = a ? `${t}: ${a}` : t;
|
|
1444
|
+
super(o), Object.setPrototypeOf(this, e.prototype), this.errorCode = t || "", this.errorMessage = a || "", this.subError = i || "", this.correlationId = n, this.name = "AuthError";
|
|
1445
|
+
}
|
|
1446
|
+
}, Cn = class e extends Sn {
|
|
1447
|
+
constructor(t, n, r, i, a, o, s, c) {
|
|
1448
|
+
super(t, n, r, i), Object.setPrototypeOf(this, e.prototype), this.timestamp = a || "", this.traceId = o || "", this.claims = s || "", this.name = "InteractionRequiredAuthError", this.errorNo = c;
|
|
1449
|
+
}
|
|
1450
|
+
}, wn = class extends Error {
|
|
1451
|
+
constructor(e) {
|
|
1452
|
+
super(e), this.name = "RedirectInProgressError";
|
|
1453
|
+
}
|
|
1454
|
+
}, Tn = class {
|
|
1455
|
+
msalInstance;
|
|
1456
|
+
defaultScopes;
|
|
1457
|
+
account = null;
|
|
1458
|
+
state = "Loading";
|
|
1459
|
+
listeners = [];
|
|
1460
|
+
constructor(e, t) {
|
|
1461
|
+
this.msalInstance = e, this.defaultScopes = t;
|
|
1462
|
+
}
|
|
1463
|
+
async initialize() {
|
|
1464
|
+
await this.msalInstance.initialize();
|
|
1465
|
+
let e = await this.msalInstance.handleRedirectPromise();
|
|
1466
|
+
if (e?.account) {
|
|
1467
|
+
this.account = e.account, this.msalInstance.setActiveAccount(this.account), this.setState("SignedIn");
|
|
1468
|
+
return;
|
|
1469
|
+
}
|
|
1470
|
+
let t = this.msalInstance.getActiveAccount(), n = this.msalInstance.getAllAccounts();
|
|
1471
|
+
this.account = t ?? n[0] ?? null, this.account ? (this.msalInstance.setActiveAccount(this.account), this.setState("SignedIn")) : this.setState("SignedOut");
|
|
1472
|
+
}
|
|
1473
|
+
async login() {
|
|
1474
|
+
let e = { scopes: this.defaultScopes };
|
|
1475
|
+
await this.msalInstance.loginRedirect(e);
|
|
1476
|
+
}
|
|
1477
|
+
async logout() {
|
|
1478
|
+
let e = this.msalInstance.getActiveAccount() ?? this.account ?? void 0;
|
|
1479
|
+
this.account = null, this.msalInstance.setActiveAccount(null), this.setState("SignedOut"), await this.msalInstance.logoutRedirect({ account: e });
|
|
1480
|
+
}
|
|
1481
|
+
async getAccessToken(e) {
|
|
1482
|
+
let t = e && e.length > 0 ? e : this.defaultScopes, n = this.msalInstance.getActiveAccount() ?? this.account;
|
|
1483
|
+
if (!n) throw Error("No active account. User must sign in first.");
|
|
1484
|
+
let r = {
|
|
1485
|
+
scopes: t,
|
|
1486
|
+
account: n
|
|
1487
|
+
};
|
|
1488
|
+
try {
|
|
1489
|
+
return (await this.msalInstance.acquireTokenSilent(r)).accessToken;
|
|
1490
|
+
} catch (e) {
|
|
1491
|
+
if (e instanceof Cn) {
|
|
1492
|
+
let e = {
|
|
1493
|
+
scopes: t,
|
|
1494
|
+
account: n
|
|
1495
|
+
};
|
|
1496
|
+
throw await this.msalInstance.acquireTokenRedirect(e), new wn("Redirecting for interactive token acquisition.");
|
|
1497
|
+
}
|
|
1498
|
+
throw e;
|
|
1499
|
+
}
|
|
1500
|
+
}
|
|
1501
|
+
getState() {
|
|
1502
|
+
return this.state;
|
|
1503
|
+
}
|
|
1504
|
+
onStateChanged(e) {
|
|
1505
|
+
this.listeners.push(e);
|
|
1506
|
+
}
|
|
1507
|
+
removeStateChangedHandler(e) {
|
|
1508
|
+
this.listeners = this.listeners.filter((t) => t !== e);
|
|
1509
|
+
}
|
|
1510
|
+
setState(e) {
|
|
1511
|
+
this.state = e, this.emit();
|
|
1512
|
+
}
|
|
1513
|
+
emit() {
|
|
1514
|
+
for (let e of this.listeners) try {
|
|
1515
|
+
e();
|
|
1516
|
+
} catch {}
|
|
1517
|
+
}
|
|
1518
|
+
}, En = 6e4;
|
|
1519
|
+
function Dn(e) {
|
|
1520
|
+
let t = e.fetchFn ?? fetch;
|
|
1521
|
+
return async ({ ssoToken: n, scopes: r }) => {
|
|
1522
|
+
let i = await t(e.endpoint, {
|
|
1523
|
+
method: "POST",
|
|
1524
|
+
headers: {
|
|
1525
|
+
Authorization: `Bearer ${n}`,
|
|
1526
|
+
"Content-Type": "application/json"
|
|
1527
|
+
},
|
|
1528
|
+
body: JSON.stringify({ scopes: r })
|
|
1529
|
+
}), a = await i.json().catch(() => ({ error: i.statusText || "Token exchange failed" }));
|
|
1530
|
+
if (!i.ok) {
|
|
1531
|
+
let e = a?.error || a?.message || i.statusText;
|
|
1532
|
+
throw Error(`Backend token exchange failed: ${e}`);
|
|
1533
|
+
}
|
|
1534
|
+
if (!a?.accessToken) throw Error("Backend token exchange response did not include accessToken.");
|
|
1535
|
+
return {
|
|
1536
|
+
accessToken: a.accessToken,
|
|
1537
|
+
expiresAt: a.expiresAt
|
|
1538
|
+
};
|
|
1539
|
+
};
|
|
1163
1540
|
}
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
removeStateChangedHandler(e) {
|
|
1243
|
-
this.listeners = this.listeners.filter((n) => n !== e);
|
|
1244
|
-
}
|
|
1245
|
-
setState(e) {
|
|
1246
|
-
this.state = e, this.emit();
|
|
1247
|
-
}
|
|
1248
|
-
emit() {
|
|
1249
|
-
for (const e of this.listeners)
|
|
1250
|
-
try {
|
|
1251
|
-
e();
|
|
1252
|
-
} catch {
|
|
1253
|
-
}
|
|
1254
|
-
}
|
|
1255
|
-
}
|
|
1256
|
-
const Mn = 6e4;
|
|
1257
|
-
function Yn(t) {
|
|
1258
|
-
const e = t.fetchFn ?? fetch;
|
|
1259
|
-
return async ({
|
|
1260
|
-
ssoToken: n,
|
|
1261
|
-
scopes: s
|
|
1262
|
-
}) => {
|
|
1263
|
-
const r = await e(t.endpoint, {
|
|
1264
|
-
method: "POST",
|
|
1265
|
-
headers: {
|
|
1266
|
-
Authorization: `Bearer ${n}`,
|
|
1267
|
-
"Content-Type": "application/json"
|
|
1268
|
-
},
|
|
1269
|
-
body: JSON.stringify({ scopes: s })
|
|
1270
|
-
}), o = await r.json().catch(() => ({ error: r.statusText || "Token exchange failed" }));
|
|
1271
|
-
if (!r.ok) {
|
|
1272
|
-
const c = o?.error || o?.message || r.statusText;
|
|
1273
|
-
throw new Error(`Backend token exchange failed: ${c}`);
|
|
1274
|
-
}
|
|
1275
|
-
if (!o?.accessToken)
|
|
1276
|
-
throw new Error("Backend token exchange response did not include accessToken.");
|
|
1277
|
-
return {
|
|
1278
|
-
accessToken: o.accessToken,
|
|
1279
|
-
expiresAt: o.expiresAt
|
|
1280
|
-
};
|
|
1281
|
-
};
|
|
1282
|
-
}
|
|
1283
|
-
class zn {
|
|
1284
|
-
defaultScopes;
|
|
1285
|
-
getTeamsSsoTokenFn;
|
|
1286
|
-
exchangeForGraphTokenFn;
|
|
1287
|
-
refreshSkewMs;
|
|
1288
|
-
state = "SignedOut";
|
|
1289
|
-
listeners = [];
|
|
1290
|
-
tokenCache = /* @__PURE__ */ new Map();
|
|
1291
|
-
constructor(e) {
|
|
1292
|
-
if (!e.defaultScopes || e.defaultScopes.length === 0)
|
|
1293
|
-
throw new Error("TeamsHostedProvider requires at least one default scope.");
|
|
1294
|
-
this.defaultScopes = [...new Set(e.defaultScopes)], this.getTeamsSsoTokenFn = e.getTeamsSsoToken, this.exchangeForGraphTokenFn = e.exchangeForGraphToken, this.refreshSkewMs = e.refreshSkewMs ?? Mn;
|
|
1295
|
-
}
|
|
1296
|
-
async login() {
|
|
1297
|
-
try {
|
|
1298
|
-
await this.getAccessToken(), this.setState("SignedIn");
|
|
1299
|
-
} catch (e) {
|
|
1300
|
-
throw this.clearCache(), this.setState("SignedOut"), e;
|
|
1301
|
-
}
|
|
1302
|
-
}
|
|
1303
|
-
async logout() {
|
|
1304
|
-
this.clearCache(), this.setState("SignedOut");
|
|
1305
|
-
}
|
|
1306
|
-
async getAccessToken(e) {
|
|
1307
|
-
const n = this.normalizeScopes(e), s = this.buildScopeKey(n), r = this.tokenCache.get(s);
|
|
1308
|
-
if (r && this.isTokenValid(r))
|
|
1309
|
-
return r.accessToken;
|
|
1310
|
-
const o = await this.getTeamsSsoTokenFn(n);
|
|
1311
|
-
if (!o)
|
|
1312
|
-
throw new Error("Teams SSO token acquisition returned empty token.");
|
|
1313
|
-
const c = await this.exchangeForGraphTokenFn({
|
|
1314
|
-
ssoToken: o,
|
|
1315
|
-
scopes: n
|
|
1316
|
-
}), i = this.normalizeExchangedToken(c);
|
|
1317
|
-
return this.tokenCache.set(s, i), this.setState("SignedIn"), i.accessToken;
|
|
1318
|
-
}
|
|
1319
|
-
getState() {
|
|
1320
|
-
return this.state;
|
|
1321
|
-
}
|
|
1322
|
-
onStateChanged(e) {
|
|
1323
|
-
this.listeners.push(e);
|
|
1324
|
-
}
|
|
1325
|
-
removeStateChangedHandler(e) {
|
|
1326
|
-
this.listeners = this.listeners.filter((n) => n !== e);
|
|
1327
|
-
}
|
|
1328
|
-
normalizeScopes(e) {
|
|
1329
|
-
const n = e && e.length > 0 ? e : this.defaultScopes, s = [...new Set(n.filter(Boolean))];
|
|
1330
|
-
if (s.length === 0)
|
|
1331
|
-
throw new Error("At least one scope is required to request a Graph token.");
|
|
1332
|
-
return s;
|
|
1333
|
-
}
|
|
1334
|
-
buildScopeKey(e) {
|
|
1335
|
-
return [...e].sort().join(" ");
|
|
1336
|
-
}
|
|
1337
|
-
isTokenValid(e) {
|
|
1338
|
-
return e.expiresAtMs ? Date.now() + this.refreshSkewMs < e.expiresAtMs : !0;
|
|
1339
|
-
}
|
|
1340
|
-
normalizeExchangedToken(e) {
|
|
1341
|
-
if (typeof e == "string") {
|
|
1342
|
-
if (!e)
|
|
1343
|
-
throw new Error("Graph token exchange returned empty access token.");
|
|
1344
|
-
return { accessToken: e };
|
|
1345
|
-
}
|
|
1346
|
-
if (!e.accessToken)
|
|
1347
|
-
throw new Error("Graph token exchange returned empty access token.");
|
|
1348
|
-
return {
|
|
1349
|
-
accessToken: e.accessToken,
|
|
1350
|
-
expiresAtMs: this.toEpochMs(e.expiresAt)
|
|
1351
|
-
};
|
|
1352
|
-
}
|
|
1353
|
-
toEpochMs(e) {
|
|
1354
|
-
if (e)
|
|
1355
|
-
return e instanceof Date ? e.getTime() : e;
|
|
1356
|
-
}
|
|
1357
|
-
clearCache() {
|
|
1358
|
-
this.tokenCache.clear();
|
|
1359
|
-
}
|
|
1360
|
-
setState(e) {
|
|
1361
|
-
this.state !== e && (this.state = e, this.emit());
|
|
1362
|
-
}
|
|
1363
|
-
emit() {
|
|
1364
|
-
for (const e of this.listeners)
|
|
1365
|
-
try {
|
|
1366
|
-
e();
|
|
1367
|
-
} catch {
|
|
1368
|
-
}
|
|
1369
|
-
}
|
|
1370
|
-
}
|
|
1371
|
-
export {
|
|
1372
|
-
Kn as GraphProvider,
|
|
1373
|
-
Tn as MockProvider,
|
|
1374
|
-
Wn as MsalBrowserProvider,
|
|
1375
|
-
bn as PeoplePicker,
|
|
1376
|
-
Ln as Person,
|
|
1377
|
-
vn as RedirectInProgressError,
|
|
1378
|
-
zn as TeamsHostedProvider,
|
|
1379
|
-
Yn as createBackendTokenExchange,
|
|
1380
|
-
qn as createMockSignedInProvider,
|
|
1381
|
-
jt as isPeopleSearchProvider,
|
|
1382
|
-
mt as isPersonDataProvider,
|
|
1383
|
-
De as useGraphClient,
|
|
1384
|
-
xn as usePeopleSearch,
|
|
1385
|
-
Bt as usePersonCacheOptions,
|
|
1386
|
-
Ot as usePersonData,
|
|
1387
|
-
ce as useProvider,
|
|
1388
|
-
ie as useProviderState
|
|
1541
|
+
var On = class {
|
|
1542
|
+
defaultScopes;
|
|
1543
|
+
getTeamsSsoTokenFn;
|
|
1544
|
+
exchangeForGraphTokenFn;
|
|
1545
|
+
refreshSkewMs;
|
|
1546
|
+
state = "SignedOut";
|
|
1547
|
+
listeners = [];
|
|
1548
|
+
tokenCache = /* @__PURE__ */ new Map();
|
|
1549
|
+
constructor(e) {
|
|
1550
|
+
if (!e.defaultScopes || e.defaultScopes.length === 0) throw Error("TeamsHostedProvider requires at least one default scope.");
|
|
1551
|
+
this.defaultScopes = [...new Set(e.defaultScopes)], this.getTeamsSsoTokenFn = e.getTeamsSsoToken, this.exchangeForGraphTokenFn = e.exchangeForGraphToken, this.refreshSkewMs = e.refreshSkewMs ?? En;
|
|
1552
|
+
}
|
|
1553
|
+
async login() {
|
|
1554
|
+
try {
|
|
1555
|
+
await this.getAccessToken(), this.setState("SignedIn");
|
|
1556
|
+
} catch (e) {
|
|
1557
|
+
throw this.clearCache(), this.setState("SignedOut"), e;
|
|
1558
|
+
}
|
|
1559
|
+
}
|
|
1560
|
+
async logout() {
|
|
1561
|
+
this.clearCache(), this.setState("SignedOut");
|
|
1562
|
+
}
|
|
1563
|
+
async getAccessToken(e) {
|
|
1564
|
+
let t = this.normalizeScopes(e), n = this.buildScopeKey(t), r = this.tokenCache.get(n);
|
|
1565
|
+
if (r && this.isTokenValid(r)) return r.accessToken;
|
|
1566
|
+
let i = await this.getTeamsSsoTokenFn(t);
|
|
1567
|
+
if (!i) throw Error("Teams SSO token acquisition returned empty token.");
|
|
1568
|
+
let a = await this.exchangeForGraphTokenFn({
|
|
1569
|
+
ssoToken: i,
|
|
1570
|
+
scopes: t
|
|
1571
|
+
}), o = this.normalizeExchangedToken(a);
|
|
1572
|
+
return this.tokenCache.set(n, o), this.setState("SignedIn"), o.accessToken;
|
|
1573
|
+
}
|
|
1574
|
+
getState() {
|
|
1575
|
+
return this.state;
|
|
1576
|
+
}
|
|
1577
|
+
onStateChanged(e) {
|
|
1578
|
+
this.listeners.push(e);
|
|
1579
|
+
}
|
|
1580
|
+
removeStateChangedHandler(e) {
|
|
1581
|
+
this.listeners = this.listeners.filter((t) => t !== e);
|
|
1582
|
+
}
|
|
1583
|
+
normalizeScopes(e) {
|
|
1584
|
+
let t = e && e.length > 0 ? e : this.defaultScopes, n = [...new Set(t.filter(Boolean))];
|
|
1585
|
+
if (n.length === 0) throw Error("At least one scope is required to request a Graph token.");
|
|
1586
|
+
return n;
|
|
1587
|
+
}
|
|
1588
|
+
buildScopeKey(e) {
|
|
1589
|
+
return [...e].sort().join(" ");
|
|
1590
|
+
}
|
|
1591
|
+
isTokenValid(e) {
|
|
1592
|
+
return e.expiresAtMs ? Date.now() + this.refreshSkewMs < e.expiresAtMs : !0;
|
|
1593
|
+
}
|
|
1594
|
+
normalizeExchangedToken(e) {
|
|
1595
|
+
if (typeof e == "string") {
|
|
1596
|
+
if (!e) throw Error("Graph token exchange returned empty access token.");
|
|
1597
|
+
return { accessToken: e };
|
|
1598
|
+
}
|
|
1599
|
+
if (!e.accessToken) throw Error("Graph token exchange returned empty access token.");
|
|
1600
|
+
return {
|
|
1601
|
+
accessToken: e.accessToken,
|
|
1602
|
+
expiresAtMs: this.toEpochMs(e.expiresAt)
|
|
1603
|
+
};
|
|
1604
|
+
}
|
|
1605
|
+
toEpochMs(e) {
|
|
1606
|
+
if (e) return e instanceof Date ? e.getTime() : e;
|
|
1607
|
+
}
|
|
1608
|
+
clearCache() {
|
|
1609
|
+
this.tokenCache.clear();
|
|
1610
|
+
}
|
|
1611
|
+
setState(e) {
|
|
1612
|
+
this.state !== e && (this.state = e, this.emit());
|
|
1613
|
+
}
|
|
1614
|
+
emit() {
|
|
1615
|
+
for (let e of this.listeners) try {
|
|
1616
|
+
e();
|
|
1617
|
+
} catch {}
|
|
1618
|
+
}
|
|
1389
1619
|
};
|
|
1620
|
+
//#endregion
|
|
1621
|
+
export { ae as GraphProvider, yn as MockProvider, Tn as MsalBrowserProvider, Ge as People, _n as PeoplePicker, Ce as Person, wn as RedirectInProgressError, On as TeamsHostedProvider, Dn as createBackendTokenExchange, bn as createMockSignedInProvider, U as isPeopleSearchProvider, H as isPersonDataProvider, V as useGraphClient, ze as usePeopleList, cn as usePeopleSearch, z as usePersonCacheOptions, ue as usePersonData, L as useProvider, R as useProviderState };
|