@n1xyz/wallet-widget 0.0.30 → 0.0.33-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +117 -208
- package/dist/components/LoadingFallback.js.map +1 -0
- package/dist/{WidgetButton → components}/N1ConnectButton.js +3 -3
- package/dist/components/N1ConnectButton.js.map +1 -0
- package/dist/components/logos/ZeroOneLogo.d.ts +8 -0
- package/dist/components/logos/ZeroOneLogo.js +6 -0
- package/dist/components/logos/ZeroOneLogo.js.map +1 -0
- package/dist/components/logos/index.d.ts +1 -0
- package/dist/components/logos/index.js +1 -0
- package/dist/components/logos/index.js.map +1 -1
- package/dist/config/chains.js +2 -0
- package/dist/config/chains.js.map +1 -0
- package/dist/config/solana.js +1 -1
- package/dist/config/solana.js.map +1 -1
- package/dist/{Provider/context.d.ts → context/n1-wallet-context.d.ts} +2 -2
- package/dist/{Provider/context.js → context/n1-wallet-context.js} +1 -1
- package/dist/context/n1-wallet-context.js.map +1 -0
- package/dist/{Modal → features/onboarding-flow}/N1WalletModal.d.ts +1 -1
- package/dist/{Modal → features/onboarding-flow}/N1WalletModal.js +18 -15
- package/dist/features/onboarding-flow/N1WalletModal.js.map +1 -0
- package/dist/features/onboarding-flow/OnboardingFlow.d.ts +9 -0
- package/dist/features/onboarding-flow/OnboardingFlow.js +98 -0
- package/dist/features/onboarding-flow/OnboardingFlow.js.map +1 -0
- package/dist/{Modal/NordFlow → features/onboarding-flow}/components/ChainButton.d.ts +1 -2
- package/dist/features/onboarding-flow/components/ChainButton.js +21 -0
- package/dist/features/onboarding-flow/components/ChainButton.js.map +1 -0
- package/dist/{Modal/NordFlow → features/onboarding-flow}/components/Header.js +1 -1
- package/dist/features/onboarding-flow/components/Header.js.map +1 -0
- package/dist/features/onboarding-flow/components/ImageWithFallback.js.map +1 -0
- package/dist/{Modal/NordFlow → features/onboarding-flow}/components/TransactionTable.js +1 -1
- package/dist/features/onboarding-flow/components/TransactionTable.js.map +1 -0
- package/dist/features/onboarding-flow/components/WaitingMessage.js +17 -0
- package/dist/features/onboarding-flow/components/WaitingMessage.js.map +1 -0
- package/dist/features/onboarding-flow/components/index.js.map +1 -0
- package/dist/features/onboarding-flow/index.d.ts +1 -0
- package/dist/features/onboarding-flow/index.js +2 -0
- package/dist/features/onboarding-flow/index.js.map +1 -0
- package/dist/{Modal/NordFlow/context/DepositContext.d.ts → features/onboarding-flow/providers/DepositFlowProvider.d.ts} +9 -7
- package/dist/{Modal/NordFlow/context/DepositContext.js → features/onboarding-flow/providers/DepositFlowProvider.js} +228 -78
- package/dist/features/onboarding-flow/providers/DepositFlowProvider.js.map +1 -0
- package/dist/features/onboarding-flow/providers/OnboardingStateProvider.d.ts +48 -0
- package/dist/features/onboarding-flow/providers/OnboardingStateProvider.js +185 -0
- package/dist/features/onboarding-flow/providers/OnboardingStateProvider.js.map +1 -0
- package/dist/features/onboarding-flow/providers/StateProvider.d.ts +10 -0
- package/dist/features/onboarding-flow/providers/StateProvider.js +14 -0
- package/dist/features/onboarding-flow/providers/StateProvider.js.map +1 -0
- package/dist/features/onboarding-flow/providers/WalletConnectionProvider.d.ts +21 -0
- package/dist/features/onboarding-flow/providers/WalletConnectionProvider.js +394 -0
- package/dist/features/onboarding-flow/providers/WalletConnectionProvider.js.map +1 -0
- package/dist/features/onboarding-flow/providers/debug.d.ts +6 -0
- package/dist/features/onboarding-flow/providers/debug.js +63 -0
- package/dist/features/onboarding-flow/providers/debug.js.map +1 -0
- package/dist/features/onboarding-flow/providers/index.d.ts +5 -0
- package/dist/features/onboarding-flow/providers/index.js +8 -0
- package/dist/features/onboarding-flow/providers/index.js.map +1 -0
- package/dist/features/onboarding-flow/providers/onboardingStateMachine.d.ts +48 -0
- package/dist/features/onboarding-flow/providers/onboardingStateMachine.js +83 -0
- package/dist/features/onboarding-flow/providers/onboardingStateMachine.js.map +1 -0
- package/dist/{Modal/NordFlow → features/onboarding-flow}/screens/01-ConnectWalletScreen.js +2 -2
- package/dist/features/onboarding-flow/screens/01-ConnectWalletScreen.js.map +1 -0
- package/dist/features/onboarding-flow/screens/02-ChainSelectionScreen.d.ts +31 -0
- package/dist/features/onboarding-flow/screens/02-ChainSelectionScreen.js +100 -0
- package/dist/features/onboarding-flow/screens/02-ChainSelectionScreen.js.map +1 -0
- package/dist/{Modal/NordFlow → features/onboarding-flow}/screens/03-AmountInputScreen.d.ts +2 -0
- package/dist/{Modal/NordFlow → features/onboarding-flow}/screens/03-AmountInputScreen.js +123 -61
- package/dist/features/onboarding-flow/screens/03-AmountInputScreen.js.map +1 -0
- package/dist/features/onboarding-flow/screens/04-DepositProgressScreen.d.ts +3 -0
- package/dist/features/onboarding-flow/screens/04-DepositProgressScreen.js +31 -0
- package/dist/features/onboarding-flow/screens/04-DepositProgressScreen.js.map +1 -0
- package/dist/{Modal/NordFlow → features/onboarding-flow}/screens/05-DepositSuccessScreen.js +31 -26
- package/dist/features/onboarding-flow/screens/05-DepositSuccessScreen.js.map +1 -0
- package/dist/features/onboarding-flow/screens/06-AuthLoadingScreen.js +31 -0
- package/dist/features/onboarding-flow/screens/06-AuthLoadingScreen.js.map +1 -0
- package/dist/features/onboarding-flow/screens/07-ErrorScreen.js +14 -0
- package/dist/features/onboarding-flow/screens/07-ErrorScreen.js.map +1 -0
- package/dist/{Modal/NordFlow → features/onboarding-flow}/screens/index.d.ts +1 -0
- package/dist/{Modal/NordFlow → features/onboarding-flow}/screens/index.js +1 -0
- package/dist/features/onboarding-flow/screens/index.js.map +1 -0
- package/dist/{Modal/NordFlow → features/onboarding-flow}/types.d.ts +13 -16
- package/dist/features/onboarding-flow/types.js +34 -0
- package/dist/features/onboarding-flow/types.js.map +1 -0
- package/dist/features/onboarding-flow/utils/depositStorage.js.map +1 -0
- package/dist/features/onboarding-flow/utils/imageUtils.js.map +1 -0
- package/dist/{utils/dynamicNord.d.ts → features/onboarding-flow/utils/nordUser.d.ts} +0 -1
- package/dist/{utils/dynamicNord.js → features/onboarding-flow/utils/nordUser.js} +2 -13
- package/dist/features/onboarding-flow/utils/nordUser.js.map +1 -0
- package/dist/features/onboarding-flow/utils/nordUtils.js.map +1 -0
- package/dist/{Logic/sessionManager.d.ts → features/onboarding-flow/utils/session.d.ts} +2 -2
- package/dist/{Logic/sessionManager.js → features/onboarding-flow/utils/session.js} +36 -5
- package/dist/features/onboarding-flow/utils/session.js.map +1 -0
- package/dist/{Logic/transactionManager.js → features/onboarding-flow/utils/transaction.js} +1 -1
- package/dist/features/onboarding-flow/utils/transaction.js.map +1 -0
- package/dist/{Logic → features/onboarding-flow/utils}/utils.d.ts +1 -1
- package/dist/{Logic → features/onboarding-flow/utils}/utils.js +1 -1
- package/dist/features/onboarding-flow/utils/utils.js.map +1 -0
- package/dist/features/onboarding-flow/utils/withImageFallback.js.map +1 -0
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.js +3 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useN1Wallet.d.ts +2 -0
- package/dist/{Provider/hooks.js → hooks/useN1Wallet.js} +2 -2
- package/dist/hooks/useN1Wallet.js.map +1 -0
- package/dist/{Provider/hooks → hooks}/useNordUserInitialization.js +7 -7
- package/dist/hooks/useNordUserInitialization.js.map +1 -0
- package/dist/index.d.ts +4 -4
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/{Provider → providers}/LazyWalletProvider.js +34 -8
- package/dist/providers/LazyWalletProvider.js.map +1 -0
- package/dist/providers/N1WalletProvider.d.ts +3 -0
- package/dist/{Provider → providers}/N1WalletProvider.js +51 -22
- package/dist/providers/N1WalletProvider.js.map +1 -0
- package/dist/providers/ShadowRootWrapper.js.map +1 -0
- package/dist/providers/WalletErrorBoundary.js.map +1 -0
- package/dist/styles/embedded-main-css.d.ts +2 -0
- package/dist/styles/embedded-main-css.js +3 -0
- package/dist/styles/embedded-main-css.js.map +1 -0
- package/dist/styles/main.css +2 -0
- package/dist/{Provider/types.d.ts → types/wallet.d.ts} +7 -8
- package/dist/{Provider/types.js → types/wallet.js} +1 -1
- package/dist/types/wallet.js.map +1 -0
- package/dist/{Logic → utils}/getPseudoName.js.map +1 -1
- package/dist/{Logic → utils}/words.js.map +1 -1
- package/package.json +25 -21
- package/dist/Logic/sessionManager.js.map +0 -1
- package/dist/Logic/transactionManager.js.map +0 -1
- package/dist/Logic/utils.js.map +0 -1
- package/dist/Modal/LoadingFallback.js.map +0 -1
- package/dist/Modal/N1WalletModal.js.map +0 -1
- package/dist/Modal/NTSFlow/LoadingFallback.d.ts +0 -2
- package/dist/Modal/NTSFlow/LoadingFallback.js +0 -3
- package/dist/Modal/NTSFlow/LoadingFallback.js.map +0 -1
- package/dist/Modal/NTSFlow/NTSFlow.d.ts +0 -4
- package/dist/Modal/NTSFlow/NTSFlow.js +0 -35
- package/dist/Modal/NTSFlow/NTSFlow.js.map +0 -1
- package/dist/Modal/NTSFlow/components/BackButton.d.ts +0 -3
- package/dist/Modal/NTSFlow/components/BackButton.js +0 -26
- package/dist/Modal/NTSFlow/components/BackButton.js.map +0 -1
- package/dist/Modal/NTSFlow/components/ModalHeader.d.ts +0 -1
- package/dist/Modal/NTSFlow/components/ModalHeader.js +0 -21
- package/dist/Modal/NTSFlow/components/ModalHeader.js.map +0 -1
- package/dist/Modal/NTSFlow/index.d.ts +0 -1
- package/dist/Modal/NTSFlow/index.js +0 -2
- package/dist/Modal/NTSFlow/index.js.map +0 -1
- package/dist/Modal/NTSFlow/views/ConnectView.d.ts +0 -1
- package/dist/Modal/NTSFlow/views/ConnectView.js +0 -68
- package/dist/Modal/NTSFlow/views/ConnectView.js.map +0 -1
- package/dist/Modal/NTSFlow/views/CreateSessionView.d.ts +0 -1
- package/dist/Modal/NTSFlow/views/CreateSessionView.js +0 -246
- package/dist/Modal/NTSFlow/views/CreateSessionView.js.map +0 -1
- package/dist/Modal/NTSFlow/views/CreateUserView.d.ts +0 -1
- package/dist/Modal/NTSFlow/views/CreateUserView.js +0 -106
- package/dist/Modal/NTSFlow/views/CreateUserView.js.map +0 -1
- package/dist/Modal/NTSFlow/views/NoWhitelistView.d.ts +0 -1
- package/dist/Modal/NTSFlow/views/NoWhitelistView.js +0 -43
- package/dist/Modal/NTSFlow/views/NoWhitelistView.js.map +0 -1
- package/dist/Modal/NTSFlow/views/SigningView.d.ts +0 -1
- package/dist/Modal/NTSFlow/views/SigningView.js +0 -6
- package/dist/Modal/NTSFlow/views/SigningView.js.map +0 -1
- package/dist/Modal/NTSFlow/views/SuccessView.d.ts +0 -1
- package/dist/Modal/NTSFlow/views/SuccessView.js +0 -11
- package/dist/Modal/NTSFlow/views/SuccessView.js.map +0 -1
- package/dist/Modal/NordFlow/NordFlow.d.ts +0 -9
- package/dist/Modal/NordFlow/NordFlow.js +0 -84
- package/dist/Modal/NordFlow/NordFlow.js.map +0 -1
- package/dist/Modal/NordFlow/components/ChainButton.js +0 -25
- package/dist/Modal/NordFlow/components/ChainButton.js.map +0 -1
- package/dist/Modal/NordFlow/components/EVMChainsButton.d.ts +0 -9
- package/dist/Modal/NordFlow/components/EVMChainsButton.js +0 -21
- package/dist/Modal/NordFlow/components/EVMChainsButton.js.map +0 -1
- package/dist/Modal/NordFlow/components/Header.js.map +0 -1
- package/dist/Modal/NordFlow/components/ImageWithFallback.js.map +0 -1
- package/dist/Modal/NordFlow/components/LoadingSquares.d.ts +0 -1
- package/dist/Modal/NordFlow/components/LoadingSquares.js +0 -6
- package/dist/Modal/NordFlow/components/LoadingSquares.js.map +0 -1
- package/dist/Modal/NordFlow/components/MoreButton.d.ts +0 -8
- package/dist/Modal/NordFlow/components/MoreButton.js +0 -19
- package/dist/Modal/NordFlow/components/MoreButton.js.map +0 -1
- package/dist/Modal/NordFlow/components/TransactionTable.js.map +0 -1
- package/dist/Modal/NordFlow/components/WaitingMessage.js +0 -18
- package/dist/Modal/NordFlow/components/WaitingMessage.js.map +0 -1
- package/dist/Modal/NordFlow/components/index.js.map +0 -1
- package/dist/Modal/NordFlow/constants.d.ts +0 -37
- package/dist/Modal/NordFlow/constants.js +0 -183
- package/dist/Modal/NordFlow/constants.js.map +0 -1
- package/dist/Modal/NordFlow/context/DepositContext.js.map +0 -1
- package/dist/Modal/NordFlow/context/FlowContext.d.ts +0 -24
- package/dist/Modal/NordFlow/context/FlowContext.js +0 -218
- package/dist/Modal/NordFlow/context/FlowContext.js.map +0 -1
- package/dist/Modal/NordFlow/context/NordProvider.d.ts +0 -10
- package/dist/Modal/NordFlow/context/NordProvider.js +0 -14
- package/dist/Modal/NordFlow/context/NordProvider.js.map +0 -1
- package/dist/Modal/NordFlow/context/WalletConnectContext.d.ts +0 -20
- package/dist/Modal/NordFlow/context/WalletConnectContext.js +0 -269
- package/dist/Modal/NordFlow/context/WalletConnectContext.js.map +0 -1
- package/dist/Modal/NordFlow/context/index.d.ts +0 -5
- package/dist/Modal/NordFlow/context/index.js +0 -8
- package/dist/Modal/NordFlow/context/index.js.map +0 -1
- package/dist/Modal/NordFlow/hoc/index.d.ts +0 -1
- package/dist/Modal/NordFlow/hoc/index.js +0 -2
- package/dist/Modal/NordFlow/hoc/index.js.map +0 -1
- package/dist/Modal/NordFlow/hoc/withImageFallback.js.map +0 -1
- package/dist/Modal/NordFlow/hooks/useTestnetFaucet.d.ts +0 -18
- package/dist/Modal/NordFlow/hooks/useTestnetFaucet.js +0 -181
- package/dist/Modal/NordFlow/hooks/useTestnetFaucet.js.map +0 -1
- package/dist/Modal/NordFlow/index.d.ts +0 -1
- package/dist/Modal/NordFlow/index.js +0 -2
- package/dist/Modal/NordFlow/index.js.map +0 -1
- package/dist/Modal/NordFlow/screens/00-IdleScreen.d.ts +0 -6
- package/dist/Modal/NordFlow/screens/00-IdleScreen.js +0 -9
- package/dist/Modal/NordFlow/screens/00-IdleScreen.js.map +0 -1
- package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.js.map +0 -1
- package/dist/Modal/NordFlow/screens/02-ChainSelectionScreen.d.ts +0 -1
- package/dist/Modal/NordFlow/screens/02-ChainSelectionScreen.js +0 -115
- package/dist/Modal/NordFlow/screens/02-ChainSelectionScreen.js.map +0 -1
- package/dist/Modal/NordFlow/screens/02-EvmWalletAuthScreen.d.ts +0 -2
- package/dist/Modal/NordFlow/screens/02-EvmWalletAuthScreen.js +0 -45
- package/dist/Modal/NordFlow/screens/02-EvmWalletAuthScreen.js.map +0 -1
- package/dist/Modal/NordFlow/screens/03-AmountInputScreen.js.map +0 -1
- package/dist/Modal/NordFlow/screens/03-ChainSelectionScreen.d.ts +0 -1
- package/dist/Modal/NordFlow/screens/03-ChainSelectionScreen.js +0 -66
- package/dist/Modal/NordFlow/screens/03-ChainSelectionScreen.js.map +0 -1
- package/dist/Modal/NordFlow/screens/04-AmountInputScreen.d.ts +0 -1
- package/dist/Modal/NordFlow/screens/04-AmountInputScreen.js +0 -204
- package/dist/Modal/NordFlow/screens/04-AmountInputScreen.js.map +0 -1
- package/dist/Modal/NordFlow/screens/04-DepositProgressScreen.d.ts +0 -1
- package/dist/Modal/NordFlow/screens/04-DepositProgressScreen.js +0 -29
- package/dist/Modal/NordFlow/screens/04-DepositProgressScreen.js.map +0 -1
- package/dist/Modal/NordFlow/screens/05-DepositProgressScreen.d.ts +0 -1
- package/dist/Modal/NordFlow/screens/05-DepositProgressScreen.js +0 -51
- package/dist/Modal/NordFlow/screens/05-DepositProgressScreen.js.map +0 -1
- package/dist/Modal/NordFlow/screens/05-DepositSuccessScreen.js.map +0 -1
- package/dist/Modal/NordFlow/screens/06-AuthLoadingScreen.js +0 -37
- package/dist/Modal/NordFlow/screens/06-AuthLoadingScreen.js.map +0 -1
- package/dist/Modal/NordFlow/screens/06-DepositSuccessScreen.d.ts +0 -1
- package/dist/Modal/NordFlow/screens/06-DepositSuccessScreen.js +0 -132
- package/dist/Modal/NordFlow/screens/06-DepositSuccessScreen.js.map +0 -1
- package/dist/Modal/NordFlow/screens/07-AuthLoadingScreen.d.ts +0 -1
- package/dist/Modal/NordFlow/screens/07-AuthLoadingScreen.js +0 -30
- package/dist/Modal/NordFlow/screens/07-AuthLoadingScreen.js.map +0 -1
- package/dist/Modal/NordFlow/screens/07-FinalSuccessScreen.d.ts +0 -5
- package/dist/Modal/NordFlow/screens/07-FinalSuccessScreen.js +0 -39
- package/dist/Modal/NordFlow/screens/07-FinalSuccessScreen.js.map +0 -1
- package/dist/Modal/NordFlow/screens/08-ErrorScreen.js +0 -68
- package/dist/Modal/NordFlow/screens/08-ErrorScreen.js.map +0 -1
- package/dist/Modal/NordFlow/screens/08-FinalSuccessScreen.d.ts +0 -5
- package/dist/Modal/NordFlow/screens/08-FinalSuccessScreen.js +0 -52
- package/dist/Modal/NordFlow/screens/08-FinalSuccessScreen.js.map +0 -1
- package/dist/Modal/NordFlow/screens/09-ErrorScreen.d.ts +0 -1
- package/dist/Modal/NordFlow/screens/09-ErrorScreen.js +0 -68
- package/dist/Modal/NordFlow/screens/09-ErrorScreen.js.map +0 -1
- package/dist/Modal/NordFlow/screens/index.js.map +0 -1
- package/dist/Modal/NordFlow/types.js +0 -34
- package/dist/Modal/NordFlow/types.js.map +0 -1
- package/dist/Modal/NordFlow/utils/depositStorage.js.map +0 -1
- package/dist/Modal/NordFlow/utils/imageUtils.js.map +0 -1
- package/dist/Modal/NordFlow/utils/index.d.ts +0 -2
- package/dist/Modal/NordFlow/utils/index.js +0 -3
- package/dist/Modal/NordFlow/utils/index.js.map +0 -1
- package/dist/Modal/NordFlow/utils/nordUtils.js.map +0 -1
- package/dist/Modal/Sidebar/N1Sidebar.d.ts +0 -1
- package/dist/Modal/Sidebar/N1Sidebar.js +0 -203
- package/dist/Modal/Sidebar/N1Sidebar.js.map +0 -1
- package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketOverview.d.ts +0 -12
- package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketOverview.js +0 -90
- package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketOverview.js.map +0 -1
- package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketSelector.d.ts +0 -6
- package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketSelector.js +0 -43
- package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketSelector.js.map +0 -1
- package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketStats.d.ts +0 -11
- package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketStats.js +0 -20
- package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketStats.js.map +0 -1
- package/dist/Modal/Sidebar/NordTradingView/NordTradingView.d.ts +0 -1
- package/dist/Modal/Sidebar/NordTradingView/NordTradingView.js +0 -143
- package/dist/Modal/Sidebar/NordTradingView/NordTradingView.js.map +0 -1
- package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBook.js +0 -248
- package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBook.js.map +0 -1
- package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookDepthVisualizer.d.ts +0 -10
- package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookDepthVisualizer.js +0 -62
- package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookDepthVisualizer.js.map +0 -1
- package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookHeader.d.ts +0 -7
- package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookHeader.js +0 -30
- package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookHeader.js.map +0 -1
- package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookTable.d.ts +0 -11
- package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookTable.js +0 -22
- package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookTable.js.map +0 -1
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/AmountInput.d.ts +0 -7
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/AmountInput.js +0 -20
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/AmountInput.js.map +0 -1
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/BuySellTabs.d.ts +0 -7
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/BuySellTabs.js +0 -24
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/BuySellTabs.js.map +0 -1
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/FillModeSelector.d.ts +0 -7
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/FillModeSelector.js +0 -80
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/FillModeSelector.js.map +0 -1
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/OrderTypeSelector.d.ts +0 -9
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/OrderTypeSelector.js +0 -110
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/OrderTypeSelector.js.map +0 -1
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/PriceInput.d.ts +0 -7
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/PriceInput.js +0 -30
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/PriceInput.js.map +0 -1
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/SubmitButton.d.ts +0 -9
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/SubmitButton.js +0 -40
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/SubmitButton.js.map +0 -1
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/TotalCalculator.d.ts +0 -7
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/TotalCalculator.js +0 -10
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/TotalCalculator.js.map +0 -1
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/TradeForm.d.ts +0 -13
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/TradeForm.js +0 -264
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/TradeForm.js.map +0 -1
- package/dist/Modal/Sidebar/NordTradingView/UserBalances/UserBalances.d.ts +0 -5
- package/dist/Modal/Sidebar/NordTradingView/UserBalances/UserBalances.js +0 -113
- package/dist/Modal/Sidebar/NordTradingView/UserBalances/UserBalances.js.map +0 -1
- package/dist/Modal/Sidebar/NordTradingView/UserOrders/UserOrders.d.ts +0 -1
- package/dist/Modal/Sidebar/NordTradingView/UserOrders/UserOrders.js +0 -183
- package/dist/Modal/Sidebar/NordTradingView/UserOrders/UserOrders.js.map +0 -1
- package/dist/Modal/Sidebar/NordTradingView/UserPositions/UserPositions.d.ts +0 -0
- package/dist/Modal/Sidebar/NordTradingView/UserPositions/UserPositions.js +0 -278
- package/dist/Modal/Sidebar/NordTradingView/UserPositions/UserPositions.js.map +0 -1
- package/dist/Provider/LazyWalletProvider.js.map +0 -1
- package/dist/Provider/N1WalletProvider.d.ts +0 -3
- package/dist/Provider/N1WalletProvider.js.map +0 -1
- package/dist/Provider/ShadowRootWrapper.js.map +0 -1
- package/dist/Provider/WalletErrorBoundary.js.map +0 -1
- package/dist/Provider/context.js.map +0 -1
- package/dist/Provider/hooks/useNordUserInitialization.js.map +0 -1
- package/dist/Provider/hooks.d.ts +0 -2
- package/dist/Provider/hooks.js.map +0 -1
- package/dist/Provider/icons/CoinbaseWalletIcon.d.ts +0 -1
- package/dist/Provider/icons/CoinbaseWalletIcon.js +0 -5
- package/dist/Provider/icons/CoinbaseWalletIcon.js.map +0 -1
- package/dist/Provider/icons/ConnectionDotsSVG.d.ts +0 -1
- package/dist/Provider/icons/ConnectionDotsSVG.js +0 -5
- package/dist/Provider/icons/ConnectionDotsSVG.js.map +0 -1
- package/dist/Provider/icons/MetamaskIcon.d.ts +0 -1
- package/dist/Provider/icons/MetamaskIcon.js +0 -5
- package/dist/Provider/icons/MetamaskIcon.js.map +0 -1
- package/dist/Provider/icons/PhantomIcon.d.ts +0 -1
- package/dist/Provider/icons/PhantomIcon.js +0 -5
- package/dist/Provider/icons/PhantomIcon.js.map +0 -1
- package/dist/Provider/icons/UserIcon.d.ts +0 -1
- package/dist/Provider/icons/UserIcon.js +0 -5
- package/dist/Provider/icons/UserIcon.js.map +0 -1
- package/dist/Provider/icons/WalletConnectIcon.d.ts +0 -1
- package/dist/Provider/icons/WalletConnectIcon.js +0 -5
- package/dist/Provider/icons/WalletConnectIcon.js.map +0 -1
- package/dist/Provider/index.d.ts +0 -3
- package/dist/Provider/index.js +0 -4
- package/dist/Provider/index.js.map +0 -1
- package/dist/Provider/types.js.map +0 -1
- package/dist/WidgetButton/N1ConnectButton.js.map +0 -1
- package/dist/components/QRCodeLoader.d.ts +0 -4
- package/dist/components/QRCodeLoader.js +0 -9
- package/dist/components/QRCodeLoader.js.map +0 -1
- package/dist/components/logos/EVMChainsGroup.d.ts +0 -7
- package/dist/components/logos/EVMChainsGroup.js +0 -19
- package/dist/components/logos/EVMChainsGroup.js.map +0 -1
- package/dist/components/logos/MoreChainsGroup.d.ts +0 -7
- package/dist/components/logos/MoreChainsGroup.js +0 -19
- package/dist/components/logos/MoreChainsGroup.js.map +0 -1
- package/dist/embedded-main-css.d.ts +0 -2
- package/dist/embedded-main-css.js +0 -3
- package/dist/embedded-main-css.js.map +0 -1
- package/dist/main.css +0 -2
- package/dist/utils/dynamicImports.js +0 -42
- package/dist/utils/dynamicImports.js.map +0 -1
- package/dist/utils/dynamicNord.js.map +0 -1
- /package/dist/{fonts → assets/fonts}/apk-galeria/APK-Galeria-Bold-Italic-Trial.otf +0 -0
- /package/dist/{fonts → assets/fonts}/apk-galeria/APK-Galeria-Bold-Trial.otf +0 -0
- /package/dist/{fonts → assets/fonts}/apk-galeria/APK-Galeria-Extra-Bold-Italic-Trial.otf +0 -0
- /package/dist/{fonts → assets/fonts}/apk-galeria/APK-Galeria-Extra-Bold-Trial.otf +0 -0
- /package/dist/{fonts → assets/fonts}/apk-galeria/APK-Galeria-Light-Italic-Trial.otf +0 -0
- /package/dist/{fonts → assets/fonts}/apk-galeria/APK-Galeria-Light-Trial.otf +0 -0
- /package/dist/{fonts → assets/fonts}/apk-galeria/APK-Galeria-Medium-Italic-Trial.otf +0 -0
- /package/dist/{fonts → assets/fonts}/apk-galeria/APK-Galeria-Medium-Trial.otf +0 -0
- /package/dist/{fonts → assets/fonts}/apk-galeria/APK-Galeria-Regular-Italic-Trial.otf +0 -0
- /package/dist/{fonts → assets/fonts}/apk-galeria/APK-Galeria-Regular-Trial.otf +0 -0
- /package/dist/{fonts → assets/fonts}/apk-galeria/APK-Galeria-Semi-Bold-Italic-Trial.otf +0 -0
- /package/dist/{fonts → assets/fonts}/apk-galeria/APK-Galeria-Semi-Bold-Trial.otf +0 -0
- /package/dist/{fonts → assets/fonts}/apk-galeria/APK-Galeria-Thin-Italic-Trial.otf +0 -0
- /package/dist/{fonts → assets/fonts}/apk-galeria/APK-Galeria-Thin-Trial.otf +0 -0
- /package/dist/{Modal → components}/LoadingFallback.d.ts +0 -0
- /package/dist/{Modal → components}/LoadingFallback.js +0 -0
- /package/dist/{WidgetButton → components}/N1ConnectButton.d.ts +0 -0
- /package/dist/{Modal/Sidebar/NordTradingView/OrderBook/OrderBook.d.ts → config/chains.d.ts} +0 -0
- /package/dist/{Modal/NordFlow → features/onboarding-flow}/components/Header.d.ts +0 -0
- /package/dist/{Modal/NordFlow → features/onboarding-flow}/components/ImageWithFallback.d.ts +0 -0
- /package/dist/{Modal/NordFlow → features/onboarding-flow}/components/ImageWithFallback.js +0 -0
- /package/dist/{Modal/NordFlow → features/onboarding-flow}/components/TransactionTable.d.ts +0 -0
- /package/dist/{Modal/NordFlow → features/onboarding-flow}/components/WaitingMessage.d.ts +0 -0
- /package/dist/{Modal/NordFlow → features/onboarding-flow}/components/index.d.ts +0 -0
- /package/dist/{Modal/NordFlow → features/onboarding-flow}/components/index.js +0 -0
- /package/dist/{Modal/NordFlow → features/onboarding-flow}/screens/01-ConnectWalletScreen.d.ts +0 -0
- /package/dist/{Modal/NordFlow → features/onboarding-flow}/screens/05-DepositSuccessScreen.d.ts +0 -0
- /package/dist/{Modal/NordFlow → features/onboarding-flow}/screens/06-AuthLoadingScreen.d.ts +0 -0
- /package/dist/{Modal/NordFlow/screens/08-ErrorScreen.d.ts → features/onboarding-flow/screens/07-ErrorScreen.d.ts} +0 -0
- /package/dist/{Modal/NordFlow → features/onboarding-flow}/utils/depositStorage.d.ts +0 -0
- /package/dist/{Modal/NordFlow → features/onboarding-flow}/utils/depositStorage.js +0 -0
- /package/dist/{Modal/NordFlow → features/onboarding-flow}/utils/imageUtils.d.ts +0 -0
- /package/dist/{Modal/NordFlow → features/onboarding-flow}/utils/imageUtils.js +0 -0
- /package/dist/{Modal/NordFlow → features/onboarding-flow}/utils/nordUtils.d.ts +0 -0
- /package/dist/{Modal/NordFlow → features/onboarding-flow}/utils/nordUtils.js +0 -0
- /package/dist/{Logic/transactionManager.d.ts → features/onboarding-flow/utils/transaction.d.ts} +0 -0
- /package/dist/{Modal/NordFlow/hoc → features/onboarding-flow/utils}/withImageFallback.d.ts +0 -0
- /package/dist/{Modal/NordFlow/hoc → features/onboarding-flow/utils}/withImageFallback.js +0 -0
- /package/dist/{Provider/hooks → hooks}/useNordUserInitialization.d.ts +0 -0
- /package/dist/{Provider → providers}/LazyWalletProvider.d.ts +0 -0
- /package/dist/{Provider → providers}/ShadowRootWrapper.d.ts +0 -0
- /package/dist/{Provider → providers}/ShadowRootWrapper.js +0 -0
- /package/dist/{Provider → providers}/WalletErrorBoundary.d.ts +0 -0
- /package/dist/{Provider → providers}/WalletErrorBoundary.js +0 -0
- /package/dist/{Logic → utils}/getPseudoName.d.ts +0 -0
- /package/dist/{Logic → utils}/getPseudoName.js +0 -0
- /package/dist/{Logic → utils}/words.d.ts +0 -0
- /package/dist/{Logic → utils}/words.js +0 -0
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
12
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
-
function step(op) {
|
|
15
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
17
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
18
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
-
switch (op[0]) {
|
|
20
|
-
case 0: case 1: t = op; break;
|
|
21
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
-
default:
|
|
25
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
-
if (t[2]) _.ops.pop();
|
|
30
|
-
_.trys.pop(); continue;
|
|
31
|
-
}
|
|
32
|
-
op = body.call(thisArg, _);
|
|
33
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
38
|
-
import { RefreshCw, X } from 'lucide-react';
|
|
39
|
-
import { useEffect, useState, useRef } from 'react';
|
|
40
|
-
import { useN1WalletContext } from '../../../../Provider/hooks';
|
|
41
|
-
import { logger } from '../../../../utils/logger';
|
|
42
|
-
export default function UserOrders() {
|
|
43
|
-
var _this = this;
|
|
44
|
-
var _a = useN1WalletContext(), nord = _a.nord, nordUser = _a.nordUser;
|
|
45
|
-
var _b = useState([]), activeOrders = _b[0], setActiveOrders = _b[1];
|
|
46
|
-
var _c = useState([]), orderHistory = _c[0], setOrderHistory = _c[1];
|
|
47
|
-
var _d = useState(false), loading = _d[0], setLoading = _d[1];
|
|
48
|
-
var _e = useState(null), error = _e[0], setError = _e[1];
|
|
49
|
-
var _f = useState(null), cancellingOrderId = _f[0], setCancellingOrderId = _f[1];
|
|
50
|
-
var _g = useState(false), compactView = _g[0], setCompactView = _g[1];
|
|
51
|
-
var containerRef = useRef(null);
|
|
52
|
-
// Fetch user orders
|
|
53
|
-
useEffect(function () {
|
|
54
|
-
if (!nordUser)
|
|
55
|
-
return;
|
|
56
|
-
var fetchOrders = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
57
|
-
var allOrders_1, err_1;
|
|
58
|
-
return __generator(this, function (_a) {
|
|
59
|
-
switch (_a.label) {
|
|
60
|
-
case 0:
|
|
61
|
-
setLoading(true);
|
|
62
|
-
setError(null);
|
|
63
|
-
_a.label = 1;
|
|
64
|
-
case 1:
|
|
65
|
-
_a.trys.push([1, 3, 4, 5]);
|
|
66
|
-
// Refresh user info to get latest orders
|
|
67
|
-
return [4 /*yield*/, nordUser.fetchInfo()];
|
|
68
|
-
case 2:
|
|
69
|
-
// Refresh user info to get latest orders
|
|
70
|
-
_a.sent();
|
|
71
|
-
allOrders_1 = [];
|
|
72
|
-
// This is a simplified approach - in a real implementation, you would
|
|
73
|
-
// properly extract and format orders from the nordUser object
|
|
74
|
-
logger.debug(nord === null || nord === void 0 ? void 0 : nord.markets, nordUser.orders);
|
|
75
|
-
Object.values(nordUser.orders || {}).forEach(function (accountOrders) {
|
|
76
|
-
if (Array.isArray(accountOrders)) {
|
|
77
|
-
accountOrders.forEach(function (order) {
|
|
78
|
-
var _a;
|
|
79
|
-
// Get market name from nord object
|
|
80
|
-
var market = (_a = nord === null || nord === void 0 ? void 0 : nord.markets) === null || _a === void 0 ? void 0 : _a.find(function (m) { return m.marketId === order.marketId; });
|
|
81
|
-
var marketName = (market === null || market === void 0 ? void 0 : market.symbol) || "Unknown Market";
|
|
82
|
-
// Convert to our Order interface format
|
|
83
|
-
var formattedOrder = {
|
|
84
|
-
orderId: order.orderId,
|
|
85
|
-
marketId: order.marketId,
|
|
86
|
-
symbol: marketName,
|
|
87
|
-
isLong: order.isLong,
|
|
88
|
-
size: order.size,
|
|
89
|
-
price: order.price,
|
|
90
|
-
status: order.status || 'OPEN',
|
|
91
|
-
createdAt: order.createdAt || Date.now(),
|
|
92
|
-
};
|
|
93
|
-
allOrders_1.push(formattedOrder);
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
// Split into active and historical orders
|
|
98
|
-
setActiveOrders(allOrders_1.filter(function (order) { return order.status === 'OPEN'; }));
|
|
99
|
-
setOrderHistory(allOrders_1.filter(function (order) { return order.status !== 'OPEN'; }));
|
|
100
|
-
return [3 /*break*/, 5];
|
|
101
|
-
case 3:
|
|
102
|
-
err_1 = _a.sent();
|
|
103
|
-
logger.error('Error fetching orders:', err_1);
|
|
104
|
-
setError('Failed to load orders');
|
|
105
|
-
return [3 /*break*/, 5];
|
|
106
|
-
case 4:
|
|
107
|
-
setLoading(false);
|
|
108
|
-
return [7 /*endfinally*/];
|
|
109
|
-
case 5: return [2 /*return*/];
|
|
110
|
-
}
|
|
111
|
-
});
|
|
112
|
-
}); };
|
|
113
|
-
fetchOrders();
|
|
114
|
-
// Set up polling for order updates
|
|
115
|
-
var intervalId = setInterval(fetchOrders, 10000); // Update every 10 seconds
|
|
116
|
-
return function () { return clearInterval(intervalId); };
|
|
117
|
-
}, [nordUser, nord]);
|
|
118
|
-
// Check container width and update layout
|
|
119
|
-
useEffect(function () {
|
|
120
|
-
if (!containerRef.current)
|
|
121
|
-
return;
|
|
122
|
-
var checkWidth = function () {
|
|
123
|
-
if (containerRef.current) {
|
|
124
|
-
setCompactView(containerRef.current.offsetWidth < 400);
|
|
125
|
-
}
|
|
126
|
-
};
|
|
127
|
-
// Initial check
|
|
128
|
-
checkWidth();
|
|
129
|
-
// Set up resize observer
|
|
130
|
-
var resizeObserver = new ResizeObserver(checkWidth);
|
|
131
|
-
resizeObserver.observe(containerRef.current);
|
|
132
|
-
return function () {
|
|
133
|
-
if (containerRef.current) {
|
|
134
|
-
resizeObserver.unobserve(containerRef.current);
|
|
135
|
-
}
|
|
136
|
-
};
|
|
137
|
-
}, []);
|
|
138
|
-
// Handle order cancellation
|
|
139
|
-
var handleCancelOrder = function (orderId) { return __awaiter(_this, void 0, void 0, function () {
|
|
140
|
-
var err_2;
|
|
141
|
-
return __generator(this, function (_a) {
|
|
142
|
-
switch (_a.label) {
|
|
143
|
-
case 0:
|
|
144
|
-
if (!nordUser)
|
|
145
|
-
return [2 /*return*/];
|
|
146
|
-
_a.label = 1;
|
|
147
|
-
case 1:
|
|
148
|
-
_a.trys.push([1, 4, 5, 6]);
|
|
149
|
-
setCancellingOrderId(orderId); // Set the cancelling order ID to show animation
|
|
150
|
-
return [4 /*yield*/, nordUser.cancelOrder(orderId)];
|
|
151
|
-
case 2:
|
|
152
|
-
_a.sent();
|
|
153
|
-
// Refresh orders after cancellation
|
|
154
|
-
return [4 /*yield*/, nordUser.fetchInfo()];
|
|
155
|
-
case 3:
|
|
156
|
-
// Refresh orders after cancellation
|
|
157
|
-
_a.sent();
|
|
158
|
-
// Update state (simplified - would be better to wait for the fetchOrders to run)
|
|
159
|
-
setActiveOrders(activeOrders.filter(function (order) { return order.orderId !== orderId; }));
|
|
160
|
-
return [3 /*break*/, 6];
|
|
161
|
-
case 4:
|
|
162
|
-
err_2 = _a.sent();
|
|
163
|
-
logger.error('Error cancelling order:', err_2);
|
|
164
|
-
setError('Failed to cancel order');
|
|
165
|
-
return [3 /*break*/, 6];
|
|
166
|
-
case 5:
|
|
167
|
-
setCancellingOrderId(null); // Reset cancelling order ID
|
|
168
|
-
return [7 /*endfinally*/];
|
|
169
|
-
case 6: return [2 /*return*/];
|
|
170
|
-
}
|
|
171
|
-
});
|
|
172
|
-
}); };
|
|
173
|
-
return (_jsx("div", { className: "bg-white dark:bg-n1-ww-gray-950 shadow-sm border border-n1-ww-gray-200 dark:border-n1-ww-gray-800 overflow-hidden", children: _jsxs("div", { className: "p-4", children: [_jsx("h2", { className: "text-lg font-semibold text-n1-ww-gray-900 dark:text-n1-ww-gray-100 mb-4", children: "Orders" }), _jsxs("div", { className: "overflow-hidden", ref: containerRef, children: [loading && activeOrders.length === 0 && orderHistory.length === 0 ? (_jsx("div", { className: "flex items-center justify-center h-32", children: _jsx(RefreshCw, { size: 20, className: "text-n1-ww-gray-400 n1-ww-animate-spin" }) })) : error ? (_jsx("div", { className: "p-3 bg-red-50 dark:bg-red-900/20 text-red-600 dark:text-red-400 text-sm", children: error })) : activeOrders.length === 0 ? (_jsx("div", { className: "p-3 bg-n1-ww-gray-50 dark:bg-n1-ww-gray-800 text-n1-ww-gray-500 dark:text-n1-ww-gray-400 text-sm text-center", children: "No active orders" })) : !compactView ? (
|
|
174
|
-
// Standard table view for larger containers
|
|
175
|
-
_jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "min-w-full divide-y divide-n1-ww-gray-200 dark:divide-n1-ww-gray-800", children: [_jsx("thead", { className: "bg-n1-ww-gray-50 dark:bg-n1-ww-gray-800", children: _jsxs("tr", { children: [_jsx("th", { className: "px-3 py-2 text-left text-xs font-medium text-n1-ww-gray-500 dark:text-n1-ww-gray-400 uppercase tracking-wider", children: "Market" }), _jsx("th", { className: "px-3 py-2 text-left text-xs font-medium text-n1-ww-gray-500 dark:text-n1-ww-gray-400 uppercase tracking-wider", children: "Side" }), _jsx("th", { className: "px-3 py-2 text-right text-xs font-medium text-n1-ww-gray-500 dark:text-n1-ww-gray-400 uppercase tracking-wider", children: "Size" }), _jsx("th", { className: "px-3 py-2 text-right text-xs font-medium text-n1-ww-gray-500 dark:text-n1-ww-gray-400 uppercase tracking-wider", children: "Price" }), _jsx("th", { className: "px-3 py-2 text-right text-xs font-medium text-n1-ww-gray-500 dark:text-n1-ww-gray-400 uppercase tracking-wider", children: "Action" })] }) }), _jsx("tbody", { className: "bg-white dark:bg-n1-ww-gray-950 divide-y divide-n1-ww-gray-200 dark:divide-n1-ww-gray-800", children: activeOrders.map(function (order) { return (_jsxs("tr", { className: "hover:bg-n1-ww-gray-50 dark:hover:bg-n1-ww-gray-800", children: [_jsx("td", { className: "px-3 py-2 whitespace-nowrap text-sm text-n1-ww-gray-900 dark:text-n1-ww-gray-100", children: order.symbol }), _jsx("td", { className: "px-3 py-2 whitespace-nowrap text-sm", children: _jsx("span", { className: "font-medium ".concat(order.isLong ? 'text-green-600 dark:text-green-400' : 'text-red-600 dark:text-red-400'), children: order.isLong ? 'BUY' : 'SELL' }) }), _jsx("td", { className: "px-3 py-2 whitespace-nowrap text-sm text-n1-ww-gray-900 dark:text-n1-ww-gray-100 text-right font-mono", children: order.size }), _jsx("td", { className: "px-3 py-2 whitespace-nowrap text-sm text-n1-ww-gray-900 dark:text-n1-ww-gray-100 text-right font-mono", children: order.price }), _jsx("td", { className: "px-3 py-2 whitespace-nowrap text-sm text-right", children: _jsx("button", { onClick: function () { return handleCancelOrder(order.orderId); }, disabled: cancellingOrderId === order.orderId, className: "text-red-600 dark:text-red-400 hover:text-red-800 dark:hover:text-red-300 relative ".concat(cancellingOrderId === order.orderId
|
|
176
|
-
? 'cursor-not-allowed'
|
|
177
|
-
: ''), children: cancellingOrderId === order.orderId ? (_jsxs(_Fragment, { children: [_jsx("span", { className: "opacity-0", children: "Cancel" }), _jsx(X, { size: 16, className: "absolute inset-0 m-auto n1-ww-animate-pulse text-red-500" })] })) : ('Cancel') }) })] }, order.orderId)); }) })] }) })) : (
|
|
178
|
-
// Compact card view for smaller containers
|
|
179
|
-
_jsx("div", { className: "grid gap-2", children: activeOrders.map(function (order) { return (_jsxs("div", { className: "bg-white dark:bg-n1-ww-gray-900 border border-n1-ww-gray-200 dark:border-n1-ww-gray-800 rounded p-2 hover:bg-n1-ww-gray-50 dark:hover:bg-n1-ww-gray-800", children: [_jsxs("div", { className: "flex justify-between items-start mb-1", children: [_jsx("div", { className: "font-medium text-sm text-n1-ww-gray-900 dark:text-n1-ww-gray-100", children: order.symbol }), _jsx("button", { onClick: function () { return handleCancelOrder(order.orderId); }, disabled: cancellingOrderId === order.orderId, className: "text-red-600 dark:text-red-400 hover:text-red-800 dark:hover:text-red-300 text-xs relative ".concat(cancellingOrderId === order.orderId
|
|
180
|
-
? 'cursor-not-allowed'
|
|
181
|
-
: ''), children: cancellingOrderId === order.orderId ? (_jsxs(_Fragment, { children: [_jsx("span", { className: "opacity-0", children: "Cancel" }), _jsx(X, { size: 14, className: "absolute inset-0 m-auto n1-ww-animate-pulse text-red-500" })] })) : ('Cancel') })] }), _jsxs("div", { className: "grid grid-cols-3 gap-1 text-xs", children: [_jsx("div", { children: _jsx("span", { className: "font-medium ".concat(order.isLong ? 'text-green-600 dark:text-green-400' : 'text-red-600 dark:text-red-400'), children: order.isLong ? 'BUY' : 'SELL' }) }), _jsx("div", { className: "text-right font-mono text-n1-ww-gray-700 dark:text-n1-ww-gray-300", children: order.size }), _jsx("div", { className: "text-right font-mono text-n1-ww-gray-700 dark:text-n1-ww-gray-300", children: order.price })] })] }, order.orderId)); }) })), loading && (activeOrders.length > 0 || orderHistory.length > 0) && (_jsx("div", { className: "flex justify-center mt-2", children: _jsx(RefreshCw, { size: 16, className: "text-n1-ww-gray-400 n1-ww-animate-spin" }) }))] })] }) }));
|
|
182
|
-
}
|
|
183
|
-
//# sourceMappingURL=UserOrders.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"UserOrders.js","sourceRoot":"","sources":["../../../../../src/Modal/Sidebar/NordTradingView/UserOrders/UserOrders.tsx"],"names":[],"mappings":"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","sourcesContent":["import { RefreshCw, X } from 'lucide-react';\nimport { useEffect, useState, useRef } from 'react';\nimport { useN1WalletContext } from '../../../../Provider/hooks';\nimport { logger } from '../../../../utils/logger';\n\ninterface Order {\n orderId: number;\n marketId: number;\n symbol: string;\n isLong: boolean;\n size: number;\n price: number;\n status: 'OPEN' | 'FILLED' | 'CANCELLED' | 'EXPIRED';\n createdAt: number;\n}\n\nexport default function UserOrders() {\n const { nord, nordUser } = useN1WalletContext();\n const [activeOrders, setActiveOrders] = useState<Order[]>([]);\n const [orderHistory, setOrderHistory] = useState<Order[]>([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [cancellingOrderId, setCancellingOrderId] = useState<number | null>(\n null\n );\n const [compactView, setCompactView] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n\n // Fetch user orders\n useEffect(() => {\n if (!nordUser) return;\n\n const fetchOrders = async () => {\n setLoading(true);\n setError(null);\n\n try {\n // Refresh user info to get latest orders\n await nordUser.fetchInfo();\n\n // Process orders from all accounts\n const allOrders: Order[] = [];\n\n // This is a simplified approach - in a real implementation, you would\n // properly extract and format orders from the nordUser object\n logger.debug(nord?.markets, nordUser.orders);\n Object.values(nordUser.orders || {}).forEach((accountOrders: any) => {\n if (Array.isArray(accountOrders)) {\n accountOrders.forEach((order: any) => {\n // Get market name from nord object\n const market = nord?.markets?.find(\n (m: any) => m.marketId === order.marketId\n );\n const marketName = market?.symbol || `Unknown Market`;\n\n // Convert to our Order interface format\n const formattedOrder: Order = {\n orderId: order.orderId,\n marketId: order.marketId,\n symbol: marketName,\n isLong: order.isLong,\n size: order.size,\n price: order.price,\n status: order.status || 'OPEN',\n createdAt: order.createdAt || Date.now(),\n };\n allOrders.push(formattedOrder);\n });\n }\n });\n\n // Split into active and historical orders\n setActiveOrders(allOrders.filter((order) => order.status === 'OPEN'));\n setOrderHistory(allOrders.filter((order) => order.status !== 'OPEN'));\n } catch (err) {\n logger.error('Error fetching orders:', err);\n setError('Failed to load orders');\n } finally {\n setLoading(false);\n }\n };\n\n fetchOrders();\n\n // Set up polling for order updates\n const intervalId = setInterval(fetchOrders, 10000); // Update every 10 seconds\n\n return () => clearInterval(intervalId);\n }, [nordUser, nord]);\n\n // Check container width and update layout\n useEffect(() => {\n if (!containerRef.current) return;\n\n const checkWidth = () => {\n if (containerRef.current) {\n setCompactView(containerRef.current.offsetWidth < 400);\n }\n };\n\n // Initial check\n checkWidth();\n\n // Set up resize observer\n const resizeObserver = new ResizeObserver(checkWidth);\n resizeObserver.observe(containerRef.current);\n\n return () => {\n if (containerRef.current) {\n resizeObserver.unobserve(containerRef.current);\n }\n };\n }, []);\n\n // Handle order cancellation\n const handleCancelOrder = async (orderId: number) => {\n if (!nordUser) return;\n\n try {\n setCancellingOrderId(orderId); // Set the cancelling order ID to show animation\n await nordUser.cancelOrder(orderId);\n // Refresh orders after cancellation\n await nordUser.fetchInfo();\n // Update state (simplified - would be better to wait for the fetchOrders to run)\n setActiveOrders(\n activeOrders.filter((order) => order.orderId !== orderId)\n );\n } catch (err) {\n logger.error('Error cancelling order:', err);\n setError('Failed to cancel order');\n } finally {\n setCancellingOrderId(null); // Reset cancelling order ID\n }\n };\n\n return (\n <div className=\"bg-white dark:bg-n1-ww-gray-950 shadow-sm border border-n1-ww-gray-200 dark:border-n1-ww-gray-800 overflow-hidden\">\n <div className=\"p-4\">\n <h2 className=\"text-lg font-semibold text-n1-ww-gray-900 dark:text-n1-ww-gray-100 mb-4\">\n Orders\n </h2>\n\n {/* Order list */}\n <div className=\"overflow-hidden\" ref={containerRef}>\n {loading && activeOrders.length === 0 && orderHistory.length === 0 ? (\n <div className=\"flex items-center justify-center h-32\">\n <RefreshCw size={20} className=\"text-n1-ww-gray-400 n1-ww-animate-spin\" />\n </div>\n ) : error ? (\n <div className=\"p-3 bg-red-50 dark:bg-red-900/20 text-red-600 dark:text-red-400 text-sm\">\n {error}\n </div>\n ) : activeOrders.length === 0 ? (\n <div className=\"p-3 bg-n1-ww-gray-50 dark:bg-n1-ww-gray-800 text-n1-ww-gray-500 dark:text-n1-ww-gray-400 text-sm text-center\">\n No active orders\n </div>\n ) : !compactView ? (\n // Standard table view for larger containers\n <div className=\"overflow-x-auto\">\n <table className=\"min-w-full divide-y divide-n1-ww-gray-200 dark:divide-n1-ww-gray-800\">\n <thead className=\"bg-n1-ww-gray-50 dark:bg-n1-ww-gray-800\">\n <tr>\n <th className=\"px-3 py-2 text-left text-xs font-medium text-n1-ww-gray-500 dark:text-n1-ww-gray-400 uppercase tracking-wider\">\n Market\n </th>\n <th className=\"px-3 py-2 text-left text-xs font-medium text-n1-ww-gray-500 dark:text-n1-ww-gray-400 uppercase tracking-wider\">\n Side\n </th>\n <th className=\"px-3 py-2 text-right text-xs font-medium text-n1-ww-gray-500 dark:text-n1-ww-gray-400 uppercase tracking-wider\">\n Size\n </th>\n <th className=\"px-3 py-2 text-right text-xs font-medium text-n1-ww-gray-500 dark:text-n1-ww-gray-400 uppercase tracking-wider\">\n Price\n </th>\n <th className=\"px-3 py-2 text-right text-xs font-medium text-n1-ww-gray-500 dark:text-n1-ww-gray-400 uppercase tracking-wider\">\n Action\n </th>\n </tr>\n </thead>\n <tbody className=\"bg-white dark:bg-n1-ww-gray-950 divide-y divide-n1-ww-gray-200 dark:divide-n1-ww-gray-800\">\n {activeOrders.map((order) => (\n <tr\n key={order.orderId}\n className=\"hover:bg-n1-ww-gray-50 dark:hover:bg-n1-ww-gray-800\"\n >\n <td className=\"px-3 py-2 whitespace-nowrap text-sm text-n1-ww-gray-900 dark:text-n1-ww-gray-100\">\n {order.symbol}\n </td>\n <td className=\"px-3 py-2 whitespace-nowrap text-sm\">\n <span\n className={`font-medium ${order.isLong ? 'text-green-600 dark:text-green-400' : 'text-red-600 dark:text-red-400'}`}\n >\n {order.isLong ? 'BUY' : 'SELL'}\n </span>\n </td>\n <td className=\"px-3 py-2 whitespace-nowrap text-sm text-n1-ww-gray-900 dark:text-n1-ww-gray-100 text-right font-mono\">\n {order.size}\n </td>\n <td className=\"px-3 py-2 whitespace-nowrap text-sm text-n1-ww-gray-900 dark:text-n1-ww-gray-100 text-right font-mono\">\n {order.price}\n </td>\n <td className=\"px-3 py-2 whitespace-nowrap text-sm text-right\">\n <button\n onClick={() => handleCancelOrder(order.orderId)}\n disabled={cancellingOrderId === order.orderId}\n className={`text-red-600 dark:text-red-400 hover:text-red-800 dark:hover:text-red-300 relative ${\n cancellingOrderId === order.orderId\n ? 'cursor-not-allowed'\n : ''\n }`}\n >\n {cancellingOrderId === order.orderId ? (\n <>\n <span className=\"opacity-0\">Cancel</span>\n <X\n size={16}\n className=\"absolute inset-0 m-auto n1-ww-animate-pulse text-red-500\"\n />\n </>\n ) : (\n 'Cancel'\n )}\n </button>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n ) : (\n // Compact card view for smaller containers\n <div className=\"grid gap-2\">\n {activeOrders.map((order) => (\n <div\n key={order.orderId}\n className=\"bg-white dark:bg-n1-ww-gray-900 border border-n1-ww-gray-200 dark:border-n1-ww-gray-800 rounded p-2 hover:bg-n1-ww-gray-50 dark:hover:bg-n1-ww-gray-800\"\n >\n <div className=\"flex justify-between items-start mb-1\">\n <div className=\"font-medium text-sm text-n1-ww-gray-900 dark:text-n1-ww-gray-100\">\n {order.symbol}\n </div>\n <button\n onClick={() => handleCancelOrder(order.orderId)}\n disabled={cancellingOrderId === order.orderId}\n className={`text-red-600 dark:text-red-400 hover:text-red-800 dark:hover:text-red-300 text-xs relative ${\n cancellingOrderId === order.orderId\n ? 'cursor-not-allowed'\n : ''\n }`}\n >\n {cancellingOrderId === order.orderId ? (\n <>\n <span className=\"opacity-0\">Cancel</span>\n <X\n size={14}\n className=\"absolute inset-0 m-auto n1-ww-animate-pulse text-red-500\"\n />\n </>\n ) : (\n 'Cancel'\n )}\n </button>\n </div>\n <div className=\"grid grid-cols-3 gap-1 text-xs\">\n <div>\n <span\n className={`font-medium ${order.isLong ? 'text-green-600 dark:text-green-400' : 'text-red-600 dark:text-red-400'}`}\n >\n {order.isLong ? 'BUY' : 'SELL'}\n </span>\n </div>\n <div className=\"text-right font-mono text-n1-ww-gray-700 dark:text-n1-ww-gray-300\">\n {order.size}\n </div>\n <div className=\"text-right font-mono text-n1-ww-gray-700 dark:text-n1-ww-gray-300\">\n {order.price}\n </div>\n </div>\n </div>\n ))}\n </div>\n )}\n\n {/* Loading indicator for refreshing */}\n {loading && (activeOrders.length > 0 || orderHistory.length > 0) && (\n <div className=\"flex justify-center mt-2\">\n <RefreshCw size={16} className=\"text-n1-ww-gray-400 n1-ww-animate-spin\" />\n </div>\n )}\n </div>\n </div>\n </div>\n );\n}\n"]}
|
|
File without changes
|
|
@@ -1,278 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// DEPRECATED: This entire component has been deprecated due to errors
|
|
3
|
-
// All code below has been commented out to prevent issues
|
|
4
|
-
/*
|
|
5
|
-
|
|
6
|
-
import { useState, useEffect } from 'react';
|
|
7
|
-
import { useN1WalletContext } from '../../../../Provider/hooks';
|
|
8
|
-
import { RefreshCw, X } from 'lucide-react';
|
|
9
|
-
|
|
10
|
-
interface Position {
|
|
11
|
-
marketId: number;
|
|
12
|
-
symbol: string;
|
|
13
|
-
size: number;
|
|
14
|
-
entryPrice: number;
|
|
15
|
-
markPrice: number;
|
|
16
|
-
pnl: number;
|
|
17
|
-
pnlPercentage: number;
|
|
18
|
-
liquidationPrice?: number;
|
|
19
|
-
accountId: number;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
// Interface for market stats based on the Nord API
|
|
23
|
-
interface MarketStats {
|
|
24
|
-
market_id: number;
|
|
25
|
-
index_price: [number, number];
|
|
26
|
-
volume_24h: number;
|
|
27
|
-
high_24h: number;
|
|
28
|
-
low_24h: number;
|
|
29
|
-
perp_stats?: {
|
|
30
|
-
mark_price?: number;
|
|
31
|
-
funding_rate?: number;
|
|
32
|
-
next_funding_time?: Date;
|
|
33
|
-
open_interest?: number;
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export default function UserPositions() {
|
|
38
|
-
const { nord, nordUser } = useN1WalletContext();
|
|
39
|
-
const [positions, setPositions] = useState<Position[]>([]);
|
|
40
|
-
const [loading, setLoading] = useState(false);
|
|
41
|
-
const [error, setError] = useState<string | null>(null);
|
|
42
|
-
const [marketStats, setMarketStats] = useState<MarketStats[]>([]);
|
|
43
|
-
|
|
44
|
-
// Fetch user positions
|
|
45
|
-
useEffect(() => {
|
|
46
|
-
if (!nordUser || !nord) return;
|
|
47
|
-
|
|
48
|
-
const fetchPositions = async () => {
|
|
49
|
-
setLoading(true);
|
|
50
|
-
setError(null);
|
|
51
|
-
|
|
52
|
-
try {
|
|
53
|
-
// Refresh user info to get latest positions
|
|
54
|
-
await nordUser.fetchInfo();
|
|
55
|
-
|
|
56
|
-
// Get market stats for mark prices
|
|
57
|
-
try {
|
|
58
|
-
const stats = await nord.marketsStats();
|
|
59
|
-
setMarketStats(stats.markets);
|
|
60
|
-
} catch (statsErr) {
|
|
61
|
-
console.error('Error fetching market stats:', statsErr);
|
|
62
|
-
// Don't set loading to false here, as we still want to try to get positions
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
// Extract real positions from nordUser
|
|
66
|
-
const realPositions: Position[] = [];
|
|
67
|
-
|
|
68
|
-
// Loop through all accounts
|
|
69
|
-
if (nordUser.accountIds) {
|
|
70
|
-
for (const accountId of nordUser.accountIds) {
|
|
71
|
-
// Check if this account has positions
|
|
72
|
-
const accountPositions = nordUser.positions[accountId];
|
|
73
|
-
|
|
74
|
-
if (accountPositions && accountPositions.length > 0) {
|
|
75
|
-
// Process each position
|
|
76
|
-
for (const position of accountPositions) {
|
|
77
|
-
// Only include positions with perp data and non-zero size
|
|
78
|
-
if (position.perp && Math.abs(position.perp.baseSize) > 0) {
|
|
79
|
-
// Find market info to get symbol
|
|
80
|
-
const market = nord.markets.find(
|
|
81
|
-
(m) => m.marketId === position.marketId
|
|
82
|
-
);
|
|
83
|
-
const symbol = market
|
|
84
|
-
? market.symbol
|
|
85
|
-
: `Market-${position.marketId}`;
|
|
86
|
-
|
|
87
|
-
// Calculate PnL
|
|
88
|
-
const totalPnl =
|
|
89
|
-
position.perp.sizePricePnl +
|
|
90
|
-
position.perp.fundingPaymentPnl;
|
|
91
|
-
const entryValue =
|
|
92
|
-
Math.abs(position.perp.baseSize) * position.perp.price;
|
|
93
|
-
const pnlPercentage =
|
|
94
|
-
entryValue > 0 ? (totalPnl / entryValue) * 100 : 0;
|
|
95
|
-
|
|
96
|
-
// Get mark price from market stats or use entry price as fallback
|
|
97
|
-
const stats = marketStats.find(
|
|
98
|
-
(m) => m.market_id === position.marketId
|
|
99
|
-
);
|
|
100
|
-
const markPrice =
|
|
101
|
-
stats?.perp_stats?.mark_price || position.perp.price;
|
|
102
|
-
|
|
103
|
-
realPositions.push({
|
|
104
|
-
marketId: position.marketId,
|
|
105
|
-
symbol: symbol,
|
|
106
|
-
size: position.perp.isLong
|
|
107
|
-
? position.perp.baseSize
|
|
108
|
-
: -position.perp.baseSize,
|
|
109
|
-
entryPrice: position.perp.price,
|
|
110
|
-
markPrice: markPrice,
|
|
111
|
-
pnl: totalPnl,
|
|
112
|
-
pnlPercentage: pnlPercentage,
|
|
113
|
-
accountId: accountId,
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
setPositions(realPositions);
|
|
122
|
-
setLoading(false); // Explicitly set loading to false on success
|
|
123
|
-
} catch (err) {
|
|
124
|
-
console.error('Error fetching positions:', err);
|
|
125
|
-
setError('Failed to load positions');
|
|
126
|
-
setLoading(false); // Ensure loading is set to false on error
|
|
127
|
-
}
|
|
128
|
-
};
|
|
129
|
-
|
|
130
|
-
fetchPositions();
|
|
131
|
-
|
|
132
|
-
// Set up polling for position updates
|
|
133
|
-
const intervalId = setInterval(fetchPositions, 10000); // Update every 10 seconds
|
|
134
|
-
|
|
135
|
-
return () => clearInterval(intervalId);
|
|
136
|
-
}, [nordUser, nord]); // Remove marketStats from dependency array to prevent infinite loops
|
|
137
|
-
|
|
138
|
-
// Handle position close
|
|
139
|
-
const handleClosePosition = async (marketId: number, accountId: number) => {
|
|
140
|
-
if (!nordUser) return;
|
|
141
|
-
|
|
142
|
-
try {
|
|
143
|
-
// Find the position to close
|
|
144
|
-
const position = positions.find(
|
|
145
|
-
(pos) => pos.marketId === marketId && pos.accountId === accountId
|
|
146
|
-
);
|
|
147
|
-
|
|
148
|
-
if (!position) {
|
|
149
|
-
throw new Error('Position not found');
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
// Place an order to close the position (opposite side, same size)
|
|
153
|
-
await nordUser.placeOrder({
|
|
154
|
-
marketId: marketId,
|
|
155
|
-
side: position.size > 0 ? 'ask' : 'bid', // Opposite side to close
|
|
156
|
-
fillMode: 'market', // Market order to ensure it gets filled
|
|
157
|
-
isReduceOnly: true, // Reduce-only to ensure it only closes the position
|
|
158
|
-
size: Math.abs(position.size), // Absolute size value
|
|
159
|
-
accountId: accountId,
|
|
160
|
-
});
|
|
161
|
-
|
|
162
|
-
// Refresh positions after closing
|
|
163
|
-
await nordUser.fetchInfo();
|
|
164
|
-
|
|
165
|
-
// Remove the position from the local state
|
|
166
|
-
setPositions(
|
|
167
|
-
positions.filter(
|
|
168
|
-
(pos) => !(pos.marketId === marketId && pos.accountId === accountId)
|
|
169
|
-
)
|
|
170
|
-
);
|
|
171
|
-
} catch (err) {
|
|
172
|
-
console.error('Error closing position:', err);
|
|
173
|
-
setError('Failed to close position');
|
|
174
|
-
}
|
|
175
|
-
};
|
|
176
|
-
|
|
177
|
-
return (
|
|
178
|
-
<div className="bg-white dark:bg-n1-ww-gray-950 overflow-hidden">
|
|
179
|
-
<div className="p-4">
|
|
180
|
-
<h2 className="text-lg font-semibold text-n1-ww-gray-900 dark:text-n1-ww-gray-100 mb-4">
|
|
181
|
-
Positions
|
|
182
|
-
</h2>
|
|
183
|
-
|
|
184
|
-
{loading && positions.length === 0 ? (
|
|
185
|
-
<div className="flex items-center justify-center h-32">
|
|
186
|
-
<RefreshCw size={20} className="text-n1-ww-gray-400 n1-ww-animate-spin" />
|
|
187
|
-
</div>
|
|
188
|
-
) : error ? (
|
|
189
|
-
<div className="p-3 bg-red-50 dark:bg-red-900/20 rounded-lg text-red-600 dark:text-red-400 text-sm">
|
|
190
|
-
{error}
|
|
191
|
-
</div>
|
|
192
|
-
) : positions.length === 0 ? (
|
|
193
|
-
<div className="p-3 bg-n1-ww-gray-50 dark:bg-n1-ww-gray-950 rounded-lg text-n1-ww-gray-500 dark:text-n1-ww-gray-400 text-sm text-center">
|
|
194
|
-
No open positions
|
|
195
|
-
</div>
|
|
196
|
-
) : (
|
|
197
|
-
<div className="space-y-3">
|
|
198
|
-
{positions.map((position, index) => (
|
|
199
|
-
<div
|
|
200
|
-
key={index}
|
|
201
|
-
className="p-3 bg-n1-ww-gray-50 dark:bg-n1-ww-gray-950 rounded-lg"
|
|
202
|
-
>
|
|
203
|
-
<div className="flex items-center justify-between mb-2">
|
|
204
|
-
<div className="flex items-center">
|
|
205
|
-
<span className="font-medium text-n1-ww-gray-900 dark:text-n1-ww-gray-100 mr-2">
|
|
206
|
-
{position.symbol}
|
|
207
|
-
</span>
|
|
208
|
-
<span
|
|
209
|
-
className={`text-xs px-2 py-0.5 rounded ${
|
|
210
|
-
position.size > 0
|
|
211
|
-
? 'bg-green-100 dark:bg-green-900/20 text-green-600 dark:text-green-400'
|
|
212
|
-
: 'bg-red-100 dark:bg-red-900/20 text-red-600 dark:text-red-400'
|
|
213
|
-
}`}
|
|
214
|
-
>
|
|
215
|
-
{position.size > 0 ? 'Long' : 'Short'}{' '}
|
|
216
|
-
{Math.abs(position.size)}
|
|
217
|
-
</span>
|
|
218
|
-
</div>
|
|
219
|
-
</div>
|
|
220
|
-
|
|
221
|
-
<div className="grid grid-cols-2 gap-2 text-sm">
|
|
222
|
-
<div>
|
|
223
|
-
<div className="text-n1-ww-gray-500 dark:text-n1-ww-gray-400">
|
|
224
|
-
Entry Price
|
|
225
|
-
</div>
|
|
226
|
-
<div className="font-medium text-n1-ww-gray-900 dark:text-n1-ww-gray-100 font-mono">
|
|
227
|
-
{position.entryPrice.toFixed(2)}
|
|
228
|
-
</div>
|
|
229
|
-
</div>
|
|
230
|
-
<div>
|
|
231
|
-
<div className="text-n1-ww-gray-500 dark:text-n1-ww-gray-400">
|
|
232
|
-
Mark Price
|
|
233
|
-
</div>
|
|
234
|
-
<div className="font-medium text-n1-ww-gray-900 dark:text-n1-ww-gray-100 font-mono">
|
|
235
|
-
{position.markPrice.toFixed(2)}
|
|
236
|
-
</div>
|
|
237
|
-
</div>
|
|
238
|
-
<div>
|
|
239
|
-
<div className="text-n1-ww-gray-500 dark:text-n1-ww-gray-400">PnL</div>
|
|
240
|
-
<div
|
|
241
|
-
className={`font-medium font-mono ${
|
|
242
|
-
position.pnl >= 0
|
|
243
|
-
? 'text-green-600 dark:text-green-400'
|
|
244
|
-
: 'text-red-600 dark:text-red-400'
|
|
245
|
-
}`}
|
|
246
|
-
>
|
|
247
|
-
{position.pnl >= 0 ? '+' : ''}
|
|
248
|
-
{position.pnl.toFixed(2)} (
|
|
249
|
-
{position.pnlPercentage.toFixed(2)}%)
|
|
250
|
-
</div>
|
|
251
|
-
</div>
|
|
252
|
-
<div>
|
|
253
|
-
<div className="text-n1-ww-gray-500 dark:text-n1-ww-gray-400">
|
|
254
|
-
Liquidation
|
|
255
|
-
</div>
|
|
256
|
-
<div className="font-medium text-n1-ww-gray-900 dark:text-n1-ww-gray-100 font-mono">
|
|
257
|
-
{position.liquidationPrice
|
|
258
|
-
? position.liquidationPrice.toFixed(2)
|
|
259
|
-
: 'N/A'}
|
|
260
|
-
</div>
|
|
261
|
-
</div>
|
|
262
|
-
</div>
|
|
263
|
-
</div>
|
|
264
|
-
))}
|
|
265
|
-
|
|
266
|
-
{loading && positions.length > 0 && (
|
|
267
|
-
<div className="flex justify-center mt-2">
|
|
268
|
-
<RefreshCw size={16} className="text-n1-ww-gray-400 n1-ww-animate-spin" />
|
|
269
|
-
</div>
|
|
270
|
-
)}
|
|
271
|
-
</div>
|
|
272
|
-
)}
|
|
273
|
-
</div>
|
|
274
|
-
</div>
|
|
275
|
-
);
|
|
276
|
-
}
|
|
277
|
-
*/
|
|
278
|
-
//# sourceMappingURL=UserPositions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"UserPositions.js","sourceRoot":"","sources":["../../../../../src/Modal/Sidebar/NordTradingView/UserPositions/UserPositions.tsx"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,0DAA0D;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiRE","sourcesContent":["// DEPRECATED: This entire component has been deprecated due to errors\n// All code below has been commented out to prevent issues\n\n/*\n\nimport { useState, useEffect } from 'react';\nimport { useN1WalletContext } from '../../../../Provider/hooks';\nimport { RefreshCw, X } from 'lucide-react';\n\ninterface Position {\n marketId: number;\n symbol: string;\n size: number;\n entryPrice: number;\n markPrice: number;\n pnl: number;\n pnlPercentage: number;\n liquidationPrice?: number;\n accountId: number;\n}\n\n// Interface for market stats based on the Nord API\ninterface MarketStats {\n market_id: number;\n index_price: [number, number];\n volume_24h: number;\n high_24h: number;\n low_24h: number;\n perp_stats?: {\n mark_price?: number;\n funding_rate?: number;\n next_funding_time?: Date;\n open_interest?: number;\n };\n}\n\nexport default function UserPositions() {\n const { nord, nordUser } = useN1WalletContext();\n const [positions, setPositions] = useState<Position[]>([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [marketStats, setMarketStats] = useState<MarketStats[]>([]);\n\n // Fetch user positions\n useEffect(() => {\n if (!nordUser || !nord) return;\n\n const fetchPositions = async () => {\n setLoading(true);\n setError(null);\n\n try {\n // Refresh user info to get latest positions\n await nordUser.fetchInfo();\n\n // Get market stats for mark prices\n try {\n const stats = await nord.marketsStats();\n setMarketStats(stats.markets);\n } catch (statsErr) {\n console.error('Error fetching market stats:', statsErr);\n // Don't set loading to false here, as we still want to try to get positions\n }\n\n // Extract real positions from nordUser\n const realPositions: Position[] = [];\n\n // Loop through all accounts\n if (nordUser.accountIds) {\n for (const accountId of nordUser.accountIds) {\n // Check if this account has positions\n const accountPositions = nordUser.positions[accountId];\n\n if (accountPositions && accountPositions.length > 0) {\n // Process each position\n for (const position of accountPositions) {\n // Only include positions with perp data and non-zero size\n if (position.perp && Math.abs(position.perp.baseSize) > 0) {\n // Find market info to get symbol\n const market = nord.markets.find(\n (m) => m.marketId === position.marketId\n );\n const symbol = market\n ? market.symbol\n : `Market-${position.marketId}`;\n\n // Calculate PnL\n const totalPnl =\n position.perp.sizePricePnl +\n position.perp.fundingPaymentPnl;\n const entryValue =\n Math.abs(position.perp.baseSize) * position.perp.price;\n const pnlPercentage =\n entryValue > 0 ? (totalPnl / entryValue) * 100 : 0;\n\n // Get mark price from market stats or use entry price as fallback\n const stats = marketStats.find(\n (m) => m.market_id === position.marketId\n );\n const markPrice =\n stats?.perp_stats?.mark_price || position.perp.price;\n\n realPositions.push({\n marketId: position.marketId,\n symbol: symbol,\n size: position.perp.isLong\n ? position.perp.baseSize\n : -position.perp.baseSize,\n entryPrice: position.perp.price,\n markPrice: markPrice,\n pnl: totalPnl,\n pnlPercentage: pnlPercentage,\n accountId: accountId,\n });\n }\n }\n }\n }\n }\n\n setPositions(realPositions);\n setLoading(false); // Explicitly set loading to false on success\n } catch (err) {\n console.error('Error fetching positions:', err);\n setError('Failed to load positions');\n setLoading(false); // Ensure loading is set to false on error\n }\n };\n\n fetchPositions();\n\n // Set up polling for position updates\n const intervalId = setInterval(fetchPositions, 10000); // Update every 10 seconds\n\n return () => clearInterval(intervalId);\n }, [nordUser, nord]); // Remove marketStats from dependency array to prevent infinite loops\n\n // Handle position close\n const handleClosePosition = async (marketId: number, accountId: number) => {\n if (!nordUser) return;\n\n try {\n // Find the position to close\n const position = positions.find(\n (pos) => pos.marketId === marketId && pos.accountId === accountId\n );\n\n if (!position) {\n throw new Error('Position not found');\n }\n\n // Place an order to close the position (opposite side, same size)\n await nordUser.placeOrder({\n marketId: marketId,\n side: position.size > 0 ? 'ask' : 'bid', // Opposite side to close\n fillMode: 'market', // Market order to ensure it gets filled\n isReduceOnly: true, // Reduce-only to ensure it only closes the position\n size: Math.abs(position.size), // Absolute size value\n accountId: accountId,\n });\n\n // Refresh positions after closing\n await nordUser.fetchInfo();\n\n // Remove the position from the local state\n setPositions(\n positions.filter(\n (pos) => !(pos.marketId === marketId && pos.accountId === accountId)\n )\n );\n } catch (err) {\n console.error('Error closing position:', err);\n setError('Failed to close position');\n }\n };\n\n return (\n <div className=\"bg-white dark:bg-n1-ww-gray-950 overflow-hidden\">\n <div className=\"p-4\">\n <h2 className=\"text-lg font-semibold text-n1-ww-gray-900 dark:text-n1-ww-gray-100 mb-4\">\n Positions\n </h2>\n\n {loading && positions.length === 0 ? (\n <div className=\"flex items-center justify-center h-32\">\n <RefreshCw size={20} className=\"text-n1-ww-gray-400 n1-ww-animate-spin\" />\n </div>\n ) : error ? (\n <div className=\"p-3 bg-red-50 dark:bg-red-900/20 rounded-lg text-red-600 dark:text-red-400 text-sm\">\n {error}\n </div>\n ) : positions.length === 0 ? (\n <div className=\"p-3 bg-n1-ww-gray-50 dark:bg-n1-ww-gray-950 rounded-lg text-n1-ww-gray-500 dark:text-n1-ww-gray-400 text-sm text-center\">\n No open positions\n </div>\n ) : (\n <div className=\"space-y-3\">\n {positions.map((position, index) => (\n <div\n key={index}\n className=\"p-3 bg-n1-ww-gray-50 dark:bg-n1-ww-gray-950 rounded-lg\"\n >\n <div className=\"flex items-center justify-between mb-2\">\n <div className=\"flex items-center\">\n <span className=\"font-medium text-n1-ww-gray-900 dark:text-n1-ww-gray-100 mr-2\">\n {position.symbol}\n </span>\n <span\n className={`text-xs px-2 py-0.5 rounded ${\n position.size > 0\n ? 'bg-green-100 dark:bg-green-900/20 text-green-600 dark:text-green-400'\n : 'bg-red-100 dark:bg-red-900/20 text-red-600 dark:text-red-400'\n }`}\n >\n {position.size > 0 ? 'Long' : 'Short'}{' '}\n {Math.abs(position.size)}\n </span>\n </div>\n </div>\n\n <div className=\"grid grid-cols-2 gap-2 text-sm\">\n <div>\n <div className=\"text-n1-ww-gray-500 dark:text-n1-ww-gray-400\">\n Entry Price\n </div>\n <div className=\"font-medium text-n1-ww-gray-900 dark:text-n1-ww-gray-100 font-mono\">\n {position.entryPrice.toFixed(2)}\n </div>\n </div>\n <div>\n <div className=\"text-n1-ww-gray-500 dark:text-n1-ww-gray-400\">\n Mark Price\n </div>\n <div className=\"font-medium text-n1-ww-gray-900 dark:text-n1-ww-gray-100 font-mono\">\n {position.markPrice.toFixed(2)}\n </div>\n </div>\n <div>\n <div className=\"text-n1-ww-gray-500 dark:text-n1-ww-gray-400\">PnL</div>\n <div\n className={`font-medium font-mono ${\n position.pnl >= 0\n ? 'text-green-600 dark:text-green-400'\n : 'text-red-600 dark:text-red-400'\n }`}\n >\n {position.pnl >= 0 ? '+' : ''}\n {position.pnl.toFixed(2)} (\n {position.pnlPercentage.toFixed(2)}%)\n </div>\n </div>\n <div>\n <div className=\"text-n1-ww-gray-500 dark:text-n1-ww-gray-400\">\n Liquidation\n </div>\n <div className=\"font-medium text-n1-ww-gray-900 dark:text-n1-ww-gray-100 font-mono\">\n {position.liquidationPrice\n ? position.liquidationPrice.toFixed(2)\n : 'N/A'}\n </div>\n </div>\n </div>\n </div>\n ))}\n\n {loading && positions.length > 0 && (\n <div className=\"flex justify-center mt-2\">\n <RefreshCw size={16} className=\"text-n1-ww-gray-400 n1-ww-animate-spin\" />\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n );\n}\n*/"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LazyWalletProvider.js","sourceRoot":"","sources":["../../src/Provider/LazyWalletProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport { useN1WalletContext, useN1WalletInternalContext } from './hooks';\nimport { logger } from '../utils/logger';\n\nfunction DynamicContextConsumer({ children }: { children: any }) {\n const [DynamicContext, setDynamicContext] = useState<any>(null);\n const showAuthFlowRef = useRef<((show: boolean) => void) | null>(null);\n const primaryWalletStateRef = useRef<any>(null);\n\n // Use refs to track previous values and prevent unnecessary updates\n const prevPrimaryWalletRef = useRef<any>(null);\n const prevHandleLogOutRef = useRef<any>(null);\n const prevSdkHasLoadedRef = useRef<boolean | null>(null);\n\n const {\n setDynamicWallet,\n setDynamicHandleLogOut,\n setDynamicSdkHasLoaded,\n setAddress,\n setShowDynamicWidget,\n setStartClosingLogin,\n } = useN1WalletInternalContext();\n\n const {\n setShowLogin,\n } = useN1WalletContext();\n\n\n // Load the Dynamic context only once\n useEffect(() => {\n let isMounted = true;\n import('@dynamic-labs/sdk-react-core').then(({ useDynamicContext }) => {\n if (isMounted) {\n setDynamicContext(() => useDynamicContext);\n }\n });\n return () => {\n isMounted = false;\n };\n }, []);\n\n // Set up a stable widget function that uses the ref - only once\n useEffect(() => {\n const stableShowWidget = (show: boolean) => {\n if (showAuthFlowRef.current) {\n showAuthFlowRef.current(show);\n }\n };\n\n setShowDynamicWidget(() => stableShowWidget);\n }, [setShowDynamicWidget]);\n\n if (!DynamicContext) {\n return <>{children}</>;\n }\n\n const DynamicComponent = () => {\n const { primaryWallet, sdkHasLoaded, setShowAuthFlow, handleLogOut } =\n DynamicContext();\n\n // Store setShowAuthFlow in ref to avoid re-renders - only when it changes\n useEffect(() => {\n if (!setShowAuthFlow) {\n showAuthFlowRef.current = null;\n return;\n }\n\n const proxiedSetShowAuthFlow = (show: boolean) => {\n setShowAuthFlow(show);\n\n if (!show && !primaryWalletStateRef.current) {\n logger.debug(\n 'Dynamic auth flow closed before wallet connection; closing modal'\n );\n setShowLogin(false);\n setStartClosingLogin(true);\n }\n };\n\n showAuthFlowRef.current = proxiedSetShowAuthFlow;\n\n return () => {\n if (showAuthFlowRef.current === proxiedSetShowAuthFlow) {\n showAuthFlowRef.current = null;\n }\n };\n }, [setShowAuthFlow, setShowLogin, setStartClosingLogin]);\n\n // Set the dynamic wallet and address when the primary wallet changes\n // Use deep comparison to prevent unnecessary updates\n useEffect(() => {\n \n // Skip if the wallet hasn't actually changed\n if (primaryWallet === prevPrimaryWalletRef.current) {\n return;\n }\n\n prevPrimaryWalletRef.current = primaryWallet;\n primaryWalletStateRef.current = primaryWallet;\n\n if (primaryWallet) {\n setDynamicWallet(primaryWallet);\n setAddress(primaryWallet.address);\n } else {\n setDynamicWallet(null);\n setAddress('');\n }\n }, [primaryWallet, setDynamicWallet, setAddress]);\n\n // Set the logout handler when it changes - only when it actually changes\n useEffect(() => {\n if (handleLogOut && handleLogOut !== prevHandleLogOutRef.current) {\n prevHandleLogOutRef.current = handleLogOut;\n setDynamicHandleLogOut(() => handleLogOut);\n }\n }, [handleLogOut, setDynamicHandleLogOut]);\n\n // Set the SDK loaded flag when it changes - only when it actually changes\n useEffect(() => {\n if (sdkHasLoaded !== prevSdkHasLoadedRef.current) {\n prevSdkHasLoadedRef.current = sdkHasLoaded;\n setDynamicSdkHasLoaded(sdkHasLoaded);\n }\n }, [sdkHasLoaded, setDynamicSdkHasLoaded]);\n\n return <>{children}</>;\n };\n\n return <DynamicComponent />;\n}\n\nconst getSettings = () => ({\n initialAuthenticationMode: 'connect-only',\n environmentId: '61fe6031-545b-4e27-bc05-03c8a09f190b',\n silentAuthentication: true,\n silentAuth: true,\n theme: {\n mode: 'dark',\n },\n events: {\n onAuthSuccess: (args: any) => {\n logger.debug('onAuthSuccess was called', args);\n },\n },\n});\n\nfunction LazyInternal(props: { children: any }) {\n const [Provider, setProvider] = useState<any>(null);\n const [DynamicWidgetComponent, setDynamicWidgetComponent] = useState<any>(null);\n const [walletConnectors, setWalletConnectors] = useState<any[]>([]);\n\n useEffect(() => {\n\n const loadDynamicDeps = async () => {\n try {\n const [\n { DynamicContextProvider, DynamicWidget },\n { SolanaWalletConnectors },\n ] = await Promise.all([\n import('@dynamic-labs/sdk-react-core'),\n import('@dynamic-labs/solana'),\n ]);\n\n setProvider(() => DynamicContextProvider);\n setDynamicWidgetComponent(() => DynamicWidget);\n setWalletConnectors([SolanaWalletConnectors]);\n } catch (error) {\n logger.error('Failed to load Dynamic dependencies:', error);\n }\n };\n\n loadDynamicDeps();\n }, []);\n\n // Memoize the dynamic settings to prevent unnecessary re-renders\n const dynamicSettings = useCallback(\n () => ({\n ...getSettings(),\n walletConnectors,\n }),\n [walletConnectors]\n );\n\n if (!Provider || walletConnectors.length === 0) {\n return null;\n }\n\n return (\n <Provider settings={dynamicSettings()} theme=\"dark\">\n <DynamicContextConsumer>{props.children}</DynamicContextConsumer>\n {DynamicWidgetComponent ? <DynamicWidgetComponent /> : null}\n </Provider>\n );\n}\n\nexport function LazyWalletProvider({ children }: any) {\n return <LazyInternal>{children}</LazyInternal>;\n}\n"]}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import '../polyfills/windowEthereumGuard';
|
|
2
|
-
import { N1WalletProviderProps } from './types';
|
|
3
|
-
export declare function N1WalletProvider({ children, providedSessionMode, appId, onError, nord, colorOverrides, skipFinalScreen, }: N1WalletProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"N1WalletProvider.js","sourceRoot":"","sources":["../../src/Provider/N1WalletProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport '../polyfills/windowEthereumGuard';\n\nimport React, { Suspense, useCallback, useEffect, useRef, useState } from 'react';\nimport root from 'react-shadow';\nimport { N1WalletModal } from '../Modal/N1WalletModal';\nimport { NordProvider } from '../Modal/NordFlow/context';\nimport { WalletError, WalletErrorCode } from '../errors/types';\nimport { logger } from '../utils/logger';\nimport WalletErrorBoundary from './WalletErrorBoundary';\nimport { N1InternalWalletContext, N1WalletContext } from './context';\nimport { useNordUserInitialization } from './hooks/useNordUserInitialization';\nimport {\n Balance,\n N1ModalViewMode,\n N1SessionMode,\n N1WalletProviderProps,\n} from './types';\n\nconst LazyWalletProvider = React.lazy(() =>\n import('./LazyWalletProvider').then((mod) => ({\n default: mod.LazyWalletProvider,\n }))\n);\n\nimport mainCss from '../embedded-main-css';\n\nfunction NordWrapper({ children }: { children: React.ReactNode }) {\n\n // Use the extracted hook for NordUser initialization\n useNordUserInitialization();\n return (\n <>\n {children}\n </>\n )\n}\n\nexport function N1WalletProvider({\n children,\n providedSessionMode,\n appId,\n onError,\n nord,\n colorOverrides,\n skipFinalScreen,\n}: N1WalletProviderProps) {\n const [isConnected, setIsConnected] = useState<boolean>(false);\n const [sessionPubKey, setSessionPubKey] = useState<Uint8Array | null>(null);\n const [walletPubKey, setWalletPubKey] = useState<Uint8Array | null>(null);\n const [userChain, setUserChain] = useState<string | null>(null);\n const [username, setUsername] = useState<string>('');\n const [signMessageWithSessionKey, setSignMessageWithSessionKey] = useState<\n ((message: any) => Promise<any>) | null\n >(null);\n const [signMessageWithWalletKey, setSignMessageWithWalletKey] = useState<\n ((message: any) => Promise<any>) | null\n >(null);\n const [signTransactionWithWalletKey, setSignTransactionWithWalletKey] =\n useState<((transaction: any) => Promise<any>) | null>(null);\n const [loading, setLoading] = useState<boolean>(false);\n const [viewMode, setViewMode] = useState<N1ModalViewMode>(\n N1ModalViewMode.Automatic\n );\n const [nordUser, setNordUser] = useState<any>(null);\n\n // dynamic\n const [balances, setBalances] = useState<Balance[]>([]);\n const [chain, setChain] = useState<string>('');\n const [dynamicSdkHasLoaded, setDynamicSdkHasLoaded] = useState<any>(null);\n\n const [showLogin, setShowLoginState] = useState<boolean>(false);\n const [startClosingLogin, setStartClosingLogin] = useState<boolean>(false);\n const [showDynamicWidget, setShowDynamicWidget] = useState<any>(null);\n const [depositFlowRequestId, setDepositFlowRequestId] = useState(0);\n const nextOpenAllowedAtRef = useRef(0);\n\n // dynamic\n const [address, setAddress] = useState<string>('');\n const [dynamicHandleLogOut, setDynamicHandleLogOut] = useState<any>(null);\n const [dynamicWallet, setDynamicWallet] = useState<any>(null);\n const sessionMode = N1SessionMode.Nord;\n\n useEffect(() => {\n if (providedSessionMode !== N1SessionMode.Nord) {\n logger.warn(\n `Only Nord session mode is supported. Received ${providedSessionMode}, defaulting to Nord.`\n );\n }\n }, [providedSessionMode]);\n\n useEffect(() => {\n const isDynamicReady = Boolean(dynamicSdkHasLoaded);\n setLoading(!isDynamicReady);\n }, [dynamicSdkHasLoaded, setLoading]);\n\n const handleError = useCallback(\n (error: WalletError) => {\n onError?.(error);\n },\n [onError]\n );\n\n const throwTestError = async () => {\n handleError(\n new WalletError(\n WalletErrorCode.WALLET_NOT_FOUND,\n 'Test error: No compatible wallet was found'\n )\n );\n };\n\n // Prepare CSS with color overrides if provided\n let injectedCss = mainCss;\n if (Array.isArray(colorOverrides) && colorOverrides.length > 0) {\n // Apply all color overrides in order\n colorOverrides.forEach(({ color, replacement }) => {\n if (color && replacement) {\n // Replace all instances, case-insensitive\n const regex = new RegExp(color.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'gi');\n injectedCss = injectedCss.replace(regex, replacement);\n }\n });\n }\n\n const blockModalReopen = useCallback((duration: number = 600) => {\n const unblockAt = Date.now() + duration;\n logger.debug('blockModalReopen invoked', { duration, unblockAt });\n nextOpenAllowedAtRef.current = Date.now() + duration;\n }, []);\n\n const setShowLogin = useCallback(\n (next: boolean) => {\n setShowLoginState((prev) => {\n logger.debug('setShowLogin invoked', {\n next,\n prev,\n now: Date.now(),\n nextOpenAllowed: nextOpenAllowedAtRef.current,\n });\n\n if (next === prev) {\n return prev;\n }\n\n if (next) {\n logger.debug('setShowLogin opening request stack trace', {\n stack: new Error('setShowLogin stack').stack,\n });\n if (Date.now() < nextOpenAllowedAtRef.current) {\n logger.debug('setShowLogin blocked by cooldown', {\n next,\n prev,\n });\n return prev;\n }\n logger.debug('setShowLogin opening modal');\n return true;\n }\n\n logger.debug('setShowLogin closing modal');\n blockModalReopen();\n return false;\n });\n },\n [blockModalReopen]\n );\n\n const startDepositFlow = useCallback(() => {\n if (!nordUser || !nordUser.sessionId) {\n logger.warn(\n 'startDepositFlow called without an authenticated Nord session; falling back to regular flow'\n );\n setShowLogin(true);\n return false;\n }\n\n setStartClosingLogin(false);\n setDepositFlowRequestId((prev) => prev + 1);\n setShowLogin(true);\n return true;\n }, [nordUser, setShowLogin, setStartClosingLogin]);\n\n // Create the wallet context value\n const walletContextValue = {\n address,\n appId,\n balances,\n chain,\n isConnected,\n sessionMode,\n sessionPubKey,\n setShowLogin,\n startDepositFlow,\n setViewMode,\n showLogin,\n signMessageWithSessionKey,\n signMessageWithWalletKey,\n signTransactionWithWalletKey,\n userChain,\n username,\n viewMode,\n walletPubKey,\n throwTestError,\n nord,\n nordUser,\n };\n\n // Create the internal wallet context value\n const internalWalletContextValue = {\n dynamicHandleLogOut,\n dynamicWallet,\n loading,\n dynamicSdkHasLoaded,\n handleError,\n setDynamicSdkHasLoaded,\n setAddress,\n setBalances,\n setChain,\n setDynamicHandleLogOut,\n setDynamicWallet,\n setIsConnected,\n setLoading,\n blockModalReopen,\n setSessionPubKey,\n setSignMessageWithSessionKey,\n setSignMessageWithWalletKey,\n setSignTransactionWithWalletKey,\n setStartClosingLogin,\n setUsername,\n setUserChain,\n setViewMode,\n setWalletPubKey,\n startClosingLogin,\n showDynamicWidget,\n setShowDynamicWidget,\n sessionMode,\n setNordUser,\n depositFlowRequestId,\n };\n\n const ModalContent = () => (\n <root.div>\n <style>{injectedCss}</style>\n <N1WalletModal />\n </root.div>\n );\n\n return (\n <WalletErrorBoundary onError={handleError}>\n <N1WalletContext.Provider value={walletContextValue}>\n <N1InternalWalletContext.Provider\n value={{\n ...internalWalletContextValue,\n skipFinalScreen, // make available to modal context tree\n }}\n >\n <NordWrapper>\n <NordProvider>\n <>\n {children}\n <Suspense fallback={<ModalContent />}>\n <LazyWalletProvider>\n <ModalContent />\n </LazyWalletProvider>\n </Suspense>\n </>\n </NordProvider>\n </NordWrapper>\n </N1InternalWalletContext.Provider>\n </N1WalletContext.Provider>\n </WalletErrorBoundary>\n );\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ShadowRootWrapper.js","sourceRoot":"","sources":["../../src/Provider/ShadowRootWrapper.tsx"],"names":[],"mappings":";AACA,OAAO,IAAI,MAAM,cAAc,CAAC;AAOhC,MAAM,UAAU,iBAAiB,CAAC,EAAiD;QAA/C,QAAQ,cAAA,EAAE,WAAW,iBAAA;IACvD,OAAO,CACL,MAAC,IAAI,CAAC,GAAG,eACP,0BAAQ,WAAW,GAAS,EAC3B,QAAQ,IACA,CACZ,CAAC;AACJ,CAAC","sourcesContent":["import React from 'react';\nimport root from 'react-shadow';\n\ninterface ShadowRootWrapperProps {\n children: React.ReactNode;\n injectedCss: string;\n}\n\nexport function ShadowRootWrapper({ children, injectedCss }: ShadowRootWrapperProps) {\n return (\n <root.div>\n <style>{injectedCss}</style>\n {children}\n </root.div>\n );\n} \n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"WalletErrorBoundary.js","sourceRoot":"","sources":["../../src/Provider/WalletErrorBoundary.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAW/D,uCAAuC;AACvC;IAAkC,uCAGjC;IAHD;;QAIE,WAAK,GAA6B;YAChC,QAAQ,EAAE,KAAK;SAChB,CAAC;;IAuCJ,CAAC;IArCQ,4CAAwB,GAA/B;QACE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,+CAAiB,GAAjB,UAAkB,KAAY;QAC5B,OAAO,CAAC,KAAK,CAAC,8DAA8D,EAAE,KAAK,CAAC,CAAC;QACrF,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,wCAAwC;YACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAChB,IAAI,WAAW,CACb,eAAe,CAAC,OAAO,EACvB,KAAK,CAAC,OAAO,IAAI,8BAA8B,EAC/C,EAAE,aAAa,EAAE,KAAK,EAAE,CACzB,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,gDAAkB,GAAlB,UACE,SAAmC,EACnC,SAAmC;QAEnC,IAAI,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC5F,wDAAwD;YACxD,yDAAyD;YACzD,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,oCAAM,GAAN;QACE,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC7B,CAAC;IACH,0BAAC;AAAD,CAAC,AA7CD,CAAkC,KAAK,CAAC,SAAS,GA6ChD;AAED,eAAe,mBAAmB,CAAC","sourcesContent":["import React from 'react';\nimport { WalletError, WalletErrorCode } from '../errors/types';\n\ntype WalletErrorBoundaryProps = {\n children: React.ReactNode;\n onError: (error: WalletError) => void;\n};\n\ntype WalletErrorBoundaryState = {\n hasError: boolean;\n};\n\n// Error boundary to catch WalletErrors\nclass WalletErrorBoundary extends React.Component<\n WalletErrorBoundaryProps,\n WalletErrorBoundaryState\n> {\n state: WalletErrorBoundaryState = {\n hasError: false,\n };\n\n static getDerivedStateFromError(): WalletErrorBoundaryState {\n return { hasError: true };\n }\n\n componentDidCatch(error: Error) {\n console.error('[N1 Wallet] Unhandled error captured by WalletErrorBoundary:', error);\n if (error instanceof WalletError) {\n this.props.onError(error);\n } else {\n // Convert unknown errors to WalletError\n this.props.onError(\n new WalletError(\n WalletErrorCode.UNKNOWN,\n error.message || 'An unexpected error occurred',\n { originalError: error }\n )\n );\n }\n }\n\n componentDidUpdate(\n prevProps: WalletErrorBoundaryProps,\n prevState: WalletErrorBoundaryState\n ) {\n if (prevState.hasError && this.state.hasError && prevProps.children !== this.props.children) {\n // reset error state when children change after an error\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ hasError: false });\n }\n }\n\n render() {\n if (this.state.hasError) {\n return null;\n }\n return this.props.children;\n }\n}\n\nexport default WalletErrorBoundary;\n"]}
|