@n1xyz/wallet-widget 0.0.29 → 0.0.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +89 -11
- package/dist/Logic/sessionManager.js +8 -8
- package/dist/Logic/sessionManager.js.map +1 -1
- package/dist/Logic/transactionManager.d.ts +0 -22
- package/dist/Logic/transactionManager.js +0 -189
- package/dist/Logic/transactionManager.js.map +1 -1
- package/dist/Logic/utils.d.ts +3 -7
- package/dist/Logic/utils.js +3 -186
- package/dist/Logic/utils.js.map +1 -1
- package/dist/Modal/LoadingFallback.js +1 -1
- package/dist/Modal/LoadingFallback.js.map +1 -1
- package/dist/Modal/N1WalletModal.d.ts +1 -1
- package/dist/Modal/N1WalletModal.js +50 -205
- package/dist/Modal/N1WalletModal.js.map +1 -1
- package/dist/Modal/NTSFlow/views/CreateSessionView.d.ts +1 -1
- package/dist/Modal/NordFlow/NordFlow.js +44 -17
- package/dist/Modal/NordFlow/NordFlow.js.map +1 -1
- package/dist/Modal/NordFlow/components/ChainButton.d.ts +5 -2
- package/dist/Modal/NordFlow/components/ChainButton.js +16 -13
- package/dist/Modal/NordFlow/components/ChainButton.js.map +1 -1
- package/dist/Modal/NordFlow/components/EVMChainsButton.d.ts +2 -1
- package/dist/Modal/NordFlow/components/EVMChainsButton.js +11 -9
- package/dist/Modal/NordFlow/components/EVMChainsButton.js.map +1 -1
- package/dist/Modal/NordFlow/components/Header.d.ts +3 -1
- package/dist/Modal/NordFlow/components/Header.js +38 -4
- package/dist/Modal/NordFlow/components/Header.js.map +1 -1
- package/dist/Modal/NordFlow/components/ImageWithFallback.js +1 -1
- package/dist/Modal/NordFlow/components/ImageWithFallback.js.map +1 -1
- package/dist/Modal/NordFlow/components/MoreButton.d.ts +1 -1
- package/dist/Modal/NordFlow/components/MoreButton.js +4 -4
- package/dist/Modal/NordFlow/components/MoreButton.js.map +1 -1
- package/dist/Modal/NordFlow/components/TransactionTable.d.ts +1 -1
- package/dist/Modal/NordFlow/components/TransactionTable.js +11 -11
- package/dist/Modal/NordFlow/components/TransactionTable.js.map +1 -1
- package/dist/Modal/NordFlow/components/WaitingMessage.d.ts +3 -1
- package/dist/Modal/NordFlow/components/WaitingMessage.js +14 -3
- package/dist/Modal/NordFlow/components/WaitingMessage.js.map +1 -1
- package/dist/Modal/NordFlow/components/index.d.ts +0 -1
- package/dist/Modal/NordFlow/components/index.js +0 -1
- package/dist/Modal/NordFlow/components/index.js.map +1 -1
- package/dist/Modal/NordFlow/constants.js +12 -48
- package/dist/Modal/NordFlow/constants.js.map +1 -1
- package/dist/Modal/NordFlow/context/DepositContext.js +112 -41
- package/dist/Modal/NordFlow/context/DepositContext.js.map +1 -1
- package/dist/Modal/NordFlow/context/FlowContext.d.ts +1 -0
- package/dist/Modal/NordFlow/context/FlowContext.js +99 -6
- package/dist/Modal/NordFlow/context/FlowContext.js.map +1 -1
- package/dist/Modal/NordFlow/context/WalletConnectContext.js +76 -20
- package/dist/Modal/NordFlow/context/WalletConnectContext.js.map +1 -1
- package/dist/Modal/NordFlow/hoc/withImageFallback.js.map +1 -1
- package/dist/Modal/NordFlow/hooks/useTestnetFaucet.d.ts +2 -1
- package/dist/Modal/NordFlow/hooks/useTestnetFaucet.js +26 -7
- package/dist/Modal/NordFlow/hooks/useTestnetFaucet.js.map +1 -1
- package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.d.ts +1 -1
- package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.js +10 -15
- package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.js.map +1 -1
- package/dist/Modal/NordFlow/screens/02-ChainSelectionScreen.js +103 -54
- package/dist/Modal/NordFlow/screens/02-ChainSelectionScreen.js.map +1 -1
- package/dist/Modal/NordFlow/screens/03-AmountInputScreen.d.ts +1 -2
- package/dist/Modal/NordFlow/screens/03-AmountInputScreen.js +284 -60
- package/dist/Modal/NordFlow/screens/03-AmountInputScreen.js.map +1 -1
- package/dist/Modal/NordFlow/screens/04-DepositProgressScreen.js +2 -2
- package/dist/Modal/NordFlow/screens/04-DepositProgressScreen.js.map +1 -1
- package/dist/Modal/NordFlow/screens/05-DepositSuccessScreen.js +97 -110
- package/dist/Modal/NordFlow/screens/05-DepositSuccessScreen.js.map +1 -1
- package/dist/Modal/NordFlow/screens/06-AuthLoadingScreen.js +10 -8
- package/dist/Modal/NordFlow/screens/06-AuthLoadingScreen.js.map +1 -1
- package/dist/Modal/NordFlow/screens/index.d.ts +5 -9
- package/dist/Modal/NordFlow/screens/index.js +5 -9
- package/dist/Modal/NordFlow/screens/index.js.map +1 -1
- package/dist/Modal/NordFlow/types.d.ts +13 -3
- package/dist/Modal/NordFlow/types.js +4 -3
- package/dist/Modal/NordFlow/types.js.map +1 -1
- package/dist/Modal/NordFlow/utils/depositStorage.d.ts +4 -0
- package/dist/Modal/NordFlow/utils/depositStorage.js +48 -0
- package/dist/Modal/NordFlow/utils/depositStorage.js.map +1 -0
- package/dist/Modal/NordFlow/utils/nordUtils.d.ts +1 -1
- package/dist/Modal/NordFlow/utils/nordUtils.js +1 -1
- package/dist/Modal/NordFlow/utils/nordUtils.js.map +1 -1
- package/dist/Provider/LazyWalletProvider.d.ts +1 -1
- package/dist/Provider/LazyWalletProvider.js +38 -38
- package/dist/Provider/LazyWalletProvider.js.map +1 -1
- package/dist/Provider/N1WalletProvider.d.ts +2 -1
- package/dist/Provider/N1WalletProvider.js +85 -82
- package/dist/Provider/N1WalletProvider.js.map +1 -1
- package/dist/Provider/ShadowRootWrapper.d.ts +1 -1
- package/dist/Provider/WalletErrorBoundary.d.ts +9 -2
- package/dist/Provider/WalletErrorBoundary.js +19 -1
- package/dist/Provider/WalletErrorBoundary.js.map +1 -1
- package/dist/Provider/hooks/useNordUserInitialization.js +87 -35
- package/dist/Provider/hooks/useNordUserInitialization.js.map +1 -1
- package/dist/Provider/icons/CoinbaseWalletIcon.d.ts +1 -1
- package/dist/Provider/icons/ConnectionDotsSVG.d.ts +1 -1
- package/dist/Provider/icons/MetamaskIcon.d.ts +1 -1
- package/dist/Provider/icons/PhantomIcon.d.ts +1 -1
- package/dist/Provider/icons/UserIcon.d.ts +1 -1
- package/dist/Provider/icons/WalletConnectIcon.d.ts +1 -1
- package/dist/Provider/types.d.ts +18 -16
- package/dist/Provider/types.js +8 -2
- package/dist/Provider/types.js.map +1 -1
- package/dist/WidgetButton/N1ConnectButton.d.ts +1 -1
- package/dist/WidgetButton/N1ConnectButton.js +29 -10
- package/dist/WidgetButton/N1ConnectButton.js.map +1 -1
- package/dist/components/Logo.d.ts +2 -1
- package/dist/components/Logo.js +5 -2
- package/dist/components/Logo.js.map +1 -1
- package/dist/components/QRCodeLoader.d.ts +1 -1
- package/dist/components/QRCodeLoader.js +1 -1
- package/dist/components/QRCodeLoader.js.map +1 -1
- package/dist/components/logos/EVMChainsGroup.js +1 -1
- package/dist/components/logos/EVMChainsGroup.js.map +1 -1
- package/dist/components/logos/MoreChainsGroup.js +1 -1
- package/dist/components/logos/MoreChainsGroup.js.map +1 -1
- package/dist/components/logos/index.d.ts +0 -2
- package/dist/components/logos/index.js +0 -2
- package/dist/components/logos/index.js.map +1 -1
- package/dist/config/solana.d.ts +3 -15
- package/dist/config/solana.js +6 -29
- package/dist/config/solana.js.map +1 -1
- package/dist/embedded-main-css.d.ts +1 -1
- package/dist/embedded-main-css.js +1 -1
- package/dist/embedded-main-css.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/main.css +2 -2
- package/dist/polyfills/windowEthereumGuard.d.ts +6 -0
- package/dist/polyfills/windowEthereumGuard.js +28 -0
- package/dist/polyfills/windowEthereumGuard.js.map +1 -0
- package/package.json +26 -11
- package/dist/utils/dynamicImports.d.ts +0 -25
|
@@ -37,12 +37,13 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
37
37
|
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
38
38
|
import { useN1WalletContext, useN1WalletInternalContext, } from '../../../Provider/hooks';
|
|
39
39
|
import { useFlowStateContext } from '../context/FlowContext';
|
|
40
|
+
import { logger } from '../../../utils/logger';
|
|
40
41
|
/**
|
|
41
42
|
* Centralizes the faucet orchestration logic so it can be toggled from the widget entry point.
|
|
42
43
|
*/
|
|
43
44
|
export function useTestnetFaucet(_a) {
|
|
44
45
|
var _this = this;
|
|
45
|
-
var enabled = _a.enabled, balance = _a.balance, minDeposit = _a.minDeposit;
|
|
46
|
+
var enabled = _a.enabled, balance = _a.balance, minDeposit = _a.minDeposit, onBalanceRefresh = _a.onBalanceRefresh;
|
|
46
47
|
var address = useN1WalletContext().address;
|
|
47
48
|
var faucetUrl = useN1WalletInternalContext().faucetUrl;
|
|
48
49
|
var context = useFlowStateContext().context;
|
|
@@ -53,10 +54,28 @@ export function useTestnetFaucet(_a) {
|
|
|
53
54
|
var _d = useState(false), tokensObtained = _d[0], setTokensObtained = _d[1];
|
|
54
55
|
var _e = useState(false), showFaucetSuccess = _e[0], setShowFaucetSuccess = _e[1];
|
|
55
56
|
var refreshBalance = useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
57
|
+
var error_1;
|
|
56
58
|
return __generator(this, function (_a) {
|
|
57
|
-
|
|
59
|
+
switch (_a.label) {
|
|
60
|
+
case 0:
|
|
61
|
+
if (!onBalanceRefresh) {
|
|
62
|
+
return [2 /*return*/];
|
|
63
|
+
}
|
|
64
|
+
_a.label = 1;
|
|
65
|
+
case 1:
|
|
66
|
+
_a.trys.push([1, 3, , 4]);
|
|
67
|
+
return [4 /*yield*/, onBalanceRefresh()];
|
|
68
|
+
case 2:
|
|
69
|
+
_a.sent();
|
|
70
|
+
return [3 /*break*/, 4];
|
|
71
|
+
case 3:
|
|
72
|
+
error_1 = _a.sent();
|
|
73
|
+
logger.warn('Failed to refresh balance after faucet request', error_1);
|
|
74
|
+
return [3 /*break*/, 4];
|
|
75
|
+
case 4: return [2 /*return*/];
|
|
76
|
+
}
|
|
58
77
|
});
|
|
59
|
-
}); }, []);
|
|
78
|
+
}); }, [onBalanceRefresh]);
|
|
60
79
|
var shouldShowFaucet = useMemo(function () {
|
|
61
80
|
return enabled && Boolean(faucetUrl) && !tokensObtained;
|
|
62
81
|
}, [enabled, faucetUrl, tokensObtained]);
|
|
@@ -68,7 +87,7 @@ export function useTestnetFaucet(_a) {
|
|
|
68
87
|
showFaucetSuccess);
|
|
69
88
|
}, [shouldShowFaucet, isFaucetLoading, faucetError, showFaucetSuccess]);
|
|
70
89
|
var requestTestnetTokens = useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
71
|
-
var response, errorData,
|
|
90
|
+
var response, errorData, error_2;
|
|
72
91
|
return __generator(this, function (_a) {
|
|
73
92
|
switch (_a.label) {
|
|
74
93
|
case 0:
|
|
@@ -110,9 +129,9 @@ export function useTestnetFaucet(_a) {
|
|
|
110
129
|
setShowFaucetSuccess(false);
|
|
111
130
|
return [3 /*break*/, 9];
|
|
112
131
|
case 7:
|
|
113
|
-
|
|
114
|
-
console.error('Faucet error:',
|
|
115
|
-
setFaucetError(
|
|
132
|
+
error_2 = _a.sent();
|
|
133
|
+
console.error('Faucet error:', error_2);
|
|
134
|
+
setFaucetError(error_2 instanceof Error ? error_2.message : 'Failed to request tokens');
|
|
116
135
|
faucetFiredRef.current = false;
|
|
117
136
|
return [3 /*break*/, 9];
|
|
118
137
|
case 8:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTestnetFaucet.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/hooks/useTestnetFaucet.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC1E,OAAO,EACL,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"useTestnetFaucet.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/hooks/useTestnetFaucet.ts"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n useN1WalletContext,\n useN1WalletInternalContext,\n} from '../../../Provider/hooks';\nimport { useFlowStateContext } from '../context/FlowContext';\nimport { logger } from '../../../utils/logger';\n\ninterface UseTestnetFaucetParams {\n enabled: boolean;\n balance: number;\n minDeposit: number;\n onBalanceRefresh?: () => Promise<void>;\n}\n\ninterface UseTestnetFaucetResult {\n isFaucetLoading: boolean;\n faucetError: string | null;\n showFaucetSuccess: boolean;\n showFaucetOverlay: boolean;\n requestTestnetTokens: () => Promise<void>;\n}\n\n/**\n * Centralizes the faucet orchestration logic so it can be toggled from the widget entry point.\n */\nexport function useTestnetFaucet({\n enabled,\n balance,\n minDeposit,\n onBalanceRefresh,\n}: UseTestnetFaucetParams): UseTestnetFaucetResult {\n const { address } = useN1WalletContext();\n const { faucetUrl } = useN1WalletInternalContext();\n const { context } = useFlowStateContext();\n\n const faucetFiredRef = useRef(false);\n const prevBalanceRef = useRef(balance);\n\n const [isFaucetLoading, setIsFaucetLoading] = useState(false);\n const [faucetError, setFaucetError] = useState<string | null>(null);\n const [tokensObtained, setTokensObtained] = useState(false);\n const [showFaucetSuccess, setShowFaucetSuccess] = useState(false);\n\n const refreshBalance = useCallback(async () => {\n if (!onBalanceRefresh) {\n return;\n }\n try {\n await onBalanceRefresh();\n } catch (error) {\n logger.warn('Failed to refresh balance after faucet request', error);\n }\n }, [onBalanceRefresh]);\n\n const shouldShowFaucet = useMemo(() => {\n return enabled && Boolean(faucetUrl) && !tokensObtained;\n }, [enabled, faucetUrl, tokensObtained]);\n\n const showFaucetOverlay = useMemo(() => {\n if (!shouldShowFaucet) {\n return false;\n }\n\n return (\n (isFaucetLoading || faucetError !== null) ||\n showFaucetSuccess\n );\n }, [shouldShowFaucet, isFaucetLoading, faucetError, showFaucetSuccess]);\n\n const requestTestnetTokens = useCallback(async () => {\n if (!shouldShowFaucet || !address || !faucetUrl) return;\n if (faucetFiredRef.current) return;\n\n faucetFiredRef.current = true;\n\n try {\n setIsFaucetLoading(true);\n setFaucetError(null);\n setShowFaucetSuccess(false);\n\n const response = await fetch(faucetUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ address }),\n });\n\n if (!response.ok) {\n const errorData = await response\n .json()\n .catch(() => ({ error: 'Failed to request tokens' }));\n throw new Error(errorData.error || 'Failed to request tokens');\n }\n\n await response.json().catch(() => ({}));\n setTokensObtained(true);\n setShowFaucetSuccess(true);\n\n await refreshBalance();\n setShowFaucetSuccess(false);\n } catch (error) {\n console.error('Faucet error:', error);\n setFaucetError(\n error instanceof Error ? error.message : 'Failed to request tokens'\n );\n faucetFiredRef.current = false;\n } finally {\n setIsFaucetLoading(false);\n }\n }, [shouldShowFaucet, address, faucetUrl, refreshBalance]);\n\n useEffect(() => {\n if (\n !shouldShowFaucet ||\n isFaucetLoading ||\n faucetError ||\n showFaucetSuccess ||\n context.depositError != null ||\n faucetFiredRef.current\n ) {\n return;\n }\n\n requestTestnetTokens();\n }, [\n shouldShowFaucet,\n isFaucetLoading,\n faucetError,\n showFaucetSuccess,\n context.depositError,\n requestTestnetTokens,\n ]);\n\n useEffect(() => {\n if (balance > prevBalanceRef.current && balance >= minDeposit) {\n setTokensObtained(false);\n setShowFaucetSuccess(false);\n } else if (balance < minDeposit / 2) {\n faucetFiredRef.current = false;\n setTokensObtained(false);\n }\n\n prevBalanceRef.current = balance;\n }, [balance, minDeposit]);\n\n return {\n isFaucetLoading,\n faucetError,\n showFaucetSuccess,\n showFaucetOverlay,\n requestTestnetTokens,\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function ConnectWalletScreen(): JSX.Element;
|
|
1
|
+
export declare function ConnectWalletScreen(): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,24 +1,19 @@
|
|
|
1
|
-
import { jsx as _jsx
|
|
2
|
-
import { useEffect
|
|
3
|
-
// import { IoMdWallet } from 'react-icons/io';
|
|
4
|
-
import { LoadingSquares } from '../components/LoadingSquares';
|
|
5
|
-
import { ANIMATION_EASE } from '../constants';
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect } from 'react';
|
|
6
3
|
import { useWalletConnectContext } from '../context/WalletConnectContext';
|
|
4
|
+
import { WaitingMessage } from '../components/WaitingMessage';
|
|
7
5
|
export function ConnectWalletScreen() {
|
|
8
6
|
var _a = useWalletConnectContext(), isConnecting = _a.isConnecting, connectWallet = _a.connectWallet;
|
|
9
|
-
var _b = useState(null), isHovered = _b[0], setIsHovered = _b[1];
|
|
10
7
|
useEffect(function () {
|
|
11
8
|
if (!isConnecting) {
|
|
12
9
|
connectWallet();
|
|
13
10
|
}
|
|
14
|
-
}, [isConnecting]);
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
transform: isHovered === 'wallet' ? 'scale(0.99)' : 'scale(1)',
|
|
22
|
-
}, children: _jsx("div", { className: "relative z-[200] pl-4 isolate", children: _jsx("div", { className: "flex items-center", children: _jsx("span", { className: "\n ml-2 text-base font-medium tracking-wide transition-colors duration-300 ".concat(ANIMATION_EASE, "\n text-n1-ww-gray-500 dark:text-neutral-400 group-hover:text-n1-ww-gray-900 dark:group-hover:text-white\n "), children: "Continue with Wallet" }) }) }) }), _jsx("button", { disabled: true, onMouseEnter: function () { return setIsHovered('google'); }, onMouseLeave: function () { return setIsHovered(null); }, className: "\n group relative w-full overflow-hidden rounded-md border-2 bg-n1-ww-gray-100 dark:bg-neutral-950 py-4 text-center\n transition-all duration-300 ".concat(ANIMATION_EASE, "\n cursor-not-allowed border-n1-ww-gray-200 dark:border-n1-ww-gray-800 opacity-50\n "), children: _jsx("div", { className: "relative z-[200] pl-4 isolate", children: _jsx("div", { className: "flex items-center", children: _jsx("span", { className: "text-base font-medium tracking-wide text-n1-ww-gray-500 dark:text-neutral-400", children: "Continue with Google (soon)" }) }) }) }), _jsx("button", { disabled: true, onMouseEnter: function () { return setIsHovered('email'); }, onMouseLeave: function () { return setIsHovered(null); }, className: "\n group relative w-full overflow-hidden rounded-md border-2 bg-n1-ww-gray-100 dark:bg-neutral-950 py-4 text-center\n transition-all duration-300 ".concat(ANIMATION_EASE, "\n cursor-not-allowed border-n1-ww-gray-200 dark:border-n1-ww-gray-800 opacity-50\n "), children: _jsx("div", { className: "relative z-[200] pl-4 isolate", children: _jsx("div", { className: "flex items-center", children: _jsx("span", { className: "text-base font-medium tracking-wide text-n1-ww-gray-500 dark:text-neutral-400", children: "Continue with Email (soon)" }) }) }) })] }) }));
|
|
11
|
+
}, [isConnecting, connectWallet]);
|
|
12
|
+
return (_jsx(WaitingMessage, { loaderSize: 52, message: {
|
|
13
|
+
visible: true,
|
|
14
|
+
title: 'Connecting Wallet',
|
|
15
|
+
subtitle: 'Please approve the connection request in your wallet',
|
|
16
|
+
isTyping: false,
|
|
17
|
+
} }));
|
|
23
18
|
}
|
|
24
19
|
//# sourceMappingURL=01-ConnectWalletScreen.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"01-ConnectWalletScreen.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/screens/01-ConnectWalletScreen.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"01-ConnectWalletScreen.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/screens/01-ConnectWalletScreen.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,MAAM,UAAU,mBAAmB;IAC3B,IAAA,KAAkC,uBAAuB,EAAE,EAAzD,YAAY,kBAAA,EAAE,aAAa,mBAA8B,CAAC;IAElE,SAAS,CAAC;QACR,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,aAAa,EAAE,CAAC;QAClB,CAAC;IACH,CAAC,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC;IAElC,OAAO,CACL,KAAC,cAAc,IACb,UAAU,EAAE,EAAE,EACd,OAAO,EAAE;YACP,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,mBAAmB;YAC1B,QAAQ,EAAE,sDAAsD;YAChE,QAAQ,EAAE,KAAK;SAChB,GACD,CACH,CAAC;AACJ,CAAC","sourcesContent":["import { useEffect } from 'react';\nimport { useWalletConnectContext } from '../context/WalletConnectContext';\nimport { WaitingMessage } from '../components/WaitingMessage';\n\nexport function ConnectWalletScreen() {\n const { isConnecting, connectWallet } = useWalletConnectContext();\n\n useEffect(() => {\n if (!isConnecting) {\n connectWallet();\n }\n }, [isConnecting, connectWallet]);\n\n return (\n <WaitingMessage\n loaderSize={52}\n message={{\n visible: true,\n title: 'Connecting Wallet',\n subtitle: 'Please approve the connection request in your wallet',\n isTyping: false,\n }}\n />\n );\n}\n"]}
|
|
@@ -1,66 +1,115 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useState } from
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { useFlowStateContext } from '../context/FlowContext';
|
|
11
|
-
import { FlowState } from '../types';
|
|
12
|
-
// Custom N1Logo wrapper that responds to the group hover state
|
|
13
|
-
var N1Logo = function (_a) {
|
|
14
|
-
var _b = _a.size, size = _b === void 0 ? 38 : _b;
|
|
15
|
-
return (_jsx("div", { className: "text-white group-hover:text-red-500 transition-colors duration-200", children: _jsx(Logo, { size: size }) }));
|
|
16
|
-
};
|
|
2
|
+
import { useCallback, useMemo, useState } from "react";
|
|
3
|
+
import { SolanaLogo, HyperliquidLogo, ArbitrumLogo, EthereumLogo } from "../../../components/logos";
|
|
4
|
+
import { SolanaNetwork } from "../../../config/solana";
|
|
5
|
+
import { logger } from "../../../utils/logger";
|
|
6
|
+
import { ChainButton } from "../components/ChainButton";
|
|
7
|
+
import { useWalletConnectContext } from "../context/WalletConnectContext";
|
|
8
|
+
import { useFlowStateContext } from "../context/FlowContext";
|
|
9
|
+
import { FlowState } from "../types";
|
|
17
10
|
export function ChainSelectionScreen() {
|
|
18
|
-
var
|
|
19
|
-
var _a =
|
|
20
|
-
//
|
|
21
|
-
var
|
|
22
|
-
logger.debug('Chain selected in ChainSelectionScreen:', chainId);
|
|
23
|
-
// Only allow devnet to be selected
|
|
24
|
-
if (chainId === 'devnet') {
|
|
25
|
-
setIsLoading(true);
|
|
26
|
-
transition(FlowState.AMOUNT_INPUT, { selectedChain: chainId });
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
logger.debug('Chain not allowed:', chainId);
|
|
30
|
-
// Could show a toast or message here
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
// Define the 4 options as requested
|
|
34
|
-
var chainsWithNetworkInfo = [
|
|
11
|
+
var disconnectWallet = useWalletConnectContext().disconnectWallet;
|
|
12
|
+
var _a = useFlowStateContext(), transition = _a.transition, context = _a.context;
|
|
13
|
+
// Define the chains
|
|
14
|
+
var chainsWithNetworkInfo = useMemo(function () { return [
|
|
35
15
|
{
|
|
36
|
-
id:
|
|
37
|
-
name:
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
16
|
+
id: "solana",
|
|
17
|
+
name: "Solana",
|
|
18
|
+
subtitle: "~1 minute deposit time",
|
|
19
|
+
logo: (_jsx("div", { className: "flex items-center justify-center", style: { width: 16, height: 16 }, children: _jsx(SolanaLogo, { width: 16, height: 16 }) })),
|
|
20
|
+
network: SolanaNetwork.MAINNET,
|
|
21
|
+
disabled: false,
|
|
22
|
+
soon: false,
|
|
41
23
|
},
|
|
42
24
|
{
|
|
43
|
-
id:
|
|
44
|
-
name:
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
25
|
+
id: "hyperliquid",
|
|
26
|
+
name: "Hyperliquid",
|
|
27
|
+
subtitle: undefined,
|
|
28
|
+
logo: (_jsx("div", { className: "flex items-center justify-center", style: { width: 16, height: 16 }, children: _jsx(HyperliquidLogo, { width: 16, height: 16 }) })),
|
|
29
|
+
network: "",
|
|
30
|
+
disabled: false,
|
|
31
|
+
soon: true,
|
|
48
32
|
},
|
|
49
33
|
{
|
|
50
|
-
id:
|
|
51
|
-
name:
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
34
|
+
id: "arbitrum",
|
|
35
|
+
name: "Arbitrum",
|
|
36
|
+
subtitle: undefined,
|
|
37
|
+
logo: (_jsx("div", { className: "flex items-center justify-center", style: { width: 16, height: 16 }, children: _jsx(ArbitrumLogo, { width: 16, height: 16 }) })),
|
|
38
|
+
network: "",
|
|
39
|
+
disabled: false,
|
|
40
|
+
soon: true,
|
|
55
41
|
},
|
|
56
42
|
{
|
|
57
|
-
id:
|
|
58
|
-
name:
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
43
|
+
id: "ethereum",
|
|
44
|
+
name: "Ethereum",
|
|
45
|
+
subtitle: undefined,
|
|
46
|
+
logo: (_jsx("div", { className: "flex items-center justify-center", style: { width: 16, height: 16 }, children: _jsx(EthereumLogo, { width: 16, height: 16 }) })),
|
|
47
|
+
network: "",
|
|
48
|
+
disabled: false,
|
|
49
|
+
soon: true,
|
|
62
50
|
},
|
|
63
|
-
];
|
|
64
|
-
|
|
51
|
+
]; }, []);
|
|
52
|
+
var initialSelectedChainId = useMemo(function () {
|
|
53
|
+
var _a;
|
|
54
|
+
if (context.selectedChainId) {
|
|
55
|
+
var chainFromId = chainsWithNetworkInfo.find(function (chain) { return chain.id === context.selectedChainId; });
|
|
56
|
+
if (chainFromId) {
|
|
57
|
+
return chainFromId.id;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (context.selectedChain) {
|
|
61
|
+
var normalizedContextValue_1 = context.selectedChain.toLowerCase();
|
|
62
|
+
var chainFromContext = chainsWithNetworkInfo.find(function (chain) {
|
|
63
|
+
return chain.name.toLowerCase() === normalizedContextValue_1 ||
|
|
64
|
+
chain.id.toLowerCase() === normalizedContextValue_1;
|
|
65
|
+
});
|
|
66
|
+
if (chainFromContext) {
|
|
67
|
+
return chainFromContext.id;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return ((_a = chainsWithNetworkInfo.find(function (c) { return !c.disabled && !c.soon; })) === null || _a === void 0 ? void 0 : _a.id) || null;
|
|
71
|
+
}, [chainsWithNetworkInfo, context.selectedChain, context.selectedChainId]);
|
|
72
|
+
// Initialize with first enabled chain selected
|
|
73
|
+
var _b = useState(initialSelectedChainId), selectedChainId = _b[0], setSelectedChainId = _b[1];
|
|
74
|
+
// Handle chain selection - only Solana can be selected
|
|
75
|
+
var handleChainSelect = useCallback(function (chainId) {
|
|
76
|
+
logger.debug("Chain selected in ChainSelectionScreen:", chainId);
|
|
77
|
+
// Find the chain to check if it's disabled or "soon"
|
|
78
|
+
var chain = chainsWithNetworkInfo.find(function (c) { return c.id === chainId; });
|
|
79
|
+
// Only update selection if chain is not disabled and not "soon" (only Solana)
|
|
80
|
+
if (chain && !chain.disabled && !chain.soon) {
|
|
81
|
+
// Select the chain (only one can be selected at a time)
|
|
82
|
+
setSelectedChainId(chainId);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
logger.debug("Chain not selectable:", chainId);
|
|
86
|
+
}
|
|
87
|
+
}, [chainsWithNetworkInfo]);
|
|
88
|
+
var selectedChain = useMemo(function () { return chainsWithNetworkInfo.find(function (chain) { return chain.id === selectedChainId; }); }, [chainsWithNetworkInfo, selectedChainId]);
|
|
89
|
+
var handleContinue = useCallback(function () {
|
|
90
|
+
var _a;
|
|
91
|
+
if (!selectedChain || selectedChain.disabled || selectedChain.soon) {
|
|
92
|
+
logger.debug("Continue button clicked without selectable chain");
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
var didTransition = transition(FlowState.AMOUNT_INPUT, {
|
|
96
|
+
selectedChain: selectedChain.name,
|
|
97
|
+
selectedChainId: selectedChain.id,
|
|
98
|
+
selectedChainNetwork: (_a = selectedChain.network) !== null && _a !== void 0 ? _a : null,
|
|
99
|
+
depositError: undefined,
|
|
100
|
+
lastDeposit: null,
|
|
101
|
+
});
|
|
102
|
+
if (!didTransition) {
|
|
103
|
+
logger.warn("Failed to transition to amount input from chain selection");
|
|
104
|
+
}
|
|
105
|
+
}, [selectedChain, transition]);
|
|
106
|
+
var handleDisconnect = useCallback(function () {
|
|
107
|
+
logger.debug("Disconnect button clicked");
|
|
108
|
+
disconnectWallet();
|
|
109
|
+
}, [disconnectWallet]);
|
|
110
|
+
var isContinueDisabled = !selectedChain || selectedChain.disabled || selectedChain.soon;
|
|
111
|
+
return (_jsx("div", { className: "overflow-visible relative", children: _jsxs("div", { className: "flex flex-col space-y-3", children: [chainsWithNetworkInfo.map(function (chain) { return (_jsx(ChainButton, { chain: chain, onClick: function () { return handleChainSelect(chain.id); }, disabled: chain.disabled, selected: selectedChainId === chain.id && !chain.soon, soon: chain.soon, subtitle: chain.subtitle }, chain.id)); }), _jsxs("div", { className: "flex flex-col space-y-2", children: [_jsx("button", { type: "button", onClick: handleContinue, disabled: isContinueDisabled, className: "w-full h-8 rounded border bg-transparent flex font-medium items-center justify-center transition-all duration-200 transform ".concat(isContinueDisabled
|
|
112
|
+
? "border-n1-ww-border opacity-50 cursor-not-allowed"
|
|
113
|
+
: "border-n1-ww-main hover:bg-n1-ww-gray-900 cursor-pointer"), children: _jsx("span", { className: "font-medium text-sm opacity-90 ".concat(isContinueDisabled ? "text-n1-ww-gray-500" : "text-n1-ww-main"), children: "Continue" }) }), _jsx("button", { type: "button", onClick: handleDisconnect, className: "w-full h-8 rounded border border-n1-ww-border bg-transparent flex font-medium items-center justify-center transition-all duration-200 transform hover:bg-n1-ww-gray-900 cursor-pointer", children: _jsx("span", { className: "text-white font-medium text-sm opacity-90", children: "Disconnect" }) })] })] }) }));
|
|
65
114
|
}
|
|
66
115
|
//# sourceMappingURL=02-ChainSelectionScreen.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"02-ChainSelectionScreen.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/screens/02-ChainSelectionScreen.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useState } from 'react';\nimport Logo from '../../../components/Logo';\nimport { SolanaLogo } from '../../../components/logos';\nimport { SolanaNetwork } from '../../../config/solana';\nimport { logger } from '../../../utils/logger';\nimport { ChainButton } from '../components/ChainButton';\nimport { EVMChainsButton } from '../components/EVMChainsButton';\nimport { MoreButton } from '../components/MoreButton';\nimport { useFlowStateContext } from '../context/FlowContext';\nimport { FlowState } from '../types';\n\n// Custom N1Logo wrapper that responds to the group hover state\nconst N1Logo = ({ size = 38 }) => (\n <div className=\"text-white group-hover:text-red-500 transition-colors duration-200\">\n <Logo size={size} />\n </div>\n);\n\nexport function ChainSelectionScreen() {\n const { transition } = useFlowStateContext();\n const [isLoading, setIsLoading] = useState(false);\n\n // Only allow devnet, gray out other chains\n const handleChainSelect = (chainId: string) => {\n logger.debug('Chain selected in ChainSelectionScreen:', chainId);\n\n // Only allow devnet to be selected\n if (chainId === 'devnet') {\n setIsLoading(true);\n transition(FlowState.AMOUNT_INPUT, { selectedChain: chainId });\n } else {\n logger.debug('Chain not allowed:', chainId);\n // Could show a toast or message here\n }\n };\n\n // Define the 4 options as requested\n const chainsWithNetworkInfo = [\n {\n id: 'devnet',\n name: 'Devnet',\n logo: (\n <div\n className=\"flex items-center justify-center\"\n style={{ width: 48, height: 48 }}\n >\n <N1Logo />\n </div>\n ),\n network: SolanaNetwork.DEVNET,\n disabled: false, // Only devnet is clickable\n },\n {\n id: 'solana',\n name: 'Solana',\n logo: (\n <div\n className=\"flex items-center justify-center\"\n style={{ width: 48, height: 48 }}\n >\n <SolanaLogo width={36} height={36} />\n </div>\n ),\n network: SolanaNetwork.MAINNET,\n disabled: true,\n },\n {\n id: 'evm-chains',\n name: 'EVM Chains',\n logo: '', // Not needed as we're using EVMChainsButton\n network: '', // Empty string instead of null\n disabled: true,\n },\n {\n id: 'more',\n name: 'More',\n logo: '', // Not needed as we're using MoreButton\n network: '', // Empty string instead of null\n disabled: true,\n },\n ];\n\n return (\n <div className=\"overflow-hidden relative\">\n\n {isLoading ? (\n <div className=\"flex justify-center items-center py-8\">\n <div className=\"n1-ww-animate-spin rounded-full h-8 w-8 border-b-2 border-n1-ww-border\"></div>\n </div>\n ) : (\n <div className=\"space-y-8\">\n {/* First row: Devnet, Solana */}\n <div className=\"grid grid-cols-2 gap-4\">\n <ChainButton\n key={chainsWithNetworkInfo[0].id}\n chain={chainsWithNetworkInfo[0]}\n onClick={() => handleChainSelect(chainsWithNetworkInfo[0].id)}\n disabled={chainsWithNetworkInfo[0].disabled}\n />\n <ChainButton\n key={chainsWithNetworkInfo[1].id}\n chain={chainsWithNetworkInfo[1]}\n onClick={() => handleChainSelect(chainsWithNetworkInfo[1].id)}\n disabled={chainsWithNetworkInfo[1].disabled}\n />\n </div>\n\n {/* Second row: EVM Chains, More */}\n <div className=\"grid grid-cols-2 gap-4\">\n <EVMChainsButton\n key={chainsWithNetworkInfo[2].id}\n chain={chainsWithNetworkInfo[2]}\n onClick={() => handleChainSelect(chainsWithNetworkInfo[2].id)}\n disabled={chainsWithNetworkInfo[2].disabled}\n />\n <MoreButton\n key={chainsWithNetworkInfo[3].id}\n chain={chainsWithNetworkInfo[3]}\n onClick={() => handleChainSelect(chainsWithNetworkInfo[3].id)}\n disabled={chainsWithNetworkInfo[3].disabled}\n />\n </div>\n </div>\n )}\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"02-ChainSelectionScreen.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/screens/02-ChainSelectionScreen.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\nimport { \n SolanaLogo, \n HyperliquidLogo, \n ArbitrumLogo, \n EthereumLogo\n} from \"../../../components/logos\";\nimport { SolanaNetwork } from \"../../../config/solana\";\nimport { logger } from \"../../../utils/logger\";\nimport { ChainButton } from \"../components/ChainButton\";\nimport { useWalletConnectContext } from \"../context/WalletConnectContext\";\nimport { useFlowStateContext } from \"../context/FlowContext\";\nimport { FlowState } from \"../types\";\n\nexport function ChainSelectionScreen() {\n const { disconnectWallet } = useWalletConnectContext();\n const { transition, context } = useFlowStateContext();\n\n // Define the chains\n const chainsWithNetworkInfo = useMemo(\n () => [\n {\n id: \"solana\",\n name: \"Solana\",\n subtitle: \"~1 minute deposit time\",\n logo: (\n <div\n className=\"flex items-center justify-center\"\n style={{ width: 16, height: 16 }}\n >\n <SolanaLogo width={16} height={16} />\n </div>\n ),\n network: SolanaNetwork.MAINNET,\n disabled: false,\n soon: false,\n },\n {\n id: \"hyperliquid\",\n name: \"Hyperliquid\",\n subtitle: undefined,\n logo: (\n <div\n className=\"flex items-center justify-center\"\n style={{ width: 16, height: 16 }}\n >\n <HyperliquidLogo width={16} height={16} />\n </div>\n ),\n network: \"\",\n disabled: false,\n soon: true,\n },\n {\n id: \"arbitrum\",\n name: \"Arbitrum\",\n subtitle: undefined,\n logo: (\n <div\n className=\"flex items-center justify-center\"\n style={{ width: 16, height: 16 }}\n >\n <ArbitrumLogo width={16} height={16} />\n </div>\n ),\n network: \"\",\n disabled: false,\n soon: true,\n },\n {\n id: \"ethereum\",\n name: \"Ethereum\",\n subtitle: undefined,\n logo: (\n <div\n className=\"flex items-center justify-center\"\n style={{ width: 16, height: 16 }}\n >\n <EthereumLogo width={16} height={16} />\n </div>\n ),\n network: \"\",\n disabled: false,\n soon: true,\n },\n ],\n []\n );\n\n const initialSelectedChainId = useMemo(() => {\n if (context.selectedChainId) {\n const chainFromId = chainsWithNetworkInfo.find(\n (chain) => chain.id === context.selectedChainId\n );\n if (chainFromId) {\n return chainFromId.id;\n }\n }\n\n if (context.selectedChain) {\n const normalizedContextValue = context.selectedChain.toLowerCase();\n const chainFromContext = chainsWithNetworkInfo.find(\n (chain) =>\n chain.name.toLowerCase() === normalizedContextValue ||\n chain.id.toLowerCase() === normalizedContextValue\n );\n if (chainFromContext) {\n return chainFromContext.id;\n }\n }\n\n return chainsWithNetworkInfo.find((c) => !c.disabled && !c.soon)?.id || null;\n }, [chainsWithNetworkInfo, context.selectedChain, context.selectedChainId]);\n\n // Initialize with first enabled chain selected\n const [selectedChainId, setSelectedChainId] = useState<string | null>(\n initialSelectedChainId\n );\n\n // Handle chain selection - only Solana can be selected\n const handleChainSelect = useCallback((chainId: string) => {\n logger.debug(\"Chain selected in ChainSelectionScreen:\", chainId);\n\n // Find the chain to check if it's disabled or \"soon\"\n const chain = chainsWithNetworkInfo.find((c) => c.id === chainId);\n\n // Only update selection if chain is not disabled and not \"soon\" (only Solana)\n if (chain && !chain.disabled && !chain.soon) {\n // Select the chain (only one can be selected at a time)\n setSelectedChainId(chainId);\n } else {\n logger.debug(\"Chain not selectable:\", chainId);\n }\n }, [chainsWithNetworkInfo]);\n\n const selectedChain = useMemo(\n () => chainsWithNetworkInfo.find((chain) => chain.id === selectedChainId),\n [chainsWithNetworkInfo, selectedChainId]\n );\n\n const handleContinue = useCallback(() => {\n if (!selectedChain || selectedChain.disabled || selectedChain.soon) {\n logger.debug(\"Continue button clicked without selectable chain\");\n return;\n }\n\n const didTransition = transition(FlowState.AMOUNT_INPUT, {\n selectedChain: selectedChain.name,\n selectedChainId: selectedChain.id,\n selectedChainNetwork: selectedChain.network ?? null,\n depositError: undefined,\n lastDeposit: null,\n });\n\n if (!didTransition) {\n logger.warn(\"Failed to transition to amount input from chain selection\");\n }\n }, [selectedChain, transition]);\n\n const handleDisconnect = useCallback(() => {\n logger.debug(\"Disconnect button clicked\");\n disconnectWallet();\n }, [disconnectWallet]);\n\n const isContinueDisabled =\n !selectedChain || selectedChain.disabled || selectedChain.soon;\n\n return (\n <div className=\"overflow-visible relative\">\n <div className=\"flex flex-col space-y-3\">\n {chainsWithNetworkInfo.map((chain) => (\n <ChainButton\n key={chain.id}\n chain={chain}\n onClick={() => handleChainSelect(chain.id)}\n disabled={chain.disabled}\n selected={selectedChainId === chain.id && !chain.soon}\n soon={chain.soon}\n subtitle={chain.subtitle}\n />\n ))}\n <div className=\"flex flex-col space-y-2\">\n <button\n type=\"button\"\n onClick={handleContinue}\n disabled={isContinueDisabled}\n className={`w-full h-8 rounded border bg-transparent flex font-medium items-center justify-center transition-all duration-200 transform ${\n isContinueDisabled\n ? \"border-n1-ww-border opacity-50 cursor-not-allowed\"\n : \"border-n1-ww-main hover:bg-n1-ww-gray-900 cursor-pointer\"\n }`}\n >\n <span\n className={`font-medium text-sm opacity-90 ${\n isContinueDisabled ? \"text-n1-ww-gray-500\" : \"text-n1-ww-main\"\n }`}\n >\n Continue\n </span>\n </button>\n <button\n type=\"button\"\n onClick={handleDisconnect}\n className=\"w-full h-8 rounded border border-n1-ww-border bg-transparent flex font-medium items-center justify-center transition-all duration-200 transform hover:bg-n1-ww-gray-900 cursor-pointer\"\n >\n <span className=\"text-white font-medium text-sm opacity-90\">\n Disconnect\n </span>\n </button>\n </div>\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
interface AmountInputScreenProps {
|
|
2
|
-
isTestnet?: boolean;
|
|
3
2
|
}
|
|
4
|
-
export declare function AmountInputScreen({
|
|
3
|
+
export declare function AmountInputScreen({}: AmountInputScreenProps): import("react/jsx-runtime").JSX.Element;
|
|
5
4
|
export {};
|