@lifi/widget 4.3.1 → 4.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/App.d.ts +0 -1
- package/dist/esm/App.d.ts.map +1 -1
- package/dist/esm/App.js.map +1 -1
- package/dist/esm/AppDrawer.d.ts +1 -1
- package/dist/esm/AppDrawer.d.ts.map +1 -1
- package/dist/esm/AppDrawer.js.map +1 -1
- package/dist/esm/AppLayout.js.map +1 -1
- package/dist/esm/AppProvider.js.map +1 -1
- package/dist/esm/components/ActionRow/ActionRow.d.ts +13 -0
- package/dist/esm/components/ActionRow/ActionRow.d.ts.map +1 -0
- package/dist/esm/components/ActionRow/ActionRow.js.map +1 -1
- package/dist/esm/components/AmountInput/AmountInput.js.map +1 -1
- package/dist/esm/components/AmountInput/AmountInput.style.d.ts +9 -0
- package/dist/esm/components/AmountInput/AmountInput.style.d.ts.map +1 -0
- package/dist/esm/components/AmountInput/AmountInputEndAdornment.d.ts +7 -0
- package/dist/esm/components/AmountInput/AmountInputEndAdornment.d.ts.map +1 -0
- package/dist/esm/components/AmountInput/AmountInputEndAdornment.js.map +1 -1
- package/dist/esm/components/AmountInput/PriceFormHelperText.js.map +1 -1
- package/dist/esm/components/AmountInput/PriceFormHelperText.style.d.ts +7 -0
- package/dist/esm/components/AmountInput/PriceFormHelperText.style.d.ts.map +1 -0
- package/dist/esm/components/AmountInputCard/AmountInputCardPair.js.map +1 -1
- package/dist/esm/components/AmountInputCard/BalanceDisplay.js.map +1 -1
- package/dist/esm/components/AmountInputCard/FiatValueToggle.js.map +1 -1
- package/dist/esm/components/AmountInputCard/PercentageChips.js.map +1 -1
- package/dist/esm/components/AmountInputCard/ReceiveAmountCard.js.map +1 -1
- package/dist/esm/components/AmountInputCard/SendAmountCard.js.map +1 -1
- package/dist/esm/components/AppContainer.js.map +1 -1
- package/dist/esm/components/Avatar/AccountAvatar.js.map +1 -1
- package/dist/esm/components/Avatar/Avatar.d.ts +12 -0
- package/dist/esm/components/Avatar/Avatar.d.ts.map +1 -0
- package/dist/esm/components/Avatar/Avatar.js.map +1 -1
- package/dist/esm/components/Avatar/ChainBadgeContent.js.map +1 -1
- package/dist/esm/components/Avatar/TokenAvatar.d.ts +14 -0
- package/dist/esm/components/Avatar/TokenAvatar.d.ts.map +1 -0
- package/dist/esm/components/Avatar/TokenAvatar.js.map +1 -1
- package/dist/esm/components/BaseTransactionButton/BaseTransactionButton.d.ts +6 -0
- package/dist/esm/components/BaseTransactionButton/BaseTransactionButton.d.ts.map +1 -0
- package/dist/esm/components/BaseTransactionButton/BaseTransactionButton.js.map +1 -1
- package/dist/esm/components/BaseTransactionButton/types.d.ts +14 -0
- package/dist/esm/components/BaseTransactionButton/types.d.ts.map +1 -0
- package/dist/esm/components/BottomSheet/types.d.ts +11 -0
- package/dist/esm/components/BottomSheet/types.d.ts.map +1 -0
- package/dist/esm/components/ButtonTertiary.d.ts +7 -0
- package/dist/esm/components/ButtonTertiary.d.ts.map +1 -0
- package/dist/esm/components/Card/Card.d.ts +12 -0
- package/dist/esm/components/Card/Card.d.ts.map +1 -0
- package/dist/esm/components/Card/CardButton.js.map +1 -1
- package/dist/esm/components/Card/CardIconButton.d.ts +7 -0
- package/dist/esm/components/Card/CardIconButton.d.ts.map +1 -0
- package/dist/esm/components/Card/CardTitle.d.ts +9 -0
- package/dist/esm/components/Card/CardTitle.d.ts.map +1 -0
- package/dist/esm/components/Card/InputCard.d.ts +7 -0
- package/dist/esm/components/Card/InputCard.d.ts.map +1 -0
- package/dist/esm/components/ChainSelect/ChainSelect.d.ts +7 -0
- package/dist/esm/components/ChainSelect/ChainSelect.d.ts.map +1 -0
- package/dist/esm/components/ChainSelect/ChainSelect.js.map +1 -1
- package/dist/esm/components/ChainSelect/ChainSelect.style.d.ts +10 -0
- package/dist/esm/components/ChainSelect/ChainSelect.style.d.ts.map +1 -0
- package/dist/esm/components/Chains/AllChainsAvatar.js.map +1 -1
- package/dist/esm/components/Chains/ChainList.js.map +1 -1
- package/dist/esm/components/Chains/ChainListItem.js.map +1 -1
- package/dist/esm/components/Chains/ChainsExpanded.js.map +1 -1
- package/dist/esm/components/Chains/PinChainButton.js.map +1 -1
- package/dist/esm/components/Chains/SelectChainExpansionContent.js.map +1 -1
- package/dist/esm/components/Chains/SelectChainPageContent.js.map +1 -1
- package/dist/esm/components/Chains/VirtualizedChainList.js.map +1 -1
- package/dist/esm/components/ContextMenu.js.map +1 -1
- package/dist/esm/components/ContractComponent/ContractComponent.d.ts +7 -0
- package/dist/esm/components/ContractComponent/ContractComponent.d.ts.map +1 -0
- package/dist/esm/components/ContractComponent/ItemPrice.d.ts +0 -1
- package/dist/esm/components/ContractComponent/ItemPrice.d.ts.map +1 -1
- package/dist/esm/components/ContractComponent/NFT/NFT.d.ts +0 -1
- package/dist/esm/components/ContractComponent/NFT/NFT.d.ts.map +1 -1
- package/dist/esm/components/ContractComponent/NFT/NFTBase.d.ts +0 -1
- package/dist/esm/components/ContractComponent/NFT/NFTBase.d.ts.map +1 -1
- package/dist/esm/components/ContractComponent/NFT/NFTBase.js.map +1 -1
- package/dist/esm/components/ContractComponent/NFT/types.d.ts +0 -1
- package/dist/esm/components/ContractComponent/NFT/types.d.ts.map +1 -1
- package/dist/esm/components/ExecutionStatusCard/ExecutionChecklist.js.map +1 -1
- package/dist/esm/components/ExecutionStatusCard/ExecutionStatusCard.d.ts +21 -0
- package/dist/esm/components/ExecutionStatusCard/ExecutionStatusCard.d.ts.map +1 -0
- package/dist/esm/components/ExecutionStatusCard/ExecutionStatusCard.js.map +1 -1
- package/dist/esm/components/ExecutionStatusCard/StaggeredRevealTypography.js.map +1 -1
- package/dist/esm/components/ExecutionStatusCard/StatusIcon.d.ts +16 -0
- package/dist/esm/components/ExecutionStatusCard/StatusIcon.d.ts.map +1 -0
- package/dist/esm/components/ExecutionStatusCard/StatusIcon.js.map +1 -1
- package/dist/esm/components/ExecutionStatusCard/iconKey.js +1 -0
- package/dist/esm/components/ExecutionStatusCard/iconKey.js.map +1 -1
- package/dist/esm/components/Expansion/Expansion.js.map +1 -1
- package/dist/esm/components/Expansion/ExpansionTransition.js.map +1 -1
- package/dist/esm/components/FeeBreakdownTooltip.d.ts +13 -0
- package/dist/esm/components/FeeBreakdownTooltip.d.ts.map +1 -0
- package/dist/esm/components/FeeBreakdownTooltip.js.map +1 -1
- package/dist/esm/components/Header/ActivitiesButton.js.map +1 -1
- package/dist/esm/components/Header/BackButton.js.map +1 -1
- package/dist/esm/components/Header/CloseDrawerButton.js.map +1 -1
- package/dist/esm/components/Header/DisconnectIconButton.js.map +1 -1
- package/dist/esm/components/Header/HeaderTabs.js.map +1 -1
- package/dist/esm/components/Header/NavigationHeader.js.map +1 -1
- package/dist/esm/components/Header/SettingsButton.js.map +1 -1
- package/dist/esm/components/Header/WalletHeader.js.map +1 -1
- package/dist/esm/components/Header/WalletMenu.js.map +1 -1
- package/dist/esm/components/IconCircle/IconCircle.d.ts +11 -0
- package/dist/esm/components/IconCircle/IconCircle.d.ts.map +1 -0
- package/dist/esm/components/IconCircle/IconCircle.js.map +1 -1
- package/dist/esm/components/IconCircle/statusIcons.d.ts +6 -0
- package/dist/esm/components/IconCircle/statusIcons.d.ts.map +1 -0
- package/dist/esm/components/IconTypography.d.ts +7 -0
- package/dist/esm/components/IconTypography.d.ts.map +1 -0
- package/dist/esm/components/LimitOrderSettings/LimitOrderSettings.js.map +1 -1
- package/dist/esm/components/LimitPriceCard/LimitPriceCard.js.map +1 -1
- package/dist/esm/components/LimitPriceCard/LimitPricePresets.js.map +1 -1
- package/dist/esm/components/ListItem/ListItemButton.d.ts +7 -0
- package/dist/esm/components/ListItem/ListItemButton.d.ts.map +1 -0
- package/dist/esm/components/ListItemButton.d.ts +7 -0
- package/dist/esm/components/ListItemButton.d.ts.map +1 -0
- package/dist/esm/components/Messages/AccountDeployedMessage.js.map +1 -1
- package/dist/esm/components/Messages/AccountNotDeployedMessage.js.map +1 -1
- package/dist/esm/components/Messages/AlertMessage.js.map +1 -1
- package/dist/esm/components/Messages/FundsSufficiencyMessage.js.map +1 -1
- package/dist/esm/components/Messages/GasRefuelMessage.js.map +1 -1
- package/dist/esm/components/Messages/GasSufficiencyMessage.js.map +1 -1
- package/dist/esm/components/Messages/MinFromAmountUSDMessage.js.map +1 -1
- package/dist/esm/components/Messages/MissingRouteRequiredAccountMessage.js.map +1 -1
- package/dist/esm/components/Messages/WarningMessages.d.ts +11 -0
- package/dist/esm/components/Messages/WarningMessages.d.ts.map +1 -0
- package/dist/esm/components/Messages/WarningMessages.js.map +1 -1
- package/dist/esm/components/NotFound.js.map +1 -1
- package/dist/esm/components/PageContainer.d.ts +12 -0
- package/dist/esm/components/PageContainer.d.ts.map +1 -0
- package/dist/esm/components/PoweredBy/PoweredBy.d.ts +5 -0
- package/dist/esm/components/PoweredBy/PoweredBy.d.ts.map +1 -0
- package/dist/esm/components/PoweredBy/PoweredBy.js.map +1 -1
- package/dist/esm/components/ProgressToNextUpdate.d.ts +10 -0
- package/dist/esm/components/ProgressToNextUpdate.d.ts.map +1 -0
- package/dist/esm/components/ProgressToNextUpdate.js.map +1 -1
- package/dist/esm/components/ReverseTokensButton/ReverseTokensButton.js.map +1 -1
- package/dist/esm/components/RouteCard/RouteCard.d.ts +7 -0
- package/dist/esm/components/RouteCard/RouteCard.d.ts.map +1 -0
- package/dist/esm/components/RouteCard/RouteCard.js.map +1 -1
- package/dist/esm/components/RouteCard/RouteCardEssentials.js.map +1 -1
- package/dist/esm/components/RouteCard/RouteCardSkeleton.d.ts +7 -0
- package/dist/esm/components/RouteCard/RouteCardSkeleton.d.ts.map +1 -0
- package/dist/esm/components/RouteCard/RouteCardSkeleton.js.map +1 -1
- package/dist/esm/components/RouteCard/RouteDetails.d.ts +10 -0
- package/dist/esm/components/RouteCard/RouteDetails.d.ts.map +1 -0
- package/dist/esm/components/RouteCard/RouteDetails.js.map +1 -1
- package/dist/esm/components/RouteCard/RouteDetails.style.d.ts +12 -0
- package/dist/esm/components/RouteCard/RouteDetails.style.d.ts.map +1 -0
- package/dist/esm/components/RouteCard/RouteNotFoundCard.d.ts +5 -0
- package/dist/esm/components/RouteCard/RouteNotFoundCard.d.ts.map +1 -0
- package/dist/esm/components/RouteCard/RouteNotFoundCard.js.map +1 -1
- package/dist/esm/components/RouteCard/RouteProviderCard.js.map +1 -1
- package/dist/esm/components/RouteCard/RouteToken.js.map +1 -1
- package/dist/esm/components/RouteCard/RouteTokens.d.ts +11 -0
- package/dist/esm/components/RouteCard/RouteTokens.d.ts.map +1 -0
- package/dist/esm/components/RouteCard/RouteTokens.js +2 -2
- package/dist/esm/components/RouteCard/RouteTokens.js.map +1 -1
- package/dist/esm/components/RouteCard/types.d.ts +14 -0
- package/dist/esm/components/RouteCard/types.d.ts.map +1 -0
- package/dist/esm/components/Routes/LimitOrderRoutes.js.map +1 -1
- package/dist/esm/components/Routes/Routes.js.map +1 -1
- package/dist/esm/components/Routes/RoutesContent.js.map +1 -1
- package/dist/esm/components/Routes/RoutesExpanded.js.map +1 -1
- package/dist/esm/components/Search/SearchInput.d.ts +17 -0
- package/dist/esm/components/Search/SearchInput.d.ts.map +1 -0
- package/dist/esm/components/Search/SearchInput.js.map +1 -1
- package/dist/esm/components/SelectChainAndToken.js.map +1 -1
- package/dist/esm/components/SelectTokenButton/SelectTokenButton.js.map +1 -1
- package/dist/esm/components/SendToWallet/SendToWalletButton.d.ts +10 -0
- package/dist/esm/components/SendToWallet/SendToWalletButton.d.ts.map +1 -0
- package/dist/esm/components/SendToWallet/SendToWalletButton.js +15 -6
- package/dist/esm/components/SendToWallet/SendToWalletButton.js.map +1 -1
- package/dist/esm/components/SendToWallet/SendToWalletExpandButton.js.map +1 -1
- package/dist/esm/components/SettingsPanel/SettingsPanel.js.map +1 -1
- package/dist/esm/components/Skeleton/WidgetSkeleton.d.ts +1 -4
- package/dist/esm/components/Skeleton/WidgetSkeleton.d.ts.map +1 -1
- package/dist/esm/components/Skeleton/WidgetSkeleton.js.map +1 -1
- package/dist/esm/components/Step/StepActions.js.map +1 -1
- package/dist/esm/components/StepActions/SentToWalletRow.d.ts +9 -0
- package/dist/esm/components/StepActions/SentToWalletRow.d.ts.map +1 -0
- package/dist/esm/components/StepActions/SentToWalletRow.js.map +1 -1
- package/dist/esm/components/StepActions/StepActionRow.js.map +1 -1
- package/dist/esm/components/StepActions/StepActionRow.style.d.ts +7 -0
- package/dist/esm/components/StepActions/StepActionRow.style.d.ts.map +1 -0
- package/dist/esm/components/StepActions/StepActionsList.d.ts +12 -0
- package/dist/esm/components/StepActions/StepActionsList.d.ts.map +1 -0
- package/dist/esm/components/StepActions/StepActionsList.js.map +1 -1
- package/dist/esm/components/StepActions/executionRows.d.ts +26 -0
- package/dist/esm/components/StepActions/executionRows.d.ts.map +1 -0
- package/dist/esm/components/SwapButton/SwapButton.js.map +1 -1
- package/dist/esm/components/TextFitter/TextFitter.js.map +1 -1
- package/dist/esm/components/Timer/StepStatusTimer.js.map +1 -1
- package/dist/esm/components/Token/Token.d.ts +17 -0
- package/dist/esm/components/Token/Token.d.ts.map +1 -0
- package/dist/esm/components/Token/Token.js.map +1 -1
- package/dist/esm/components/TokenList/PinTokenButton.js.map +1 -1
- package/dist/esm/components/TokenList/TokenDetailsSheet.js.map +1 -1
- package/dist/esm/components/TokenList/TokenDetailsSheetContent.js.map +1 -1
- package/dist/esm/components/TokenList/TokenList.js.map +1 -1
- package/dist/esm/components/TokenList/TokenListItem.js.map +1 -1
- package/dist/esm/components/TokenList/TokenNotFound.d.ts +6 -0
- package/dist/esm/components/TokenList/TokenNotFound.d.ts.map +1 -0
- package/dist/esm/components/TokenList/VirtualizedTokenList.d.ts +7 -0
- package/dist/esm/components/TokenList/VirtualizedTokenList.d.ts.map +1 -0
- package/dist/esm/components/TokenList/VirtualizedTokenList.js.map +1 -1
- package/dist/esm/components/TokenList/types.d.ts +20 -0
- package/dist/esm/components/TokenList/types.d.ts.map +1 -0
- package/dist/esm/components/TokenList/useTokenSelect.d.ts +6 -0
- package/dist/esm/components/TokenList/useTokenSelect.d.ts.map +1 -0
- package/dist/esm/components/TokenPillButton/TokenPillButton.js.map +1 -1
- package/dist/esm/components/TokenRate/TokenRate.d.ts +10 -0
- package/dist/esm/components/TokenRate/TokenRate.d.ts.map +1 -0
- package/dist/esm/components/TokenRate/TokenRate.js.map +1 -1
- package/dist/esm/components/Tools/ToolItem.js.map +1 -1
- package/dist/esm/components/Tools/Tools.js.map +1 -1
- package/dist/esm/components/TransactionCard/ActiveTransactionCard.js +1 -0
- package/dist/esm/components/TransactionCard/ActiveTransactionCard.js.map +1 -1
- package/dist/esm/components/TransactionCard/ActiveTransactionCard.style.js +9 -0
- package/dist/esm/components/TransactionCard/ActiveTransactionCard.style.js.map +1 -1
- package/dist/esm/components/TransactionCard/TransactionCard.js.map +1 -1
- package/dist/esm/components/TransactionCard/TransactionCard.style.d.ts +8 -0
- package/dist/esm/components/TransactionCard/TransactionCard.style.d.ts.map +1 -0
- package/dist/esm/components/TransactionCard/TransactionCardSkeleton.js.map +1 -1
- package/dist/esm/config/constants.d.ts.map +1 -1
- package/dist/esm/config/version.d.ts +1 -1
- package/dist/esm/config/version.d.ts.map +1 -1
- package/dist/esm/config/version.js +1 -1
- package/dist/esm/config/version.js.map +1 -1
- package/dist/esm/hooks/useAccountsBalancesData.js +1 -14
- package/dist/esm/hooks/useAccountsBalancesData.js.map +1 -1
- package/dist/esm/hooks/useAddressActivity.d.ts +11 -0
- package/dist/esm/hooks/useAddressActivity.d.ts.map +1 -0
- package/dist/esm/hooks/useAddressValidation.d.ts +28 -0
- package/dist/esm/hooks/useAddressValidation.d.ts.map +1 -0
- package/dist/esm/hooks/useAddressValidation.js +6 -1
- package/dist/esm/hooks/useAddressValidation.js.map +1 -1
- package/dist/esm/hooks/useAvailableChains.d.ts +12 -0
- package/dist/esm/hooks/useAvailableChains.d.ts.map +1 -0
- package/dist/esm/hooks/useChain.d.ts +10 -0
- package/dist/esm/hooks/useChain.d.ts.map +1 -0
- package/dist/esm/hooks/useContactSupport.d.ts +5 -0
- package/dist/esm/hooks/useContactSupport.d.ts.map +1 -0
- package/dist/esm/hooks/useDebouncedWatch.d.ts +6 -0
- package/dist/esm/hooks/useDebouncedWatch.d.ts.map +1 -0
- package/dist/esm/hooks/useDisplayedTokens.js +48 -0
- package/dist/esm/hooks/useDisplayedTokens.js.map +1 -0
- package/dist/esm/hooks/useExplorer.d.ts +14 -0
- package/dist/esm/hooks/useExplorer.d.ts.map +1 -0
- package/dist/esm/hooks/useHeader.d.ts +6 -0
- package/dist/esm/hooks/useHeader.d.ts.map +1 -0
- package/dist/esm/hooks/useListHeight.d.ts +12 -0
- package/dist/esm/hooks/useListHeight.d.ts.map +1 -0
- package/dist/esm/hooks/useListHeight.js +1 -0
- package/dist/esm/hooks/useListHeight.js.map +1 -1
- package/dist/esm/hooks/useNavigateBack.d.ts +5 -0
- package/dist/esm/hooks/useNavigateBack.d.ts.map +1 -0
- package/dist/esm/hooks/usePacedRouteExecution.js +1 -0
- package/dist/esm/hooks/usePacedRouteExecution.js.map +1 -1
- package/dist/esm/hooks/useRouteExecution.d.ts +18 -0
- package/dist/esm/hooks/useRouteExecution.d.ts.map +1 -0
- package/dist/esm/hooks/useRouteExecutionMessage.d.ts +10 -0
- package/dist/esm/hooks/useRouteExecutionMessage.d.ts.map +1 -0
- package/dist/esm/hooks/useRouteExecutionMessage.js +1 -0
- package/dist/esm/hooks/useRouteExecutionMessage.js.map +1 -1
- package/dist/esm/hooks/useRoutes.d.ts +32 -0
- package/dist/esm/hooks/useRoutes.d.ts.map +1 -0
- package/dist/esm/hooks/useRoutes.js +12 -8
- package/dist/esm/hooks/useRoutes.js.map +1 -1
- package/dist/esm/hooks/useToAddressAutoPopulate.js.map +1 -1
- package/dist/esm/hooks/useToAddressRequirements.d.ts +16 -0
- package/dist/esm/hooks/useToAddressRequirements.d.ts.map +1 -0
- package/dist/esm/hooks/useToken.d.ts +9 -0
- package/dist/esm/hooks/useToken.d.ts.map +1 -0
- package/dist/esm/hooks/useTokenAddressBalance.d.ts +11 -0
- package/dist/esm/hooks/useTokenAddressBalance.d.ts.map +1 -0
- package/dist/esm/hooks/useTokenBalances.d.ts +14 -0
- package/dist/esm/hooks/useTokenBalances.d.ts.map +1 -0
- package/dist/esm/hooks/useTokenBalances.js +5 -45
- package/dist/esm/hooks/useTokenBalances.js.map +1 -1
- package/dist/esm/hooks/useTokenBalancesQueries.js +5 -3
- package/dist/esm/hooks/useTokenBalancesQueries.js.map +1 -1
- package/dist/esm/hooks/useTokenList.d.ts +16 -0
- package/dist/esm/hooks/useTokenList.d.ts.map +1 -0
- package/dist/esm/hooks/useTokenList.js +31 -0
- package/dist/esm/hooks/useTokenList.js.map +1 -0
- package/dist/esm/hooks/useTokens.js.map +1 -1
- package/dist/esm/hooks/useTools.d.ts +8 -0
- package/dist/esm/hooks/useTools.d.ts.map +1 -0
- package/dist/esm/hooks/useTransactionDetails.js +1 -3
- package/dist/esm/hooks/useTransactionDetails.js.map +1 -1
- package/dist/esm/hooks/useTransactionList.js +1 -0
- package/dist/esm/hooks/useTransactionList.js.map +1 -1
- package/dist/esm/hooks/useWidgetChains.d.ts +0 -1
- package/dist/esm/hooks/useWidgetChains.d.ts.map +1 -1
- package/dist/esm/hooks/useWidgetEvents.d.ts +0 -1
- package/dist/esm/hooks/useWidgetEvents.d.ts.map +1 -1
- package/dist/esm/i18n/en.json +321 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/pages/ActivitiesPage/ActivitiesPage.js +1 -0
- package/dist/esm/pages/ActivitiesPage/ActivitiesPage.js.map +1 -1
- package/dist/esm/pages/ActivitiesPage/ActivitiesPageMenuButton.js.map +1 -1
- package/dist/esm/pages/LanguagesPage.js.map +1 -1
- package/dist/esm/pages/MainPage/LimitPageContent.js.map +1 -1
- package/dist/esm/pages/MainPage/MainPage.js.map +1 -1
- package/dist/esm/pages/MainPage/MainPageActions.js.map +1 -1
- package/dist/esm/pages/MainPage/MainWarningMessages.d.ts +10 -0
- package/dist/esm/pages/MainPage/MainWarningMessages.d.ts.map +1 -0
- package/dist/esm/pages/RoutePriorityPage.js.map +1 -1
- package/dist/esm/pages/RoutesPage/RoutesPage.js.map +1 -1
- package/dist/esm/pages/RoutesPage/RoutesPage.style.d.ts +7 -0
- package/dist/esm/pages/RoutesPage/RoutesPage.style.d.ts.map +1 -0
- package/dist/esm/pages/SelectChainPage/SelectChainPage.d.ts +6 -0
- package/dist/esm/pages/SelectChainPage/SelectChainPage.d.ts.map +1 -0
- package/dist/esm/pages/SelectChainPage/types.d.ts +8 -0
- package/dist/esm/pages/SelectChainPage/types.d.ts.map +1 -0
- package/dist/esm/pages/SelectEnabledToolsPage.js.map +1 -1
- package/dist/esm/pages/SelectTokenPage/SearchTokenInput.d.ts +10 -0
- package/dist/esm/pages/SelectTokenPage/SearchTokenInput.d.ts.map +1 -0
- package/dist/esm/pages/SelectTokenPage/SelectTokenPage.js.map +1 -1
- package/dist/esm/pages/SendToWallet/BookmarkAddressSheet.js.map +1 -1
- package/dist/esm/pages/SendToWallet/BookmarksPage.js.map +1 -1
- package/dist/esm/pages/SendToWallet/ConfirmAddressSheet.js.map +1 -1
- package/dist/esm/pages/SendToWallet/ConnectedWalletsPage.js.map +1 -1
- package/dist/esm/pages/SendToWallet/RecentWalletsPage.js.map +1 -1
- package/dist/esm/pages/SendToWallet/SendToConfiguredWalletPage.js.map +1 -1
- package/dist/esm/pages/SendToWallet/SendToWalletPage.js.map +1 -1
- package/dist/esm/pages/SettingsPage/BridgeAndExchangeSettings.js.map +1 -1
- package/dist/esm/pages/SettingsPage/GasPriceSettings.js.map +1 -1
- package/dist/esm/pages/SettingsPage/LanguageSetting.js.map +1 -1
- package/dist/esm/pages/SettingsPage/ResetSettingsButton.js.map +1 -1
- package/dist/esm/pages/SettingsPage/RoutePrioritySettings.js.map +1 -1
- package/dist/esm/pages/SettingsPage/SettingsCard/BadgedValue.js.map +1 -1
- package/dist/esm/pages/SettingsPage/SettingsCard/SettingCardExpandable.js.map +1 -1
- package/dist/esm/pages/SettingsPage/SettingsPage.js.map +1 -1
- package/dist/esm/pages/SettingsPage/SlippageSettings/SlippagePage.js.map +1 -1
- package/dist/esm/pages/SettingsPage/SlippageSettings/SlippageSettings.js.map +1 -1
- package/dist/esm/pages/SettingsPage/SmallBalanceFilterSettings.js.map +1 -1
- package/dist/esm/pages/SettingsPage/ThemeSettings.js.map +1 -1
- package/dist/esm/pages/TransactionDetailsPage/ContactSupportButton.d.ts +9 -0
- package/dist/esm/pages/TransactionDetailsPage/ContactSupportButton.d.ts.map +1 -0
- package/dist/esm/pages/TransactionDetailsPage/ContactSupportButton.js.map +1 -1
- package/dist/esm/pages/TransactionDetailsPage/ReceiptsCard.js.map +1 -1
- package/dist/esm/pages/TransactionDetailsPage/TransactionDetailsPage.js.map +1 -1
- package/dist/esm/pages/TransactionDetailsPage/TransactionDetailsSkeleton.js.map +1 -1
- package/dist/esm/pages/TransactionDetailsPage/TransferIdCard.js.map +1 -1
- package/dist/esm/pages/TransactionPage/ConfirmToAddressSheet.d.ts +14 -0
- package/dist/esm/pages/TransactionPage/ConfirmToAddressSheet.d.ts.map +1 -0
- package/dist/esm/pages/TransactionPage/ConfirmToAddressSheet.js.map +1 -1
- package/dist/esm/pages/TransactionPage/ExchangeRateBottomSheet.d.ts +19 -0
- package/dist/esm/pages/TransactionPage/ExchangeRateBottomSheet.d.ts.map +1 -0
- package/dist/esm/pages/TransactionPage/ExchangeRateBottomSheet.js.map +1 -1
- package/dist/esm/pages/TransactionPage/ExecutionDoneCard.d.ts +12 -0
- package/dist/esm/pages/TransactionPage/ExecutionDoneCard.d.ts.map +1 -0
- package/dist/esm/pages/TransactionPage/ExecutionDoneCard.js +1 -0
- package/dist/esm/pages/TransactionPage/ExecutionDoneCard.js.map +1 -1
- package/dist/esm/pages/TransactionPage/RouteTracker.d.ts +11 -0
- package/dist/esm/pages/TransactionPage/RouteTracker.d.ts.map +1 -0
- package/dist/esm/pages/TransactionPage/StartTransactionButton.d.ts +6 -0
- package/dist/esm/pages/TransactionPage/StartTransactionButton.d.ts.map +1 -0
- package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.d.ts +15 -0
- package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.d.ts.map +1 -0
- package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.js.map +1 -1
- package/dist/esm/pages/TransactionPage/TransactionContent.js +1 -0
- package/dist/esm/pages/TransactionPage/TransactionContent.js.map +1 -1
- package/dist/esm/pages/TransactionPage/TransactionDoneButtons.d.ts +12 -0
- package/dist/esm/pages/TransactionPage/TransactionDoneButtons.d.ts.map +1 -0
- package/dist/esm/pages/TransactionPage/TransactionDoneButtons.js +1 -0
- package/dist/esm/pages/TransactionPage/TransactionDoneButtons.js.map +1 -1
- package/dist/esm/pages/TransactionPage/TransactionExecutionContent.js +1 -0
- package/dist/esm/pages/TransactionPage/TransactionExecutionContent.js.map +1 -1
- package/dist/esm/pages/TransactionPage/TransactionFailedButtons.js.map +1 -1
- package/dist/esm/pages/TransactionPage/TransactionPage.js +1 -0
- package/dist/esm/pages/TransactionPage/TransactionPage.js.map +1 -1
- package/dist/esm/pages/TransactionPage/TransactionReview.js.map +1 -1
- package/dist/esm/pages/TransactionPage/types.d.ts +9 -0
- package/dist/esm/pages/TransactionPage/types.d.ts.map +1 -0
- package/dist/esm/pages/TransactionPage/utils.d.ts +6 -0
- package/dist/esm/pages/TransactionPage/utils.d.ts.map +1 -0
- package/dist/esm/providers/I18nProvider/I18nProvider.d.ts +5 -0
- package/dist/esm/providers/I18nProvider/I18nProvider.d.ts.map +1 -0
- package/dist/esm/providers/I18nProvider/I18nProvider.js.map +1 -1
- package/dist/esm/providers/I18nProvider/types.d.ts +2 -3
- package/dist/esm/providers/I18nProvider/types.d.ts.map +1 -1
- package/dist/esm/providers/QueryClientProvider.d.ts +6 -0
- package/dist/esm/providers/QueryClientProvider.d.ts.map +1 -0
- package/dist/esm/providers/SDKClientProvider.d.ts +8 -0
- package/dist/esm/providers/SDKClientProvider.d.ts.map +1 -0
- package/dist/esm/providers/WalletProvider/WalletProvider.d.ts +10 -0
- package/dist/esm/providers/WalletProvider/WalletProvider.d.ts.map +1 -0
- package/dist/esm/providers/WalletProvider/WalletProvider.js +8 -3
- package/dist/esm/providers/WalletProvider/WalletProvider.js.map +1 -1
- package/dist/esm/providers/WidgetProvider/WidgetProvider.d.ts +8 -0
- package/dist/esm/providers/WidgetProvider/WidgetProvider.d.ts.map +1 -0
- package/dist/esm/providers/WidgetProvider/types.d.ts +11 -0
- package/dist/esm/providers/WidgetProvider/types.d.ts.map +1 -0
- package/dist/esm/shared.d.ts +107 -0
- package/dist/esm/shared.js +105 -0
- package/dist/esm/stores/StoreProvider.d.ts +7 -0
- package/dist/esm/stores/StoreProvider.d.ts.map +1 -0
- package/dist/esm/stores/StoreProvider.js.map +1 -1
- package/dist/esm/stores/bookmarks/BookmarkStore.d.ts +7 -0
- package/dist/esm/stores/bookmarks/BookmarkStore.d.ts.map +1 -0
- package/dist/esm/stores/bookmarks/types.d.ts +0 -1
- package/dist/esm/stores/bookmarks/types.d.ts.map +1 -1
- package/dist/esm/stores/chains/ChainOrderStore.d.ts +8 -0
- package/dist/esm/stores/chains/ChainOrderStore.d.ts.map +1 -0
- package/dist/esm/stores/chains/types.d.ts +27 -0
- package/dist/esm/stores/chains/types.d.ts.map +1 -0
- package/dist/esm/stores/form/FormStore.js.map +1 -1
- package/dist/esm/stores/form/FormUpdater.js.map +1 -1
- package/dist/esm/stores/form/createFormStore.js +1 -0
- package/dist/esm/stores/form/createFormStore.js.map +1 -1
- package/dist/esm/stores/form/types.d.ts +7 -7
- package/dist/esm/stores/form/types.d.ts.map +1 -1
- package/dist/esm/stores/form/types.js.map +1 -1
- package/dist/esm/stores/form/useFieldActions.d.ts +0 -1
- package/dist/esm/stores/form/useFieldActions.d.ts.map +1 -1
- package/dist/esm/stores/form/useFieldValues.d.ts +0 -1
- package/dist/esm/stores/form/useFieldValues.d.ts.map +1 -1
- package/dist/esm/stores/header/types.d.ts +20 -0
- package/dist/esm/stores/header/types.d.ts.map +1 -0
- package/dist/esm/stores/header/useHeaderStore.d.ts +8 -0
- package/dist/esm/stores/header/useHeaderStore.d.ts.map +1 -0
- package/dist/esm/stores/inputMode/useInputModeStore.d.ts +13 -0
- package/dist/esm/stores/inputMode/useInputModeStore.d.ts.map +1 -0
- package/dist/esm/stores/navigationTabs/useNavigationTabsStore.js.map +1 -1
- package/dist/esm/stores/routes/RouteExecutionStore.d.ts +9 -0
- package/dist/esm/stores/routes/RouteExecutionStore.d.ts.map +1 -0
- package/dist/esm/stores/routes/createRouteExecutionStore.js +1 -0
- package/dist/esm/stores/routes/createRouteExecutionStore.js.map +1 -1
- package/dist/esm/stores/routes/types.d.ts +24 -0
- package/dist/esm/stores/routes/types.d.ts.map +1 -0
- package/dist/esm/stores/routes/types.js +14 -0
- package/dist/esm/stores/routes/types.js.map +1 -0
- package/dist/esm/stores/routes/useRouteExecutionIndicator.js +1 -0
- package/dist/esm/stores/routes/useRouteExecutionIndicator.js.map +1 -1
- package/dist/esm/stores/routes/utils.d.ts +9 -0
- package/dist/esm/stores/routes/utils.d.ts.map +1 -0
- package/dist/esm/stores/settings/SettingsStore.d.ts +8 -0
- package/dist/esm/stores/settings/SettingsStore.d.ts.map +1 -0
- package/dist/esm/stores/settings/types.d.ts +5 -2
- package/dist/esm/stores/settings/types.d.ts.map +1 -1
- package/dist/esm/stores/types.d.ts +9 -0
- package/dist/esm/stores/types.d.ts.map +1 -0
- package/dist/esm/themes/azureLight.d.ts +0 -1
- package/dist/esm/themes/azureLight.d.ts.map +1 -1
- package/dist/esm/themes/createTheme.d.ts +0 -1
- package/dist/esm/themes/createTheme.d.ts.map +1 -1
- package/dist/esm/themes/jumper.d.ts +0 -1
- package/dist/esm/themes/jumper.d.ts.map +1 -1
- package/dist/esm/themes/palettes.d.ts.map +1 -1
- package/dist/esm/themes/types.d.ts +0 -1
- package/dist/esm/themes/types.d.ts.map +1 -1
- package/dist/esm/themes/watermelonLight.d.ts +0 -1
- package/dist/esm/themes/watermelonLight.d.ts.map +1 -1
- package/dist/esm/themes/windows95.d.ts +0 -1
- package/dist/esm/themes/windows95.d.ts.map +1 -1
- package/dist/esm/types/events.d.ts +4 -3
- package/dist/esm/types/events.d.ts.map +1 -1
- package/dist/esm/types/token.d.ts +1 -2
- package/dist/esm/types/token.d.ts.map +1 -1
- package/dist/esm/types/widget.d.ts +72 -73
- package/dist/esm/types/widget.d.ts.map +1 -1
- package/dist/esm/utils/compactNumberFormatter.d.ts +8 -8
- package/dist/esm/utils/compactNumberFormatter.d.ts.map +1 -1
- package/dist/esm/utils/converters.d.ts +7 -0
- package/dist/esm/utils/converters.d.ts.map +1 -0
- package/dist/esm/utils/currencyExtendedFormatter.d.ts.map +1 -1
- package/dist/esm/utils/elements.d.ts +11 -0
- package/dist/esm/utils/elements.d.ts.map +1 -0
- package/dist/esm/utils/elements.js +8 -1
- package/dist/esm/utils/elements.js.map +1 -1
- package/dist/esm/utils/enum.d.ts +5 -0
- package/dist/esm/utils/enum.d.ts.map +1 -0
- package/dist/esm/utils/fees.d.ts +17 -0
- package/dist/esm/utils/fees.d.ts.map +1 -0
- package/dist/esm/utils/format.d.ts +14 -14
- package/dist/esm/utils/format.d.ts.map +1 -1
- package/dist/esm/utils/getPriceImpact.d.ts +1 -7
- package/dist/esm/utils/getPriceImpact.d.ts.map +1 -1
- package/dist/esm/utils/input.d.ts +5 -0
- package/dist/esm/utils/input.d.ts.map +1 -0
- package/dist/esm/utils/navigationRoutes.d.ts.map +1 -1
- package/dist/esm/utils/percentFormatter.d.ts +5 -5
- package/dist/esm/utils/percentFormatter.d.ts.map +1 -1
- package/dist/esm/utils/tokenList.js +3 -6
- package/dist/esm/utils/tokenList.js.map +1 -1
- package/dist/esm/utils/wallet.d.ts +5 -0
- package/dist/esm/utils/wallet.d.ts.map +1 -0
- package/package.json +29 -21
- package/src/components/RouteCard/RouteTokens.tsx +3 -2
- package/src/components/SendToWallet/SendToWalletButton.tsx +27 -5
- package/src/components/TransactionCard/ActiveTransactionCard.style.tsx +11 -0
- package/src/config/version.ts +1 -1
- package/src/hooks/useAccountsBalancesData.ts +4 -31
- package/src/hooks/useDisplayedTokens.ts +70 -0
- package/src/hooks/useListHeight.ts +4 -0
- package/src/hooks/useRoutes.ts +360 -325
- package/src/hooks/useTokenBalances.ts +8 -53
- package/src/hooks/useTokenBalancesQueries.ts +12 -4
- package/src/hooks/useTokenList.ts +59 -0
- package/src/hooks/useTransactionDetails.ts +1 -3
- package/src/providers/WalletProvider/WalletProvider.tsx +15 -3
- package/src/shared.ts +191 -0
- package/src/stores/form/createFormStore.ts +1 -0
- package/src/stores/form/types.ts +1 -0
- package/src/utils/tokenList.ts +4 -12
- package/dist/esm/hooks/useFilteredByTokenBalances.js +0 -74
- package/dist/esm/hooks/useFilteredByTokenBalances.js.map +0 -1
- package/src/hooks/useFilteredByTokenBalances.ts +0 -145
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { useWidgetEvents } from "./hooks/useWidgetEvents.js";
|
|
2
|
+
import { WidgetEvent } from "./types/events.js";
|
|
3
|
+
import { SettingsStoreProvider, useSettingsStoreContext } from "./stores/settings/SettingsStore.js";
|
|
4
|
+
import { WidgetProvider, useWidgetConfig } from "./providers/WidgetProvider/WidgetProvider.js";
|
|
5
|
+
import { useHeaderStore, useSetHeaderHeight } from "./stores/header/useHeaderStore.js";
|
|
6
|
+
import { ElementId, createElementId } from "./utils/elements.js";
|
|
7
|
+
import { navigationRoutes } from "./utils/navigationRoutes.js";
|
|
8
|
+
import { SDKClientProvider, useSDKClient } from "./providers/SDKClientProvider.js";
|
|
9
|
+
import { useAvailableChains } from "./hooks/useAvailableChains.js";
|
|
10
|
+
import { BookmarkStoreProvider } from "./stores/bookmarks/BookmarkStore.js";
|
|
11
|
+
import { useFieldActions } from "./stores/form/useFieldActions.js";
|
|
12
|
+
import { formatDuration, formatInputAmount, formatTokenAmount, formatTokenPrice, priceToTokenAmount, usdDecimals } from "./utils/format.js";
|
|
13
|
+
import { useChainOrderStore } from "./stores/chains/ChainOrderStore.js";
|
|
14
|
+
import { FormKeyHelper } from "./stores/form/types.js";
|
|
15
|
+
import { useFieldValues } from "./stores/form/useFieldValues.js";
|
|
16
|
+
import { PageContainer } from "./components/PageContainer.js";
|
|
17
|
+
import { Card } from "./components/Card/Card.js";
|
|
18
|
+
import { InputCard } from "./components/Card/InputCard.js";
|
|
19
|
+
import { SearchInput } from "./components/Search/SearchInput.js";
|
|
20
|
+
import { hasEnumFlag } from "./utils/enum.js";
|
|
21
|
+
import { RouteExecutionStatus } from "./stores/routes/types.js";
|
|
22
|
+
import { getSourceTxHash, isRouteActive, isRouteDone, isRouteFailed } from "./stores/routes/utils.js";
|
|
23
|
+
import { useRouteExecutionStore, useRouteExecutionStoreContext } from "./stores/routes/RouteExecutionStore.js";
|
|
24
|
+
import { useChain } from "./hooks/useChain.js";
|
|
25
|
+
import { useDebouncedWatch } from "./hooks/useDebouncedWatch.js";
|
|
26
|
+
import { useToken } from "./hooks/useToken.js";
|
|
27
|
+
import { useRoutes } from "./hooks/useRoutes.js";
|
|
28
|
+
import { useToAddressRequirements } from "./hooks/useToAddressRequirements.js";
|
|
29
|
+
import { ProgressToNextUpdate } from "./components/ProgressToNextUpdate.js";
|
|
30
|
+
import { getAccumulatedFeeCostsBreakdown } from "./utils/fees.js";
|
|
31
|
+
import { CardIconButton } from "./components/Card/CardIconButton.js";
|
|
32
|
+
import { getPriceImpact } from "./utils/getPriceImpact.js";
|
|
33
|
+
import { AvatarBadgedDefault } from "./components/Avatar/Avatar.js";
|
|
34
|
+
import { TokenAvatar } from "./components/Avatar/TokenAvatar.js";
|
|
35
|
+
import { Token } from "./components/Token/Token.js";
|
|
36
|
+
import { FeeBreakdownTooltip } from "./components/FeeBreakdownTooltip.js";
|
|
37
|
+
import { IconTypography } from "./components/IconTypography.js";
|
|
38
|
+
import { TokenRate } from "./components/TokenRate/TokenRate.js";
|
|
39
|
+
import { DetailInfoIcon, DetailLabel, DetailLabelContainer, DetailRow, DetailValue } from "./components/RouteCard/RouteDetails.style.js";
|
|
40
|
+
import { RouteDetails } from "./components/RouteCard/RouteDetails.js";
|
|
41
|
+
import { RouteCard } from "./components/RouteCard/RouteCard.js";
|
|
42
|
+
import { RouteCardSkeleton } from "./components/RouteCard/RouteCardSkeleton.js";
|
|
43
|
+
import { RouteNotFoundCard } from "./components/RouteCard/RouteNotFoundCard.js";
|
|
44
|
+
import { useNavigateBack } from "./hooks/useNavigateBack.js";
|
|
45
|
+
import { useTools } from "./hooks/useTools.js";
|
|
46
|
+
import { shortenAddress } from "./utils/wallet.js";
|
|
47
|
+
import { useExplorer } from "./hooks/useExplorer.js";
|
|
48
|
+
import { AddressType, useAddressValidation } from "./hooks/useAddressValidation.js";
|
|
49
|
+
import { useHeader } from "./hooks/useHeader.js";
|
|
50
|
+
import { useListHeight } from "./hooks/useListHeight.js";
|
|
51
|
+
import { buildRouteFromTxHistory } from "./utils/converters.js";
|
|
52
|
+
import { ActionRow } from "./components/ActionRow/ActionRow.js";
|
|
53
|
+
import { IconCircle } from "./components/IconCircle/IconCircle.js";
|
|
54
|
+
import { RouteTokens } from "./components/RouteCard/RouteTokens.js";
|
|
55
|
+
import { useRouteExecution } from "./hooks/useRouteExecution.js";
|
|
56
|
+
import { DateLabelContainer, DateLabelText } from "./components/TransactionCard/TransactionCard.style.js";
|
|
57
|
+
import { useInputModeStore } from "./stores/inputMode/useInputModeStore.js";
|
|
58
|
+
import { fitInputText } from "./utils/input.js";
|
|
59
|
+
import { CardTitle } from "./components/Card/CardTitle.js";
|
|
60
|
+
import { FormControl, Input } from "./components/AmountInput/AmountInput.style.js";
|
|
61
|
+
import { useTokenAddressBalance } from "./hooks/useTokenAddressBalance.js";
|
|
62
|
+
import { ButtonTertiary } from "./components/ButtonTertiary.js";
|
|
63
|
+
import { AmountInputEndAdornment } from "./components/AmountInput/AmountInputEndAdornment.js";
|
|
64
|
+
import { InputPriceButton } from "./components/AmountInput/PriceFormHelperText.style.js";
|
|
65
|
+
import { ContractComponent } from "./components/ContractComponent/ContractComponent.js";
|
|
66
|
+
import { SendToWalletButton } from "./components/SendToWallet/SendToWalletButton.js";
|
|
67
|
+
import { PoweredBy } from "./components/PoweredBy/PoweredBy.js";
|
|
68
|
+
import { WarningMessages } from "./components/Messages/WarningMessages.js";
|
|
69
|
+
import { MainWarningMessages } from "./pages/MainPage/MainWarningMessages.js";
|
|
70
|
+
import { BaseTransactionButton } from "./components/BaseTransactionButton/BaseTransactionButton.js";
|
|
71
|
+
import { Stack } from "./pages/RoutesPage/RoutesPage.style.js";
|
|
72
|
+
import { useTokenSelect } from "./components/TokenList/useTokenSelect.js";
|
|
73
|
+
import { SelectChainPage } from "./pages/SelectChainPage/SelectChainPage.js";
|
|
74
|
+
import { ChainAvatar } from "./components/ChainSelect/ChainSelect.style.js";
|
|
75
|
+
import { ChainSelect } from "./components/ChainSelect/ChainSelect.js";
|
|
76
|
+
import { useTokenBalances } from "./hooks/useTokenBalances.js";
|
|
77
|
+
import { TokenNotFound } from "./components/TokenList/TokenNotFound.js";
|
|
78
|
+
import { ListItemButton } from "./components/ListItem/ListItemButton.js";
|
|
79
|
+
import { VirtualizedTokenList } from "./components/TokenList/VirtualizedTokenList.js";
|
|
80
|
+
import { SearchTokenInput } from "./pages/SelectTokenPage/SearchTokenInput.js";
|
|
81
|
+
import { SentToWalletRow } from "./components/StepActions/SentToWalletRow.js";
|
|
82
|
+
import { ExternalLink } from "./components/StepActions/StepActionRow.style.js";
|
|
83
|
+
import { useExecutionRows } from "./components/StepActions/executionRows.js";
|
|
84
|
+
import { StepActionsList } from "./components/StepActions/StepActionsList.js";
|
|
85
|
+
import { useContactSupport } from "./hooks/useContactSupport.js";
|
|
86
|
+
import { ContactSupportButton } from "./pages/TransactionDetailsPage/ContactSupportButton.js";
|
|
87
|
+
import { ExchangeRateBottomSheet } from "./pages/TransactionPage/ExchangeRateBottomSheet.js";
|
|
88
|
+
import { RouteTracker } from "./pages/TransactionPage/RouteTracker.js";
|
|
89
|
+
import { ExecutionStatusCard } from "./components/ExecutionStatusCard/ExecutionStatusCard.js";
|
|
90
|
+
import { StatusIcon } from "./components/ExecutionStatusCard/StatusIcon.js";
|
|
91
|
+
import { useRouteExecutionMessage } from "./hooks/useRouteExecutionMessage.js";
|
|
92
|
+
import { ExecutionDoneCard } from "./pages/TransactionPage/ExecutionDoneCard.js";
|
|
93
|
+
import { TransactionDoneButtons } from "./pages/TransactionPage/TransactionDoneButtons.js";
|
|
94
|
+
import { useAddressActivity } from "./hooks/useAddressActivity.js";
|
|
95
|
+
import { ConfirmToAddressSheet } from "./pages/TransactionPage/ConfirmToAddressSheet.js";
|
|
96
|
+
import { StartTransactionButton } from "./pages/TransactionPage/StartTransactionButton.js";
|
|
97
|
+
import { calculateValueLossPercentage, getTokenValueLossThreshold } from "./pages/TransactionPage/utils.js";
|
|
98
|
+
import { TokenValueBottomSheet } from "./pages/TransactionPage/TokenValueBottomSheet.js";
|
|
99
|
+
import { I18nProvider } from "./providers/I18nProvider/I18nProvider.js";
|
|
100
|
+
import { QueryClientProvider } from "./providers/QueryClientProvider.js";
|
|
101
|
+
import { createTheme } from "./themes/createTheme.js";
|
|
102
|
+
import { WalletProvider } from "./providers/WalletProvider/WalletProvider.js";
|
|
103
|
+
import { StoreProvider } from "./stores/StoreProvider.js";
|
|
104
|
+
import { useTokenList } from "./hooks/useTokenList.js";
|
|
105
|
+
export { ActionRow, AddressType, AmountInputEndAdornment, AvatarBadgedDefault, BaseTransactionButton, BookmarkStoreProvider, ButtonTertiary, Card, CardIconButton, CardTitle, ChainAvatar, ChainSelect, ConfirmToAddressSheet, ContactSupportButton, ContractComponent, DateLabelContainer, DateLabelText, DetailInfoIcon, DetailLabel, DetailLabelContainer, DetailRow, DetailValue, ElementId, ExchangeRateBottomSheet, ExecutionDoneCard, ExecutionStatusCard, ExternalLink, FeeBreakdownTooltip, FormControl, FormKeyHelper, I18nProvider, IconCircle, IconTypography, Input, InputCard, InputPriceButton, ListItemButton, MainWarningMessages, PageContainer, PoweredBy, ProgressToNextUpdate, QueryClientProvider, RouteCard, RouteCardSkeleton, RouteDetails, RouteExecutionStatus, RouteNotFoundCard, RouteTokens, RouteTracker, SDKClientProvider, SearchInput, SearchTokenInput, SelectChainPage, SendToWalletButton, SentToWalletRow, SettingsStoreProvider, Stack, StartTransactionButton, StatusIcon, StepActionsList, StoreProvider, Token, TokenAvatar, TokenNotFound, TokenRate, TokenValueBottomSheet, TransactionDoneButtons, VirtualizedTokenList, WalletProvider, WarningMessages, WidgetEvent, WidgetProvider, buildRouteFromTxHistory, calculateValueLossPercentage, createElementId, createTheme, fitInputText, formatDuration, formatInputAmount, formatTokenAmount, formatTokenPrice, getAccumulatedFeeCostsBreakdown, getPriceImpact, getSourceTxHash, getTokenValueLossThreshold, hasEnumFlag, isRouteActive, isRouteDone, isRouteFailed, navigationRoutes, priceToTokenAmount, shortenAddress, usdDecimals, useAddressActivity, useAddressValidation, useAvailableChains, useChain, useChainOrderStore, useContactSupport, useDebouncedWatch, useExecutionRows, useExplorer, useFieldActions, useFieldValues, useHeader, useHeaderStore, useInputModeStore, useListHeight, useNavigateBack, useRouteExecution, useRouteExecutionMessage, useRouteExecutionStore, useRouteExecutionStoreContext, useRoutes, useSDKClient, useSetHeaderHeight, useSettingsStoreContext, useToAddressRequirements, useToken, useTokenAddressBalance, useTokenBalances, useTokenList, useTokenSelect, useTools, useWidgetConfig, useWidgetEvents };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { WidgetConfigProps } from "../types/widget.js";
|
|
2
|
+
import { PropsWithChildren } from "react";
|
|
3
|
+
//#region src/stores/StoreProvider.d.ts
|
|
4
|
+
declare const StoreProvider: React.FC<PropsWithChildren<WidgetConfigProps>>;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { StoreProvider };
|
|
7
|
+
//# sourceMappingURL=StoreProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StoreProvider.d.ts","names":[],"sources":["../../../src/stores/StoreProvider.tsx"],"mappings":";;;cAUa,eAAe,MAAM,GAAG,kBAAkB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StoreProvider.js","names":[],"sources":["../../../src/stores/StoreProvider.tsx"],"sourcesContent":["import type { PropsWithChildren } from 'react'\nimport type { WidgetConfigProps } from '../types/widget.js'\nimport { BookmarkStoreProvider } from './bookmarks/BookmarkStore.js'\nimport { ChainOrderStoreProvider } from './chains/ChainOrderStore.js'\nimport { FormStoreProvider } from './form/FormStore.js'\nimport { HeaderStoreProvider } from './header/useHeaderStore.js'\nimport { NavigationTabsStoreProvider } from './navigationTabs/useNavigationTabsStore.js'\nimport { PinnedTokensStoreProvider } from './pinnedTokens/PinnedTokensStore.js'\nimport { RouteExecutionStoreProvider } from './routes/RouteExecutionStore.js'\n\nexport const StoreProvider: React.FC<PropsWithChildren<WidgetConfigProps>> = ({\n children,\n config,\n formRef,\n}) => {\n return (\n <NavigationTabsStoreProvider config={config}>\n <HeaderStoreProvider namePrefix={config?.keyPrefix}>\n <BookmarkStoreProvider namePrefix={config?.keyPrefix}>\n <PinnedTokensStoreProvider namePrefix={config?.keyPrefix}>\n <FormStoreProvider formRef={formRef}>\n <ChainOrderStoreProvider namePrefix={config?.keyPrefix}>\n <RouteExecutionStoreProvider namePrefix={config?.keyPrefix}>\n {children}\n </RouteExecutionStoreProvider>\n </ChainOrderStoreProvider>\n </FormStoreProvider>\n </PinnedTokensStoreProvider>\n </BookmarkStoreProvider>\n </HeaderStoreProvider>\n </NavigationTabsStoreProvider>\n )\n}\n"],"mappings":";;;;;;;;;AAUA,MAAa,iBAAiE,EAC5E,UACA,QACA,cACI;CACJ,OACE,oBAAC,6BAAD;EAAqC;
|
|
1
|
+
{"version":3,"file":"StoreProvider.js","names":[],"sources":["../../../src/stores/StoreProvider.tsx"],"sourcesContent":["import type { PropsWithChildren } from 'react'\nimport type { WidgetConfigProps } from '../types/widget.js'\nimport { BookmarkStoreProvider } from './bookmarks/BookmarkStore.js'\nimport { ChainOrderStoreProvider } from './chains/ChainOrderStore.js'\nimport { FormStoreProvider } from './form/FormStore.js'\nimport { HeaderStoreProvider } from './header/useHeaderStore.js'\nimport { NavigationTabsStoreProvider } from './navigationTabs/useNavigationTabsStore.js'\nimport { PinnedTokensStoreProvider } from './pinnedTokens/PinnedTokensStore.js'\nimport { RouteExecutionStoreProvider } from './routes/RouteExecutionStore.js'\n\nexport const StoreProvider: React.FC<PropsWithChildren<WidgetConfigProps>> = ({\n children,\n config,\n formRef,\n}) => {\n return (\n <NavigationTabsStoreProvider config={config}>\n <HeaderStoreProvider namePrefix={config?.keyPrefix}>\n <BookmarkStoreProvider namePrefix={config?.keyPrefix}>\n <PinnedTokensStoreProvider namePrefix={config?.keyPrefix}>\n <FormStoreProvider formRef={formRef}>\n <ChainOrderStoreProvider namePrefix={config?.keyPrefix}>\n <RouteExecutionStoreProvider namePrefix={config?.keyPrefix}>\n {children}\n </RouteExecutionStoreProvider>\n </ChainOrderStoreProvider>\n </FormStoreProvider>\n </PinnedTokensStoreProvider>\n </BookmarkStoreProvider>\n </HeaderStoreProvider>\n </NavigationTabsStoreProvider>\n )\n}\n"],"mappings":";;;;;;;;;AAUA,MAAa,iBAAiE,EAC5E,UACA,QACA,cACI;CACJ,OACE,oBAAC,6BAAD;EAAqC;EACnC,UAAA,oBAAC,qBAAD;GAAqB,YAAY,QAAQ;GACvC,UAAA,oBAAC,uBAAD;IAAuB,YAAY,QAAQ;IACzC,UAAA,oBAAC,2BAAD;KAA2B,YAAY,QAAQ;KAC7C,UAAA,oBAAC,mBAAD;MAA4B;MAC1B,UAAA,oBAAC,yBAAD;OAAyB,YAAY,QAAQ;OAC3C,UAAA,oBAAC,6BAAD;QAA6B,YAAY,QAAQ;QAC9C;OAC0B,CAAA;MACN,CAAA;KACR,CAAA;IACM,CAAA;GACN,CAAA;EACJ,CAAA;CACM,CAAA;AAEjC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import "./types.js";
|
|
2
|
+
import { PersistStoreProviderProps } from "../types.js";
|
|
3
|
+
//#region src/stores/bookmarks/BookmarkStore.d.ts
|
|
4
|
+
declare const BookmarkStoreProvider: React.FC<PersistStoreProviderProps>;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { BookmarkStoreProvider };
|
|
7
|
+
//# sourceMappingURL=BookmarkStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BookmarkStore.d.ts","names":[],"sources":["../../../../src/stores/bookmarks/BookmarkStore.tsx"],"mappings":";;;cASa,uBAAuB,MAAM,GAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","names":[],"sources":["../../../../src/stores/bookmarks/types.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../../../../src/stores/bookmarks/types.ts"],"mappings":";;;UAGiB,iBAAiB;EAChC;;UAGe;EACf,mBAAmB;EACnB,WAAW;EACX,eAAe;;UAGA;EACf,cAAc,oBAAoB;EAClC,cAAc,UAAU;EACxB,iBAAiB;EACjB,sBAAsB,WAAW;EACjC,2BAA2B;EAC3B,kBAAkB,UAAU;EAC5B,qBAAqB;;KAGX,gBAAgB,gBAAgB;KAEhC,gBAAgB,cAAc,SAAS"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import "../types.js";
|
|
2
|
+
import { ChainOrderState } from "./types.js";
|
|
3
|
+
import { JSX } from "react";
|
|
4
|
+
//#region src/stores/chains/ChainOrderStore.d.ts
|
|
5
|
+
declare function useChainOrderStore<T>(selector: (state: ChainOrderState) => T): T;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { useChainOrderStore };
|
|
8
|
+
//# sourceMappingURL=ChainOrderStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChainOrderStore.d.ts","names":[],"sources":["../../../../src/stores/chains/ChainOrderStore.tsx"],"mappings":";;;;iBA+JgB,mBAAmB,GACjC,WAAW,OAAO,oBAAoB,IACrC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { FormType } from "../form/types.js";
|
|
2
|
+
//#region src/stores/chains/types.d.ts
|
|
3
|
+
interface ChainOrderProps {
|
|
4
|
+
chainOrder: {
|
|
5
|
+
from: number[];
|
|
6
|
+
to: number[];
|
|
7
|
+
};
|
|
8
|
+
availableChains: {
|
|
9
|
+
from: number[];
|
|
10
|
+
to: number[];
|
|
11
|
+
};
|
|
12
|
+
fromShowAllNetworks: boolean;
|
|
13
|
+
toShowAllNetworks: boolean;
|
|
14
|
+
fromIsAllNetworks: boolean;
|
|
15
|
+
toIsAllNetworks: boolean;
|
|
16
|
+
pinnedChains: number[];
|
|
17
|
+
}
|
|
18
|
+
interface ChainOrderState extends ChainOrderProps {
|
|
19
|
+
initializeChains(chainIds: number[], type: FormType): number[];
|
|
20
|
+
setChain(chainId: number, type: FormType): void;
|
|
21
|
+
setIsAllNetworks(isAllNetworks: boolean, formType: FormType): void;
|
|
22
|
+
setShowAllNetworks(showAllNetworks: boolean, formType: FormType): void;
|
|
23
|
+
setPinnedChain(chainId: number): void;
|
|
24
|
+
}
|
|
25
|
+
//#endregion
|
|
26
|
+
export { ChainOrderState };
|
|
27
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../../../../src/stores/chains/types.ts"],"mappings":";;UAEU;EACR;IACE;IACA;;EAEF;IACE;IACA;;EAEF;EACA;EACA;EACA;EACA;;UAGe,wBAAwB;EACvC,iBAAiB,oBAAoB,MAAM;EAC3C,SAAS,iBAAiB,MAAM;EAChC,iBAAiB,wBAAwB,UAAU;EACnD,mBAAmB,0BAA0B,UAAU;EACvD,eAAe"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormStore.js","names":[],"sources":["../../../../src/stores/form/FormStore.tsx"],"sourcesContent":["import type { PropsWithChildren } from 'react'\nimport { useMemo, useRef } from 'react'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport type { FormRef } from '../../types/widget.js'\nimport { createFormStore, formDefaultValues } from './createFormStore.js'\nimport { FormStoreContext } from './FormStoreContext.js'\nimport { FormUpdater } from './FormUpdater.js'\nimport { getDefaultValuesFromQueryString } from './getDefaultValuesFromQueryString.js'\nimport type { DefaultValues, FormStoreStore } from './types.js'\nimport { useFormRef } from './useFormRef.js'\n\n// decorates and initialise the form date for use in the form store\nconst initialiseDefaultValues = (defaultValues: Partial<DefaultValues>) => ({\n ...formDefaultValues,\n ...defaultValues,\n fromAmount:\n (typeof defaultValues.fromAmount === 'number'\n ? (defaultValues.fromAmount as number)?.toPrecision?.()\n : defaultValues.fromAmount) || formDefaultValues.fromAmount,\n toAmount:\n (typeof defaultValues.toAmount === 'number'\n ? (defaultValues.toAmount as number)?.toPrecision?.()\n : defaultValues.toAmount) || formDefaultValues.toAmount,\n // Prevent setting address when the field is hidden\n toAddress: defaultValues.toAddress || formDefaultValues.toAddress,\n})\n\ninterface FormStoreProviderProps extends PropsWithChildren {\n formRef?: FormRef\n}\n\nexport const FormStoreProvider: React.FC<FormStoreProviderProps> = ({\n children,\n formRef,\n}) => {\n const widgetConfig = useWidgetConfig()\n\n const {\n fromChain,\n fromToken,\n toChain,\n toToken,\n fromAmount,\n toAmount,\n toAddress,\n formUpdateKey,\n buildUrl,\n } = widgetConfig\n\n const storeRef = useRef<FormStoreStore>(null)\n\n const configHasFromChain = Object.hasOwn(widgetConfig, 'fromChain')\n const configHasFromToken = Object.hasOwn(widgetConfig, 'fromToken')\n const configHasFromAmount = Object.hasOwn(widgetConfig, 'fromAmount')\n const configHasToAmount = Object.hasOwn(widgetConfig, 'toAmount')\n const configHasToAddress = Object.hasOwn(widgetConfig, 'toAddress')\n const configHasToChain = Object.hasOwn(widgetConfig, 'toChain')\n const configHasToToken = Object.hasOwn(widgetConfig, 'toToken')\n\n // We use the presence/absence of a property to decide if the form values in state need to be updated\n // We only build and set a property on the memoized form values here if they are included in the\n // config - undefined is considered a valid value that will reset that form field\n // biome-ignore lint/correctness/useExhaustiveDependencies: formUpdateKey is needed here.\n const reactiveFormValues = useMemo(\n () => ({\n ...(configHasFromChain ? { fromChain } : undefined),\n ...(configHasFromToken ? { fromToken } : undefined),\n ...(configHasFromAmount\n ? {\n fromAmount:\n (typeof fromAmount === 'number'\n ? fromAmount?.toPrecision()\n : fromAmount) || formDefaultValues.fromAmount,\n }\n : undefined),\n ...(configHasToAmount\n ? {\n toAmount:\n (typeof toAmount === 'number'\n ? toAmount?.toPrecision()\n : toAmount) || formDefaultValues.toAmount,\n }\n : undefined),\n ...(configHasToChain ? { toChain } : undefined),\n ...(configHasToToken ? { toToken } : undefined),\n ...(configHasToAddress\n ? {\n toAddress: toAddress?.address || formDefaultValues.toAddress,\n }\n : undefined),\n }),\n [\n fromAmount,\n toAmount,\n fromChain,\n fromToken,\n toAddress,\n toChain,\n toToken,\n // formUpdateKey should be a randomly assigned unique key. It can be used to force updates for the form field values\n formUpdateKey,\n configHasFromChain,\n configHasFromToken,\n configHasFromAmount,\n configHasToAmount,\n configHasToAddress,\n configHasToChain,\n configHasToToken,\n ]\n )\n\n if (!storeRef.current) {\n const queryDefaults = getDefaultValuesFromQueryString({\n buildUrl,\n includeToAddress: false,\n })\n storeRef.current = createFormStore(\n initialiseDefaultValues({\n ...reactiveFormValues,\n ...queryDefaults,\n })\n )\n }\n\n useFormRef(storeRef.current, formRef)\n\n return (\n <FormStoreContext value={storeRef.current}>\n {children}\n <FormUpdater reactiveFormValues={reactiveFormValues} />\n </FormStoreContext>\n )\n}\n"],"mappings":";;;;;;;;;AAYA,MAAM,2BAA2B,mBAA2C;CAC1E,GAAG;CACH,GAAG;CACH,aACG,OAAO,cAAc,eAAe,WAChC,cAAc,YAAuB,cAAc,IACpD,cAAc,eAAe,kBAAkB;CACrD,WACG,OAAO,cAAc,aAAa,WAC9B,cAAc,UAAqB,cAAc,IAClD,cAAc,aAAa,kBAAkB;CAEnD,WAAW,cAAc,aAAa,kBAAkB;AAC1D;AAMA,MAAa,qBAAuD,EAClE,UACA,cACI;CACJ,MAAM,eAAe,gBAAgB;CAErC,MAAM,EACJ,WACA,WACA,SACA,SACA,YACA,UACA,WACA,eACA,aACE;CAEJ,MAAM,WAAW,OAAuB,IAAI;CAE5C,MAAM,qBAAqB,OAAO,OAAO,cAAc,WAAW;CAClE,MAAM,qBAAqB,OAAO,OAAO,cAAc,WAAW;CAClE,MAAM,sBAAsB,OAAO,OAAO,cAAc,YAAY;CACpE,MAAM,oBAAoB,OAAO,OAAO,cAAc,UAAU;CAChE,MAAM,qBAAqB,OAAO,OAAO,cAAc,WAAW;CAClE,MAAM,mBAAmB,OAAO,OAAO,cAAc,SAAS;CAC9D,MAAM,mBAAmB,OAAO,OAAO,cAAc,SAAS;CAM9D,MAAM,qBAAqB,eAClB;EACL,GAAI,qBAAqB,EAAE,UAAU,IAAI,KAAA;EACzC,GAAI,qBAAqB,EAAE,UAAU,IAAI,KAAA;EACzC,GAAI,sBACA,EACE,aACG,OAAO,eAAe,WACnB,YAAY,YAAY,IACxB,eAAe,kBAAkB,WACzC,IACA,KAAA;EACJ,GAAI,oBACA,EACE,WACG,OAAO,aAAa,WACjB,UAAU,YAAY,IACtB,aAAa,kBAAkB,SACvC,IACA,KAAA;EACJ,GAAI,mBAAmB,EAAE,QAAQ,IAAI,KAAA;EACrC,GAAI,mBAAmB,EAAE,QAAQ,IAAI,KAAA;EACrC,GAAI,qBACA,EACE,WAAW,WAAW,WAAW,kBAAkB,UACrD,IACA,KAAA;CACN,IACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CACF;CAEA,IAAI,CAAC,SAAS,SAAS;EACrB,MAAM,gBAAgB,gCAAgC;GACpD;GACA,kBAAkB;EACpB,CAAC;EACD,SAAS,UAAU,gBACjB,wBAAwB;GACtB,GAAG;GACH,GAAG;EACL,CAAC,CACH;CACF;CAEA,WAAW,SAAS,SAAS,OAAO;CAEpC,OACE,qBAAC,kBAAD;EAAkB,OAAO,SAAS;
|
|
1
|
+
{"version":3,"file":"FormStore.js","names":[],"sources":["../../../../src/stores/form/FormStore.tsx"],"sourcesContent":["import type { PropsWithChildren } from 'react'\nimport { useMemo, useRef } from 'react'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport type { FormRef } from '../../types/widget.js'\nimport { createFormStore, formDefaultValues } from './createFormStore.js'\nimport { FormStoreContext } from './FormStoreContext.js'\nimport { FormUpdater } from './FormUpdater.js'\nimport { getDefaultValuesFromQueryString } from './getDefaultValuesFromQueryString.js'\nimport type { DefaultValues, FormStoreStore } from './types.js'\nimport { useFormRef } from './useFormRef.js'\n\n// decorates and initialise the form date for use in the form store\nconst initialiseDefaultValues = (defaultValues: Partial<DefaultValues>) => ({\n ...formDefaultValues,\n ...defaultValues,\n fromAmount:\n (typeof defaultValues.fromAmount === 'number'\n ? (defaultValues.fromAmount as number)?.toPrecision?.()\n : defaultValues.fromAmount) || formDefaultValues.fromAmount,\n toAmount:\n (typeof defaultValues.toAmount === 'number'\n ? (defaultValues.toAmount as number)?.toPrecision?.()\n : defaultValues.toAmount) || formDefaultValues.toAmount,\n // Prevent setting address when the field is hidden\n toAddress: defaultValues.toAddress || formDefaultValues.toAddress,\n})\n\ninterface FormStoreProviderProps extends PropsWithChildren {\n formRef?: FormRef\n}\n\nexport const FormStoreProvider: React.FC<FormStoreProviderProps> = ({\n children,\n formRef,\n}) => {\n const widgetConfig = useWidgetConfig()\n\n const {\n fromChain,\n fromToken,\n toChain,\n toToken,\n fromAmount,\n toAmount,\n toAddress,\n formUpdateKey,\n buildUrl,\n } = widgetConfig\n\n const storeRef = useRef<FormStoreStore>(null)\n\n const configHasFromChain = Object.hasOwn(widgetConfig, 'fromChain')\n const configHasFromToken = Object.hasOwn(widgetConfig, 'fromToken')\n const configHasFromAmount = Object.hasOwn(widgetConfig, 'fromAmount')\n const configHasToAmount = Object.hasOwn(widgetConfig, 'toAmount')\n const configHasToAddress = Object.hasOwn(widgetConfig, 'toAddress')\n const configHasToChain = Object.hasOwn(widgetConfig, 'toChain')\n const configHasToToken = Object.hasOwn(widgetConfig, 'toToken')\n\n // We use the presence/absence of a property to decide if the form values in state need to be updated\n // We only build and set a property on the memoized form values here if they are included in the\n // config - undefined is considered a valid value that will reset that form field\n // biome-ignore lint/correctness/useExhaustiveDependencies: formUpdateKey is needed here.\n const reactiveFormValues = useMemo(\n () => ({\n ...(configHasFromChain ? { fromChain } : undefined),\n ...(configHasFromToken ? { fromToken } : undefined),\n ...(configHasFromAmount\n ? {\n fromAmount:\n (typeof fromAmount === 'number'\n ? fromAmount?.toPrecision()\n : fromAmount) || formDefaultValues.fromAmount,\n }\n : undefined),\n ...(configHasToAmount\n ? {\n toAmount:\n (typeof toAmount === 'number'\n ? toAmount?.toPrecision()\n : toAmount) || formDefaultValues.toAmount,\n }\n : undefined),\n ...(configHasToChain ? { toChain } : undefined),\n ...(configHasToToken ? { toToken } : undefined),\n ...(configHasToAddress\n ? {\n toAddress: toAddress?.address || formDefaultValues.toAddress,\n }\n : undefined),\n }),\n [\n fromAmount,\n toAmount,\n fromChain,\n fromToken,\n toAddress,\n toChain,\n toToken,\n // formUpdateKey should be a randomly assigned unique key. It can be used to force updates for the form field values\n formUpdateKey,\n configHasFromChain,\n configHasFromToken,\n configHasFromAmount,\n configHasToAmount,\n configHasToAddress,\n configHasToChain,\n configHasToToken,\n ]\n )\n\n if (!storeRef.current) {\n const queryDefaults = getDefaultValuesFromQueryString({\n buildUrl,\n includeToAddress: false,\n })\n storeRef.current = createFormStore(\n initialiseDefaultValues({\n ...reactiveFormValues,\n ...queryDefaults,\n })\n )\n }\n\n useFormRef(storeRef.current, formRef)\n\n return (\n <FormStoreContext value={storeRef.current}>\n {children}\n <FormUpdater reactiveFormValues={reactiveFormValues} />\n </FormStoreContext>\n )\n}\n"],"mappings":";;;;;;;;;AAYA,MAAM,2BAA2B,mBAA2C;CAC1E,GAAG;CACH,GAAG;CACH,aACG,OAAO,cAAc,eAAe,WAChC,cAAc,YAAuB,cAAc,IACpD,cAAc,eAAe,kBAAkB;CACrD,WACG,OAAO,cAAc,aAAa,WAC9B,cAAc,UAAqB,cAAc,IAClD,cAAc,aAAa,kBAAkB;CAEnD,WAAW,cAAc,aAAa,kBAAkB;AAC1D;AAMA,MAAa,qBAAuD,EAClE,UACA,cACI;CACJ,MAAM,eAAe,gBAAgB;CAErC,MAAM,EACJ,WACA,WACA,SACA,SACA,YACA,UACA,WACA,eACA,aACE;CAEJ,MAAM,WAAW,OAAuB,IAAI;CAE5C,MAAM,qBAAqB,OAAO,OAAO,cAAc,WAAW;CAClE,MAAM,qBAAqB,OAAO,OAAO,cAAc,WAAW;CAClE,MAAM,sBAAsB,OAAO,OAAO,cAAc,YAAY;CACpE,MAAM,oBAAoB,OAAO,OAAO,cAAc,UAAU;CAChE,MAAM,qBAAqB,OAAO,OAAO,cAAc,WAAW;CAClE,MAAM,mBAAmB,OAAO,OAAO,cAAc,SAAS;CAC9D,MAAM,mBAAmB,OAAO,OAAO,cAAc,SAAS;CAM9D,MAAM,qBAAqB,eAClB;EACL,GAAI,qBAAqB,EAAE,UAAU,IAAI,KAAA;EACzC,GAAI,qBAAqB,EAAE,UAAU,IAAI,KAAA;EACzC,GAAI,sBACA,EACE,aACG,OAAO,eAAe,WACnB,YAAY,YAAY,IACxB,eAAe,kBAAkB,WACzC,IACA,KAAA;EACJ,GAAI,oBACA,EACE,WACG,OAAO,aAAa,WACjB,UAAU,YAAY,IACtB,aAAa,kBAAkB,SACvC,IACA,KAAA;EACJ,GAAI,mBAAmB,EAAE,QAAQ,IAAI,KAAA;EACrC,GAAI,mBAAmB,EAAE,QAAQ,IAAI,KAAA;EACrC,GAAI,qBACA,EACE,WAAW,WAAW,WAAW,kBAAkB,UACrD,IACA,KAAA;CACN,IACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CACF;CAEA,IAAI,CAAC,SAAS,SAAS;EACrB,MAAM,gBAAgB,gCAAgC;GACpD;GACA,kBAAkB;EACpB,CAAC;EACD,SAAS,UAAU,gBACjB,wBAAwB;GACtB,GAAG;GACH,GAAG;EACL,CAAC,CACH;CACF;CAEA,WAAW,SAAS,SAAS,OAAO;CAEpC,OACE,qBAAC,kBAAD;EAAkB,OAAO,SAAS;EAAlC,UAAA,CACG,UACD,oBAAC,aAAD,EAAiC,mBAAqB,CAAA,CACtC;;AAEtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormUpdater.js","names":[],"sources":["../../../../src/stores/form/FormUpdater.tsx"],"sourcesContent":["import { useAccount } from '@lifi/wallet-management'\nimport { useEffect } from 'react'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport { useBookmarkActions } from '../../stores/bookmarks/useBookmarkActions.js'\nimport { formDefaultValues } from '../../stores/form/createFormStore.js'\nimport type { DefaultValues } from './types.js'\nimport { useFieldActions } from './useFieldActions.js'\n\nexport const FormUpdater: React.FC<{\n reactiveFormValues: Partial<DefaultValues>\n}> = ({ reactiveFormValues }) => {\n const { toAddress } = useWidgetConfig()\n const { account } = useAccount()\n const { setSelectedBookmark } = useBookmarkActions()\n const { setUserAndDefaultValues } = useFieldActions()\n\n // React to changes in widget config options (reactiveFormValues), updating userValues accordingly.\n // Includes special logic for chain fields, where account.chainId is only a fallback and not a direct reactivity source.\n // biome-ignore lint/correctness/useExhaustiveDependencies: account.chainId is used as a fallback only and does not need to be a dependency for reactivity.\n useEffect(() => {\n if (toAddress) {\n setSelectedBookmark(toAddress)\n }\n\n setUserAndDefaultValues(\n accountForChainId(reactiveFormValues, account.chainId)\n )\n }, [\n toAddress,\n reactiveFormValues,\n setUserAndDefaultValues,\n setSelectedBookmark,\n ])\n\n return null\n}\n\nconst accountForChainId = (\n defaultValues: Partial<DefaultValues>,\n chainId?: number\n) => {\n const result: Partial<DefaultValues> = { ...defaultValues }\n for (const key in result) {\n const k = key as keyof DefaultValues\n if (result[k] === formDefaultValues[k]) {\n if ((k === 'fromChain' || k === 'toChain') && chainId) {\n result[k] = chainId\n }\n }\n }\n return result\n}\n"],"mappings":";;;;;;;AAQA,MAAa,eAEP,EAAE,yBAAyB;CAC/B,MAAM,EAAE,cAAc,gBAAgB;CACtC,MAAM,EAAE,YAAY,WAAW;CAC/B,MAAM,EAAE,wBAAwB,mBAAmB;CACnD,MAAM,EAAE,4BAA4B,gBAAgB;CAKpD,gBAAgB;EACd,IAAI,WACF,oBAAoB,SAAS;EAG/B,wBACE,kBAAkB,oBAAoB,QAAQ,OAAO,CACvD;CACF,GAAG;EACD;EACA;EACA;EACA;CACF,CAAC;CAED,OAAO;AACT;AAEA,MAAM,qBACJ,eACA,YACG;CACH,MAAM,SAAiC,EAAE,GAAG,cAAc;CAC1D,KAAK,MAAM,OAAO,QAAQ;EACxB,MAAM,IAAI;EACV,IAAI,OAAO,OAAO,kBAAkB;
|
|
1
|
+
{"version":3,"file":"FormUpdater.js","names":[],"sources":["../../../../src/stores/form/FormUpdater.tsx"],"sourcesContent":["import { useAccount } from '@lifi/wallet-management'\nimport { useEffect } from 'react'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport { useBookmarkActions } from '../../stores/bookmarks/useBookmarkActions.js'\nimport { formDefaultValues } from '../../stores/form/createFormStore.js'\nimport type { DefaultValues } from './types.js'\nimport { useFieldActions } from './useFieldActions.js'\n\nexport const FormUpdater: React.FC<{\n reactiveFormValues: Partial<DefaultValues>\n}> = ({ reactiveFormValues }) => {\n const { toAddress } = useWidgetConfig()\n const { account } = useAccount()\n const { setSelectedBookmark } = useBookmarkActions()\n const { setUserAndDefaultValues } = useFieldActions()\n\n // React to changes in widget config options (reactiveFormValues), updating userValues accordingly.\n // Includes special logic for chain fields, where account.chainId is only a fallback and not a direct reactivity source.\n // biome-ignore lint/correctness/useExhaustiveDependencies: account.chainId is used as a fallback only and does not need to be a dependency for reactivity.\n useEffect(() => {\n if (toAddress) {\n setSelectedBookmark(toAddress)\n }\n\n setUserAndDefaultValues(\n accountForChainId(reactiveFormValues, account.chainId)\n )\n }, [\n toAddress,\n reactiveFormValues,\n setUserAndDefaultValues,\n setSelectedBookmark,\n ])\n\n return null\n}\n\nconst accountForChainId = (\n defaultValues: Partial<DefaultValues>,\n chainId?: number\n) => {\n const result: Partial<DefaultValues> = { ...defaultValues }\n for (const key in result) {\n const k = key as keyof DefaultValues\n if (result[k] === formDefaultValues[k]) {\n if ((k === 'fromChain' || k === 'toChain') && chainId) {\n result[k] = chainId\n }\n }\n }\n return result\n}\n"],"mappings":";;;;;;;AAQA,MAAa,eAEP,EAAE,yBAAyB;CAC/B,MAAM,EAAE,cAAc,gBAAgB;CACtC,MAAM,EAAE,YAAY,WAAW;CAC/B,MAAM,EAAE,wBAAwB,mBAAmB;CACnD,MAAM,EAAE,4BAA4B,gBAAgB;CAKpD,gBAAgB;EACd,IAAI,WACF,oBAAoB,SAAS;EAG/B,wBACE,kBAAkB,oBAAoB,QAAQ,OAAO,CACvD;CACF,GAAG;EACD;EACA;EACA;EACA;CACF,CAAC;CAED,OAAO;AACT;AAEA,MAAM,qBACJ,eACA,YACG;CACH,MAAM,SAAiC,EAAE,GAAG,cAAc;CAC1D,KAAK,MAAM,OAAO,QAAQ;EACxB,MAAM,IAAI;EACV,IAAI,OAAO,OAAO,kBAAkB,IAC7B;QAAA,MAAM,eAAe,MAAM,cAAc,SAC5C,OAAO,KAAK;EAAA;CAGlB;CACA,OAAO;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createFormStore.js","names":[],"sources":["../../../../src/stores/form/createFormStore.ts"],"sourcesContent":["import type { StoreApi, UseBoundStore } from 'zustand'\nimport { create } from 'zustand'\nimport { DEFAULT_VALID_UNTIL_SECONDS } from '../../utils/limitOrder.js'\nimport type {\n DefaultValues,\n FormFieldArray,\n FormFieldNames,\n FormValueControl,\n FormValues,\n FormValuesState,\n} from './types.js'\n\nexport const formDefaultValues: DefaultValues = {\n fromAmount: '',\n toAmount: '',\n tokenSearchFilter: '',\n priceInverted: false,\n validUntil: DEFAULT_VALID_UNTIL_SECONDS,\n partiallyFillable: true,\n}\n\nconst defaultValueToFormValue = <T>(value: T): FormValueControl<T> => ({\n isTouched: false,\n isDirty: false,\n value,\n})\n\nconst valuesToFormValues = (defaultValues: DefaultValues): FormValues => {\n return (Object.keys(defaultValues) as FormFieldNames[]).reduce(\n (accum, key) => {\n accum[key] = defaultValueToFormValue(defaultValues[key]) as never\n return accum\n },\n {} as FormValues\n )\n}\n\nconst isString = (str: unknown): str is string =>\n typeof str === 'string' || str instanceof String\n\nconst getUpdatedTouchedFields = (userValues: FormValues) => {\n return (Object.keys(userValues) as FormFieldNames[]).reduce(\n (accum, key) => {\n if (userValues[key]?.isTouched) {\n accum[key] = true\n }\n return accum\n },\n {} as Record<FormFieldNames, boolean>\n )\n}\n\nconst mergeDefaultFormValues = (\n userValues: FormValues,\n defaultValues: FormValues\n) =>\n (Object.keys(defaultValues) as FormFieldNames[]).reduce<FormValues>(\n (accum, key) => {\n const formValue = {\n isTouched: !!(\n userValues[key]?.isTouched || defaultValues[key]?.isTouched\n ),\n isDirty: !!(userValues[key]?.isDirty || defaultValues[key]?.isTouched),\n value:\n userValues[key]?.value !== undefined && userValues[key]?.value !== ''\n ? userValues[key]?.value\n : defaultValues[key]?.value,\n }\n accum[key] = formValue as never\n return accum\n },\n { ...valuesToFormValues(formDefaultValues) }\n )\n\nexport const createFormStore = (\n defaultValues?: DefaultValues\n): UseBoundStore<StoreApi<FormValuesState>> =>\n create<FormValuesState>((set, get) => {\n const _defaultValues = valuesToFormValues({\n ...formDefaultValues,\n ...defaultValues,\n })\n return {\n defaultValues: _defaultValues,\n userValues: _defaultValues,\n touchedFields: {},\n isValid: true,\n isValidating: false,\n errors: {},\n validation: {},\n setDefaultValues: (defaultValue) => {\n const defaultFormValues = valuesToFormValues(defaultValue)\n set((state) => ({\n defaultValues: defaultFormValues,\n userValues: mergeDefaultFormValues(\n state.userValues,\n defaultFormValues\n ),\n }))\n },\n setUserAndDefaultValues: (formValues) => {\n const currentUserValues = get().userValues\n ;(Object.keys(formValues) as FormFieldNames[]).forEach((key) => {\n if (formValues[key] !== currentUserValues[key]?.value) {\n get().resetField(key, { defaultValue: formValues[key] })\n get().setFieldValue(key, formValues[key], { isTouched: true })\n }\n })\n },\n isTouched: (fieldName: FormFieldNames) =>\n !!get().userValues[fieldName]?.isTouched,\n isDirty: (fieldName: FormFieldNames) =>\n !!get().userValues[fieldName]?.isDirty,\n setAsTouched: (fieldName: FormFieldNames) => {\n const userValues = {\n ...get().userValues,\n [fieldName]: {\n ...get().userValues[fieldName],\n isTouched: true,\n },\n }\n\n const touchedFields = getUpdatedTouchedFields(userValues)\n\n set(() => ({\n userValues,\n touchedFields,\n }))\n },\n resetField: (fieldName, { defaultValue } = {}) => {\n if (defaultValue) {\n const fieldValues = {\n ...get().defaultValues[fieldName],\n value: defaultValue,\n }\n const defaultValues = {\n ...get().defaultValues,\n [fieldName]: { ...fieldValues },\n }\n const userValues = {\n ...get().userValues,\n [fieldName]: { ...fieldValues },\n }\n const touchedFields = getUpdatedTouchedFields(userValues)\n\n set(() => {\n return {\n defaultValues,\n userValues,\n touchedFields,\n }\n })\n } else {\n const userValues = {\n ...get().userValues,\n [fieldName]: { ...get().defaultValues[fieldName] },\n }\n const touchedFields = getUpdatedTouchedFields(userValues)\n\n set(() => ({\n userValues,\n touchedFields,\n }))\n }\n },\n setFieldValue: (fieldName, value, { isDirty, isTouched } = {}) => {\n const userValues = {\n ...get().userValues,\n [fieldName]: {\n value,\n isDirty:\n isDirty === undefined\n ? get().userValues[fieldName]?.isDirty\n : isDirty,\n isTouched:\n isTouched === undefined\n ? get().userValues[fieldName]?.isTouched\n : isTouched,\n },\n }\n\n const touchedFields = getUpdatedTouchedFields(userValues)\n\n set(() => ({\n userValues,\n touchedFields,\n }))\n },\n getFieldValues: <T extends FormFieldNames[]>(...names: T) =>\n names.map((name) => get().userValues[name]?.value) as FormFieldArray<T>,\n addFieldValidation: (name, validationFn) => {\n set((state) => ({\n validation: {\n ...state.validation,\n [name]: validationFn,\n },\n }))\n },\n triggerFieldValidation: async (name) => {\n try {\n let valid = true\n set(() => ({ isValid: false, isValidating: true }))\n\n const validationFn = get().validation[name]\n\n if (validationFn) {\n const result = await validationFn(get().userValues?.[name]?.value)\n if (isString(result)) {\n valid = false\n set((state) => ({\n errors: {\n ...state.errors,\n [name]: result,\n },\n }))\n } else {\n valid = result as boolean\n if (valid) {\n get().clearErrors(name)\n }\n }\n }\n\n set(() => ({ isValid: valid, isValidating: false }))\n return valid\n } catch (err) {\n set(() => ({ isValidating: false }))\n throw err\n }\n },\n clearErrors: (name) => {\n const newErrors = { ...get().errors }\n\n delete newErrors[name]\n\n set(() => ({\n errors: newErrors,\n }))\n },\n }\n })\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"createFormStore.js","names":[],"sources":["../../../../src/stores/form/createFormStore.ts"],"sourcesContent":["import type { StoreApi, UseBoundStore } from 'zustand'\nimport { create } from 'zustand'\nimport { DEFAULT_VALID_UNTIL_SECONDS } from '../../utils/limitOrder.js'\nimport type {\n DefaultValues,\n FormFieldArray,\n FormFieldNames,\n FormValueControl,\n FormValues,\n FormValuesState,\n} from './types.js'\n\nexport const formDefaultValues: DefaultValues = {\n fromAmount: '',\n toAmount: '',\n cashFiatAmount: '',\n tokenSearchFilter: '',\n priceInverted: false,\n validUntil: DEFAULT_VALID_UNTIL_SECONDS,\n partiallyFillable: true,\n}\n\nconst defaultValueToFormValue = <T>(value: T): FormValueControl<T> => ({\n isTouched: false,\n isDirty: false,\n value,\n})\n\nconst valuesToFormValues = (defaultValues: DefaultValues): FormValues => {\n return (Object.keys(defaultValues) as FormFieldNames[]).reduce(\n (accum, key) => {\n accum[key] = defaultValueToFormValue(defaultValues[key]) as never\n return accum\n },\n {} as FormValues\n )\n}\n\nconst isString = (str: unknown): str is string =>\n typeof str === 'string' || str instanceof String\n\nconst getUpdatedTouchedFields = (userValues: FormValues) => {\n return (Object.keys(userValues) as FormFieldNames[]).reduce(\n (accum, key) => {\n if (userValues[key]?.isTouched) {\n accum[key] = true\n }\n return accum\n },\n {} as Record<FormFieldNames, boolean>\n )\n}\n\nconst mergeDefaultFormValues = (\n userValues: FormValues,\n defaultValues: FormValues\n) =>\n (Object.keys(defaultValues) as FormFieldNames[]).reduce<FormValues>(\n (accum, key) => {\n const formValue = {\n isTouched: !!(\n userValues[key]?.isTouched || defaultValues[key]?.isTouched\n ),\n isDirty: !!(userValues[key]?.isDirty || defaultValues[key]?.isTouched),\n value:\n userValues[key]?.value !== undefined && userValues[key]?.value !== ''\n ? userValues[key]?.value\n : defaultValues[key]?.value,\n }\n accum[key] = formValue as never\n return accum\n },\n { ...valuesToFormValues(formDefaultValues) }\n )\n\nexport const createFormStore = (\n defaultValues?: DefaultValues\n): UseBoundStore<StoreApi<FormValuesState>> =>\n create<FormValuesState>((set, get) => {\n const _defaultValues = valuesToFormValues({\n ...formDefaultValues,\n ...defaultValues,\n })\n return {\n defaultValues: _defaultValues,\n userValues: _defaultValues,\n touchedFields: {},\n isValid: true,\n isValidating: false,\n errors: {},\n validation: {},\n setDefaultValues: (defaultValue) => {\n const defaultFormValues = valuesToFormValues(defaultValue)\n set((state) => ({\n defaultValues: defaultFormValues,\n userValues: mergeDefaultFormValues(\n state.userValues,\n defaultFormValues\n ),\n }))\n },\n setUserAndDefaultValues: (formValues) => {\n const currentUserValues = get().userValues\n ;(Object.keys(formValues) as FormFieldNames[]).forEach((key) => {\n if (formValues[key] !== currentUserValues[key]?.value) {\n get().resetField(key, { defaultValue: formValues[key] })\n get().setFieldValue(key, formValues[key], { isTouched: true })\n }\n })\n },\n isTouched: (fieldName: FormFieldNames) =>\n !!get().userValues[fieldName]?.isTouched,\n isDirty: (fieldName: FormFieldNames) =>\n !!get().userValues[fieldName]?.isDirty,\n setAsTouched: (fieldName: FormFieldNames) => {\n const userValues = {\n ...get().userValues,\n [fieldName]: {\n ...get().userValues[fieldName],\n isTouched: true,\n },\n }\n\n const touchedFields = getUpdatedTouchedFields(userValues)\n\n set(() => ({\n userValues,\n touchedFields,\n }))\n },\n resetField: (fieldName, { defaultValue } = {}) => {\n if (defaultValue) {\n const fieldValues = {\n ...get().defaultValues[fieldName],\n value: defaultValue,\n }\n const defaultValues = {\n ...get().defaultValues,\n [fieldName]: { ...fieldValues },\n }\n const userValues = {\n ...get().userValues,\n [fieldName]: { ...fieldValues },\n }\n const touchedFields = getUpdatedTouchedFields(userValues)\n\n set(() => {\n return {\n defaultValues,\n userValues,\n touchedFields,\n }\n })\n } else {\n const userValues = {\n ...get().userValues,\n [fieldName]: { ...get().defaultValues[fieldName] },\n }\n const touchedFields = getUpdatedTouchedFields(userValues)\n\n set(() => ({\n userValues,\n touchedFields,\n }))\n }\n },\n setFieldValue: (fieldName, value, { isDirty, isTouched } = {}) => {\n const userValues = {\n ...get().userValues,\n [fieldName]: {\n value,\n isDirty:\n isDirty === undefined\n ? get().userValues[fieldName]?.isDirty\n : isDirty,\n isTouched:\n isTouched === undefined\n ? get().userValues[fieldName]?.isTouched\n : isTouched,\n },\n }\n\n const touchedFields = getUpdatedTouchedFields(userValues)\n\n set(() => ({\n userValues,\n touchedFields,\n }))\n },\n getFieldValues: <T extends FormFieldNames[]>(...names: T) =>\n names.map((name) => get().userValues[name]?.value) as FormFieldArray<T>,\n addFieldValidation: (name, validationFn) => {\n set((state) => ({\n validation: {\n ...state.validation,\n [name]: validationFn,\n },\n }))\n },\n triggerFieldValidation: async (name) => {\n try {\n let valid = true\n set(() => ({ isValid: false, isValidating: true }))\n\n const validationFn = get().validation[name]\n\n if (validationFn) {\n const result = await validationFn(get().userValues?.[name]?.value)\n if (isString(result)) {\n valid = false\n set((state) => ({\n errors: {\n ...state.errors,\n [name]: result,\n },\n }))\n } else {\n valid = result as boolean\n if (valid) {\n get().clearErrors(name)\n }\n }\n }\n\n set(() => ({ isValid: valid, isValidating: false }))\n return valid\n } catch (err) {\n set(() => ({ isValidating: false }))\n throw err\n }\n },\n clearErrors: (name) => {\n const newErrors = { ...get().errors }\n\n delete newErrors[name]\n\n set(() => ({\n errors: newErrors,\n }))\n },\n }\n })\n"],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { ContractCall } from "@lifi/sdk";
|
|
2
2
|
import { StoreApi, UseBoundStore } from "zustand";
|
|
3
|
-
|
|
4
3
|
//#region src/stores/form/types.d.ts
|
|
5
4
|
interface DefaultFieldValues {
|
|
6
5
|
fromChain?: number;
|
|
@@ -12,6 +11,7 @@ interface DefaultFieldValues {
|
|
|
12
11
|
toAmount: string;
|
|
13
12
|
}
|
|
14
13
|
interface DefaultValues extends DefaultFieldValues {
|
|
14
|
+
cashFiatAmount: string;
|
|
15
15
|
contractCalls?: ContractCall[];
|
|
16
16
|
tokenSearchFilter: string;
|
|
17
17
|
/** Limit-order: when true, the price is displayed/entered inverted. */
|
|
@@ -29,17 +29,17 @@ interface FormValueControl<T> {
|
|
|
29
29
|
isDirty: boolean;
|
|
30
30
|
value: T;
|
|
31
31
|
}
|
|
32
|
-
type FormValues = { [Property in keyof DefaultValues]: FormValueControl<DefaultValues[Property]
|
|
32
|
+
type FormValues = { [Property in keyof DefaultValues]: FormValueControl<DefaultValues[Property]>; };
|
|
33
33
|
type FormFieldNames = keyof FormValues;
|
|
34
34
|
type ExtractValueType<T> = T extends FormValueControl<infer U> ? U : never;
|
|
35
|
-
type FormFieldArray<T extends FormFieldNames[]> = { [K in keyof T]: ExtractValueType<FormValues[T[K]]
|
|
36
|
-
type TouchedFields = { [K in FormFieldNames]?: boolean };
|
|
35
|
+
type FormFieldArray<T extends FormFieldNames[]> = { [K in keyof T]: ExtractValueType<FormValues[T[K]]>; };
|
|
36
|
+
type TouchedFields = { [K in FormFieldNames]?: boolean; };
|
|
37
37
|
type ValidationFn = (value: any) => Promise<boolean | string>;
|
|
38
38
|
interface ValidationProps {
|
|
39
39
|
isValid: boolean;
|
|
40
40
|
isValidating: boolean;
|
|
41
|
-
errors: { [K in FormFieldNames]?: string };
|
|
42
|
-
validation: { [K in FormFieldNames]?: ValidationFn };
|
|
41
|
+
errors: { [K in FormFieldNames]?: string; };
|
|
42
|
+
validation: { [K in FormFieldNames]?: ValidationFn; };
|
|
43
43
|
}
|
|
44
44
|
interface ValidationActions {
|
|
45
45
|
addFieldValidation: (name: FormFieldNames, validationFn: ValidationFn) => void;
|
|
@@ -49,7 +49,7 @@ interface ValidationActions {
|
|
|
49
49
|
interface FormProps {
|
|
50
50
|
defaultValues: FormValues;
|
|
51
51
|
userValues: FormValues;
|
|
52
|
-
touchedFields: { [K in FormFieldNames]?: boolean };
|
|
52
|
+
touchedFields: { [K in FormFieldNames]?: boolean; };
|
|
53
53
|
}
|
|
54
54
|
interface ResetOptions {
|
|
55
55
|
defaultValue?: GenericFormValue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","names":[],"sources":["../../../../src/stores/form/types.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../../../../src/stores/form/types.ts"],"mappings":";;;UAGiB;EACf;EACA;EACA;EACA;EACA;EACA;EACA;;UAGe,sBAAsB;EACrC;EACA,gBAAgB;EAChB;;EAEA;;EAEA;;EAEA;;EAEA;;KAGU,+CAIR;UAEa,iBAAiB;EAChC;EACA;EACA,OAAO;;KAGG,gBACT,kBAAkB,gBAAgB,iBAAiB,cAAc;KAGxD,uBAAuB;KACvB,iBAAiB,KAC3B,UAAU,uBAAuB,KAAK;KAC5B,eAAe,UAAU,uBAClC,WAAW,IAAI,iBAAiB,WAAW,EAAE;KAGpC,mBAAmB,KAAK;KAE/B,gBAAgB,eAAe;UACnB;EACf;EACA;EACA,WACG,KAAK;EAER,eACG,KAAK,kBAAkB;;UAIX;EACf,qBAAqB,MAAM,gBAAgB,cAAc;EACzD,yBAAyB,MAAM,mBAAmB;EAClD,cAAc,MAAM;;UAGL;EACf,eAAe;EACf,YAAY;EACZ,kBAAkB,KAAK;;UAGR;EACf,eAAe;;UAGA;EACf,mBAAmB,YAAY;EAC/B,0BAA0B,YAAY,QAAQ;EAC9C,YAAY,WAAW;EACvB,UAAU,WAAW;EACrB,eAAe,WAAW;EAC1B,aAAa,WAAW,gBAAgB,eAAe;EACvD,gBACE,WAAW,gBACX,OAAO,kBACP,UAAU;EAEZ,iBAAiB,UAAU,qBAAqB,OAAO,MAAM,eAAe;;KAGlE,kBAAkB,YAC5B,cACA,kBACA;KAEU,iBAAiB,cAAc,SAAS;UAEnC;EACf;EACA;;KAGU;UAEK;EACf,UAAU;;cAGC;EACX,cAAc,UAAU;EAExB,cAAc,UAAU;EAExB,eAAe,UAAU"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../../../src/stores/form/types.ts"],"sourcesContent":["import type { ContractCall } from '@lifi/sdk'\nimport type { StoreApi, UseBoundStore } from 'zustand'\n\nexport interface DefaultFieldValues {\n fromChain?: number\n fromToken?: string\n toChain?: number\n toToken?: string\n toAddress?: string\n fromAmount: string\n toAmount: string\n}\n\nexport interface DefaultValues extends DefaultFieldValues {\n contractCalls?: ContractCall[]\n tokenSearchFilter: string\n /** Limit-order: when true, the price is displayed/entered inverted. */\n priceInverted: boolean\n /** Limit-order: order validity as a duration in seconds. */\n validUntil: number\n /** Limit-order: whether the order may be partially filled. */\n partiallyFillable: boolean\n /** Limit-order: id of the route the user picked. */\n selectedRouteId?: string\n}\n\nexport type GenericFormValue =\n | string\n | number\n | boolean\n | ContractCall[]\n | undefined\nexport interface FormValueControl<T> {\n isTouched: boolean\n isDirty: boolean\n value: T\n}\n\nexport type FormValues = {\n [Property in keyof DefaultValues]: FormValueControl<DefaultValues[Property]>\n}\n\nexport type FormFieldNames = keyof FormValues\nexport type ExtractValueType<T> =\n T extends FormValueControl<infer U> ? U : never\nexport type FormFieldArray<T extends FormFieldNames[]> = {\n [K in keyof T]: ExtractValueType<FormValues[T[K]]>\n}\n\nexport type TouchedFields = { [K in FormFieldNames]?: boolean }\n\ntype ValidationFn = (value: any) => Promise<boolean | string>\nexport interface ValidationProps {\n isValid: boolean\n isValidating: boolean\n errors: {\n [K in FormFieldNames]?: string\n }\n validation: {\n [K in FormFieldNames]?: ValidationFn\n }\n}\n\nexport interface ValidationActions {\n addFieldValidation: (name: FormFieldNames, validationFn: ValidationFn) => void\n triggerFieldValidation: (name: FormFieldNames) => Promise<boolean>\n clearErrors: (name: FormFieldNames) => void\n}\n\nexport interface FormProps {\n defaultValues: FormValues\n userValues: FormValues\n touchedFields: { [K in FormFieldNames]?: boolean }\n}\n\nexport interface ResetOptions {\n defaultValue?: GenericFormValue\n}\n\nexport interface FormActions {\n setDefaultValues: (formValues: DefaultValues) => void\n setUserAndDefaultValues: (formValues: Partial<DefaultValues>) => void\n isTouched: (fieldName: FormFieldNames) => boolean\n isDirty: (fieldName: FormFieldNames) => boolean\n setAsTouched: (fieldName: FormFieldNames) => void\n resetField: (fieldName: FormFieldNames, resetOptions?: ResetOptions) => void\n setFieldValue: (\n fieldName: FormFieldNames,\n value: GenericFormValue,\n options?: SetOptions\n ) => void\n getFieldValues: <T extends FormFieldNames[]>(...names: T) => FormFieldArray<T>\n}\n\nexport type FormValuesState = FormProps &\n FormActions &\n ValidationProps &\n ValidationActions\n\nexport type FormStoreStore = UseBoundStore<StoreApi<FormValuesState>>\n\nexport interface SetOptions {\n isDirty?: boolean\n isTouched?: boolean\n}\n\nexport type FormType = 'from' | 'to'\n\nexport interface FormTypeProps {\n formType: FormType\n}\n\nexport const FormKeyHelper = {\n getChainKey: (formType: FormType): 'fromChain' | 'toChain' =>\n `${formType}Chain`,\n getTokenKey: (formType: FormType): 'fromToken' | 'toToken' =>\n `${formType}Token`,\n getAmountKey: (formType: FormType): 'fromAmount' | 'toAmount' =>\n `${formType}Amount`,\n}\n"],"mappings":";
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../../src/stores/form/types.ts"],"sourcesContent":["import type { ContractCall } from '@lifi/sdk'\nimport type { StoreApi, UseBoundStore } from 'zustand'\n\nexport interface DefaultFieldValues {\n fromChain?: number\n fromToken?: string\n toChain?: number\n toToken?: string\n toAddress?: string\n fromAmount: string\n toAmount: string\n}\n\nexport interface DefaultValues extends DefaultFieldValues {\n cashFiatAmount: string\n contractCalls?: ContractCall[]\n tokenSearchFilter: string\n /** Limit-order: when true, the price is displayed/entered inverted. */\n priceInverted: boolean\n /** Limit-order: order validity as a duration in seconds. */\n validUntil: number\n /** Limit-order: whether the order may be partially filled. */\n partiallyFillable: boolean\n /** Limit-order: id of the route the user picked. */\n selectedRouteId?: string\n}\n\nexport type GenericFormValue =\n | string\n | number\n | boolean\n | ContractCall[]\n | undefined\nexport interface FormValueControl<T> {\n isTouched: boolean\n isDirty: boolean\n value: T\n}\n\nexport type FormValues = {\n [Property in keyof DefaultValues]: FormValueControl<DefaultValues[Property]>\n}\n\nexport type FormFieldNames = keyof FormValues\nexport type ExtractValueType<T> =\n T extends FormValueControl<infer U> ? U : never\nexport type FormFieldArray<T extends FormFieldNames[]> = {\n [K in keyof T]: ExtractValueType<FormValues[T[K]]>\n}\n\nexport type TouchedFields = { [K in FormFieldNames]?: boolean }\n\ntype ValidationFn = (value: any) => Promise<boolean | string>\nexport interface ValidationProps {\n isValid: boolean\n isValidating: boolean\n errors: {\n [K in FormFieldNames]?: string\n }\n validation: {\n [K in FormFieldNames]?: ValidationFn\n }\n}\n\nexport interface ValidationActions {\n addFieldValidation: (name: FormFieldNames, validationFn: ValidationFn) => void\n triggerFieldValidation: (name: FormFieldNames) => Promise<boolean>\n clearErrors: (name: FormFieldNames) => void\n}\n\nexport interface FormProps {\n defaultValues: FormValues\n userValues: FormValues\n touchedFields: { [K in FormFieldNames]?: boolean }\n}\n\nexport interface ResetOptions {\n defaultValue?: GenericFormValue\n}\n\nexport interface FormActions {\n setDefaultValues: (formValues: DefaultValues) => void\n setUserAndDefaultValues: (formValues: Partial<DefaultValues>) => void\n isTouched: (fieldName: FormFieldNames) => boolean\n isDirty: (fieldName: FormFieldNames) => boolean\n setAsTouched: (fieldName: FormFieldNames) => void\n resetField: (fieldName: FormFieldNames, resetOptions?: ResetOptions) => void\n setFieldValue: (\n fieldName: FormFieldNames,\n value: GenericFormValue,\n options?: SetOptions\n ) => void\n getFieldValues: <T extends FormFieldNames[]>(...names: T) => FormFieldArray<T>\n}\n\nexport type FormValuesState = FormProps &\n FormActions &\n ValidationProps &\n ValidationActions\n\nexport type FormStoreStore = UseBoundStore<StoreApi<FormValuesState>>\n\nexport interface SetOptions {\n isDirty?: boolean\n isTouched?: boolean\n}\n\nexport type FormType = 'from' | 'to'\n\nexport interface FormTypeProps {\n formType: FormType\n}\n\nexport const FormKeyHelper = {\n getChainKey: (formType: FormType): 'fromChain' | 'toChain' =>\n `${formType}Chain`,\n getTokenKey: (formType: FormType): 'fromToken' | 'toToken' =>\n `${formType}Token`,\n getAmountKey: (formType: FormType): 'fromAmount' | 'toAmount' =>\n `${formType}Amount`,\n}\n"],"mappings":";AAiHA,MAAa,gBAAgB;CAC3B,cAAc,aACZ,GAAG,SAAS;CACd,cAAc,aACZ,GAAG,SAAS;CACd,eAAe,aACb,GAAG,SAAS;AAChB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFieldActions.d.ts","names":[],"sources":["../../../../src/stores/form/useFieldActions.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useFieldActions.d.ts","names":[],"sources":["../../../../src/stores/form/useFieldActions.ts"],"mappings":";;cAaa,uBAAsB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFieldValues.d.ts","names":[],"sources":["../../../../src/stores/form/useFieldValues.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useFieldValues.d.ts","names":[],"sources":["../../../../src/stores/form/useFieldValues.ts"],"mappings":";;cAIa,iBAAkB,UAAU,qBACpC,OAAO,MACT,eAAe"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { StoreApi, UseBoundStore } from "zustand";
|
|
2
|
+
//#region src/stores/header/types.d.ts
|
|
3
|
+
interface HeaderStateBase {
|
|
4
|
+
element?: React.ReactNode | null;
|
|
5
|
+
title?: string;
|
|
6
|
+
headerHeight: number;
|
|
7
|
+
backAction?: () => void;
|
|
8
|
+
}
|
|
9
|
+
interface HeaderState extends HeaderStateBase {
|
|
10
|
+
setAction(element?: React.ReactNode | null): () => void;
|
|
11
|
+
setTitle(title?: string): () => void;
|
|
12
|
+
removeAction(): void;
|
|
13
|
+
removeTitle(): void;
|
|
14
|
+
setHeaderHeight(headerHeight: number): void;
|
|
15
|
+
setBackAction(action: () => void): void;
|
|
16
|
+
executeBackAction(): void;
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
export { HeaderState };
|
|
20
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../../../../src/stores/header/types.ts"],"mappings":";;UAIU;EACR,UAAU,MAAM;EAChB;EACA;EACA;;UAGe,oBAAoB;EACnC,UAAU,UAAU,MAAM;EAC1B,SAAS;EACT;EACA;EACA,gBAAgB;EAChB,cAAc;EACd"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import "../types.js";
|
|
2
|
+
import { HeaderState } from "./types.js";
|
|
3
|
+
//#region src/stores/header/useHeaderStore.d.ts
|
|
4
|
+
declare function useHeaderStore<T>(selector: (state: HeaderState) => T): T;
|
|
5
|
+
declare function useSetHeaderHeight(): any;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { useHeaderStore, useSetHeaderHeight };
|
|
8
|
+
//# sourceMappingURL=useHeaderStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHeaderStore.d.ts","names":[],"sources":["../../../../src/stores/header/useHeaderStore.tsx"],"mappings":";;;iBA8BgB,eAAe,GAAG,WAAW,OAAO,gBAAgB,IAAI;iBAkBxD"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { FormTypeProps } from "../form/types.js";
|
|
2
|
+
import { StoreApi, UseBoundStore } from "zustand";
|
|
3
|
+
//#region src/stores/inputMode/useInputModeStore.d.ts
|
|
4
|
+
type InputMode = "amount" | "price";
|
|
5
|
+
interface InputModeState {
|
|
6
|
+
inputMode: Record<"from" | "to", InputMode>;
|
|
7
|
+
setInputMode: (formType: FormTypeProps["formType"], mode: InputMode) => void;
|
|
8
|
+
toggleInputMode: (formType: FormTypeProps["formType"]) => void;
|
|
9
|
+
}
|
|
10
|
+
declare const useInputModeStore: UseBoundStore<StoreApi<InputModeState>>;
|
|
11
|
+
//#endregion
|
|
12
|
+
export { useInputModeStore };
|
|
13
|
+
//# sourceMappingURL=useInputModeStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useInputModeStore.d.ts","names":[],"sources":["../../../../src/stores/inputMode/useInputModeStore.ts"],"mappings":";;;KAIK;UAEK;EACR,WAAW,sBAAsB;EACjC,eAAe,UAAU,2BAA2B,MAAM;EAC1D,kBAAkB,UAAU;;cAGjB,mBAAmB,cAAc,SAAS"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNavigationTabsStore.js","names":[],"sources":["../../../../src/stores/navigationTabs/useNavigationTabsStore.tsx"],"sourcesContent":["import {\n createContext,\n type JSX,\n type PropsWithChildren,\n use,\n useMemo,\n useRef,\n} from 'react'\nimport { create } from 'zustand'\nimport { useShallow } from 'zustand/shallow'\nimport {\n useWidgetConfig,\n WidgetContext,\n} from '../../providers/WidgetProvider/WidgetProvider.js'\nimport type {\n NavigationTabKey,\n SplitMode,\n WidgetConfig,\n} from '../../types/widget.js'\nimport type { NavigationTabsState, NavigationTabsStore } from './types.js'\nimport {\n getInitialActiveTab,\n getNavigationTabKeys,\n getTabDefaultUI,\n getTabMode,\n getTabModeOptions,\n getTabRequiredUI,\n getTabSplitMode,\n getTabVariant,\n} from './utils.js'\n\nconst NavigationTabsStoreContext = createContext<NavigationTabsStore | null>(\n null\n)\n\nexport function NavigationTabsStoreProvider({\n children,\n config,\n}: PropsWithChildren<{ config: WidgetConfig }>): JSX.Element {\n const tabs = getNavigationTabKeys(config)\n const initialActiveTab = getInitialActiveTab(config)\n // Recreate (re-seeding tabs + active tab) only when the config-driven inputs\n // change — not on runtime tab clicks, which must be preserved.\n const signature = `${tabs.join(',')}|${initialActiveTab ?? ''}`\n const storeRef = useRef<NavigationTabsStore>(null)\n const signatureRef = useRef(signature)\n let store = storeRef.current\n if (!store || signatureRef.current !== signature) {\n store = createNavigationTabsStore(tabs, initialActiveTab)\n storeRef.current = store\n signatureRef.current = signature\n }\n\n // Override the widget config with the active tab's mode, variant,\n // modeOptions, defaultUI and requiredUI (each falling back to the config), so\n // the rest of the widget reads tab-driven config transparently. No-op when\n // there is no active tab.\n const widgetConfig = useWidgetConfig()\n const activeTab = store((state) => state.activeTab)\n const tabConfig = useMemo(() => {\n if (!activeTab) {\n return widgetConfig\n }\n return {\n ...widgetConfig,\n mode: getTabMode(widgetConfig, activeTab),\n variant: getTabVariant(widgetConfig, activeTab),\n modeOptions: getTabModeOptions(widgetConfig, activeTab),\n defaultUI: getTabDefaultUI(widgetConfig, activeTab),\n requiredUI: getTabRequiredUI(widgetConfig, activeTab),\n }\n }, [widgetConfig, activeTab])\n\n return (\n <NavigationTabsStoreContext value={store}>\n <WidgetContext value={tabConfig}>{children}</WidgetContext>\n </NavigationTabsStoreContext>\n )\n}\n\nfunction useNavigationTabsStoreContext(): NavigationTabsStore {\n const useStore = use(NavigationTabsStoreContext)\n if (!useStore) {\n throw new Error(\n `You forgot to wrap your component in <${NavigationTabsStoreProvider.name}>.`\n )\n }\n return useStore\n}\n\nexport function useNavigationTabsStore<T>(\n selector: (state: NavigationTabsState) => T\n): T {\n const useStore = useNavigationTabsStoreContext()\n return useStore(useShallow(selector))\n}\n\n/** Effective split mode derived from the active tab. */\nexport function useSplitMode(): SplitMode | undefined {\n return useNavigationTabsStore((state) => getTabSplitMode(state.activeTab))\n}\n\nconst createNavigationTabsStore = (\n tabs: NavigationTabKey[],\n initialActiveTab?: NavigationTabKey\n): NavigationTabsStore =>\n create<NavigationTabsState>((set) => ({\n tabs,\n activeTab: initialActiveTab,\n setActiveTab(activeTab) {\n set({ activeTab })\n },\n }))\n"],"mappings":";;;;;;;AA+BA,MAAM,6BAA6B,cACjC,IACF;AAEA,SAAgB,4BAA4B,EAC1C,UACA,UAC2D;CAC3D,MAAM,OAAO,qBAAqB,MAAM;CACxC,MAAM,mBAAmB,oBAAoB,MAAM;CAGnD,MAAM,YAAY,GAAG,KAAK,KAAK,GAAG,EAAE,GAAG,oBAAoB;CAC3D,MAAM,WAAW,OAA4B,IAAI;CACjD,MAAM,eAAe,OAAO,SAAS;CACrC,IAAI,QAAQ,SAAS;CACrB,IAAI,CAAC,SAAS,aAAa,YAAY,WAAW;EAChD,QAAQ,0BAA0B,MAAM,gBAAgB;EACxD,SAAS,UAAU;EACnB,aAAa,UAAU;CACzB;CAMA,MAAM,eAAe,gBAAgB;CACrC,MAAM,YAAY,OAAO,UAAU,MAAM,SAAS;CAClD,MAAM,YAAY,cAAc;EAC9B,IAAI,CAAC,WACH,OAAO;EAET,OAAO;GACL,GAAG;GACH,MAAM,WAAW,cAAc,SAAS;GACxC,SAAS,cAAc,cAAc,SAAS;GAC9C,aAAa,kBAAkB,cAAc,SAAS;GACtD,WAAW,gBAAgB,cAAc,SAAS;GAClD,YAAY,iBAAiB,cAAc,SAAS;EACtD;CACF,GAAG,CAAC,cAAc,SAAS,CAAC;CAE5B,OACE,oBAAC,4BAAD;EAA4B,OAAO;
|
|
1
|
+
{"version":3,"file":"useNavigationTabsStore.js","names":[],"sources":["../../../../src/stores/navigationTabs/useNavigationTabsStore.tsx"],"sourcesContent":["import {\n createContext,\n type JSX,\n type PropsWithChildren,\n use,\n useMemo,\n useRef,\n} from 'react'\nimport { create } from 'zustand'\nimport { useShallow } from 'zustand/shallow'\nimport {\n useWidgetConfig,\n WidgetContext,\n} from '../../providers/WidgetProvider/WidgetProvider.js'\nimport type {\n NavigationTabKey,\n SplitMode,\n WidgetConfig,\n} from '../../types/widget.js'\nimport type { NavigationTabsState, NavigationTabsStore } from './types.js'\nimport {\n getInitialActiveTab,\n getNavigationTabKeys,\n getTabDefaultUI,\n getTabMode,\n getTabModeOptions,\n getTabRequiredUI,\n getTabSplitMode,\n getTabVariant,\n} from './utils.js'\n\nconst NavigationTabsStoreContext = createContext<NavigationTabsStore | null>(\n null\n)\n\nexport function NavigationTabsStoreProvider({\n children,\n config,\n}: PropsWithChildren<{ config: WidgetConfig }>): JSX.Element {\n const tabs = getNavigationTabKeys(config)\n const initialActiveTab = getInitialActiveTab(config)\n // Recreate (re-seeding tabs + active tab) only when the config-driven inputs\n // change — not on runtime tab clicks, which must be preserved.\n const signature = `${tabs.join(',')}|${initialActiveTab ?? ''}`\n const storeRef = useRef<NavigationTabsStore>(null)\n const signatureRef = useRef(signature)\n let store = storeRef.current\n if (!store || signatureRef.current !== signature) {\n store = createNavigationTabsStore(tabs, initialActiveTab)\n storeRef.current = store\n signatureRef.current = signature\n }\n\n // Override the widget config with the active tab's mode, variant,\n // modeOptions, defaultUI and requiredUI (each falling back to the config), so\n // the rest of the widget reads tab-driven config transparently. No-op when\n // there is no active tab.\n const widgetConfig = useWidgetConfig()\n const activeTab = store((state) => state.activeTab)\n const tabConfig = useMemo(() => {\n if (!activeTab) {\n return widgetConfig\n }\n return {\n ...widgetConfig,\n mode: getTabMode(widgetConfig, activeTab),\n variant: getTabVariant(widgetConfig, activeTab),\n modeOptions: getTabModeOptions(widgetConfig, activeTab),\n defaultUI: getTabDefaultUI(widgetConfig, activeTab),\n requiredUI: getTabRequiredUI(widgetConfig, activeTab),\n }\n }, [widgetConfig, activeTab])\n\n return (\n <NavigationTabsStoreContext value={store}>\n <WidgetContext value={tabConfig}>{children}</WidgetContext>\n </NavigationTabsStoreContext>\n )\n}\n\nfunction useNavigationTabsStoreContext(): NavigationTabsStore {\n const useStore = use(NavigationTabsStoreContext)\n if (!useStore) {\n throw new Error(\n `You forgot to wrap your component in <${NavigationTabsStoreProvider.name}>.`\n )\n }\n return useStore\n}\n\nexport function useNavigationTabsStore<T>(\n selector: (state: NavigationTabsState) => T\n): T {\n const useStore = useNavigationTabsStoreContext()\n return useStore(useShallow(selector))\n}\n\n/** Effective split mode derived from the active tab. */\nexport function useSplitMode(): SplitMode | undefined {\n return useNavigationTabsStore((state) => getTabSplitMode(state.activeTab))\n}\n\nconst createNavigationTabsStore = (\n tabs: NavigationTabKey[],\n initialActiveTab?: NavigationTabKey\n): NavigationTabsStore =>\n create<NavigationTabsState>((set) => ({\n tabs,\n activeTab: initialActiveTab,\n setActiveTab(activeTab) {\n set({ activeTab })\n },\n }))\n"],"mappings":";;;;;;;AA+BA,MAAM,6BAA6B,cACjC,IACF;AAEA,SAAgB,4BAA4B,EAC1C,UACA,UAC2D;CAC3D,MAAM,OAAO,qBAAqB,MAAM;CACxC,MAAM,mBAAmB,oBAAoB,MAAM;CAGnD,MAAM,YAAY,GAAG,KAAK,KAAK,GAAG,EAAE,GAAG,oBAAoB;CAC3D,MAAM,WAAW,OAA4B,IAAI;CACjD,MAAM,eAAe,OAAO,SAAS;CACrC,IAAI,QAAQ,SAAS;CACrB,IAAI,CAAC,SAAS,aAAa,YAAY,WAAW;EAChD,QAAQ,0BAA0B,MAAM,gBAAgB;EACxD,SAAS,UAAU;EACnB,aAAa,UAAU;CACzB;CAMA,MAAM,eAAe,gBAAgB;CACrC,MAAM,YAAY,OAAO,UAAU,MAAM,SAAS;CAClD,MAAM,YAAY,cAAc;EAC9B,IAAI,CAAC,WACH,OAAO;EAET,OAAO;GACL,GAAG;GACH,MAAM,WAAW,cAAc,SAAS;GACxC,SAAS,cAAc,cAAc,SAAS;GAC9C,aAAa,kBAAkB,cAAc,SAAS;GACtD,WAAW,gBAAgB,cAAc,SAAS;GAClD,YAAY,iBAAiB,cAAc,SAAS;EACtD;CACF,GAAG,CAAC,cAAc,SAAS,CAAC;CAE5B,OACE,oBAAC,4BAAD;EAA4B,OAAO;EACjC,UAAA,oBAAC,eAAD;GAAe,OAAO;GAAY;EAAwB,CAAA;CAChC,CAAA;AAEhC;AAEA,SAAS,gCAAqD;CAC5D,MAAM,WAAW,IAAI,0BAA0B;CAC/C,IAAI,CAAC,UACH,MAAM,IAAI,MACR,yCAAyC,4BAA4B,KAAK,GAC5E;CAEF,OAAO;AACT;AAEA,SAAgB,uBACd,UACG;CAEH,OADiB,8BACH,CAAC,CAAC,WAAW,QAAQ,CAAC;AACtC;;AAGA,SAAgB,eAAsC;CACpD,OAAO,wBAAwB,UAAU,gBAAgB,MAAM,SAAS,CAAC;AAC3E;AAEA,MAAM,6BACJ,MACA,qBAEA,QAA6B,SAAS;CACpC;CACA,WAAW;CACX,aAAa,WAAW;EACtB,IAAI,EAAE,UAAU,CAAC;CACnB;AACF,EAAE"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { RouteExecutionState } from "./types.js";
|
|
2
|
+
import "../types.js";
|
|
3
|
+
import { JSX } from "react";
|
|
4
|
+
//#region src/stores/routes/RouteExecutionStore.d.ts
|
|
5
|
+
declare function useRouteExecutionStoreContext(): any;
|
|
6
|
+
declare function useRouteExecutionStore<T>(selector: (state: RouteExecutionState) => T): T;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { useRouteExecutionStore, useRouteExecutionStoreContext };
|
|
9
|
+
//# sourceMappingURL=RouteExecutionStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RouteExecutionStore.d.ts","names":[],"sources":["../../../../src/stores/routes/RouteExecutionStore.tsx"],"mappings":";;;;iBA4BgB;iBAUA,uBAAuB,GACrC,WAAW,OAAO,wBAAwB,IACzC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createRouteExecutionStore.js","names":[],"sources":["../../../../src/stores/routes/createRouteExecutionStore.ts"],"sourcesContent":["import type { Route, RouteExtended } from '@lifi/sdk'\nimport type { StoreApi, UseBoundStore } from 'zustand'\nimport { create } from 'zustand'\nimport { persist } from 'zustand/middleware'\nimport { hasEnumFlag } from '../../utils/enum.js'\nimport type { PersistStoreProps } from '../types.js'\nimport type { RouteExecution, RouteExecutionState } from './types.js'\nimport { RouteExecutionStatus } from './types.js'\nimport {\n isRouteDone,\n isRouteFailed,\n isRoutePartiallyDone,\n isRouteRefunded,\n} from './utils.js'\n\nexport const createRouteExecutionStore = ({\n namePrefix,\n}: PersistStoreProps): UseBoundStore<StoreApi<RouteExecutionState>> =>\n create<RouteExecutionState>()(\n persist(\n (set, get) => ({\n routes: {},\n setExecutableRoute: (route: Route, observableRouteIds?: string[]) => {\n if (!get().routes[route.id]) {\n set((state: RouteExecutionState) => {\n const routes = { ...state.routes }\n // clean previous idle routes\n Object.keys(routes)\n .filter(\n (routeId) =>\n !observableRouteIds?.includes(routeId) &&\n hasEnumFlag(\n routes[routeId]!.status,\n RouteExecutionStatus.Idle\n )\n )\n .forEach((routeId) => {\n delete routes[routeId]\n })\n routes[route.id] = {\n route,\n status: RouteExecutionStatus.Idle,\n }\n return {\n routes,\n }\n })\n }\n },\n updateRoute: (route: RouteExtended) => {\n if (get().routes[route.id]) {\n set((state: RouteExecutionState) => {\n const updatedState = {\n routes: {\n ...state.routes,\n [route.id]: { ...state.routes[route.id]!, route },\n },\n }\n const isFailed = isRouteFailed(route)\n if (isFailed) {\n updatedState.routes[route.id]!.status =\n RouteExecutionStatus.Failed\n return updatedState\n }\n const isDone = isRouteDone(route)\n if (isDone) {\n updatedState.routes[route.id]!.status =\n RouteExecutionStatus.Done\n if (isRoutePartiallyDone(route)) {\n updatedState.routes[route.id]!.status |=\n RouteExecutionStatus.Partial\n } else if (isRouteRefunded(route)) {\n updatedState.routes[route.id]!.status |=\n RouteExecutionStatus.Refunded\n }\n return updatedState\n }\n const isLoading = route.steps.some((step) => step.execution)\n if (isLoading) {\n updatedState.routes[route.id]!.status =\n RouteExecutionStatus.Pending\n }\n return updatedState\n })\n }\n },\n deleteRoutes: (type, accountAddresses) =>\n set((state: RouteExecutionState) => {\n const routes = { ...state.routes }\n Object.keys(routes)\n .filter((routeId) => {\n const route = routes[routeId]\n if (\n accountAddresses &&\n !accountAddresses.includes(route?.route.fromAddress ?? '')\n ) {\n return false\n }\n return type === 'completed'\n ? hasEnumFlag(route?.status ?? 0, RouteExecutionStatus.Done)\n : type === 'failed'\n ? hasEnumFlag(\n route?.status ?? 0,\n RouteExecutionStatus.Failed\n )\n : !hasEnumFlag(\n route?.status ?? 0,\n RouteExecutionStatus.Done\n )\n })\n .forEach((routeId) => {\n delete routes[routeId]\n })\n return {\n routes,\n }\n }),\n deleteRoute: (routeId: string) => {\n if (get().routes[routeId]) {\n set((state: RouteExecutionState) => {\n const routes = { ...state.routes }\n delete routes[routeId]\n return {\n routes,\n }\n })\n }\n },\n }),\n {\n name: `${namePrefix || 'li.fi'}-widget-routes`,\n // Bump version on breaking changes to the stored structure.\n version: 4,\n // Clear stored routes on any version mismatch to avoid errors from incompatible data shapes.\n migrate: () => ({ routes: {} }),\n partialize: (state) => ({ routes: state.routes }),\n merge: (persistedState: any, currentState: RouteExecutionState) => {\n const state = {\n ...currentState,\n ...persistedState,\n } as RouteExecutionState\n try {\n // Keep only the most recent 100 routes, evicting the oldest when the\n // limit is exceeded.\n const maxStoredRoutes = 100\n const allRoutes = Object.values(state.routes) as RouteExecution[]\n const storedRoutes = allRoutes\n .sort(\n (a, b) =>\n (b.route.steps[0]?.execution?.startedAt ?? 0) -\n (a.route.steps[0]?.execution?.startedAt ?? 0)\n )\n .slice(0, maxStoredRoutes)\n const keepIds = new Set(storedRoutes.map((r) => r.route.id))\n for (const id of Object.keys(state.routes)) {\n if (!keepIds.has(id)) {\n delete state.routes[id]\n }\n }\n } catch (error) {\n console.error(error)\n }\n return state\n },\n }\n )\n )\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"createRouteExecutionStore.js","names":[],"sources":["../../../../src/stores/routes/createRouteExecutionStore.ts"],"sourcesContent":["import type { Route, RouteExtended } from '@lifi/sdk'\nimport type { StoreApi, UseBoundStore } from 'zustand'\nimport { create } from 'zustand'\nimport { persist } from 'zustand/middleware'\nimport { hasEnumFlag } from '../../utils/enum.js'\nimport type { PersistStoreProps } from '../types.js'\nimport type { RouteExecution, RouteExecutionState } from './types.js'\nimport { RouteExecutionStatus } from './types.js'\nimport {\n isRouteDone,\n isRouteFailed,\n isRoutePartiallyDone,\n isRouteRefunded,\n} from './utils.js'\n\nexport const createRouteExecutionStore = ({\n namePrefix,\n}: PersistStoreProps): UseBoundStore<StoreApi<RouteExecutionState>> =>\n create<RouteExecutionState>()(\n persist(\n (set, get) => ({\n routes: {},\n setExecutableRoute: (route: Route, observableRouteIds?: string[]) => {\n if (!get().routes[route.id]) {\n set((state: RouteExecutionState) => {\n const routes = { ...state.routes }\n // clean previous idle routes\n Object.keys(routes)\n .filter(\n (routeId) =>\n !observableRouteIds?.includes(routeId) &&\n hasEnumFlag(\n routes[routeId]!.status,\n RouteExecutionStatus.Idle\n )\n )\n .forEach((routeId) => {\n delete routes[routeId]\n })\n routes[route.id] = {\n route,\n status: RouteExecutionStatus.Idle,\n }\n return {\n routes,\n }\n })\n }\n },\n updateRoute: (route: RouteExtended) => {\n if (get().routes[route.id]) {\n set((state: RouteExecutionState) => {\n const updatedState = {\n routes: {\n ...state.routes,\n [route.id]: { ...state.routes[route.id]!, route },\n },\n }\n const isFailed = isRouteFailed(route)\n if (isFailed) {\n updatedState.routes[route.id]!.status =\n RouteExecutionStatus.Failed\n return updatedState\n }\n const isDone = isRouteDone(route)\n if (isDone) {\n updatedState.routes[route.id]!.status =\n RouteExecutionStatus.Done\n if (isRoutePartiallyDone(route)) {\n updatedState.routes[route.id]!.status |=\n RouteExecutionStatus.Partial\n } else if (isRouteRefunded(route)) {\n updatedState.routes[route.id]!.status |=\n RouteExecutionStatus.Refunded\n }\n return updatedState\n }\n const isLoading = route.steps.some((step) => step.execution)\n if (isLoading) {\n updatedState.routes[route.id]!.status =\n RouteExecutionStatus.Pending\n }\n return updatedState\n })\n }\n },\n deleteRoutes: (type, accountAddresses) =>\n set((state: RouteExecutionState) => {\n const routes = { ...state.routes }\n Object.keys(routes)\n .filter((routeId) => {\n const route = routes[routeId]\n if (\n accountAddresses &&\n !accountAddresses.includes(route?.route.fromAddress ?? '')\n ) {\n return false\n }\n return type === 'completed'\n ? hasEnumFlag(route?.status ?? 0, RouteExecutionStatus.Done)\n : type === 'failed'\n ? hasEnumFlag(\n route?.status ?? 0,\n RouteExecutionStatus.Failed\n )\n : !hasEnumFlag(\n route?.status ?? 0,\n RouteExecutionStatus.Done\n )\n })\n .forEach((routeId) => {\n delete routes[routeId]\n })\n return {\n routes,\n }\n }),\n deleteRoute: (routeId: string) => {\n if (get().routes[routeId]) {\n set((state: RouteExecutionState) => {\n const routes = { ...state.routes }\n delete routes[routeId]\n return {\n routes,\n }\n })\n }\n },\n }),\n {\n name: `${namePrefix || 'li.fi'}-widget-routes`,\n // Bump version on breaking changes to the stored structure.\n version: 4,\n // Clear stored routes on any version mismatch to avoid errors from incompatible data shapes.\n migrate: () => ({ routes: {} }),\n partialize: (state) => ({ routes: state.routes }),\n merge: (persistedState: any, currentState: RouteExecutionState) => {\n const state = {\n ...currentState,\n ...persistedState,\n } as RouteExecutionState\n try {\n // Keep only the most recent 100 routes, evicting the oldest when the\n // limit is exceeded.\n const maxStoredRoutes = 100\n const allRoutes = Object.values(state.routes) as RouteExecution[]\n const storedRoutes = allRoutes\n .sort(\n (a, b) =>\n (b.route.steps[0]?.execution?.startedAt ?? 0) -\n (a.route.steps[0]?.execution?.startedAt ?? 0)\n )\n .slice(0, maxStoredRoutes)\n const keepIds = new Set(storedRoutes.map((r) => r.route.id))\n for (const id of Object.keys(state.routes)) {\n if (!keepIds.has(id)) {\n delete state.routes[id]\n }\n }\n } catch (error) {\n console.error(error)\n }\n return state\n },\n }\n )\n )\n"],"mappings":"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"}
|