@turnkey/react-wallet-kit 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/auth/index.d.ts.map +1 -1
- package/dist/components/auth/index.js +7 -57
- package/dist/components/auth/index.js.map +1 -1
- package/dist/components/auth/index.mjs +16 -132
- package/dist/components/auth/index.mjs.map +1 -1
- package/dist/components/auth/wallet/DesktopWalletConnectScreen.d.ts +10 -0
- package/dist/components/auth/wallet/DesktopWalletConnectScreen.d.ts.map +1 -0
- package/dist/components/auth/wallet/DesktopWalletConnectScreen.js +204 -0
- package/dist/components/auth/wallet/DesktopWalletConnectScreen.js.map +1 -0
- package/dist/components/auth/wallet/DesktopWalletConnectScreen.mjs +253 -0
- package/dist/components/auth/wallet/DesktopWalletConnectScreen.mjs.map +1 -0
- package/dist/components/auth/wallet/DisconnectWalletScreen.d.ts +8 -0
- package/dist/components/auth/wallet/DisconnectWalletScreen.d.ts.map +1 -0
- package/dist/components/auth/wallet/DisconnectWalletScreen.js +58 -0
- package/dist/components/auth/wallet/DisconnectWalletScreen.js.map +1 -0
- package/dist/components/auth/wallet/DisconnectWalletScreen.mjs +80 -0
- package/dist/components/auth/wallet/DisconnectWalletScreen.mjs.map +1 -0
- package/dist/components/auth/wallet/ExternalWalletChainSelector.d.ts +10 -0
- package/dist/components/auth/wallet/ExternalWalletChainSelector.d.ts.map +1 -0
- package/dist/components/auth/wallet/ExternalWalletChainSelector.js +115 -0
- package/dist/components/auth/wallet/ExternalWalletChainSelector.js.map +1 -0
- package/dist/components/auth/wallet/ExternalWalletChainSelector.mjs +149 -0
- package/dist/components/auth/wallet/ExternalWalletChainSelector.mjs.map +1 -0
- package/dist/components/auth/wallet/ExternalWalletSelector.d.ts +18 -0
- package/dist/components/auth/wallet/ExternalWalletSelector.d.ts.map +1 -0
- package/dist/components/auth/wallet/ExternalWalletSelector.js +233 -0
- package/dist/components/auth/wallet/ExternalWalletSelector.js.map +1 -0
- package/dist/components/auth/wallet/ExternalWalletSelector.mjs +323 -0
- package/dist/components/auth/wallet/ExternalWalletSelector.mjs.map +1 -0
- package/dist/components/auth/wallet/MobileWalletConnectScreen.d.ts +11 -0
- package/dist/components/auth/wallet/MobileWalletConnectScreen.d.ts.map +1 -0
- package/dist/components/auth/wallet/MobileWalletConnectScreen.js +200 -0
- package/dist/components/auth/wallet/MobileWalletConnectScreen.js.map +1 -0
- package/dist/components/auth/wallet/MobileWalletConnectScreen.mjs +251 -0
- package/dist/components/auth/wallet/MobileWalletConnectScreen.mjs.map +1 -0
- package/dist/components/auth/wallet/QRCodeDisplay.d.ts +8 -0
- package/dist/components/auth/wallet/QRCodeDisplay.d.ts.map +1 -0
- package/dist/components/auth/wallet/QRCodeDisplay.js +37 -0
- package/dist/components/auth/wallet/QRCodeDisplay.js.map +1 -0
- package/dist/components/auth/wallet/QRCodeDisplay.mjs +33 -0
- package/dist/components/auth/wallet/QRCodeDisplay.mjs.map +1 -0
- package/dist/components/auth/wallet/ShowAllWalletsScreen.d.ts +8 -0
- package/dist/components/auth/wallet/ShowAllWalletsScreen.d.ts.map +1 -0
- package/dist/components/auth/wallet/ShowAllWalletsScreen.js +253 -0
- package/dist/components/auth/wallet/ShowAllWalletsScreen.js.map +1 -0
- package/dist/components/auth/wallet/ShowAllWalletsScreen.mjs +299 -0
- package/dist/components/auth/wallet/ShowAllWalletsScreen.mjs.map +1 -0
- package/dist/components/auth/wallet/WalletAuthButton.d.ts +6 -0
- package/dist/components/auth/wallet/WalletAuthButton.d.ts.map +1 -0
- package/dist/components/auth/wallet/WalletAuthButton.js +33 -0
- package/dist/components/auth/wallet/WalletAuthButton.js.map +1 -0
- package/dist/components/auth/wallet/WalletAuthButton.mjs +47 -0
- package/dist/components/auth/wallet/WalletAuthButton.mjs.map +1 -0
- package/dist/components/auth/wallet/WalletButton.d.ts +16 -0
- package/dist/components/auth/wallet/WalletButton.d.ts.map +1 -0
- package/dist/components/auth/wallet/WalletButton.js +79 -0
- package/dist/components/auth/wallet/WalletButton.js.map +1 -0
- package/dist/components/auth/wallet/WalletButton.mjs +84 -0
- package/dist/components/auth/wallet/WalletButton.mjs.map +1 -0
- package/dist/components/auth/wallet/WalletButtonSkeleton.d.ts +2 -0
- package/dist/components/auth/wallet/WalletButtonSkeleton.d.ts.map +1 -0
- package/dist/components/auth/wallet/WalletButtonSkeleton.js +22 -0
- package/dist/components/auth/wallet/WalletButtonSkeleton.js.map +1 -0
- package/dist/components/auth/wallet/WalletButtonSkeleton.mjs +20 -0
- package/dist/components/auth/wallet/WalletButtonSkeleton.mjs.map +1 -0
- package/dist/components/auth/wallet/WalletConnectAppChainSelector.d.ts +12 -0
- package/dist/components/auth/wallet/WalletConnectAppChainSelector.d.ts.map +1 -0
- package/dist/components/auth/wallet/WalletConnectAppChainSelector.js +79 -0
- package/dist/components/auth/wallet/WalletConnectAppChainSelector.js.map +1 -0
- package/dist/components/auth/wallet/WalletConnectAppChainSelector.mjs +102 -0
- package/dist/components/auth/wallet/WalletConnectAppChainSelector.mjs.map +1 -0
- package/dist/components/auth/wallet/WalletConnectFlow.d.ts +21 -0
- package/dist/components/auth/wallet/WalletConnectFlow.d.ts.map +1 -0
- package/dist/components/auth/wallet/WalletConnectFlow.js +163 -0
- package/dist/components/auth/wallet/WalletConnectFlow.js.map +1 -0
- package/dist/components/auth/wallet/WalletConnectFlow.mjs +310 -0
- package/dist/components/auth/wallet/WalletConnectFlow.mjs.map +1 -0
- package/dist/components/auth/wallet/constants.d.ts +6 -0
- package/dist/components/auth/wallet/constants.d.ts.map +1 -0
- package/dist/components/auth/wallet/constants.js +14 -0
- package/dist/components/auth/wallet/constants.js.map +1 -0
- package/dist/components/auth/wallet/constants.mjs +8 -0
- package/dist/components/auth/wallet/constants.mjs.map +1 -0
- package/dist/components/auth/wallet/utils.d.ts +4 -0
- package/dist/components/auth/wallet/utils.d.ts.map +1 -0
- package/dist/components/auth/wallet/utils.js +9 -0
- package/dist/components/auth/wallet/utils.js.map +1 -0
- package/dist/components/auth/wallet/utils.mjs +7 -0
- package/dist/components/auth/wallet/utils.mjs.map +1 -0
- package/dist/components/design/Buttons.d.ts +1 -0
- package/dist/components/design/Buttons.d.ts.map +1 -1
- package/dist/components/design/Buttons.js +2 -0
- package/dist/components/design/Buttons.js.map +1 -1
- package/dist/components/design/Buttons.mjs +2 -0
- package/dist/components/design/Buttons.mjs.map +1 -1
- package/dist/components/design/ConnectedIndicator.d.ts +6 -0
- package/dist/components/design/ConnectedIndicator.d.ts.map +1 -0
- package/dist/components/design/ConnectedIndicator.js +20 -0
- package/dist/components/design/ConnectedIndicator.js.map +1 -0
- package/dist/components/design/ConnectedIndicator.mjs +17 -0
- package/dist/components/design/ConnectedIndicator.mjs.map +1 -0
- package/dist/components/design/Inputs.d.ts +7 -0
- package/dist/components/design/Inputs.d.ts.map +1 -1
- package/dist/components/design/Inputs.js +37 -0
- package/dist/components/design/Inputs.js.map +1 -1
- package/dist/components/design/Inputs.mjs +39 -2
- package/dist/components/design/Inputs.mjs.map +1 -1
- package/dist/components/design/Svg.d.ts +1 -0
- package/dist/components/design/Svg.d.ts.map +1 -1
- package/dist/components/user/ConnectWallet.d.ts +1 -1
- package/dist/components/user/ConnectWallet.d.ts.map +1 -1
- package/dist/components/user/ConnectWallet.js +6 -100
- package/dist/components/user/ConnectWallet.js.map +1 -1
- package/dist/components/user/ConnectWallet.mjs +5 -183
- package/dist/components/user/ConnectWallet.mjs.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/providers/TurnkeyProvider.d.ts.map +1 -1
- package/dist/providers/TurnkeyProvider.js +2 -1
- package/dist/providers/TurnkeyProvider.js.map +1 -1
- package/dist/providers/TurnkeyProvider.mjs +4 -3
- package/dist/providers/TurnkeyProvider.mjs.map +1 -1
- package/dist/providers/WalletConnectProvider.d.ts +23 -0
- package/dist/providers/WalletConnectProvider.d.ts.map +1 -0
- package/dist/providers/WalletConnectProvider.js +72 -0
- package/dist/providers/WalletConnectProvider.js.map +1 -0
- package/dist/providers/WalletConnectProvider.mjs +93 -0
- package/dist/providers/WalletConnectProvider.mjs.map +1 -0
- package/dist/providers/client/Provider.d.ts.map +1 -1
- package/dist/providers/client/Provider.js +5 -2
- package/dist/providers/client/Provider.js.map +1 -1
- package/dist/providers/client/Provider.mjs +5 -2
- package/dist/providers/client/Provider.mjs.map +1 -1
- package/dist/providers/modal/Provider.d.ts +5 -1
- package/dist/providers/modal/Provider.d.ts.map +1 -1
- package/dist/providers/modal/Provider.js.map +1 -1
- package/dist/providers/modal/Provider.mjs.map +1 -1
- package/dist/providers/modal/Root.d.ts.map +1 -1
- package/dist/providers/modal/Root.js +2 -0
- package/dist/providers/modal/Root.js.map +1 -1
- package/dist/providers/modal/Root.mjs +2 -0
- package/dist/providers/modal/Root.mjs.map +1 -1
- package/dist/providers/theme/Overrides.d.ts +1 -0
- package/dist/providers/theme/Overrides.d.ts.map +1 -1
- package/dist/providers/theme/Overrides.js +3 -1
- package/dist/providers/theme/Overrides.js.map +1 -1
- package/dist/providers/theme/Overrides.mjs +3 -1
- package/dist/providers/theme/Overrides.mjs.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/types/base.d.ts +8 -0
- package/dist/types/base.d.ts.map +1 -1
- package/dist/types/base.js +7 -0
- package/dist/types/base.js.map +1 -1
- package/dist/types/base.mjs +8 -1
- package/dist/types/base.mjs.map +1 -1
- package/dist/utils/utils.d.ts +2 -1
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +5 -0
- package/dist/utils/utils.js.map +1 -1
- package/dist/utils/utils.mjs +7 -1
- package/dist/utils/utils.mjs.map +1 -1
- package/package.json +5 -5
- package/dist/components/auth/Wallet.d.ts +0 -34
- package/dist/components/auth/Wallet.d.ts.map +0 -1
- package/dist/components/auth/Wallet.js +0 -514
- package/dist/components/auth/Wallet.js.map +0 -1
- package/dist/components/auth/Wallet.mjs +0 -615
- package/dist/components/auth/Wallet.mjs.map +0 -1
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { slicedToArray as _slicedToArray, asyncToGenerator as _asyncToGenerator, regenerator as _regenerator } from '../../../_virtual/_rollupPluginBabelHelpers.mjs';
|
|
2
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { ActionButton } from '../../design/Buttons.mjs';
|
|
4
|
+
import { useState } from 'react';
|
|
5
|
+
import clsx from 'clsx';
|
|
6
|
+
import { useModal } from '../../../providers/modal/Hook.mjs';
|
|
7
|
+
|
|
8
|
+
function DisconnectWalletScreen(props) {
|
|
9
|
+
var _provider$info$icon;
|
|
10
|
+
var provider = props.provider,
|
|
11
|
+
onDisconnect = props.onDisconnect;
|
|
12
|
+
var _useModal = useModal(),
|
|
13
|
+
isMobile = _useModal.isMobile;
|
|
14
|
+
var _useState = useState(false),
|
|
15
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
16
|
+
isLoading = _useState2[0],
|
|
17
|
+
setIsLoading = _useState2[1];
|
|
18
|
+
var _useState3 = useState(false),
|
|
19
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
20
|
+
hasError = _useState4[0],
|
|
21
|
+
setHasError = _useState4[1];
|
|
22
|
+
var handleDisconnect = /*#__PURE__*/function () {
|
|
23
|
+
var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
24
|
+
return _regenerator().w(function (_context) {
|
|
25
|
+
while (1) switch (_context.p = _context.n) {
|
|
26
|
+
case 0:
|
|
27
|
+
setIsLoading(true);
|
|
28
|
+
setHasError(false);
|
|
29
|
+
_context.p = 1;
|
|
30
|
+
_context.n = 2;
|
|
31
|
+
return onDisconnect(provider);
|
|
32
|
+
case 2:
|
|
33
|
+
_context.n = 4;
|
|
34
|
+
break;
|
|
35
|
+
case 3:
|
|
36
|
+
_context.p = 3;
|
|
37
|
+
_context.v;
|
|
38
|
+
setHasError(true);
|
|
39
|
+
case 4:
|
|
40
|
+
_context.p = 4;
|
|
41
|
+
setIsLoading(false);
|
|
42
|
+
return _context.f(4);
|
|
43
|
+
case 5:
|
|
44
|
+
return _context.a(2);
|
|
45
|
+
}
|
|
46
|
+
}, _callee, null, [[1, 3, 4, 5]]);
|
|
47
|
+
}));
|
|
48
|
+
return function handleDisconnect() {
|
|
49
|
+
return _ref.apply(this, arguments);
|
|
50
|
+
};
|
|
51
|
+
}();
|
|
52
|
+
return jsxs("div", {
|
|
53
|
+
className: clsx("mt-8", isMobile ? "w-full" : "w-96"),
|
|
54
|
+
children: [jsxs("div", {
|
|
55
|
+
className: "mt-6 mb-5 flex flex-col items-center gap-3",
|
|
56
|
+
children: [jsx("img", {
|
|
57
|
+
src: (_provider$info$icon = provider.info.icon) !== null && _provider$info$icon !== void 0 ? _provider$info$icon : "",
|
|
58
|
+
className: "size-14 rounded-full"
|
|
59
|
+
}), jsx("div", {
|
|
60
|
+
className: clsx("text-2xl font-bold text-center", hasError && "text-danger-light dark:text-danger-dark"),
|
|
61
|
+
children: hasError ? "You can't disconnect this wallet!" : "Disconnect ".concat(provider.info.name)
|
|
62
|
+
}), jsx("div", {
|
|
63
|
+
className: "text-icon-text-light dark:text-icon-text-dark text-center !p-0",
|
|
64
|
+
children: hasError ? "Try disconnecting directly from the ".concat(provider.info.name, " app") : "You can always connect this wallet again later."
|
|
65
|
+
})]
|
|
66
|
+
}), jsx("div", {
|
|
67
|
+
className: "flex my-2 mt-0",
|
|
68
|
+
children: jsx(ActionButton, {
|
|
69
|
+
onClick: handleDisconnect,
|
|
70
|
+
loading: isLoading,
|
|
71
|
+
className: clsx("w-full max-w-md bg-danger-light dark:bg-danger-dark text-primary-text-light dark:text-primary-text-dark", hasError && "animate-shake opacity-50"),
|
|
72
|
+
spinnerClassName: "text-primary-danger-text-light dark:text-primary-danger-text-dark",
|
|
73
|
+
children: "Disconnect Wallet"
|
|
74
|
+
})
|
|
75
|
+
})]
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export { DisconnectWalletScreen };
|
|
80
|
+
//# sourceMappingURL=DisconnectWalletScreen.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DisconnectWalletScreen.mjs","sources":["../../../../src/components/auth/wallet/DisconnectWalletScreen.tsx"],"sourcesContent":[null],"names":["DisconnectWalletScreen","props","_provider$info$icon","provider","onDisconnect","_useModal","useModal","isMobile","_useState","useState","_useState2","_slicedToArray","isLoading","setIsLoading","_useState3","_useState4","hasError","setHasError","handleDisconnect","_ref","_asyncToGenerator","_regenerator","m","_callee","w","_context","p","n","v","f","a","apply","arguments","_jsxs","className","clsx","children","_jsx","src","info","icon","concat","name","ActionButton","onClick","loading","spinnerClassName"],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { WalletProvider } from "@turnkey/core";
|
|
2
|
+
interface ExternalWalletChainSelectorProps {
|
|
3
|
+
providers: WalletProvider[];
|
|
4
|
+
onSelect: (provider: WalletProvider) => Promise<void>;
|
|
5
|
+
/** When provided, connected providers show disconnect UI and this handler is called on click. */
|
|
6
|
+
onDisconnect?: ((provider: WalletProvider) => Promise<void>) | undefined;
|
|
7
|
+
}
|
|
8
|
+
export declare function ExternalWalletChainSelector(props: ExternalWalletChainSelectorProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=ExternalWalletChainSelector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExternalWalletChainSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/auth/wallet/ExternalWalletChainSelector.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAOpD,UAAU,gCAAgC;IACxC,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,QAAQ,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,iGAAiG;IACjG,YAAY,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;CAC1E;AACD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,gCAAgC,2CAiIxC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var Buttons = require('../../design/Buttons.js');
|
|
5
|
+
var Svg = require('../../design/Svg.js');
|
|
6
|
+
var reactFontawesome = require('@fortawesome/react-fontawesome');
|
|
7
|
+
var freeSolidSvgIcons = require('@fortawesome/free-solid-svg-icons');
|
|
8
|
+
var react = require('react');
|
|
9
|
+
var clsx = require('clsx');
|
|
10
|
+
var core = require('@turnkey/core');
|
|
11
|
+
var Hook$1 = require('../../../providers/modal/Hook.js');
|
|
12
|
+
var Hook = require('../../../providers/client/Hook.js');
|
|
13
|
+
var ConnectedIndicator = require('../../design/ConnectedIndicator.js');
|
|
14
|
+
var utils = require('./utils.js');
|
|
15
|
+
|
|
16
|
+
function ExternalWalletChainSelector(props) {
|
|
17
|
+
const {
|
|
18
|
+
providers,
|
|
19
|
+
onSelect,
|
|
20
|
+
onDisconnect
|
|
21
|
+
} = props;
|
|
22
|
+
const {
|
|
23
|
+
walletProviders
|
|
24
|
+
} = Hook.useTurnkey();
|
|
25
|
+
const {
|
|
26
|
+
isMobile,
|
|
27
|
+
popPage
|
|
28
|
+
} = Hook$1.useModal();
|
|
29
|
+
const [loadingProvider, setLoadingProvider] = react.useState();
|
|
30
|
+
// we find matching providers in current state
|
|
31
|
+
const currentProviders = providers.map(inputProvider => walletProviders.find(p => p.interfaceType === inputProvider.interfaceType && p.chainInfo.namespace === inputProvider.chainInfo.namespace)).filter(p => p !== undefined);
|
|
32
|
+
// if no providers are found then that means that the user entered this screen
|
|
33
|
+
// while WalletConnect was still initializing, and then it failed to initialize
|
|
34
|
+
react.useEffect(() => {
|
|
35
|
+
if (currentProviders.length === 0) {
|
|
36
|
+
popPage();
|
|
37
|
+
}
|
|
38
|
+
}, [currentProviders.length, popPage]);
|
|
39
|
+
const shouldShowDisconnect = onDisconnect !== undefined;
|
|
40
|
+
const handleSelect = async provider => {
|
|
41
|
+
setLoadingProvider(provider);
|
|
42
|
+
if (utils.canDisconnect(provider, shouldShowDisconnect)) {
|
|
43
|
+
await onDisconnect(provider);
|
|
44
|
+
} else {
|
|
45
|
+
await onSelect(provider);
|
|
46
|
+
}
|
|
47
|
+
setLoadingProvider(undefined);
|
|
48
|
+
};
|
|
49
|
+
return jsxRuntime.jsxs("div", {
|
|
50
|
+
className: clsx("flex flex-col w-72 gap-4 mt-11 items-center justify-center", isMobile ? "w-full" : "w-72"),
|
|
51
|
+
children: [jsxRuntime.jsx("img", {
|
|
52
|
+
src: providers[0]?.info.icon,
|
|
53
|
+
className: "size-14 rounded-full"
|
|
54
|
+
}), jsxRuntime.jsxs("span", {
|
|
55
|
+
className: "text-sm text-center text-icon-text-light dark:text-icon-text-dark",
|
|
56
|
+
children: [providers[0]?.info.name ?? "This wallet provider", " supports multiple chains. Select which chain you would like to use."]
|
|
57
|
+
}), jsxRuntime.jsx("div", {
|
|
58
|
+
className: "w-full flex flex-col gap-2",
|
|
59
|
+
children: currentProviders.map(p => {
|
|
60
|
+
const [isHovering, setIsHovering] = react.useState(false);
|
|
61
|
+
return jsxRuntime.jsxs(Buttons.ActionButton, {
|
|
62
|
+
loading: loadingProvider === p,
|
|
63
|
+
loadingText: "Preparing...",
|
|
64
|
+
onClick: () => handleSelect(p),
|
|
65
|
+
...(!isMobile && {
|
|
66
|
+
// This looks weird on mobile since there's no hover state
|
|
67
|
+
onMouseEnter: () => setIsHovering(true),
|
|
68
|
+
onMouseLeave: () => setIsHovering(false)
|
|
69
|
+
}),
|
|
70
|
+
className: "relative overflow-hidden flex items-center justify-start gap-2 w-full text-inherit bg-button-light dark:bg-button-dark",
|
|
71
|
+
children: [core.isEthereumProvider(p) ? jsxRuntime.jsxs("div", {
|
|
72
|
+
className: "relative",
|
|
73
|
+
children: [jsxRuntime.jsx(Svg.EthereumLogo, {
|
|
74
|
+
className: "size-5"
|
|
75
|
+
}), utils.canDisconnect(p, shouldShowDisconnect) && jsxRuntime.jsx(ConnectedIndicator.ConnectedIndicator, {
|
|
76
|
+
isPinging: true
|
|
77
|
+
})]
|
|
78
|
+
}) : core.isSolanaProvider(p) ? jsxRuntime.jsxs("div", {
|
|
79
|
+
className: "relative",
|
|
80
|
+
children: [jsxRuntime.jsx(Svg.SolanaLogo, {
|
|
81
|
+
className: "size-5"
|
|
82
|
+
}), utils.canDisconnect(p, shouldShowDisconnect) && jsxRuntime.jsx(ConnectedIndicator.ConnectedIndicator, {
|
|
83
|
+
isPinging: true
|
|
84
|
+
})]
|
|
85
|
+
}) :
|
|
86
|
+
// we should never reach here
|
|
87
|
+
// if we do then it means we forgot to update the auth component after adding a new chain
|
|
88
|
+
jsxRuntime.jsx("div", {
|
|
89
|
+
className: "relative",
|
|
90
|
+
children: jsxRuntime.jsx("span", {
|
|
91
|
+
className: "size-5 flex items-center justify-center rounded bg-gray-300 dark:bg-gray-700",
|
|
92
|
+
children: "?"
|
|
93
|
+
})
|
|
94
|
+
}), jsxRuntime.jsxs("div", {
|
|
95
|
+
className: "flex flex-col items-start",
|
|
96
|
+
children: [core.isEthereumProvider(p) ? "EVM" : core.isSolanaProvider(p) ? "Solana" :
|
|
97
|
+
// we should never reach here
|
|
98
|
+
// if we do then it means we forgot to update the auth component after adding a new chain
|
|
99
|
+
`?`, utils.canDisconnect(p, shouldShowDisconnect) && jsxRuntime.jsxs("span", {
|
|
100
|
+
className: "text-xs text-icon-text-light dark:text-icon-text-dark",
|
|
101
|
+
children: ["Connected: ", p.connectedAddresses[0]?.slice(0, 4), "...", p.connectedAddresses[0]?.slice(-3)]
|
|
102
|
+
})]
|
|
103
|
+
}), jsxRuntime.jsx(reactFontawesome.FontAwesomeIcon, {
|
|
104
|
+
className: clsx(`absolute transition-all duration-200`, isHovering ? "right-4" : "-right-4", utils.canDisconnect(p, shouldShowDisconnect) ? "text-danger-light dark:text-danger-dark" : "text-icon-text-light dark:text-icon-text-dark"),
|
|
105
|
+
size: utils.canDisconnect(p, shouldShowDisconnect) ? "lg" : "1x",
|
|
106
|
+
icon: utils.canDisconnect(p, shouldShowDisconnect) ? freeSolidSvgIcons.faClose : freeSolidSvgIcons.faChevronRight
|
|
107
|
+
})]
|
|
108
|
+
}, p.chainInfo.namespace);
|
|
109
|
+
})
|
|
110
|
+
})]
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
exports.ExternalWalletChainSelector = ExternalWalletChainSelector;
|
|
115
|
+
//# sourceMappingURL=ExternalWalletChainSelector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExternalWalletChainSelector.js","sources":["../../../../src/components/auth/wallet/ExternalWalletChainSelector.tsx"],"sourcesContent":[null],"names":["ExternalWalletChainSelector","props","providers","onSelect","onDisconnect","walletProviders","useTurnkey","isMobile","popPage","useModal","loadingProvider","setLoadingProvider","useState","currentProviders","map","inputProvider","find","p","interfaceType","chainInfo","namespace","filter","undefined","useEffect","length","shouldShowDisconnect","handleSelect","provider","canDisconnect","_jsxs","className","clsx","children","_jsx","src","info","icon","name","isHovering","setIsHovering","ActionButton","loading","loadingText","onClick","onMouseEnter","onMouseLeave","isEthereumProvider","EthereumLogo","ConnectedIndicator","isPinging","isSolanaProvider","SolanaLogo","connectedAddresses","slice","FontAwesomeIcon","size","faClose","faChevronRight"],"mappings":"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"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { slicedToArray as _slicedToArray, objectSpread2 as _objectSpread2, asyncToGenerator as _asyncToGenerator, regenerator as _regenerator } from '../../../_virtual/_rollupPluginBabelHelpers.mjs';
|
|
2
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { ActionButton } from '../../design/Buttons.mjs';
|
|
4
|
+
import { EthereumLogo, SolanaLogo } from '../../design/Svg.mjs';
|
|
5
|
+
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
6
|
+
import { faClose, faChevronRight } from '@fortawesome/free-solid-svg-icons';
|
|
7
|
+
import { useState, useEffect } from 'react';
|
|
8
|
+
import clsx from 'clsx';
|
|
9
|
+
import { isEthereumProvider, isSolanaProvider } from '@turnkey/core';
|
|
10
|
+
import { useModal } from '../../../providers/modal/Hook.mjs';
|
|
11
|
+
import { useTurnkey } from '../../../providers/client/Hook.mjs';
|
|
12
|
+
import { ConnectedIndicator } from '../../design/ConnectedIndicator.mjs';
|
|
13
|
+
import { canDisconnect } from './utils.mjs';
|
|
14
|
+
|
|
15
|
+
function ExternalWalletChainSelector(props) {
|
|
16
|
+
var _providers$, _providers$0$info$nam, _providers$2;
|
|
17
|
+
var providers = props.providers,
|
|
18
|
+
onSelect = props.onSelect,
|
|
19
|
+
onDisconnect = props.onDisconnect;
|
|
20
|
+
var _useTurnkey = useTurnkey(),
|
|
21
|
+
walletProviders = _useTurnkey.walletProviders;
|
|
22
|
+
var _useModal = useModal(),
|
|
23
|
+
isMobile = _useModal.isMobile,
|
|
24
|
+
popPage = _useModal.popPage;
|
|
25
|
+
var _useState = useState(),
|
|
26
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
27
|
+
loadingProvider = _useState2[0],
|
|
28
|
+
setLoadingProvider = _useState2[1];
|
|
29
|
+
// we find matching providers in current state
|
|
30
|
+
var currentProviders = providers.map(function (inputProvider) {
|
|
31
|
+
return walletProviders.find(function (p) {
|
|
32
|
+
return p.interfaceType === inputProvider.interfaceType && p.chainInfo.namespace === inputProvider.chainInfo.namespace;
|
|
33
|
+
});
|
|
34
|
+
}).filter(function (p) {
|
|
35
|
+
return p !== undefined;
|
|
36
|
+
});
|
|
37
|
+
// if no providers are found then that means that the user entered this screen
|
|
38
|
+
// while WalletConnect was still initializing, and then it failed to initialize
|
|
39
|
+
useEffect(function () {
|
|
40
|
+
if (currentProviders.length === 0) {
|
|
41
|
+
popPage();
|
|
42
|
+
}
|
|
43
|
+
}, [currentProviders.length, popPage]);
|
|
44
|
+
var shouldShowDisconnect = onDisconnect !== undefined;
|
|
45
|
+
var handleSelect = /*#__PURE__*/function () {
|
|
46
|
+
var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(provider) {
|
|
47
|
+
return _regenerator().w(function (_context) {
|
|
48
|
+
while (1) switch (_context.n) {
|
|
49
|
+
case 0:
|
|
50
|
+
setLoadingProvider(provider);
|
|
51
|
+
if (!canDisconnect(provider, shouldShowDisconnect)) {
|
|
52
|
+
_context.n = 2;
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
_context.n = 1;
|
|
56
|
+
return onDisconnect(provider);
|
|
57
|
+
case 1:
|
|
58
|
+
_context.n = 3;
|
|
59
|
+
break;
|
|
60
|
+
case 2:
|
|
61
|
+
_context.n = 3;
|
|
62
|
+
return onSelect(provider);
|
|
63
|
+
case 3:
|
|
64
|
+
setLoadingProvider(undefined);
|
|
65
|
+
case 4:
|
|
66
|
+
return _context.a(2);
|
|
67
|
+
}
|
|
68
|
+
}, _callee);
|
|
69
|
+
}));
|
|
70
|
+
return function handleSelect(_x) {
|
|
71
|
+
return _ref.apply(this, arguments);
|
|
72
|
+
};
|
|
73
|
+
}();
|
|
74
|
+
return jsxs("div", {
|
|
75
|
+
className: clsx("flex flex-col w-72 gap-4 mt-11 items-center justify-center", isMobile ? "w-full" : "w-72"),
|
|
76
|
+
children: [jsx("img", {
|
|
77
|
+
src: (_providers$ = providers[0]) === null || _providers$ === void 0 ? void 0 : _providers$.info.icon,
|
|
78
|
+
className: "size-14 rounded-full"
|
|
79
|
+
}), jsxs("span", {
|
|
80
|
+
className: "text-sm text-center text-icon-text-light dark:text-icon-text-dark",
|
|
81
|
+
children: [(_providers$0$info$nam = (_providers$2 = providers[0]) === null || _providers$2 === void 0 ? void 0 : _providers$2.info.name) !== null && _providers$0$info$nam !== void 0 ? _providers$0$info$nam : "This wallet provider", " supports multiple chains. Select which chain you would like to use."]
|
|
82
|
+
}), jsx("div", {
|
|
83
|
+
className: "w-full flex flex-col gap-2",
|
|
84
|
+
children: currentProviders.map(function (p) {
|
|
85
|
+
var _p$connectedAddresses, _p$connectedAddresses2;
|
|
86
|
+
var _useState3 = useState(false),
|
|
87
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
88
|
+
isHovering = _useState4[0],
|
|
89
|
+
setIsHovering = _useState4[1];
|
|
90
|
+
return jsxs(ActionButton, _objectSpread2(_objectSpread2({
|
|
91
|
+
loading: loadingProvider === p,
|
|
92
|
+
loadingText: "Preparing...",
|
|
93
|
+
onClick: function onClick() {
|
|
94
|
+
return handleSelect(p);
|
|
95
|
+
}
|
|
96
|
+
}, !isMobile && {
|
|
97
|
+
// This looks weird on mobile since there's no hover state
|
|
98
|
+
onMouseEnter: function onMouseEnter() {
|
|
99
|
+
return setIsHovering(true);
|
|
100
|
+
},
|
|
101
|
+
onMouseLeave: function onMouseLeave() {
|
|
102
|
+
return setIsHovering(false);
|
|
103
|
+
}
|
|
104
|
+
}), {}, {
|
|
105
|
+
className: "relative overflow-hidden flex items-center justify-start gap-2 w-full text-inherit bg-button-light dark:bg-button-dark",
|
|
106
|
+
children: [isEthereumProvider(p) ? jsxs("div", {
|
|
107
|
+
className: "relative",
|
|
108
|
+
children: [jsx(EthereumLogo, {
|
|
109
|
+
className: "size-5"
|
|
110
|
+
}), canDisconnect(p, shouldShowDisconnect) && jsx(ConnectedIndicator, {
|
|
111
|
+
isPinging: true
|
|
112
|
+
})]
|
|
113
|
+
}) : isSolanaProvider(p) ? jsxs("div", {
|
|
114
|
+
className: "relative",
|
|
115
|
+
children: [jsx(SolanaLogo, {
|
|
116
|
+
className: "size-5"
|
|
117
|
+
}), canDisconnect(p, shouldShowDisconnect) && jsx(ConnectedIndicator, {
|
|
118
|
+
isPinging: true
|
|
119
|
+
})]
|
|
120
|
+
}) :
|
|
121
|
+
// we should never reach here
|
|
122
|
+
// if we do then it means we forgot to update the auth component after adding a new chain
|
|
123
|
+
jsx("div", {
|
|
124
|
+
className: "relative",
|
|
125
|
+
children: jsx("span", {
|
|
126
|
+
className: "size-5 flex items-center justify-center rounded bg-gray-300 dark:bg-gray-700",
|
|
127
|
+
children: "?"
|
|
128
|
+
})
|
|
129
|
+
}), jsxs("div", {
|
|
130
|
+
className: "flex flex-col items-start",
|
|
131
|
+
children: [isEthereumProvider(p) ? "EVM" : isSolanaProvider(p) ? "Solana" : // we should never reach here
|
|
132
|
+
// if we do then it means we forgot to update the auth component after adding a new chain
|
|
133
|
+
"?", canDisconnect(p, shouldShowDisconnect) && jsxs("span", {
|
|
134
|
+
className: "text-xs text-icon-text-light dark:text-icon-text-dark",
|
|
135
|
+
children: ["Connected: ", (_p$connectedAddresses = p.connectedAddresses[0]) === null || _p$connectedAddresses === void 0 ? void 0 : _p$connectedAddresses.slice(0, 4), "...", (_p$connectedAddresses2 = p.connectedAddresses[0]) === null || _p$connectedAddresses2 === void 0 ? void 0 : _p$connectedAddresses2.slice(-3)]
|
|
136
|
+
})]
|
|
137
|
+
}), jsx(FontAwesomeIcon, {
|
|
138
|
+
className: clsx("absolute transition-all duration-200", isHovering ? "right-4" : "-right-4", canDisconnect(p, shouldShowDisconnect) ? "text-danger-light dark:text-danger-dark" : "text-icon-text-light dark:text-icon-text-dark"),
|
|
139
|
+
size: canDisconnect(p, shouldShowDisconnect) ? "lg" : "1x",
|
|
140
|
+
icon: canDisconnect(p, shouldShowDisconnect) ? faClose : faChevronRight
|
|
141
|
+
})]
|
|
142
|
+
}), p.chainInfo.namespace);
|
|
143
|
+
})
|
|
144
|
+
})]
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
export { ExternalWalletChainSelector };
|
|
149
|
+
//# sourceMappingURL=ExternalWalletChainSelector.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExternalWalletChainSelector.mjs","sources":["../../../../src/components/auth/wallet/ExternalWalletChainSelector.tsx"],"sourcesContent":[null],"names":["ExternalWalletChainSelector","props","_providers$","_providers$0$info$nam","_providers$2","providers","onSelect","onDisconnect","_useTurnkey","useTurnkey","walletProviders","_useModal","useModal","isMobile","popPage","_useState","useState","_useState2","_slicedToArray","loadingProvider","setLoadingProvider","currentProviders","map","inputProvider","find","p","interfaceType","chainInfo","namespace","filter","undefined","useEffect","length","shouldShowDisconnect","handleSelect","_ref","_asyncToGenerator","_regenerator","m","_callee","provider","w","_context","n","canDisconnect","a","_x","apply","arguments","_jsxs","className","clsx","children","_jsx","src","info","icon","name","_p$connectedAddresses","_p$connectedAddresses2","_useState3","_useState4","isHovering","setIsHovering","ActionButton","_objectSpread","loading","loadingText","onClick","onMouseEnter","onMouseLeave","isEthereumProvider","EthereumLogo","ConnectedIndicator","isPinging","isSolanaProvider","SolanaLogo","connectedAddresses","slice","FontAwesomeIcon","size","faClose","faChevronRight"],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type WalletAccount } from "@turnkey/core";
|
|
2
|
+
import { WalletSelectorMode } from "../../../types/base";
|
|
3
|
+
export { WalletSelectorMode } from "../../../types/base";
|
|
4
|
+
interface AuthModeProps {
|
|
5
|
+
mode: WalletSelectorMode.Auth;
|
|
6
|
+
/** Session key for the auth flow */
|
|
7
|
+
sessionKey?: string | undefined;
|
|
8
|
+
}
|
|
9
|
+
interface ConnectModeProps {
|
|
10
|
+
mode: WalletSelectorMode.Connect;
|
|
11
|
+
/** Called when a wallet is successfully connected or disconnected */
|
|
12
|
+
onSuccess: (type: "connect" | "disconnect", account: WalletAccount) => void;
|
|
13
|
+
/** Duration to show success page (ms). If 0 or undefined, closes immediately */
|
|
14
|
+
successPageDuration?: number | undefined;
|
|
15
|
+
}
|
|
16
|
+
export type ExternalWalletSelectorProps = AuthModeProps | ConnectModeProps;
|
|
17
|
+
export declare function ExternalWalletSelector(props: ExternalWalletSelectorProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
//# sourceMappingURL=ExternalWalletSelector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExternalWalletSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/auth/wallet/ExternalWalletSelector.tsx"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,aAAa,EAEnB,MAAM,eAAe,CAAC;AAWvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,UAAU,aAAa;IACrB,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC;IAC9B,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED,UAAU,gBAAgB;IACxB,IAAI,EAAE,kBAAkB,CAAC,OAAO,CAAC;IACjC,qEAAqE;IACrE,SAAS,EAAE,CAAC,IAAI,EAAE,SAAS,GAAG,YAAY,EAAE,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5E,gFAAgF;IAChF,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1C;AAED,MAAM,MAAM,2BAA2B,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAE3E,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,2BAA2B,2CAqQxE"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var react = require('react');
|
|
5
|
+
var clsx = require('clsx');
|
|
6
|
+
var core = require('@turnkey/core');
|
|
7
|
+
var Hook = require('../../../providers/modal/Hook.js');
|
|
8
|
+
var Hook$1 = require('../../../providers/client/Hook.js');
|
|
9
|
+
var utils$1 = require('../../../utils/utils.js');
|
|
10
|
+
var WalletButton = require('./WalletButton.js');
|
|
11
|
+
var ExternalWalletChainSelector = require('./ExternalWalletChainSelector.js');
|
|
12
|
+
var WalletConnectFlow = require('./WalletConnectFlow.js');
|
|
13
|
+
var utils = require('./utils.js');
|
|
14
|
+
var Action = require('../Action.js');
|
|
15
|
+
var Success = require('../../design/Success.js');
|
|
16
|
+
var DisconnectWalletScreen = require('./DisconnectWalletScreen.js');
|
|
17
|
+
var base = require('../../../types/base.js');
|
|
18
|
+
|
|
19
|
+
function ExternalWalletSelector(props) {
|
|
20
|
+
const {
|
|
21
|
+
mode
|
|
22
|
+
} = props;
|
|
23
|
+
const {
|
|
24
|
+
pushPage,
|
|
25
|
+
popPage,
|
|
26
|
+
closeModal,
|
|
27
|
+
isMobile
|
|
28
|
+
} = Hook.useModal();
|
|
29
|
+
const {
|
|
30
|
+
walletProviders,
|
|
31
|
+
wallets,
|
|
32
|
+
loginOrSignupWithWallet,
|
|
33
|
+
connectWalletAccount,
|
|
34
|
+
disconnectWalletAccount
|
|
35
|
+
} = Hook$1.useTurnkey();
|
|
36
|
+
// Derive config based on mode
|
|
37
|
+
const isConnectMode = mode === base.WalletSelectorMode.Connect;
|
|
38
|
+
const sessionKey = isConnectMode ? undefined : props.sessionKey;
|
|
39
|
+
const shouldShowDisconnect = isConnectMode;
|
|
40
|
+
const successPageDuration = isConnectMode ? props.successPageDuration : undefined;
|
|
41
|
+
const onSuccess = isConnectMode ? props.onSuccess : undefined;
|
|
42
|
+
// Auth mode: show ActionPage and call loginOrSignupWithWallet
|
|
43
|
+
const handleAuthSelect = async provider => {
|
|
44
|
+
pushPage({
|
|
45
|
+
key: "Wallet Login/Signup",
|
|
46
|
+
content: jsxRuntime.jsx(Action.ActionPage, {
|
|
47
|
+
title: `Authenticating with ${provider.info.name}...`,
|
|
48
|
+
action: async () => {
|
|
49
|
+
await loginOrSignupWithWallet({
|
|
50
|
+
walletProvider: provider,
|
|
51
|
+
...(sessionKey && {
|
|
52
|
+
sessionKey
|
|
53
|
+
})
|
|
54
|
+
});
|
|
55
|
+
},
|
|
56
|
+
icon: jsxRuntime.jsx("img", {
|
|
57
|
+
className: "size-11 rounded-full",
|
|
58
|
+
src: provider.info.icon || ""
|
|
59
|
+
})
|
|
60
|
+
}),
|
|
61
|
+
showTitle: false
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
// Connect mode: show ActionPage, connect wallet, show success
|
|
65
|
+
const handleConnectSelect = async provider => {
|
|
66
|
+
pushPage({
|
|
67
|
+
key: `Connect ${provider.info.name}`,
|
|
68
|
+
content: jsxRuntime.jsx(Action.ActionPage, {
|
|
69
|
+
title: `Connecting ${provider.info.name}`,
|
|
70
|
+
icon: jsxRuntime.jsx("img", {
|
|
71
|
+
className: "size-11 rounded-full",
|
|
72
|
+
src: provider.info.icon || ""
|
|
73
|
+
}),
|
|
74
|
+
closeOnComplete: false,
|
|
75
|
+
action: async () => {
|
|
76
|
+
const account = await connectWalletAccount(provider);
|
|
77
|
+
onSuccess?.("connect", account);
|
|
78
|
+
if (successPageDuration && successPageDuration > 0) {
|
|
79
|
+
pushPage({
|
|
80
|
+
key: "Connecting Success",
|
|
81
|
+
content: jsxRuntime.jsx(Success.SuccessPage, {
|
|
82
|
+
text: "Successfully connected wallet!",
|
|
83
|
+
onComplete: () => closeModal(),
|
|
84
|
+
duration: successPageDuration
|
|
85
|
+
}),
|
|
86
|
+
preventBack: true,
|
|
87
|
+
showTitle: false
|
|
88
|
+
});
|
|
89
|
+
} else {
|
|
90
|
+
closeModal();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}),
|
|
94
|
+
showTitle: false
|
|
95
|
+
});
|
|
96
|
+
};
|
|
97
|
+
// Connect mode: show disconnect confirmation, then disconnect
|
|
98
|
+
const handleDisconnect = async provider => {
|
|
99
|
+
pushPage({
|
|
100
|
+
key: `Disconnect ${provider.info.name}`,
|
|
101
|
+
content: jsxRuntime.jsx(DisconnectWalletScreen.DisconnectWalletScreen, {
|
|
102
|
+
provider: provider,
|
|
103
|
+
onDisconnect: async () => {
|
|
104
|
+
const address = provider.connectedAddresses[0];
|
|
105
|
+
// Find the matching account from connected wallets
|
|
106
|
+
const connectedWallets = wallets.filter(w => w.source === core.WalletSource.Connected);
|
|
107
|
+
const matchedAccount = connectedWallets.flatMap(w => w.accounts).find(a => a.address === address);
|
|
108
|
+
await disconnectWalletAccount(provider);
|
|
109
|
+
onSuccess?.("disconnect", matchedAccount);
|
|
110
|
+
if (successPageDuration && successPageDuration > 0) {
|
|
111
|
+
pushPage({
|
|
112
|
+
key: "Disconnect Success",
|
|
113
|
+
content: jsxRuntime.jsx(Success.SuccessPage, {
|
|
114
|
+
text: "Successfully disconnected wallet!",
|
|
115
|
+
onComplete: () => closeModal(),
|
|
116
|
+
duration: successPageDuration
|
|
117
|
+
}),
|
|
118
|
+
preventBack: true,
|
|
119
|
+
showTitle: false
|
|
120
|
+
});
|
|
121
|
+
} else {
|
|
122
|
+
closeModal();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}),
|
|
126
|
+
showTitle: false
|
|
127
|
+
});
|
|
128
|
+
};
|
|
129
|
+
// Select the appropriate handler based on mode
|
|
130
|
+
const onSelect = isConnectMode ? handleConnectSelect : handleAuthSelect;
|
|
131
|
+
// Group providers by name
|
|
132
|
+
const grouped = walletProviders.reduce((acc, provider) => {
|
|
133
|
+
const name = provider.info.name;
|
|
134
|
+
if (!acc[name]) acc[name] = [];
|
|
135
|
+
acc[name].push(provider);
|
|
136
|
+
return acc;
|
|
137
|
+
}, {});
|
|
138
|
+
const pushStandardChainSelector = group => {
|
|
139
|
+
pushPage({
|
|
140
|
+
key: `Select chain`,
|
|
141
|
+
content: jsxRuntime.jsx(ExternalWalletChainSelector.ExternalWalletChainSelector, {
|
|
142
|
+
providers: group,
|
|
143
|
+
onSelect: onSelect,
|
|
144
|
+
onDisconnect: isConnectMode ? handleDisconnect : undefined
|
|
145
|
+
})
|
|
146
|
+
});
|
|
147
|
+
};
|
|
148
|
+
const pushWalletConnectFlow = group => {
|
|
149
|
+
pushPage({
|
|
150
|
+
key: "WalletConnect",
|
|
151
|
+
content: jsxRuntime.jsx(WalletConnectFlow.WalletConnectFlow, {
|
|
152
|
+
providers: group,
|
|
153
|
+
mode: mode,
|
|
154
|
+
sessionKey: sessionKey,
|
|
155
|
+
onDisconnect: isConnectMode ? handleDisconnect : undefined
|
|
156
|
+
}),
|
|
157
|
+
showTitle: false
|
|
158
|
+
});
|
|
159
|
+
};
|
|
160
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
161
|
+
// Selection handlers
|
|
162
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
163
|
+
const handleSelectGroup = group => {
|
|
164
|
+
const provider = group[0];
|
|
165
|
+
const isConnected = !!utils.canDisconnect(provider, shouldShowDisconnect);
|
|
166
|
+
// Single chain - direct action
|
|
167
|
+
if (group.length === 1) {
|
|
168
|
+
if (isConnected) {
|
|
169
|
+
handleDisconnect(provider);
|
|
170
|
+
} else {
|
|
171
|
+
onSelect(provider);
|
|
172
|
+
}
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
// Multiple chains - need chain selector
|
|
176
|
+
if (utils$1.isWalletConnect(provider)) {
|
|
177
|
+
pushWalletConnectFlow(group);
|
|
178
|
+
} else {
|
|
179
|
+
pushStandardChainSelector(group);
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
183
|
+
// Auto-navigation when only one provider group exists
|
|
184
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
185
|
+
react.useEffect(() => {
|
|
186
|
+
const groupedValues = Object.values(grouped);
|
|
187
|
+
if (groupedValues.length === 1) {
|
|
188
|
+
popPage(); // Remove this page to prevent back-button loops
|
|
189
|
+
handleSelectGroup(groupedValues[0]);
|
|
190
|
+
}
|
|
191
|
+
}, [grouped]);
|
|
192
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
193
|
+
// Render
|
|
194
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
195
|
+
if (Object.keys(grouped).length === 0) {
|
|
196
|
+
return jsxRuntime.jsxs("div", {
|
|
197
|
+
className: clsx("flex flex-col h-40 mt-4 gap-2 justify-center items-center text-xs text-center text-icon-text-light dark:text-icon-text-dark", isMobile ? "w-full" : "w-80"),
|
|
198
|
+
children: [jsxRuntime.jsx("span", {
|
|
199
|
+
className: "text-sm font-medium",
|
|
200
|
+
children: "No wallet providers available."
|
|
201
|
+
}), jsxRuntime.jsx("span", {
|
|
202
|
+
children: "Only wallets supporting EIP-1193 (Ethereum) or the Solana wallet standard are supported."
|
|
203
|
+
})]
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
return jsxRuntime.jsx("div", {
|
|
207
|
+
className: clsx("min-h-42 max-h-64 mt-12 overflow-y-auto tk-scrollbar p-0.5", isMobile ? "w-full" : "w-80"),
|
|
208
|
+
children: jsxRuntime.jsx("div", {
|
|
209
|
+
className: "flex flex-col gap-2",
|
|
210
|
+
children: Object.entries(grouped).map(([name, group]) => {
|
|
211
|
+
const first = group[0];
|
|
212
|
+
return jsxRuntime.jsx(WalletButton.WalletButton, {
|
|
213
|
+
icon: first.info.icon ?? "",
|
|
214
|
+
name: first.info.name ?? "",
|
|
215
|
+
chains: group.map(c => ({
|
|
216
|
+
namespace: c.chainInfo.namespace,
|
|
217
|
+
isConnected: !!utils.canDisconnect(c, shouldShowDisconnect)
|
|
218
|
+
})),
|
|
219
|
+
onClick: () => handleSelectGroup(group),
|
|
220
|
+
shouldShowDisconnect: shouldShowDisconnect,
|
|
221
|
+
isMobile: isMobile
|
|
222
|
+
}, name);
|
|
223
|
+
})
|
|
224
|
+
})
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
Object.defineProperty(exports, "WalletSelectorMode", {
|
|
229
|
+
enumerable: true,
|
|
230
|
+
get: function () { return base.WalletSelectorMode; }
|
|
231
|
+
});
|
|
232
|
+
exports.ExternalWalletSelector = ExternalWalletSelector;
|
|
233
|
+
//# sourceMappingURL=ExternalWalletSelector.js.map
|