@velora-dex/widget 0.2.1 → 0.2.3-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/README.md +3 -3
  2. package/dist/assets/price-impact.svg.js +12 -0
  3. package/dist/assets/price-impact.svg.js.map +1 -0
  4. package/dist/components/ui/accordion.js +1 -1
  5. package/dist/components/ui/accordion.js.map +1 -1
  6. package/dist/components/ui/progress.d.ts.map +1 -1
  7. package/dist/components/ui/progress.js.map +1 -1
  8. package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.d.ts +3 -1
  9. package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.d.ts.map +1 -1
  10. package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js +70 -64
  11. package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js.map +1 -1
  12. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/RegularTokenList.d.ts +3 -1
  13. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/RegularTokenList.d.ts.map +1 -1
  14. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/RegularTokenList.js +39 -21
  15. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/RegularTokenList.js.map +1 -1
  16. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListBody.d.ts.map +1 -1
  17. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListBody.js +1 -1
  18. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListBody.js.map +1 -1
  19. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListRow.js +1 -1
  20. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListRow.js.map +1 -1
  21. package/dist/components/widget/Drawer/state/useDrawerControls.d.ts.map +1 -1
  22. package/dist/components/widget/Drawer/state/useDrawerControls.js +5 -0
  23. package/dist/components/widget/Drawer/state/useDrawerControls.js.map +1 -1
  24. package/dist/components/widget/ImportToken/ImportToken.d.ts.map +1 -1
  25. package/dist/components/widget/ImportToken/ImportToken.js +1 -1
  26. package/dist/components/widget/ImportToken/ImportToken.js.map +1 -1
  27. package/dist/components/widget/LimitOrdersDrawer/LimitOrderDetails/Controls.js +4 -4
  28. package/dist/components/widget/LimitOrdersDrawer/LimitOrderDetails/Controls.js.map +1 -1
  29. package/dist/components/widget/LimitOrdersDrawer/LimitOrderListItem.d.ts.map +1 -1
  30. package/dist/components/widget/LimitOrdersDrawer/LimitOrderListItem.js +21 -18
  31. package/dist/components/widget/LimitOrdersDrawer/LimitOrderListItem.js.map +1 -1
  32. package/dist/components/widget/NetworkSwitcher/types.d.ts +1 -0
  33. package/dist/components/widget/NetworkSwitcher/types.d.ts.map +1 -1
  34. package/dist/components/widget/OtcOrdersDrawer/OtcOrderDetails/OtcOrderDetails.d.ts.map +1 -1
  35. package/dist/components/widget/OtcOrdersDrawer/OtcOrderDetails/OtcOrderDetails.js +33 -39
  36. package/dist/components/widget/OtcOrdersDrawer/OtcOrderDetails/OtcOrderDetails.js.map +1 -1
  37. package/dist/components/widget/RowVirtualizer/RowVirtualizerFixed.d.ts.map +1 -1
  38. package/dist/components/widget/RowVirtualizer/RowVirtualizerFixed.js +1 -1
  39. package/dist/components/widget/RowVirtualizer/RowVirtualizerFixed.js.map +1 -1
  40. package/dist/components/widget/SelectToken/SelectTokenButton.d.ts +6 -2
  41. package/dist/components/widget/SelectToken/SelectTokenButton.d.ts.map +1 -1
  42. package/dist/components/widget/SelectToken/SelectTokenButton.js +84 -76
  43. package/dist/components/widget/SelectToken/SelectTokenButton.js.map +1 -1
  44. package/dist/components/widget/SelectToken/types.d.ts +2 -0
  45. package/dist/components/widget/SelectToken/types.d.ts.map +1 -1
  46. package/dist/components/widget/TokenInput/index.d.ts.map +1 -1
  47. package/dist/components/widget/TokenInput/index.js +43 -41
  48. package/dist/components/widget/TokenInput/index.js.map +1 -1
  49. package/dist/components/widget/WrapEth/hooks/useSubmitDepositTxMutation.d.ts +1 -1
  50. package/dist/components/widget/WrapEth/hooks/useSubmitDepositTxMutation.d.ts.map +1 -1
  51. package/dist/components/widget/WrapEth/hooks/useSubmitDepositTxMutation.js.map +1 -1
  52. package/dist/configurator/Configurator.d.ts.map +1 -1
  53. package/dist/core/Toaster.js +1 -1
  54. package/dist/core/Toaster.js.map +1 -1
  55. package/dist/core/Updaters.d.ts.map +1 -1
  56. package/dist/core/Updaters.js +2 -0
  57. package/dist/core/Updaters.js.map +1 -1
  58. package/dist/core/button/hooks/useWidgetButtonExtraProps.d.ts.map +1 -1
  59. package/dist/core/button/hooks/useWidgetButtonExtraProps.js +5 -1
  60. package/dist/core/button/hooks/useWidgetButtonExtraProps.js.map +1 -1
  61. package/dist/core/index.d.ts.map +1 -1
  62. package/dist/core/index.js.map +1 -1
  63. package/dist/core/limit/state/selectedTokenActionsAtom.d.ts.map +1 -1
  64. package/dist/core/limit/state/selectedTokenActionsAtom.js.map +1 -1
  65. package/dist/core/limit/state/selectedTokenAtom.d.ts.map +1 -1
  66. package/dist/core/limit/state/selectedTokenAtom.js +5 -1
  67. package/dist/core/limit/state/selectedTokenAtom.js.map +1 -1
  68. package/dist/core/limit/useLimitTokenToInputProps.d.ts +7 -0
  69. package/dist/core/limit/useLimitTokenToInputProps.d.ts.map +1 -1
  70. package/dist/core/limit/useLimitTokenToInputProps.js +167 -23
  71. package/dist/core/limit/useLimitTokenToInputProps.js.map +1 -1
  72. package/dist/core/otc/state/selectedTokenAtom.d.ts.map +1 -1
  73. package/dist/core/otc/state/selectedTokenAtom.js +3 -1
  74. package/dist/core/otc/state/selectedTokenAtom.js.map +1 -1
  75. package/dist/core/otc/useOtcTokenToInputProps.d.ts.map +1 -1
  76. package/dist/core/otc/useOtcTokenToInputProps.js +42 -16
  77. package/dist/core/otc/useOtcTokenToInputProps.js.map +1 -1
  78. package/dist/core/swapDetails/fees.d.ts.map +1 -1
  79. package/dist/core/swapDetails/fees.js +4 -2
  80. package/dist/core/swapDetails/fees.js.map +1 -1
  81. package/dist/core/swapDetails/orderRouting.d.ts.map +1 -1
  82. package/dist/core/swapDetails/orderRouting.js +7 -3
  83. package/dist/core/swapDetails/orderRouting.js.map +1 -1
  84. package/dist/core/swapDetails/priceImpact.d.ts +3 -1
  85. package/dist/core/swapDetails/priceImpact.d.ts.map +1 -1
  86. package/dist/core/swapDetails/priceImpact.js +6 -2
  87. package/dist/core/swapDetails/priceImpact.js.map +1 -1
  88. package/dist/core/swapDetails/useSwapDetailsListProps.d.ts.map +1 -1
  89. package/dist/core/swapDetails/useSwapDetailsListProps.js +155 -42
  90. package/dist/core/swapDetails/useSwapDetailsListProps.js.map +1 -1
  91. package/dist/core/swapDetails/youGet.d.ts.map +1 -1
  92. package/dist/core/swapDetails/youGet.js +5 -2
  93. package/dist/core/swapDetails/youGet.js.map +1 -1
  94. package/dist/events/hooks/useOnPriceUpdates.d.ts +2 -0
  95. package/dist/events/hooks/useOnPriceUpdates.d.ts.map +1 -0
  96. package/dist/events/hooks/useOnPriceUpdates.js +71 -0
  97. package/dist/events/hooks/useOnPriceUpdates.js.map +1 -0
  98. package/dist/events/types/priceChange.d.ts +7 -0
  99. package/dist/events/types/priceChange.d.ts.map +1 -1
  100. package/dist/hooks/otc/mutations/useCancelLimitOrder.d.ts +4 -4
  101. package/dist/hooks/otc/mutations/useCancelLimitOrder.d.ts.map +1 -1
  102. package/dist/hooks/otc/mutations/useCancelLimitOrder.js +2 -2
  103. package/dist/hooks/otc/mutations/useCancelLimitOrder.js.map +1 -1
  104. package/dist/hooks/otc/mutations/useCreateLimitOrder.d.ts +2 -2
  105. package/dist/hooks/otc/mutations/useCreateLimitOrder.d.ts.map +1 -1
  106. package/dist/hooks/otc/mutations/useCreateLimitOrder.js +2 -2
  107. package/dist/hooks/otc/mutations/useCreateLimitOrder.js.map +1 -1
  108. package/dist/hooks/otc/mutations/useFillOrder.d.ts +5 -5
  109. package/dist/hooks/otc/mutations/useFillOrder.d.ts.map +1 -1
  110. package/dist/hooks/otc/mutations/useFillOrder.js.map +1 -1
  111. package/dist/hooks/swap/prices/delta/bridge/useBridgedDeposit.d.ts.map +1 -1
  112. package/dist/hooks/swap/prices/delta/mutations/useCancelLimitDeltaOrders.d.ts +2 -2
  113. package/dist/hooks/swap/prices/delta/mutations/useCancelLimitDeltaOrders.d.ts.map +1 -1
  114. package/dist/hooks/swap/prices/delta/mutations/useCancelLimitDeltaOrders.js.map +1 -1
  115. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts +2 -2
  116. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts.map +1 -1
  117. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js +2 -2
  118. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js.map +1 -1
  119. package/dist/hooks/swap/prices/delta/mutations/useCreatePreSignableDeltaOrder.d.ts +2 -2
  120. package/dist/hooks/swap/prices/delta/mutations/useCreatePreSignableDeltaOrder.d.ts.map +1 -1
  121. package/dist/hooks/swap/prices/delta/mutations/useCreatePreSignableDeltaOrder.js.map +1 -1
  122. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.d.ts +2 -2
  123. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.d.ts.map +1 -1
  124. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.js.map +1 -1
  125. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts +21 -1
  126. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts.map +1 -1
  127. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js +117 -29
  128. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js.map +1 -1
  129. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.d.ts.map +1 -1
  130. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js.map +1 -1
  131. package/dist/hooks/swap/prices/market/mutations/useBuildTx.d.ts +2 -2
  132. package/dist/hooks/swap/prices/market/mutations/useBuildTx.d.ts.map +1 -1
  133. package/dist/hooks/swap/prices/market/mutations/useBuildTx.js.map +1 -1
  134. package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.d.ts +14 -1
  135. package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.d.ts.map +1 -1
  136. package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.js +130 -98
  137. package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.js.map +1 -1
  138. package/dist/hooks/swap/prices/useSwapPrices.d.ts +10 -0
  139. package/dist/hooks/swap/prices/useSwapPrices.d.ts.map +1 -1
  140. package/dist/hooks/swap/prices/useSwapPrices.js +96 -4
  141. package/dist/hooks/swap/prices/useSwapPrices.js.map +1 -1
  142. package/dist/hooks/tokens/data/useCombineTokensWithFetched.d.ts +7 -1
  143. package/dist/hooks/tokens/data/useCombineTokensWithFetched.d.ts.map +1 -1
  144. package/dist/hooks/tokens/data/useCombineTokensWithFetched.js +81 -67
  145. package/dist/hooks/tokens/data/useCombineTokensWithFetched.js.map +1 -1
  146. package/dist/hooks/tokens/useAllTokensWithFilter.js +1 -1
  147. package/dist/hooks/tokens/useAllTokensWithFilter.js.map +1 -1
  148. package/dist/lib/utils/useDateNow.d.ts +2 -0
  149. package/dist/lib/utils/useDateNow.d.ts.map +1 -0
  150. package/dist/lib/utils/useDateNow.js +7 -0
  151. package/dist/lib/utils/useDateNow.js.map +1 -0
  152. package/dist/styles.css +3 -4
  153. package/dist/tokens/state/addImportedTokenAtom.d.ts.map +1 -1
  154. package/dist/tokens/state/addImportedTokenAtom.js +6 -23
  155. package/dist/tokens/state/addImportedTokenAtom.js.map +1 -1
  156. package/package.json +8 -7
@@ -6,108 +6,122 @@ import { constructToken } from '@velora-dex/sdk';
6
6
  import { isBlacklistedToken } from '../../../tokens/blacklist.js';
7
7
  import { useAllEnabledChains } from '../../../core/state/enabledChainsAtom.js';
8
8
 
9
- const useCombineTokensWithFetched = (allTokenRows, tokenFilter) => {
10
- const $ = distExports.c(22);
11
- let t0;
9
+ const useCombineTokensWithFetched = (t0) => {
10
+ const $ = distExports.c(19);
11
+ const {
12
+ allTokenRows,
13
+ tokenFilter,
14
+ selectableChains
15
+ } = t0;
16
+ let t1;
12
17
  if ($[0] !== tokenFilter) {
13
- t0 = isAddress(tokenFilter) && !isBlacklistedToken({
18
+ t1 = isAddress(tokenFilter) && !isBlacklistedToken({
14
19
  address: tokenFilter
15
20
  });
16
21
  $[0] = tokenFilter;
17
- $[1] = t0;
22
+ $[1] = t1;
18
23
  } else {
19
- t0 = $[1];
24
+ t1 = $[1];
20
25
  }
21
- const isTokenFilterValidAddress = t0;
26
+ const isTokenFilterValidAddress = t1;
22
27
  const enabledChains = useAllEnabledChains();
23
- let t1;
24
- if ($[2] !== allTokenRows || $[3] !== enabledChains || $[4] !== isTokenFilterValidAddress) {
25
- t1 = !isTokenFilterValidAddress ? enabledChains : enabledChains.filter((chainId) => !allTokenRows.some((token) => token.network === chainId));
26
- $[2] = allTokenRows;
27
- $[3] = enabledChains;
28
- $[4] = isTokenFilterValidAddress;
29
- $[5] = t1;
30
- } else {
31
- t1 = $[5];
28
+ let chainsToFetchOn = selectableChains || enabledChains;
29
+ if (isTokenFilterValidAddress) {
30
+ let t22;
31
+ if ($[2] !== allTokenRows) {
32
+ t22 = new Set(allTokenRows.map(_temp));
33
+ $[2] = allTokenRows;
34
+ $[3] = t22;
35
+ } else {
36
+ t22 = $[3];
37
+ }
38
+ const foundChains = t22;
39
+ let t32;
40
+ if ($[4] !== chainsToFetchOn || $[5] !== foundChains) {
41
+ let t42;
42
+ if ($[7] !== foundChains) {
43
+ t42 = (chainId) => !foundChains.has(chainId);
44
+ $[7] = foundChains;
45
+ $[8] = t42;
46
+ } else {
47
+ t42 = $[8];
48
+ }
49
+ t32 = chainsToFetchOn.filter(t42);
50
+ $[4] = chainsToFetchOn;
51
+ $[5] = foundChains;
52
+ $[6] = t32;
53
+ } else {
54
+ t32 = $[6];
55
+ }
56
+ chainsToFetchOn = t32;
32
57
  }
33
- const chainsWithNoTokenFound = t1;
34
58
  let t2;
35
- if ($[6] !== isTokenFilterValidAddress || $[7] !== tokenFilter) {
59
+ if ($[9] !== isTokenFilterValidAddress || $[10] !== tokenFilter) {
36
60
  t2 = isTokenFilterValidAddress ? [tokenFilter] : [];
37
- $[6] = isTokenFilterValidAddress;
38
- $[7] = tokenFilter;
39
- $[8] = t2;
61
+ $[9] = isTokenFilterValidAddress;
62
+ $[10] = tokenFilter;
63
+ $[11] = t2;
40
64
  } else {
41
- t2 = $[8];
65
+ t2 = $[11];
42
66
  }
43
67
  let t3;
44
- if ($[9] !== chainsWithNoTokenFound || $[10] !== t2) {
68
+ if ($[12] !== chainsToFetchOn || $[13] !== t2) {
45
69
  t3 = {
46
70
  addresses: t2,
47
- chainIds: chainsWithNoTokenFound
71
+ chainIds: chainsToFetchOn
48
72
  };
49
- $[9] = chainsWithNoTokenFound;
50
- $[10] = t2;
51
- $[11] = t3;
73
+ $[12] = chainsToFetchOn;
74
+ $[13] = t2;
75
+ $[14] = t3;
52
76
  } else {
53
- t3 = $[11];
77
+ t3 = $[14];
54
78
  }
55
79
  const tokenRowsFetched = useFetchTokens(t3);
80
+ const possibleTokenImage = !isTokenFilterValidAddress ? void 0 : allTokenRows.find(_temp2)?.img;
56
81
  const tokensFetched = tokenRowsFetched.tokens;
57
82
  let t4;
58
- if ($[12] !== tokensFetched) {
59
- t4 = tokensFetched.reduce(_temp, {});
60
- $[12] = tokensFetched;
61
- $[13] = t4;
83
+ if ($[15] !== tokensFetched) {
84
+ t4 = tokensFetched.reduce(_temp3, {});
85
+ $[15] = tokensFetched;
86
+ $[16] = t4;
62
87
  } else {
63
- t4 = $[13];
88
+ t4 = $[16];
64
89
  }
65
90
  const tokenFetchedAddressesMap = t4;
66
91
  let t5;
67
- if ($[14] !== tokenFetchedAddressesMap) {
92
+ if ($[17] !== tokenFetchedAddressesMap) {
68
93
  t5 = {
69
94
  addressesMap: tokenFetchedAddressesMap
70
95
  };
71
- $[14] = tokenFetchedAddressesMap;
72
- $[15] = t5;
96
+ $[17] = tokenFetchedAddressesMap;
97
+ $[18] = t5;
73
98
  } else {
74
- t5 = $[15];
99
+ t5 = $[18];
75
100
  }
76
101
  const attachTokenBalance = useAttachTokenBalanceMultichain(t5);
77
- let t6;
78
- if ($[16] !== allTokenRows || $[17] !== attachTokenBalance || $[18] !== tokenRowsFetched.tokens) {
79
- let t7;
80
- if ($[20] !== attachTokenBalance) {
81
- t7 = (token_1) => attachTokenBalance({
82
- ...constructToken(token_1),
83
- network: token_1.network,
84
- fetchedOnChain: true
85
- });
86
- $[20] = attachTokenBalance;
87
- $[21] = t7;
88
- } else {
89
- t7 = $[21];
90
- }
91
- const tokensFetchedWithBalance = tokenRowsFetched.tokens.map(t7);
92
- const combinedTokenRows = [...allTokenRows, ...tokensFetchedWithBalance];
93
- t6 = {
94
- tokenRowsCombined: combinedTokenRows
95
- };
96
- $[16] = allTokenRows;
97
- $[17] = attachTokenBalance;
98
- $[18] = tokenRowsFetched.tokens;
99
- $[19] = t6;
100
- } else {
101
- t6 = $[19];
102
- }
103
- return t6;
102
+ const tokensFetchedWithBalance = tokenRowsFetched.tokens.map((token_2) => attachTokenBalance({
103
+ ...constructToken(token_2),
104
+ network: token_2.network,
105
+ fetchedOnChain: true,
106
+ img: possibleTokenImage
107
+ }));
108
+ const combinedTokenRows = [...allTokenRows, ...tokensFetchedWithBalance];
109
+ return {
110
+ tokenRowsCombined: combinedTokenRows
111
+ };
104
112
  };
105
- function _temp(acc, token_0) {
106
- const chainId_0 = token_0.network;
113
+ function _temp(token) {
114
+ return token.network;
115
+ }
116
+ function _temp2(token_0) {
117
+ return token_0.img;
118
+ }
119
+ function _temp3(acc, token_1) {
120
+ const chainId_0 = token_1.network;
107
121
  if (!acc[chainId_0]) {
108
122
  acc[chainId_0] = [];
109
123
  }
110
- acc[chainId_0].push(token_0.address);
124
+ acc[chainId_0].push(token_1.address);
111
125
  return acc;
112
126
  }
113
127
 
@@ -1 +1 @@
1
- {"version":3,"file":"useCombineTokensWithFetched.js","sources":["../../../../src/hooks/tokens/data/useCombineTokensWithFetched.ts"],"sourcesContent":["import type { TokenMaybeWithUsdBalance } from \"@/tokens/state/types\";\nimport { useFetchTokens } from \"./useFetchTokens\";\nimport { isAddress } from \"viem\";\nimport type { TokenRowForFetchedToken } from \"@/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListRow\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useAttachTokenBalanceMultichain } from \"../balances/useAttachTokenBalanceMultichain\";\nimport { constructToken } from \"@velora-dex/sdk\";\nimport { isBlacklistedToken } from \"@/tokens/blacklist\";\nimport { useAllEnabledChains } from \"@/core/state/enabledChainsAtom\";\n\ntype UseCombineTokensWithFetchedReturn = {\n tokenRowsCombined: TokenRowForFetchedToken[];\n};\nexport const useCombineTokensWithFetched = (\n allTokenRows: TokenMaybeWithUsdBalance[],\n tokenFilter: string\n): UseCombineTokensWithFetchedReturn => {\n const isTokenFilterValidAddress =\n isAddress(tokenFilter) && !isBlacklistedToken({ address: tokenFilter });\n\n // fetch on enabled chains only\n const enabledChains = useAllEnabledChains();\n const chainsWithNoTokenFound = !isTokenFilterValidAddress\n ? enabledChains\n : enabledChains.filter(\n // if exact match by address found in tokenLists, no need to fetch Token data onchain for that chain\n (chainId) => !allTokenRows.some((token) => token.network === chainId)\n );\n\n // if user's typed filter is a valid address, fetch tokens for all networks (as it's possible that lists data not enough -- even if token is spotted in one of the lists for one chain, it could be missing in another one)\n const tokenRowsFetched = useFetchTokens({\n addresses: isTokenFilterValidAddress ? [tokenFilter] : [],\n chainIds: chainsWithNoTokenFound,\n });\n\n const tokensFetched = tokenRowsFetched.tokens;\n\n const tokenFetchedAddressesMap = tokensFetched.reduce<\n Partial<Record<SupportedChainId, string[]>>\n >((acc, token) => {\n const chainId = token.network;\n if (!acc[chainId]) acc[chainId] = [];\n\n acc[chainId].push(token.address);\n return acc;\n }, {});\n\n const attachTokenBalance = useAttachTokenBalanceMultichain({\n addressesMap: tokenFetchedAddressesMap,\n });\n\n const tokensFetchedWithBalance =\n tokenRowsFetched.tokens.map<TokenRowForFetchedToken>((token) =>\n attachTokenBalance({\n ...constructToken(token),\n network: token.network,\n fetchedOnChain: true,\n })\n );\n\n const combinedTokenRows: TokenRowForFetchedToken[] = [\n ...allTokenRows,\n ...tokensFetchedWithBalance, // tokens not present in allTokenRows,\n // because chains to fetch on exclude chains found for exact token in another chain\n ];\n\n return {\n tokenRowsCombined: combinedTokenRows,\n };\n};\n"],"names":["useCombineTokensWithFetched","allTokenRows","tokenFilter","$","_c","t0","isAddress","isBlacklistedToken","address","isTokenFilterValidAddress","enabledChains","useAllEnabledChains","t1","filter","chainId","some","token","network","chainsWithNoTokenFound","t2","t3","addresses","chainIds","tokenRowsFetched","useFetchTokens","tokensFetched","tokens","t4","reduce","_temp","tokenFetchedAddressesMap","t5","addressesMap","attachTokenBalance","useAttachTokenBalanceMultichain","t6","t7","token_1","constructToken","fetchedOnChain","tokensFetchedWithBalance","map","combinedTokenRows","tokenRowsCombined","acc","token_0","chainId_0","push"],"mappings":";;;;;;;;AAaO,MAAMA,2BAAAA,GAA8BA,CAAAC,YAAAA,EAAAC,WAAAA,KAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,EAAA,CAAA;AAAA,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAAF,CAAAA,QAAAD,WAAAA,EAAA;AAKvCG,IAAAA,EAAAA,GAAAC,SAAAA,CAAUJ,WAA4D,CAAA,IAAtE,CAA2BK,kBAAAA,CAAmB;AAAA,MAAAC,OAAAA,EAAWN;AAAAA,KAAa,CAAA;AAACC,IAAAA,CAAAA,MAAAD,WAAAA;AAAAC,IAAAA,CAAAA,MAAAE,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAF,EAAA,CAAA,CAAA;AAAA,EAAA;AADzE,EAAA,MAAAM,yBAAAA,GACEJ,EAAAA;AAGF,EAAA,MAAAK,gBAAsBC,mBAAAA,EAAoB;AAAE,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAAT,CAAAA,CAAA,CAAA,CAAA,KAAAF,YAAAA,IAAAE,CAAAA,QAAAO,aAAAA,IAAAP,CAAAA,CAAA,CAAA,CAAA,KAAAM,yBAAAA,EAAA;AACbG,IAAAA,EAAAA,GAAA,CAACH,yBAAAA,GAADC,aAAAA,GAE3BA,aAAAA,CAAaG,MAAAA,CAEXC,CAAAA,OAAAA,KAAa,CAACb,YAAAA,CAAYc,IAAAA,CAAMC,CAAAA,KAAAA,KAAWA,KAAAA,CAAKC,OAAAA,KAAaH,OAAO,CACtE,CAAA;AAACX,IAAAA,CAAAA,MAAAF,YAAAA;AAAAE,IAAAA,CAAAA,MAAAO,aAAAA;AAAAP,IAAAA,CAAAA,MAAAM,yBAAAA;AAAAN,IAAAA,CAAAA,MAAAS,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAT,EAAA,CAAA,CAAA;AAAA,EAAA;AALL,EAAA,MAAAe,sBAAAA,GAA+BN,EAAAA;AAKzB,EAAA,IAAAO,EAAAA;AAAA,EAAA,IAAAhB,EAAA,CAAA,CAAA,KAAAM,6BAAAN,CAAAA,QAAAD,WAAAA,EAAA;AAIOiB,IAAAA,EAAAA,GAAAV,yBAAAA,GAAA,CAA6BP,WAAW,CAAA,GAAxC,EAAA;AAA8CC,IAAAA,CAAAA,MAAAM,yBAAAA;AAAAN,IAAAA,CAAAA,MAAAD,WAAAA;AAAAC,IAAAA,CAAAA,MAAAgB,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAhB,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,IAAAiB,EAAAA;AAAA,EAAA,IAAAjB,EAAA,CAAA,CAAA,KAAAe,0BAAAf,CAAAA,SAAAgB,EAAAA,EAAA;AADnBC,IAAAA,EAAAA,GAAA;AAAA,MAAAC,SAAAA,EAC3BF,EAAAA;AAAAA,MAA8CG,QAAAA,EAC/CJ;AAAAA,KACZ;AAACf,IAAAA,CAAAA,MAAAe,sBAAAA;AAAAf,IAAAA,CAAAA,OAAAgB,EAAAA;AAAAhB,IAAAA,CAAAA,OAAAiB,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAjB,EAAA,EAAA,CAAA;AAAA,EAAA;AAHD,EAAA,MAAAoB,gBAAAA,GAAyBC,eAAeJ,EAGvC,CAAA;AAED,EAAA,MAAAK,gBAAsBF,gBAAAA,CAAgBG,MAAAA;AAAQ,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAAxB,CAAAA,SAAAsB,aAAAA,EAAA;AAEbE,IAAAA,EAAAA,GAAAF,aAAAA,CAAaG,MAAAA,CAE5CC,KAAAA,EAMC,EAAE,CAAA;AAAC1B,IAAAA,CAAAA,OAAAsB,aAAAA;AAAAtB,IAAAA,CAAAA,OAAAwB,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAxB,EAAA,EAAA,CAAA;AAAA,EAAA;AARN,EAAA,MAAA2B,wBAAAA,GAAiCH,EAAAA;AAQ1B,EAAA,IAAAI,EAAAA;AAAA,EAAA,IAAA5B,CAAAA,SAAA2B,wBAAAA,EAAA;AAEoDC,IAAAA,EAAAA,GAAA;AAAA,MAAAC,YAAAA,EAC3CF;AAAAA,KAChB;AAAC3B,IAAAA,CAAAA,OAAA2B,wBAAAA;AAAA3B,IAAAA,CAAAA,OAAA4B,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAA5B,EAAA,EAAA,CAAA;AAAA,EAAA;AAFD,EAAA,MAAA8B,kBAAAA,GAA2BC,gCAAgCH,EAE1D,CAAA;AAAE,EAAA,IAAAI,EAAAA;AAAA,EAAA,IAAAhC,CAAAA,CAAA,EAAA,CAAA,KAAAF,YAAAA,IAAAE,CAAAA,CAAA,EAAA,CAAA,KAAA8B,kBAAAA,IAAA9B,CAAAA,CAAA,EAAA,CAAA,KAAAoB,gBAAAA,CAAAG,MAAAA,EAAA;AAAA,IAAA,IAAAU,EAAAA;AAAA,IAAA,IAAAjC,CAAAA,SAAA8B,kBAAAA,EAAA;AAGoDG,MAAAA,EAAAA,GAAAC,aACnDJ,kBAAAA,CAAmB;AAAA,QAAA,GACdK,eAAetB,OAAK,CAAA;AAAA,QAACC,SACfD,OAAAA,CAAKC,OAAAA;AAAAA,QAAQsB,cAAAA,EACN;AAAA,OACjB,CAAA;AAACpC,MAAAA,CAAAA,OAAA8B,kBAAAA;AAAA9B,MAAAA,CAAAA,OAAAiC,EAAAA;AAAAA,IAAA,CAAA,MAAA;AAAAA,MAAAA,EAAAA,GAAAjC,EAAA,EAAA,CAAA;AAAA,IAAA;AANN,IAAA,MAAAqC,wBAAAA,GACEjB,gBAAAA,CAAgBG,MAAAA,CAAOe,GAAAA,CAA8BL,EAMrD,CAAA;AAEF,IAAA,MAAAM,iBAAAA,GAAqD,CAAA,GAChDzC,YAAAA,EAAY,GACZuC,wBAAwB,CAAA;AAItBL,IAAAA,EAAAA,GAAA;AAAA,MAAAQ,iBAAAA,EACcD;AAAAA,KACrB;AAACvC,IAAAA,CAAAA,OAAAF,YAAAA;AAAAE,IAAAA,CAAAA,OAAA8B,kBAAAA;AAAA9B,IAAAA,CAAAA,CAAA,EAAA,IAAAoB,gBAAAA,CAAAG,MAAAA;AAAAvB,IAAAA,CAAAA,OAAAgC,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAhC,EAAA,EAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAFMgC,EAAAA;AAEN;AAvDwC,SAAAN,KAAAA,CAAAe,KAAAC,OAAAA,EAAA;AA2BvC,EAAA,MAAAC,YAAgB9B,OAAAA,CAAKC,OAAAA;AACrB,EAAA,IAAI,CAAC2B,GAAAA,CAAI9B,SAAO,CAAA,EAAC;AAAE8B,IAAAA,GAAAA,CAAI9B,SAAO,IAAI,EAAA;AAAA,EAAH;AAE/B8B,EAAAA,GAAAA,CAAI9B,SAAO,CAAA,CAACiC,IAAAA,CAAM/B,OAAAA,CAAKR,OAAQ,CAAA;AAAC,EAAA,OACzBoC,GAAAA;AAAG;;;;"}
1
+ {"version":3,"file":"useCombineTokensWithFetched.js","sources":["../../../../src/hooks/tokens/data/useCombineTokensWithFetched.ts"],"sourcesContent":["import type { TokenMaybeWithUsdBalance } from \"@/tokens/state/types\";\nimport { useFetchTokens } from \"./useFetchTokens\";\nimport { isAddress } from \"viem\";\nimport type { TokenRowForFetchedToken } from \"@/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListRow\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useAttachTokenBalanceMultichain } from \"../balances/useAttachTokenBalanceMultichain\";\nimport { constructToken } from \"@velora-dex/sdk\";\nimport { isBlacklistedToken } from \"@/tokens/blacklist\";\nimport { useAllEnabledChains } from \"@/core/state/enabledChainsAtom\";\n\ntype UseCombineTokensWithFetchedReturn = {\n tokenRowsCombined: TokenRowForFetchedToken[];\n};\n\ntype UseCombineTokensWithFetchedInput = {\n allTokenRows: TokenMaybeWithUsdBalance[];\n tokenFilter: string;\n selectableChains?: SupportedChainId[];\n};\nexport const useCombineTokensWithFetched = ({\n allTokenRows,\n tokenFilter,\n selectableChains,\n}: UseCombineTokensWithFetchedInput): UseCombineTokensWithFetchedReturn => {\n const isTokenFilterValidAddress =\n isAddress(tokenFilter) && !isBlacklistedToken({ address: tokenFilter });\n\n // fetch on enabled chains only\n const enabledChains = useAllEnabledChains();\n let chainsToFetchOn: SupportedChainId[] = selectableChains || enabledChains;\n if (isTokenFilterValidAddress) {\n const foundChains = new Set(allTokenRows.map((token) => token.network));\n // if exact match by address found in tokenLists, no need to fetch Token data onchain for that chain\n chainsToFetchOn = chainsToFetchOn.filter(\n (chainId) => !foundChains.has(chainId)\n );\n }\n\n // if user's typed filter is a valid address, fetch tokens for all networks (as it's possible that lists data not enough -- even if token is spotted in one of the lists for one chain, it could be missing in another one)\n const tokenRowsFetched = useFetchTokens({\n addresses: isTokenFilterValidAddress ? [tokenFilter] : [],\n chainIds: chainsToFetchOn,\n });\n\n /**\n no way to get token icon for a token which data we just fetched onchain when knowing its address only:\n 1. coingecko, coinmarket and other APIs that return token data including icon are paid only,\n 2. public repos with many token icons (trustwallet, cowswap) don't include more than our tokenLists already have,\n 3. if token was not found in any of the lists, there are likely no other bigger lists out there.\n BUT it is possible that tokenLists have this token (same address) on other chains, with icon present,\n we can assume if addresses are same then tokens are too, coincidences are unlikely, though in reality tokens sometimes have old vs new icon on different chains:\n case in point -- USDT and USDT0\n */\n const possibleTokenImage = !isTokenFilterValidAddress\n ? undefined\n : // tokens here are found by address, so they must be the same as the fetched ones but on different chains\n allTokenRows.find((token) => token.img)?.img;\n\n const tokensFetched = tokenRowsFetched.tokens;\n\n const tokenFetchedAddressesMap = tokensFetched.reduce<\n Partial<Record<SupportedChainId, string[]>>\n >((acc, token) => {\n const chainId = token.network;\n if (!acc[chainId]) acc[chainId] = [];\n\n acc[chainId].push(token.address);\n return acc;\n }, {});\n\n const attachTokenBalance = useAttachTokenBalanceMultichain({\n addressesMap: tokenFetchedAddressesMap,\n });\n\n const tokensFetchedWithBalance =\n tokenRowsFetched.tokens.map<TokenRowForFetchedToken>((token) =>\n attachTokenBalance({\n ...constructToken(token),\n network: token.network,\n fetchedOnChain: true,\n img: possibleTokenImage,\n })\n );\n\n const combinedTokenRows: TokenRowForFetchedToken[] = [\n ...allTokenRows,\n ...tokensFetchedWithBalance, // tokens not present in allTokenRows,\n // because chains to fetch on exclude chains found for exact token in another chain\n ];\n\n return {\n tokenRowsCombined: combinedTokenRows,\n };\n};\n"],"names":["useCombineTokensWithFetched","t0","$","_c","allTokenRows","tokenFilter","selectableChains","t1","isAddress","isBlacklistedToken","address","isTokenFilterValidAddress","enabledChains","useAllEnabledChains","chainsToFetchOn","t2","Set","map","_temp","foundChains","t3","t4","chainId","has","filter","addresses","chainIds","tokenRowsFetched","useFetchTokens","possibleTokenImage","undefined","find","_temp2","img","tokensFetched","tokens","reduce","_temp3","tokenFetchedAddressesMap","t5","addressesMap","attachTokenBalance","useAttachTokenBalanceMultichain","tokensFetchedWithBalance","token_2","constructToken","token","network","fetchedOnChain","combinedTokenRows","tokenRowsCombined","token_0","acc","token_1","chainId_0","push"],"mappings":"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"}
@@ -40,7 +40,7 @@ const useAllTokensWithFilter = (t0) => {
40
40
  tokenArray: allIncludedTokens
41
41
  });
42
42
  const isTokenFilterValidAddress = isAddress(tokenFilter);
43
- const searchOnAllChains = isTokenFilterValidAddress || filteredTokens.length === 0 && !!tokenFilter && searchOnOtherChainsIfNothingFound;
43
+ const searchOnAllChains = isTokenFilterValidAddress && searchOnOtherChainsIfNothingFound || filteredTokens.length === 0 && !!tokenFilter && searchOnOtherChainsIfNothingFound;
44
44
  const t3 = !searchOnAllChains ? emptyArray : void 0;
45
45
  let t4;
46
46
  if ($[4] !== t3) {
@@ -1 +1 @@
1
- {"version":3,"file":"useAllTokensWithFilter.js","sources":["../../../src/hooks/tokens/useAllTokensWithFilter.ts"],"sourcesContent":["import { sortTokens } from \"@/tokens/utils/sorting\";\nimport { filterTokens } from \"@/tokens/utils/filtering\";\nimport { useAllTokens } from \"@/tokens/hooks\";\nimport type { Token, TokenMaybeWithUsdBalance } from \"@/tokens/state/types\";\nimport { useAtomValue } from \"jotai\";\nimport { useMemo } from \"react\";\nimport { useNativeToken } from \"./useNativeToken\";\nimport { useAttachTokenBalanceMultichain } from \"./balances/useAttachTokenBalanceMultichain\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useChainId } from \"wagmi\";\nimport { useTokensFromAcross } from \"./useTokensFromAcross\";\nimport { emptyArray } from \"@/lib/constants\";\nimport { isAddress } from \"viem\";\nimport { allTokensByChainAtom } from \"@/tokens/state/allTokensByChainAtom\";\n\nexport const useAllTokensWithFilter = ({\n tokenFilter,\n forcedChainId,\n searchOnOtherChainsIfNothingFound,\n withETH = true,\n}: {\n tokenFilter: string;\n forcedChainId?: SupportedChainId;\n searchOnOtherChainsIfNothingFound?: boolean;\n withETH?: boolean;\n}): TokenMaybeWithUsdBalance[] => {\n const appChainId = useChainId();\n\n const allTokens = useAllTokens(forcedChainId);\n const nativeToken = useNativeToken(forcedChainId);\n\n const allIncludedTokens = withETH\n ? [nativeToken].concat(allTokens)\n : allTokens;\n\n const filteredTokens = useMemo(() => {\n return filterTokens({\n filterString: tokenFilter.trim(),\n tokenArray: allIncludedTokens,\n });\n }, [tokenFilter, allIncludedTokens]);\n\n const isTokenFilterValidAddress = isAddress(tokenFilter);\n const searchOnAllChains =\n isTokenFilterValidAddress || // if it's a token address, always search on other chains\n // -- we want to show this token on all chains.\n (filteredTokens.length === 0 &&\n // not already found tokens on current chain &&\n // filter given, and explicitly asked to search other chains\n !!tokenFilter &&\n searchOnOtherChainsIfNothingFound);\n\n const { tokens: tokensFromAllChains, addressMap: tokensFromAllChainsMap } =\n useAllTokensFromChains({\n // no need to exclude any chains, we actually want to search on all chains in this scenario\n // excludeChains: forcedChainId ? [forcedChainId] : [appChainId],\n includeChains: !searchOnAllChains ? emptyArray : undefined,\n });\n\n const { addressesMap, tokensToDisplay } = useMemo(() => {\n if (searchOnAllChains)\n return {\n tokensToDisplay: tokensFromAllChains,\n addressesMap: tokensFromAllChainsMap,\n };\n\n const currentChainId = forcedChainId ?? appChainId;\n const allTokensWithNativeAddresses = allIncludedTokens.map(\n ({ address }) => address\n );\n\n return {\n tokensToDisplay: allIncludedTokens,\n addressesMap: {\n [currentChainId]: allTokensWithNativeAddresses,\n },\n };\n }, [\n appChainId,\n forcedChainId,\n searchOnAllChains,\n tokensFromAllChains,\n tokensFromAllChainsMap,\n allIncludedTokens,\n ]);\n\n const attachTokenBalance = useAttachTokenBalanceMultichain({\n addressesMap,\n });\n\n const filteredAndSortedTokens = useMemo<TokenMaybeWithUsdBalance[]>(() => {\n return filterTokens({\n filterString: tokenFilter.trim(),\n tokenArray: tokensToDisplay,\n })\n .map(attachTokenBalance)\n .sort(sortTokens);\n }, [attachTokenBalance, tokenFilter, tokensToDisplay]);\n\n return filteredAndSortedTokens;\n};\n\nexport const usePrefetchTokenBalances = () => {\n // will fetch balances for all tokens from tokenLists for current chain,\n // if necessary, can be made to fetch for all chains, but that may be too many requests\n useAllTokensWithFilter({\n tokenFilter: \"\",\n });\n};\n\ntype AllTokensFromChainsInput = {\n includeChains?: number[];\n excludeChains?: number[];\n};\n\n/**\n * @description\n * Returns tokens and token address maps from all chains, optionally filtered by include/exclude chains.\n * If no chains are specified, it will return all tokens from all chains.\n * If includeChains is specified, it will only return tokens from those chains.\n * If excludeChains is specified, it will exclude tokens from those chains.\n */\nexport function useAllTokensFromChains({\n includeChains,\n excludeChains,\n}: AllTokensFromChainsInput): {\n tokens: Token[];\n addressMap: Record<number, string[]>;\n} {\n const { listByChainId: tokensListsByChain } =\n useAtomValue(allTokensByChainAtom);\n\n return useMemo(() => {\n const tokens: Token[] = [];\n const addressMap: Record<number, string[]> = {};\n\n for (const [_chainId, { tokens: _tokens }] of Object.entries(\n tokensListsByChain\n )) {\n const chainId = Number(_chainId);\n if (includeChains && !includeChains.includes(chainId)) continue;\n if (excludeChains && excludeChains.includes(chainId)) continue;\n\n tokens.push(..._tokens);\n addressMap[chainId] = _tokens.map((token) => token.address);\n }\n\n return { tokens, addressMap };\n }, [tokensListsByChain, includeChains, excludeChains]);\n}\n\nexport function useAcrossTokenLists({\n tokenFilter,\n fromChainId,\n toChainId,\n}: {\n tokenFilter: string;\n fromChainId: SupportedChainId;\n toChainId: SupportedChainId;\n}) {\n const { crossTokens } = useTokensFromAcross({\n fromChainId,\n toChainId,\n });\n\n const attachTokenBalance = useAttachTokenBalanceMultichain({\n addressesMap: {\n [toChainId]: crossTokens.map((token) => token.address),\n },\n });\n\n return useMemo<TokenMaybeWithUsdBalance[]>(\n () =>\n filterTokens({\n filterString: tokenFilter.trim(),\n tokenArray: crossTokens,\n })\n .map(attachTokenBalance)\n .sort(sortTokens),\n [attachTokenBalance, crossTokens, tokenFilter]\n );\n}\n"],"names":["useAllTokensWithFilter","t0","$","_c","tokenFilter","forcedChainId","searchOnOtherChainsIfNothingFound","withETH","t1","undefined","appChainId","useChainId","allTokens","useAllTokens","nativeToken","useNativeToken","t2","concat","allIncludedTokens","filteredTokens","filterTokens","filterString","trim","tokenArray","isTokenFilterValidAddress","isAddress","searchOnAllChains","length","t3","emptyArray","t4","includeChains","tokens","tokensFromAllChains","addressMap","tokensFromAllChainsMap","useAllTokensFromChains","t5","bb0","t6","tokensToDisplay","addressesMap","currentChainId","map","_temp","allTokensWithNativeAddresses","t7","t8","attachTokenBalance","useAttachTokenBalanceMultichain","sort","sortTokens","filteredAndSortedTokens","usePrefetchTokenBalances","Symbol","for","excludeChains","listByChainId","tokensListsByChain","useAtomValue","allTokensByChainAtom","useMemo","_chainId","_tokens","Object","entries","chainId","Number","includes","push","token","address","useAcrossTokenLists","fromChainId","toChainId","crossTokens","useTokensFromAcross","_temp3"],"mappings":"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"}
1
+ {"version":3,"file":"useAllTokensWithFilter.js","sources":["../../../src/hooks/tokens/useAllTokensWithFilter.ts"],"sourcesContent":["import { sortTokens } from \"@/tokens/utils/sorting\";\nimport { filterTokens } from \"@/tokens/utils/filtering\";\nimport { useAllTokens } from \"@/tokens/hooks\";\nimport type { Token, TokenMaybeWithUsdBalance } from \"@/tokens/state/types\";\nimport { useAtomValue } from \"jotai\";\nimport { useMemo } from \"react\";\nimport { useNativeToken } from \"./useNativeToken\";\nimport { useAttachTokenBalanceMultichain } from \"./balances/useAttachTokenBalanceMultichain\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useChainId } from \"wagmi\";\nimport { useTokensFromAcross } from \"./useTokensFromAcross\";\nimport { emptyArray } from \"@/lib/constants\";\nimport { isAddress } from \"viem\";\nimport { allTokensByChainAtom } from \"@/tokens/state/allTokensByChainAtom\";\n\nexport const useAllTokensWithFilter = ({\n tokenFilter,\n forcedChainId,\n searchOnOtherChainsIfNothingFound,\n withETH = true,\n}: {\n tokenFilter: string;\n forcedChainId?: SupportedChainId;\n searchOnOtherChainsIfNothingFound?: boolean;\n withETH?: boolean;\n}): TokenMaybeWithUsdBalance[] => {\n const appChainId = useChainId();\n\n const allTokens = useAllTokens(forcedChainId);\n const nativeToken = useNativeToken(forcedChainId);\n\n const allIncludedTokens = withETH\n ? [nativeToken].concat(allTokens)\n : allTokens;\n\n const filteredTokens = useMemo(() => {\n return filterTokens({\n filterString: tokenFilter.trim(),\n tokenArray: allIncludedTokens,\n });\n }, [tokenFilter, allIncludedTokens]);\n\n const isTokenFilterValidAddress = isAddress(tokenFilter);\n const searchOnAllChains =\n (isTokenFilterValidAddress && searchOnOtherChainsIfNothingFound) || // if it's a token address, always search on other chains, if allowed\n // -- we want to show this token on all chains.\n (filteredTokens.length === 0 &&\n // not already found tokens on current chain &&\n // filter given, and explicitly asked to search other chains\n !!tokenFilter &&\n searchOnOtherChainsIfNothingFound);\n\n const { tokens: tokensFromAllChains, addressMap: tokensFromAllChainsMap } =\n useAllTokensFromChains({\n // no need to exclude any chains, we actually want to search on all chains in this scenario\n // excludeChains: forcedChainId ? [forcedChainId] : [appChainId],\n includeChains: !searchOnAllChains ? emptyArray : undefined,\n });\n\n const { addressesMap, tokensToDisplay } = useMemo(() => {\n if (searchOnAllChains)\n return {\n tokensToDisplay: tokensFromAllChains,\n addressesMap: tokensFromAllChainsMap,\n };\n\n const currentChainId = forcedChainId ?? appChainId;\n const allTokensWithNativeAddresses = allIncludedTokens.map(\n ({ address }) => address\n );\n\n return {\n tokensToDisplay: allIncludedTokens,\n addressesMap: {\n [currentChainId]: allTokensWithNativeAddresses,\n },\n };\n }, [\n appChainId,\n forcedChainId,\n searchOnAllChains,\n tokensFromAllChains,\n tokensFromAllChainsMap,\n allIncludedTokens,\n ]);\n\n const attachTokenBalance = useAttachTokenBalanceMultichain({\n addressesMap,\n });\n\n const filteredAndSortedTokens = useMemo<TokenMaybeWithUsdBalance[]>(() => {\n return filterTokens({\n filterString: tokenFilter.trim(),\n tokenArray: tokensToDisplay,\n })\n .map(attachTokenBalance)\n .sort(sortTokens);\n }, [attachTokenBalance, tokenFilter, tokensToDisplay]);\n\n return filteredAndSortedTokens;\n};\n\nexport const usePrefetchTokenBalances = () => {\n // will fetch balances for all tokens from tokenLists for current chain,\n // if necessary, can be made to fetch for all chains, but that may be too many requests\n useAllTokensWithFilter({\n tokenFilter: \"\",\n });\n};\n\ntype AllTokensFromChainsInput = {\n includeChains?: number[];\n excludeChains?: number[];\n};\n\n/**\n * @description\n * Returns tokens and token address maps from all chains, optionally filtered by include/exclude chains.\n * If no chains are specified, it will return all tokens from all chains.\n * If includeChains is specified, it will only return tokens from those chains.\n * If excludeChains is specified, it will exclude tokens from those chains.\n */\nexport function useAllTokensFromChains({\n includeChains,\n excludeChains,\n}: AllTokensFromChainsInput): {\n tokens: Token[];\n addressMap: Record<number, string[]>;\n} {\n const { listByChainId: tokensListsByChain } =\n useAtomValue(allTokensByChainAtom);\n\n return useMemo(() => {\n const tokens: Token[] = [];\n const addressMap: Record<number, string[]> = {};\n\n for (const [_chainId, { tokens: _tokens }] of Object.entries(\n tokensListsByChain\n )) {\n const chainId = Number(_chainId);\n if (includeChains && !includeChains.includes(chainId)) continue;\n if (excludeChains && excludeChains.includes(chainId)) continue;\n\n tokens.push(..._tokens);\n addressMap[chainId] = _tokens.map((token) => token.address);\n }\n\n return { tokens, addressMap };\n }, [tokensListsByChain, includeChains, excludeChains]);\n}\n\nexport function useAcrossTokenLists({\n tokenFilter,\n fromChainId,\n toChainId,\n}: {\n tokenFilter: string;\n fromChainId: SupportedChainId;\n toChainId: SupportedChainId;\n}) {\n const { crossTokens } = useTokensFromAcross({\n fromChainId,\n toChainId,\n });\n\n const attachTokenBalance = useAttachTokenBalanceMultichain({\n addressesMap: {\n [toChainId]: crossTokens.map((token) => token.address),\n },\n });\n\n return useMemo<TokenMaybeWithUsdBalance[]>(\n () =>\n filterTokens({\n filterString: tokenFilter.trim(),\n tokenArray: crossTokens,\n })\n .map(attachTokenBalance)\n .sort(sortTokens),\n [attachTokenBalance, crossTokens, tokenFilter]\n );\n}\n"],"names":["useAllTokensWithFilter","t0","$","_c","tokenFilter","forcedChainId","searchOnOtherChainsIfNothingFound","withETH","t1","undefined","appChainId","useChainId","allTokens","useAllTokens","nativeToken","useNativeToken","t2","concat","allIncludedTokens","filteredTokens","filterTokens","filterString","trim","tokenArray","isTokenFilterValidAddress","isAddress","searchOnAllChains","length","t3","emptyArray","t4","includeChains","tokens","tokensFromAllChains","addressMap","tokensFromAllChainsMap","useAllTokensFromChains","t5","bb0","t6","tokensToDisplay","addressesMap","currentChainId","map","_temp","allTokensWithNativeAddresses","t7","t8","attachTokenBalance","useAttachTokenBalanceMultichain","sort","sortTokens","filteredAndSortedTokens","usePrefetchTokenBalances","Symbol","for","excludeChains","listByChainId","tokensListsByChain","useAtomValue","allTokensByChainAtom","useMemo","_chainId","_tokens","Object","entries","chainId","Number","includes","push","token","address","useAcrossTokenLists","fromChainId","toChainId","crossTokens","useTokensFromAcross","_temp3"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function useDateNow(): number;
2
+ //# sourceMappingURL=useDateNow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDateNow.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/useDateNow.ts"],"names":[],"mappings":"AACA,wBAAgB,UAAU,IAAI,MAAM,CAGnC"}
@@ -0,0 +1,7 @@
1
+ function useDateNow() {
2
+ "use no memo";
3
+ return Date.now();
4
+ }
5
+
6
+ export { useDateNow };
7
+ //# sourceMappingURL=useDateNow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDateNow.js","sources":["../../../src/lib/utils/useDateNow.ts"],"sourcesContent":["// workaround for react-compiler trying to memoize Date.now() result based on an unrelated cached value\nexport function useDateNow(): number {\n \"use no memo\";\n return Date.now();\n}\n"],"names":["useDateNow","Date","now"],"mappings":"AACO,SAASA,UAAAA,GAAqB;AACnC,EAAA,aAAA;AACA,EAAA,OAAOC,KAAKC,GAAAA,EAAI;AAClB;;;;"}
package/dist/styles.css CHANGED
@@ -935,10 +935,6 @@
935
935
  --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);
936
936
  translate: var(--tw-translate-x) var(--tw-translate-y);
937
937
  }
938
- .velora-widget.velora-widget .translate-y-0\.5 {
939
- --tw-translate-y: calc(var(--spacing) * .5);
940
- translate: var(--tw-translate-x) var(--tw-translate-y);
941
- }
942
938
  .velora-widget.velora-widget .translate-y-\[-50\%\] {
943
939
  --tw-translate-y: -50%;
944
940
  translate: var(--tw-translate-x) var(--tw-translate-y);
@@ -1782,6 +1778,9 @@
1782
1778
  .velora-widget.velora-widget .underline {
1783
1779
  text-decoration-line: underline;
1784
1780
  }
1781
+ .velora-widget.velora-widget .underline-offset-2 {
1782
+ text-underline-offset: 2px;
1783
+ }
1785
1784
  .velora-widget.velora-widget .underline-offset-4 {
1786
1785
  text-underline-offset: 4px;
1787
1786
  }
@@ -1 +1 @@
1
- {"version":3,"file":"addImportedTokenAtom.d.ts","sourceRoot":"","sources":["../../../src/tokens/state/addImportedTokenAtom.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AASpF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAgBlD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,KAAK,eAAe,GAAG,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACrD,MAAM,MAAM,cAAc,GAAG,CAAC,aAAa,EAAE,eAAe,KAAK,IAAI,CAAC;AAEtE,eAAO,MAAM,oBAAoB;cASjB,eAAe;kBACX,sBAAsB,CAAC,iBAAiB,CAAC;;;CA8D5D,CAAC;AAKF,eAAO,MAAM,wBAAwB;aAKR,OAAO;aAAW,gBAAgB;;;CA8B9D,CAAC"}
1
+ {"version":3,"file":"addImportedTokenAtom.d.ts","sourceRoot":"","sources":["../../../src/tokens/state/addImportedTokenAtom.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAKpF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGlD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI/D,KAAK,eAAe,GAAG,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACrD,MAAM,MAAM,cAAc,GAAG,CAAC,aAAa,EAAE,eAAe,KAAK,IAAI,CAAC;AAEtE,eAAO,MAAM,oBAAoB;cASjB,eAAe;kBACX,sBAAsB,CAAC,iBAAiB,CAAC;;;CAuC5D,CAAC;AAKF,eAAO,MAAM,wBAAwB;aAKR,OAAO;aAAW,gBAAgB;;;CA8B9D,CAAC"}
@@ -1,10 +1,9 @@
1
1
  import { atom } from 'jotai';
2
2
  import { importedTokensAtom, autoImportedTokensAtom } from './importedTokensAtom.js';
3
- import { pickDefaultTokenPair } from '../defaultTokens.js';
4
- import { swapTokenToAtom, swapTokenFromAtom } from '../../core/inputs/state/selectedTokenAtom.js';
5
- import { selectSwapTokenToAtom, selectSwapTokenFromAtom } from '../../core/inputs/state/selectedTokenActionsAtom.js';
6
3
  import { fetchUnknownTokenData } from '../../hooks/tokens/data/useMultichainTokensData.js';
7
4
  import { constructToken } from '@velora-dex/sdk';
5
+ import { tradeModeAtom } from '../../core/state/tradeModeAtom.js';
6
+ import { tradeModeToSetTokenAtoms } from '../../core/inputs/state/common.js';
8
7
 
9
8
  const addImportedTokenAtom = atom(null, (get, set, {
10
9
  newToken,
@@ -27,26 +26,10 @@ const addImportedTokenAtom = atom(null, (get, set, {
27
26
  [chainId]: [...tokensForChain, tokenToAdd]
28
27
  });
29
28
  if (!afterAction) return tokenToAdd;
30
- const oppositeCurrentToken = get(afterAction === "set-token-from" ? swapTokenToAtom : swapTokenFromAtom);
31
- const willBeCrosschain = oppositeCurrentToken && oppositeCurrentToken.network !== tokenToAdd.network;
32
- if (willBeCrosschain) {
33
- const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(
34
- tokenToAdd.network,
35
- "swap"
36
- // "swap" is alright as long as we set token into Swap TokenInput
37
- );
38
- const oppositeDefaultToken = afterAction === "set-token-from" ? defaultTokenTo : defaultTokenFrom;
39
- if (afterAction === "set-token-from") {
40
- set(selectSwapTokenToAtom, oppositeDefaultToken);
41
- } else {
42
- set(selectSwapTokenFromAtom, oppositeDefaultToken);
43
- }
44
- }
45
- if (afterAction === "set-token-from") {
46
- set(selectSwapTokenFromAtom, tokenToAdd);
47
- } else if (afterAction === "set-token-to") {
48
- set(selectSwapTokenToAtom, tokenToAdd);
49
- }
29
+ const tradeMode = get(tradeModeAtom);
30
+ const tokensToSet = tradeModeToSetTokenAtoms[tradeMode];
31
+ const tokenAtomToSet = tokensToSet[afterAction === "set-token-from" ? "tokenFromAtom" : "tokenToAtom"];
32
+ set(tokenAtomToSet, tokenToAdd);
50
33
  return tokenToAdd;
51
34
  });
52
35
  const autoAddImportedTokenAtom = atom([], async (get, set, minTokenData) => {
@@ -1 +1 @@
1
- {"version":3,"file":"addImportedTokenAtom.js","sources":["../../../src/tokens/state/addImportedTokenAtom.ts"],"sourcesContent":["import { atom } from \"jotai\";\nimport type { ImportedToken, Token } from \"./types\";\nimport type { ImportTokenDrawerProps } from \"@/components/widget/ImportToken/types\";\n// import {\n// selectTokenFromAtom,\n// selectTokenToAtom,\n// } from \"@/core/inputs/state/selectedTokenActionsAtom\";\nimport {\n autoImportedTokensAtom,\n importedTokensAtom,\n} from \"./importedTokensAtom\";\nimport type { MarkRequired } from \"ts-essentials\";\n// import {\n// tokenFromAtom,\n// tokenToAtom,\n// } from \"@/core/inputs/state/selectedTokenAtom\";\nimport { pickDefaultTokenPair } from \"../defaultTokens\";\nimport {\n swapTokenFromAtom,\n swapTokenToAtom,\n} from \"@/core/inputs/state/selectedTokenAtom\";\nimport {\n selectSwapTokenFromAtom,\n selectSwapTokenToAtom,\n} from \"@/core/inputs/state/selectedTokenActionsAtom\";\nimport { fetchUnknownTokenData } from \"@/hooks/tokens/data/useMultichainTokensData\";\nimport { constructToken } from \"@velora-dex/sdk\";\nimport type { Address } from \"viem\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\n\ntype TokenWithSymbol = MarkRequired<Token, \"symbol\">;\nexport type OnImportAction = (tokenImported: TokenWithSymbol) => void;\n\nexport const addImportedTokenAtom = atom(\n null,\n (\n get,\n set,\n {\n newToken,\n afterAction,\n }: {\n newToken: TokenWithSymbol;\n afterAction?: ImportTokenDrawerProps[\"onConfirmAction\"];\n }\n ) => {\n const chainId = newToken.network;\n const currentTokens = get(importedTokensAtom);\n const tokensForChain = currentTokens[chainId] ?? [];\n // Avoid duplicates by address\n const newTokenAddressLower = newToken.address.toLowerCase();\n const alreadyExists = tokensForChain.some(\n (t) => t.address.toLowerCase() === newTokenAddressLower\n );\n if (alreadyExists) return;\n\n const tokenToAdd: ImportedToken = {\n // get rid of extra props attached for display purposes (usdBalance, fetchedOnChain)\n ...pickOnlyTokenProps(newToken),\n imported: true,\n symbol: newToken.symbol,\n };\n\n set(importedTokensAtom, {\n ...currentTokens,\n [chainId]: [...tokensForChain, tokenToAdd],\n });\n\n if (!afterAction) return tokenToAdd;\n\n const oppositeCurrentToken = get(\n afterAction === \"set-token-from\" ? swapTokenToAtom : swapTokenFromAtom\n );\n const willBeCrosschain =\n oppositeCurrentToken &&\n oppositeCurrentToken.network !== tokenToAdd.network;\n // if setting the newly imported Token into TokenInput would force crosschain,\n // given that all crosschain supported tokens are already available from crosschain tokenList,\n // the new crosschain pair will not be valid.\n if (willBeCrosschain) {\n // get default token pair for the imported token chain\n const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(\n tokenToAdd.network,\n \"swap\" // \"swap\" is alright as long as we set token into Swap TokenInput\n );\n const oppositeDefaultToken =\n afterAction === \"set-token-from\" ? defaultTokenTo : defaultTokenFrom;\n if (afterAction === \"set-token-from\") {\n // imported token set as tokenFrom -> set tokenTo to default token for the imported token chain\n set(selectSwapTokenToAtom, oppositeDefaultToken);\n } else {\n // imported token set as tokenTo -> set tokenFrom to default token for the imported token chain\n set(selectSwapTokenFromAtom, oppositeDefaultToken);\n }\n // internally in selectToken*Atom we request chain switch\n }\n\n if (afterAction === \"set-token-from\") {\n set(selectSwapTokenFromAtom, tokenToAdd);\n } else if (afterAction === \"set-token-to\") {\n set(selectSwapTokenToAtom, tokenToAdd);\n }\n\n return tokenToAdd;\n }\n);\n\n// fetches Token data onchain internally,\n// adds it to addImportedTokenAtom.\n// then adds it to autoImportedTokensAtom.\nexport const autoAddImportedTokenAtom = atom(\n [],\n async (\n get,\n set,\n minTokenData: { address: Address; chainId: SupportedChainId }\n ) => {\n const fetchedToken = await fetchUnknownTokenData(minTokenData);\n\n if (fetchedToken) {\n const constructedToken = constructToken(fetchedToken);\n const importedToken = set(addImportedTokenAtom, {\n newToken: {\n ...constructedToken,\n symbol: fetchedToken.symbol,\n network: minTokenData.chainId,\n },\n });\n\n if (importedToken) {\n const currentAutoImportedTokens = get(autoImportedTokensAtom);\n const alreadyExists = currentAutoImportedTokens.some(\n (t) =>\n t.address.toLowerCase() === importedToken.address.toLowerCase() &&\n t.network === importedToken.network\n );\n if (alreadyExists) return;\n\n set(autoImportedTokensAtom, [\n ...currentAutoImportedTokens,\n importedToken,\n ]);\n }\n }\n }\n);\n\nfunction pickOnlyTokenProps(token: Token): Token {\n return {\n address: token.address,\n decimals: token.decimals,\n symbol: token.symbol,\n tokenType: token.tokenType,\n mainConnector: token.mainConnector,\n connectors: token.connectors,\n network: token.network,\n img: token.img,\n allowance: token.allowance,\n balance: token.balance,\n imported: token.imported,\n name: token.name,\n fromList: token.fromList,\n fromListURL: token.fromListURL,\n };\n}\n"],"names":["addImportedTokenAtom","atom","get","set","newToken","afterAction","chainId","network","currentTokens","importedTokensAtom","tokensForChain","newTokenAddressLower","address","toLowerCase","alreadyExists","some","t","tokenToAdd","pickOnlyTokenProps","imported","symbol","oppositeCurrentToken","swapTokenToAtom","swapTokenFromAtom","willBeCrosschain","defaultTokenFrom","defaultTokenTo","pickDefaultTokenPair","oppositeDefaultToken","selectSwapTokenToAtom","selectSwapTokenFromAtom","autoAddImportedTokenAtom","minTokenData","fetchedToken","fetchUnknownTokenData","constructedToken","constructToken","importedToken","currentAutoImportedTokens","autoImportedTokensAtom","token","decimals","tokenType","mainConnector","connectors","img","allowance","balance","name","fromList","fromListURL"],"mappings":"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"}
1
+ {"version":3,"file":"addImportedTokenAtom.js","sources":["../../../src/tokens/state/addImportedTokenAtom.ts"],"sourcesContent":["import { atom } from \"jotai\";\nimport type { ImportedToken, Token } from \"./types\";\nimport type { ImportTokenDrawerProps } from \"@/components/widget/ImportToken/types\";\nimport {\n autoImportedTokensAtom,\n importedTokensAtom,\n} from \"./importedTokensAtom\";\nimport type { MarkRequired } from \"ts-essentials\";\nimport { fetchUnknownTokenData } from \"@/hooks/tokens/data/useMultichainTokensData\";\nimport { constructToken } from \"@velora-dex/sdk\";\nimport type { Address } from \"viem\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { tradeModeAtom } from \"@/core/state/tradeModeAtom\";\nimport { tradeModeToSetTokenAtoms } from \"@/core/inputs/state/common\";\n\ntype TokenWithSymbol = MarkRequired<Token, \"symbol\">;\nexport type OnImportAction = (tokenImported: TokenWithSymbol) => void;\n\nexport const addImportedTokenAtom = atom(\n null,\n (\n get,\n set,\n {\n newToken,\n afterAction,\n }: {\n newToken: TokenWithSymbol;\n afterAction?: ImportTokenDrawerProps[\"onConfirmAction\"];\n }\n ) => {\n const chainId = newToken.network;\n const currentTokens = get(importedTokensAtom);\n const tokensForChain = currentTokens[chainId] ?? [];\n // Avoid duplicates by address\n const newTokenAddressLower = newToken.address.toLowerCase();\n const alreadyExists = tokensForChain.some(\n (t) => t.address.toLowerCase() === newTokenAddressLower\n );\n if (alreadyExists) return;\n\n const tokenToAdd: ImportedToken = {\n // get rid of extra props attached for display purposes (usdBalance, fetchedOnChain)\n ...pickOnlyTokenProps(newToken),\n imported: true,\n symbol: newToken.symbol,\n };\n\n set(importedTokensAtom, {\n ...currentTokens,\n [chainId]: [...tokensForChain, tokenToAdd],\n });\n\n if (!afterAction) return tokenToAdd;\n\n const tradeMode = get(tradeModeAtom);\n const tokensToSet = tradeModeToSetTokenAtoms[tradeMode];\n const tokenAtomToSet =\n tokensToSet[\n afterAction === \"set-token-from\" ? \"tokenFromAtom\" : \"tokenToAtom\"\n ];\n // atom setter inside takes care of disallowed pair choices,\n // like invalid crosschain match\n set(tokenAtomToSet, tokenToAdd);\n\n return tokenToAdd;\n }\n);\n\n// fetches Token data onchain internally,\n// adds it to addImportedTokenAtom.\n// then adds it to autoImportedTokensAtom.\nexport const autoAddImportedTokenAtom = atom(\n [],\n async (\n get,\n set,\n minTokenData: { address: Address; chainId: SupportedChainId }\n ) => {\n const fetchedToken = await fetchUnknownTokenData(minTokenData);\n\n if (fetchedToken) {\n const constructedToken = constructToken(fetchedToken);\n const importedToken = set(addImportedTokenAtom, {\n newToken: {\n ...constructedToken,\n symbol: fetchedToken.symbol,\n network: minTokenData.chainId,\n },\n });\n\n if (importedToken) {\n const currentAutoImportedTokens = get(autoImportedTokensAtom);\n const alreadyExists = currentAutoImportedTokens.some(\n (t) =>\n t.address.toLowerCase() === importedToken.address.toLowerCase() &&\n t.network === importedToken.network\n );\n if (alreadyExists) return;\n\n set(autoImportedTokensAtom, [\n ...currentAutoImportedTokens,\n importedToken,\n ]);\n }\n }\n }\n);\n\nfunction pickOnlyTokenProps(token: Token): Token {\n return {\n address: token.address,\n decimals: token.decimals,\n symbol: token.symbol,\n tokenType: token.tokenType,\n mainConnector: token.mainConnector,\n connectors: token.connectors,\n network: token.network,\n img: token.img,\n allowance: token.allowance,\n balance: token.balance,\n imported: token.imported,\n name: token.name,\n fromList: token.fromList,\n fromListURL: token.fromListURL,\n };\n}\n"],"names":["addImportedTokenAtom","atom","get","set","newToken","afterAction","chainId","network","currentTokens","importedTokensAtom","tokensForChain","newTokenAddressLower","address","toLowerCase","alreadyExists","some","t","tokenToAdd","pickOnlyTokenProps","imported","symbol","tradeMode","tradeModeAtom","tokensToSet","tradeModeToSetTokenAtoms","tokenAtomToSet","autoAddImportedTokenAtom","minTokenData","fetchedToken","fetchUnknownTokenData","constructedToken","constructToken","importedToken","currentAutoImportedTokens","autoImportedTokensAtom","token","decimals","tokenType","mainConnector","connectors","img","allowance","balance","name","fromList","fromListURL"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@velora-dex/widget",
3
- "version": "0.2.1",
3
+ "version": "0.2.3-dev.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "files": [
@@ -33,6 +33,8 @@
33
33
  "@eslint/js": "^9.32.0",
34
34
  "@tailwindcss/vite": "^4.1.11",
35
35
  "@tanstack/eslint-plugin-query": "^5.83.1",
36
+ "@tanstack/react-query": "^5.90.12",
37
+ "@tanstack/react-query-devtools": "^5.91.1",
36
38
  "@types/big.js": "^6.2.2",
37
39
  "@types/node": "^20.19.9",
38
40
  "@types/react": "^19.1.9",
@@ -70,8 +72,6 @@
70
72
  "@radix-ui/react-tabs": "^1.1.13",
71
73
  "@radix-ui/react-tooltip": "^1.2.7",
72
74
  "@tanstack/react-pacer": "^0.14.0",
73
- "@tanstack/react-query": "^5.84.1",
74
- "@tanstack/react-query-devtools": "^5.84.1",
75
75
  "@tanstack/react-virtual": "^3.13.12",
76
76
  "@uniswap/token-lists": "1.0.0-beta.34",
77
77
  "@velora-dex/sdk": "9.2.0",
@@ -83,9 +83,9 @@
83
83
  "copy-to-clipboard": "^3.3.3",
84
84
  "dayjs": "^1.11.18",
85
85
  "immer": "^10.1.1",
86
- "jotai": "^2.15.0",
86
+ "jotai": "2.15.0",
87
87
  "jotai-devtools": "^0.13.0",
88
- "jotai-effect": "^2.1.3",
88
+ "jotai-effect": "2.1.6",
89
89
  "jotai-immer": "^0.4.1",
90
90
  "jotai-tanstack-query": "^0.11.0",
91
91
  "lucide-react": "^0.536.0",
@@ -100,7 +100,8 @@
100
100
  "wagmi": "^2.16.1"
101
101
  },
102
102
  "peerDependencies": {
103
- "react": "^18.x || ^19.x",
104
- "react-dom": "^18.x || ^19.x"
103
+ "@tanstack/react-query": "^5.90.0",
104
+ "react": "18.x || 19.x",
105
+ "react-dom": "18.x || 19.x"
105
106
  }
106
107
  }