@clerk/react 6.9.0 → 6.9.1-canary.v20260610190754

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.
Files changed (75) hide show
  1. package/dist/ClerkProvider-9lxHp9j5.cjs +1623 -0
  2. package/dist/ClerkProvider-9lxHp9j5.cjs.map +1 -0
  3. package/dist/ClerkProvider-LQpPtmNL.mjs +1533 -0
  4. package/dist/ClerkProvider-LQpPtmNL.mjs.map +1 -0
  5. package/dist/errors.cjs +69 -0
  6. package/dist/errors.d.cts +2 -0
  7. package/dist/errors.d.mts +2 -1
  8. package/dist/errors.mjs +2 -29
  9. package/dist/experimental.cjs +270 -0
  10. package/dist/experimental.cjs.map +1 -0
  11. package/dist/{experimental.d.ts → experimental.d.cts} +18 -18
  12. package/dist/experimental.d.mts +18 -18
  13. package/dist/experimental.mjs +201 -165
  14. package/dist/experimental.mjs.map +1 -1
  15. package/dist/hooks-BiY5Zgpp.mjs +1369 -0
  16. package/dist/hooks-BiY5Zgpp.mjs.map +1 -0
  17. package/dist/hooks-CBghYU21.cjs +1606 -0
  18. package/dist/hooks-CBghYU21.cjs.map +1 -0
  19. package/dist/index.cjs +447 -0
  20. package/dist/index.cjs.map +1 -0
  21. package/dist/index.d.cts +345 -0
  22. package/dist/index.d.mts +183 -157
  23. package/dist/index.mjs +285 -380
  24. package/dist/index.mjs.map +1 -1
  25. package/dist/internal.cjs +107 -0
  26. package/dist/internal.cjs.map +1 -0
  27. package/dist/internal.d.cts +51 -0
  28. package/dist/internal.d.mts +24 -26
  29. package/dist/internal.mjs +39 -73
  30. package/dist/internal.mjs.map +1 -1
  31. package/dist/legacy.cjs +134 -0
  32. package/dist/legacy.cjs.map +1 -0
  33. package/dist/{legacy.d.ts → legacy.d.cts} +6 -3
  34. package/dist/legacy.d.mts +6 -3
  35. package/dist/legacy.mjs +126 -42
  36. package/dist/legacy.mjs.map +1 -1
  37. package/dist/types-Bwenmt7y.d.cts +10951 -0
  38. package/dist/types-CiIhevkA.d.mts +10951 -0
  39. package/dist/types.cjs +0 -0
  40. package/dist/types.d.cts +3 -0
  41. package/dist/types.d.mts +3 -109
  42. package/dist/types.mjs +1 -2
  43. package/dist/useAssertWrappedByClerkProvider-Cm0djUcB.cjs +52 -0
  44. package/dist/useAssertWrappedByClerkProvider-Cm0djUcB.cjs.map +1 -0
  45. package/dist/useAssertWrappedByClerkProvider-GaNwZpWo.mjs +29 -0
  46. package/dist/useAssertWrappedByClerkProvider-GaNwZpWo.mjs.map +1 -0
  47. package/dist/{useAuth-Dlg_G1_7.d.mts → useAuth-BK5Y4htK.d.mts} +58 -39
  48. package/dist/{useAuth-Cv6iRjL9.d.ts → useAuth-BMxaWktj.d.cts} +58 -39
  49. package/package.json +18 -18
  50. package/dist/chunk-E5QRIS4Z.mjs +0 -20
  51. package/dist/chunk-E5QRIS4Z.mjs.map +0 -1
  52. package/dist/chunk-FQVXBXXF.mjs +0 -1487
  53. package/dist/chunk-FQVXBXXF.mjs.map +0 -1
  54. package/dist/chunk-GVGS7DUS.mjs +0 -2097
  55. package/dist/chunk-GVGS7DUS.mjs.map +0 -1
  56. package/dist/chunk-RQWALB2R.mjs +0 -26
  57. package/dist/chunk-RQWALB2R.mjs.map +0 -1
  58. package/dist/errors.d.ts +0 -1
  59. package/dist/errors.js +0 -51
  60. package/dist/errors.js.map +0 -1
  61. package/dist/errors.mjs.map +0 -1
  62. package/dist/experimental.js +0 -1505
  63. package/dist/experimental.js.map +0 -1
  64. package/dist/index.d.ts +0 -319
  65. package/dist/index.js +0 -3919
  66. package/dist/index.js.map +0 -1
  67. package/dist/internal.d.ts +0 -53
  68. package/dist/internal.js +0 -3339
  69. package/dist/internal.js.map +0 -1
  70. package/dist/legacy.js +0 -90
  71. package/dist/legacy.js.map +0 -1
  72. package/dist/types.d.ts +0 -109
  73. package/dist/types.js +0 -19
  74. package/dist/types.js.map +0 -1
  75. package/dist/types.mjs.map +0 -1
package/dist/index.cjs ADDED
@@ -0,0 +1,447 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_hooks = require('./hooks-CBghYU21.cjs');
3
+ const require_useAssertWrappedByClerkProvider = require('./useAssertWrappedByClerkProvider-Cm0djUcB.cjs');
4
+ const require_ClerkProvider = require('./ClerkProvider-9lxHp9j5.cjs');
5
+ let react = require("react");
6
+ let react$1 = require_hooks.__toESM(react, 1);
7
+ react = require_hooks.__toESM(react);
8
+ let react_dom = require("react-dom");
9
+ react_dom = require_hooks.__toESM(react_dom, 1);
10
+ let react_dom_client = require("react-dom/client");
11
+ react_dom_client = require_hooks.__toESM(react_dom_client, 1);
12
+ let react_jsx_runtime = require("react/jsx-runtime");
13
+ react_jsx_runtime = require_hooks.__toESM(react_jsx_runtime, 1);
14
+ let _clerk_shared_loadClerkJsScript = require("@clerk/shared/loadClerkJsScript");
15
+ let _clerk_shared_react = require("@clerk/shared/react");
16
+ let _clerk_shared_deprecated = require("@clerk/shared/deprecated");
17
+ let _clerk_shared_getToken = require("@clerk/shared/getToken");
18
+
19
+ //#region src/polyfills.ts
20
+ /**
21
+ * Vite does not define `global` by default
22
+ * One workaround is to use the `define` config prop
23
+ * https://vitejs.dev/config/#define
24
+ * We are solving this in the SDK level to reduce setup steps.
25
+ */
26
+ if (typeof window !== "undefined" && !window.global) window.global = typeof global === "undefined" ? window : global;
27
+
28
+ //#endregion
29
+ //#region ../ui/register/index.mjs
30
+ /**
31
+ * Register React dependencies for sharing with @clerk/ui's shared variant.
32
+ *
33
+ * Import this module BEFORE loading the ui.shared.browser.js bundle:
34
+ *
35
+ * ```js
36
+ * import '@clerk/ui/register';
37
+ * // Now load clerk-js which will load ui.shared.browser.js
38
+ * ```
39
+ *
40
+ * This enables @clerk/ui to use the host app's React instead of bundling its own,
41
+ * reducing the overall bundle size.
42
+ */
43
+ if (globalThis.__clerkSharedModules) {
44
+ const existingVersion = globalThis.__clerkSharedModules.react?.version;
45
+ if (existingVersion && existingVersion !== react$1.version) console.warn(`[@clerk/ui/register] React version mismatch detected. Already registered: ${existingVersion}, current import: ${react$1.version}. This may cause issues with the shared @clerk/ui variant.`);
46
+ } else globalThis.__clerkSharedModules = {
47
+ react: react$1,
48
+ "react-dom": react_dom,
49
+ "react-dom/client": react_dom_client,
50
+ "react/jsx-runtime": react_jsx_runtime
51
+ };
52
+
53
+ //#endregion
54
+ //#region src/components/SignInButton.tsx
55
+ const SignInButton = require_hooks.withClerk(({ clerk, children, ...props }) => {
56
+ const { appearance, getContainer, component, signUpFallbackRedirectUrl, forceRedirectUrl, fallbackRedirectUrl, signUpForceRedirectUrl, mode, initialValues, withSignUp, oauthFlow, ...rest } = props;
57
+ children = require_hooks.normalizeWithDefaultValue(children, "Sign in");
58
+ const child = require_hooks.assertSingleChild(children)("SignInButton");
59
+ const clickHandler = () => {
60
+ const opts = {
61
+ forceRedirectUrl,
62
+ fallbackRedirectUrl,
63
+ signUpFallbackRedirectUrl,
64
+ signUpForceRedirectUrl,
65
+ initialValues,
66
+ withSignUp,
67
+ oauthFlow
68
+ };
69
+ if (mode === "modal") return clerk.openSignIn({
70
+ ...opts,
71
+ appearance,
72
+ getContainer
73
+ });
74
+ return clerk.redirectToSignIn({
75
+ ...opts,
76
+ signInFallbackRedirectUrl: fallbackRedirectUrl,
77
+ signInForceRedirectUrl: forceRedirectUrl
78
+ });
79
+ };
80
+ const wrappedChildClickHandler = async (e) => {
81
+ if (child && typeof child === "object" && "props" in child) await require_hooks.safeExecute(child.props.onClick)(e);
82
+ return clickHandler();
83
+ };
84
+ const childProps = {
85
+ ...rest,
86
+ onClick: wrappedChildClickHandler
87
+ };
88
+ return react.default.cloneElement(child, childProps);
89
+ }, {
90
+ component: "SignInButton",
91
+ renderWhileLoading: true
92
+ });
93
+
94
+ //#endregion
95
+ //#region src/components/SignInWithMetamaskButton.tsx
96
+ const SignInWithMetamaskButton = require_hooks.withClerk(({ clerk, children, ...props }) => {
97
+ const { redirectUrl, getContainer, component, ...rest } = props;
98
+ children = require_hooks.normalizeWithDefaultValue(children, "Sign in with Metamask");
99
+ const child = require_hooks.assertSingleChild(children)("SignInWithMetamaskButton");
100
+ const clickHandler = async () => {
101
+ async function authenticate() {
102
+ await clerk.authenticateWithMetamask({ redirectUrl: redirectUrl || void 0 });
103
+ }
104
+ authenticate();
105
+ };
106
+ const wrappedChildClickHandler = async (e) => {
107
+ await require_hooks.safeExecute(child.props.onClick)(e);
108
+ return clickHandler();
109
+ };
110
+ const childProps = {
111
+ ...rest,
112
+ onClick: wrappedChildClickHandler
113
+ };
114
+ return react.default.cloneElement(child, childProps);
115
+ }, {
116
+ component: "SignInWithMetamask",
117
+ renderWhileLoading: true
118
+ });
119
+
120
+ //#endregion
121
+ //#region src/components/SignOutButton.tsx
122
+ const SignOutButton = require_hooks.withClerk(({ clerk, children, ...props }) => {
123
+ const { redirectUrl = "/", sessionId, signOutOptions, getContainer, component, ...rest } = props;
124
+ if (signOutOptions) (0, _clerk_shared_deprecated.deprecated)("SignOutButton `signOutOptions`", "Use the `redirectUrl` and `sessionId` props directly instead.");
125
+ children = require_hooks.normalizeWithDefaultValue(children, "Sign out");
126
+ const child = require_hooks.assertSingleChild(children)("SignOutButton");
127
+ const clickHandler = () => clerk.signOut({
128
+ redirectUrl,
129
+ ...sessionId !== void 0 && { sessionId },
130
+ ...signOutOptions
131
+ });
132
+ const wrappedChildClickHandler = async (e) => {
133
+ await require_hooks.safeExecute(child.props.onClick)(e);
134
+ return clickHandler();
135
+ };
136
+ const childProps = {
137
+ ...rest,
138
+ onClick: wrappedChildClickHandler
139
+ };
140
+ return react.default.cloneElement(child, childProps);
141
+ }, {
142
+ component: "SignOutButton",
143
+ renderWhileLoading: true
144
+ });
145
+
146
+ //#endregion
147
+ //#region src/components/SignUpButton.tsx
148
+ const SignUpButton = require_hooks.withClerk(({ clerk, children, ...props }) => {
149
+ const { appearance, unsafeMetadata, getContainer, component, fallbackRedirectUrl, forceRedirectUrl, signInFallbackRedirectUrl, signInForceRedirectUrl, mode, initialValues, oauthFlow, ...rest } = props;
150
+ children = require_hooks.normalizeWithDefaultValue(children, "Sign up");
151
+ const child = require_hooks.assertSingleChild(children)("SignUpButton");
152
+ const clickHandler = () => {
153
+ const opts = {
154
+ fallbackRedirectUrl,
155
+ forceRedirectUrl,
156
+ signInFallbackRedirectUrl,
157
+ signInForceRedirectUrl,
158
+ initialValues,
159
+ oauthFlow
160
+ };
161
+ if (mode === "modal") return clerk.openSignUp({
162
+ ...opts,
163
+ appearance,
164
+ unsafeMetadata,
165
+ getContainer
166
+ });
167
+ return clerk.redirectToSignUp({
168
+ ...opts,
169
+ signUpFallbackRedirectUrl: fallbackRedirectUrl,
170
+ signUpForceRedirectUrl: forceRedirectUrl
171
+ });
172
+ };
173
+ const wrappedChildClickHandler = async (e) => {
174
+ if (child && typeof child === "object" && "props" in child) await require_hooks.safeExecute(child.props.onClick)(e);
175
+ return clickHandler();
176
+ };
177
+ const childProps = {
178
+ ...rest,
179
+ onClick: wrappedChildClickHandler
180
+ };
181
+ return react.default.cloneElement(child, childProps);
182
+ }, {
183
+ component: "SignUpButton",
184
+ renderWhileLoading: true
185
+ });
186
+
187
+ //#endregion
188
+ //#region src/components/HandleSSOCallback.tsx
189
+ /**
190
+ * Use this component when building custom UI to handle the SSO callback and navigate to the appropriate page based on
191
+ * the status of the sign-in or sign-up. By default, this component might render a captcha element to handle captchas
192
+ * when required by the Clerk API.
193
+ *
194
+ * @example
195
+ * ```tsx
196
+ * import { HandleSSOCallback } from '@clerk/react';
197
+ * import { useNavigate } from 'react-router';
198
+ *
199
+ * export default function Page() {
200
+ * const navigate = useNavigate();
201
+ *
202
+ * return (
203
+ * <HandleSSOCallback
204
+ * navigateToApp={({ session, decorateUrl }) => {
205
+ * if (session?.currentTask) {
206
+ * const destination = decorateUrl(`/onboarding/${session?.currentTask.key}`);
207
+ * if (destination.startsWith('http')) {
208
+ * window.location.href = destination;
209
+ * return;
210
+ * }
211
+ * navigate(destination);
212
+ * return;
213
+ * }
214
+ *
215
+ * const destination = decorateUrl('/dashboard');
216
+ * if (destination.startsWith('http')) {
217
+ * window.location.href = destination;
218
+ * return;
219
+ * }
220
+ * navigate(destination);
221
+ * }}
222
+ * navigateToSignIn={() => {
223
+ * navigate('/sign-in');
224
+ * }}
225
+ * navigateToSignUp={() => {
226
+ * navigate('/sign-up');
227
+ * }}
228
+ * />
229
+ * );
230
+ * }
231
+ * ```
232
+ */
233
+ function HandleSSOCallback(props) {
234
+ const { navigateToApp, navigateToSignIn, navigateToSignUp } = props;
235
+ const clerk = (0, _clerk_shared_react.useClerk)();
236
+ const { signIn } = require_hooks.useSignIn();
237
+ const { signUp } = require_hooks.useSignUp();
238
+ const hasRun = (0, react.useRef)(false);
239
+ (0, react.useEffect)(() => {
240
+ (async () => {
241
+ if (!clerk.loaded || hasRun.current) return;
242
+ hasRun.current = true;
243
+ if (signIn.status === "complete") {
244
+ await signIn.finalize({ navigate: async (...params) => {
245
+ navigateToApp(...params);
246
+ } });
247
+ return;
248
+ }
249
+ if (signUp.isTransferable) {
250
+ await signIn.create({ transfer: true });
251
+ if (signIn.status === "complete") {
252
+ await signIn.finalize({ navigate: async (...params) => {
253
+ navigateToApp(...params);
254
+ } });
255
+ return;
256
+ }
257
+ return navigateToSignIn();
258
+ }
259
+ if (signIn.status === "needs_first_factor" && !signIn.supportedFirstFactors?.every((f) => f.strategy === "enterprise_sso")) return navigateToSignIn();
260
+ if (signIn.isTransferable) {
261
+ await signUp.create({ transfer: true });
262
+ if (signUp.status === "complete") {
263
+ await signUp.finalize({ navigate: async (...params) => {
264
+ navigateToApp(...params);
265
+ } });
266
+ return;
267
+ }
268
+ return navigateToSignUp();
269
+ }
270
+ if (signUp.status === "complete") {
271
+ await signUp.finalize({ navigate: async (...params) => {
272
+ navigateToApp(...params);
273
+ } });
274
+ return;
275
+ }
276
+ if (signIn.status === "needs_second_factor" || signIn.status === "needs_new_password") return navigateToSignIn();
277
+ if (signIn.existingSession || signUp.existingSession) {
278
+ const sessionId = signIn.existingSession?.sessionId || signUp.existingSession?.sessionId;
279
+ if (sessionId) {
280
+ await clerk.setActive({
281
+ session: sessionId,
282
+ navigate: async (...params) => {
283
+ return navigateToApp(...params);
284
+ }
285
+ });
286
+ return;
287
+ }
288
+ }
289
+ })();
290
+ }, [
291
+ clerk,
292
+ clerk.loaded,
293
+ signIn,
294
+ signUp
295
+ ]);
296
+ return /* @__PURE__ */ react.default.createElement("div", null, /* @__PURE__ */ react.default.createElement("div", { id: "clerk-captcha" }));
297
+ }
298
+
299
+ //#endregion
300
+ //#region src/index.ts
301
+ require_useAssertWrappedByClerkProvider.setErrorThrowerOptions({ packageName: "@clerk/react" });
302
+ (0, _clerk_shared_loadClerkJsScript.setClerkJSLoadingErrorPackageName)("@clerk/react");
303
+
304
+ //#endregion
305
+ exports.APIKeys = require_hooks.APIKeys;
306
+ exports.AuthenticateWithRedirectCallback = require_ClerkProvider.AuthenticateWithRedirectCallback;
307
+ exports.ClerkDegraded = require_ClerkProvider.ClerkDegraded;
308
+ exports.ClerkFailed = require_ClerkProvider.ClerkFailed;
309
+ exports.ClerkLoaded = require_ClerkProvider.ClerkLoaded;
310
+ exports.ClerkLoading = require_ClerkProvider.ClerkLoading;
311
+ exports.ClerkProvider = require_ClerkProvider.ClerkProvider;
312
+ exports.CreateOrganization = require_hooks.CreateOrganization;
313
+ exports.GoogleOneTap = require_hooks.GoogleOneTap;
314
+ exports.HandleSSOCallback = HandleSSOCallback;
315
+ exports.OAuthConsent = require_hooks.OAuthConsent;
316
+ exports.OrganizationList = require_hooks.OrganizationList;
317
+ exports.OrganizationProfile = require_hooks.OrganizationProfile;
318
+ exports.OrganizationSwitcher = require_hooks.OrganizationSwitcher;
319
+ exports.PricingTable = require_hooks.PricingTable;
320
+ exports.RedirectToCreateOrganization = require_ClerkProvider.RedirectToCreateOrganization;
321
+ exports.RedirectToOrganizationProfile = require_ClerkProvider.RedirectToOrganizationProfile;
322
+ exports.RedirectToSignIn = require_ClerkProvider.RedirectToSignIn;
323
+ exports.RedirectToSignUp = require_ClerkProvider.RedirectToSignUp;
324
+ exports.RedirectToTasks = require_ClerkProvider.RedirectToTasks;
325
+ exports.RedirectToUserProfile = require_ClerkProvider.RedirectToUserProfile;
326
+ exports.Show = require_ClerkProvider.Show;
327
+ exports.SignIn = require_hooks.SignIn;
328
+ exports.SignInButton = SignInButton;
329
+ exports.SignInWithMetamaskButton = SignInWithMetamaskButton;
330
+ exports.SignOutButton = SignOutButton;
331
+ exports.SignUp = require_hooks.SignUp;
332
+ exports.SignUpButton = SignUpButton;
333
+ exports.TaskChooseOrganization = require_hooks.TaskChooseOrganization;
334
+ exports.TaskResetPassword = require_hooks.TaskResetPassword;
335
+ exports.TaskSetupMFA = require_hooks.TaskSetupMFA;
336
+ Object.defineProperty(exports, 'UNSAFE_PortalProvider', {
337
+ enumerable: true,
338
+ get: function () {
339
+ return _clerk_shared_react.UNSAFE_PortalProvider;
340
+ }
341
+ });
342
+ exports.UserAvatar = require_hooks.UserAvatar;
343
+ exports.UserButton = require_hooks.UserButton;
344
+ exports.UserProfile = require_hooks.UserProfile;
345
+ exports.Waitlist = require_hooks.Waitlist;
346
+ Object.defineProperty(exports, '__experimental_CheckoutProvider', {
347
+ enumerable: true,
348
+ get: function () {
349
+ return _clerk_shared_react.__experimental_CheckoutProvider;
350
+ }
351
+ });
352
+ Object.defineProperty(exports, '__experimental_PaymentElement', {
353
+ enumerable: true,
354
+ get: function () {
355
+ return _clerk_shared_react.__experimental_PaymentElement;
356
+ }
357
+ });
358
+ Object.defineProperty(exports, '__experimental_PaymentElementProvider', {
359
+ enumerable: true,
360
+ get: function () {
361
+ return _clerk_shared_react.__experimental_PaymentElementProvider;
362
+ }
363
+ });
364
+ Object.defineProperty(exports, '__experimental_useCheckout', {
365
+ enumerable: true,
366
+ get: function () {
367
+ return _clerk_shared_react.__experimental_useCheckout;
368
+ }
369
+ });
370
+ Object.defineProperty(exports, '__experimental_usePaymentElement', {
371
+ enumerable: true,
372
+ get: function () {
373
+ return _clerk_shared_react.__experimental_usePaymentElement;
374
+ }
375
+ });
376
+ Object.defineProperty(exports, 'getToken', {
377
+ enumerable: true,
378
+ get: function () {
379
+ return _clerk_shared_getToken.getToken;
380
+ }
381
+ });
382
+ Object.defineProperty(exports, 'useAPIKeys', {
383
+ enumerable: true,
384
+ get: function () {
385
+ return _clerk_shared_react.useAPIKeys;
386
+ }
387
+ });
388
+ exports.useAuth = require_hooks.useAuth;
389
+ Object.defineProperty(exports, 'useClerk', {
390
+ enumerable: true,
391
+ get: function () {
392
+ return _clerk_shared_react.useClerk;
393
+ }
394
+ });
395
+ exports.useEmailLink = require_hooks.useEmailLink;
396
+ Object.defineProperty(exports, 'useOAuthConsent', {
397
+ enumerable: true,
398
+ get: function () {
399
+ return _clerk_shared_react.useOAuthConsent;
400
+ }
401
+ });
402
+ Object.defineProperty(exports, 'useOrganization', {
403
+ enumerable: true,
404
+ get: function () {
405
+ return _clerk_shared_react.useOrganization;
406
+ }
407
+ });
408
+ Object.defineProperty(exports, 'useOrganizationCreationDefaults', {
409
+ enumerable: true,
410
+ get: function () {
411
+ return _clerk_shared_react.useOrganizationCreationDefaults;
412
+ }
413
+ });
414
+ Object.defineProperty(exports, 'useOrganizationList', {
415
+ enumerable: true,
416
+ get: function () {
417
+ return _clerk_shared_react.useOrganizationList;
418
+ }
419
+ });
420
+ Object.defineProperty(exports, 'useReverification', {
421
+ enumerable: true,
422
+ get: function () {
423
+ return _clerk_shared_react.useReverification;
424
+ }
425
+ });
426
+ Object.defineProperty(exports, 'useSession', {
427
+ enumerable: true,
428
+ get: function () {
429
+ return _clerk_shared_react.useSession;
430
+ }
431
+ });
432
+ Object.defineProperty(exports, 'useSessionList', {
433
+ enumerable: true,
434
+ get: function () {
435
+ return _clerk_shared_react.useSessionList;
436
+ }
437
+ });
438
+ exports.useSignIn = require_hooks.useSignIn;
439
+ exports.useSignUp = require_hooks.useSignUp;
440
+ Object.defineProperty(exports, 'useUser', {
441
+ enumerable: true,
442
+ get: function () {
443
+ return _clerk_shared_react.useUser;
444
+ }
445
+ });
446
+ exports.useWaitlist = require_hooks.useWaitlist;
447
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["react","reactDom","reactDomClient","jsxRuntime","withClerk","normalizeWithDefaultValue","assertSingleChild","safeExecute","React","withClerk","normalizeWithDefaultValue","assertSingleChild","safeExecute","React","withClerk","normalizeWithDefaultValue","assertSingleChild","safeExecute","React","withClerk","normalizeWithDefaultValue","assertSingleChild","safeExecute","React","useSignIn","useSignUp","setErrorThrowerOptions"],"sources":["../src/polyfills.ts","../../ui/register/index.mjs","../src/components/SignInButton.tsx","../src/components/SignInWithMetamaskButton.tsx","../src/components/SignOutButton.tsx","../src/components/SignUpButton.tsx","../src/components/HandleSSOCallback.tsx","../src/index.ts"],"sourcesContent":["/**\n * Vite does not define `global` by default\n * One workaround is to use the `define` config prop\n * https://vitejs.dev/config/#define\n * We are solving this in the SDK level to reduce setup steps.\n */\nif (typeof window !== 'undefined' && !window.global) {\n window.global = typeof global === 'undefined' ? window : global;\n}\n\nexport {};\n","/**\n * Register React dependencies for sharing with @clerk/ui's shared variant.\n *\n * Import this module BEFORE loading the ui.shared.browser.js bundle:\n *\n * ```js\n * import '@clerk/ui/register';\n * // Now load clerk-js which will load ui.shared.browser.js\n * ```\n *\n * This enables @clerk/ui to use the host app's React instead of bundling its own,\n * reducing the overall bundle size.\n */\n\nimport * as react from 'react';\nimport * as reactDom from 'react-dom';\nimport * as reactDomClient from 'react-dom/client';\nimport * as jsxRuntime from 'react/jsx-runtime';\n\n// Only register if not already registered to avoid overwriting with potentially\n// different React versions in complex module resolution scenarios.\nif (globalThis.__clerkSharedModules) {\n // Warn if the already-registered React version differs from this import.\n // This could indicate multiple React versions in the bundle, which may cause issues.\n const existingVersion = globalThis.__clerkSharedModules.react?.version;\n if (existingVersion && existingVersion !== react.version) {\n console.warn(\n `[@clerk/ui/register] React version mismatch detected. ` +\n `Already registered: ${existingVersion}, current import: ${react.version}. ` +\n `This may cause issues with the shared @clerk/ui variant.`,\n );\n }\n} else {\n globalThis.__clerkSharedModules = {\n react,\n 'react-dom': reactDom,\n 'react-dom/client': reactDomClient,\n 'react/jsx-runtime': jsxRuntime,\n };\n}\n","import type { SignInButtonProps, SignInProps } from '@clerk/shared/types';\nimport React from 'react';\n\nimport type { WithClerkProp } from '../types';\nimport { assertSingleChild, normalizeWithDefaultValue, safeExecute } from '../utils';\nimport { withClerk } from './withClerk';\n\nexport const SignInButton = withClerk(\n ({ clerk, children, ...props }: WithClerkProp<React.PropsWithChildren<SignInButtonProps>>) => {\n const {\n // @ts-expect-error - appearance is a valid prop for SignInProps & SignInButtonPropsModal\n appearance,\n getContainer,\n component,\n signUpFallbackRedirectUrl,\n forceRedirectUrl,\n fallbackRedirectUrl,\n signUpForceRedirectUrl,\n mode,\n initialValues,\n withSignUp,\n oauthFlow,\n ...rest\n } = props;\n children = normalizeWithDefaultValue(children, 'Sign in');\n const child = assertSingleChild(children)('SignInButton');\n\n const clickHandler = () => {\n const opts: SignInProps = {\n forceRedirectUrl,\n fallbackRedirectUrl,\n signUpFallbackRedirectUrl,\n signUpForceRedirectUrl,\n initialValues,\n withSignUp,\n oauthFlow,\n };\n\n if (mode === 'modal') {\n return clerk.openSignIn({ ...opts, appearance, getContainer });\n }\n return clerk.redirectToSignIn({\n ...opts,\n signInFallbackRedirectUrl: fallbackRedirectUrl,\n signInForceRedirectUrl: forceRedirectUrl,\n });\n };\n\n const wrappedChildClickHandler: React.MouseEventHandler = async e => {\n if (child && typeof child === 'object' && 'props' in child) {\n await safeExecute(child.props.onClick)(e);\n }\n return clickHandler();\n };\n\n const childProps = { ...rest, onClick: wrappedChildClickHandler };\n return React.cloneElement(child as React.ReactElement<unknown>, childProps);\n },\n { component: 'SignInButton', renderWhileLoading: true },\n);\n","import React from 'react';\n\nimport type { SignInWithMetamaskButtonProps, WithClerkProp } from '../types';\nimport { assertSingleChild, normalizeWithDefaultValue, safeExecute } from '../utils';\nimport { withClerk } from './withClerk';\n\nexport const SignInWithMetamaskButton = withClerk(\n ({ clerk, children, ...props }: WithClerkProp<SignInWithMetamaskButtonProps>) => {\n const { redirectUrl, getContainer, component, ...rest } = props;\n\n children = normalizeWithDefaultValue(children, 'Sign in with Metamask');\n const child = assertSingleChild(children)('SignInWithMetamaskButton');\n\n // TODO: Properly fix this code\n // eslint-disable-next-line @typescript-eslint/require-await\n const clickHandler = async () => {\n async function authenticate() {\n await clerk.authenticateWithMetamask({ redirectUrl: redirectUrl || undefined });\n }\n void authenticate();\n };\n\n const wrappedChildClickHandler: React.MouseEventHandler = async e => {\n await safeExecute((child as any).props.onClick)(e);\n return clickHandler();\n };\n\n const childProps = { ...rest, onClick: wrappedChildClickHandler };\n return React.cloneElement(child as React.ReactElement<unknown>, childProps);\n },\n { component: 'SignInWithMetamask', renderWhileLoading: true },\n);\n","import { deprecated } from '@clerk/shared/deprecated';\nimport type { SignOutOptions } from '@clerk/shared/types';\nimport React from 'react';\n\nimport type { WithClerkProp } from '../types';\nimport { assertSingleChild, normalizeWithDefaultValue, safeExecute } from '../utils';\nimport { withClerk } from './withClerk';\n\nexport type SignOutButtonProps = {\n redirectUrl?: string;\n sessionId?: string;\n /**\n * @deprecated Use the `redirectUrl` and `sessionId` props directly instead.\n */\n signOutOptions?: SignOutOptions;\n children?: React.ReactNode;\n};\n\nexport const SignOutButton = withClerk(\n ({ clerk, children, ...props }: React.PropsWithChildren<WithClerkProp<SignOutButtonProps>>) => {\n const { redirectUrl = '/', sessionId, signOutOptions, getContainer, component, ...rest } = props;\n\n if (signOutOptions) {\n deprecated('SignOutButton `signOutOptions`', 'Use the `redirectUrl` and `sessionId` props directly instead.');\n }\n\n children = normalizeWithDefaultValue(children, 'Sign out');\n const child = assertSingleChild(children)('SignOutButton');\n\n const clickHandler = () =>\n clerk.signOut({\n redirectUrl,\n ...(sessionId !== undefined && { sessionId }),\n ...signOutOptions,\n });\n const wrappedChildClickHandler: React.MouseEventHandler = async e => {\n await safeExecute((child as any).props.onClick)(e);\n return clickHandler();\n };\n\n const childProps = { ...rest, onClick: wrappedChildClickHandler };\n return React.cloneElement(child as React.ReactElement<unknown>, childProps);\n },\n { component: 'SignOutButton', renderWhileLoading: true },\n);\n","import type { SignUpButtonProps, SignUpProps } from '@clerk/shared/types';\nimport React from 'react';\n\nimport type { WithClerkProp } from '../types';\nimport { assertSingleChild, normalizeWithDefaultValue, safeExecute } from '../utils';\nimport { withClerk } from './withClerk';\n\nexport const SignUpButton = withClerk(\n ({ clerk, children, ...props }: WithClerkProp<React.PropsWithChildren<SignUpButtonProps>>) => {\n const {\n // @ts-expect-error - appearance is a valid prop for SignUpProps & SignUpButtonPropsModal\n appearance,\n // @ts-expect-error - unsafeMetadata is a valid prop for SignUpProps & SignUpButtonPropsModal\n unsafeMetadata,\n getContainer,\n component,\n fallbackRedirectUrl,\n forceRedirectUrl,\n signInFallbackRedirectUrl,\n signInForceRedirectUrl,\n mode,\n initialValues,\n oauthFlow,\n ...rest\n } = props;\n\n children = normalizeWithDefaultValue(children, 'Sign up');\n const child = assertSingleChild(children)('SignUpButton');\n\n const clickHandler = () => {\n const opts: SignUpProps = {\n fallbackRedirectUrl,\n forceRedirectUrl,\n signInFallbackRedirectUrl,\n signInForceRedirectUrl,\n initialValues,\n oauthFlow,\n };\n\n if (mode === 'modal') {\n return clerk.openSignUp({\n ...opts,\n appearance,\n unsafeMetadata,\n getContainer,\n });\n }\n\n return clerk.redirectToSignUp({\n ...opts,\n signUpFallbackRedirectUrl: fallbackRedirectUrl,\n signUpForceRedirectUrl: forceRedirectUrl,\n });\n };\n\n const wrappedChildClickHandler: React.MouseEventHandler = async e => {\n if (child && typeof child === 'object' && 'props' in child) {\n await safeExecute(child.props.onClick)(e);\n }\n return clickHandler();\n };\n\n const childProps = { ...rest, onClick: wrappedChildClickHandler };\n return React.cloneElement(child as React.ReactElement<unknown>, childProps);\n },\n { component: 'SignUpButton', renderWhileLoading: true },\n);\n","import type { SetActiveNavigate } from '@clerk/shared/types';\nimport React, { type ReactNode, useEffect, useRef } from 'react';\n\nimport { useClerk, useSignIn, useSignUp } from '../hooks';\n\nexport interface HandleSSOCallbackProps {\n /**\n * Called when the SSO callback is complete and a session has been created.\n */\n navigateToApp: (...params: Parameters<SetActiveNavigate>) => void;\n /**\n * Called when a sign-in requires additional verification, or a sign-up is transfered to a sign-in that requires\n * additional verification.\n */\n navigateToSignIn: () => void;\n /**\n * Called when a sign-in is transfered to a sign-up that requires additional verification.\n */\n navigateToSignUp: () => void;\n}\n\n/**\n * Use this component when building custom UI to handle the SSO callback and navigate to the appropriate page based on\n * the status of the sign-in or sign-up. By default, this component might render a captcha element to handle captchas\n * when required by the Clerk API.\n *\n * @example\n * ```tsx\n * import { HandleSSOCallback } from '@clerk/react';\n * import { useNavigate } from 'react-router';\n *\n * export default function Page() {\n * const navigate = useNavigate();\n *\n * return (\n * <HandleSSOCallback\n * navigateToApp={({ session, decorateUrl }) => {\n * if (session?.currentTask) {\n * const destination = decorateUrl(`/onboarding/${session?.currentTask.key}`);\n * if (destination.startsWith('http')) {\n * window.location.href = destination;\n * return;\n * }\n * navigate(destination);\n * return;\n * }\n *\n * const destination = decorateUrl('/dashboard');\n * if (destination.startsWith('http')) {\n * window.location.href = destination;\n * return;\n * }\n * navigate(destination);\n * }}\n * navigateToSignIn={() => {\n * navigate('/sign-in');\n * }}\n * navigateToSignUp={() => {\n * navigate('/sign-up');\n * }}\n * />\n * );\n * }\n * ```\n */\nexport function HandleSSOCallback(props: HandleSSOCallbackProps): ReactNode {\n const { navigateToApp, navigateToSignIn, navigateToSignUp } = props;\n const clerk = useClerk();\n const { signIn } = useSignIn();\n const { signUp } = useSignUp();\n const hasRun = useRef(false);\n\n useEffect(() => {\n (async () => {\n if (!clerk.loaded || hasRun.current) {\n return;\n }\n // Prevent re-running this effect if the page is re-rendered during session activation (such as on Next.js).\n hasRun.current = true;\n\n // If this was a sign-in, and it's complete, there's nothing else to do.\n // Note: We perform a cast here to prevent TypeScript from narrowing the type of signIn.status. TypeScript\n // doesn't understand that the status can be mutated during the execution of this function.\n if ((signIn.status as string) === 'complete') {\n await signIn.finalize({\n navigate: async (...params) => {\n navigateToApp(...params);\n },\n });\n return;\n }\n\n // If the sign-up used an existing account, transfer it to a sign-in.\n if (signUp.isTransferable) {\n await signIn.create({ transfer: true });\n if (signIn.status === 'complete') {\n await signIn.finalize({\n navigate: async (...params) => {\n navigateToApp(...params);\n },\n });\n return;\n }\n // The sign-in requires additional verification, so we need to navigate to the sign-in page.\n return navigateToSignIn();\n }\n\n if (\n signIn.status === 'needs_first_factor' &&\n !signIn.supportedFirstFactors?.every(f => f.strategy === 'enterprise_sso')\n ) {\n // The sign-in requires the use of a configured first factor, so navigate to the sign-in page.\n return navigateToSignIn();\n }\n\n // If the sign-in used an external account not associated with an existing user, create a sign-up.\n if (signIn.isTransferable) {\n await signUp.create({ transfer: true });\n if (signUp.status === 'complete') {\n await signUp.finalize({\n navigate: async (...params) => {\n navigateToApp(...params);\n },\n });\n return;\n }\n return navigateToSignUp();\n }\n\n if (signUp.status === 'complete') {\n await signUp.finalize({\n navigate: async (...params) => {\n navigateToApp(...params);\n },\n });\n return;\n }\n\n if (signIn.status === 'needs_second_factor' || signIn.status === 'needs_new_password') {\n // The sign-in requires a MFA token or a new password, so navigate to the sign-in page.\n return navigateToSignIn();\n }\n\n // The external account used to sign-in or sign-up was already associated with an existing user and active\n // session on this client, so activate the session and navigate to the application.\n if (signIn.existingSession || signUp.existingSession) {\n const sessionId = signIn.existingSession?.sessionId || signUp.existingSession?.sessionId;\n if (sessionId) {\n // Because we're activating a session that's not the result of a sign-in or sign-up, we need to use the\n // Clerk `setActive` API instead of the `finalize` API.\n await clerk.setActive({\n session: sessionId,\n navigate: async (...params) => {\n return navigateToApp(...params);\n },\n });\n return;\n }\n }\n })();\n }, [clerk, clerk.loaded, signIn, signUp]);\n\n return (\n <div>\n {/* Because a sign-in transferred to a sign-up might require captcha verification, make sure to render the\n captcha element. */}\n <div id='clerk-captcha' />\n </div>\n );\n}\n","import './polyfills';\nimport './types/appearance';\n// Register React on the global shared modules registry.\n// This enables @clerk/ui's shared variant to use the host app's React\n// instead of bundling its own copy, reducing overall bundle size.\nimport '@clerk/ui/register';\n\nimport { setClerkJSLoadingErrorPackageName } from '@clerk/shared/loadClerkJsScript';\n\nimport { setErrorThrowerOptions } from './errors/errorThrower';\n\nexport * from './components';\nexport * from './contexts';\n\nexport * from './hooks';\nexport { getToken } from '@clerk/shared/getToken';\nexport type {\n BrowserClerk,\n BrowserClerkConstructor,\n ClerkProp,\n HeadlessBrowserClerk,\n HeadlessBrowserClerkConstructor,\n IsomorphicClerkOptions,\n} from '@clerk/shared/types';\nexport type { ClerkProviderProps } from './types';\n\nsetErrorThrowerOptions({ packageName: PACKAGE_NAME });\nsetClerkJSLoadingErrorPackageName(PACKAGE_NAME);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAMA,IAAI,OAAO,WAAW,eAAe,CAAC,OAAO,QAC3C,OAAO,SAAS,OAAO,WAAW,cAAc,SAAS;;;;;;;;;;;;;;;;;ACc3D,IAAI,WAAW,sBAAsB;CAGnC,MAAM,kBAAkB,WAAW,qBAAqB,OAAO;CAC/D,IAAI,mBAAmB,oBAAoBA,QAAM,SAC/C,QAAQ,KACN,6EACyB,gBAAgB,oBAAoBA,QAAM,QAAQ,2DAE7E;AAEJ,OACE,WAAW,uBAAuB;CAChC;CACA,aAAaC;CACb,oBAAoBC;CACpB,qBAAqBC;AACvB;;;;AC/BF,MAAa,eAAeC,yBACzB,EAAE,OAAO,UAAU,GAAG,YAAuE;CAC5F,MAAM,EAEJ,YACA,cACA,WACA,2BACA,kBACA,qBACA,wBACA,MACA,eACA,YACA,WACA,GAAG,SACD;CACJ,WAAWC,wCAA0B,UAAU,SAAS;CACxD,MAAM,QAAQC,gCAAkB,QAAQ,CAAC,CAAC,cAAc;CAExD,MAAM,qBAAqB;EACzB,MAAM,OAAoB;GACxB;GACA;GACA;GACA;GACA;GACA;GACA;EACF;EAEA,IAAI,SAAS,SACX,OAAO,MAAM,WAAW;GAAE,GAAG;GAAM;GAAY;EAAa,CAAC;EAE/D,OAAO,MAAM,iBAAiB;GAC5B,GAAG;GACH,2BAA2B;GAC3B,wBAAwB;EAC1B,CAAC;CACH;CAEA,MAAM,2BAAoD,OAAM,MAAK;EACnE,IAAI,SAAS,OAAO,UAAU,YAAY,WAAW,OACnD,MAAMC,0BAAY,MAAM,MAAM,OAAO,CAAC,CAAC,CAAC;EAE1C,OAAO,aAAa;CACtB;CAEA,MAAM,aAAa;EAAE,GAAG;EAAM,SAAS;CAAyB;CAChE,OAAOC,cAAM,aAAa,OAAsC,UAAU;AAC5E,GACA;CAAE,WAAW;CAAgB,oBAAoB;AAAK,CACxD;;;;ACrDA,MAAa,2BAA2BC,yBACrC,EAAE,OAAO,UAAU,GAAG,YAA0D;CAC/E,MAAM,EAAE,aAAa,cAAc,WAAW,GAAG,SAAS;CAE1D,WAAWC,wCAA0B,UAAU,uBAAuB;CACtE,MAAM,QAAQC,gCAAkB,QAAQ,CAAC,CAAC,0BAA0B;CAIpE,MAAM,eAAe,YAAY;EAC/B,eAAe,eAAe;GAC5B,MAAM,MAAM,yBAAyB,EAAE,aAAa,eAAe,OAAU,CAAC;EAChF;EACA,AAAK,aAAa;CACpB;CAEA,MAAM,2BAAoD,OAAM,MAAK;EACnE,MAAMC,0BAAa,MAAc,MAAM,OAAO,CAAC,CAAC,CAAC;EACjD,OAAO,aAAa;CACtB;CAEA,MAAM,aAAa;EAAE,GAAG;EAAM,SAAS;CAAyB;CAChE,OAAOC,cAAM,aAAa,OAAsC,UAAU;AAC5E,GACA;CAAE,WAAW;CAAsB,oBAAoB;AAAK,CAC9D;;;;ACbA,MAAa,gBAAgBC,yBAC1B,EAAE,OAAO,UAAU,GAAG,YAAwE;CAC7F,MAAM,EAAE,cAAc,KAAK,WAAW,gBAAgB,cAAc,WAAW,GAAG,SAAS;CAE3F,IAAI,gBACF,yCAAW,kCAAkC,+DAA+D;CAG9G,WAAWC,wCAA0B,UAAU,UAAU;CACzD,MAAM,QAAQC,gCAAkB,QAAQ,CAAC,CAAC,eAAe;CAEzD,MAAM,qBACJ,MAAM,QAAQ;EACZ;EACA,GAAI,cAAc,UAAa,EAAE,UAAU;EAC3C,GAAG;CACL,CAAC;CACH,MAAM,2BAAoD,OAAM,MAAK;EACnE,MAAMC,0BAAa,MAAc,MAAM,OAAO,CAAC,CAAC,CAAC;EACjD,OAAO,aAAa;CACtB;CAEA,MAAM,aAAa;EAAE,GAAG;EAAM,SAAS;CAAyB;CAChE,OAAOC,cAAM,aAAa,OAAsC,UAAU;AAC5E,GACA;CAAE,WAAW;CAAiB,oBAAoB;AAAK,CACzD;;;;ACrCA,MAAa,eAAeC,yBACzB,EAAE,OAAO,UAAU,GAAG,YAAuE;CAC5F,MAAM,EAEJ,YAEA,gBACA,cACA,WACA,qBACA,kBACA,2BACA,wBACA,MACA,eACA,WACA,GAAG,SACD;CAEJ,WAAWC,wCAA0B,UAAU,SAAS;CACxD,MAAM,QAAQC,gCAAkB,QAAQ,CAAC,CAAC,cAAc;CAExD,MAAM,qBAAqB;EACzB,MAAM,OAAoB;GACxB;GACA;GACA;GACA;GACA;GACA;EACF;EAEA,IAAI,SAAS,SACX,OAAO,MAAM,WAAW;GACtB,GAAG;GACH;GACA;GACA;EACF,CAAC;EAGH,OAAO,MAAM,iBAAiB;GAC5B,GAAG;GACH,2BAA2B;GAC3B,wBAAwB;EAC1B,CAAC;CACH;CAEA,MAAM,2BAAoD,OAAM,MAAK;EACnE,IAAI,SAAS,OAAO,UAAU,YAAY,WAAW,OACnD,MAAMC,0BAAY,MAAM,MAAM,OAAO,CAAC,CAAC,CAAC;EAE1C,OAAO,aAAa;CACtB;CAEA,MAAM,aAAa;EAAE,GAAG;EAAM,SAAS;CAAyB;CAChE,OAAOC,cAAM,aAAa,OAAsC,UAAU;AAC5E,GACA;CAAE,WAAW;CAAgB,oBAAoB;AAAK,CACxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDA,SAAgB,kBAAkB,OAA0C;CAC1E,MAAM,EAAE,eAAe,kBAAkB,qBAAqB;CAC9D,MAAM,0CAAiB;CACvB,MAAM,EAAE,WAAWC,wBAAU;CAC7B,MAAM,EAAE,WAAWC,wBAAU;CAC7B,MAAM,2BAAgB,KAAK;CAE3B,2BAAgB;EACd,CAAC,YAAY;GACX,IAAI,CAAC,MAAM,UAAU,OAAO,SAC1B;GAGF,OAAO,UAAU;GAKjB,IAAK,OAAO,WAAsB,YAAY;IAC5C,MAAM,OAAO,SAAS,EACpB,UAAU,OAAO,GAAG,WAAW;KAC7B,cAAc,GAAG,MAAM;IACzB,EACF,CAAC;IACD;GACF;GAGA,IAAI,OAAO,gBAAgB;IACzB,MAAM,OAAO,OAAO,EAAE,UAAU,KAAK,CAAC;IACtC,IAAI,OAAO,WAAW,YAAY;KAChC,MAAM,OAAO,SAAS,EACpB,UAAU,OAAO,GAAG,WAAW;MAC7B,cAAc,GAAG,MAAM;KACzB,EACF,CAAC;KACD;IACF;IAEA,OAAO,iBAAiB;GAC1B;GAEA,IACE,OAAO,WAAW,wBAClB,CAAC,OAAO,uBAAuB,OAAM,MAAK,EAAE,aAAa,gBAAgB,GAGzE,OAAO,iBAAiB;GAI1B,IAAI,OAAO,gBAAgB;IACzB,MAAM,OAAO,OAAO,EAAE,UAAU,KAAK,CAAC;IACtC,IAAI,OAAO,WAAW,YAAY;KAChC,MAAM,OAAO,SAAS,EACpB,UAAU,OAAO,GAAG,WAAW;MAC7B,cAAc,GAAG,MAAM;KACzB,EACF,CAAC;KACD;IACF;IACA,OAAO,iBAAiB;GAC1B;GAEA,IAAI,OAAO,WAAW,YAAY;IAChC,MAAM,OAAO,SAAS,EACpB,UAAU,OAAO,GAAG,WAAW;KAC7B,cAAc,GAAG,MAAM;IACzB,EACF,CAAC;IACD;GACF;GAEA,IAAI,OAAO,WAAW,yBAAyB,OAAO,WAAW,sBAE/D,OAAO,iBAAiB;GAK1B,IAAI,OAAO,mBAAmB,OAAO,iBAAiB;IACpD,MAAM,YAAY,OAAO,iBAAiB,aAAa,OAAO,iBAAiB;IAC/E,IAAI,WAAW;KAGb,MAAM,MAAM,UAAU;MACpB,SAAS;MACT,UAAU,OAAO,GAAG,WAAW;OAC7B,OAAO,cAAc,GAAG,MAAM;MAChC;KACF,CAAC;KACD;IACF;GACF;EACF,EAAC,CAAE;CACL,GAAG;EAAC;EAAO,MAAM;EAAQ;EAAQ;CAAM,CAAC;CAExC,OACE,4CAAC,aAGC,4CAAC,OAAD,EAAK,IAAG,gBAAiB,EACtB;AAET;;;;AC/IAC,+DAAuB,EAAE,4BAA0B,CAAC;qFACN"}