@0xkey-io/react-wallet-kit 0.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/LICENSE +201 -0
- package/README.MD +116 -0
- package/dist/_virtual/_rollupPluginBabelHelpers.mjs +307 -0
- package/dist/_virtual/_rollupPluginBabelHelpers.mjs.map +1 -0
- package/dist/components/auth/Action.d.ts +10 -0
- package/dist/components/auth/Action.d.ts.map +1 -0
- package/dist/components/auth/Action.js +76 -0
- package/dist/components/auth/Action.js.map +1 -0
- package/dist/components/auth/Action.mjs +97 -0
- package/dist/components/auth/Action.mjs.map +1 -0
- package/dist/components/auth/Email.d.ts +6 -0
- package/dist/components/auth/Email.d.ts.map +1 -0
- package/dist/components/auth/Email.js +77 -0
- package/dist/components/auth/Email.js.map +1 -0
- package/dist/components/auth/Email.mjs +98 -0
- package/dist/components/auth/Email.mjs.map +1 -0
- package/dist/components/auth/OAuth.d.ts +13 -0
- package/dist/components/auth/OAuth.d.ts.map +1 -0
- package/dist/components/auth/OAuth.js +63 -0
- package/dist/components/auth/OAuth.js.map +1 -0
- package/dist/components/auth/OAuth.mjs +68 -0
- package/dist/components/auth/OAuth.mjs.map +1 -0
- package/dist/components/auth/OTP.d.ts +21 -0
- package/dist/components/auth/OTP.d.ts.map +1 -0
- package/dist/components/auth/OTP.js +218 -0
- package/dist/components/auth/OTP.js.map +1 -0
- package/dist/components/auth/OTP.mjs +301 -0
- package/dist/components/auth/OTP.mjs.map +1 -0
- package/dist/components/auth/OrSeparator.d.ts +2 -0
- package/dist/components/auth/OrSeparator.d.ts.map +1 -0
- package/dist/components/auth/OrSeparator.js +20 -0
- package/dist/components/auth/OrSeparator.js.map +1 -0
- package/dist/components/auth/OrSeparator.mjs +18 -0
- package/dist/components/auth/OrSeparator.mjs.map +1 -0
- package/dist/components/auth/Passkey.d.ts +7 -0
- package/dist/components/auth/Passkey.d.ts.map +1 -0
- package/dist/components/auth/Passkey.js +34 -0
- package/dist/components/auth/Passkey.js.map +1 -0
- package/dist/components/auth/Passkey.mjs +30 -0
- package/dist/components/auth/Passkey.mjs.map +1 -0
- package/dist/components/auth/Phone.d.ts +6 -0
- package/dist/components/auth/Phone.d.ts.map +1 -0
- package/dist/components/auth/Phone.js +67 -0
- package/dist/components/auth/Phone.js.map +1 -0
- package/dist/components/auth/Phone.mjs +92 -0
- package/dist/components/auth/Phone.mjs.map +1 -0
- package/dist/components/auth/Wallet.d.ts +34 -0
- package/dist/components/auth/Wallet.d.ts.map +1 -0
- package/dist/components/auth/Wallet.js +517 -0
- package/dist/components/auth/Wallet.js.map +1 -0
- package/dist/components/auth/Wallet.mjs +618 -0
- package/dist/components/auth/Wallet.mjs.map +1 -0
- package/dist/components/auth/index.d.ts +9 -0
- package/dist/components/auth/index.d.ts.map +1 -0
- package/dist/components/auth/index.js +457 -0
- package/dist/components/auth/index.js.map +1 -0
- package/dist/components/auth/index.mjs +672 -0
- package/dist/components/auth/index.mjs.map +1 -0
- package/dist/components/design/Buttons.d.ts +29 -0
- package/dist/components/design/Buttons.d.ts.map +1 -0
- package/dist/components/design/Buttons.js +87 -0
- package/dist/components/design/Buttons.js.map +1 -0
- package/dist/components/design/Buttons.mjs +79 -0
- package/dist/components/design/Buttons.mjs.map +1 -0
- package/dist/components/design/Failure.d.ts +9 -0
- package/dist/components/design/Failure.d.ts.map +1 -0
- package/dist/components/design/Failure.js +33 -0
- package/dist/components/design/Failure.js.map +1 -0
- package/dist/components/design/Failure.mjs +34 -0
- package/dist/components/design/Failure.mjs.map +1 -0
- package/dist/components/design/Inputs.d.ts +9 -0
- package/dist/components/design/Inputs.d.ts.map +1 -0
- package/dist/components/design/Inputs.js +135 -0
- package/dist/components/design/Inputs.js.map +1 -0
- package/dist/components/design/Inputs.mjs +133 -0
- package/dist/components/design/Inputs.mjs.map +1 -0
- package/dist/components/design/Lottie/Dynamic.d.ts +2 -0
- package/dist/components/design/Lottie/Dynamic.d.ts.map +1 -0
- package/dist/components/design/Lottie/Dynamic.js +9 -0
- package/dist/components/design/Lottie/Dynamic.js.map +1 -0
- package/dist/components/design/Lottie/Dynamic.mjs +24 -0
- package/dist/components/design/Lottie/Dynamic.mjs.map +1 -0
- package/dist/components/design/Lottie/Wrapper.d.ts +8 -0
- package/dist/components/design/Lottie/Wrapper.d.ts.map +1 -0
- package/dist/components/design/Lottie/Wrapper.js +26 -0
- package/dist/components/design/Lottie/Wrapper.js.map +1 -0
- package/dist/components/design/Lottie/Wrapper.mjs +42 -0
- package/dist/components/design/Lottie/Wrapper.mjs.map +1 -0
- package/dist/components/design/Spinners.d.ts +9 -0
- package/dist/components/design/Spinners.d.ts.map +1 -0
- package/dist/components/design/Spinners.js +38 -0
- package/dist/components/design/Spinners.js.map +1 -0
- package/dist/components/design/Spinners.mjs +37 -0
- package/dist/components/design/Spinners.mjs.map +1 -0
- package/dist/components/design/Success.d.ts +8 -0
- package/dist/components/design/Success.d.ts.map +1 -0
- package/dist/components/design/Success.js +82 -0
- package/dist/components/design/Success.js.map +1 -0
- package/dist/components/design/Success.mjs +86 -0
- package/dist/components/design/Success.mjs.map +1 -0
- package/dist/components/design/Svg.d.ts +13 -0
- package/dist/components/design/Svg.d.ts.map +1 -0
- package/dist/components/design/Svg.js +165 -0
- package/dist/components/design/Svg.js.map +1 -0
- package/dist/components/design/Svg.mjs +161 -0
- package/dist/components/design/Svg.mjs.map +1 -0
- package/dist/components/export/Export.d.ts +13 -0
- package/dist/components/export/Export.d.ts.map +1 -0
- package/dist/components/export/Export.js +169 -0
- package/dist/components/export/Export.js.map +1 -0
- package/dist/components/export/Export.mjs +213 -0
- package/dist/components/export/Export.mjs.map +1 -0
- package/dist/components/export/ExportWarning.d.ts +15 -0
- package/dist/components/export/ExportWarning.d.ts.map +1 -0
- package/dist/components/export/ExportWarning.js +141 -0
- package/dist/components/export/ExportWarning.js.map +1 -0
- package/dist/components/export/ExportWarning.mjs +174 -0
- package/dist/components/export/ExportWarning.mjs.map +1 -0
- package/dist/components/import/Import.d.ts +20 -0
- package/dist/components/import/Import.d.ts.map +1 -0
- package/dist/components/import/Import.js +290 -0
- package/dist/components/import/Import.js.map +1 -0
- package/dist/components/import/Import.mjs +422 -0
- package/dist/components/import/Import.mjs.map +1 -0
- package/dist/components/onramp/OnRamp.d.ts +14 -0
- package/dist/components/onramp/OnRamp.d.ts.map +1 -0
- package/dist/components/onramp/OnRamp.js +61 -0
- package/dist/components/onramp/OnRamp.js.map +1 -0
- package/dist/components/onramp/OnRamp.mjs +79 -0
- package/dist/components/onramp/OnRamp.mjs.map +1 -0
- package/dist/components/send-transaction/SendTransaction.d.ts +12 -0
- package/dist/components/send-transaction/SendTransaction.d.ts.map +1 -0
- package/dist/components/send-transaction/SendTransaction.js +65 -0
- package/dist/components/send-transaction/SendTransaction.js.map +1 -0
- package/dist/components/send-transaction/SendTransaction.mjs +89 -0
- package/dist/components/send-transaction/SendTransaction.mjs.map +1 -0
- package/dist/components/send-transaction/helpers.d.ts +4 -0
- package/dist/components/send-transaction/helpers.d.ts.map +1 -0
- package/dist/components/send-transaction/helpers.js +37 -0
- package/dist/components/send-transaction/helpers.js.map +1 -0
- package/dist/components/send-transaction/helpers.mjs +34 -0
- package/dist/components/send-transaction/helpers.mjs.map +1 -0
- package/dist/components/sign/Message.d.ts +18 -0
- package/dist/components/sign/Message.d.ts.map +1 -0
- package/dist/components/sign/Message.js +132 -0
- package/dist/components/sign/Message.js.map +1 -0
- package/dist/components/sign/Message.mjs +148 -0
- package/dist/components/sign/Message.mjs.map +1 -0
- package/dist/components/user/ConnectWallet.d.ts +8 -0
- package/dist/components/user/ConnectWallet.d.ts.map +1 -0
- package/dist/components/user/ConnectWallet.js +114 -0
- package/dist/components/user/ConnectWallet.js.map +1 -0
- package/dist/components/user/ConnectWallet.mjs +194 -0
- package/dist/components/user/ConnectWallet.mjs.map +1 -0
- package/dist/components/user/RemoveEmail.d.ts +12 -0
- package/dist/components/user/RemoveEmail.d.ts.map +1 -0
- package/dist/components/user/RemoveEmail.js +105 -0
- package/dist/components/user/RemoveEmail.js.map +1 -0
- package/dist/components/user/RemoveEmail.mjs +124 -0
- package/dist/components/user/RemoveEmail.mjs.map +1 -0
- package/dist/components/user/RemoveOAuthProvider.d.ts +12 -0
- package/dist/components/user/RemoveOAuthProvider.d.ts.map +1 -0
- package/dist/components/user/RemoveOAuthProvider.js +110 -0
- package/dist/components/user/RemoveOAuthProvider.js.map +1 -0
- package/dist/components/user/RemoveOAuthProvider.mjs +131 -0
- package/dist/components/user/RemoveOAuthProvider.mjs.map +1 -0
- package/dist/components/user/RemovePasskey.d.ts +12 -0
- package/dist/components/user/RemovePasskey.d.ts.map +1 -0
- package/dist/components/user/RemovePasskey.js +114 -0
- package/dist/components/user/RemovePasskey.js.map +1 -0
- package/dist/components/user/RemovePasskey.mjs +135 -0
- package/dist/components/user/RemovePasskey.mjs.map +1 -0
- package/dist/components/user/RemovePhoneNumber.d.ts +12 -0
- package/dist/components/user/RemovePhoneNumber.d.ts.map +1 -0
- package/dist/components/user/RemovePhoneNumber.js +105 -0
- package/dist/components/user/RemovePhoneNumber.js.map +1 -0
- package/dist/components/user/RemovePhoneNumber.mjs +124 -0
- package/dist/components/user/RemovePhoneNumber.mjs.map +1 -0
- package/dist/components/user/UpdateEmail.d.ts +12 -0
- package/dist/components/user/UpdateEmail.d.ts.map +1 -0
- package/dist/components/user/UpdateEmail.js +154 -0
- package/dist/components/user/UpdateEmail.js.map +1 -0
- package/dist/components/user/UpdateEmail.mjs +197 -0
- package/dist/components/user/UpdateEmail.mjs.map +1 -0
- package/dist/components/user/UpdatePhoneNumber.d.ts +12 -0
- package/dist/components/user/UpdatePhoneNumber.d.ts.map +1 -0
- package/dist/components/user/UpdatePhoneNumber.js +151 -0
- package/dist/components/user/UpdatePhoneNumber.js.map +1 -0
- package/dist/components/user/UpdatePhoneNumber.mjs +198 -0
- package/dist/components/user/UpdatePhoneNumber.mjs.map +1 -0
- package/dist/components/user/UpdateUserName.d.ts +13 -0
- package/dist/components/user/UpdateUserName.d.ts.map +1 -0
- package/dist/components/user/UpdateUserName.js +113 -0
- package/dist/components/user/UpdateUserName.js.map +1 -0
- package/dist/components/user/UpdateUserName.mjs +139 -0
- package/dist/components/user/UpdateUserName.mjs.map +1 -0
- package/dist/components/verify/Verify.d.ts +9 -0
- package/dist/components/verify/Verify.d.ts.map +1 -0
- package/dist/components/verify/Verify.js +121 -0
- package/dist/components/verify/Verify.js.map +1 -0
- package/dist/components/verify/Verify.mjs +149 -0
- package/dist/components/verify/Verify.mjs.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +74 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +8 -0
- package/dist/index.mjs.map +1 -0
- package/dist/providers/ZeroXKeyProvider.d.ts +9 -0
- package/dist/providers/ZeroXKeyProvider.d.ts.map +1 -0
- package/dist/providers/ZeroXKeyProvider.js +36 -0
- package/dist/providers/ZeroXKeyProvider.js.map +1 -0
- package/dist/providers/ZeroXKeyProvider.mjs +34 -0
- package/dist/providers/ZeroXKeyProvider.mjs.map +1 -0
- package/dist/providers/client/Hook.d.ts +4 -0
- package/dist/providers/client/Hook.d.ts.map +1 -0
- package/dist/providers/client/Hook.js +15 -0
- package/dist/providers/client/Hook.js.map +1 -0
- package/dist/providers/client/Hook.mjs +13 -0
- package/dist/providers/client/Hook.mjs.map +1 -0
- package/dist/providers/client/Provider.d.ts +39 -0
- package/dist/providers/client/Provider.d.ts.map +1 -0
- package/dist/providers/client/Provider.js +3934 -0
- package/dist/providers/client/Provider.js.map +1 -0
- package/dist/providers/client/Provider.mjs +6895 -0
- package/dist/providers/client/Provider.mjs.map +1 -0
- package/dist/providers/client/Types.d.ts +711 -0
- package/dist/providers/client/Types.d.ts.map +1 -0
- package/dist/providers/client/Types.js +10 -0
- package/dist/providers/client/Types.js.map +1 -0
- package/dist/providers/client/Types.mjs +8 -0
- package/dist/providers/client/Types.mjs.map +1 -0
- package/dist/providers/index.d.ts +5 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/modal/Hook.d.ts +4 -0
- package/dist/providers/modal/Hook.d.ts.map +1 -0
- package/dist/providers/modal/Hook.js +15 -0
- package/dist/providers/modal/Hook.js.map +1 -0
- package/dist/providers/modal/Hook.mjs +13 -0
- package/dist/providers/modal/Hook.mjs.map +1 -0
- package/dist/providers/modal/Provider.d.ts +27 -0
- package/dist/providers/modal/Provider.d.ts.map +1 -0
- package/dist/providers/modal/Provider.js +48 -0
- package/dist/providers/modal/Provider.js.map +1 -0
- package/dist/providers/modal/Provider.mjs +68 -0
- package/dist/providers/modal/Provider.mjs.map +1 -0
- package/dist/providers/modal/Root.d.ts +7 -0
- package/dist/providers/modal/Root.d.ts.map +1 -0
- package/dist/providers/modal/Root.js +345 -0
- package/dist/providers/modal/Root.js.map +1 -0
- package/dist/providers/modal/Root.mjs +352 -0
- package/dist/providers/modal/Root.mjs.map +1 -0
- package/dist/providers/theme/Overrides.d.ts +18 -0
- package/dist/providers/theme/Overrides.d.ts.map +1 -0
- package/dist/providers/theme/Overrides.js +35 -0
- package/dist/providers/theme/Overrides.js.map +1 -0
- package/dist/providers/theme/Overrides.mjs +37 -0
- package/dist/providers/theme/Overrides.mjs.map +1 -0
- package/dist/styles.css +1 -0
- package/dist/tests/oauth-test.d.ts +2 -0
- package/dist/tests/oauth-test.d.ts.map +1 -0
- package/dist/tests/timers-test.d.ts +2 -0
- package/dist/tests/timers-test.d.ts.map +1 -0
- package/dist/tests/utils-test.d.ts +2 -0
- package/dist/tests/utils-test.d.ts.map +1 -0
- package/dist/typedoc-entry/index.d.ts +5 -0
- package/dist/typedoc-entry/index.d.ts.map +1 -0
- package/dist/types/base.d.ts +178 -0
- package/dist/types/base.d.ts.map +1 -0
- package/dist/types/base.js +55 -0
- package/dist/types/base.js.map +1 -0
- package/dist/types/base.mjs +50 -0
- package/dist/types/base.mjs.map +1 -0
- package/dist/types/method-types.d.ts +258 -0
- package/dist/types/method-types.d.ts.map +1 -0
- package/dist/utils/oauth/completion.d.ts +132 -0
- package/dist/utils/oauth/completion.d.ts.map +1 -0
- package/dist/utils/oauth/completion.js +136 -0
- package/dist/utils/oauth/completion.js.map +1 -0
- package/dist/utils/oauth/completion.mjs +176 -0
- package/dist/utils/oauth/completion.mjs.map +1 -0
- package/dist/utils/oauth/config.d.ts +34 -0
- package/dist/utils/oauth/config.d.ts.map +1 -0
- package/dist/utils/oauth/config.js +69 -0
- package/dist/utils/oauth/config.js.map +1 -0
- package/dist/utils/oauth/config.mjs +54 -0
- package/dist/utils/oauth/config.mjs.map +1 -0
- package/dist/utils/oauth/helpers.d.ts +13 -0
- package/dist/utils/oauth/helpers.d.ts.map +1 -0
- package/dist/utils/oauth/helpers.js +38 -0
- package/dist/utils/oauth/helpers.js.map +1 -0
- package/dist/utils/oauth/helpers.mjs +35 -0
- package/dist/utils/oauth/helpers.mjs.map +1 -0
- package/dist/utils/oauth/index.d.ts +7 -0
- package/dist/utils/oauth/index.d.ts.map +1 -0
- package/dist/utils/oauth/pkce.d.ts +14 -0
- package/dist/utils/oauth/pkce.d.ts.map +1 -0
- package/dist/utils/oauth/pkce.js +48 -0
- package/dist/utils/oauth/pkce.js.map +1 -0
- package/dist/utils/oauth/pkce.mjs +85 -0
- package/dist/utils/oauth/pkce.mjs.map +1 -0
- package/dist/utils/oauth/storage.d.ts +48 -0
- package/dist/utils/oauth/storage.d.ts.map +1 -0
- package/dist/utils/oauth/storage.js +87 -0
- package/dist/utils/oauth/storage.js.map +1 -0
- package/dist/utils/oauth/storage.mjs +78 -0
- package/dist/utils/oauth/storage.mjs.map +1 -0
- package/dist/utils/oauth/url.d.ts +94 -0
- package/dist/utils/oauth/url.d.ts.map +1 -0
- package/dist/utils/oauth/url.js +224 -0
- package/dist/utils/oauth/url.js.map +1 -0
- package/dist/utils/oauth/url.mjs +230 -0
- package/dist/utils/oauth/url.mjs.map +1 -0
- package/dist/utils/timers.d.ts +73 -0
- package/dist/utils/timers.d.ts.map +1 -0
- package/dist/utils/timers.js +133 -0
- package/dist/utils/timers.js.map +1 -0
- package/dist/utils/timers.mjs +142 -0
- package/dist/utils/timers.mjs.map +1 -0
- package/dist/utils/utils.d.ts +40 -0
- package/dist/utils/utils.d.ts.map +1 -0
- package/dist/utils/utils.js +116 -0
- package/dist/utils/utils.js.map +1 -0
- package/dist/utils/utils.mjs +164 -0
- package/dist/utils/utils.mjs.map +1 -0
- package/package.json +91 -0
|
@@ -0,0 +1,618 @@
|
|
|
1
|
+
import { slicedToArray as _slicedToArray, asyncToGenerator as _asyncToGenerator, regenerator as _regenerator } from '../../_virtual/_rollupPluginBabelHelpers.mjs';
|
|
2
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
3
|
+
import { ActionButton, BaseButton } from '../design/Buttons.mjs';
|
|
4
|
+
import { EthereumLogo, SolanaLogo } from '../design/Svg.mjs';
|
|
5
|
+
import { Spinner } from '../design/Spinners.mjs';
|
|
6
|
+
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
7
|
+
import { faWallet, faClose, faChevronRight, faMobileScreen, faLaptop, faCheck, faCopy } from '@fortawesome/free-solid-svg-icons';
|
|
8
|
+
import { useState, useEffect, useRef } from 'react';
|
|
9
|
+
import clsx from 'clsx';
|
|
10
|
+
import { QRCodeSVG } from 'qrcode.react';
|
|
11
|
+
import { SuccessPage } from '../design/Success.mjs';
|
|
12
|
+
import { isEthereumProvider, isSolanaProvider } from '@0xkey-io/core';
|
|
13
|
+
import { useModal } from '../../providers/modal/Hook.mjs';
|
|
14
|
+
import { useZeroXKey } from '../../providers/client/Hook.mjs';
|
|
15
|
+
import { useDebouncedCallback } from '../../utils/utils.mjs';
|
|
16
|
+
|
|
17
|
+
function WalletAuthButton(props) {
|
|
18
|
+
var onContinue = props.onContinue;
|
|
19
|
+
var _useState = useState(false),
|
|
20
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
21
|
+
isLoading = _useState2[0],
|
|
22
|
+
setIsLoading = _useState2[1];
|
|
23
|
+
var handleContinue = /*#__PURE__*/function () {
|
|
24
|
+
var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
25
|
+
return _regenerator().w(function (_context) {
|
|
26
|
+
while (1) switch (_context.p = _context.n) {
|
|
27
|
+
case 0:
|
|
28
|
+
setIsLoading(true);
|
|
29
|
+
_context.p = 1;
|
|
30
|
+
_context.n = 2;
|
|
31
|
+
return Promise.resolve(onContinue());
|
|
32
|
+
case 2:
|
|
33
|
+
_context.p = 2;
|
|
34
|
+
setIsLoading(false);
|
|
35
|
+
return _context.f(2);
|
|
36
|
+
case 3:
|
|
37
|
+
return _context.a(2);
|
|
38
|
+
}
|
|
39
|
+
}, _callee, null, [[1,, 2, 3]]);
|
|
40
|
+
}));
|
|
41
|
+
return function handleContinue() {
|
|
42
|
+
return _ref.apply(this, arguments);
|
|
43
|
+
};
|
|
44
|
+
}();
|
|
45
|
+
return jsx("div", {
|
|
46
|
+
className: "flex flex-col w-full",
|
|
47
|
+
children: jsxs(ActionButton, {
|
|
48
|
+
name: "wallet-auth-button",
|
|
49
|
+
onClick: handleContinue,
|
|
50
|
+
loading: isLoading,
|
|
51
|
+
className: "flex h-10 w-full items-center justify-center gap-2 border-modal-background-dark/15 bg-button-light py-2.5 text-sm text-inherit dark:border-modal-background-light/20 dark:bg-button-dark dark:text-white",
|
|
52
|
+
children: [jsx(FontAwesomeIcon, {
|
|
53
|
+
icon: faWallet,
|
|
54
|
+
className: "shrink-0"
|
|
55
|
+
}), "Continue with wallet"]
|
|
56
|
+
})
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
var canDisconnect = function canDisconnect(provider, shouldShowDisconnect) {
|
|
60
|
+
return shouldShowDisconnect && provider.connectedAddresses && provider.connectedAddresses.length > 0;
|
|
61
|
+
};
|
|
62
|
+
function ExternalWalletChainSelector(props) {
|
|
63
|
+
var _providers$, _providers$0$info$nam, _providers$2;
|
|
64
|
+
var providers = props.providers,
|
|
65
|
+
onSelect = props.onSelect,
|
|
66
|
+
onDisconnect = props.onDisconnect;
|
|
67
|
+
var _useZeroXKey = useZeroXKey(),
|
|
68
|
+
walletProviders = _useZeroXKey.walletProviders;
|
|
69
|
+
var _useModal = useModal(),
|
|
70
|
+
isMobile = _useModal.isMobile,
|
|
71
|
+
popPage = _useModal.popPage;
|
|
72
|
+
// we find matching providers in current state
|
|
73
|
+
var currentProviders = providers.map(function (inputProvider) {
|
|
74
|
+
return walletProviders.find(function (p) {
|
|
75
|
+
return p.interfaceType === inputProvider.interfaceType && p.chainInfo.namespace === inputProvider.chainInfo.namespace;
|
|
76
|
+
});
|
|
77
|
+
}).filter(function (p) {
|
|
78
|
+
return p !== undefined;
|
|
79
|
+
});
|
|
80
|
+
// if no providers are found then that means that the user entered this screen
|
|
81
|
+
// while WalletConnect was still initializing, and then it failed to initialize
|
|
82
|
+
useEffect(function () {
|
|
83
|
+
if (currentProviders.length === 0) {
|
|
84
|
+
popPage();
|
|
85
|
+
}
|
|
86
|
+
}, [currentProviders.length, popPage]);
|
|
87
|
+
var shouldShowDisconnect = onDisconnect !== undefined;
|
|
88
|
+
var handleSelect = function handleSelect(provider) {
|
|
89
|
+
if (canDisconnect(provider, shouldShowDisconnect)) {
|
|
90
|
+
onDisconnect(provider);
|
|
91
|
+
} else {
|
|
92
|
+
onSelect(provider);
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
return jsxs("div", {
|
|
96
|
+
className: clsx("flex flex-col w-72 gap-4 mt-11 items-center justify-center", isMobile ? "w-full" : "w-72"),
|
|
97
|
+
children: [jsx("img", {
|
|
98
|
+
src: (_providers$ = providers[0]) === null || _providers$ === void 0 ? void 0 : _providers$.info.icon,
|
|
99
|
+
className: "size-14 rounded-full"
|
|
100
|
+
}), jsxs("span", {
|
|
101
|
+
className: "text-sm text-center text-icon-text-light dark:text-icon-text-dark",
|
|
102
|
+
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."]
|
|
103
|
+
}), jsx("div", {
|
|
104
|
+
className: "w-full flex flex-col gap-2",
|
|
105
|
+
children: providers.map(function (p) {
|
|
106
|
+
var _p$connectedAddresses, _p$connectedAddresses2;
|
|
107
|
+
var _useState3 = useState(false),
|
|
108
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
109
|
+
isHovering = _useState4[0],
|
|
110
|
+
setIsHovering = _useState4[1];
|
|
111
|
+
return jsxs(ActionButton, {
|
|
112
|
+
onClick: function onClick() {
|
|
113
|
+
return handleSelect(p);
|
|
114
|
+
},
|
|
115
|
+
onMouseEnter: function onMouseEnter() {
|
|
116
|
+
return setIsHovering(true);
|
|
117
|
+
},
|
|
118
|
+
onMouseLeave: function onMouseLeave() {
|
|
119
|
+
return setIsHovering(false);
|
|
120
|
+
},
|
|
121
|
+
className: "relative overflow-hidden flex items-center justify-start gap-2 w-full text-inherit bg-button-light dark:bg-button-dark",
|
|
122
|
+
children: [isEthereumProvider(p) ? jsxs("div", {
|
|
123
|
+
className: "relative",
|
|
124
|
+
children: [jsx(EthereumLogo, {
|
|
125
|
+
className: "size-5"
|
|
126
|
+
}), canDisconnect(p, shouldShowDisconnect) && jsx(ConnectedIndicator, {
|
|
127
|
+
isPinging: true
|
|
128
|
+
})]
|
|
129
|
+
}) : isSolanaProvider(p) ? jsxs("div", {
|
|
130
|
+
className: "relative",
|
|
131
|
+
children: [jsx(SolanaLogo, {
|
|
132
|
+
className: "size-5"
|
|
133
|
+
}), canDisconnect(p, shouldShowDisconnect) && jsx(ConnectedIndicator, {
|
|
134
|
+
isPinging: true
|
|
135
|
+
})]
|
|
136
|
+
}) :
|
|
137
|
+
// we should never reach here
|
|
138
|
+
// if we do then it means we forgot to update the auth component after adding a new chain
|
|
139
|
+
jsx("div", {
|
|
140
|
+
className: "relative",
|
|
141
|
+
children: jsx("span", {
|
|
142
|
+
className: "size-5 flex items-center justify-center rounded bg-gray-300 dark:bg-gray-700",
|
|
143
|
+
children: "?"
|
|
144
|
+
})
|
|
145
|
+
}), jsxs("div", {
|
|
146
|
+
className: "flex flex-col items-start",
|
|
147
|
+
children: [isEthereumProvider(p) ? "EVM" : isSolanaProvider(p) ? "Solana" : // we should never reach here
|
|
148
|
+
// if we do then it means we forgot to update the auth component after adding a new chain
|
|
149
|
+
"?", canDisconnect(p, shouldShowDisconnect) && jsxs("span", {
|
|
150
|
+
className: "text-xs text-icon-text-light dark:text-icon-text-dark",
|
|
151
|
+
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)]
|
|
152
|
+
})]
|
|
153
|
+
}), jsx(FontAwesomeIcon, {
|
|
154
|
+
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"),
|
|
155
|
+
size: canDisconnect(p, shouldShowDisconnect) ? "lg" : "1x",
|
|
156
|
+
icon: canDisconnect(p, shouldShowDisconnect) ? faClose : faChevronRight
|
|
157
|
+
})]
|
|
158
|
+
}, p.chainInfo.namespace);
|
|
159
|
+
})
|
|
160
|
+
})]
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
function ExternalWalletSelector(props) {
|
|
164
|
+
var onDisconnect = props.onDisconnect,
|
|
165
|
+
onSelect = props.onSelect;
|
|
166
|
+
var _useModal2 = useModal(),
|
|
167
|
+
pushPage = _useModal2.pushPage,
|
|
168
|
+
popPage = _useModal2.popPage,
|
|
169
|
+
isMobile = _useModal2.isMobile;
|
|
170
|
+
var _useZeroXKey2 = useZeroXKey(),
|
|
171
|
+
walletProviders = _useZeroXKey2.walletProviders;
|
|
172
|
+
var shouldShowDisconnect = onDisconnect !== undefined;
|
|
173
|
+
// Group providers by name
|
|
174
|
+
var grouped = walletProviders.reduce(function (acc, provider) {
|
|
175
|
+
var name = provider.info.name;
|
|
176
|
+
if (!acc[name]) acc[name] = [];
|
|
177
|
+
acc[name].push(provider);
|
|
178
|
+
return acc;
|
|
179
|
+
}, {});
|
|
180
|
+
var handleSelectGroup = function handleSelectGroup(group) {
|
|
181
|
+
if (group.length === 1) {
|
|
182
|
+
if (canDisconnect(group[0], shouldShowDisconnect)) {
|
|
183
|
+
onDisconnect(group[0]);
|
|
184
|
+
} else {
|
|
185
|
+
onSelect(group[0]);
|
|
186
|
+
}
|
|
187
|
+
} else {
|
|
188
|
+
pushPage({
|
|
189
|
+
key: "Select chain",
|
|
190
|
+
content: jsx(ExternalWalletChainSelector, {
|
|
191
|
+
providers: group,
|
|
192
|
+
onDisconnect: onDisconnect,
|
|
193
|
+
onSelect: onSelect
|
|
194
|
+
})
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
useEffect(function () {
|
|
199
|
+
// Don't show the selector if there's only one wallet provider
|
|
200
|
+
var groupedValues = Object.values(grouped);
|
|
201
|
+
if (groupedValues.length === 1) {
|
|
202
|
+
popPage(); // Remove this page from the stack so user doesn't get stuck in an infinite loop when pressing back
|
|
203
|
+
handleSelectGroup(groupedValues[0]);
|
|
204
|
+
}
|
|
205
|
+
}, [grouped]);
|
|
206
|
+
return Object.keys(grouped).length === 0 ? jsxs("div", {
|
|
207
|
+
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-72"),
|
|
208
|
+
children: [jsx("span", {
|
|
209
|
+
className: "text-sm font-medium",
|
|
210
|
+
children: "No wallet providers available."
|
|
211
|
+
}), jsx("span", {
|
|
212
|
+
children: "Only wallets supporting EIP-1193 (Ethereum) or the Solana wallet standard are supported."
|
|
213
|
+
})]
|
|
214
|
+
}) : jsx("div", {
|
|
215
|
+
className: clsx("w-72 min-h-42 max-h-64 mt-12 overflow-y-auto zeroxkey-scrollbar p-0.5", isMobile ? "w-full" : "w-72"),
|
|
216
|
+
children: jsx("div", {
|
|
217
|
+
className: "flex flex-col gap-2",
|
|
218
|
+
children: Object.entries(grouped).map(function (_ref2) {
|
|
219
|
+
var _ref3 = _slicedToArray(_ref2, 2),
|
|
220
|
+
name = _ref3[0],
|
|
221
|
+
group = _ref3[1];
|
|
222
|
+
var _useState5 = useState(false),
|
|
223
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
224
|
+
isHovering = _useState6[0],
|
|
225
|
+
setIsHovering = _useState6[1];
|
|
226
|
+
var first = group[0];
|
|
227
|
+
return jsxs(ActionButton, {
|
|
228
|
+
onMouseEnter: function onMouseEnter() {
|
|
229
|
+
return setIsHovering(true);
|
|
230
|
+
},
|
|
231
|
+
onMouseLeave: function onMouseLeave() {
|
|
232
|
+
return setIsHovering(false);
|
|
233
|
+
},
|
|
234
|
+
onClick: function onClick() {
|
|
235
|
+
return handleSelectGroup(group);
|
|
236
|
+
},
|
|
237
|
+
className: "relative flex items-center justify-between w-full text-inherit bg-button-light dark:bg-button-dark overflow-hidden",
|
|
238
|
+
children: [jsxs("div", {
|
|
239
|
+
className: "flex items-center gap-2 overflow-hidden",
|
|
240
|
+
children: [jsx("img", {
|
|
241
|
+
src: first === null || first === void 0 ? void 0 : first.info.icon,
|
|
242
|
+
alt: first === null || first === void 0 ? void 0 : first.info.name,
|
|
243
|
+
className: "size-6 rounded-full"
|
|
244
|
+
}), first === null || first === void 0 ? void 0 : first.info.name]
|
|
245
|
+
}), jsx("div", {
|
|
246
|
+
className: clsx("flex items-center transition-all gap-1"),
|
|
247
|
+
children: group.map(function (c, idx) {
|
|
248
|
+
var Logo;
|
|
249
|
+
if (isEthereumProvider(c)) {
|
|
250
|
+
Logo = EthereumLogo;
|
|
251
|
+
} else if (isSolanaProvider(c)) {
|
|
252
|
+
Logo = SolanaLogo;
|
|
253
|
+
} else {
|
|
254
|
+
// we should never reach here
|
|
255
|
+
// if we do then it means we forgot to update the auth component after adding a new chain
|
|
256
|
+
throw new Error("Unsupported provider namespace. Expected Ethereum or Solana.");
|
|
257
|
+
}
|
|
258
|
+
var delay = 50 + idx * 30; // Staggered delay: leftmost has largest
|
|
259
|
+
return jsxs("div", {
|
|
260
|
+
style: {
|
|
261
|
+
transitionDelay: "".concat(delay, "ms")
|
|
262
|
+
},
|
|
263
|
+
className: clsx("relative", "size-4", "transition-all duration-200", isHovering ? "-translate-x-8" : "translate-x-0"),
|
|
264
|
+
children: [jsx(Logo, {
|
|
265
|
+
className: "size-4"
|
|
266
|
+
}), canDisconnect(c, shouldShowDisconnect) && jsx(ConnectedIndicator, {
|
|
267
|
+
isPinging: isHovering
|
|
268
|
+
})]
|
|
269
|
+
}, c.chainInfo.namespace);
|
|
270
|
+
})
|
|
271
|
+
}), jsx(FontAwesomeIcon, {
|
|
272
|
+
className: clsx("absolute transition-all duration-200", isHovering ? "right-4" : "-right-4", group.length === 1 && canDisconnect(group[0], shouldShowDisconnect) ? "text-danger-light dark:text-danger-dark" : "text-icon-text-light dark:text-icon-text-dark"),
|
|
273
|
+
size: group.length === 1 && canDisconnect(group[0], shouldShowDisconnect) ? "lg" : "1x",
|
|
274
|
+
icon: group.length === 1 && canDisconnect(group[0], shouldShowDisconnect) ? faClose : faChevronRight
|
|
275
|
+
})]
|
|
276
|
+
}, name);
|
|
277
|
+
})
|
|
278
|
+
})
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
function DisconnectWalletScreen(props) {
|
|
282
|
+
var _provider$info$icon;
|
|
283
|
+
var provider = props.provider,
|
|
284
|
+
onDisconnect = props.onDisconnect;
|
|
285
|
+
var _useModal3 = useModal(),
|
|
286
|
+
isMobile = _useModal3.isMobile;
|
|
287
|
+
var _useState7 = useState(false),
|
|
288
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
289
|
+
isLoading = _useState8[0],
|
|
290
|
+
setIsLoading = _useState8[1];
|
|
291
|
+
var _useState9 = useState(false),
|
|
292
|
+
_useState0 = _slicedToArray(_useState9, 2),
|
|
293
|
+
hasError = _useState0[0],
|
|
294
|
+
setHasError = _useState0[1];
|
|
295
|
+
var handleDisconnect = /*#__PURE__*/function () {
|
|
296
|
+
var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
|
|
297
|
+
return _regenerator().w(function (_context2) {
|
|
298
|
+
while (1) switch (_context2.p = _context2.n) {
|
|
299
|
+
case 0:
|
|
300
|
+
setIsLoading(true);
|
|
301
|
+
setHasError(false);
|
|
302
|
+
_context2.p = 1;
|
|
303
|
+
_context2.n = 2;
|
|
304
|
+
return onDisconnect(provider);
|
|
305
|
+
case 2:
|
|
306
|
+
_context2.n = 4;
|
|
307
|
+
break;
|
|
308
|
+
case 3:
|
|
309
|
+
_context2.p = 3;
|
|
310
|
+
_context2.v;
|
|
311
|
+
setHasError(true);
|
|
312
|
+
case 4:
|
|
313
|
+
_context2.p = 4;
|
|
314
|
+
setIsLoading(false);
|
|
315
|
+
return _context2.f(4);
|
|
316
|
+
case 5:
|
|
317
|
+
return _context2.a(2);
|
|
318
|
+
}
|
|
319
|
+
}, _callee2, null, [[1, 3, 4, 5]]);
|
|
320
|
+
}));
|
|
321
|
+
return function handleDisconnect() {
|
|
322
|
+
return _ref4.apply(this, arguments);
|
|
323
|
+
};
|
|
324
|
+
}();
|
|
325
|
+
return jsxs("div", {
|
|
326
|
+
className: clsx("mt-8", isMobile ? "w-full" : "w-96"),
|
|
327
|
+
children: [jsxs("div", {
|
|
328
|
+
className: "mt-6 mb-5 flex flex-col items-center gap-3",
|
|
329
|
+
children: [jsx("img", {
|
|
330
|
+
src: (_provider$info$icon = provider.info.icon) !== null && _provider$info$icon !== void 0 ? _provider$info$icon : "",
|
|
331
|
+
className: "size-14 rounded-full"
|
|
332
|
+
}), jsx("div", {
|
|
333
|
+
className: clsx("text-2xl font-bold text-center", hasError && "text-danger-light dark:text-danger-dark"),
|
|
334
|
+
children: hasError ? "You can't disconnect this wallet!" : "Disconnect ".concat(provider.info.name)
|
|
335
|
+
}), jsx("div", {
|
|
336
|
+
className: "text-icon-text-light dark:text-icon-text-dark text-center !p-0",
|
|
337
|
+
children: hasError ? "Try disconnecting directly from the ".concat(provider.info.name, " app") : "You can always connect this wallet again later."
|
|
338
|
+
})]
|
|
339
|
+
}), jsx("div", {
|
|
340
|
+
className: "flex my-2 mt-0",
|
|
341
|
+
children: jsx(ActionButton, {
|
|
342
|
+
onClick: handleDisconnect,
|
|
343
|
+
loading: isLoading,
|
|
344
|
+
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"),
|
|
345
|
+
spinnerClassName: "text-primary-danger-text-light dark:text-primary-danger-text-dark",
|
|
346
|
+
children: "Disconnect Wallet"
|
|
347
|
+
})
|
|
348
|
+
})]
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
function ConnectedIndicator(props) {
|
|
352
|
+
var _props$isPinging = props.isPinging,
|
|
353
|
+
isPinging = _props$isPinging === void 0 ? false : _props$isPinging;
|
|
354
|
+
return jsxs("div", {
|
|
355
|
+
className: "flex absolute top-[-2px] right-0",
|
|
356
|
+
children: [isPinging && jsx("div", {
|
|
357
|
+
className: "absolute animate-ping size-[6px] bg-success-light dark:bg-success-dark rounded-full border border-modal-background-light dark:border-modal-background-dark"
|
|
358
|
+
}), jsx("div", {
|
|
359
|
+
className: "size-[6px] bg-success-light dark:bg-success-dark rounded-full border border-modal-background-light dark:border-modal-background-dark"
|
|
360
|
+
})]
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
function QRCodeDisplay(props) {
|
|
364
|
+
var uri = props.uri,
|
|
365
|
+
icon = props.icon,
|
|
366
|
+
isLoading = props.isLoading;
|
|
367
|
+
return jsxs("div", {
|
|
368
|
+
className: "relative inline-block",
|
|
369
|
+
children: [jsx(QRCodeSVG, {
|
|
370
|
+
className: clsx("block border border-modal-background-dark/20 dark:border-modal-background-light/20", "shadow-[0_0_42px] shadow-primary-light/50 dark:shadow-[0_0_42px] dark:shadow-primary-dark/50", isLoading && "blur-sm"),
|
|
371
|
+
value: uri,
|
|
372
|
+
imageSettings: {
|
|
373
|
+
src: icon,
|
|
374
|
+
width: 24,
|
|
375
|
+
height: 24,
|
|
376
|
+
excavate: true
|
|
377
|
+
},
|
|
378
|
+
size: 200
|
|
379
|
+
}), isLoading && jsx("div", {
|
|
380
|
+
className: "absolute inset-0 flex items-center justify-center",
|
|
381
|
+
children: jsx(Spinner, {
|
|
382
|
+
className: "size-12",
|
|
383
|
+
strokeWidth: 2
|
|
384
|
+
})
|
|
385
|
+
})]
|
|
386
|
+
});
|
|
387
|
+
}
|
|
388
|
+
function WalletConnectScreen(props) {
|
|
389
|
+
var _inputProvider$connec, _provider$connectedAd, _provider$connectedAd2, _provider$uri, _provider$info$icon2;
|
|
390
|
+
var inputProvider = props.provider,
|
|
391
|
+
onAction = props.onAction,
|
|
392
|
+
onDisconnect = props.onDisconnect,
|
|
393
|
+
successPageDuration = props.successPageDuration;
|
|
394
|
+
var _useModal4 = useModal(),
|
|
395
|
+
pushPage = _useModal4.pushPage,
|
|
396
|
+
popPages = _useModal4.popPages,
|
|
397
|
+
closeModal = _useModal4.closeModal,
|
|
398
|
+
isMobile = _useModal4.isMobile;
|
|
399
|
+
var _useZeroXKey3 = useZeroXKey(),
|
|
400
|
+
walletProviders = _useZeroXKey3.walletProviders;
|
|
401
|
+
var _useState1 = useState(false),
|
|
402
|
+
_useState10 = _slicedToArray(_useState1, 2),
|
|
403
|
+
isDisconnecting = _useState10[0],
|
|
404
|
+
setIsDisconnecting = _useState10[1];
|
|
405
|
+
var _useState11 = useState(false),
|
|
406
|
+
_useState12 = _slicedToArray(_useState11, 2),
|
|
407
|
+
isConnecting = _useState12[0],
|
|
408
|
+
setIsConnecting = _useState12[1];
|
|
409
|
+
var _useState13 = useState(false),
|
|
410
|
+
_useState14 = _slicedToArray(_useState13, 2),
|
|
411
|
+
disconnectError = _useState14[0],
|
|
412
|
+
setDisconnectError = _useState14[1];
|
|
413
|
+
var _useState15 = useState(((_inputProvider$connec = inputProvider.connectedAddresses) === null || _inputProvider$connec === void 0 ? void 0 : _inputProvider$connec.length) > 0),
|
|
414
|
+
_useState16 = _slicedToArray(_useState15, 2),
|
|
415
|
+
showConnectedScreen = _useState16[0],
|
|
416
|
+
setShowConnectedScreen = _useState16[1];
|
|
417
|
+
var _useState17 = useState(false),
|
|
418
|
+
_useState18 = _slicedToArray(_useState17, 2),
|
|
419
|
+
showCopied = _useState18[0],
|
|
420
|
+
setShowCopied = _useState18[1];
|
|
421
|
+
// Use a ref to track the latest provider for use in callbacks
|
|
422
|
+
var latestProviderRef = useRef(null);
|
|
423
|
+
// Find the current provider state
|
|
424
|
+
var provider = walletProviders.find(function (p) {
|
|
425
|
+
return p.interfaceType === inputProvider.interfaceType && p.chainInfo.namespace === inputProvider.chainInfo.namespace;
|
|
426
|
+
});
|
|
427
|
+
// if provider is not found then that means that the user entered this screen
|
|
428
|
+
// while WalletConnect was still initializing, and then it failed to initialize
|
|
429
|
+
useEffect(function () {
|
|
430
|
+
if (!provider) {
|
|
431
|
+
// we have to go back two pages here since thats the screen
|
|
432
|
+
// we get wallet providers from state
|
|
433
|
+
popPages(2);
|
|
434
|
+
}
|
|
435
|
+
}, [provider, popPages]);
|
|
436
|
+
var connectedAccount = (_provider$connectedAd = provider === null || provider === void 0 ? void 0 : (_provider$connectedAd2 = provider.connectedAddresses) === null || _provider$connectedAd2 === void 0 ? void 0 : _provider$connectedAd2[0]) !== null && _provider$connectedAd !== void 0 ? _provider$connectedAd : null;
|
|
437
|
+
// Initial connection effect
|
|
438
|
+
useEffect(function () {
|
|
439
|
+
if (provider) {
|
|
440
|
+
latestProviderRef.current = provider;
|
|
441
|
+
// we don't try to connect if WalletConnect is still initializing or we are already connecting
|
|
442
|
+
if (!isConnecting && !provider.isLoading) {
|
|
443
|
+
var _provider$connectedAd3;
|
|
444
|
+
setShowConnectedScreen(((_provider$connectedAd3 = provider.connectedAddresses) === null || _provider$connectedAd3 === void 0 ? void 0 : _provider$connectedAd3.length) > 0);
|
|
445
|
+
runAction(provider);
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
}, [provider]);
|
|
449
|
+
// Handle the connection action - uses the ref to get latest provider
|
|
450
|
+
var runAction = useDebouncedCallback(/*#__PURE__*/function () {
|
|
451
|
+
var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(targetProvider) {
|
|
452
|
+
return _regenerator().w(function (_context3) {
|
|
453
|
+
while (1) switch (_context3.p = _context3.n) {
|
|
454
|
+
case 0:
|
|
455
|
+
setIsConnecting(true);
|
|
456
|
+
_context3.p = 1;
|
|
457
|
+
_context3.n = 2;
|
|
458
|
+
return onAction(targetProvider);
|
|
459
|
+
case 2:
|
|
460
|
+
pushPage({
|
|
461
|
+
key: "Connect Success",
|
|
462
|
+
content: jsx(SuccessPage, {
|
|
463
|
+
text: "Successfully connected to WalletConnect!",
|
|
464
|
+
onComplete: closeModal,
|
|
465
|
+
duration: successPageDuration
|
|
466
|
+
}),
|
|
467
|
+
preventBack: true,
|
|
468
|
+
showTitle: false
|
|
469
|
+
});
|
|
470
|
+
_context3.n = 4;
|
|
471
|
+
break;
|
|
472
|
+
case 3:
|
|
473
|
+
_context3.p = 3;
|
|
474
|
+
_context3.v;
|
|
475
|
+
case 4:
|
|
476
|
+
_context3.p = 4;
|
|
477
|
+
setIsConnecting(false);
|
|
478
|
+
return _context3.f(4);
|
|
479
|
+
case 5:
|
|
480
|
+
return _context3.a(2);
|
|
481
|
+
}
|
|
482
|
+
}, _callee3, null, [[1, 3, 4, 5]]);
|
|
483
|
+
}));
|
|
484
|
+
return function (_x) {
|
|
485
|
+
return _ref5.apply(this, arguments);
|
|
486
|
+
};
|
|
487
|
+
}(), 100);
|
|
488
|
+
var handleCopy = function handleCopy() {
|
|
489
|
+
setShowCopied(true);
|
|
490
|
+
navigator.clipboard.writeText("".concat(provider === null || provider === void 0 ? void 0 : provider.uri));
|
|
491
|
+
setTimeout(function () {
|
|
492
|
+
setShowCopied(false);
|
|
493
|
+
}, 1500);
|
|
494
|
+
};
|
|
495
|
+
// Handle disconnection - uses the ref to get the correct provider after state update
|
|
496
|
+
var handleDisconnect = /*#__PURE__*/function () {
|
|
497
|
+
var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4() {
|
|
498
|
+
var _t3;
|
|
499
|
+
return _regenerator().w(function (_context4) {
|
|
500
|
+
while (1) switch (_context4.p = _context4.n) {
|
|
501
|
+
case 0:
|
|
502
|
+
setIsDisconnecting(true);
|
|
503
|
+
setDisconnectError(false);
|
|
504
|
+
_context4.p = 1;
|
|
505
|
+
_context4.n = 2;
|
|
506
|
+
return onDisconnect === null || onDisconnect === void 0 ? void 0 : onDisconnect(latestProviderRef.current);
|
|
507
|
+
case 2:
|
|
508
|
+
_context4.n = 4;
|
|
509
|
+
break;
|
|
510
|
+
case 3:
|
|
511
|
+
_context4.p = 3;
|
|
512
|
+
_t3 = _context4.v;
|
|
513
|
+
console.error("Error disconnecting wallet:", _t3);
|
|
514
|
+
setDisconnectError(true);
|
|
515
|
+
case 4:
|
|
516
|
+
_context4.p = 4;
|
|
517
|
+
setIsDisconnecting(false);
|
|
518
|
+
setShowConnectedScreen(false);
|
|
519
|
+
return _context4.f(4);
|
|
520
|
+
case 5:
|
|
521
|
+
return _context4.a(2);
|
|
522
|
+
}
|
|
523
|
+
}, _callee4, null, [[1, 3, 4, 5]]);
|
|
524
|
+
}));
|
|
525
|
+
return function handleDisconnect() {
|
|
526
|
+
return _ref6.apply(this, arguments);
|
|
527
|
+
};
|
|
528
|
+
}();
|
|
529
|
+
return jsx("div", {
|
|
530
|
+
className: "p-3 flex flex-col items-center",
|
|
531
|
+
children: showConnectedScreen ? jsxs("div", {
|
|
532
|
+
className: clsx("mt-8 flex flex-col items-center gap-3", isMobile ? "w-full" : "w-96"),
|
|
533
|
+
children: [jsxs("div", {
|
|
534
|
+
className: "w-full justify-between flex items-center flex-1",
|
|
535
|
+
children: [jsx("div", {
|
|
536
|
+
className: clsx("flex items-center justify-center bg-icon-background-light dark:bg-icon-background-dark rounded-full p-2 text-icon-text-light dark:text-icon-text-dark", isMobile ? "size-18" : "size-24"),
|
|
537
|
+
children: jsx(FontAwesomeIcon, {
|
|
538
|
+
icon: faMobileScreen,
|
|
539
|
+
size: isMobile ? "3x" : "4x"
|
|
540
|
+
})
|
|
541
|
+
}), jsxs("div", {
|
|
542
|
+
className: "flex flex-row items-center justify-center space-x-2.5 font-medium text-icon-text-light dark:text-icon-text-dark",
|
|
543
|
+
children: [jsxs("div", {
|
|
544
|
+
className: "flex items-center justify-center",
|
|
545
|
+
children: [jsx("img", {
|
|
546
|
+
className: "size-5",
|
|
547
|
+
src: provider === null || provider === void 0 ? void 0 : provider.info.icon,
|
|
548
|
+
alt: "Wallet connect logo"
|
|
549
|
+
}), jsx("img", {
|
|
550
|
+
className: "size-5 absolute animate-ping",
|
|
551
|
+
src: provider === null || provider === void 0 ? void 0 : provider.info.icon,
|
|
552
|
+
alt: "Wallet connect logo"
|
|
553
|
+
})]
|
|
554
|
+
}), jsxs("span", {
|
|
555
|
+
children: [connectedAccount === null || connectedAccount === void 0 ? void 0 : connectedAccount.slice(0, 3), "...", connectedAccount === null || connectedAccount === void 0 ? void 0 : connectedAccount.slice(-3)]
|
|
556
|
+
})]
|
|
557
|
+
}), jsx("div", {
|
|
558
|
+
className: clsx("flex items-center justify-center bg-icon-background-light dark:bg-icon-background-dark rounded-full p-2 text-icon-text-light dark:text-icon-text-dark", isMobile ? "size-18" : "size-24"),
|
|
559
|
+
children: jsx(FontAwesomeIcon, {
|
|
560
|
+
icon: faLaptop,
|
|
561
|
+
size: isMobile ? "3x" : "4x"
|
|
562
|
+
})
|
|
563
|
+
})]
|
|
564
|
+
}), jsx("div", {
|
|
565
|
+
className: clsx("flex flex-row items-center mt-5 text-2xl font-bold text-center"),
|
|
566
|
+
children: "Already connected"
|
|
567
|
+
}), jsxs("div", {
|
|
568
|
+
className: "text-icon-text-light dark:text-icon-text-dark text-center text-xs flex flex-col space-y-2 !p-0",
|
|
569
|
+
children: [jsx("span", {
|
|
570
|
+
children: "Please open the wallet app on your phone to sign the message."
|
|
571
|
+
}), isDisconnecting ? jsx("span", {
|
|
572
|
+
className: "text-danger-light dark:text-danger-dark opacity-50",
|
|
573
|
+
children: "Disconnecting..."
|
|
574
|
+
}) : disconnectError ? jsx("span", {
|
|
575
|
+
className: "text-danger-light dark:text-danger-dark opacity-50",
|
|
576
|
+
children: "Error disconnecting wallet."
|
|
577
|
+
}) : jsxs("span", {
|
|
578
|
+
children: ["Need to connect a different wallet?", " ", jsx("span", {
|
|
579
|
+
className: "text-danger-light dark:text-danger-dark cursor-pointer underline",
|
|
580
|
+
onClick: handleDisconnect,
|
|
581
|
+
children: "Disconnect"
|
|
582
|
+
}), " ", "this wallet first."]
|
|
583
|
+
})]
|
|
584
|
+
})]
|
|
585
|
+
}) : jsxs("div", {
|
|
586
|
+
className: clsx("mt-8 flex flex-col items-center gap-3", isMobile ? "w-full" : "w-96"),
|
|
587
|
+
children: [jsx(QRCodeDisplay, {
|
|
588
|
+
uri: provider !== null && provider !== void 0 && provider.isLoading ? "https://www.0xkey.com/" : (_provider$uri = provider === null || provider === void 0 ? void 0 : provider.uri) !== null && _provider$uri !== void 0 ? _provider$uri : "",
|
|
589
|
+
icon: (_provider$info$icon2 = provider === null || provider === void 0 ? void 0 : provider.info.icon) !== null && _provider$info$icon2 !== void 0 ? _provider$info$icon2 : "",
|
|
590
|
+
isLoading: !!(provider !== null && provider !== void 0 && provider.isLoading)
|
|
591
|
+
}), jsxs(BaseButton, {
|
|
592
|
+
onClick: handleCopy,
|
|
593
|
+
className: clsx("text-xs font-semibold bg-transparent border-none text-icon-text-light dark:text-icon-text-dark", "flex flex-row items-center gap-x-2 px-3 py-2 rounded-full transition-all", "hover:bg-icon-background-light dark:hover:bg-icon-background-dark active:scale-95", (provider === null || provider === void 0 ? void 0 : provider.isLoading) && "invisible pointer-events-none"),
|
|
594
|
+
children: [jsx("span", {
|
|
595
|
+
children: "Copy link"
|
|
596
|
+
}), jsxs("div", {
|
|
597
|
+
className: "relative",
|
|
598
|
+
children: [jsx(FontAwesomeIcon, {
|
|
599
|
+
icon: showCopied ? faCheck : faCopy,
|
|
600
|
+
className: clsx("transition-colors", showCopied ? "text-success-light dark:text-success-dark" : "text-icon-text-light dark:text-icon-text-dark")
|
|
601
|
+
}), showCopied && jsx(FontAwesomeIcon, {
|
|
602
|
+
icon: faCheck,
|
|
603
|
+
className: "absolute inset-0 m-auto text-success-light dark:text-success-dark animate-ping"
|
|
604
|
+
})]
|
|
605
|
+
})]
|
|
606
|
+
}), jsx("div", {
|
|
607
|
+
className: clsx("text-2xl font-bold text-center"),
|
|
608
|
+
children: provider !== null && provider !== void 0 && provider.isLoading ? "Initializing WalletConnect..." : "Use your phone"
|
|
609
|
+
}), jsx("div", {
|
|
610
|
+
className: "text-icon-text-light dark:text-icon-text-dark text-center !p-0",
|
|
611
|
+
children: provider !== null && provider !== void 0 && provider.isLoading ? "Preparing your connection. This will only take a moment." : "Scan this QR code with your WalletConnect-compatible wallet to connect"
|
|
612
|
+
})]
|
|
613
|
+
})
|
|
614
|
+
});
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
export { ConnectedIndicator, DisconnectWalletScreen, ExternalWalletChainSelector, ExternalWalletSelector, WalletAuthButton, WalletConnectScreen };
|
|
618
|
+
//# sourceMappingURL=Wallet.mjs.map
|