@dynamic-labs/sdk-react-core 3.0.0-alpha.15 → 3.0.0-alpha.17

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 (56) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/package.cjs +1 -1
  3. package/package.js +1 -1
  4. package/package.json +10 -10
  5. package/src/index.cjs +2 -0
  6. package/src/index.d.ts +1 -1
  7. package/src/index.js +1 -0
  8. package/src/lib/Main.cjs +1 -1
  9. package/src/lib/Main.js +1 -1
  10. package/src/lib/components/AuthProviderIcon/AuthProviderIcon.cjs +2 -4
  11. package/src/lib/components/AuthProviderIcon/AuthProviderIcon.js +2 -4
  12. package/src/lib/context/DynamicContext/DynamicContext.cjs +1 -1
  13. package/src/lib/context/DynamicContext/DynamicContext.js +1 -1
  14. package/src/lib/modals/CreatePasswordModal/CreatePasswordModal.cjs +1 -1
  15. package/src/lib/modals/CreatePasswordModal/CreatePasswordModal.js +1 -1
  16. package/src/lib/modals/EnterPasswordModal/EnterPasswordModal.cjs +1 -1
  17. package/src/lib/modals/EnterPasswordModal/EnterPasswordModal.js +1 -1
  18. package/src/lib/modals/SyncWalletPromptModal/SyncWalletPromptModal.cjs +1 -1
  19. package/src/lib/modals/SyncWalletPromptModal/SyncWalletPromptModal.js +1 -1
  20. package/src/lib/utils/functions/createOwnerWallet/createOwnerWallet.cjs +0 -1
  21. package/src/lib/utils/functions/createOwnerWallet/createOwnerWallet.js +0 -1
  22. package/src/lib/utils/hooks/index.d.ts +1 -0
  23. package/src/lib/utils/hooks/multiWallet/useSyncPrimaryWallet/useSyncPrimaryWallet.cjs +1 -2
  24. package/src/lib/utils/hooks/multiWallet/useSyncPrimaryWallet/useSyncPrimaryWallet.js +1 -2
  25. package/src/lib/utils/hooks/useConnectWallet/updateUserWalletsFromConnectedWallets/updateUserWalletsFromConnectedWallets.cjs +0 -1
  26. package/src/lib/utils/hooks/useConnectWallet/updateUserWalletsFromConnectedWallets/updateUserWalletsFromConnectedWallets.js +0 -1
  27. package/src/lib/utils/hooks/useConnectWallet/useConnectWallet.cjs +0 -1
  28. package/src/lib/utils/hooks/useConnectWallet/useConnectWallet.js +0 -1
  29. package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.cjs +0 -1
  30. package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.js +0 -1
  31. package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useCoinbaseMPC/useCoinbaseMPC.cjs +0 -2
  32. package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useCoinbaseMPC/useCoinbaseMPC.js +0 -2
  33. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.cjs +28 -17
  34. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.js +28 -17
  35. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useTurnkey/useTurnkey.cjs +0 -2
  36. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useTurnkey/useTurnkey.js +0 -2
  37. package/src/lib/utils/hooks/useSelectWalletOption/index.d.ts +1 -0
  38. package/src/lib/utils/hooks/useSelectWalletOption/useSelectWalletOption.cjs +128 -0
  39. package/src/lib/utils/hooks/useSelectWalletOption/useSelectWalletOption.d.ts +3 -0
  40. package/src/lib/utils/hooks/useSelectWalletOption/useSelectWalletOption.js +124 -0
  41. package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.cjs +8 -13
  42. package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.js +8 -13
  43. package/src/lib/utils/hooks/useWalletConnectors/utils/createLinkedWalletsFromWalletOptions/createLinkedWalletsFromWalletOptions.cjs +0 -1
  44. package/src/lib/utils/hooks/useWalletConnectors/utils/createLinkedWalletsFromWalletOptions/createLinkedWalletsFromWalletOptions.js +0 -1
  45. package/src/lib/utils/hooks/useWalletUiUtils/useWalletUiUtils.cjs +1 -1
  46. package/src/lib/utils/hooks/useWalletUiUtils/useWalletUiUtils.js +1 -1
  47. package/src/lib/views/EmailVerification/EmailVerification.cjs +1 -2
  48. package/src/lib/views/EmailVerification/EmailVerification.js +1 -2
  49. package/src/lib/views/Passkey/PasskeyRecovery/BundleValidation/PasskeyBundleRecovery.cjs +1 -1
  50. package/src/lib/views/Passkey/PasskeyRecovery/BundleValidation/PasskeyBundleRecovery.js +1 -1
  51. package/src/lib/views/SelectHardwareWalletView/SelectHardwareWalletView.cjs +1 -1
  52. package/src/lib/views/SelectHardwareWalletView/SelectHardwareWalletView.js +1 -1
  53. package/src/lib/widgets/DynamicWidget/components/ActiveWalletInformation/ActiveWalletAddress/ActiveWalletAddress.cjs +1 -1
  54. package/src/lib/widgets/DynamicWidget/components/ActiveWalletInformation/ActiveWalletAddress/ActiveWalletAddress.js +1 -1
  55. package/src/lib/widgets/DynamicWidget/components/WalletIconWithStatus/WalletIconWithStatus.cjs +0 -100
  56. package/src/lib/widgets/DynamicWidget/components/WalletIconWithStatus/WalletIconWithStatus.js +0 -96
@@ -314,7 +314,7 @@ const useSecureEnclaveEmbeddedWallet = () => {
314
314
  * @returns Promise<string> - returns the embedded wallet recovery phrase or private key
315
315
  */
316
316
  const revealEmbeddedWalletKey = (_y) => __awaiter(void 0, [_y], void 0, function* ({ type, htmlContainerId, }) {
317
- var _z, _0, _1, _2, _3;
317
+ var _z, _0, _1, _2, _3, _4;
318
318
  if (!user) {
319
319
  throw new DynamicError(USER_NOT_LOGGED_IN);
320
320
  }
@@ -330,26 +330,37 @@ const useSecureEnclaveEmbeddedWallet = () => {
330
330
  // hide the iframe container until the export is done
331
331
  // since it will show unrelated turnkey content
332
332
  iframeContainerElement.current.style.display = 'none';
333
- const isSessionKeyCompatibleAAConnector = ((_1 = wallet === null || wallet === void 0 ? void 0 : wallet.connector) === null || _1 === void 0 ? void 0 : _1.key) === 'zerodev'
334
- ? isSessionKeyCompatibleWalletConnector((wallet === null || wallet === void 0 ? void 0 : wallet.connector).getEOAConnector())
335
- : false;
336
333
  if (isSessionKeyCompatibleWalletConnector(wallet === null || wallet === void 0 ? void 0 : wallet.connector)) {
337
- yield ((_2 = wallet === null || wallet === void 0 ? void 0 : wallet.connector) === null || _2 === void 0 ? void 0 : _2.createOrRestoreSession());
338
- }
339
- else if (isSessionKeyCompatibleAAConnector) {
340
- yield ((_3 = (wallet === null || wallet === void 0 ? void 0 : wallet.connector).getEOAConnector()) === null || _3 === void 0 ? void 0 : _3.createOrRestoreSession());
334
+ yield ((_1 = wallet === null || wallet === void 0 ? void 0 : wallet.connector) === null || _1 === void 0 ? void 0 : _1.createOrRestoreSession());
341
335
  }
342
336
  yield initExport({
343
337
  iframeContainer: iframeContainerElement.current,
344
338
  iframeElementId: revealIframeElementId,
345
339
  wallet,
346
340
  });
347
- yield exportCredential({
348
- address: type === 'privateKey' ? wallet === null || wallet === void 0 ? void 0 : wallet.address : undefined,
349
- environmentId,
350
- user,
351
- wallet,
352
- });
341
+ try {
342
+ yield exportCredential({
343
+ address: type === 'privateKey' ? wallet === null || wallet === void 0 ? void 0 : wallet.address : undefined,
344
+ environmentId,
345
+ user,
346
+ wallet,
347
+ });
348
+ }
349
+ catch (_5) {
350
+ if (isSessionKeyCompatibleWalletConnector(wallet === null || wallet === void 0 ? void 0 : wallet.connector) &&
351
+ ((_2 = wallet === null || wallet === void 0 ? void 0 : wallet.connector) === null || _2 === void 0 ? void 0 : _2.removeSessionKeys)) {
352
+ yield ((_3 = wallet === null || wallet === void 0 ? void 0 : wallet.connector) === null || _3 === void 0 ? void 0 : _3.removeSessionKeys());
353
+ yield ((_4 = wallet === null || wallet === void 0 ? void 0 : wallet.connector) === null || _4 === void 0 ? void 0 : _4.createOrRestoreSession({
354
+ ignoreRestore: true,
355
+ }));
356
+ }
357
+ yield exportCredential({
358
+ address: type === 'privateKey' ? wallet === null || wallet === void 0 ? void 0 : wallet.address : undefined,
359
+ environmentId,
360
+ user,
361
+ wallet,
362
+ });
363
+ }
353
364
  // show the iframe container after the export is done
354
365
  // to show the exported content only
355
366
  iframeContainerElement.current.style.display = 'block';
@@ -360,11 +371,11 @@ const useSecureEnclaveEmbeddedWallet = () => {
360
371
  * @returns Promise<'code_sent'>
361
372
  */
362
373
  const sendOneTimeCode = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
363
- var _4, _5;
374
+ var _6, _7;
364
375
  if (!user) {
365
376
  throw new DynamicError(USER_NOT_LOGGED_IN);
366
377
  }
367
- const targetTurnkeyWallet = findTurnkeyWalletByPrimaryChain(walletConnectorOptions, (_4 = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.embeddedWallets) === null || _4 === void 0 ? void 0 : _4.chainConfigurations, user.verifiedCredentials);
378
+ const targetTurnkeyWallet = findTurnkeyWalletByPrimaryChain(walletConnectorOptions, (_6 = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.embeddedWallets) === null || _6 === void 0 ? void 0 : _6.chainConfigurations, user.verifiedCredentials);
368
379
  if (!targetTurnkeyWallet || !('id' in targetTurnkeyWallet)) {
369
380
  throw new DynamicError('User does not have a valid secure enclave wallet', INVALID_WALLET_DATA);
370
381
  }
@@ -375,7 +386,7 @@ const useSecureEnclaveEmbeddedWallet = () => {
375
386
  throw new DynamicError('Session is active. No need to create a new one', ACTIVE_SESSION);
376
387
  }
377
388
  const turnkeyAuthIframeContainerRef = createRootElement(iframeContainerId);
378
- const publicKey = yield turnkeyAuthenticatorHandler.initRecovery('email', turnkeyAuthIframeContainerRef.current, iframeElementId, getEmbeddedWalletSessionExpiration((_5 = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.embeddedWallets) === null || _5 === void 0 ? void 0 : _5.sessionKeyDuration));
389
+ const publicKey = yield turnkeyAuthenticatorHandler.initRecovery('email', turnkeyAuthIframeContainerRef.current, iframeElementId, getEmbeddedWalletSessionExpiration((_7 = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.embeddedWallets) === null || _7 === void 0 ? void 0 : _7.sessionKeyDuration));
379
390
  if (!publicKey) {
380
391
  throw new DynamicError(ERROR_SENDING_CODE);
381
392
  }
@@ -170,7 +170,6 @@ const useTurnkey = () => {
170
170
  connector: (turnkeyWallet === null || turnkeyWallet === void 0 ? void 0 : turnkeyWallet.walletConnector) || {},
171
171
  id: embeddedWalletVerifiedCredential.id,
172
172
  isAuthenticated,
173
- isConnected: true,
174
173
  key: embeddedWalletVerifiedCredential.walletName ||
175
174
  (turnkeyWallet === null || turnkeyWallet === void 0 ? void 0 : turnkeyWallet.walletConnector.key) ||
176
175
  '',
@@ -223,7 +222,6 @@ const useTurnkey = () => {
223
222
  connector: walletConnector,
224
223
  id: embeddedWalletVerifiedCredential.id,
225
224
  isAuthenticated: Boolean((_h = embeddedWalletVerifiedCredential === null || embeddedWalletVerifiedCredential === void 0 ? void 0 : embeddedWalletVerifiedCredential.walletProperties) === null || _h === void 0 ? void 0 : _h.isAuthenticatorAttached),
226
- isConnected: true,
227
225
  key: (_j = embeddedWalletVerifiedCredential.walletName) !== null && _j !== void 0 ? _j : walletConnector.key,
228
226
  });
229
227
  setPrimaryWalletId(embeddedWalletVerifiedCredential.id);
@@ -166,7 +166,6 @@ const useTurnkey = () => {
166
166
  connector: (turnkeyWallet === null || turnkeyWallet === void 0 ? void 0 : turnkeyWallet.walletConnector) || {},
167
167
  id: embeddedWalletVerifiedCredential.id,
168
168
  isAuthenticated,
169
- isConnected: true,
170
169
  key: embeddedWalletVerifiedCredential.walletName ||
171
170
  (turnkeyWallet === null || turnkeyWallet === void 0 ? void 0 : turnkeyWallet.walletConnector.key) ||
172
171
  '',
@@ -219,7 +218,6 @@ const useTurnkey = () => {
219
218
  connector: walletConnector,
220
219
  id: embeddedWalletVerifiedCredential.id,
221
220
  isAuthenticated: Boolean((_h = embeddedWalletVerifiedCredential === null || embeddedWalletVerifiedCredential === void 0 ? void 0 : embeddedWalletVerifiedCredential.walletProperties) === null || _h === void 0 ? void 0 : _h.isAuthenticatorAttached),
222
- isConnected: true,
223
221
  key: (_j = embeddedWalletVerifiedCredential.walletName) !== null && _j !== void 0 ? _j : walletConnector.key,
224
222
  });
225
223
  setPrimaryWalletId(embeddedWalletVerifiedCredential.id);
@@ -0,0 +1 @@
1
+ export { useSelectWalletOption } from './useSelectWalletOption';
@@ -0,0 +1,128 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var _tslib = require('../../../../../_virtual/_tslib.cjs');
7
+ var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
8
+ var walletBook = require('@dynamic-labs/wallet-book');
9
+ var utils = require('@dynamic-labs/utils');
10
+ require('react');
11
+ require('../../../context/DynamicContext/DynamicContext.cjs');
12
+ require('@dynamic-labs/sdk-api-core');
13
+ require('../../../shared/logger.cjs');
14
+ require('@dynamic-labs/iconic');
15
+ require('react/jsx-runtime');
16
+ var ViewContext = require('../../../context/ViewContext/ViewContext.cjs');
17
+ require('../../constants/colors.cjs');
18
+ require('../../constants/values.cjs');
19
+ require('../../../shared/utils/classes/storage/localStorage.cjs');
20
+ require('../../../shared/utils/classes/storage/sessionStorage.cjs');
21
+ var isWalletGroup = require('../../functions/walletListBuilder/utils/isWalletGroup/isWalletGroup.cjs');
22
+ require('../../../shared/consts/index.cjs');
23
+ require('../../../events/dynamicEvents.cjs');
24
+ require('../../../context/CaptchaContext/CaptchaContext.cjs');
25
+ require('../../../context/ErrorContext/ErrorContext.cjs');
26
+ require('@dynamic-labs/multi-wallet');
27
+ require('react-international-phone');
28
+ require('../../../config/ApiEndpoint.cjs');
29
+ require('@dynamic-labs/store');
30
+ require('../../../locale/locale.cjs');
31
+ var logVerboseTroubleshootingMessage = require('../../functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.cjs');
32
+ require('../../../context/AccessDeniedContext/AccessDeniedContext.cjs');
33
+ require('../../../context/AccountExistsContext/AccountExistsContext.cjs');
34
+ require('../../../context/UserWalletsContext/UserWalletsContext.cjs');
35
+ require('../../../context/VerificationContext/VerificationContext.cjs');
36
+ require('react-dom');
37
+ require('../../../context/WalletContext/WalletContext.cjs');
38
+ require('../../../context/ThemeContext/ThemeContext.cjs');
39
+ require('../useUserUpdateRequest/useUpdateUser/userFieldsSchema.cjs');
40
+ require('@dynamic-labs/types');
41
+ require('../../../context/LoadingContext/LoadingContext.cjs');
42
+ require('yup');
43
+ require('../../../context/MockContext/MockContext.cjs');
44
+ require('../../../views/CollectUserDataView/useFields.cjs');
45
+ require('../../../context/FieldsStateContext/FieldsStateContext.cjs');
46
+ require('../../../context/UserFieldEditorContext/UserFieldEditorContext.cjs');
47
+ require('@dynamic-labs/rpc-providers');
48
+ var useWalletItemActions = require('../useWalletItemActions/useWalletItemActions.cjs');
49
+ require('react-i18next');
50
+ require('../../../components/Accordion/components/AccordionItem/AccordionItem.cjs');
51
+ require('../../../components/Alert/Alert.cjs');
52
+ require('../../../components/ShadowDOM/ShadowDOM.cjs');
53
+ require('../../../components/IconButton/IconButton.cjs');
54
+ require('../../../components/InlineWidget/InlineWidget.cjs');
55
+ require('../../../components/Input/Input.cjs');
56
+ require('../../../components/IsBrowser/IsBrowser.cjs');
57
+ require('../../../components/MenuList/Dropdown/Dropdown.cjs');
58
+ require('../../../components/Transition/ZoomTransition/ZoomTransition.cjs');
59
+ require('../../../components/Transition/SlideInUpTransition/SlideInUpTransition.cjs');
60
+ require('../../../components/Transition/OpacityTransition/OpacityTransition.cjs');
61
+ require('../../../components/OverlayCard/OverlayCardTarget/OverlayCardTarget.cjs');
62
+ require('../../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.cjs');
63
+ require('../../../components/Popper/Popper/Popper.cjs');
64
+ require('../../../components/Popper/PopperContext/PopperContext.cjs');
65
+ require('react-focus-lock');
66
+ require('qrcode');
67
+ require('formik');
68
+ require('../../../views/WalletList/WalletList.cjs');
69
+ require('../../../context/SocialRedirectContext/SocialRedirectContext.cjs');
70
+ require('../../../widgets/DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.cjs');
71
+ require('@hcaptcha/react-hcaptcha');
72
+ require('../../../context/FooterAnimationContext/index.cjs');
73
+ var WalletGroupContext = require('../../../context/WalletGroupContext/WalletGroupContext.cjs');
74
+ var groupWalletOptions = require('../../functions/walletListBuilder/utils/groupWalletOptions/groupWalletOptions.cjs');
75
+ require('../../../context/MfaSettingsContext/MfaSettingsContext.cjs');
76
+ require('../../../context/IpConfigurationContext/IpConfigurationContext.cjs');
77
+ require('../../../context/PasskeyContext/PasskeyContext.cjs');
78
+ require('../../../widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetHeader.cjs');
79
+ require('../../../widgets/DynamicWidget/context/DynamicWidgetContext.cjs');
80
+ require('../../../views/TransactionConfirmationView/helpers/transactionErrorMessage.cjs');
81
+ require('../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.cjs');
82
+ require('../../../../polyfills.cjs');
83
+ require('../../../context/ErrorBoundary/ErrorBoundaryBase.cjs');
84
+ require('../../../context/ErrorBoundary/ErrorBoundaryContext.cjs');
85
+ require('../../../widgets/DynamicBridgeWidget/context/DynamicBridgeWidgetContext/DynamicBridgeWidgetContext.cjs');
86
+ require('../../../widgets/DynamicWidget/components/DynamicWidgetCard/DynamicWidgetCard.cjs');
87
+ require('../../../context/WidgetRegistry/WidgetRegistryContextProvider.cjs');
88
+ require('../../../context/FundingContext/FundingContext.cjs');
89
+ require('../../../context/SendBalanceContext/SendBalanceContext.cjs');
90
+ require('../../../context/ConnectWithOtpContext/ConnectWithOtpContext.cjs');
91
+ require('../../../context/ConnectWithOtpContext/constants.cjs');
92
+ require('../../../context/ReinitializeContext/ReinitializeContextProvider.cjs');
93
+ var useInternalDynamicContext = require('../../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.cjs');
94
+
95
+ const useSelectWalletOption = () => {
96
+ const { walletConnectorOptions, setShowAuthFlow } = useInternalDynamicContext.useInternalDynamicContext();
97
+ const { walletBook: walletBook$1 } = walletBook.useWalletBookContext();
98
+ const { setView } = ViewContext.useViewContext();
99
+ const { navigateToWalletGroup } = WalletGroupContext.useWalletGroupContext();
100
+ const { handleWalletItemClick } = useWalletItemActions.useWalletItemActions();
101
+ const selectWalletOption = (walletKey) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
102
+ const group = groupWalletOptions.groupWalletOptions(walletBook$1, walletConnectorOptions);
103
+ const walletOption = group.find((wallet) => wallet.key === walletKey);
104
+ logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('[useSelectWalletOption] selectWalletOption', { walletKey, walletOption: walletOption === null || walletOption === void 0 ? void 0 : walletOption.key });
105
+ if (!walletOption) {
106
+ throw new utils.DynamicError('Invalid wallet option key provided.');
107
+ }
108
+ if (isWalletGroup.isWalletGroup(walletOption)) {
109
+ navigateToWalletGroup(walletOption);
110
+ }
111
+ else if (walletConnectorCore.isHardwareWalletConnector(walletOption.walletConnector) &&
112
+ walletOption.walletConnector.canConnectWithHardwareWallet()) {
113
+ setView('select-hardware-wallet', {
114
+ onSelectWallet: handleWalletItemClick,
115
+ wallet: walletOption,
116
+ });
117
+ }
118
+ else {
119
+ handleWalletItemClick(walletOption);
120
+ }
121
+ setShowAuthFlow(true);
122
+ });
123
+ return {
124
+ selectWalletOption,
125
+ };
126
+ };
127
+
128
+ exports.useSelectWalletOption = useSelectWalletOption;
@@ -0,0 +1,3 @@
1
+ export declare const useSelectWalletOption: () => {
2
+ selectWalletOption: (walletKey: string) => Promise<void>;
3
+ };
@@ -0,0 +1,124 @@
1
+ 'use client'
2
+ import { __awaiter } from '../../../../../_virtual/_tslib.js';
3
+ import { isHardwareWalletConnector } from '@dynamic-labs/wallet-connector-core';
4
+ import { useWalletBookContext } from '@dynamic-labs/wallet-book';
5
+ import { DynamicError } from '@dynamic-labs/utils';
6
+ import 'react';
7
+ import '../../../context/DynamicContext/DynamicContext.js';
8
+ import '@dynamic-labs/sdk-api-core';
9
+ import '../../../shared/logger.js';
10
+ import '@dynamic-labs/iconic';
11
+ import 'react/jsx-runtime';
12
+ import { useViewContext } from '../../../context/ViewContext/ViewContext.js';
13
+ import '../../constants/colors.js';
14
+ import '../../constants/values.js';
15
+ import '../../../shared/utils/classes/storage/localStorage.js';
16
+ import '../../../shared/utils/classes/storage/sessionStorage.js';
17
+ import { isWalletGroup } from '../../functions/walletListBuilder/utils/isWalletGroup/isWalletGroup.js';
18
+ import '../../../shared/consts/index.js';
19
+ import '../../../events/dynamicEvents.js';
20
+ import '../../../context/CaptchaContext/CaptchaContext.js';
21
+ import '../../../context/ErrorContext/ErrorContext.js';
22
+ import '@dynamic-labs/multi-wallet';
23
+ import 'react-international-phone';
24
+ import '../../../config/ApiEndpoint.js';
25
+ import '@dynamic-labs/store';
26
+ import '../../../locale/locale.js';
27
+ import { logVerboseTroubleshootingMessage } from '../../functions/logVerboseTroubleshootingMessage/logVerboseTroubleshootingMessage.js';
28
+ import '../../../context/AccessDeniedContext/AccessDeniedContext.js';
29
+ import '../../../context/AccountExistsContext/AccountExistsContext.js';
30
+ import '../../../context/UserWalletsContext/UserWalletsContext.js';
31
+ import '../../../context/VerificationContext/VerificationContext.js';
32
+ import 'react-dom';
33
+ import '../../../context/WalletContext/WalletContext.js';
34
+ import '../../../context/ThemeContext/ThemeContext.js';
35
+ import '../useUserUpdateRequest/useUpdateUser/userFieldsSchema.js';
36
+ import '@dynamic-labs/types';
37
+ import '../../../context/LoadingContext/LoadingContext.js';
38
+ import 'yup';
39
+ import '../../../context/MockContext/MockContext.js';
40
+ import '../../../views/CollectUserDataView/useFields.js';
41
+ import '../../../context/FieldsStateContext/FieldsStateContext.js';
42
+ import '../../../context/UserFieldEditorContext/UserFieldEditorContext.js';
43
+ import '@dynamic-labs/rpc-providers';
44
+ import { useWalletItemActions } from '../useWalletItemActions/useWalletItemActions.js';
45
+ import 'react-i18next';
46
+ import '../../../components/Accordion/components/AccordionItem/AccordionItem.js';
47
+ import '../../../components/Alert/Alert.js';
48
+ import '../../../components/ShadowDOM/ShadowDOM.js';
49
+ import '../../../components/IconButton/IconButton.js';
50
+ import '../../../components/InlineWidget/InlineWidget.js';
51
+ import '../../../components/Input/Input.js';
52
+ import '../../../components/IsBrowser/IsBrowser.js';
53
+ import '../../../components/MenuList/Dropdown/Dropdown.js';
54
+ import '../../../components/Transition/ZoomTransition/ZoomTransition.js';
55
+ import '../../../components/Transition/SlideInUpTransition/SlideInUpTransition.js';
56
+ import '../../../components/Transition/OpacityTransition/OpacityTransition.js';
57
+ import '../../../components/OverlayCard/OverlayCardTarget/OverlayCardTarget.js';
58
+ import '../../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.js';
59
+ import '../../../components/Popper/Popper/Popper.js';
60
+ import '../../../components/Popper/PopperContext/PopperContext.js';
61
+ import 'react-focus-lock';
62
+ import 'qrcode';
63
+ import 'formik';
64
+ import '../../../views/WalletList/WalletList.js';
65
+ import '../../../context/SocialRedirectContext/SocialRedirectContext.js';
66
+ import '../../../widgets/DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.js';
67
+ import '@hcaptcha/react-hcaptcha';
68
+ import '../../../context/FooterAnimationContext/index.js';
69
+ import { useWalletGroupContext } from '../../../context/WalletGroupContext/WalletGroupContext.js';
70
+ import { groupWalletOptions } from '../../functions/walletListBuilder/utils/groupWalletOptions/groupWalletOptions.js';
71
+ import '../../../context/MfaSettingsContext/MfaSettingsContext.js';
72
+ import '../../../context/IpConfigurationContext/IpConfigurationContext.js';
73
+ import '../../../context/PasskeyContext/PasskeyContext.js';
74
+ import '../../../widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetHeader.js';
75
+ import '../../../widgets/DynamicWidget/context/DynamicWidgetContext.js';
76
+ import '../../../views/TransactionConfirmationView/helpers/transactionErrorMessage.js';
77
+ import '../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.js';
78
+ import '../../../../polyfills.js';
79
+ import '../../../context/ErrorBoundary/ErrorBoundaryBase.js';
80
+ import '../../../context/ErrorBoundary/ErrorBoundaryContext.js';
81
+ import '../../../widgets/DynamicBridgeWidget/context/DynamicBridgeWidgetContext/DynamicBridgeWidgetContext.js';
82
+ import '../../../widgets/DynamicWidget/components/DynamicWidgetCard/DynamicWidgetCard.js';
83
+ import '../../../context/WidgetRegistry/WidgetRegistryContextProvider.js';
84
+ import '../../../context/FundingContext/FundingContext.js';
85
+ import '../../../context/SendBalanceContext/SendBalanceContext.js';
86
+ import '../../../context/ConnectWithOtpContext/ConnectWithOtpContext.js';
87
+ import '../../../context/ConnectWithOtpContext/constants.js';
88
+ import '../../../context/ReinitializeContext/ReinitializeContextProvider.js';
89
+ import { useInternalDynamicContext } from '../../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.js';
90
+
91
+ const useSelectWalletOption = () => {
92
+ const { walletConnectorOptions, setShowAuthFlow } = useInternalDynamicContext();
93
+ const { walletBook } = useWalletBookContext();
94
+ const { setView } = useViewContext();
95
+ const { navigateToWalletGroup } = useWalletGroupContext();
96
+ const { handleWalletItemClick } = useWalletItemActions();
97
+ const selectWalletOption = (walletKey) => __awaiter(void 0, void 0, void 0, function* () {
98
+ const group = groupWalletOptions(walletBook, walletConnectorOptions);
99
+ const walletOption = group.find((wallet) => wallet.key === walletKey);
100
+ logVerboseTroubleshootingMessage('[useSelectWalletOption] selectWalletOption', { walletKey, walletOption: walletOption === null || walletOption === void 0 ? void 0 : walletOption.key });
101
+ if (!walletOption) {
102
+ throw new DynamicError('Invalid wallet option key provided.');
103
+ }
104
+ if (isWalletGroup(walletOption)) {
105
+ navigateToWalletGroup(walletOption);
106
+ }
107
+ else if (isHardwareWalletConnector(walletOption.walletConnector) &&
108
+ walletOption.walletConnector.canConnectWithHardwareWallet()) {
109
+ setView('select-hardware-wallet', {
110
+ onSelectWallet: handleWalletItemClick,
111
+ wallet: walletOption,
112
+ });
113
+ }
114
+ else {
115
+ handleWalletItemClick(walletOption);
116
+ }
117
+ setShowAuthFlow(true);
118
+ });
119
+ return {
120
+ selectWalletOption,
121
+ };
122
+ };
123
+
124
+ export { useSelectWalletOption };
@@ -24,7 +24,6 @@ require('react-international-phone');
24
24
  require('../../../config/ApiEndpoint.cjs');
25
25
  require('@dynamic-labs/store');
26
26
  require('../../../locale/locale.cjs');
27
- var getWalletIdentifier = require('../../functions/getWalletIdentifier/getWalletIdentifier.cjs');
28
27
  require('../../../events/dynamicEvents.cjs');
29
28
  require('../../../context/DynamicContext/DynamicContext.cjs');
30
29
  require('../../../context/CaptchaContext/CaptchaContext.cjs');
@@ -106,7 +105,7 @@ const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOption
106
105
  });
107
106
  }, [user, primaryWalletId, walletConnectorOptions]);
108
107
  logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('linkedWallets', linkedWallets);
109
- const walletsBasedOnAuthMode = React.useMemo(() => {
108
+ const wallets = React.useMemo(() => {
110
109
  // Before signing the first message we are using connected wallets list
111
110
  // This is because we want the first connected wallet to have events applied by useWalletEventListeners
112
111
  // In connect-and-sign mode, events are only applied after the message is signed.
@@ -125,7 +124,7 @@ const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOption
125
124
  }
126
125
  return connectedWallets !== null && connectedWallets !== void 0 ? connectedWallets : [];
127
126
  }, [authMode, connectedWallets, linkedWallets, user]);
128
- logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('walletsBasedOnAuthMode', walletsBasedOnAuthMode);
127
+ logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('wallets', wallets);
129
128
  /**
130
129
  * This useEffect is temporary.
131
130
  * While the wallet connectors don't use the event emitter, we need to manually
@@ -133,15 +132,10 @@ const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOption
133
132
  * When the wallet connectors are migrated to the new event emitter, there will be no
134
133
  * need to initialize or teardown event listeners, then we can remove this useEffect.
135
134
  */
136
- React.useEffect(() => walletsBasedOnAuthMode.forEach((wallet) => {
135
+ React.useEffect(() => wallets.forEach((wallet) => {
137
136
  wallet.connector.initEventListener();
138
- }), [walletsBasedOnAuthMode]);
139
- const { connectedWalletsMap, didConnectedStateLoad } = useWalletsConnectionState.useWalletsConnectionState(walletsBasedOnAuthMode, walletBook, primaryWalletId, authMode);
140
- const wallets = React.useMemo(() => walletsBasedOnAuthMode.map((wallet) => {
141
- wallet.isConnected = Boolean(connectedWalletsMap[getWalletIdentifier.getWalletIdentifier(wallet)]);
142
- return wallet;
143
- }), [connectedWalletsMap, walletsBasedOnAuthMode]);
144
- logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('wallets', wallets);
137
+ }), [wallets]);
138
+ const { didConnectedStateLoad } = useWalletsConnectionState.useWalletsConnectionState(wallets, walletBook, primaryWalletId, authMode);
145
139
  logVerboseTroubleshootingMessage.logVerboseTroubleshootingMessage('didConnectedStateLoad', didConnectedStateLoad);
146
140
  const { setUserWallets } = UserWalletsContext.useInternalUserWallets();
147
141
  // Keep userWallets in sync whenever linkedWallets changes
@@ -205,8 +199,9 @@ const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOption
205
199
  emailConnector.setEmail(email);
206
200
  }
207
201
  }
208
- if (walletConnectorCore.isSocialWalletConnector(newPrimaryWallet.connector) &&
209
- !newPrimaryWallet.isConnected) {
202
+ const shouldReconnectSocialWallet = walletConnectorCore.isSocialWalletConnector(newPrimaryWallet.connector) &&
203
+ !(yield newPrimaryWallet.connector.getConnectedAccounts()).length;
204
+ if (shouldReconnectSocialWallet) {
210
205
  reconnectSocialWallet.reconnectSocialWallet(user, newPrimaryWallet);
211
206
  return;
212
207
  }
@@ -20,7 +20,6 @@ import 'react-international-phone';
20
20
  import '../../../config/ApiEndpoint.js';
21
21
  import '@dynamic-labs/store';
22
22
  import '../../../locale/locale.js';
23
- import { getWalletIdentifier } from '../../functions/getWalletIdentifier/getWalletIdentifier.js';
24
23
  import '../../../events/dynamicEvents.js';
25
24
  import '../../../context/DynamicContext/DynamicContext.js';
26
25
  import '../../../context/CaptchaContext/CaptchaContext.js';
@@ -102,7 +101,7 @@ const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOption
102
101
  });
103
102
  }, [user, primaryWalletId, walletConnectorOptions]);
104
103
  logVerboseTroubleshootingMessage('linkedWallets', linkedWallets);
105
- const walletsBasedOnAuthMode = useMemo(() => {
104
+ const wallets = useMemo(() => {
106
105
  // Before signing the first message we are using connected wallets list
107
106
  // This is because we want the first connected wallet to have events applied by useWalletEventListeners
108
107
  // In connect-and-sign mode, events are only applied after the message is signed.
@@ -121,7 +120,7 @@ const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOption
121
120
  }
122
121
  return connectedWallets !== null && connectedWallets !== void 0 ? connectedWallets : [];
123
122
  }, [authMode, connectedWallets, linkedWallets, user]);
124
- logVerboseTroubleshootingMessage('walletsBasedOnAuthMode', walletsBasedOnAuthMode);
123
+ logVerboseTroubleshootingMessage('wallets', wallets);
125
124
  /**
126
125
  * This useEffect is temporary.
127
126
  * While the wallet connectors don't use the event emitter, we need to manually
@@ -129,15 +128,10 @@ const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOption
129
128
  * When the wallet connectors are migrated to the new event emitter, there will be no
130
129
  * need to initialize or teardown event listeners, then we can remove this useEffect.
131
130
  */
132
- useEffect(() => walletsBasedOnAuthMode.forEach((wallet) => {
131
+ useEffect(() => wallets.forEach((wallet) => {
133
132
  wallet.connector.initEventListener();
134
- }), [walletsBasedOnAuthMode]);
135
- const { connectedWalletsMap, didConnectedStateLoad } = useWalletsConnectionState(walletsBasedOnAuthMode, walletBook, primaryWalletId, authMode);
136
- const wallets = useMemo(() => walletsBasedOnAuthMode.map((wallet) => {
137
- wallet.isConnected = Boolean(connectedWalletsMap[getWalletIdentifier(wallet)]);
138
- return wallet;
139
- }), [connectedWalletsMap, walletsBasedOnAuthMode]);
140
- logVerboseTroubleshootingMessage('wallets', wallets);
133
+ }), [wallets]);
134
+ const { didConnectedStateLoad } = useWalletsConnectionState(wallets, walletBook, primaryWalletId, authMode);
141
135
  logVerboseTroubleshootingMessage('didConnectedStateLoad', didConnectedStateLoad);
142
136
  const { setUserWallets } = useInternalUserWallets();
143
137
  // Keep userWallets in sync whenever linkedWallets changes
@@ -201,8 +195,9 @@ const useWalletConnectors = ({ authMode, connectedWallets, walletConnectorOption
201
195
  emailConnector.setEmail(email);
202
196
  }
203
197
  }
204
- if (isSocialWalletConnector(newPrimaryWallet.connector) &&
205
- !newPrimaryWallet.isConnected) {
198
+ const shouldReconnectSocialWallet = isSocialWalletConnector(newPrimaryWallet.connector) &&
199
+ !(yield newPrimaryWallet.connector.getConnectedAccounts()).length;
200
+ if (shouldReconnectSocialWallet) {
206
201
  reconnectSocialWallet(user, newPrimaryWallet);
207
202
  return;
208
203
  }
@@ -130,7 +130,6 @@ const createLinkedWalletsFromWalletOptions = ({ user, walletConnectorOptions, pr
130
130
  connector: wallet.walletConnector,
131
131
  id: account.id,
132
132
  isAuthenticated: true,
133
- isConnected: false,
134
133
  key: (_a = account.walletName) !== null && _a !== void 0 ? _a : wallet.walletConnector.key,
135
134
  });
136
135
  }
@@ -126,7 +126,6 @@ const createLinkedWalletsFromWalletOptions = ({ user, walletConnectorOptions, pr
126
126
  connector: wallet.walletConnector,
127
127
  id: account.id,
128
128
  isAuthenticated: true,
129
- isConnected: false,
130
129
  key: (_a = account.walletName) !== null && _a !== void 0 ? _a : wallet.walletConnector.key,
131
130
  });
132
131
  }
@@ -47,6 +47,7 @@ require('../../../context/FieldsStateContext/FieldsStateContext.cjs');
47
47
  require('../../../context/UserFieldEditorContext/UserFieldEditorContext.cjs');
48
48
  require('@dynamic-labs/rpc-providers');
49
49
  require('../../../context/MfaSettingsContext/MfaSettingsContext.cjs');
50
+ require('../../../context/WalletGroupContext/WalletGroupContext.cjs');
50
51
  require('react-dom');
51
52
  require('../../../components/ShadowDOM/ShadowDOM.cjs');
52
53
  require('../../../components/IconButton/IconButton.cjs');
@@ -69,7 +70,6 @@ require('../../../context/SocialRedirectContext/SocialRedirectContext.cjs');
69
70
  require('../../../widgets/DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.cjs');
70
71
  require('@hcaptcha/react-hcaptcha');
71
72
  require('../../../context/FooterAnimationContext/index.cjs');
72
- require('../../../context/WalletGroupContext/WalletGroupContext.cjs');
73
73
  require('../../../context/IpConfigurationContext/IpConfigurationContext.cjs');
74
74
  require('../../../context/PasskeyContext/PasskeyContext.cjs');
75
75
  var CreatePasswordModal = require('../../../modals/CreatePasswordModal/CreatePasswordModal.cjs');
@@ -43,6 +43,7 @@ import '../../../context/FieldsStateContext/FieldsStateContext.js';
43
43
  import '../../../context/UserFieldEditorContext/UserFieldEditorContext.js';
44
44
  import '@dynamic-labs/rpc-providers';
45
45
  import '../../../context/MfaSettingsContext/MfaSettingsContext.js';
46
+ import '../../../context/WalletGroupContext/WalletGroupContext.js';
46
47
  import 'react-dom';
47
48
  import '../../../components/ShadowDOM/ShadowDOM.js';
48
49
  import '../../../components/IconButton/IconButton.js';
@@ -65,7 +66,6 @@ import '../../../context/SocialRedirectContext/SocialRedirectContext.js';
65
66
  import '../../../widgets/DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.js';
66
67
  import '@hcaptcha/react-hcaptcha';
67
68
  import '../../../context/FooterAnimationContext/index.js';
68
- import '../../../context/WalletGroupContext/WalletGroupContext.js';
69
69
  import '../../../context/IpConfigurationContext/IpConfigurationContext.js';
70
70
  import '../../../context/PasskeyContext/PasskeyContext.js';
71
71
  import { CreatePasswordModal } from '../../../modals/CreatePasswordModal/CreatePasswordModal.js';
@@ -75,7 +75,6 @@ require('react-focus-lock');
75
75
  var IconWithSpinner = require('../../components/IconWithSpinner/IconWithSpinner.cjs');
76
76
  var Icon = require('../../components/Icon/Icon.cjs');
77
77
  var LoadingContext = require('../../context/LoadingContext/LoadingContext.cjs');
78
- var IconWithStatus = require('../../components/IconWithStatus/IconWithStatus.cjs');
79
78
  require('../../widgets/DynamicWidget/context/DynamicWidgetContext.cjs');
80
79
  require('../../components/IconButton/IconButton.cjs');
81
80
  require('../../components/MenuList/Dropdown/Dropdown.cjs');
@@ -83,6 +82,7 @@ var ErrorContainer = require('../../components/ErrorContainer/ErrorContainer.cjs
83
82
  require('formik');
84
83
  require('../TransactionConfirmationView/helpers/transactionErrorMessage.cjs');
85
84
  require('../../components/Input/Input.cjs');
85
+ var IconWithStatus = require('../../components/IconWithStatus/IconWithStatus.cjs');
86
86
  require('../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.cjs');
87
87
  require('../../context/PasskeyContext/PasskeyContext.cjs');
88
88
  require('../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.cjs');
@@ -202,7 +202,6 @@ const EmailVerification = ({ isEmailRecoveryFlow = false, showRetryButton: _show
202
202
  connector: walletOption.walletConnector,
203
203
  id: embeddedWalletVerifiedCredential.id,
204
204
  isAuthenticated: false,
205
- isConnected: true,
206
205
  key: (_k = embeddedWalletVerifiedCredential.walletName) !== null && _k !== void 0 ? _k : '',
207
206
  });
208
207
  setPrimaryWalletId(embeddedWalletVerifiedCredential.id);
@@ -71,7 +71,6 @@ import 'react-focus-lock';
71
71
  import { IconWithSpinner } from '../../components/IconWithSpinner/IconWithSpinner.js';
72
72
  import { Icon } from '../../components/Icon/Icon.js';
73
73
  import { useLoadingContext } from '../../context/LoadingContext/LoadingContext.js';
74
- import { IconWithStatus } from '../../components/IconWithStatus/IconWithStatus.js';
75
74
  import '../../widgets/DynamicWidget/context/DynamicWidgetContext.js';
76
75
  import '../../components/IconButton/IconButton.js';
77
76
  import '../../components/MenuList/Dropdown/Dropdown.js';
@@ -79,6 +78,7 @@ import { ErrorContainer } from '../../components/ErrorContainer/ErrorContainer.j
79
78
  import 'formik';
80
79
  import '../TransactionConfirmationView/helpers/transactionErrorMessage.js';
81
80
  import '../../components/Input/Input.js';
81
+ import { IconWithStatus } from '../../components/IconWithStatus/IconWithStatus.js';
82
82
  import '../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.js';
83
83
  import '../../context/PasskeyContext/PasskeyContext.js';
84
84
  import '../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.js';
@@ -198,7 +198,6 @@ const EmailVerification = ({ isEmailRecoveryFlow = false, showRetryButton: _show
198
198
  connector: walletOption.walletConnector,
199
199
  id: embeddedWalletVerifiedCredential.id,
200
200
  isAuthenticated: false,
201
- isConnected: true,
202
201
  key: (_k = embeddedWalletVerifiedCredential.walletName) !== null && _k !== void 0 ? _k : '',
203
202
  });
204
203
  setPrimaryWalletId(embeddedWalletVerifiedCredential.id);
@@ -68,7 +68,6 @@ require('../../../../widgets/DynamicWidget/components/DynamicWidgetHeader/Dynami
68
68
  require('react-focus-lock');
69
69
  var IconWithSpinner = require('../../../../components/IconWithSpinner/IconWithSpinner.cjs');
70
70
  var Icon = require('../../../../components/Icon/Icon.cjs');
71
- var IconWithStatus = require('../../../../components/IconWithStatus/IconWithStatus.cjs');
72
71
  require('../../../../widgets/DynamicWidget/context/DynamicWidgetContext.cjs');
73
72
  var IconButton = require('../../../../components/IconButton/IconButton.cjs');
74
73
  require('../../../../components/MenuList/Dropdown/Dropdown.cjs');
@@ -76,6 +75,7 @@ require('formik');
76
75
  require('../../../TransactionConfirmationView/helpers/transactionErrorMessage.cjs');
77
76
  var ModalHeader = require('../../../../components/ModalHeader/ModalHeader.cjs');
78
77
  var Input = require('../../../../components/Input/Input.cjs');
78
+ var IconWithStatus = require('../../../../components/IconWithStatus/IconWithStatus.cjs');
79
79
  require('../../../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.cjs');
80
80
  require('../../../../context/PasskeyContext/PasskeyContext.cjs');
81
81
  require('../../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.cjs');