@aurora-is-near/intents-swap-widget 3.18.2 → 3.19.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 (182) hide show
  1. package/dist/components/Accordion.js +31 -32
  2. package/dist/components/Accordion.js.map +1 -1
  3. package/dist/components/AllNetworksIcon.js +11 -0
  4. package/dist/components/AllNetworksIcon.js.map +1 -0
  5. package/dist/components/Button.d.ts +8 -0
  6. package/dist/components/Button.js +53 -43
  7. package/dist/components/Button.js.map +1 -1
  8. package/dist/components/ChainShortcut.d.ts +15 -0
  9. package/dist/components/ChainShortcut.js +57 -0
  10. package/dist/components/ChainShortcut.js.map +1 -0
  11. package/dist/components/CopyButton.d.ts +5 -2
  12. package/dist/components/CopyButton.js +11 -7
  13. package/dist/components/CopyButton.js.map +1 -1
  14. package/dist/components/Notes.js +1 -1
  15. package/dist/components/Notes.js.map +1 -1
  16. package/dist/components/index.d.ts +2 -0
  17. package/dist/components/index.js +21 -17
  18. package/dist/components/index.js.map +1 -1
  19. package/dist/{config-CgCb5P7j.js → config-C47AYcMK.js} +1006 -992
  20. package/dist/config-C47AYcMK.js.map +1 -0
  21. package/dist/config.d.ts +2 -0
  22. package/dist/config.js +9 -10
  23. package/dist/config.js.map +1 -1
  24. package/dist/errors.js +1 -1
  25. package/dist/ext/alchemy/index.js +1 -1
  26. package/dist/ext/index.js +1 -1
  27. package/dist/features/BalanceRpcLoader/TokenBalanceLoader.js +1 -1
  28. package/dist/features/BalanceRpcLoader/index.js +1 -1
  29. package/dist/features/BalanceRpcLoader/useTokenBalanceRpc.js +1 -1
  30. package/dist/features/ChainsDropdown/ChainItem.d.ts +1 -0
  31. package/dist/features/ChainsDropdown/ChainItem.js +23 -14
  32. package/dist/features/ChainsDropdown/ChainItem.js.map +1 -1
  33. package/dist/features/ChainsDropdown/index.js +61 -94
  34. package/dist/features/ChainsDropdown/index.js.map +1 -1
  35. package/dist/features/ChainsSelector/index.d.ts +15 -0
  36. package/dist/features/ChainsSelector/index.js +108 -0
  37. package/dist/features/ChainsSelector/index.js.map +1 -0
  38. package/dist/features/DepositMethodSwitcher.js +1 -1
  39. package/dist/features/ErrorBoundary.js +1 -1
  40. package/dist/features/ExternalDeposit.js +4 -3
  41. package/dist/features/ExternalDeposit.js.map +1 -1
  42. package/dist/features/SendAddress/index.js +1 -1
  43. package/dist/features/SendAddress/useNotification.js +1 -1
  44. package/dist/features/SubmitButton/index.js +1 -1
  45. package/dist/features/SuccessScreen/CopyableValue.d.ts +5 -0
  46. package/dist/features/SuccessScreen/CopyableValue.js +11 -0
  47. package/dist/features/SuccessScreen/CopyableValue.js.map +1 -0
  48. package/dist/features/SuccessScreen/TokenRow.d.ts +8 -0
  49. package/dist/features/SuccessScreen/TokenRow.js +20 -0
  50. package/dist/features/SuccessScreen/TokenRow.js.map +1 -0
  51. package/dist/features/SuccessScreen/index.d.ts +5 -4
  52. package/dist/features/SuccessScreen/index.js +151 -49
  53. package/dist/features/SuccessScreen/index.js.map +1 -1
  54. package/dist/features/SuccessScreen/useSummaryItemsCount.d.ts +1 -0
  55. package/dist/features/SuccessScreen/useSummaryItemsCount.js +14 -0
  56. package/dist/features/SuccessScreen/useSummaryItemsCount.js.map +1 -0
  57. package/dist/features/SwapDirectionSwitcher.js +1 -1
  58. package/dist/features/SwapQuote/SwapQuote.js +1 -1
  59. package/dist/features/SwapQuote/index.js +1 -1
  60. package/dist/features/TokenInput/TokenInput.js +1 -1
  61. package/dist/features/TokenInput/TokenInputEmpty.js +1 -1
  62. package/dist/features/TokenInput/TokenInputSource.js +1 -1
  63. package/dist/features/TokenInput/TokenInputTarget.js +2 -2
  64. package/dist/features/TokenInput/WalletBalance.js +1 -1
  65. package/dist/features/TokenInput/hooks/index.js +1 -1
  66. package/dist/features/TokenInput/hooks/useTokenInputBalance.js +1 -1
  67. package/dist/features/TokenInput/index.js +1 -1
  68. package/dist/features/TokensList/TokenItem.js +2 -2
  69. package/dist/features/TokensList/TokensList.js +1 -1
  70. package/dist/features/TokensList/index.js +1 -1
  71. package/dist/features/TokensModal.js +62 -64
  72. package/dist/features/TokensModal.js.map +1 -1
  73. package/dist/features/WalletCompatibilityCheck/WalletCompatibilityModal.js +5 -4
  74. package/dist/features/WalletCompatibilityCheck/WalletCompatibilityModal.js.map +1 -1
  75. package/dist/features/WalletCompatibilityCheck/index.js +1 -1
  76. package/dist/features/index.js +1 -1
  77. package/dist/hooks/index.js +1 -1
  78. package/dist/hooks/useAllTokens.js +1 -1
  79. package/dist/hooks/useChains.js +1 -1
  80. package/dist/hooks/useCompatibilityCheck.js +1 -1
  81. package/dist/hooks/useDefaultToken.js +1 -1
  82. package/dist/hooks/useExternalDepositStatus/index.js +1 -1
  83. package/dist/hooks/useExternalDepositStatus/usePoaExternalDepositStatus.js +1 -1
  84. package/dist/hooks/useIntentsBalance.js +1 -1
  85. package/dist/hooks/useIsCompatibilityCheckRequired.js +1 -1
  86. package/dist/hooks/useMakeDepositAddress.js +1 -1
  87. package/dist/hooks/useMakeIntentsTransfer.js +1 -1
  88. package/dist/hooks/useMakeNEARFtTransferCall.js +1 -1
  89. package/dist/hooks/useMakeQuote.js +1 -1
  90. package/dist/hooks/useMakeQuoteTransfer.js +1 -1
  91. package/dist/hooks/useMakeTransfer.js +1 -1
  92. package/dist/hooks/useMergedBalance.js +1 -1
  93. package/dist/hooks/useSwitchChain.js +1 -1
  94. package/dist/hooks/useTheme.js +1 -1
  95. package/dist/hooks/useTokenInputPair.js +1 -1
  96. package/dist/hooks/useTokens.js +1 -1
  97. package/dist/hooks/useTokensFiltered.d.ts +3 -1
  98. package/dist/hooks/useTokensFiltered.js +1 -1
  99. package/dist/hooks/useTokensIntentsUnique.js +1 -1
  100. package/dist/index.js +74 -70
  101. package/dist/index.js.map +1 -1
  102. package/dist/machine/effects/index.js +1 -1
  103. package/dist/machine/effects/useAlchemyBalanceEffect.js +1 -1
  104. package/dist/machine/effects/useBalancesUpdateEffect.js +1 -1
  105. package/dist/machine/effects/useMakeQuoteEffect.js +1 -1
  106. package/dist/machine/effects/useSelectedTokensEffect.js +1 -1
  107. package/dist/machine/effects/useSetTokenBalanceEffect.js +1 -1
  108. package/dist/machine/effects/useSetTokenIntentsTargetEffect.js +1 -1
  109. package/dist/machine/effects/useWalletConnEffect.js +1 -1
  110. package/dist/machine/events/index.js +1 -1
  111. package/dist/machine/events/reset.d.ts +1 -0
  112. package/dist/machine/events/reset.js +2 -2
  113. package/dist/machine/events/reset.js.map +1 -1
  114. package/dist/machine/events/tokenSelect.js +1 -1
  115. package/dist/machine/events/validateInputAndMoveTo.js +1 -1
  116. package/dist/machine/events/validateInputs.js +1 -1
  117. package/dist/machine/index.js +1 -1
  118. package/dist/machine/snap.js +1 -1
  119. package/dist/machine/subscriptions/checkers/isSendAddressAsConnected.js +1 -1
  120. package/dist/machine/subscriptions/index.js +1 -1
  121. package/dist/styles.css +1 -1
  122. package/dist/theme/ThemeProvider.js +1 -1
  123. package/dist/types/config.d.ts +3 -0
  124. package/dist/types/localisation.d.ts +1 -1
  125. package/dist/utils/intents/signers/near.js +1 -1
  126. package/dist/utils/intents/signers/privy.js +1 -1
  127. package/dist/utils/near/getNearNep141StorageBalance.js +1 -1
  128. package/dist/utils/tokens/sort.d.ts +2 -1
  129. package/dist/utils/tokens/sort.js +55 -24
  130. package/dist/utils/tokens/sort.js.map +1 -1
  131. package/dist/widgets/WidgetDeposit/WidgetDepositContent.js +74 -73
  132. package/dist/widgets/WidgetDeposit/WidgetDepositContent.js.map +1 -1
  133. package/dist/widgets/WidgetDeposit/WidgetDepositSkeleton.js +1 -1
  134. package/dist/widgets/WidgetSwap/WidgetSwapContent.js +70 -68
  135. package/dist/widgets/WidgetSwap/WidgetSwapContent.js.map +1 -1
  136. package/dist/widgets/WidgetSwap/WidgetSwapSkeleton.js +1 -1
  137. package/dist/widgets/WidgetWithdraw/WidgetWithdrawContent.js +64 -62
  138. package/dist/widgets/WidgetWithdraw/WidgetWithdrawContent.js.map +1 -1
  139. package/dist/widgets/WidgetWithdraw/WidgetWithdrawSkeleton.js +1 -1
  140. package/package.json +1 -1
  141. package/src/components/Accordion.tsx +5 -6
  142. package/src/components/AllNetworksIcon.tsx +8 -0
  143. package/src/components/Button.tsx +17 -1
  144. package/src/components/ChainShortcut.tsx +67 -0
  145. package/src/components/CopyButton.tsx +12 -2
  146. package/src/components/Notes.tsx +1 -1
  147. package/src/components/index.ts +2 -0
  148. package/src/config.tsx +13 -0
  149. package/src/features/ChainsDropdown/ChainItem.tsx +17 -4
  150. package/src/features/ChainsDropdown/index.tsx +10 -41
  151. package/src/features/ChainsSelector/index.tsx +113 -0
  152. package/src/features/SuccessScreen/CopyableValue.tsx +13 -0
  153. package/src/features/SuccessScreen/TokenRow.tsx +26 -0
  154. package/src/features/SuccessScreen/index.tsx +161 -55
  155. package/src/features/SuccessScreen/useSummaryItemsCount.ts +33 -0
  156. package/src/features/TokensList/TokensList.tsx +2 -1
  157. package/src/features/TokensModal.tsx +29 -29
  158. package/src/hooks/useTokensFiltered.ts +4 -0
  159. package/src/machine/events/reset.ts +6 -3
  160. package/src/types/config.ts +8 -0
  161. package/src/types/localisation.ts +11 -3
  162. package/src/utils/tokens/sort.ts +107 -20
  163. package/src/widgets/WidgetDeposit/WidgetDepositContent.tsx +6 -4
  164. package/src/widgets/WidgetSwap/WidgetSwapContent.tsx +7 -4
  165. package/src/widgets/WidgetWithdraw/WidgetWithdrawContent.tsx +7 -4
  166. package/dist/config-CgCb5P7j.js.map +0 -1
  167. package/dist/features/ChainsDropdown/AllNetworksIcon.js +0 -7
  168. package/dist/features/ChainsDropdown/AllNetworksIcon.js.map +0 -1
  169. package/dist/features/SuccessScreen/CheckIcon.d.ts +0 -1
  170. package/dist/features/SuccessScreen/CheckIcon.js +0 -7
  171. package/dist/features/SuccessScreen/CheckIcon.js.map +0 -1
  172. package/dist/features/SuccessScreen/ExternalAction.d.ts +0 -5
  173. package/dist/features/SuccessScreen/ExternalAction.js +0 -16
  174. package/dist/features/SuccessScreen/ExternalAction.js.map +0 -1
  175. package/dist/features/SuccessScreen/SummaryItem.d.ts +0 -8
  176. package/dist/features/SuccessScreen/SummaryItem.js +0 -21
  177. package/dist/features/SuccessScreen/SummaryItem.js.map +0 -1
  178. package/src/features/ChainsDropdown/AllNetworksIcon.tsx +0 -7
  179. package/src/features/SuccessScreen/CheckIcon.tsx +0 -7
  180. package/src/features/SuccessScreen/ExternalAction.tsx +0 -15
  181. package/src/features/SuccessScreen/SummaryItem.tsx +0 -28
  182. /package/dist/{features/ChainsDropdown → components}/AllNetworksIcon.d.ts +0 -0
@@ -1,37 +1,68 @@
1
- import { formatUnits as a } from "ethers";
2
- import { getTokenBalanceKey as f } from "../intents/getTokenBalanceKey.js";
3
- const l = (o, t, r) => {
4
- if (o.isIntent && !t.isIntent)
1
+ import { formatUnits as I } from "ethers";
2
+ import { getTokenBalanceKey as p } from "../intents/getTokenBalanceKey.js";
3
+ const v = (t, i, o) => {
4
+ if (t.isIntent || i.isIntent || o.length === 0)
5
+ return null;
6
+ const c = (n) => typeof o[0] == "string" ? o.includes(n.assetId) : o.some(
7
+ ([u, a]) => n.blockchain === u && n.symbol.toLowerCase() === a.toLowerCase()
8
+ ), s = (n) => typeof o[0] == "string" ? o.indexOf(n.assetId) : o.findIndex(
9
+ ([u, a]) => n.blockchain === u && n.symbol.toLowerCase() === a.toLowerCase()
10
+ ), e = c(t), r = c(i);
11
+ if (e && !r)
5
12
  return -1;
6
- if (!o.isIntent && t.isIntent)
13
+ if (!e && r)
7
14
  return 1;
8
- if (!r) {
9
- const i = (o.symbol ?? "").localeCompare(
10
- t.symbol ?? "",
15
+ if (e && r) {
16
+ const n = s(t), u = s(i);
17
+ if (n !== u)
18
+ return n - u;
19
+ }
20
+ return null;
21
+ }, C = (t, i, o) => {
22
+ if (t.isIntent && !i.isIntent)
23
+ return -1;
24
+ if (!t.isIntent && i.isIntent)
25
+ return 1;
26
+ if (!o) {
27
+ const n = (t.symbol ?? "").localeCompare(
28
+ i.symbol ?? "",
11
29
  void 0,
12
30
  {
13
31
  sensitivity: "base"
14
32
  }
15
33
  );
16
- return i !== 0 ? i : o.chainName.localeCompare(t.chainName, void 0, {
34
+ return n !== 0 ? n : t.chainName.localeCompare(i.chainName, void 0, {
17
35
  sensitivity: "base"
18
36
  });
19
37
  }
20
- const s = (i) => i === r ? 0 : i.startsWith(r) ? 1 : i.includes(r) ? 2 : 3, e = s(o.symbol.toLowerCase()), n = s(t.symbol.toLowerCase());
21
- if (e !== n)
22
- return e - n;
23
- const c = o.symbol.toLowerCase().localeCompare(t.symbol.toLowerCase());
24
- return c !== 0 ? c : o.chainName.toLowerCase().localeCompare(t.chainName.toLowerCase());
25
- }, C = (o, t, r, s, e, n) => {
26
- const c = e.isIntent || n.isIntent, i = o.includes(e.blockchain), m = o.includes(n.blockchain);
27
- return !c && i && !m ? -1 : !c && !i && m ? 1 : !c && !i && !m || !t && !r ? l(e, n, s) : !t && r ? 1 : !r && t ? -1 : t !== r ? (r ?? 0) - (t ?? 0) : l(e, n, s);
28
- }, k = (o, t, r) => (s, e) => {
29
- const n = o[f(s)], c = o[f(e)], i = n ? a(n, s.decimals) : "0", m = c ? a(c, e.decimals) : "0", u = n !== void 0 ? parseFloat(`${i ?? 0}`) * s.price : void 0, p = c !== void 0 ? parseFloat(`${m ?? 0}`) * e.price : void 0, y = r?.trim().toLowerCase() ?? void 0;
30
- return C(
31
- t,
32
- u,
33
- p,
34
- y,
38
+ const c = (n) => n === o ? 0 : n.startsWith(o) ? 1 : n.includes(o) ? 2 : 3, s = c(t.symbol.toLowerCase()), e = c(i.symbol.toLowerCase());
39
+ if (s !== e)
40
+ return s - e;
41
+ const r = t.symbol.toLowerCase().localeCompare(i.symbol.toLowerCase());
42
+ return r !== 0 ? r : t.chainName.toLowerCase().localeCompare(i.chainName.toLowerCase());
43
+ }, h = (t, i, o, c, s, e, r) => {
44
+ const n = e.isIntent || r.isIntent, u = o !== void 0 && o > 0, a = c !== void 0 && c > 0;
45
+ if (u && !a)
46
+ return -1;
47
+ if (!u && a)
48
+ return 1;
49
+ if (u && a) {
50
+ const d = t.includes(e.blockchain), y = t.includes(r.blockchain);
51
+ return !n && d && !y ? -1 : !n && !d && y ? 1 : o !== c ? (c ?? 0) - (o ?? 0) : C(e, r, s);
52
+ }
53
+ const l = v(e, r, i);
54
+ if (l !== null)
55
+ return l;
56
+ const m = t.includes(e.blockchain), f = t.includes(r.blockchain);
57
+ return !n && m && !f ? -1 : !n && !m && f ? 1 : C(e, r, s);
58
+ }, k = (t, i, o, c = []) => (s, e) => {
59
+ const r = t[p(s)], n = t[p(e)], u = r ? I(r, s.decimals) : "0", a = n ? I(n, e.decimals) : "0", l = r !== void 0 ? parseFloat(`${u ?? 0}`) * s.price : void 0, m = n !== void 0 ? parseFloat(`${a ?? 0}`) * e.price : void 0, f = o?.trim().toLowerCase() ?? void 0;
60
+ return h(
61
+ i,
62
+ c,
63
+ l,
64
+ m,
65
+ f,
35
66
  s,
36
67
  e
37
68
  );
@@ -1 +1 @@
1
- {"version":3,"file":"sort.js","sources":["../../../src/utils/tokens/sort.ts"],"sourcesContent":["import { formatUnits } from 'ethers';\n\nimport { getTokenBalanceKey } from '../intents/getTokenBalanceKey';\nimport type { Token, TokenBalances } from '@/types/token';\nimport type { Chains } from '@/types/chain';\n\nconst compareWithSearch = (\n a: Token,\n b: Token,\n searchLower: string | undefined,\n): number => {\n if (a.isIntent && !b.isIntent) {\n return -1;\n }\n\n if (!a.isIntent && b.isIntent) {\n return 1;\n }\n\n // sort alphabetically if no search\n if (!searchLower) {\n const symbolCompare = (a.symbol ?? '').localeCompare(\n b.symbol ?? '',\n undefined,\n {\n sensitivity: 'base',\n },\n );\n\n if (symbolCompare !== 0) {\n return symbolCompare;\n }\n\n return a.chainName.localeCompare(b.chainName, undefined, {\n sensitivity: 'base',\n });\n }\n\n const getSymbolRank = (symbol: string) => {\n if (symbol === searchLower) {\n return 0;\n }\n\n if (symbol.startsWith(searchLower)) {\n return 1;\n }\n\n if (symbol.includes(searchLower)) {\n return 2;\n }\n\n return 3;\n };\n\n const symbolRankA = getSymbolRank(a.symbol.toLowerCase());\n const symbolRankB = getSymbolRank(b.symbol.toLowerCase());\n\n // First compare by symbol match rank\n if (symbolRankA !== symbolRankB) {\n return symbolRankA - symbolRankB;\n }\n\n // Then compare alphabetically by symbol\n const symbolCompare = a.symbol\n .toLowerCase()\n .localeCompare(b.symbol.toLowerCase());\n\n if (symbolCompare !== 0) {\n return symbolCompare;\n }\n\n // Finally compare by blockchain\n return a.chainName.toLowerCase().localeCompare(b.chainName.toLowerCase());\n};\n\nconst sortTokensByUsdBalance = (\n walletSupportedChains: ReadonlyArray<Chains>,\n usdBalanceA: number | undefined,\n usdBalanceB: number | undefined,\n searchStr: string | undefined,\n a: Token,\n b: Token,\n): number => {\n const isIntent = a.isIntent || b.isIntent;\n\n // 0. Sort supported chains first\n const aSupported = walletSupportedChains.includes(a.blockchain);\n const bSupported = walletSupportedChains.includes(b.blockchain);\n\n if (!isIntent && aSupported && !bSupported) {\n return -1;\n }\n\n if (!isIntent && !aSupported && bSupported) {\n return 1;\n }\n\n if (!isIntent && !aSupported && !bSupported) {\n return compareWithSearch(a, b, searchStr);\n }\n\n // 1. Handle zero balances\n if (!usdBalanceA && !usdBalanceB) {\n return compareWithSearch(a, b, searchStr);\n }\n\n if (!usdBalanceA && usdBalanceB) {\n return 1;\n }\n\n if (!usdBalanceB && usdBalanceA) {\n return -1;\n }\n\n // 3. Compare non-zero balances\n if (usdBalanceA !== usdBalanceB) {\n return (usdBalanceB ?? 0) - (usdBalanceA ?? 0);\n }\n\n // 4. If balances equal, sort by market cap and then name\n return compareWithSearch(a, b, searchStr);\n};\n\nexport const createTokenSorter = (\n tokensBalance: TokenBalances,\n walletSupportedChains: ReadonlyArray<Chains>,\n searchStr?: string | undefined,\n) => {\n return (a: Token, b: Token) => {\n const recordA = tokensBalance[getTokenBalanceKey(a)];\n const recordB = tokensBalance[getTokenBalanceKey(b)];\n\n const balanceA = recordA ? formatUnits(recordA, a.decimals) : '0';\n const balanceB = recordB ? formatUnits(recordB, b.decimals) : '0';\n\n const usdBalanceA =\n recordA !== undefined\n ? parseFloat(`${balanceA ?? 0}`) * a.price\n : undefined;\n\n const usdBalanceB =\n recordB !== undefined\n ? parseFloat(`${balanceB ?? 0}`) * b.price\n : undefined;\n\n const searchLower = searchStr?.trim().toLowerCase() ?? undefined;\n\n return sortTokensByUsdBalance(\n walletSupportedChains,\n usdBalanceA,\n usdBalanceB,\n searchLower,\n a,\n b,\n );\n };\n};\n"],"names":["compareWithSearch","a","b","searchLower","symbolCompare","getSymbolRank","symbol","symbolRankA","symbolRankB","sortTokensByUsdBalance","walletSupportedChains","usdBalanceA","usdBalanceB","searchStr","isIntent","aSupported","bSupported","createTokenSorter","tokensBalance","recordA","getTokenBalanceKey","recordB","balanceA","formatUnits","balanceB"],"mappings":";;AAMA,MAAMA,IAAoB,CACxBC,GACAC,GACAC,MACW;AACX,MAAIF,EAAE,YAAY,CAACC,EAAE;AACnB,WAAO;AAGT,MAAI,CAACD,EAAE,YAAYC,EAAE;AACnB,WAAO;AAIT,MAAI,CAACC,GAAa;AAChB,UAAMC,KAAiBH,EAAE,UAAU,IAAI;AAAA,MACrCC,EAAE,UAAU;AAAA,MACZ;AAAA,MACA;AAAA,QACE,aAAa;AAAA,MAAA;AAAA,IACf;AAGF,WAAIE,MAAkB,IACbA,IAGFH,EAAE,UAAU,cAAcC,EAAE,WAAW,QAAW;AAAA,MACvD,aAAa;AAAA,IAAA,CACd;AAAA,EACH;AAEA,QAAMG,IAAgB,CAACC,MACjBA,MAAWH,IACN,IAGLG,EAAO,WAAWH,CAAW,IACxB,IAGLG,EAAO,SAASH,CAAW,IACtB,IAGF,GAGHI,IAAcF,EAAcJ,EAAE,OAAO,aAAa,GAClDO,IAAcH,EAAcH,EAAE,OAAO,aAAa;AAGxD,MAAIK,MAAgBC;AAClB,WAAOD,IAAcC;AAIvB,QAAMJ,IAAgBH,EAAE,OACrB,YAAA,EACA,cAAcC,EAAE,OAAO,aAAa;AAEvC,SAAIE,MAAkB,IACbA,IAIFH,EAAE,UAAU,YAAA,EAAc,cAAcC,EAAE,UAAU,aAAa;AAC1E,GAEMO,IAAyB,CAC7BC,GACAC,GACAC,GACAC,GACAZ,GACAC,MACW;AACX,QAAMY,IAAWb,EAAE,YAAYC,EAAE,UAG3Ba,IAAaL,EAAsB,SAAST,EAAE,UAAU,GACxDe,IAAaN,EAAsB,SAASR,EAAE,UAAU;AAE9D,SAAI,CAACY,KAAYC,KAAc,CAACC,IACvB,KAGL,CAACF,KAAY,CAACC,KAAcC,IACvB,IAGL,CAACF,KAAY,CAACC,KAAc,CAACC,KAK7B,CAACL,KAAe,CAACC,IACZZ,EAAkBC,GAAGC,GAAGW,CAAS,IAGtC,CAACF,KAAeC,IACX,IAGL,CAACA,KAAeD,IACX,KAILA,MAAgBC,KACVA,KAAe,MAAMD,KAAe,KAIvCX,EAAkBC,GAAGC,GAAGW,CAAS;AAC1C,GAEaI,IAAoB,CAC/BC,GACAR,GACAG,MAEO,CAACZ,GAAUC,MAAa;AAC7B,QAAMiB,IAAUD,EAAcE,EAAmBnB,CAAC,CAAC,GAC7CoB,IAAUH,EAAcE,EAAmBlB,CAAC,CAAC,GAE7CoB,IAAWH,IAAUI,EAAYJ,GAASlB,EAAE,QAAQ,IAAI,KACxDuB,IAAWH,IAAUE,EAAYF,GAASnB,EAAE,QAAQ,IAAI,KAExDS,IACJQ,MAAY,SACR,WAAW,GAAGG,KAAY,CAAC,EAAE,IAAIrB,EAAE,QACnC,QAEAW,IACJS,MAAY,SACR,WAAW,GAAGG,KAAY,CAAC,EAAE,IAAItB,EAAE,QACnC,QAEAC,IAAcU,GAAW,KAAA,EAAO,iBAAiB;AAEvD,SAAOJ;AAAA,IACLC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAT;AAAA,IACAF;AAAA,IACAC;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"sort.js","sources":["../../../src/utils/tokens/sort.ts"],"sourcesContent":["import { formatUnits } from 'ethers';\n\nimport { getTokenBalanceKey } from '../intents/getTokenBalanceKey';\nimport type { Token, TokenBalances } from '@/types/token';\nimport type { PriorityAssets } from '@/types/config';\nimport type { Chains } from '@/types/chain';\n\nconst compareByPriority = (\n a: Token,\n b: Token,\n priorityAssets: PriorityAssets,\n): number | null => {\n if (a.isIntent || b.isIntent || priorityAssets.length === 0) {\n return null;\n }\n\n const isPriorityToken = (token: Token): boolean => {\n // by assetId\n if (typeof priorityAssets[0] === 'string') {\n return (priorityAssets as ReadonlyArray<string>).includes(token.assetId);\n }\n\n // by blockchain and symbol\n return (priorityAssets as ReadonlyArray<readonly [Chains, string]>).some(\n ([blockchain, symbol]) =>\n token.blockchain === blockchain &&\n token.symbol.toLowerCase() === symbol.toLowerCase(),\n );\n };\n\n const getPriorityIndex = (token: Token): number => {\n // by assetId\n if (typeof priorityAssets[0] === 'string') {\n return (priorityAssets as ReadonlyArray<string>).indexOf(token.assetId);\n }\n\n // by blockchain and symbol\n return (\n priorityAssets as ReadonlyArray<readonly [Chains, string]>\n ).findIndex(\n ([blockchain, symbol]) =>\n token.blockchain === blockchain &&\n token.symbol.toLowerCase() === symbol.toLowerCase(),\n );\n };\n\n const aIsPriority = isPriorityToken(a);\n const bIsPriority = isPriorityToken(b);\n\n if (aIsPriority && !bIsPriority) {\n return -1;\n }\n\n if (!aIsPriority && bIsPriority) {\n return 1;\n }\n\n // If both are priority tokens, maintain their relative order based on the priority list\n if (aIsPriority && bIsPriority) {\n const aIndex = getPriorityIndex(a);\n const bIndex = getPriorityIndex(b);\n\n if (aIndex !== bIndex) {\n return aIndex - bIndex;\n }\n }\n\n // Return null to indicate no priority difference, continue with other sorting criteria\n return null;\n};\n\nconst compareWithSearch = (\n a: Token,\n b: Token,\n searchLower: string | undefined,\n): number => {\n if (a.isIntent && !b.isIntent) {\n return -1;\n }\n\n if (!a.isIntent && b.isIntent) {\n return 1;\n }\n\n // sort alphabetically if no search\n if (!searchLower) {\n const symbolCompare = (a.symbol ?? '').localeCompare(\n b.symbol ?? '',\n undefined,\n {\n sensitivity: 'base',\n },\n );\n\n if (symbolCompare !== 0) {\n return symbolCompare;\n }\n\n return a.chainName.localeCompare(b.chainName, undefined, {\n sensitivity: 'base',\n });\n }\n\n const getSymbolRank = (symbol: string) => {\n if (symbol === searchLower) {\n return 0;\n }\n\n if (symbol.startsWith(searchLower)) {\n return 1;\n }\n\n if (symbol.includes(searchLower)) {\n return 2;\n }\n\n return 3;\n };\n\n const symbolRankA = getSymbolRank(a.symbol.toLowerCase());\n const symbolRankB = getSymbolRank(b.symbol.toLowerCase());\n\n // First compare by symbol match rank\n if (symbolRankA !== symbolRankB) {\n return symbolRankA - symbolRankB;\n }\n\n // Then compare alphabetically by symbol\n const symbolCompare = a.symbol\n .toLowerCase()\n .localeCompare(b.symbol.toLowerCase());\n\n if (symbolCompare !== 0) {\n return symbolCompare;\n }\n\n // Finally compare by blockchain\n return a.chainName.toLowerCase().localeCompare(b.chainName.toLowerCase());\n};\n\nconst sortTokens = (\n walletSupportedChains: ReadonlyArray<Chains>,\n priorityAssets: PriorityAssets,\n usdBalanceA: number | undefined,\n usdBalanceB: number | undefined,\n searchStr: string | undefined,\n a: Token,\n b: Token,\n): number => {\n const isIntent = a.isIntent || b.isIntent;\n const hasBalanceA = usdBalanceA !== undefined && usdBalanceA > 0;\n const hasBalanceB = usdBalanceB !== undefined && usdBalanceB > 0;\n\n // 1. Tokens with balance always come first\n if (hasBalanceA && !hasBalanceB) {\n return -1;\n }\n\n if (!hasBalanceA && hasBalanceB) {\n return 1;\n }\n\n // 2. If both have balance, sort by balance amount and other criteria\n if (hasBalanceA && hasBalanceB) {\n // Sort supported chains first\n const aSupported = walletSupportedChains.includes(a.blockchain);\n const bSupported = walletSupportedChains.includes(b.blockchain);\n\n if (!isIntent && aSupported && !bSupported) {\n return -1;\n }\n\n if (!isIntent && !aSupported && bSupported) {\n return 1;\n }\n\n // Compare non-zero balances\n if (usdBalanceA !== usdBalanceB) {\n return (usdBalanceB ?? 0) - (usdBalanceA ?? 0);\n }\n\n // If balances equal, sort by search/name\n return compareWithSearch(a, b, searchStr);\n }\n\n // 3. Both have no balance - prioritize by asset IDs or blockchain-symbol pairs (only for non-intent tokens)\n const priorityComparison = compareByPriority(a, b, priorityAssets);\n\n if (priorityComparison !== null) {\n return priorityComparison;\n }\n\n // 4. For tokens without balance and not in priority list, sort by supported chains\n const aSupported = walletSupportedChains.includes(a.blockchain);\n const bSupported = walletSupportedChains.includes(b.blockchain);\n\n if (!isIntent && aSupported && !bSupported) {\n return -1;\n }\n\n if (!isIntent && !aSupported && bSupported) {\n return 1;\n }\n\n // 5. Finally, sort alphabetically by search/name\n return compareWithSearch(a, b, searchStr);\n};\n\nexport const createTokenSorter = (\n tokensBalance: TokenBalances,\n walletSupportedChains: ReadonlyArray<Chains>,\n searchStr?: string | undefined,\n priorityAssets: PriorityAssets = [],\n) => {\n return (a: Token, b: Token) => {\n const recordA = tokensBalance[getTokenBalanceKey(a)];\n const recordB = tokensBalance[getTokenBalanceKey(b)];\n\n const balanceA = recordA ? formatUnits(recordA, a.decimals) : '0';\n const balanceB = recordB ? formatUnits(recordB, b.decimals) : '0';\n\n const usdBalanceA =\n recordA !== undefined\n ? parseFloat(`${balanceA ?? 0}`) * a.price\n : undefined;\n\n const usdBalanceB =\n recordB !== undefined\n ? parseFloat(`${balanceB ?? 0}`) * b.price\n : undefined;\n\n const searchLower = searchStr?.trim().toLowerCase() ?? undefined;\n\n return sortTokens(\n walletSupportedChains,\n priorityAssets,\n usdBalanceA,\n usdBalanceB,\n searchLower,\n a,\n b,\n );\n };\n};\n"],"names":["compareByPriority","a","b","priorityAssets","isPriorityToken","token","blockchain","symbol","getPriorityIndex","aIsPriority","bIsPriority","aIndex","bIndex","compareWithSearch","searchLower","symbolCompare","getSymbolRank","symbolRankA","symbolRankB","sortTokens","walletSupportedChains","usdBalanceA","usdBalanceB","searchStr","isIntent","hasBalanceA","hasBalanceB","aSupported","bSupported","priorityComparison","createTokenSorter","tokensBalance","recordA","getTokenBalanceKey","recordB","balanceA","formatUnits","balanceB"],"mappings":"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"}
@@ -1,41 +1,41 @@
1
- import { jsx as t, jsxs as _ } from "react/jsx-runtime";
2
- import { useState as y, useEffect as l, useCallback as B } from "react";
3
- import { useTokenModal as R } from "../../hooks/useTokenModal.js";
4
- import { useTypedTranslation as A } from "../../localisation.js";
5
- import { WidgetDepositSkeleton as b } from "./WidgetDepositSkeleton.js";
6
- import { b as F, u as q, y as j, n as N, c as O, p as Q, o as U, S as K } from "../../config-CgCb5P7j.js";
1
+ import { jsx as t, jsxs as y } from "react/jsx-runtime";
2
+ import { useState as b, useEffect as p, useCallback as R } from "react";
3
+ import { useTokenModal as A } from "../../hooks/useTokenModal.js";
4
+ import { useTypedTranslation as F } from "../../localisation.js";
5
+ import { WidgetDepositSkeleton as S } from "./WidgetDepositSkeleton.js";
6
+ import { b as q, u as j, y as N, n as O, c as Q, p as U, o as K, S as P } from "../../config-C47AYcMK.js";
7
7
  import "@tanstack/react-query";
8
8
  import "@headlessui/react";
9
9
  import "@material-symbols-svg/react-rounded/icons/chevron-left";
10
10
  import "framer-motion";
11
11
  import "../../features/ChainsDropdown/ChainItem.js";
12
- import "@material-symbols-svg/react-rounded/icons/target";
13
12
  import "../../utils/cn.js";
14
13
  import "../../constants/chains.js";
15
14
  import { notReachable as r } from "../../utils/notReachable.js";
16
15
  import "use-debounce";
17
16
  import "@material-symbols-svg/react-rounded/icons/wand-shine";
18
17
  import "../../components/Input.js";
19
- import { Banner as P } from "../../components/Banner.js";
20
- import { isDebug as Y } from "../../utils/checkers/isDebug.js";
18
+ import { Banner as z } from "../../components/Banner.js";
19
+ import { isDebug as G } from "../../utils/checkers/isDebug.js";
21
20
  import "viem";
22
21
  import "ethers";
23
22
  import "../../machine/machine.js";
24
- import { fireEvent as S } from "../../machine/events/utils/fireEvent.js";
25
- import { SuccessScreen as z } from "../../features/SuccessScreen/index.js";
26
- import { TokensModal as G } from "../../features/TokensModal.js";
23
+ import { fireEvent as u } from "../../machine/events/utils/fireEvent.js";
24
+ import { SuccessScreen as H } from "../../features/SuccessScreen/index.js";
25
+ import { TokensModal as J } from "../../features/TokensModal.js";
27
26
  import "@material-symbols-svg/react-rounded/icons/arrow-downward";
28
27
  import "@material-symbols-svg/react-rounded/icons/progress-activity";
29
- import { ExternalDeposit as H } from "../../features/ExternalDeposit.js";
30
- import { DepositMethodSwitcher as J } from "../../features/DepositMethodSwitcher.js";
31
- import { WalletCompatibilityCheck as L } from "../../features/WalletCompatibilityCheck/index.js";
32
- import { BlockingError as V } from "../../components/BlockingError.js";
28
+ import { ExternalDeposit as L } from "../../features/ExternalDeposit.js";
29
+ import { DepositMethodSwitcher as V } from "../../features/DepositMethodSwitcher.js";
30
+ import { WalletCompatibilityCheck as X } from "../../features/WalletCompatibilityCheck/index.js";
31
+ import { BlockingError as Y } from "../../components/BlockingError.js";
33
32
  import "copy-text-to-clipboard";
34
33
  import "@material-symbols-svg/react-rounded/icons/content-copy";
35
34
  import "../../components/InputAmount.js";
36
35
  import "../../components/Notes.js";
37
36
  import "@material-symbols-svg/react-rounded/icons/close";
38
37
  import "@material-symbols-svg/react-rounded/icons/check-circle";
38
+ import "../../components/ChainShortcut.js";
39
39
  import "zod";
40
40
  import "../../utils/near/rpc.js";
41
41
  import "../../index-DEq3oXQF.js";
@@ -48,30 +48,30 @@ import "@defuse-protocol/one-click-sdk-typescript";
48
48
  import "axios";
49
49
  import "../../network.js";
50
50
  import "viem/chains";
51
- import { useTokenInputPair as X } from "../../hooks/useTokenInputPair.js";
52
- import { useIsCompatibilityCheckRequired as Z } from "../../hooks/useIsCompatibilityCheckRequired.js";
51
+ import { useTokenInputPair as Z } from "../../hooks/useTokenInputPair.js";
52
+ import { useIsCompatibilityCheckRequired as $ } from "../../hooks/useIsCompatibilityCheckRequired.js";
53
53
  import "browser-or-node";
54
- const Ze = ({
55
- providers: p,
54
+ const $e = ({
55
+ providers: m,
56
56
  onMsg: n,
57
- makeTransfer: w,
58
- isLoading: T
57
+ makeTransfer: T,
58
+ isLoading: w
59
59
  }) => {
60
- const { ctx: o } = F(), { t: u } = A(), { isDirectNearTokenWithdrawal: x } = q(), {
61
- chainsFilter: m,
60
+ const { ctx: o } = q(), { t: i } = F(), { isDirectNearTokenWithdrawal: x } = j(), {
61
+ chainsFilter: f,
62
62
  alchemyApiKey: C,
63
63
  refetchQuoteInterval: g,
64
- intentsAccountType: v,
65
- onWalletSignout: D
66
- } = j(), { onChangeAmount: E, onChangeToken: f } = X(), { status: d, refetch: W } = N(), { tokenModalOpen: s, updateTokenModalState: i } = R({ onMsg: n }), k = Z(), [I, a] = y(!1);
67
- l(() => {
68
- k && a(!0);
69
- }, [k]);
70
- const [h, c] = y(), M = B(
64
+ intentsAccountType: D,
65
+ onWalletSignout: v
66
+ } = N(), { onChangeAmount: E, onChangeToken: d } = Z(), { status: k, refetch: W } = O(), { tokenModalOpen: s, updateTokenModalState: a } = A({ onMsg: n }), h = $(), [I, c] = b(!1);
67
+ p(() => {
68
+ h && c(!0);
69
+ }, [h]);
70
+ const [_, l] = b(), M = R(
71
71
  (e) => {
72
72
  switch (e.type) {
73
73
  case "on_successful_transfer":
74
- c(e.transferResult);
74
+ l(e.transferResult);
75
75
  break;
76
76
  case "on_transaction_received":
77
77
  break;
@@ -81,10 +81,10 @@ const Ze = ({
81
81
  },
82
82
  []
83
83
  );
84
- if (l(() => (S("reset", { clearWalletAddress: !0 }), () => {
85
- S("depositTypeSet", { isExternal: !1 });
86
- }), []), O({
87
- debug: Y(),
84
+ p(() => (u("reset", { clearWalletAddress: !0 }), () => {
85
+ u("depositTypeSet", { isExternal: !1 });
86
+ }), []), Q({
87
+ debug: G(),
88
88
  listenTo: [
89
89
  "checkWalletConnection",
90
90
  "setSourceTokenBalance",
@@ -93,25 +93,29 @@ const Ze = ({
93
93
  ["makeQuote", { message: void 0, refetchQuoteInterval: g }],
94
94
  ["setBalancesUsingAlchemyExt", { alchemyApiKey: C }]
95
95
  ]
96
- }), l(() => {
96
+ }), p(() => {
97
97
  n?.({
98
98
  type: "on_change_deposit_type",
99
99
  isExternal: o.isDepositFromExternalWallet
100
100
  });
101
- }, [o.isDepositFromExternalWallet]), T || d !== "error" && !o.sourceToken)
102
- return /* @__PURE__ */ t(b, {});
101
+ }, [o.isDepositFromExternalWallet]);
102
+ const B = () => {
103
+ u("reset", { clearWalletAddress: !1, keepSelectedTokens: !0 });
104
+ };
105
+ if (w || k !== "error" && !o.sourceToken)
106
+ return /* @__PURE__ */ t(S, {});
103
107
  if (I)
104
108
  return /* @__PURE__ */ t(
105
- L,
109
+ X,
106
110
  {
107
- providers: p,
111
+ providers: m,
108
112
  onMsg: (e) => {
109
113
  switch (e.type) {
110
114
  case "on_sign_out":
111
- D?.(v), a(!1);
115
+ v?.(D), c(!1);
112
116
  break;
113
117
  case "on_close":
114
- a(!1);
118
+ c(!1);
115
119
  break;
116
120
  default:
117
121
  r(e.type);
@@ -119,19 +123,16 @@ const Ze = ({
119
123
  }
120
124
  }
121
125
  );
122
- if (o.state === "transfer_success" && h)
126
+ if (o.state === "transfer_success" && _)
123
127
  return /* @__PURE__ */ t(
124
- z,
128
+ H,
125
129
  {
126
- ...h,
127
- message: [
128
- "Your deposit has been successfully completed,",
129
- "and the funds are now available in your account."
130
- ],
130
+ ..._,
131
+ title: i("transfer.success.deposit.title", "Deposit successful"),
131
132
  onMsg: (e) => {
132
133
  switch (e.type) {
133
134
  case "on_dismiss_success":
134
- c(void 0);
135
+ l(void 0), B();
135
136
  break;
136
137
  default:
137
138
  r(e.type);
@@ -139,10 +140,10 @@ const Ze = ({
139
140
  }
140
141
  }
141
142
  );
142
- switch (d) {
143
+ switch (k) {
143
144
  case "error":
144
145
  return /* @__PURE__ */ t(
145
- V,
146
+ Y,
146
147
  {
147
148
  message: "Couldn't load tokens list.",
148
149
  onClickRetry: W
@@ -150,46 +151,46 @@ const Ze = ({
150
151
  );
151
152
  case "success":
152
153
  return s !== "none" ? /* @__PURE__ */ t(
153
- G,
154
+ J,
154
155
  {
155
156
  showBalances: !0,
156
157
  showChainsSelector: !0,
157
158
  variant: s,
158
159
  groupTokens: s === "source",
159
- chainsFilter: s === "source" ? m.source : m.target,
160
+ chainsFilter: s === "source" ? f.source : f.target,
160
161
  onMsg: (e) => {
161
162
  switch (e.type) {
162
163
  case "on_select_token":
163
- f(s, e.token), i("none"), n?.({
164
+ d(s, e.token), a("none"), n?.({
164
165
  type: e.type,
165
166
  token: e.token,
166
167
  variant: s
167
168
  });
168
169
  break;
169
170
  case "on_dismiss_tokens_modal":
170
- i("none");
171
+ a("none");
171
172
  break;
172
173
  default:
173
174
  r(e);
174
175
  }
175
176
  }
176
177
  }
177
- ) : /* @__PURE__ */ _("div", { className: "gap-sw-2xl flex flex-col", children: [
178
+ ) : /* @__PURE__ */ y("div", { className: "gap-sw-2xl flex flex-col", children: [
178
179
  /* @__PURE__ */ t(
179
- Q.Source,
180
+ U.Source,
180
181
  {
181
182
  showBalance: !o.isDepositFromExternalWallet,
182
- heading: u("tokenInput.heading.source.deposit", "Sell"),
183
+ heading: i("tokenInput.heading.source.deposit", "Sell"),
183
184
  onMsg: (e) => {
184
185
  switch (e.type) {
185
186
  case "on_select_token":
186
- f("source", e.token);
187
+ d("source", e.token);
187
188
  break;
188
189
  case "on_change_amount":
189
190
  E("source", e.amount);
190
191
  break;
191
192
  case "on_click_select_token":
192
- i("source");
193
+ a("source");
193
194
  break;
194
195
  default:
195
196
  r(e);
@@ -197,10 +198,10 @@ const Ze = ({
197
198
  }
198
199
  }
199
200
  ),
200
- /* @__PURE__ */ t(J, { children: ({ isExternal: e }) => e ? /* @__PURE__ */ _("div", { className: "gap-sw-2xl flex flex-col justify-between", children: [
201
- /* @__PURE__ */ t(H, { onMsg: M }),
201
+ /* @__PURE__ */ t(V, { children: ({ isExternal: e }) => e ? /* @__PURE__ */ y("div", { className: "gap-sw-2xl flex flex-col justify-between", children: [
202
+ /* @__PURE__ */ t(L, { onMsg: M }),
202
203
  (o.state === "quote_success_internal" || o.state === "quote_success_external") && /* @__PURE__ */ t(
203
- P,
204
+ z,
204
205
  {
205
206
  multiline: !0,
206
207
  variant: "warn",
@@ -208,25 +209,25 @@ const Ze = ({
208
209
  }
209
210
  )
210
211
  ] }) : null }),
211
- !x && /* @__PURE__ */ t(U, {}),
212
+ !x && /* @__PURE__ */ t(K, {}),
212
213
  /* @__PURE__ */ t(
213
- K,
214
+ P,
214
215
  {
215
- providers: p,
216
- makeTransfer: w,
217
- label: u("submit.active.deposit", "Deposit now"),
216
+ providers: m,
217
+ makeTransfer: T,
218
+ label: i("submit.active.deposit", "Deposit now"),
218
219
  onSuccess: (e) => {
219
- c(e), n?.({ type: "on_transfer_success" });
220
+ l(e), n?.({ type: "on_transfer_success" });
220
221
  }
221
222
  }
222
223
  )
223
224
  ] });
224
225
  case "pending":
225
226
  default:
226
- return /* @__PURE__ */ t(b, {});
227
+ return /* @__PURE__ */ t(S, {});
227
228
  }
228
229
  };
229
230
  export {
230
- Ze as WidgetDepositContent
231
+ $e as WidgetDepositContent
231
232
  };
232
233
  //# sourceMappingURL=WidgetDepositContent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetDepositContent.js","sources":["../../../src/widgets/WidgetDeposit/WidgetDepositContent.tsx"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\n\nimport type { CommonWidgetProps, TokenInputType } from '../types';\nimport { useTokenModal } from '../../hooks/useTokenModal';\nimport { useTypedTranslation } from '../../localisation';\nimport { WidgetDepositSkeleton } from './WidgetDepositSkeleton';\nimport {\n DepositMethodSwitcher,\n ExternalDeposit,\n SubmitButton,\n SuccessScreen,\n SwapQuote,\n TokenInput,\n TokensModal,\n} from '@/features';\n\nimport { Banner, BlockingError } from '@/components';\nimport { WalletCompatibilityCheck } from '@/features/WalletCompatibilityCheck';\n\nimport { useStoreSideEffects } from '@/machine/effects';\nimport { useComputedSnapshot, useUnsafeSnapshot } from '@/machine/snap';\nimport { fireEvent } from '@/machine/events/utils/fireEvent';\n\nimport {\n useIsCompatibilityCheckRequired,\n useTokenInputPair,\n useTokens,\n} from '@/hooks';\nimport { useConfig } from '@/config';\n\nimport { isDebug, notReachable } from '@/utils';\n\nimport type { Token, TransferResult } from '@/types';\n\ntype Msg =\n | { type: 'on_select_token'; token: Token; variant: TokenInputType }\n | { type: 'on_change_deposit_type'; isExternal: boolean }\n | { type: 'on_transfer_success' }\n | { type: 'on_tokens_modal_toggled'; isOpen: boolean };\n\nexport type Props = CommonWidgetProps<Msg>;\n\nexport const WidgetDepositContent = ({\n providers,\n onMsg,\n makeTransfer,\n isLoading,\n}: Props) => {\n const { ctx } = useUnsafeSnapshot();\n const { t } = useTypedTranslation();\n const { isDirectNearTokenWithdrawal } = useComputedSnapshot();\n const {\n chainsFilter,\n alchemyApiKey,\n refetchQuoteInterval,\n intentsAccountType,\n onWalletSignout,\n } = useConfig();\n\n const { onChangeAmount, onChangeToken } = useTokenInputPair();\n const { status: tokensStatus, refetch: refetchTokens } = useTokens();\n const { tokenModalOpen, updateTokenModalState } = useTokenModal({ onMsg });\n\n const isCompatibilityCheckRequired = useIsCompatibilityCheckRequired();\n const [isCompatibilityOpen, setIsCompatibilityOpen] = useState(false);\n\n useEffect(() => {\n if (isCompatibilityCheckRequired) {\n setIsCompatibilityOpen(true);\n }\n }, [isCompatibilityCheckRequired]);\n\n const [transferResult, setTransferResult] = useState<\n TransferResult | undefined\n >();\n\n const handleExternalDepositMsg = useCallback(\n (\n msg:\n | { type: 'on_transaction_received' }\n | { type: 'on_successful_transfer'; transferResult: TransferResult },\n ) => {\n switch (msg.type) {\n case 'on_successful_transfer':\n setTransferResult(msg.transferResult);\n break;\n case 'on_transaction_received':\n // Transaction received, no action needed\n break;\n default:\n notReachable(msg);\n }\n },\n [],\n );\n\n useEffect(() => {\n fireEvent('reset', { clearWalletAddress: true });\n\n return () => {\n fireEvent('depositTypeSet', { isExternal: false });\n };\n }, []);\n\n useStoreSideEffects({\n debug: isDebug(),\n listenTo: [\n 'checkWalletConnection',\n 'setSourceTokenBalance',\n 'setSourceTokenIntentsTarget',\n ['setDefaultSelectedTokens', { skipIntents: true }],\n ['makeQuote', { message: undefined, refetchQuoteInterval }],\n ['setBalancesUsingAlchemyExt', { alchemyApiKey }],\n ],\n });\n\n useEffect(() => {\n onMsg?.({\n type: 'on_change_deposit_type',\n isExternal: ctx.isDepositFromExternalWallet,\n });\n }, [ctx.isDepositFromExternalWallet]);\n\n if (!!isLoading || (tokensStatus !== 'error' && !ctx.sourceToken)) {\n return <WidgetDepositSkeleton />;\n }\n\n if (isCompatibilityOpen) {\n return (\n <WalletCompatibilityCheck\n providers={providers}\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_sign_out':\n onWalletSignout?.(intentsAccountType);\n setIsCompatibilityOpen(false);\n break;\n case 'on_close':\n setIsCompatibilityOpen(false);\n break;\n default:\n notReachable(msg.type);\n }\n }}\n />\n );\n }\n\n if (ctx.state === 'transfer_success' && !!transferResult) {\n return (\n <SuccessScreen\n {...transferResult}\n message={[\n 'Your deposit has been successfully completed,',\n 'and the funds are now available in your account.',\n ]}\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_dismiss_success':\n setTransferResult(undefined);\n break;\n default:\n notReachable(msg.type);\n }\n }}\n />\n );\n }\n\n switch (tokensStatus) {\n case 'error':\n return (\n <BlockingError\n message=\"Couldn't load tokens list.\"\n onClickRetry={refetchTokens}\n />\n );\n\n case 'success': {\n if (tokenModalOpen !== 'none') {\n return (\n <TokensModal\n showBalances\n showChainsSelector\n variant={tokenModalOpen}\n groupTokens={tokenModalOpen === 'source'}\n chainsFilter={\n tokenModalOpen === 'source'\n ? chainsFilter.source\n : chainsFilter.target\n }\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_select_token':\n onChangeToken(tokenModalOpen, msg.token);\n updateTokenModalState('none');\n onMsg?.({\n type: msg.type,\n token: msg.token,\n variant: tokenModalOpen,\n });\n break;\n case 'on_dismiss_tokens_modal':\n updateTokenModalState('none');\n break;\n default:\n notReachable(msg);\n }\n }}\n />\n );\n }\n\n return (\n <div className=\"gap-sw-2xl flex flex-col\">\n <TokenInput.Source\n showBalance={!ctx.isDepositFromExternalWallet}\n heading={t('tokenInput.heading.source.deposit', 'Sell')}\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_select_token':\n onChangeToken('source', msg.token);\n break;\n case 'on_change_amount':\n onChangeAmount('source', msg.amount);\n break;\n case 'on_click_select_token':\n updateTokenModalState('source');\n break;\n default:\n notReachable(msg);\n }\n }}\n />\n\n <DepositMethodSwitcher>\n {({ isExternal }) =>\n isExternal ? (\n <div className=\"gap-sw-2xl flex flex-col justify-between\">\n <ExternalDeposit onMsg={handleExternalDepositMsg} />\n {(ctx.state === 'quote_success_internal' ||\n ctx.state === 'quote_success_external') && (\n <Banner\n multiline\n variant=\"warn\"\n message=\"Match the token, amount and network entered above in your wallet. Incorrect values will cause the deposit to fail and be refunded.\"\n />\n )}\n </div>\n ) : null\n }\n </DepositMethodSwitcher>\n\n {!isDirectNearTokenWithdrawal && <SwapQuote />}\n\n <SubmitButton\n providers={providers}\n makeTransfer={makeTransfer}\n label={t('submit.active.deposit', 'Deposit now')}\n onSuccess={(transfer) => {\n setTransferResult(transfer);\n onMsg?.({ type: 'on_transfer_success' });\n }}\n />\n </div>\n );\n }\n\n case 'pending':\n default:\n return <WidgetDepositSkeleton />;\n }\n};\n"],"names":["WidgetDepositContent","providers","onMsg","makeTransfer","isLoading","ctx","useUnsafeSnapshot","t","useTypedTranslation","isDirectNearTokenWithdrawal","useComputedSnapshot","chainsFilter","alchemyApiKey","refetchQuoteInterval","intentsAccountType","onWalletSignout","useConfig","onChangeAmount","onChangeToken","useTokenInputPair","tokensStatus","refetchTokens","useTokens","tokenModalOpen","updateTokenModalState","useTokenModal","isCompatibilityCheckRequired","useIsCompatibilityCheckRequired","isCompatibilityOpen","setIsCompatibilityOpen","useState","useEffect","transferResult","setTransferResult","handleExternalDepositMsg","useCallback","msg","notReachable","fireEvent","useStoreSideEffects","isDebug","WidgetDepositSkeleton","jsx","WalletCompatibilityCheck","SuccessScreen","BlockingError","TokensModal","jsxs","TokenInput","DepositMethodSwitcher","isExternal","ExternalDeposit","Banner","SwapQuote","SubmitButton","transfer"],"mappings":"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"}
1
+ {"version":3,"file":"WidgetDepositContent.js","sources":["../../../src/widgets/WidgetDeposit/WidgetDepositContent.tsx"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\n\nimport type { CommonWidgetProps, TokenInputType } from '../types';\nimport { useTokenModal } from '../../hooks/useTokenModal';\nimport { useTypedTranslation } from '../../localisation';\nimport { WidgetDepositSkeleton } from './WidgetDepositSkeleton';\nimport {\n DepositMethodSwitcher,\n ExternalDeposit,\n SubmitButton,\n SuccessScreen,\n SwapQuote,\n TokenInput,\n TokensModal,\n} from '@/features';\n\nimport { Banner, BlockingError } from '@/components';\nimport { WalletCompatibilityCheck } from '@/features/WalletCompatibilityCheck';\n\nimport { useStoreSideEffects } from '@/machine/effects';\nimport { useComputedSnapshot, useUnsafeSnapshot } from '@/machine/snap';\nimport { fireEvent } from '@/machine/events/utils/fireEvent';\n\nimport {\n useIsCompatibilityCheckRequired,\n useTokenInputPair,\n useTokens,\n} from '@/hooks';\nimport { useConfig } from '@/config';\n\nimport { isDebug, notReachable } from '@/utils';\n\nimport type { Token, TransferResult } from '@/types';\n\ntype Msg =\n | { type: 'on_select_token'; token: Token; variant: TokenInputType }\n | { type: 'on_change_deposit_type'; isExternal: boolean }\n | { type: 'on_transfer_success' }\n | { type: 'on_tokens_modal_toggled'; isOpen: boolean };\n\nexport type Props = CommonWidgetProps<Msg>;\n\nexport const WidgetDepositContent = ({\n providers,\n onMsg,\n makeTransfer,\n isLoading,\n}: Props) => {\n const { ctx } = useUnsafeSnapshot();\n const { t } = useTypedTranslation();\n const { isDirectNearTokenWithdrawal } = useComputedSnapshot();\n const {\n chainsFilter,\n alchemyApiKey,\n refetchQuoteInterval,\n intentsAccountType,\n onWalletSignout,\n } = useConfig();\n\n const { onChangeAmount, onChangeToken } = useTokenInputPair();\n const { status: tokensStatus, refetch: refetchTokens } = useTokens();\n const { tokenModalOpen, updateTokenModalState } = useTokenModal({ onMsg });\n\n const isCompatibilityCheckRequired = useIsCompatibilityCheckRequired();\n const [isCompatibilityOpen, setIsCompatibilityOpen] = useState(false);\n\n useEffect(() => {\n if (isCompatibilityCheckRequired) {\n setIsCompatibilityOpen(true);\n }\n }, [isCompatibilityCheckRequired]);\n\n const [transferResult, setTransferResult] = useState<\n TransferResult | undefined\n >();\n\n const handleExternalDepositMsg = useCallback(\n (\n msg:\n | { type: 'on_transaction_received' }\n | { type: 'on_successful_transfer'; transferResult: TransferResult },\n ) => {\n switch (msg.type) {\n case 'on_successful_transfer':\n setTransferResult(msg.transferResult);\n break;\n case 'on_transaction_received':\n // Transaction received, no action needed\n break;\n default:\n notReachable(msg);\n }\n },\n [],\n );\n\n useEffect(() => {\n fireEvent('reset', { clearWalletAddress: true });\n\n return () => {\n fireEvent('depositTypeSet', { isExternal: false });\n };\n }, []);\n\n useStoreSideEffects({\n debug: isDebug(),\n listenTo: [\n 'checkWalletConnection',\n 'setSourceTokenBalance',\n 'setSourceTokenIntentsTarget',\n ['setDefaultSelectedTokens', { skipIntents: true }],\n ['makeQuote', { message: undefined, refetchQuoteInterval }],\n ['setBalancesUsingAlchemyExt', { alchemyApiKey }],\n ],\n });\n\n useEffect(() => {\n onMsg?.({\n type: 'on_change_deposit_type',\n isExternal: ctx.isDepositFromExternalWallet,\n });\n }, [ctx.isDepositFromExternalWallet]);\n\n const onBackToSwap = () => {\n fireEvent('reset', { clearWalletAddress: false, keepSelectedTokens: true });\n };\n\n if (!!isLoading || (tokensStatus !== 'error' && !ctx.sourceToken)) {\n return <WidgetDepositSkeleton />;\n }\n\n if (isCompatibilityOpen) {\n return (\n <WalletCompatibilityCheck\n providers={providers}\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_sign_out':\n onWalletSignout?.(intentsAccountType);\n setIsCompatibilityOpen(false);\n break;\n case 'on_close':\n setIsCompatibilityOpen(false);\n break;\n default:\n notReachable(msg.type);\n }\n }}\n />\n );\n }\n\n if (ctx.state === 'transfer_success' && !!transferResult) {\n return (\n <SuccessScreen\n {...transferResult}\n title={t('transfer.success.deposit.title', 'Deposit successful')}\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_dismiss_success':\n setTransferResult(undefined);\n onBackToSwap();\n break;\n default:\n notReachable(msg.type);\n }\n }}\n />\n );\n }\n\n switch (tokensStatus) {\n case 'error':\n return (\n <BlockingError\n message=\"Couldn't load tokens list.\"\n onClickRetry={refetchTokens}\n />\n );\n\n case 'success': {\n if (tokenModalOpen !== 'none') {\n return (\n <TokensModal\n showBalances\n showChainsSelector\n variant={tokenModalOpen}\n groupTokens={tokenModalOpen === 'source'}\n chainsFilter={\n tokenModalOpen === 'source'\n ? chainsFilter.source\n : chainsFilter.target\n }\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_select_token':\n onChangeToken(tokenModalOpen, msg.token);\n updateTokenModalState('none');\n onMsg?.({\n type: msg.type,\n token: msg.token,\n variant: tokenModalOpen,\n });\n break;\n case 'on_dismiss_tokens_modal':\n updateTokenModalState('none');\n break;\n default:\n notReachable(msg);\n }\n }}\n />\n );\n }\n\n return (\n <div className=\"gap-sw-2xl flex flex-col\">\n <TokenInput.Source\n showBalance={!ctx.isDepositFromExternalWallet}\n heading={t('tokenInput.heading.source.deposit', 'Sell')}\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_select_token':\n onChangeToken('source', msg.token);\n break;\n case 'on_change_amount':\n onChangeAmount('source', msg.amount);\n break;\n case 'on_click_select_token':\n updateTokenModalState('source');\n break;\n default:\n notReachable(msg);\n }\n }}\n />\n\n <DepositMethodSwitcher>\n {({ isExternal }) =>\n isExternal ? (\n <div className=\"gap-sw-2xl flex flex-col justify-between\">\n <ExternalDeposit onMsg={handleExternalDepositMsg} />\n {(ctx.state === 'quote_success_internal' ||\n ctx.state === 'quote_success_external') && (\n <Banner\n multiline\n variant=\"warn\"\n message=\"Match the token, amount and network entered above in your wallet. Incorrect values will cause the deposit to fail and be refunded.\"\n />\n )}\n </div>\n ) : null\n }\n </DepositMethodSwitcher>\n\n {!isDirectNearTokenWithdrawal && <SwapQuote />}\n\n <SubmitButton\n providers={providers}\n makeTransfer={makeTransfer}\n label={t('submit.active.deposit', 'Deposit now')}\n onSuccess={(transfer) => {\n setTransferResult(transfer);\n onMsg?.({ type: 'on_transfer_success' });\n }}\n />\n </div>\n );\n }\n\n case 'pending':\n default:\n return <WidgetDepositSkeleton />;\n }\n};\n"],"names":["WidgetDepositContent","providers","onMsg","makeTransfer","isLoading","ctx","useUnsafeSnapshot","t","useTypedTranslation","isDirectNearTokenWithdrawal","useComputedSnapshot","chainsFilter","alchemyApiKey","refetchQuoteInterval","intentsAccountType","onWalletSignout","useConfig","onChangeAmount","onChangeToken","useTokenInputPair","tokensStatus","refetchTokens","useTokens","tokenModalOpen","updateTokenModalState","useTokenModal","isCompatibilityCheckRequired","useIsCompatibilityCheckRequired","isCompatibilityOpen","setIsCompatibilityOpen","useState","useEffect","transferResult","setTransferResult","handleExternalDepositMsg","useCallback","msg","notReachable","fireEvent","useStoreSideEffects","isDebug","onBackToSwap","WidgetDepositSkeleton","jsx","WalletCompatibilityCheck","SuccessScreen","BlockingError","TokensModal","jsxs","TokenInput","DepositMethodSwitcher","isExternal","ExternalDeposit","Banner","SwapQuote","SubmitButton","transfer"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { jsxs as o, jsx as e } from "react/jsx-runtime";
2
2
  import a from "clsx";
3
3
  import { SkeletonBox as s } from "../../components/SkeletonBox.js";
4
- import { y as i } from "../../config-CgCb5P7j.js";
4
+ import { y as i } from "../../config-C47AYcMK.js";
5
5
  const p = () => {
6
6
  const { hideTokenInputHeadings: l } = i();
7
7
  return /* @__PURE__ */ o("div", { className: "w-full gap-sw-xl relative flex flex-col", children: [