@lifi/widget 4.0.0-beta.18 → 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 (298) 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.map +1 -1
  26. package/dist/esm/components/Chains/ChainList.js.map +1 -1
  27. package/dist/esm/components/Chains/ChainList.style.js.map +1 -1
  28. package/dist/esm/components/Chains/ChainListItem.js.map +1 -1
  29. package/dist/esm/components/Chains/ChainSearchInput.js.map +1 -1
  30. package/dist/esm/components/Chains/ChainsExpanded.js.map +1 -1
  31. package/dist/esm/components/Chains/PinChainButton.js.map +1 -1
  32. package/dist/esm/components/Chains/SelectChainContent.js.map +1 -1
  33. package/dist/esm/components/Chains/VirtualizedChainList.js.map +1 -1
  34. package/dist/esm/components/ContextMenu.js.map +1 -1
  35. package/dist/esm/components/ContractComponent/ContractComponent.js.map +1 -1
  36. package/dist/esm/components/ContractComponent/ItemPrice.js.map +1 -1
  37. package/dist/esm/components/ContractComponent/NFT/NFT.js.map +1 -1
  38. package/dist/esm/components/ContractComponent/NFT/NFTBase.js.map +1 -1
  39. package/dist/esm/components/Dialog/Dialog.js.map +1 -1
  40. package/dist/esm/components/Expansion/Expansion.js.map +1 -1
  41. package/dist/esm/components/Expansion/ExpansionTransition.js.map +1 -1
  42. package/dist/esm/components/FeeBreakdownTooltip.js.map +1 -1
  43. package/dist/esm/components/Header/ActivitiesButton.js.map +1 -1
  44. package/dist/esm/components/Header/BackButton.js.map +1 -1
  45. package/dist/esm/components/Header/CloseDrawerButton.js.map +1 -1
  46. package/dist/esm/components/Header/DisconnectIconButton.js.map +1 -1
  47. package/dist/esm/components/Header/Header.js.map +1 -1
  48. package/dist/esm/components/Header/Header.style.js.map +1 -1
  49. package/dist/esm/components/Header/NavigationHeader.js.map +1 -1
  50. package/dist/esm/components/Header/SettingsButton.js.map +1 -1
  51. package/dist/esm/components/Header/SettingsButton.style.js.map +1 -1
  52. package/dist/esm/components/Header/SplitNavigationTabs.js.map +1 -1
  53. package/dist/esm/components/Header/WalletHeader.js.map +1 -1
  54. package/dist/esm/components/Header/WalletMenu.js.map +1 -1
  55. package/dist/esm/components/IconCircle/IconCircle.js.map +1 -1
  56. package/dist/esm/components/IconCircle/IconCircle.style.js.map +1 -1
  57. package/dist/esm/components/Initializer.js.map +1 -1
  58. package/dist/esm/components/ListItemButton.js.map +1 -1
  59. package/dist/esm/components/Messages/AccountDeployedMessage.js.map +1 -1
  60. package/dist/esm/components/Messages/AccountNotDeployedMessage.js.map +1 -1
  61. package/dist/esm/components/Messages/FundsSufficiencyMessage.js.map +1 -1
  62. package/dist/esm/components/Messages/GasRefuelMessage.js.map +1 -1
  63. package/dist/esm/components/Messages/GasSufficiencyMessage.js.map +1 -1
  64. package/dist/esm/components/Messages/MinFromAmountUSDMessage.js.map +1 -1
  65. package/dist/esm/components/Messages/MissingRouteRequiredAccountMessage.js.map +1 -1
  66. package/dist/esm/components/Messages/WarningMessages.js.map +1 -1
  67. package/dist/esm/components/Messages/useMessageQueue.js.map +1 -1
  68. package/dist/esm/components/NotFound.js.map +1 -1
  69. package/dist/esm/components/PageEntered.js.map +1 -1
  70. package/dist/esm/components/PoweredBy/PoweredBy.js.map +1 -1
  71. package/dist/esm/components/ProgressToNextUpdate.js.map +1 -1
  72. package/dist/esm/components/ReverseTokensButton/ReverseTokensButton.js.map +1 -1
  73. package/dist/esm/components/ReverseTokensButton/ReverseTokensButton.style.js.map +1 -1
  74. package/dist/esm/components/RouteCard/RouteCard.js.map +1 -1
  75. package/dist/esm/components/RouteCard/RouteCardEssentials.js.map +1 -1
  76. package/dist/esm/components/RouteCard/RouteCardSkeleton.js.map +1 -1
  77. package/dist/esm/components/RouteCard/RouteDetails.js.map +1 -1
  78. package/dist/esm/components/RouteCard/RouteNotFoundCard.js.map +1 -1
  79. package/dist/esm/components/RouteCard/RouteToken.js.map +1 -1
  80. package/dist/esm/components/RouteCard/RouteTokens.js.map +1 -1
  81. package/dist/esm/components/RouteCard/getMatchingLabels.js.map +1 -1
  82. package/dist/esm/components/Routes/Routes.js.map +1 -1
  83. package/dist/esm/components/Routes/RoutesContent.js.map +1 -1
  84. package/dist/esm/components/Routes/RoutesExpanded.js.map +1 -1
  85. package/dist/esm/components/Routes/RoutesExpanded.style.js.map +1 -1
  86. package/dist/esm/components/Search/SearchInput.js.map +1 -1
  87. package/dist/esm/components/SelectChainAndToken.js.map +1 -1
  88. package/dist/esm/components/SelectTokenButton/SelectTokenButton.js.map +1 -1
  89. package/dist/esm/components/SelectTokenButton/SelectTokenButton.style.js.map +1 -1
  90. package/dist/esm/components/SendToWallet/SendToWalletButton.js.map +1 -1
  91. package/dist/esm/components/SendToWallet/SendToWalletExpandButton.js.map +1 -1
  92. package/dist/esm/components/Skeleton/WidgetSkeleton.js.map +1 -1
  93. package/dist/esm/components/Skeleton/WidgetSkeleton.style.js.map +1 -1
  94. package/dist/esm/components/Step/CircularProgress.js.map +1 -1
  95. package/dist/esm/components/Step/CircularProgress.style.js.map +1 -1
  96. package/dist/esm/components/Step/DestinationWalletAddress.js.map +1 -1
  97. package/dist/esm/components/Step/Step.js.map +1 -1
  98. package/dist/esm/components/Step/StepAction.js.map +1 -1
  99. package/dist/esm/components/Step/StepActions.js.map +1 -1
  100. package/dist/esm/components/Step/StepList.js.map +1 -1
  101. package/dist/esm/components/StepActions/StepActions.js.map +1 -1
  102. package/dist/esm/components/StepDivider/StepDivider.js.map +1 -1
  103. package/dist/esm/components/TextFitter/TextFitter.js.map +1 -1
  104. package/dist/esm/components/Timer/StepTimer.js.map +1 -1
  105. package/dist/esm/components/Timer/TimerContent.js.map +1 -1
  106. package/dist/esm/components/Token/Token.js.map +1 -1
  107. package/dist/esm/components/TokenList/PinTokenButton.js.map +1 -1
  108. package/dist/esm/components/TokenList/TokenDetailsSheet.js.map +1 -1
  109. package/dist/esm/components/TokenList/TokenDetailsSheetContent.js.map +1 -1
  110. package/dist/esm/components/TokenList/TokenList.js.map +1 -1
  111. package/dist/esm/components/TokenList/TokenListItem.js.map +1 -1
  112. package/dist/esm/components/TokenList/TokenNotFound.js.map +1 -1
  113. package/dist/esm/components/TokenList/VirtualizedTokenList.js.map +1 -1
  114. package/dist/esm/components/TokenList/useTokenSelect.js.map +1 -1
  115. package/dist/esm/components/TokenRate/TokenRate.js.map +1 -1
  116. package/dist/esm/components/Tools/ToolItem.js.map +1 -1
  117. package/dist/esm/components/Tools/Tools.js.map +1 -1
  118. package/dist/esm/components/TransactionCard/ActiveTransactionCard.js.map +1 -1
  119. package/dist/esm/components/TransactionCard/TransactionCard.js.map +1 -1
  120. package/dist/esm/components/TransactionCard/TransactionCardSkeleton.js.map +1 -1
  121. package/dist/esm/components/TransactionDetails.js.map +1 -1
  122. package/dist/esm/config/version.d.ts +1 -1
  123. package/dist/esm/config/version.js +1 -1
  124. package/dist/esm/config/version.js.map +1 -1
  125. package/dist/esm/hooks/timer/time.js.map +1 -1
  126. package/dist/esm/hooks/timer/useExecutionTimer.js.map +1 -1
  127. package/dist/esm/hooks/timer/useInterval.js.map +1 -1
  128. package/dist/esm/hooks/timer/useTimer.js.map +1 -1
  129. package/dist/esm/hooks/timer/validate.js.map +1 -1
  130. package/dist/esm/hooks/useAccountsBalancesData.js.map +1 -1
  131. package/dist/esm/hooks/useActionMessage.js.map +1 -1
  132. package/dist/esm/hooks/useAddressActivity.js.map +1 -1
  133. package/dist/esm/hooks/useAddressValidation.js.map +1 -1
  134. package/dist/esm/hooks/useAvailableChains.js.map +1 -1
  135. package/dist/esm/hooks/useChain.js.map +1 -1
  136. package/dist/esm/hooks/useChains.js.map +1 -1
  137. package/dist/esm/hooks/useContactSupport.js.map +1 -1
  138. package/dist/esm/hooks/useDebouncedWatch.js.map +1 -1
  139. package/dist/esm/hooks/useDefaultElementId.js.map +1 -1
  140. package/dist/esm/hooks/useExplorer.js.map +1 -1
  141. package/dist/esm/hooks/useFilteredByTokenBalances.js.map +1 -1
  142. package/dist/esm/hooks/useFromAmountThreshold.js.map +1 -1
  143. package/dist/esm/hooks/useFromTokenSufficiency.js.map +1 -1
  144. package/dist/esm/hooks/useGasRecommendation.js.map +1 -1
  145. package/dist/esm/hooks/useGasRefuel.js.map +1 -1
  146. package/dist/esm/hooks/useGasSufficiency.js.map +1 -1
  147. package/dist/esm/hooks/useHasChainExpansion.js.map +1 -1
  148. package/dist/esm/hooks/useHeader.js.map +1 -1
  149. package/dist/esm/hooks/useInitializeSDKProviders.js.map +1 -1
  150. package/dist/esm/hooks/useInitializer.js.map +1 -1
  151. package/dist/esm/hooks/useIsBatchingSupported.js.map +1 -1
  152. package/dist/esm/hooks/useIsContractAddress.js.map +1 -1
  153. package/dist/esm/hooks/useLanguages.js.map +1 -1
  154. package/dist/esm/hooks/useListHeight.js.map +1 -1
  155. package/dist/esm/hooks/useLongPress.js.map +1 -1
  156. package/dist/esm/hooks/useNavigateBack.js.map +1 -1
  157. package/dist/esm/hooks/useRouteExecution.js.map +1 -1
  158. package/dist/esm/hooks/useRouteRequiredAccountConnection.js.map +1 -1
  159. package/dist/esm/hooks/useRoutes.js.map +1 -1
  160. package/dist/esm/hooks/useScrollableContainer.js.map +1 -1
  161. package/dist/esm/hooks/useSetContentHeight.js.map +1 -1
  162. package/dist/esm/hooks/useSettingMonitor.js.map +1 -1
  163. package/dist/esm/hooks/useSwapOnly.js.map +1 -1
  164. package/dist/esm/hooks/useToAddressAutoPopulate.js.map +1 -1
  165. package/dist/esm/hooks/useToAddressRequirements.js.map +1 -1
  166. package/dist/esm/hooks/useToAddressReset.js.map +1 -1
  167. package/dist/esm/hooks/useToken.js.map +1 -1
  168. package/dist/esm/hooks/useTokenAddressBalance.js.map +1 -1
  169. package/dist/esm/hooks/useTokenBalance.js.map +1 -1
  170. package/dist/esm/hooks/useTokenBalances.js.map +1 -1
  171. package/dist/esm/hooks/useTokenBalancesQueries.js.map +1 -1
  172. package/dist/esm/hooks/useTokenRateText.js.map +1 -1
  173. package/dist/esm/hooks/useTokenSearch.js.map +1 -1
  174. package/dist/esm/hooks/useTokens.js.map +1 -1
  175. package/dist/esm/hooks/useTools.js.map +1 -1
  176. package/dist/esm/hooks/useTransactionDetails.js.map +1 -1
  177. package/dist/esm/hooks/useTransactionHistory.js.map +1 -1
  178. package/dist/esm/hooks/useTransactionList.js.map +1 -1
  179. package/dist/esm/hooks/useWideVariant.js.map +1 -1
  180. package/dist/esm/hooks/useWidgetChains.js.map +1 -1
  181. package/dist/esm/hooks/useWidgetEvents.js.map +1 -1
  182. package/dist/esm/pages/ActivitiesPage/ActiveTransactionItem.js.map +1 -1
  183. package/dist/esm/pages/ActivitiesPage/ActivitiesPage.js.map +1 -1
  184. package/dist/esm/pages/ActivitiesPage/ActivitiesPageMenuButton.js.map +1 -1
  185. package/dist/esm/pages/ActivitiesPage/TransactionHistoryEmpty.js.map +1 -1
  186. package/dist/esm/pages/ActivitiesPage/TransactionHistoryItem.js.map +1 -1
  187. package/dist/esm/pages/LanguagesPage.js.map +1 -1
  188. package/dist/esm/pages/MainPage/MainPage.js.map +1 -1
  189. package/dist/esm/pages/MainPage/MainWarningMessages.js.map +1 -1
  190. package/dist/esm/pages/MainPage/ReviewButton.js.map +1 -1
  191. package/dist/esm/pages/RoutesPage/RoutesPage.js.map +1 -1
  192. package/dist/esm/pages/SelectChainPage/SelectChainPage.js.map +1 -1
  193. package/dist/esm/pages/SelectEnabledToolsPage.js.map +1 -1
  194. package/dist/esm/pages/SelectTokenPage/SearchTokenInput.js.map +1 -1
  195. package/dist/esm/pages/SelectTokenPage/SelectTokenPage.js.map +1 -1
  196. package/dist/esm/pages/SendToWallet/BookmarkAddressSheet.js.map +1 -1
  197. package/dist/esm/pages/SendToWallet/BookmarksPage.js.map +1 -1
  198. package/dist/esm/pages/SendToWallet/ConfirmAddressSheet.js.map +1 -1
  199. package/dist/esm/pages/SendToWallet/ConnectedWalletsPage.js.map +1 -1
  200. package/dist/esm/pages/SendToWallet/RecentWalletsPage.js.map +1 -1
  201. package/dist/esm/pages/SendToWallet/SendToConfiguredWalletPage.js.map +1 -1
  202. package/dist/esm/pages/SendToWallet/SendToWalletPage.js.map +1 -1
  203. package/dist/esm/pages/SettingsPage/BridgeAndExchangeSettings.js.map +1 -1
  204. package/dist/esm/pages/SettingsPage/GasPriceSettings.js.map +1 -1
  205. package/dist/esm/pages/SettingsPage/LanguageSetting.js.map +1 -1
  206. package/dist/esm/pages/SettingsPage/ResetSettingsButton.js.map +1 -1
  207. package/dist/esm/pages/SettingsPage/RoutePrioritySettings.js.map +1 -1
  208. package/dist/esm/pages/SettingsPage/SettingsCard/SettingCardExpandable.js.map +1 -1
  209. package/dist/esm/pages/SettingsPage/SettingsCard/SettingsAccordian.js.map +1 -1
  210. package/dist/esm/pages/SettingsPage/SettingsPage.js.map +1 -1
  211. package/dist/esm/pages/SettingsPage/SlippageSettings/SlippageSettings.js.map +1 -1
  212. package/dist/esm/pages/SettingsPage/SlippageSettings/SlippageSettings.style.js.map +1 -1
  213. package/dist/esm/pages/SettingsPage/SmallBalanceFilterSettings.js.map +1 -1
  214. package/dist/esm/pages/SettingsPage/ThemeSettings.js.map +1 -1
  215. package/dist/esm/pages/TransactionDetailsPage/ActionRow.js.map +1 -1
  216. package/dist/esm/pages/TransactionDetailsPage/ContactSupportButton.js.map +1 -1
  217. package/dist/esm/pages/TransactionDetailsPage/ReceiptsCard.js.map +1 -1
  218. package/dist/esm/pages/TransactionDetailsPage/SentToWalletRow.js.map +1 -1
  219. package/dist/esm/pages/TransactionDetailsPage/StepActionRow.js.map +1 -1
  220. package/dist/esm/pages/TransactionDetailsPage/StepActionsList.js.map +1 -1
  221. package/dist/esm/pages/TransactionDetailsPage/TransactionDetailsPage.js.map +1 -1
  222. package/dist/esm/pages/TransactionDetailsPage/TransactionDetailsSkeleton.js.map +1 -1
  223. package/dist/esm/pages/TransactionDetailsPage/TransferIdCard.js.map +1 -1
  224. package/dist/esm/pages/TransactionPage/ConfirmToAddressSheet.js.map +1 -1
  225. package/dist/esm/pages/TransactionPage/ExchangeRateBottomSheet.js.map +1 -1
  226. package/dist/esm/pages/TransactionPage/RouteTracker.js.map +1 -1
  227. package/dist/esm/pages/TransactionPage/StartTransactionButton.js.map +1 -1
  228. package/dist/esm/pages/TransactionPage/StatusBottomSheet.js.map +1 -1
  229. package/dist/esm/pages/TransactionPage/StatusBottomSheet.style.js.map +1 -1
  230. package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.js.map +1 -1
  231. package/dist/esm/pages/TransactionPage/TransactionPage.js.map +1 -1
  232. package/dist/esm/pages/TransactionPage/utils.js.map +1 -1
  233. package/dist/esm/providers/I18nProvider/I18nProvider.js.map +1 -1
  234. package/dist/esm/providers/I18nProvider/i18n.js.map +1 -1
  235. package/dist/esm/providers/QueryClientProvider.js.map +1 -1
  236. package/dist/esm/providers/SDKClientProvider.js.map +1 -1
  237. package/dist/esm/providers/ThemeProvider/ThemeProvider.js.map +1 -1
  238. package/dist/esm/providers/WalletProvider/WalletProvider.js.map +1 -1
  239. package/dist/esm/providers/WalletProvider/useExternalWalletProvider.js.map +1 -1
  240. package/dist/esm/providers/WidgetProvider/WidgetProvider.js.map +1 -1
  241. package/dist/esm/stores/StoreProvider.js.map +1 -1
  242. package/dist/esm/stores/bookmarks/BookmarkStore.js.map +1 -1
  243. package/dist/esm/stores/bookmarks/createBookmarkStore.js.map +1 -1
  244. package/dist/esm/stores/bookmarks/useBookmarkActions.js.map +1 -1
  245. package/dist/esm/stores/bookmarks/useBookmarks.js.map +1 -1
  246. package/dist/esm/stores/chains/ChainOrderStore.js.map +1 -1
  247. package/dist/esm/stores/chains/createChainOrderStore.js.map +1 -1
  248. package/dist/esm/stores/chains/useChainOrder.js.map +1 -1
  249. package/dist/esm/stores/form/FormStore.js.map +1 -1
  250. package/dist/esm/stores/form/FormUpdater.js.map +1 -1
  251. package/dist/esm/stores/form/URLSearchParamsBuilder.js.map +1 -1
  252. package/dist/esm/stores/form/createFormStore.js.map +1 -1
  253. package/dist/esm/stores/form/getDefaultValuesFromQueryString.js.map +1 -1
  254. package/dist/esm/stores/form/useFieldActions.js.map +1 -1
  255. package/dist/esm/stores/form/useFieldValues.js.map +1 -1
  256. package/dist/esm/stores/form/useFormRef.js.map +1 -1
  257. package/dist/esm/stores/form/useFormStore.js.map +1 -1
  258. package/dist/esm/stores/form/useTouchedFields.js.map +1 -1
  259. package/dist/esm/stores/header/useHeaderStore.js.map +1 -1
  260. package/dist/esm/stores/inputMode/useInputModeStore.js.map +1 -1
  261. package/dist/esm/stores/pinnedTokens/PinnedTokensStore.js.map +1 -1
  262. package/dist/esm/stores/pinnedTokens/createPinnedTokensStore.js.map +1 -1
  263. package/dist/esm/stores/routes/RouteExecutionStore.js.map +1 -1
  264. package/dist/esm/stores/routes/createRouteExecutionStore.js.map +1 -1
  265. package/dist/esm/stores/routes/useIntermediateRoutesStore.js.map +1 -1
  266. package/dist/esm/stores/routes/useRouteExecutionIndicator.js.map +1 -1
  267. package/dist/esm/stores/routes/useSetExecutableRoute.js.map +1 -1
  268. package/dist/esm/stores/routes/utils.js.map +1 -1
  269. package/dist/esm/stores/settings/SettingsStore.js.map +1 -1
  270. package/dist/esm/stores/settings/createSettingsStore.js.map +1 -1
  271. package/dist/esm/stores/settings/useSettings.js.map +1 -1
  272. package/dist/esm/stores/settings/useSettingsActions.js.map +1 -1
  273. package/dist/esm/stores/settings/useSplitSubvariantStore.js.map +1 -1
  274. package/dist/esm/themes/createTheme.js.map +1 -1
  275. package/dist/esm/themes/utils.js.map +1 -1
  276. package/dist/esm/types/events.js.map +1 -1
  277. package/dist/esm/types/widget.js.map +1 -1
  278. package/dist/esm/utils/compactNumberFormatter.js.map +1 -1
  279. package/dist/esm/utils/converters.js.map +1 -1
  280. package/dist/esm/utils/currencyExtendedFormatter.js.map +1 -1
  281. package/dist/esm/utils/deepEqual.js.map +1 -1
  282. package/dist/esm/utils/deepMerge.js.map +1 -1
  283. package/dist/esm/utils/fees.js.map +1 -1
  284. package/dist/esm/utils/format.js.map +1 -1
  285. package/dist/esm/utils/getActionMessage.js.map +1 -1
  286. package/dist/esm/utils/getErrorMessage.js.map +1 -1
  287. package/dist/esm/utils/getPriceImpact.js.map +1 -1
  288. package/dist/esm/utils/input.js.map +1 -1
  289. package/dist/esm/utils/item.js.map +1 -1
  290. package/dist/esm/utils/percentFormatter.js.map +1 -1
  291. package/dist/esm/utils/prepareActions.js.map +1 -1
  292. package/dist/esm/utils/timer.js.map +1 -1
  293. package/dist/esm/utils/token.js.map +1 -1
  294. package/dist/esm/utils/tokenList.js.map +1 -1
  295. package/dist/esm/utils/variant.js.map +1 -1
  296. package/dist/esm/utils/widgetSize.js.map +1 -1
  297. package/package.json +11 -11
  298. package/src/config/version.ts +1 -1
@@ -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,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;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,sBAAmB,MADkB,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,mBACb,GACxB,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,CAInD;EACZ,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,CAK+B;EAC9B,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,CAEU"}
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,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;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,EAEa"}
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,2BACF,CAAC,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,CAGW,EAAE,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"}
@@ -1 +1 @@
1
- {"version":3,"file":"URLSearchParamsBuilder.js","names":[],"sources":["../../../../src/stores/form/URLSearchParamsBuilder.tsx"],"sourcesContent":["import { useLocation } from '@tanstack/react-router'\nimport { useEffect } from 'react'\nimport { useAddressValidation } from '../../hooks/useAddressValidation.js'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport { useBookmarkActions } from '../bookmarks/useBookmarkActions.js'\nimport type { FormFieldNames } from '../form/types.js'\nimport { useFieldActions } from '../form/useFieldActions.js'\nimport { useFieldValues } from '../form/useFieldValues.js'\nimport { useTouchedFields } from '../form/useTouchedFields.js'\nimport { getDefaultValuesFromQueryString } from './getDefaultValuesFromQueryString.js'\n\nconst formValueKeys: FormFieldNames[] = [\n 'fromAmount',\n 'fromChain',\n 'fromToken',\n 'toAddress',\n 'toChain',\n 'toToken',\n]\n\nexport const URLSearchParamsBuilder = () => {\n const { pathname } = useLocation()\n const touchedFields = useTouchedFields()\n const values = useFieldValues(...formValueKeys)\n const { setSelectedBookmark, addRecentWallet } = useBookmarkActions()\n const { validateAddress } = useAddressValidation()\n const { buildUrl } = useWidgetConfig()\n // Using these methods as trying to use the touchedFields and values above\n // often has a lag that can effect the widgets initialisation sequence\n // and accidentally cause values to be wiped from the query string\n const { getFieldValues, isTouched, setUserAndDefaultValues } =\n useFieldActions()\n\n useEffect(() => {\n // get the initial values from the querystring\n const formValues = getDefaultValuesFromQueryString({ buildUrl })\n const { toAddress, ...initialFormValues } = formValues\n\n /**\n * When URL builder is enabled and user opens a page with toAddress parameter,\n * validate the address and set it up as a bookmark. This allows direct linking\n * to the widget with a pre-filled destination address that will be treated the\n * same way as a manually entered and validated address.\n */\n const initializeFromAddress = async () => {\n if (toAddress) {\n try {\n const validationResult = await validateAddress({\n value: toAddress,\n })\n if (validationResult.isValid && toAddress) {\n const bookmark = {\n address: validationResult.address,\n chainType: validationResult.chainType,\n }\n setUserAndDefaultValues({ toAddress })\n setSelectedBookmark(bookmark)\n addRecentWallet(bookmark)\n }\n } catch (_) {\n // Address validation failed\n }\n }\n }\n\n setUserAndDefaultValues(initialFormValues)\n initializeFromAddress()\n }, [\n setUserAndDefaultValues,\n validateAddress,\n setSelectedBookmark,\n addRecentWallet,\n buildUrl,\n ])\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: run only when pathname changes\n useEffect(() => {\n // set the values on the querysting\n const url = new URL(window.location as any)\n formValueKeys.forEach((key, _index) => {\n const value = getFieldValues(key)[0]\n if (isTouched(key) && value) {\n url.searchParams.set(key, value.toString())\n } else if (url.searchParams.has(key) && !value) {\n url.searchParams.delete(key)\n }\n })\n url.searchParams.sort()\n window.history.replaceState(window.history.state, '', url)\n }, [pathname, touchedFields, values, isTouched, getFieldValues])\n\n return null\n}\n"],"mappings":";;;;;;;;;;AAWA,MAAM,gBAAkC;CACtC;CACA;CACA;CACA;CACA;CACA;CACD;AAED,MAAa,+BAA+B;CAC1C,MAAM,EAAE,aAAa,aAAa;CAClC,MAAM,gBAAgB,kBAAkB;CACxC,MAAM,SAAS,eAAe,GAAG,cAAc;CAC/C,MAAM,EAAE,qBAAqB,oBAAoB,oBAAoB;CACrE,MAAM,EAAE,oBAAoB,sBAAsB;CAClD,MAAM,EAAE,aAAa,iBAAiB;CAItC,MAAM,EAAE,gBAAgB,WAAW,4BACjC,iBAAiB;AAEnB,iBAAgB;EAGd,MAAM,EAAE,WAAW,GAAG,sBADH,gCAAgC,EAAE,UAAU,CACT;;;;;;;EAQtD,MAAM,wBAAwB,YAAY;AACxC,OAAI,UACF,KAAI;IACF,MAAM,mBAAmB,MAAM,gBAAgB,EAC7C,OAAO,WACR,CAAC;AACF,QAAI,iBAAiB,WAAW,WAAW;KACzC,MAAM,WAAW;MACf,SAAS,iBAAiB;MAC1B,WAAW,iBAAiB;MAC7B;AACD,6BAAwB,EAAE,WAAW,CAAC;AACtC,yBAAoB,SAAS;AAC7B,qBAAgB,SAAS;;YAEpB,GAAG;;AAMhB,0BAAwB,kBAAkB;AAC1C,yBAAuB;IACtB;EACD;EACA;EACA;EACA;EACA;EACD,CAAC;AAGF,iBAAgB;EAEd,MAAM,MAAM,IAAI,IAAI,OAAO,SAAgB;AAC3C,gBAAc,SAAS,KAAK,WAAW;GACrC,MAAM,QAAQ,eAAe,IAAI,CAAC;AAClC,OAAI,UAAU,IAAI,IAAI,MACpB,KAAI,aAAa,IAAI,KAAK,MAAM,UAAU,CAAC;YAClC,IAAI,aAAa,IAAI,IAAI,IAAI,CAAC,MACvC,KAAI,aAAa,OAAO,IAAI;IAE9B;AACF,MAAI,aAAa,MAAM;AACvB,SAAO,QAAQ,aAAa,OAAO,QAAQ,OAAO,IAAI,IAAI;IACzD;EAAC;EAAU;EAAe;EAAQ;EAAW;EAAe,CAAC;AAEhE,QAAO"}
1
+ {"version":3,"file":"URLSearchParamsBuilder.js","names":[],"sources":["../../../../src/stores/form/URLSearchParamsBuilder.tsx"],"sourcesContent":["import { useLocation } from '@tanstack/react-router'\nimport { useEffect } from 'react'\nimport { useAddressValidation } from '../../hooks/useAddressValidation.js'\nimport { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'\nimport { useBookmarkActions } from '../bookmarks/useBookmarkActions.js'\nimport type { FormFieldNames } from '../form/types.js'\nimport { useFieldActions } from '../form/useFieldActions.js'\nimport { useFieldValues } from '../form/useFieldValues.js'\nimport { useTouchedFields } from '../form/useTouchedFields.js'\nimport { getDefaultValuesFromQueryString } from './getDefaultValuesFromQueryString.js'\n\nconst formValueKeys: FormFieldNames[] = [\n 'fromAmount',\n 'fromChain',\n 'fromToken',\n 'toAddress',\n 'toChain',\n 'toToken',\n]\n\nexport const URLSearchParamsBuilder = () => {\n const { pathname } = useLocation()\n const touchedFields = useTouchedFields()\n const values = useFieldValues(...formValueKeys)\n const { setSelectedBookmark, addRecentWallet } = useBookmarkActions()\n const { validateAddress } = useAddressValidation()\n const { buildUrl } = useWidgetConfig()\n // Using these methods as trying to use the touchedFields and values above\n // often has a lag that can effect the widgets initialisation sequence\n // and accidentally cause values to be wiped from the query string\n const { getFieldValues, isTouched, setUserAndDefaultValues } =\n useFieldActions()\n\n useEffect(() => {\n // get the initial values from the querystring\n const formValues = getDefaultValuesFromQueryString({ buildUrl })\n const { toAddress, ...initialFormValues } = formValues\n\n /**\n * When URL builder is enabled and user opens a page with toAddress parameter,\n * validate the address and set it up as a bookmark. This allows direct linking\n * to the widget with a pre-filled destination address that will be treated the\n * same way as a manually entered and validated address.\n */\n const initializeFromAddress = async () => {\n if (toAddress) {\n try {\n const validationResult = await validateAddress({\n value: toAddress,\n })\n if (validationResult.isValid && toAddress) {\n const bookmark = {\n address: validationResult.address,\n chainType: validationResult.chainType,\n }\n setUserAndDefaultValues({ toAddress })\n setSelectedBookmark(bookmark)\n addRecentWallet(bookmark)\n }\n } catch (_) {\n // Address validation failed\n }\n }\n }\n\n setUserAndDefaultValues(initialFormValues)\n initializeFromAddress()\n }, [\n setUserAndDefaultValues,\n validateAddress,\n setSelectedBookmark,\n addRecentWallet,\n buildUrl,\n ])\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: run only when pathname changes\n useEffect(() => {\n // set the values on the querysting\n const url = new URL(window.location as any)\n formValueKeys.forEach((key, _index) => {\n const value = getFieldValues(key)[0]\n if (isTouched(key) && value) {\n url.searchParams.set(key, value.toString())\n } else if (url.searchParams.has(key) && !value) {\n url.searchParams.delete(key)\n }\n })\n url.searchParams.sort()\n window.history.replaceState(window.history.state, '', url)\n }, [pathname, touchedFields, values, isTouched, getFieldValues])\n\n return null\n}\n"],"mappings":";;;;;;;;;;AAWA,MAAM,gBAAkC;CACtC;CACA;CACA;CACA;CACA;CACA;CACD;AAED,MAAa,+BAA+B;CAC1C,MAAM,EAAE,aAAa,aAAa;CAClC,MAAM,gBAAgB,kBAAkB;CACxC,MAAM,SAAS,eAAe,GAAG,cAAc;CAC/C,MAAM,EAAE,qBAAqB,oBAAoB,oBAAoB;CACrE,MAAM,EAAE,oBAAoB,sBAAsB;CAClD,MAAM,EAAE,aAAa,iBAAiB;CAItC,MAAM,EAAE,gBAAgB,WAAW,4BACjC,iBAAiB;CAEnB,gBAAgB;EAGd,MAAM,EAAE,WAAW,GAAG,sBADH,gCAAgC,EAAE,UAAU,CACT;;;;;;;EAQtD,MAAM,wBAAwB,YAAY;GACxC,IAAI,WACF,IAAI;IACF,MAAM,mBAAmB,MAAM,gBAAgB,EAC7C,OAAO,WACR,CAAC;IACF,IAAI,iBAAiB,WAAW,WAAW;KACzC,MAAM,WAAW;MACf,SAAS,iBAAiB;MAC1B,WAAW,iBAAiB;MAC7B;KACD,wBAAwB,EAAE,WAAW,CAAC;KACtC,oBAAoB,SAAS;KAC7B,gBAAgB,SAAS;;YAEpB,GAAG;;EAMhB,wBAAwB,kBAAkB;EAC1C,uBAAuB;IACtB;EACD;EACA;EACA;EACA;EACA;EACD,CAAC;CAGF,gBAAgB;EAEd,MAAM,MAAM,IAAI,IAAI,OAAO,SAAgB;EAC3C,cAAc,SAAS,KAAK,WAAW;GACrC,MAAM,QAAQ,eAAe,IAAI,CAAC;GAClC,IAAI,UAAU,IAAI,IAAI,OACpB,IAAI,aAAa,IAAI,KAAK,MAAM,UAAU,CAAC;QACtC,IAAI,IAAI,aAAa,IAAI,IAAI,IAAI,CAAC,OACvC,IAAI,aAAa,OAAO,IAAI;IAE9B;EACF,IAAI,aAAa,MAAM;EACvB,OAAO,QAAQ,aAAa,OAAO,QAAQ,OAAO,IAAI,IAAI;IACzD;EAAC;EAAU;EAAe;EAAQ;EAAW;EAAe,CAAC;CAEhE,OAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"createFormStore.js","names":[],"sources":["../../../../src/stores/form/createFormStore.ts"],"sourcesContent":["import type { StoreApi, UseBoundStore } from 'zustand'\nimport { create } from 'zustand'\n\nimport type {\n DefaultValues,\n FormFieldArray,\n FormFieldNames,\n FormValueControl,\n FormValues,\n FormValuesState,\n} from './types.js'\n\nexport const formDefaultValues: DefaultValues = {\n fromAmount: '',\n toAmount: '',\n tokenSearchFilter: '',\n}\n\nconst defaultValueToFormValue = <T>(value: T): FormValueControl<T> => ({\n isTouched: false,\n isDirty: false,\n value,\n})\n\nconst valuesToFormValues = (defaultValues: DefaultValues): FormValues => {\n return (Object.keys(defaultValues) as FormFieldNames[]).reduce(\n (accum, key) => {\n accum[key] = defaultValueToFormValue(defaultValues[key]) as never\n return accum\n },\n {} as FormValues\n )\n}\n\nconst isString = (str: any) => typeof str === 'string' || str instanceof String\n\nconst getUpdatedTouchedFields = (userValues: FormValues) => {\n return (Object.keys(userValues) as FormFieldNames[]).reduce(\n (accum, key) => {\n if (userValues[key]?.isTouched) {\n accum[key] = true\n }\n return accum\n },\n {} as Record<FormFieldNames, boolean>\n )\n}\n\nconst mergeDefaultFormValues = (\n userValues: FormValues,\n defaultValues: FormValues\n) =>\n (Object.keys(defaultValues) as FormFieldNames[]).reduce<FormValues>(\n (accum, key) => {\n const formValue = {\n isTouched: !!(\n userValues[key]?.isTouched || defaultValues[key]?.isTouched\n ),\n isDirty: !!(userValues[key]?.isDirty || defaultValues[key]?.isTouched),\n value:\n userValues[key]?.value || Number.isFinite(userValues[key]?.value)\n ? userValues[key]?.value\n : defaultValues[key]?.value,\n }\n accum[key] = formValue as never\n return accum\n },\n { ...valuesToFormValues(formDefaultValues) }\n )\n\nexport const createFormStore = (\n defaultValues?: DefaultValues\n): UseBoundStore<StoreApi<FormValuesState>> =>\n create<FormValuesState>((set, get) => {\n const _defaultValues = valuesToFormValues({\n ...formDefaultValues,\n ...defaultValues,\n })\n return {\n defaultValues: _defaultValues,\n userValues: _defaultValues,\n touchedFields: {},\n isValid: true,\n isValidating: false,\n errors: {},\n validation: {},\n setDefaultValues: (defaultValue) => {\n const defaultFormValues = valuesToFormValues(defaultValue)\n set((state) => ({\n defaultValues: defaultFormValues,\n userValues: mergeDefaultFormValues(\n state.userValues,\n defaultFormValues\n ),\n }))\n },\n setUserAndDefaultValues: (formValues) => {\n const currentUserValues = get().userValues\n ;(Object.keys(formValues) as FormFieldNames[]).forEach((key) => {\n if (formValues[key] !== currentUserValues[key]?.value) {\n get().resetField(key, { defaultValue: formValues[key] })\n get().setFieldValue(key, formValues[key], { isTouched: true })\n }\n })\n },\n isTouched: (fieldName: FormFieldNames) =>\n !!get().userValues[fieldName]?.isTouched,\n isDirty: (fieldName: FormFieldNames) =>\n !!get().userValues[fieldName]?.isDirty,\n setAsTouched: (fieldName: FormFieldNames) => {\n const userValues = {\n ...get().userValues,\n [fieldName]: {\n ...get().userValues[fieldName],\n isTouched: true,\n },\n }\n\n const touchedFields = getUpdatedTouchedFields(userValues)\n\n set(() => ({\n userValues,\n touchedFields,\n }))\n },\n resetField: (fieldName, { defaultValue } = {}) => {\n if (defaultValue) {\n const fieldValues = {\n ...get().defaultValues[fieldName],\n value: defaultValue,\n }\n const defaultValues = {\n ...get().defaultValues,\n [fieldName]: { ...fieldValues },\n }\n const userValues = {\n ...get().userValues,\n [fieldName]: { ...fieldValues },\n }\n const touchedFields = getUpdatedTouchedFields(userValues)\n\n set(() => {\n return {\n defaultValues,\n userValues,\n touchedFields,\n }\n })\n } else {\n const userValues = {\n ...get().userValues,\n [fieldName]: { ...get().defaultValues[fieldName] },\n }\n const touchedFields = getUpdatedTouchedFields(userValues)\n\n set(() => ({\n userValues,\n touchedFields,\n }))\n }\n },\n setFieldValue: (fieldName, value, { isDirty, isTouched } = {}) => {\n const userValues = {\n ...get().userValues,\n [fieldName]: {\n value,\n isDirty:\n isDirty === undefined\n ? get().userValues[fieldName]?.isDirty\n : isDirty,\n isTouched:\n isTouched === undefined\n ? get().userValues[fieldName]?.isTouched\n : isTouched,\n },\n }\n\n const touchedFields = getUpdatedTouchedFields(userValues)\n\n set(() => ({\n userValues,\n touchedFields,\n }))\n },\n getFieldValues: <T extends FormFieldNames[]>(...names: T) =>\n names.map((name) => get().userValues[name]?.value) as FormFieldArray<T>,\n addFieldValidation: (name, validationFn) => {\n set((state) => ({\n validation: {\n ...state.validation,\n [name]: validationFn,\n },\n }))\n },\n triggerFieldValidation: async (name) => {\n try {\n let valid = true\n set(() => ({ isValid: false, isValidating: true }))\n\n const validationFn = get().validation[name]\n\n if (validationFn) {\n const result = await validationFn(get().userValues?.[name]?.value)\n if (isString(result)) {\n valid = false\n set((state) => ({\n errors: {\n ...state.errors,\n [name]: result,\n },\n }))\n } else {\n valid = result as boolean\n if (valid) {\n get().clearErrors(name)\n }\n }\n }\n\n set(() => ({ isValid: valid, isValidating: false }))\n return valid\n } catch (err) {\n set(() => ({ isValidating: false }))\n throw err\n }\n },\n clearErrors: (name) => {\n const newErrors = { ...get().errors }\n\n delete newErrors[name]\n\n set(() => ({\n errors: newErrors,\n }))\n },\n }\n })\n"],"mappings":";;AAYA,MAAa,oBAAmC;CAC9C,YAAY;CACZ,UAAU;CACV,mBAAmB;CACpB;AAED,MAAM,2BAA8B,WAAmC;CACrE,WAAW;CACX,SAAS;CACT;CACD;AAED,MAAM,sBAAsB,kBAA6C;AACvE,QAAQ,OAAO,KAAK,cAAc,CAAsB,QACrD,OAAO,QAAQ;AACd,QAAM,OAAO,wBAAwB,cAAc,KAAK;AACxD,SAAO;IAET,EAAE,CACH;;AAGH,MAAM,YAAY,QAAa,OAAO,QAAQ,YAAY,eAAe;AAEzE,MAAM,2BAA2B,eAA2B;AAC1D,QAAQ,OAAO,KAAK,WAAW,CAAsB,QAClD,OAAO,QAAQ;AACd,MAAI,WAAW,MAAM,UACnB,OAAM,OAAO;AAEf,SAAO;IAET,EAAE,CACH;;AAGH,MAAM,0BACJ,YACA,kBAEC,OAAO,KAAK,cAAc,CAAsB,QAC9C,OAAO,QAAQ;AAWd,OAAM,OAAO;EATX,WAAW,CAAC,EACV,WAAW,MAAM,aAAa,cAAc,MAAM;EAEpD,SAAS,CAAC,EAAE,WAAW,MAAM,WAAW,cAAc,MAAM;EAC5D,OACE,WAAW,MAAM,SAAS,OAAO,SAAS,WAAW,MAAM,MAAM,GAC7D,WAAW,MAAM,QACjB,cAAc,MAAM;EAEN;AACtB,QAAO;GAET,EAAE,GAAG,mBAAmB,kBAAkB,EAAE,CAC7C;AAEH,MAAa,mBACX,kBAEA,QAAyB,KAAK,QAAQ;CACpC,MAAM,iBAAiB,mBAAmB;EACxC,GAAG;EACH,GAAG;EACJ,CAAC;AACF,QAAO;EACL,eAAe;EACf,YAAY;EACZ,eAAe,EAAE;EACjB,SAAS;EACT,cAAc;EACd,QAAQ,EAAE;EACV,YAAY,EAAE;EACd,mBAAmB,iBAAiB;GAClC,MAAM,oBAAoB,mBAAmB,aAAa;AAC1D,QAAK,WAAW;IACd,eAAe;IACf,YAAY,uBACV,MAAM,YACN,kBACD;IACF,EAAE;;EAEL,0BAA0B,eAAe;GACvC,MAAM,oBAAoB,KAAK,CAAC;AAC9B,UAAO,KAAK,WAAW,CAAsB,SAAS,QAAQ;AAC9D,QAAI,WAAW,SAAS,kBAAkB,MAAM,OAAO;AACrD,UAAK,CAAC,WAAW,KAAK,EAAE,cAAc,WAAW,MAAM,CAAC;AACxD,UAAK,CAAC,cAAc,KAAK,WAAW,MAAM,EAAE,WAAW,MAAM,CAAC;;KAEhE;;EAEJ,YAAY,cACV,CAAC,CAAC,KAAK,CAAC,WAAW,YAAY;EACjC,UAAU,cACR,CAAC,CAAC,KAAK,CAAC,WAAW,YAAY;EACjC,eAAe,cAA8B;GAC3C,MAAM,aAAa;IACjB,GAAG,KAAK,CAAC;KACR,YAAY;KACX,GAAG,KAAK,CAAC,WAAW;KACpB,WAAW;KACZ;IACF;GAED,MAAM,gBAAgB,wBAAwB,WAAW;AAEzD,cAAW;IACT;IACA;IACD,EAAE;;EAEL,aAAa,WAAW,EAAE,iBAAiB,EAAE,KAAK;AAChD,OAAI,cAAc;IAChB,MAAM,cAAc;KAClB,GAAG,KAAK,CAAC,cAAc;KACvB,OAAO;KACR;IACD,MAAM,gBAAgB;KACpB,GAAG,KAAK,CAAC;MACR,YAAY,EAAE,GAAG,aAAa;KAChC;IACD,MAAM,aAAa;KACjB,GAAG,KAAK,CAAC;MACR,YAAY,EAAE,GAAG,aAAa;KAChC;IACD,MAAM,gBAAgB,wBAAwB,WAAW;AAEzD,cAAU;AACR,YAAO;MACL;MACA;MACA;MACD;MACD;UACG;IACL,MAAM,aAAa;KACjB,GAAG,KAAK,CAAC;MACR,YAAY,EAAE,GAAG,KAAK,CAAC,cAAc,YAAY;KACnD;IACD,MAAM,gBAAgB,wBAAwB,WAAW;AAEzD,eAAW;KACT;KACA;KACD,EAAE;;;EAGP,gBAAgB,WAAW,OAAO,EAAE,SAAS,cAAc,EAAE,KAAK;GAChE,MAAM,aAAa;IACjB,GAAG,KAAK,CAAC;KACR,YAAY;KACX;KACA,SACE,YAAY,KAAA,IACR,KAAK,CAAC,WAAW,YAAY,UAC7B;KACN,WACE,cAAc,KAAA,IACV,KAAK,CAAC,WAAW,YAAY,YAC7B;KACP;IACF;GAED,MAAM,gBAAgB,wBAAwB,WAAW;AAEzD,cAAW;IACT;IACA;IACD,EAAE;;EAEL,iBAA6C,GAAG,UAC9C,MAAM,KAAK,SAAS,KAAK,CAAC,WAAW,OAAO,MAAM;EACpD,qBAAqB,MAAM,iBAAiB;AAC1C,QAAK,WAAW,EACd,YAAY;IACV,GAAG,MAAM;KACR,OAAO;IACT,EACF,EAAE;;EAEL,wBAAwB,OAAO,SAAS;AACtC,OAAI;IACF,IAAI,QAAQ;AACZ,eAAW;KAAE,SAAS;KAAO,cAAc;KAAM,EAAE;IAEnD,MAAM,eAAe,KAAK,CAAC,WAAW;AAEtC,QAAI,cAAc;KAChB,MAAM,SAAS,MAAM,aAAa,KAAK,CAAC,aAAa,OAAO,MAAM;AAClE,SAAI,SAAS,OAAO,EAAE;AACpB,cAAQ;AACR,WAAK,WAAW,EACd,QAAQ;OACN,GAAG,MAAM;QACR,OAAO;OACT,EACF,EAAE;YACE;AACL,cAAQ;AACR,UAAI,MACF,MAAK,CAAC,YAAY,KAAK;;;AAK7B,eAAW;KAAE,SAAS;KAAO,cAAc;KAAO,EAAE;AACpD,WAAO;YACA,KAAK;AACZ,eAAW,EAAE,cAAc,OAAO,EAAE;AACpC,UAAM;;;EAGV,cAAc,SAAS;GACrB,MAAM,YAAY,EAAE,GAAG,KAAK,CAAC,QAAQ;AAErC,UAAO,UAAU;AAEjB,cAAW,EACT,QAAQ,WACT,EAAE;;EAEN;EACD"}
1
+ {"version":3,"file":"createFormStore.js","names":[],"sources":["../../../../src/stores/form/createFormStore.ts"],"sourcesContent":["import type { StoreApi, UseBoundStore } from 'zustand'\nimport { create } from 'zustand'\n\nimport type {\n DefaultValues,\n FormFieldArray,\n FormFieldNames,\n FormValueControl,\n FormValues,\n FormValuesState,\n} from './types.js'\n\nexport const formDefaultValues: DefaultValues = {\n fromAmount: '',\n toAmount: '',\n tokenSearchFilter: '',\n}\n\nconst defaultValueToFormValue = <T>(value: T): FormValueControl<T> => ({\n isTouched: false,\n isDirty: false,\n value,\n})\n\nconst valuesToFormValues = (defaultValues: DefaultValues): FormValues => {\n return (Object.keys(defaultValues) as FormFieldNames[]).reduce(\n (accum, key) => {\n accum[key] = defaultValueToFormValue(defaultValues[key]) as never\n return accum\n },\n {} as FormValues\n )\n}\n\nconst isString = (str: any) => typeof str === 'string' || str instanceof String\n\nconst getUpdatedTouchedFields = (userValues: FormValues) => {\n return (Object.keys(userValues) as FormFieldNames[]).reduce(\n (accum, key) => {\n if (userValues[key]?.isTouched) {\n accum[key] = true\n }\n return accum\n },\n {} as Record<FormFieldNames, boolean>\n )\n}\n\nconst mergeDefaultFormValues = (\n userValues: FormValues,\n defaultValues: FormValues\n) =>\n (Object.keys(defaultValues) as FormFieldNames[]).reduce<FormValues>(\n (accum, key) => {\n const formValue = {\n isTouched: !!(\n userValues[key]?.isTouched || defaultValues[key]?.isTouched\n ),\n isDirty: !!(userValues[key]?.isDirty || defaultValues[key]?.isTouched),\n value:\n userValues[key]?.value || Number.isFinite(userValues[key]?.value)\n ? userValues[key]?.value\n : defaultValues[key]?.value,\n }\n accum[key] = formValue as never\n return accum\n },\n { ...valuesToFormValues(formDefaultValues) }\n )\n\nexport const createFormStore = (\n defaultValues?: DefaultValues\n): UseBoundStore<StoreApi<FormValuesState>> =>\n create<FormValuesState>((set, get) => {\n const _defaultValues = valuesToFormValues({\n ...formDefaultValues,\n ...defaultValues,\n })\n return {\n defaultValues: _defaultValues,\n userValues: _defaultValues,\n touchedFields: {},\n isValid: true,\n isValidating: false,\n errors: {},\n validation: {},\n setDefaultValues: (defaultValue) => {\n const defaultFormValues = valuesToFormValues(defaultValue)\n set((state) => ({\n defaultValues: defaultFormValues,\n userValues: mergeDefaultFormValues(\n state.userValues,\n defaultFormValues\n ),\n }))\n },\n setUserAndDefaultValues: (formValues) => {\n const currentUserValues = get().userValues\n ;(Object.keys(formValues) as FormFieldNames[]).forEach((key) => {\n if (formValues[key] !== currentUserValues[key]?.value) {\n get().resetField(key, { defaultValue: formValues[key] })\n get().setFieldValue(key, formValues[key], { isTouched: true })\n }\n })\n },\n isTouched: (fieldName: FormFieldNames) =>\n !!get().userValues[fieldName]?.isTouched,\n isDirty: (fieldName: FormFieldNames) =>\n !!get().userValues[fieldName]?.isDirty,\n setAsTouched: (fieldName: FormFieldNames) => {\n const userValues = {\n ...get().userValues,\n [fieldName]: {\n ...get().userValues[fieldName],\n isTouched: true,\n },\n }\n\n const touchedFields = getUpdatedTouchedFields(userValues)\n\n set(() => ({\n userValues,\n touchedFields,\n }))\n },\n resetField: (fieldName, { defaultValue } = {}) => {\n if (defaultValue) {\n const fieldValues = {\n ...get().defaultValues[fieldName],\n value: defaultValue,\n }\n const defaultValues = {\n ...get().defaultValues,\n [fieldName]: { ...fieldValues },\n }\n const userValues = {\n ...get().userValues,\n [fieldName]: { ...fieldValues },\n }\n const touchedFields = getUpdatedTouchedFields(userValues)\n\n set(() => {\n return {\n defaultValues,\n userValues,\n touchedFields,\n }\n })\n } else {\n const userValues = {\n ...get().userValues,\n [fieldName]: { ...get().defaultValues[fieldName] },\n }\n const touchedFields = getUpdatedTouchedFields(userValues)\n\n set(() => ({\n userValues,\n touchedFields,\n }))\n }\n },\n setFieldValue: (fieldName, value, { isDirty, isTouched } = {}) => {\n const userValues = {\n ...get().userValues,\n [fieldName]: {\n value,\n isDirty:\n isDirty === undefined\n ? get().userValues[fieldName]?.isDirty\n : isDirty,\n isTouched:\n isTouched === undefined\n ? get().userValues[fieldName]?.isTouched\n : isTouched,\n },\n }\n\n const touchedFields = getUpdatedTouchedFields(userValues)\n\n set(() => ({\n userValues,\n touchedFields,\n }))\n },\n getFieldValues: <T extends FormFieldNames[]>(...names: T) =>\n names.map((name) => get().userValues[name]?.value) as FormFieldArray<T>,\n addFieldValidation: (name, validationFn) => {\n set((state) => ({\n validation: {\n ...state.validation,\n [name]: validationFn,\n },\n }))\n },\n triggerFieldValidation: async (name) => {\n try {\n let valid = true\n set(() => ({ isValid: false, isValidating: true }))\n\n const validationFn = get().validation[name]\n\n if (validationFn) {\n const result = await validationFn(get().userValues?.[name]?.value)\n if (isString(result)) {\n valid = false\n set((state) => ({\n errors: {\n ...state.errors,\n [name]: result,\n },\n }))\n } else {\n valid = result as boolean\n if (valid) {\n get().clearErrors(name)\n }\n }\n }\n\n set(() => ({ isValid: valid, isValidating: false }))\n return valid\n } catch (err) {\n set(() => ({ isValidating: false }))\n throw err\n }\n },\n clearErrors: (name) => {\n const newErrors = { ...get().errors }\n\n delete newErrors[name]\n\n set(() => ({\n errors: newErrors,\n }))\n },\n }\n })\n"],"mappings":";;AAYA,MAAa,oBAAmC;CAC9C,YAAY;CACZ,UAAU;CACV,mBAAmB;CACpB;AAED,MAAM,2BAA8B,WAAmC;CACrE,WAAW;CACX,SAAS;CACT;CACD;AAED,MAAM,sBAAsB,kBAA6C;CACvE,OAAQ,OAAO,KAAK,cAAc,CAAsB,QACrD,OAAO,QAAQ;EACd,MAAM,OAAO,wBAAwB,cAAc,KAAK;EACxD,OAAO;IAET,EAAE,CACH;;AAGH,MAAM,YAAY,QAAa,OAAO,QAAQ,YAAY,eAAe;AAEzE,MAAM,2BAA2B,eAA2B;CAC1D,OAAQ,OAAO,KAAK,WAAW,CAAsB,QAClD,OAAO,QAAQ;EACd,IAAI,WAAW,MAAM,WACnB,MAAM,OAAO;EAEf,OAAO;IAET,EAAE,CACH;;AAGH,MAAM,0BACJ,YACA,kBAEC,OAAO,KAAK,cAAc,CAAsB,QAC9C,OAAO,QAAQ;CAWd,MAAM,OAAO;EATX,WAAW,CAAC,EACV,WAAW,MAAM,aAAa,cAAc,MAAM;EAEpD,SAAS,CAAC,EAAE,WAAW,MAAM,WAAW,cAAc,MAAM;EAC5D,OACE,WAAW,MAAM,SAAS,OAAO,SAAS,WAAW,MAAM,MAAM,GAC7D,WAAW,MAAM,QACjB,cAAc,MAAM;EAEN;CACtB,OAAO;GAET,EAAE,GAAG,mBAAmB,kBAAkB,EAAE,CAC7C;AAEH,MAAa,mBACX,kBAEA,QAAyB,KAAK,QAAQ;CACpC,MAAM,iBAAiB,mBAAmB;EACxC,GAAG;EACH,GAAG;EACJ,CAAC;CACF,OAAO;EACL,eAAe;EACf,YAAY;EACZ,eAAe,EAAE;EACjB,SAAS;EACT,cAAc;EACd,QAAQ,EAAE;EACV,YAAY,EAAE;EACd,mBAAmB,iBAAiB;GAClC,MAAM,oBAAoB,mBAAmB,aAAa;GAC1D,KAAK,WAAW;IACd,eAAe;IACf,YAAY,uBACV,MAAM,YACN,kBACD;IACF,EAAE;;EAEL,0BAA0B,eAAe;GACvC,MAAM,oBAAoB,KAAK,CAAC;GAC/B,OAAQ,KAAK,WAAW,CAAsB,SAAS,QAAQ;IAC9D,IAAI,WAAW,SAAS,kBAAkB,MAAM,OAAO;KACrD,KAAK,CAAC,WAAW,KAAK,EAAE,cAAc,WAAW,MAAM,CAAC;KACxD,KAAK,CAAC,cAAc,KAAK,WAAW,MAAM,EAAE,WAAW,MAAM,CAAC;;KAEhE;;EAEJ,YAAY,cACV,CAAC,CAAC,KAAK,CAAC,WAAW,YAAY;EACjC,UAAU,cACR,CAAC,CAAC,KAAK,CAAC,WAAW,YAAY;EACjC,eAAe,cAA8B;GAC3C,MAAM,aAAa;IACjB,GAAG,KAAK,CAAC;KACR,YAAY;KACX,GAAG,KAAK,CAAC,WAAW;KACpB,WAAW;KACZ;IACF;GAED,MAAM,gBAAgB,wBAAwB,WAAW;GAEzD,WAAW;IACT;IACA;IACD,EAAE;;EAEL,aAAa,WAAW,EAAE,iBAAiB,EAAE,KAAK;GAChD,IAAI,cAAc;IAChB,MAAM,cAAc;KAClB,GAAG,KAAK,CAAC,cAAc;KACvB,OAAO;KACR;IACD,MAAM,gBAAgB;KACpB,GAAG,KAAK,CAAC;MACR,YAAY,EAAE,GAAG,aAAa;KAChC;IACD,MAAM,aAAa;KACjB,GAAG,KAAK,CAAC;MACR,YAAY,EAAE,GAAG,aAAa;KAChC;IACD,MAAM,gBAAgB,wBAAwB,WAAW;IAEzD,UAAU;KACR,OAAO;MACL;MACA;MACA;MACD;MACD;UACG;IACL,MAAM,aAAa;KACjB,GAAG,KAAK,CAAC;MACR,YAAY,EAAE,GAAG,KAAK,CAAC,cAAc,YAAY;KACnD;IACD,MAAM,gBAAgB,wBAAwB,WAAW;IAEzD,WAAW;KACT;KACA;KACD,EAAE;;;EAGP,gBAAgB,WAAW,OAAO,EAAE,SAAS,cAAc,EAAE,KAAK;GAChE,MAAM,aAAa;IACjB,GAAG,KAAK,CAAC;KACR,YAAY;KACX;KACA,SACE,YAAY,KAAA,IACR,KAAK,CAAC,WAAW,YAAY,UAC7B;KACN,WACE,cAAc,KAAA,IACV,KAAK,CAAC,WAAW,YAAY,YAC7B;KACP;IACF;GAED,MAAM,gBAAgB,wBAAwB,WAAW;GAEzD,WAAW;IACT;IACA;IACD,EAAE;;EAEL,iBAA6C,GAAG,UAC9C,MAAM,KAAK,SAAS,KAAK,CAAC,WAAW,OAAO,MAAM;EACpD,qBAAqB,MAAM,iBAAiB;GAC1C,KAAK,WAAW,EACd,YAAY;IACV,GAAG,MAAM;KACR,OAAO;IACT,EACF,EAAE;;EAEL,wBAAwB,OAAO,SAAS;GACtC,IAAI;IACF,IAAI,QAAQ;IACZ,WAAW;KAAE,SAAS;KAAO,cAAc;KAAM,EAAE;IAEnD,MAAM,eAAe,KAAK,CAAC,WAAW;IAEtC,IAAI,cAAc;KAChB,MAAM,SAAS,MAAM,aAAa,KAAK,CAAC,aAAa,OAAO,MAAM;KAClE,IAAI,SAAS,OAAO,EAAE;MACpB,QAAQ;MACR,KAAK,WAAW,EACd,QAAQ;OACN,GAAG,MAAM;QACR,OAAO;OACT,EACF,EAAE;YACE;MACL,QAAQ;MACR,IAAI,OACF,KAAK,CAAC,YAAY,KAAK;;;IAK7B,WAAW;KAAE,SAAS;KAAO,cAAc;KAAO,EAAE;IACpD,OAAO;YACA,KAAK;IACZ,WAAW,EAAE,cAAc,OAAO,EAAE;IACpC,MAAM;;;EAGV,cAAc,SAAS;GACrB,MAAM,YAAY,EAAE,GAAG,KAAK,CAAC,QAAQ;GAErC,OAAO,UAAU;GAEjB,WAAW,EACT,QAAQ,WACT,EAAE;;EAEN;EACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"getDefaultValuesFromQueryString.js","names":[],"sources":["../../../../src/stores/form/getDefaultValuesFromQueryString.ts"],"sourcesContent":["import { formatInputAmount } from '../../utils/format.js'\nimport type { DefaultValues } from './types.js'\n\ninterface GetDefaultValuesFromQueryStringOptions {\n includeToAddress?: boolean\n buildUrl?: boolean\n}\n\nexport const getDefaultValuesFromQueryString = ({\n buildUrl = false,\n includeToAddress = true,\n}: GetDefaultValuesFromQueryStringOptions): Partial<DefaultValues> => {\n if (typeof window === 'undefined') {\n return {}\n }\n\n if (!buildUrl) {\n return {}\n }\n\n const searchParams = Object.fromEntries(\n new URLSearchParams(window.location.search)\n )\n\n // Prevent using fromToken/toToken params if chain is not selected.\n ;(['from', 'to'] as const).forEach((key) => {\n if (searchParams[`${key}Token`] && !searchParams[`${key}Chain`]) {\n delete searchParams[`${key}Token`]\n }\n })\n\n return {\n ...(Number.isFinite(Number.parseInt(searchParams.fromChain, 10))\n ? { fromChain: Number.parseInt(searchParams.fromChain, 10) }\n : {}),\n ...(Number.isFinite(Number.parseInt(searchParams.toChain, 10))\n ? { toChain: Number.parseInt(searchParams.toChain, 10) }\n : {}),\n ...(searchParams.fromToken ? { fromToken: searchParams.fromToken } : {}),\n ...(searchParams.toToken ? { toToken: searchParams.toToken } : {}),\n ...(Number.isFinite(Number.parseFloat(searchParams.fromAmount))\n ? { fromAmount: formatInputAmount(searchParams.fromAmount) }\n : {}),\n ...(includeToAddress && searchParams.toAddress\n ? { toAddress: searchParams.toAddress }\n : {}),\n }\n}\n"],"mappings":";;AAQA,MAAa,mCAAmC,EAC9C,WAAW,OACX,mBAAmB,WACiD;AACpE,KAAI,OAAO,WAAW,YACpB,QAAO,EAAE;AAGX,KAAI,CAAC,SACH,QAAO,EAAE;CAGX,MAAM,eAAe,OAAO,YAC1B,IAAI,gBAAgB,OAAO,SAAS,OAAO,CAC5C;AAGC,EAAC,QAAQ,KAAK,CAAW,SAAS,QAAQ;AAC1C,MAAI,aAAa,GAAG,IAAI,WAAW,CAAC,aAAa,GAAG,IAAI,QACtD,QAAO,aAAa,GAAG,IAAI;GAE7B;AAEF,QAAO;EACL,GAAI,OAAO,SAAS,OAAO,SAAS,aAAa,WAAW,GAAG,CAAC,GAC5D,EAAE,WAAW,OAAO,SAAS,aAAa,WAAW,GAAG,EAAE,GAC1D,EAAE;EACN,GAAI,OAAO,SAAS,OAAO,SAAS,aAAa,SAAS,GAAG,CAAC,GAC1D,EAAE,SAAS,OAAO,SAAS,aAAa,SAAS,GAAG,EAAE,GACtD,EAAE;EACN,GAAI,aAAa,YAAY,EAAE,WAAW,aAAa,WAAW,GAAG,EAAE;EACvE,GAAI,aAAa,UAAU,EAAE,SAAS,aAAa,SAAS,GAAG,EAAE;EACjE,GAAI,OAAO,SAAS,OAAO,WAAW,aAAa,WAAW,CAAC,GAC3D,EAAE,YAAY,kBAAkB,aAAa,WAAW,EAAE,GAC1D,EAAE;EACN,GAAI,oBAAoB,aAAa,YACjC,EAAE,WAAW,aAAa,WAAW,GACrC,EAAE;EACP"}
1
+ {"version":3,"file":"getDefaultValuesFromQueryString.js","names":[],"sources":["../../../../src/stores/form/getDefaultValuesFromQueryString.ts"],"sourcesContent":["import { formatInputAmount } from '../../utils/format.js'\nimport type { DefaultValues } from './types.js'\n\ninterface GetDefaultValuesFromQueryStringOptions {\n includeToAddress?: boolean\n buildUrl?: boolean\n}\n\nexport const getDefaultValuesFromQueryString = ({\n buildUrl = false,\n includeToAddress = true,\n}: GetDefaultValuesFromQueryStringOptions): Partial<DefaultValues> => {\n if (typeof window === 'undefined') {\n return {}\n }\n\n if (!buildUrl) {\n return {}\n }\n\n const searchParams = Object.fromEntries(\n new URLSearchParams(window.location.search)\n )\n\n // Prevent using fromToken/toToken params if chain is not selected.\n ;(['from', 'to'] as const).forEach((key) => {\n if (searchParams[`${key}Token`] && !searchParams[`${key}Chain`]) {\n delete searchParams[`${key}Token`]\n }\n })\n\n return {\n ...(Number.isFinite(Number.parseInt(searchParams.fromChain, 10))\n ? { fromChain: Number.parseInt(searchParams.fromChain, 10) }\n : {}),\n ...(Number.isFinite(Number.parseInt(searchParams.toChain, 10))\n ? { toChain: Number.parseInt(searchParams.toChain, 10) }\n : {}),\n ...(searchParams.fromToken ? { fromToken: searchParams.fromToken } : {}),\n ...(searchParams.toToken ? { toToken: searchParams.toToken } : {}),\n ...(Number.isFinite(Number.parseFloat(searchParams.fromAmount))\n ? { fromAmount: formatInputAmount(searchParams.fromAmount) }\n : {}),\n ...(includeToAddress && searchParams.toAddress\n ? { toAddress: searchParams.toAddress }\n : {}),\n }\n}\n"],"mappings":";;AAQA,MAAa,mCAAmC,EAC9C,WAAW,OACX,mBAAmB,WACiD;CACpE,IAAI,OAAO,WAAW,aACpB,OAAO,EAAE;CAGX,IAAI,CAAC,UACH,OAAO,EAAE;CAGX,MAAM,eAAe,OAAO,YAC1B,IAAI,gBAAgB,OAAO,SAAS,OAAO,CAC5C;CAGA,CAAE,QAAQ,KAAK,CAAW,SAAS,QAAQ;EAC1C,IAAI,aAAa,GAAG,IAAI,WAAW,CAAC,aAAa,GAAG,IAAI,SACtD,OAAO,aAAa,GAAG,IAAI;GAE7B;CAEF,OAAO;EACL,GAAI,OAAO,SAAS,OAAO,SAAS,aAAa,WAAW,GAAG,CAAC,GAC5D,EAAE,WAAW,OAAO,SAAS,aAAa,WAAW,GAAG,EAAE,GAC1D,EAAE;EACN,GAAI,OAAO,SAAS,OAAO,SAAS,aAAa,SAAS,GAAG,CAAC,GAC1D,EAAE,SAAS,OAAO,SAAS,aAAa,SAAS,GAAG,EAAE,GACtD,EAAE;EACN,GAAI,aAAa,YAAY,EAAE,WAAW,aAAa,WAAW,GAAG,EAAE;EACvE,GAAI,aAAa,UAAU,EAAE,SAAS,aAAa,SAAS,GAAG,EAAE;EACjE,GAAI,OAAO,SAAS,OAAO,WAAW,aAAa,WAAW,CAAC,GAC3D,EAAE,YAAY,kBAAkB,aAAa,WAAW,EAAE,GAC1D,EAAE;EACN,GAAI,oBAAoB,aAAa,YACjC,EAAE,WAAW,aAAa,WAAW,GACrC,EAAE;EACP"}
@@ -1 +1 @@
1
- {"version":3,"file":"useFieldActions.js","names":[],"sources":["../../../../src/stores/form/useFieldActions.ts"],"sourcesContent":["import { useCallback } from 'react'\nimport { useWidgetEvents } from '../../hooks/useWidgetEvents.js'\nimport type { FormFieldChanged } from '../../types/events.js'\nimport { WidgetEvent } from '../../types/events.js'\nimport type {\n DefaultValues,\n FormActions,\n FormFieldNames,\n GenericFormValue,\n SetOptions,\n} from './types.js'\nimport { useFormStore } from './useFormStore.js'\n\nexport const useFieldActions = (): FormActions => {\n const emitter = useWidgetEvents()\n const actions = useFormStore<FormActions>((store) => ({\n getFieldValues: store.getFieldValues,\n isTouched: store.isTouched,\n isDirty: store.isDirty,\n resetField: store.resetField,\n setAsTouched: store.setAsTouched,\n setDefaultValues: store.setDefaultValues,\n setFieldValue: store.setFieldValue,\n setUserAndDefaultValues: store.setUserAndDefaultValues,\n }))\n\n const setFieldValueWithEmittedEvents = useCallback(\n (\n fieldName: FormFieldNames,\n newValue: GenericFormValue,\n options?: SetOptions\n ) => {\n const oldValue = actions.getFieldValues(fieldName)[0]\n\n actions.setFieldValue(fieldName, newValue, options)\n\n if (newValue !== oldValue) {\n emitter.emit(WidgetEvent.FormFieldChanged, {\n fieldName,\n newValue,\n oldValue,\n } as FormFieldChanged)\n }\n },\n [actions, emitter]\n )\n\n const setUserAndDefaultValuesWithEmittedEvents = useCallback(\n (formValues: Partial<DefaultValues>) => {\n const formValuesKeys = Object.keys(formValues) as FormFieldNames[]\n\n const changedValues = formValuesKeys.reduce(\n (accum, fieldName) => {\n const oldValue = actions.getFieldValues(fieldName)[0]\n const newValue = formValues[fieldName]\n\n if (newValue !== oldValue) {\n accum.push({ fieldName, newValue, oldValue })\n }\n\n return accum\n },\n [] as {\n fieldName: FormFieldNames\n newValue: GenericFormValue\n oldValue: GenericFormValue\n }[]\n )\n\n actions.setUserAndDefaultValues(formValues)\n\n changedValues.forEach(({ fieldName, newValue, oldValue }) => {\n emitter.emit(WidgetEvent.FormFieldChanged, {\n fieldName,\n newValue,\n oldValue,\n } as FormFieldChanged)\n })\n },\n [actions, emitter]\n )\n\n return {\n getFieldValues: actions.getFieldValues,\n isTouched: actions.isTouched,\n isDirty: actions.isDirty,\n resetField: actions.resetField,\n setAsTouched: actions.setAsTouched,\n setDefaultValues: actions.setDefaultValues,\n setFieldValue: setFieldValueWithEmittedEvents,\n setUserAndDefaultValues: setUserAndDefaultValuesWithEmittedEvents,\n }\n}\n"],"mappings":";;;;;AAaA,MAAa,wBAAqC;CAChD,MAAM,UAAU,iBAAiB;CACjC,MAAM,UAAU,cAA2B,WAAW;EACpD,gBAAgB,MAAM;EACtB,WAAW,MAAM;EACjB,SAAS,MAAM;EACf,YAAY,MAAM;EAClB,cAAc,MAAM;EACpB,kBAAkB,MAAM;EACxB,eAAe,MAAM;EACrB,yBAAyB,MAAM;EAChC,EAAE;CAEH,MAAM,iCAAiC,aAEnC,WACA,UACA,YACG;EACH,MAAM,WAAW,QAAQ,eAAe,UAAU,CAAC;AAEnD,UAAQ,cAAc,WAAW,UAAU,QAAQ;AAEnD,MAAI,aAAa,SACf,SAAQ,KAAA,oBAAmC;GACzC;GACA;GACA;GACD,CAAqB;IAG1B,CAAC,SAAS,QAAQ,CACnB;CAED,MAAM,2CAA2C,aAC9C,eAAuC;EAGtC,MAAM,gBAFiB,OAAO,KAAK,WAEC,CAAC,QAClC,OAAO,cAAc;GACpB,MAAM,WAAW,QAAQ,eAAe,UAAU,CAAC;GACnD,MAAM,WAAW,WAAW;AAE5B,OAAI,aAAa,SACf,OAAM,KAAK;IAAE;IAAW;IAAU;IAAU,CAAC;AAG/C,UAAO;KAET,EAAE,CAKH;AAED,UAAQ,wBAAwB,WAAW;AAE3C,gBAAc,SAAS,EAAE,WAAW,UAAU,eAAe;AAC3D,WAAQ,KAAA,oBAAmC;IACzC;IACA;IACA;IACD,CAAqB;IACtB;IAEJ,CAAC,SAAS,QAAQ,CACnB;AAED,QAAO;EACL,gBAAgB,QAAQ;EACxB,WAAW,QAAQ;EACnB,SAAS,QAAQ;EACjB,YAAY,QAAQ;EACpB,cAAc,QAAQ;EACtB,kBAAkB,QAAQ;EAC1B,eAAe;EACf,yBAAyB;EAC1B"}
1
+ {"version":3,"file":"useFieldActions.js","names":[],"sources":["../../../../src/stores/form/useFieldActions.ts"],"sourcesContent":["import { useCallback } from 'react'\nimport { useWidgetEvents } from '../../hooks/useWidgetEvents.js'\nimport type { FormFieldChanged } from '../../types/events.js'\nimport { WidgetEvent } from '../../types/events.js'\nimport type {\n DefaultValues,\n FormActions,\n FormFieldNames,\n GenericFormValue,\n SetOptions,\n} from './types.js'\nimport { useFormStore } from './useFormStore.js'\n\nexport const useFieldActions = (): FormActions => {\n const emitter = useWidgetEvents()\n const actions = useFormStore<FormActions>((store) => ({\n getFieldValues: store.getFieldValues,\n isTouched: store.isTouched,\n isDirty: store.isDirty,\n resetField: store.resetField,\n setAsTouched: store.setAsTouched,\n setDefaultValues: store.setDefaultValues,\n setFieldValue: store.setFieldValue,\n setUserAndDefaultValues: store.setUserAndDefaultValues,\n }))\n\n const setFieldValueWithEmittedEvents = useCallback(\n (\n fieldName: FormFieldNames,\n newValue: GenericFormValue,\n options?: SetOptions\n ) => {\n const oldValue = actions.getFieldValues(fieldName)[0]\n\n actions.setFieldValue(fieldName, newValue, options)\n\n if (newValue !== oldValue) {\n emitter.emit(WidgetEvent.FormFieldChanged, {\n fieldName,\n newValue,\n oldValue,\n } as FormFieldChanged)\n }\n },\n [actions, emitter]\n )\n\n const setUserAndDefaultValuesWithEmittedEvents = useCallback(\n (formValues: Partial<DefaultValues>) => {\n const formValuesKeys = Object.keys(formValues) as FormFieldNames[]\n\n const changedValues = formValuesKeys.reduce(\n (accum, fieldName) => {\n const oldValue = actions.getFieldValues(fieldName)[0]\n const newValue = formValues[fieldName]\n\n if (newValue !== oldValue) {\n accum.push({ fieldName, newValue, oldValue })\n }\n\n return accum\n },\n [] as {\n fieldName: FormFieldNames\n newValue: GenericFormValue\n oldValue: GenericFormValue\n }[]\n )\n\n actions.setUserAndDefaultValues(formValues)\n\n changedValues.forEach(({ fieldName, newValue, oldValue }) => {\n emitter.emit(WidgetEvent.FormFieldChanged, {\n fieldName,\n newValue,\n oldValue,\n } as FormFieldChanged)\n })\n },\n [actions, emitter]\n )\n\n return {\n getFieldValues: actions.getFieldValues,\n isTouched: actions.isTouched,\n isDirty: actions.isDirty,\n resetField: actions.resetField,\n setAsTouched: actions.setAsTouched,\n setDefaultValues: actions.setDefaultValues,\n setFieldValue: setFieldValueWithEmittedEvents,\n setUserAndDefaultValues: setUserAndDefaultValuesWithEmittedEvents,\n }\n}\n"],"mappings":";;;;;AAaA,MAAa,wBAAqC;CAChD,MAAM,UAAU,iBAAiB;CACjC,MAAM,UAAU,cAA2B,WAAW;EACpD,gBAAgB,MAAM;EACtB,WAAW,MAAM;EACjB,SAAS,MAAM;EACf,YAAY,MAAM;EAClB,cAAc,MAAM;EACpB,kBAAkB,MAAM;EACxB,eAAe,MAAM;EACrB,yBAAyB,MAAM;EAChC,EAAE;CAEH,MAAM,iCAAiC,aAEnC,WACA,UACA,YACG;EACH,MAAM,WAAW,QAAQ,eAAe,UAAU,CAAC;EAEnD,QAAQ,cAAc,WAAW,UAAU,QAAQ;EAEnD,IAAI,aAAa,UACf,QAAQ,KAAA,oBAAmC;GACzC;GACA;GACA;GACD,CAAqB;IAG1B,CAAC,SAAS,QAAQ,CACnB;CAED,MAAM,2CAA2C,aAC9C,eAAuC;EAGtC,MAAM,gBAFiB,OAAO,KAAK,WAEC,CAAC,QAClC,OAAO,cAAc;GACpB,MAAM,WAAW,QAAQ,eAAe,UAAU,CAAC;GACnD,MAAM,WAAW,WAAW;GAE5B,IAAI,aAAa,UACf,MAAM,KAAK;IAAE;IAAW;IAAU;IAAU,CAAC;GAG/C,OAAO;KAET,EAAE,CAKH;EAED,QAAQ,wBAAwB,WAAW;EAE3C,cAAc,SAAS,EAAE,WAAW,UAAU,eAAe;GAC3D,QAAQ,KAAA,oBAAmC;IACzC;IACA;IACA;IACD,CAAqB;IACtB;IAEJ,CAAC,SAAS,QAAQ,CACnB;CAED,OAAO;EACL,gBAAgB,QAAQ;EACxB,WAAW,QAAQ;EACnB,SAAS,QAAQ;EACjB,YAAY,QAAQ;EACpB,cAAc,QAAQ;EACtB,kBAAkB,QAAQ;EAC1B,eAAe;EACf,yBAAyB;EAC1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"useFieldValues.js","names":[],"sources":["../../../../src/stores/form/useFieldValues.ts"],"sourcesContent":["import type { FormFieldArray, FormFieldNames } from './types.js'\nimport { useFormStore } from './useFormStore.js'\n\n// We should return a strongly-typed array based on the specific field names we pass to the function.\nexport const useFieldValues = <T extends FormFieldNames[]>(\n ...names: T\n): FormFieldArray<T> => {\n const values = useFormStore(\n (store) =>\n names.map((name) => store.userValues[name]?.value) as FormFieldArray<T>\n )\n\n return values\n}\n"],"mappings":";;AAIA,MAAa,kBACX,GAAG,UACmB;AAMtB,QALe,cACZ,UACC,MAAM,KAAK,SAAS,MAAM,WAAW,OAAO,MAAM,CAGzC"}
1
+ {"version":3,"file":"useFieldValues.js","names":[],"sources":["../../../../src/stores/form/useFieldValues.ts"],"sourcesContent":["import type { FormFieldArray, FormFieldNames } from './types.js'\nimport { useFormStore } from './useFormStore.js'\n\n// We should return a strongly-typed array based on the specific field names we pass to the function.\nexport const useFieldValues = <T extends FormFieldNames[]>(\n ...names: T\n): FormFieldArray<T> => {\n const values = useFormStore(\n (store) =>\n names.map((name) => store.userValues[name]?.value) as FormFieldArray<T>\n )\n\n return values\n}\n"],"mappings":";;AAIA,MAAa,kBACX,GAAG,UACmB;CAMtB,OALe,cACZ,UACC,MAAM,KAAK,SAAS,MAAM,WAAW,OAAO,MAAM,CAGzC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useFormRef.js","names":[],"sources":["../../../../src/stores/form/useFormRef.ts"],"sourcesContent":["import { useImperativeHandle } from 'react'\nimport { widgetEvents } from '../../hooks/useWidgetEvents.js'\nimport { useBookmarkActions } from '../../stores/bookmarks/useBookmarkActions.js'\nimport { formDefaultValues } from '../../stores/form/createFormStore.js'\nimport type { FormFieldChanged } from '../../types/events.js'\nimport { WidgetEvent } from '../../types/events.js'\nimport type { FormRef } from '../../types/widget.js'\nimport type {\n FormFieldNames,\n FormStoreStore,\n GenericFormValue,\n} from './types.js'\n\nexport const useFormRef = (\n formStore: FormStoreStore,\n formRef?: FormRef\n): void => {\n const { setSelectedBookmark } = useBookmarkActions()\n\n useImperativeHandle(formRef, () => {\n const sanitizeValue: {\n [key: string]: (value: any) => GenericFormValue\n } = {\n fromAmount: (value) =>\n (typeof value === 'number' ? value?.toPrecision() : value) ||\n formDefaultValues.fromAmount,\n toAmount: (value) =>\n (typeof value === 'number' ? value?.toPrecision() : value) ||\n formDefaultValues.toAmount,\n toAddress: (value) => {\n const isToAddressObj = typeof value !== 'string'\n\n const address =\n (isToAddressObj ? value?.address : value) ||\n formDefaultValues.toAddress\n\n // we can assume that the toAddress has been passed as ToAddress object\n // and display it accordingly - this ensures that if a name is included\n // that it is displayed in the Send To Wallet form field correctly\n if (isToAddressObj) {\n setSelectedBookmark(value)\n }\n\n return address\n },\n }\n\n return {\n setFieldValue: (fieldName, value, options) => {\n const sanitizedValue = (\n sanitizeValue[fieldName] ? sanitizeValue[fieldName](value) : value\n ) as GenericFormValue\n\n const fieldValueOptions = options?.setUrlSearchParam\n ? { isTouched: options?.setUrlSearchParam }\n : undefined\n\n const oldValue = formStore\n .getState()\n .getFieldValues(fieldName as FormFieldNames)[0]\n\n formStore\n .getState()\n .setFieldValue(fieldName, sanitizedValue, fieldValueOptions)\n\n if (sanitizedValue !== oldValue) {\n widgetEvents.emit(WidgetEvent.FormFieldChanged, {\n fieldName,\n newValue: sanitizedValue,\n oldValue,\n } as FormFieldChanged)\n }\n },\n }\n }, [formStore, setSelectedBookmark])\n}\n"],"mappings":";;;;;;AAaA,MAAa,cACX,WACA,YACS;CACT,MAAM,EAAE,wBAAwB,oBAAoB;AAEpD,qBAAoB,eAAe;EACjC,MAAM,gBAEF;GACF,aAAa,WACV,OAAO,UAAU,WAAW,OAAO,aAAa,GAAG,UACpD,kBAAkB;GACpB,WAAW,WACR,OAAO,UAAU,WAAW,OAAO,aAAa,GAAG,UACpD,kBAAkB;GACpB,YAAY,UAAU;IACpB,MAAM,iBAAiB,OAAO,UAAU;IAExC,MAAM,WACH,iBAAiB,OAAO,UAAU,UACnC,kBAAkB;AAKpB,QAAI,eACF,qBAAoB,MAAM;AAG5B,WAAO;;GAEV;AAED,SAAO,EACL,gBAAgB,WAAW,OAAO,YAAY;GAC5C,MAAM,iBACJ,cAAc,aAAa,cAAc,WAAW,MAAM,GAAG;GAG/D,MAAM,oBAAoB,SAAS,oBAC/B,EAAE,WAAW,SAAS,mBAAmB,GACzC,KAAA;GAEJ,MAAM,WAAW,UACd,UAAU,CACV,eAAe,UAA4B,CAAC;AAE/C,aACG,UAAU,CACV,cAAc,WAAW,gBAAgB,kBAAkB;AAE9D,OAAI,mBAAmB,SACrB,cAAa,KAAA,oBAAmC;IAC9C;IACA,UAAU;IACV;IACD,CAAqB;KAG3B;IACA,CAAC,WAAW,oBAAoB,CAAC"}
1
+ {"version":3,"file":"useFormRef.js","names":[],"sources":["../../../../src/stores/form/useFormRef.ts"],"sourcesContent":["import { useImperativeHandle } from 'react'\nimport { widgetEvents } from '../../hooks/useWidgetEvents.js'\nimport { useBookmarkActions } from '../../stores/bookmarks/useBookmarkActions.js'\nimport { formDefaultValues } from '../../stores/form/createFormStore.js'\nimport type { FormFieldChanged } from '../../types/events.js'\nimport { WidgetEvent } from '../../types/events.js'\nimport type { FormRef } from '../../types/widget.js'\nimport type {\n FormFieldNames,\n FormStoreStore,\n GenericFormValue,\n} from './types.js'\n\nexport const useFormRef = (\n formStore: FormStoreStore,\n formRef?: FormRef\n): void => {\n const { setSelectedBookmark } = useBookmarkActions()\n\n useImperativeHandle(formRef, () => {\n const sanitizeValue: {\n [key: string]: (value: any) => GenericFormValue\n } = {\n fromAmount: (value) =>\n (typeof value === 'number' ? value?.toPrecision() : value) ||\n formDefaultValues.fromAmount,\n toAmount: (value) =>\n (typeof value === 'number' ? value?.toPrecision() : value) ||\n formDefaultValues.toAmount,\n toAddress: (value) => {\n const isToAddressObj = typeof value !== 'string'\n\n const address =\n (isToAddressObj ? value?.address : value) ||\n formDefaultValues.toAddress\n\n // we can assume that the toAddress has been passed as ToAddress object\n // and display it accordingly - this ensures that if a name is included\n // that it is displayed in the Send To Wallet form field correctly\n if (isToAddressObj) {\n setSelectedBookmark(value)\n }\n\n return address\n },\n }\n\n return {\n setFieldValue: (fieldName, value, options) => {\n const sanitizedValue = (\n sanitizeValue[fieldName] ? sanitizeValue[fieldName](value) : value\n ) as GenericFormValue\n\n const fieldValueOptions = options?.setUrlSearchParam\n ? { isTouched: options?.setUrlSearchParam }\n : undefined\n\n const oldValue = formStore\n .getState()\n .getFieldValues(fieldName as FormFieldNames)[0]\n\n formStore\n .getState()\n .setFieldValue(fieldName, sanitizedValue, fieldValueOptions)\n\n if (sanitizedValue !== oldValue) {\n widgetEvents.emit(WidgetEvent.FormFieldChanged, {\n fieldName,\n newValue: sanitizedValue,\n oldValue,\n } as FormFieldChanged)\n }\n },\n }\n }, [formStore, setSelectedBookmark])\n}\n"],"mappings":";;;;;;AAaA,MAAa,cACX,WACA,YACS;CACT,MAAM,EAAE,wBAAwB,oBAAoB;CAEpD,oBAAoB,eAAe;EACjC,MAAM,gBAEF;GACF,aAAa,WACV,OAAO,UAAU,WAAW,OAAO,aAAa,GAAG,UACpD,kBAAkB;GACpB,WAAW,WACR,OAAO,UAAU,WAAW,OAAO,aAAa,GAAG,UACpD,kBAAkB;GACpB,YAAY,UAAU;IACpB,MAAM,iBAAiB,OAAO,UAAU;IAExC,MAAM,WACH,iBAAiB,OAAO,UAAU,UACnC,kBAAkB;IAKpB,IAAI,gBACF,oBAAoB,MAAM;IAG5B,OAAO;;GAEV;EAED,OAAO,EACL,gBAAgB,WAAW,OAAO,YAAY;GAC5C,MAAM,iBACJ,cAAc,aAAa,cAAc,WAAW,MAAM,GAAG;GAG/D,MAAM,oBAAoB,SAAS,oBAC/B,EAAE,WAAW,SAAS,mBAAmB,GACzC,KAAA;GAEJ,MAAM,WAAW,UACd,UAAU,CACV,eAAe,UAA4B,CAAC;GAE/C,UACG,UAAU,CACV,cAAc,WAAW,gBAAgB,kBAAkB;GAE9D,IAAI,mBAAmB,UACrB,aAAa,KAAA,oBAAmC;IAC9C;IACA,UAAU;IACV;IACD,CAAqB;KAG3B;IACA,CAAC,WAAW,oBAAoB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useFormStore.js","names":[],"sources":["../../../../src/stores/form/useFormStore.ts"],"sourcesContent":["import { useContext } from 'react'\nimport { useShallow } from 'zustand/shallow'\nimport { FormStoreContext } from './FormStoreContext.js'\nimport type { FormValuesState } from './types.js'\n\nexport function useFormStore<T>(selector: (state: FormValuesState) => T): T {\n const useStore = useContext(FormStoreContext)\n\n if (!useStore) {\n throw new Error('You forgot to wrap your component in <FormStoreProvider>.')\n }\n\n return useStore(useShallow(selector))\n}\n"],"mappings":";;;;AAKA,SAAgB,aAAgB,UAA4C;CAC1E,MAAM,WAAW,WAAW,iBAAiB;AAE7C,KAAI,CAAC,SACH,OAAM,IAAI,MAAM,4DAA4D;AAG9E,QAAO,SAAS,WAAW,SAAS,CAAC"}
1
+ {"version":3,"file":"useFormStore.js","names":[],"sources":["../../../../src/stores/form/useFormStore.ts"],"sourcesContent":["import { useContext } from 'react'\nimport { useShallow } from 'zustand/shallow'\nimport { FormStoreContext } from './FormStoreContext.js'\nimport type { FormValuesState } from './types.js'\n\nexport function useFormStore<T>(selector: (state: FormValuesState) => T): T {\n const useStore = useContext(FormStoreContext)\n\n if (!useStore) {\n throw new Error('You forgot to wrap your component in <FormStoreProvider>.')\n }\n\n return useStore(useShallow(selector))\n}\n"],"mappings":";;;;AAKA,SAAgB,aAAgB,UAA4C;CAC1E,MAAM,WAAW,WAAW,iBAAiB;CAE7C,IAAI,CAAC,UACH,MAAM,IAAI,MAAM,4DAA4D;CAG9E,OAAO,SAAS,WAAW,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTouchedFields.js","names":[],"sources":["../../../../src/stores/form/useTouchedFields.ts"],"sourcesContent":["import type { TouchedFields } from './types.js'\nimport { useFormStore } from './useFormStore.js'\n\nexport const useTouchedFields = (): TouchedFields => {\n const touchedFields = useFormStore((store) => store.touchedFields)\n\n return touchedFields\n}\n"],"mappings":";;AAGA,MAAa,yBAAwC;AAGnD,QAFsB,cAAc,UAAU,MAAM,cAEhC"}
1
+ {"version":3,"file":"useTouchedFields.js","names":[],"sources":["../../../../src/stores/form/useTouchedFields.ts"],"sourcesContent":["import type { TouchedFields } from './types.js'\nimport { useFormStore } from './useFormStore.js'\n\nexport const useTouchedFields = (): TouchedFields => {\n const touchedFields = useFormStore((store) => store.touchedFields)\n\n return touchedFields\n}\n"],"mappings":";;AAGA,MAAa,yBAAwC;CAGnD,OAFsB,cAAc,UAAU,MAAM,cAEhC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useHeaderStore.js","names":[],"sources":["../../../../src/stores/header/useHeaderStore.tsx"],"sourcesContent":["import { createContext, useContext, useRef } from 'react'\nimport { create } from 'zustand'\nimport { useShallow } from 'zustand/shallow'\nimport type { PersistStoreProviderProps } from '../types.js'\nimport type { HeaderState, HeaderStore } from './types.js'\n\nconst HeaderStoreContext = createContext<HeaderStore | null>(null)\n\nexport function HeaderStoreProvider({\n children,\n}: PersistStoreProviderProps): any {\n const storeRef = useRef<HeaderStore>(null)\n if (!storeRef.current) {\n storeRef.current = createHeaderStore()\n }\n return (\n <HeaderStoreContext.Provider value={storeRef.current}>\n {children}\n </HeaderStoreContext.Provider>\n )\n}\n\nfunction useHeaderStoreContext() {\n const useStore = useContext(HeaderStoreContext)\n if (!useStore) {\n throw new Error(\n `You forgot to wrap your component in <${HeaderStoreProvider.name}>.`\n )\n }\n return useStore\n}\n\nexport function useHeaderStore<T>(selector: (state: HeaderState) => T): T {\n const useStore = useHeaderStoreContext()\n return useStore(useShallow(selector))\n}\n\n// We use fixed position on the header when Widget is in Full Height layout.\n// We do this to get it to work like the sticky header does in the other layout modes.\n// As the header is position fixed its not in the document flow anymore.\n// To prevent the remaining page content from appearing behind the header we need to\n// pass the headers height so that the position of the page content can be adjusted\nexport function useHeaderHeight(): any {\n const headerHeight = useHeaderStore((state) => state.headerHeight)\n\n return {\n headerHeight,\n }\n}\n\nexport function useSetHeaderHeight(): any {\n const setHeaderHeight = useHeaderStore((state) => state.setHeaderHeight)\n\n return {\n setHeaderHeight,\n }\n}\n\nconst createHeaderStore = () =>\n create<HeaderState>((set, get) => ({\n headerHeight: 108, // a basic default height\n setAction: (element) => {\n set(() => ({\n element,\n }))\n return get().removeAction\n },\n setTitle: (title) => {\n set(() => ({\n title,\n }))\n return get().removeTitle\n },\n removeAction: () => {\n set(() => ({\n element: null,\n }))\n },\n removeTitle: () => {\n set(() => ({\n title: undefined,\n }))\n },\n setHeaderHeight: (headerHeight) => {\n set(() => ({\n headerHeight,\n }))\n },\n setBackAction: (action) => {\n set(() => ({\n backAction: action,\n }))\n },\n executeBackAction: () => {\n const { backAction } = get()\n if (backAction) {\n backAction()\n set(() => ({\n backAction: undefined,\n }))\n }\n },\n }))\n"],"mappings":";;;;;AAMA,MAAM,qBAAqB,cAAkC,KAAK;AAElE,SAAgB,oBAAoB,EAClC,YACiC;CACjC,MAAM,WAAW,OAAoB,KAAK;AAC1C,KAAI,CAAC,SAAS,QACZ,UAAS,UAAU,mBAAmB;AAExC,QACE,oBAAC,mBAAmB,UAApB;EAA6B,OAAO,SAAS;EAC1C;EAC2B,CAAA;;AAIlC,SAAS,wBAAwB;CAC/B,MAAM,WAAW,WAAW,mBAAmB;AAC/C,KAAI,CAAC,SACH,OAAM,IAAI,MACR,yCAAyC,oBAAoB,KAAK,IACnE;AAEH,QAAO;;AAGT,SAAgB,eAAkB,UAAwC;AAExE,QADiB,uBACF,CAAC,WAAW,SAAS,CAAC;;AAQvC,SAAgB,kBAAuB;AAGrC,QAAO,EACL,cAHmB,gBAAgB,UAAU,MAAM,aAGvC,EACb;;AAGH,SAAgB,qBAA0B;AAGxC,QAAO,EACL,iBAHsB,gBAAgB,UAAU,MAAM,gBAGvC,EAChB;;AAGH,MAAM,0BACJ,QAAqB,KAAK,SAAS;CACjC,cAAc;CACd,YAAY,YAAY;AACtB,aAAW,EACT,SACD,EAAE;AACH,SAAO,KAAK,CAAC;;CAEf,WAAW,UAAU;AACnB,aAAW,EACT,OACD,EAAE;AACH,SAAO,KAAK,CAAC;;CAEf,oBAAoB;AAClB,aAAW,EACT,SAAS,MACV,EAAE;;CAEL,mBAAmB;AACjB,aAAW,EACT,OAAO,KAAA,GACR,EAAE;;CAEL,kBAAkB,iBAAiB;AACjC,aAAW,EACT,cACD,EAAE;;CAEL,gBAAgB,WAAW;AACzB,aAAW,EACT,YAAY,QACb,EAAE;;CAEL,yBAAyB;EACvB,MAAM,EAAE,eAAe,KAAK;AAC5B,MAAI,YAAY;AACd,eAAY;AACZ,cAAW,EACT,YAAY,KAAA,GACb,EAAE;;;CAGR,EAAE"}
1
+ {"version":3,"file":"useHeaderStore.js","names":[],"sources":["../../../../src/stores/header/useHeaderStore.tsx"],"sourcesContent":["import { createContext, useContext, useRef } from 'react'\nimport { create } from 'zustand'\nimport { useShallow } from 'zustand/shallow'\nimport type { PersistStoreProviderProps } from '../types.js'\nimport type { HeaderState, HeaderStore } from './types.js'\n\nconst HeaderStoreContext = createContext<HeaderStore | null>(null)\n\nexport function HeaderStoreProvider({\n children,\n}: PersistStoreProviderProps): any {\n const storeRef = useRef<HeaderStore>(null)\n if (!storeRef.current) {\n storeRef.current = createHeaderStore()\n }\n return (\n <HeaderStoreContext.Provider value={storeRef.current}>\n {children}\n </HeaderStoreContext.Provider>\n )\n}\n\nfunction useHeaderStoreContext() {\n const useStore = useContext(HeaderStoreContext)\n if (!useStore) {\n throw new Error(\n `You forgot to wrap your component in <${HeaderStoreProvider.name}>.`\n )\n }\n return useStore\n}\n\nexport function useHeaderStore<T>(selector: (state: HeaderState) => T): T {\n const useStore = useHeaderStoreContext()\n return useStore(useShallow(selector))\n}\n\n// We use fixed position on the header when Widget is in Full Height layout.\n// We do this to get it to work like the sticky header does in the other layout modes.\n// As the header is position fixed its not in the document flow anymore.\n// To prevent the remaining page content from appearing behind the header we need to\n// pass the headers height so that the position of the page content can be adjusted\nexport function useHeaderHeight(): any {\n const headerHeight = useHeaderStore((state) => state.headerHeight)\n\n return {\n headerHeight,\n }\n}\n\nexport function useSetHeaderHeight(): any {\n const setHeaderHeight = useHeaderStore((state) => state.setHeaderHeight)\n\n return {\n setHeaderHeight,\n }\n}\n\nconst createHeaderStore = () =>\n create<HeaderState>((set, get) => ({\n headerHeight: 108, // a basic default height\n setAction: (element) => {\n set(() => ({\n element,\n }))\n return get().removeAction\n },\n setTitle: (title) => {\n set(() => ({\n title,\n }))\n return get().removeTitle\n },\n removeAction: () => {\n set(() => ({\n element: null,\n }))\n },\n removeTitle: () => {\n set(() => ({\n title: undefined,\n }))\n },\n setHeaderHeight: (headerHeight) => {\n set(() => ({\n headerHeight,\n }))\n },\n setBackAction: (action) => {\n set(() => ({\n backAction: action,\n }))\n },\n executeBackAction: () => {\n const { backAction } = get()\n if (backAction) {\n backAction()\n set(() => ({\n backAction: undefined,\n }))\n }\n },\n }))\n"],"mappings":";;;;;AAMA,MAAM,qBAAqB,cAAkC,KAAK;AAElE,SAAgB,oBAAoB,EAClC,YACiC;CACjC,MAAM,WAAW,OAAoB,KAAK;CAC1C,IAAI,CAAC,SAAS,SACZ,SAAS,UAAU,mBAAmB;CAExC,OACE,oBAAC,mBAAmB,UAApB;EAA6B,OAAO,SAAS;EAC1C;EAC2B,CAAA;;AAIlC,SAAS,wBAAwB;CAC/B,MAAM,WAAW,WAAW,mBAAmB;CAC/C,IAAI,CAAC,UACH,MAAM,IAAI,MACR,yCAAyC,oBAAoB,KAAK,IACnE;CAEH,OAAO;;AAGT,SAAgB,eAAkB,UAAwC;CAExE,OADiB,uBACF,CAAC,WAAW,SAAS,CAAC;;AAQvC,SAAgB,kBAAuB;CAGrC,OAAO,EACL,cAHmB,gBAAgB,UAAU,MAAM,aAGvC,EACb;;AAGH,SAAgB,qBAA0B;CAGxC,OAAO,EACL,iBAHsB,gBAAgB,UAAU,MAAM,gBAGvC,EAChB;;AAGH,MAAM,0BACJ,QAAqB,KAAK,SAAS;CACjC,cAAc;CACd,YAAY,YAAY;EACtB,WAAW,EACT,SACD,EAAE;EACH,OAAO,KAAK,CAAC;;CAEf,WAAW,UAAU;EACnB,WAAW,EACT,OACD,EAAE;EACH,OAAO,KAAK,CAAC;;CAEf,oBAAoB;EAClB,WAAW,EACT,SAAS,MACV,EAAE;;CAEL,mBAAmB;EACjB,WAAW,EACT,OAAO,KAAA,GACR,EAAE;;CAEL,kBAAkB,iBAAiB;EACjC,WAAW,EACT,cACD,EAAE;;CAEL,gBAAgB,WAAW;EACzB,WAAW,EACT,YAAY,QACb,EAAE;;CAEL,yBAAyB;EACvB,MAAM,EAAE,eAAe,KAAK;EAC5B,IAAI,YAAY;GACd,YAAY;GACZ,WAAW,EACT,YAAY,KAAA,GACb,EAAE;;;CAGR,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"file":"useInputModeStore.js","names":[],"sources":["../../../../src/stores/inputMode/useInputModeStore.ts"],"sourcesContent":["import type { StoreApi, UseBoundStore } from 'zustand'\nimport { create } from 'zustand'\nimport type { FormTypeProps } from '../form/types.js'\n\ntype InputMode = 'amount' | 'price'\n\ninterface InputModeState {\n inputMode: Record<'from' | 'to', InputMode>\n setInputMode: (formType: FormTypeProps['formType'], mode: InputMode) => void\n toggleInputMode: (formType: FormTypeProps['formType']) => void\n}\n\nexport const useInputModeStore: UseBoundStore<StoreApi<InputModeState>> =\n create<InputModeState>((set, get) => ({\n inputMode: {\n from: 'amount',\n to: 'amount',\n },\n setInputMode: (formType, mode) =>\n set((state) => ({\n inputMode: {\n ...state.inputMode,\n [formType]: mode,\n },\n })),\n toggleInputMode: (formType) => {\n const currentMode = get().inputMode[formType]\n const newMode = currentMode === 'amount' ? 'price' : 'amount'\n get().setInputMode(formType, newMode)\n },\n }))\n"],"mappings":";;AAYA,MAAa,oBACX,QAAwB,KAAK,SAAS;CACpC,WAAW;EACT,MAAM;EACN,IAAI;EACL;CACD,eAAe,UAAU,SACvB,KAAK,WAAW,EACd,WAAW;EACT,GAAG,MAAM;GACR,WAAW;EACb,EACF,EAAE;CACL,kBAAkB,aAAa;EAE7B,MAAM,UADc,KAAK,CAAC,UAAU,cACJ,WAAW,UAAU;AACrD,OAAK,CAAC,aAAa,UAAU,QAAQ;;CAExC,EAAE"}
1
+ {"version":3,"file":"useInputModeStore.js","names":[],"sources":["../../../../src/stores/inputMode/useInputModeStore.ts"],"sourcesContent":["import type { StoreApi, UseBoundStore } from 'zustand'\nimport { create } from 'zustand'\nimport type { FormTypeProps } from '../form/types.js'\n\ntype InputMode = 'amount' | 'price'\n\ninterface InputModeState {\n inputMode: Record<'from' | 'to', InputMode>\n setInputMode: (formType: FormTypeProps['formType'], mode: InputMode) => void\n toggleInputMode: (formType: FormTypeProps['formType']) => void\n}\n\nexport const useInputModeStore: UseBoundStore<StoreApi<InputModeState>> =\n create<InputModeState>((set, get) => ({\n inputMode: {\n from: 'amount',\n to: 'amount',\n },\n setInputMode: (formType, mode) =>\n set((state) => ({\n inputMode: {\n ...state.inputMode,\n [formType]: mode,\n },\n })),\n toggleInputMode: (formType) => {\n const currentMode = get().inputMode[formType]\n const newMode = currentMode === 'amount' ? 'price' : 'amount'\n get().setInputMode(formType, newMode)\n },\n }))\n"],"mappings":";;AAYA,MAAa,oBACX,QAAwB,KAAK,SAAS;CACpC,WAAW;EACT,MAAM;EACN,IAAI;EACL;CACD,eAAe,UAAU,SACvB,KAAK,WAAW,EACd,WAAW;EACT,GAAG,MAAM;GACR,WAAW;EACb,EACF,EAAE;CACL,kBAAkB,aAAa;EAE7B,MAAM,UADc,KAAK,CAAC,UAAU,cACJ,WAAW,UAAU;EACrD,KAAK,CAAC,aAAa,UAAU,QAAQ;;CAExC,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"file":"PinnedTokensStore.js","names":[],"sources":["../../../../src/stores/pinnedTokens/PinnedTokensStore.tsx"],"sourcesContent":["import { createContext, useContext, useRef } from 'react'\nimport { useShallow } from 'zustand/shallow'\nimport type { PersistStoreProviderProps } from '../types.js'\nimport { createPinnedTokensStore } from './createPinnedTokensStore.js'\nimport type { PinnedTokensState, PinnedTokensStore } from './types.js'\n\nconst PinnedTokensStoreContext = createContext<PinnedTokensStore | null>(null)\n\nexport const PinnedTokensStoreProvider: React.FC<PersistStoreProviderProps> = ({\n children,\n ...props\n}) => {\n const storeRef = useRef<PinnedTokensStore>(null)\n\n if (!storeRef.current) {\n storeRef.current = createPinnedTokensStore(props)\n }\n\n return (\n <PinnedTokensStoreContext.Provider value={storeRef.current}>\n {children}\n </PinnedTokensStoreContext.Provider>\n )\n}\n\nexport function usePinnedTokensStore<T>(\n selector: (store: PinnedTokensState) => T\n): T {\n const useStore = useContext(PinnedTokensStoreContext)\n\n if (!useStore) {\n throw new Error(\n `You forgot to wrap your component in <${PinnedTokensStoreProvider.name}>.`\n )\n }\n\n return useStore(useShallow(selector))\n}\n"],"mappings":";;;;;AAMA,MAAM,2BAA2B,cAAwC,KAAK;AAE9E,MAAa,6BAAkE,EAC7E,UACA,GAAG,YACC;CACJ,MAAM,WAAW,OAA0B,KAAK;AAEhD,KAAI,CAAC,SAAS,QACZ,UAAS,UAAU,wBAAwB,MAAM;AAGnD,QACE,oBAAC,yBAAyB,UAA1B;EAAmC,OAAO,SAAS;EAChD;EACiC,CAAA;;AAIxC,SAAgB,qBACd,UACG;CACH,MAAM,WAAW,WAAW,yBAAyB;AAErD,KAAI,CAAC,SACH,OAAM,IAAI,MACR,yCAAyC,0BAA0B,KAAK,IACzE;AAGH,QAAO,SAAS,WAAW,SAAS,CAAC"}
1
+ {"version":3,"file":"PinnedTokensStore.js","names":[],"sources":["../../../../src/stores/pinnedTokens/PinnedTokensStore.tsx"],"sourcesContent":["import { createContext, useContext, useRef } from 'react'\nimport { useShallow } from 'zustand/shallow'\nimport type { PersistStoreProviderProps } from '../types.js'\nimport { createPinnedTokensStore } from './createPinnedTokensStore.js'\nimport type { PinnedTokensState, PinnedTokensStore } from './types.js'\n\nconst PinnedTokensStoreContext = createContext<PinnedTokensStore | null>(null)\n\nexport const PinnedTokensStoreProvider: React.FC<PersistStoreProviderProps> = ({\n children,\n ...props\n}) => {\n const storeRef = useRef<PinnedTokensStore>(null)\n\n if (!storeRef.current) {\n storeRef.current = createPinnedTokensStore(props)\n }\n\n return (\n <PinnedTokensStoreContext.Provider value={storeRef.current}>\n {children}\n </PinnedTokensStoreContext.Provider>\n )\n}\n\nexport function usePinnedTokensStore<T>(\n selector: (store: PinnedTokensState) => T\n): T {\n const useStore = useContext(PinnedTokensStoreContext)\n\n if (!useStore) {\n throw new Error(\n `You forgot to wrap your component in <${PinnedTokensStoreProvider.name}>.`\n )\n }\n\n return useStore(useShallow(selector))\n}\n"],"mappings":";;;;;AAMA,MAAM,2BAA2B,cAAwC,KAAK;AAE9E,MAAa,6BAAkE,EAC7E,UACA,GAAG,YACC;CACJ,MAAM,WAAW,OAA0B,KAAK;CAEhD,IAAI,CAAC,SAAS,SACZ,SAAS,UAAU,wBAAwB,MAAM;CAGnD,OACE,oBAAC,yBAAyB,UAA1B;EAAmC,OAAO,SAAS;EAChD;EACiC,CAAA;;AAIxC,SAAgB,qBACd,UACG;CACH,MAAM,WAAW,WAAW,yBAAyB;CAErD,IAAI,CAAC,UACH,MAAM,IAAI,MACR,yCAAyC,0BAA0B,KAAK,IACzE;CAGH,OAAO,SAAS,WAAW,SAAS,CAAC"}