@oxyhq/services 16.0.0 → 18.0.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/README.md +77 -98
- package/lib/commonjs/index.js +40 -51
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/ui/client.js +0 -14
- package/lib/commonjs/ui/client.js.map +1 -1
- package/lib/commonjs/ui/components/OxyAccountDialog.js +742 -0
- package/lib/commonjs/ui/components/OxyAccountDialog.js.map +1 -0
- package/lib/commonjs/ui/components/OxyConsentScreen.js +461 -0
- package/lib/commonjs/ui/components/OxyConsentScreen.js.map +1 -0
- package/lib/commonjs/ui/components/OxyProvider.js +13 -6
- package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
- package/lib/commonjs/ui/components/OxySignInButton.js +180 -22
- package/lib/commonjs/ui/components/OxySignInButton.js.map +1 -1
- package/lib/commonjs/ui/components/ProfileButton.js +25 -112
- package/lib/commonjs/ui/components/ProfileButton.js.map +1 -1
- package/lib/commonjs/ui/components/RequireOxyAuth.js +299 -0
- package/lib/commonjs/ui/components/RequireOxyAuth.js.map +1 -0
- package/lib/commonjs/ui/components/oauthNavigation.js +73 -0
- package/lib/commonjs/ui/components/oauthNavigation.js.map +1 -0
- package/lib/commonjs/ui/context/OxyContext.js +122 -4
- package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
- package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js +1 -1
- package/lib/commonjs/ui/hooks/useAuth.js +19 -30
- package/lib/commonjs/ui/hooks/useAuth.js.map +1 -1
- package/lib/commonjs/ui/hooks/useSwitchableAccounts.js +37 -267
- package/lib/commonjs/ui/hooks/useSwitchableAccounts.js.map +1 -1
- package/lib/commonjs/ui/index.js +5 -40
- package/lib/commonjs/ui/index.js.map +1 -1
- package/lib/commonjs/ui/navigation/accountDialogManager.js +91 -0
- package/lib/commonjs/ui/navigation/accountDialogManager.js.map +1 -0
- package/lib/commonjs/ui/navigation/routes.js +0 -2
- package/lib/commonjs/ui/navigation/routes.js.map +1 -1
- package/lib/commonjs/ui/screens/ManageAccountScreen.js +4 -3
- package/lib/commonjs/ui/screens/ManageAccountScreen.js.map +1 -1
- package/lib/commonjs/ui/session/createSessionClient.js +10 -2
- package/lib/commonjs/ui/session/createSessionClient.js.map +1 -1
- package/lib/module/index.js +19 -16
- package/lib/module/index.js.map +1 -1
- package/lib/module/ui/client.js +1 -2
- package/lib/module/ui/client.js.map +1 -1
- package/lib/module/ui/components/OxyAccountDialog.js +739 -0
- package/lib/module/ui/components/OxyAccountDialog.js.map +1 -0
- package/lib/module/ui/components/OxyConsentScreen.js +454 -0
- package/lib/module/ui/components/OxyConsentScreen.js.map +1 -0
- package/lib/module/ui/components/OxyProvider.js +13 -6
- package/lib/module/ui/components/OxyProvider.js.map +1 -1
- package/lib/module/ui/components/OxySignInButton.js +181 -22
- package/lib/module/ui/components/OxySignInButton.js.map +1 -1
- package/lib/module/ui/components/ProfileButton.js +26 -112
- package/lib/module/ui/components/ProfileButton.js.map +1 -1
- package/lib/module/ui/components/RequireOxyAuth.js +294 -0
- package/lib/module/ui/components/RequireOxyAuth.js.map +1 -0
- package/lib/module/ui/components/oauthNavigation.js +70 -0
- package/lib/module/ui/components/oauthNavigation.js.map +1 -0
- package/lib/module/ui/context/OxyContext.js +123 -5
- package/lib/module/ui/context/OxyContext.js.map +1 -1
- package/lib/module/ui/hooks/mutations/useAccountMutations.js +1 -1
- package/lib/module/ui/hooks/useAuth.js +19 -30
- package/lib/module/ui/hooks/useAuth.js.map +1 -1
- package/lib/module/ui/hooks/useSwitchableAccounts.js +38 -267
- package/lib/module/ui/hooks/useSwitchableAccounts.js.map +1 -1
- package/lib/module/ui/index.js +1 -5
- package/lib/module/ui/index.js.map +1 -1
- package/lib/module/ui/navigation/accountDialogManager.js +81 -0
- package/lib/module/ui/navigation/accountDialogManager.js.map +1 -0
- package/lib/module/ui/navigation/routes.js +0 -2
- package/lib/module/ui/navigation/routes.js.map +1 -1
- package/lib/module/ui/screens/ManageAccountScreen.js +4 -3
- package/lib/module/ui/screens/ManageAccountScreen.js.map +1 -1
- package/lib/module/ui/session/createSessionClient.js +10 -2
- package/lib/module/ui/session/createSessionClient.js.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +8 -12
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/client.d.ts +0 -4
- package/lib/typescript/commonjs/ui/client.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxyAccountDialog.d.ts +51 -0
- package/lib/typescript/commonjs/ui/components/OxyAccountDialog.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/components/OxyConsentScreen.d.ts +45 -0
- package/lib/typescript/commonjs/ui/components/OxyConsentScreen.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts +2 -2
- package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxySignInButton.d.ts +56 -0
- package/lib/typescript/commonjs/ui/components/OxySignInButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/ProfileButton.d.ts +11 -23
- package/lib/typescript/commonjs/ui/components/ProfileButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/RequireOxyAuth.d.ts +55 -0
- package/lib/typescript/commonjs/ui/components/RequireOxyAuth.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/components/oauthNavigation.d.ts +36 -0
- package/lib/typescript/commonjs/ui/components/oauthNavigation.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/context/OxyContext.d.ts +27 -1
- package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/queries/useServicesQueries.d.ts +1 -1
- package/lib/typescript/commonjs/ui/hooks/queries/useServicesQueries.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useAuth.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useSwitchableAccounts.d.ts +13 -152
- package/lib/typescript/commonjs/ui/hooks/useSwitchableAccounts.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/index.d.ts +2 -5
- package/lib/typescript/commonjs/ui/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/navigation/accountDialogManager.d.ts +49 -0
- package/lib/typescript/commonjs/ui/navigation/accountDialogManager.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/navigation/routes.d.ts +1 -1
- package/lib/typescript/commonjs/ui/navigation/routes.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/ManageAccountScreen.d.ts +1 -1
- package/lib/typescript/commonjs/ui/screens/ManageAccountScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/session/createSessionClient.d.ts +9 -2
- package/lib/typescript/commonjs/ui/session/createSessionClient.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/types/navigation.d.ts +27 -0
- package/lib/typescript/commonjs/ui/types/navigation.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +8 -12
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/ui/client.d.ts +0 -4
- package/lib/typescript/module/ui/client.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxyAccountDialog.d.ts +51 -0
- package/lib/typescript/module/ui/components/OxyAccountDialog.d.ts.map +1 -0
- package/lib/typescript/module/ui/components/OxyConsentScreen.d.ts +45 -0
- package/lib/typescript/module/ui/components/OxyConsentScreen.d.ts.map +1 -0
- package/lib/typescript/module/ui/components/OxyProvider.d.ts +2 -2
- package/lib/typescript/module/ui/components/OxyProvider.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxySignInButton.d.ts +56 -0
- package/lib/typescript/module/ui/components/OxySignInButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/ProfileButton.d.ts +11 -23
- package/lib/typescript/module/ui/components/ProfileButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/RequireOxyAuth.d.ts +55 -0
- package/lib/typescript/module/ui/components/RequireOxyAuth.d.ts.map +1 -0
- package/lib/typescript/module/ui/components/oauthNavigation.d.ts +36 -0
- package/lib/typescript/module/ui/components/oauthNavigation.d.ts.map +1 -0
- package/lib/typescript/module/ui/context/OxyContext.d.ts +27 -1
- package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/queries/useServicesQueries.d.ts +1 -1
- package/lib/typescript/module/ui/hooks/queries/useServicesQueries.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useAuth.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useSwitchableAccounts.d.ts +13 -152
- package/lib/typescript/module/ui/hooks/useSwitchableAccounts.d.ts.map +1 -1
- package/lib/typescript/module/ui/index.d.ts +2 -5
- package/lib/typescript/module/ui/index.d.ts.map +1 -1
- package/lib/typescript/module/ui/navigation/accountDialogManager.d.ts +49 -0
- package/lib/typescript/module/ui/navigation/accountDialogManager.d.ts.map +1 -0
- package/lib/typescript/module/ui/navigation/routes.d.ts +1 -1
- package/lib/typescript/module/ui/navigation/routes.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/ManageAccountScreen.d.ts +1 -1
- package/lib/typescript/module/ui/screens/ManageAccountScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/session/createSessionClient.d.ts +9 -2
- package/lib/typescript/module/ui/session/createSessionClient.d.ts.map +1 -1
- package/lib/typescript/module/ui/types/navigation.d.ts +27 -0
- package/lib/typescript/module/ui/types/navigation.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/index.ts +33 -27
- package/src/ui/client.ts +0 -4
- package/src/ui/components/OxyAccountDialog.tsx +735 -0
- package/src/ui/components/OxyConsentScreen.tsx +456 -0
- package/src/ui/components/OxyProvider.tsx +14 -6
- package/src/ui/components/OxySignInButton.tsx +227 -22
- package/src/ui/components/ProfileButton.tsx +23 -126
- package/src/ui/components/RequireOxyAuth.tsx +266 -0
- package/src/ui/components/__tests__/OxyConsentScreen.test.tsx +130 -0
- package/src/ui/components/oauthNavigation.ts +89 -0
- package/src/ui/context/OxyContext.tsx +176 -9
- package/src/ui/context/__tests__/OxyContext.coldBoot.test.tsx +165 -0
- package/src/ui/hooks/mutations/useAccountMutations.ts +1 -1
- package/src/ui/hooks/useAuth.ts +19 -31
- package/src/ui/hooks/useSwitchableAccounts.ts +42 -376
- package/src/ui/index.ts +2 -5
- package/src/ui/navigation/accountDialogManager.ts +84 -0
- package/src/ui/navigation/routes.ts +0 -4
- package/src/ui/screens/ManageAccountScreen.tsx +3 -2
- package/src/ui/session/createSessionClient.ts +9 -1
- package/src/ui/types/navigation.ts +27 -0
- package/lib/commonjs/ui/components/AccountMenu.js +0 -598
- package/lib/commonjs/ui/components/AccountMenu.js.map +0 -1
- package/lib/commonjs/ui/components/AccountMenuButton.js +0 -135
- package/lib/commonjs/ui/components/AccountMenuButton.js.map +0 -1
- package/lib/commonjs/ui/components/AccountSwitcher.js +0 -780
- package/lib/commonjs/ui/components/AccountSwitcher.js.map +0 -1
- package/lib/commonjs/ui/components/AnotherDeviceQR.js +0 -116
- package/lib/commonjs/ui/components/AnotherDeviceQR.js.map +0 -1
- package/lib/commonjs/ui/components/ProfileMenu.js +0 -518
- package/lib/commonjs/ui/components/ProfileMenu.js.map +0 -1
- package/lib/commonjs/ui/components/SignInAccountChooser.js +0 -189
- package/lib/commonjs/ui/components/SignInAccountChooser.js.map +0 -1
- package/lib/commonjs/ui/components/SignInModal.js +0 -600
- package/lib/commonjs/ui/components/SignInModal.js.map +0 -1
- package/lib/commonjs/ui/hooks/useOxyAuthSession.js +0 -501
- package/lib/commonjs/ui/hooks/useOxyAuthSession.js.map +0 -1
- package/lib/commonjs/ui/hooks/usePasswordSignIn.js +0 -170
- package/lib/commonjs/ui/hooks/usePasswordSignIn.js.map +0 -1
- package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +0 -51
- package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +0 -1
- package/lib/commonjs/ui/screens/OxyAuthScreen.js +0 -312
- package/lib/commonjs/ui/screens/OxyAuthScreen.js.map +0 -1
- package/lib/commonjs/utils/deviceFlowSignIn.js +0 -109
- package/lib/commonjs/utils/deviceFlowSignIn.js.map +0 -1
- package/lib/module/ui/components/AccountMenu.js +0 -593
- package/lib/module/ui/components/AccountMenu.js.map +0 -1
- package/lib/module/ui/components/AccountMenuButton.js +0 -130
- package/lib/module/ui/components/AccountMenuButton.js.map +0 -1
- package/lib/module/ui/components/AccountSwitcher.js +0 -774
- package/lib/module/ui/components/AccountSwitcher.js.map +0 -1
- package/lib/module/ui/components/AnotherDeviceQR.js +0 -110
- package/lib/module/ui/components/AnotherDeviceQR.js.map +0 -1
- package/lib/module/ui/components/ProfileMenu.js +0 -514
- package/lib/module/ui/components/ProfileMenu.js.map +0 -1
- package/lib/module/ui/components/SignInAccountChooser.js +0 -183
- package/lib/module/ui/components/SignInAccountChooser.js.map +0 -1
- package/lib/module/ui/components/SignInModal.js +0 -591
- package/lib/module/ui/components/SignInModal.js.map +0 -1
- package/lib/module/ui/hooks/useOxyAuthSession.js +0 -495
- package/lib/module/ui/hooks/useOxyAuthSession.js.map +0 -1
- package/lib/module/ui/hooks/usePasswordSignIn.js +0 -165
- package/lib/module/ui/hooks/usePasswordSignIn.js.map +0 -1
- package/lib/module/ui/screens/AccountSwitcherScreen.js +0 -48
- package/lib/module/ui/screens/AccountSwitcherScreen.js.map +0 -1
- package/lib/module/ui/screens/OxyAuthScreen.js +0 -306
- package/lib/module/ui/screens/OxyAuthScreen.js.map +0 -1
- package/lib/module/utils/deviceFlowSignIn.js +0 -106
- package/lib/module/utils/deviceFlowSignIn.js.map +0 -1
- package/lib/typescript/commonjs/ui/components/AccountMenu.d.ts +0 -47
- package/lib/typescript/commonjs/ui/components/AccountMenu.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/AccountMenuButton.d.ts +0 -26
- package/lib/typescript/commonjs/ui/components/AccountMenuButton.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/AccountSwitcher.d.ts +0 -46
- package/lib/typescript/commonjs/ui/components/AccountSwitcher.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/AnotherDeviceQR.d.ts +0 -34
- package/lib/typescript/commonjs/ui/components/AnotherDeviceQR.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/ProfileMenu.d.ts +0 -49
- package/lib/typescript/commonjs/ui/components/ProfileMenu.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/SignInAccountChooser.d.ts +0 -29
- package/lib/typescript/commonjs/ui/components/SignInAccountChooser.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/SignInModal.d.ts +0 -28
- package/lib/typescript/commonjs/ui/components/SignInModal.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/hooks/useOxyAuthSession.d.ts +0 -105
- package/lib/typescript/commonjs/ui/hooks/useOxyAuthSession.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/hooks/usePasswordSignIn.d.ts +0 -31
- package/lib/typescript/commonjs/ui/hooks/usePasswordSignIn.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/screens/AccountSwitcherScreen.d.ts +0 -11
- package/lib/typescript/commonjs/ui/screens/AccountSwitcherScreen.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/screens/OxyAuthScreen.d.ts +0 -22
- package/lib/typescript/commonjs/ui/screens/OxyAuthScreen.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/deviceFlowSignIn.d.ts +0 -97
- package/lib/typescript/commonjs/utils/deviceFlowSignIn.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/AccountMenu.d.ts +0 -47
- package/lib/typescript/module/ui/components/AccountMenu.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/AccountMenuButton.d.ts +0 -26
- package/lib/typescript/module/ui/components/AccountMenuButton.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/AccountSwitcher.d.ts +0 -46
- package/lib/typescript/module/ui/components/AccountSwitcher.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/AnotherDeviceQR.d.ts +0 -34
- package/lib/typescript/module/ui/components/AnotherDeviceQR.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/ProfileMenu.d.ts +0 -49
- package/lib/typescript/module/ui/components/ProfileMenu.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/SignInAccountChooser.d.ts +0 -29
- package/lib/typescript/module/ui/components/SignInAccountChooser.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/SignInModal.d.ts +0 -28
- package/lib/typescript/module/ui/components/SignInModal.d.ts.map +0 -1
- package/lib/typescript/module/ui/hooks/useOxyAuthSession.d.ts +0 -105
- package/lib/typescript/module/ui/hooks/useOxyAuthSession.d.ts.map +0 -1
- package/lib/typescript/module/ui/hooks/usePasswordSignIn.d.ts +0 -31
- package/lib/typescript/module/ui/hooks/usePasswordSignIn.d.ts.map +0 -1
- package/lib/typescript/module/ui/screens/AccountSwitcherScreen.d.ts +0 -11
- package/lib/typescript/module/ui/screens/AccountSwitcherScreen.d.ts.map +0 -1
- package/lib/typescript/module/ui/screens/OxyAuthScreen.d.ts +0 -22
- package/lib/typescript/module/ui/screens/OxyAuthScreen.d.ts.map +0 -1
- package/lib/typescript/module/utils/deviceFlowSignIn.d.ts +0 -97
- package/lib/typescript/module/utils/deviceFlowSignIn.d.ts.map +0 -1
- package/src/ui/components/AccountMenu.tsx +0 -645
- package/src/ui/components/AccountMenuButton.tsx +0 -126
- package/src/ui/components/AccountSwitcher.tsx +0 -751
- package/src/ui/components/AnotherDeviceQR.tsx +0 -119
- package/src/ui/components/ProfileMenu.tsx +0 -564
- package/src/ui/components/SignInAccountChooser.tsx +0 -162
- package/src/ui/components/SignInModal.tsx +0 -530
- package/src/ui/hooks/useOxyAuthSession.ts +0 -635
- package/src/ui/hooks/usePasswordSignIn.ts +0 -207
- package/src/ui/screens/AccountSwitcherScreen.tsx +0 -43
- package/src/ui/screens/OxyAuthScreen.tsx +0 -324
- package/src/utils/__tests__/deviceFlowSignIn.test.ts +0 -231
- package/src/utils/deviceFlowSignIn.ts +0 -152
|
@@ -1,14 +1,59 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { useCallback, useState, useEffect, useMemo } from 'react';
|
|
3
|
+
import { useCallback, useState, useEffect, useMemo, useRef } from 'react';
|
|
4
4
|
import { TouchableOpacity, Text, View, StyleSheet, Platform } from 'react-native';
|
|
5
|
+
import { logger, generatePkcePair, generateOAuthState, buildOAuthAuthorizeUrl } from '@oxyhq/core';
|
|
5
6
|
import { useAuthStore } from "../stores/authStore.js";
|
|
6
7
|
import { useShallow } from 'zustand/react/shallow';
|
|
7
8
|
import { useTheme } from '@oxyhq/bloom/theme';
|
|
8
9
|
import { useOxy } from "../context/OxyContext.js";
|
|
9
10
|
import OxyLogo from "./OxyLogo.js";
|
|
10
|
-
import {
|
|
11
|
+
import { subscribeToSignInModal } from "../navigation/accountDialogManager.js";
|
|
12
|
+
import { redirectToAuthorize, openAuthorizeUrlNative } from "./oauthNavigation.js";
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* `sessionStorage` keys under which a third-party "Sign in with Oxy" OAuth flow
|
|
16
|
+
* persists its CSRF `state` and PKCE `code_verifier` across the authorize
|
|
17
|
+
* redirect. The Relying Party's redirect-URI callback reads them back to
|
|
18
|
+
* validate the returned `state` and replay the verifier on the token exchange.
|
|
19
|
+
*
|
|
20
|
+
* Web only: a browser RP navigates away to `auth.oxy.so` and back, so the
|
|
21
|
+
* handshake must survive a full-page redirect. Native completes the flow inside
|
|
22
|
+
* a single `WebBrowser` auth session and surfaces the handshake via
|
|
23
|
+
* {@link OxySignInButtonProps.onOAuthResult} instead.
|
|
24
|
+
*/
|
|
11
25
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
26
|
+
export const OXY_OAUTH_STATE_STORAGE_KEY = 'oxy_oauth_state';
|
|
27
|
+
export const OXY_OAUTH_CODE_VERIFIER_STORAGE_KEY = 'oxy_oauth_code_verifier';
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* The OAuth handshake surfaced to a NATIVE third-party RP via
|
|
31
|
+
* {@link OxySignInButtonProps.onOAuthResult} so it can finish the code exchange
|
|
32
|
+
* (`POST /auth/oauth/token`). Web RPs read the same `state` / `code_verifier`
|
|
33
|
+
* back from `sessionStorage` across the redirect and do not need this callback.
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Persist the OAuth CSRF `state` + PKCE `code_verifier` for the RP callback.
|
|
38
|
+
* Returns `false` when the handshake could not be stored — no `sessionStorage`
|
|
39
|
+
* (SSR / non-browser host) or a write that threw (`SecurityError` /
|
|
40
|
+
* `QuotaExceededError`, e.g. Safari private mode) — so the caller aborts the
|
|
41
|
+
* flow cleanly rather than redirect to a callback that cannot validate `state`.
|
|
42
|
+
*/
|
|
43
|
+
function persistOAuthHandshake(state, codeVerifier) {
|
|
44
|
+
const store = globalThis.sessionStorage;
|
|
45
|
+
try {
|
|
46
|
+
if (!store) throw new Error('sessionStorage is unavailable');
|
|
47
|
+
store.setItem(OXY_OAUTH_STATE_STORAGE_KEY, state);
|
|
48
|
+
store.setItem(OXY_OAUTH_CODE_VERIFIER_STORAGE_KEY, codeVerifier);
|
|
49
|
+
return true;
|
|
50
|
+
} catch (error) {
|
|
51
|
+
logger.warn('OxySignInButton: could not persist the OAuth handshake to sessionStorage; aborting third-party sign-in', {
|
|
52
|
+
component: 'OxySignInButton'
|
|
53
|
+
}, error);
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
12
57
|
/**
|
|
13
58
|
* A pre-styled button component for signing in with Oxy identity
|
|
14
59
|
*
|
|
@@ -40,11 +85,15 @@ export const OxySignInButton = ({
|
|
|
40
85
|
textStyle,
|
|
41
86
|
text = 'Sign in with Oxy',
|
|
42
87
|
disabled = false,
|
|
43
|
-
showWhenAuthenticated = false
|
|
88
|
+
showWhenAuthenticated = false,
|
|
89
|
+
oauthRedirectUri,
|
|
90
|
+
onOAuthResult
|
|
44
91
|
}) => {
|
|
45
92
|
const theme = useTheme();
|
|
46
93
|
const {
|
|
47
|
-
|
|
94
|
+
openAccountDialog,
|
|
95
|
+
oxyServices,
|
|
96
|
+
clientId
|
|
48
97
|
} = useOxy();
|
|
49
98
|
const {
|
|
50
99
|
isAuthenticated,
|
|
@@ -53,32 +102,142 @@ export const OxySignInButton = ({
|
|
|
53
102
|
isAuthenticated: state.isAuthenticated,
|
|
54
103
|
isLoading: state.isLoading
|
|
55
104
|
})));
|
|
56
|
-
// Tracks
|
|
57
|
-
// "Signing in..." while it
|
|
58
|
-
//
|
|
105
|
+
// Tracks whether the unified account dialog is open so we can show
|
|
106
|
+
// "Signing in..." while it is. The manager reports visibility on every
|
|
107
|
+
// change regardless of platform or what opened/closed it.
|
|
59
108
|
const [isModalOpen, setIsModalOpen] = useState(false);
|
|
109
|
+
useEffect(() => subscribeToSignInModal(setIsModalOpen), []);
|
|
60
110
|
|
|
61
|
-
//
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
111
|
+
// The application's public identity is resolved lazily on first press and its
|
|
112
|
+
// promise cached, so rapid taps share one in-flight resolve. The cache is
|
|
113
|
+
// KEYED on the identity inputs (clientId + the oxyServices instance): if
|
|
114
|
+
// either changes the cache is invalidated and re-resolved — without a
|
|
115
|
+
// useEffect. A rejected resolve clears the cache so a later press can retry.
|
|
116
|
+
const appResolutionRef = useRef(null);
|
|
117
|
+
// Re-entrancy guard: a routing pass may await network + crypto before it
|
|
118
|
+
// redirects, so block a second concurrent press from racing the sessionStorage
|
|
119
|
+
// handshake against a different PKCE pair.
|
|
120
|
+
const routingRef = useRef(false);
|
|
121
|
+
const resolvePublicApplication = useCallback(() => {
|
|
122
|
+
if (!clientId) return null;
|
|
123
|
+
const cached = appResolutionRef.current;
|
|
124
|
+
if (cached && cached.clientId === clientId && cached.oxyServices === oxyServices) {
|
|
125
|
+
return cached.promise;
|
|
126
|
+
}
|
|
127
|
+
const promise = oxyServices.getPublicApplication(clientId).catch(error => {
|
|
128
|
+
// Only clear if this is still the live entry (a later resolve may have
|
|
129
|
+
// replaced it after a clientId/oxyServices change).
|
|
130
|
+
if (appResolutionRef.current?.promise === promise) {
|
|
131
|
+
appResolutionRef.current = null;
|
|
132
|
+
}
|
|
133
|
+
throw error;
|
|
134
|
+
});
|
|
135
|
+
appResolutionRef.current = {
|
|
136
|
+
clientId,
|
|
137
|
+
oxyServices,
|
|
138
|
+
promise
|
|
139
|
+
};
|
|
140
|
+
return promise;
|
|
141
|
+
}, [clientId, oxyServices]);
|
|
66
142
|
|
|
67
|
-
//
|
|
68
|
-
|
|
69
|
-
|
|
143
|
+
// Official / first-party surface: the in-app account + sign-in dialog.
|
|
144
|
+
const startOfficialSignIn = useCallback(() => {
|
|
145
|
+
openAccountDialog('signin');
|
|
146
|
+
}, [openAccountDialog]);
|
|
147
|
+
|
|
148
|
+
// Third-party surface: an OAuth 2.0 authorization-code + PKCE redirect to
|
|
149
|
+
// auth.oxy.so. No FedCM, no SSO bounce, no Oxy session cookies.
|
|
150
|
+
const startThirdPartyOAuth = useCallback(async app => {
|
|
151
|
+
if (!clientId) {
|
|
152
|
+
startOfficialSignIn();
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
if (!oauthRedirectUri) {
|
|
156
|
+
logger.error('OxySignInButton: a third_party application requires the `oauthRedirectUri` prop to start the OAuth redirect; sign-in aborted', undefined, {
|
|
157
|
+
component: 'OxySignInButton',
|
|
158
|
+
clientId,
|
|
159
|
+
application: app.name
|
|
160
|
+
});
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
const [pkce, state] = await Promise.all([generatePkcePair(), generateOAuthState()]);
|
|
164
|
+
const authorizeUrl = buildOAuthAuthorizeUrl({
|
|
165
|
+
clientId,
|
|
166
|
+
redirectUri: oauthRedirectUri,
|
|
167
|
+
state,
|
|
168
|
+
codeChallenge: pkce.codeChallenge
|
|
169
|
+
});
|
|
170
|
+
if (Platform.OS === 'web') {
|
|
171
|
+
// Persist the handshake for the RP callback, then hand the
|
|
172
|
+
// top-level document to the IdP. Without storage the callback
|
|
173
|
+
// cannot validate `state`, so abort cleanly rather than redirect.
|
|
174
|
+
if (!persistOAuthHandshake(state, pkce.codeVerifier)) {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
redirectToAuthorize(authorizeUrl);
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// Native: open the in-app auth session, then hand the handshake to the
|
|
182
|
+
// RP so it can complete the token exchange from its deep-link callback.
|
|
183
|
+
const {
|
|
184
|
+
redirectUrl
|
|
185
|
+
} = await openAuthorizeUrlNative(authorizeUrl, oauthRedirectUri);
|
|
186
|
+
if (onOAuthResult) {
|
|
187
|
+
onOAuthResult({
|
|
188
|
+
redirectUrl,
|
|
189
|
+
state,
|
|
190
|
+
codeVerifier: pkce.codeVerifier
|
|
191
|
+
});
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
logger.warn('OxySignInButton: native third-party sign-in cannot complete without an `onOAuthResult` handler; the code exchange is the RP\'s responsibility (state + code_verifier were not surfaced)', {
|
|
195
|
+
component: 'OxySignInButton',
|
|
196
|
+
application: app.name
|
|
197
|
+
});
|
|
198
|
+
}, [clientId, oauthRedirectUri, onOAuthResult, startOfficialSignIn]);
|
|
199
|
+
|
|
200
|
+
// Resolve the Application once, then route: third-party → OAuth redirect;
|
|
201
|
+
// first-party / official / unresolved → the in-app dialog. Resolution failure
|
|
202
|
+
// NEVER breaks an official app's sign-in — it falls back to the dialog.
|
|
203
|
+
const routeSignIn = useCallback(async () => {
|
|
204
|
+
if (routingRef.current) return;
|
|
205
|
+
routingRef.current = true;
|
|
206
|
+
try {
|
|
207
|
+
const resolving = resolvePublicApplication();
|
|
208
|
+
if (!resolving) {
|
|
209
|
+
startOfficialSignIn();
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
let app;
|
|
213
|
+
try {
|
|
214
|
+
app = await resolving;
|
|
215
|
+
} catch (error) {
|
|
216
|
+
logger.warn('OxySignInButton: could not resolve the application; opening the sign-in dialog', {
|
|
217
|
+
component: 'OxySignInButton',
|
|
218
|
+
clientId
|
|
219
|
+
}, error);
|
|
220
|
+
startOfficialSignIn();
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
if (app.type === 'third_party' && !app.isOfficial) {
|
|
224
|
+
await startThirdPartyOAuth(app);
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
startOfficialSignIn();
|
|
228
|
+
} finally {
|
|
229
|
+
routingRef.current = false;
|
|
230
|
+
}
|
|
231
|
+
}, [resolvePublicApplication, startOfficialSignIn, startThirdPartyOAuth, clientId]);
|
|
232
|
+
|
|
233
|
+
// Defer to a caller-supplied handler, otherwise route by application type.
|
|
70
234
|
const handlePress = useCallback(() => {
|
|
71
235
|
if (onPress) {
|
|
72
236
|
onPress();
|
|
73
237
|
return;
|
|
74
238
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
showSignInModal();
|
|
78
|
-
} else {
|
|
79
|
-
showBottomSheet?.('OxyAuth');
|
|
80
|
-
}
|
|
81
|
-
}, [onPress, showBottomSheet]);
|
|
239
|
+
void routeSignIn();
|
|
240
|
+
}, [onPress, routeSignIn]);
|
|
82
241
|
const themedStyles = useMemo(() => StyleSheet.create({
|
|
83
242
|
button: {
|
|
84
243
|
padding: 14,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useState","useEffect","useMemo","TouchableOpacity","Text","View","StyleSheet","Platform","useAuthStore","useShallow","useTheme","useOxy","OxyLogo","
|
|
1
|
+
{"version":3,"names":["useCallback","useState","useEffect","useMemo","useRef","TouchableOpacity","Text","View","StyleSheet","Platform","logger","generatePkcePair","generateOAuthState","buildOAuthAuthorizeUrl","useAuthStore","useShallow","useTheme","useOxy","OxyLogo","subscribeToSignInModal","redirectToAuthorize","openAuthorizeUrlNative","jsx","_jsx","jsxs","_jsxs","OXY_OAUTH_STATE_STORAGE_KEY","OXY_OAUTH_CODE_VERIFIER_STORAGE_KEY","persistOAuthHandshake","state","codeVerifier","store","globalThis","sessionStorage","Error","setItem","error","warn","component","OxySignInButton","variant","onPress","style","textStyle","text","disabled","showWhenAuthenticated","oauthRedirectUri","onOAuthResult","theme","openAccountDialog","oxyServices","clientId","isAuthenticated","isLoading","isModalOpen","setIsModalOpen","appResolutionRef","routingRef","resolvePublicApplication","cached","current","promise","getPublicApplication","catch","startOfficialSignIn","startThirdPartyOAuth","app","undefined","application","name","pkce","Promise","all","authorizeUrl","redirectUri","codeChallenge","OS","redirectUrl","routeSignIn","resolving","type","isOfficial","handlePress","themedStyles","create","button","padding","borderRadius","alignItems","justifyContent","buttonDefault","backgroundColor","colors","card","borderWidth","borderColor","borderLight","select","web","boxShadow","default","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","buttonOutline","primary","buttonContained","buttonDisabled","opacity","buttonContent","flexDirection","fontWeight","fontSize","marginLeft","textDefault","color","textOutline","textContained","textDisabled","textTertiary","isButtonDisabled","getButtonStyle","getTextStyle","children","size","fillColor","innerFillColor"],"sourceRoot":"../../../../src","sources":["ui/components/OxySignInButton.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { useCallback,
|
|
3
|
+
import { useCallback, useState } from 'react';
|
|
4
4
|
import { View, Pressable, StyleSheet, Platform } from 'react-native';
|
|
5
5
|
import { MaterialCommunityIcons } from '@expo/vector-icons';
|
|
6
6
|
import { Avatar } from '@oxyhq/bloom/avatar';
|
|
@@ -8,21 +8,11 @@ import { Text } from '@oxyhq/bloom/typography';
|
|
|
8
8
|
import { useTheme } from '@oxyhq/bloom/theme';
|
|
9
9
|
import { getAccountDisplayName, getAccountFallbackHandle } from '@oxyhq/core';
|
|
10
10
|
import { useAuth } from "../hooks/useAuth.js";
|
|
11
|
+
import { useOxy } from "../context/OxyContext.js";
|
|
11
12
|
import { useI18n } from "../hooks/useI18n.js";
|
|
12
|
-
import ProfileMenu from "./ProfileMenu.js";
|
|
13
13
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
14
14
|
const isWeb = Platform.OS === 'web';
|
|
15
15
|
|
|
16
|
-
/**
|
|
17
|
-
* Fixed popover width used by {@link ProfileMenu} on web. `ProfileButton`
|
|
18
|
-
* mirrors this constant when computing the trigger-relative anchor so the
|
|
19
|
-
* left-edge clamp keeps the panel fully on-screen. Keep the two in sync.
|
|
20
|
-
*/
|
|
21
|
-
const MENU_WIDTH = 300;
|
|
22
|
-
|
|
23
|
-
/** Gutter, in px, kept between the popover and the viewport edges on web. */
|
|
24
|
-
const VIEWPORT_GUTTER = 8;
|
|
25
|
-
|
|
26
16
|
/**
|
|
27
17
|
* Web-only Bluesky-style hover animation timings, mirrored from
|
|
28
18
|
* `social-app/src/view/shell/desktop/LeftNav.tsx`. The row background and the
|
|
@@ -51,36 +41,27 @@ const prefersReducedMotion = () => {
|
|
|
51
41
|
};
|
|
52
42
|
/**
|
|
53
43
|
* Self-contained sidebar account trigger, modeled on Bluesky's ProfileCard and
|
|
54
|
-
* the Oxy inbox's `MailboxDrawer` footer.
|
|
55
|
-
*
|
|
44
|
+
* the Oxy inbox's `MailboxDrawer` footer. Pressing it opens the unified
|
|
45
|
+
* {@link OxyAccountDialog} — the single account switcher + sign-in surface — via
|
|
46
|
+
* `useOxy().openAccountDialog`.
|
|
56
47
|
*
|
|
57
48
|
* Three auth states from {@link useAuth}:
|
|
58
49
|
* - **Undetermined** (`!isAuthResolved || isPrivateApiPending`): a neutral
|
|
59
50
|
* avatar-sized skeleton circle, no press.
|
|
60
51
|
* - **Signed in**: a pressable row — Bloom `Avatar` + display name + `@handle`
|
|
61
|
-
* +
|
|
62
|
-
*
|
|
63
|
-
*
|
|
52
|
+
* + a chevron. Press opens the dialog on its `accounts` view.
|
|
53
|
+
* - **Signed out**: a "Sign in" row that calls `useAuth().signIn()` (which opens
|
|
54
|
+
* the dialog on its `signin` view).
|
|
64
55
|
*
|
|
65
56
|
* Styling uses react-native `StyleSheet` + the Bloom theme (via `useTheme`) so
|
|
66
57
|
* the layout renders identically in EVERY consumer — including apps that do not
|
|
67
58
|
* use NativeWind (e.g. the accounts app). Only the web hover animation keeps
|
|
68
59
|
* dynamic inline `style` (the CSS transition/transform values), which is what
|
|
69
60
|
* the `react-native-web-style.d.ts` augmentation exists for.
|
|
70
|
-
*
|
|
71
|
-
* All display strings resolve through `@oxyhq/core`'s
|
|
72
|
-
* `getAccountDisplayName` / `getAccountFallbackHandle` — no hand-rolled name
|
|
73
|
-
* fallbacks. Avatars pass the bare file id as `source` + `variant="thumb"`, so
|
|
74
|
-
* the app's registered `ImageResolver` builds the thumbnail URL.
|
|
75
61
|
*/
|
|
76
62
|
const ProfileButton = ({
|
|
77
63
|
expanded = true,
|
|
78
64
|
avatarSize,
|
|
79
|
-
onNavigateManage,
|
|
80
|
-
onAddAccount,
|
|
81
|
-
onNavigateProfile,
|
|
82
|
-
onBeforeSessionChange,
|
|
83
|
-
placement = 'up',
|
|
84
65
|
className,
|
|
85
66
|
style
|
|
86
67
|
}) => {
|
|
@@ -91,6 +72,9 @@ const ProfileButton = ({
|
|
|
91
72
|
isPrivateApiPending,
|
|
92
73
|
signIn
|
|
93
74
|
} = useAuth();
|
|
75
|
+
const {
|
|
76
|
+
openAccountDialog
|
|
77
|
+
} = useOxy();
|
|
94
78
|
const {
|
|
95
79
|
colors
|
|
96
80
|
} = useTheme();
|
|
@@ -98,67 +82,15 @@ const ProfileButton = ({
|
|
|
98
82
|
t,
|
|
99
83
|
locale
|
|
100
84
|
} = useI18n();
|
|
101
|
-
const [menuOpen, setMenuOpen] = useState(false);
|
|
102
|
-
const [anchor, setAnchor] = useState(null);
|
|
103
85
|
|
|
104
86
|
// Web-only hover/focus tracking for the Bluesky-style reveal animation.
|
|
105
87
|
// Native has no hover, so these stay false and the row renders statically.
|
|
106
88
|
const [hovered, setHovered] = useState(false);
|
|
107
89
|
const [focused, setFocused] = useState(false);
|
|
108
|
-
|
|
109
|
-
// Trigger ref for the web anchor measurement. RN-Web exposes `measure()` on
|
|
110
|
-
// host views, so we anchor the popover to the button rect and open upward.
|
|
111
|
-
const triggerRef = useRef(null);
|
|
112
90
|
const resolvedAvatarSize = avatarSize ?? (expanded ? 40 : 32);
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
setMenuOpen(true);
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
const node = triggerRef.current;
|
|
120
|
-
if (!node || typeof node.measure !== 'function' || typeof window === 'undefined') {
|
|
121
|
-
setAnchor(null);
|
|
122
|
-
setMenuOpen(true);
|
|
123
|
-
return;
|
|
124
|
-
}
|
|
125
|
-
node.measure((_x, _y, _w, height, pageX, pageY) => {
|
|
126
|
-
if (typeof pageX !== 'number' || typeof pageY !== 'number') {
|
|
127
|
-
setAnchor(null);
|
|
128
|
-
} else {
|
|
129
|
-
// Clamp the panel's left edge inside the viewport gutter.
|
|
130
|
-
const maxLeft = Math.max(VIEWPORT_GUTTER, window.innerWidth - MENU_WIDTH - VIEWPORT_GUTTER);
|
|
131
|
-
const left = Math.min(Math.max(VIEWPORT_GUTTER, pageX), maxLeft);
|
|
132
|
-
// Bottom edge of the trigger in page coordinates. `height` is a
|
|
133
|
-
// number for host views; guard defensively for non-web shims.
|
|
134
|
-
const triggerBottom = pageY + (typeof height === 'number' ? height : 0);
|
|
135
|
-
// Resolve `'auto'` by comparing the room below the trigger with
|
|
136
|
-
// the room above it; pick whichever direction has more space.
|
|
137
|
-
const openDown = placement === 'down' || placement === 'auto' && window.innerHeight - triggerBottom > pageY;
|
|
138
|
-
if (openDown) {
|
|
139
|
-
// Anchor the panel's TOP edge just below the trigger bottom so
|
|
140
|
-
// the menu opens downward from a top-of-sidebar trigger.
|
|
141
|
-
const top = Math.max(VIEWPORT_GUTTER, triggerBottom + VIEWPORT_GUTTER);
|
|
142
|
-
setAnchor({
|
|
143
|
-
left,
|
|
144
|
-
top
|
|
145
|
-
});
|
|
146
|
-
} else {
|
|
147
|
-
// Anchor the panel's BOTTOM edge just above the trigger top so
|
|
148
|
-
// the menu opens upward from this footer button.
|
|
149
|
-
const bottom = Math.max(VIEWPORT_GUTTER, window.innerHeight - pageY + VIEWPORT_GUTTER);
|
|
150
|
-
setAnchor({
|
|
151
|
-
left,
|
|
152
|
-
bottom
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
setMenuOpen(true);
|
|
157
|
-
});
|
|
158
|
-
}, [placement]);
|
|
159
|
-
const handleClose = useCallback(() => {
|
|
160
|
-
setMenuOpen(false);
|
|
161
|
-
}, []);
|
|
91
|
+
const openDialog = useCallback(() => {
|
|
92
|
+
openAccountDialog('accounts');
|
|
93
|
+
}, [openAccountDialog]);
|
|
162
94
|
|
|
163
95
|
// ── Undetermined: skeleton circle, no interaction. ──────────────────────
|
|
164
96
|
if (!isAuthResolved || isPrivateApiPending) {
|
|
@@ -220,10 +152,10 @@ const ProfileButton = ({
|
|
|
220
152
|
size: resolvedAvatarSize
|
|
221
153
|
});
|
|
222
154
|
|
|
223
|
-
// `active` combines hover
|
|
224
|
-
//
|
|
225
|
-
//
|
|
226
|
-
const active = hovered || focused
|
|
155
|
+
// `active` combines hover and keyboard focus — exactly like Bluesky's
|
|
156
|
+
// `state.hovered || state.focused`. Only web ever sets these, so on native
|
|
157
|
+
// the row renders statically.
|
|
158
|
+
const active = hovered || focused;
|
|
227
159
|
const accountLabel = t('accountSwitcher.switchWhileSignedInAs', {
|
|
228
160
|
name: displayName
|
|
229
161
|
}) || `Switch account, signed in as ${displayName}`;
|
|
@@ -246,26 +178,17 @@ const ProfileButton = ({
|
|
|
246
178
|
transitionDuration: `${BG_TRANSITION_MS}ms`,
|
|
247
179
|
transitionDelay: active ? '0ms' : `${LEAVE_DELAY_MS}ms`
|
|
248
180
|
} : undefined;
|
|
249
|
-
return /*#__PURE__*/
|
|
181
|
+
return /*#__PURE__*/_jsx(View, {
|
|
250
182
|
className: className,
|
|
251
183
|
style: style,
|
|
252
|
-
children:
|
|
253
|
-
ref: triggerRef,
|
|
184
|
+
children: /*#__PURE__*/_jsx(Pressable, {
|
|
254
185
|
style: [styles.collapsedTrigger, collapsedBgStyle],
|
|
255
|
-
onPress:
|
|
186
|
+
onPress: openDialog,
|
|
256
187
|
accessibilityRole: "button",
|
|
257
188
|
accessibilityLabel: accountLabel,
|
|
258
189
|
...webInteractionProps,
|
|
259
190
|
children: avatarNode
|
|
260
|
-
})
|
|
261
|
-
open: menuOpen,
|
|
262
|
-
onClose: handleClose,
|
|
263
|
-
anchor: anchor,
|
|
264
|
-
onNavigateManage: onNavigateManage,
|
|
265
|
-
onAddAccount: onAddAccount,
|
|
266
|
-
onNavigateProfile: onNavigateProfile,
|
|
267
|
-
onBeforeSessionChange: onBeforeSessionChange
|
|
268
|
-
})]
|
|
191
|
+
})
|
|
269
192
|
});
|
|
270
193
|
}
|
|
271
194
|
|
|
@@ -318,13 +241,12 @@ const ProfileButton = ({
|
|
|
318
241
|
transitionDuration: `${OPACITY_TRANSITION_MS}ms`,
|
|
319
242
|
transitionDelay: active ? '0ms' : `${LEAVE_DELAY_MS}ms`
|
|
320
243
|
} : undefined;
|
|
321
|
-
return /*#__PURE__*/
|
|
244
|
+
return /*#__PURE__*/_jsx(View, {
|
|
322
245
|
className: className,
|
|
323
246
|
style: [styles.fullWidth, style],
|
|
324
|
-
children:
|
|
325
|
-
ref: triggerRef,
|
|
247
|
+
children: /*#__PURE__*/_jsxs(Pressable, {
|
|
326
248
|
style: [styles.row, styles.rowExpanded, rowStyle],
|
|
327
|
-
onPress:
|
|
249
|
+
onPress: openDialog,
|
|
328
250
|
accessibilityRole: "button",
|
|
329
251
|
accessibilityLabel: accountLabel,
|
|
330
252
|
...webInteractionProps,
|
|
@@ -354,15 +276,7 @@ const ProfileButton = ({
|
|
|
354
276
|
color: colors.textSecondary
|
|
355
277
|
})
|
|
356
278
|
})]
|
|
357
|
-
})
|
|
358
|
-
open: menuOpen,
|
|
359
|
-
onClose: handleClose,
|
|
360
|
-
anchor: anchor,
|
|
361
|
-
onNavigateManage: onNavigateManage,
|
|
362
|
-
onAddAccount: onAddAccount,
|
|
363
|
-
onNavigateProfile: onNavigateProfile,
|
|
364
|
-
onBeforeSessionChange: onBeforeSessionChange
|
|
365
|
-
})]
|
|
279
|
+
})
|
|
366
280
|
});
|
|
367
281
|
};
|
|
368
282
|
const styles = StyleSheet.create({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useRef","useState","View","Pressable","StyleSheet","Platform","MaterialCommunityIcons","Avatar","Text","useTheme","getAccountDisplayName","getAccountFallbackHandle","useAuth","useI18n","ProfileMenu","jsx","_jsx","jsxs","_jsxs","isWeb","OS","MENU_WIDTH","VIEWPORT_GUTTER","BG_TRANSITION_MS","AVATAR_TRANSITION_MS","OPACITY_TRANSITION_MS","LEAVE_DELAY_MS","ACTIVE_AVATAR_SCALE","prefersReducedMotion","window","matchMedia","matches","ProfileButton","expanded","avatarSize","onNavigateManage","onAddAccount","onNavigateProfile","onBeforeSessionChange","placement","className","style","user","isAuthenticated","isAuthResolved","isPrivateApiPending","signIn","colors","t","locale","menuOpen","setMenuOpen","anchor","setAnchor","hovered","setHovered","focused","setFocused","triggerRef","resolvedAvatarSize","openMenu","node","current","measure","_x","_y","_w","height","pageX","pageY","maxLeft","Math","max","innerWidth","left","min","triggerBottom","openDown","innerHeight","top","bottom","handleClose","accessibilityElementsHidden","importantForAccessibility","children","styles","skeletonCircle","width","backgroundColor","backgroundSecondary","signInLabel","row","rowExpanded","onPress","accessibilityRole","accessibilityLabel","avatarBadge","name","size","round","color","icon","text","numberOfLines","displayName","handle","handleLine","avatarNode","source","avatar","undefined","variant","active","accountLabel","webInteractionProps","onHoverIn","onHoverOut","onFocus","onBlur","collapsedBgStyle","transitionProperty","transitionDuration","transitionDelay","ref","collapsedTrigger","open","onClose","reducedMotion","activeAvatarTranslateX","rowStyle","avatarWrapperStyle","zIndex","transform","scale","translateX","identityStyle","marginLeft","opacity","chevronStyle","fullWidth","identity","textSecondary","create","borderRadius","flexDirection","alignItems","gap","paddingHorizontal","paddingVertical","justifyContent","flex","fontWeight","minWidth","fontSize"],"sourceRoot":"../../../../src","sources":["ui/components/ProfileButton.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["useCallback","useState","View","Pressable","StyleSheet","Platform","MaterialCommunityIcons","Avatar","Text","useTheme","getAccountDisplayName","getAccountFallbackHandle","useAuth","useOxy","useI18n","jsx","_jsx","jsxs","_jsxs","isWeb","OS","BG_TRANSITION_MS","AVATAR_TRANSITION_MS","OPACITY_TRANSITION_MS","LEAVE_DELAY_MS","ACTIVE_AVATAR_SCALE","prefersReducedMotion","window","matchMedia","matches","ProfileButton","expanded","avatarSize","className","style","user","isAuthenticated","isAuthResolved","isPrivateApiPending","signIn","openAccountDialog","colors","t","locale","hovered","setHovered","focused","setFocused","resolvedAvatarSize","openDialog","accessibilityElementsHidden","importantForAccessibility","children","styles","skeletonCircle","width","height","backgroundColor","backgroundSecondary","signInLabel","row","rowExpanded","onPress","accessibilityRole","accessibilityLabel","avatarBadge","name","size","Math","round","color","icon","text","numberOfLines","displayName","handle","handleLine","avatarNode","source","avatar","undefined","variant","active","accountLabel","webInteractionProps","onHoverIn","onHoverOut","onFocus","onBlur","collapsedBgStyle","transitionProperty","transitionDuration","transitionDelay","collapsedTrigger","reducedMotion","activeAvatarTranslateX","rowStyle","avatarWrapperStyle","zIndex","transform","scale","translateX","identityStyle","marginLeft","opacity","chevronStyle","fullWidth","identity","textSecondary","create","borderRadius","flexDirection","alignItems","gap","paddingHorizontal","paddingVertical","justifyContent","flex","fontWeight","minWidth","fontSize"],"sourceRoot":"../../../../src","sources":["ui/components/ProfileButton.tsx"],"mappings":";;AACA,SAASA,WAAW,EAAEC,QAAQ,QAAQ,OAAO;AAC7C,SACIC,IAAI,EACJC,SAAS,EACTC,UAAU,EACVC,QAAQ,QAGL,cAAc;AACrB,SAASC,sBAAsB,QAAQ,oBAAoB;AAC3D,SAASC,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,IAAI,QAAQ,yBAAyB;AAC9C,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,qBAAqB,EAAEC,wBAAwB,QAAQ,aAAa;AAC7E,SAASC,OAAO,QAAQ,qBAAkB;AAC1C,SAASC,MAAM,QAAQ,0BAAuB;AAC9C,SAASC,OAAO,QAAQ,qBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAE3C,MAAMC,KAAK,GAAGd,QAAQ,CAACe,EAAE,KAAK,KAAK;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,gBAAgB,GAAG,GAAG;AAC5B,MAAMC,oBAAoB,GAAG,GAAG;AAChC,MAAMC,qBAAqB,GAAG,GAAG;AACjC,MAAMC,cAAc,GAAG,EAAE;;AAEzB;AACA,MAAMC,mBAAmB,GAAG,CAAC,GAAG,CAAC;;AAEjC;AACA;AACA;AACA;AACA;AACA,MAAMC,oBAAoB,GAAGA,CAAA,KAAe;EACxC,IAAI,OAAOC,MAAM,KAAK,WAAW,IAAI,OAAOA,MAAM,CAACC,UAAU,KAAK,UAAU,EAAE;IAC1E,OAAO,KAAK;EAChB;EACA,OAAOD,MAAM,CAACC,UAAU,CAAC,kCAAkC,CAAC,CAACC,OAAO;AACxE,CAAC;AAkCD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,aAA2C,GAAGA,CAAC;EACjDC,QAAQ,GAAG,IAAI;EACfC,UAAU;EACVC,SAAS;EACTC;AACJ,CAAC,KAAK;EACF,MAAM;IACFC,IAAI;IACJC,eAAe;IACfC,cAAc;IACdC,mBAAmB;IACnBC;EACJ,CAAC,GAAG3B,OAAO,CAAC,CAAC;EACb,MAAM;IAAE4B;EAAkB,CAAC,GAAG3B,MAAM,CAAC,CAAC;EACtC,MAAM;IAAE4B;EAAO,CAAC,GAAGhC,QAAQ,CAAC,CAAC;EAC7B,MAAM;IAAEiC,CAAC;IAAEC;EAAO,CAAC,GAAG7B,OAAO,CAAC,CAAC;;EAE/B;EACA;EACA,MAAM,CAAC8B,OAAO,EAAEC,UAAU,CAAC,GAAG5C,QAAQ,CAAC,KAAK,CAAC;EAC7C,MAAM,CAAC6C,OAAO,EAAEC,UAAU,CAAC,GAAG9C,QAAQ,CAAC,KAAK,CAAC;EAE7C,MAAM+C,kBAAkB,GAAGhB,UAAU,KAAKD,QAAQ,GAAG,EAAE,GAAG,EAAE,CAAC;EAE7D,MAAMkB,UAAU,GAAGjD,WAAW,CAAC,MAAM;IACjCwC,iBAAiB,CAAC,UAAU,CAAC;EACjC,CAAC,EAAE,CAACA,iBAAiB,CAAC,CAAC;;EAEvB;EACA,IAAI,CAACH,cAAc,IAAIC,mBAAmB,EAAE;IACxC,oBACItB,IAAA,CAACd,IAAI;MACD+B,SAAS,EAAEA,SAAU;MACrBC,KAAK,EAAEA,KAAM;MACbgB,2BAA2B;MAC3BC,yBAAyB,EAAC,qBAAqB;MAAAC,QAAA,eAE/CpC,IAAA,CAACd,IAAI;QACDgC,KAAK,EAAE,CACHmB,MAAM,CAACC,cAAc,EACrB;UACIC,KAAK,EAAEP,kBAAkB;UACzBQ,MAAM,EAAER,kBAAkB;UAC1BS,eAAe,EAAEhB,MAAM,CAACiB;QAC5B,CAAC;MACH,CACL;IAAC,CACA,CAAC;EAEf;;EAEA;EACA,IAAI,CAACtB,eAAe,IAAI,CAACD,IAAI,EAAE;IAC3B,MAAMwB,WAAW,GAAGjB,CAAC,CAAC,uBAAuB,CAAC,IAAI,SAAS;IAC3D,oBACIxB,KAAA,CAACf,SAAS;MACN8B,SAAS,EAAEA,SAAU;MACrBC,KAAK,EAAE,CAACmB,MAAM,CAACO,GAAG,EAAE7B,QAAQ,IAAIsB,MAAM,CAACQ,WAAW,EAAE3B,KAAK,CAAE;MAC3D4B,OAAO,EAAEA,CAAA,KAAM;QAAE,KAAKvB,MAAM,CAAC,CAAC;MAAE,CAAE;MAClCwB,iBAAiB,EAAC,QAAQ;MAC1BC,kBAAkB,EAAEL,WAAY;MAAAP,QAAA,gBAEhCpC,IAAA,CAACd,IAAI;QACDgC,KAAK,EAAE,CACHmB,MAAM,CAACY,WAAW,EAClB;UACIV,KAAK,EAAEP,kBAAkB;UACzBQ,MAAM,EAAER,kBAAkB;UAC1BS,eAAe,EAAEhB,MAAM,CAACiB;QAC5B,CAAC,CACH;QAAAN,QAAA,eAEFpC,IAAA,CAACV,sBAAsB;UACnB4D,IAAI,EAAC,OAAO;UACZC,IAAI,EAAEC,IAAI,CAACC,KAAK,CAACrB,kBAAkB,GAAG,GAAG,CAAE;UAC3CsB,KAAK,EAAE7B,MAAM,CAAC8B;QAAK,CACtB;MAAC,CACA,CAAC,EACNxC,QAAQ,gBACLf,IAAA,CAACR,IAAI;QACD0B,KAAK,EAAE,CAACmB,MAAM,CAACM,WAAW,EAAE;UAAEW,KAAK,EAAE7B,MAAM,CAAC+B;QAAK,CAAC,CAAE;QACpDC,aAAa,EAAE,CAAE;QAAArB,QAAA,EAEhBO;MAAW,CACV,CAAC,GACP,IAAI;IAAA,CACD,CAAC;EAEpB;;EAEA;EACA,MAAMe,WAAW,GAAGhE,qBAAqB,CAACyB,IAAI,EAAEQ,MAAM,CAAC;EACvD,MAAMgC,MAAM,GAAGhE,wBAAwB,CAACwB,IAAI,CAAC;EAC7C,MAAMyC,UAAU,GAAGD,MAAM,GAAG,IAAIA,MAAM,EAAE,GAAG,IAAI;EAE/C,MAAME,UAAU,gBACZ7D,IAAA,CAACT,MAAM;IACHuE,MAAM,EAAE3C,IAAI,CAAC4C,MAAM,IAAIC,SAAU;IACjCC,OAAO,EAAC,OAAO;IACff,IAAI,EAAEQ,WAAY;IAClBP,IAAI,EAAEnB;EAAmB,CAC5B,CACJ;;EAED;EACA;EACA;EACA,MAAMkC,MAAM,GAAGtC,OAAO,IAAIE,OAAO;EACjC,MAAMqC,YAAY,GAAGzC,CAAC,CAAC,uCAAuC,EAAE;IAAEwB,IAAI,EAAEQ;EAAY,CAAC,CAAC,IAC/E,gCAAgCA,WAAW,EAAE;;EAEpD;EACA;EACA;EACA,MAAMU,mBAAmB,GAAGjE,KAAK,GAC3B;IACEkE,SAAS,EAAEA,CAAA,KAAMxC,UAAU,CAAC,IAAI,CAAC;IACjCyC,UAAU,EAAEA,CAAA,KAAMzC,UAAU,CAAC,KAAK,CAAC;IACnC0C,OAAO,EAAEA,CAAA,KAAMxC,UAAU,CAAC,IAAI,CAAC;IAC/ByC,MAAM,EAAEA,CAAA,KAAMzC,UAAU,CAAC,KAAK;EAClC,CAAC,GACCiC,SAAS;EAEf,IAAI,CAACjD,QAAQ,EAAE;IACX;IACA;IACA,MAAM0D,gBAAuC,GAAGtE,KAAK,GAC/C;MACEsC,eAAe,EAAEyB,MAAM,GAAGzC,MAAM,CAACiB,mBAAmB,GAAG,aAAa;MACpEgC,kBAAkB,EAAE,kBAAkB;MACtCC,kBAAkB,EAAE,GAAGtE,gBAAgB,IAAI;MAC3CuE,eAAe,EAAEV,MAAM,GAAG,KAAK,GAAG,GAAG1D,cAAc;IACvD,CAAC,GACCwD,SAAS;IACf,oBACIhE,IAAA,CAACd,IAAI;MAAC+B,SAAS,EAAEA,SAAU;MAACC,KAAK,EAAEA,KAAM;MAAAkB,QAAA,eACrCpC,IAAA,CAACb,SAAS;QACN+B,KAAK,EAAE,CAACmB,MAAM,CAACwC,gBAAgB,EAAEJ,gBAAgB,CAAE;QACnD3B,OAAO,EAAEb,UAAW;QACpBc,iBAAiB,EAAC,QAAQ;QAC1BC,kBAAkB,EAAEmB,YAAa;QAAA,GAC7BC,mBAAmB;QAAAhC,QAAA,EAEtByB;MAAU,CACJ;IAAC,CACV,CAAC;EAEf;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA,MAAMiB,aAAa,GAAG3E,KAAK,IAAIO,oBAAoB,CAAC,CAAC;;EAErD;EACA;EACA;EACA;EACA,MAAMqE,sBAAsB,GACxB,EAAE/C,kBAAkB,IAAI,CAAC,GAAGvB,mBAAmB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;EAE7D,MAAMuE,QAA8B,GAAG7E,KAAK,GACtC;IACEsC,eAAe,EAAEyB,MAAM,GAAGzC,MAAM,CAACiB,mBAAmB,GAAG,aAAa;IACpEgC,kBAAkB,EAAE,kBAAkB;IACtCC,kBAAkB,EAAE,GAAGtE,gBAAgB,IAAI;IAC3CuE,eAAe,EAAEV,MAAM,GAAG,KAAK,GAAG,GAAG1D,cAAc;EACvD,CAAC,GACCwD,SAAS;EAEf,MAAMiB,kBAAyC,GAAG9E,KAAK,GACjD;IACE+E,MAAM,EAAE,EAAE;IACV,IAAIJ,aAAa,GACX,CAAC,CAAC,GACF;MACEJ,kBAAkB,EAAE,WAAW;MAC/BC,kBAAkB,EAAE,GAAGrE,oBAAoB,IAAI;MAC/CsE,eAAe,EAAEV,MAAM,GAAG,KAAK,GAAG,GAAG1D,cAAc;IACvD,CAAC,CAAC;IACN2E,SAAS,EAAEjB,MAAM,GACX,CAAC;MAAEkB,KAAK,EAAE3E;IAAoB,CAAC,EAAE;MAAE4E,UAAU,EAAEN;IAAuB,CAAC,CAAC,GACxE,CAAC;MAAEK,KAAK,EAAE;IAAE,CAAC,EAAE;MAAEC,UAAU,EAAE;IAAE,CAAC;EAC1C,CAAC,GACCrB,SAAS;EAEf,MAAMsB,aAAoC,GAAGnF,KAAK,GAC5C;IACEoF,UAAU,EAAE,CAACvD,kBAAkB,GAAG,CAAC;IACnCwD,OAAO,EAAEtB,MAAM,GAAG,CAAC,GAAG,CAAC;IACvBQ,kBAAkB,EAAE,SAAS;IAC7BC,kBAAkB,EAAE,GAAGpE,qBAAqB,IAAI;IAChDqE,eAAe,EAAEV,MAAM,GAAG,KAAK,GAAG,GAAG1D,cAAc;EACvD,CAAC,GACCwD,SAAS;EAEf,MAAMyB,YAAmC,GAAGtF,KAAK,GAC3C;IACEqF,OAAO,EAAEtB,MAAM,GAAG,CAAC,GAAG,CAAC;IACvBQ,kBAAkB,EAAE,SAAS;IAC7BC,kBAAkB,EAAE,GAAGpE,qBAAqB,IAAI;IAChDqE,eAAe,EAAEV,MAAM,GAAG,KAAK,GAAG,GAAG1D,cAAc;EACvD,CAAC,GACCwD,SAAS;EAEf,oBACIhE,IAAA,CAACd,IAAI;IAAC+B,SAAS,EAAEA,SAAU;IAACC,KAAK,EAAE,CAACmB,MAAM,CAACqD,SAAS,EAAExE,KAAK,CAAE;IAAAkB,QAAA,eACzDlC,KAAA,CAACf,SAAS;MACN+B,KAAK,EAAE,CAACmB,MAAM,CAACO,GAAG,EAAEP,MAAM,CAACQ,WAAW,EAAEmC,QAAQ,CAAE;MAClDlC,OAAO,EAAEb,UAAW;MACpBc,iBAAiB,EAAC,QAAQ;MAC1BC,kBAAkB,EAAEmB,YAAa;MAAA,GAC7BC,mBAAmB;MAAAhC,QAAA,gBAEvBpC,IAAA,CAACd,IAAI;QAACgC,KAAK,EAAE+D,kBAAmB;QAAA7C,QAAA,EAAEyB;MAAU,CAAO,CAAC,eACpD3D,KAAA,CAAChB,IAAI;QAACgC,KAAK,EAAE,CAACmB,MAAM,CAACsD,QAAQ,EAAEL,aAAa,CAAE;QAAAlD,QAAA,gBAC1CpC,IAAA,CAACR,IAAI;UACD0B,KAAK,EAAE,CAACmB,MAAM,CAACqB,WAAW,EAAE;YAAEJ,KAAK,EAAE7B,MAAM,CAAC+B;UAAK,CAAC,CAAE;UACpDC,aAAa,EAAE,CAAE;UAAArB,QAAA,EAEhBsB;QAAW,CACV,CAAC,EACNE,UAAU,gBACP5D,IAAA,CAACR,IAAI;UACD0B,KAAK,EAAE,CAACmB,MAAM,CAACsB,MAAM,EAAE;YAAEL,KAAK,EAAE7B,MAAM,CAACmE;UAAc,CAAC,CAAE;UACxDnC,aAAa,EAAE,CAAE;UAAArB,QAAA,EAEhBwB;QAAU,CACT,CAAC,GACP,IAAI;MAAA,CACN,CAAC,eACP5D,IAAA,CAACd,IAAI;QAACgC,KAAK,EAAEuE,YAAa;QAAArD,QAAA,eACtBpC,IAAA,CAACV,sBAAsB;UACnB4D,IAAI,EAAC,iBAAiB;UACtBC,IAAI,EAAE,EAAG;UACTG,KAAK,EAAE7B,MAAM,CAACmE;QAAc,CAC/B;MAAC,CACA,CAAC;IAAA,CACA;EAAC,CACV,CAAC;AAEf,CAAC;AAED,MAAMvD,MAAM,GAAGjD,UAAU,CAACyG,MAAM,CAAC;EAC7BH,SAAS,EAAE;IACPnD,KAAK,EAAE;EACX,CAAC;EACD;EACAD,cAAc,EAAE;IACZwD,YAAY,EAAE;EAClB,CAAC;EACD;EACAlD,GAAG,EAAE;IACDmD,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,GAAG,EAAE,EAAE;IACPH,YAAY,EAAE,IAAI;IAClBI,iBAAiB,EAAE,CAAC;IACpBC,eAAe,EAAE;EACrB,CAAC;EACD;EACAtD,WAAW,EAAE;IACTN,KAAK,EAAE;EACX,CAAC;EACD;EACAU,WAAW,EAAE;IACT+C,UAAU,EAAE,QAAQ;IACpBI,cAAc,EAAE,QAAQ;IACxBN,YAAY,EAAE;EAClB,CAAC;EACD;EACAnD,WAAW,EAAE;IACT0D,IAAI,EAAE,CAAC;IACPC,UAAU,EAAE;EAChB,CAAC;EACD;EACAzB,gBAAgB,EAAE;IACdiB,YAAY,EAAE;EAClB,CAAC;EACD;EACAH,QAAQ,EAAE;IACNU,IAAI,EAAE,CAAC;IACPE,QAAQ,EAAE;EACd,CAAC;EACD;EACA7C,WAAW,EAAE;IACT4C,UAAU,EAAE;EAChB,CAAC;EACD;EACA3C,MAAM,EAAE;IACJ6C,QAAQ,EAAE;EACd;AACJ,CAAC,CAAC;AAEF,eAAe1F,aAAa","ignoreList":[]}
|