@lifi/widget 4.0.0 → 4.2.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 (485) hide show
  1. package/dist/esm/App.d.ts +4 -2
  2. package/dist/esm/App.d.ts.map +1 -1
  3. package/dist/esm/App.js +4 -4
  4. package/dist/esm/App.js.map +1 -1
  5. package/dist/esm/AppDefault.js +14 -0
  6. package/dist/esm/AppDefault.js.map +1 -1
  7. package/dist/esm/AppDrawer.d.ts +1 -1
  8. package/dist/esm/AppDrawer.d.ts.map +1 -1
  9. package/dist/esm/AppDrawer.js +5 -6
  10. package/dist/esm/AppDrawer.js.map +1 -1
  11. package/dist/esm/AppDrawerContext.js +2 -2
  12. package/dist/esm/AppDrawerContext.js.map +1 -1
  13. package/dist/esm/components/ActionRow/ActionRow.style.js.map +1 -1
  14. package/dist/esm/components/AmountInput/AmountInput.js +2 -1
  15. package/dist/esm/components/AmountInput/AmountInput.js.map +1 -1
  16. package/dist/esm/components/AmountInput/AmountInput.style.js.map +1 -1
  17. package/dist/esm/components/AmountInput/AmountInputEndAdornment.js +4 -2
  18. package/dist/esm/components/AmountInput/AmountInputEndAdornment.js.map +1 -1
  19. package/dist/esm/components/AmountInput/AmountInputEndAdornment.style.js +1 -1
  20. package/dist/esm/components/AmountInput/AmountInputEndAdornment.style.js.map +1 -1
  21. package/dist/esm/components/AmountInput/PriceFormHelperText.js +4 -2
  22. package/dist/esm/components/AmountInput/PriceFormHelperText.js.map +1 -1
  23. package/dist/esm/components/AmountInput/PriceFormHelperText.style.js.map +1 -1
  24. package/dist/esm/components/AmountInputCard/AmountInputCard.style.js +98 -0
  25. package/dist/esm/components/AmountInputCard/AmountInputCard.style.js.map +1 -0
  26. package/dist/esm/components/AmountInputCard/AmountInputCardPair.js +25 -0
  27. package/dist/esm/components/AmountInputCard/AmountInputCardPair.js.map +1 -0
  28. package/dist/esm/components/AmountInputCard/BalanceDisplay.js +35 -0
  29. package/dist/esm/components/AmountInputCard/BalanceDisplay.js.map +1 -0
  30. package/dist/esm/components/AmountInputCard/BalanceDisplay.style.js +11 -0
  31. package/dist/esm/components/AmountInputCard/BalanceDisplay.style.js.map +1 -0
  32. package/dist/esm/components/AmountInputCard/FiatValueToggle.js +41 -0
  33. package/dist/esm/components/AmountInputCard/FiatValueToggle.js.map +1 -0
  34. package/dist/esm/components/AmountInputCard/PercentageChips.js +80 -0
  35. package/dist/esm/components/AmountInputCard/PercentageChips.js.map +1 -0
  36. package/dist/esm/components/AmountInputCard/PercentageChips.style.js +43 -0
  37. package/dist/esm/components/AmountInputCard/PercentageChips.style.js.map +1 -0
  38. package/dist/esm/components/AmountInputCard/ReceiveAmountCard.js +137 -0
  39. package/dist/esm/components/AmountInputCard/ReceiveAmountCard.js.map +1 -0
  40. package/dist/esm/components/AmountInputCard/SendAmountCard.js +102 -0
  41. package/dist/esm/components/AmountInputCard/SendAmountCard.js.map +1 -0
  42. package/dist/esm/components/AppContainer.js.map +1 -1
  43. package/dist/esm/components/Avatar/AccountAvatar.js.map +1 -1
  44. package/dist/esm/components/Avatar/Avatar.js +12 -3
  45. package/dist/esm/components/Avatar/Avatar.js.map +1 -1
  46. package/dist/esm/components/Avatar/Avatar.style.js.map +1 -1
  47. package/dist/esm/components/Avatar/SmallAvatar.js.map +1 -1
  48. package/dist/esm/components/BaseTransactionButton/BaseTransactionButton.js +1 -0
  49. package/dist/esm/components/BaseTransactionButton/BaseTransactionButton.js.map +1 -1
  50. package/dist/esm/components/BottomSheet/BottomSheet.js +3 -3
  51. package/dist/esm/components/BottomSheet/BottomSheet.js.map +1 -1
  52. package/dist/esm/components/ButtonTertiary.js.map +1 -1
  53. package/dist/esm/components/Card/Card.js.map +1 -1
  54. package/dist/esm/components/Card/CardButton.style.js.map +1 -1
  55. package/dist/esm/components/Card/CardHeader.js.map +1 -1
  56. package/dist/esm/components/Card/CardIconButton.js.map +1 -1
  57. package/dist/esm/components/Card/CardLabel.js.map +1 -1
  58. package/dist/esm/components/Card/CardTitle.js.map +1 -1
  59. package/dist/esm/components/Card/InputCard.js.map +1 -1
  60. package/dist/esm/components/ChainSelect/ChainSelect.js.map +1 -1
  61. package/dist/esm/components/ChainSelect/ChainSelect.style.js.map +1 -1
  62. package/dist/esm/components/ChainSelect/useChainSelect.js.map +1 -1
  63. package/dist/esm/components/Chains/AllChainsAvatar.js.map +1 -1
  64. package/dist/esm/components/Chains/ChainList.js.map +1 -1
  65. package/dist/esm/components/Chains/ChainList.style.js.map +1 -1
  66. package/dist/esm/components/Chains/ChainsExpanded.style.js.map +1 -1
  67. package/dist/esm/components/Chains/VirtualizedChainList.js +2 -1
  68. package/dist/esm/components/Chains/VirtualizedChainList.js.map +1 -1
  69. package/dist/esm/components/ContextMenu.style.js.map +1 -1
  70. package/dist/esm/components/ContractComponent/NFT/NFT.style.js.map +1 -1
  71. package/dist/esm/components/Dialog/Dialog.style.js.map +1 -1
  72. package/dist/esm/components/EmptyListIndicator/EmptyListIndicator.style.js.map +1 -1
  73. package/dist/esm/components/ExecutionStatusCard/StatusIcon.js.map +1 -1
  74. package/dist/esm/components/ExecutionStatusCard/StatusIcon.style.js.map +1 -1
  75. package/dist/esm/components/ExecutionStatusCard/iconKey.js.map +1 -1
  76. package/dist/esm/components/Expansion/Expansion.style.js.map +1 -1
  77. package/dist/esm/components/Header/ActivitiesButton.style.js.map +1 -1
  78. package/dist/esm/components/Header/CloseDrawerButton.js +1 -0
  79. package/dist/esm/components/Header/CloseDrawerButton.js.map +1 -1
  80. package/dist/esm/components/Header/Header.js +7 -10
  81. package/dist/esm/components/Header/Header.js.map +1 -1
  82. package/dist/esm/components/Header/Header.style.js.map +1 -1
  83. package/dist/esm/components/Header/HeaderNavigationTabs.js +39 -0
  84. package/dist/esm/components/Header/HeaderNavigationTabs.js.map +1 -0
  85. package/dist/esm/components/Header/HeaderTabs.js +33 -0
  86. package/dist/esm/components/Header/HeaderTabs.js.map +1 -0
  87. package/dist/esm/components/Header/NavigationHeader.js +7 -5
  88. package/dist/esm/components/Header/NavigationHeader.js.map +1 -1
  89. package/dist/esm/components/Header/SettingsButton.style.js.map +1 -1
  90. package/dist/esm/components/Header/WalletMenu.style.js.map +1 -1
  91. package/dist/esm/components/IconCircle/IconCircle.style.js +1 -1
  92. package/dist/esm/components/IconCircle/IconCircle.style.js.map +1 -1
  93. package/dist/esm/components/IconTypography.js.map +1 -1
  94. package/dist/esm/components/Input.js.map +1 -1
  95. package/dist/esm/components/LimitOrderSettings/LimitOrderSettings.js +99 -0
  96. package/dist/esm/components/LimitOrderSettings/LimitOrderSettings.js.map +1 -0
  97. package/dist/esm/components/LimitOrderSettings/LimitOrderSettings.style.js +52 -0
  98. package/dist/esm/components/LimitOrderSettings/LimitOrderSettings.style.js.map +1 -0
  99. package/dist/esm/components/LimitPriceCard/LimitPriceCard.js +115 -0
  100. package/dist/esm/components/LimitPriceCard/LimitPriceCard.js.map +1 -0
  101. package/dist/esm/components/LimitPriceCard/LimitPriceCard.style.js +89 -0
  102. package/dist/esm/components/LimitPriceCard/LimitPriceCard.style.js.map +1 -0
  103. package/dist/esm/components/LimitPriceCard/LimitPricePresets.js +91 -0
  104. package/dist/esm/components/LimitPriceCard/LimitPricePresets.js.map +1 -0
  105. package/dist/esm/components/ListItem/ListItem.js.map +1 -1
  106. package/dist/esm/components/ListItem/ListItemButton.js.map +1 -1
  107. package/dist/esm/components/ListItemButton.js.map +1 -1
  108. package/dist/esm/components/ListItemText.js.map +1 -1
  109. package/dist/esm/components/Menu.js.map +1 -1
  110. package/dist/esm/components/Messages/AlertMessage.style.js.map +1 -1
  111. package/dist/esm/components/Messages/GasRefuelMessage.style.js.map +1 -1
  112. package/dist/esm/components/Messages/WarningMessages.js.map +1 -1
  113. package/dist/esm/components/PageContainer.js.map +1 -1
  114. package/dist/esm/components/PoweredBy/PoweredBy.js.map +1 -1
  115. package/dist/esm/components/PoweredBy/PoweredBy.style.js.map +1 -1
  116. package/dist/esm/components/ReverseTokensButton/ReverseTokensButton.js +1 -0
  117. package/dist/esm/components/ReverseTokensButton/ReverseTokensButton.js.map +1 -1
  118. package/dist/esm/components/ReverseTokensButton/ReverseTokensButton.style.js.map +1 -1
  119. package/dist/esm/components/RouteCard/RouteDetails.js.map +1 -1
  120. package/dist/esm/components/RouteCard/RouteDetails.style.js +2 -2
  121. package/dist/esm/components/RouteCard/RouteDetails.style.js.map +1 -1
  122. package/dist/esm/components/RouteCard/RouteProviderCard.js +118 -0
  123. package/dist/esm/components/RouteCard/RouteProviderCard.js.map +1 -0
  124. package/dist/esm/components/RouteCard/RouteToken.style.js.map +1 -1
  125. package/dist/esm/components/RouteCard/RouteTokens.js.map +1 -1
  126. package/dist/esm/components/RouteCard/getMatchingLabels.js.map +1 -1
  127. package/dist/esm/components/Routes/LimitOrderRoutes.js +34 -0
  128. package/dist/esm/components/Routes/LimitOrderRoutes.js.map +1 -0
  129. package/dist/esm/components/Routes/Routes.js +2 -2
  130. package/dist/esm/components/Routes/Routes.js.map +1 -1
  131. package/dist/esm/components/Routes/RoutesContent.js.map +1 -1
  132. package/dist/esm/components/Routes/RoutesExpanded.style.js.map +1 -1
  133. package/dist/esm/components/Search/SearchInput.style.js.map +1 -1
  134. package/dist/esm/components/Search/SearchNotFound.style.js.map +1 -1
  135. package/dist/esm/components/SelectTokenButton/SelectTokenButton.style.js.map +1 -1
  136. package/dist/esm/components/SendToWallet/SendToWalletButton.style.js.map +1 -1
  137. package/dist/esm/components/SettingsListItemButton.js.map +1 -1
  138. package/dist/esm/components/SettingsPanel/SettingsPanel.js +51 -0
  139. package/dist/esm/components/SettingsPanel/SettingsPanel.js.map +1 -0
  140. package/dist/esm/components/SettingsPanel/SettingsPanel.style.js +33 -0
  141. package/dist/esm/components/SettingsPanel/SettingsPanel.style.js.map +1 -0
  142. package/dist/esm/components/SettingsPanel/utils.js +14 -0
  143. package/dist/esm/components/SettingsPanel/utils.js.map +1 -0
  144. package/dist/esm/components/Skeleton/WidgetSkeleton.js +50 -47
  145. package/dist/esm/components/Skeleton/WidgetSkeleton.js.map +1 -1
  146. package/dist/esm/components/Skeleton/WidgetSkeleton.style.js.map +1 -1
  147. package/dist/esm/components/Step/StepActions.js.map +1 -1
  148. package/dist/esm/components/Step/StepActions.style.js.map +1 -1
  149. package/dist/esm/components/StepActions/SentToWalletRow.style.js.map +1 -1
  150. package/dist/esm/components/StepActions/StepActionRow.style.js.map +1 -1
  151. package/dist/esm/components/SwapButton/SwapButton.js +50 -0
  152. package/dist/esm/components/SwapButton/SwapButton.js.map +1 -0
  153. package/dist/esm/components/SwapButton/SwapButton.style.js +24 -0
  154. package/dist/esm/components/SwapButton/SwapButton.style.js.map +1 -0
  155. package/dist/esm/components/Switch.js.map +1 -1
  156. package/dist/esm/components/Tabs/NavigationTabs.js +3 -0
  157. package/dist/esm/components/Tabs/NavigationTabs.js.map +1 -1
  158. package/dist/esm/components/Tabs/Tabs.style.js.map +1 -1
  159. package/dist/esm/components/Timer/StepStatusTimer.style.js.map +1 -1
  160. package/dist/esm/components/Token/Token.style.js.map +1 -1
  161. package/dist/esm/components/TokenList/PinTokenButton.js.map +1 -1
  162. package/dist/esm/components/TokenList/TokenDetailsSheet.js +4 -4
  163. package/dist/esm/components/TokenList/TokenDetailsSheet.js.map +1 -1
  164. package/dist/esm/components/TokenList/TokenDetailsSheetContent.js +4 -4
  165. package/dist/esm/components/TokenList/TokenDetailsSheetContent.js.map +1 -1
  166. package/dist/esm/components/TokenList/TokenDetailsSheetContent.style.js.map +1 -1
  167. package/dist/esm/components/TokenList/TokenList.style.js.map +1 -1
  168. package/dist/esm/components/TokenList/TokenListItem.js +2 -2
  169. package/dist/esm/components/TokenList/TokenListItem.js.map +1 -1
  170. package/dist/esm/components/TokenList/VirtualizedTokenList.js.map +1 -1
  171. package/dist/esm/components/TokenList/useTokenSelect.js +3 -3
  172. package/dist/esm/components/TokenList/useTokenSelect.js.map +1 -1
  173. package/dist/esm/components/TokenPillButton/TokenPillButton.js +52 -0
  174. package/dist/esm/components/TokenPillButton/TokenPillButton.js.map +1 -0
  175. package/dist/esm/components/TokenPillButton/TokenPillButton.style.js +39 -0
  176. package/dist/esm/components/TokenPillButton/TokenPillButton.style.js.map +1 -0
  177. package/dist/esm/components/TokenRate/TokenRate.style.js.map +1 -1
  178. package/dist/esm/components/TransactionCard/ActiveTransactionCard.js.map +1 -1
  179. package/dist/esm/components/TransactionCard/ActiveTransactionCard.style.js.map +1 -1
  180. package/dist/esm/components/TransactionCard/TransactionCard.style.js.map +1 -1
  181. package/dist/esm/config/version.d.ts +1 -1
  182. package/dist/esm/config/version.js +1 -1
  183. package/dist/esm/config/version.js.map +1 -1
  184. package/dist/esm/hooks/timer/validate.js.map +1 -1
  185. package/dist/esm/hooks/useAccountsBalancesData.js.map +1 -1
  186. package/dist/esm/hooks/useAvailableChains.js +1 -1
  187. package/dist/esm/hooks/useChainSearch.js +2 -1
  188. package/dist/esm/hooks/useChainSearch.js.map +1 -1
  189. package/dist/esm/hooks/useChains.js +1 -1
  190. package/dist/esm/hooks/useExplorer.js.map +1 -1
  191. package/dist/esm/hooks/useFilteredByTokenBalances.js +1 -1
  192. package/dist/esm/hooks/useFilteredByTokenBalances.js.map +1 -1
  193. package/dist/esm/hooks/useFromTokenSufficiency.js.map +1 -1
  194. package/dist/esm/hooks/useGasSufficiency.js.map +1 -1
  195. package/dist/esm/hooks/useLanguages.js +2 -2
  196. package/dist/esm/hooks/useLanguages.js.map +1 -1
  197. package/dist/esm/hooks/useLimitMarketRate.js +24 -0
  198. package/dist/esm/hooks/useLimitMarketRate.js.map +1 -0
  199. package/dist/esm/hooks/useLinkedLimitFields.js +49 -0
  200. package/dist/esm/hooks/useLinkedLimitFields.js.map +1 -0
  201. package/dist/esm/hooks/useRouteExecution.js.map +1 -1
  202. package/dist/esm/hooks/useRouteExecutionMessage.js.map +1 -1
  203. package/dist/esm/hooks/useRouteRequiredAccountConnection.js.map +1 -1
  204. package/dist/esm/hooks/useRoutes.js +23 -6
  205. package/dist/esm/hooks/useRoutes.js.map +1 -1
  206. package/dist/esm/hooks/useSwapOnly.js +2 -4
  207. package/dist/esm/hooks/useSwapOnly.js.map +1 -1
  208. package/dist/esm/hooks/useToAddressRequirements.js +2 -2
  209. package/dist/esm/hooks/useToAddressRequirements.js.map +1 -1
  210. package/dist/esm/hooks/useToken.js.map +1 -1
  211. package/dist/esm/hooks/useTokenBalance.js.map +1 -1
  212. package/dist/esm/hooks/useTokenBalances.js.map +1 -1
  213. package/dist/esm/hooks/useTokenBalancesQueries.js.map +1 -1
  214. package/dist/esm/hooks/useTokenSearch.js +1 -1
  215. package/dist/esm/hooks/useTokenSearch.js.map +1 -1
  216. package/dist/esm/hooks/useTokens.js +17 -15
  217. package/dist/esm/hooks/useTokens.js.map +1 -1
  218. package/dist/esm/hooks/useTools.js +1 -1
  219. package/dist/esm/hooks/useTransactionDetails.js.map +1 -1
  220. package/dist/esm/hooks/useTransactionHistory.js.map +1 -1
  221. package/dist/esm/hooks/useTransactionList.js.map +1 -1
  222. package/dist/esm/hooks/useWideVariant.js +5 -2
  223. package/dist/esm/hooks/useWideVariant.js.map +1 -1
  224. package/dist/esm/i18n/en.json +25 -0
  225. package/dist/esm/index.d.ts +3 -3
  226. package/dist/esm/pages/ActivitiesPage/ActivitiesPage.js.map +1 -1
  227. package/dist/esm/pages/MainPage/LimitPageContent.js +23 -0
  228. package/dist/esm/pages/MainPage/LimitPageContent.js.map +1 -0
  229. package/dist/esm/pages/MainPage/MainPage.js +19 -22
  230. package/dist/esm/pages/MainPage/MainPage.js.map +1 -1
  231. package/dist/esm/pages/MainPage/MainPageActions.js +28 -0
  232. package/dist/esm/pages/MainPage/MainPageActions.js.map +1 -0
  233. package/dist/esm/pages/MainPage/ReviewButton.js +11 -4
  234. package/dist/esm/pages/MainPage/ReviewButton.js.map +1 -1
  235. package/dist/esm/pages/RoutePriorityPage.js +48 -0
  236. package/dist/esm/pages/RoutePriorityPage.js.map +1 -0
  237. package/dist/esm/pages/RoutesPage/RoutesPage.js.map +1 -1
  238. package/dist/esm/pages/RoutesPage/RoutesPage.style.js.map +1 -1
  239. package/dist/esm/pages/SelectEnabledToolsPage.js.map +1 -1
  240. package/dist/esm/pages/SendToWallet/BookmarkAddressSheet.js +3 -3
  241. package/dist/esm/pages/SendToWallet/BookmarkAddressSheet.js.map +1 -1
  242. package/dist/esm/pages/SendToWallet/ConfirmAddressSheet.js +3 -3
  243. package/dist/esm/pages/SendToWallet/ConfirmAddressSheet.js.map +1 -1
  244. package/dist/esm/pages/SendToWallet/SendToWalletPage.js.map +1 -1
  245. package/dist/esm/pages/SendToWallet/SendToWalletPage.style.js.map +1 -1
  246. package/dist/esm/pages/SettingsPage/BridgeAndExchangeSettings.js +2 -2
  247. package/dist/esm/pages/SettingsPage/BridgeAndExchangeSettings.js.map +1 -1
  248. package/dist/esm/pages/SettingsPage/GasPriceSettings.js +1 -1
  249. package/dist/esm/pages/SettingsPage/ResetSettingsButton.style.js.map +1 -1
  250. package/dist/esm/pages/SettingsPage/RoutePrioritySettings.js +12 -27
  251. package/dist/esm/pages/SettingsPage/RoutePrioritySettings.js.map +1 -1
  252. package/dist/esm/pages/SettingsPage/SettingsCard/SettingCard.style.js.map +1 -1
  253. package/dist/esm/pages/SettingsPage/SettingsCard/SettingCardExpandable.js +3 -3
  254. package/dist/esm/pages/SettingsPage/SettingsCard/SettingCardExpandable.js.map +1 -1
  255. package/dist/esm/pages/SettingsPage/SettingsCard/SettingsAccordian.js +3 -3
  256. package/dist/esm/pages/SettingsPage/SettingsCard/SettingsAccordian.js.map +1 -1
  257. package/dist/esm/pages/SettingsPage/SlippageSettings/SlippagePage.js +133 -0
  258. package/dist/esm/pages/SettingsPage/SlippageSettings/SlippagePage.js.map +1 -0
  259. package/dist/esm/pages/SettingsPage/SlippageSettings/SlippageSettings.js +14 -72
  260. package/dist/esm/pages/SettingsPage/SlippageSettings/SlippageSettings.js.map +1 -1
  261. package/dist/esm/pages/SettingsPage/SlippageSettings/SlippageSettings.style.js +26 -14
  262. package/dist/esm/pages/SettingsPage/SlippageSettings/SlippageSettings.style.js.map +1 -1
  263. package/dist/esm/pages/SettingsPage/ThemeSettings.js +4 -0
  264. package/dist/esm/pages/SettingsPage/ThemeSettings.js.map +1 -1
  265. package/dist/esm/pages/TransactionDetailsPage/ContactSupportButton.style.js.map +1 -1
  266. package/dist/esm/pages/TransactionDetailsPage/TransactionDetailsPage.js.map +1 -1
  267. package/dist/esm/pages/TransactionDetailsPage/TransactionDetailsSkeleton.js.map +1 -1
  268. package/dist/esm/pages/TransactionPage/ConfirmToAddressSheet.js +3 -3
  269. package/dist/esm/pages/TransactionPage/ConfirmToAddressSheet.js.map +1 -1
  270. package/dist/esm/pages/TransactionPage/ExchangeRateBottomSheet.js +16 -15
  271. package/dist/esm/pages/TransactionPage/ExchangeRateBottomSheet.js.map +1 -1
  272. package/dist/esm/pages/TransactionPage/ExchangeRateBottomSheet.style.js.map +1 -1
  273. package/dist/esm/pages/TransactionPage/RouteTracker.js.map +1 -1
  274. package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.js +3 -3
  275. package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.js.map +1 -1
  276. package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.style.js.map +1 -1
  277. package/dist/esm/pages/TransactionPage/TransactionExecutionContent.js +27 -31
  278. package/dist/esm/pages/TransactionPage/TransactionExecutionContent.js.map +1 -1
  279. package/dist/esm/pages/TransactionPage/TransactionReview.js +4 -1
  280. package/dist/esm/pages/TransactionPage/TransactionReview.js.map +1 -1
  281. package/dist/esm/pages/TransactionPage/utils.js.map +1 -1
  282. package/dist/esm/providers/I18nProvider/I18nProvider.js +1 -1
  283. package/dist/esm/providers/I18nProvider/I18nProvider.js.map +1 -1
  284. package/dist/esm/providers/I18nProvider/enResource.d.ts +1 -1
  285. package/dist/esm/providers/I18nProvider/enResource.js +1 -1
  286. package/dist/esm/providers/I18nProvider/i18n.js.map +1 -1
  287. package/dist/esm/providers/I18nProvider/types.d.ts +2 -2
  288. package/dist/esm/providers/QueryClientProvider.js +2 -2
  289. package/dist/esm/providers/QueryClientProvider.js.map +1 -1
  290. package/dist/esm/providers/SDKClientProvider.js +3 -3
  291. package/dist/esm/providers/SDKClientProvider.js.map +1 -1
  292. package/dist/esm/providers/WidgetProvider/WidgetProvider.js +4 -5
  293. package/dist/esm/providers/WidgetProvider/WidgetProvider.js.map +1 -1
  294. package/dist/esm/stores/StoreProvider.js +3 -4
  295. package/dist/esm/stores/StoreProvider.js.map +1 -1
  296. package/dist/esm/stores/bookmarks/BookmarkStore.js +3 -3
  297. package/dist/esm/stores/bookmarks/BookmarkStore.js.map +1 -1
  298. package/dist/esm/stores/bookmarks/createBookmarkStore.js.map +1 -1
  299. package/dist/esm/stores/chains/ChainOrderStore.js +4 -4
  300. package/dist/esm/stores/chains/ChainOrderStore.js.map +1 -1
  301. package/dist/esm/stores/chains/createChainOrderStore.js.map +1 -1
  302. package/dist/esm/stores/form/FormStore.js +1 -1
  303. package/dist/esm/stores/form/FormStore.js.map +1 -1
  304. package/dist/esm/stores/form/URLSearchParamsBuilder.js +14 -3
  305. package/dist/esm/stores/form/URLSearchParamsBuilder.js.map +1 -1
  306. package/dist/esm/stores/form/createFormStore.js +6 -2
  307. package/dist/esm/stores/form/createFormStore.js.map +1 -1
  308. package/dist/esm/stores/form/getDefaultValuesFromQueryString.js +3 -0
  309. package/dist/esm/stores/form/getDefaultValuesFromQueryString.js.map +1 -1
  310. package/dist/esm/stores/form/types.d.ts +9 -1
  311. package/dist/esm/stores/form/types.d.ts.map +1 -1
  312. package/dist/esm/stores/form/types.js.map +1 -1
  313. package/dist/esm/stores/form/useClearAmountFields.js +1 -0
  314. package/dist/esm/stores/form/useClearAmountFields.js.map +1 -1
  315. package/dist/esm/stores/form/useFieldActions.js.map +1 -1
  316. package/dist/esm/stores/form/useFieldValues.js.map +1 -1
  317. package/dist/esm/stores/form/useFormRef.js.map +1 -1
  318. package/dist/esm/stores/form/useFormStore.js +2 -2
  319. package/dist/esm/stores/form/useFormStore.js.map +1 -1
  320. package/dist/esm/stores/header/useHeaderStore.js +3 -3
  321. package/dist/esm/stores/header/useHeaderStore.js.map +1 -1
  322. package/dist/esm/stores/inputMode/useInputModeStore.js.map +1 -1
  323. package/dist/esm/stores/navigationTabs/useNavigationTabLabel.js +22 -0
  324. package/dist/esm/stores/navigationTabs/useNavigationTabLabel.js.map +1 -0
  325. package/dist/esm/stores/navigationTabs/useNavigationTabsStore.js +64 -0
  326. package/dist/esm/stores/navigationTabs/useNavigationTabsStore.js.map +1 -0
  327. package/dist/esm/stores/navigationTabs/utils.js +122 -0
  328. package/dist/esm/stores/navigationTabs/utils.js.map +1 -0
  329. package/dist/esm/stores/pinnedTokens/PinnedTokensStore.js +3 -3
  330. package/dist/esm/stores/pinnedTokens/PinnedTokensStore.js.map +1 -1
  331. package/dist/esm/stores/pinnedTokens/createPinnedTokensStore.js.map +1 -1
  332. package/dist/esm/stores/routes/RouteExecutionStore.js +3 -3
  333. package/dist/esm/stores/routes/RouteExecutionStore.js.map +1 -1
  334. package/dist/esm/stores/routes/createRouteExecutionStore.js.map +1 -1
  335. package/dist/esm/stores/routes/useIntermediateRoutesStore.js.map +1 -1
  336. package/dist/esm/stores/routes/useRouteExecutionIndicator.js.map +1 -1
  337. package/dist/esm/stores/routes/utils.js.map +1 -1
  338. package/dist/esm/stores/settings/SettingsStore.js +3 -3
  339. package/dist/esm/stores/settings/SettingsStore.js.map +1 -1
  340. package/dist/esm/stores/settings/createSettingsStore.js +122 -96
  341. package/dist/esm/stores/settings/createSettingsStore.js.map +1 -1
  342. package/dist/esm/stores/settings/types.d.ts +0 -2
  343. package/dist/esm/stores/settings/types.d.ts.map +1 -1
  344. package/dist/esm/stores/settings/types.js.map +1 -1
  345. package/dist/esm/stores/settings/useSettingsActions.js.map +1 -1
  346. package/dist/esm/themes/createTheme.js.map +1 -1
  347. package/dist/esm/themes/utils.js.map +1 -1
  348. package/dist/esm/types/events.d.ts +10 -1
  349. package/dist/esm/types/events.d.ts.map +1 -1
  350. package/dist/esm/types/events.js +2 -0
  351. package/dist/esm/types/events.js.map +1 -1
  352. package/dist/esm/types/widget.d.ts +28 -2
  353. package/dist/esm/types/widget.d.ts.map +1 -1
  354. package/dist/esm/types/widget.js.map +1 -1
  355. package/dist/esm/utils/compactNumberFormatter.js.map +1 -1
  356. package/dist/esm/utils/converters.js.map +1 -1
  357. package/dist/esm/utils/deepEqual.js.map +1 -1
  358. package/dist/esm/utils/fees.js.map +1 -1
  359. package/dist/esm/utils/format.d.ts +1 -1
  360. package/dist/esm/utils/format.d.ts.map +1 -1
  361. package/dist/esm/utils/format.js +2 -2
  362. package/dist/esm/utils/format.js.map +1 -1
  363. package/dist/esm/utils/getActionMessage.js.map +1 -1
  364. package/dist/esm/utils/getErrorMessage.js.map +1 -1
  365. package/dist/esm/utils/item.js.map +1 -1
  366. package/dist/esm/utils/limitOrder.js +61 -0
  367. package/dist/esm/utils/limitOrder.js.map +1 -0
  368. package/dist/esm/utils/{variant.js → mode.js} +2 -2
  369. package/dist/esm/utils/mode.js.map +1 -0
  370. package/dist/esm/utils/navigationRoutes.d.ts +2 -0
  371. package/dist/esm/utils/navigationRoutes.d.ts.map +1 -1
  372. package/dist/esm/utils/navigationRoutes.js +6 -0
  373. package/dist/esm/utils/navigationRoutes.js.map +1 -1
  374. package/dist/esm/utils/prepareActions.js +1 -1
  375. package/dist/esm/utils/prepareActions.js.map +1 -1
  376. package/dist/esm/utils/timer.js.map +1 -1
  377. package/dist/esm/utils/token.js +1 -1
  378. package/dist/esm/utils/token.js.map +1 -1
  379. package/dist/esm/utils/tokenList.js.map +1 -1
  380. package/package.json +13 -13
  381. package/src/App.tsx +7 -7
  382. package/src/AppDefault.tsx +16 -0
  383. package/src/AppDrawer.tsx +77 -78
  384. package/src/AppDrawerContext.ts +2 -2
  385. package/src/components/AmountInput/AmountInputEndAdornment.style.ts +1 -1
  386. package/src/components/AmountInput/AmountInputEndAdornment.tsx +5 -2
  387. package/src/components/AmountInputCard/AmountInputCard.style.tsx +157 -0
  388. package/src/components/AmountInputCard/AmountInputCardPair.tsx +25 -0
  389. package/src/components/AmountInputCard/BalanceDisplay.style.tsx +9 -0
  390. package/src/components/AmountInputCard/BalanceDisplay.tsx +46 -0
  391. package/src/components/AmountInputCard/FiatValueToggle.tsx +55 -0
  392. package/src/components/AmountInputCard/PercentageChips.style.tsx +60 -0
  393. package/src/components/AmountInputCard/PercentageChips.tsx +100 -0
  394. package/src/components/AmountInputCard/ReceiveAmountCard.tsx +219 -0
  395. package/src/components/AmountInputCard/SendAmountCard.tsx +179 -0
  396. package/src/components/Avatar/Avatar.tsx +8 -3
  397. package/src/components/BaseTransactionButton/BaseTransactionButton.tsx +1 -0
  398. package/src/components/BottomSheet/BottomSheet.tsx +56 -52
  399. package/src/components/Header/CloseDrawerButton.tsx +5 -1
  400. package/src/components/Header/Header.tsx +20 -18
  401. package/src/components/Header/HeaderNavigationTabs.tsx +42 -0
  402. package/src/components/Header/HeaderTabs.tsx +48 -0
  403. package/src/components/Header/NavigationHeader.tsx +11 -8
  404. package/src/components/LimitOrderSettings/LimitOrderSettings.style.tsx +69 -0
  405. package/src/components/LimitOrderSettings/LimitOrderSettings.tsx +124 -0
  406. package/src/components/LimitPriceCard/LimitPriceCard.style.tsx +103 -0
  407. package/src/components/LimitPriceCard/LimitPriceCard.tsx +153 -0
  408. package/src/components/LimitPriceCard/LimitPricePresets.tsx +139 -0
  409. package/src/components/ReverseTokensButton/ReverseTokensButton.tsx +4 -1
  410. package/src/components/RouteCard/RouteProviderCard.tsx +113 -0
  411. package/src/components/Routes/LimitOrderRoutes.tsx +64 -0
  412. package/src/components/Routes/Routes.tsx +3 -2
  413. package/src/components/SettingsPanel/SettingsPanel.style.tsx +41 -0
  414. package/src/components/SettingsPanel/SettingsPanel.tsx +73 -0
  415. package/src/components/SettingsPanel/utils.ts +27 -0
  416. package/src/components/Skeleton/WidgetSkeleton.tsx +1 -1
  417. package/src/components/SwapButton/SwapButton.style.tsx +28 -0
  418. package/src/components/SwapButton/SwapButton.tsx +71 -0
  419. package/src/components/Tabs/NavigationTabs.tsx +3 -0
  420. package/src/components/TokenList/TokenDetailsSheet.tsx +9 -7
  421. package/src/components/TokenList/TokenDetailsSheetContent.tsx +176 -177
  422. package/src/components/TokenList/useTokenSelect.ts +2 -2
  423. package/src/components/TokenPillButton/TokenPillButton.style.tsx +50 -0
  424. package/src/components/TokenPillButton/TokenPillButton.tsx +81 -0
  425. package/src/config/version.ts +1 -1
  426. package/src/hooks/useLimitMarketRate.ts +39 -0
  427. package/src/hooks/useLinkedLimitFields.ts +74 -0
  428. package/src/hooks/useRoutes.ts +45 -4
  429. package/src/hooks/useSwapOnly.ts +2 -5
  430. package/src/hooks/useToAddressRequirements.ts +2 -2
  431. package/src/hooks/useWideVariant.ts +8 -2
  432. package/src/pages/MainPage/LimitPageContent.tsx +18 -0
  433. package/src/pages/MainPage/MainPage.tsx +43 -30
  434. package/src/pages/MainPage/MainPageActions.tsx +35 -0
  435. package/src/pages/MainPage/ReviewButton.tsx +15 -3
  436. package/src/pages/RoutePriorityPage.tsx +55 -0
  437. package/src/pages/SendToWallet/BookmarkAddressSheet.tsx +176 -185
  438. package/src/pages/SendToWallet/ConfirmAddressSheet.tsx +9 -6
  439. package/src/pages/SettingsPage/RoutePrioritySettings.tsx +14 -38
  440. package/src/pages/SettingsPage/SettingsCard/SettingCardExpandable.tsx +58 -65
  441. package/src/pages/SettingsPage/SettingsCard/SettingsAccordian.tsx +4 -4
  442. package/src/pages/SettingsPage/SlippageSettings/SlippagePage.tsx +176 -0
  443. package/src/pages/SettingsPage/SlippageSettings/SlippageSettings.style.tsx +32 -25
  444. package/src/pages/SettingsPage/SlippageSettings/SlippageSettings.tsx +14 -128
  445. package/src/pages/SettingsPage/ThemeSettings.tsx +4 -0
  446. package/src/pages/TransactionPage/ConfirmToAddressSheet.tsx +9 -6
  447. package/src/pages/TransactionPage/ExchangeRateBottomSheet.tsx +53 -58
  448. package/src/pages/TransactionPage/TokenValueBottomSheet.tsx +24 -21
  449. package/src/pages/TransactionPage/TransactionExecutionContent.tsx +8 -6
  450. package/src/providers/QueryClientProvider.tsx +2 -2
  451. package/src/providers/SDKClientProvider.tsx +3 -7
  452. package/src/providers/WidgetProvider/WidgetProvider.tsx +6 -7
  453. package/src/stores/StoreProvider.tsx +3 -10
  454. package/src/stores/bookmarks/BookmarkStore.tsx +4 -4
  455. package/src/stores/chains/ChainOrderStore.tsx +4 -4
  456. package/src/stores/form/FormStore.tsx +2 -2
  457. package/src/stores/form/URLSearchParamsBuilder.tsx +25 -3
  458. package/src/stores/form/createFormStore.ts +7 -3
  459. package/src/stores/form/getDefaultValuesFromQueryString.ts +11 -0
  460. package/src/stores/form/types.ts +14 -1
  461. package/src/stores/form/useClearAmountFields.ts +1 -0
  462. package/src/stores/form/useFormStore.ts +2 -2
  463. package/src/stores/header/useHeaderStore.tsx +3 -5
  464. package/src/stores/navigationTabs/types.ts +33 -0
  465. package/src/stores/navigationTabs/useNavigationTabLabel.ts +28 -0
  466. package/src/stores/navigationTabs/useNavigationTabsStore.tsx +113 -0
  467. package/src/stores/navigationTabs/utils.ts +196 -0
  468. package/src/stores/pinnedTokens/PinnedTokensStore.tsx +4 -4
  469. package/src/stores/routes/RouteExecutionStore.tsx +4 -4
  470. package/src/stores/settings/SettingsStore.tsx +4 -4
  471. package/src/stores/settings/createSettingsStore.ts +48 -12
  472. package/src/stores/settings/types.ts +1 -16
  473. package/src/types/events.ts +12 -0
  474. package/src/types/widget.ts +40 -1
  475. package/src/utils/format.ts +6 -2
  476. package/src/utils/limitOrder.ts +88 -0
  477. package/src/utils/navigationRoutes.ts +6 -0
  478. package/dist/esm/components/Header/SplitNavigationTabs.js +0 -33
  479. package/dist/esm/components/Header/SplitNavigationTabs.js.map +0 -1
  480. package/dist/esm/stores/settings/useSplitModeStore.js +0 -36
  481. package/dist/esm/stores/settings/useSplitModeStore.js.map +0 -1
  482. package/dist/esm/utils/variant.js.map +0 -1
  483. package/src/components/Header/SplitNavigationTabs.tsx +0 -32
  484. package/src/stores/settings/useSplitModeStore.tsx +0 -58
  485. /package/src/utils/{variant.ts → mode.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"TokenValueBottomSheet.style.js","names":[],"sources":["../../../../src/pages/TransactionPage/TokenValueBottomSheet.style.tsx"],"sourcesContent":["import { Box, styled, Typography } from '@mui/material'\nimport type React from 'react'\n\nexport const CenterContainer: React.FC<React.ComponentProps<typeof Box>> =\n styled(Box)(() => ({\n display: 'grid',\n placeItems: 'center',\n position: 'relative',\n }))\n\nexport const ContentContainer: React.FC<React.ComponentProps<typeof Box>> =\n styled(Box)(({ theme }) => ({\n padding: theme.spacing(3),\n }))\n\nexport const WarningTitle: React.FC<React.ComponentProps<typeof Typography>> =\n styled(Typography)(({ theme }) => ({\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1),\n fontSize: 18,\n fontWeight: 700,\n }))\n\nexport const WarningMessage: React.FC<React.ComponentProps<typeof Typography>> =\n styled(Typography)(({ theme }) => ({\n marginBottom: theme.spacing(2.5),\n fontSize: 14,\n fontWeight: 500,\n }))\n\nexport const DetailRow: React.FC<React.ComponentProps<typeof Box>> = styled(\n Box\n)(({ theme }) => ({\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n paddingTop: theme.spacing(0.75),\n paddingBottom: theme.spacing(0.75),\n}))\n\nexport const DetailLabel: React.FC<React.ComponentProps<typeof Typography>> =\n styled(Typography)(({ theme }) => ({\n fontSize: 14,\n fontWeight: 500,\n color: theme.vars.palette.text.secondary,\n }))\n\nexport const DetailValue: React.FC<React.ComponentProps<typeof Typography>> =\n styled(Typography)({\n fontSize: 14,\n fontWeight: 700,\n })\n\nexport const ButtonRow: React.FC<React.ComponentProps<typeof Box>> = styled(\n Box\n)(({ theme }) => ({\n display: 'flex',\n marginTop: theme.spacing(3),\n gap: theme.spacing(1.5),\n}))\n"],"mappings":";;AAGA,MAAa,kBACX,OAAO,GAAG,SAAS;CACjB,SAAS;CACT,YAAY;CACZ,UAAU;AACZ,EAAE;AAEJ,MAAa,mBACX,OAAO,GAAG,GAAG,EAAE,aAAa,EAC1B,SAAS,MAAM,QAAQ,CAAC,EAC1B,EAAE;AAEJ,MAAa,eACX,OAAO,UAAU,GAAG,EAAE,aAAa;CACjC,YAAY,MAAM,QAAQ,CAAC;CAC3B,eAAe,MAAM,QAAQ,CAAC;CAC9B,UAAU;CACV,YAAY;AACd,EAAE;AAEJ,MAAa,iBACX,OAAO,UAAU,GAAG,EAAE,aAAa;CACjC,cAAc,MAAM,QAAQ,GAAG;CAC/B,UAAU;CACV,YAAY;AACd,EAAE;AAEJ,MAAa,YAAwD,OACnE,GACF,GAAG,EAAE,aAAa;CAChB,SAAS;CACT,gBAAgB;CAChB,YAAY;CACZ,YAAY,MAAM,QAAQ,GAAI;CAC9B,eAAe,MAAM,QAAQ,GAAI;AACnC,EAAE;AAEF,MAAa,cACX,OAAO,UAAU,GAAG,EAAE,aAAa;CACjC,UAAU;CACV,YAAY;CACZ,OAAO,MAAM,KAAK,QAAQ,KAAK;AACjC,EAAE;AAEJ,MAAa,cACX,OAAO,UAAU,EAAE;CACjB,UAAU;CACV,YAAY;AACd,CAAC;AAEH,MAAa,YAAwD,OACnE,GACF,GAAG,EAAE,aAAa;CAChB,SAAS;CACT,WAAW,MAAM,QAAQ,CAAC;CAC1B,KAAK,MAAM,QAAQ,GAAG;AACxB,EAAE"}
1
+ {"version":3,"file":"TokenValueBottomSheet.style.js","names":[],"sources":["../../../../src/pages/TransactionPage/TokenValueBottomSheet.style.tsx"],"sourcesContent":["import { Box, styled, Typography } from '@mui/material'\nimport type React from 'react'\n\nexport const CenterContainer: React.FC<React.ComponentProps<typeof Box>> =\n styled(Box)(() => ({\n display: 'grid',\n placeItems: 'center',\n position: 'relative',\n }))\n\nexport const ContentContainer: React.FC<React.ComponentProps<typeof Box>> =\n styled(Box)(({ theme }) => ({\n padding: theme.spacing(3),\n }))\n\nexport const WarningTitle: React.FC<React.ComponentProps<typeof Typography>> =\n styled(Typography)(({ theme }) => ({\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1),\n fontSize: 18,\n fontWeight: 700,\n }))\n\nexport const WarningMessage: React.FC<React.ComponentProps<typeof Typography>> =\n styled(Typography)(({ theme }) => ({\n marginBottom: theme.spacing(2.5),\n fontSize: 14,\n fontWeight: 500,\n }))\n\nexport const DetailRow: React.FC<React.ComponentProps<typeof Box>> = styled(\n Box\n)(({ theme }) => ({\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n paddingTop: theme.spacing(0.75),\n paddingBottom: theme.spacing(0.75),\n}))\n\nexport const DetailLabel: React.FC<React.ComponentProps<typeof Typography>> =\n styled(Typography)(({ theme }) => ({\n fontSize: 14,\n fontWeight: 500,\n color: theme.vars.palette.text.secondary,\n }))\n\nexport const DetailValue: React.FC<React.ComponentProps<typeof Typography>> =\n styled(Typography)({\n fontSize: 14,\n fontWeight: 700,\n })\n\nexport const ButtonRow: React.FC<React.ComponentProps<typeof Box>> = styled(\n Box\n)(({ theme }) => ({\n display: 'flex',\n marginTop: theme.spacing(3),\n gap: theme.spacing(1.5),\n}))\n"],"mappings":";;AAGA,MAAa,kBACX,OAAO,GAAG,CAAC,QAAQ;CACjB,SAAS;CACT,YAAY;CACZ,UAAU;AACZ,EAAE;AAEJ,MAAa,mBACX,OAAO,GAAG,CAAC,EAAE,EAAE,aAAa,EAC1B,SAAS,MAAM,QAAQ,CAAC,EAC1B,EAAE;AAEJ,MAAa,eACX,OAAO,UAAU,CAAC,EAAE,EAAE,aAAa;CACjC,YAAY,MAAM,QAAQ,CAAC;CAC3B,eAAe,MAAM,QAAQ,CAAC;CAC9B,UAAU;CACV,YAAY;AACd,EAAE;AAEJ,MAAa,iBACX,OAAO,UAAU,CAAC,EAAE,EAAE,aAAa;CACjC,cAAc,MAAM,QAAQ,GAAG;CAC/B,UAAU;CACV,YAAY;AACd,EAAE;AAEJ,MAAa,YAAwD,OACnE,GACF,CAAC,EAAE,EAAE,aAAa;CAChB,SAAS;CACT,gBAAgB;CAChB,YAAY;CACZ,YAAY,MAAM,QAAQ,GAAI;CAC9B,eAAe,MAAM,QAAQ,GAAI;AACnC,EAAE;AAEF,MAAa,cACX,OAAO,UAAU,CAAC,EAAE,EAAE,aAAa;CACjC,UAAU;CACV,YAAY;CACZ,OAAO,MAAM,KAAK,QAAQ,KAAK;AACjC,EAAE;AAEJ,MAAa,cACX,OAAO,UAAU,CAAC,CAAC;CACjB,UAAU;CACV,YAAY;AACd,CAAC;AAEH,MAAa,YAAwD,OACnE,GACF,CAAC,EAAE,EAAE,aAAa;CAChB,SAAS;CACT,WAAW,MAAM,QAAQ,CAAC;CAC1B,KAAK,MAAM,QAAQ,GAAG;AACxB,EAAE"}
@@ -11,7 +11,7 @@ import { ExecutionDoneCard } from "./ExecutionDoneCard.js";
11
11
  import { TransactionDoneButtons } from "./TransactionDoneButtons.js";
12
12
  import { TransactionFailedButtons } from "./TransactionFailedButtons.js";
13
13
  import { Box } from "@mui/material";
14
- import { jsx, jsxs } from "react/jsx-runtime";
14
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
15
15
  import { LazyMotion, MotionConfig, domMax } from "motion/react";
16
16
  //#region src/pages/TransactionPage/TransactionExecutionContent.tsx
17
17
  /**
@@ -34,40 +34,36 @@ const TransactionExecutionContent = ({ route, status, restartRoute, deleteRoute
34
34
  flexDirection: "column",
35
35
  gap: 2
36
36
  },
37
- children: [
38
- /* @__PURE__ */ jsx(ExecutionStatusCard, {
39
- title,
40
- description: message,
41
- rows: useExecutionRows(route, isDone ? route.toAddress : void 0),
42
- iconSlot: mode === "custom" && isDone && !!(contractCompactComponent || contractSecondaryComponent) ? contractCompactComponent || contractSecondaryComponent : /* @__PURE__ */ jsx(StatusIcon, {
43
- route,
44
- status
45
- }),
46
- footerSlot: isDone ? /* @__PURE__ */ jsx(ExecutionDoneCard, {
47
- route,
48
- status
49
- }) : /* @__PURE__ */ jsx(Card$1, {
50
- type: "default",
51
- indented: true,
52
- children: /* @__PURE__ */ jsx(RouteTokens, {
53
- route,
54
- defaultExpanded: defaultUI?.transactionDetailsExpanded
55
- })
56
- })
57
- }),
58
- /* @__PURE__ */ jsx(WarningMessages, {
37
+ children: [/* @__PURE__ */ jsx(ExecutionStatusCard, {
38
+ title,
39
+ description: message,
40
+ rows: useExecutionRows(route, isDone ? route.toAddress : void 0),
41
+ iconSlot: mode === "custom" && isDone && !!(contractCompactComponent || contractSecondaryComponent) ? contractCompactComponent || contractSecondaryComponent : /* @__PURE__ */ jsx(StatusIcon, {
59
42
  route,
60
- allowInteraction: true
43
+ status
61
44
  }),
62
- status === 8 ? /* @__PURE__ */ jsx(TransactionFailedButtons, {
63
- route,
64
- restartRoute,
65
- deleteRoute
66
- }) : isDone ? /* @__PURE__ */ jsx(TransactionDoneButtons, {
45
+ footerSlot: isDone ? /* @__PURE__ */ jsx(ExecutionDoneCard, {
67
46
  route,
68
47
  status
69
- }) : null
70
- ]
48
+ }) : /* @__PURE__ */ jsx(Card$1, {
49
+ type: "default",
50
+ indented: true,
51
+ children: /* @__PURE__ */ jsx(RouteTokens, {
52
+ route,
53
+ defaultExpanded: defaultUI?.transactionDetailsExpanded
54
+ })
55
+ })
56
+ }), status === 8 ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(WarningMessages, {
57
+ route,
58
+ allowInteraction: true
59
+ }), /* @__PURE__ */ jsx(TransactionFailedButtons, {
60
+ route,
61
+ restartRoute,
62
+ deleteRoute
63
+ })] }) : isDone ? /* @__PURE__ */ jsx(TransactionDoneButtons, {
64
+ route,
65
+ status
66
+ }) : null]
71
67
  })
72
68
  })
73
69
  });
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionExecutionContent.js","names":["Card"],"sources":["../../../../src/pages/TransactionPage/TransactionExecutionContent.tsx"],"sourcesContent":["import type { RouteExtended } from '@lifi/sdk'\nimport { Box } from '@mui/material'\nimport { domMax, LazyMotion, MotionConfig } from 'motion/react'\nimport type React from 'react'\nimport type { JSX } from 'react'\nimport { Card } from '../../components/Card/Card.js'\nimport { ExecutionStatusCard } from '../../components/ExecutionStatusCard/ExecutionStatusCard.js'\nimport { StatusIcon } from '../../components/ExecutionStatusCard/StatusIcon.js'\nimport { WarningMessages } from '../../components/Messages/WarningMessages.js'\nimport { RouteTokens } from '../../components/RouteCard/RouteTokens.js'\nimport { useExecutionRows } from '../../components/StepActions/executionRows.js'\nimport { useRouteExecutionMessage } from '../../hooks/useRouteExecutionMessage.js'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport { RouteExecutionStatus } from '../../stores/routes/types.js'\nimport { hasEnumFlag } from '../../utils/enum.js'\nimport { ExecutionDoneCard } from './ExecutionDoneCard.js'\nimport { TransactionDoneButtons } from './TransactionDoneButtons.js'\nimport { TransactionFailedButtons } from './TransactionFailedButtons.js'\n\nexport interface TransactionExecutionContentProps {\n route: RouteExtended\n status: RouteExecutionStatus\n restartRoute: () => void\n deleteRoute: () => void\n}\n\n/**\n * Execution-phase layout for the Transaction page.\n * Renders the {@link ExecutionStatusCard}, warning messages,\n * and terminal action buttons.\n */\nexport const TransactionExecutionContent: React.FC<\n TransactionExecutionContentProps\n> = ({ route, status, restartRoute, deleteRoute }): JSX.Element => {\n const { title, message } = useRouteExecutionMessage(route, status)\n const {\n mode,\n contractCompactComponent,\n contractSecondaryComponent,\n defaultUI,\n } = useWidgetConfig()\n\n const isDone = hasEnumFlag(status, RouteExecutionStatus.Done)\n const rows = useExecutionRows(route, isDone ? route.toAddress : undefined)\n\n const showContract =\n mode === 'custom' &&\n isDone &&\n !!(contractCompactComponent || contractSecondaryComponent)\n\n const iconSlot = showContract ? (\n contractCompactComponent || contractSecondaryComponent\n ) : (\n <StatusIcon route={route} status={status} />\n )\n\n const footerSlot = isDone ? (\n <ExecutionDoneCard route={route} status={status} />\n ) : (\n <Card type=\"default\" indented>\n <RouteTokens\n route={route}\n defaultExpanded={defaultUI?.transactionDetailsExpanded}\n />\n </Card>\n )\n\n return (\n <LazyMotion features={domMax} strict>\n <MotionConfig reducedMotion=\"user\">\n <Box sx={{ display: 'flex', flexDirection: 'column', gap: 2 }}>\n <ExecutionStatusCard\n title={title}\n description={message}\n rows={rows}\n iconSlot={iconSlot}\n footerSlot={footerSlot}\n />\n <WarningMessages route={route} allowInteraction />\n {status === RouteExecutionStatus.Failed ? (\n <TransactionFailedButtons\n route={route}\n restartRoute={restartRoute}\n deleteRoute={deleteRoute}\n />\n ) : isDone ? (\n <TransactionDoneButtons route={route} status={status} />\n ) : null}\n </Box>\n </MotionConfig>\n </LazyMotion>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA+BA,MAAa,+BAER,EAAE,OAAO,QAAQ,cAAc,kBAA+B;CACjE,MAAM,EAAE,OAAO,YAAY,yBAAyB,OAAO,MAAM;CACjE,MAAM,EACJ,MACA,0BACA,4BACA,cACE,gBAAgB;CAEpB,MAAM,SAAS,YAAY,QAAA,CAAiC;CAyB5D,OACE,oBAAC,YAAD;EAAY,UAAU;EAAQ,QAAA;YAC5B,oBAAC,cAAD;GAAc,eAAc;aAC1B,qBAAC,KAAD;IAAK,IAAI;KAAE,SAAS;KAAQ,eAAe;KAAU,KAAK;IAAE;cAA5D;KACE,oBAAC,qBAAD;MACS;MACP,aAAa;MACb,MA/BG,iBAAiB,OAAO,SAAS,MAAM,YAAY,KAAA,CA+B7C;MACT,UA7BR,SAAS,YACT,UACA,CAAC,EAAE,4BAA4B,8BAG/B,4BAA4B,6BAE5B,oBAAC,YAAD;OAAmB;OAAe;MAAS,CAAA;MAuBnC,YApBS,SACjB,oBAAC,mBAAD;OAA0B;OAAe;MAAS,CAAA,IAElD,oBAACA,QAAD;OAAM,MAAK;OAAU,UAAA;iBACnB,oBAAC,aAAD;QACS;QACP,iBAAiB,WAAW;OAC7B,CAAA;MACG,CAAA;KAaC,CAAA;KACD,oBAAC,iBAAD;MAAwB;MAAO,kBAAA;KAAkB,CAAA;KAChD,WAAA,IACC,oBAAC,0BAAD;MACS;MACO;MACD;KACd,CAAA,IACC,SACF,oBAAC,wBAAD;MAA+B;MAAe;KAAS,CAAA,IACrD;IACD;;EACO,CAAA;CACJ,CAAA;AAEhB"}
1
+ {"version":3,"file":"TransactionExecutionContent.js","names":["Card"],"sources":["../../../../src/pages/TransactionPage/TransactionExecutionContent.tsx"],"sourcesContent":["import type { RouteExtended } from '@lifi/sdk'\nimport { Box } from '@mui/material'\nimport { domMax, LazyMotion, MotionConfig } from 'motion/react'\nimport type React from 'react'\nimport type { JSX } from 'react'\nimport { Card } from '../../components/Card/Card.js'\nimport { ExecutionStatusCard } from '../../components/ExecutionStatusCard/ExecutionStatusCard.js'\nimport { StatusIcon } from '../../components/ExecutionStatusCard/StatusIcon.js'\nimport { WarningMessages } from '../../components/Messages/WarningMessages.js'\nimport { RouteTokens } from '../../components/RouteCard/RouteTokens.js'\nimport { useExecutionRows } from '../../components/StepActions/executionRows.js'\nimport { useRouteExecutionMessage } from '../../hooks/useRouteExecutionMessage.js'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport { RouteExecutionStatus } from '../../stores/routes/types.js'\nimport { hasEnumFlag } from '../../utils/enum.js'\nimport { ExecutionDoneCard } from './ExecutionDoneCard.js'\nimport { TransactionDoneButtons } from './TransactionDoneButtons.js'\nimport { TransactionFailedButtons } from './TransactionFailedButtons.js'\n\nexport interface TransactionExecutionContentProps {\n route: RouteExtended\n status: RouteExecutionStatus\n restartRoute: () => void\n deleteRoute: () => void\n}\n\n/**\n * Execution-phase layout for the Transaction page.\n * Renders the {@link ExecutionStatusCard}, warning messages,\n * and terminal action buttons.\n */\nexport const TransactionExecutionContent: React.FC<\n TransactionExecutionContentProps\n> = ({ route, status, restartRoute, deleteRoute }): JSX.Element => {\n const { title, message } = useRouteExecutionMessage(route, status)\n const {\n mode,\n contractCompactComponent,\n contractSecondaryComponent,\n defaultUI,\n } = useWidgetConfig()\n\n const isDone = hasEnumFlag(status, RouteExecutionStatus.Done)\n const rows = useExecutionRows(route, isDone ? route.toAddress : undefined)\n\n const showContract =\n mode === 'custom' &&\n isDone &&\n !!(contractCompactComponent || contractSecondaryComponent)\n\n const iconSlot = showContract ? (\n contractCompactComponent || contractSecondaryComponent\n ) : (\n <StatusIcon route={route} status={status} />\n )\n\n const footerSlot = isDone ? (\n <ExecutionDoneCard route={route} status={status} />\n ) : (\n <Card type=\"default\" indented>\n <RouteTokens\n route={route}\n defaultExpanded={defaultUI?.transactionDetailsExpanded}\n />\n </Card>\n )\n\n return (\n <LazyMotion features={domMax} strict>\n <MotionConfig reducedMotion=\"user\">\n <Box sx={{ display: 'flex', flexDirection: 'column', gap: 2 }}>\n <ExecutionStatusCard\n title={title}\n description={message}\n rows={rows}\n iconSlot={iconSlot}\n footerSlot={footerSlot}\n />\n {status === RouteExecutionStatus.Failed ? (\n <>\n <WarningMessages route={route} allowInteraction />\n <TransactionFailedButtons\n route={route}\n restartRoute={restartRoute}\n deleteRoute={deleteRoute}\n />\n </>\n ) : isDone ? (\n <TransactionDoneButtons route={route} status={status} />\n ) : null}\n </Box>\n </MotionConfig>\n </LazyMotion>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA+BA,MAAa,+BAER,EAAE,OAAO,QAAQ,cAAc,kBAA+B;CACjE,MAAM,EAAE,OAAO,YAAY,yBAAyB,OAAO,MAAM;CACjE,MAAM,EACJ,MACA,0BACA,4BACA,cACE,gBAAgB;CAEpB,MAAM,SAAS,YAAY,QAAA,CAAiC;CAyB5D,OACE,oBAAC,YAAD;EAAY,UAAU;EAAQ,QAAA;YAC5B,oBAAC,cAAD;GAAc,eAAc;aAC1B,qBAAC,KAAD;IAAK,IAAI;KAAE,SAAS;KAAQ,eAAe;KAAU,KAAK;IAAE;cAA5D,CACE,oBAAC,qBAAD;KACS;KACP,aAAa;KACb,MA/BG,iBAAiB,OAAO,SAAS,MAAM,YAAY,KAAA,CA+B7C;KACT,UA7BR,SAAS,YACT,UACA,CAAC,EAAE,4BAA4B,8BAG/B,4BAA4B,6BAE5B,oBAAC,YAAD;MAAmB;MAAe;KAAS,CAAA;KAuBnC,YApBS,SACjB,oBAAC,mBAAD;MAA0B;MAAe;KAAS,CAAA,IAElD,oBAACA,QAAD;MAAM,MAAK;MAAU,UAAA;gBACnB,oBAAC,aAAD;OACS;OACP,iBAAiB,WAAW;MAC7B,CAAA;KACG,CAAA;IAaC,CAAA,GACA,WAAA,IACC,qBAAA,UAAA,EAAA,UAAA,CACE,oBAAC,iBAAD;KAAwB;KAAO,kBAAA;IAAkB,CAAA,GACjD,oBAAC,0BAAD;KACS;KACO;KACD;IACd,CAAA,CACD,EAAA,CAAA,IACA,SACF,oBAAC,wBAAD;KAA+B;KAAe;IAAS,CAAA,IACrD,IACD;;EACO,CAAA;CACJ,CAAA;AAEhB"}
@@ -69,7 +69,10 @@ const TransactionReview = ({ route, executeRoute, routeRefreshing }) => {
69
69
  switch (mode) {
70
70
  case "custom": return modeOptions?.custom?.type === "deposit" ? t("button.deposit") : t("button.buy");
71
71
  case "refuel": return t("button.startBridging");
72
- default: return t(`button.start${route.fromChainId === route.toChainId ? "Swapping" : "Bridging"}`);
72
+ default: {
73
+ const transactionType = route.fromChainId === route.toChainId ? "Swapping" : "Bridging";
74
+ return t(`button.start${transactionType}`);
75
+ }
73
76
  }
74
77
  };
75
78
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionReview.js","names":["Card"],"sources":["../../../../src/pages/TransactionPage/TransactionReview.tsx"],"sourcesContent":["import type { RouteExtended } from '@lifi/sdk'\nimport { Box } from '@mui/material'\nimport { useNavigate } from '@tanstack/react-router'\nimport { useRef } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport type { BottomSheetBase } from '../../components/BottomSheet/types.js'\nimport { Card } from '../../components/Card/Card.js'\nimport { WarningMessages } from '../../components/Messages/WarningMessages.js'\nimport { RouteTokens } from '../../components/RouteCard/RouteTokens.js'\nimport { useAddressActivity } from '../../hooks/useAddressActivity.js'\nimport { useWidgetEvents } from '../../hooks/useWidgetEvents.js'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport { useFieldActions } from '../../stores/form/useFieldActions.js'\nimport { useHeaderStore } from '../../stores/header/useHeaderStore.js'\nimport { WidgetEvent } from '../../types/events.js'\nimport { getAccumulatedFeeCostsBreakdown } from '../../utils/fees.js'\nimport { navigationRoutes } from '../../utils/navigationRoutes.js'\nimport { ConfirmToAddressSheet } from './ConfirmToAddressSheet.js'\nimport { StartTransactionButton } from './StartTransactionButton.js'\nimport { TokenValueBottomSheet } from './TokenValueBottomSheet.js'\nimport {\n calculateValueLossPercentage,\n getTokenValueLossThreshold,\n} from './utils.js'\n\ninterface TransactionReviewProps {\n route: RouteExtended\n executeRoute: () => void\n routeRefreshing: boolean\n}\n\nexport const TransactionReview: React.FC<TransactionReviewProps> = ({\n route,\n executeRoute,\n routeRefreshing,\n}) => {\n const { t } = useTranslation()\n const navigate = useNavigate()\n const { setFieldValue } = useFieldActions()\n const emitter = useWidgetEvents()\n const setBackAction = useHeaderStore((state) => state.setBackAction)\n const { mode, modeOptions, hiddenUI, defaultUI } = useWidgetConfig()\n\n const tokenValueBottomSheetRef = useRef<BottomSheetBase>(null)\n const confirmToAddressSheetRef = useRef<BottomSheetBase>(null)\n\n const {\n toAddress,\n hasActivity,\n isLoading: isLoadingAddressActivity,\n isFetched: isActivityAddressFetched,\n } = useAddressActivity(route.toChainId)\n\n const handleExecuteRoute = () => {\n if (tokenValueBottomSheetRef.current?.isOpen()) {\n const { gasCostUSD, feeCostUSD } = getAccumulatedFeeCostsBreakdown(route)\n const fromAmountUSD = Number.parseFloat(route.fromAmountUSD)\n const toAmountUSD = Number.parseFloat(route.toAmountUSD)\n emitter.emit(WidgetEvent.RouteHighValueLoss, {\n fromAmountUSD,\n toAmountUSD,\n gasCostUSD,\n feeCostUSD,\n valueLoss: calculateValueLossPercentage(\n fromAmountUSD,\n toAmountUSD,\n gasCostUSD,\n feeCostUSD\n ),\n })\n }\n tokenValueBottomSheetRef.current?.close()\n executeRoute()\n setFieldValue('fromAmount', '')\n if (mode === 'custom') {\n setFieldValue('fromToken', '')\n setFieldValue('toToken', '')\n }\n setBackAction(() => {\n navigate({ to: navigationRoutes.home, replace: true })\n })\n }\n\n const handleStartClick = () => {\n if (\n toAddress &&\n !hasActivity &&\n !isLoadingAddressActivity &&\n isActivityAddressFetched &&\n !hiddenUI?.lowAddressActivityConfirmation\n ) {\n confirmToAddressSheetRef.current?.open()\n return\n }\n\n const { gasCostUSD, feeCostUSD } = getAccumulatedFeeCostsBreakdown(route)\n const fromAmountUSD = Number.parseFloat(route.fromAmountUSD)\n const toAmountUSD = Number.parseFloat(route.toAmountUSD)\n const tokenValueLossThresholdExceeded = getTokenValueLossThreshold(\n fromAmountUSD,\n toAmountUSD,\n gasCostUSD,\n feeCostUSD\n )\n if (tokenValueLossThresholdExceeded && mode !== 'custom') {\n tokenValueBottomSheetRef.current?.open()\n } else {\n handleExecuteRoute()\n }\n }\n\n const getButtonText = (): string => {\n switch (mode) {\n case 'custom':\n return modeOptions?.custom?.type === 'deposit'\n ? t('button.deposit')\n : t('button.buy')\n case 'refuel':\n return t('button.startBridging')\n default: {\n const transactionType =\n route.fromChainId === route.toChainId ? 'Swapping' : 'Bridging'\n return t(`button.start${transactionType}`)\n }\n }\n }\n\n return (\n <>\n <Card type=\"default\" indented>\n <RouteTokens\n route={route}\n showEssentials\n defaultExpanded={defaultUI?.transactionDetailsExpanded}\n />\n </Card>\n <WarningMessages sx={{ mt: 2 }} route={route} allowInteraction />\n <Box sx={{ flex: 1 }}>\n <StartTransactionButton\n text={getButtonText()}\n onClick={handleStartClick}\n route={route}\n loading={routeRefreshing || isLoadingAddressActivity}\n />\n </Box>\n {mode !== 'custom' ? (\n <TokenValueBottomSheet\n route={route}\n ref={tokenValueBottomSheetRef}\n onContinue={handleExecuteRoute}\n />\n ) : null}\n {!hiddenUI?.lowAddressActivityConfirmation ? (\n <ConfirmToAddressSheet\n ref={confirmToAddressSheetRef}\n onContinue={handleExecuteRoute}\n toAddress={toAddress!}\n toChainId={route.toChainId!}\n />\n ) : null}\n </>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA+BA,MAAa,qBAAuD,EAClE,OACA,cACA,sBACI;CACJ,MAAM,EAAE,MAAM,eAAe;CAC7B,MAAM,WAAW,YAAY;CAC7B,MAAM,EAAE,kBAAkB,gBAAgB;CAC1C,MAAM,UAAU,gBAAgB;CAChC,MAAM,gBAAgB,gBAAgB,UAAU,MAAM,aAAa;CACnE,MAAM,EAAE,MAAM,aAAa,UAAU,cAAc,gBAAgB;CAEnE,MAAM,2BAA2B,OAAwB,IAAI;CAC7D,MAAM,2BAA2B,OAAwB,IAAI;CAE7D,MAAM,EACJ,WACA,aACA,WAAW,0BACX,WAAW,6BACT,mBAAmB,MAAM,SAAS;CAEtC,MAAM,2BAA2B;EAC/B,IAAI,yBAAyB,SAAS,OAAO,GAAG;GAC9C,MAAM,EAAE,YAAY,eAAe,gCAAgC,KAAK;GACxE,MAAM,gBAAgB,OAAO,WAAW,MAAM,aAAa;GAC3D,MAAM,cAAc,OAAO,WAAW,MAAM,WAAW;GACvD,QAAQ,KAAA,sBAAqC;IAC3C;IACA;IACA;IACA;IACA,WAAW,6BACT,eACA,aACA,YACA,UACF;GACF,CAAC;EACH;EACA,yBAAyB,SAAS,MAAM;EACxC,aAAa;EACb,cAAc,cAAc,EAAE;EAC9B,IAAI,SAAS,UAAU;GACrB,cAAc,aAAa,EAAE;GAC7B,cAAc,WAAW,EAAE;EAC7B;EACA,oBAAoB;GAClB,SAAS;IAAE,IAAI,iBAAiB;IAAM,SAAS;GAAK,CAAC;EACvD,CAAC;CACH;CAEA,MAAM,yBAAyB;EAC7B,IACE,aACA,CAAC,eACD,CAAC,4BACD,4BACA,CAAC,UAAU,gCACX;GACA,yBAAyB,SAAS,KAAK;GACvC;EACF;EAEA,MAAM,EAAE,YAAY,eAAe,gCAAgC,KAAK;EASxE,IANwC,2BAFlB,OAAO,WAAW,MAAM,aAGhC,GAFM,OAAO,WAAW,MAAM,WAGhC,GACV,YACA,UAEgC,KAAK,SAAS,UAC9C,yBAAyB,SAAS,KAAK;OAEvC,mBAAmB;CAEvB;CAEA,MAAM,sBAA8B;EAClC,QAAQ,MAAR;GACE,KAAK,UACH,OAAO,aAAa,QAAQ,SAAS,YACjC,EAAE,gBAAgB,IAClB,EAAE,YAAY;GACpB,KAAK,UACH,OAAO,EAAE,sBAAsB;GACjC,SAGE,OAAO,EAAE,eADP,MAAM,gBAAgB,MAAM,YAAY,aAAa,YACd;EAE7C;CACF;CAEA,OACE,qBAAA,YAAA,EAAA,UAAA;EACE,oBAACA,QAAD;GAAM,MAAK;GAAU,UAAA;aACnB,oBAAC,aAAD;IACS;IACP,gBAAA;IACA,iBAAiB,WAAW;GAC7B,CAAA;EACG,CAAA;EACN,oBAAC,iBAAD;GAAiB,IAAI,EAAE,IAAI,EAAE;GAAU;GAAO,kBAAA;EAAkB,CAAA;EAChE,oBAAC,KAAD;GAAK,IAAI,EAAE,MAAM,EAAE;aACjB,oBAAC,wBAAD;IACE,MAAM,cAAc;IACpB,SAAS;IACF;IACP,SAAS,mBAAmB;GAC7B,CAAA;EACE,CAAA;EACJ,SAAS,WACR,oBAAC,uBAAD;GACS;GACP,KAAK;GACL,YAAY;EACb,CAAA,IACC;EACH,CAAC,UAAU,iCACV,oBAAC,uBAAD;GACE,KAAK;GACL,YAAY;GACD;GACX,WAAW,MAAM;EAClB,CAAA,IACC;CACJ,EAAA,CAAA;AAEN"}
1
+ {"version":3,"file":"TransactionReview.js","names":["Card"],"sources":["../../../../src/pages/TransactionPage/TransactionReview.tsx"],"sourcesContent":["import type { RouteExtended } from '@lifi/sdk'\nimport { Box } from '@mui/material'\nimport { useNavigate } from '@tanstack/react-router'\nimport { useRef } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport type { BottomSheetBase } from '../../components/BottomSheet/types.js'\nimport { Card } from '../../components/Card/Card.js'\nimport { WarningMessages } from '../../components/Messages/WarningMessages.js'\nimport { RouteTokens } from '../../components/RouteCard/RouteTokens.js'\nimport { useAddressActivity } from '../../hooks/useAddressActivity.js'\nimport { useWidgetEvents } from '../../hooks/useWidgetEvents.js'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport { useFieldActions } from '../../stores/form/useFieldActions.js'\nimport { useHeaderStore } from '../../stores/header/useHeaderStore.js'\nimport { WidgetEvent } from '../../types/events.js'\nimport { getAccumulatedFeeCostsBreakdown } from '../../utils/fees.js'\nimport { navigationRoutes } from '../../utils/navigationRoutes.js'\nimport { ConfirmToAddressSheet } from './ConfirmToAddressSheet.js'\nimport { StartTransactionButton } from './StartTransactionButton.js'\nimport { TokenValueBottomSheet } from './TokenValueBottomSheet.js'\nimport {\n calculateValueLossPercentage,\n getTokenValueLossThreshold,\n} from './utils.js'\n\ninterface TransactionReviewProps {\n route: RouteExtended\n executeRoute: () => void\n routeRefreshing: boolean\n}\n\nexport const TransactionReview: React.FC<TransactionReviewProps> = ({\n route,\n executeRoute,\n routeRefreshing,\n}) => {\n const { t } = useTranslation()\n const navigate = useNavigate()\n const { setFieldValue } = useFieldActions()\n const emitter = useWidgetEvents()\n const setBackAction = useHeaderStore((state) => state.setBackAction)\n const { mode, modeOptions, hiddenUI, defaultUI } = useWidgetConfig()\n\n const tokenValueBottomSheetRef = useRef<BottomSheetBase>(null)\n const confirmToAddressSheetRef = useRef<BottomSheetBase>(null)\n\n const {\n toAddress,\n hasActivity,\n isLoading: isLoadingAddressActivity,\n isFetched: isActivityAddressFetched,\n } = useAddressActivity(route.toChainId)\n\n const handleExecuteRoute = () => {\n if (tokenValueBottomSheetRef.current?.isOpen()) {\n const { gasCostUSD, feeCostUSD } = getAccumulatedFeeCostsBreakdown(route)\n const fromAmountUSD = Number.parseFloat(route.fromAmountUSD)\n const toAmountUSD = Number.parseFloat(route.toAmountUSD)\n emitter.emit(WidgetEvent.RouteHighValueLoss, {\n fromAmountUSD,\n toAmountUSD,\n gasCostUSD,\n feeCostUSD,\n valueLoss: calculateValueLossPercentage(\n fromAmountUSD,\n toAmountUSD,\n gasCostUSD,\n feeCostUSD\n ),\n })\n }\n tokenValueBottomSheetRef.current?.close()\n executeRoute()\n setFieldValue('fromAmount', '')\n if (mode === 'custom') {\n setFieldValue('fromToken', '')\n setFieldValue('toToken', '')\n }\n setBackAction(() => {\n navigate({ to: navigationRoutes.home, replace: true })\n })\n }\n\n const handleStartClick = () => {\n if (\n toAddress &&\n !hasActivity &&\n !isLoadingAddressActivity &&\n isActivityAddressFetched &&\n !hiddenUI?.lowAddressActivityConfirmation\n ) {\n confirmToAddressSheetRef.current?.open()\n return\n }\n\n const { gasCostUSD, feeCostUSD } = getAccumulatedFeeCostsBreakdown(route)\n const fromAmountUSD = Number.parseFloat(route.fromAmountUSD)\n const toAmountUSD = Number.parseFloat(route.toAmountUSD)\n const tokenValueLossThresholdExceeded = getTokenValueLossThreshold(\n fromAmountUSD,\n toAmountUSD,\n gasCostUSD,\n feeCostUSD\n )\n if (tokenValueLossThresholdExceeded && mode !== 'custom') {\n tokenValueBottomSheetRef.current?.open()\n } else {\n handleExecuteRoute()\n }\n }\n\n const getButtonText = (): string => {\n switch (mode) {\n case 'custom':\n return modeOptions?.custom?.type === 'deposit'\n ? t('button.deposit')\n : t('button.buy')\n case 'refuel':\n return t('button.startBridging')\n default: {\n const transactionType =\n route.fromChainId === route.toChainId ? 'Swapping' : 'Bridging'\n return t(`button.start${transactionType}`)\n }\n }\n }\n\n return (\n <>\n <Card type=\"default\" indented>\n <RouteTokens\n route={route}\n showEssentials\n defaultExpanded={defaultUI?.transactionDetailsExpanded}\n />\n </Card>\n <WarningMessages sx={{ mt: 2 }} route={route} allowInteraction />\n <Box sx={{ flex: 1 }}>\n <StartTransactionButton\n text={getButtonText()}\n onClick={handleStartClick}\n route={route}\n loading={routeRefreshing || isLoadingAddressActivity}\n />\n </Box>\n {mode !== 'custom' ? (\n <TokenValueBottomSheet\n route={route}\n ref={tokenValueBottomSheetRef}\n onContinue={handleExecuteRoute}\n />\n ) : null}\n {!hiddenUI?.lowAddressActivityConfirmation ? (\n <ConfirmToAddressSheet\n ref={confirmToAddressSheetRef}\n onContinue={handleExecuteRoute}\n toAddress={toAddress!}\n toChainId={route.toChainId!}\n />\n ) : null}\n </>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA+BA,MAAa,qBAAuD,EAClE,OACA,cACA,sBACI;CACJ,MAAM,EAAE,MAAM,eAAe;CAC7B,MAAM,WAAW,YAAY;CAC7B,MAAM,EAAE,kBAAkB,gBAAgB;CAC1C,MAAM,UAAU,gBAAgB;CAChC,MAAM,gBAAgB,gBAAgB,UAAU,MAAM,aAAa;CACnE,MAAM,EAAE,MAAM,aAAa,UAAU,cAAc,gBAAgB;CAEnE,MAAM,2BAA2B,OAAwB,IAAI;CAC7D,MAAM,2BAA2B,OAAwB,IAAI;CAE7D,MAAM,EACJ,WACA,aACA,WAAW,0BACX,WAAW,6BACT,mBAAmB,MAAM,SAAS;CAEtC,MAAM,2BAA2B;EAC/B,IAAI,yBAAyB,SAAS,OAAO,GAAG;GAC9C,MAAM,EAAE,YAAY,eAAe,gCAAgC,KAAK;GACxE,MAAM,gBAAgB,OAAO,WAAW,MAAM,aAAa;GAC3D,MAAM,cAAc,OAAO,WAAW,MAAM,WAAW;GACvD,QAAQ,KAAA,sBAAqC;IAC3C;IACA;IACA;IACA;IACA,WAAW,6BACT,eACA,aACA,YACA,UACF;GACF,CAAC;EACH;EACA,yBAAyB,SAAS,MAAM;EACxC,aAAa;EACb,cAAc,cAAc,EAAE;EAC9B,IAAI,SAAS,UAAU;GACrB,cAAc,aAAa,EAAE;GAC7B,cAAc,WAAW,EAAE;EAC7B;EACA,oBAAoB;GAClB,SAAS;IAAE,IAAI,iBAAiB;IAAM,SAAS;GAAK,CAAC;EACvD,CAAC;CACH;CAEA,MAAM,yBAAyB;EAC7B,IACE,aACA,CAAC,eACD,CAAC,4BACD,4BACA,CAAC,UAAU,gCACX;GACA,yBAAyB,SAAS,KAAK;GACvC;EACF;EAEA,MAAM,EAAE,YAAY,eAAe,gCAAgC,KAAK;EASxE,IANwC,2BAFlB,OAAO,WAAW,MAAM,aAGhC,GAFM,OAAO,WAAW,MAAM,WAGhC,GACV,YACA,UAEgC,KAAK,SAAS,UAC9C,yBAAyB,SAAS,KAAK;OAEvC,mBAAmB;CAEvB;CAEA,MAAM,sBAA8B;EAClC,QAAQ,MAAR;GACE,KAAK,UACH,OAAO,aAAa,QAAQ,SAAS,YACjC,EAAE,gBAAgB,IAClB,EAAE,YAAY;GACpB,KAAK,UACH,OAAO,EAAE,sBAAsB;GACjC,SAAS;IACP,MAAM,kBACJ,MAAM,gBAAgB,MAAM,YAAY,aAAa;IACvD,OAAO,EAAE,eAAe,iBAAiB;GAC3C;EACF;CACF;CAEA,OACE,qBAAA,YAAA,EAAA,UAAA;EACE,oBAACA,QAAD;GAAM,MAAK;GAAU,UAAA;aACnB,oBAAC,aAAD;IACS;IACP,gBAAA;IACA,iBAAiB,WAAW;GAC7B,CAAA;EACG,CAAA;EACN,oBAAC,iBAAD;GAAiB,IAAI,EAAE,IAAI,EAAE;GAAU;GAAO,kBAAA;EAAkB,CAAA;EAChE,oBAAC,KAAD;GAAK,IAAI,EAAE,MAAM,EAAE;aACjB,oBAAC,wBAAD;IACE,MAAM,cAAc;IACpB,SAAS;IACF;IACP,SAAS,mBAAmB;GAC7B,CAAA;EACE,CAAA;EACJ,SAAS,WACR,oBAAC,uBAAD;GACS;GACP,KAAK;GACL,YAAY;EACb,CAAA,IACC;EACH,CAAC,UAAU,iCACV,oBAAC,uBAAD;GACE,KAAK;GACL,YAAY;GACD;GACX,WAAW,MAAM;EAClB,CAAA,IACC;CACJ,EAAA,CAAA;AAEN"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":[],"sources":["../../../../src/pages/TransactionPage/utils.ts"],"sourcesContent":["export const calculateValueLossPercentage = (\n fromAmountUSD: number,\n toAmountUSD: number,\n gasCostUSD: number,\n feeCostUSD: number\n): number => {\n return Number.parseFloat(\n (\n (toAmountUSD / (fromAmountUSD + gasCostUSD + feeCostUSD) - 1) *\n 100\n ).toFixed(2)\n )\n}\n\nexport const getTokenValueLossThreshold = (\n fromAmountUSD: number,\n toAmountUSD: number,\n gasCostUSD: number,\n feeCostUSD: number\n): boolean => {\n if (!fromAmountUSD || !toAmountUSD) {\n return false\n }\n return toAmountUSD / (fromAmountUSD + gasCostUSD + feeCostUSD) < 0.9\n}\n"],"mappings":";AAAA,MAAa,gCACX,eACA,aACA,YACA,eACW;CACX,OAAO,OAAO,aAET,eAAe,gBAAgB,aAAa,cAAc,KAC3D,KACA,QAAQ,CAAC,CACb;AACF;AAEA,MAAa,8BACX,eACA,aACA,YACA,eACY;CACZ,IAAI,CAAC,iBAAiB,CAAC,aACrB,OAAO;CAET,OAAO,eAAe,gBAAgB,aAAa,cAAc;AACnE"}
1
+ {"version":3,"file":"utils.js","names":[],"sources":["../../../../src/pages/TransactionPage/utils.ts"],"sourcesContent":["export const calculateValueLossPercentage = (\n fromAmountUSD: number,\n toAmountUSD: number,\n gasCostUSD: number,\n feeCostUSD: number\n): number => {\n return Number.parseFloat(\n (\n (toAmountUSD / (fromAmountUSD + gasCostUSD + feeCostUSD) - 1) *\n 100\n ).toFixed(2)\n )\n}\n\nexport const getTokenValueLossThreshold = (\n fromAmountUSD: number,\n toAmountUSD: number,\n gasCostUSD: number,\n feeCostUSD: number\n): boolean => {\n if (!fromAmountUSD || !toAmountUSD) {\n return false\n }\n return toAmountUSD / (fromAmountUSD + gasCostUSD + feeCostUSD) < 0.9\n}\n"],"mappings":";AAAA,MAAa,gCACX,eACA,aACA,YACA,eACW;CACX,OAAO,OAAO,aAET,eAAe,gBAAgB,aAAa,cAAc,KAC3D,IAAA,CACA,QAAQ,CAAC,CACb;AACF;AAEA,MAAa,8BACX,eACA,aACA,YACA,eACY;CACZ,IAAI,CAAC,iBAAiB,CAAC,aACrB,OAAO;CAET,OAAO,eAAe,gBAAgB,aAAa,cAAc;AACnE"}
@@ -7,7 +7,7 @@ import { useLanguages } from "../../hooks/useLanguages.js";
7
7
  import { compactNumberFormatter } from "../../utils/compactNumberFormatter.js";
8
8
  import { currencyExtendedFormatter } from "../../utils/currencyExtendedFormatter.js";
9
9
  import { percentFormatter } from "../../utils/percentFormatter.js";
10
- import { en } from "./enResource.js";
10
+ import { enResource as en } from "./enResource.js";
11
11
  import { useEffect, useMemo, useRef } from "react";
12
12
  import { jsx, jsxs } from "react/jsx-runtime";
13
13
  import { I18nextProvider } from "react-i18next";
@@ -1 +1 @@
1
- {"version":3,"file":"I18nProvider.js","names":["enResource"],"sources":["../../../../src/providers/I18nProvider/I18nProvider.tsx"],"sourcesContent":["import { createInstance, type i18n } from 'i18next'\nimport { useEffect, useMemo, useRef } from 'react'\nimport { I18nextProvider } from 'react-i18next'\nimport { useLanguages } from '../../hooks/useLanguages.js'\nimport { useSettingsStore } from '../../stores/settings/SettingsStore.js'\nimport { useSettings } from '../../stores/settings/useSettings.js'\nimport { compactNumberFormatter } from '../../utils/compactNumberFormatter.js'\nimport { currencyExtendedFormatter } from '../../utils/currencyExtendedFormatter.js'\nimport { percentFormatter } from '../../utils/percentFormatter.js'\nimport { useWidgetConfig } from '../WidgetProvider/WidgetProvider.js'\nimport { allLanguages } from './constants.js'\nimport { enResource } from './enResource.js'\nimport { mergeWithLanguageResources } from './i18n.js'\nimport type { LanguageKey, LanguageResource, PartialResource } from './types.js'\n\nexport const I18nProvider: React.FC<React.PropsWithChildren> = ({\n children,\n}) => {\n const { languages, languageResources } = useWidgetConfig()\n const { language, languageCache } = useSettings(['language', 'languageCache'])\n const i18nInstanceRef = useRef<i18n | null>(null)\n\n const i18nInstance = useMemo(() => {\n if (i18nInstanceRef.current) {\n // Update i18n instance with language and language cache updates\n if (language && languageCache && language !== 'en') {\n i18nInstanceRef.current.addResourceBundle(\n language,\n 'translation',\n languageCache,\n true,\n true\n )\n }\n return i18nInstanceRef.current\n }\n\n // Custom language resources (of non-default languages) are added statically.\n // If custom language resources extend existing languages, they are merged with dynamically loaded resources.\n const customLanguageKeys = languageResources\n ? Object.keys(languageResources).filter(\n (key: string) => !allLanguages.includes(key as LanguageKey)\n )\n : []\n const initialLanguage = language || languages?.default\n const i18n = createInstance({\n lng: initialLanguage,\n fallbackLng: 'en',\n lowerCaseLng: true,\n interpolation: { escapeValue: false },\n resources: {\n en: {\n translation: mergeWithLanguageResources(\n enResource,\n languageResources?.en\n ),\n },\n ...(initialLanguage &&\n initialLanguage !== 'en' &&\n languageCache && {\n [initialLanguage]: {\n translation: languageCache,\n },\n }),\n // Add non-existing custom language resources\n ...customLanguageKeys.reduce(\n (acc, key) => {\n const customResource = languageResources?.[key as LanguageKey]\n if (customResource) {\n acc[key] = {\n translation: customResource,\n }\n }\n return acc\n },\n {} as Record<\n string,\n { translation: PartialResource<LanguageResource> }\n >\n ),\n },\n detection: {\n caches: [],\n },\n returnEmptyString: false,\n })\n\n i18n.init()\n\n i18n.services.formatter?.addCached('numberExt', compactNumberFormatter)\n i18n.services.formatter?.addCached('currencyExt', currencyExtendedFormatter)\n i18n.services.formatter?.addCached('percent', percentFormatter)\n i18nInstanceRef.current = i18n\n return i18n\n }, [language, languageResources, languages?.default, languageCache])\n\n return (\n <I18nextProvider i18n={i18nInstance}>\n {children}\n <DefaultLanguageHandler />\n </I18nextProvider>\n )\n}\n\n// Sync language settings internally when config.languages.default changes externally\nconst DefaultLanguageHandler: React.FC = () => {\n const { languages } = useWidgetConfig()\n const [lastDefaultLanguage, setValue] = useSettingsStore((state) => [\n state.lastDefaultLanguage,\n state.setValue,\n ])\n const { setLanguageWithCode: setLanguage } = useLanguages()\n\n useEffect(() => {\n const currentDefaultLanguage = languages?.default\n\n const defaultLanguageChanged =\n currentDefaultLanguage && currentDefaultLanguage !== lastDefaultLanguage\n\n if (!defaultLanguageChanged) {\n return\n }\n\n const updateLanguage = async () => {\n await setLanguage(currentDefaultLanguage)\n setValue('lastDefaultLanguage', currentDefaultLanguage)\n }\n\n updateLanguage()\n }, [languages?.default, setValue, lastDefaultLanguage, setLanguage])\n\n return null\n}\n"],"mappings":";;;;;;;;;;;;;;;AAeA,MAAa,gBAAmD,EAC9D,eACI;CACJ,MAAM,EAAE,WAAW,sBAAsB,gBAAgB;CACzD,MAAM,EAAE,UAAU,kBAAkB,YAAY,CAAC,YAAY,eAAe,CAAC;CAC7E,MAAM,kBAAkB,OAAoB,IAAI;CA4EhD,OACE,qBAAC,iBAAD;EAAiB,MA3EE,cAAc;GACjC,IAAI,gBAAgB,SAAS;IAE3B,IAAI,YAAY,iBAAiB,aAAa,MAC5C,gBAAgB,QAAQ,kBACtB,UACA,eACA,eACA,MACA,IACF;IAEF,OAAO,gBAAgB;GACzB;GAIA,MAAM,qBAAqB,oBACvB,OAAO,KAAK,iBAAiB,EAAE,QAC5B,QAAgB,CAAC,aAAa,SAAS,GAAkB,CAC5D,IACA,CAAC;GACL,MAAM,kBAAkB,YAAY,WAAW;GAC/C,MAAM,OAAO,eAAe;IAC1B,KAAK;IACL,aAAa;IACb,cAAc;IACd,eAAe,EAAE,aAAa,MAAM;IACpC,WAAW;KACT,IAAI,EACF,aAAa,2BACXA,IACA,mBAAmB,EACrB,EACF;KACA,GAAI,mBACF,oBAAoB,QACpB,iBAAiB,GACd,kBAAkB,EACjB,aAAa,cACf,EACF;KAEF,GAAG,mBAAmB,QACnB,KAAK,QAAQ;MACZ,MAAM,iBAAiB,oBAAoB;MAC3C,IAAI,gBACF,IAAI,OAAO,EACT,aAAa,eACf;MAEF,OAAO;KACT,GACA,CAAC,CAIH;IACF;IACA,WAAW,EACT,QAAQ,CAAC,EACX;IACA,mBAAmB;GACrB,CAAC;GAED,KAAK,KAAK;GAEV,KAAK,SAAS,WAAW,UAAU,aAAa,sBAAsB;GACtE,KAAK,SAAS,WAAW,UAAU,eAAe,yBAAyB;GAC3E,KAAK,SAAS,WAAW,UAAU,WAAW,gBAAgB;GAC9D,gBAAgB,UAAU;GAC1B,OAAO;EACT,GAAG;GAAC;GAAU;GAAmB,WAAW;GAAS;EAAa,CAG9B;YAAlC,CACG,UACD,oBAAC,wBAAD,CAAyB,CAAA,CACV;;AAErB;AAGA,MAAM,+BAAyC;CAC7C,MAAM,EAAE,cAAc,gBAAgB;CACtC,MAAM,CAAC,qBAAqB,YAAY,kBAAkB,UAAU,CAClE,MAAM,qBACN,MAAM,QACR,CAAC;CACD,MAAM,EAAE,qBAAqB,gBAAgB,aAAa;CAE1D,gBAAgB;EACd,MAAM,yBAAyB,WAAW;EAK1C,IAAI,EAFF,0BAA0B,2BAA2B,sBAGrD;EAGF,MAAM,iBAAiB,YAAY;GACjC,MAAM,YAAY,sBAAsB;GACxC,SAAS,uBAAuB,sBAAsB;EACxD;EAEA,eAAe;CACjB,GAAG;EAAC,WAAW;EAAS;EAAU;EAAqB;CAAW,CAAC;CAEnE,OAAO;AACT"}
1
+ {"version":3,"file":"I18nProvider.js","names":["enResource"],"sources":["../../../../src/providers/I18nProvider/I18nProvider.tsx"],"sourcesContent":["import { createInstance, type i18n } from 'i18next'\nimport { useEffect, useMemo, useRef } from 'react'\nimport { I18nextProvider } from 'react-i18next'\nimport { useLanguages } from '../../hooks/useLanguages.js'\nimport { useSettingsStore } from '../../stores/settings/SettingsStore.js'\nimport { useSettings } from '../../stores/settings/useSettings.js'\nimport { compactNumberFormatter } from '../../utils/compactNumberFormatter.js'\nimport { currencyExtendedFormatter } from '../../utils/currencyExtendedFormatter.js'\nimport { percentFormatter } from '../../utils/percentFormatter.js'\nimport { useWidgetConfig } from '../WidgetProvider/WidgetProvider.js'\nimport { allLanguages } from './constants.js'\nimport { enResource } from './enResource.js'\nimport { mergeWithLanguageResources } from './i18n.js'\nimport type { LanguageKey, LanguageResource, PartialResource } from './types.js'\n\nexport const I18nProvider: React.FC<React.PropsWithChildren> = ({\n children,\n}) => {\n const { languages, languageResources } = useWidgetConfig()\n const { language, languageCache } = useSettings(['language', 'languageCache'])\n const i18nInstanceRef = useRef<i18n | null>(null)\n\n const i18nInstance = useMemo(() => {\n if (i18nInstanceRef.current) {\n // Update i18n instance with language and language cache updates\n if (language && languageCache && language !== 'en') {\n i18nInstanceRef.current.addResourceBundle(\n language,\n 'translation',\n languageCache,\n true,\n true\n )\n }\n return i18nInstanceRef.current\n }\n\n // Custom language resources (of non-default languages) are added statically.\n // If custom language resources extend existing languages, they are merged with dynamically loaded resources.\n const customLanguageKeys = languageResources\n ? Object.keys(languageResources).filter(\n (key: string) => !allLanguages.includes(key as LanguageKey)\n )\n : []\n const initialLanguage = language || languages?.default\n const i18n = createInstance({\n lng: initialLanguage,\n fallbackLng: 'en',\n lowerCaseLng: true,\n interpolation: { escapeValue: false },\n resources: {\n en: {\n translation: mergeWithLanguageResources(\n enResource,\n languageResources?.en\n ),\n },\n ...(initialLanguage &&\n initialLanguage !== 'en' &&\n languageCache && {\n [initialLanguage]: {\n translation: languageCache,\n },\n }),\n // Add non-existing custom language resources\n ...customLanguageKeys.reduce(\n (acc, key) => {\n const customResource = languageResources?.[key as LanguageKey]\n if (customResource) {\n acc[key] = {\n translation: customResource,\n }\n }\n return acc\n },\n {} as Record<\n string,\n { translation: PartialResource<LanguageResource> }\n >\n ),\n },\n detection: {\n caches: [],\n },\n returnEmptyString: false,\n })\n\n i18n.init()\n\n i18n.services.formatter?.addCached('numberExt', compactNumberFormatter)\n i18n.services.formatter?.addCached('currencyExt', currencyExtendedFormatter)\n i18n.services.formatter?.addCached('percent', percentFormatter)\n i18nInstanceRef.current = i18n\n return i18n\n }, [language, languageResources, languages?.default, languageCache])\n\n return (\n <I18nextProvider i18n={i18nInstance}>\n {children}\n <DefaultLanguageHandler />\n </I18nextProvider>\n )\n}\n\n// Sync language settings internally when config.languages.default changes externally\nconst DefaultLanguageHandler: React.FC = () => {\n const { languages } = useWidgetConfig()\n const [lastDefaultLanguage, setValue] = useSettingsStore((state) => [\n state.lastDefaultLanguage,\n state.setValue,\n ])\n const { setLanguageWithCode: setLanguage } = useLanguages()\n\n useEffect(() => {\n const currentDefaultLanguage = languages?.default\n\n const defaultLanguageChanged =\n currentDefaultLanguage && currentDefaultLanguage !== lastDefaultLanguage\n\n if (!defaultLanguageChanged) {\n return\n }\n\n const updateLanguage = async () => {\n await setLanguage(currentDefaultLanguage)\n setValue('lastDefaultLanguage', currentDefaultLanguage)\n }\n\n updateLanguage()\n }, [languages?.default, setValue, lastDefaultLanguage, setLanguage])\n\n return null\n}\n"],"mappings":";;;;;;;;;;;;;;;AAeA,MAAa,gBAAmD,EAC9D,eACI;CACJ,MAAM,EAAE,WAAW,sBAAsB,gBAAgB;CACzD,MAAM,EAAE,UAAU,kBAAkB,YAAY,CAAC,YAAY,eAAe,CAAC;CAC7E,MAAM,kBAAkB,OAAoB,IAAI;CA4EhD,OACE,qBAAC,iBAAD;EAAiB,MA3EE,cAAc;GACjC,IAAI,gBAAgB,SAAS;IAE3B,IAAI,YAAY,iBAAiB,aAAa,MAC5C,gBAAgB,QAAQ,kBACtB,UACA,eACA,eACA,MACA,IACF;IAEF,OAAO,gBAAgB;GACzB;GAIA,MAAM,qBAAqB,oBACvB,OAAO,KAAK,iBAAiB,CAAC,CAAC,QAC5B,QAAgB,CAAC,aAAa,SAAS,GAAkB,CAC5D,IACA,CAAC;GACL,MAAM,kBAAkB,YAAY,WAAW;GAC/C,MAAM,OAAO,eAAe;IAC1B,KAAK;IACL,aAAa;IACb,cAAc;IACd,eAAe,EAAE,aAAa,MAAM;IACpC,WAAW;KACT,IAAI,EACF,aAAa,2BACXA,IACA,mBAAmB,EACrB,EACF;KACA,GAAI,mBACF,oBAAoB,QACpB,iBAAiB,GACd,kBAAkB,EACjB,aAAa,cACf,EACF;KAEF,GAAG,mBAAmB,QACnB,KAAK,QAAQ;MACZ,MAAM,iBAAiB,oBAAoB;MAC3C,IAAI,gBACF,IAAI,OAAO,EACT,aAAa,eACf;MAEF,OAAO;KACT,GACA,CAAC,CAIH;IACF;IACA,WAAW,EACT,QAAQ,CAAC,EACX;IACA,mBAAmB;GACrB,CAAC;GAED,KAAK,KAAK;GAEV,KAAK,SAAS,WAAW,UAAU,aAAa,sBAAsB;GACtE,KAAK,SAAS,WAAW,UAAU,eAAe,yBAAyB;GAC3E,KAAK,SAAS,WAAW,UAAU,WAAW,gBAAgB;GAC9D,gBAAgB,UAAU;GAC1B,OAAO;EACT,GAAG;GAAC;GAAU;GAAmB,WAAW;GAAS;EAAa,CAG9B;YAAlC,CACG,UACD,oBAAC,wBAAD,CAAyB,CAAA,CACV;;AAErB;AAGA,MAAM,+BAAyC;CAC7C,MAAM,EAAE,cAAc,gBAAgB;CACtC,MAAM,CAAC,qBAAqB,YAAY,kBAAkB,UAAU,CAClE,MAAM,qBACN,MAAM,QACR,CAAC;CACD,MAAM,EAAE,qBAAqB,gBAAgB,aAAa;CAE1D,gBAAgB;EACd,MAAM,yBAAyB,WAAW;EAK1C,IAAI,EAFF,0BAA0B,2BAA2B,sBAGrD;EAGF,MAAM,iBAAiB,YAAY;GACjC,MAAM,YAAY,sBAAsB;GACxC,SAAS,uBAAuB,sBAAsB;EACxD;EAEA,eAAe;CACjB,GAAG;EAAC,WAAW;EAAS;EAAU;EAAqB;CAAW,CAAC;CAEnE,OAAO;AACT"}
@@ -1,2 +1,2 @@
1
1
  import en from "../../i18n/en.json" with { type: "json" };
2
- export { en };
2
+ export { en as enResource };
@@ -1,2 +1,2 @@
1
1
  import en from "../../i18n/en.json" with { type: "json" };
2
- export { en };
2
+ export { en as enResource };
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.js","names":[],"sources":["../../../../src/providers/I18nProvider/i18n.ts"],"sourcesContent":["import { deepMerge } from '../../utils/deepMerge.js'\nimport type { LanguageKey, LanguageResource, PartialResource } from './types.js'\n\n// Dynamically import the JSON file for the specified language\nexport async function loadLocale(\n lng: LanguageKey,\n customLanguageResource?: PartialResource<LanguageResource>\n): Promise<LanguageResource> {\n let languageResource: LanguageResource\n try {\n const languageResourceModule = await import(`../../i18n/${lng}.json`)\n languageResource = languageResourceModule.default as LanguageResource\n } catch {\n languageResource = {} as LanguageResource\n }\n return mergeWithLanguageResources(languageResource, customLanguageResource)\n}\n\nexport function mergeWithLanguageResources(\n languageResource: LanguageResource,\n customLanguageResource?: PartialResource<LanguageResource>\n): LanguageResource {\n return customLanguageResource\n ? deepMerge(languageResource, customLanguageResource)\n : languageResource\n}\n"],"mappings":";;AAIA,eAAsB,WACpB,KACA,wBAC2B;CAC3B,IAAI;CACJ,IAAI;EAEF,oBAAmB,MADkB,OAAO,cAAc,IAAI,SACpB;CAC5C,QAAQ;EACN,mBAAmB,CAAC;CACtB;CACA,OAAO,2BAA2B,kBAAkB,sBAAsB;AAC5E;AAEA,SAAgB,2BACd,kBACA,wBACkB;CAClB,OAAO,yBACH,UAAU,kBAAkB,sBAAsB,IAClD;AACN"}
1
+ {"version":3,"file":"i18n.js","names":[],"sources":["../../../../src/providers/I18nProvider/i18n.ts"],"sourcesContent":["import { deepMerge } from '../../utils/deepMerge.js'\nimport type { LanguageKey, LanguageResource, PartialResource } from './types.js'\n\n// Dynamically import the JSON file for the specified language\nexport async function loadLocale(\n lng: LanguageKey,\n customLanguageResource?: PartialResource<LanguageResource>\n): Promise<LanguageResource> {\n let languageResource: LanguageResource\n try {\n const languageResourceModule = await import(`../../i18n/${lng}.json`)\n languageResource = languageResourceModule.default as LanguageResource\n } catch {\n languageResource = {} as LanguageResource\n }\n return mergeWithLanguageResources(languageResource, customLanguageResource)\n}\n\nexport function mergeWithLanguageResources(\n languageResource: LanguageResource,\n customLanguageResource?: PartialResource<LanguageResource>\n): LanguageResource {\n return customLanguageResource\n ? deepMerge(languageResource, customLanguageResource)\n : languageResource\n}\n"],"mappings":";;AAIA,eAAsB,WACpB,KACA,wBAC2B;CAC3B,IAAI;CACJ,IAAI;EAEF,oBAAmB,MADkB,OAAO,cAAc,IAAI,QAAA,CACpB;CAC5C,QAAQ;EACN,mBAAmB,CAAC;CACtB;CACA,OAAO,2BAA2B,kBAAkB,sBAAsB;AAC5E;AAEA,SAAgB,2BACd,kBACA,wBACkB;CAClB,OAAO,yBACH,UAAU,kBAAkB,sBAAsB,IAClD;AACN"}
@@ -1,4 +1,4 @@
1
- import { en } from "./enResource.js";
1
+ import { enResource as en } from "./enResource.js";
2
2
 
3
3
  //#region src/providers/I18nProvider/types.d.ts
4
4
  type PartialResource<T> = T extends object ? { [P in keyof T]?: PartialResource<T[P]> } : T;
@@ -8,5 +8,5 @@ type LanguageResources = { [K in LanguageKey]?: PartialResource<LanguageResource
8
8
  [language: string]: PartialResource<LanguageResource>;
9
9
  };
10
10
  //#endregion
11
- export { LanguageKey, LanguageResource, LanguageResources };
11
+ export { LanguageKey, LanguageResource, LanguageResources, PartialResource };
12
12
  //# sourceMappingURL=types.d.ts.map
@@ -1,10 +1,10 @@
1
1
  import { queryClient } from "../config/queryClient.js";
2
- import { useContext } from "react";
2
+ import { use } from "react";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { QueryClientContext, QueryClientProvider } from "@tanstack/react-query";
5
5
  //#region src/providers/QueryClientProvider.tsx
6
6
  const QueryClientProvider$1 = ({ children }) => {
7
- return useContext(QueryClientContext) ? children : /* @__PURE__ */ jsx(QueryClientProvider, {
7
+ return use(QueryClientContext) ? children : /* @__PURE__ */ jsx(QueryClientProvider, {
8
8
  client: queryClient,
9
9
  children
10
10
  });
@@ -1 +1 @@
1
- {"version":3,"file":"QueryClientProvider.js","names":["QueryClientProvider","TanstackQueryClientContext","TanstackQueryClientProvider"],"sources":["../../../src/providers/QueryClientProvider.tsx"],"sourcesContent":["import {\n QueryClientContext as TanstackQueryClientContext,\n QueryClientProvider as TanstackQueryClientProvider,\n} from '@tanstack/react-query'\nimport type { PropsWithChildren } from 'react'\nimport { useContext } from 'react'\nimport { queryClient } from '../config/queryClient.js'\n\nexport const QueryClientProvider: React.FC<PropsWithChildren> = ({\n children,\n}) => {\n const existingQueryClient = useContext(TanstackQueryClientContext)\n return existingQueryClient ? (\n children\n ) : (\n <TanstackQueryClientProvider client={queryClient}>\n {children}\n </TanstackQueryClientProvider>\n )\n}\n"],"mappings":";;;;;AAQA,MAAaA,yBAAoD,EAC/D,eACI;CAEJ,OAD4B,WAAWC,kBACd,IACvB,WAEA,oBAACC,qBAAD;EAA6B,QAAQ;EAClC;CAC0B,CAAA;AAEjC"}
1
+ {"version":3,"file":"QueryClientProvider.js","names":["QueryClientProvider","TanstackQueryClientContext","TanstackQueryClientProvider"],"sources":["../../../src/providers/QueryClientProvider.tsx"],"sourcesContent":["import {\n QueryClientContext as TanstackQueryClientContext,\n QueryClientProvider as TanstackQueryClientProvider,\n} from '@tanstack/react-query'\nimport type { PropsWithChildren } from 'react'\nimport { use } from 'react'\nimport { queryClient } from '../config/queryClient.js'\n\nexport const QueryClientProvider: React.FC<PropsWithChildren> = ({\n children,\n}) => {\n const existingQueryClient = use(TanstackQueryClientContext)\n return existingQueryClient ? (\n children\n ) : (\n <TanstackQueryClientProvider client={queryClient}>\n {children}\n </TanstackQueryClientProvider>\n )\n}\n"],"mappings":";;;;;AAQA,MAAaA,yBAAoD,EAC/D,eACI;CAEJ,OAD4B,IAAIC,kBACP,IACvB,WAEA,oBAACC,qBAAD;EAA6B,QAAQ;EAClC;CAC0B,CAAA;AAEjC"}
@@ -1,11 +1,11 @@
1
1
  import { useWidgetConfig } from "./WidgetProvider/WidgetProvider.js";
2
2
  import { version } from "../config/version.js";
3
3
  import { createClient } from "@lifi/sdk";
4
- import { createContext, useContext, useMemo } from "react";
4
+ import { createContext, use, useMemo } from "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region src/providers/SDKClientProvider.tsx
7
7
  const SDKClientContext = createContext({});
8
- const useSDKClient = () => useContext(SDKClientContext);
8
+ const useSDKClient = () => use(SDKClientContext);
9
9
  const SDKClientProvider = ({ children }) => {
10
10
  const { sdkConfig, apiKey, integrator, feeConfig, referrer, routePriority, slippage } = useWidgetConfig();
11
11
  const client = useMemo(() => {
@@ -32,7 +32,7 @@ const SDKClientProvider = ({ children }) => {
32
32
  routePriority,
33
33
  slippage
34
34
  ]);
35
- return /* @__PURE__ */ jsx(SDKClientContext.Provider, {
35
+ return /* @__PURE__ */ jsx(SDKClientContext, {
36
36
  value: client,
37
37
  children
38
38
  });
@@ -1 +1 @@
1
- {"version":3,"file":"SDKClientProvider.js","names":[],"sources":["../../../src/providers/SDKClientProvider.tsx"],"sourcesContent":["import { createClient, type SDKClient } from '@lifi/sdk'\nimport {\n createContext,\n type JSX,\n type PropsWithChildren,\n useContext,\n useMemo,\n} from 'react'\nimport { version } from '../config/version.js'\nimport { useWidgetConfig } from './WidgetProvider/WidgetProvider.js'\n\nconst SDKClientContext = createContext<SDKClient>({} as SDKClient)\n\nexport const useSDKClient = (): SDKClient => useContext(SDKClientContext)\n\nexport const SDKClientProvider = ({\n children,\n}: PropsWithChildren): JSX.Element => {\n const {\n sdkConfig,\n apiKey,\n integrator,\n feeConfig,\n referrer,\n routePriority,\n slippage,\n } = useWidgetConfig()\n\n const client: SDKClient = useMemo(() => {\n return createClient({\n ...sdkConfig,\n apiKey,\n integrator: integrator ?? window?.location.hostname,\n routeOptions: {\n fee: feeConfig?.fee,\n referrer,\n order: routePriority,\n slippage,\n ...sdkConfig?.routeOptions,\n },\n disableVersionCheck: true,\n widgetVersion: version,\n })\n }, [\n sdkConfig,\n apiKey,\n integrator,\n feeConfig,\n referrer,\n routePriority,\n slippage,\n ])\n\n return (\n <SDKClientContext.Provider value={client}>\n {children}\n </SDKClientContext.Provider>\n )\n}\n"],"mappings":";;;;;;AAWA,MAAM,mBAAmB,cAAyB,CAAC,CAAc;AAEjE,MAAa,qBAAgC,WAAW,gBAAgB;AAExE,MAAa,qBAAqB,EAChC,eACoC;CACpC,MAAM,EACJ,WACA,QACA,YACA,WACA,UACA,eACA,aACE,gBAAgB;CAEpB,MAAM,SAAoB,cAAc;EACtC,OAAO,aAAa;GAClB,GAAG;GACH;GACA,YAAY,cAAc,QAAQ,SAAS;GAC3C,cAAc;IACZ,KAAK,WAAW;IAChB;IACA,OAAO;IACP;IACA,GAAG,WAAW;GAChB;GACA,qBAAqB;GACrB,eAAe;EACjB,CAAC;CACH,GAAG;EACD;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,OACE,oBAAC,iBAAiB,UAAlB;EAA2B,OAAO;EAC/B;CACwB,CAAA;AAE/B"}
1
+ {"version":3,"file":"SDKClientProvider.js","names":[],"sources":["../../../src/providers/SDKClientProvider.tsx"],"sourcesContent":["import { createClient, type SDKClient } from '@lifi/sdk'\nimport {\n createContext,\n type JSX,\n type PropsWithChildren,\n use,\n useMemo,\n} from 'react'\nimport { version } from '../config/version.js'\nimport { useWidgetConfig } from './WidgetProvider/WidgetProvider.js'\n\nconst SDKClientContext = createContext<SDKClient>({} as SDKClient)\n\nexport const useSDKClient = (): SDKClient => use(SDKClientContext)\n\nexport const SDKClientProvider = ({\n children,\n}: PropsWithChildren): JSX.Element => {\n const {\n sdkConfig,\n apiKey,\n integrator,\n feeConfig,\n referrer,\n routePriority,\n slippage,\n } = useWidgetConfig()\n\n const client: SDKClient = useMemo(() => {\n return createClient({\n ...sdkConfig,\n apiKey,\n integrator: integrator ?? window?.location.hostname,\n routeOptions: {\n fee: feeConfig?.fee,\n referrer,\n order: routePriority,\n slippage,\n ...sdkConfig?.routeOptions,\n },\n disableVersionCheck: true,\n widgetVersion: version,\n })\n }, [\n sdkConfig,\n apiKey,\n integrator,\n feeConfig,\n referrer,\n routePriority,\n slippage,\n ])\n\n return <SDKClientContext value={client}>{children}</SDKClientContext>\n}\n"],"mappings":";;;;;;AAWA,MAAM,mBAAmB,cAAyB,CAAC,CAAc;AAEjE,MAAa,qBAAgC,IAAI,gBAAgB;AAEjE,MAAa,qBAAqB,EAChC,eACoC;CACpC,MAAM,EACJ,WACA,QACA,YACA,WACA,UACA,eACA,aACE,gBAAgB;CAEpB,MAAM,SAAoB,cAAc;EACtC,OAAO,aAAa;GAClB,GAAG;GACH;GACA,YAAY,cAAc,QAAQ,SAAS;GAC3C,cAAc;IACZ,KAAK,WAAW;IAChB;IACA,OAAO;IACP;IACA,GAAG,WAAW;GAChB;GACA,qBAAqB;GACrB,eAAe;EACjB,CAAC;CACH,GAAG;EACD;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,OAAO,oBAAC,kBAAD;EAAkB,OAAO;EAAS;CAA2B,CAAA;AACtE"}
@@ -1,12 +1,11 @@
1
1
  import { useSettingsActions } from "../../stores/settings/useSettingsActions.js";
2
- import { createContext, useContext, useId, useMemo } from "react";
2
+ import { createContext, use, useId, useMemo } from "react";
3
3
  import { jsx } from "react/jsx-runtime";
4
- //#region src/providers/WidgetProvider/WidgetProvider.tsx
5
4
  const WidgetContext = createContext({
6
5
  elementId: "",
7
6
  integrator: ""
8
7
  });
9
- const useWidgetConfig = () => useContext(WidgetContext);
8
+ const useWidgetConfig = () => use(WidgetContext);
10
9
  const WidgetProvider = ({ children, config: widgetConfig }) => {
11
10
  const elementId = useId();
12
11
  const { setDefaultSettings } = useSettingsActions();
@@ -32,12 +31,12 @@ const WidgetProvider = ({ children, config: widgetConfig }) => {
32
31
  widgetConfig,
33
32
  setDefaultSettings
34
33
  ]);
35
- return /* @__PURE__ */ jsx(WidgetContext.Provider, {
34
+ return /* @__PURE__ */ jsx(WidgetContext, {
36
35
  value,
37
36
  children
38
37
  });
39
38
  };
40
39
  //#endregion
41
- export { WidgetProvider, useWidgetConfig };
40
+ export { WidgetContext, WidgetProvider, useWidgetConfig };
42
41
 
43
42
  //# sourceMappingURL=WidgetProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetProvider.js","names":[],"sources":["../../../../src/providers/WidgetProvider/WidgetProvider.tsx"],"sourcesContent":["import { createContext, useContext, useId, useMemo } from 'react'\nimport { useSettingsActions } from '../../stores/settings/useSettingsActions.js'\nimport type { WidgetContextProps, WidgetProviderProps } from './types.js'\n\nconst initialContext: WidgetContextProps = {\n elementId: '',\n integrator: '',\n}\n\nconst WidgetContext = createContext<WidgetContextProps>(initialContext)\n\nexport const useWidgetConfig = (): WidgetContextProps =>\n useContext(WidgetContext)\n\nexport const WidgetProvider: React.FC<\n React.PropsWithChildren<WidgetProviderProps>\n> = ({ children, config: widgetConfig }) => {\n const elementId = useId()\n const { setDefaultSettings } = useSettingsActions()\n\n if (!widgetConfig?.integrator) {\n throw new Error('Required property \"integrator\" is missing.')\n }\n\n const value = useMemo((): WidgetContextProps => {\n try {\n // Create widget configuration object\n const value = {\n ...widgetConfig,\n elementId,\n } as WidgetContextProps\n\n // Set default settings for widget settings store\n setDefaultSettings(value)\n\n return value\n } catch (e) {\n console.warn(e)\n return {\n ...widgetConfig,\n elementId,\n integrator: widgetConfig.integrator,\n }\n }\n }, [elementId, widgetConfig, setDefaultSettings])\n return (\n <WidgetContext.Provider value={value}>{children}</WidgetContext.Provider>\n )\n}\n"],"mappings":";;;;AASA,MAAM,gBAAgB,cAAkC;CAJtD,WAAW;CACX,YAAY;AAGuD,CAAC;AAEtE,MAAa,wBACX,WAAW,aAAa;AAE1B,MAAa,kBAER,EAAE,UAAU,QAAQ,mBAAmB;CAC1C,MAAM,YAAY,MAAM;CACxB,MAAM,EAAE,uBAAuB,mBAAmB;CAElD,IAAI,CAAC,cAAc,YACjB,MAAM,IAAI,MAAM,8CAA4C;CAG9D,MAAM,QAAQ,cAAkC;EAC9C,IAAI;GAEF,MAAM,QAAQ;IACZ,GAAG;IACH;GACF;GAGA,mBAAmB,KAAK;GAExB,OAAO;EACT,SAAS,GAAG;GACV,QAAQ,KAAK,CAAC;GACd,OAAO;IACL,GAAG;IACH;IACA,YAAY,aAAa;GAC3B;EACF;CACF,GAAG;EAAC;EAAW;EAAc;CAAkB,CAAC;CAChD,OACE,oBAAC,cAAc,UAAf;EAA+B;EAAQ;CAAiC,CAAA;AAE5E"}
1
+ {"version":3,"file":"WidgetProvider.js","names":[],"sources":["../../../../src/providers/WidgetProvider/WidgetProvider.tsx"],"sourcesContent":["import type { Context } from 'react'\nimport { createContext, use, useId, useMemo } from 'react'\nimport { useSettingsActions } from '../../stores/settings/useSettingsActions.js'\nimport type { WidgetContextProps, WidgetProviderProps } from './types.js'\n\nconst initialContext: WidgetContextProps = {\n elementId: '',\n integrator: '',\n}\n\nexport const WidgetContext: Context<WidgetContextProps> =\n createContext<WidgetContextProps>(initialContext)\n\nexport const useWidgetConfig = (): WidgetContextProps => use(WidgetContext)\n\nexport const WidgetProvider: React.FC<\n React.PropsWithChildren<WidgetProviderProps>\n> = ({ children, config: widgetConfig }) => {\n const elementId = useId()\n const { setDefaultSettings } = useSettingsActions()\n\n if (!widgetConfig?.integrator) {\n throw new Error('Required property \"integrator\" is missing.')\n }\n\n const value = useMemo((): WidgetContextProps => {\n try {\n // Create widget configuration object\n const value = {\n ...widgetConfig,\n elementId,\n } as WidgetContextProps\n\n // Set default settings for widget settings store\n setDefaultSettings(value)\n\n return value\n } catch (e) {\n console.warn(e)\n return {\n ...widgetConfig,\n elementId,\n integrator: widgetConfig.integrator,\n }\n }\n }, [elementId, widgetConfig, setDefaultSettings])\n return <WidgetContext value={value}>{children}</WidgetContext>\n}\n"],"mappings":";;;AAUA,MAAa,gBACX,cAAkC;CALlC,WAAW;CACX,YAAY;AAIsB,CAAc;AAElD,MAAa,wBAA4C,IAAI,aAAa;AAE1E,MAAa,kBAER,EAAE,UAAU,QAAQ,mBAAmB;CAC1C,MAAM,YAAY,MAAM;CACxB,MAAM,EAAE,uBAAuB,mBAAmB;CAElD,IAAI,CAAC,cAAc,YACjB,MAAM,IAAI,MAAM,8CAA4C;CAG9D,MAAM,QAAQ,cAAkC;EAC9C,IAAI;GAEF,MAAM,QAAQ;IACZ,GAAG;IACH;GACF;GAGA,mBAAmB,KAAK;GAExB,OAAO;EACT,SAAS,GAAG;GACV,QAAQ,KAAK,CAAC;GACd,OAAO;IACL,GAAG;IACH;IACA,YAAY,aAAa;GAC3B;EACF;CACF,GAAG;EAAC;EAAW;EAAc;CAAkB,CAAC;CAChD,OAAO,oBAAC,eAAD;EAAsB;EAAQ;CAAwB,CAAA;AAC/D"}
@@ -1,16 +1,15 @@
1
1
  import { HeaderStoreProvider } from "./header/useHeaderStore.js";
2
- import { SplitModeStoreProvider } from "./settings/useSplitModeStore.js";
2
+ import { NavigationTabsStoreProvider } from "./navigationTabs/useNavigationTabsStore.js";
3
3
  import { BookmarkStoreProvider } from "./bookmarks/BookmarkStore.js";
4
4
  import { ChainOrderStoreProvider } from "./chains/ChainOrderStore.js";
5
5
  import { RouteExecutionStoreProvider } from "./routes/RouteExecutionStore.js";
6
6
  import { PinnedTokensStoreProvider } from "./pinnedTokens/PinnedTokensStore.js";
7
- import { getSplitMode } from "../utils/variant.js";
8
7
  import { FormStoreProvider } from "./form/FormStore.js";
9
8
  import { jsx } from "react/jsx-runtime";
10
9
  //#region src/stores/StoreProvider.tsx
11
10
  const StoreProvider = ({ children, config, formRef }) => {
12
- return /* @__PURE__ */ jsx(SplitModeStoreProvider, {
13
- state: config.mode === "split" ? getSplitMode(config.modeOptions?.split) : void 0,
11
+ return /* @__PURE__ */ jsx(NavigationTabsStoreProvider, {
12
+ config,
14
13
  children: /* @__PURE__ */ jsx(HeaderStoreProvider, {
15
14
  namePrefix: config?.keyPrefix,
16
15
  children: /* @__PURE__ */ jsx(BookmarkStoreProvider, {
@@ -1 +1 @@
1
- {"version":3,"file":"StoreProvider.js","names":[],"sources":["../../../src/stores/StoreProvider.tsx"],"sourcesContent":["import type { PropsWithChildren } from 'react'\nimport type { WidgetConfigProps } from '../types/widget.js'\nimport { getSplitMode } from '../utils/variant.js'\nimport { BookmarkStoreProvider } from './bookmarks/BookmarkStore.js'\nimport { ChainOrderStoreProvider } from './chains/ChainOrderStore.js'\nimport { FormStoreProvider } from './form/FormStore.js'\nimport { HeaderStoreProvider } from './header/useHeaderStore.js'\nimport { PinnedTokensStoreProvider } from './pinnedTokens/PinnedTokensStore.js'\nimport { RouteExecutionStoreProvider } from './routes/RouteExecutionStore.js'\nimport { SplitModeStoreProvider } from './settings/useSplitModeStore.js'\n\nexport const StoreProvider: React.FC<PropsWithChildren<WidgetConfigProps>> = ({\n children,\n config,\n formRef,\n}) => {\n return (\n <SplitModeStoreProvider\n state={\n config.mode === 'split'\n ? getSplitMode(config.modeOptions?.split)\n : undefined\n }\n >\n <HeaderStoreProvider namePrefix={config?.keyPrefix}>\n <BookmarkStoreProvider namePrefix={config?.keyPrefix}>\n <PinnedTokensStoreProvider namePrefix={config?.keyPrefix}>\n <FormStoreProvider formRef={formRef}>\n <ChainOrderStoreProvider namePrefix={config?.keyPrefix}>\n <RouteExecutionStoreProvider namePrefix={config?.keyPrefix}>\n {children}\n </RouteExecutionStoreProvider>\n </ChainOrderStoreProvider>\n </FormStoreProvider>\n </PinnedTokensStoreProvider>\n </BookmarkStoreProvider>\n </HeaderStoreProvider>\n </SplitModeStoreProvider>\n )\n}\n"],"mappings":";;;;;;;;;;AAWA,MAAa,iBAAiE,EAC5E,UACA,QACA,cACI;CACJ,OACE,oBAAC,wBAAD;EACE,OACE,OAAO,SAAS,UACZ,aAAa,OAAO,aAAa,KAAK,IACtC,KAAA;YAGN,oBAAC,qBAAD;GAAqB,YAAY,QAAQ;aACvC,oBAAC,uBAAD;IAAuB,YAAY,QAAQ;cACzC,oBAAC,2BAAD;KAA2B,YAAY,QAAQ;eAC7C,oBAAC,mBAAD;MAA4B;gBAC1B,oBAAC,yBAAD;OAAyB,YAAY,QAAQ;iBAC3C,oBAAC,6BAAD;QAA6B,YAAY,QAAQ;QAC9C;OAC0B,CAAA;MACN,CAAA;KACR,CAAA;IACM,CAAA;GACN,CAAA;EACJ,CAAA;CACC,CAAA;AAE5B"}
1
+ {"version":3,"file":"StoreProvider.js","names":[],"sources":["../../../src/stores/StoreProvider.tsx"],"sourcesContent":["import type { PropsWithChildren } from 'react'\nimport type { WidgetConfigProps } from '../types/widget.js'\nimport { BookmarkStoreProvider } from './bookmarks/BookmarkStore.js'\nimport { ChainOrderStoreProvider } from './chains/ChainOrderStore.js'\nimport { FormStoreProvider } from './form/FormStore.js'\nimport { HeaderStoreProvider } from './header/useHeaderStore.js'\nimport { NavigationTabsStoreProvider } from './navigationTabs/useNavigationTabsStore.js'\nimport { PinnedTokensStoreProvider } from './pinnedTokens/PinnedTokensStore.js'\nimport { RouteExecutionStoreProvider } from './routes/RouteExecutionStore.js'\n\nexport const StoreProvider: React.FC<PropsWithChildren<WidgetConfigProps>> = ({\n children,\n config,\n formRef,\n}) => {\n return (\n <NavigationTabsStoreProvider config={config}>\n <HeaderStoreProvider namePrefix={config?.keyPrefix}>\n <BookmarkStoreProvider namePrefix={config?.keyPrefix}>\n <PinnedTokensStoreProvider namePrefix={config?.keyPrefix}>\n <FormStoreProvider formRef={formRef}>\n <ChainOrderStoreProvider namePrefix={config?.keyPrefix}>\n <RouteExecutionStoreProvider namePrefix={config?.keyPrefix}>\n {children}\n </RouteExecutionStoreProvider>\n </ChainOrderStoreProvider>\n </FormStoreProvider>\n </PinnedTokensStoreProvider>\n </BookmarkStoreProvider>\n </HeaderStoreProvider>\n </NavigationTabsStoreProvider>\n )\n}\n"],"mappings":";;;;;;;;;AAUA,MAAa,iBAAiE,EAC5E,UACA,QACA,cACI;CACJ,OACE,oBAAC,6BAAD;EAAqC;YACnC,oBAAC,qBAAD;GAAqB,YAAY,QAAQ;aACvC,oBAAC,uBAAD;IAAuB,YAAY,QAAQ;cACzC,oBAAC,2BAAD;KAA2B,YAAY,QAAQ;eAC7C,oBAAC,mBAAD;MAA4B;gBAC1B,oBAAC,yBAAD;OAAyB,YAAY,QAAQ;iBAC3C,oBAAC,6BAAD;QAA6B,YAAY,QAAQ;QAC9C;OAC0B,CAAA;MACN,CAAA;KACR,CAAA;IACM,CAAA;GACN,CAAA;EACJ,CAAA;CACM,CAAA;AAEjC"}
@@ -1,6 +1,6 @@
1
1
  import { useWidgetConfig } from "../../providers/WidgetProvider/WidgetProvider.js";
2
2
  import { createBookmarksStore } from "./createBookmarkStore.js";
3
- import { createContext, useContext, useRef } from "react";
3
+ import { createContext, use, useRef } from "react";
4
4
  import { useShallow } from "zustand/shallow";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region src/stores/bookmarks/BookmarkStore.tsx
@@ -12,13 +12,13 @@ const BookmarkStoreProvider = ({ children, ...props }) => {
12
12
  ...props,
13
13
  toAddress
14
14
  });
15
- return /* @__PURE__ */ jsx(BookmarkStoreContext.Provider, {
15
+ return /* @__PURE__ */ jsx(BookmarkStoreContext, {
16
16
  value: storeRef.current,
17
17
  children
18
18
  });
19
19
  };
20
20
  function useBookmarkStore(selector) {
21
- const useStore = useContext(BookmarkStoreContext);
21
+ const useStore = use(BookmarkStoreContext);
22
22
  if (!useStore) throw new Error(`You forgot to wrap your component in <${BookmarkStoreProvider.name}>.`);
23
23
  return useStore(useShallow(selector));
24
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BookmarkStore.js","names":[],"sources":["../../../../src/stores/bookmarks/BookmarkStore.tsx"],"sourcesContent":["import { createContext, useContext, useRef } from 'react'\nimport { useShallow } from 'zustand/shallow'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport type { PersistStoreProviderProps } from '../types.js'\nimport { createBookmarksStore } from './createBookmarkStore.js'\nimport type { BookmarkState, BookmarkStore } from './types.js'\n\nconst BookmarkStoreContext = createContext<BookmarkStore | null>(null)\n\nexport const BookmarkStoreProvider: React.FC<PersistStoreProviderProps> = ({\n children,\n ...props\n}) => {\n const { toAddress } = useWidgetConfig()\n const storeRef = useRef<BookmarkStore>(null)\n\n if (!storeRef.current) {\n storeRef.current = createBookmarksStore({ ...props, toAddress })\n }\n\n return (\n <BookmarkStoreContext.Provider value={storeRef.current}>\n {children}\n </BookmarkStoreContext.Provider>\n )\n}\n\nexport function useBookmarkStore<T>(selector: (store: BookmarkState) => T): T {\n const useStore = useContext(BookmarkStoreContext)\n\n if (!useStore) {\n throw new Error(\n `You forgot to wrap your component in <${BookmarkStoreProvider.name}>.`\n )\n }\n\n return useStore(useShallow(selector))\n}\n"],"mappings":";;;;;;AAOA,MAAM,uBAAuB,cAAoC,IAAI;AAErE,MAAa,yBAA8D,EACzE,UACA,GAAG,YACC;CACJ,MAAM,EAAE,cAAc,gBAAgB;CACtC,MAAM,WAAW,OAAsB,IAAI;CAE3C,IAAI,CAAC,SAAS,SACZ,SAAS,UAAU,qBAAqB;EAAE,GAAG;EAAO;CAAU,CAAC;CAGjE,OACE,oBAAC,qBAAqB,UAAtB;EAA+B,OAAO,SAAS;EAC5C;CAC4B,CAAA;AAEnC;AAEA,SAAgB,iBAAoB,UAA0C;CAC5E,MAAM,WAAW,WAAW,oBAAoB;CAEhD,IAAI,CAAC,UACH,MAAM,IAAI,MACR,yCAAyC,sBAAsB,KAAK,GACtE;CAGF,OAAO,SAAS,WAAW,QAAQ,CAAC;AACtC"}
1
+ {"version":3,"file":"BookmarkStore.js","names":[],"sources":["../../../../src/stores/bookmarks/BookmarkStore.tsx"],"sourcesContent":["import { createContext, use, useRef } from 'react'\nimport { useShallow } from 'zustand/shallow'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport type { PersistStoreProviderProps } from '../types.js'\nimport { createBookmarksStore } from './createBookmarkStore.js'\nimport type { BookmarkState, BookmarkStore } from './types.js'\n\nconst BookmarkStoreContext = createContext<BookmarkStore | null>(null)\n\nexport const BookmarkStoreProvider: React.FC<PersistStoreProviderProps> = ({\n children,\n ...props\n}) => {\n const { toAddress } = useWidgetConfig()\n const storeRef = useRef<BookmarkStore>(null)\n\n if (!storeRef.current) {\n storeRef.current = createBookmarksStore({ ...props, toAddress })\n }\n\n return (\n <BookmarkStoreContext value={storeRef.current}>\n {children}\n </BookmarkStoreContext>\n )\n}\n\nexport function useBookmarkStore<T>(selector: (store: BookmarkState) => T): T {\n const useStore = use(BookmarkStoreContext)\n\n if (!useStore) {\n throw new Error(\n `You forgot to wrap your component in <${BookmarkStoreProvider.name}>.`\n )\n }\n\n return useStore(useShallow(selector))\n}\n"],"mappings":";;;;;;AAOA,MAAM,uBAAuB,cAAoC,IAAI;AAErE,MAAa,yBAA8D,EACzE,UACA,GAAG,YACC;CACJ,MAAM,EAAE,cAAc,gBAAgB;CACtC,MAAM,WAAW,OAAsB,IAAI;CAE3C,IAAI,CAAC,SAAS,SACZ,SAAS,UAAU,qBAAqB;EAAE,GAAG;EAAO;CAAU,CAAC;CAGjE,OACE,oBAAC,sBAAD;EAAsB,OAAO,SAAS;EACnC;CACmB,CAAA;AAE1B;AAEA,SAAgB,iBAAoB,UAA0C;CAC5E,MAAM,WAAW,IAAI,oBAAoB;CAEzC,IAAI,CAAC,UACH,MAAM,IAAI,MACR,yCAAyC,sBAAsB,KAAK,GACtE;CAGF,OAAO,SAAS,WAAW,QAAQ,CAAC;AACtC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createBookmarkStore.js","names":[],"sources":["../../../../src/stores/bookmarks/createBookmarkStore.ts"],"sourcesContent":["import type { StoreApi, UseBoundStore } from 'zustand'\nimport { create } from 'zustand'\nimport { persist } from 'zustand/middleware'\nimport type { ToAddress } from '../../types/widget.js'\nimport type { PersistStoreProps } from '../types.js'\nimport type { BookmarkState } from './types.js'\n\nconst recentWalletsLimit = 10\n\ninterface PersistBookmarkProps extends PersistStoreProps {\n toAddress?: ToAddress\n}\nexport const createBookmarksStore = ({\n namePrefix,\n toAddress,\n}: PersistBookmarkProps): UseBoundStore<StoreApi<BookmarkState>> =>\n create<BookmarkState>()(\n persist(\n (set, get) => ({\n selectedBookmark: toAddress,\n bookmarks: [],\n recentWallets: [],\n getBookmark: (address) =>\n get().bookmarks.find((bookmark) => bookmark.address === address),\n addBookmark: (bookmark) => {\n set((state) => ({\n bookmarks: [bookmark, ...state.bookmarks],\n }))\n },\n removeBookmark: (address) => {\n set((state) => ({\n bookmarks: state.bookmarks.filter(\n (storedBookmark) => storedBookmark.address !== address\n ),\n }))\n },\n getSelectedBookmark: () => get().selectedBookmark,\n setSelectedBookmark: (bookmark) => {\n set((_state) => ({\n selectedBookmark: bookmark,\n }))\n },\n addRecentWallet: (bookmark) => {\n set((state) => ({\n recentWallets: [\n bookmark,\n ...state.recentWallets.filter(\n (recentWallet) => recentWallet.address !== bookmark.address\n ),\n ].slice(0, recentWalletsLimit),\n }))\n },\n removeRecentWallet: (address) => {\n set((state) => ({\n recentWallets: state.recentWallets.filter(\n (storedRecent) => storedRecent.address !== address\n ),\n }))\n },\n }),\n {\n name: `${namePrefix || 'li.fi'}-bookmarks`,\n version: 0,\n partialize: (state) => ({\n bookmarks: state.bookmarks,\n recentWallets: state.recentWallets,\n }),\n onRehydrateStorage: () => {\n return (state) => {\n if (state && toAddress && !toAddress.name) {\n const existingBookmark = state.getBookmark(toAddress.address)\n if (existingBookmark) {\n state.setSelectedBookmark(existingBookmark)\n }\n }\n }\n },\n }\n )\n )\n"],"mappings":";;;AAOA,MAAM,qBAAqB;AAK3B,MAAa,wBAAwB,EACnC,YACA,gBAEA,OAAsB,EACpB,SACG,KAAK,SAAS;CACb,kBAAkB;CAClB,WAAW,CAAC;CACZ,eAAe,CAAC;CAChB,cAAc,YACZ,IAAI,EAAE,UAAU,MAAM,aAAa,SAAS,YAAY,OAAO;CACjE,cAAc,aAAa;EACzB,KAAK,WAAW,EACd,WAAW,CAAC,UAAU,GAAG,MAAM,SAAS,EAC1C,EAAE;CACJ;CACA,iBAAiB,YAAY;EAC3B,KAAK,WAAW,EACd,WAAW,MAAM,UAAU,QACxB,mBAAmB,eAAe,YAAY,OACjD,EACF,EAAE;CACJ;CACA,2BAA2B,IAAI,EAAE;CACjC,sBAAsB,aAAa;EACjC,KAAK,YAAY,EACf,kBAAkB,SACpB,EAAE;CACJ;CACA,kBAAkB,aAAa;EAC7B,KAAK,WAAW,EACd,eAAe,CACb,UACA,GAAG,MAAM,cAAc,QACpB,iBAAiB,aAAa,YAAY,SAAS,OACtD,CACF,EAAE,MAAM,GAAG,kBAAkB,EAC/B,EAAE;CACJ;CACA,qBAAqB,YAAY;EAC/B,KAAK,WAAW,EACd,eAAe,MAAM,cAAc,QAChC,iBAAiB,aAAa,YAAY,OAC7C,EACF,EAAE;CACJ;AACF,IACA;CACE,MAAM,GAAG,cAAc,QAAQ;CAC/B,SAAS;CACT,aAAa,WAAW;EACtB,WAAW,MAAM;EACjB,eAAe,MAAM;CACvB;CACA,0BAA0B;EACxB,QAAQ,UAAU;GAChB,IAAI,SAAS,aAAa,CAAC,UAAU,MAAM;IACzC,MAAM,mBAAmB,MAAM,YAAY,UAAU,OAAO;IAC5D,IAAI,kBACF,MAAM,oBAAoB,gBAAgB;GAE9C;EACF;CACF;AACF,CACF,CACF"}
1
+ {"version":3,"file":"createBookmarkStore.js","names":[],"sources":["../../../../src/stores/bookmarks/createBookmarkStore.ts"],"sourcesContent":["import type { StoreApi, UseBoundStore } from 'zustand'\nimport { create } from 'zustand'\nimport { persist } from 'zustand/middleware'\nimport type { ToAddress } from '../../types/widget.js'\nimport type { PersistStoreProps } from '../types.js'\nimport type { BookmarkState } from './types.js'\n\nconst recentWalletsLimit = 10\n\ninterface PersistBookmarkProps extends PersistStoreProps {\n toAddress?: ToAddress\n}\nexport const createBookmarksStore = ({\n namePrefix,\n toAddress,\n}: PersistBookmarkProps): UseBoundStore<StoreApi<BookmarkState>> =>\n create<BookmarkState>()(\n persist(\n (set, get) => ({\n selectedBookmark: toAddress,\n bookmarks: [],\n recentWallets: [],\n getBookmark: (address) =>\n get().bookmarks.find((bookmark) => bookmark.address === address),\n addBookmark: (bookmark) => {\n set((state) => ({\n bookmarks: [bookmark, ...state.bookmarks],\n }))\n },\n removeBookmark: (address) => {\n set((state) => ({\n bookmarks: state.bookmarks.filter(\n (storedBookmark) => storedBookmark.address !== address\n ),\n }))\n },\n getSelectedBookmark: () => get().selectedBookmark,\n setSelectedBookmark: (bookmark) => {\n set((_state) => ({\n selectedBookmark: bookmark,\n }))\n },\n addRecentWallet: (bookmark) => {\n set((state) => ({\n recentWallets: [\n bookmark,\n ...state.recentWallets.filter(\n (recentWallet) => recentWallet.address !== bookmark.address\n ),\n ].slice(0, recentWalletsLimit),\n }))\n },\n removeRecentWallet: (address) => {\n set((state) => ({\n recentWallets: state.recentWallets.filter(\n (storedRecent) => storedRecent.address !== address\n ),\n }))\n },\n }),\n {\n name: `${namePrefix || 'li.fi'}-bookmarks`,\n version: 0,\n partialize: (state) => ({\n bookmarks: state.bookmarks,\n recentWallets: state.recentWallets,\n }),\n onRehydrateStorage: () => {\n return (state) => {\n if (state && toAddress && !toAddress.name) {\n const existingBookmark = state.getBookmark(toAddress.address)\n if (existingBookmark) {\n state.setSelectedBookmark(existingBookmark)\n }\n }\n }\n },\n }\n )\n )\n"],"mappings":";;;AAOA,MAAM,qBAAqB;AAK3B,MAAa,wBAAwB,EACnC,YACA,gBAEA,OAAsB,CAAC,CACrB,SACG,KAAK,SAAS;CACb,kBAAkB;CAClB,WAAW,CAAC;CACZ,eAAe,CAAC;CAChB,cAAc,YACZ,IAAI,CAAC,CAAC,UAAU,MAAM,aAAa,SAAS,YAAY,OAAO;CACjE,cAAc,aAAa;EACzB,KAAK,WAAW,EACd,WAAW,CAAC,UAAU,GAAG,MAAM,SAAS,EAC1C,EAAE;CACJ;CACA,iBAAiB,YAAY;EAC3B,KAAK,WAAW,EACd,WAAW,MAAM,UAAU,QACxB,mBAAmB,eAAe,YAAY,OACjD,EACF,EAAE;CACJ;CACA,2BAA2B,IAAI,CAAC,CAAC;CACjC,sBAAsB,aAAa;EACjC,KAAK,YAAY,EACf,kBAAkB,SACpB,EAAE;CACJ;CACA,kBAAkB,aAAa;EAC7B,KAAK,WAAW,EACd,eAAe,CACb,UACA,GAAG,MAAM,cAAc,QACpB,iBAAiB,aAAa,YAAY,SAAS,OACtD,CACF,CAAC,CAAC,MAAM,GAAG,kBAAkB,EAC/B,EAAE;CACJ;CACA,qBAAqB,YAAY;EAC/B,KAAK,WAAW,EACd,eAAe,MAAM,cAAc,QAChC,iBAAiB,aAAa,YAAY,OAC7C,EACF,EAAE;CACJ;AACF,IACA;CACE,MAAM,GAAG,cAAc,QAAQ;CAC/B,SAAS;CACT,aAAa,WAAW;EACtB,WAAW,MAAM;EACjB,eAAe,MAAM;CACvB;CACA,0BAA0B;EACxB,QAAQ,UAAU;GAChB,IAAI,SAAS,aAAa,CAAC,UAAU,MAAM;IACzC,MAAM,mBAAmB,MAAM,YAAY,UAAU,OAAO;IAC5D,IAAI,kBACF,MAAM,oBAAoB,gBAAgB;GAE9C;EACF;CACF;AACF,CACF,CACF"}
@@ -1,12 +1,12 @@
1
+ import { getConfigItemSets, isItemAllowedForSets } from "../../utils/item.js";
1
2
  import { useWidgetConfig } from "../../providers/WidgetProvider/WidgetProvider.js";
2
3
  import { useSwapOnly } from "../../hooks/useSwapOnly.js";
3
- import { getConfigItemSets, isItemAllowedForSets } from "../../utils/item.js";
4
4
  import { useChains } from "../../hooks/useChains.js";
5
5
  import { useFieldActions } from "../form/useFieldActions.js";
6
6
  import { useExternalWalletProvider } from "../../providers/WalletProvider/useExternalWalletProvider.js";
7
7
  import { getDefaultValuesFromQueryString } from "../form/getDefaultValuesFromQueryString.js";
8
8
  import { createChainOrderStore } from "./createChainOrderStore.js";
9
- import { createContext, useContext, useEffect, useRef } from "react";
9
+ import { createContext, use, useEffect, useRef } from "react";
10
10
  import { useShallow } from "zustand/shallow";
11
11
  import { jsx } from "react/jsx-runtime";
12
12
  //#region src/stores/chains/ChainOrderStore.tsx
@@ -63,13 +63,13 @@ function ChainOrderStoreProvider({ children, ...props }) {
63
63
  toChainConfig,
64
64
  buildUrl
65
65
  ]);
66
- return /* @__PURE__ */ jsx(ChainOrderStoreContext.Provider, {
66
+ return /* @__PURE__ */ jsx(ChainOrderStoreContext, {
67
67
  value: storeRef.current,
68
68
  children
69
69
  });
70
70
  }
71
71
  function useChainOrderStoreContext() {
72
- const useStore = useContext(ChainOrderStoreContext);
72
+ const useStore = use(ChainOrderStoreContext);
73
73
  if (!useStore) throw new Error(`You forgot to wrap your component in <${ChainOrderStoreProvider.name}>.`);
74
74
  return useStore;
75
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ChainOrderStore.js","names":[],"sources":["../../../../src/stores/chains/ChainOrderStore.tsx"],"sourcesContent":["import { createContext, type JSX, useContext, useEffect, useRef } from 'react'\nimport type { StoreApi, UseBoundStore } from 'zustand'\nimport { useShallow } from 'zustand/shallow'\nimport { useChains } from '../../hooks/useChains.js'\nimport { useSwapOnly } from '../../hooks/useSwapOnly.js'\nimport { useExternalWalletProvider } from '../../providers/WalletProvider/useExternalWalletProvider.js'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport { getConfigItemSets, isItemAllowedForSets } from '../../utils/item.js'\nimport { getDefaultValuesFromQueryString } from '../form/getDefaultValuesFromQueryString.js'\nimport type { FormType } from '../form/types.js'\nimport { useFieldActions } from '../form/useFieldActions.js'\nimport type { PersistStoreProviderProps } from '../types.js'\nimport { createChainOrderStore } from './createChainOrderStore.js'\nimport type { ChainOrderState } from './types.js'\n\ntype ChainOrderStore = UseBoundStore<StoreApi<ChainOrderState>>\n\nconst ChainOrderStoreContext = createContext<ChainOrderStore | null>(null)\n\nexport function ChainOrderStoreProvider({\n children,\n ...props\n}: PersistStoreProviderProps): JSX.Element {\n const {\n chains: chainsConfig,\n hiddenUI,\n fromChain: fromChainConfig,\n toChain: toChainConfig,\n buildUrl,\n } = useWidgetConfig()\n const storeRef = useRef<ChainOrderStore>(null)\n const { chains } = useChains()\n const { setFieldValue, getFieldValues } = useFieldActions()\n const swapOnly = useSwapOnly()\n const { variant } = useWidgetConfig()\n const { externalChainTypes, useExternalWalletProvidersOnly } =\n useExternalWalletProvider()\n\n if (!storeRef.current) {\n storeRef.current = createChainOrderStore({\n ...props,\n })\n }\n\n useEffect(() => {\n if (chains) {\n ;(['from', 'to'] as FormType[]).forEach((key) => {\n const configChainIds = chainsConfig?.[key]\n const isFromKey = key === 'from'\n\n // Convert configChainIds to Sets for O(1) lookup\n const configChainIdsSet = getConfigItemSets(\n configChainIds,\n (chainIds) => new Set(chainIds)\n )\n const filteredChains = chains.filter((chain) => {\n const passesChainsConfigFilter = configChainIdsSet\n ? isItemAllowedForSets(chain.id, configChainIdsSet)\n : true\n // If the integrator uses external wallet management and has not opted in for partial wallet management,\n // restrict the displayed chains to those compatible with external wallet management.\n // This ensures users only see chains for which they can sign transactions.\n const passesWalletConfigFilter = isFromKey\n ? !useExternalWalletProvidersOnly ||\n externalChainTypes.includes(chain.chainType)\n : true\n return passesChainsConfigFilter && passesWalletConfigFilter\n })\n\n const chainOrder = storeRef.current?.getState().initializeChains(\n filteredChains.map((chain) => chain.id),\n key\n )\n\n const isSwapTo = swapOnly && key === 'to'\n\n // Show \"All networks\" button if there are multiple networks\n const showAllNetworks =\n filteredChains.length > 1 && !hiddenUI?.allNetworks && !isSwapTo\n\n // Initialize the isAllNetworks with true if the tab is shown,\n // there is no config chain value and no url chain value\n const urlValues = getDefaultValuesFromQueryString({ buildUrl })\n const urlChainValue =\n key === 'from' ? urlValues.fromChain : urlValues.toChain\n const configChainValue =\n key === 'from' ? fromChainConfig : toChainConfig\n const initialIsAllNetworks =\n showAllNetworks && !configChainValue && !urlChainValue\n storeRef.current?.getState().setIsAllNetworks(initialIsAllNetworks, key)\n storeRef.current?.getState().setShowAllNetworks(showAllNetworks, key)\n\n // If swap only, set the to chain to the from chain\n if (isSwapTo) {\n const [fromChainValue] = getFieldValues('fromChain')\n setFieldValue('toChain', fromChainValue)\n }\n\n // When \"All Networks\" is active, don't auto-select a chain from the\n // persisted chain order. This prevents stale cross-ecosystem selections\n // (e.g. EVM from + Solana to) from triggering the \"destination wallet\n // address required\" message after a page refresh.\n if (initialIsAllNetworks) {\n return\n }\n\n const [chainValue] = getFieldValues(`${key}Chain`)\n if (chainValue) {\n return\n }\n\n const firstAllowedPinnedChain = storeRef.current\n ?.getState()\n .pinnedChains?.find((chainId) =>\n filteredChains.some((chain) => chain.id === chainId)\n )\n if (\n variant === 'wide' &&\n !hiddenUI?.chainSidebar &&\n firstAllowedPinnedChain\n ) {\n setFieldValue(`${key}Chain`, firstAllowedPinnedChain)\n } else if (chainOrder?.length) {\n setFieldValue(`${key}Chain`, chainOrder[0])\n }\n })\n }\n }, [\n chains,\n chainsConfig,\n externalChainTypes,\n getFieldValues,\n setFieldValue,\n useExternalWalletProvidersOnly,\n variant,\n hiddenUI,\n swapOnly,\n fromChainConfig,\n toChainConfig,\n buildUrl,\n ])\n\n return (\n <ChainOrderStoreContext.Provider value={storeRef.current}>\n {children}\n </ChainOrderStoreContext.Provider>\n )\n}\n\nfunction useChainOrderStoreContext() {\n const useStore = useContext(ChainOrderStoreContext)\n if (!useStore) {\n throw new Error(\n `You forgot to wrap your component in <${ChainOrderStoreProvider.name}>.`\n )\n }\n return useStore\n}\n\nexport function useChainOrderStore<T>(\n selector: (state: ChainOrderState) => T\n): T {\n const useStore = useChainOrderStoreContext()\n return useStore(useShallow(selector))\n}\n"],"mappings":";;;;;;;;;;;;AAiBA,MAAM,yBAAyB,cAAsC,IAAI;AAEzE,SAAgB,wBAAwB,EACtC,UACA,GAAG,SACsC;CACzC,MAAM,EACJ,QAAQ,cACR,UACA,WAAW,iBACX,SAAS,eACT,aACE,gBAAgB;CACpB,MAAM,WAAW,OAAwB,IAAI;CAC7C,MAAM,EAAE,WAAW,UAAU;CAC7B,MAAM,EAAE,eAAe,mBAAmB,gBAAgB;CAC1D,MAAM,WAAW,YAAY;CAC7B,MAAM,EAAE,YAAY,gBAAgB;CACpC,MAAM,EAAE,oBAAoB,mCAC1B,0BAA0B;CAE5B,IAAI,CAAC,SAAS,SACZ,SAAS,UAAU,sBAAsB,EACvC,GAAG,MACL,CAAC;CAGH,gBAAgB;EACd,IAAI,QACD,CAAE,QAAQ,IAAI,EAAiB,SAAS,QAAQ;GAC/C,MAAM,iBAAiB,eAAe;GACtC,MAAM,YAAY,QAAQ;GAG1B,MAAM,oBAAoB,kBACxB,iBACC,aAAa,IAAI,IAAI,QAAQ,CAChC;GACA,MAAM,iBAAiB,OAAO,QAAQ,UAAU;IAC9C,MAAM,2BAA2B,oBAC7B,qBAAqB,MAAM,IAAI,iBAAiB,IAChD;IAIJ,MAAM,2BAA2B,YAC7B,CAAC,kCACD,mBAAmB,SAAS,MAAM,SAAS,IAC3C;IACJ,OAAO,4BAA4B;GACrC,CAAC;GAED,MAAM,aAAa,SAAS,SAAS,SAAS,EAAE,iBAC9C,eAAe,KAAK,UAAU,MAAM,EAAE,GACtC,GACF;GAEA,MAAM,WAAW,YAAY,QAAQ;GAGrC,MAAM,kBACJ,eAAe,SAAS,KAAK,CAAC,UAAU,eAAe,CAAC;GAI1D,MAAM,YAAY,gCAAgC,EAAE,SAAS,CAAC;GAC9D,MAAM,gBACJ,QAAQ,SAAS,UAAU,YAAY,UAAU;GAGnD,MAAM,uBACJ,mBAAmB,EAFnB,QAAQ,SAAS,kBAAkB,kBAEK,CAAC;GAC3C,SAAS,SAAS,SAAS,EAAE,iBAAiB,sBAAsB,GAAG;GACvE,SAAS,SAAS,SAAS,EAAE,mBAAmB,iBAAiB,GAAG;GAGpE,IAAI,UAAU;IACZ,MAAM,CAAC,kBAAkB,eAAe,WAAW;IACnD,cAAc,WAAW,cAAc;GACzC;GAMA,IAAI,sBACF;GAGF,MAAM,CAAC,cAAc,eAAe,GAAG,IAAI,MAAM;GACjD,IAAI,YACF;GAGF,MAAM,0BAA0B,SAAS,SACrC,SAAS,EACV,cAAc,MAAM,YACnB,eAAe,MAAM,UAAU,MAAM,OAAO,OAAO,CACrD;GACF,IACE,YAAY,UACZ,CAAC,UAAU,gBACX,yBAEA,cAAc,GAAG,IAAI,QAAQ,uBAAuB;QAC/C,IAAI,YAAY,QACrB,cAAc,GAAG,IAAI,QAAQ,WAAW,EAAE;EAE9C,CAAC;CAEL,GAAG;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,OACE,oBAAC,uBAAuB,UAAxB;EAAiC,OAAO,SAAS;EAC9C;CAC8B,CAAA;AAErC;AAEA,SAAS,4BAA4B;CACnC,MAAM,WAAW,WAAW,sBAAsB;CAClD,IAAI,CAAC,UACH,MAAM,IAAI,MACR,yCAAyC,wBAAwB,KAAK,GACxE;CAEF,OAAO;AACT;AAEA,SAAgB,mBACd,UACG;CAEH,OADiB,0BACH,EAAE,WAAW,QAAQ,CAAC;AACtC"}
1
+ {"version":3,"file":"ChainOrderStore.js","names":[],"sources":["../../../../src/stores/chains/ChainOrderStore.tsx"],"sourcesContent":["import { createContext, type JSX, use, useEffect, useRef } from 'react'\nimport type { StoreApi, UseBoundStore } from 'zustand'\nimport { useShallow } from 'zustand/shallow'\nimport { useChains } from '../../hooks/useChains.js'\nimport { useSwapOnly } from '../../hooks/useSwapOnly.js'\nimport { useExternalWalletProvider } from '../../providers/WalletProvider/useExternalWalletProvider.js'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport { getConfigItemSets, isItemAllowedForSets } from '../../utils/item.js'\nimport { getDefaultValuesFromQueryString } from '../form/getDefaultValuesFromQueryString.js'\nimport type { FormType } from '../form/types.js'\nimport { useFieldActions } from '../form/useFieldActions.js'\nimport type { PersistStoreProviderProps } from '../types.js'\nimport { createChainOrderStore } from './createChainOrderStore.js'\nimport type { ChainOrderState } from './types.js'\n\ntype ChainOrderStore = UseBoundStore<StoreApi<ChainOrderState>>\n\nconst ChainOrderStoreContext = createContext<ChainOrderStore | null>(null)\n\nexport function ChainOrderStoreProvider({\n children,\n ...props\n}: PersistStoreProviderProps): JSX.Element {\n const {\n chains: chainsConfig,\n hiddenUI,\n fromChain: fromChainConfig,\n toChain: toChainConfig,\n buildUrl,\n } = useWidgetConfig()\n const storeRef = useRef<ChainOrderStore>(null)\n const { chains } = useChains()\n const { setFieldValue, getFieldValues } = useFieldActions()\n const swapOnly = useSwapOnly()\n const { variant } = useWidgetConfig()\n const { externalChainTypes, useExternalWalletProvidersOnly } =\n useExternalWalletProvider()\n\n if (!storeRef.current) {\n storeRef.current = createChainOrderStore({\n ...props,\n })\n }\n\n useEffect(() => {\n if (chains) {\n ;(['from', 'to'] as FormType[]).forEach((key) => {\n const configChainIds = chainsConfig?.[key]\n const isFromKey = key === 'from'\n\n // Convert configChainIds to Sets for O(1) lookup\n const configChainIdsSet = getConfigItemSets(\n configChainIds,\n (chainIds) => new Set(chainIds)\n )\n const filteredChains = chains.filter((chain) => {\n const passesChainsConfigFilter = configChainIdsSet\n ? isItemAllowedForSets(chain.id, configChainIdsSet)\n : true\n // If the integrator uses external wallet management and has not opted in for partial wallet management,\n // restrict the displayed chains to those compatible with external wallet management.\n // This ensures users only see chains for which they can sign transactions.\n const passesWalletConfigFilter = isFromKey\n ? !useExternalWalletProvidersOnly ||\n externalChainTypes.includes(chain.chainType)\n : true\n return passesChainsConfigFilter && passesWalletConfigFilter\n })\n\n const chainOrder = storeRef.current?.getState().initializeChains(\n filteredChains.map((chain) => chain.id),\n key\n )\n\n const isSwapTo = swapOnly && key === 'to'\n\n // Show \"All networks\" button if there are multiple networks\n const showAllNetworks =\n filteredChains.length > 1 && !hiddenUI?.allNetworks && !isSwapTo\n\n // Initialize the isAllNetworks with true if the tab is shown,\n // there is no config chain value and no url chain value\n const urlValues = getDefaultValuesFromQueryString({ buildUrl })\n const urlChainValue =\n key === 'from' ? urlValues.fromChain : urlValues.toChain\n const configChainValue =\n key === 'from' ? fromChainConfig : toChainConfig\n const initialIsAllNetworks =\n showAllNetworks && !configChainValue && !urlChainValue\n storeRef.current?.getState().setIsAllNetworks(initialIsAllNetworks, key)\n storeRef.current?.getState().setShowAllNetworks(showAllNetworks, key)\n\n // If swap only, set the to chain to the from chain\n if (isSwapTo) {\n const [fromChainValue] = getFieldValues('fromChain')\n setFieldValue('toChain', fromChainValue)\n }\n\n // When \"All Networks\" is active, don't auto-select a chain from the\n // persisted chain order. This prevents stale cross-ecosystem selections\n // (e.g. EVM from + Solana to) from triggering the \"destination wallet\n // address required\" message after a page refresh.\n if (initialIsAllNetworks) {\n return\n }\n\n const [chainValue] = getFieldValues(`${key}Chain`)\n if (chainValue) {\n return\n }\n\n const firstAllowedPinnedChain = storeRef.current\n ?.getState()\n .pinnedChains?.find((chainId) =>\n filteredChains.some((chain) => chain.id === chainId)\n )\n if (\n variant === 'wide' &&\n !hiddenUI?.chainSidebar &&\n firstAllowedPinnedChain\n ) {\n setFieldValue(`${key}Chain`, firstAllowedPinnedChain)\n } else if (chainOrder?.length) {\n setFieldValue(`${key}Chain`, chainOrder[0])\n }\n })\n }\n }, [\n chains,\n chainsConfig,\n externalChainTypes,\n getFieldValues,\n setFieldValue,\n useExternalWalletProvidersOnly,\n variant,\n hiddenUI,\n swapOnly,\n fromChainConfig,\n toChainConfig,\n buildUrl,\n ])\n\n return (\n <ChainOrderStoreContext value={storeRef.current}>\n {children}\n </ChainOrderStoreContext>\n )\n}\n\nfunction useChainOrderStoreContext() {\n const useStore = use(ChainOrderStoreContext)\n if (!useStore) {\n throw new Error(\n `You forgot to wrap your component in <${ChainOrderStoreProvider.name}>.`\n )\n }\n return useStore\n}\n\nexport function useChainOrderStore<T>(\n selector: (state: ChainOrderState) => T\n): T {\n const useStore = useChainOrderStoreContext()\n return useStore(useShallow(selector))\n}\n"],"mappings":";;;;;;;;;;;;AAiBA,MAAM,yBAAyB,cAAsC,IAAI;AAEzE,SAAgB,wBAAwB,EACtC,UACA,GAAG,SACsC;CACzC,MAAM,EACJ,QAAQ,cACR,UACA,WAAW,iBACX,SAAS,eACT,aACE,gBAAgB;CACpB,MAAM,WAAW,OAAwB,IAAI;CAC7C,MAAM,EAAE,WAAW,UAAU;CAC7B,MAAM,EAAE,eAAe,mBAAmB,gBAAgB;CAC1D,MAAM,WAAW,YAAY;CAC7B,MAAM,EAAE,YAAY,gBAAgB;CACpC,MAAM,EAAE,oBAAoB,mCAC1B,0BAA0B;CAE5B,IAAI,CAAC,SAAS,SACZ,SAAS,UAAU,sBAAsB,EACvC,GAAG,MACL,CAAC;CAGH,gBAAgB;EACd,IAAI,QACD,CAAE,QAAQ,IAAI,CAAC,CAAgB,SAAS,QAAQ;GAC/C,MAAM,iBAAiB,eAAe;GACtC,MAAM,YAAY,QAAQ;GAG1B,MAAM,oBAAoB,kBACxB,iBACC,aAAa,IAAI,IAAI,QAAQ,CAChC;GACA,MAAM,iBAAiB,OAAO,QAAQ,UAAU;IAC9C,MAAM,2BAA2B,oBAC7B,qBAAqB,MAAM,IAAI,iBAAiB,IAChD;IAIJ,MAAM,2BAA2B,YAC7B,CAAC,kCACD,mBAAmB,SAAS,MAAM,SAAS,IAC3C;IACJ,OAAO,4BAA4B;GACrC,CAAC;GAED,MAAM,aAAa,SAAS,SAAS,SAAS,CAAC,CAAC,iBAC9C,eAAe,KAAK,UAAU,MAAM,EAAE,GACtC,GACF;GAEA,MAAM,WAAW,YAAY,QAAQ;GAGrC,MAAM,kBACJ,eAAe,SAAS,KAAK,CAAC,UAAU,eAAe,CAAC;GAI1D,MAAM,YAAY,gCAAgC,EAAE,SAAS,CAAC;GAC9D,MAAM,gBACJ,QAAQ,SAAS,UAAU,YAAY,UAAU;GAGnD,MAAM,uBACJ,mBAAmB,EAFnB,QAAQ,SAAS,kBAAkB,kBAEK,CAAC;GAC3C,SAAS,SAAS,SAAS,CAAC,CAAC,iBAAiB,sBAAsB,GAAG;GACvE,SAAS,SAAS,SAAS,CAAC,CAAC,mBAAmB,iBAAiB,GAAG;GAGpE,IAAI,UAAU;IACZ,MAAM,CAAC,kBAAkB,eAAe,WAAW;IACnD,cAAc,WAAW,cAAc;GACzC;GAMA,IAAI,sBACF;GAGF,MAAM,CAAC,cAAc,eAAe,GAAG,IAAI,MAAM;GACjD,IAAI,YACF;GAGF,MAAM,0BAA0B,SAAS,SACrC,SAAS,CAAC,CACX,cAAc,MAAM,YACnB,eAAe,MAAM,UAAU,MAAM,OAAO,OAAO,CACrD;GACF,IACE,YAAY,UACZ,CAAC,UAAU,gBACX,yBAEA,cAAc,GAAG,IAAI,QAAQ,uBAAuB;QAC/C,IAAI,YAAY,QACrB,cAAc,GAAG,IAAI,QAAQ,WAAW,EAAE;EAE9C,CAAC;CAEL,GAAG;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,OACE,oBAAC,wBAAD;EAAwB,OAAO,SAAS;EACrC;CACqB,CAAA;AAE5B;AAEA,SAAS,4BAA4B;CACnC,MAAM,WAAW,IAAI,sBAAsB;CAC3C,IAAI,CAAC,UACH,MAAM,IAAI,MACR,yCAAyC,wBAAwB,KAAK,GACxE;CAEF,OAAO;AACT;AAEA,SAAgB,mBACd,UACG;CAEH,OADiB,0BACH,CAAC,CAAC,WAAW,QAAQ,CAAC;AACtC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createChainOrderStore.js","names":[],"sources":["../../../../src/stores/chains/createChainOrderStore.ts"],"sourcesContent":["import type { StoreApi, UseBoundStore } from 'zustand'\nimport { create } from 'zustand'\nimport { persist } from 'zustand/middleware'\nimport { widgetEvents } from '../../hooks/useWidgetEvents.js'\nimport { WidgetEvent } from '../../types/events.js'\nimport type { PersistStoreProps } from '../types.js'\nimport type { ChainOrderState } from './types.js'\n\n// (10 tiles: 9 + 1 for \"All chains\")\nexport const maxGridItemsToShow = 10\nexport const maxChainsToShow: number = maxGridItemsToShow - 1\n// If there are more than maxChainsToShow chains to show,\n// -1 tile to show a button \"+ N\" more chains\nexport const maxChainsToOrder: number = maxChainsToShow - 1\n\nconst defaultChainState = {\n from: [],\n to: [],\n}\n\nexport const createChainOrderStore = ({\n namePrefix,\n}: PersistStoreProps): UseBoundStore<StoreApi<ChainOrderState>> =>\n create<ChainOrderState>()(\n persist(\n (set, get) => ({\n chainOrder: defaultChainState,\n fromIsAllNetworks: true,\n toIsAllNetworks: true,\n fromShowAllNetworks: true,\n toShowAllNetworks: true,\n availableChains: defaultChainState,\n pinnedChains: [],\n initializeChains: (chainIds, type) => {\n set((state: ChainOrderState) => {\n const chainOrder = state.chainOrder[type].filter((chainId) =>\n chainIds.includes(chainId)\n )\n const chainsToAdd = chainIds.filter(\n (chainId) => !chainOrder.includes(chainId)\n )\n if (chainOrder.length === maxChainsToOrder || !chainsToAdd.length) {\n return {\n availableChains: {\n ...state.availableChains,\n [type]: chainIds,\n },\n chainOrder: {\n ...state.chainOrder,\n [type]: chainOrder,\n },\n }\n }\n const chainsToAddLength = maxChainsToOrder - chainOrder.length\n for (let index = 0; index < chainsToAddLength; index++) {\n chainOrder.push(chainsToAdd[index])\n }\n return {\n availableChains: {\n ...state.availableChains,\n [type]: chainIds,\n },\n chainOrder: {\n ...state.chainOrder,\n [type]: chainOrder,\n },\n }\n })\n return get().chainOrder[type].slice(0, maxChainsToOrder)\n },\n setChain: (chainId, type) => {\n const state = get()\n if (\n state.chainOrder[type].includes(chainId) ||\n !state.availableChains[type].includes(chainId)\n ) {\n return\n }\n set((state: ChainOrderState) => {\n const chainOrder = [chainId, ...state.chainOrder[type]].slice(\n 0,\n maxChainsToOrder\n )\n return {\n chainOrder: {\n ...state.chainOrder,\n [type]: chainOrder,\n },\n }\n })\n },\n setIsAllNetworks: (isAllNetworks, formType) => {\n set({ [`${formType}IsAllNetworks`]: isAllNetworks })\n },\n setShowAllNetworks: (showAllNetworks, formType) => {\n set({ [`${formType}ShowAllNetworks`]: showAllNetworks })\n },\n setPinnedChain: (chainId) => {\n const currentPinnedChains = get().pinnedChains\n const wasAlreadyPinned = currentPinnedChains.includes(chainId)\n set((state: ChainOrderState) => {\n const pinnedChains = [...state.pinnedChains]\n if (wasAlreadyPinned) {\n return {\n pinnedChains: pinnedChains.filter((id) => id !== chainId),\n }\n }\n pinnedChains.push(chainId)\n return {\n pinnedChains,\n }\n })\n widgetEvents.emit(WidgetEvent.ChainPinned, {\n chainId,\n pinned: !wasAlreadyPinned,\n })\n },\n }),\n {\n name: `${namePrefix || 'li.fi'}-widget-chains-order`,\n version: 4,\n partialize: (state) => ({\n chainOrder: state.chainOrder,\n pinnedChains: state.pinnedChains,\n }),\n }\n )\n )\n"],"mappings":";;;;AAeA,MAAM,oBAAoB;CACxB,MAAM,CAAC;CACP,IAAI,CAAC;AACP;AAEA,MAAa,yBAAyB,EACpC,iBAEA,OAAwB,EACtB,SACG,KAAK,SAAS;CACb,YAAY;CACZ,mBAAmB;CACnB,iBAAiB;CACjB,qBAAqB;CACrB,mBAAmB;CACnB,iBAAiB;CACjB,cAAc,CAAC;CACf,mBAAmB,UAAU,SAAS;EACpC,KAAK,UAA2B;GAC9B,MAAM,aAAa,MAAM,WAAW,MAAM,QAAQ,YAChD,SAAS,SAAS,OAAO,CAC3B;GACA,MAAM,cAAc,SAAS,QAC1B,YAAY,CAAC,WAAW,SAAS,OAAO,CAC3C;GACA,IAAI,WAAW,WAAA,KAA+B,CAAC,YAAY,QACzD,OAAO;IACL,iBAAiB;KACf,GAAG,MAAM;MACR,OAAO;IACV;IACA,YAAY;KACV,GAAG,MAAM;MACR,OAAO;IACV;GACF;GAEF,MAAM,oBAAA,IAAuC,WAAW;GACxD,KAAK,IAAI,QAAQ,GAAG,QAAQ,mBAAmB,SAC7C,WAAW,KAAK,YAAY,MAAM;GAEpC,OAAO;IACL,iBAAiB;KACf,GAAG,MAAM;MACR,OAAO;IACV;IACA,YAAY;KACV,GAAG,MAAM;MACR,OAAO;IACV;GACF;EACF,CAAC;EACD,OAAO,IAAI,EAAE,WAAW,MAAM,MAAM,GAAA,CAAmB;CACzD;CACA,WAAW,SAAS,SAAS;EAC3B,MAAM,QAAQ,IAAI;EAClB,IACE,MAAM,WAAW,MAAM,SAAS,OAAO,KACvC,CAAC,MAAM,gBAAgB,MAAM,SAAS,OAAO,GAE7C;EAEF,KAAK,UAA2B;GAC9B,MAAM,aAAa,CAAC,SAAS,GAAG,MAAM,WAAW,KAAK,EAAE,MACtD,GAAA,CAEF;GACA,OAAO,EACL,YAAY;IACV,GAAG,MAAM;KACR,OAAO;GACV,EACF;EACF,CAAC;CACH;CACA,mBAAmB,eAAe,aAAa;EAC7C,IAAI,GAAG,GAAG,SAAS,iBAAiB,cAAc,CAAC;CACrD;CACA,qBAAqB,iBAAiB,aAAa;EACjD,IAAI,GAAG,GAAG,SAAS,mBAAmB,gBAAgB,CAAC;CACzD;CACA,iBAAiB,YAAY;EAE3B,MAAM,mBADsB,IAAI,EAAE,aACW,SAAS,OAAO;EAC7D,KAAK,UAA2B;GAC9B,MAAM,eAAe,CAAC,GAAG,MAAM,YAAY;GAC3C,IAAI,kBACF,OAAO,EACL,cAAc,aAAa,QAAQ,OAAO,OAAO,OAAO,EAC1D;GAEF,aAAa,KAAK,OAAO;GACzB,OAAO,EACL,aACF;EACF,CAAC;EACD,aAAa,KAAA,eAA8B;GACzC;GACA,QAAQ,CAAC;EACX,CAAC;CACH;AACF,IACA;CACE,MAAM,GAAG,cAAc,QAAQ;CAC/B,SAAS;CACT,aAAa,WAAW;EACtB,YAAY,MAAM;EAClB,cAAc,MAAM;CACtB;AACF,CACF,CACF"}
1
+ {"version":3,"file":"createChainOrderStore.js","names":[],"sources":["../../../../src/stores/chains/createChainOrderStore.ts"],"sourcesContent":["import type { StoreApi, UseBoundStore } from 'zustand'\nimport { create } from 'zustand'\nimport { persist } from 'zustand/middleware'\nimport { widgetEvents } from '../../hooks/useWidgetEvents.js'\nimport { WidgetEvent } from '../../types/events.js'\nimport type { PersistStoreProps } from '../types.js'\nimport type { ChainOrderState } from './types.js'\n\n// (10 tiles: 9 + 1 for \"All chains\")\nexport const maxGridItemsToShow = 10\nexport const maxChainsToShow: number = maxGridItemsToShow - 1\n// If there are more than maxChainsToShow chains to show,\n// -1 tile to show a button \"+ N\" more chains\nexport const maxChainsToOrder: number = maxChainsToShow - 1\n\nconst defaultChainState = {\n from: [],\n to: [],\n}\n\nexport const createChainOrderStore = ({\n namePrefix,\n}: PersistStoreProps): UseBoundStore<StoreApi<ChainOrderState>> =>\n create<ChainOrderState>()(\n persist(\n (set, get) => ({\n chainOrder: defaultChainState,\n fromIsAllNetworks: true,\n toIsAllNetworks: true,\n fromShowAllNetworks: true,\n toShowAllNetworks: true,\n availableChains: defaultChainState,\n pinnedChains: [],\n initializeChains: (chainIds, type) => {\n set((state: ChainOrderState) => {\n const chainOrder = state.chainOrder[type].filter((chainId) =>\n chainIds.includes(chainId)\n )\n const chainsToAdd = chainIds.filter(\n (chainId) => !chainOrder.includes(chainId)\n )\n if (chainOrder.length === maxChainsToOrder || !chainsToAdd.length) {\n return {\n availableChains: {\n ...state.availableChains,\n [type]: chainIds,\n },\n chainOrder: {\n ...state.chainOrder,\n [type]: chainOrder,\n },\n }\n }\n const chainsToAddLength = maxChainsToOrder - chainOrder.length\n for (let index = 0; index < chainsToAddLength; index++) {\n chainOrder.push(chainsToAdd[index])\n }\n return {\n availableChains: {\n ...state.availableChains,\n [type]: chainIds,\n },\n chainOrder: {\n ...state.chainOrder,\n [type]: chainOrder,\n },\n }\n })\n return get().chainOrder[type].slice(0, maxChainsToOrder)\n },\n setChain: (chainId, type) => {\n const state = get()\n if (\n state.chainOrder[type].includes(chainId) ||\n !state.availableChains[type].includes(chainId)\n ) {\n return\n }\n set((state: ChainOrderState) => {\n const chainOrder = [chainId, ...state.chainOrder[type]].slice(\n 0,\n maxChainsToOrder\n )\n return {\n chainOrder: {\n ...state.chainOrder,\n [type]: chainOrder,\n },\n }\n })\n },\n setIsAllNetworks: (isAllNetworks, formType) => {\n set({ [`${formType}IsAllNetworks`]: isAllNetworks })\n },\n setShowAllNetworks: (showAllNetworks, formType) => {\n set({ [`${formType}ShowAllNetworks`]: showAllNetworks })\n },\n setPinnedChain: (chainId) => {\n const currentPinnedChains = get().pinnedChains\n const wasAlreadyPinned = currentPinnedChains.includes(chainId)\n set((state: ChainOrderState) => {\n const pinnedChains = [...state.pinnedChains]\n if (wasAlreadyPinned) {\n return {\n pinnedChains: pinnedChains.filter((id) => id !== chainId),\n }\n }\n pinnedChains.push(chainId)\n return {\n pinnedChains,\n }\n })\n widgetEvents.emit(WidgetEvent.ChainPinned, {\n chainId,\n pinned: !wasAlreadyPinned,\n })\n },\n }),\n {\n name: `${namePrefix || 'li.fi'}-widget-chains-order`,\n version: 4,\n partialize: (state) => ({\n chainOrder: state.chainOrder,\n pinnedChains: state.pinnedChains,\n }),\n }\n )\n )\n"],"mappings":";;;;AAeA,MAAM,oBAAoB;CACxB,MAAM,CAAC;CACP,IAAI,CAAC;AACP;AAEA,MAAa,yBAAyB,EACpC,iBAEA,OAAwB,CAAC,CACvB,SACG,KAAK,SAAS;CACb,YAAY;CACZ,mBAAmB;CACnB,iBAAiB;CACjB,qBAAqB;CACrB,mBAAmB;CACnB,iBAAiB;CACjB,cAAc,CAAC;CACf,mBAAmB,UAAU,SAAS;EACpC,KAAK,UAA2B;GAC9B,MAAM,aAAa,MAAM,WAAW,KAAK,CAAC,QAAQ,YAChD,SAAS,SAAS,OAAO,CAC3B;GACA,MAAM,cAAc,SAAS,QAC1B,YAAY,CAAC,WAAW,SAAS,OAAO,CAC3C;GACA,IAAI,WAAW,WAAA,KAA+B,CAAC,YAAY,QACzD,OAAO;IACL,iBAAiB;KACf,GAAG,MAAM;MACR,OAAO;IACV;IACA,YAAY;KACV,GAAG,MAAM;MACR,OAAO;IACV;GACF;GAEF,MAAM,oBAAA,IAAuC,WAAW;GACxD,KAAK,IAAI,QAAQ,GAAG,QAAQ,mBAAmB,SAC7C,WAAW,KAAK,YAAY,MAAM;GAEpC,OAAO;IACL,iBAAiB;KACf,GAAG,MAAM;MACR,OAAO;IACV;IACA,YAAY;KACV,GAAG,MAAM;MACR,OAAO;IACV;GACF;EACF,CAAC;EACD,OAAO,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,MAAM,GAAA,CAAmB;CACzD;CACA,WAAW,SAAS,SAAS;EAC3B,MAAM,QAAQ,IAAI;EAClB,IACE,MAAM,WAAW,KAAK,CAAC,SAAS,OAAO,KACvC,CAAC,MAAM,gBAAgB,KAAK,CAAC,SAAS,OAAO,GAE7C;EAEF,KAAK,UAA2B;GAC9B,MAAM,aAAa,CAAC,SAAS,GAAG,MAAM,WAAW,KAAK,CAAC,CAAC,MACtD,GAAA,CAEF;GACA,OAAO,EACL,YAAY;IACV,GAAG,MAAM;KACR,OAAO;GACV,EACF;EACF,CAAC;CACH;CACA,mBAAmB,eAAe,aAAa;EAC7C,IAAI,GAAG,GAAG,SAAS,iBAAiB,cAAc,CAAC;CACrD;CACA,qBAAqB,iBAAiB,aAAa;EACjD,IAAI,GAAG,GAAG,SAAS,mBAAmB,gBAAgB,CAAC;CACzD;CACA,iBAAiB,YAAY;EAE3B,MAAM,mBADsB,IAAI,CAAC,CAAC,aACW,SAAS,OAAO;EAC7D,KAAK,UAA2B;GAC9B,MAAM,eAAe,CAAC,GAAG,MAAM,YAAY;GAC3C,IAAI,kBACF,OAAO,EACL,cAAc,aAAa,QAAQ,OAAO,OAAO,OAAO,EAC1D;GAEF,aAAa,KAAK,OAAO;GACzB,OAAO,EACL,aACF;EACF,CAAC;EACD,aAAa,KAAA,eAA8B;GACzC;GACA,QAAQ,CAAC;EACX,CAAC;CACH;AACF,IACA;CACE,MAAM,GAAG,cAAc,QAAQ;CAC/B,SAAS;CACT,aAAa,WAAW;EACtB,YAAY,MAAM;EAClB,cAAc,MAAM;CACtB;AACF,CACF,CACF"}
@@ -61,7 +61,7 @@ const FormStoreProvider = ({ children, formRef }) => {
61
61
  }));
62
62
  }
63
63
  useFormRef(storeRef.current, formRef);
64
- return /* @__PURE__ */ jsxs(FormStoreContext.Provider, {
64
+ return /* @__PURE__ */ jsxs(FormStoreContext, {
65
65
  value: storeRef.current,
66
66
  children: [children, /* @__PURE__ */ jsx(FormUpdater, { reactiveFormValues })]
67
67
  });