@lifi/widget 4.0.0-beta.17 → 4.0.0-beta.19

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 (327) hide show
  1. package/dist/esm/App.js.map +1 -1
  2. package/dist/esm/AppDefault.js.map +1 -1
  3. package/dist/esm/AppDrawer.js.map +1 -1
  4. package/dist/esm/AppLayout.js.map +1 -1
  5. package/dist/esm/AppProvider.js.map +1 -1
  6. package/dist/esm/components/AmountInput/AmountInput.js.map +1 -1
  7. package/dist/esm/components/AmountInput/AmountInputEndAdornment.js.map +1 -1
  8. package/dist/esm/components/AmountInput/AmountInputStartAdornment.js.map +1 -1
  9. package/dist/esm/components/AmountInput/PriceFormHelperText.js.map +1 -1
  10. package/dist/esm/components/AppContainer.js.map +1 -1
  11. package/dist/esm/components/Avatar/AccountAvatar.js.map +1 -1
  12. package/dist/esm/components/Avatar/Avatar.js.map +1 -1
  13. package/dist/esm/components/Avatar/Avatar.style.js.map +1 -1
  14. package/dist/esm/components/Avatar/ChainBadgeContent.js.map +1 -1
  15. package/dist/esm/components/Avatar/SmallAvatar.js.map +1 -1
  16. package/dist/esm/components/Avatar/TokenAvatar.js.map +1 -1
  17. package/dist/esm/components/Avatar/utils.js.map +1 -1
  18. package/dist/esm/components/BaseTransactionButton/BaseTransactionButton.js.map +1 -1
  19. package/dist/esm/components/BottomSheet/BottomSheet.js.map +1 -1
  20. package/dist/esm/components/Card/Card.js.map +1 -1
  21. package/dist/esm/components/Card/CardIconButton.js.map +1 -1
  22. package/dist/esm/components/ChainSelect/ChainSelect.js.map +1 -1
  23. package/dist/esm/components/ChainSelect/ChainSelect.style.js.map +1 -1
  24. package/dist/esm/components/ChainSelect/useChainSelect.js.map +1 -1
  25. package/dist/esm/components/Chains/AllChainsAvatar.js +1 -1
  26. package/dist/esm/components/Chains/AllChainsAvatar.js.map +1 -1
  27. package/dist/esm/components/Chains/ChainList.js.map +1 -1
  28. package/dist/esm/components/Chains/ChainList.style.js.map +1 -1
  29. package/dist/esm/components/Chains/ChainListItem.js.map +1 -1
  30. package/dist/esm/components/Chains/ChainSearchInput.js.map +1 -1
  31. package/dist/esm/components/Chains/ChainsExpanded.js.map +1 -1
  32. package/dist/esm/components/Chains/PinChainButton.js.map +1 -1
  33. package/dist/esm/components/Chains/SelectChainContent.js.map +1 -1
  34. package/dist/esm/components/Chains/VirtualizedChainList.js.map +1 -1
  35. package/dist/esm/components/ContextMenu.js.map +1 -1
  36. package/dist/esm/components/ContractComponent/ContractComponent.js.map +1 -1
  37. package/dist/esm/components/ContractComponent/ItemPrice.js.map +1 -1
  38. package/dist/esm/components/ContractComponent/NFT/NFT.js.map +1 -1
  39. package/dist/esm/components/ContractComponent/NFT/NFTBase.js.map +1 -1
  40. package/dist/esm/components/Dialog/Dialog.js.map +1 -1
  41. package/dist/esm/components/Expansion/Expansion.js.map +1 -1
  42. package/dist/esm/components/Expansion/ExpansionTransition.js.map +1 -1
  43. package/dist/esm/components/FeeBreakdownTooltip.js.map +1 -1
  44. package/dist/esm/components/Header/ActivitiesButton.js.map +1 -1
  45. package/dist/esm/components/Header/BackButton.js.map +1 -1
  46. package/dist/esm/components/Header/CloseDrawerButton.js.map +1 -1
  47. package/dist/esm/components/Header/DisconnectIconButton.js.map +1 -1
  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/NavigationHeader.js.map +1 -1
  51. package/dist/esm/components/Header/SettingsButton.js.map +1 -1
  52. package/dist/esm/components/Header/SettingsButton.style.js.map +1 -1
  53. package/dist/esm/components/Header/SplitNavigationTabs.js.map +1 -1
  54. package/dist/esm/components/Header/WalletHeader.js.map +1 -1
  55. package/dist/esm/components/Header/WalletMenu.js.map +1 -1
  56. package/dist/esm/components/IconCircle/IconCircle.js.map +1 -1
  57. package/dist/esm/components/IconCircle/IconCircle.style.js.map +1 -1
  58. package/dist/esm/components/Initializer.js.map +1 -1
  59. package/dist/esm/components/ListItemButton.js.map +1 -1
  60. package/dist/esm/components/Messages/AccountDeployedMessage.js.map +1 -1
  61. package/dist/esm/components/Messages/AccountNotDeployedMessage.js.map +1 -1
  62. package/dist/esm/components/Messages/FundsSufficiencyMessage.js.map +1 -1
  63. package/dist/esm/components/Messages/GasRefuelMessage.js.map +1 -1
  64. package/dist/esm/components/Messages/GasSufficiencyMessage.js.map +1 -1
  65. package/dist/esm/components/Messages/MinFromAmountUSDMessage.js.map +1 -1
  66. package/dist/esm/components/Messages/MissingRouteRequiredAccountMessage.js.map +1 -1
  67. package/dist/esm/components/Messages/WarningMessages.js.map +1 -1
  68. package/dist/esm/components/Messages/useMessageQueue.js.map +1 -1
  69. package/dist/esm/components/NotFound.js.map +1 -1
  70. package/dist/esm/components/PageEntered.js.map +1 -1
  71. package/dist/esm/components/PoweredBy/PoweredBy.js.map +1 -1
  72. package/dist/esm/components/ProgressToNextUpdate.js.map +1 -1
  73. package/dist/esm/components/ReverseTokensButton/ReverseTokensButton.js.map +1 -1
  74. package/dist/esm/components/ReverseTokensButton/ReverseTokensButton.style.js.map +1 -1
  75. package/dist/esm/components/RouteCard/RouteCard.js.map +1 -1
  76. package/dist/esm/components/RouteCard/RouteCardEssentials.js.map +1 -1
  77. package/dist/esm/components/RouteCard/RouteCardSkeleton.js.map +1 -1
  78. package/dist/esm/components/RouteCard/RouteDetails.js.map +1 -1
  79. package/dist/esm/components/RouteCard/RouteNotFoundCard.js.map +1 -1
  80. package/dist/esm/components/RouteCard/RouteToken.js.map +1 -1
  81. package/dist/esm/components/RouteCard/RouteTokens.js.map +1 -1
  82. package/dist/esm/components/RouteCard/getMatchingLabels.js.map +1 -1
  83. package/dist/esm/components/Routes/Routes.js.map +1 -1
  84. package/dist/esm/components/Routes/RoutesContent.js.map +1 -1
  85. package/dist/esm/components/Routes/RoutesExpanded.js.map +1 -1
  86. package/dist/esm/components/Routes/RoutesExpanded.style.js.map +1 -1
  87. package/dist/esm/components/Search/SearchInput.js.map +1 -1
  88. package/dist/esm/components/SelectChainAndToken.js.map +1 -1
  89. package/dist/esm/components/SelectTokenButton/SelectTokenButton.js.map +1 -1
  90. package/dist/esm/components/SelectTokenButton/SelectTokenButton.style.js.map +1 -1
  91. package/dist/esm/components/SendToWallet/SendToWalletButton.js +1 -1
  92. package/dist/esm/components/SendToWallet/SendToWalletButton.js.map +1 -1
  93. package/dist/esm/components/SendToWallet/SendToWalletExpandButton.js.map +1 -1
  94. package/dist/esm/components/Skeleton/WidgetSkeleton.js.map +1 -1
  95. package/dist/esm/components/Skeleton/WidgetSkeleton.style.js.map +1 -1
  96. package/dist/esm/components/Step/CircularProgress.js.map +1 -1
  97. package/dist/esm/components/Step/CircularProgress.style.js.map +1 -1
  98. package/dist/esm/components/Step/DestinationWalletAddress.js.map +1 -1
  99. package/dist/esm/components/Step/Step.js.map +1 -1
  100. package/dist/esm/components/Step/StepAction.js.map +1 -1
  101. package/dist/esm/components/Step/StepActions.js.map +1 -1
  102. package/dist/esm/components/Step/StepList.js.map +1 -1
  103. package/dist/esm/components/StepActions/StepActions.js.map +1 -1
  104. package/dist/esm/components/StepDivider/StepDivider.js.map +1 -1
  105. package/dist/esm/components/Tabs/Tabs.style.js.map +1 -1
  106. package/dist/esm/components/TextFitter/TextFitter.js.map +1 -1
  107. package/dist/esm/components/Timer/StepTimer.js.map +1 -1
  108. package/dist/esm/components/Timer/TimerContent.js.map +1 -1
  109. package/dist/esm/components/Token/Token.js.map +1 -1
  110. package/dist/esm/components/TokenList/PinTokenButton.js.map +1 -1
  111. package/dist/esm/components/TokenList/TokenDetailsSheet.js.map +1 -1
  112. package/dist/esm/components/TokenList/TokenDetailsSheetContent.js.map +1 -1
  113. package/dist/esm/components/TokenList/TokenList.js.map +1 -1
  114. package/dist/esm/components/TokenList/TokenListItem.js.map +1 -1
  115. package/dist/esm/components/TokenList/TokenNotFound.js.map +1 -1
  116. package/dist/esm/components/TokenList/VirtualizedTokenList.js.map +1 -1
  117. package/dist/esm/components/TokenList/useTokenSelect.js.map +1 -1
  118. package/dist/esm/components/TokenRate/TokenRate.js.map +1 -1
  119. package/dist/esm/components/Tools/ToolItem.js.map +1 -1
  120. package/dist/esm/components/Tools/Tools.js.map +1 -1
  121. package/dist/esm/components/TransactionCard/ActiveTransactionCard.js.map +1 -1
  122. package/dist/esm/components/TransactionCard/TransactionCard.js.map +1 -1
  123. package/dist/esm/components/TransactionCard/TransactionCardSkeleton.js.map +1 -1
  124. package/dist/esm/components/TransactionDetails.js.map +1 -1
  125. package/dist/esm/config/version.d.ts +1 -1
  126. package/dist/esm/config/version.js +1 -1
  127. package/dist/esm/config/version.js.map +1 -1
  128. package/dist/esm/hooks/timer/time.js.map +1 -1
  129. package/dist/esm/hooks/timer/useExecutionTimer.js.map +1 -1
  130. package/dist/esm/hooks/timer/useInterval.js.map +1 -1
  131. package/dist/esm/hooks/timer/useTimer.js.map +1 -1
  132. package/dist/esm/hooks/timer/validate.js.map +1 -1
  133. package/dist/esm/hooks/useAccountsBalancesData.js.map +1 -1
  134. package/dist/esm/hooks/useActionMessage.js +2 -2
  135. package/dist/esm/hooks/useActionMessage.js.map +1 -1
  136. package/dist/esm/hooks/useAddressActivity.js.map +1 -1
  137. package/dist/esm/hooks/useAddressValidation.js.map +1 -1
  138. package/dist/esm/hooks/useAvailableChains.js.map +1 -1
  139. package/dist/esm/hooks/useChain.js.map +1 -1
  140. package/dist/esm/hooks/useChains.js.map +1 -1
  141. package/dist/esm/hooks/useContactSupport.js.map +1 -1
  142. package/dist/esm/hooks/useDebouncedWatch.js.map +1 -1
  143. package/dist/esm/hooks/useDefaultElementId.js.map +1 -1
  144. package/dist/esm/hooks/useExplorer.js.map +1 -1
  145. package/dist/esm/hooks/useFilteredByTokenBalances.js.map +1 -1
  146. package/dist/esm/hooks/useFromAmountThreshold.js.map +1 -1
  147. package/dist/esm/hooks/useFromTokenSufficiency.js.map +1 -1
  148. package/dist/esm/hooks/useGasRecommendation.js.map +1 -1
  149. package/dist/esm/hooks/useGasRefuel.js.map +1 -1
  150. package/dist/esm/hooks/useGasSufficiency.js.map +1 -1
  151. package/dist/esm/hooks/useHasChainExpansion.js.map +1 -1
  152. package/dist/esm/hooks/useHeader.js.map +1 -1
  153. package/dist/esm/hooks/useInitializeSDKProviders.js.map +1 -1
  154. package/dist/esm/hooks/useInitializer.js.map +1 -1
  155. package/dist/esm/hooks/useIsBatchingSupported.js.map +1 -1
  156. package/dist/esm/hooks/useIsContractAddress.js.map +1 -1
  157. package/dist/esm/hooks/useLanguages.js.map +1 -1
  158. package/dist/esm/hooks/useListHeight.js.map +1 -1
  159. package/dist/esm/hooks/useLongPress.js.map +1 -1
  160. package/dist/esm/hooks/useNavigateBack.js.map +1 -1
  161. package/dist/esm/hooks/useRouteExecution.js +0 -2
  162. package/dist/esm/hooks/useRouteExecution.js.map +1 -1
  163. package/dist/esm/hooks/useRouteRequiredAccountConnection.js.map +1 -1
  164. package/dist/esm/hooks/useRoutes.js.map +1 -1
  165. package/dist/esm/hooks/useScrollableContainer.js.map +1 -1
  166. package/dist/esm/hooks/useSetContentHeight.js.map +1 -1
  167. package/dist/esm/hooks/useSettingMonitor.js.map +1 -1
  168. package/dist/esm/hooks/useSwapOnly.js.map +1 -1
  169. package/dist/esm/hooks/useToAddressAutoPopulate.js.map +1 -1
  170. package/dist/esm/hooks/useToAddressRequirements.js.map +1 -1
  171. package/dist/esm/hooks/useToAddressReset.js.map +1 -1
  172. package/dist/esm/hooks/useToken.js.map +1 -1
  173. package/dist/esm/hooks/useTokenAddressBalance.js.map +1 -1
  174. package/dist/esm/hooks/useTokenBalance.js.map +1 -1
  175. package/dist/esm/hooks/useTokenBalances.js.map +1 -1
  176. package/dist/esm/hooks/useTokenBalancesQueries.js.map +1 -1
  177. package/dist/esm/hooks/useTokenRateText.js.map +1 -1
  178. package/dist/esm/hooks/useTokenSearch.js.map +1 -1
  179. package/dist/esm/hooks/useTokens.js.map +1 -1
  180. package/dist/esm/hooks/useTools.js.map +1 -1
  181. package/dist/esm/hooks/useTransactionDetails.js.map +1 -1
  182. package/dist/esm/hooks/useTransactionHistory.js.map +1 -1
  183. package/dist/esm/hooks/useTransactionList.js.map +1 -1
  184. package/dist/esm/hooks/useWideVariant.js.map +1 -1
  185. package/dist/esm/hooks/useWidgetChains.js.map +1 -1
  186. package/dist/esm/hooks/useWidgetEvents.js.map +1 -1
  187. package/dist/esm/i18n/bn.json +3 -0
  188. package/dist/esm/i18n/de.json +3 -0
  189. package/dist/esm/i18n/es.json +3 -0
  190. package/dist/esm/i18n/fr.json +3 -0
  191. package/dist/esm/i18n/hi.json +3 -0
  192. package/dist/esm/i18n/id.json +3 -0
  193. package/dist/esm/i18n/it.json +3 -0
  194. package/dist/esm/i18n/ja.json +3 -0
  195. package/dist/esm/i18n/ko.json +3 -0
  196. package/dist/esm/i18n/pl.json +3 -0
  197. package/dist/esm/i18n/pt.json +3 -0
  198. package/dist/esm/i18n/th.json +3 -0
  199. package/dist/esm/i18n/tr.json +3 -0
  200. package/dist/esm/i18n/uk.json +3 -0
  201. package/dist/esm/i18n/vi.json +3 -0
  202. package/dist/esm/i18n/zh.json +3 -0
  203. package/dist/esm/pages/ActivitiesPage/ActiveTransactionItem.js.map +1 -1
  204. package/dist/esm/pages/ActivitiesPage/ActivitiesPage.js.map +1 -1
  205. package/dist/esm/pages/ActivitiesPage/ActivitiesPageMenuButton.js.map +1 -1
  206. package/dist/esm/pages/ActivitiesPage/TransactionHistoryEmpty.js.map +1 -1
  207. package/dist/esm/pages/ActivitiesPage/TransactionHistoryItem.js.map +1 -1
  208. package/dist/esm/pages/LanguagesPage.js.map +1 -1
  209. package/dist/esm/pages/MainPage/MainPage.js.map +1 -1
  210. package/dist/esm/pages/MainPage/MainWarningMessages.js.map +1 -1
  211. package/dist/esm/pages/MainPage/ReviewButton.js.map +1 -1
  212. package/dist/esm/pages/RoutesPage/RoutesPage.js.map +1 -1
  213. package/dist/esm/pages/SelectChainPage/SelectChainPage.js.map +1 -1
  214. package/dist/esm/pages/SelectEnabledToolsPage.js.map +1 -1
  215. package/dist/esm/pages/SelectTokenPage/SearchTokenInput.js.map +1 -1
  216. package/dist/esm/pages/SelectTokenPage/SelectTokenPage.js.map +1 -1
  217. package/dist/esm/pages/SendToWallet/BookmarkAddressSheet.js.map +1 -1
  218. package/dist/esm/pages/SendToWallet/BookmarksPage.js.map +1 -1
  219. package/dist/esm/pages/SendToWallet/ConfirmAddressSheet.js.map +1 -1
  220. package/dist/esm/pages/SendToWallet/ConnectedWalletsPage.js.map +1 -1
  221. package/dist/esm/pages/SendToWallet/RecentWalletsPage.js.map +1 -1
  222. package/dist/esm/pages/SendToWallet/SendToConfiguredWalletPage.js.map +1 -1
  223. package/dist/esm/pages/SendToWallet/SendToWalletPage.js.map +1 -1
  224. package/dist/esm/pages/SettingsPage/BridgeAndExchangeSettings.js.map +1 -1
  225. package/dist/esm/pages/SettingsPage/GasPriceSettings.js.map +1 -1
  226. package/dist/esm/pages/SettingsPage/LanguageSetting.js.map +1 -1
  227. package/dist/esm/pages/SettingsPage/ResetSettingsButton.js.map +1 -1
  228. package/dist/esm/pages/SettingsPage/RoutePrioritySettings.js.map +1 -1
  229. package/dist/esm/pages/SettingsPage/SettingsCard/SettingCardExpandable.js.map +1 -1
  230. package/dist/esm/pages/SettingsPage/SettingsCard/SettingsAccordian.js.map +1 -1
  231. package/dist/esm/pages/SettingsPage/SettingsPage.js.map +1 -1
  232. package/dist/esm/pages/SettingsPage/SlippageSettings/SlippageSettings.js.map +1 -1
  233. package/dist/esm/pages/SettingsPage/SlippageSettings/SlippageSettings.style.js.map +1 -1
  234. package/dist/esm/pages/SettingsPage/SmallBalanceFilterSettings.js.map +1 -1
  235. package/dist/esm/pages/SettingsPage/ThemeSettings.js.map +1 -1
  236. package/dist/esm/pages/TransactionDetailsPage/ActionRow.js.map +1 -1
  237. package/dist/esm/pages/TransactionDetailsPage/ContactSupportButton.js.map +1 -1
  238. package/dist/esm/pages/TransactionDetailsPage/ReceiptsCard.js.map +1 -1
  239. package/dist/esm/pages/TransactionDetailsPage/SentToWalletRow.js.map +1 -1
  240. package/dist/esm/pages/TransactionDetailsPage/StepActionRow.js +2 -2
  241. package/dist/esm/pages/TransactionDetailsPage/StepActionRow.js.map +1 -1
  242. package/dist/esm/pages/TransactionDetailsPage/StepActionsList.js +11 -5
  243. package/dist/esm/pages/TransactionDetailsPage/StepActionsList.js.map +1 -1
  244. package/dist/esm/pages/TransactionDetailsPage/TransactionDetailsPage.js.map +1 -1
  245. package/dist/esm/pages/TransactionDetailsPage/TransactionDetailsSkeleton.js.map +1 -1
  246. package/dist/esm/pages/TransactionDetailsPage/TransferIdCard.js.map +1 -1
  247. package/dist/esm/pages/TransactionPage/ConfirmToAddressSheet.js.map +1 -1
  248. package/dist/esm/pages/TransactionPage/ExchangeRateBottomSheet.js.map +1 -1
  249. package/dist/esm/pages/TransactionPage/RouteTracker.js.map +1 -1
  250. package/dist/esm/pages/TransactionPage/StartTransactionButton.js.map +1 -1
  251. package/dist/esm/pages/TransactionPage/StatusBottomSheet.js.map +1 -1
  252. package/dist/esm/pages/TransactionPage/StatusBottomSheet.style.js.map +1 -1
  253. package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.js.map +1 -1
  254. package/dist/esm/pages/TransactionPage/TransactionPage.js.map +1 -1
  255. package/dist/esm/pages/TransactionPage/utils.js.map +1 -1
  256. package/dist/esm/providers/I18nProvider/I18nProvider.js.map +1 -1
  257. package/dist/esm/providers/I18nProvider/i18n.js.map +1 -1
  258. package/dist/esm/providers/QueryClientProvider.js.map +1 -1
  259. package/dist/esm/providers/SDKClientProvider.js.map +1 -1
  260. package/dist/esm/providers/ThemeProvider/ThemeProvider.js.map +1 -1
  261. package/dist/esm/providers/WalletProvider/WalletProvider.js.map +1 -1
  262. package/dist/esm/providers/WalletProvider/useExternalWalletProvider.js.map +1 -1
  263. package/dist/esm/providers/WidgetProvider/WidgetProvider.js.map +1 -1
  264. package/dist/esm/stores/StoreProvider.js.map +1 -1
  265. package/dist/esm/stores/bookmarks/BookmarkStore.js.map +1 -1
  266. package/dist/esm/stores/bookmarks/createBookmarkStore.js.map +1 -1
  267. package/dist/esm/stores/bookmarks/useBookmarkActions.js.map +1 -1
  268. package/dist/esm/stores/bookmarks/useBookmarks.js.map +1 -1
  269. package/dist/esm/stores/chains/ChainOrderStore.js.map +1 -1
  270. package/dist/esm/stores/chains/createChainOrderStore.js.map +1 -1
  271. package/dist/esm/stores/chains/useChainOrder.js.map +1 -1
  272. package/dist/esm/stores/form/FormStore.js.map +1 -1
  273. package/dist/esm/stores/form/FormUpdater.js.map +1 -1
  274. package/dist/esm/stores/form/URLSearchParamsBuilder.js.map +1 -1
  275. package/dist/esm/stores/form/createFormStore.js.map +1 -1
  276. package/dist/esm/stores/form/getDefaultValuesFromQueryString.js.map +1 -1
  277. package/dist/esm/stores/form/useFieldActions.js.map +1 -1
  278. package/dist/esm/stores/form/useFieldValues.js.map +1 -1
  279. package/dist/esm/stores/form/useFormRef.js.map +1 -1
  280. package/dist/esm/stores/form/useFormStore.js.map +1 -1
  281. package/dist/esm/stores/form/useTouchedFields.js.map +1 -1
  282. package/dist/esm/stores/header/useHeaderStore.js.map +1 -1
  283. package/dist/esm/stores/inputMode/useInputModeStore.js.map +1 -1
  284. package/dist/esm/stores/pinnedTokens/PinnedTokensStore.js.map +1 -1
  285. package/dist/esm/stores/pinnedTokens/createPinnedTokensStore.js.map +1 -1
  286. package/dist/esm/stores/routes/RouteExecutionStore.js.map +1 -1
  287. package/dist/esm/stores/routes/createRouteExecutionStore.js.map +1 -1
  288. package/dist/esm/stores/routes/useIntermediateRoutesStore.js.map +1 -1
  289. package/dist/esm/stores/routes/useRouteExecutionIndicator.js.map +1 -1
  290. package/dist/esm/stores/routes/useSetExecutableRoute.js.map +1 -1
  291. package/dist/esm/stores/routes/utils.js.map +1 -1
  292. package/dist/esm/stores/settings/SettingsStore.js.map +1 -1
  293. package/dist/esm/stores/settings/createSettingsStore.js.map +1 -1
  294. package/dist/esm/stores/settings/useSettings.js.map +1 -1
  295. package/dist/esm/stores/settings/useSettingsActions.js.map +1 -1
  296. package/dist/esm/stores/settings/useSplitSubvariantStore.js.map +1 -1
  297. package/dist/esm/themes/createTheme.js.map +1 -1
  298. package/dist/esm/themes/utils.js.map +1 -1
  299. package/dist/esm/types/events.js.map +1 -1
  300. package/dist/esm/types/widget.js.map +1 -1
  301. package/dist/esm/utils/compactNumberFormatter.js.map +1 -1
  302. package/dist/esm/utils/converters.js.map +1 -1
  303. package/dist/esm/utils/currencyExtendedFormatter.js.map +1 -1
  304. package/dist/esm/utils/deepEqual.js.map +1 -1
  305. package/dist/esm/utils/deepMerge.js.map +1 -1
  306. package/dist/esm/utils/fees.js.map +1 -1
  307. package/dist/esm/utils/format.js.map +1 -1
  308. package/dist/esm/utils/getActionMessage.js.map +1 -1
  309. package/dist/esm/utils/getErrorMessage.js.map +1 -1
  310. package/dist/esm/utils/getPriceImpact.js.map +1 -1
  311. package/dist/esm/utils/input.js.map +1 -1
  312. package/dist/esm/utils/item.js.map +1 -1
  313. package/dist/esm/utils/percentFormatter.js.map +1 -1
  314. package/dist/esm/utils/prepareActions.js.map +1 -1
  315. package/dist/esm/utils/timer.js.map +1 -1
  316. package/dist/esm/utils/token.js.map +1 -1
  317. package/dist/esm/utils/tokenList.js.map +1 -1
  318. package/dist/esm/utils/variant.js.map +1 -1
  319. package/dist/esm/utils/widgetSize.js.map +1 -1
  320. package/package.json +12 -12
  321. package/src/components/Chains/AllChainsAvatar.tsx +1 -1
  322. package/src/components/SendToWallet/SendToWalletButton.tsx +1 -1
  323. package/src/config/version.ts +1 -1
  324. package/src/hooks/useActionMessage.ts +4 -3
  325. package/src/hooks/useRouteExecution.ts +0 -2
  326. package/src/pages/TransactionDetailsPage/StepActionRow.tsx +3 -2
  327. package/src/pages/TransactionDetailsPage/StepActionsList.tsx +19 -12
@@ -1 +1 @@
1
- {"version":3,"file":"StatusBottomSheet.js","names":["Card"],"sources":["../../../../src/pages/TransactionPage/StatusBottomSheet.tsx"],"sourcesContent":["import type { ExecutionActionType } from '@lifi/sdk'\nimport Done from '@mui/icons-material/Done'\nimport ErrorRounded from '@mui/icons-material/ErrorRounded'\nimport InfoRounded from '@mui/icons-material/InfoRounded'\nimport WarningRounded from '@mui/icons-material/WarningRounded'\nimport { Box, Button, Typography } from '@mui/material'\nimport { useNavigate } from '@tanstack/react-router'\nimport { useCallback, useEffect, useRef } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { BottomSheet } from '../../components/BottomSheet/BottomSheet.js'\nimport type { BottomSheetBase } from '../../components/BottomSheet/types.js'\nimport { Card } from '../../components/Card/Card.js'\nimport { CardTitle } from '../../components/Card/CardTitle.js'\nimport { Token } from '../../components/Token/Token.js'\nimport { useAvailableChains } from '../../hooks/useAvailableChains.js'\nimport { useSetContentHeight } from '../../hooks/useSetContentHeight.js'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport { useFieldActions } from '../../stores/form/useFieldActions.js'\nimport {\n type RouteExecution,\n RouteExecutionStatus,\n} from '../../stores/routes/types.js'\nimport { getSourceTxHash } from '../../stores/routes/utils.js'\nimport { hasEnumFlag } from '../../utils/enum.js'\nimport { formatTokenAmount } from '../../utils/format.js'\nimport { getErrorMessage } from '../../utils/getErrorMessage.js'\nimport { navigationRoutes } from '../../utils/navigationRoutes.js'\nimport { CenterContainer, IconCircle } from './StatusBottomSheet.style.js'\n\ninterface StatusBottomSheetContentProps extends RouteExecution {\n onClose(): void\n}\n\nexport const StatusBottomSheet: React.FC<RouteExecution> = ({\n status,\n route,\n}) => {\n const ref = useRef<BottomSheetBase>(null)\n\n const onClose = useCallback(() => {\n ref.current?.close()\n }, [])\n\n useEffect(() => {\n const hasSuccessFlag = hasEnumFlag(status, RouteExecutionStatus.Done)\n const hasFailedFlag = hasEnumFlag(status, RouteExecutionStatus.Failed)\n if ((hasSuccessFlag || hasFailedFlag) && !ref.current?.isOpen()) {\n ref.current?.open()\n }\n }, [status])\n\n return (\n <BottomSheet ref={ref}>\n <StatusBottomSheetContent\n status={status}\n route={route}\n onClose={onClose}\n />\n </BottomSheet>\n )\n}\n\nconst StatusBottomSheetContent: React.FC<StatusBottomSheetContentProps> = ({\n status,\n route,\n onClose,\n}) => {\n const { t } = useTranslation()\n const navigate = useNavigate()\n const { setFieldValue } = useFieldActions()\n const {\n subvariant,\n subvariantOptions,\n contractSecondaryComponent,\n contractCompactComponent,\n feeConfig,\n } = useWidgetConfig()\n const { getChainById } = useAvailableChains()\n\n const ref = useRef<HTMLElement>(null)\n useSetContentHeight(ref)\n\n const toToken = {\n ...(route.steps.at(-1)?.execution?.toToken ?? route.toToken),\n amount: BigInt(\n route.steps.at(-1)?.execution?.toAmount ??\n route.steps.at(-1)?.estimate.toAmount ??\n route.toAmount\n ),\n }\n\n const cleanFields = () => {\n setFieldValue('fromAmount', '')\n setFieldValue('toAmount', '')\n }\n\n const handleDone = () => {\n cleanFields()\n navigate({ to: navigationRoutes.home, replace: true })\n }\n\n const handlePartialDone = () => {\n if (\n toToken.chainId !== route.toToken.chainId &&\n toToken.address !== route.toToken.address\n ) {\n setFieldValue(\n 'fromAmount',\n formatTokenAmount(toToken.amount, toToken.decimals),\n { isTouched: true }\n )\n setFieldValue('fromChain', toToken.chainId, { isTouched: true })\n setFieldValue('fromToken', toToken.address, { isTouched: true })\n setFieldValue('toChain', route.toToken.chainId, {\n isTouched: true,\n })\n setFieldValue('toToken', route.toToken.address, {\n isTouched: true,\n })\n } else {\n cleanFields()\n }\n navigate({ to: navigationRoutes.home, replace: true })\n }\n\n const handleClose = () => {\n cleanFields()\n onClose()\n }\n\n const handleSeeDetails = () => {\n handleClose()\n\n const transactionHash = getSourceTxHash(route)\n\n navigate({\n to: navigationRoutes.transactionDetails,\n search: {\n routeId: route.id,\n transactionHash,\n },\n replace: true,\n })\n }\n\n const transactionType =\n route.fromChainId === route.toChainId ? 'swap' : 'bridge'\n\n let title: string | undefined\n let primaryMessage: string | undefined\n let failedMessage: string | undefined\n let handlePrimaryButton = handleDone\n switch (status) {\n case RouteExecutionStatus.Done: {\n title =\n subvariant === 'custom'\n ? t(\n `success.title.${subvariantOptions?.custom ?? 'checkout'}Successful`\n )\n : t(`success.title.${transactionType}Successful`)\n handlePrimaryButton = handleDone\n break\n }\n case RouteExecutionStatus.Done | RouteExecutionStatus.Partial: {\n title = t(`success.title.${transactionType}PartiallySuccessful`)\n primaryMessage = t('success.message.exchangePartiallySuccessful', {\n tool: route.steps.at(-1)?.toolDetails.name,\n tokenSymbol: route.steps.at(-1)?.action.toToken.symbol,\n })\n handlePrimaryButton = handlePartialDone\n break\n }\n case RouteExecutionStatus.Done | RouteExecutionStatus.Refunded: {\n title = t('success.title.refundIssued')\n primaryMessage = t('success.message.exchangePartiallySuccessful', {\n tool: route.steps.at(-1)?.toolDetails.name,\n tokenSymbol: route.steps.at(-1)?.action.toToken.symbol,\n })\n break\n }\n case RouteExecutionStatus.Failed: {\n const step = route.steps.find(\n (step) => step.execution?.status === 'FAILED'\n )\n if (!step) {\n break\n }\n const action = step.execution?.actions?.find(\n (action) => action.status === 'FAILED'\n ) || {\n status: 'FAILED',\n type: 'EXECUTION' as ExecutionActionType,\n error: step.execution?.error,\n } // synthetic action to represent a failed execution with no actions\n const actionMessage = getErrorMessage(t, getChainById, step, action)\n title = actionMessage.title\n failedMessage = actionMessage.message\n handlePrimaryButton = handleClose\n break\n }\n default:\n break\n }\n\n const showContractComponent =\n subvariant === 'custom' &&\n hasEnumFlag(status, RouteExecutionStatus.Done) &&\n (contractCompactComponent || contractSecondaryComponent)\n\n const VcComponent =\n status === RouteExecutionStatus.Done ? feeConfig?._vcComponent : undefined\n\n return (\n <Box\n ref={ref}\n sx={{\n p: 3,\n }}\n >\n {!showContractComponent ? (\n <CenterContainer>\n <IconCircle status={status} sx={{ mb: 1 }}>\n {status === RouteExecutionStatus.Idle ? (\n <InfoRounded color=\"primary\" />\n ) : null}\n {status === RouteExecutionStatus.Done ? (\n <Done color=\"success\" />\n ) : null}\n {hasEnumFlag(status, RouteExecutionStatus.Partial) ||\n hasEnumFlag(status, RouteExecutionStatus.Refunded) ? (\n <WarningRounded color=\"warning\" />\n ) : null}\n {hasEnumFlag(status, RouteExecutionStatus.Failed) ? (\n <ErrorRounded color=\"error\" />\n ) : null}\n </IconCircle>\n </CenterContainer>\n ) : null}\n <CenterContainer>\n <Typography\n sx={{\n py: 1,\n fontSize: 18,\n fontWeight: 700,\n }}\n >\n {title}\n </Typography>\n </CenterContainer>\n {showContractComponent ? (\n contractCompactComponent || contractSecondaryComponent\n ) : hasEnumFlag(status, RouteExecutionStatus.Failed) && failedMessage ? (\n <Typography\n sx={{\n py: 1,\n }}\n >\n {failedMessage}\n </Typography>\n ) : hasEnumFlag(status, RouteExecutionStatus.Done) ? (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n marginTop: 2,\n marginBottom: VcComponent ? 2 : 3,\n }}\n >\n <Card\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n padding: 2,\n }}\n >\n <CardTitle sx={{ padding: 0 }}>\n {hasEnumFlag(status, RouteExecutionStatus.Refunded)\n ? t('header.refunded')\n : t('header.received')}\n </CardTitle>\n <Token token={toToken} disableDescription={false} />\n {primaryMessage && (\n <Typography\n sx={{\n color: 'text.secondary',\n fontSize: '12px',\n lineHeight: '16px',\n fontWeight: 500,\n }}\n >\n {primaryMessage}\n </Typography>\n )}\n </Card>\n {VcComponent ? <VcComponent route={route} /> : null}\n </Box>\n ) : null}\n <Box sx={{ display: 'flex', marginTop: 2, gap: 1.5 }}>\n {hasEnumFlag(status, RouteExecutionStatus.Done) ? (\n <Button variant=\"text\" onClick={handleSeeDetails} fullWidth>\n {t('button.seeDetails')}\n </Button>\n ) : null}\n <Button variant=\"contained\" fullWidth onClick={handlePrimaryButton}>\n {status === RouteExecutionStatus.Idle ? t('button.ok') : null}\n {hasEnumFlag(status, RouteExecutionStatus.Done)\n ? t('button.done')\n : null}\n {status === RouteExecutionStatus.Failed\n ? t('button.seeDetails')\n : null}\n </Button>\n </Box>\n </Box>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"StatusBottomSheet.js","names":["Card"],"sources":["../../../../src/pages/TransactionPage/StatusBottomSheet.tsx"],"sourcesContent":["import type { ExecutionActionType } from '@lifi/sdk'\nimport Done from '@mui/icons-material/Done'\nimport ErrorRounded from '@mui/icons-material/ErrorRounded'\nimport InfoRounded from '@mui/icons-material/InfoRounded'\nimport WarningRounded from '@mui/icons-material/WarningRounded'\nimport { Box, Button, Typography } from '@mui/material'\nimport { useNavigate } from '@tanstack/react-router'\nimport { useCallback, useEffect, useRef } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { BottomSheet } from '../../components/BottomSheet/BottomSheet.js'\nimport type { BottomSheetBase } from '../../components/BottomSheet/types.js'\nimport { Card } from '../../components/Card/Card.js'\nimport { CardTitle } from '../../components/Card/CardTitle.js'\nimport { Token } from '../../components/Token/Token.js'\nimport { useAvailableChains } from '../../hooks/useAvailableChains.js'\nimport { useSetContentHeight } from '../../hooks/useSetContentHeight.js'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport { useFieldActions } from '../../stores/form/useFieldActions.js'\nimport {\n type RouteExecution,\n RouteExecutionStatus,\n} from '../../stores/routes/types.js'\nimport { getSourceTxHash } from '../../stores/routes/utils.js'\nimport { hasEnumFlag } from '../../utils/enum.js'\nimport { formatTokenAmount } from '../../utils/format.js'\nimport { getErrorMessage } from '../../utils/getErrorMessage.js'\nimport { navigationRoutes } from '../../utils/navigationRoutes.js'\nimport { CenterContainer, IconCircle } from './StatusBottomSheet.style.js'\n\ninterface StatusBottomSheetContentProps extends RouteExecution {\n onClose(): void\n}\n\nexport const StatusBottomSheet: React.FC<RouteExecution> = ({\n status,\n route,\n}) => {\n const ref = useRef<BottomSheetBase>(null)\n\n const onClose = useCallback(() => {\n ref.current?.close()\n }, [])\n\n useEffect(() => {\n const hasSuccessFlag = hasEnumFlag(status, RouteExecutionStatus.Done)\n const hasFailedFlag = hasEnumFlag(status, RouteExecutionStatus.Failed)\n if ((hasSuccessFlag || hasFailedFlag) && !ref.current?.isOpen()) {\n ref.current?.open()\n }\n }, [status])\n\n return (\n <BottomSheet ref={ref}>\n <StatusBottomSheetContent\n status={status}\n route={route}\n onClose={onClose}\n />\n </BottomSheet>\n )\n}\n\nconst StatusBottomSheetContent: React.FC<StatusBottomSheetContentProps> = ({\n status,\n route,\n onClose,\n}) => {\n const { t } = useTranslation()\n const navigate = useNavigate()\n const { setFieldValue } = useFieldActions()\n const {\n subvariant,\n subvariantOptions,\n contractSecondaryComponent,\n contractCompactComponent,\n feeConfig,\n } = useWidgetConfig()\n const { getChainById } = useAvailableChains()\n\n const ref = useRef<HTMLElement>(null)\n useSetContentHeight(ref)\n\n const toToken = {\n ...(route.steps.at(-1)?.execution?.toToken ?? route.toToken),\n amount: BigInt(\n route.steps.at(-1)?.execution?.toAmount ??\n route.steps.at(-1)?.estimate.toAmount ??\n route.toAmount\n ),\n }\n\n const cleanFields = () => {\n setFieldValue('fromAmount', '')\n setFieldValue('toAmount', '')\n }\n\n const handleDone = () => {\n cleanFields()\n navigate({ to: navigationRoutes.home, replace: true })\n }\n\n const handlePartialDone = () => {\n if (\n toToken.chainId !== route.toToken.chainId &&\n toToken.address !== route.toToken.address\n ) {\n setFieldValue(\n 'fromAmount',\n formatTokenAmount(toToken.amount, toToken.decimals),\n { isTouched: true }\n )\n setFieldValue('fromChain', toToken.chainId, { isTouched: true })\n setFieldValue('fromToken', toToken.address, { isTouched: true })\n setFieldValue('toChain', route.toToken.chainId, {\n isTouched: true,\n })\n setFieldValue('toToken', route.toToken.address, {\n isTouched: true,\n })\n } else {\n cleanFields()\n }\n navigate({ to: navigationRoutes.home, replace: true })\n }\n\n const handleClose = () => {\n cleanFields()\n onClose()\n }\n\n const handleSeeDetails = () => {\n handleClose()\n\n const transactionHash = getSourceTxHash(route)\n\n navigate({\n to: navigationRoutes.transactionDetails,\n search: {\n routeId: route.id,\n transactionHash,\n },\n replace: true,\n })\n }\n\n const transactionType =\n route.fromChainId === route.toChainId ? 'swap' : 'bridge'\n\n let title: string | undefined\n let primaryMessage: string | undefined\n let failedMessage: string | undefined\n let handlePrimaryButton = handleDone\n switch (status) {\n case RouteExecutionStatus.Done: {\n title =\n subvariant === 'custom'\n ? t(\n `success.title.${subvariantOptions?.custom ?? 'checkout'}Successful`\n )\n : t(`success.title.${transactionType}Successful`)\n handlePrimaryButton = handleDone\n break\n }\n case RouteExecutionStatus.Done | RouteExecutionStatus.Partial: {\n title = t(`success.title.${transactionType}PartiallySuccessful`)\n primaryMessage = t('success.message.exchangePartiallySuccessful', {\n tool: route.steps.at(-1)?.toolDetails.name,\n tokenSymbol: route.steps.at(-1)?.action.toToken.symbol,\n })\n handlePrimaryButton = handlePartialDone\n break\n }\n case RouteExecutionStatus.Done | RouteExecutionStatus.Refunded: {\n title = t('success.title.refundIssued')\n primaryMessage = t('success.message.exchangePartiallySuccessful', {\n tool: route.steps.at(-1)?.toolDetails.name,\n tokenSymbol: route.steps.at(-1)?.action.toToken.symbol,\n })\n break\n }\n case RouteExecutionStatus.Failed: {\n const step = route.steps.find(\n (step) => step.execution?.status === 'FAILED'\n )\n if (!step) {\n break\n }\n const action = step.execution?.actions?.find(\n (action) => action.status === 'FAILED'\n ) || {\n status: 'FAILED',\n type: 'EXECUTION' as ExecutionActionType,\n error: step.execution?.error,\n } // synthetic action to represent a failed execution with no actions\n const actionMessage = getErrorMessage(t, getChainById, step, action)\n title = actionMessage.title\n failedMessage = actionMessage.message\n handlePrimaryButton = handleClose\n break\n }\n default:\n break\n }\n\n const showContractComponent =\n subvariant === 'custom' &&\n hasEnumFlag(status, RouteExecutionStatus.Done) &&\n (contractCompactComponent || contractSecondaryComponent)\n\n const VcComponent =\n status === RouteExecutionStatus.Done ? feeConfig?._vcComponent : undefined\n\n return (\n <Box\n ref={ref}\n sx={{\n p: 3,\n }}\n >\n {!showContractComponent ? (\n <CenterContainer>\n <IconCircle status={status} sx={{ mb: 1 }}>\n {status === RouteExecutionStatus.Idle ? (\n <InfoRounded color=\"primary\" />\n ) : null}\n {status === RouteExecutionStatus.Done ? (\n <Done color=\"success\" />\n ) : null}\n {hasEnumFlag(status, RouteExecutionStatus.Partial) ||\n hasEnumFlag(status, RouteExecutionStatus.Refunded) ? (\n <WarningRounded color=\"warning\" />\n ) : null}\n {hasEnumFlag(status, RouteExecutionStatus.Failed) ? (\n <ErrorRounded color=\"error\" />\n ) : null}\n </IconCircle>\n </CenterContainer>\n ) : null}\n <CenterContainer>\n <Typography\n sx={{\n py: 1,\n fontSize: 18,\n fontWeight: 700,\n }}\n >\n {title}\n </Typography>\n </CenterContainer>\n {showContractComponent ? (\n contractCompactComponent || contractSecondaryComponent\n ) : hasEnumFlag(status, RouteExecutionStatus.Failed) && failedMessage ? (\n <Typography\n sx={{\n py: 1,\n }}\n >\n {failedMessage}\n </Typography>\n ) : hasEnumFlag(status, RouteExecutionStatus.Done) ? (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n marginTop: 2,\n marginBottom: VcComponent ? 2 : 3,\n }}\n >\n <Card\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n padding: 2,\n }}\n >\n <CardTitle sx={{ padding: 0 }}>\n {hasEnumFlag(status, RouteExecutionStatus.Refunded)\n ? t('header.refunded')\n : t('header.received')}\n </CardTitle>\n <Token token={toToken} disableDescription={false} />\n {primaryMessage && (\n <Typography\n sx={{\n color: 'text.secondary',\n fontSize: '12px',\n lineHeight: '16px',\n fontWeight: 500,\n }}\n >\n {primaryMessage}\n </Typography>\n )}\n </Card>\n {VcComponent ? <VcComponent route={route} /> : null}\n </Box>\n ) : null}\n <Box sx={{ display: 'flex', marginTop: 2, gap: 1.5 }}>\n {hasEnumFlag(status, RouteExecutionStatus.Done) ? (\n <Button variant=\"text\" onClick={handleSeeDetails} fullWidth>\n {t('button.seeDetails')}\n </Button>\n ) : null}\n <Button variant=\"contained\" fullWidth onClick={handlePrimaryButton}>\n {status === RouteExecutionStatus.Idle ? t('button.ok') : null}\n {hasEnumFlag(status, RouteExecutionStatus.Done)\n ? t('button.done')\n : null}\n {status === RouteExecutionStatus.Failed\n ? t('button.seeDetails')\n : null}\n </Button>\n </Box>\n </Box>\n )\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"StatusBottomSheet.style.js","names":[],"sources":["../../../../src/pages/TransactionPage/StatusBottomSheet.style.tsx"],"sourcesContent":["import type { Theme } from '@mui/material'\nimport { Box, styled } from '@mui/material'\nimport type React from 'react'\nimport { RouteExecutionStatus } from '../../stores/routes/types.js'\n\ntype StatusColor = RouteExecutionStatus | 'warning'\n\nconst getStatusColor = (status: StatusColor, theme: Theme) => {\n switch (status) {\n case RouteExecutionStatus.Done:\n return {\n color: theme.vars.palette.success.main,\n alpha: 0.12,\n lightDarken: 0,\n darkDarken: 0,\n }\n case RouteExecutionStatus.Failed:\n return {\n color: theme.vars.palette.error.main,\n alpha: 0.12,\n lightDarken: 0,\n darkDarken: 0,\n }\n case RouteExecutionStatus.Done | RouteExecutionStatus.Partial:\n case RouteExecutionStatus.Done | RouteExecutionStatus.Refunded:\n case 'warning':\n return {\n color: theme.vars.palette.warning.main,\n alpha: 0.48,\n lightDarken: 0.32,\n darkDarken: 0,\n }\n default:\n return {\n color: theme.vars.palette.primary.main,\n alpha: 0.12,\n lightDarken: 0,\n darkDarken: 0,\n }\n }\n}\n\nexport const CenterContainer: React.FC<\n React.ComponentProps<typeof Box> & { status?: StatusColor }\n> = styled(Box)(() => ({\n display: 'grid',\n placeItems: 'center',\n position: 'relative',\n}))\n\nexport const IconCircle: React.FC<\n React.ComponentProps<typeof Box> & { status?: StatusColor }\n> = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'status',\n})<{ status?: StatusColor }>(\n ({ theme, status = RouteExecutionStatus.Idle }) => {\n const statusConfig = getStatusColor(status, theme)\n\n return {\n backgroundColor: `color-mix(in srgb, ${statusConfig.color} ${statusConfig.alpha * 100}%, transparent)`,\n borderRadius: '50%',\n width: 72,\n height: 72,\n display: 'grid',\n position: 'relative',\n placeItems: 'center',\n '& > svg': {\n color: `color-mix(in srgb, ${statusConfig.color} ${(1 - statusConfig.lightDarken) * 100}%, black)`,\n width: 36,\n height: 36,\n },\n ...theme.applyStyles('dark', {\n '& > svg': {\n color: `color-mix(in srgb, ${statusConfig.color} ${(1 - statusConfig.darkDarken) * 100}%, black)`,\n width: 36,\n height: 36,\n },\n }),\n }\n }\n)\n"],"mappings":";;AAOA,MAAM,kBAAkB,QAAqB,UAAiB;AAC5D,SAAQ,QAAR;EACE,KAAA,EACE,QAAO;GACL,OAAO,MAAM,KAAK,QAAQ,QAAQ;GAClC,OAAO;GACP,aAAa;GACb,YAAY;GACb;EACH,KAAA,EACE,QAAO;GACL,OAAO,MAAM,KAAK,QAAQ,MAAM;GAChC,OAAO;GACP,aAAa;GACb,YAAY;GACb;EACH,KAAA;EACA,KAAA;EACA,KAAK,UACH,QAAO;GACL,OAAO,MAAM,KAAK,QAAQ,QAAQ;GAClC,OAAO;GACP,aAAa;GACb,YAAY;GACb;EACH,QACE,QAAO;GACL,OAAO,MAAM,KAAK,QAAQ,QAAQ;GAClC,OAAO;GACP,aAAa;GACb,YAAY;GACb;;;AAIP,MAAa,kBAET,OAAO,IAAI,QAAQ;CACrB,SAAS;CACT,YAAY;CACZ,UAAU;CACX,EAAE;AAEH,MAAa,aAET,OAAO,KAAK,EACd,oBAAoB,SAAS,SAAS,UACvC,CAAC,EACC,EAAE,OAAO,SAAA,QAAyC;CACjD,MAAM,eAAe,eAAe,QAAQ,MAAM;AAElD,QAAO;EACL,iBAAiB,sBAAsB,aAAa,MAAM,GAAG,aAAa,QAAQ,IAAI;EACtF,cAAc;EACd,OAAO;EACP,QAAQ;EACR,SAAS;EACT,UAAU;EACV,YAAY;EACZ,WAAW;GACT,OAAO,sBAAsB,aAAa,MAAM,IAAI,IAAI,aAAa,eAAe,IAAI;GACxF,OAAO;GACP,QAAQ;GACT;EACD,GAAG,MAAM,YAAY,QAAQ,EAC3B,WAAW;GACT,OAAO,sBAAsB,aAAa,MAAM,IAAI,IAAI,aAAa,cAAc,IAAI;GACvF,OAAO;GACP,QAAQ;GACT,EACF,CAAC;EACH;EAEJ"}
1
+ {"version":3,"file":"StatusBottomSheet.style.js","names":[],"sources":["../../../../src/pages/TransactionPage/StatusBottomSheet.style.tsx"],"sourcesContent":["import type { Theme } from '@mui/material'\nimport { Box, styled } from '@mui/material'\nimport type React from 'react'\nimport { RouteExecutionStatus } from '../../stores/routes/types.js'\n\ntype StatusColor = RouteExecutionStatus | 'warning'\n\nconst getStatusColor = (status: StatusColor, theme: Theme) => {\n switch (status) {\n case RouteExecutionStatus.Done:\n return {\n color: theme.vars.palette.success.main,\n alpha: 0.12,\n lightDarken: 0,\n darkDarken: 0,\n }\n case RouteExecutionStatus.Failed:\n return {\n color: theme.vars.palette.error.main,\n alpha: 0.12,\n lightDarken: 0,\n darkDarken: 0,\n }\n case RouteExecutionStatus.Done | RouteExecutionStatus.Partial:\n case RouteExecutionStatus.Done | RouteExecutionStatus.Refunded:\n case 'warning':\n return {\n color: theme.vars.palette.warning.main,\n alpha: 0.48,\n lightDarken: 0.32,\n darkDarken: 0,\n }\n default:\n return {\n color: theme.vars.palette.primary.main,\n alpha: 0.12,\n lightDarken: 0,\n darkDarken: 0,\n }\n }\n}\n\nexport const CenterContainer: React.FC<\n React.ComponentProps<typeof Box> & { status?: StatusColor }\n> = styled(Box)(() => ({\n display: 'grid',\n placeItems: 'center',\n position: 'relative',\n}))\n\nexport const IconCircle: React.FC<\n React.ComponentProps<typeof Box> & { status?: StatusColor }\n> = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'status',\n})<{ status?: StatusColor }>(\n ({ theme, status = RouteExecutionStatus.Idle }) => {\n const statusConfig = getStatusColor(status, theme)\n\n return {\n backgroundColor: `color-mix(in srgb, ${statusConfig.color} ${statusConfig.alpha * 100}%, transparent)`,\n borderRadius: '50%',\n width: 72,\n height: 72,\n display: 'grid',\n position: 'relative',\n placeItems: 'center',\n '& > svg': {\n color: `color-mix(in srgb, ${statusConfig.color} ${(1 - statusConfig.lightDarken) * 100}%, black)`,\n width: 36,\n height: 36,\n },\n ...theme.applyStyles('dark', {\n '& > svg': {\n color: `color-mix(in srgb, ${statusConfig.color} ${(1 - statusConfig.darkDarken) * 100}%, black)`,\n width: 36,\n height: 36,\n },\n }),\n }\n }\n)\n"],"mappings":";;AAOA,MAAM,kBAAkB,QAAqB,UAAiB;CAC5D,QAAQ,QAAR;EACE,KAAA,GACE,OAAO;GACL,OAAO,MAAM,KAAK,QAAQ,QAAQ;GAClC,OAAO;GACP,aAAa;GACb,YAAY;GACb;EACH,KAAA,GACE,OAAO;GACL,OAAO,MAAM,KAAK,QAAQ,MAAM;GAChC,OAAO;GACP,aAAa;GACb,YAAY;GACb;EACH,KAAA;EACA,KAAA;EACA,KAAK,WACH,OAAO;GACL,OAAO,MAAM,KAAK,QAAQ,QAAQ;GAClC,OAAO;GACP,aAAa;GACb,YAAY;GACb;EACH,SACE,OAAO;GACL,OAAO,MAAM,KAAK,QAAQ,QAAQ;GAClC,OAAO;GACP,aAAa;GACb,YAAY;GACb;;;AAIP,MAAa,kBAET,OAAO,IAAI,QAAQ;CACrB,SAAS;CACT,YAAY;CACZ,UAAU;CACX,EAAE;AAEH,MAAa,aAET,OAAO,KAAK,EACd,oBAAoB,SAAS,SAAS,UACvC,CAAC,EACC,EAAE,OAAO,SAAA,QAAyC;CACjD,MAAM,eAAe,eAAe,QAAQ,MAAM;CAElD,OAAO;EACL,iBAAiB,sBAAsB,aAAa,MAAM,GAAG,aAAa,QAAQ,IAAI;EACtF,cAAc;EACd,OAAO;EACP,QAAQ;EACR,SAAS;EACT,UAAU;EACV,YAAY;EACZ,WAAW;GACT,OAAO,sBAAsB,aAAa,MAAM,IAAI,IAAI,aAAa,eAAe,IAAI;GACxF,OAAO;GACP,QAAQ;GACT;EACD,GAAG,MAAM,YAAY,QAAQ,EAC3B,WAAW;GACT,OAAO,sBAAsB,aAAa,MAAM,IAAI,IAAI,aAAa,cAAc,IAAI;GACvF,OAAO;GACP,QAAQ;GACT,EACF,CAAC;EACH;EAEJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"TokenValueBottomSheet.js","names":[],"sources":["../../../../src/pages/TransactionPage/TokenValueBottomSheet.tsx"],"sourcesContent":["import type { Route } from '@lifi/sdk'\nimport WarningRounded from '@mui/icons-material/WarningRounded'\nimport {\n Box,\n Button,\n Checkbox,\n FormControlLabel,\n Typography,\n} 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 { useSetContentHeight } from '../../hooks/useSetContentHeight.js'\nimport { getAccumulatedFeeCostsBreakdown } from '../../utils/fees.js'\nimport { CenterContainer, IconCircle } from './StatusBottomSheet.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 return (\n <Box\n ref={ref}\n sx={{\n p: 3,\n }}\n >\n <CenterContainer>\n <IconCircle status=\"warning\" sx={{ mb: 1 }}>\n <WarningRounded color=\"warning\" />\n </IconCircle>\n <Typography\n sx={{\n py: 1,\n fontSize: 18,\n fontWeight: 700,\n }}\n >\n {t('warning.title.highValueLoss')}\n </Typography>\n </CenterContainer>\n <Typography\n sx={{\n py: 1,\n }}\n >\n {t('warning.message.highValueLoss')}\n </Typography>\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n mt: 1,\n }}\n >\n <Typography>{t('main.sending')}</Typography>\n <Typography\n sx={{\n fontWeight: 600,\n }}\n >\n {t('format.currency', { value: route.fromAmountUSD })}\n </Typography>\n </Box>\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n mt: 0.25,\n }}\n >\n <Typography>{t('main.fees.network')}</Typography>\n <FeeBreakdownTooltip gasCosts={gasCosts} gasless={!gasCostUSD}>\n <Typography\n sx={{\n fontWeight: 600,\n }}\n >\n {!gasCostUSD\n ? t('main.fees.free')\n : t('format.currency', { value: gasCostUSD })}\n </Typography>\n </FeeBreakdownTooltip>\n </Box>\n {feeCostUSD ? (\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n mt: 0.25,\n }}\n >\n <Typography>{t('main.fees.provider')}</Typography>\n <FeeBreakdownTooltip feeCosts={feeCosts}>\n <Typography\n sx={{\n fontWeight: 600,\n }}\n >\n {t('format.currency', { value: feeCostUSD })}\n </Typography>\n </FeeBreakdownTooltip>\n </Box>\n ) : null}\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n mt: 0.25,\n }}\n >\n <Typography>{t('main.receiving')}</Typography>\n <Typography\n sx={{\n fontWeight: 600,\n }}\n >\n {t('format.currency', { value: route.toAmountUSD })}\n </Typography>\n </Box>\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n mt: 0.25,\n }}\n >\n <Typography>{t('main.valueLoss')}</Typography>\n <Typography\n sx={{\n fontWeight: 600,\n }}\n >\n {calculateValueLossPercentage(\n fromAmountUSD,\n toAmountUSD,\n gasCostUSD,\n feeCostUSD\n )}\n %\n </Typography>\n </Box>\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 <Box\n sx={{\n display: 'flex',\n mt: 1,\n }}\n >\n <Button variant=\"text\" onClick={onCancel} fullWidth>\n {t('button.cancel')}\n </Button>\n <Box\n sx={{\n display: 'flex',\n p: 1,\n }}\n />\n <Button\n variant=\"contained\"\n onClick={onContinue}\n disabled={!accepted}\n fullWidth\n >\n {t('button.continue')}\n </Button>\n </Box>\n </Box>\n )\n}\n"],"mappings":";;;;;;;;;;;;AA0BA,MAAa,wBAET,YACD,EAAE,OAAO,YAAY,YAAY,QAAQ;CACxC,MAAM,qBAAqB;AACvB,MAAmC,SAAS,OAAO;AACrD,cAAY;;AAGd,QACE,oBAAC,aAAD;EAAkB;EAAK,SAAS;YAC9B,oBAAC,8BAAD;GACS;GACK;GACZ,UAAU;GACV,CAAA;EACU,CAAA;EAGnB;AAED,MAAM,gCAAsE,EAC1E,OACA,UACA,iBACI;CACJ,MAAM,CAAC,UAAU,eAAe,SAAS,MAAM;CAC/C,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,MAAM,OAAoB,KAAK;AACrC,qBAAoB,IAAI;CACxB,MAAM,EAAE,UAAU,UAAU,YAAY,eACtC,gCAAgC,MAAM;CACxC,MAAM,gBAAgB,OAAO,WAAW,MAAM,cAAc;CAC5D,MAAM,cAAc,OAAO,WAAW,MAAM,YAAY;AACxD,QACE,qBAAC,KAAD;EACO;EACL,IAAI,EACF,GAAG,GACJ;YAJH;GAME,qBAAC,iBAAD,EAAA,UAAA,CACE,oBAAC,YAAD;IAAY,QAAO;IAAU,IAAI,EAAE,IAAI,GAAG;cACxC,oBAAC,gBAAD,EAAgB,OAAM,WAAY,CAAA;IACvB,CAAA,EACb,oBAAC,YAAD;IACE,IAAI;KACF,IAAI;KACJ,UAAU;KACV,YAAY;KACb;cAEA,EAAE,8BAA8B;IACtB,CAAA,CACG,EAAA,CAAA;GAClB,oBAAC,YAAD;IACE,IAAI,EACF,IAAI,GACL;cAEA,EAAE,gCAAgC;IACxB,CAAA;GACb,qBAAC,KAAD;IACE,IAAI;KACF,SAAS;KACT,gBAAgB;KAChB,IAAI;KACL;cALH,CAOE,oBAAC,YAAD,EAAA,UAAa,EAAE,eAAe,EAAc,CAAA,EAC5C,oBAAC,YAAD;KACE,IAAI,EACF,YAAY,KACb;eAEA,EAAE,mBAAmB,EAAE,OAAO,MAAM,eAAe,CAAC;KAC1C,CAAA,CACT;;GACN,qBAAC,KAAD;IACE,IAAI;KACF,SAAS;KACT,gBAAgB;KAChB,IAAI;KACL;cALH,CAOE,oBAAC,YAAD,EAAA,UAAa,EAAE,oBAAoB,EAAc,CAAA,EACjD,oBAAC,qBAAD;KAA+B;KAAU,SAAS,CAAC;eACjD,oBAAC,YAAD;MACE,IAAI,EACF,YAAY,KACb;gBAEA,CAAC,aACE,EAAE,iBAAiB,GACnB,EAAE,mBAAmB,EAAE,OAAO,YAAY,CAAC;MACpC,CAAA;KACO,CAAA,CAClB;;GACL,aACC,qBAAC,KAAD;IACE,IAAI;KACF,SAAS;KACT,gBAAgB;KAChB,IAAI;KACL;cALH,CAOE,oBAAC,YAAD,EAAA,UAAa,EAAE,qBAAqB,EAAc,CAAA,EAClD,oBAAC,qBAAD;KAA+B;eAC7B,oBAAC,YAAD;MACE,IAAI,EACF,YAAY,KACb;gBAEA,EAAE,mBAAmB,EAAE,OAAO,YAAY,CAAC;MACjC,CAAA;KACO,CAAA,CAClB;QACJ;GACJ,qBAAC,KAAD;IACE,IAAI;KACF,SAAS;KACT,gBAAgB;KAChB,IAAI;KACL;cALH,CAOE,oBAAC,YAAD,EAAA,UAAa,EAAE,iBAAiB,EAAc,CAAA,EAC9C,oBAAC,YAAD;KACE,IAAI,EACF,YAAY,KACb;eAEA,EAAE,mBAAmB,EAAE,OAAO,MAAM,aAAa,CAAC;KACxC,CAAA,CACT;;GACN,qBAAC,KAAD;IACE,IAAI;KACF,SAAS;KACT,gBAAgB;KAChB,IAAI;KACL;cALH,CAOE,oBAAC,YAAD,EAAA,UAAa,EAAE,iBAAiB,EAAc,CAAA,EAC9C,qBAAC,YAAD;KACE,IAAI,EACF,YAAY,KACb;eAHH,CAKG,6BACC,eACA,aACA,YACA,WACD,EAAC,IAES;OACT;;GACN,oBAAC,kBAAD;IACE,SACE,oBAAC,UAAD;KACE,SAAS;KACT,WAAW,GAAG,YAAY,YAAY,QAAQ;KAC9C,CAAA;IAEJ,OAAO,EAAE,iCAAiC;IAC1C,IAAI,EAAE,IAAI,GAAG;IACb,CAAA;GACF,qBAAC,KAAD;IACE,IAAI;KACF,SAAS;KACT,IAAI;KACL;cAJH;KAME,oBAAC,QAAD;MAAQ,SAAQ;MAAO,SAAS;MAAU,WAAA;gBACvC,EAAE,gBAAgB;MACZ,CAAA;KACT,oBAAC,KAAD,EACE,IAAI;MACF,SAAS;MACT,GAAG;MACJ,EACD,CAAA;KACF,oBAAC,QAAD;MACE,SAAQ;MACR,SAAS;MACT,UAAU,CAAC;MACX,WAAA;gBAEC,EAAE,kBAAkB;MACd,CAAA;KACL;;GACF"}
1
+ {"version":3,"file":"TokenValueBottomSheet.js","names":[],"sources":["../../../../src/pages/TransactionPage/TokenValueBottomSheet.tsx"],"sourcesContent":["import type { Route } from '@lifi/sdk'\nimport WarningRounded from '@mui/icons-material/WarningRounded'\nimport {\n Box,\n Button,\n Checkbox,\n FormControlLabel,\n Typography,\n} 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 { useSetContentHeight } from '../../hooks/useSetContentHeight.js'\nimport { getAccumulatedFeeCostsBreakdown } from '../../utils/fees.js'\nimport { CenterContainer, IconCircle } from './StatusBottomSheet.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 return (\n <Box\n ref={ref}\n sx={{\n p: 3,\n }}\n >\n <CenterContainer>\n <IconCircle status=\"warning\" sx={{ mb: 1 }}>\n <WarningRounded color=\"warning\" />\n </IconCircle>\n <Typography\n sx={{\n py: 1,\n fontSize: 18,\n fontWeight: 700,\n }}\n >\n {t('warning.title.highValueLoss')}\n </Typography>\n </CenterContainer>\n <Typography\n sx={{\n py: 1,\n }}\n >\n {t('warning.message.highValueLoss')}\n </Typography>\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n mt: 1,\n }}\n >\n <Typography>{t('main.sending')}</Typography>\n <Typography\n sx={{\n fontWeight: 600,\n }}\n >\n {t('format.currency', { value: route.fromAmountUSD })}\n </Typography>\n </Box>\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n mt: 0.25,\n }}\n >\n <Typography>{t('main.fees.network')}</Typography>\n <FeeBreakdownTooltip gasCosts={gasCosts} gasless={!gasCostUSD}>\n <Typography\n sx={{\n fontWeight: 600,\n }}\n >\n {!gasCostUSD\n ? t('main.fees.free')\n : t('format.currency', { value: gasCostUSD })}\n </Typography>\n </FeeBreakdownTooltip>\n </Box>\n {feeCostUSD ? (\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n mt: 0.25,\n }}\n >\n <Typography>{t('main.fees.provider')}</Typography>\n <FeeBreakdownTooltip feeCosts={feeCosts}>\n <Typography\n sx={{\n fontWeight: 600,\n }}\n >\n {t('format.currency', { value: feeCostUSD })}\n </Typography>\n </FeeBreakdownTooltip>\n </Box>\n ) : null}\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n mt: 0.25,\n }}\n >\n <Typography>{t('main.receiving')}</Typography>\n <Typography\n sx={{\n fontWeight: 600,\n }}\n >\n {t('format.currency', { value: route.toAmountUSD })}\n </Typography>\n </Box>\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n mt: 0.25,\n }}\n >\n <Typography>{t('main.valueLoss')}</Typography>\n <Typography\n sx={{\n fontWeight: 600,\n }}\n >\n {calculateValueLossPercentage(\n fromAmountUSD,\n toAmountUSD,\n gasCostUSD,\n feeCostUSD\n )}\n %\n </Typography>\n </Box>\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 <Box\n sx={{\n display: 'flex',\n mt: 1,\n }}\n >\n <Button variant=\"text\" onClick={onCancel} fullWidth>\n {t('button.cancel')}\n </Button>\n <Box\n sx={{\n display: 'flex',\n p: 1,\n }}\n />\n <Button\n variant=\"contained\"\n onClick={onContinue}\n disabled={!accepted}\n fullWidth\n >\n {t('button.continue')}\n </Button>\n </Box>\n </Box>\n )\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionPage.js","names":[],"sources":["../../../../src/pages/TransactionPage/TransactionPage.tsx"],"sourcesContent":["import type { ExchangeRateUpdateParams } from '@lifi/sdk'\nimport Delete from '@mui/icons-material/Delete'\nimport { Box, Button, Tooltip } from '@mui/material'\nimport { useLocation, useNavigate } from '@tanstack/react-router'\nimport { type JSX, useMemo, useRef, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport type { BottomSheetBase } from '../../components/BottomSheet/types.js'\nimport { ContractComponent } from '../../components/ContractComponent/ContractComponent.js'\nimport { WarningMessages } from '../../components/Messages/WarningMessages.js'\nimport { PageContainer } from '../../components/PageContainer.js'\nimport { getStepList } from '../../components/Step/StepList.js'\nimport { TransactionDetails } from '../../components/TransactionDetails.js'\nimport { useAddressActivity } from '../../hooks/useAddressActivity.js'\nimport { useHeader } from '../../hooks/useHeader.js'\nimport { useNavigateBack } from '../../hooks/useNavigateBack.js'\nimport { useRouteExecution } from '../../hooks/useRouteExecution.js'\nimport { useWidgetEvents } from '../../hooks/useWidgetEvents.js'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport { useFieldActions } from '../../stores/form/useFieldActions.js'\nimport { useHeaderStore } from '../../stores/header/useHeaderStore.js'\nimport { RouteExecutionStatus } from '../../stores/routes/types.js'\nimport { WidgetEvent } from '../../types/events.js'\nimport { HiddenUI } from '../../types/widget.js'\nimport { getAccumulatedFeeCostsBreakdown } from '../../utils/fees.js'\nimport { navigationRoutes } from '../../utils/navigationRoutes.js'\nimport { ConfirmToAddressSheet } from './ConfirmToAddressSheet.js'\nimport type { ExchangeRateBottomSheetBase } from './ExchangeRateBottomSheet.js'\nimport { ExchangeRateBottomSheet } from './ExchangeRateBottomSheet.js'\nimport { RouteTracker } from './RouteTracker.js'\nimport { StartTransactionButton } from './StartTransactionButton.js'\nimport { StatusBottomSheet } from './StatusBottomSheet.js'\nimport { TokenValueBottomSheet } from './TokenValueBottomSheet.js'\nimport {\n calculateValueLossPercentage,\n getTokenValueLossThreshold,\n} from './utils.js'\n\nexport const TransactionPage = (): JSX.Element | null => {\n const { t } = useTranslation()\n const { setFieldValue } = useFieldActions()\n const emitter = useWidgetEvents()\n const setBackAction = useHeaderStore((state) => state.setBackAction)\n const navigate = useNavigate()\n const navigateBack = useNavigateBack()\n const {\n subvariant,\n subvariantOptions,\n contractSecondaryComponent,\n hiddenUI,\n } = useWidgetConfig()\n const { search }: any = useLocation()\n const stateRouteId = search?.routeId\n const [routeId, setRouteId] = useState<string>(stateRouteId)\n const [routeRefreshing, setRouteRefreshing] = useState(false)\n\n const tokenValueBottomSheetRef = useRef<BottomSheetBase>(null)\n const exchangeRateBottomSheetRef = useRef<ExchangeRateBottomSheetBase>(null)\n const confirmToAddressSheetRef = useRef<BottomSheetBase>(null)\n\n const onAcceptExchangeRateUpdate = (\n resolver: (value: boolean) => void,\n data: ExchangeRateUpdateParams\n ) => {\n exchangeRateBottomSheetRef.current?.open(resolver, data)\n }\n\n const { route, status, executeRoute, restartRoute, deleteRoute } =\n useRouteExecution({\n routeId: routeId,\n onAcceptExchangeRateUpdate,\n })\n\n const {\n toAddress,\n hasActivity,\n isLoading: isLoadingAddressActivity,\n isFetched: isActivityAddressFetched,\n } = useAddressActivity(route?.toChainId)\n\n const getHeaderTitle = () => {\n if (subvariant === 'custom') {\n return t(`header.${subvariantOptions?.custom ?? 'checkout'}`)\n }\n if (route) {\n const transactionType =\n route.fromChainId === route.toChainId ? 'swap' : 'bridge'\n return status === RouteExecutionStatus.Idle\n ? t(`button.${transactionType}Review`)\n : t(`header.${transactionType}`)\n }\n\n return t('header.exchange')\n }\n\n const headerAction = useMemo(\n () =>\n status === RouteExecutionStatus.Idle ? (\n <RouteTracker\n observableRouteId={stateRouteId}\n onChange={setRouteId}\n onFetching={setRouteRefreshing}\n />\n ) : undefined,\n [stateRouteId, status]\n )\n\n useHeader(getHeaderTitle(), headerAction)\n\n if (!route) {\n return null\n }\n\n const handleExecuteRoute = () => {\n if (tokenValueBottomSheetRef.current?.isOpen()) {\n const { gasCostUSD, feeCostUSD } = getAccumulatedFeeCostsBreakdown(route)\n const fromAmountUSD = Number.parseFloat(route.fromAmountUSD)\n const toAmountUSD = Number.parseFloat(route.toAmountUSD)\n emitter.emit(WidgetEvent.RouteHighValueLoss, {\n fromAmountUSD,\n toAmountUSD,\n gasCostUSD,\n feeCostUSD,\n valueLoss: calculateValueLossPercentage(\n fromAmountUSD,\n toAmountUSD,\n gasCostUSD,\n feeCostUSD\n ),\n })\n }\n tokenValueBottomSheetRef.current?.close()\n executeRoute()\n setFieldValue('fromAmount', '')\n if (subvariant === 'custom') {\n setFieldValue('fromToken', '')\n setFieldValue('toToken', '')\n }\n // Once transaction is started, set the back action to navigate to the home page\n setBackAction(() => {\n navigate({ to: navigationRoutes.home, replace: true })\n })\n }\n\n const handleStartClick = async () => {\n if (status === RouteExecutionStatus.Idle) {\n if (\n toAddress &&\n !hasActivity &&\n !isLoadingAddressActivity &&\n isActivityAddressFetched &&\n !hiddenUI?.includes(HiddenUI.LowAddressActivityConfirmation)\n ) {\n confirmToAddressSheetRef.current?.open()\n return\n }\n\n const { gasCostUSD, feeCostUSD } = getAccumulatedFeeCostsBreakdown(route)\n const fromAmountUSD = Number.parseFloat(route.fromAmountUSD)\n const toAmountUSD = Number.parseFloat(route.toAmountUSD)\n const tokenValueLossThresholdExceeded = getTokenValueLossThreshold(\n fromAmountUSD,\n toAmountUSD,\n gasCostUSD,\n feeCostUSD\n )\n if (tokenValueLossThresholdExceeded && subvariant !== 'custom') {\n tokenValueBottomSheetRef.current?.open()\n } else {\n handleExecuteRoute()\n }\n }\n if (status === RouteExecutionStatus.Failed) {\n restartRoute()\n }\n }\n\n const handleRemoveRoute = () => {\n navigateBack()\n deleteRoute()\n }\n\n const getButtonText = (): string => {\n switch (status) {\n case RouteExecutionStatus.Idle:\n switch (subvariant) {\n case 'custom':\n return subvariantOptions?.custom === 'deposit'\n ? t('button.deposit')\n : t('button.buy')\n case 'refuel':\n return t('button.startBridging')\n default: {\n const transactionType =\n route.fromChainId === route.toChainId ? 'Swapping' : 'Bridging'\n return t(`button.start${transactionType}`)\n }\n }\n case RouteExecutionStatus.Failed:\n return t('button.tryAgain')\n default:\n return ''\n }\n }\n\n return (\n <PageContainer bottomGutters>\n {getStepList(route, subvariant)}\n {subvariant === 'custom' && contractSecondaryComponent ? (\n <ContractComponent sx={{ marginTop: 2 }}>\n {contractSecondaryComponent}\n </ContractComponent>\n ) : null}\n <TransactionDetails route={route} sx={{ marginTop: 2 }} />\n {status === RouteExecutionStatus.Idle ||\n status === RouteExecutionStatus.Failed ? (\n <>\n <WarningMessages sx={{ mt: 2 }} route={route} allowInteraction />\n <Box\n sx={{\n mt: 2,\n display: 'flex',\n }}\n >\n <StartTransactionButton\n text={getButtonText()}\n onClick={handleStartClick}\n route={route}\n loading={routeRefreshing || isLoadingAddressActivity}\n />\n {status === RouteExecutionStatus.Failed ? (\n <Tooltip\n title={t('button.clearTransaction')}\n placement=\"bottom-end\"\n >\n <Button\n onClick={handleRemoveRoute}\n sx={{\n minWidth: 48,\n marginLeft: 1,\n }}\n >\n <Delete />\n </Button>\n </Tooltip>\n ) : null}\n </Box>\n </>\n ) : null}\n {status ? <StatusBottomSheet status={status} route={route} /> : null}\n {subvariant !== 'custom' ? (\n <TokenValueBottomSheet\n route={route}\n ref={tokenValueBottomSheetRef}\n onContinue={handleExecuteRoute}\n />\n ) : null}\n <ExchangeRateBottomSheet ref={exchangeRateBottomSheetRef} />\n {!hiddenUI?.includes(HiddenUI.LowAddressActivityConfirmation) ? (\n <ConfirmToAddressSheet\n ref={confirmToAddressSheetRef}\n onContinue={handleExecuteRoute}\n toAddress={toAddress!}\n toChainId={route.toChainId!}\n />\n ) : null}\n </PageContainer>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"TransactionPage.js","names":[],"sources":["../../../../src/pages/TransactionPage/TransactionPage.tsx"],"sourcesContent":["import type { ExchangeRateUpdateParams } from '@lifi/sdk'\nimport Delete from '@mui/icons-material/Delete'\nimport { Box, Button, Tooltip } from '@mui/material'\nimport { useLocation, useNavigate } from '@tanstack/react-router'\nimport { type JSX, useMemo, useRef, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport type { BottomSheetBase } from '../../components/BottomSheet/types.js'\nimport { ContractComponent } from '../../components/ContractComponent/ContractComponent.js'\nimport { WarningMessages } from '../../components/Messages/WarningMessages.js'\nimport { PageContainer } from '../../components/PageContainer.js'\nimport { getStepList } from '../../components/Step/StepList.js'\nimport { TransactionDetails } from '../../components/TransactionDetails.js'\nimport { useAddressActivity } from '../../hooks/useAddressActivity.js'\nimport { useHeader } from '../../hooks/useHeader.js'\nimport { useNavigateBack } from '../../hooks/useNavigateBack.js'\nimport { useRouteExecution } from '../../hooks/useRouteExecution.js'\nimport { useWidgetEvents } from '../../hooks/useWidgetEvents.js'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport { useFieldActions } from '../../stores/form/useFieldActions.js'\nimport { useHeaderStore } from '../../stores/header/useHeaderStore.js'\nimport { RouteExecutionStatus } from '../../stores/routes/types.js'\nimport { WidgetEvent } from '../../types/events.js'\nimport { HiddenUI } from '../../types/widget.js'\nimport { getAccumulatedFeeCostsBreakdown } from '../../utils/fees.js'\nimport { navigationRoutes } from '../../utils/navigationRoutes.js'\nimport { ConfirmToAddressSheet } from './ConfirmToAddressSheet.js'\nimport type { ExchangeRateBottomSheetBase } from './ExchangeRateBottomSheet.js'\nimport { ExchangeRateBottomSheet } from './ExchangeRateBottomSheet.js'\nimport { RouteTracker } from './RouteTracker.js'\nimport { StartTransactionButton } from './StartTransactionButton.js'\nimport { StatusBottomSheet } from './StatusBottomSheet.js'\nimport { TokenValueBottomSheet } from './TokenValueBottomSheet.js'\nimport {\n calculateValueLossPercentage,\n getTokenValueLossThreshold,\n} from './utils.js'\n\nexport const TransactionPage = (): JSX.Element | null => {\n const { t } = useTranslation()\n const { setFieldValue } = useFieldActions()\n const emitter = useWidgetEvents()\n const setBackAction = useHeaderStore((state) => state.setBackAction)\n const navigate = useNavigate()\n const navigateBack = useNavigateBack()\n const {\n subvariant,\n subvariantOptions,\n contractSecondaryComponent,\n hiddenUI,\n } = useWidgetConfig()\n const { search }: any = useLocation()\n const stateRouteId = search?.routeId\n const [routeId, setRouteId] = useState<string>(stateRouteId)\n const [routeRefreshing, setRouteRefreshing] = useState(false)\n\n const tokenValueBottomSheetRef = useRef<BottomSheetBase>(null)\n const exchangeRateBottomSheetRef = useRef<ExchangeRateBottomSheetBase>(null)\n const confirmToAddressSheetRef = useRef<BottomSheetBase>(null)\n\n const onAcceptExchangeRateUpdate = (\n resolver: (value: boolean) => void,\n data: ExchangeRateUpdateParams\n ) => {\n exchangeRateBottomSheetRef.current?.open(resolver, data)\n }\n\n const { route, status, executeRoute, restartRoute, deleteRoute } =\n useRouteExecution({\n routeId: routeId,\n onAcceptExchangeRateUpdate,\n })\n\n const {\n toAddress,\n hasActivity,\n isLoading: isLoadingAddressActivity,\n isFetched: isActivityAddressFetched,\n } = useAddressActivity(route?.toChainId)\n\n const getHeaderTitle = () => {\n if (subvariant === 'custom') {\n return t(`header.${subvariantOptions?.custom ?? 'checkout'}`)\n }\n if (route) {\n const transactionType =\n route.fromChainId === route.toChainId ? 'swap' : 'bridge'\n return status === RouteExecutionStatus.Idle\n ? t(`button.${transactionType}Review`)\n : t(`header.${transactionType}`)\n }\n\n return t('header.exchange')\n }\n\n const headerAction = useMemo(\n () =>\n status === RouteExecutionStatus.Idle ? (\n <RouteTracker\n observableRouteId={stateRouteId}\n onChange={setRouteId}\n onFetching={setRouteRefreshing}\n />\n ) : undefined,\n [stateRouteId, status]\n )\n\n useHeader(getHeaderTitle(), headerAction)\n\n if (!route) {\n return null\n }\n\n const handleExecuteRoute = () => {\n if (tokenValueBottomSheetRef.current?.isOpen()) {\n const { gasCostUSD, feeCostUSD } = getAccumulatedFeeCostsBreakdown(route)\n const fromAmountUSD = Number.parseFloat(route.fromAmountUSD)\n const toAmountUSD = Number.parseFloat(route.toAmountUSD)\n emitter.emit(WidgetEvent.RouteHighValueLoss, {\n fromAmountUSD,\n toAmountUSD,\n gasCostUSD,\n feeCostUSD,\n valueLoss: calculateValueLossPercentage(\n fromAmountUSD,\n toAmountUSD,\n gasCostUSD,\n feeCostUSD\n ),\n })\n }\n tokenValueBottomSheetRef.current?.close()\n executeRoute()\n setFieldValue('fromAmount', '')\n if (subvariant === 'custom') {\n setFieldValue('fromToken', '')\n setFieldValue('toToken', '')\n }\n // Once transaction is started, set the back action to navigate to the home page\n setBackAction(() => {\n navigate({ to: navigationRoutes.home, replace: true })\n })\n }\n\n const handleStartClick = async () => {\n if (status === RouteExecutionStatus.Idle) {\n if (\n toAddress &&\n !hasActivity &&\n !isLoadingAddressActivity &&\n isActivityAddressFetched &&\n !hiddenUI?.includes(HiddenUI.LowAddressActivityConfirmation)\n ) {\n confirmToAddressSheetRef.current?.open()\n return\n }\n\n const { gasCostUSD, feeCostUSD } = getAccumulatedFeeCostsBreakdown(route)\n const fromAmountUSD = Number.parseFloat(route.fromAmountUSD)\n const toAmountUSD = Number.parseFloat(route.toAmountUSD)\n const tokenValueLossThresholdExceeded = getTokenValueLossThreshold(\n fromAmountUSD,\n toAmountUSD,\n gasCostUSD,\n feeCostUSD\n )\n if (tokenValueLossThresholdExceeded && subvariant !== 'custom') {\n tokenValueBottomSheetRef.current?.open()\n } else {\n handleExecuteRoute()\n }\n }\n if (status === RouteExecutionStatus.Failed) {\n restartRoute()\n }\n }\n\n const handleRemoveRoute = () => {\n navigateBack()\n deleteRoute()\n }\n\n const getButtonText = (): string => {\n switch (status) {\n case RouteExecutionStatus.Idle:\n switch (subvariant) {\n case 'custom':\n return subvariantOptions?.custom === 'deposit'\n ? t('button.deposit')\n : t('button.buy')\n case 'refuel':\n return t('button.startBridging')\n default: {\n const transactionType =\n route.fromChainId === route.toChainId ? 'Swapping' : 'Bridging'\n return t(`button.start${transactionType}`)\n }\n }\n case RouteExecutionStatus.Failed:\n return t('button.tryAgain')\n default:\n return ''\n }\n }\n\n return (\n <PageContainer bottomGutters>\n {getStepList(route, subvariant)}\n {subvariant === 'custom' && contractSecondaryComponent ? (\n <ContractComponent sx={{ marginTop: 2 }}>\n {contractSecondaryComponent}\n </ContractComponent>\n ) : null}\n <TransactionDetails route={route} sx={{ marginTop: 2 }} />\n {status === RouteExecutionStatus.Idle ||\n status === RouteExecutionStatus.Failed ? (\n <>\n <WarningMessages sx={{ mt: 2 }} route={route} allowInteraction />\n <Box\n sx={{\n mt: 2,\n display: 'flex',\n }}\n >\n <StartTransactionButton\n text={getButtonText()}\n onClick={handleStartClick}\n route={route}\n loading={routeRefreshing || isLoadingAddressActivity}\n />\n {status === RouteExecutionStatus.Failed ? (\n <Tooltip\n title={t('button.clearTransaction')}\n placement=\"bottom-end\"\n >\n <Button\n onClick={handleRemoveRoute}\n sx={{\n minWidth: 48,\n marginLeft: 1,\n }}\n >\n <Delete />\n </Button>\n </Tooltip>\n ) : null}\n </Box>\n </>\n ) : null}\n {status ? <StatusBottomSheet status={status} route={route} /> : null}\n {subvariant !== 'custom' ? (\n <TokenValueBottomSheet\n route={route}\n ref={tokenValueBottomSheetRef}\n onContinue={handleExecuteRoute}\n />\n ) : null}\n <ExchangeRateBottomSheet ref={exchangeRateBottomSheetRef} />\n {!hiddenUI?.includes(HiddenUI.LowAddressActivityConfirmation) ? (\n <ConfirmToAddressSheet\n ref={confirmToAddressSheetRef}\n onContinue={handleExecuteRoute}\n toAddress={toAddress!}\n toChainId={route.toChainId!}\n />\n ) : null}\n </PageContainer>\n )\n}\n"],"mappings":"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"}
@@ -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;AACX,QAAO,OAAO,aAET,eAAe,gBAAgB,aAAa,cAAc,KAC3D,KACA,QAAQ,EAAE,CACb;;AAGH,MAAa,8BACX,eACA,aACA,YACA,eACY;AACZ,KAAI,CAAC,iBAAiB,CAAC,YACrB,QAAO;AAET,QAAO,eAAe,gBAAgB,aAAa,cAAc"}
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,EAAE,CACb;;AAGH,MAAa,8BACX,eACA,aACA,YACA,eACY;CACZ,IAAI,CAAC,iBAAiB,CAAC,aACrB,OAAO;CAET,OAAO,eAAe,gBAAgB,aAAa,cAAc"}
@@ -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,iBAAiB;CAC1D,MAAM,EAAE,UAAU,kBAAkB,YAAY,CAAC,YAAY,gBAAgB,CAAC;CAC9E,MAAM,kBAAkB,OAAoB,KAAK;AA4EjD,QACE,qBAAC,iBAAD;EAAiB,MA3EE,cAAc;AACjC,OAAI,gBAAgB,SAAS;AAE3B,QAAI,YAAY,iBAAiB,aAAa,KAC5C,iBAAgB,QAAQ,kBACtB,UACA,eACA,eACA,MACA,KACD;AAEH,WAAO,gBAAgB;;GAKzB,MAAM,qBAAqB,oBACvB,OAAO,KAAK,kBAAkB,CAAC,QAC5B,QAAgB,CAAC,aAAa,SAAS,IAAmB,CAC5D,GACD,EAAE;GACN,MAAM,kBAAkB,YAAY,WAAW;GAC/C,MAAM,OAAO,eAAe;IAC1B,KAAK;IACL,aAAa;IACb,cAAc;IACd,eAAe,EAAE,aAAa,OAAO;IACrC,WAAW;KACT,IAAI,EACF,aAAa,2BACXA,IACA,mBAAmB,GACpB,EACF;KACD,GAAI,mBACF,oBAAoB,QACpB,iBAAiB,GACd,kBAAkB,EACjB,aAAa,eACd,EACF;KAEH,GAAG,mBAAmB,QACnB,KAAK,QAAQ;MACZ,MAAM,iBAAiB,oBAAoB;AAC3C,UAAI,eACF,KAAI,OAAO,EACT,aAAa,gBACd;AAEH,aAAO;QAET,EAAE,CAIH;KACF;IACD,WAAW,EACT,QAAQ,EAAE,EACX;IACD,mBAAmB;IACpB,CAAC;AAEF,QAAK,MAAM;AAEX,QAAK,SAAS,WAAW,UAAU,aAAa,uBAAuB;AACvE,QAAK,SAAS,WAAW,UAAU,eAAe,0BAA0B;AAC5E,QAAK,SAAS,WAAW,UAAU,WAAW,iBAAiB;AAC/D,mBAAgB,UAAU;AAC1B,UAAO;KACN;GAAC;GAAU;GAAmB,WAAW;GAAS;GAAc,CAAC;YAGlE,CACG,UACD,oBAAC,wBAAD,EAA0B,CAAA,CACV;;;AAKtB,MAAM,+BAAyC;CAC7C,MAAM,EAAE,cAAc,iBAAiB;CACvC,MAAM,CAAC,qBAAqB,YAAY,kBAAkB,UAAU,CAClE,MAAM,qBACN,MAAM,SACP,CAAC;CACF,MAAM,EAAE,qBAAqB,gBAAgB,cAAc;AAE3D,iBAAgB;EACd,MAAM,yBAAyB,WAAW;AAK1C,MAAI,EAFF,0BAA0B,2BAA2B,qBAGrD;EAGF,MAAM,iBAAiB,YAAY;AACjC,SAAM,YAAY,uBAAuB;AACzC,YAAS,uBAAuB,uBAAuB;;AAGzD,kBAAgB;IACf;EAAC,WAAW;EAAS;EAAU;EAAqB;EAAY,CAAC;AAEpE,QAAO"}
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,iBAAiB;CAC1D,MAAM,EAAE,UAAU,kBAAkB,YAAY,CAAC,YAAY,gBAAgB,CAAC;CAC9E,MAAM,kBAAkB,OAAoB,KAAK;CA4EjD,OACE,qBAAC,iBAAD;EAAiB,MA3EE,cAAc;GACjC,IAAI,gBAAgB,SAAS;IAE3B,IAAI,YAAY,iBAAiB,aAAa,MAC5C,gBAAgB,QAAQ,kBACtB,UACA,eACA,eACA,MACA,KACD;IAEH,OAAO,gBAAgB;;GAKzB,MAAM,qBAAqB,oBACvB,OAAO,KAAK,kBAAkB,CAAC,QAC5B,QAAgB,CAAC,aAAa,SAAS,IAAmB,CAC5D,GACD,EAAE;GACN,MAAM,kBAAkB,YAAY,WAAW;GAC/C,MAAM,OAAO,eAAe;IAC1B,KAAK;IACL,aAAa;IACb,cAAc;IACd,eAAe,EAAE,aAAa,OAAO;IACrC,WAAW;KACT,IAAI,EACF,aAAa,2BACXA,IACA,mBAAmB,GACpB,EACF;KACD,GAAI,mBACF,oBAAoB,QACpB,iBAAiB,GACd,kBAAkB,EACjB,aAAa,eACd,EACF;KAEH,GAAG,mBAAmB,QACnB,KAAK,QAAQ;MACZ,MAAM,iBAAiB,oBAAoB;MAC3C,IAAI,gBACF,IAAI,OAAO,EACT,aAAa,gBACd;MAEH,OAAO;QAET,EAAE,CAIH;KACF;IACD,WAAW,EACT,QAAQ,EAAE,EACX;IACD,mBAAmB;IACpB,CAAC;GAEF,KAAK,MAAM;GAEX,KAAK,SAAS,WAAW,UAAU,aAAa,uBAAuB;GACvE,KAAK,SAAS,WAAW,UAAU,eAAe,0BAA0B;GAC5E,KAAK,SAAS,WAAW,UAAU,WAAW,iBAAiB;GAC/D,gBAAgB,UAAU;GAC1B,OAAO;KACN;GAAC;GAAU;GAAmB,WAAW;GAAS;GAAc,CAG9B;YAAnC,CACG,UACD,oBAAC,wBAAD,EAA0B,CAAA,CACV;;;AAKtB,MAAM,+BAAyC;CAC7C,MAAM,EAAE,cAAc,iBAAiB;CACvC,MAAM,CAAC,qBAAqB,YAAY,kBAAkB,UAAU,CAClE,MAAM,qBACN,MAAM,SACP,CAAC;CACF,MAAM,EAAE,qBAAqB,gBAAgB,cAAc;CAE3D,gBAAgB;EACd,MAAM,yBAAyB,WAAW;EAK1C,IAAI,EAFF,0BAA0B,2BAA2B,sBAGrD;EAGF,MAAM,iBAAiB,YAAY;GACjC,MAAM,YAAY,uBAAuB;GACzC,SAAS,uBAAuB,uBAAuB;;EAGzD,gBAAgB;IACf;EAAC,WAAW;EAAS;EAAU;EAAqB;EAAY,CAAC;CAEpE,OAAO"}
@@ -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;AACJ,KAAI;AAEF,sBAD+B,MAAM,OAAO,cAAc,IAAI,SACpB;SACpC;AACN,qBAAmB,EAAE;;AAEvB,QAAO,2BAA2B,kBAAkB,uBAAuB;;AAG7E,SAAgB,2BACd,kBACA,wBACkB;AAClB,QAAO,yBACH,UAAU,kBAAkB,uBAAuB,GACnD"}
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;SACpC;EACN,mBAAmB,EAAE;;CAEvB,OAAO,2BAA2B,kBAAkB,uBAAuB;;AAG7E,SAAgB,2BACd,kBACA,wBACkB;CAClB,OAAO,yBACH,UAAU,kBAAkB,uBAAuB,GACnD"}
@@ -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;AAEJ,QAD4B,WAAWC,mBAA2B,GAEhE,WAEA,oBAACC,qBAAD;EAA6B,QAAQ;EAClC;EAC2B,CAAA"}
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,mBACb,GACxB,WAEA,oBAACC,qBAAD;EAA6B,QAAQ;EAClC;EAC2B,CAAA"}
@@ -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 fee,\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 || 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 fee,\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,EAAE,CAAc;AAElE,MAAa,qBAAgC,WAAW,iBAAiB;AAEzE,MAAa,qBAAqB,EAChC,eACoC;CACpC,MAAM,EACJ,WACA,QACA,YACA,WACA,KACA,UACA,eACA,aACE,iBAAiB;CAErB,MAAM,SAAoB,cAAc;AACtC,SAAO,aAAa;GAClB,GAAG;GACH;GACA,YAAY,cAAc,QAAQ,SAAS;GAC3C,cAAc;IACZ,KAAK,WAAW,OAAO;IACvB;IACA,OAAO;IACP;IACA,GAAG,WAAW;IACf;GACD,qBAAqB;GACrB,eAAe;GAChB,CAAC;IACD;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;AAEF,QACE,oBAAC,iBAAiB,UAAlB;EAA2B,OAAO;EAC/B;EACyB,CAAA"}
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 fee,\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 || 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 fee,\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,EAAE,CAAc;AAElE,MAAa,qBAAgC,WAAW,iBAAiB;AAEzE,MAAa,qBAAqB,EAChC,eACoC;CACpC,MAAM,EACJ,WACA,QACA,YACA,WACA,KACA,UACA,eACA,aACE,iBAAiB;CAErB,MAAM,SAAoB,cAAc;EACtC,OAAO,aAAa;GAClB,GAAG;GACH;GACA,YAAY,cAAc,QAAQ,SAAS;GAC3C,cAAc;IACZ,KAAK,WAAW,OAAO;IACvB;IACA,OAAO;IACP;IACA,GAAG,WAAW;IACf;GACD,qBAAqB;GACrB,eAAe;GAChB,CAAC;IACD;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,OACE,oBAAC,iBAAiB,UAAlB;EAA2B,OAAO;EAC/B;EACyB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeProvider.js","names":["ThemeProvider","MuiThemeProvider","createTheme"],"sources":["../../../../src/providers/ThemeProvider/ThemeProvider.tsx"],"sourcesContent":["import {\n ThemeProvider as MuiThemeProvider,\n useColorScheme,\n} from '@mui/material'\nimport { useEffect, useMemo } from 'react'\nimport { createTheme } from '../../themes/createTheme.js'\nimport { useWidgetConfig } from '../WidgetProvider/WidgetProvider.js'\n\nexport const ThemeProvider: React.FC<React.PropsWithChildren> = ({\n children,\n}) => {\n const { appearance: colorSchemeMode, theme: themeConfig } = useWidgetConfig()\n const { setMode } = useColorScheme()\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: setMode is stable\n useEffect(() => {\n if (colorSchemeMode) {\n setMode(colorSchemeMode)\n }\n }, [colorSchemeMode])\n\n const theme = useMemo(() => createTheme(themeConfig), [themeConfig])\n\n return (\n <MuiThemeProvider\n theme={theme}\n defaultMode={colorSchemeMode ?? 'system'}\n modeStorageKey=\"li.fi-widget-mode\"\n colorSchemeStorageKey=\"li.fi-widget-color-scheme\"\n disableTransitionOnChange\n >\n {children}\n </MuiThemeProvider>\n )\n}\n"],"mappings":";;;;;;AAQA,MAAaA,mBAAoD,EAC/D,eACI;CACJ,MAAM,EAAE,YAAY,iBAAiB,OAAO,gBAAgB,iBAAiB;CAC7E,MAAM,EAAE,YAAY,gBAAgB;AAGpC,iBAAgB;AACd,MAAI,gBACF,SAAQ,gBAAgB;IAEzB,CAAC,gBAAgB,CAAC;AAIrB,QACE,oBAACC,eAAD;EACE,OAJU,cAAcC,cAAY,YAAY,EAAE,CAAC,YAAY,CAAC;EAKhE,aAAa,mBAAmB;EAChC,gBAAe;EACf,uBAAsB;EACtB,2BAAA;EAEC;EACgB,CAAA"}
1
+ {"version":3,"file":"ThemeProvider.js","names":["ThemeProvider","MuiThemeProvider","createTheme"],"sources":["../../../../src/providers/ThemeProvider/ThemeProvider.tsx"],"sourcesContent":["import {\n ThemeProvider as MuiThemeProvider,\n useColorScheme,\n} from '@mui/material'\nimport { useEffect, useMemo } from 'react'\nimport { createTheme } from '../../themes/createTheme.js'\nimport { useWidgetConfig } from '../WidgetProvider/WidgetProvider.js'\n\nexport const ThemeProvider: React.FC<React.PropsWithChildren> = ({\n children,\n}) => {\n const { appearance: colorSchemeMode, theme: themeConfig } = useWidgetConfig()\n const { setMode } = useColorScheme()\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: setMode is stable\n useEffect(() => {\n if (colorSchemeMode) {\n setMode(colorSchemeMode)\n }\n }, [colorSchemeMode])\n\n const theme = useMemo(() => createTheme(themeConfig), [themeConfig])\n\n return (\n <MuiThemeProvider\n theme={theme}\n defaultMode={colorSchemeMode ?? 'system'}\n modeStorageKey=\"li.fi-widget-mode\"\n colorSchemeStorageKey=\"li.fi-widget-color-scheme\"\n disableTransitionOnChange\n >\n {children}\n </MuiThemeProvider>\n )\n}\n"],"mappings":";;;;;;AAQA,MAAaA,mBAAoD,EAC/D,eACI;CACJ,MAAM,EAAE,YAAY,iBAAiB,OAAO,gBAAgB,iBAAiB;CAC7E,MAAM,EAAE,YAAY,gBAAgB;CAGpC,gBAAgB;EACd,IAAI,iBACF,QAAQ,gBAAgB;IAEzB,CAAC,gBAAgB,CAAC;CAIrB,OACE,oBAACC,eAAD;EACE,OAJU,cAAcC,cAAY,YAAY,EAAE,CAAC,YAAY,CAInD;EACZ,aAAa,mBAAmB;EAChC,gBAAe;EACf,uBAAsB;EACtB,2BAAA;EAEC;EACgB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"WalletProvider.js","names":[],"sources":["../../../../src/providers/WalletProvider/WalletProvider.tsx"],"sourcesContent":["import { WalletManagementProviders } from '@lifi/wallet-management'\nimport type { WidgetProviderProps } from '@lifi/widget-provider'\nimport {\n type FC,\n type JSX,\n type PropsWithChildren,\n type ReactNode,\n useMemo,\n} from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useAvailableChains } from '../../hooks/useAvailableChains.js'\nimport { useInitializeSDKProviders } from '../../hooks/useInitializeSDKProviders.js'\nimport { useWidgetConfig } from '../WidgetProvider/WidgetProvider.js'\nimport { useExternalWalletProvider } from './useExternalWalletProvider.js'\n\ninterface WalletProviderProps extends PropsWithChildren {\n providers: ((props: PropsWithChildren<WidgetProviderProps>) => ReactNode)[]\n}\n\nexport const WalletProvider = ({\n children,\n providers,\n}: PropsWithChildren<WalletProviderProps>): JSX.Element => {\n const { walletConfig } = useWidgetConfig()\n const { chains } = useAvailableChains()\n const { i18n } = useTranslation()\n const { useExternalWalletProvidersOnly, internalChainTypes } =\n useExternalWalletProvider()\n\n if (\n !providers.length &&\n !useExternalWalletProvidersOnly &&\n process.env.NODE_ENV === 'development'\n ) {\n console.warn('No widget providers specified')\n }\n\n const effectiveProviders = useExternalWalletProvidersOnly ? [] : providers\n\n const walletManagementConfig = useMemo(\n () => ({\n locale: i18n.resolvedLanguage as never,\n enabledChainTypes: internalChainTypes,\n walletEcosystemsOrder: walletConfig?.walletEcosystemsOrder,\n }),\n [\n i18n.resolvedLanguage,\n internalChainTypes,\n walletConfig?.walletEcosystemsOrder,\n ]\n )\n\n return (\n <WalletManagementProviders\n config={walletManagementConfig}\n providers={effectiveProviders}\n chains={chains}\n forceInternalWalletManagement={\n walletConfig?.forceInternalWalletManagement\n }\n >\n <SDKProviderInitializer>{children}</SDKProviderInitializer>\n </WalletManagementProviders>\n )\n}\n\nconst SDKProviderInitializer: FC<PropsWithChildren> = ({ children }) => {\n useInitializeSDKProviders()\n return children\n}\n"],"mappings":";;;;;;;;;AAmBA,MAAa,kBAAkB,EAC7B,UACA,gBACyD;CACzD,MAAM,EAAE,iBAAiB,iBAAiB;CAC1C,MAAM,EAAE,WAAW,oBAAoB;CACvC,MAAM,EAAE,SAAS,gBAAgB;CACjC,MAAM,EAAE,gCAAgC,uBACtC,2BAA2B;AAE7B,KACE,CAAC,UAAU,UACX,CAAC,kCACD,QAAQ,IAAI,aAAa,cAEzB,SAAQ,KAAK,gCAAgC;CAG/C,MAAM,qBAAqB,iCAAiC,EAAE,GAAG;AAejE,QACE,oBAAC,2BAAD;EACE,QAf2B,eACtB;GACL,QAAQ,KAAK;GACb,mBAAmB;GACnB,uBAAuB,cAAc;GACtC,GACD;GACE,KAAK;GACL;GACA,cAAc;GACf,CACF;EAKG,WAAW;EACH;EACR,+BACE,cAAc;YAGhB,oBAAC,wBAAD,EAAyB,UAAkC,CAAA;EACjC,CAAA;;AAIhC,MAAM,0BAAiD,EAAE,eAAe;AACtE,4BAA2B;AAC3B,QAAO"}
1
+ {"version":3,"file":"WalletProvider.js","names":[],"sources":["../../../../src/providers/WalletProvider/WalletProvider.tsx"],"sourcesContent":["import { WalletManagementProviders } from '@lifi/wallet-management'\nimport type { WidgetProviderProps } from '@lifi/widget-provider'\nimport {\n type FC,\n type JSX,\n type PropsWithChildren,\n type ReactNode,\n useMemo,\n} from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useAvailableChains } from '../../hooks/useAvailableChains.js'\nimport { useInitializeSDKProviders } from '../../hooks/useInitializeSDKProviders.js'\nimport { useWidgetConfig } from '../WidgetProvider/WidgetProvider.js'\nimport { useExternalWalletProvider } from './useExternalWalletProvider.js'\n\ninterface WalletProviderProps extends PropsWithChildren {\n providers: ((props: PropsWithChildren<WidgetProviderProps>) => ReactNode)[]\n}\n\nexport const WalletProvider = ({\n children,\n providers,\n}: PropsWithChildren<WalletProviderProps>): JSX.Element => {\n const { walletConfig } = useWidgetConfig()\n const { chains } = useAvailableChains()\n const { i18n } = useTranslation()\n const { useExternalWalletProvidersOnly, internalChainTypes } =\n useExternalWalletProvider()\n\n if (\n !providers.length &&\n !useExternalWalletProvidersOnly &&\n process.env.NODE_ENV === 'development'\n ) {\n console.warn('No widget providers specified')\n }\n\n const effectiveProviders = useExternalWalletProvidersOnly ? [] : providers\n\n const walletManagementConfig = useMemo(\n () => ({\n locale: i18n.resolvedLanguage as never,\n enabledChainTypes: internalChainTypes,\n walletEcosystemsOrder: walletConfig?.walletEcosystemsOrder,\n }),\n [\n i18n.resolvedLanguage,\n internalChainTypes,\n walletConfig?.walletEcosystemsOrder,\n ]\n )\n\n return (\n <WalletManagementProviders\n config={walletManagementConfig}\n providers={effectiveProviders}\n chains={chains}\n forceInternalWalletManagement={\n walletConfig?.forceInternalWalletManagement\n }\n >\n <SDKProviderInitializer>{children}</SDKProviderInitializer>\n </WalletManagementProviders>\n )\n}\n\nconst SDKProviderInitializer: FC<PropsWithChildren> = ({ children }) => {\n useInitializeSDKProviders()\n return children\n}\n"],"mappings":";;;;;;;;;AAmBA,MAAa,kBAAkB,EAC7B,UACA,gBACyD;CACzD,MAAM,EAAE,iBAAiB,iBAAiB;CAC1C,MAAM,EAAE,WAAW,oBAAoB;CACvC,MAAM,EAAE,SAAS,gBAAgB;CACjC,MAAM,EAAE,gCAAgC,uBACtC,2BAA2B;CAE7B,IACE,CAAC,UAAU,UACX,CAAC,kCACD,QAAQ,IAAI,aAAa,eAEzB,QAAQ,KAAK,gCAAgC;CAG/C,MAAM,qBAAqB,iCAAiC,EAAE,GAAG;CAejE,OACE,oBAAC,2BAAD;EACE,QAf2B,eACtB;GACL,QAAQ,KAAK;GACb,mBAAmB;GACnB,uBAAuB,cAAc;GACtC,GACD;GACE,KAAK;GACL;GACA,cAAc;GACf,CAK+B;EAC9B,WAAW;EACH;EACR,+BACE,cAAc;YAGhB,oBAAC,wBAAD,EAAyB,UAAkC,CAAA;EACjC,CAAA;;AAIhC,MAAM,0BAAiD,EAAE,eAAe;CACtE,2BAA2B;CAC3B,OAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"useExternalWalletProvider.js","names":[],"sources":["../../../../src/providers/WalletProvider/useExternalWalletProvider.ts"],"sourcesContent":["import { ChainType } from '@lifi/sdk'\nimport {\n useBitcoinContext,\n useEthereumContext,\n useSolanaContext,\n useSuiContext,\n useTronContext,\n} from '@lifi/widget-provider'\nimport { useMemo } from 'react'\nimport { useWidgetConfig } from '../WidgetProvider/WidgetProvider.js'\n\ninterface ExternalWalletProvider {\n useExternalWalletProvidersOnly: boolean\n externalChainTypes: ChainType[]\n internalChainTypes: ChainType[]\n}\n\nconst internalChainTypes = [\n ChainType.EVM,\n ChainType.SVM,\n ChainType.UTXO,\n ChainType.MVM,\n ChainType.TVM,\n]\n\nexport function useExternalWalletProvider(): ExternalWalletProvider {\n const { walletConfig } = useWidgetConfig()\n const { isExternalContext: hasExternalEthereumContext } = useEthereumContext()\n const { isExternalContext: hasExternalSolanaContext } = useSolanaContext()\n const { isExternalContext: hasExternalBitcoinContext } = useBitcoinContext()\n const { isExternalContext: hasExternalSuiContext } = useSuiContext()\n const { isExternalContext: hasExternalTronContext } = useTronContext()\n const data = useMemo(() => {\n const providers: ChainType[] = []\n if (hasExternalEthereumContext) {\n providers.push(ChainType.EVM)\n }\n if (hasExternalSolanaContext) {\n providers.push(ChainType.SVM)\n }\n if (hasExternalBitcoinContext) {\n providers.push(ChainType.UTXO)\n }\n if (hasExternalSuiContext) {\n providers.push(ChainType.MVM)\n }\n if (hasExternalTronContext) {\n providers.push(ChainType.TVM)\n }\n const hasExternalProvider =\n hasExternalEthereumContext ||\n hasExternalSolanaContext ||\n hasExternalBitcoinContext ||\n hasExternalSuiContext ||\n hasExternalTronContext\n\n const useExternalWalletProvidersOnly =\n hasExternalProvider &&\n !walletConfig?.usePartialWalletManagement &&\n !walletConfig?.forceInternalWalletManagement\n return {\n useExternalWalletProvidersOnly,\n externalChainTypes: providers,\n internalChainTypes: internalChainTypes.filter(\n (chainType) => !providers.includes(chainType)\n ),\n }\n }, [\n hasExternalEthereumContext,\n hasExternalSolanaContext,\n hasExternalBitcoinContext,\n hasExternalSuiContext,\n hasExternalTronContext,\n walletConfig?.usePartialWalletManagement,\n walletConfig?.forceInternalWalletManagement,\n ])\n\n return data\n}\n"],"mappings":";;;;;AAiBA,MAAM,qBAAqB;CACzB,UAAU;CACV,UAAU;CACV,UAAU;CACV,UAAU;CACV,UAAU;CACX;AAED,SAAgB,4BAAoD;CAClE,MAAM,EAAE,iBAAiB,iBAAiB;CAC1C,MAAM,EAAE,mBAAmB,+BAA+B,oBAAoB;CAC9E,MAAM,EAAE,mBAAmB,6BAA6B,kBAAkB;CAC1E,MAAM,EAAE,mBAAmB,8BAA8B,mBAAmB;CAC5E,MAAM,EAAE,mBAAmB,0BAA0B,eAAe;CACpE,MAAM,EAAE,mBAAmB,2BAA2B,gBAAgB;AA8CtE,QA7Ca,cAAc;EACzB,MAAM,YAAyB,EAAE;AACjC,MAAI,2BACF,WAAU,KAAK,UAAU,IAAI;AAE/B,MAAI,yBACF,WAAU,KAAK,UAAU,IAAI;AAE/B,MAAI,0BACF,WAAU,KAAK,UAAU,KAAK;AAEhC,MAAI,sBACF,WAAU,KAAK,UAAU,IAAI;AAE/B,MAAI,uBACF,WAAU,KAAK,UAAU,IAAI;AAa/B,SAAO;GACL,iCAXA,8BACA,4BACA,6BACA,yBACA,2BAIA,CAAC,cAAc,8BACf,CAAC,cAAc;GAGf,oBAAoB;GACpB,oBAAoB,mBAAmB,QACpC,cAAc,CAAC,UAAU,SAAS,UAAU,CAC9C;GACF;IACA;EACD;EACA;EACA;EACA;EACA;EACA,cAAc;EACd,cAAc;EACf,CAAC"}
1
+ {"version":3,"file":"useExternalWalletProvider.js","names":[],"sources":["../../../../src/providers/WalletProvider/useExternalWalletProvider.ts"],"sourcesContent":["import { ChainType } from '@lifi/sdk'\nimport {\n useBitcoinContext,\n useEthereumContext,\n useSolanaContext,\n useSuiContext,\n useTronContext,\n} from '@lifi/widget-provider'\nimport { useMemo } from 'react'\nimport { useWidgetConfig } from '../WidgetProvider/WidgetProvider.js'\n\ninterface ExternalWalletProvider {\n useExternalWalletProvidersOnly: boolean\n externalChainTypes: ChainType[]\n internalChainTypes: ChainType[]\n}\n\nconst internalChainTypes = [\n ChainType.EVM,\n ChainType.SVM,\n ChainType.UTXO,\n ChainType.MVM,\n ChainType.TVM,\n]\n\nexport function useExternalWalletProvider(): ExternalWalletProvider {\n const { walletConfig } = useWidgetConfig()\n const { isExternalContext: hasExternalEthereumContext } = useEthereumContext()\n const { isExternalContext: hasExternalSolanaContext } = useSolanaContext()\n const { isExternalContext: hasExternalBitcoinContext } = useBitcoinContext()\n const { isExternalContext: hasExternalSuiContext } = useSuiContext()\n const { isExternalContext: hasExternalTronContext } = useTronContext()\n const data = useMemo(() => {\n const providers: ChainType[] = []\n if (hasExternalEthereumContext) {\n providers.push(ChainType.EVM)\n }\n if (hasExternalSolanaContext) {\n providers.push(ChainType.SVM)\n }\n if (hasExternalBitcoinContext) {\n providers.push(ChainType.UTXO)\n }\n if (hasExternalSuiContext) {\n providers.push(ChainType.MVM)\n }\n if (hasExternalTronContext) {\n providers.push(ChainType.TVM)\n }\n const hasExternalProvider =\n hasExternalEthereumContext ||\n hasExternalSolanaContext ||\n hasExternalBitcoinContext ||\n hasExternalSuiContext ||\n hasExternalTronContext\n\n const useExternalWalletProvidersOnly =\n hasExternalProvider &&\n !walletConfig?.usePartialWalletManagement &&\n !walletConfig?.forceInternalWalletManagement\n return {\n useExternalWalletProvidersOnly,\n externalChainTypes: providers,\n internalChainTypes: internalChainTypes.filter(\n (chainType) => !providers.includes(chainType)\n ),\n }\n }, [\n hasExternalEthereumContext,\n hasExternalSolanaContext,\n hasExternalBitcoinContext,\n hasExternalSuiContext,\n hasExternalTronContext,\n walletConfig?.usePartialWalletManagement,\n walletConfig?.forceInternalWalletManagement,\n ])\n\n return data\n}\n"],"mappings":";;;;;AAiBA,MAAM,qBAAqB;CACzB,UAAU;CACV,UAAU;CACV,UAAU;CACV,UAAU;CACV,UAAU;CACX;AAED,SAAgB,4BAAoD;CAClE,MAAM,EAAE,iBAAiB,iBAAiB;CAC1C,MAAM,EAAE,mBAAmB,+BAA+B,oBAAoB;CAC9E,MAAM,EAAE,mBAAmB,6BAA6B,kBAAkB;CAC1E,MAAM,EAAE,mBAAmB,8BAA8B,mBAAmB;CAC5E,MAAM,EAAE,mBAAmB,0BAA0B,eAAe;CACpE,MAAM,EAAE,mBAAmB,2BAA2B,gBAAgB;CA8CtE,OA7Ca,cAAc;EACzB,MAAM,YAAyB,EAAE;EACjC,IAAI,4BACF,UAAU,KAAK,UAAU,IAAI;EAE/B,IAAI,0BACF,UAAU,KAAK,UAAU,IAAI;EAE/B,IAAI,2BACF,UAAU,KAAK,UAAU,KAAK;EAEhC,IAAI,uBACF,UAAU,KAAK,UAAU,IAAI;EAE/B,IAAI,wBACF,UAAU,KAAK,UAAU,IAAI;EAa/B,OAAO;GACL,iCAXA,8BACA,4BACA,6BACA,yBACA,2BAIA,CAAC,cAAc,8BACf,CAAC,cAAc;GAGf,oBAAoB;GACpB,oBAAoB,mBAAmB,QACpC,cAAc,CAAC,UAAU,SAAS,UAAU,CAC9C;GACF;IACA;EACD;EACA;EACA;EACA;EACA;EACA,cAAc;EACd,cAAc;EACf,CAEU"}
@@ -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,cALqB;CACzC,WAAW;CACX,YAAY;CACb,CAEsE;AAEvE,MAAa,wBACX,WAAW,cAAc;AAE3B,MAAa,kBAER,EAAE,UAAU,QAAQ,mBAAmB;CAC1C,MAAM,YAAY,OAAO;CACzB,MAAM,EAAE,uBAAuB,oBAAoB;AAEnD,KAAI,CAAC,cAAc,WACjB,OAAM,IAAI,MAAM,+CAA6C;CAG/D,MAAM,QAAQ,cAAkC;AAC9C,MAAI;GAEF,MAAM,QAAQ;IACZ,GAAG;IACH;IACD;AAGD,sBAAmB,MAAM;AAEzB,UAAO;WACA,GAAG;AACV,WAAQ,KAAK,EAAE;AACf,UAAO;IACL,GAAG;IACH;IACA,YAAY,aAAa;IAC1B;;IAEF;EAAC;EAAW;EAAc;EAAmB,CAAC;AACjD,QACE,oBAAC,cAAc,UAAf;EAA+B;EAAQ;EAAkC,CAAA"}
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;CAGwD,CAAC;AAEvE,MAAa,wBACX,WAAW,cAAc;AAE3B,MAAa,kBAER,EAAE,UAAU,QAAQ,mBAAmB;CAC1C,MAAM,YAAY,OAAO;CACzB,MAAM,EAAE,uBAAuB,oBAAoB;CAEnD,IAAI,CAAC,cAAc,YACjB,MAAM,IAAI,MAAM,+CAA6C;CAG/D,MAAM,QAAQ,cAAkC;EAC9C,IAAI;GAEF,MAAM,QAAQ;IACZ,GAAG;IACH;IACD;GAGD,mBAAmB,MAAM;GAEzB,OAAO;WACA,GAAG;GACV,QAAQ,KAAK,EAAE;GACf,OAAO;IACL,GAAG;IACH;IACA,YAAY,aAAa;IAC1B;;IAEF;EAAC;EAAW;EAAc;EAAmB,CAAC;CACjD,OACE,oBAAC,cAAc,UAAf;EAA+B;EAAQ;EAAkC,CAAA"}
@@ -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 { getSplitSubvariant } 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 { SplitSubvariantStoreProvider } from './settings/useSplitSubvariantStore.js'\n\nexport const StoreProvider: React.FC<PropsWithChildren<WidgetConfigProps>> = ({\n children,\n config,\n formRef,\n}) => {\n return (\n <SplitSubvariantStoreProvider\n state={\n config.subvariant === 'split'\n ? getSplitSubvariant(config.subvariantOptions?.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 </SplitSubvariantStoreProvider>\n )\n}\n"],"mappings":";;;;;;;;;;AAWA,MAAa,iBAAiE,EAC5E,UACA,QACA,cACI;AACJ,QACE,oBAAC,8BAAD;EACE,OACE,OAAO,eAAe,UAClB,mBAAmB,OAAO,mBAAmB,MAAM,GACnD,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;QAC2B,CAAA;OACN,CAAA;MACR,CAAA;KACM,CAAA;IACN,CAAA;GACJ,CAAA;EACO,CAAA"}
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 { getSplitSubvariant } 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 { SplitSubvariantStoreProvider } from './settings/useSplitSubvariantStore.js'\n\nexport const StoreProvider: React.FC<PropsWithChildren<WidgetConfigProps>> = ({\n children,\n config,\n formRef,\n}) => {\n return (\n <SplitSubvariantStoreProvider\n state={\n config.subvariant === 'split'\n ? getSplitSubvariant(config.subvariantOptions?.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 </SplitSubvariantStoreProvider>\n )\n}\n"],"mappings":";;;;;;;;;;AAWA,MAAa,iBAAiE,EAC5E,UACA,QACA,cACI;CACJ,OACE,oBAAC,8BAAD;EACE,OACE,OAAO,eAAe,UAClB,mBAAmB,OAAO,mBAAmB,MAAM,GACnD,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;QAC2B,CAAA;OACN,CAAA;MACR,CAAA;KACM,CAAA;IACN,CAAA;GACJ,CAAA;EACO,CAAA"}
@@ -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,KAAK;AAEtE,MAAa,yBAA8D,EACzE,UACA,GAAG,YACC;CACJ,MAAM,EAAE,cAAc,iBAAiB;CACvC,MAAM,WAAW,OAAsB,KAAK;AAE5C,KAAI,CAAC,SAAS,QACZ,UAAS,UAAU,qBAAqB;EAAE,GAAG;EAAO;EAAW,CAAC;AAGlE,QACE,oBAAC,qBAAqB,UAAtB;EAA+B,OAAO,SAAS;EAC5C;EAC6B,CAAA;;AAIpC,SAAgB,iBAAoB,UAA0C;CAC5E,MAAM,WAAW,WAAW,qBAAqB;AAEjD,KAAI,CAAC,SACH,OAAM,IAAI,MACR,yCAAyC,sBAAsB,KAAK,IACrE;AAGH,QAAO,SAAS,WAAW,SAAS,CAAC"}
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,KAAK;AAEtE,MAAa,yBAA8D,EACzE,UACA,GAAG,YACC;CACJ,MAAM,EAAE,cAAc,iBAAiB;CACvC,MAAM,WAAW,OAAsB,KAAK;CAE5C,IAAI,CAAC,SAAS,SACZ,SAAS,UAAU,qBAAqB;EAAE,GAAG;EAAO;EAAW,CAAC;CAGlE,OACE,oBAAC,qBAAqB,UAAtB;EAA+B,OAAO,SAAS;EAC5C;EAC6B,CAAA;;AAIpC,SAAgB,iBAAoB,UAA0C;CAC5E,MAAM,WAAW,WAAW,qBAAqB;CAEjD,IAAI,CAAC,UACH,MAAM,IAAI,MACR,yCAAyC,sBAAsB,KAAK,IACrE;CAGH,OAAO,SAAS,WAAW,SAAS,CAAC"}
@@ -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,QAAuB,CACrB,SACG,KAAK,SAAS;CACb,kBAAkB;CAClB,WAAW,EAAE;CACb,eAAe,EAAE;CACjB,cAAc,YACZ,KAAK,CAAC,UAAU,MAAM,aAAa,SAAS,YAAY,QAAQ;CAClE,cAAc,aAAa;AACzB,OAAK,WAAW,EACd,WAAW,CAAC,UAAU,GAAG,MAAM,UAAU,EAC1C,EAAE;;CAEL,iBAAiB,YAAY;AAC3B,OAAK,WAAW,EACd,WAAW,MAAM,UAAU,QACxB,mBAAmB,eAAe,YAAY,QAChD,EACF,EAAE;;CAEL,2BAA2B,KAAK,CAAC;CACjC,sBAAsB,aAAa;AACjC,OAAK,YAAY,EACf,kBAAkB,UACnB,EAAE;;CAEL,kBAAkB,aAAa;AAC7B,OAAK,WAAW,EACd,eAAe,CACb,UACA,GAAG,MAAM,cAAc,QACpB,iBAAiB,aAAa,YAAY,SAAS,QACrD,CACF,CAAC,MAAM,GAAG,mBAAmB,EAC/B,EAAE;;CAEL,qBAAqB,YAAY;AAC/B,OAAK,WAAW,EACd,eAAe,MAAM,cAAc,QAChC,iBAAiB,aAAa,YAAY,QAC5C,EACF,EAAE;;CAEN,GACD;CACE,MAAM,GAAG,cAAc,QAAQ;CAC/B,SAAS;CACT,aAAa,WAAW;EACtB,WAAW,MAAM;EACjB,eAAe,MAAM;EACtB;CACD,0BAA0B;AACxB,UAAQ,UAAU;AAChB,OAAI,SAAS,aAAa,CAAC,UAAU,MAAM;IACzC,MAAM,mBAAmB,MAAM,YAAY,UAAU,QAAQ;AAC7D,QAAI,iBACF,OAAM,oBAAoB,iBAAiB;;;;CAKpD,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,QAAuB,CACrB,SACG,KAAK,SAAS;CACb,kBAAkB;CAClB,WAAW,EAAE;CACb,eAAe,EAAE;CACjB,cAAc,YACZ,KAAK,CAAC,UAAU,MAAM,aAAa,SAAS,YAAY,QAAQ;CAClE,cAAc,aAAa;EACzB,KAAK,WAAW,EACd,WAAW,CAAC,UAAU,GAAG,MAAM,UAAU,EAC1C,EAAE;;CAEL,iBAAiB,YAAY;EAC3B,KAAK,WAAW,EACd,WAAW,MAAM,UAAU,QACxB,mBAAmB,eAAe,YAAY,QAChD,EACF,EAAE;;CAEL,2BAA2B,KAAK,CAAC;CACjC,sBAAsB,aAAa;EACjC,KAAK,YAAY,EACf,kBAAkB,UACnB,EAAE;;CAEL,kBAAkB,aAAa;EAC7B,KAAK,WAAW,EACd,eAAe,CACb,UACA,GAAG,MAAM,cAAc,QACpB,iBAAiB,aAAa,YAAY,SAAS,QACrD,CACF,CAAC,MAAM,GAAG,mBAAmB,EAC/B,EAAE;;CAEL,qBAAqB,YAAY;EAC/B,KAAK,WAAW,EACd,eAAe,MAAM,cAAc,QAChC,iBAAiB,aAAa,YAAY,QAC5C,EACF,EAAE;;CAEN,GACD;CACE,MAAM,GAAG,cAAc,QAAQ;CAC/B,SAAS;CACT,aAAa,WAAW;EACtB,WAAW,MAAM;EACjB,eAAe,MAAM;EACtB;CACD,0BAA0B;EACxB,QAAQ,UAAU;GAChB,IAAI,SAAS,aAAa,CAAC,UAAU,MAAM;IACzC,MAAM,mBAAmB,MAAM,YAAY,UAAU,QAAQ;IAC7D,IAAI,kBACF,MAAM,oBAAoB,iBAAiB;;;;CAKpD,CACF,CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"useBookmarkActions.js","names":[],"sources":["../../../../src/stores/bookmarks/useBookmarkActions.ts"],"sourcesContent":["import { useBookmarkStore } from './BookmarkStore.js'\nimport type { BookmarkActions } from './types.js'\n\nexport const useBookmarkActions = (): BookmarkActions => {\n const actions = useBookmarkStore<BookmarkActions>((store) => ({\n getBookmark: store.getBookmark,\n addBookmark: store.addBookmark,\n removeBookmark: store.removeBookmark,\n setSelectedBookmark: store.setSelectedBookmark,\n getSelectedBookmark: store.getSelectedBookmark,\n addRecentWallet: store.addRecentWallet,\n removeRecentWallet: store.removeRecentWallet,\n }))\n\n return actions\n}\n"],"mappings":";;AAGA,MAAa,2BAA4C;AAWvD,QAVgB,kBAAmC,WAAW;EAC5D,aAAa,MAAM;EACnB,aAAa,MAAM;EACnB,gBAAgB,MAAM;EACtB,qBAAqB,MAAM;EAC3B,qBAAqB,MAAM;EAC3B,iBAAiB,MAAM;EACvB,oBAAoB,MAAM;EAC3B,EAAE"}
1
+ {"version":3,"file":"useBookmarkActions.js","names":[],"sources":["../../../../src/stores/bookmarks/useBookmarkActions.ts"],"sourcesContent":["import { useBookmarkStore } from './BookmarkStore.js'\nimport type { BookmarkActions } from './types.js'\n\nexport const useBookmarkActions = (): BookmarkActions => {\n const actions = useBookmarkStore<BookmarkActions>((store) => ({\n getBookmark: store.getBookmark,\n addBookmark: store.addBookmark,\n removeBookmark: store.removeBookmark,\n setSelectedBookmark: store.setSelectedBookmark,\n getSelectedBookmark: store.getSelectedBookmark,\n addRecentWallet: store.addRecentWallet,\n removeRecentWallet: store.removeRecentWallet,\n }))\n\n return actions\n}\n"],"mappings":";;AAGA,MAAa,2BAA4C;CAWvD,OAVgB,kBAAmC,WAAW;EAC5D,aAAa,MAAM;EACnB,aAAa,MAAM;EACnB,gBAAgB,MAAM;EACtB,qBAAqB,MAAM;EAC3B,qBAAqB,MAAM;EAC3B,iBAAiB,MAAM;EACvB,oBAAoB,MAAM;EAC3B,EAEa"}
@@ -1 +1 @@
1
- {"version":3,"file":"useBookmarks.js","names":[],"sources":["../../../../src/stores/bookmarks/useBookmarks.ts"],"sourcesContent":["import { useBookmarkStore } from './BookmarkStore.js'\nimport type { BookmarkProps } from './types.js'\n\nexport const useBookmarks = (): BookmarkProps => {\n const [bookmarks, selectedBookmark, recentWallets] = useBookmarkStore(\n (store) => [store.bookmarks, store.selectedBookmark, store.recentWallets]\n )\n\n return {\n bookmarks,\n selectedBookmark,\n recentWallets,\n }\n}\n"],"mappings":";;AAGA,MAAa,qBAAoC;CAC/C,MAAM,CAAC,WAAW,kBAAkB,iBAAiB,kBAClD,UAAU;EAAC,MAAM;EAAW,MAAM;EAAkB,MAAM;EAAc,CAC1E;AAED,QAAO;EACL;EACA;EACA;EACD"}
1
+ {"version":3,"file":"useBookmarks.js","names":[],"sources":["../../../../src/stores/bookmarks/useBookmarks.ts"],"sourcesContent":["import { useBookmarkStore } from './BookmarkStore.js'\nimport type { BookmarkProps } from './types.js'\n\nexport const useBookmarks = (): BookmarkProps => {\n const [bookmarks, selectedBookmark, recentWallets] = useBookmarkStore(\n (store) => [store.bookmarks, store.selectedBookmark, store.recentWallets]\n )\n\n return {\n bookmarks,\n selectedBookmark,\n recentWallets,\n }\n}\n"],"mappings":";;AAGA,MAAa,qBAAoC;CAC/C,MAAM,CAAC,WAAW,kBAAkB,iBAAiB,kBAClD,UAAU;EAAC,MAAM;EAAW,MAAM;EAAkB,MAAM;EAAc,CAC1E;CAED,OAAO;EACL;EACA;EACA;EACD"}
@@ -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 { HiddenUI } from '../../types/widget.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, subvariantOptions } = 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 &&\n !hiddenUI?.includes(HiddenUI.AllNetworks) &&\n !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 !subvariantOptions?.wide?.disableChainSidebar &&\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 subvariantOptions?.wide?.disableChainSidebar,\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":";;;;;;;;;;;;;AAkBA,MAAM,yBAAyB,cAAsC,KAAK;AAE1E,SAAgB,wBAAwB,EACtC,UACA,GAAG,SACsC;CACzC,MAAM,EACJ,QAAQ,cACR,UACA,WAAW,iBACX,SAAS,eACT,aACE,iBAAiB;CACrB,MAAM,WAAW,OAAwB,KAAK;CAC9C,MAAM,EAAE,WAAW,WAAW;CAC9B,MAAM,EAAE,eAAe,mBAAmB,iBAAiB;CAC3D,MAAM,WAAW,aAAa;CAC9B,MAAM,EAAE,SAAS,sBAAsB,iBAAiB;CACxD,MAAM,EAAE,oBAAoB,mCAC1B,2BAA2B;AAE7B,KAAI,CAAC,SAAS,QACZ,UAAS,UAAU,sBAAsB,EACvC,GAAG,OACJ,CAAC;AAGJ,iBAAgB;AACd,MAAI,OACA,EAAC,QAAQ,KAAK,CAAgB,SAAS,QAAQ;GAC/C,MAAM,iBAAiB,eAAe;GACtC,MAAM,YAAY,QAAQ;GAG1B,MAAM,oBAAoB,kBACxB,iBACC,aAAa,IAAI,IAAI,SAAS,CAChC;GACD,MAAM,iBAAiB,OAAO,QAAQ,UAAU;IAC9C,MAAM,2BAA2B,oBAC7B,qBAAqB,MAAM,IAAI,kBAAkB,GACjD;IAIJ,MAAM,2BAA2B,YAC7B,CAAC,kCACD,mBAAmB,SAAS,MAAM,UAAU,GAC5C;AACJ,WAAO,4BAA4B;KACnC;GAEF,MAAM,aAAa,SAAS,SAAS,UAAU,CAAC,iBAC9C,eAAe,KAAK,UAAU,MAAM,GAAG,EACvC,IACD;GAED,MAAM,WAAW,YAAY,QAAQ;GAGrC,MAAM,kBACJ,eAAe,SAAS,KACxB,CAAC,UAAU,SAAA,cAA8B,IACzC,CAAC;GAIH,MAAM,YAAY,gCAAgC,EAAE,UAAU,CAAC;GAC/D,MAAM,gBACJ,QAAQ,SAAS,UAAU,YAAY,UAAU;GAGnD,MAAM,uBACJ,mBAAmB,EAFnB,QAAQ,SAAS,kBAAkB,kBAEK,CAAC;AAC3C,YAAS,SAAS,UAAU,CAAC,iBAAiB,sBAAsB,IAAI;AACxE,YAAS,SAAS,UAAU,CAAC,mBAAmB,iBAAiB,IAAI;AAGrE,OAAI,UAAU;IACZ,MAAM,CAAC,kBAAkB,eAAe,YAAY;AACpD,kBAAc,WAAW,eAAe;;AAO1C,OAAI,qBACF;GAGF,MAAM,CAAC,cAAc,eAAe,GAAG,IAAI,OAAO;AAClD,OAAI,WACF;GAGF,MAAM,0BAA0B,SAAS,SACrC,UAAU,CACX,cAAc,MAAM,YACnB,eAAe,MAAM,UAAU,MAAM,OAAO,QAAQ,CACrD;AACH,OACE,YAAY,UACZ,CAAC,mBAAmB,MAAM,uBAC1B,wBAEA,eAAc,GAAG,IAAI,QAAQ,wBAAwB;YAC5C,YAAY,OACrB,eAAc,GAAG,IAAI,QAAQ,WAAW,GAAG;IAE7C;IAEH;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA,mBAAmB,MAAM;EACzB;EACA;EACA;EACA;EACA;EACD,CAAC;AAEF,QACE,oBAAC,uBAAuB,UAAxB;EAAiC,OAAO,SAAS;EAC9C;EAC+B,CAAA;;AAItC,SAAS,4BAA4B;CACnC,MAAM,WAAW,WAAW,uBAAuB;AACnD,KAAI,CAAC,SACH,OAAM,IAAI,MACR,yCAAyC,wBAAwB,KAAK,IACvE;AAEH,QAAO;;AAGT,SAAgB,mBACd,UACG;AAEH,QADiB,2BAA2B,CAC5B,WAAW,SAAS,CAAC"}
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 { HiddenUI } from '../../types/widget.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, subvariantOptions } = 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 &&\n !hiddenUI?.includes(HiddenUI.AllNetworks) &&\n !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 !subvariantOptions?.wide?.disableChainSidebar &&\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 subvariantOptions?.wide?.disableChainSidebar,\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":";;;;;;;;;;;;;AAkBA,MAAM,yBAAyB,cAAsC,KAAK;AAE1E,SAAgB,wBAAwB,EACtC,UACA,GAAG,SACsC;CACzC,MAAM,EACJ,QAAQ,cACR,UACA,WAAW,iBACX,SAAS,eACT,aACE,iBAAiB;CACrB,MAAM,WAAW,OAAwB,KAAK;CAC9C,MAAM,EAAE,WAAW,WAAW;CAC9B,MAAM,EAAE,eAAe,mBAAmB,iBAAiB;CAC3D,MAAM,WAAW,aAAa;CAC9B,MAAM,EAAE,SAAS,sBAAsB,iBAAiB;CACxD,MAAM,EAAE,oBAAoB,mCAC1B,2BAA2B;CAE7B,IAAI,CAAC,SAAS,SACZ,SAAS,UAAU,sBAAsB,EACvC,GAAG,OACJ,CAAC;CAGJ,gBAAgB;EACd,IAAI,QACD,CAAE,QAAQ,KAAK,CAAgB,SAAS,QAAQ;GAC/C,MAAM,iBAAiB,eAAe;GACtC,MAAM,YAAY,QAAQ;GAG1B,MAAM,oBAAoB,kBACxB,iBACC,aAAa,IAAI,IAAI,SAAS,CAChC;GACD,MAAM,iBAAiB,OAAO,QAAQ,UAAU;IAC9C,MAAM,2BAA2B,oBAC7B,qBAAqB,MAAM,IAAI,kBAAkB,GACjD;IAIJ,MAAM,2BAA2B,YAC7B,CAAC,kCACD,mBAAmB,SAAS,MAAM,UAAU,GAC5C;IACJ,OAAO,4BAA4B;KACnC;GAEF,MAAM,aAAa,SAAS,SAAS,UAAU,CAAC,iBAC9C,eAAe,KAAK,UAAU,MAAM,GAAG,EACvC,IACD;GAED,MAAM,WAAW,YAAY,QAAQ;GAGrC,MAAM,kBACJ,eAAe,SAAS,KACxB,CAAC,UAAU,SAAA,cAA8B,IACzC,CAAC;GAIH,MAAM,YAAY,gCAAgC,EAAE,UAAU,CAAC;GAC/D,MAAM,gBACJ,QAAQ,SAAS,UAAU,YAAY,UAAU;GAGnD,MAAM,uBACJ,mBAAmB,EAFnB,QAAQ,SAAS,kBAAkB,kBAEK,CAAC;GAC3C,SAAS,SAAS,UAAU,CAAC,iBAAiB,sBAAsB,IAAI;GACxE,SAAS,SAAS,UAAU,CAAC,mBAAmB,iBAAiB,IAAI;GAGrE,IAAI,UAAU;IACZ,MAAM,CAAC,kBAAkB,eAAe,YAAY;IACpD,cAAc,WAAW,eAAe;;GAO1C,IAAI,sBACF;GAGF,MAAM,CAAC,cAAc,eAAe,GAAG,IAAI,OAAO;GAClD,IAAI,YACF;GAGF,MAAM,0BAA0B,SAAS,SACrC,UAAU,CACX,cAAc,MAAM,YACnB,eAAe,MAAM,UAAU,MAAM,OAAO,QAAQ,CACrD;GACH,IACE,YAAY,UACZ,CAAC,mBAAmB,MAAM,uBAC1B,yBAEA,cAAc,GAAG,IAAI,QAAQ,wBAAwB;QAChD,IAAI,YAAY,QACrB,cAAc,GAAG,IAAI,QAAQ,WAAW,GAAG;IAE7C;IAEH;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA,mBAAmB,MAAM;EACzB;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,OACE,oBAAC,uBAAuB,UAAxB;EAAiC,OAAO,SAAS;EAC9C;EAC+B,CAAA;;AAItC,SAAS,4BAA4B;CACnC,MAAM,WAAW,WAAW,uBAAuB;CACnD,IAAI,CAAC,UACH,MAAM,IAAI,MACR,yCAAyC,wBAAwB,KAAK,IACvE;CAEH,OAAO;;AAGT,SAAgB,mBACd,UACG;CAEH,OADiB,2BACF,CAAC,WAAW,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createChainOrderStore.js","names":[],"sources":["../../../../src/stores/chains/createChainOrderStore.ts"],"sourcesContent":["import type { StoreApi, UseBoundStore } from 'zustand'\nimport { create } from 'zustand'\nimport { persist } from 'zustand/middleware'\nimport { widgetEvents } from '../../hooks/useWidgetEvents.js'\nimport { WidgetEvent } from '../../types/events.js'\nimport type { PersistStoreProps } from '../types.js'\nimport type { ChainOrderState } from './types.js'\n\n// (10 tiles: 9 + 1 for \"All chains\")\nexport const maxGridItemsToShow = 10\nexport const maxChainsToShow: number = maxGridItemsToShow - 1\n// If there are more than maxChainsToShow chains to show,\n// -1 tile to show a button \"+ N\" more chains\nexport const maxChainsToOrder: number = maxChainsToShow - 1\n\nconst defaultChainState = {\n from: [],\n to: [],\n}\n\nexport const createChainOrderStore = ({\n namePrefix,\n}: PersistStoreProps): UseBoundStore<StoreApi<ChainOrderState>> =>\n create<ChainOrderState>()(\n persist(\n (set, get) => ({\n chainOrder: defaultChainState,\n fromIsAllNetworks: true,\n toIsAllNetworks: true,\n fromShowAllNetworks: true,\n toShowAllNetworks: true,\n availableChains: defaultChainState,\n pinnedChains: [],\n initializeChains: (chainIds, type) => {\n set((state: ChainOrderState) => {\n const chainOrder = state.chainOrder[type].filter((chainId) =>\n chainIds.includes(chainId)\n )\n const chainsToAdd = chainIds.filter(\n (chainId) => !chainOrder.includes(chainId)\n )\n if (chainOrder.length === maxChainsToOrder || !chainsToAdd.length) {\n return {\n availableChains: {\n ...state.availableChains,\n [type]: chainIds,\n },\n chainOrder: {\n ...state.chainOrder,\n [type]: chainOrder,\n },\n }\n }\n const chainsToAddLength = maxChainsToOrder - chainOrder.length\n for (let index = 0; index < chainsToAddLength; index++) {\n chainOrder.push(chainsToAdd[index])\n }\n return {\n availableChains: {\n ...state.availableChains,\n [type]: chainIds,\n },\n chainOrder: {\n ...state.chainOrder,\n [type]: chainOrder,\n },\n }\n })\n return get().chainOrder[type].slice(0, maxChainsToOrder)\n },\n setChain: (chainId, type) => {\n const state = get()\n if (\n state.chainOrder[type].includes(chainId) ||\n !state.availableChains[type].includes(chainId)\n ) {\n return\n }\n set((state: ChainOrderState) => {\n const chainOrder = [chainId, ...state.chainOrder[type]].slice(\n 0,\n maxChainsToOrder\n )\n return {\n chainOrder: {\n ...state.chainOrder,\n [type]: chainOrder,\n },\n }\n })\n },\n setIsAllNetworks: (isAllNetworks, formType) => {\n set({ [`${formType}IsAllNetworks`]: isAllNetworks })\n },\n setShowAllNetworks: (showAllNetworks, formType) => {\n set({ [`${formType}ShowAllNetworks`]: showAllNetworks })\n },\n setPinnedChain: (chainId) => {\n const currentPinnedChains = get().pinnedChains\n const wasAlreadyPinned = currentPinnedChains.includes(chainId)\n set((state: ChainOrderState) => {\n const pinnedChains = [...state.pinnedChains]\n if (wasAlreadyPinned) {\n return {\n pinnedChains: pinnedChains.filter((id) => id !== chainId),\n }\n }\n pinnedChains.push(chainId)\n return {\n pinnedChains,\n }\n })\n widgetEvents.emit(WidgetEvent.ChainPinned, {\n chainId,\n pinned: !wasAlreadyPinned,\n })\n },\n }),\n {\n name: `${namePrefix || 'li.fi'}-widget-chains-order`,\n version: 4,\n partialize: (state) => ({\n chainOrder: state.chainOrder,\n pinnedChains: state.pinnedChains,\n }),\n }\n )\n )\n"],"mappings":";;;;AAeA,MAAM,oBAAoB;CACxB,MAAM,EAAE;CACR,IAAI,EAAE;CACP;AAED,MAAa,yBAAyB,EACpC,iBAEA,QAAyB,CACvB,SACG,KAAK,SAAS;CACb,YAAY;CACZ,mBAAmB;CACnB,iBAAiB;CACjB,qBAAqB;CACrB,mBAAmB;CACnB,iBAAiB;CACjB,cAAc,EAAE;CAChB,mBAAmB,UAAU,SAAS;AACpC,OAAK,UAA2B;GAC9B,MAAM,aAAa,MAAM,WAAW,MAAM,QAAQ,YAChD,SAAS,SAAS,QAAQ,CAC3B;GACD,MAAM,cAAc,SAAS,QAC1B,YAAY,CAAC,WAAW,SAAS,QAAQ,CAC3C;AACD,OAAI,WAAW,WAAA,KAA+B,CAAC,YAAY,OACzD,QAAO;IACL,iBAAiB;KACf,GAAG,MAAM;MACR,OAAO;KACT;IACD,YAAY;KACV,GAAG,MAAM;MACR,OAAO;KACT;IACF;GAEH,MAAM,oBAAA,IAAuC,WAAW;AACxD,QAAK,IAAI,QAAQ,GAAG,QAAQ,mBAAmB,QAC7C,YAAW,KAAK,YAAY,OAAO;AAErC,UAAO;IACL,iBAAiB;KACf,GAAG,MAAM;MACR,OAAO;KACT;IACD,YAAY;KACV,GAAG,MAAM;MACR,OAAO;KACT;IACF;IACD;AACF,SAAO,KAAK,CAAC,WAAW,MAAM,MAAM,GAAA,EAAoB;;CAE1D,WAAW,SAAS,SAAS;EAC3B,MAAM,QAAQ,KAAK;AACnB,MACE,MAAM,WAAW,MAAM,SAAS,QAAQ,IACxC,CAAC,MAAM,gBAAgB,MAAM,SAAS,QAAQ,CAE9C;AAEF,OAAK,UAA2B;GAC9B,MAAM,aAAa,CAAC,SAAS,GAAG,MAAM,WAAW,MAAM,CAAC,MACtD,GAAA,EAED;AACD,UAAO,EACL,YAAY;IACV,GAAG,MAAM;KACR,OAAO;IACT,EACF;IACD;;CAEJ,mBAAmB,eAAe,aAAa;AAC7C,MAAI,GAAG,GAAG,SAAS,iBAAiB,eAAe,CAAC;;CAEtD,qBAAqB,iBAAiB,aAAa;AACjD,MAAI,GAAG,GAAG,SAAS,mBAAmB,iBAAiB,CAAC;;CAE1D,iBAAiB,YAAY;EAE3B,MAAM,mBADsB,KAAK,CAAC,aACW,SAAS,QAAQ;AAC9D,OAAK,UAA2B;GAC9B,MAAM,eAAe,CAAC,GAAG,MAAM,aAAa;AAC5C,OAAI,iBACF,QAAO,EACL,cAAc,aAAa,QAAQ,OAAO,OAAO,QAAQ,EAC1D;AAEH,gBAAa,KAAK,QAAQ;AAC1B,UAAO,EACL,cACD;IACD;AACF,eAAa,KAAA,eAA8B;GACzC;GACA,QAAQ,CAAC;GACV,CAAC;;CAEL,GACD;CACE,MAAM,GAAG,cAAc,QAAQ;CAC/B,SAAS;CACT,aAAa,WAAW;EACtB,YAAY,MAAM;EAClB,cAAc,MAAM;EACrB;CACF,CACF,CACF"}
1
+ {"version":3,"file":"createChainOrderStore.js","names":[],"sources":["../../../../src/stores/chains/createChainOrderStore.ts"],"sourcesContent":["import type { StoreApi, UseBoundStore } from 'zustand'\nimport { create } from 'zustand'\nimport { persist } from 'zustand/middleware'\nimport { widgetEvents } from '../../hooks/useWidgetEvents.js'\nimport { WidgetEvent } from '../../types/events.js'\nimport type { PersistStoreProps } from '../types.js'\nimport type { ChainOrderState } from './types.js'\n\n// (10 tiles: 9 + 1 for \"All chains\")\nexport const maxGridItemsToShow = 10\nexport const maxChainsToShow: number = maxGridItemsToShow - 1\n// If there are more than maxChainsToShow chains to show,\n// -1 tile to show a button \"+ N\" more chains\nexport const maxChainsToOrder: number = maxChainsToShow - 1\n\nconst defaultChainState = {\n from: [],\n to: [],\n}\n\nexport const createChainOrderStore = ({\n namePrefix,\n}: PersistStoreProps): UseBoundStore<StoreApi<ChainOrderState>> =>\n create<ChainOrderState>()(\n persist(\n (set, get) => ({\n chainOrder: defaultChainState,\n fromIsAllNetworks: true,\n toIsAllNetworks: true,\n fromShowAllNetworks: true,\n toShowAllNetworks: true,\n availableChains: defaultChainState,\n pinnedChains: [],\n initializeChains: (chainIds, type) => {\n set((state: ChainOrderState) => {\n const chainOrder = state.chainOrder[type].filter((chainId) =>\n chainIds.includes(chainId)\n )\n const chainsToAdd = chainIds.filter(\n (chainId) => !chainOrder.includes(chainId)\n )\n if (chainOrder.length === maxChainsToOrder || !chainsToAdd.length) {\n return {\n availableChains: {\n ...state.availableChains,\n [type]: chainIds,\n },\n chainOrder: {\n ...state.chainOrder,\n [type]: chainOrder,\n },\n }\n }\n const chainsToAddLength = maxChainsToOrder - chainOrder.length\n for (let index = 0; index < chainsToAddLength; index++) {\n chainOrder.push(chainsToAdd[index])\n }\n return {\n availableChains: {\n ...state.availableChains,\n [type]: chainIds,\n },\n chainOrder: {\n ...state.chainOrder,\n [type]: chainOrder,\n },\n }\n })\n return get().chainOrder[type].slice(0, maxChainsToOrder)\n },\n setChain: (chainId, type) => {\n const state = get()\n if (\n state.chainOrder[type].includes(chainId) ||\n !state.availableChains[type].includes(chainId)\n ) {\n return\n }\n set((state: ChainOrderState) => {\n const chainOrder = [chainId, ...state.chainOrder[type]].slice(\n 0,\n maxChainsToOrder\n )\n return {\n chainOrder: {\n ...state.chainOrder,\n [type]: chainOrder,\n },\n }\n })\n },\n setIsAllNetworks: (isAllNetworks, formType) => {\n set({ [`${formType}IsAllNetworks`]: isAllNetworks })\n },\n setShowAllNetworks: (showAllNetworks, formType) => {\n set({ [`${formType}ShowAllNetworks`]: showAllNetworks })\n },\n setPinnedChain: (chainId) => {\n const currentPinnedChains = get().pinnedChains\n const wasAlreadyPinned = currentPinnedChains.includes(chainId)\n set((state: ChainOrderState) => {\n const pinnedChains = [...state.pinnedChains]\n if (wasAlreadyPinned) {\n return {\n pinnedChains: pinnedChains.filter((id) => id !== chainId),\n }\n }\n pinnedChains.push(chainId)\n return {\n pinnedChains,\n }\n })\n widgetEvents.emit(WidgetEvent.ChainPinned, {\n chainId,\n pinned: !wasAlreadyPinned,\n })\n },\n }),\n {\n name: `${namePrefix || 'li.fi'}-widget-chains-order`,\n version: 4,\n partialize: (state) => ({\n chainOrder: state.chainOrder,\n pinnedChains: state.pinnedChains,\n }),\n }\n )\n )\n"],"mappings":";;;;AAeA,MAAM,oBAAoB;CACxB,MAAM,EAAE;CACR,IAAI,EAAE;CACP;AAED,MAAa,yBAAyB,EACpC,iBAEA,QAAyB,CACvB,SACG,KAAK,SAAS;CACb,YAAY;CACZ,mBAAmB;CACnB,iBAAiB;CACjB,qBAAqB;CACrB,mBAAmB;CACnB,iBAAiB;CACjB,cAAc,EAAE;CAChB,mBAAmB,UAAU,SAAS;EACpC,KAAK,UAA2B;GAC9B,MAAM,aAAa,MAAM,WAAW,MAAM,QAAQ,YAChD,SAAS,SAAS,QAAQ,CAC3B;GACD,MAAM,cAAc,SAAS,QAC1B,YAAY,CAAC,WAAW,SAAS,QAAQ,CAC3C;GACD,IAAI,WAAW,WAAA,KAA+B,CAAC,YAAY,QACzD,OAAO;IACL,iBAAiB;KACf,GAAG,MAAM;MACR,OAAO;KACT;IACD,YAAY;KACV,GAAG,MAAM;MACR,OAAO;KACT;IACF;GAEH,MAAM,oBAAA,IAAuC,WAAW;GACxD,KAAK,IAAI,QAAQ,GAAG,QAAQ,mBAAmB,SAC7C,WAAW,KAAK,YAAY,OAAO;GAErC,OAAO;IACL,iBAAiB;KACf,GAAG,MAAM;MACR,OAAO;KACT;IACD,YAAY;KACV,GAAG,MAAM;MACR,OAAO;KACT;IACF;IACD;EACF,OAAO,KAAK,CAAC,WAAW,MAAM,MAAM,GAAA,EAAoB;;CAE1D,WAAW,SAAS,SAAS;EAC3B,MAAM,QAAQ,KAAK;EACnB,IACE,MAAM,WAAW,MAAM,SAAS,QAAQ,IACxC,CAAC,MAAM,gBAAgB,MAAM,SAAS,QAAQ,EAE9C;EAEF,KAAK,UAA2B;GAC9B,MAAM,aAAa,CAAC,SAAS,GAAG,MAAM,WAAW,MAAM,CAAC,MACtD,GAAA,EAED;GACD,OAAO,EACL,YAAY;IACV,GAAG,MAAM;KACR,OAAO;IACT,EACF;IACD;;CAEJ,mBAAmB,eAAe,aAAa;EAC7C,IAAI,GAAG,GAAG,SAAS,iBAAiB,eAAe,CAAC;;CAEtD,qBAAqB,iBAAiB,aAAa;EACjD,IAAI,GAAG,GAAG,SAAS,mBAAmB,iBAAiB,CAAC;;CAE1D,iBAAiB,YAAY;EAE3B,MAAM,mBADsB,KAAK,CAAC,aACW,SAAS,QAAQ;EAC9D,KAAK,UAA2B;GAC9B,MAAM,eAAe,CAAC,GAAG,MAAM,aAAa;GAC5C,IAAI,kBACF,OAAO,EACL,cAAc,aAAa,QAAQ,OAAO,OAAO,QAAQ,EAC1D;GAEH,aAAa,KAAK,QAAQ;GAC1B,OAAO,EACL,cACD;IACD;EACF,aAAa,KAAA,eAA8B;GACzC;GACA,QAAQ,CAAC;GACV,CAAC;;CAEL,GACD;CACE,MAAM,GAAG,cAAc,QAAQ;CAC/B,SAAS;CACT,aAAa,WAAW;EACtB,YAAY,MAAM;EAClB,cAAc,MAAM;EACrB;CACF,CACF,CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"useChainOrder.js","names":[],"sources":["../../../../src/stores/chains/useChainOrder.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport type { FormType } from '../form/types.js'\nimport { useChainOrderStore } from './ChainOrderStore.js'\nimport { maxChainsToOrder } from './createChainOrderStore.js'\n\nexport const useChainOrder = (\n type: FormType\n): [number[], (chainId: number, type: FormType) => void] => {\n const [chainOrder, setChain] = useChainOrderStore((state) => [\n state.chainOrder[type],\n state.setChain,\n ])\n\n const limitedChainOrder = useMemo(\n () => chainOrder.slice(0, maxChainsToOrder),\n [chainOrder]\n )\n\n return [limitedChainOrder, setChain]\n}\n"],"mappings":";;;AAKA,MAAa,iBACX,SAC0D;CAC1D,MAAM,CAAC,YAAY,YAAY,oBAAoB,UAAU,CAC3D,MAAM,WAAW,OACjB,MAAM,SACP,CAAC;AAOF,QAAO,CALmB,cAClB,WAAW,MAAM,GAAA,EAAoB,EAC3C,CAAC,WAAW,CACb,EAE0B,SAAS"}
1
+ {"version":3,"file":"useChainOrder.js","names":[],"sources":["../../../../src/stores/chains/useChainOrder.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport type { FormType } from '../form/types.js'\nimport { useChainOrderStore } from './ChainOrderStore.js'\nimport { maxChainsToOrder } from './createChainOrderStore.js'\n\nexport const useChainOrder = (\n type: FormType\n): [number[], (chainId: number, type: FormType) => void] => {\n const [chainOrder, setChain] = useChainOrderStore((state) => [\n state.chainOrder[type],\n state.setChain,\n ])\n\n const limitedChainOrder = useMemo(\n () => chainOrder.slice(0, maxChainsToOrder),\n [chainOrder]\n )\n\n return [limitedChainOrder, setChain]\n}\n"],"mappings":";;;AAKA,MAAa,iBACX,SAC0D;CAC1D,MAAM,CAAC,YAAY,YAAY,oBAAoB,UAAU,CAC3D,MAAM,WAAW,OACjB,MAAM,SACP,CAAC;CAOF,OAAO,CALmB,cAClB,WAAW,MAAM,GAAA,EAAoB,EAC3C,CAAC,WAAW,CAGW,EAAE,SAAS"}
@@ -1 +1 @@
1
- {"version":3,"file":"FormStore.js","names":[],"sources":["../../../../src/stores/form/FormStore.tsx"],"sourcesContent":["import type { PropsWithChildren } from 'react'\nimport { useMemo, useRef } from 'react'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport type { FormRef } from '../../types/widget.js'\nimport { createFormStore, formDefaultValues } from './createFormStore.js'\nimport { FormStoreContext } from './FormStoreContext.js'\nimport { FormUpdater } from './FormUpdater.js'\nimport { getDefaultValuesFromQueryString } from './getDefaultValuesFromQueryString.js'\nimport type { DefaultValues, FormStoreStore } from './types.js'\nimport { useFormRef } from './useFormRef.js'\n\n// decorates and initialise the form date for use in the form store\nconst initialiseDefaultValues = (defaultValues: Partial<DefaultValues>) => ({\n ...formDefaultValues,\n ...defaultValues,\n fromAmount:\n (typeof defaultValues.fromAmount === 'number'\n ? (defaultValues.fromAmount as number)?.toPrecision?.()\n : defaultValues.fromAmount) || formDefaultValues.fromAmount,\n toAmount:\n (typeof defaultValues.toAmount === 'number'\n ? (defaultValues.toAmount as number)?.toPrecision?.()\n : defaultValues.toAmount) || formDefaultValues.toAmount,\n // Prevent setting address when the field is hidden\n toAddress: defaultValues.toAddress || formDefaultValues.toAddress,\n})\n\ninterface FormStoreProviderProps extends PropsWithChildren {\n formRef?: FormRef\n}\n\nexport const FormStoreProvider: React.FC<FormStoreProviderProps> = ({\n children,\n formRef,\n}) => {\n const widgetConfig = useWidgetConfig()\n\n const {\n fromChain,\n fromToken,\n toChain,\n toToken,\n fromAmount,\n toAmount,\n toAddress,\n formUpdateKey,\n buildUrl,\n } = widgetConfig\n\n const storeRef = useRef<FormStoreStore>(null)\n\n const configHasFromChain = Object.hasOwn(widgetConfig, 'fromChain')\n const configHasFromToken = Object.hasOwn(widgetConfig, 'fromToken')\n const configHasFromAmount = Object.hasOwn(widgetConfig, 'fromAmount')\n const configHasToAmount = Object.hasOwn(widgetConfig, 'toAmount')\n const configHasToAddress = Object.hasOwn(widgetConfig, 'toAddress')\n const configHasToChain = Object.hasOwn(widgetConfig, 'toChain')\n const configHasToToken = Object.hasOwn(widgetConfig, 'toToken')\n\n // We use the presence/absence of a property to decide if the form values in state need to be updated\n // We only build and set a property on the memoized form values here if they are included in the\n // config - undefined is considered a valid value that will reset that form field\n // biome-ignore lint/correctness/useExhaustiveDependencies: formUpdateKey is needed here.\n const reactiveFormValues = useMemo(\n () => ({\n ...(configHasFromChain ? { fromChain } : undefined),\n ...(configHasFromToken ? { fromToken } : undefined),\n ...(configHasFromAmount\n ? {\n fromAmount:\n (typeof fromAmount === 'number'\n ? fromAmount?.toPrecision()\n : fromAmount) || formDefaultValues.fromAmount,\n }\n : undefined),\n ...(configHasToAmount\n ? {\n toAmount:\n (typeof toAmount === 'number'\n ? toAmount?.toPrecision()\n : toAmount) || formDefaultValues.toAmount,\n }\n : undefined),\n ...(configHasToChain ? { toChain } : undefined),\n ...(configHasToToken ? { toToken } : undefined),\n ...(configHasToAddress\n ? {\n toAddress: toAddress?.address || formDefaultValues.toAddress,\n }\n : undefined),\n }),\n [\n fromAmount,\n toAmount,\n fromChain,\n fromToken,\n toAddress,\n toChain,\n toToken,\n // formUpdateKey should be a randomly assigned unique key. It can be used to force updates for the form field values\n formUpdateKey,\n configHasFromChain,\n configHasFromToken,\n configHasFromAmount,\n configHasToAmount,\n configHasToAddress,\n configHasToChain,\n configHasToToken,\n ]\n )\n\n if (!storeRef.current) {\n const queryDefaults = getDefaultValuesFromQueryString({\n buildUrl,\n includeToAddress: false,\n })\n storeRef.current = createFormStore(\n initialiseDefaultValues({\n ...reactiveFormValues,\n ...queryDefaults,\n })\n )\n }\n\n useFormRef(storeRef.current, formRef)\n\n return (\n <FormStoreContext.Provider value={storeRef.current}>\n {children}\n <FormUpdater reactiveFormValues={reactiveFormValues} />\n </FormStoreContext.Provider>\n )\n}\n"],"mappings":";;;;;;;;;AAYA,MAAM,2BAA2B,mBAA2C;CAC1E,GAAG;CACH,GAAG;CACH,aACG,OAAO,cAAc,eAAe,WAChC,cAAc,YAAuB,eAAe,GACrD,cAAc,eAAe,kBAAkB;CACrD,WACG,OAAO,cAAc,aAAa,WAC9B,cAAc,UAAqB,eAAe,GACnD,cAAc,aAAa,kBAAkB;CAEnD,WAAW,cAAc,aAAa,kBAAkB;CACzD;AAMD,MAAa,qBAAuD,EAClE,UACA,cACI;CACJ,MAAM,eAAe,iBAAiB;CAEtC,MAAM,EACJ,WACA,WACA,SACA,SACA,YACA,UACA,WACA,eACA,aACE;CAEJ,MAAM,WAAW,OAAuB,KAAK;CAE7C,MAAM,qBAAqB,OAAO,OAAO,cAAc,YAAY;CACnE,MAAM,qBAAqB,OAAO,OAAO,cAAc,YAAY;CACnE,MAAM,sBAAsB,OAAO,OAAO,cAAc,aAAa;CACrE,MAAM,oBAAoB,OAAO,OAAO,cAAc,WAAW;CACjE,MAAM,qBAAqB,OAAO,OAAO,cAAc,YAAY;CACnE,MAAM,mBAAmB,OAAO,OAAO,cAAc,UAAU;CAC/D,MAAM,mBAAmB,OAAO,OAAO,cAAc,UAAU;CAM/D,MAAM,qBAAqB,eAClB;EACL,GAAI,qBAAqB,EAAE,WAAW,GAAG,KAAA;EACzC,GAAI,qBAAqB,EAAE,WAAW,GAAG,KAAA;EACzC,GAAI,sBACA,EACE,aACG,OAAO,eAAe,WACnB,YAAY,aAAa,GACzB,eAAe,kBAAkB,YACxC,GACD,KAAA;EACJ,GAAI,oBACA,EACE,WACG,OAAO,aAAa,WACjB,UAAU,aAAa,GACvB,aAAa,kBAAkB,UACtC,GACD,KAAA;EACJ,GAAI,mBAAmB,EAAE,SAAS,GAAG,KAAA;EACrC,GAAI,mBAAmB,EAAE,SAAS,GAAG,KAAA;EACrC,GAAI,qBACA,EACE,WAAW,WAAW,WAAW,kBAAkB,WACpD,GACD,KAAA;EACL,GACD;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;AAED,KAAI,CAAC,SAAS,SAAS;EACrB,MAAM,gBAAgB,gCAAgC;GACpD;GACA,kBAAkB;GACnB,CAAC;AACF,WAAS,UAAU,gBACjB,wBAAwB;GACtB,GAAG;GACH,GAAG;GACJ,CAAC,CACH;;AAGH,YAAW,SAAS,SAAS,QAAQ;AAErC,QACE,qBAAC,iBAAiB,UAAlB;EAA2B,OAAO,SAAS;YAA3C,CACG,UACD,oBAAC,aAAD,EAAiC,oBAAsB,CAAA,CAC7B"}
1
+ {"version":3,"file":"FormStore.js","names":[],"sources":["../../../../src/stores/form/FormStore.tsx"],"sourcesContent":["import type { PropsWithChildren } from 'react'\nimport { useMemo, useRef } from 'react'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport type { FormRef } from '../../types/widget.js'\nimport { createFormStore, formDefaultValues } from './createFormStore.js'\nimport { FormStoreContext } from './FormStoreContext.js'\nimport { FormUpdater } from './FormUpdater.js'\nimport { getDefaultValuesFromQueryString } from './getDefaultValuesFromQueryString.js'\nimport type { DefaultValues, FormStoreStore } from './types.js'\nimport { useFormRef } from './useFormRef.js'\n\n// decorates and initialise the form date for use in the form store\nconst initialiseDefaultValues = (defaultValues: Partial<DefaultValues>) => ({\n ...formDefaultValues,\n ...defaultValues,\n fromAmount:\n (typeof defaultValues.fromAmount === 'number'\n ? (defaultValues.fromAmount as number)?.toPrecision?.()\n : defaultValues.fromAmount) || formDefaultValues.fromAmount,\n toAmount:\n (typeof defaultValues.toAmount === 'number'\n ? (defaultValues.toAmount as number)?.toPrecision?.()\n : defaultValues.toAmount) || formDefaultValues.toAmount,\n // Prevent setting address when the field is hidden\n toAddress: defaultValues.toAddress || formDefaultValues.toAddress,\n})\n\ninterface FormStoreProviderProps extends PropsWithChildren {\n formRef?: FormRef\n}\n\nexport const FormStoreProvider: React.FC<FormStoreProviderProps> = ({\n children,\n formRef,\n}) => {\n const widgetConfig = useWidgetConfig()\n\n const {\n fromChain,\n fromToken,\n toChain,\n toToken,\n fromAmount,\n toAmount,\n toAddress,\n formUpdateKey,\n buildUrl,\n } = widgetConfig\n\n const storeRef = useRef<FormStoreStore>(null)\n\n const configHasFromChain = Object.hasOwn(widgetConfig, 'fromChain')\n const configHasFromToken = Object.hasOwn(widgetConfig, 'fromToken')\n const configHasFromAmount = Object.hasOwn(widgetConfig, 'fromAmount')\n const configHasToAmount = Object.hasOwn(widgetConfig, 'toAmount')\n const configHasToAddress = Object.hasOwn(widgetConfig, 'toAddress')\n const configHasToChain = Object.hasOwn(widgetConfig, 'toChain')\n const configHasToToken = Object.hasOwn(widgetConfig, 'toToken')\n\n // We use the presence/absence of a property to decide if the form values in state need to be updated\n // We only build and set a property on the memoized form values here if they are included in the\n // config - undefined is considered a valid value that will reset that form field\n // biome-ignore lint/correctness/useExhaustiveDependencies: formUpdateKey is needed here.\n const reactiveFormValues = useMemo(\n () => ({\n ...(configHasFromChain ? { fromChain } : undefined),\n ...(configHasFromToken ? { fromToken } : undefined),\n ...(configHasFromAmount\n ? {\n fromAmount:\n (typeof fromAmount === 'number'\n ? fromAmount?.toPrecision()\n : fromAmount) || formDefaultValues.fromAmount,\n }\n : undefined),\n ...(configHasToAmount\n ? {\n toAmount:\n (typeof toAmount === 'number'\n ? toAmount?.toPrecision()\n : toAmount) || formDefaultValues.toAmount,\n }\n : undefined),\n ...(configHasToChain ? { toChain } : undefined),\n ...(configHasToToken ? { toToken } : undefined),\n ...(configHasToAddress\n ? {\n toAddress: toAddress?.address || formDefaultValues.toAddress,\n }\n : undefined),\n }),\n [\n fromAmount,\n toAmount,\n fromChain,\n fromToken,\n toAddress,\n toChain,\n toToken,\n // formUpdateKey should be a randomly assigned unique key. It can be used to force updates for the form field values\n formUpdateKey,\n configHasFromChain,\n configHasFromToken,\n configHasFromAmount,\n configHasToAmount,\n configHasToAddress,\n configHasToChain,\n configHasToToken,\n ]\n )\n\n if (!storeRef.current) {\n const queryDefaults = getDefaultValuesFromQueryString({\n buildUrl,\n includeToAddress: false,\n })\n storeRef.current = createFormStore(\n initialiseDefaultValues({\n ...reactiveFormValues,\n ...queryDefaults,\n })\n )\n }\n\n useFormRef(storeRef.current, formRef)\n\n return (\n <FormStoreContext.Provider value={storeRef.current}>\n {children}\n <FormUpdater reactiveFormValues={reactiveFormValues} />\n </FormStoreContext.Provider>\n )\n}\n"],"mappings":";;;;;;;;;AAYA,MAAM,2BAA2B,mBAA2C;CAC1E,GAAG;CACH,GAAG;CACH,aACG,OAAO,cAAc,eAAe,WAChC,cAAc,YAAuB,eAAe,GACrD,cAAc,eAAe,kBAAkB;CACrD,WACG,OAAO,cAAc,aAAa,WAC9B,cAAc,UAAqB,eAAe,GACnD,cAAc,aAAa,kBAAkB;CAEnD,WAAW,cAAc,aAAa,kBAAkB;CACzD;AAMD,MAAa,qBAAuD,EAClE,UACA,cACI;CACJ,MAAM,eAAe,iBAAiB;CAEtC,MAAM,EACJ,WACA,WACA,SACA,SACA,YACA,UACA,WACA,eACA,aACE;CAEJ,MAAM,WAAW,OAAuB,KAAK;CAE7C,MAAM,qBAAqB,OAAO,OAAO,cAAc,YAAY;CACnE,MAAM,qBAAqB,OAAO,OAAO,cAAc,YAAY;CACnE,MAAM,sBAAsB,OAAO,OAAO,cAAc,aAAa;CACrE,MAAM,oBAAoB,OAAO,OAAO,cAAc,WAAW;CACjE,MAAM,qBAAqB,OAAO,OAAO,cAAc,YAAY;CACnE,MAAM,mBAAmB,OAAO,OAAO,cAAc,UAAU;CAC/D,MAAM,mBAAmB,OAAO,OAAO,cAAc,UAAU;CAM/D,MAAM,qBAAqB,eAClB;EACL,GAAI,qBAAqB,EAAE,WAAW,GAAG,KAAA;EACzC,GAAI,qBAAqB,EAAE,WAAW,GAAG,KAAA;EACzC,GAAI,sBACA,EACE,aACG,OAAO,eAAe,WACnB,YAAY,aAAa,GACzB,eAAe,kBAAkB,YACxC,GACD,KAAA;EACJ,GAAI,oBACA,EACE,WACG,OAAO,aAAa,WACjB,UAAU,aAAa,GACvB,aAAa,kBAAkB,UACtC,GACD,KAAA;EACJ,GAAI,mBAAmB,EAAE,SAAS,GAAG,KAAA;EACrC,GAAI,mBAAmB,EAAE,SAAS,GAAG,KAAA;EACrC,GAAI,qBACA,EACE,WAAW,WAAW,WAAW,kBAAkB,WACpD,GACD,KAAA;EACL,GACD;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;CAED,IAAI,CAAC,SAAS,SAAS;EACrB,MAAM,gBAAgB,gCAAgC;GACpD;GACA,kBAAkB;GACnB,CAAC;EACF,SAAS,UAAU,gBACjB,wBAAwB;GACtB,GAAG;GACH,GAAG;GACJ,CAAC,CACH;;CAGH,WAAW,SAAS,SAAS,QAAQ;CAErC,OACE,qBAAC,iBAAiB,UAAlB;EAA2B,OAAO,SAAS;YAA3C,CACG,UACD,oBAAC,aAAD,EAAiC,oBAAsB,CAAA,CAC7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"FormUpdater.js","names":[],"sources":["../../../../src/stores/form/FormUpdater.tsx"],"sourcesContent":["import { useAccount } from '@lifi/wallet-management'\nimport { useEffect } from 'react'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport { useBookmarkActions } from '../../stores/bookmarks/useBookmarkActions.js'\nimport { formDefaultValues } from '../../stores/form/createFormStore.js'\nimport type { DefaultValues } from './types.js'\nimport { useFieldActions } from './useFieldActions.js'\n\nexport const FormUpdater: React.FC<{\n reactiveFormValues: Partial<DefaultValues>\n}> = ({ reactiveFormValues }) => {\n const { toAddress } = useWidgetConfig()\n const { account } = useAccount()\n const { setSelectedBookmark } = useBookmarkActions()\n const { setUserAndDefaultValues } = useFieldActions()\n\n // React to changes in widget config options (reactiveFormValues), updating userValues accordingly.\n // Includes special logic for chain fields, where account.chainId is only a fallback and not a direct reactivity source.\n // biome-ignore lint/correctness/useExhaustiveDependencies: account.chainId is used as a fallback only and does not need to be a dependency for reactivity.\n useEffect(() => {\n if (toAddress) {\n setSelectedBookmark(toAddress)\n }\n\n setUserAndDefaultValues(\n accountForChainId(reactiveFormValues, account.chainId)\n )\n }, [\n toAddress,\n reactiveFormValues,\n setUserAndDefaultValues,\n setSelectedBookmark,\n ])\n\n return null\n}\n\nconst accountForChainId = (\n defaultValues: Partial<DefaultValues>,\n chainId?: number\n) => {\n const result: Partial<DefaultValues> = { ...defaultValues }\n for (const key in result) {\n const k = key as keyof DefaultValues\n if (result[k] === formDefaultValues[k]) {\n if ((k === 'fromChain' || k === 'toChain') && chainId) {\n result[k] = chainId\n }\n }\n }\n return result\n}\n"],"mappings":";;;;;;;AAQA,MAAa,eAEP,EAAE,yBAAyB;CAC/B,MAAM,EAAE,cAAc,iBAAiB;CACvC,MAAM,EAAE,YAAY,YAAY;CAChC,MAAM,EAAE,wBAAwB,oBAAoB;CACpD,MAAM,EAAE,4BAA4B,iBAAiB;AAKrD,iBAAgB;AACd,MAAI,UACF,qBAAoB,UAAU;AAGhC,0BACE,kBAAkB,oBAAoB,QAAQ,QAAQ,CACvD;IACA;EACD;EACA;EACA;EACA;EACD,CAAC;AAEF,QAAO;;AAGT,MAAM,qBACJ,eACA,YACG;CACH,MAAM,SAAiC,EAAE,GAAG,eAAe;AAC3D,MAAK,MAAM,OAAO,QAAQ;EACxB,MAAM,IAAI;AACV,MAAI,OAAO,OAAO,kBAAkB;QAC7B,MAAM,eAAe,MAAM,cAAc,QAC5C,QAAO,KAAK;;;AAIlB,QAAO"}
1
+ {"version":3,"file":"FormUpdater.js","names":[],"sources":["../../../../src/stores/form/FormUpdater.tsx"],"sourcesContent":["import { useAccount } from '@lifi/wallet-management'\nimport { useEffect } from 'react'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport { useBookmarkActions } from '../../stores/bookmarks/useBookmarkActions.js'\nimport { formDefaultValues } from '../../stores/form/createFormStore.js'\nimport type { DefaultValues } from './types.js'\nimport { useFieldActions } from './useFieldActions.js'\n\nexport const FormUpdater: React.FC<{\n reactiveFormValues: Partial<DefaultValues>\n}> = ({ reactiveFormValues }) => {\n const { toAddress } = useWidgetConfig()\n const { account } = useAccount()\n const { setSelectedBookmark } = useBookmarkActions()\n const { setUserAndDefaultValues } = useFieldActions()\n\n // React to changes in widget config options (reactiveFormValues), updating userValues accordingly.\n // Includes special logic for chain fields, where account.chainId is only a fallback and not a direct reactivity source.\n // biome-ignore lint/correctness/useExhaustiveDependencies: account.chainId is used as a fallback only and does not need to be a dependency for reactivity.\n useEffect(() => {\n if (toAddress) {\n setSelectedBookmark(toAddress)\n }\n\n setUserAndDefaultValues(\n accountForChainId(reactiveFormValues, account.chainId)\n )\n }, [\n toAddress,\n reactiveFormValues,\n setUserAndDefaultValues,\n setSelectedBookmark,\n ])\n\n return null\n}\n\nconst accountForChainId = (\n defaultValues: Partial<DefaultValues>,\n chainId?: number\n) => {\n const result: Partial<DefaultValues> = { ...defaultValues }\n for (const key in result) {\n const k = key as keyof DefaultValues\n if (result[k] === formDefaultValues[k]) {\n if ((k === 'fromChain' || k === 'toChain') && chainId) {\n result[k] = chainId\n }\n }\n }\n return result\n}\n"],"mappings":";;;;;;;AAQA,MAAa,eAEP,EAAE,yBAAyB;CAC/B,MAAM,EAAE,cAAc,iBAAiB;CACvC,MAAM,EAAE,YAAY,YAAY;CAChC,MAAM,EAAE,wBAAwB,oBAAoB;CACpD,MAAM,EAAE,4BAA4B,iBAAiB;CAKrD,gBAAgB;EACd,IAAI,WACF,oBAAoB,UAAU;EAGhC,wBACE,kBAAkB,oBAAoB,QAAQ,QAAQ,CACvD;IACA;EACD;EACA;EACA;EACA;EACD,CAAC;CAEF,OAAO;;AAGT,MAAM,qBACJ,eACA,YACG;CACH,MAAM,SAAiC,EAAE,GAAG,eAAe;CAC3D,KAAK,MAAM,OAAO,QAAQ;EACxB,MAAM,IAAI;EACV,IAAI,OAAO,OAAO,kBAAkB;QAC7B,MAAM,eAAe,MAAM,cAAc,SAC5C,OAAO,KAAK;;;CAIlB,OAAO"}