@lifi/widget 4.0.0-beta.14 → 4.0.0-beta.18
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/AppDefault.js +31 -29
- package/dist/esm/AppDefault.js.map +1 -1
- package/dist/esm/AppLayout.js +2 -2
- package/dist/esm/AppLayout.js.map +1 -1
- package/dist/esm/components/AmountInput/AmountInput.js +2 -2
- package/dist/esm/components/AmountInput/AmountInput.js.map +1 -1
- package/dist/esm/components/AmountInput/AmountInputStartAdornment.js.map +1 -1
- package/dist/esm/components/AmountInput/PriceFormHelperText.js.map +1 -1
- package/dist/esm/components/AppContainer.js +3 -3
- package/dist/esm/components/AppContainer.js.map +1 -1
- package/dist/esm/components/ChainSelect/ChainSelect.js.map +1 -1
- package/dist/esm/components/ChainSelect/useChainSelect.js.map +1 -1
- package/dist/esm/components/Chains/AllChainsAvatar.js +7 -1
- package/dist/esm/components/Chains/AllChainsAvatar.js.map +1 -1
- package/dist/esm/components/Chains/SelectChainContent.js.map +1 -1
- package/dist/esm/components/ContractComponent/ItemPrice.js +1 -1
- package/dist/esm/components/ContractComponent/ItemPrice.js.map +1 -1
- package/dist/esm/components/ContractComponent/NFT/NFTBase.js +1 -1
- package/dist/esm/components/ContractComponent/NFT/NFTBase.js.map +1 -1
- package/dist/esm/components/Dialog/Dialog.js.map +1 -1
- package/dist/esm/components/Expansion/Expansion.js +4 -4
- package/dist/esm/components/Expansion/Expansion.js.map +1 -1
- package/dist/esm/components/Header/ActivitiesButton.js +1 -1
- package/dist/esm/components/Header/ActivitiesButton.js.map +1 -1
- package/dist/esm/components/Header/Header.js +2 -2
- package/dist/esm/components/Header/Header.js.map +1 -1
- package/dist/esm/components/Header/NavigationHeader.js +3 -3
- package/dist/esm/components/Header/NavigationHeader.js.map +1 -1
- package/dist/esm/components/Header/WalletHeader.js +3 -3
- package/dist/esm/components/Header/WalletHeader.js.map +1 -1
- package/dist/esm/components/IconCircle/IconCircle.js.map +1 -1
- package/dist/esm/components/IconTypography.js.map +1 -1
- package/dist/esm/components/Messages/AlertMessage.js +1 -1
- package/dist/esm/components/Messages/AlertMessage.js.map +1 -1
- package/dist/esm/components/PageEntered.js +2 -2
- package/dist/esm/components/PageEntered.js.map +1 -1
- package/dist/esm/components/ReverseTokensButton/ReverseTokensButton.js.map +1 -1
- package/dist/esm/components/RouteCard/RouteCard.js +2 -2
- package/dist/esm/components/RouteCard/RouteCard.js.map +1 -1
- package/dist/esm/components/RouteCard/RouteCardEssentials.js +10 -4
- package/dist/esm/components/RouteCard/RouteCardEssentials.js.map +1 -1
- package/dist/esm/components/RouteCard/RouteToken.js +2 -2
- package/dist/esm/components/RouteCard/RouteToken.js.map +1 -1
- package/dist/esm/components/Routes/RoutesExpanded.js +3 -3
- package/dist/esm/components/Routes/RoutesExpanded.js.map +1 -1
- package/dist/esm/components/SelectChainAndToken.js +8 -5
- package/dist/esm/components/SelectChainAndToken.js.map +1 -1
- package/dist/esm/components/SelectTokenButton/SelectTokenButton.style.js +1 -2
- package/dist/esm/components/SelectTokenButton/SelectTokenButton.style.js.map +1 -1
- package/dist/esm/components/SendToWallet/SendToWalletButton.js +4 -4
- package/dist/esm/components/SendToWallet/SendToWalletButton.js.map +1 -1
- package/dist/esm/components/SendToWallet/SendToWalletExpandButton.js +3 -3
- package/dist/esm/components/SendToWallet/SendToWalletExpandButton.js.map +1 -1
- package/dist/esm/components/Skeleton/WidgetSkeleton.js.map +1 -1
- package/dist/esm/components/Step/Step.js +20 -9
- package/dist/esm/components/Step/Step.js.map +1 -1
- package/dist/esm/components/Step/StepActions.js +2 -2
- package/dist/esm/components/Step/StepActions.js.map +1 -1
- package/dist/esm/components/StepActions/StepActions.js +2 -2
- package/dist/esm/components/StepActions/StepActions.js.map +1 -1
- package/dist/esm/components/Tabs/Tabs.style.js.map +1 -1
- package/dist/esm/components/Timer/StepTimer.js.map +1 -1
- package/dist/esm/components/Timer/TimerContent.js +1 -0
- package/dist/esm/components/Timer/TimerContent.js.map +1 -1
- package/dist/esm/components/Token/Token.js +2 -2
- package/dist/esm/components/Token/Token.js.map +1 -1
- package/dist/esm/components/TokenList/TokenDetailsSheetContent.js +6 -4
- package/dist/esm/components/TokenList/TokenDetailsSheetContent.js.map +1 -1
- package/dist/esm/components/TokenList/TokenList.js +2 -2
- 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/VirtualizedTokenList.js.map +1 -1
- package/dist/esm/components/TokenList/useTokenSelect.js +2 -2
- package/dist/esm/components/TokenList/useTokenSelect.js.map +1 -1
- package/dist/esm/components/TransactionCard/ActiveTransactionCard.js +2 -3
- package/dist/esm/components/TransactionCard/ActiveTransactionCard.js.map +1 -1
- package/dist/esm/components/TransactionDetails.js +5 -2
- package/dist/esm/components/TransactionDetails.js.map +1 -1
- package/dist/esm/config/version.d.ts +1 -1
- package/dist/esm/config/version.js +1 -1
- package/dist/esm/config/version.js.map +1 -1
- package/dist/esm/hooks/timer/time.js.map +1 -1
- package/dist/esm/hooks/useAccountsBalancesData.js.map +1 -1
- package/dist/esm/hooks/useActionMessage.js +2 -2
- package/dist/esm/hooks/useActionMessage.js.map +1 -1
- package/dist/esm/hooks/useAddressActivity.js.map +1 -1
- package/dist/esm/hooks/useAddressValidation.js +3 -8
- package/dist/esm/hooks/useAddressValidation.js.map +1 -1
- package/dist/esm/hooks/useAvailableChains.js +2 -1
- package/dist/esm/hooks/useAvailableChains.js.map +1 -1
- package/dist/esm/hooks/useChain.js.map +1 -1
- package/dist/esm/hooks/useChains.js.map +1 -1
- package/dist/esm/hooks/useContactSupport.js +3 -3
- package/dist/esm/hooks/useContactSupport.js.map +1 -1
- package/dist/esm/hooks/useDebouncedWatch.js.map +1 -1
- package/dist/esm/hooks/useExplorer.js +15 -4
- package/dist/esm/hooks/useExplorer.js.map +1 -1
- package/dist/esm/hooks/useFilteredByTokenBalances.js.map +1 -1
- package/dist/esm/hooks/useFromAmountThreshold.js.map +1 -1
- package/dist/esm/hooks/useFromTokenSufficiency.js.map +1 -1
- package/dist/esm/hooks/useGasRecommendation.js +2 -2
- package/dist/esm/hooks/useGasRecommendation.js.map +1 -1
- package/dist/esm/hooks/useGasRefuel.js +2 -2
- package/dist/esm/hooks/useGasRefuel.js.map +1 -1
- package/dist/esm/hooks/useGasSufficiency.js +2 -2
- package/dist/esm/hooks/useGasSufficiency.js.map +1 -1
- package/dist/esm/hooks/useHasChainExpansion.js +3 -3
- package/dist/esm/hooks/useHasChainExpansion.js.map +1 -1
- package/dist/esm/hooks/useIsContractAddress.js.map +1 -1
- package/dist/esm/hooks/useListHeight.js +2 -2
- package/dist/esm/hooks/useListHeight.js.map +1 -1
- package/dist/esm/hooks/useLongPress.js.map +1 -1
- package/dist/esm/hooks/useNavigateBack.js.map +1 -1
- package/dist/esm/hooks/useRouteExecution.js +5 -7
- package/dist/esm/hooks/useRouteExecution.js.map +1 -1
- package/dist/esm/hooks/useRoutes.js +4 -4
- package/dist/esm/hooks/useRoutes.js.map +1 -1
- package/dist/esm/hooks/useScrollableContainer.js.map +1 -1
- package/dist/esm/hooks/useSwapOnly.js.map +1 -1
- package/dist/esm/hooks/useToAddressAutoPopulate.js.map +1 -1
- package/dist/esm/hooks/useToAddressRequirements.js +2 -2
- package/dist/esm/hooks/useToAddressRequirements.js.map +1 -1
- package/dist/esm/hooks/useToAddressReset.js +2 -2
- package/dist/esm/hooks/useToAddressReset.js.map +1 -1
- package/dist/esm/hooks/useTokenBalance.js.map +1 -1
- package/dist/esm/hooks/useTokenBalances.js +2 -2
- package/dist/esm/hooks/useTokenBalances.js.map +1 -1
- package/dist/esm/hooks/useTokenBalancesQueries.js.map +1 -1
- package/dist/esm/hooks/useTokenSearch.js.map +1 -1
- package/dist/esm/hooks/useTokens.js +4 -2
- package/dist/esm/hooks/useTokens.js.map +1 -1
- package/dist/esm/hooks/useTransactionDetails.js.map +1 -1
- package/dist/esm/hooks/useTransactionHistory.js.map +1 -1
- package/dist/esm/hooks/useTransactionList.js +2 -3
- package/dist/esm/hooks/useTransactionList.js.map +1 -1
- package/dist/esm/hooks/useWidgetEvents.js.map +1 -1
- package/dist/esm/i18n/bn.json +3 -0
- package/dist/esm/i18n/de.json +3 -0
- package/dist/esm/i18n/en.json +3 -0
- package/dist/esm/i18n/es.json +3 -0
- package/dist/esm/i18n/fr.json +3 -0
- package/dist/esm/i18n/hi.json +3 -0
- package/dist/esm/i18n/id.json +3 -0
- package/dist/esm/i18n/it.json +3 -0
- package/dist/esm/i18n/ja.json +3 -0
- package/dist/esm/i18n/ko.json +3 -0
- package/dist/esm/i18n/pl.json +3 -0
- package/dist/esm/i18n/pt.json +3 -0
- package/dist/esm/i18n/th.json +3 -0
- package/dist/esm/i18n/tr.json +3 -0
- package/dist/esm/i18n/uk.json +3 -0
- package/dist/esm/i18n/vi.json +3 -0
- package/dist/esm/i18n/zh.json +3 -0
- package/dist/esm/pages/ActivitiesPage/ActivitiesPage.js +1 -2
- package/dist/esm/pages/ActivitiesPage/ActivitiesPage.js.map +1 -1
- package/dist/esm/pages/ActivitiesPage/ActivitiesPageMenuButton.js +1 -1
- package/dist/esm/pages/ActivitiesPage/ActivitiesPageMenuButton.js.map +1 -1
- package/dist/esm/pages/MainPage/MainPage.js +6 -6
- package/dist/esm/pages/MainPage/MainPage.js.map +1 -1
- package/dist/esm/pages/MainPage/ReviewButton.js +2 -2
- package/dist/esm/pages/MainPage/ReviewButton.js.map +1 -1
- package/dist/esm/pages/RoutesPage/RoutesPage.js +3 -3
- package/dist/esm/pages/RoutesPage/RoutesPage.js.map +1 -1
- package/dist/esm/pages/SelectChainPage/SelectChainPage.js.map +1 -1
- package/dist/esm/pages/SelectEnabledToolsPage.js.map +1 -1
- package/dist/esm/pages/SelectTokenPage/SelectTokenPage.js +3 -3
- package/dist/esm/pages/SelectTokenPage/SelectTokenPage.js.map +1 -1
- package/dist/esm/pages/SendToWallet/BookmarksPage.js +1 -1
- package/dist/esm/pages/SendToWallet/BookmarksPage.js.map +1 -1
- package/dist/esm/pages/SendToWallet/RecentWalletsPage.js +1 -1
- package/dist/esm/pages/SendToWallet/RecentWalletsPage.js.map +1 -1
- package/dist/esm/pages/SendToWallet/SendToWalletPage.js +6 -6
- package/dist/esm/pages/SendToWallet/SendToWalletPage.js.map +1 -1
- package/dist/esm/pages/SettingsPage/BridgeAndExchangeSettings.js +2 -2
- package/dist/esm/pages/SettingsPage/BridgeAndExchangeSettings.js.map +1 -1
- package/dist/esm/pages/SettingsPage/LanguageSetting.js +2 -2
- package/dist/esm/pages/SettingsPage/LanguageSetting.js.map +1 -1
- package/dist/esm/pages/SettingsPage/SettingsPage.js +2 -2
- package/dist/esm/pages/SettingsPage/SettingsPage.js.map +1 -1
- package/dist/esm/pages/SettingsPage/SmallBalanceFilterSettings.js.map +1 -1
- package/dist/esm/pages/SettingsPage/ThemeSettings.js +2 -2
- package/dist/esm/pages/SettingsPage/ThemeSettings.js.map +1 -1
- package/dist/esm/pages/TransactionDetailsPage/ContactSupportButton.js.map +1 -1
- package/dist/esm/pages/TransactionDetailsPage/StepActionRow.js +2 -2
- package/dist/esm/pages/TransactionDetailsPage/StepActionRow.js.map +1 -1
- package/dist/esm/pages/TransactionDetailsPage/StepActionsList.js +11 -5
- package/dist/esm/pages/TransactionDetailsPage/StepActionsList.js.map +1 -1
- package/dist/esm/pages/TransactionDetailsPage/TransactionDetailsPage.js.map +1 -1
- package/dist/esm/pages/TransactionDetailsPage/TransferIdCard.js +2 -2
- package/dist/esm/pages/TransactionDetailsPage/TransferIdCard.js.map +1 -1
- package/dist/esm/pages/TransactionPage/ConfirmToAddressSheet.js +2 -2
- package/dist/esm/pages/TransactionPage/ConfirmToAddressSheet.js.map +1 -1
- package/dist/esm/pages/TransactionPage/ExchangeRateBottomSheet.js +1 -1
- package/dist/esm/pages/TransactionPage/ExchangeRateBottomSheet.js.map +1 -1
- package/dist/esm/pages/TransactionPage/StartTransactionButton.js.map +1 -1
- package/dist/esm/pages/TransactionPage/StatusBottomSheet.js +20 -21
- package/dist/esm/pages/TransactionPage/StatusBottomSheet.js.map +1 -1
- package/dist/esm/pages/TransactionPage/StatusBottomSheet.style.js +5 -6
- package/dist/esm/pages/TransactionPage/StatusBottomSheet.style.js.map +1 -1
- package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.js +14 -4
- package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.js.map +1 -1
- package/dist/esm/pages/TransactionPage/TransactionPage.js +15 -19
- package/dist/esm/pages/TransactionPage/TransactionPage.js.map +1 -1
- package/dist/esm/providers/I18nProvider/I18nProvider.js.map +1 -1
- package/dist/esm/providers/I18nProvider/i18n.js.map +1 -1
- package/dist/esm/providers/QueryClientProvider.js.map +1 -1
- package/dist/esm/providers/ThemeProvider/ThemeProvider.js.map +1 -1
- package/dist/esm/providers/WalletProvider/WalletProvider.js.map +1 -1
- package/dist/esm/providers/WalletProvider/useExternalWalletProvider.js +7 -3
- package/dist/esm/providers/WalletProvider/useExternalWalletProvider.js.map +1 -1
- package/dist/esm/providers/WidgetProvider/WidgetProvider.js.map +1 -1
- package/dist/esm/stores/bookmarks/useBookmarkActions.js.map +1 -1
- package/dist/esm/stores/chains/ChainOrderStore.js +2 -2
- package/dist/esm/stores/chains/ChainOrderStore.js.map +1 -1
- package/dist/esm/stores/chains/createChainOrderStore.js +2 -2
- package/dist/esm/stores/chains/createChainOrderStore.js.map +1 -1
- package/dist/esm/stores/chains/useChainOrder.js.map +1 -1
- package/dist/esm/stores/form/URLSearchParamsBuilder.js.map +1 -1
- package/dist/esm/stores/form/createFormStore.js.map +1 -1
- package/dist/esm/stores/form/useFieldActions.js +3 -3
- package/dist/esm/stores/form/useFieldActions.js.map +1 -1
- package/dist/esm/stores/form/useFieldValues.js.map +1 -1
- package/dist/esm/stores/form/useFormRef.js +2 -2
- package/dist/esm/stores/form/useFormRef.js.map +1 -1
- package/dist/esm/stores/form/useTouchedFields.js.map +1 -1
- package/dist/esm/stores/header/useHeaderStore.js.map +1 -1
- package/dist/esm/stores/routes/RouteExecutionStore.js.map +1 -1
- package/dist/esm/stores/routes/createRouteExecutionStore.js +8 -9
- package/dist/esm/stores/routes/createRouteExecutionStore.js.map +1 -1
- package/dist/esm/stores/routes/useRouteExecutionIndicator.js +2 -3
- package/dist/esm/stores/routes/useRouteExecutionIndicator.js.map +1 -1
- package/dist/esm/stores/routes/utils.js.map +1 -1
- package/dist/esm/stores/settings/SettingsStore.js.map +1 -1
- package/dist/esm/stores/settings/createSettingsStore.js +1 -5
- package/dist/esm/stores/settings/createSettingsStore.js.map +1 -1
- package/dist/esm/stores/settings/useSettingsActions.js +2 -2
- package/dist/esm/stores/settings/useSettingsActions.js.map +1 -1
- package/dist/esm/stores/settings/useSplitSubvariantStore.js.map +1 -1
- package/dist/esm/themes/createTheme.js +4 -4
- package/dist/esm/themes/createTheme.js.map +1 -1
- package/dist/esm/types/events.d.ts +0 -5
- package/dist/esm/types/events.d.ts.map +1 -1
- package/dist/esm/types/events.js +0 -4
- package/dist/esm/types/events.js.map +1 -1
- package/dist/esm/types/widget.d.ts +1 -5
- package/dist/esm/types/widget.d.ts.map +1 -1
- package/dist/esm/types/widget.js.map +1 -1
- package/dist/esm/utils/converters.js.map +1 -1
- package/dist/esm/utils/elements.js +5 -12
- package/dist/esm/utils/elements.js.map +1 -1
- package/dist/esm/utils/format.js.map +1 -1
- package/dist/esm/utils/timer.js.map +1 -1
- package/dist/esm/utils/token.js.map +1 -1
- package/package.json +11 -11
- package/src/AppDefault.tsx +9 -11
- package/src/components/Chains/AllChainsAvatar.tsx +7 -1
- package/src/components/ContractComponent/ItemPrice.tsx +1 -1
- package/src/components/ContractComponent/NFT/NFTBase.tsx +1 -1
- package/src/components/Header/ActivitiesButton.tsx +1 -1
- package/src/components/IconTypography.ts +8 -8
- package/src/components/Messages/AlertMessage.tsx +1 -1
- package/src/components/RouteCard/RouteCardEssentials.tsx +2 -2
- package/src/components/SelectChainAndToken.tsx +1 -1
- package/src/components/SendToWallet/SendToWalletButton.tsx +1 -1
- package/src/components/Step/Step.tsx +6 -7
- package/src/components/Timer/TimerContent.tsx +1 -0
- package/src/components/Token/Token.tsx +2 -2
- package/src/components/TokenList/TokenDetailsSheetContent.tsx +6 -4
- package/src/components/TransactionCard/ActiveTransactionCard.tsx +1 -1
- package/src/components/TransactionDetails.tsx +1 -1
- package/src/config/version.ts +1 -1
- package/src/hooks/useActionMessage.ts +4 -3
- package/src/hooks/useAvailableChains.ts +1 -0
- package/src/hooks/useExplorer.ts +16 -5
- package/src/hooks/useRouteExecution.ts +0 -2
- package/src/hooks/useTokens.ts +2 -0
- package/src/pages/ActivitiesPage/ActivitiesPageMenuButton.tsx +1 -1
- package/src/pages/MainPage/MainPage.tsx +3 -3
- package/src/pages/RoutesPage/RoutesPage.tsx +6 -1
- package/src/pages/SendToWallet/BookmarksPage.tsx +1 -1
- package/src/pages/SendToWallet/RecentWalletsPage.tsx +1 -1
- package/src/pages/TransactionDetailsPage/StepActionRow.tsx +3 -2
- package/src/pages/TransactionDetailsPage/StepActionsList.tsx +19 -12
- package/src/pages/TransactionPage/ExchangeRateBottomSheet.tsx +1 -1
- package/src/pages/TransactionPage/StatusBottomSheet.tsx +1 -1
- package/src/pages/TransactionPage/TokenValueBottomSheet.tsx +27 -5
- package/src/pages/TransactionPage/TransactionPage.tsx +2 -9
- package/src/providers/WalletProvider/useExternalWalletProvider.ts +9 -1
- package/src/stores/settings/createSettingsStore.ts +1 -9
- package/src/themes/createTheme.ts +4 -6
- package/src/types/events.ts +0 -5
- package/src/types/widget.ts +1 -4
- package/dist/esm/stores/routes/types.js +0 -14
- package/dist/esm/stores/routes/types.js.map +0 -1
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { hasEnumFlag } from "../utils/enum.js";
|
|
2
|
-
import { RouteExecutionStatus } from "../stores/routes/types.js";
|
|
3
2
|
import { getSourceTxHash } from "../stores/routes/utils.js";
|
|
4
3
|
import { useRouteExecutionStore } from "../stores/routes/RouteExecutionStore.js";
|
|
5
4
|
import { useTransactionHistory } from "./useTransactionHistory.js";
|
|
@@ -21,12 +20,12 @@ const useTransactionList = () => {
|
|
|
21
20
|
if (!accountAddresses.includes(r.route.fromAddress)) continue;
|
|
22
21
|
if (apiTxHashes.has(getSourceTxHash(r.route))) continue;
|
|
23
22
|
const startedAt = r.route.steps[0]?.execution?.startedAt ?? 0;
|
|
24
|
-
if (r.status ===
|
|
23
|
+
if (r.status === 2 || r.status === 8) activeItems.push({
|
|
25
24
|
type: "active",
|
|
26
25
|
routeId: r.route.id,
|
|
27
26
|
startedAt
|
|
28
27
|
});
|
|
29
|
-
else if (hasEnumFlag(r.status,
|
|
28
|
+
else if (hasEnumFlag(r.status, 4)) localItems.push({
|
|
30
29
|
type: "local",
|
|
31
30
|
routeExecution: r,
|
|
32
31
|
txHash: getSourceTxHash(r.route) ?? "",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTransactionList.js","names":[],"sources":["../../../src/hooks/useTransactionList.ts"],"sourcesContent":["import { useAccount } from '@lifi/wallet-management'\nimport { useMemo } from 'react'\nimport type {\n ActiveItem,\n HistoryItem,\n LocalItem,\n TransactionListItem,\n} from '../pages/ActivitiesPage/types.js'\nimport { useRouteExecutionStore } from '../stores/routes/RouteExecutionStore.js'\nimport type {\n RouteExecution,\n RouteExecutionState,\n} from '../stores/routes/types.js'\nimport { RouteExecutionStatus } from '../stores/routes/types.js'\nimport { getSourceTxHash } from '../stores/routes/utils.js'\nimport { hasEnumFlag } from '../utils/enum.js'\nimport { useTransactionHistory } from './useTransactionHistory.js'\n\nconst routesSelector = (state: RouteExecutionState) => state.routes\n\nexport const useTransactionList = (): {\n items: TransactionListItem[]\n isLoading: boolean\n} => {\n const { accounts } = useAccount()\n const accountAddresses = useMemo(\n () => accounts.map((account) => account.address),\n [accounts]\n )\n\n const { data: apiRouteExecutions, isLoading } = useTransactionHistory()\n const routes = useRouteExecutionStore(routesSelector)\n\n const items = useMemo<TransactionListItem[]>(() => {\n const apiTxHashes = new Set(\n apiRouteExecutions.map((r) => getSourceTxHash(r.route))\n )\n\n const activeItems: ActiveItem[] = []\n const localItems: LocalItem[] = []\n\n for (const r of Object.values(routes) as RouteExecution[]) {\n if (!accountAddresses.includes(r.route.fromAddress)) {\n continue\n }\n // Guard against duplicates on the render before the store deletion\n // from useTransactionHistory's combine propagates.\n if (apiTxHashes.has(getSourceTxHash(r.route))) {\n continue\n }\n const startedAt = r.route.steps[0]?.execution?.startedAt ?? 0\n if (\n r.status === RouteExecutionStatus.Pending ||\n r.status === RouteExecutionStatus.Failed\n ) {\n activeItems.push({ type: 'active', routeId: r.route.id, startedAt })\n } else if (hasEnumFlag(r.status, RouteExecutionStatus.Done)) {\n localItems.push({\n type: 'local',\n routeExecution: r,\n txHash: getSourceTxHash(r.route) ?? '',\n // store startedAt is already in ms\n startedAt,\n })\n }\n }\n\n const historyItems: HistoryItem[] = apiRouteExecutions.map(\n (routeExecution) => ({\n type: 'history',\n routeExecution,\n txHash: getSourceTxHash(routeExecution.route) ?? '',\n startedAt: routeExecution.route.steps[0]?.execution?.startedAt ?? 0,\n })\n )\n\n return [...activeItems, ...localItems, ...historyItems].sort(\n (a, b) => b.startedAt - a.startedAt\n )\n }, [accountAddresses, apiRouteExecutions, routes])\n\n return { items, isLoading }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useTransactionList.js","names":[],"sources":["../../../src/hooks/useTransactionList.ts"],"sourcesContent":["import { useAccount } from '@lifi/wallet-management'\nimport { useMemo } from 'react'\nimport type {\n ActiveItem,\n HistoryItem,\n LocalItem,\n TransactionListItem,\n} from '../pages/ActivitiesPage/types.js'\nimport { useRouteExecutionStore } from '../stores/routes/RouteExecutionStore.js'\nimport type {\n RouteExecution,\n RouteExecutionState,\n} from '../stores/routes/types.js'\nimport { RouteExecutionStatus } from '../stores/routes/types.js'\nimport { getSourceTxHash } from '../stores/routes/utils.js'\nimport { hasEnumFlag } from '../utils/enum.js'\nimport { useTransactionHistory } from './useTransactionHistory.js'\n\nconst routesSelector = (state: RouteExecutionState) => state.routes\n\nexport const useTransactionList = (): {\n items: TransactionListItem[]\n isLoading: boolean\n} => {\n const { accounts } = useAccount()\n const accountAddresses = useMemo(\n () => accounts.map((account) => account.address),\n [accounts]\n )\n\n const { data: apiRouteExecutions, isLoading } = useTransactionHistory()\n const routes = useRouteExecutionStore(routesSelector)\n\n const items = useMemo<TransactionListItem[]>(() => {\n const apiTxHashes = new Set(\n apiRouteExecutions.map((r) => getSourceTxHash(r.route))\n )\n\n const activeItems: ActiveItem[] = []\n const localItems: LocalItem[] = []\n\n for (const r of Object.values(routes) as RouteExecution[]) {\n if (!accountAddresses.includes(r.route.fromAddress)) {\n continue\n }\n // Guard against duplicates on the render before the store deletion\n // from useTransactionHistory's combine propagates.\n if (apiTxHashes.has(getSourceTxHash(r.route))) {\n continue\n }\n const startedAt = r.route.steps[0]?.execution?.startedAt ?? 0\n if (\n r.status === RouteExecutionStatus.Pending ||\n r.status === RouteExecutionStatus.Failed\n ) {\n activeItems.push({ type: 'active', routeId: r.route.id, startedAt })\n } else if (hasEnumFlag(r.status, RouteExecutionStatus.Done)) {\n localItems.push({\n type: 'local',\n routeExecution: r,\n txHash: getSourceTxHash(r.route) ?? '',\n // store startedAt is already in ms\n startedAt,\n })\n }\n }\n\n const historyItems: HistoryItem[] = apiRouteExecutions.map(\n (routeExecution) => ({\n type: 'history',\n routeExecution,\n txHash: getSourceTxHash(routeExecution.route) ?? '',\n startedAt: routeExecution.route.steps[0]?.execution?.startedAt ?? 0,\n })\n )\n\n return [...activeItems, ...localItems, ...historyItems].sort(\n (a, b) => b.startedAt - a.startedAt\n )\n }, [accountAddresses, apiRouteExecutions, routes])\n\n return { items, isLoading }\n}\n"],"mappings":";;;;;;;AAkBA,MAAM,kBAAkB,UAA+B,MAAM;AAE7D,MAAa,2BAGR;CACH,MAAM,EAAE,aAAa,YAAY;CACjC,MAAM,mBAAmB,cACjB,SAAS,KAAK,YAAY,QAAQ,QAAQ,EAChD,CAAC,SAAS,CACX;CAED,MAAM,EAAE,MAAM,oBAAoB,cAAc,uBAAuB;CACvE,MAAM,SAAS,uBAAuB,eAAe;AAkDrD,QAAO;EAAE,OAhDK,cAAqC;GACjD,MAAM,cAAc,IAAI,IACtB,mBAAmB,KAAK,MAAM,gBAAgB,EAAE,MAAM,CAAC,CACxD;GAED,MAAM,cAA4B,EAAE;GACpC,MAAM,aAA0B,EAAE;AAElC,QAAK,MAAM,KAAK,OAAO,OAAO,OAAO,EAAsB;AACzD,QAAI,CAAC,iBAAiB,SAAS,EAAE,MAAM,YAAY,CACjD;AAIF,QAAI,YAAY,IAAI,gBAAgB,EAAE,MAAM,CAAC,CAC3C;IAEF,MAAM,YAAY,EAAE,MAAM,MAAM,IAAI,WAAW,aAAa;AAC5D,QACE,EAAE,WAAA,KACF,EAAE,WAAA,EAEF,aAAY,KAAK;KAAE,MAAM;KAAU,SAAS,EAAE,MAAM;KAAI;KAAW,CAAC;aAC3D,YAAY,EAAE,QAAA,EAAkC,CACzD,YAAW,KAAK;KACd,MAAM;KACN,gBAAgB;KAChB,QAAQ,gBAAgB,EAAE,MAAM,IAAI;KAEpC;KACD,CAAC;;GAIN,MAAM,eAA8B,mBAAmB,KACpD,oBAAoB;IACnB,MAAM;IACN;IACA,QAAQ,gBAAgB,eAAe,MAAM,IAAI;IACjD,WAAW,eAAe,MAAM,MAAM,IAAI,WAAW,aAAa;IACnE,EACF;AAED,UAAO;IAAC,GAAG;IAAa,GAAG;IAAY,GAAG;IAAa,CAAC,MACrD,GAAG,MAAM,EAAE,YAAY,EAAE,UAC3B;KACA;GAAC;GAAkB;GAAoB;GAAO,CAEnC;EAAE;EAAW"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWidgetEvents.js","names":[],"sources":["../../../src/hooks/useWidgetEvents.ts"],"sourcesContent":["import _mitt, { type Emitter, type EventHandlerMap, type EventType } from 'mitt'\nimport type { WidgetEvents } from '../types/events.js'\n\n// https://github.com/developit/mitt/issues/191\nconst mitt = _mitt as unknown as <Events extends Record<EventType, unknown>>(\n all?: EventHandlerMap<Events>\n) => Emitter<Events>\n\nexport const widgetEvents: Emitter<WidgetEvents> = mitt<WidgetEvents>()\n\nexport const useWidgetEvents = (): Emitter<WidgetEvents> => {\n return widgetEvents\n}\n"],"mappings":";AAQA,MAAa,
|
|
1
|
+
{"version":3,"file":"useWidgetEvents.js","names":[],"sources":["../../../src/hooks/useWidgetEvents.ts"],"sourcesContent":["import _mitt, { type Emitter, type EventHandlerMap, type EventType } from 'mitt'\nimport type { WidgetEvents } from '../types/events.js'\n\n// https://github.com/developit/mitt/issues/191\nconst mitt = _mitt as unknown as <Events extends Record<EventType, unknown>>(\n all?: EventHandlerMap<Events>\n) => Emitter<Events>\n\nexport const widgetEvents: Emitter<WidgetEvents> = mitt<WidgetEvents>()\n\nexport const useWidgetEvents = (): Emitter<WidgetEvents> => {\n return widgetEvents\n}\n"],"mappings":";AAQA,MAAa,eAAsC,OAAoB;AAEvE,MAAa,wBAA+C;AAC1D,QAAO"}
|
package/dist/esm/i18n/bn.json
CHANGED
package/dist/esm/i18n/de.json
CHANGED
package/dist/esm/i18n/en.json
CHANGED
|
@@ -132,6 +132,9 @@
|
|
|
132
132
|
"slippageOutsideRecommendedLimits": "High slippage tolerance may result in unfavorable trade caused by front-running.",
|
|
133
133
|
"slippageUnderRecommendedLimits": "Low slippage tolerance may cause transaction delays or failures."
|
|
134
134
|
},
|
|
135
|
+
"checkbox": {
|
|
136
|
+
"highValueLoss": "I accept the high value loss"
|
|
137
|
+
},
|
|
135
138
|
"title": {
|
|
136
139
|
"clearFailedTransactions": "Clear all failed transactions?",
|
|
137
140
|
"highValueLoss": "High value loss",
|
package/dist/esm/i18n/es.json
CHANGED
|
@@ -132,6 +132,9 @@
|
|
|
132
132
|
"slippageOutsideRecommendedLimits": "La tolerancia de los deslizamientos altos puede resultar en un comercio desfavorable causado por front-running.",
|
|
133
133
|
"slippageUnderRecommendedLimits": "Elegir una baja tolerancia en el deslizamiento del intercambio puede causar retrasos o fallos en las transacciones."
|
|
134
134
|
},
|
|
135
|
+
"checkbox": {
|
|
136
|
+
"highValueLoss": ""
|
|
137
|
+
},
|
|
135
138
|
"title": {
|
|
136
139
|
"clearFailedTransactions": "",
|
|
137
140
|
"highValueLoss": "Pérdida de alto valor",
|
package/dist/esm/i18n/fr.json
CHANGED
|
@@ -132,6 +132,9 @@
|
|
|
132
132
|
"slippageOutsideRecommendedLimits": "Une tolérance élevée au glissement peut entraîner un échange défavorable causé par le front-running.",
|
|
133
133
|
"slippageUnderRecommendedLimits": ""
|
|
134
134
|
},
|
|
135
|
+
"checkbox": {
|
|
136
|
+
"highValueLoss": ""
|
|
137
|
+
},
|
|
135
138
|
"title": {
|
|
136
139
|
"clearFailedTransactions": "",
|
|
137
140
|
"highValueLoss": "Perte de valeur élevée",
|
package/dist/esm/i18n/hi.json
CHANGED
package/dist/esm/i18n/id.json
CHANGED
|
@@ -132,6 +132,9 @@
|
|
|
132
132
|
"slippageOutsideRecommendedLimits": "Toleransi selip yang tinggi dapat mengakibatkan perdagangan yang tidak menguntungkan yang disebabkan oleh front-running.",
|
|
133
133
|
"slippageUnderRecommendedLimits": "Toleransi terhadap slipage yang rendah dapat mengakibatkan keterlambatan atau kegagalan transaksi."
|
|
134
134
|
},
|
|
135
|
+
"checkbox": {
|
|
136
|
+
"highValueLoss": ""
|
|
137
|
+
},
|
|
135
138
|
"title": {
|
|
136
139
|
"clearFailedTransactions": "",
|
|
137
140
|
"highValueLoss": "Kehilangan nilai tinggi",
|
package/dist/esm/i18n/it.json
CHANGED
package/dist/esm/i18n/ja.json
CHANGED
|
@@ -132,6 +132,9 @@
|
|
|
132
132
|
"slippageOutsideRecommendedLimits": "スリッページ許容度が高すぎると、フロントランニングによる不利なトレードをひき起こす可能性があります。",
|
|
133
133
|
"slippageUnderRecommendedLimits": ""
|
|
134
134
|
},
|
|
135
|
+
"checkbox": {
|
|
136
|
+
"highValueLoss": ""
|
|
137
|
+
},
|
|
135
138
|
"title": {
|
|
136
139
|
"clearFailedTransactions": "",
|
|
137
140
|
"highValueLoss": "高価値損失",
|
package/dist/esm/i18n/ko.json
CHANGED
package/dist/esm/i18n/pl.json
CHANGED
package/dist/esm/i18n/pt.json
CHANGED
|
@@ -132,6 +132,9 @@
|
|
|
132
132
|
"slippageOutsideRecommendedLimits": "Alta tolerância na derrapagem pode resultar em negociação desfavorável causada pelo front-running.",
|
|
133
133
|
"slippageUnderRecommendedLimits": "Baixa tolerância à diferença na cotação pode causar atrasos e falhas na transação."
|
|
134
134
|
},
|
|
135
|
+
"checkbox": {
|
|
136
|
+
"highValueLoss": ""
|
|
137
|
+
},
|
|
135
138
|
"title": {
|
|
136
139
|
"clearFailedTransactions": "",
|
|
137
140
|
"highValueLoss": "Alta perda de valor",
|
package/dist/esm/i18n/th.json
CHANGED
|
@@ -132,6 +132,9 @@
|
|
|
132
132
|
"slippageOutsideRecommendedLimits": "การยอมรับความผิดปกติในการสลิปเพจสูงอาจส่งผลให้เกิดการซื้อขายที่ไม่คุ้มค่า ซึ่งเกิดจากการดำเนินการขายก่อน",
|
|
133
133
|
"slippageUnderRecommendedLimits": ""
|
|
134
134
|
},
|
|
135
|
+
"checkbox": {
|
|
136
|
+
"highValueLoss": ""
|
|
137
|
+
},
|
|
135
138
|
"title": {
|
|
136
139
|
"clearFailedTransactions": "",
|
|
137
140
|
"highValueLoss": "สูญเสียมูลค่าสูง",
|
package/dist/esm/i18n/tr.json
CHANGED
|
@@ -132,6 +132,9 @@
|
|
|
132
132
|
"slippageOutsideRecommendedLimits": "Yüksek slipaj, ani fiyat hareketleri nedeniyle zarara yol açabilir.",
|
|
133
133
|
"slippageUnderRecommendedLimits": "Düşük kayma toleransı işlem gecikmelerine veya hatalarına neden olabilir."
|
|
134
134
|
},
|
|
135
|
+
"checkbox": {
|
|
136
|
+
"highValueLoss": ""
|
|
137
|
+
},
|
|
135
138
|
"title": {
|
|
136
139
|
"clearFailedTransactions": "",
|
|
137
140
|
"highValueLoss": "Yüksek değer kaybı",
|
package/dist/esm/i18n/uk.json
CHANGED
|
@@ -132,6 +132,9 @@
|
|
|
132
132
|
"slippageOutsideRecommendedLimits": "Високий допуск до прослизання може призвести до несприятливої торгівлі через фронт-біг.",
|
|
133
133
|
"slippageUnderRecommendedLimits": "Низький допуск до прослизання може призвести до затримок або невдачі транзакції."
|
|
134
134
|
},
|
|
135
|
+
"checkbox": {
|
|
136
|
+
"highValueLoss": ""
|
|
137
|
+
},
|
|
135
138
|
"title": {
|
|
136
139
|
"clearFailedTransactions": "",
|
|
137
140
|
"highValueLoss": "Висока втрата вартості",
|
package/dist/esm/i18n/vi.json
CHANGED
|
@@ -132,6 +132,9 @@
|
|
|
132
132
|
"slippageOutsideRecommendedLimits": "Khả năng trượt giá cao có thể dẫn đến giao dịch không thành công do front-running.",
|
|
133
133
|
"slippageUnderRecommendedLimits": ""
|
|
134
134
|
},
|
|
135
|
+
"checkbox": {
|
|
136
|
+
"highValueLoss": ""
|
|
137
|
+
},
|
|
135
138
|
"title": {
|
|
136
139
|
"clearFailedTransactions": "",
|
|
137
140
|
"highValueLoss": "Tổn thất lớn",
|
package/dist/esm/i18n/zh.json
CHANGED
|
@@ -132,6 +132,9 @@
|
|
|
132
132
|
"slippageOutsideRecommendedLimits": "过高的滑点可能会导致交易被抢跑,造成财产损失",
|
|
133
133
|
"slippageUnderRecommendedLimits": "低幻灯片宽度可能会导致交易延迟或失败。"
|
|
134
134
|
},
|
|
135
|
+
"checkbox": {
|
|
136
|
+
"highValueLoss": ""
|
|
137
|
+
},
|
|
135
138
|
"title": {
|
|
136
139
|
"clearFailedTransactions": "",
|
|
137
140
|
"highValueLoss": "大额资金损失",
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { PageContainer } from "../../components/PageContainer.js";
|
|
2
|
-
import { RouteExecutionStatus } from "../../stores/routes/types.js";
|
|
3
2
|
import { useRouteExecutionStore } from "../../stores/routes/RouteExecutionStore.js";
|
|
4
3
|
import { TransactionCardSkeleton } from "../../components/TransactionCard/TransactionCardSkeleton.js";
|
|
5
4
|
import { useHeader } from "../../hooks/useHeader.js";
|
|
@@ -23,7 +22,7 @@ const ActivitiesPage = () => {
|
|
|
23
22
|
const { t } = useTranslation();
|
|
24
23
|
const { accounts } = useAccount();
|
|
25
24
|
const accountAddresses = useMemo(() => accounts.map((account) => account.address), [accounts]);
|
|
26
|
-
const hasFailedItems = useRouteExecutionStore(useCallback((state) => Object.values(state.routes).some((r) => r?.status ===
|
|
25
|
+
const hasFailedItems = useRouteExecutionStore(useCallback((state) => Object.values(state.routes).some((r) => r?.status === 8 && accountAddresses.includes(r.route.fromAddress)), [accountAddresses]));
|
|
27
26
|
useHeader(t("header.activities"), hasFailedItems ? /* @__PURE__ */ jsx(ActivitiesPageMenuButton, {}) : null);
|
|
28
27
|
const { listHeight } = useListHeight({ listParentRef: parentRef });
|
|
29
28
|
const hasStoreItems = items.length > 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActivitiesPage.js","names":[],"sources":["../../../../src/pages/ActivitiesPage/ActivitiesPage.tsx"],"sourcesContent":["import { useAccount } from '@lifi/wallet-management'\nimport { Box, List } from '@mui/material'\nimport { useVirtualizer } from '@tanstack/react-virtual'\nimport { type JSX, useCallback, useMemo, useRef } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { PageContainer } from '../../components/PageContainer.js'\nimport { TransactionCardSkeleton } from '../../components/TransactionCard/TransactionCardSkeleton.js'\nimport { useHeader } from '../../hooks/useHeader.js'\nimport { useListHeight } from '../../hooks/useListHeight.js'\nimport { useTransactionList } from '../../hooks/useTransactionList.js'\nimport { useRouteExecutionStore } from '../../stores/routes/RouteExecutionStore.js'\nimport { RouteExecutionStatus } from '../../stores/routes/types.js'\nimport { ActiveTransactionItem } from './ActiveTransactionItem.js'\nimport { ActivitiesPageMenuButton } from './ActivitiesPageMenuButton.js'\nimport { TransactionHistoryEmpty } from './TransactionHistoryEmpty.js'\nimport { TransactionHistoryItem } from './TransactionHistoryItem.js'\n\nconst SKELETON_COUNT = 3\n\nexport const ActivitiesPage = (): JSX.Element => {\n // Parent ref and useVirtualizer should be in one file to avoid blank page (0 virtual items) issue\n const parentRef = useRef<HTMLDivElement | null>(null)\n const { items, isLoading } = useTransactionList()\n const { t } = useTranslation()\n const { accounts } = useAccount()\n const accountAddresses = useMemo(\n () => accounts.map((account) => account.address),\n [accounts]\n )\n const hasFailedItems = useRouteExecutionStore(\n useCallback(\n (state) =>\n Object.values(state.routes).some(\n (r) =>\n r?.status === RouteExecutionStatus.Failed &&\n accountAddresses.includes(r.route.fromAddress)\n ),\n [accountAddresses]\n )\n )\n\n useHeader(\n t('header.activities'),\n hasFailedItems ? <ActivitiesPageMenuButton /> : null\n )\n\n const { listHeight } = useListHeight({\n listParentRef: parentRef,\n })\n\n const hasStoreItems = items.length > 0\n const skeletonCount = isLoading && hasStoreItems ? SKELETON_COUNT : 0\n const totalCount = items.length + skeletonCount\n\n const getItemKey = useCallback(\n (index: number) => {\n if (index >= items.length) {\n return `skeleton-${index}`\n }\n const item = items[index]\n if (item.type === 'active') {\n return `active-${item.routeId}`\n }\n return `${item.type}-${item.txHash || item.routeExecution.route.id}`\n },\n [items]\n )\n\n const { getVirtualItems, getTotalSize, measureElement } = useVirtualizer({\n count: hasStoreItems ? totalCount : 0,\n overscan: 3,\n paddingEnd: 12,\n getScrollElement: () => parentRef.current,\n estimateSize: (index) => (items[index]?.type === 'active' ? 218 : 196),\n getItemKey,\n })\n\n if (!items.length && !isLoading) {\n return <TransactionHistoryEmpty />\n }\n\n return (\n <PageContainer disableGutters style={{ minHeight: 544 }}>\n <Box\n ref={parentRef}\n style={{ height: listHeight }}\n sx={{ overflow: 'auto', paddingX: 3 }}\n >\n {isLoading && !hasStoreItems ? (\n <List\n disablePadding\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n marginBottom: 2,\n }}\n >\n {Array.from({ length: SKELETON_COUNT }).map((_, index) => (\n <TransactionCardSkeleton key={index} />\n ))}\n </List>\n ) : (\n <List\n className=\"long-list\"\n style={{ height: getTotalSize(), position: 'relative' }}\n disablePadding\n >\n {getVirtualItems().map((item) => {\n const listItem =\n item.index < items.length ? items[item.index] : null\n return (\n <li\n key={item.key}\n ref={measureElement}\n data-index={item.index}\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n paddingBottom: 16,\n transform: `translateY(${item.start}px)`,\n listStyle: 'none',\n }}\n >\n {!listItem ? (\n <TransactionCardSkeleton />\n ) : listItem.type === 'active' ? (\n <ActiveTransactionItem routeId={listItem.routeId} />\n ) : (\n <TransactionHistoryItem\n route={listItem.routeExecution.route}\n type={listItem.type}\n transactionHash={listItem.txHash}\n startedAt={listItem.startedAt}\n />\n )}\n </li>\n )\n })}\n </List>\n )}\n </Box>\n </PageContainer>\n )\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ActivitiesPage.js","names":[],"sources":["../../../../src/pages/ActivitiesPage/ActivitiesPage.tsx"],"sourcesContent":["import { useAccount } from '@lifi/wallet-management'\nimport { Box, List } from '@mui/material'\nimport { useVirtualizer } from '@tanstack/react-virtual'\nimport { type JSX, useCallback, useMemo, useRef } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { PageContainer } from '../../components/PageContainer.js'\nimport { TransactionCardSkeleton } from '../../components/TransactionCard/TransactionCardSkeleton.js'\nimport { useHeader } from '../../hooks/useHeader.js'\nimport { useListHeight } from '../../hooks/useListHeight.js'\nimport { useTransactionList } from '../../hooks/useTransactionList.js'\nimport { useRouteExecutionStore } from '../../stores/routes/RouteExecutionStore.js'\nimport { RouteExecutionStatus } from '../../stores/routes/types.js'\nimport { ActiveTransactionItem } from './ActiveTransactionItem.js'\nimport { ActivitiesPageMenuButton } from './ActivitiesPageMenuButton.js'\nimport { TransactionHistoryEmpty } from './TransactionHistoryEmpty.js'\nimport { TransactionHistoryItem } from './TransactionHistoryItem.js'\n\nconst SKELETON_COUNT = 3\n\nexport const ActivitiesPage = (): JSX.Element => {\n // Parent ref and useVirtualizer should be in one file to avoid blank page (0 virtual items) issue\n const parentRef = useRef<HTMLDivElement | null>(null)\n const { items, isLoading } = useTransactionList()\n const { t } = useTranslation()\n const { accounts } = useAccount()\n const accountAddresses = useMemo(\n () => accounts.map((account) => account.address),\n [accounts]\n )\n const hasFailedItems = useRouteExecutionStore(\n useCallback(\n (state) =>\n Object.values(state.routes).some(\n (r) =>\n r?.status === RouteExecutionStatus.Failed &&\n accountAddresses.includes(r.route.fromAddress)\n ),\n [accountAddresses]\n )\n )\n\n useHeader(\n t('header.activities'),\n hasFailedItems ? <ActivitiesPageMenuButton /> : null\n )\n\n const { listHeight } = useListHeight({\n listParentRef: parentRef,\n })\n\n const hasStoreItems = items.length > 0\n const skeletonCount = isLoading && hasStoreItems ? SKELETON_COUNT : 0\n const totalCount = items.length + skeletonCount\n\n const getItemKey = useCallback(\n (index: number) => {\n if (index >= items.length) {\n return `skeleton-${index}`\n }\n const item = items[index]\n if (item.type === 'active') {\n return `active-${item.routeId}`\n }\n return `${item.type}-${item.txHash || item.routeExecution.route.id}`\n },\n [items]\n )\n\n const { getVirtualItems, getTotalSize, measureElement } = useVirtualizer({\n count: hasStoreItems ? totalCount : 0,\n overscan: 3,\n paddingEnd: 12,\n getScrollElement: () => parentRef.current,\n estimateSize: (index) => (items[index]?.type === 'active' ? 218 : 196),\n getItemKey,\n })\n\n if (!items.length && !isLoading) {\n return <TransactionHistoryEmpty />\n }\n\n return (\n <PageContainer disableGutters style={{ minHeight: 544 }}>\n <Box\n ref={parentRef}\n style={{ height: listHeight }}\n sx={{ overflow: 'auto', paddingX: 3 }}\n >\n {isLoading && !hasStoreItems ? (\n <List\n disablePadding\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n marginBottom: 2,\n }}\n >\n {Array.from({ length: SKELETON_COUNT }).map((_, index) => (\n <TransactionCardSkeleton key={index} />\n ))}\n </List>\n ) : (\n <List\n className=\"long-list\"\n style={{ height: getTotalSize(), position: 'relative' }}\n disablePadding\n >\n {getVirtualItems().map((item) => {\n const listItem =\n item.index < items.length ? items[item.index] : null\n return (\n <li\n key={item.key}\n ref={measureElement}\n data-index={item.index}\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n paddingBottom: 16,\n transform: `translateY(${item.start}px)`,\n listStyle: 'none',\n }}\n >\n {!listItem ? (\n <TransactionCardSkeleton />\n ) : listItem.type === 'active' ? (\n <ActiveTransactionItem routeId={listItem.routeId} />\n ) : (\n <TransactionHistoryItem\n route={listItem.routeExecution.route}\n type={listItem.type}\n transactionHash={listItem.txHash}\n startedAt={listItem.startedAt}\n />\n )}\n </li>\n )\n })}\n </List>\n )}\n </Box>\n </PageContainer>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAiBA,MAAM,iBAAiB;AAEvB,MAAa,uBAAoC;CAE/C,MAAM,YAAY,OAA8B,KAAK;CACrD,MAAM,EAAE,OAAO,cAAc,oBAAoB;CACjD,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,EAAE,aAAa,YAAY;CACjC,MAAM,mBAAmB,cACjB,SAAS,KAAK,YAAY,QAAQ,QAAQ,EAChD,CAAC,SAAS,CACX;CACD,MAAM,iBAAiB,uBACrB,aACG,UACC,OAAO,OAAO,MAAM,OAAO,CAAC,MACzB,MACC,GAAG,WAAA,KACH,iBAAiB,SAAS,EAAE,MAAM,YAAY,CACjD,EACH,CAAC,iBAAiB,CACnB,CACF;AAED,WACE,EAAE,oBAAoB,EACtB,iBAAiB,oBAAC,0BAAD,EAA4B,CAAA,GAAG,KACjD;CAED,MAAM,EAAE,eAAe,cAAc,EACnC,eAAe,WAChB,CAAC;CAEF,MAAM,gBAAgB,MAAM,SAAS;CACrC,MAAM,gBAAgB,aAAa,gBAAgB,iBAAiB;CACpE,MAAM,aAAa,MAAM,SAAS;CAElC,MAAM,aAAa,aAChB,UAAkB;AACjB,MAAI,SAAS,MAAM,OACjB,QAAO,YAAY;EAErB,MAAM,OAAO,MAAM;AACnB,MAAI,KAAK,SAAS,SAChB,QAAO,UAAU,KAAK;AAExB,SAAO,GAAG,KAAK,KAAK,GAAG,KAAK,UAAU,KAAK,eAAe,MAAM;IAElE,CAAC,MAAM,CACR;CAED,MAAM,EAAE,iBAAiB,cAAc,mBAAmB,eAAe;EACvE,OAAO,gBAAgB,aAAa;EACpC,UAAU;EACV,YAAY;EACZ,wBAAwB,UAAU;EAClC,eAAe,UAAW,MAAM,QAAQ,SAAS,WAAW,MAAM;EAClE;EACD,CAAC;AAEF,KAAI,CAAC,MAAM,UAAU,CAAC,UACpB,QAAO,oBAAC,yBAAD,EAA2B,CAAA;AAGpC,QACE,oBAAC,eAAD;EAAe,gBAAA;EAAe,OAAO,EAAE,WAAW,KAAK;YACrD,oBAAC,KAAD;GACE,KAAK;GACL,OAAO,EAAE,QAAQ,YAAY;GAC7B,IAAI;IAAE,UAAU;IAAQ,UAAU;IAAG;aAEpC,aAAa,CAAC,gBACb,oBAAC,MAAD;IACE,gBAAA;IACA,IAAI;KACF,SAAS;KACT,eAAe;KACf,KAAK;KACL,cAAc;KACf;cAEA,MAAM,KAAK,EAAE,QAAQ,gBAAgB,CAAC,CAAC,KAAK,GAAG,UAC9C,oBAAC,yBAAD,EAAuC,EAAT,MAAS,CACvC;IACG,CAAA,GAEP,oBAAC,MAAD;IACE,WAAU;IACV,OAAO;KAAE,QAAQ,cAAc;KAAE,UAAU;KAAY;IACvD,gBAAA;cAEC,iBAAiB,CAAC,KAAK,SAAS;KAC/B,MAAM,WACJ,KAAK,QAAQ,MAAM,SAAS,MAAM,KAAK,SAAS;AAClD,YACE,oBAAC,MAAD;MAEE,KAAK;MACL,cAAY,KAAK;MACjB,OAAO;OACL,UAAU;OACV,KAAK;OACL,MAAM;OACN,OAAO;OACP,eAAe;OACf,WAAW,cAAc,KAAK,MAAM;OACpC,WAAW;OACZ;gBAEA,CAAC,WACA,oBAAC,yBAAD,EAA2B,CAAA,GACzB,SAAS,SAAS,WACpB,oBAAC,uBAAD,EAAuB,SAAS,SAAS,SAAW,CAAA,GAEpD,oBAAC,wBAAD;OACE,OAAO,SAAS,eAAe;OAC/B,MAAM,SAAS;OACf,iBAAiB,SAAS;OAC1B,WAAW,SAAS;OACpB,CAAA;MAED,EAzBE,KAAK,IAyBP;MAEP;IACG,CAAA;GAEL,CAAA;EACQ,CAAA"}
|
|
@@ -7,7 +7,7 @@ import { Button } from "@mui/material";
|
|
|
7
7
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
8
8
|
import { useTranslation } from "react-i18next";
|
|
9
9
|
import { useAccount } from "@lifi/wallet-management";
|
|
10
|
-
import DeleteOutline from "@mui/icons-material/
|
|
10
|
+
import DeleteOutline from "@mui/icons-material/DeleteOutlined";
|
|
11
11
|
//#region src/pages/ActivitiesPage/ActivitiesPageMenuButton.tsx
|
|
12
12
|
const ActivitiesPageMenuButton = () => {
|
|
13
13
|
const { t } = useTranslation();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActivitiesPageMenuButton.js","names":["DeleteOutlineIcon","Dialog","DialogTitle","DialogContent","DialogContentText","DialogActions"],"sources":["../../../../src/pages/ActivitiesPage/ActivitiesPageMenuButton.tsx"],"sourcesContent":["import { useAccount } from '@lifi/wallet-management'\nimport DeleteOutlineIcon from '@mui/icons-material/
|
|
1
|
+
{"version":3,"file":"ActivitiesPageMenuButton.js","names":["DeleteOutlineIcon","Dialog","DialogTitle","DialogContent","DialogContentText","DialogActions"],"sources":["../../../../src/pages/ActivitiesPage/ActivitiesPageMenuButton.tsx"],"sourcesContent":["import { useAccount } from '@lifi/wallet-management'\nimport DeleteOutlineIcon from '@mui/icons-material/DeleteOutlined'\nimport { Button } from '@mui/material'\nimport { useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { ContextMenu } from '../../components/ContextMenu.js'\nimport { Dialog } from '../../components/Dialog/Dialog.js'\nimport {\n DialogActions,\n DialogContainer,\n DialogContent,\n DialogContentText,\n DialogTitle,\n} from '../../components/Dialog/Dialog.style.js'\nimport { useRouteExecutionStore } from '../../stores/routes/RouteExecutionStore.js'\n\nexport const ActivitiesPageMenuButton: React.FC = () => {\n const { t } = useTranslation()\n const [dialogOpen, setDialogOpen] = useState(false)\n const deleteRoutes = useRouteExecutionStore((store) => store.deleteRoutes)\n const { accounts } = useAccount()\n const accountAddresses = useMemo(\n () => accounts.flatMap((account) => account.address ?? []),\n [accounts]\n )\n\n const handleDialogOpen = () => setDialogOpen(true)\n const handleDialogClose = () => setDialogOpen(false)\n\n const handleRemoveAllFailed = () => {\n deleteRoutes('failed', accountAddresses)\n handleDialogClose()\n }\n\n return (\n <>\n <ContextMenu\n buttonSx={{ position: 'static', marginRight: -1.5 }}\n items={[\n {\n icon: <DeleteOutlineIcon />,\n label: t('button.clearAllFailed'),\n onClick: handleDialogOpen,\n },\n ]}\n />\n <Dialog open={dialogOpen} onClose={handleDialogClose}>\n <DialogContainer>\n <DialogTitle>\n {t('warning.title.clearFailedTransactions')}\n </DialogTitle>\n <DialogContent>\n <DialogContentText>\n {t('warning.message.clearFailedTransactions')}\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button onClick={handleDialogClose}>{t('button.cancel')}</Button>\n <Button\n variant=\"contained\"\n onClick={handleRemoveAllFailed}\n autoFocus\n >\n {t('button.delete')}\n </Button>\n </DialogActions>\n </DialogContainer>\n </Dialog>\n </>\n )\n}\n"],"mappings":";;;;;;;;;;;AAgBA,MAAa,iCAA2C;CACtD,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,CAAC,YAAY,iBAAiB,SAAS,MAAM;CACnD,MAAM,eAAe,wBAAwB,UAAU,MAAM,aAAa;CAC1E,MAAM,EAAE,aAAa,YAAY;CACjC,MAAM,mBAAmB,cACjB,SAAS,SAAS,YAAY,QAAQ,WAAW,EAAE,CAAC,EAC1D,CAAC,SAAS,CACX;CAED,MAAM,yBAAyB,cAAc,KAAK;CAClD,MAAM,0BAA0B,cAAc,MAAM;CAEpD,MAAM,8BAA8B;AAClC,eAAa,UAAU,iBAAiB;AACxC,qBAAmB;;AAGrB,QACE,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,aAAD;EACE,UAAU;GAAE,UAAU;GAAU,aAAa;GAAM;EACnD,OAAO,CACL;GACE,MAAM,oBAACA,eAAD,EAAqB,CAAA;GAC3B,OAAO,EAAE,wBAAwB;GACjC,SAAS;GACV,CACF;EACD,CAAA,EACF,oBAACC,UAAD;EAAQ,MAAM;EAAY,SAAS;YACjC,qBAAC,iBAAD,EAAA,UAAA;GACE,oBAACC,eAAD,EAAA,UACG,EAAE,wCAAwC,EAC/B,CAAA;GACd,oBAACC,iBAAD,EAAA,UACE,oBAACC,qBAAD,EAAA,UACG,EAAE,0CAA0C,EAC3B,CAAA,EACN,CAAA;GAChB,qBAACC,iBAAD,EAAA,UAAA,CACE,oBAAC,QAAD;IAAQ,SAAS;cAAoB,EAAE,gBAAgB;IAAU,CAAA,EACjE,oBAAC,QAAD;IACE,SAAQ;IACR,SAAS;IACT,WAAA;cAEC,EAAE,gBAAgB;IACZ,CAAA,CACK,EAAA,CAAA;GACA,EAAA,CAAA;EACX,CAAA,CACR,EAAA,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useWidgetConfig } from "../../providers/WidgetProvider/WidgetProvider.js";
|
|
2
|
-
import
|
|
2
|
+
import "../../types/widget.js";
|
|
3
3
|
import { PageContainer } from "../../components/PageContainer.js";
|
|
4
4
|
import { useWideVariant } from "../../hooks/useWideVariant.js";
|
|
5
5
|
import { useHeader } from "../../hooks/useHeader.js";
|
|
@@ -22,8 +22,8 @@ const MainPage = () => {
|
|
|
22
22
|
const wideVariant = useWideVariant();
|
|
23
23
|
const { subvariant, subvariantOptions, contractComponent, hiddenUI } = useWidgetConfig();
|
|
24
24
|
const custom = subvariant === "custom";
|
|
25
|
-
const showPoweredBy = !hiddenUI?.includes(
|
|
26
|
-
const showGasRefuelMessage = !hiddenUI?.includes(
|
|
25
|
+
const showPoweredBy = !hiddenUI?.includes("poweredBy");
|
|
26
|
+
const showGasRefuelMessage = !hiddenUI?.includes("gasRefuelMessage");
|
|
27
27
|
const splitTitle = subvariantOptions?.split === "bridge" ? t("header.bridge") : subvariantOptions?.split === "swap" ? t("header.swap") : void 0;
|
|
28
28
|
useHeader(subvariant === "custom" ? t(`header.${subvariantOptions?.custom ?? "checkout"}`) : subvariant === "refuel" ? t("header.gas") : subvariant === "split" && splitTitle ? splitTitle : t("header.exchange"));
|
|
29
29
|
const marginSx = { marginBottom: 2 };
|
|
@@ -32,15 +32,15 @@ const MainPage = () => {
|
|
|
32
32
|
sx: marginSx,
|
|
33
33
|
children: contractComponent
|
|
34
34
|
}) : null,
|
|
35
|
-
/* @__PURE__ */ jsx(SelectChainAndToken, {
|
|
35
|
+
/* @__PURE__ */ jsx(SelectChainAndToken, { sx: marginSx }),
|
|
36
36
|
!custom || subvariantOptions?.custom === "deposit" ? /* @__PURE__ */ jsx(AmountInput, {
|
|
37
37
|
formType: "from",
|
|
38
38
|
sx: marginSx
|
|
39
39
|
}) : null,
|
|
40
40
|
!wideVariant ? /* @__PURE__ */ jsx(Routes, { sx: marginSx }) : null,
|
|
41
41
|
/* @__PURE__ */ jsx(SendToWalletButton, { sx: marginSx }),
|
|
42
|
-
showGasRefuelMessage ? /* @__PURE__ */ jsx(GasRefuelMessage, {
|
|
43
|
-
/* @__PURE__ */ jsx(MainWarningMessages, {
|
|
42
|
+
showGasRefuelMessage ? /* @__PURE__ */ jsx(GasRefuelMessage, { sx: marginSx }) : null,
|
|
43
|
+
/* @__PURE__ */ jsx(MainWarningMessages, { sx: marginSx }),
|
|
44
44
|
/* @__PURE__ */ jsxs(Box, {
|
|
45
45
|
sx: {
|
|
46
46
|
display: "flex",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MainPage.js","names":[],"sources":["../../../../src/pages/MainPage/MainPage.tsx"],"sourcesContent":["import { Box } from '@mui/material'\nimport { useTranslation } from 'react-i18next'\nimport { AmountInput } from '../../components/AmountInput/AmountInput.js'\nimport { ContractComponent } from '../../components/ContractComponent/ContractComponent.js'\nimport { GasRefuelMessage } from '../../components/Messages/GasRefuelMessage.js'\nimport { PageContainer } from '../../components/PageContainer.js'\nimport { PoweredBy } from '../../components/PoweredBy/PoweredBy.js'\nimport { Routes } from '../../components/Routes/Routes.js'\nimport { SelectChainAndToken } from '../../components/SelectChainAndToken.js'\nimport { SendToWalletButton } from '../../components/SendToWallet/SendToWalletButton.js'\nimport { SendToWalletExpandButton } from '../../components/SendToWallet/SendToWalletExpandButton.js'\nimport { useHeader } from '../../hooks/useHeader.js'\nimport { useWideVariant } from '../../hooks/useWideVariant.js'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport { HiddenUI } from '../../types/widget.js'\nimport { MainWarningMessages } from './MainWarningMessages.js'\nimport { ReviewButton } from './ReviewButton.js'\n\nexport const MainPage: React.FC = () => {\n const { t } = useTranslation()\n const wideVariant = useWideVariant()\n const { subvariant, subvariantOptions, contractComponent, hiddenUI } =\n useWidgetConfig()\n const custom = subvariant === 'custom'\n const showPoweredBy = !hiddenUI?.includes(HiddenUI.PoweredBy)\n const showGasRefuelMessage = !hiddenUI?.includes(HiddenUI.GasRefuelMessage)\n\n const splitTitle =\n subvariantOptions?.split === 'bridge'\n ? t('header.bridge')\n : subvariantOptions?.split === 'swap'\n ? t('header.swap')\n : undefined\n const title =\n subvariant === 'custom'\n ? t(`header.${subvariantOptions?.custom ?? 'checkout'}`)\n : subvariant === 'refuel'\n ? t('header.gas')\n : subvariant === 'split' && splitTitle\n ? splitTitle\n : t('header.exchange')\n\n useHeader(title)\n\n const marginSx = { marginBottom: 2 }\n\n return (\n <PageContainer>\n {custom ? (\n <ContractComponent sx={marginSx}>{contractComponent}</ContractComponent>\n ) : null}\n <SelectChainAndToken
|
|
1
|
+
{"version":3,"file":"MainPage.js","names":[],"sources":["../../../../src/pages/MainPage/MainPage.tsx"],"sourcesContent":["import { Box } from '@mui/material'\nimport { useTranslation } from 'react-i18next'\nimport { AmountInput } from '../../components/AmountInput/AmountInput.js'\nimport { ContractComponent } from '../../components/ContractComponent/ContractComponent.js'\nimport { GasRefuelMessage } from '../../components/Messages/GasRefuelMessage.js'\nimport { PageContainer } from '../../components/PageContainer.js'\nimport { PoweredBy } from '../../components/PoweredBy/PoweredBy.js'\nimport { Routes } from '../../components/Routes/Routes.js'\nimport { SelectChainAndToken } from '../../components/SelectChainAndToken.js'\nimport { SendToWalletButton } from '../../components/SendToWallet/SendToWalletButton.js'\nimport { SendToWalletExpandButton } from '../../components/SendToWallet/SendToWalletExpandButton.js'\nimport { useHeader } from '../../hooks/useHeader.js'\nimport { useWideVariant } from '../../hooks/useWideVariant.js'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport { HiddenUI } from '../../types/widget.js'\nimport { MainWarningMessages } from './MainWarningMessages.js'\nimport { ReviewButton } from './ReviewButton.js'\n\nexport const MainPage: React.FC = () => {\n const { t } = useTranslation()\n const wideVariant = useWideVariant()\n const { subvariant, subvariantOptions, contractComponent, hiddenUI } =\n useWidgetConfig()\n const custom = subvariant === 'custom'\n const showPoweredBy = !hiddenUI?.includes(HiddenUI.PoweredBy)\n const showGasRefuelMessage = !hiddenUI?.includes(HiddenUI.GasRefuelMessage)\n\n const splitTitle =\n subvariantOptions?.split === 'bridge'\n ? t('header.bridge')\n : subvariantOptions?.split === 'swap'\n ? t('header.swap')\n : undefined\n const title =\n subvariant === 'custom'\n ? t(`header.${subvariantOptions?.custom ?? 'checkout'}`)\n : subvariant === 'refuel'\n ? t('header.gas')\n : subvariant === 'split' && splitTitle\n ? splitTitle\n : t('header.exchange')\n\n useHeader(title)\n\n const marginSx = { marginBottom: 2 }\n\n return (\n <PageContainer>\n {custom ? (\n <ContractComponent sx={marginSx}>{contractComponent}</ContractComponent>\n ) : null}\n <SelectChainAndToken sx={marginSx} />\n {!custom || subvariantOptions?.custom === 'deposit' ? (\n <AmountInput formType=\"from\" sx={marginSx} />\n ) : null}\n {!wideVariant ? <Routes sx={marginSx} /> : null}\n <SendToWalletButton sx={marginSx} />\n {showGasRefuelMessage ? <GasRefuelMessage sx={marginSx} /> : null}\n <MainWarningMessages sx={marginSx} />\n <Box\n sx={{\n display: 'flex',\n mb: showPoweredBy ? 1 : 3,\n }}\n >\n <ReviewButton />\n <SendToWalletExpandButton />\n </Box>\n {showPoweredBy ? <PoweredBy /> : null}\n </PageContainer>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAkBA,MAAa,iBAA2B;CACtC,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,cAAc,gBAAgB;CACpC,MAAM,EAAE,YAAY,mBAAmB,mBAAmB,aACxD,iBAAiB;CACnB,MAAM,SAAS,eAAe;CAC9B,MAAM,gBAAgB,CAAC,UAAU,SAAA,YAA4B;CAC7D,MAAM,uBAAuB,CAAC,UAAU,SAAA,mBAAmC;CAE3E,MAAM,aACJ,mBAAmB,UAAU,WACzB,EAAE,gBAAgB,GAClB,mBAAmB,UAAU,SAC3B,EAAE,cAAc,GAChB,KAAA;AAUR,WARE,eAAe,WACX,EAAE,UAAU,mBAAmB,UAAU,aAAa,GACtD,eAAe,WACb,EAAE,aAAa,GACf,eAAe,WAAW,aACxB,aACA,EAAE,kBAAkB,CAEd;CAEhB,MAAM,WAAW,EAAE,cAAc,GAAG;AAEpC,QACE,qBAAC,eAAD,EAAA,UAAA;EACG,SACC,oBAAC,mBAAD;GAAmB,IAAI;aAAW;GAAsC,CAAA,GACtE;EACJ,oBAAC,qBAAD,EAAqB,IAAI,UAAY,CAAA;EACpC,CAAC,UAAU,mBAAmB,WAAW,YACxC,oBAAC,aAAD;GAAa,UAAS;GAAO,IAAI;GAAY,CAAA,GAC3C;EACH,CAAC,cAAc,oBAAC,QAAD,EAAQ,IAAI,UAAY,CAAA,GAAG;EAC3C,oBAAC,oBAAD,EAAoB,IAAI,UAAY,CAAA;EACnC,uBAAuB,oBAAC,kBAAD,EAAkB,IAAI,UAAY,CAAA,GAAG;EAC7D,oBAAC,qBAAD,EAAqB,IAAI,UAAY,CAAA;EACrC,qBAAC,KAAD;GACE,IAAI;IACF,SAAS;IACT,IAAI,gBAAgB,IAAI;IACzB;aAJH,CAME,oBAAC,cAAD,EAAgB,CAAA,EAChB,oBAAC,0BAAD,EAA4B,CAAA,CACxB;;EACL,gBAAgB,oBAAC,WAAD,EAAa,CAAA,GAAG;EACnB,EAAA,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useWidgetEvents } from "../../hooks/useWidgetEvents.js";
|
|
2
|
-
import
|
|
2
|
+
import "../../types/events.js";
|
|
3
3
|
import { useWidgetConfig } from "../../providers/WidgetProvider/WidgetProvider.js";
|
|
4
4
|
import { navigationRoutes } from "../../utils/navigationRoutes.js";
|
|
5
5
|
import { useSplitSubvariantStore } from "../../stores/settings/useSplitSubvariantStore.js";
|
|
@@ -26,7 +26,7 @@ const ReviewButton = () => {
|
|
|
26
26
|
to: navigationRoutes.transactionExecution,
|
|
27
27
|
search: { routeId: currentRoute.id }
|
|
28
28
|
});
|
|
29
|
-
emitter.emit(
|
|
29
|
+
emitter.emit("routeSelected", {
|
|
30
30
|
route: currentRoute,
|
|
31
31
|
routes
|
|
32
32
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReviewButton.js","names":[],"sources":["../../../../src/pages/MainPage/ReviewButton.tsx"],"sourcesContent":["import { useNavigate } from '@tanstack/react-router'\nimport { useTranslation } from 'react-i18next'\nimport { BaseTransactionButton } from '../../components/BaseTransactionButton/BaseTransactionButton.js'\nimport { useRoutes } from '../../hooks/useRoutes.js'\nimport { useToAddressRequirements } from '../../hooks/useToAddressRequirements.js'\nimport { useWidgetEvents } from '../../hooks/useWidgetEvents.js'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport { useSplitSubvariantStore } from '../../stores/settings/useSplitSubvariantStore.js'\nimport { WidgetEvent } from '../../types/events.js'\nimport { navigationRoutes } from '../../utils/navigationRoutes.js'\n\nexport const ReviewButton: React.FC = () => {\n const { t } = useTranslation()\n const navigate = useNavigate()\n const emitter = useWidgetEvents()\n const { subvariant, subvariantOptions } = useWidgetConfig()\n const splitState = useSplitSubvariantStore((state) => state.state)\n const { toAddress, requiredToAddress } = useToAddressRequirements()\n const { routes, setReviewableRoute } = useRoutes()\n\n const currentRoute = routes?.[0]\n\n const handleClick = async () => {\n if (!currentRoute) {\n return\n }\n\n setReviewableRoute(currentRoute)\n navigate({\n to: navigationRoutes.transactionExecution,\n search: { routeId: currentRoute.id },\n })\n emitter.emit(WidgetEvent.RouteSelected, {\n route: currentRoute,\n routes: routes!,\n })\n }\n\n const getButtonText = (): string => {\n if (currentRoute) {\n switch (subvariant) {\n case 'custom':\n return t(`button.${subvariantOptions?.custom ?? 'checkout'}Review`)\n case 'refuel':\n return t('button.getGas')\n default: {\n const transactionType =\n currentRoute.fromChainId === currentRoute.toChainId\n ? 'swap'\n : 'bridge'\n return t(`button.${transactionType}Review`)\n }\n }\n }\n switch (subvariant) {\n case 'custom':\n return subvariantOptions?.custom === 'deposit'\n ? t('button.deposit')\n : t('button.buy')\n case 'refuel':\n return t('button.getGas')\n case 'split':\n if (splitState) {\n return t(`button.${splitState}`)\n }\n return t('button.exchange')\n default:\n return t('button.exchange')\n }\n }\n\n return (\n <BaseTransactionButton\n text={getButtonText()}\n onClick={handleClick}\n disabled={currentRoute && requiredToAddress && !toAddress}\n route={currentRoute}\n sx={{ flex: 1 }}\n />\n )\n}\n"],"mappings":";;;;;;;;;;;;AAWA,MAAa,qBAA+B;CAC1C,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,WAAW,aAAa;CAC9B,MAAM,UAAU,iBAAiB;CACjC,MAAM,EAAE,YAAY,sBAAsB,iBAAiB;CAC3D,MAAM,aAAa,yBAAyB,UAAU,MAAM,MAAM;CAClE,MAAM,EAAE,WAAW,sBAAsB,0BAA0B;CACnE,MAAM,EAAE,QAAQ,uBAAuB,WAAW;CAElD,MAAM,eAAe,SAAS;CAE9B,MAAM,cAAc,YAAY;AAC9B,MAAI,CAAC,aACH;AAGF,qBAAmB,aAAa;AAChC,WAAS;GACP,IAAI,iBAAiB;GACrB,QAAQ,EAAE,SAAS,aAAa,IAAI;GACrC,CAAC;AACF,UAAQ,
|
|
1
|
+
{"version":3,"file":"ReviewButton.js","names":[],"sources":["../../../../src/pages/MainPage/ReviewButton.tsx"],"sourcesContent":["import { useNavigate } from '@tanstack/react-router'\nimport { useTranslation } from 'react-i18next'\nimport { BaseTransactionButton } from '../../components/BaseTransactionButton/BaseTransactionButton.js'\nimport { useRoutes } from '../../hooks/useRoutes.js'\nimport { useToAddressRequirements } from '../../hooks/useToAddressRequirements.js'\nimport { useWidgetEvents } from '../../hooks/useWidgetEvents.js'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport { useSplitSubvariantStore } from '../../stores/settings/useSplitSubvariantStore.js'\nimport { WidgetEvent } from '../../types/events.js'\nimport { navigationRoutes } from '../../utils/navigationRoutes.js'\n\nexport const ReviewButton: React.FC = () => {\n const { t } = useTranslation()\n const navigate = useNavigate()\n const emitter = useWidgetEvents()\n const { subvariant, subvariantOptions } = useWidgetConfig()\n const splitState = useSplitSubvariantStore((state) => state.state)\n const { toAddress, requiredToAddress } = useToAddressRequirements()\n const { routes, setReviewableRoute } = useRoutes()\n\n const currentRoute = routes?.[0]\n\n const handleClick = async () => {\n if (!currentRoute) {\n return\n }\n\n setReviewableRoute(currentRoute)\n navigate({\n to: navigationRoutes.transactionExecution,\n search: { routeId: currentRoute.id },\n })\n emitter.emit(WidgetEvent.RouteSelected, {\n route: currentRoute,\n routes: routes!,\n })\n }\n\n const getButtonText = (): string => {\n if (currentRoute) {\n switch (subvariant) {\n case 'custom':\n return t(`button.${subvariantOptions?.custom ?? 'checkout'}Review`)\n case 'refuel':\n return t('button.getGas')\n default: {\n const transactionType =\n currentRoute.fromChainId === currentRoute.toChainId\n ? 'swap'\n : 'bridge'\n return t(`button.${transactionType}Review`)\n }\n }\n }\n switch (subvariant) {\n case 'custom':\n return subvariantOptions?.custom === 'deposit'\n ? t('button.deposit')\n : t('button.buy')\n case 'refuel':\n return t('button.getGas')\n case 'split':\n if (splitState) {\n return t(`button.${splitState}`)\n }\n return t('button.exchange')\n default:\n return t('button.exchange')\n }\n }\n\n return (\n <BaseTransactionButton\n text={getButtonText()}\n onClick={handleClick}\n disabled={currentRoute && requiredToAddress && !toAddress}\n route={currentRoute}\n sx={{ flex: 1 }}\n />\n )\n}\n"],"mappings":";;;;;;;;;;;;AAWA,MAAa,qBAA+B;CAC1C,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,WAAW,aAAa;CAC9B,MAAM,UAAU,iBAAiB;CACjC,MAAM,EAAE,YAAY,sBAAsB,iBAAiB;CAC3D,MAAM,aAAa,yBAAyB,UAAU,MAAM,MAAM;CAClE,MAAM,EAAE,WAAW,sBAAsB,0BAA0B;CACnE,MAAM,EAAE,QAAQ,uBAAuB,WAAW;CAElD,MAAM,eAAe,SAAS;CAE9B,MAAM,cAAc,YAAY;AAC9B,MAAI,CAAC,aACH;AAGF,qBAAmB,aAAa;AAChC,WAAS;GACP,IAAI,iBAAiB;GACrB,QAAQ,EAAE,SAAS,aAAa,IAAI;GACrC,CAAC;AACF,UAAQ,KAAA,iBAAgC;GACtC,OAAO;GACC;GACT,CAAC;;CAGJ,MAAM,sBAA8B;AAClC,MAAI,aACF,SAAQ,YAAR;GACE,KAAK,SACH,QAAO,EAAE,UAAU,mBAAmB,UAAU,WAAW,QAAQ;GACrE,KAAK,SACH,QAAO,EAAE,gBAAgB;GAC3B,QAKE,QAAO,EAAE,UAHP,aAAa,gBAAgB,aAAa,YACtC,SACA,SAC6B,QAAQ;;AAIjD,UAAQ,YAAR;GACE,KAAK,SACH,QAAO,mBAAmB,WAAW,YACjC,EAAE,iBAAiB,GACnB,EAAE,aAAa;GACrB,KAAK,SACH,QAAO,EAAE,gBAAgB;GAC3B,KAAK;AACH,QAAI,WACF,QAAO,EAAE,UAAU,aAAa;AAElC,WAAO,EAAE,kBAAkB;GAC7B,QACE,QAAO,EAAE,kBAAkB;;;AAIjC,QACE,oBAAC,uBAAD;EACE,MAAM,eAAe;EACrB,SAAS;EACT,UAAU,gBAAgB,qBAAqB,CAAC;EAChD,OAAO;EACP,IAAI,EAAE,MAAM,GAAG;EACf,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useWidgetEvents } from "../../hooks/useWidgetEvents.js";
|
|
2
|
-
import
|
|
2
|
+
import "../../types/events.js";
|
|
3
3
|
import { navigationRoutes } from "../../utils/navigationRoutes.js";
|
|
4
4
|
import { useFieldValues } from "../../stores/form/useFieldValues.js";
|
|
5
5
|
import { useRoutes } from "../../hooks/useRoutes.js";
|
|
@@ -44,7 +44,7 @@ const RoutesPage = () => {
|
|
|
44
44
|
to: navigationRoutes.transactionExecution,
|
|
45
45
|
search: { routeId: route.id }
|
|
46
46
|
});
|
|
47
|
-
emitter.emit(
|
|
47
|
+
emitter.emit("routeSelected", {
|
|
48
48
|
route,
|
|
49
49
|
routes
|
|
50
50
|
});
|
|
@@ -56,7 +56,7 @@ const RoutesPage = () => {
|
|
|
56
56
|
className: "long-list",
|
|
57
57
|
direction: "column",
|
|
58
58
|
spacing: 2,
|
|
59
|
-
flex: 1,
|
|
59
|
+
sx: { flex: 1 },
|
|
60
60
|
children: routeNotFound ? /* @__PURE__ */ jsx(RouteNotFoundCard, {}) : isLoading && !routes?.length ? Array.from({ length: 3 }).map((_, index) => /* @__PURE__ */ jsx(RouteCardSkeleton, {}, index)) : routes?.map((route, index) => /* @__PURE__ */ jsx(RouteCard, {
|
|
61
61
|
route,
|
|
62
62
|
onClick: allowInteraction ? () => handleRouteClick(route) : void 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RoutesPage.js","names":[],"sources":["../../../../src/pages/RoutesPage/RoutesPage.tsx"],"sourcesContent":["import type { Route } from '@lifi/sdk'\nimport { useAccount } from '@lifi/wallet-management'\nimport { useNavigate } from '@tanstack/react-router'\nimport { type JSX, useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { ProgressToNextUpdate } from '../../components/ProgressToNextUpdate.js'\nimport { RouteCard } from '../../components/RouteCard/RouteCard.js'\nimport { RouteCardSkeleton } from '../../components/RouteCard/RouteCardSkeleton.js'\nimport { RouteNotFoundCard } from '../../components/RouteCard/RouteNotFoundCard.js'\nimport { useHeader } from '../../hooks/useHeader.js'\nimport { useRoutes } from '../../hooks/useRoutes.js'\nimport { useToAddressRequirements } from '../../hooks/useToAddressRequirements.js'\nimport { useWidgetEvents } from '../../hooks/useWidgetEvents.js'\nimport { useFieldValues } from '../../stores/form/useFieldValues.js'\nimport { WidgetEvent } from '../../types/events.js'\nimport { navigationRoutes } from '../../utils/navigationRoutes.js'\nimport { Stack } from './RoutesPage.style.js'\n\nexport const RoutesPage = (): JSX.Element => {\n const { t } = useTranslation()\n const navigate = useNavigate()\n const emitter = useWidgetEvents()\n const {\n routes,\n isLoading,\n isFetching,\n dataUpdatedAt,\n refetchTime,\n fromChain,\n refetch,\n setReviewableRoute,\n } = useRoutes()\n const { account } = useAccount({ chainType: fromChain?.chainType })\n const [toAddress] = useFieldValues('toAddress')\n const { requiredToAddress } = useToAddressRequirements()\n\n const headerAction = useMemo(\n () => (\n <ProgressToNextUpdate\n updatedAt={dataUpdatedAt || Date.now()}\n timeToUpdate={refetchTime}\n isLoading={isFetching}\n onClick={() => refetch()}\n sx={{ marginRight: -1 }}\n size=\"medium\"\n />\n ),\n [dataUpdatedAt, isFetching, refetch, refetchTime]\n )\n\n useHeader(t('header.receive'), headerAction)\n\n const handleRouteClick = (route: Route) => {\n setReviewableRoute(route)\n navigate({\n to: navigationRoutes.transactionExecution,\n search: { routeId: route.id },\n })\n emitter.emit(WidgetEvent.RouteSelected, {\n route,\n routes: routes!,\n })\n }\n\n const routeNotFound = !routes?.length && !isLoading && !isFetching\n\n const toAddressUnsatisfied = routes?.[0] && requiredToAddress && !toAddress\n\n const allowInteraction = account.isConnected && !toAddressUnsatisfied\n\n return (\n <Stack
|
|
1
|
+
{"version":3,"file":"RoutesPage.js","names":[],"sources":["../../../../src/pages/RoutesPage/RoutesPage.tsx"],"sourcesContent":["import type { Route } from '@lifi/sdk'\nimport { useAccount } from '@lifi/wallet-management'\nimport { useNavigate } from '@tanstack/react-router'\nimport { type JSX, useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { ProgressToNextUpdate } from '../../components/ProgressToNextUpdate.js'\nimport { RouteCard } from '../../components/RouteCard/RouteCard.js'\nimport { RouteCardSkeleton } from '../../components/RouteCard/RouteCardSkeleton.js'\nimport { RouteNotFoundCard } from '../../components/RouteCard/RouteNotFoundCard.js'\nimport { useHeader } from '../../hooks/useHeader.js'\nimport { useRoutes } from '../../hooks/useRoutes.js'\nimport { useToAddressRequirements } from '../../hooks/useToAddressRequirements.js'\nimport { useWidgetEvents } from '../../hooks/useWidgetEvents.js'\nimport { useFieldValues } from '../../stores/form/useFieldValues.js'\nimport { WidgetEvent } from '../../types/events.js'\nimport { navigationRoutes } from '../../utils/navigationRoutes.js'\nimport { Stack } from './RoutesPage.style.js'\n\nexport const RoutesPage = (): JSX.Element => {\n const { t } = useTranslation()\n const navigate = useNavigate()\n const emitter = useWidgetEvents()\n const {\n routes,\n isLoading,\n isFetching,\n dataUpdatedAt,\n refetchTime,\n fromChain,\n refetch,\n setReviewableRoute,\n } = useRoutes()\n const { account } = useAccount({ chainType: fromChain?.chainType })\n const [toAddress] = useFieldValues('toAddress')\n const { requiredToAddress } = useToAddressRequirements()\n\n const headerAction = useMemo(\n () => (\n <ProgressToNextUpdate\n updatedAt={dataUpdatedAt || Date.now()}\n timeToUpdate={refetchTime}\n isLoading={isFetching}\n onClick={() => refetch()}\n sx={{ marginRight: -1 }}\n size=\"medium\"\n />\n ),\n [dataUpdatedAt, isFetching, refetch, refetchTime]\n )\n\n useHeader(t('header.receive'), headerAction)\n\n const handleRouteClick = (route: Route) => {\n setReviewableRoute(route)\n navigate({\n to: navigationRoutes.transactionExecution,\n search: { routeId: route.id },\n })\n emitter.emit(WidgetEvent.RouteSelected, {\n route,\n routes: routes!,\n })\n }\n\n const routeNotFound = !routes?.length && !isLoading && !isFetching\n\n const toAddressUnsatisfied = routes?.[0] && requiredToAddress && !toAddress\n\n const allowInteraction = account.isConnected && !toAddressUnsatisfied\n\n return (\n <Stack\n className=\"long-list\"\n direction=\"column\"\n spacing={2}\n sx={{ flex: 1 }}\n >\n {routeNotFound ? (\n <RouteNotFoundCard />\n ) : isLoading && !routes?.length ? (\n Array.from({ length: 3 }).map((_, index) => (\n <RouteCardSkeleton key={index} />\n ))\n ) : (\n routes?.map((route: Route, index: number) => (\n <RouteCard\n key={index}\n route={route}\n onClick={\n allowInteraction ? () => handleRouteClick(route) : undefined\n }\n active={index === 0}\n expanded={routes?.length === 1}\n />\n ))\n )}\n </Stack>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAkBA,MAAa,mBAAgC;CAC3C,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,WAAW,aAAa;CAC9B,MAAM,UAAU,iBAAiB;CACjC,MAAM,EACJ,QACA,WACA,YACA,eACA,aACA,WACA,SACA,uBACE,WAAW;CACf,MAAM,EAAE,YAAY,WAAW,EAAE,WAAW,WAAW,WAAW,CAAC;CACnE,MAAM,CAAC,aAAa,eAAe,YAAY;CAC/C,MAAM,EAAE,sBAAsB,0BAA0B;CAExD,MAAM,eAAe,cAEjB,oBAAC,sBAAD;EACE,WAAW,iBAAiB,KAAK,KAAK;EACtC,cAAc;EACd,WAAW;EACX,eAAe,SAAS;EACxB,IAAI,EAAE,aAAa,IAAI;EACvB,MAAK;EACL,CAAA,EAEJ;EAAC;EAAe;EAAY;EAAS;EAAY,CAClD;AAED,WAAU,EAAE,iBAAiB,EAAE,aAAa;CAE5C,MAAM,oBAAoB,UAAiB;AACzC,qBAAmB,MAAM;AACzB,WAAS;GACP,IAAI,iBAAiB;GACrB,QAAQ,EAAE,SAAS,MAAM,IAAI;GAC9B,CAAC;AACF,UAAQ,KAAA,iBAAgC;GACtC;GACQ;GACT,CAAC;;CAGJ,MAAM,gBAAgB,CAAC,QAAQ,UAAU,CAAC,aAAa,CAAC;CAExD,MAAM,uBAAuB,SAAS,MAAM,qBAAqB,CAAC;CAElE,MAAM,mBAAmB,QAAQ,eAAe,CAAC;AAEjD,QACE,oBAAC,OAAD;EACE,WAAU;EACV,WAAU;EACV,SAAS;EACT,IAAI,EAAE,MAAM,GAAG;YAEd,gBACC,oBAAC,mBAAD,EAAqB,CAAA,GACnB,aAAa,CAAC,QAAQ,SACxB,MAAM,KAAK,EAAE,QAAQ,GAAG,CAAC,CAAC,KAAK,GAAG,UAChC,oBAAC,mBAAD,EAAiC,EAAT,MAAS,CACjC,GAEF,QAAQ,KAAK,OAAc,UACzB,oBAAC,WAAD;GAES;GACP,SACE,yBAAyB,iBAAiB,MAAM,GAAG,KAAA;GAErD,QAAQ,UAAU;GAClB,UAAU,QAAQ,WAAW;GAC7B,EAPK,MAOL,CACF;EAEE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectChainPage.js","names":[],"sources":["../../../../src/pages/SelectChainPage/SelectChainPage.tsx"],"sourcesContent":["import type { ExtendedChain } from '@lifi/sdk'\nimport { useCallback } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useChainSelect } from '../../components/ChainSelect/useChainSelect.js'\nimport { SelectChainContent } from '../../components/Chains/SelectChainContent.js'\nimport { useTokenSelect } from '../../components/TokenList/useTokenSelect.js'\nimport { useHeader } from '../../hooks/useHeader.js'\nimport { useNavigateBack } from '../../hooks/useNavigateBack.js'\nimport type { SelectChainPageProps } from './types.js'\n\nexport const SelectChainPage: React.FC<SelectChainPageProps> = ({\n formType,\n selectNativeToken,\n}) => {\n const navigateBack = useNavigateBack()\n const { setCurrentChain } = useChainSelect(formType)\n const selectToken = useTokenSelect(formType, navigateBack)\n\n const { t } = useTranslation()\n\n useHeader(t('header.selectChain'))\n\n const handleClick = useCallback(\n async (chain: ExtendedChain) => {\n if (selectNativeToken) {\n selectToken(chain.nativeToken.address, chain.id)\n } else {\n setCurrentChain(chain.id)\n navigateBack()\n }\n },\n [navigateBack, selectNativeToken, selectToken, setCurrentChain]\n )\n\n return (\n <SelectChainContent\n inExpansion={false}\n formType={formType}\n onSelect={handleClick}\n />\n )\n}\n"],"mappings":";;;;;;;;;AAUA,MAAa,mBAAmD,EAC9D,UACA,wBACI;CACJ,MAAM,eAAe,iBAAiB;CACtC,MAAM,EAAE,oBAAoB,eAAe,SAAS;CACpD,MAAM,cAAc,eAAe,UAAU,aAAa;CAE1D,MAAM,EAAE,MAAM,gBAAgB;AAE9B,WAAU,EAAE,qBAAqB,CAAC;AAclC,QACE,oBAAC,oBAAD;EACE,aAAa;EACH;EACV,UAhBgB,YAClB,OAAO,UAAyB;AAC9B,OAAI,kBACF,aAAY,MAAM,YAAY,SAAS,MAAM,GAAG;QAC3C;AACL,oBAAgB,MAAM,GAAG;AACzB,kBAAc;;KAGlB;GAAC;GAAc;GAAmB;GAAa;GAAgB,
|
|
1
|
+
{"version":3,"file":"SelectChainPage.js","names":[],"sources":["../../../../src/pages/SelectChainPage/SelectChainPage.tsx"],"sourcesContent":["import type { ExtendedChain } from '@lifi/sdk'\nimport { useCallback } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useChainSelect } from '../../components/ChainSelect/useChainSelect.js'\nimport { SelectChainContent } from '../../components/Chains/SelectChainContent.js'\nimport { useTokenSelect } from '../../components/TokenList/useTokenSelect.js'\nimport { useHeader } from '../../hooks/useHeader.js'\nimport { useNavigateBack } from '../../hooks/useNavigateBack.js'\nimport type { SelectChainPageProps } from './types.js'\n\nexport const SelectChainPage: React.FC<SelectChainPageProps> = ({\n formType,\n selectNativeToken,\n}) => {\n const navigateBack = useNavigateBack()\n const { setCurrentChain } = useChainSelect(formType)\n const selectToken = useTokenSelect(formType, navigateBack)\n\n const { t } = useTranslation()\n\n useHeader(t('header.selectChain'))\n\n const handleClick = useCallback(\n async (chain: ExtendedChain) => {\n if (selectNativeToken) {\n selectToken(chain.nativeToken.address, chain.id)\n } else {\n setCurrentChain(chain.id)\n navigateBack()\n }\n },\n [navigateBack, selectNativeToken, selectToken, setCurrentChain]\n )\n\n return (\n <SelectChainContent\n inExpansion={false}\n formType={formType}\n onSelect={handleClick}\n />\n )\n}\n"],"mappings":";;;;;;;;;AAUA,MAAa,mBAAmD,EAC9D,UACA,wBACI;CACJ,MAAM,eAAe,iBAAiB;CACtC,MAAM,EAAE,oBAAoB,eAAe,SAAS;CACpD,MAAM,cAAc,eAAe,UAAU,aAAa;CAE1D,MAAM,EAAE,MAAM,gBAAgB;AAE9B,WAAU,EAAE,qBAAqB,CAAC;AAclC,QACE,oBAAC,oBAAD;EACE,aAAa;EACH;EACV,UAhBgB,YAClB,OAAO,UAAyB;AAC9B,OAAI,kBACF,aAAY,MAAM,YAAY,SAAS,MAAM,GAAG;QAC3C;AACL,oBAAgB,MAAM,GAAG;AACzB,kBAAc;;KAGlB;GAAC;GAAc;GAAmB;GAAa;GAAgB,CAOxC;EACrB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectEnabledToolsPage.js","names":[],"sources":["../../../src/pages/SelectEnabledToolsPage.tsx"],"sourcesContent":["import { Checkbox, debounce, Tooltip } from '@mui/material'\nimport type { ChangeEvent } from 'react'\nimport {\n type FormEventHandler,\n memo,\n useCallback,\n useMemo,\n useState,\n} from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { FullPageContainer } from '../components/FullPageContainer.js'\nimport { StickySearchInput } from '../components/Search/SearchInput.js'\nimport { type ToolCollectionTypes, Tools } from '../components/Tools/Tools.js'\nimport { useDefaultElementId } from '../hooks/useDefaultElementId.js'\nimport { useHeader } from '../hooks/useHeader.js'\nimport { useScrollableContainer } from '../hooks/useScrollableContainer.js'\nimport { useTools } from '../hooks/useTools.js'\nimport { useSettingsStore } from '../stores/settings/SettingsStore.js'\nimport { useSettingsActions } from '../stores/settings/useSettingsActions.js'\n\ninterface SelectAllCheckboxProps {\n allCheckboxesSelected: boolean\n onClick: (event: ChangeEvent<HTMLInputElement>, checked: boolean) => void\n anyCheckboxesSelected: boolean\n noCheckboxesAvailable: boolean\n}\n\nconst SelectAllCheckbox = memo<SelectAllCheckboxProps>(\n ({\n allCheckboxesSelected,\n anyCheckboxesSelected,\n noCheckboxesAvailable,\n onClick,\n }) => {\n const { t } = useTranslation()\n const tooltipTitle = noCheckboxesAvailable\n ? undefined\n : allCheckboxesSelected\n ? t('tooltip.deselectAll')\n : t('tooltip.selectAll')\n\n return (\n <Tooltip title={tooltipTitle}>\n <Checkbox\n id=\"select-all\"\n checked={allCheckboxesSelected}\n indeterminate={anyCheckboxesSelected && !allCheckboxesSelected}\n onChange={onClick}\n disabled={noCheckboxesAvailable}\n sx={{ mr: -1.5 }}\n />\n </Tooltip>\n )\n }\n)\n\nexport const SelectEnabledToolsPage: React.FC<{\n type: 'Bridges' | 'Exchanges'\n}> = ({ type }) => {\n const typeKey = type.toLowerCase() as 'bridges' | 'exchanges'\n const { tools } = useTools()\n const { toggleToolKeys } = useSettingsActions()\n\n const disabledTools = useSettingsStore((state) => state[`disabled${type}`])\n\n const { t } = useTranslation()\n const elementId = useDefaultElementId()\n const scrollableContainer = useScrollableContainer(elementId ?? '')\n const [searchValue, setSearchValue] = useState('')\n\n const filteredTools = useMemo(() => {\n const toolsList = tools?.[typeKey] ?? []\n\n if (!searchValue) {\n return toolsList\n }\n\n const lowerSearchValue = searchValue.toLowerCase()\n return toolsList.filter((tool) =>\n tool.name.toLowerCase().includes(lowerSearchValue)\n ) as ToolCollectionTypes\n }, [tools, typeKey, searchValue])\n\n const handleSelectAll = useCallback(() => {\n toggleToolKeys(\n type,\n filteredTools.map((tool) => tool.key)\n )\n }, [toggleToolKeys, type, filteredTools])\n\n const headerAction = useMemo(\n () => (\n <SelectAllCheckbox\n allCheckboxesSelected={\n !!filteredTools.length &&\n filteredTools.every((tool) => !disabledTools.includes(tool.key))\n }\n anyCheckboxesSelected={\n !!filteredTools.length &&\n filteredTools.some((tool) => disabledTools.includes(tool.key))\n }\n noCheckboxesAvailable={!filteredTools.length}\n onClick={handleSelectAll}\n />\n ),\n [disabledTools, handleSelectAll, filteredTools]\n )\n\n useHeader(t(`settings.enabled${type}`), headerAction)\n\n const handleSearchInputChange: FormEventHandler<HTMLInputElement> =\n useCallback(\n (e) => {\n const value = (e.target as HTMLInputElement).value\n setSearchValue(value)\n\n if (scrollableContainer) {\n scrollableContainer.scrollTop = 0\n }\n },\n [scrollableContainer]\n )\n\n const debouncedSearchInputChange = debounce(handleSearchInputChange, 250)\n\n return (\n <FullPageContainer disableGutters>\n <StickySearchInput\n onChange={debouncedSearchInputChange}\n placeholder={t(`main.search${type}`)}\n />\n <Tools filteredTools={filteredTools} type={type} />\n </FullPageContainer>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;AA2BA,MAAM,oBAAoB,MACvB,EACC,uBACA,uBACA,uBACA,cACI;CACJ,MAAM,EAAE,MAAM,gBAAgB;AAO9B,QACE,oBAAC,SAAD;EAAS,OAPU,wBACjB,KAAA,IACA,wBACE,EAAE,sBAAsB,GACxB,EAAE,oBAAoB;YAIxB,oBAAC,UAAD;GACE,IAAG;GACH,SAAS;GACT,eAAe,yBAAyB,CAAC;GACzC,UAAU;GACV,UAAU;GACV,IAAI,EAAE,IAAI,MAAM;GAChB,CAAA;EACM,CAAA;EAGf;AAED,MAAa,0BAEP,EAAE,WAAW;CACjB,MAAM,UAAU,KAAK,aAAa;CAClC,MAAM,EAAE,UAAU,UAAU;CAC5B,MAAM,EAAE,mBAAmB,oBAAoB;CAE/C,MAAM,gBAAgB,kBAAkB,UAAU,MAAM,WAAW,QAAQ;CAE3E,MAAM,EAAE,MAAM,gBAAgB;CAE9B,MAAM,sBAAsB,uBADV,
|
|
1
|
+
{"version":3,"file":"SelectEnabledToolsPage.js","names":[],"sources":["../../../src/pages/SelectEnabledToolsPage.tsx"],"sourcesContent":["import { Checkbox, debounce, Tooltip } from '@mui/material'\nimport type { ChangeEvent } from 'react'\nimport {\n type FormEventHandler,\n memo,\n useCallback,\n useMemo,\n useState,\n} from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { FullPageContainer } from '../components/FullPageContainer.js'\nimport { StickySearchInput } from '../components/Search/SearchInput.js'\nimport { type ToolCollectionTypes, Tools } from '../components/Tools/Tools.js'\nimport { useDefaultElementId } from '../hooks/useDefaultElementId.js'\nimport { useHeader } from '../hooks/useHeader.js'\nimport { useScrollableContainer } from '../hooks/useScrollableContainer.js'\nimport { useTools } from '../hooks/useTools.js'\nimport { useSettingsStore } from '../stores/settings/SettingsStore.js'\nimport { useSettingsActions } from '../stores/settings/useSettingsActions.js'\n\ninterface SelectAllCheckboxProps {\n allCheckboxesSelected: boolean\n onClick: (event: ChangeEvent<HTMLInputElement>, checked: boolean) => void\n anyCheckboxesSelected: boolean\n noCheckboxesAvailable: boolean\n}\n\nconst SelectAllCheckbox = memo<SelectAllCheckboxProps>(\n ({\n allCheckboxesSelected,\n anyCheckboxesSelected,\n noCheckboxesAvailable,\n onClick,\n }) => {\n const { t } = useTranslation()\n const tooltipTitle = noCheckboxesAvailable\n ? undefined\n : allCheckboxesSelected\n ? t('tooltip.deselectAll')\n : t('tooltip.selectAll')\n\n return (\n <Tooltip title={tooltipTitle}>\n <Checkbox\n id=\"select-all\"\n checked={allCheckboxesSelected}\n indeterminate={anyCheckboxesSelected && !allCheckboxesSelected}\n onChange={onClick}\n disabled={noCheckboxesAvailable}\n sx={{ mr: -1.5 }}\n />\n </Tooltip>\n )\n }\n)\n\nexport const SelectEnabledToolsPage: React.FC<{\n type: 'Bridges' | 'Exchanges'\n}> = ({ type }) => {\n const typeKey = type.toLowerCase() as 'bridges' | 'exchanges'\n const { tools } = useTools()\n const { toggleToolKeys } = useSettingsActions()\n\n const disabledTools = useSettingsStore((state) => state[`disabled${type}`])\n\n const { t } = useTranslation()\n const elementId = useDefaultElementId()\n const scrollableContainer = useScrollableContainer(elementId ?? '')\n const [searchValue, setSearchValue] = useState('')\n\n const filteredTools = useMemo(() => {\n const toolsList = tools?.[typeKey] ?? []\n\n if (!searchValue) {\n return toolsList\n }\n\n const lowerSearchValue = searchValue.toLowerCase()\n return toolsList.filter((tool) =>\n tool.name.toLowerCase().includes(lowerSearchValue)\n ) as ToolCollectionTypes\n }, [tools, typeKey, searchValue])\n\n const handleSelectAll = useCallback(() => {\n toggleToolKeys(\n type,\n filteredTools.map((tool) => tool.key)\n )\n }, [toggleToolKeys, type, filteredTools])\n\n const headerAction = useMemo(\n () => (\n <SelectAllCheckbox\n allCheckboxesSelected={\n !!filteredTools.length &&\n filteredTools.every((tool) => !disabledTools.includes(tool.key))\n }\n anyCheckboxesSelected={\n !!filteredTools.length &&\n filteredTools.some((tool) => disabledTools.includes(tool.key))\n }\n noCheckboxesAvailable={!filteredTools.length}\n onClick={handleSelectAll}\n />\n ),\n [disabledTools, handleSelectAll, filteredTools]\n )\n\n useHeader(t(`settings.enabled${type}`), headerAction)\n\n const handleSearchInputChange: FormEventHandler<HTMLInputElement> =\n useCallback(\n (e) => {\n const value = (e.target as HTMLInputElement).value\n setSearchValue(value)\n\n if (scrollableContainer) {\n scrollableContainer.scrollTop = 0\n }\n },\n [scrollableContainer]\n )\n\n const debouncedSearchInputChange = debounce(handleSearchInputChange, 250)\n\n return (\n <FullPageContainer disableGutters>\n <StickySearchInput\n onChange={debouncedSearchInputChange}\n placeholder={t(`main.search${type}`)}\n />\n <Tools filteredTools={filteredTools} type={type} />\n </FullPageContainer>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;AA2BA,MAAM,oBAAoB,MACvB,EACC,uBACA,uBACA,uBACA,cACI;CACJ,MAAM,EAAE,MAAM,gBAAgB;AAO9B,QACE,oBAAC,SAAD;EAAS,OAPU,wBACjB,KAAA,IACA,wBACE,EAAE,sBAAsB,GACxB,EAAE,oBAAoB;YAIxB,oBAAC,UAAD;GACE,IAAG;GACH,SAAS;GACT,eAAe,yBAAyB,CAAC;GACzC,UAAU;GACV,UAAU;GACV,IAAI,EAAE,IAAI,MAAM;GAChB,CAAA;EACM,CAAA;EAGf;AAED,MAAa,0BAEP,EAAE,WAAW;CACjB,MAAM,UAAU,KAAK,aAAa;CAClC,MAAM,EAAE,UAAU,UAAU;CAC5B,MAAM,EAAE,mBAAmB,oBAAoB;CAE/C,MAAM,gBAAgB,kBAAkB,UAAU,MAAM,WAAW,QAAQ;CAE3E,MAAM,EAAE,MAAM,gBAAgB;CAE9B,MAAM,sBAAsB,uBADV,qBAC0C,IAAI,GAAG;CACnE,MAAM,CAAC,aAAa,kBAAkB,SAAS,GAAG;CAElD,MAAM,gBAAgB,cAAc;EAClC,MAAM,YAAY,QAAQ,YAAY,EAAE;AAExC,MAAI,CAAC,YACH,QAAO;EAGT,MAAM,mBAAmB,YAAY,aAAa;AAClD,SAAO,UAAU,QAAQ,SACvB,KAAK,KAAK,aAAa,CAAC,SAAS,iBAAiB,CACnD;IACA;EAAC;EAAO;EAAS;EAAY,CAAC;CAEjC,MAAM,kBAAkB,kBAAkB;AACxC,iBACE,MACA,cAAc,KAAK,SAAS,KAAK,IAAI,CACtC;IACA;EAAC;EAAgB;EAAM;EAAc,CAAC;CAEzC,MAAM,eAAe,cAEjB,oBAAC,mBAAD;EACE,uBACE,CAAC,CAAC,cAAc,UAChB,cAAc,OAAO,SAAS,CAAC,cAAc,SAAS,KAAK,IAAI,CAAC;EAElE,uBACE,CAAC,CAAC,cAAc,UAChB,cAAc,MAAM,SAAS,cAAc,SAAS,KAAK,IAAI,CAAC;EAEhE,uBAAuB,CAAC,cAAc;EACtC,SAAS;EACT,CAAA,EAEJ;EAAC;EAAe;EAAiB;EAAc,CAChD;AAED,WAAU,EAAE,mBAAmB,OAAO,EAAE,aAAa;AAiBrD,QACE,qBAAC,mBAAD;EAAmB,gBAAA;YAAnB,CACE,oBAAC,mBAAD;GACE,UAL6B,SAZjC,aACG,MAAM;IACL,MAAM,QAAS,EAAE,OAA4B;AAC7C,mBAAe,MAAM;AAErB,QAAI,oBACF,qBAAoB,YAAY;MAGpC,CAAC,oBAAoB,CAG0C,EAAE,IAK3B;GACpC,aAAa,EAAE,cAAc,OAAO;GACpC,CAAA,EACF,oBAAC,OAAD;GAAsB;GAAqB;GAAQ,CAAA,CACjC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useWidgetConfig } from "../../providers/WidgetProvider/WidgetProvider.js";
|
|
2
|
-
import
|
|
2
|
+
import "../../types/widget.js";
|
|
3
3
|
import { useSwapOnly } from "../../hooks/useSwapOnly.js";
|
|
4
4
|
import { useScrollableOverflowHidden } from "../../hooks/useScrollableContainer.js";
|
|
5
5
|
import { FullPageContainer } from "../../components/FullPageContainer.js";
|
|
@@ -21,9 +21,9 @@ const SelectTokenPage = ({ formType }) => {
|
|
|
21
21
|
const wideVariant = useWideVariant();
|
|
22
22
|
const { t } = useTranslation();
|
|
23
23
|
useHeader(formType === "from" ? subvariant === "custom" ? t("header.payWith") : t("header.from") : t("header.to"));
|
|
24
|
-
const hideChainSelect = wideVariant && !subvariantOptions?.wide?.disableChainSidebar || swapOnly && formType === "to" || hiddenUI?.includes(
|
|
24
|
+
const hideChainSelect = wideVariant && !subvariantOptions?.wide?.disableChainSidebar || swapOnly && formType === "to" || hiddenUI?.includes("chainSelect");
|
|
25
25
|
const isMobile = useMediaQuery((theme) => theme.breakpoints.down(theme.breakpoints.values.xs));
|
|
26
|
-
const hideSearchTokenInput = hiddenUI?.includes(
|
|
26
|
+
const hideSearchTokenInput = hiddenUI?.includes("searchTokenInput");
|
|
27
27
|
return /* @__PURE__ */ jsxs(FullPageContainer, {
|
|
28
28
|
disableGutters: true,
|
|
29
29
|
children: [/* @__PURE__ */ jsxs(Box, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectTokenPage.js","names":[],"sources":["../../../../src/pages/SelectTokenPage/SelectTokenPage.tsx"],"sourcesContent":["import { Box, type Theme, useMediaQuery } from '@mui/material'\nimport type { FC } from 'react'\nimport { useRef } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { ChainSelect } from '../../components/ChainSelect/ChainSelect.js'\nimport { FullPageContainer } from '../../components/FullPageContainer.js'\nimport { TokenList } from '../../components/TokenList/TokenList.js'\nimport { useHeader } from '../../hooks/useHeader.js'\nimport { useScrollableOverflowHidden } from '../../hooks/useScrollableContainer.js'\nimport { useSwapOnly } from '../../hooks/useSwapOnly.js'\nimport { useWideVariant } from '../../hooks/useWideVariant.js'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport type { FormTypeProps } from '../../stores/form/types.js'\nimport { HiddenUI } from '../../types/widget.js'\nimport { SearchTokenInput } from './SearchTokenInput.js'\n\nexport const SelectTokenPage: FC<FormTypeProps> = ({ formType }) => {\n useScrollableOverflowHidden()\n\n const headerRef = useRef<HTMLElement>(null)\n\n const swapOnly = useSwapOnly()\n\n const { subvariant, hiddenUI, subvariantOptions } = useWidgetConfig()\n const wideVariant = useWideVariant()\n\n const { t } = useTranslation()\n const title =\n formType === 'from'\n ? subvariant === 'custom'\n ? t('header.payWith')\n : t('header.from')\n : t('header.to')\n\n useHeader(title)\n\n const hideChainSelect =\n (wideVariant && !subvariantOptions?.wide?.disableChainSidebar) ||\n (swapOnly && formType === 'to') ||\n hiddenUI?.includes(HiddenUI.ChainSelect)\n\n const isMobile = useMediaQuery((theme: Theme) =>\n theme.breakpoints.down(theme.breakpoints.values.xs)\n )\n const hideSearchTokenInput = hiddenUI?.includes(HiddenUI.SearchTokenInput)\n\n const hasHeader = !hideChainSelect || !hideSearchTokenInput\n\n return (\n <FullPageContainer disableGutters>\n <Box\n ref={headerRef}\n sx={{\n pb: hasHeader ? 2 : 0,\n px: 3,\n }}\n >\n {!hideChainSelect ? <ChainSelect formType={formType} /> : null}\n {!hideSearchTokenInput && (\n <Box\n sx={{\n mt: !hideChainSelect ? 2 : 0,\n }}\n >\n <SearchTokenInput formType={formType} />\n </Box>\n )}\n </Box>\n <TokenList\n // Rerender component if variant changes (since chains tiles change height)\n key={\n hideChainSelect\n ? 'without-offset'\n : isMobile\n ? 'with-offset-mobile'\n : 'with-offset'\n }\n headerRef={headerRef}\n formType={formType}\n />\n </FullPageContainer>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;AAgBA,MAAa,mBAAsC,EAAE,eAAe;AAClE,8BAA6B;CAE7B,MAAM,YAAY,OAAoB,KAAK;CAE3C,MAAM,WAAW,aAAa;CAE9B,MAAM,EAAE,YAAY,UAAU,sBAAsB,iBAAiB;CACrE,MAAM,cAAc,gBAAgB;CAEpC,MAAM,EAAE,MAAM,gBAAgB;AAQ9B,WANE,aAAa,SACT,eAAe,WACb,EAAE,iBAAiB,GACnB,EAAE,cAAc,GAClB,EAAE,YAAY,CAEJ;CAEhB,MAAM,kBACH,eAAe,CAAC,mBAAmB,MAAM,uBACzC,YAAY,aAAa,QAC1B,UAAU,
|
|
1
|
+
{"version":3,"file":"SelectTokenPage.js","names":[],"sources":["../../../../src/pages/SelectTokenPage/SelectTokenPage.tsx"],"sourcesContent":["import { Box, type Theme, useMediaQuery } from '@mui/material'\nimport type { FC } from 'react'\nimport { useRef } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { ChainSelect } from '../../components/ChainSelect/ChainSelect.js'\nimport { FullPageContainer } from '../../components/FullPageContainer.js'\nimport { TokenList } from '../../components/TokenList/TokenList.js'\nimport { useHeader } from '../../hooks/useHeader.js'\nimport { useScrollableOverflowHidden } from '../../hooks/useScrollableContainer.js'\nimport { useSwapOnly } from '../../hooks/useSwapOnly.js'\nimport { useWideVariant } from '../../hooks/useWideVariant.js'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport type { FormTypeProps } from '../../stores/form/types.js'\nimport { HiddenUI } from '../../types/widget.js'\nimport { SearchTokenInput } from './SearchTokenInput.js'\n\nexport const SelectTokenPage: FC<FormTypeProps> = ({ formType }) => {\n useScrollableOverflowHidden()\n\n const headerRef = useRef<HTMLElement>(null)\n\n const swapOnly = useSwapOnly()\n\n const { subvariant, hiddenUI, subvariantOptions } = useWidgetConfig()\n const wideVariant = useWideVariant()\n\n const { t } = useTranslation()\n const title =\n formType === 'from'\n ? subvariant === 'custom'\n ? t('header.payWith')\n : t('header.from')\n : t('header.to')\n\n useHeader(title)\n\n const hideChainSelect =\n (wideVariant && !subvariantOptions?.wide?.disableChainSidebar) ||\n (swapOnly && formType === 'to') ||\n hiddenUI?.includes(HiddenUI.ChainSelect)\n\n const isMobile = useMediaQuery((theme: Theme) =>\n theme.breakpoints.down(theme.breakpoints.values.xs)\n )\n const hideSearchTokenInput = hiddenUI?.includes(HiddenUI.SearchTokenInput)\n\n const hasHeader = !hideChainSelect || !hideSearchTokenInput\n\n return (\n <FullPageContainer disableGutters>\n <Box\n ref={headerRef}\n sx={{\n pb: hasHeader ? 2 : 0,\n px: 3,\n }}\n >\n {!hideChainSelect ? <ChainSelect formType={formType} /> : null}\n {!hideSearchTokenInput && (\n <Box\n sx={{\n mt: !hideChainSelect ? 2 : 0,\n }}\n >\n <SearchTokenInput formType={formType} />\n </Box>\n )}\n </Box>\n <TokenList\n // Rerender component if variant changes (since chains tiles change height)\n key={\n hideChainSelect\n ? 'without-offset'\n : isMobile\n ? 'with-offset-mobile'\n : 'with-offset'\n }\n headerRef={headerRef}\n formType={formType}\n />\n </FullPageContainer>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;AAgBA,MAAa,mBAAsC,EAAE,eAAe;AAClE,8BAA6B;CAE7B,MAAM,YAAY,OAAoB,KAAK;CAE3C,MAAM,WAAW,aAAa;CAE9B,MAAM,EAAE,YAAY,UAAU,sBAAsB,iBAAiB;CACrE,MAAM,cAAc,gBAAgB;CAEpC,MAAM,EAAE,MAAM,gBAAgB;AAQ9B,WANE,aAAa,SACT,eAAe,WACb,EAAE,iBAAiB,GACnB,EAAE,cAAc,GAClB,EAAE,YAAY,CAEJ;CAEhB,MAAM,kBACH,eAAe,CAAC,mBAAmB,MAAM,uBACzC,YAAY,aAAa,QAC1B,UAAU,SAAA,cAA8B;CAE1C,MAAM,WAAW,eAAe,UAC9B,MAAM,YAAY,KAAK,MAAM,YAAY,OAAO,GAAG,CACpD;CACD,MAAM,uBAAuB,UAAU,SAAA,mBAAmC;AAI1E,QACE,qBAAC,mBAAD;EAAmB,gBAAA;YAAnB,CACE,qBAAC,KAAD;GACE,KAAK;GACL,IAAI;IACF,IAPU,CAAC,mBAAmB,CAAC,uBAOf,IAAI;IACpB,IAAI;IACL;aALH,CAOG,CAAC,kBAAkB,oBAAC,aAAD,EAAuB,UAAY,CAAA,GAAG,MACzD,CAAC,wBACA,oBAAC,KAAD;IACE,IAAI,EACF,IAAI,CAAC,kBAAkB,IAAI,GAC5B;cAED,oBAAC,kBAAD,EAA4B,UAAY,CAAA;IACpC,CAAA,CAEJ;MACN,oBAAC,WAAD;GASa;GACD;GACV,EARE,kBACI,mBACA,WACE,uBACA,cAIR,CACgB"}
|
|
@@ -22,7 +22,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
22
22
|
import { useTranslation } from "react-i18next";
|
|
23
23
|
import ContentCopyRounded from "@mui/icons-material/ContentCopyRounded";
|
|
24
24
|
import OpenInNewRounded from "@mui/icons-material/OpenInNewRounded";
|
|
25
|
-
import DeleteOutline from "@mui/icons-material/
|
|
25
|
+
import DeleteOutline from "@mui/icons-material/DeleteOutlined";
|
|
26
26
|
import TurnedIn from "@mui/icons-material/TurnedIn";
|
|
27
27
|
//#region src/pages/SendToWallet/BookmarksPage.tsx
|
|
28
28
|
const BookmarksPage = () => {
|