@lifi/widget 0.0.0-preview-6cc63bac → 0.0.0-preview-fe8dc5e6

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 (312) 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/AppDrawer.d.ts +1 -1
  6. package/dist/esm/AppDrawer.d.ts.map +1 -1
  7. package/dist/esm/AppDrawer.js +5 -6
  8. package/dist/esm/AppDrawer.js.map +1 -1
  9. package/dist/esm/AppDrawerContext.js +2 -2
  10. package/dist/esm/AppDrawerContext.js.map +1 -1
  11. package/dist/esm/components/ActionRow/ActionRow.style.js.map +1 -1
  12. package/dist/esm/components/AmountInput/AmountInput.js.map +1 -1
  13. package/dist/esm/components/AmountInput/AmountInput.style.js.map +1 -1
  14. package/dist/esm/components/AmountInput/AmountInputEndAdornment.style.js.map +1 -1
  15. package/dist/esm/components/AmountInput/PriceFormHelperText.style.js.map +1 -1
  16. package/dist/esm/components/AppContainer.js.map +1 -1
  17. package/dist/esm/components/Avatar/AccountAvatar.js.map +1 -1
  18. package/dist/esm/components/Avatar/Avatar.style.js.map +1 -1
  19. package/dist/esm/components/Avatar/SmallAvatar.js.map +1 -1
  20. package/dist/esm/components/BottomSheet/BottomSheet.js +3 -3
  21. package/dist/esm/components/BottomSheet/BottomSheet.js.map +1 -1
  22. package/dist/esm/components/ButtonTertiary.js.map +1 -1
  23. package/dist/esm/components/Card/Card.js.map +1 -1
  24. package/dist/esm/components/Card/CardButton.style.js.map +1 -1
  25. package/dist/esm/components/Card/CardHeader.js.map +1 -1
  26. package/dist/esm/components/Card/CardIconButton.js.map +1 -1
  27. package/dist/esm/components/Card/CardLabel.js.map +1 -1
  28. package/dist/esm/components/Card/CardTitle.js.map +1 -1
  29. package/dist/esm/components/Card/InputCard.js.map +1 -1
  30. package/dist/esm/components/ChainSelect/ChainSelect.js.map +1 -1
  31. package/dist/esm/components/ChainSelect/ChainSelect.style.js.map +1 -1
  32. package/dist/esm/components/ChainSelect/useChainSelect.js.map +1 -1
  33. package/dist/esm/components/Chains/AllChainsAvatar.js.map +1 -1
  34. package/dist/esm/components/Chains/ChainList.js.map +1 -1
  35. package/dist/esm/components/Chains/ChainList.style.js.map +1 -1
  36. package/dist/esm/components/Chains/ChainsExpanded.style.js.map +1 -1
  37. package/dist/esm/components/Chains/VirtualizedChainList.js.map +1 -1
  38. package/dist/esm/components/ContextMenu.style.js.map +1 -1
  39. package/dist/esm/components/ContractComponent/NFT/NFT.style.js.map +1 -1
  40. package/dist/esm/components/Dialog/Dialog.style.js.map +1 -1
  41. package/dist/esm/components/EmptyListIndicator/EmptyListIndicator.style.js.map +1 -1
  42. package/dist/esm/components/ExecutionStatusCard/StatusIcon.js.map +1 -1
  43. package/dist/esm/components/ExecutionStatusCard/StatusIcon.style.js.map +1 -1
  44. package/dist/esm/components/ExecutionStatusCard/iconKey.js.map +1 -1
  45. package/dist/esm/components/Expansion/Expansion.style.js.map +1 -1
  46. package/dist/esm/components/Header/ActivitiesButton.style.js.map +1 -1
  47. package/dist/esm/components/Header/Header.js +7 -10
  48. package/dist/esm/components/Header/Header.js.map +1 -1
  49. package/dist/esm/components/Header/Header.style.js.map +1 -1
  50. package/dist/esm/components/Header/HeaderNavigationTabs.js +26 -0
  51. package/dist/esm/components/Header/HeaderNavigationTabs.js.map +1 -0
  52. package/dist/esm/components/Header/HeaderTabs.js +33 -0
  53. package/dist/esm/components/Header/HeaderTabs.js.map +1 -0
  54. package/dist/esm/components/Header/NavigationHeader.js +7 -5
  55. package/dist/esm/components/Header/NavigationHeader.js.map +1 -1
  56. package/dist/esm/components/Header/SettingsButton.style.js.map +1 -1
  57. package/dist/esm/components/Header/WalletMenu.style.js.map +1 -1
  58. package/dist/esm/components/IconCircle/IconCircle.style.js.map +1 -1
  59. package/dist/esm/components/IconTypography.js.map +1 -1
  60. package/dist/esm/components/Input.js.map +1 -1
  61. package/dist/esm/components/ListItem/ListItem.js.map +1 -1
  62. package/dist/esm/components/ListItem/ListItemButton.js.map +1 -1
  63. package/dist/esm/components/ListItemButton.js.map +1 -1
  64. package/dist/esm/components/ListItemText.js.map +1 -1
  65. package/dist/esm/components/Menu.js.map +1 -1
  66. package/dist/esm/components/Messages/AlertMessage.style.js.map +1 -1
  67. package/dist/esm/components/Messages/GasRefuelMessage.style.js.map +1 -1
  68. package/dist/esm/components/Messages/WarningMessages.js.map +1 -1
  69. package/dist/esm/components/PageContainer.js.map +1 -1
  70. package/dist/esm/components/PoweredBy/PoweredBy.js.map +1 -1
  71. package/dist/esm/components/PoweredBy/PoweredBy.style.js.map +1 -1
  72. package/dist/esm/components/ReverseTokensButton/ReverseTokensButton.style.js.map +1 -1
  73. package/dist/esm/components/RouteCard/RouteDetails.js.map +1 -1
  74. package/dist/esm/components/RouteCard/RouteDetails.style.js +2 -2
  75. package/dist/esm/components/RouteCard/RouteDetails.style.js.map +1 -1
  76. package/dist/esm/components/RouteCard/RouteToken.style.js.map +1 -1
  77. package/dist/esm/components/RouteCard/RouteTokens.js.map +1 -1
  78. package/dist/esm/components/RouteCard/getMatchingLabels.js.map +1 -1
  79. package/dist/esm/components/Routes/RoutesContent.js.map +1 -1
  80. package/dist/esm/components/Routes/RoutesExpanded.style.js.map +1 -1
  81. package/dist/esm/components/Search/SearchInput.style.js.map +1 -1
  82. package/dist/esm/components/Search/SearchNotFound.style.js.map +1 -1
  83. package/dist/esm/components/SelectTokenButton/SelectTokenButton.style.js.map +1 -1
  84. package/dist/esm/components/SendToWallet/SendToWalletButton.style.js.map +1 -1
  85. package/dist/esm/components/SettingsListItemButton.js.map +1 -1
  86. package/dist/esm/components/Skeleton/WidgetSkeleton.style.js.map +1 -1
  87. package/dist/esm/components/Step/StepActions.js.map +1 -1
  88. package/dist/esm/components/Step/StepActions.style.js.map +1 -1
  89. package/dist/esm/components/StepActions/SentToWalletRow.style.js.map +1 -1
  90. package/dist/esm/components/StepActions/StepActionRow.style.js.map +1 -1
  91. package/dist/esm/components/Switch.js.map +1 -1
  92. package/dist/esm/components/Tabs/NavigationTabs.js +3 -0
  93. package/dist/esm/components/Tabs/NavigationTabs.js.map +1 -1
  94. package/dist/esm/components/Tabs/Tabs.style.js.map +1 -1
  95. package/dist/esm/components/Timer/StepStatusTimer.style.js.map +1 -1
  96. package/dist/esm/components/Token/Token.style.js.map +1 -1
  97. package/dist/esm/components/TokenList/PinTokenButton.js.map +1 -1
  98. package/dist/esm/components/TokenList/TokenDetailsSheet.js +4 -4
  99. package/dist/esm/components/TokenList/TokenDetailsSheet.js.map +1 -1
  100. package/dist/esm/components/TokenList/TokenDetailsSheetContent.js +4 -4
  101. package/dist/esm/components/TokenList/TokenDetailsSheetContent.js.map +1 -1
  102. package/dist/esm/components/TokenList/TokenDetailsSheetContent.style.js.map +1 -1
  103. package/dist/esm/components/TokenList/TokenList.style.js.map +1 -1
  104. package/dist/esm/components/TokenList/TokenListItem.js +2 -2
  105. package/dist/esm/components/TokenList/TokenListItem.js.map +1 -1
  106. package/dist/esm/components/TokenList/VirtualizedTokenList.js.map +1 -1
  107. package/dist/esm/components/TokenList/useTokenSelect.js +3 -3
  108. package/dist/esm/components/TokenList/useTokenSelect.js.map +1 -1
  109. package/dist/esm/components/TokenRate/TokenRate.style.js.map +1 -1
  110. package/dist/esm/components/TransactionCard/ActiveTransactionCard.js.map +1 -1
  111. package/dist/esm/components/TransactionCard/ActiveTransactionCard.style.js.map +1 -1
  112. package/dist/esm/components/TransactionCard/TransactionCard.style.js.map +1 -1
  113. package/dist/esm/config/version.d.ts +1 -1
  114. package/dist/esm/config/version.js +1 -1
  115. package/dist/esm/config/version.js.map +1 -1
  116. package/dist/esm/hooks/timer/validate.js.map +1 -1
  117. package/dist/esm/hooks/useAccountsBalancesData.js.map +1 -1
  118. package/dist/esm/hooks/useAvailableChains.js +1 -1
  119. package/dist/esm/hooks/useChainSearch.js.map +1 -1
  120. package/dist/esm/hooks/useChains.js +1 -1
  121. package/dist/esm/hooks/useExplorer.js.map +1 -1
  122. package/dist/esm/hooks/useFilteredByTokenBalances.js +1 -1
  123. package/dist/esm/hooks/useFilteredByTokenBalances.js.map +1 -1
  124. package/dist/esm/hooks/useFromTokenSufficiency.js.map +1 -1
  125. package/dist/esm/hooks/useGasSufficiency.js.map +1 -1
  126. package/dist/esm/hooks/useLanguages.js +2 -2
  127. package/dist/esm/hooks/useLanguages.js.map +1 -1
  128. package/dist/esm/hooks/useRouteExecution.js.map +1 -1
  129. package/dist/esm/hooks/useRouteExecutionMessage.js.map +1 -1
  130. package/dist/esm/hooks/useRouteRequiredAccountConnection.js.map +1 -1
  131. package/dist/esm/hooks/useRoutes.js.map +1 -1
  132. package/dist/esm/hooks/useSwapOnly.js +2 -4
  133. package/dist/esm/hooks/useSwapOnly.js.map +1 -1
  134. package/dist/esm/hooks/useToAddressRequirements.js +2 -2
  135. package/dist/esm/hooks/useToAddressRequirements.js.map +1 -1
  136. package/dist/esm/hooks/useToken.js.map +1 -1
  137. package/dist/esm/hooks/useTokenBalance.js.map +1 -1
  138. package/dist/esm/hooks/useTokenBalances.js.map +1 -1
  139. package/dist/esm/hooks/useTokenBalancesQueries.js.map +1 -1
  140. package/dist/esm/hooks/useTokenSearch.js +1 -1
  141. package/dist/esm/hooks/useTokenSearch.js.map +1 -1
  142. package/dist/esm/hooks/useTokens.js +1 -1
  143. package/dist/esm/hooks/useTokens.js.map +1 -1
  144. package/dist/esm/hooks/useTools.js +1 -1
  145. package/dist/esm/hooks/useTransactionDetails.js.map +1 -1
  146. package/dist/esm/hooks/useTransactionHistory.js.map +1 -1
  147. package/dist/esm/hooks/useTransactionList.js.map +1 -1
  148. package/dist/esm/i18n/en.json +3 -0
  149. package/dist/esm/index.d.ts +2 -2
  150. package/dist/esm/pages/ActivitiesPage/ActivitiesPage.js.map +1 -1
  151. package/dist/esm/pages/MainPage/ReviewButton.js +2 -2
  152. package/dist/esm/pages/MainPage/ReviewButton.js.map +1 -1
  153. package/dist/esm/pages/RoutesPage/RoutesPage.js.map +1 -1
  154. package/dist/esm/pages/RoutesPage/RoutesPage.style.js.map +1 -1
  155. package/dist/esm/pages/SelectEnabledToolsPage.js.map +1 -1
  156. package/dist/esm/pages/SendToWallet/BookmarkAddressSheet.js +3 -3
  157. package/dist/esm/pages/SendToWallet/BookmarkAddressSheet.js.map +1 -1
  158. package/dist/esm/pages/SendToWallet/ConfirmAddressSheet.js +3 -3
  159. package/dist/esm/pages/SendToWallet/ConfirmAddressSheet.js.map +1 -1
  160. package/dist/esm/pages/SendToWallet/SendToWalletPage.js.map +1 -1
  161. package/dist/esm/pages/SendToWallet/SendToWalletPage.style.js.map +1 -1
  162. package/dist/esm/pages/SettingsPage/BridgeAndExchangeSettings.js.map +1 -1
  163. package/dist/esm/pages/SettingsPage/GasPriceSettings.js +1 -1
  164. package/dist/esm/pages/SettingsPage/ResetSettingsButton.style.js.map +1 -1
  165. package/dist/esm/pages/SettingsPage/RoutePrioritySettings.js +1 -1
  166. package/dist/esm/pages/SettingsPage/SettingsCard/SettingCard.style.js.map +1 -1
  167. package/dist/esm/pages/SettingsPage/SettingsCard/SettingCardExpandable.js +3 -3
  168. package/dist/esm/pages/SettingsPage/SettingsCard/SettingCardExpandable.js.map +1 -1
  169. package/dist/esm/pages/SettingsPage/SettingsCard/SettingsAccordian.js +3 -3
  170. package/dist/esm/pages/SettingsPage/SettingsCard/SettingsAccordian.js.map +1 -1
  171. package/dist/esm/pages/SettingsPage/SlippageSettings/SlippageSettings.style.js.map +1 -1
  172. package/dist/esm/pages/SettingsPage/ThemeSettings.js.map +1 -1
  173. package/dist/esm/pages/TransactionDetailsPage/ContactSupportButton.style.js.map +1 -1
  174. package/dist/esm/pages/TransactionDetailsPage/TransactionDetailsPage.js.map +1 -1
  175. package/dist/esm/pages/TransactionDetailsPage/TransactionDetailsSkeleton.js.map +1 -1
  176. package/dist/esm/pages/TransactionPage/ConfirmToAddressSheet.js +3 -3
  177. package/dist/esm/pages/TransactionPage/ConfirmToAddressSheet.js.map +1 -1
  178. package/dist/esm/pages/TransactionPage/ExchangeRateBottomSheet.js +16 -15
  179. package/dist/esm/pages/TransactionPage/ExchangeRateBottomSheet.js.map +1 -1
  180. package/dist/esm/pages/TransactionPage/ExchangeRateBottomSheet.style.js.map +1 -1
  181. package/dist/esm/pages/TransactionPage/RouteTracker.js.map +1 -1
  182. package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.js +3 -3
  183. package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.js.map +1 -1
  184. package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.style.js.map +1 -1
  185. package/dist/esm/pages/TransactionPage/TransactionExecutionContent.js +27 -31
  186. package/dist/esm/pages/TransactionPage/TransactionExecutionContent.js.map +1 -1
  187. package/dist/esm/pages/TransactionPage/utils.js.map +1 -1
  188. package/dist/esm/providers/I18nProvider/I18nProvider.js.map +1 -1
  189. package/dist/esm/providers/I18nProvider/i18n.js.map +1 -1
  190. package/dist/esm/providers/QueryClientProvider.js +2 -2
  191. package/dist/esm/providers/QueryClientProvider.js.map +1 -1
  192. package/dist/esm/providers/SDKClientProvider.js +26 -27
  193. package/dist/esm/providers/SDKClientProvider.js.map +1 -1
  194. package/dist/esm/providers/WidgetProvider/WidgetProvider.js +25 -27
  195. package/dist/esm/providers/WidgetProvider/WidgetProvider.js.map +1 -1
  196. package/dist/esm/stores/StoreProvider.js +3 -4
  197. package/dist/esm/stores/StoreProvider.js.map +1 -1
  198. package/dist/esm/stores/bookmarks/BookmarkStore.js +3 -3
  199. package/dist/esm/stores/bookmarks/BookmarkStore.js.map +1 -1
  200. package/dist/esm/stores/bookmarks/createBookmarkStore.js.map +1 -1
  201. package/dist/esm/stores/chains/ChainOrderStore.js +4 -4
  202. package/dist/esm/stores/chains/ChainOrderStore.js.map +1 -1
  203. package/dist/esm/stores/chains/createChainOrderStore.js.map +1 -1
  204. package/dist/esm/stores/form/FormStore.js +1 -1
  205. package/dist/esm/stores/form/FormStore.js.map +1 -1
  206. package/dist/esm/stores/form/URLSearchParamsBuilder.js.map +1 -1
  207. package/dist/esm/stores/form/createFormStore.js.map +1 -1
  208. package/dist/esm/stores/form/getDefaultValuesFromQueryString.js.map +1 -1
  209. package/dist/esm/stores/form/useFieldActions.js.map +1 -1
  210. package/dist/esm/stores/form/useFieldValues.js.map +1 -1
  211. package/dist/esm/stores/form/useFormRef.js.map +1 -1
  212. package/dist/esm/stores/form/useFormStore.js +2 -2
  213. package/dist/esm/stores/form/useFormStore.js.map +1 -1
  214. package/dist/esm/stores/header/useHeaderStore.js +3 -3
  215. package/dist/esm/stores/header/useHeaderStore.js.map +1 -1
  216. package/dist/esm/stores/inputMode/useInputModeStore.js.map +1 -1
  217. package/dist/esm/stores/navigationTabs/useNavigationTabLabel.js +22 -0
  218. package/dist/esm/stores/navigationTabs/useNavigationTabLabel.js.map +1 -0
  219. package/dist/esm/stores/navigationTabs/useNavigationTabsStore.js +62 -0
  220. package/dist/esm/stores/navigationTabs/useNavigationTabsStore.js.map +1 -0
  221. package/dist/esm/stores/navigationTabs/utils.js +92 -0
  222. package/dist/esm/stores/navigationTabs/utils.js.map +1 -0
  223. package/dist/esm/stores/pinnedTokens/PinnedTokensStore.js +3 -3
  224. package/dist/esm/stores/pinnedTokens/PinnedTokensStore.js.map +1 -1
  225. package/dist/esm/stores/pinnedTokens/createPinnedTokensStore.js.map +1 -1
  226. package/dist/esm/stores/routes/RouteExecutionStore.js +3 -3
  227. package/dist/esm/stores/routes/RouteExecutionStore.js.map +1 -1
  228. package/dist/esm/stores/routes/createRouteExecutionStore.js.map +1 -1
  229. package/dist/esm/stores/routes/useIntermediateRoutesStore.js.map +1 -1
  230. package/dist/esm/stores/routes/useRouteExecutionIndicator.js.map +1 -1
  231. package/dist/esm/stores/routes/utils.js.map +1 -1
  232. package/dist/esm/stores/settings/SettingsStore.js +3 -3
  233. package/dist/esm/stores/settings/SettingsStore.js.map +1 -1
  234. package/dist/esm/stores/settings/createSettingsStore.js +122 -96
  235. package/dist/esm/stores/settings/createSettingsStore.js.map +1 -1
  236. package/dist/esm/stores/settings/types.d.ts +0 -2
  237. package/dist/esm/stores/settings/types.d.ts.map +1 -1
  238. package/dist/esm/stores/settings/types.js.map +1 -1
  239. package/dist/esm/stores/settings/useSettingsActions.js.map +1 -1
  240. package/dist/esm/themes/createTheme.js.map +1 -1
  241. package/dist/esm/themes/utils.js.map +1 -1
  242. package/dist/esm/types/widget.d.ts +19 -2
  243. package/dist/esm/types/widget.d.ts.map +1 -1
  244. package/dist/esm/types/widget.js.map +1 -1
  245. package/dist/esm/utils/compactNumberFormatter.js.map +1 -1
  246. package/dist/esm/utils/converters.js.map +1 -1
  247. package/dist/esm/utils/deepEqual.js.map +1 -1
  248. package/dist/esm/utils/fees.js.map +1 -1
  249. package/dist/esm/utils/format.js.map +1 -1
  250. package/dist/esm/utils/getActionMessage.js.map +1 -1
  251. package/dist/esm/utils/getErrorMessage.js.map +1 -1
  252. package/dist/esm/utils/item.js.map +1 -1
  253. package/dist/esm/utils/{variant.js → mode.js} +2 -2
  254. package/dist/esm/utils/mode.js.map +1 -0
  255. package/dist/esm/utils/prepareActions.js +1 -1
  256. package/dist/esm/utils/prepareActions.js.map +1 -1
  257. package/dist/esm/utils/timer.js.map +1 -1
  258. package/dist/esm/utils/token.js +1 -1
  259. package/dist/esm/utils/token.js.map +1 -1
  260. package/dist/esm/utils/tokenList.js.map +1 -1
  261. package/package.json +11 -11
  262. package/src/App.tsx +7 -7
  263. package/src/AppDrawer.tsx +77 -78
  264. package/src/AppDrawerContext.ts +2 -2
  265. package/src/components/BottomSheet/BottomSheet.tsx +56 -52
  266. package/src/components/Header/Header.tsx +20 -18
  267. package/src/components/Header/HeaderNavigationTabs.tsx +25 -0
  268. package/src/components/Header/HeaderTabs.tsx +48 -0
  269. package/src/components/Header/NavigationHeader.tsx +11 -8
  270. package/src/components/Tabs/NavigationTabs.tsx +3 -0
  271. package/src/components/TokenList/TokenDetailsSheet.tsx +9 -7
  272. package/src/components/TokenList/TokenDetailsSheetContent.tsx +176 -177
  273. package/src/components/TokenList/useTokenSelect.ts +2 -2
  274. package/src/config/version.ts +1 -1
  275. package/src/hooks/useSwapOnly.ts +2 -5
  276. package/src/hooks/useToAddressRequirements.ts +2 -2
  277. package/src/pages/MainPage/ReviewButton.tsx +2 -2
  278. package/src/pages/SendToWallet/BookmarkAddressSheet.tsx +176 -185
  279. package/src/pages/SendToWallet/ConfirmAddressSheet.tsx +9 -6
  280. package/src/pages/SettingsPage/SettingsCard/SettingCardExpandable.tsx +58 -65
  281. package/src/pages/SettingsPage/SettingsCard/SettingsAccordian.tsx +4 -4
  282. package/src/pages/TransactionPage/ConfirmToAddressSheet.tsx +9 -6
  283. package/src/pages/TransactionPage/ExchangeRateBottomSheet.tsx +53 -58
  284. package/src/pages/TransactionPage/TokenValueBottomSheet.tsx +24 -21
  285. package/src/pages/TransactionPage/TransactionExecutionContent.tsx +8 -6
  286. package/src/providers/QueryClientProvider.tsx +2 -2
  287. package/src/providers/SDKClientProvider.tsx +3 -7
  288. package/src/providers/WidgetProvider/WidgetProvider.tsx +6 -7
  289. package/src/stores/StoreProvider.tsx +3 -10
  290. package/src/stores/bookmarks/BookmarkStore.tsx +4 -4
  291. package/src/stores/chains/ChainOrderStore.tsx +4 -4
  292. package/src/stores/form/FormStore.tsx +2 -2
  293. package/src/stores/form/useFormStore.ts +2 -2
  294. package/src/stores/header/useHeaderStore.tsx +3 -5
  295. package/src/stores/navigationTabs/types.ts +27 -0
  296. package/src/stores/navigationTabs/useNavigationTabLabel.ts +28 -0
  297. package/src/stores/navigationTabs/useNavigationTabsStore.tsx +108 -0
  298. package/src/stores/navigationTabs/utils.ts +134 -0
  299. package/src/stores/pinnedTokens/PinnedTokensStore.tsx +4 -4
  300. package/src/stores/routes/RouteExecutionStore.tsx +4 -4
  301. package/src/stores/settings/SettingsStore.tsx +4 -4
  302. package/src/stores/settings/createSettingsStore.ts +48 -12
  303. package/src/stores/settings/types.ts +1 -16
  304. package/src/types/widget.ts +31 -1
  305. package/dist/esm/components/Header/SplitNavigationTabs.js +0 -33
  306. package/dist/esm/components/Header/SplitNavigationTabs.js.map +0 -1
  307. package/dist/esm/stores/settings/useSplitModeStore.js +0 -36
  308. package/dist/esm/stores/settings/useSplitModeStore.js.map +0 -1
  309. package/dist/esm/utils/variant.js.map +0 -1
  310. package/src/components/Header/SplitNavigationTabs.tsx +0 -32
  311. package/src/stores/settings/useSplitModeStore.tsx +0 -58
  312. /package/src/utils/{variant.ts → mode.ts} +0 -0
@@ -5,12 +5,12 @@ import { BottomSheet } from "../../components/BottomSheet/BottomSheet.js";
5
5
  import { useSetContentHeight } from "../../hooks/useSetContentHeight.js";
6
6
  import { ButtonRow, CenterContainer, ContentContainer, DetailLabel, DetailRow, DetailValue, WarningMessage, WarningTitle } from "./TokenValueBottomSheet.style.js";
7
7
  import { calculateValueLossPercentage } from "./utils.js";
8
- import { forwardRef, useRef, useState } from "react";
8
+ import { useRef, useState } from "react";
9
9
  import { Button, Checkbox, FormControlLabel } from "@mui/material";
10
10
  import { jsx, jsxs } from "react/jsx-runtime";
11
11
  import { useTranslation } from "react-i18next";
12
12
  //#region src/pages/TransactionPage/TokenValueBottomSheet.tsx
13
- const TokenValueBottomSheet = forwardRef(({ route, onContinue, onCancel }, ref) => {
13
+ const TokenValueBottomSheet = ({ route, onContinue, onCancel, ref }) => {
14
14
  const handleCancel = () => {
15
15
  ref.current?.close();
16
16
  onCancel?.();
@@ -24,7 +24,7 @@ const TokenValueBottomSheet = forwardRef(({ route, onContinue, onCancel }, ref)
24
24
  onCancel: handleCancel
25
25
  })
26
26
  });
27
- });
27
+ };
28
28
  const TokenValueBottomSheetContent = ({ route, onCancel, onContinue }) => {
29
29
  const [accepted, setAccepted] = useState(false);
30
30
  const { t } = useTranslation();
@@ -1 +1 @@
1
- {"version":3,"file":"TokenValueBottomSheet.js","names":[],"sources":["../../../../src/pages/TransactionPage/TokenValueBottomSheet.tsx"],"sourcesContent":["import type { Route } from '@lifi/sdk'\nimport { Button, Checkbox, FormControlLabel } from '@mui/material'\nimport type { ForwardRefExoticComponent, RefAttributes, RefObject } from 'react'\nimport { forwardRef, useRef, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { BottomSheet } from '../../components/BottomSheet/BottomSheet.js'\nimport type { BottomSheetBase } from '../../components/BottomSheet/types.js'\nimport { FeeBreakdownTooltip } from '../../components/FeeBreakdownTooltip.js'\nimport { IconCircle } from '../../components/IconCircle/IconCircle.js'\nimport { useSetContentHeight } from '../../hooks/useSetContentHeight.js'\nimport { getAccumulatedFeeCostsBreakdown } from '../../utils/fees.js'\nimport {\n ButtonRow,\n CenterContainer,\n ContentContainer,\n DetailLabel,\n DetailRow,\n DetailValue,\n WarningMessage,\n WarningTitle,\n} from './TokenValueBottomSheet.style.js'\nimport { calculateValueLossPercentage } from './utils.js'\n\ninterface TokenValueBottomSheetProps {\n route: Route\n onContinue(): void\n onCancel?(): void\n}\n\nexport const TokenValueBottomSheet: ForwardRefExoticComponent<\n TokenValueBottomSheetProps & RefAttributes<BottomSheetBase>\n> = forwardRef<BottomSheetBase, TokenValueBottomSheetProps>(\n ({ route, onContinue, onCancel }, ref) => {\n const handleCancel = () => {\n ;(ref as RefObject<BottomSheetBase>).current?.close()\n onCancel?.()\n }\n\n return (\n <BottomSheet ref={ref} onClose={onCancel}>\n <TokenValueBottomSheetContent\n route={route}\n onContinue={onContinue}\n onCancel={handleCancel}\n />\n </BottomSheet>\n )\n }\n)\n\nconst TokenValueBottomSheetContent: React.FC<TokenValueBottomSheetProps> = ({\n route,\n onCancel,\n onContinue,\n}) => {\n const [accepted, setAccepted] = useState(false)\n const { t } = useTranslation()\n const ref = useRef<HTMLElement>(null)\n useSetContentHeight(ref)\n const { gasCosts, feeCosts, gasCostUSD, feeCostUSD } =\n getAccumulatedFeeCostsBreakdown(route)\n const fromAmountUSD = Number.parseFloat(route.fromAmountUSD)\n const toAmountUSD = Number.parseFloat(route.toAmountUSD)\n\n return (\n <ContentContainer ref={ref}>\n <CenterContainer>\n <IconCircle status=\"warning\" sx={{ mb: 2.5 }} />\n <WarningTitle>{t('warning.title.highValueLoss')}</WarningTitle>\n </CenterContainer>\n <WarningMessage>{t('warning.message.highValueLoss')}</WarningMessage>\n <DetailRow>\n <DetailLabel>{t('main.sending')}</DetailLabel>\n <DetailValue>\n {t('format.currency', { value: route.fromAmountUSD })}\n </DetailValue>\n </DetailRow>\n <DetailRow>\n <DetailLabel>{t('main.fees.network')}</DetailLabel>\n <FeeBreakdownTooltip gasCosts={gasCosts} gasless={!gasCostUSD}>\n <DetailValue>\n {!gasCostUSD\n ? t('main.fees.free')\n : t('format.currency', { value: gasCostUSD })}\n </DetailValue>\n </FeeBreakdownTooltip>\n </DetailRow>\n {feeCostUSD ? (\n <DetailRow>\n <DetailLabel>{t('main.fees.provider')}</DetailLabel>\n <FeeBreakdownTooltip feeCosts={feeCosts}>\n <DetailValue>\n {t('format.currency', { value: feeCostUSD })}\n </DetailValue>\n </FeeBreakdownTooltip>\n </DetailRow>\n ) : null}\n <DetailRow>\n <DetailLabel>{t('main.receiving')}</DetailLabel>\n <DetailValue>\n {t('format.currency', { value: route.toAmountUSD })}\n </DetailValue>\n </DetailRow>\n <DetailRow>\n <DetailLabel>{t('main.valueLoss')}</DetailLabel>\n <DetailValue>\n {calculateValueLossPercentage(\n fromAmountUSD,\n toAmountUSD,\n gasCostUSD,\n feeCostUSD\n )}\n %\n </DetailValue>\n </DetailRow>\n <FormControlLabel\n control={\n <Checkbox\n checked={accepted}\n onChange={(_, checked) => setAccepted(checked)}\n />\n }\n label={t('warning.checkbox.highValueLoss')}\n sx={{ mt: 1 }}\n />\n <ButtonRow>\n <Button variant=\"text\" onClick={onCancel} fullWidth>\n {t('button.cancel')}\n </Button>\n <Button\n variant=\"contained\"\n onClick={onContinue}\n disabled={!accepted}\n fullWidth\n >\n {t('button.continue')}\n </Button>\n </ButtonRow>\n </ContentContainer>\n )\n}\n"],"mappings":";;;;;;;;;;;;AA6BA,MAAa,wBAET,YACD,EAAE,OAAO,YAAY,YAAY,QAAQ;CACxC,MAAM,qBAAqB;EACxB,IAAoC,SAAS,MAAM;EACpD,WAAW;CACb;CAEA,OACE,oBAAC,aAAD;EAAkB;EAAK,SAAS;YAC9B,oBAAC,8BAAD;GACS;GACK;GACZ,UAAU;EACX,CAAA;CACU,CAAA;AAEjB,CACF;AAEA,MAAM,gCAAsE,EAC1E,OACA,UACA,iBACI;CACJ,MAAM,CAAC,UAAU,eAAe,SAAS,KAAK;CAC9C,MAAM,EAAE,MAAM,eAAe;CAC7B,MAAM,MAAM,OAAoB,IAAI;CACpC,oBAAoB,GAAG;CACvB,MAAM,EAAE,UAAU,UAAU,YAAY,eACtC,gCAAgC,KAAK;CACvC,MAAM,gBAAgB,OAAO,WAAW,MAAM,aAAa;CAC3D,MAAM,cAAc,OAAO,WAAW,MAAM,WAAW;CAEvD,OACE,qBAAC,kBAAD;EAAuB;YAAvB;GACE,qBAAC,iBAAD,EAAA,UAAA,CACE,oBAAC,YAAD;IAAY,QAAO;IAAU,IAAI,EAAE,IAAI,IAAI;GAAI,CAAA,GAC/C,oBAAC,cAAD,EAAA,UAAe,EAAE,6BAA6B,EAAgB,CAAA,CAC/C,EAAA,CAAA;GACjB,oBAAC,gBAAD,EAAA,UAAiB,EAAE,+BAA+B,EAAkB,CAAA;GACpE,qBAAC,WAAD,EAAA,UAAA,CACE,oBAAC,aAAD,EAAA,UAAc,EAAE,cAAc,EAAe,CAAA,GAC7C,oBAAC,aAAD,EAAA,UACG,EAAE,mBAAmB,EAAE,OAAO,MAAM,cAAc,CAAC,EACzC,CAAA,CACJ,EAAA,CAAA;GACX,qBAAC,WAAD,EAAA,UAAA,CACE,oBAAC,aAAD,EAAA,UAAc,EAAE,mBAAmB,EAAe,CAAA,GAClD,oBAAC,qBAAD;IAA+B;IAAU,SAAS,CAAC;cACjD,oBAAC,aAAD,EAAA,UACG,CAAC,aACE,EAAE,gBAAgB,IAClB,EAAE,mBAAmB,EAAE,OAAO,WAAW,CAAC,EACnC,CAAA;GACM,CAAA,CACZ,EAAA,CAAA;GACV,aACC,qBAAC,WAAD,EAAA,UAAA,CACE,oBAAC,aAAD,EAAA,UAAc,EAAE,oBAAoB,EAAe,CAAA,GACnD,oBAAC,qBAAD;IAA+B;cAC7B,oBAAC,aAAD,EAAA,UACG,EAAE,mBAAmB,EAAE,OAAO,WAAW,CAAC,EAChC,CAAA;GACM,CAAA,CACZ,EAAA,CAAA,IACT;GACJ,qBAAC,WAAD,EAAA,UAAA,CACE,oBAAC,aAAD,EAAA,UAAc,EAAE,gBAAgB,EAAe,CAAA,GAC/C,oBAAC,aAAD,EAAA,UACG,EAAE,mBAAmB,EAAE,OAAO,MAAM,YAAY,CAAC,EACvC,CAAA,CACJ,EAAA,CAAA;GACX,qBAAC,WAAD,EAAA,UAAA,CACE,oBAAC,aAAD,EAAA,UAAc,EAAE,gBAAgB,EAAe,CAAA,GAC/C,qBAAC,aAAD,EAAA,UAAA,CACG,6BACC,eACA,aACA,YACA,UACF,GAAE,GAES,EAAA,CAAA,CACJ,EAAA,CAAA;GACX,oBAAC,kBAAD;IACE,SACE,oBAAC,UAAD;KACE,SAAS;KACT,WAAW,GAAG,YAAY,YAAY,OAAO;IAC9C,CAAA;IAEH,OAAO,EAAE,gCAAgC;IACzC,IAAI,EAAE,IAAI,EAAE;GACb,CAAA;GACD,qBAAC,WAAD,EAAA,UAAA,CACE,oBAAC,QAAD;IAAQ,SAAQ;IAAO,SAAS;IAAU,WAAA;cACvC,EAAE,eAAe;GACZ,CAAA,GACR,oBAAC,QAAD;IACE,SAAQ;IACR,SAAS;IACT,UAAU,CAAC;IACX,WAAA;cAEC,EAAE,iBAAiB;GACd,CAAA,CACC,EAAA,CAAA;EACK;;AAEtB"}
1
+ {"version":3,"file":"TokenValueBottomSheet.js","names":[],"sources":["../../../../src/pages/TransactionPage/TokenValueBottomSheet.tsx"],"sourcesContent":["import type { Route } from '@lifi/sdk'\nimport { Button, Checkbox, FormControlLabel } from '@mui/material'\nimport type { JSX, Ref, RefObject } from 'react'\nimport { useRef, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { BottomSheet } from '../../components/BottomSheet/BottomSheet.js'\nimport type { BottomSheetBase } from '../../components/BottomSheet/types.js'\nimport { FeeBreakdownTooltip } from '../../components/FeeBreakdownTooltip.js'\nimport { IconCircle } from '../../components/IconCircle/IconCircle.js'\nimport { useSetContentHeight } from '../../hooks/useSetContentHeight.js'\nimport { getAccumulatedFeeCostsBreakdown } from '../../utils/fees.js'\nimport {\n ButtonRow,\n CenterContainer,\n ContentContainer,\n DetailLabel,\n DetailRow,\n DetailValue,\n WarningMessage,\n WarningTitle,\n} from './TokenValueBottomSheet.style.js'\nimport { calculateValueLossPercentage } from './utils.js'\n\ninterface TokenValueBottomSheetProps {\n route: Route\n onContinue(): void\n onCancel?(): void\n}\n\nexport const TokenValueBottomSheet = ({\n route,\n onContinue,\n onCancel,\n ref,\n}: TokenValueBottomSheetProps & {\n ref?: Ref<BottomSheetBase>\n}): JSX.Element => {\n const handleCancel = () => {\n ;(ref as RefObject<BottomSheetBase>).current?.close()\n onCancel?.()\n }\n\n return (\n <BottomSheet ref={ref} onClose={onCancel}>\n <TokenValueBottomSheetContent\n route={route}\n onContinue={onContinue}\n onCancel={handleCancel}\n />\n </BottomSheet>\n )\n}\n\nconst TokenValueBottomSheetContent: React.FC<TokenValueBottomSheetProps> = ({\n route,\n onCancel,\n onContinue,\n}) => {\n const [accepted, setAccepted] = useState(false)\n const { t } = useTranslation()\n const ref = useRef<HTMLElement>(null)\n useSetContentHeight(ref)\n const { gasCosts, feeCosts, gasCostUSD, feeCostUSD } =\n getAccumulatedFeeCostsBreakdown(route)\n const fromAmountUSD = Number.parseFloat(route.fromAmountUSD)\n const toAmountUSD = Number.parseFloat(route.toAmountUSD)\n\n return (\n <ContentContainer ref={ref}>\n <CenterContainer>\n <IconCircle status=\"warning\" sx={{ mb: 2.5 }} />\n <WarningTitle>{t('warning.title.highValueLoss')}</WarningTitle>\n </CenterContainer>\n <WarningMessage>{t('warning.message.highValueLoss')}</WarningMessage>\n <DetailRow>\n <DetailLabel>{t('main.sending')}</DetailLabel>\n <DetailValue>\n {t('format.currency', { value: route.fromAmountUSD })}\n </DetailValue>\n </DetailRow>\n <DetailRow>\n <DetailLabel>{t('main.fees.network')}</DetailLabel>\n <FeeBreakdownTooltip gasCosts={gasCosts} gasless={!gasCostUSD}>\n <DetailValue>\n {!gasCostUSD\n ? t('main.fees.free')\n : t('format.currency', { value: gasCostUSD })}\n </DetailValue>\n </FeeBreakdownTooltip>\n </DetailRow>\n {feeCostUSD ? (\n <DetailRow>\n <DetailLabel>{t('main.fees.provider')}</DetailLabel>\n <FeeBreakdownTooltip feeCosts={feeCosts}>\n <DetailValue>\n {t('format.currency', { value: feeCostUSD })}\n </DetailValue>\n </FeeBreakdownTooltip>\n </DetailRow>\n ) : null}\n <DetailRow>\n <DetailLabel>{t('main.receiving')}</DetailLabel>\n <DetailValue>\n {t('format.currency', { value: route.toAmountUSD })}\n </DetailValue>\n </DetailRow>\n <DetailRow>\n <DetailLabel>{t('main.valueLoss')}</DetailLabel>\n <DetailValue>\n {calculateValueLossPercentage(\n fromAmountUSD,\n toAmountUSD,\n gasCostUSD,\n feeCostUSD\n )}\n %\n </DetailValue>\n </DetailRow>\n <FormControlLabel\n control={\n <Checkbox\n checked={accepted}\n onChange={(_, checked) => setAccepted(checked)}\n />\n }\n label={t('warning.checkbox.highValueLoss')}\n sx={{ mt: 1 }}\n />\n <ButtonRow>\n <Button variant=\"text\" onClick={onCancel} fullWidth>\n {t('button.cancel')}\n </Button>\n <Button\n variant=\"contained\"\n onClick={onContinue}\n disabled={!accepted}\n fullWidth\n >\n {t('button.continue')}\n </Button>\n </ButtonRow>\n </ContentContainer>\n )\n}\n"],"mappings":";;;;;;;;;;;;AA6BA,MAAa,yBAAyB,EACpC,OACA,YACA,UACA,UAGiB;CACjB,MAAM,qBAAqB;EACxB,IAAoC,SAAS,MAAM;EACpD,WAAW;CACb;CAEA,OACE,oBAAC,aAAD;EAAkB;EAAK,SAAS;YAC9B,oBAAC,8BAAD;GACS;GACK;GACZ,UAAU;EACX,CAAA;CACU,CAAA;AAEjB;AAEA,MAAM,gCAAsE,EAC1E,OACA,UACA,iBACI;CACJ,MAAM,CAAC,UAAU,eAAe,SAAS,KAAK;CAC9C,MAAM,EAAE,MAAM,eAAe;CAC7B,MAAM,MAAM,OAAoB,IAAI;CACpC,oBAAoB,GAAG;CACvB,MAAM,EAAE,UAAU,UAAU,YAAY,eACtC,gCAAgC,KAAK;CACvC,MAAM,gBAAgB,OAAO,WAAW,MAAM,aAAa;CAC3D,MAAM,cAAc,OAAO,WAAW,MAAM,WAAW;CAEvD,OACE,qBAAC,kBAAD;EAAuB;YAAvB;GACE,qBAAC,iBAAD,EAAA,UAAA,CACE,oBAAC,YAAD;IAAY,QAAO;IAAU,IAAI,EAAE,IAAI,IAAI;GAAI,CAAA,GAC/C,oBAAC,cAAD,EAAA,UAAe,EAAE,6BAA6B,EAAgB,CAAA,CAC/C,EAAA,CAAA;GACjB,oBAAC,gBAAD,EAAA,UAAiB,EAAE,+BAA+B,EAAkB,CAAA;GACpE,qBAAC,WAAD,EAAA,UAAA,CACE,oBAAC,aAAD,EAAA,UAAc,EAAE,cAAc,EAAe,CAAA,GAC7C,oBAAC,aAAD,EAAA,UACG,EAAE,mBAAmB,EAAE,OAAO,MAAM,cAAc,CAAC,EACzC,CAAA,CACJ,EAAA,CAAA;GACX,qBAAC,WAAD,EAAA,UAAA,CACE,oBAAC,aAAD,EAAA,UAAc,EAAE,mBAAmB,EAAe,CAAA,GAClD,oBAAC,qBAAD;IAA+B;IAAU,SAAS,CAAC;cACjD,oBAAC,aAAD,EAAA,UACG,CAAC,aACE,EAAE,gBAAgB,IAClB,EAAE,mBAAmB,EAAE,OAAO,WAAW,CAAC,EACnC,CAAA;GACM,CAAA,CACZ,EAAA,CAAA;GACV,aACC,qBAAC,WAAD,EAAA,UAAA,CACE,oBAAC,aAAD,EAAA,UAAc,EAAE,oBAAoB,EAAe,CAAA,GACnD,oBAAC,qBAAD;IAA+B;cAC7B,oBAAC,aAAD,EAAA,UACG,EAAE,mBAAmB,EAAE,OAAO,WAAW,CAAC,EAChC,CAAA;GACM,CAAA,CACZ,EAAA,CAAA,IACT;GACJ,qBAAC,WAAD,EAAA,UAAA,CACE,oBAAC,aAAD,EAAA,UAAc,EAAE,gBAAgB,EAAe,CAAA,GAC/C,oBAAC,aAAD,EAAA,UACG,EAAE,mBAAmB,EAAE,OAAO,MAAM,YAAY,CAAC,EACvC,CAAA,CACJ,EAAA,CAAA;GACX,qBAAC,WAAD,EAAA,UAAA,CACE,oBAAC,aAAD,EAAA,UAAc,EAAE,gBAAgB,EAAe,CAAA,GAC/C,qBAAC,aAAD,EAAA,UAAA,CACG,6BACC,eACA,aACA,YACA,UACF,GAAE,GAES,EAAA,CAAA,CACJ,EAAA,CAAA;GACX,oBAAC,kBAAD;IACE,SACE,oBAAC,UAAD;KACE,SAAS;KACT,WAAW,GAAG,YAAY,YAAY,OAAO;IAC9C,CAAA;IAEH,OAAO,EAAE,gCAAgC;IACzC,IAAI,EAAE,IAAI,EAAE;GACb,CAAA;GACD,qBAAC,WAAD,EAAA,UAAA,CACE,oBAAC,QAAD;IAAQ,SAAQ;IAAO,SAAS;IAAU,WAAA;cACvC,EAAE,eAAe;GACZ,CAAA,GACR,oBAAC,QAAD;IACE,SAAQ;IACR,SAAS;IACT,UAAU,CAAC;IACX,WAAA;cAEC,EAAE,iBAAiB;GACd,CAAA,CACC,EAAA,CAAA;EACK;;AAEtB"}
@@ -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"}
@@ -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"}
@@ -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 +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,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,39 +1,38 @@
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
- const client = useMemo(() => {
12
- return createClient({
13
- ...sdkConfig,
11
+ return /* @__PURE__ */ jsx(SDKClientContext, {
12
+ value: useMemo(() => {
13
+ return createClient({
14
+ ...sdkConfig,
15
+ apiKey,
16
+ integrator: integrator ?? window?.location.hostname,
17
+ routeOptions: {
18
+ fee: feeConfig?.fee,
19
+ referrer,
20
+ order: routePriority,
21
+ slippage,
22
+ ...sdkConfig?.routeOptions
23
+ },
24
+ disableVersionCheck: true,
25
+ widgetVersion: version
26
+ });
27
+ }, [
28
+ sdkConfig,
14
29
  apiKey,
15
- integrator: integrator ?? window?.location.hostname,
16
- routeOptions: {
17
- fee: feeConfig?.fee,
18
- referrer,
19
- order: routePriority,
20
- slippage,
21
- ...sdkConfig?.routeOptions
22
- },
23
- disableVersionCheck: true,
24
- widgetVersion: version
25
- });
26
- }, [
27
- sdkConfig,
28
- apiKey,
29
- integrator,
30
- feeConfig,
31
- referrer,
32
- routePriority,
33
- slippage
34
- ]);
35
- return /* @__PURE__ */ jsx(SDKClientContext.Provider, {
36
- value: client,
30
+ integrator,
31
+ feeConfig,
32
+ referrer,
33
+ routePriority,
34
+ slippage
35
+ ]),
37
36
  children
38
37
  });
39
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;CA2BpB,OAAO,oBAAC,kBAAD;EAAkB,OAzBC,cAAc;GACtC,OAAO,aAAa;IAClB,GAAG;IACH;IACA,YAAY,cAAc,QAAQ,SAAS;IAC3C,cAAc;KACZ,KAAK,WAAW;KAChB;KACA,OAAO;KACP;KACA,GAAG,WAAW;IAChB;IACA,qBAAqB;IACrB,eAAe;GACjB,CAAC;EACH,GAAG;GACD;GACA;GACA;GACA;GACA;GACA;GACA;EACF,CAEqC;EAAI;CAA2B,CAAA;AACtE"}
@@ -1,43 +1,41 @@
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();
13
12
  if (!widgetConfig?.integrator) throw new Error("Required property \"integrator\" is missing.");
14
- const value = useMemo(() => {
15
- try {
16
- const value = {
17
- ...widgetConfig,
18
- elementId
19
- };
20
- setDefaultSettings(value);
21
- return value;
22
- } catch (e) {
23
- console.warn(e);
24
- return {
25
- ...widgetConfig,
26
- elementId,
27
- integrator: widgetConfig.integrator
28
- };
29
- }
30
- }, [
31
- elementId,
32
- widgetConfig,
33
- setDefaultSettings
34
- ]);
35
- return /* @__PURE__ */ jsx(WidgetContext.Provider, {
36
- value,
13
+ return /* @__PURE__ */ jsx(WidgetContext, {
14
+ value: useMemo(() => {
15
+ try {
16
+ const value = {
17
+ ...widgetConfig,
18
+ elementId
19
+ };
20
+ setDefaultSettings(value);
21
+ return value;
22
+ } catch (e) {
23
+ console.warn(e);
24
+ return {
25
+ ...widgetConfig,
26
+ elementId,
27
+ integrator: widgetConfig.integrator
28
+ };
29
+ }
30
+ }, [
31
+ elementId,
32
+ widgetConfig,
33
+ setDefaultSettings
34
+ ]),
37
35
  children
38
36
  });
39
37
  };
40
38
  //#endregion
41
- export { WidgetProvider, useWidgetConfig };
39
+ export { WidgetContext, WidgetProvider, useWidgetConfig };
42
40
 
43
41
  //# 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;CAwB9D,OAAO,oBAAC,eAAD;EAAe,OArBR,cAAkC;GAC9C,IAAI;IAEF,MAAM,QAAQ;KACZ,GAAG;KACH;IACF;IAGA,mBAAmB,KAAK;IAExB,OAAO;GACT,SAAS,GAAG;IACV,QAAQ,KAAK,CAAC;IACd,OAAO;KACL,GAAG;KACH;KACA,YAAY,aAAa;IAC3B;GACF;EACF,GAAG;GAAC;GAAW;GAAc;EAAkB,CACd;EAAI;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"}