@velora-dex/widget 0.8.5-dev.1 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) hide show
  1. package/dist/components/web3/AccountButton.js +1 -1
  2. package/dist/components/web3/AccountButton.js.map +1 -1
  3. package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.d.ts.map +1 -1
  4. package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.js +22 -21
  5. package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.js.map +1 -1
  6. package/dist/components/web3/ConnectExternalProvider/metamaskProviderWrapper.js.map +1 -1
  7. package/dist/components/web3/ConnectExternalProvider/utils.js +1 -1
  8. package/dist/components/web3/ConnectExternalProvider/utils.js.map +1 -1
  9. package/dist/components/web3/ConnectWallets/index.d.ts.map +1 -1
  10. package/dist/components/web3/ConnectWallets/index.js +67 -66
  11. package/dist/components/web3/ConnectWallets/index.js.map +1 -1
  12. package/dist/components/web3/ConnectWallets/privy/iframe.js +1 -1
  13. package/dist/components/web3/ConnectWallets/privy/iframe.js.map +1 -1
  14. package/dist/components/web3/ConnectWallets/walletIcons.d.ts.map +1 -1
  15. package/dist/components/web3/ConnectWallets/walletIcons.js +1 -1
  16. package/dist/components/web3/ConnectWallets/walletIcons.js.map +1 -1
  17. package/dist/components/web3/ConnectedWallet/ConnectedWallet.d.ts.map +1 -1
  18. package/dist/components/web3/ConnectedWallet/ConnectedWallet.js +27 -26
  19. package/dist/components/web3/ConnectedWallet/ConnectedWallet.js.map +1 -1
  20. package/dist/components/widget/AppHeader/Activities/hooks.d.ts.map +1 -1
  21. package/dist/components/widget/AppHeader/Activities/hooks.js +9 -9
  22. package/dist/components/widget/AppHeader/Activities/hooks.js.map +1 -1
  23. package/dist/components/widget/AppHeader/Activities/utils.d.ts.map +1 -1
  24. package/dist/components/widget/AppHeader/Activities/utils.js.map +1 -1
  25. package/dist/components/widget/AppHeader/AppHeader.js +1 -1
  26. package/dist/components/widget/AppHeader/AppHeader.js.map +1 -1
  27. package/dist/components/widget/Dialog/ReceiverAddressDialog/ReceiverAddressDialog.js +1 -1
  28. package/dist/components/widget/Dialog/ReceiverAddressDialog/ReceiverAddressDialog.js.map +1 -1
  29. package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js.map +1 -1
  30. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/Controls.js +2 -2
  31. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/Controls.js.map +1 -1
  32. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/LimitOrderDetails.js.map +1 -1
  33. package/dist/components/widget/LimitOrderItem/LimitOrderListItem.d.ts.map +1 -1
  34. package/dist/components/widget/LimitOrderItem/LimitOrderListItem.js.map +1 -1
  35. package/dist/components/widget/OtcOrderItem/OtcOrderDetails/Controls.js +1 -1
  36. package/dist/components/widget/OtcOrderItem/OtcOrderDetails/Controls.js.map +1 -1
  37. package/dist/components/widget/OtcOrderItem/utils.js.map +1 -1
  38. package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcControls.js +1 -1
  39. package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcControls.js.map +1 -1
  40. package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcReviewAndConfirm.js.map +1 -1
  41. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts.map +1 -1
  42. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js.map +1 -1
  43. package/dist/components/widget/TradeOverview/TradeComplete/utils.d.ts.map +1 -1
  44. package/dist/components/widget/TradeOverview/TradeComplete/utils.js.map +1 -1
  45. package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.d.ts.map +1 -1
  46. package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.js.map +1 -1
  47. package/dist/components/widget/WrapEth/hooks/useWrapEthProps.js +2 -2
  48. package/dist/components/widget/WrapEth/hooks/useWrapEthProps.js.map +1 -1
  49. package/dist/core/LimitOrderButton.js +1 -1
  50. package/dist/core/LimitOrderButton.js.map +1 -1
  51. package/dist/core/OtcOrderButton.js +1 -1
  52. package/dist/core/OtcOrderButton.js.map +1 -1
  53. package/dist/core/TradeFlowScreenButton.js +1 -1
  54. package/dist/core/TradeFlowScreenButton.js.map +1 -1
  55. package/dist/core/across/utils.js.map +1 -1
  56. package/dist/core/index.js +1 -1
  57. package/dist/core/index.js.map +1 -1
  58. package/dist/core/inputs/hooks/useTokenToInputProps.js.map +1 -1
  59. package/dist/core/inputs/state/guards.d.ts.map +1 -1
  60. package/dist/core/inputs/state/guards.js.map +1 -1
  61. package/dist/core/inputs/state/setTokenByAddressAtom.js.map +1 -1
  62. package/dist/core/limit/state/limitInputAmountAtom.d.ts.map +1 -1
  63. package/dist/core/limit/state/limitInputAmountAtom.js.map +1 -1
  64. package/dist/core/limit/useLimitTokenToInputProps.js.map +1 -1
  65. package/dist/core/otc/state/otcInputAmountAtom.d.ts.map +1 -1
  66. package/dist/core/otc/state/otcInputAmountAtom.js.map +1 -1
  67. package/dist/core/state/configAtom.js +2 -2
  68. package/dist/core/state/configAtom.js.map +1 -1
  69. package/dist/core/state/getSelectableDestChains.d.ts +1 -1
  70. package/dist/core/state/getSelectableDestChains.d.ts.map +1 -1
  71. package/dist/core/state/getSelectableDestChains.js.map +1 -1
  72. package/dist/core/twap/state/twapInputAmountAtom.d.ts.map +1 -1
  73. package/dist/core/twap/state/twapInputAmountAtom.js.map +1 -1
  74. package/dist/events/hooks/useOnWalletConnect.d.ts.map +1 -1
  75. package/dist/events/hooks/useOnWalletConnect.js +1 -1
  76. package/dist/events/hooks/useOnWalletConnect.js.map +1 -1
  77. package/dist/events/types/swap.d.ts.map +1 -1
  78. package/dist/hooks/batch/useBatchWithApproveTxs.js +1 -1
  79. package/dist/hooks/batch/useBatchWithApproveTxs.js.map +1 -1
  80. package/dist/hooks/batch/useCanBatchTxs.js +3 -3
  81. package/dist/hooks/batch/useCanBatchTxs.js.map +1 -1
  82. package/dist/hooks/batch/useSendBatchTx.d.ts.map +1 -1
  83. package/dist/hooks/batch/useSendBatchTx.js +1 -1
  84. package/dist/hooks/batch/useSendBatchTx.js.map +1 -1
  85. package/dist/hooks/connectors/useIsGnosisSafeConnector.d.ts.map +1 -1
  86. package/dist/hooks/connectors/useIsGnosisSafeConnector.js +1 -1
  87. package/dist/hooks/connectors/useIsGnosisSafeConnector.js.map +1 -1
  88. package/dist/hooks/connectors/useIsSafeThroughWalletConnect.d.ts.map +1 -1
  89. package/dist/hooks/connectors/useIsSafeThroughWalletConnect.js +1 -1
  90. package/dist/hooks/connectors/useIsSafeThroughWalletConnect.js.map +1 -1
  91. package/dist/hooks/getCode/useIsAccountContract.d.ts +1 -1
  92. package/dist/hooks/getCode/useIsAccountContract.d.ts.map +1 -1
  93. package/dist/hooks/getCode/useIsAccountContract.js +1 -1
  94. package/dist/hooks/getCode/useIsAccountContract.js.map +1 -1
  95. package/dist/hooks/getCode/useIsContractAtAddress.d.ts +1 -1
  96. package/dist/hooks/getCode/useIsContractAtAddress.d.ts.map +1 -1
  97. package/dist/hooks/otc/queries/useLimitOrderRequiredBalance.js +2 -2
  98. package/dist/hooks/otc/queries/useLimitOrderRequiredBalance.js.map +1 -1
  99. package/dist/hooks/otc/queries/useLimitOrders.d.ts.map +1 -1
  100. package/dist/hooks/otc/queries/useLimitOrders.js +1 -1
  101. package/dist/hooks/otc/queries/useLimitOrders.js.map +1 -1
  102. package/dist/hooks/otc/tradeFlow/useFillOtcOrderFlow.js +3 -3
  103. package/dist/hooks/otc/tradeFlow/useFillOtcOrderFlow.js.map +1 -1
  104. package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.js +3 -3
  105. package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.js.map +1 -1
  106. package/dist/hooks/permit/hooks/common/useSignArbitraryTypedData.d.ts.map +1 -1
  107. package/dist/hooks/permit/hooks/common/useSignArbitraryTypedData.js +2 -2
  108. package/dist/hooks/permit/hooks/common/useSignArbitraryTypedData.js.map +1 -1
  109. package/dist/hooks/permit/hooks/permit1/useSignTokenPermit1.js +1 -1
  110. package/dist/hooks/permit/hooks/permit1/useSignTokenPermit1.js.map +1 -1
  111. package/dist/hooks/permit/hooks/permit1/useTokenFromPermit1Nonce.js +1 -1
  112. package/dist/hooks/permit/hooks/permit1/useTokenFromPermit1Nonce.js.map +1 -1
  113. package/dist/hooks/permit/hooks/permit2/usePermit2Allowance.js +1 -1
  114. package/dist/hooks/permit/hooks/permit2/usePermit2Allowance.js.map +1 -1
  115. package/dist/hooks/permit/hooks/permit2/usePermit2TransferFromNonce.d.ts +2 -2
  116. package/dist/hooks/permit/hooks/permit2/useSignTokenPermit2TransferFrom.js +1 -1
  117. package/dist/hooks/permit/hooks/permit2/useSignTokenPermit2TransferFrom.js.map +1 -1
  118. package/dist/hooks/permit/hooks/permit2/useTokenFromPermit2TransferFromNonce.js +1 -1
  119. package/dist/hooks/permit/hooks/permit2/useTokenFromPermit2TransferFromNonce.js.map +1 -1
  120. package/dist/hooks/swap/prices/delta/bridge/utils.d.ts.map +1 -1
  121. package/dist/hooks/swap/prices/delta/bridge/utils.js.map +1 -1
  122. package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.d.ts.map +1 -1
  123. package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.js.map +1 -1
  124. package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.d.ts.map +1 -1
  125. package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.js.map +1 -1
  126. package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.js +1 -1
  127. package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.js.map +1 -1
  128. package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.d.ts.map +1 -1
  129. package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.js.map +1 -1
  130. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts.map +1 -1
  131. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js.map +1 -1
  132. package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.js +1 -1
  133. package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.js.map +1 -1
  134. package/dist/hooks/swap/prices/delta/mutations/useIsDeltaOrderCancellable.d.ts.map +1 -1
  135. package/dist/hooks/swap/prices/delta/mutations/useIsDeltaOrderCancellable.js.map +1 -1
  136. package/dist/hooks/swap/prices/delta/mutations/useSendDepositPreSignDeltaOrderTx.js +1 -1
  137. package/dist/hooks/swap/prices/delta/mutations/useSendDepositPreSignDeltaOrderTx.js.map +1 -1
  138. package/dist/hooks/swap/prices/delta/orders/types.d.ts.map +1 -1
  139. package/dist/hooks/swap/prices/delta/orders/utils.d.ts.map +1 -1
  140. package/dist/hooks/swap/prices/delta/orders/utils.js.map +1 -1
  141. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/common.d.ts.map +1 -1
  142. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/common.js.map +1 -1
  143. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/getBridgeInfoQueryData.d.ts.map +1 -1
  144. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/getBridgeInfoQueryData.js.map +1 -1
  145. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/types.d.ts.map +1 -1
  146. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/useBridgeInfo.d.ts.map +1 -1
  147. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/useBridgeInfo.js.map +1 -1
  148. package/dist/hooks/swap/prices/delta/queries/useDeltaOrderPreConditions.d.ts +11 -6
  149. package/dist/hooks/swap/prices/delta/queries/useDeltaOrderPreConditions.d.ts.map +1 -1
  150. package/dist/hooks/swap/prices/delta/queries/useDeltaOrderPreConditions.js +1 -1
  151. package/dist/hooks/swap/prices/delta/queries/useDeltaOrderPreConditions.js.map +1 -1
  152. package/dist/hooks/swap/prices/delta/queries/useDeltaOrderRequiredBalance.js +2 -2
  153. package/dist/hooks/swap/prices/delta/queries/useDeltaOrderRequiredBalance.js.map +1 -1
  154. package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.js +1 -1
  155. package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.js.map +1 -1
  156. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts.map +1 -1
  157. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js.map +1 -1
  158. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.d.ts.map +1 -1
  159. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js.map +1 -1
  160. package/dist/hooks/swap/prices/usePricesParams.js +4 -4
  161. package/dist/hooks/swap/prices/usePricesParams.js.map +1 -1
  162. package/dist/hooks/swap/prices/useSwapPrices.d.ts.map +1 -1
  163. package/dist/hooks/swap/prices/useSwapPrices.js.map +1 -1
  164. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js +1 -1
  165. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
  166. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js.map +1 -1
  167. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js +3 -3
  168. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js.map +1 -1
  169. package/dist/hooks/swap/tradeFlow/useMarketFlow.js +1 -1
  170. package/dist/hooks/swap/tradeFlow/useMarketFlow.js.map +1 -1
  171. package/dist/hooks/swap/tradeFlow/useTwapFlow.js +1 -1
  172. package/dist/hooks/swap/tradeFlow/useTwapFlow.js.map +1 -1
  173. package/dist/hooks/tokens/allowance/useGenericTokenAllowance.js +1 -1
  174. package/dist/hooks/tokens/allowance/useGenericTokenAllowance.js.map +1 -1
  175. package/dist/hooks/tokens/allowance/useTokenAllowance.js +1 -1
  176. package/dist/hooks/tokens/allowance/useTokenAllowance.js.map +1 -1
  177. package/dist/hooks/tokens/balances/useAttachTokenBalanceMultichain.js +1 -1
  178. package/dist/hooks/tokens/balances/useAttachTokenBalanceMultichain.js.map +1 -1
  179. package/dist/hooks/tokens/balances/useInvalidateTokenData.d.ts.map +1 -1
  180. package/dist/hooks/tokens/balances/useInvalidateTokenData.js.map +1 -1
  181. package/dist/hooks/tokens/balances/useIsInsufficientTokenBalance.js +1 -1
  182. package/dist/hooks/tokens/balances/useIsInsufficientTokenBalance.js.map +1 -1
  183. package/dist/hooks/tokens/balances/useMultichainTokenBalances.js +1 -1
  184. package/dist/hooks/tokens/balances/useMultichainTokenBalances.js.map +1 -1
  185. package/dist/hooks/tokens/balances/useTokenBalance.d.ts +0 -11
  186. package/dist/hooks/tokens/balances/useTokenBalance.d.ts.map +1 -1
  187. package/dist/hooks/tokens/balances/useTokenBalance.js +11 -11
  188. package/dist/hooks/tokens/balances/useTokenBalance.js.map +1 -1
  189. package/dist/hooks/tokens/useTokensFromAcross.d.ts.map +1 -1
  190. package/dist/hooks/tokens/useTokensFromAcross.js.map +1 -1
  191. package/dist/hooks/txs/mutations/useApprove.d.ts.map +1 -1
  192. package/dist/hooks/txs/mutations/useApprove.js +2 -2
  193. package/dist/hooks/txs/mutations/useApprove.js.map +1 -1
  194. package/dist/hooks/txs/mutations/useDepositWeth.js +1 -1
  195. package/dist/hooks/txs/mutations/useDepositWeth.js.map +1 -1
  196. package/dist/hooks/txs/mutations/useReplaceTx.js +3 -3
  197. package/dist/hooks/txs/mutations/useReplaceTx.js.map +1 -1
  198. package/dist/hooks/txs/mutations/useSendTx.d.ts.map +1 -1
  199. package/dist/hooks/txs/mutations/useSendTx.js +2 -2
  200. package/dist/hooks/txs/mutations/useSendTx.js.map +1 -1
  201. package/dist/hooks/txs/queries/useAwaitTx.js +4 -4
  202. package/dist/hooks/txs/queries/useAwaitTx.js.map +1 -1
  203. package/dist/hooks/txs/queries/useTxResponse.d.ts +88 -1
  204. package/dist/hooks/txs/queries/useTxResponse.d.ts.map +1 -1
  205. package/dist/hooks/txs/queries/useWalletCanReplaceTx.js +1 -1
  206. package/dist/hooks/txs/queries/useWalletCanReplaceTx.js.map +1 -1
  207. package/dist/hooks/useAvailableCrosses.js.map +1 -1
  208. package/dist/hooks/useBridgeInfo.d.ts.map +1 -1
  209. package/dist/hooks/useBridgeInfo.js.map +1 -1
  210. package/dist/hooks/useChainMatches.js +2 -2
  211. package/dist/hooks/useChainMatches.js.map +1 -1
  212. package/dist/hooks/useConnections.d.ts +3 -0
  213. package/dist/hooks/useConnections.d.ts.map +1 -0
  214. package/dist/hooks/useConnections.js +24 -0
  215. package/dist/hooks/useConnections.js.map +1 -0
  216. package/dist/hooks/useDisconnect.d.ts +3 -0
  217. package/dist/hooks/useDisconnect.d.ts.map +1 -0
  218. package/dist/hooks/useDisconnect.js +29 -0
  219. package/dist/hooks/useDisconnect.js.map +1 -0
  220. package/dist/hooks/useMinViemClient.d.ts.map +1 -1
  221. package/dist/hooks/useMinViemClient.js +9 -9
  222. package/dist/hooks/useMinViemClient.js.map +1 -1
  223. package/dist/hooks/useSDK.d.ts.map +1 -1
  224. package/dist/hooks/useSDK.js.map +1 -1
  225. package/dist/hooks/useSwitchChainWithGuard.js +1 -1
  226. package/dist/hooks/useSwitchChainWithGuard.js.map +1 -1
  227. package/dist/lib/constants/urls.js +1 -1
  228. package/dist/lib/constants/urls.js.map +1 -1
  229. package/dist/lib/utils/twap.js.map +1 -1
  230. package/dist/lib/web3/wagmi/config.d.ts +40 -1
  231. package/dist/lib/web3/wagmi/config.d.ts.map +1 -1
  232. package/dist/lib/web3/wagmi/constants.d.ts +40 -1
  233. package/dist/lib/web3/wagmi/constants.d.ts.map +1 -1
  234. package/dist/lib/web3/wagmi/switchChain.d.ts +40 -1
  235. package/dist/lib/web3/wagmi/switchChain.d.ts.map +1 -1
  236. package/dist/tokens/lists/lists.js.map +1 -1
  237. package/dist/tokens/lists/lists.json.d.ts +12 -31
  238. package/package.json +13 -11
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["DevTools","TokenInput","useTokenFromInputProps","Button","JotaiProvider","QueryClientProvider","Web3Providers","useAccount","WIDGET_ELEMENT_ID","WIDGET_HEIGHT_CLASSNAME","Updaters","useTokenToInputProps","TokenSwitcher","TokenSwitcherComp","WidgetProps","cn","useSwapTokenSwitcherProps","runSubscriptions","PrivyIframeDependency","SwapModeSwitcherExpandable","useTokenInputsFromPrice","MinTradeOverviewProps","DeltaPrice","OptimalRate","SwapMode","SwapDetailsExpandable","ReceiverAddress","jotaiStore","useAtomValue","useSetAtom","useHydrateAtoms","containerAtom","AppHeader","useLayoutEffect","useRef","defaultSubConfig","defaultWidgetConfig","excludeUIAtom","useWidgetConfig","setSubConfigAtom","setWidgetConfigAtom","PoweredBy","useWidgetButtonExtraProps","useSwapPrices","Toaster","externalProviderAtom","AutoconnectExternalProvider","SwapTradeFlowScreenButton","TwapTradeFlowScreenButton","ConnectWalletDrawerButton","PriceInput","OrderExpiryInput","useLimitTokenToInputProps","useLimitTokenFromInputProps","useTradeMode","TradeMode","useDrawerContainerHeightTransition","InWidgetDrawerOverlay","LimitOrderButton","LimitOrderDetails","useOtcTokenFromInputProps","useOtcTokenToInputProps","useLimitPriceInputProps","useOtcPriceInputProps","OtcOrderButton","OtcOrderDetails","SwapWidgetWarning","TwapWarnings","WidgetWarning","useUnsupportedLimitChain","useUnsupportedOtcChain","useLimitTokenSwitcherProps","useOtcTokenSwitcherProps","useTwapTokenFromInputProps","useTwapTokenToInputProps","useTwapTokenSwitcherProps","TwapOrderDuration","TwapOrderSplit","TwapRateProtection","TwapDetails","useTokenInputsFromTwapPrice","useTwapButtonExtraProps","useSwapReceiverAddress","useOtcReceiverAddress","useWidgetEventsSetter","widgetEventsAtom","formInputPropsAtom","useSetFormInputFromProps","queryClientAtom","useQueryClient","useScreenValue","MainScreenContainer","SecondaryScreenContainer","useCloseScreenOnClickOutside","useResizeObserver","useLimitReceiverAddress","isBridgePrice","BridgeSelectorExpandable","ErrorBoundary","useInitialValue","apiConfigAtom","SwapScreen","$","_c","t0","Symbol","for","LimitOrderExtraInputs","priceInputProps","unsupportedChain","t1","t2","t3","OtcOrderExtraInputs","LimitOrderScreen","OtcOrderScreen","TwapExtraInputs","TwapButton","isConnected","overrides","isLoading","tokenFromAmount","override","isPriceLoading","tokenFromInputProps","cachedError","tokenToAmount","priceError","tokenToInputProps","side","amount","token","fromToken","toToken","fromAmount","toAmount","swapSide","undefined","orderProps","tokenFrom","tokenTo","extraProps","t4","className","disabled","labelOverride","price","TwapScreen","tradeModeToScreen","Record","React","FC","swap","limit","otc","twap","MainScreen","tradeMode","TradeModeScreen","App","excludeUI","screenElement","includes","WidgetBase","config","_config","apiConfig","provider","events","input","formInputProps","queryClient","setWidgetConfig","setSubConfig","setApiConfig","destChains","devURLs","partnerConfig","referrerConfig","srcChains","tokenLists","tradeModes","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","store","t15","t16","debug","enableCrossChain","enableDegenMode","enableDelta","privyAppId","privyClientId","theme","widgetMode","t17","t18","t19","apiKey","headers","t20","t21","t22","setExternalProvider","t23","t24","isDappMode","reconnectOnMountInit","t25","t26","t27","t28","t29","import","meta","env","DEV","t30","Widget","Containers","children","setContainerElement","containerRef","widgetConfig","isDrawerFullCover","isDrawerOpen","partialDrawerOpen","dark","WidgetHeader","root","SwapTokenFromInput","priceMode","activeSwapMode","LimitTokenFromInput","OtcTokenFromInput","TwapTokenFromInput","SwapTokenToInput","error","LimitTokenToInput","OtcTokenToInput","TwapTokenToInput","SwapTokenSwitcher","tokenSwitcherProps","LimitTokenSwitcher","OtcTokenSwitcher","TwapTokenSwitcher","SwapButton","onClick","SwapDetails","fromAmountGtZero","Number","shouldShowDetails","SwapReceiverAddress","shouldShowReceiverAddress","swapReceiverAddressProps","OtcReceiverAddress","otcReceiverAddressProps","LimitReceiverAddress","limitReceiverAddressProps","swapModeSwitcherClasses","const","SwapModeSwitcher","enabled","delta","market","canBeUsed","ButtonWithDrawerProps","ComponentProps","drawerContainer","HTMLDivElement","marketPrice","deltaPrice","SwapButtonWithDrawer","buttonProps","priceProps"],"sources":["../../src/core/index.tsx"],"sourcesContent":["import \"@/styles/global.css\";\n\nimport { DevTools } from \"./DevTools\"; // Jotai DevTools instantiation needs to be before jotai.createStore (even implicit with default provider)\nimport { TokenInput } from \"@/components/widget/TokenInput\";\nimport { useTokenFromInputProps } from \"./inputs/hooks/useTokenFromInputProps\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n JotaiProvider,\n QueryClientProvider,\n Web3Providers,\n} from \"@/components/web3/providers\";\nimport { useAccount } from \"wagmi\";\nimport { WIDGET_ELEMENT_ID, WIDGET_HEIGHT_CLASSNAME } from \"./constants\";\n\nimport { Updaters } from \"./Updaters\";\nimport { useTokenToInputProps } from \"./inputs/hooks/useTokenToInputProps\";\nimport { TokenSwitcher as TokenSwitcherComp } from \"@/components/widget/TokenSwitcher/TokenSwitcher\";\nimport type { WidgetProps } from \"./types\";\nimport { cn } from \"@/lib/utils\";\nimport { useSwapTokenSwitcherProps } from \"./inputs/hooks/useTokenSwitcherProps\";\n\nimport { runSubscriptions } from \"./subscriptions\";\n\nimport { PrivyIframeDependency } from \"@/components/web3/ConnectWallets/privy/iframe\";\nimport { SwapModeSwitcherExpandable } from \"@/components/widget/SwapModeSwitcher/SwapModeSwitcherExpandable\";\n\nimport { useTokenInputsFromPrice } from \"@/hooks/swap/prices/useTokenInputsFromPrice\";\nimport type { MinTradeOverviewProps } from \"@/components/widget/TradeOverview/TradeOverview\";\n\nimport type { DeltaPrice, OptimalRate } from \"@velora-dex/sdk\";\nimport type { SwapMode } from \"@/components/widget/SwapModeSwitcher/state/types\";\nimport { SwapDetailsExpandable } from \"@/components/widget/Details/SwapDetailsExpandable\";\nimport { ReceiverAddress } from \"@/components/widget/ReceiverAddress/ReceiverAddress\";\nimport { jotaiStore, useAtomValue, useSetAtom } from \"@/core/store\";\nimport { useHydrateAtoms } from \"jotai/utils\";\nimport { containerAtom } from \"./state/containerAtom\";\nimport { AppHeader } from \"@/components/widget/AppHeader/AppHeader\";\nimport { useLayoutEffect, useRef } from \"react\";\nimport {\n defaultSubConfig,\n defaultWidgetConfig,\n excludeUIAtom,\n useWidgetConfig,\n} from \"./state/configAtom\";\nimport {\n setSubConfigAtom,\n setWidgetConfigAtom,\n} from \"./state/configActionsAtom\";\nimport { PoweredBy } from \"@/components/widget/PoweredBy/PoweredBy\";\nimport { useWidgetButtonExtraProps } from \"./button/hooks/useWidgetButtonExtraProps\";\nimport { useSwapPrices } from \"@/hooks/swap/prices/useSwapPrices\";\nimport { Toaster } from \"./Toaster\";\nimport { externalProviderAtom } from \"./state/externalProviderAtom\";\nimport { AutoconnectExternalProvider } from \"@/components/web3/ConnectExternalProvider/AutoconnectExternal\";\nimport {\n SwapTradeFlowScreenButton,\n TwapTradeFlowScreenButton,\n} from \"./TradeFlowScreenButton\";\nimport { ConnectWalletDrawerButton } from \"./ConnectWalletDrawerButton\";\nimport { PriceInput } from \"@/components/widget/LimitPriceInput\";\nimport { OrderExpiryInput } from \"@/components/widget/OrderExpiryInput\";\nimport { useLimitTokenToInputProps } from \"./limit/useLimitTokenToInputProps\";\nimport { useLimitTokenFromInputProps } from \"./limit/useLimitTokenFromInputProps\";\nimport { useTradeMode, type TradeMode } from \"./state/tradeModeAtom\";\nimport { useDrawerContainerHeightTransition } from \"@/components/widget/Drawer/state/useDrawerControls\";\nimport { InWidgetDrawerOverlay } from \"@/components/widget/Drawer/Overlay\";\nimport { LimitOrderButton } from \"./LimitOrderButton\";\nimport { LimitOrderDetails } from \"./LimitOrderDetails\";\nimport { useOtcTokenFromInputProps } from \"./otc/useOtcTokenFromInputProps\";\nimport { useOtcTokenToInputProps } from \"./otc/useOtcTokenToInputProps\";\nimport { useLimitPriceInputProps } from \"./limit/useLimitPriceInputProps\";\nimport { useOtcPriceInputProps } from \"./otc/useOtcPriceInputProps\";\nimport { OtcOrderButton } from \"./OtcOrderButton\";\nimport { OtcOrderDetails } from \"./OtcOrderDetails\";\nimport { SwapWidgetWarning, TwapWarnings, WidgetWarning } from \"./Warnings\";\nimport { useUnsupportedLimitChain } from \"./limit/useLimitNotSupported\";\nimport { useUnsupportedOtcChain } from \"./otc/useOtcNotSupported\";\nimport { useLimitTokenSwitcherProps } from \"./limit/useLimitTokenSwitcherProps\";\nimport { useOtcTokenSwitcherProps } from \"./otc/useOtcTokenSwitcherProps\";\nimport { useTwapTokenFromInputProps } from \"./twap/useTwapTokenFromInputProps\";\nimport { useTwapTokenToInputProps } from \"./twap/useTwapTokenToInputProps\";\nimport { useTwapTokenSwitcherProps } from \"./twap/useTwapTokenSwitcherProps\";\nimport { TwapOrderDuration } from \"@/components/widget/Twap/OrderDuration\";\nimport { TwapOrderSplit } from \"@/components/widget/Twap/OrderSplit\";\nimport { TwapRateProtection } from \"@/components/widget/Twap/RateProtection\";\nimport { TwapDetails } from \"./TwapDetails\";\nimport { useTokenInputsFromTwapPrice } from \"@/hooks/swap/prices/useTokenInputsFromTwapPrice\";\nimport { useTwapButtonExtraProps } from \"./button/hooks/useWidgetButtonExtraProps\";\nimport { useSwapReceiverAddress } from \"@/components/widget/ReceiverAddress/state/receiverAddressAtom\";\nimport { useOtcReceiverAddress } from \"./otc/state/receiverAddressAtom\";\nimport {\n useWidgetEventsSetter,\n widgetEventsAtom,\n} from \"./state/widgetEventsAtom\";\nimport {\n formInputPropsAtom,\n useSetFormInputFromProps,\n} from \"./inputs/state/setTokenByAddressAtom\";\nimport { queryClientAtom } from \"jotai-tanstack-query\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport { useScreenValue } from \"./screen/state/hooks/useScreenValue\";\nimport {\n MainScreenContainer,\n SecondaryScreenContainer,\n} from \"@/components/widget/Screen/ScreenContainer\";\n\nimport { useCloseScreenOnClickOutside } from \"./screen/hooks/useOnClickOutside\";\nimport { useResizeObserver } from \"./screen/hooks/useResizeObserver\";\n\nimport { useLimitReceiverAddress } from \"./limit/state/receiverAddressAtom\";\nimport { isBridgePrice } from \"@/hooks/swap/prices/delta/queries/useDeltaPriceQuery\";\nimport { BridgeSelectorExpandable } from \"@/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable\";\nimport { ErrorBoundary } from \"react-error-boundary\";\nimport { useInitialValue } from \"./screen/hooks/useInitialValue\";\nimport { apiConfigAtom } from \"./state/apiConfigAtom\";\n\nrunSubscriptions();\n\nconst SwapScreen = () => {\n return (\n <>\n <SwapTokenFromInput />\n <SwapTokenSwitcher />\n <SwapTokenToInput />\n <SwapReceiverAddress />\n <WidgetWarning />\n <SwapWidgetWarning />\n <SwapButton />\n <SwapDetails />\n <SwapModeSwitcher />\n </>\n );\n};\n\nconst LimitOrderExtraInputs = () => {\n const priceInputProps = useLimitPriceInputProps();\n const unsupportedChain = useUnsupportedLimitChain();\n\n return (\n <div\n className={cn(\"flex gap-4 items-stretch py-2\", {\n \"pointer-events-none\": unsupportedChain,\n })}\n >\n <div className=\"flex-1\">\n <PriceInput {...priceInputProps} />\n </div>\n <div className=\"flex-1\">\n <OrderExpiryInput type=\"limit\" />\n </div>\n </div>\n );\n};\n\nconst OtcOrderExtraInputs = () => {\n const priceInputProps = useOtcPriceInputProps();\n const unsupportedChain = useUnsupportedOtcChain();\n\n return (\n <div\n className={cn(\"flex gap-4 items-stretch py-2\", {\n \"pointer-events-none\": unsupportedChain,\n })}\n >\n <div className=\"flex-1\">\n <PriceInput {...priceInputProps} />\n </div>\n <div className=\"flex-1\">\n <OrderExpiryInput type=\"otc\" />\n </div>\n </div>\n );\n};\n\nconst LimitOrderScreen = () => {\n return (\n <>\n <LimitTokenFromInput />\n <LimitTokenSwitcher />\n <LimitTokenToInput />\n <LimitOrderExtraInputs />\n <LimitReceiverAddress />\n <WidgetWarning />\n <LimitOrderButton />\n <LimitOrderDetails />\n </>\n );\n};\n\nconst OtcOrderScreen = () => {\n return (\n <>\n <OtcTokenFromInput />\n <OtcTokenSwitcher />\n <OtcTokenToInput />\n <OtcOrderExtraInputs />\n <OtcReceiverAddress />\n <WidgetWarning />\n <OtcOrderButton />\n <OtcOrderDetails />\n </>\n );\n};\n\nconst TwapExtraInputs = () => {\n return (\n <div className=\"flex flex-col gap-4 pt-4\">\n <TwapOrderDuration />\n <TwapOrderSplit />\n <TwapRateProtection />\n </div>\n );\n};\n\nfunction TwapButton() {\n const { isConnected } = useAccount();\n\n const overrides = useTokenInputsFromTwapPrice();\n\n const tokenFromInputProps = useTwapTokenFromInputProps({\n override: overrides.tokenFromAmount,\n isPriceLoading: overrides.isLoading,\n });\n const tokenToInputProps = useTwapTokenToInputProps({\n override: overrides.tokenToAmount,\n isPriceLoading: overrides.isLoading,\n priceError: overrides.cachedError,\n });\n\n const orderProps =\n tokenFromInputProps.token && tokenToInputProps.token\n ? {\n fromToken: tokenFromInputProps.token,\n toToken: tokenToInputProps.token,\n fromAmount: tokenFromInputProps.amount,\n toAmount: tokenToInputProps.amount,\n swapSide: overrides.side,\n }\n : undefined;\n\n const extraProps = useTwapButtonExtraProps({\n tokenFrom: tokenFromInputProps.token,\n tokenTo: tokenToInputProps.token,\n });\n\n if (!isConnected) return <ConnectWalletDrawerButton />;\n\n return (\n <TwapTradeFlowScreenButton\n orderProps={orderProps}\n twapPrice={overrides.price}\n disabled={extraProps.disabled}\n labelOverride={extraProps.labelOverride}\n className={extraProps.className}\n />\n );\n}\n\nconst TwapScreen = () => {\n return (\n <>\n <TwapTokenFromInput />\n <TwapTokenSwitcher />\n <TwapTokenToInput />\n <TwapExtraInputs />\n <TwapWarnings />\n <TwapDetails />\n <TwapButton />\n </>\n );\n};\n\nconst tradeModeToScreen: Record<TradeMode, React.FC> = {\n swap: SwapScreen,\n limit: LimitOrderScreen,\n otc: OtcOrderScreen,\n twap: TwapScreen,\n};\n\nconst MainScreen = () => {\n const tradeMode = useTradeMode();\n const TradeModeScreen = tradeModeToScreen[tradeMode];\n return <TradeModeScreen />;\n};\n\nconst App = () => {\n const excludeUI = useAtomValue(excludeUIAtom);\n const { screenElement } = useScreenValue();\n\n return (\n <Containers>\n {screenElement ? (\n <SecondaryScreenContainer>{screenElement}</SecondaryScreenContainer>\n ) : (\n <MainScreenContainer>\n <WidgetHeader />\n <MainScreen />\n <PoweredBy />\n </MainScreenContainer>\n )}\n {!excludeUI.includes(\"snackbars\") && <Toaster />}\n </Containers>\n );\n};\n\n// export to use in storybook tests\nexport const WidgetBase = ({\n config: _config,\n apiConfig,\n provider,\n events,\n input: formInputProps,\n}: WidgetProps) => {\n const queryClient = useQueryClient();\n\n const setWidgetConfig = useSetAtom(setWidgetConfigAtom);\n const setSubConfig = useSetAtom(setSubConfigAtom);\n const setApiConfig = useSetAtom(apiConfigAtom);\n\n const {\n srcChains,\n destChains,\n tokenLists,\n tradeModes,\n excludeUI,\n devURLs,\n partnerConfig,\n referrerConfig,\n ...config\n } = _config || {};\n\n // hydrating with only partial config overrides values with undefined,\n // so we have default values too\n useHydrateAtoms(\n [\n [setWidgetConfigAtom, { ...defaultWidgetConfig, ...config }],\n [\n setSubConfigAtom,\n {\n ...defaultSubConfig,\n srcChains,\n destChains,\n tokenLists,\n tradeModes,\n excludeUI,\n devURLs,\n partnerConfig,\n referrerConfig,\n },\n ],\n [apiConfigAtom, apiConfig || {}],\n [externalProviderAtom, provider || null],\n [widgetEventsAtom, events || {}],\n [formInputPropsAtom, formInputProps || {}],\n // this provider initialisation step is needed so that jotai reference the same\n // queryClient in both atomWithQuery and other parts of the app. Without this,\n // jotai will reference a different instance of queryClient\n [queryClientAtom, queryClient],\n ],\n {\n store: jotaiStore,\n }\n );\n\n useWidgetEventsSetter(events);\n useSetFormInputFromProps(formInputProps);\n\n useLayoutEffect(() => {\n setWidgetConfig({\n theme: config.theme,\n enableDelta: config.enableDelta,\n enableCrossChain: config.enableCrossChain,\n privyAppId: config.privyAppId,\n privyClientId: config.privyClientId,\n debug: config.debug,\n widgetMode: config.widgetMode,\n enableDegenMode: config.enableDegenMode,\n });\n }, [\n config.theme,\n config.enableDelta,\n config.enableCrossChain,\n config.privyAppId,\n config.privyClientId,\n config.debug,\n config.widgetMode,\n config.enableDegenMode,\n setWidgetConfig,\n ]);\n\n useLayoutEffect(() => {\n setSubConfig({\n srcChains,\n destChains,\n tokenLists,\n tradeModes,\n excludeUI,\n devURLs,\n partnerConfig,\n referrerConfig,\n });\n }, [\n srcChains,\n destChains,\n tokenLists,\n setSubConfig,\n tradeModes,\n excludeUI,\n devURLs,\n partnerConfig,\n referrerConfig,\n ]);\n\n useLayoutEffect(() => {\n setApiConfig({\n apiKey: apiConfig?.apiKey,\n headers: apiConfig?.headers,\n });\n }, [apiConfig?.apiKey, apiConfig?.headers, setApiConfig]);\n\n const setExternalProvider = useSetAtom(externalProviderAtom);\n\n useLayoutEffect(() => {\n // update external provider on change\n setExternalProvider(provider || null);\n }, [provider, setExternalProvider]);\n\n const isDappMode = config?.widgetMode === \"dapp\";\n // after initial reconnect (or not reconnect) on mount, we want to keep the same reconnectOnMount value\n // so that onMount logic inside WagmiProvider/Hydrate doesn't re-run.\n // reconnectOnMountInit should be considered reconnectOnRender,\n // in normal Apps where WagmiProvider is at the very top of the tree, first and only render = when mounting,\n // in Widget, because of external props, rerender can happen more often.\n const reconnectOnMountInit = useInitialValue(!isDappMode);\n // reconnectOnMount not in Dapp mode,\n // in Dapp mode, connection happens to provider external provider, when provided, whether onMount or later\n\n return (\n <Web3Providers reconnectOnMount={reconnectOnMountInit}>\n <AutoconnectExternalProvider />\n <PrivyIframeDependency />\n <Updaters />\n <App />\n {import.meta.env.DEV && <DevTools />}\n </Web3Providers>\n );\n};\n\nexport const Widget = ({\n config,\n apiConfig,\n provider,\n events,\n input,\n}: WidgetProps) => {\n return (\n <JotaiProvider>\n <QueryClientProvider>\n <WidgetBase\n config={config}\n apiConfig={apiConfig}\n provider={provider}\n events={events}\n input={input}\n />\n </QueryClientProvider>\n </JotaiProvider>\n );\n};\n\nfunction Containers({ children }: { children: React.ReactNode }) {\n const setContainerElement = useSetAtom(containerAtom);\n\n const containerRef = useRef<HTMLDivElement | null>(null);\n useCloseScreenOnClickOutside(containerRef);\n useResizeObserver(containerRef);\n\n const widgetConfig = useWidgetConfig();\n\n const { isDrawerFullCover, isDrawerOpen } =\n useDrawerContainerHeightTransition(containerRef);\n\n const partialDrawerOpen = isDrawerOpen && !isDrawerFullCover;\n\n return (\n <div\n ref={containerRef}\n // don't use tailwind classes on the root element, because of .velora-widget { @import tailwind/*}\n className={cn(\"velora-widget\", {\n dark: widgetConfig.theme === \"dark\",\n })}\n id={WIDGET_ELEMENT_ID}\n >\n <InWidgetDrawerOverlay open={partialDrawerOpen} />\n\n <div\n // absolutely positioned container on top of parent container with fixed height,\n // but because it's not statically positioned, it doesn't add to the whole widget height\n className={cn(\n \"overflow-hidden bottom-0 left-0 right-0 absolute transition-transform duration-500 z-11 pointer-events-none *:pointer-events-auto\",\n WIDGET_HEIGHT_CLASSNAME\n )}\n ref={setContainerElement}\n />\n {children}\n </div>\n );\n}\n\nfunction WidgetHeader() {\n return <AppHeader classes={{ root: \"mb-4\" }} />;\n}\n\nfunction SwapTokenFromInput() {\n // override Token amounts based on current swap price\n const overrides = useTokenInputsFromPrice();\n\n const tokenFromInputProps = useTokenFromInputProps({\n override: overrides.tokenFromAmount,\n activeSwapMode: overrides.priceMode,\n isPriceLoading: overrides.isLoading,\n price: overrides.price,\n });\n\n return <TokenInput {...tokenFromInputProps} />;\n}\n\nfunction LimitTokenFromInput() {\n const tokenFromInputProps = useLimitTokenFromInputProps();\n return <TokenInput {...tokenFromInputProps} />;\n}\n\nfunction OtcTokenFromInput() {\n const tokenFromInputProps = useOtcTokenFromInputProps();\n return <TokenInput {...tokenFromInputProps} />;\n}\n\nfunction TwapTokenFromInput() {\n const overrides = useTokenInputsFromTwapPrice();\n const tokenFromInputProps = useTwapTokenFromInputProps({\n override: overrides.tokenFromAmount,\n isPriceLoading: overrides.isLoading,\n });\n return <TokenInput {...tokenFromInputProps} />;\n}\n\nfunction SwapTokenToInput() {\n // override Token amounts based on current swap price\n const overrides = useTokenInputsFromPrice();\n\n const tokenToInputProps = useTokenToInputProps({\n override: overrides.tokenToAmount,\n isPriceLoading: overrides.isLoading,\n priceMode: overrides.priceMode,\n price: overrides.price,\n priceError: overrides.error,\n });\n\n return <TokenInput {...tokenToInputProps} />;\n}\n\nfunction LimitTokenToInput() {\n const tokenToInputProps = useLimitTokenToInputProps();\n return <TokenInput {...tokenToInputProps} />;\n}\n\nfunction OtcTokenToInput() {\n const tokenToInputProps = useOtcTokenToInputProps();\n return <TokenInput {...tokenToInputProps} />;\n}\n\nfunction TwapTokenToInput() {\n const overrides = useTokenInputsFromTwapPrice();\n const tokenToInputProps = useTwapTokenToInputProps({\n override: overrides.tokenToAmount,\n isPriceLoading: overrides.isLoading,\n priceError: overrides.cachedError,\n });\n return <TokenInput {...tokenToInputProps} />;\n}\n\nfunction SwapTokenSwitcher() {\n const tokenSwitcherProps = useSwapTokenSwitcherProps();\n return <TokenSwitcherComp {...tokenSwitcherProps} />;\n}\n\nfunction LimitTokenSwitcher() {\n const tokenSwitcherProps = useLimitTokenSwitcherProps();\n return <TokenSwitcherComp {...tokenSwitcherProps} />;\n}\n\nfunction OtcTokenSwitcher() {\n const tokenSwitcherProps = useOtcTokenSwitcherProps();\n return <TokenSwitcherComp {...tokenSwitcherProps} />;\n}\n\nfunction TwapTokenSwitcher() {\n const tokenSwitcherProps = useTwapTokenSwitcherProps();\n return <TokenSwitcherComp {...tokenSwitcherProps} />;\n}\n\nfunction SwapButton() {\n // override Token amounts based on current swap price\n const overrides = useTokenInputsFromPrice();\n\n const tokenFromInputProps = useTokenFromInputProps({\n override: overrides.tokenFromAmount,\n activeSwapMode: overrides.priceMode,\n isPriceLoading: overrides.isLoading,\n price: overrides.price,\n });\n const tokenToInputProps = useTokenToInputProps({\n override: overrides.tokenToAmount,\n isPriceLoading: overrides.isLoading,\n priceMode: overrides.priceMode,\n price: overrides.price,\n priceError: overrides.error,\n });\n\n const orderProps =\n tokenFromInputProps.token && tokenToInputProps.token\n ? {\n fromToken: tokenFromInputProps.token,\n toToken: tokenToInputProps.token,\n fromAmount: tokenFromInputProps.amount,\n toAmount: tokenToInputProps.amount,\n swapSide: overrides.side,\n }\n : undefined;\n\n const extraProps = useWidgetButtonExtraProps({\n tokenFrom: tokenFromInputProps.token,\n tokenTo: tokenToInputProps.token,\n });\n\n return (\n <SwapButtonWithDrawer\n orderProps={orderProps}\n marketPrice={\n overrides.priceMode === \"market\" ? overrides.price : undefined\n }\n deltaPrice={overrides.priceMode === \"delta\" ? overrides.price : undefined}\n priceMode={overrides.priceMode}\n disabled={extraProps.disabled}\n labelOverride={extraProps.labelOverride}\n className={extraProps.className}\n onClick={extraProps.onClick}\n />\n );\n}\n\nfunction SwapDetails() {\n const overrides = useTokenInputsFromPrice();\n\n const tokenFromInputProps = useTokenFromInputProps({\n override: overrides.tokenFromAmount,\n activeSwapMode: overrides.priceMode,\n isPriceLoading: overrides.isLoading,\n price: overrides.price,\n });\n const tokenToInputProps = useTokenToInputProps({\n override: overrides.tokenToAmount,\n isPriceLoading: overrides.isLoading,\n priceMode: overrides.priceMode,\n price: overrides.price,\n priceError: overrides.error,\n });\n\n const fromAmountGtZero = Number(tokenFromInputProps.amount) > 0;\n const shouldShowDetails = fromAmountGtZero && tokenToInputProps.token;\n\n return shouldShowDetails ? <SwapDetailsExpandable /> : null;\n}\n\nfunction SwapReceiverAddress() {\n const { isConnected } = useAccount();\n const shouldShowReceiverAddress = isConnected;\n const swapReceiverAddressProps = useSwapReceiverAddress();\n\n return shouldShowReceiverAddress ? (\n <ReceiverAddress\n classes={{ root: \"mt-2\" }}\n type=\"swap\"\n {...swapReceiverAddressProps}\n />\n ) : null;\n}\n\nfunction OtcReceiverAddress() {\n const unsupportedChain = useUnsupportedOtcChain();\n const otcReceiverAddressProps = useOtcReceiverAddress();\n\n return (\n <ReceiverAddress\n classes={{\n root: cn(\"mt-2\", {\n \"pointer-events-none\": unsupportedChain,\n }),\n }}\n type=\"otc\"\n {...otcReceiverAddressProps}\n />\n );\n}\n\nfunction LimitReceiverAddress() {\n const unsupportedChain = useUnsupportedLimitChain();\n const limitReceiverAddressProps = useLimitReceiverAddress();\n\n return (\n <ReceiverAddress\n classes={{\n root: cn(\"mt-2\", {\n \"pointer-events-none\": unsupportedChain,\n }),\n }}\n type=\"limit\"\n {...limitReceiverAddressProps}\n />\n );\n}\n\nconst swapModeSwitcherClasses = {\n root: \"mt-4\",\n} as const;\n\nfunction SwapModeSwitcher() {\n const { delta, market, priceMode } = useSwapPrices({ enabled: false });\n // @TODO as on the main UI:\n // 1. Show Market MarketOffers if marketPrice can be switched to and price will fetch\n // 2. Show nothing if only one of the prices can be used\n if (delta.canBeUsed && market.canBeUsed) {\n return (\n <SwapModeSwitcherExpandable\n classes={swapModeSwitcherClasses}\n currentEffectiveMode={priceMode}\n />\n );\n }\n\n if (delta.canBeUsed && delta.price && isBridgePrice(delta.price)) {\n return (\n <ErrorBoundary fallback={null}>\n <BridgeSelectorExpandable\n classes={swapModeSwitcherClasses}\n bridgePrice={delta.price}\n />\n </ErrorBoundary>\n );\n }\n}\n\ntype ButtonWithDrawerProps = React.ComponentProps<typeof Button> & {\n orderProps?: MinTradeOverviewProps;\n drawerContainer?: HTMLDivElement | null;\n marketPrice?: OptimalRate;\n deltaPrice?: DeltaPrice;\n priceMode: SwapMode;\n labelOverride?: string;\n};\n\nfunction SwapButtonWithDrawer({\n orderProps,\n drawerContainer,\n marketPrice,\n deltaPrice,\n priceMode,\n labelOverride,\n ...buttonProps\n}: ButtonWithDrawerProps) {\n const { isConnected } = useAccount();\n\n if (!isConnected)\n return (\n <ConnectWalletDrawerButton\n drawerContainer={drawerContainer}\n {...buttonProps}\n />\n );\n\n const priceProps =\n priceMode === \"delta\"\n ? { price: deltaPrice, priceMode }\n : { price: marketPrice, priceMode };\n\n return (\n <SwapTradeFlowScreenButton\n orderProps={orderProps}\n labelOverride={labelOverride}\n {...priceProps}\n {...buttonProps}\n />\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["DevTools","TokenInput","useTokenFromInputProps","Button","JotaiProvider","QueryClientProvider","Web3Providers","useConnection","WIDGET_ELEMENT_ID","WIDGET_HEIGHT_CLASSNAME","Updaters","useTokenToInputProps","TokenSwitcher","TokenSwitcherComp","WidgetProps","cn","useSwapTokenSwitcherProps","runSubscriptions","PrivyIframeDependency","SwapModeSwitcherExpandable","useTokenInputsFromPrice","MinTradeOverviewProps","DeltaPrice","OptimalRate","SwapMode","SwapDetailsExpandable","ReceiverAddress","jotaiStore","useAtomValue","useSetAtom","useHydrateAtoms","containerAtom","AppHeader","useLayoutEffect","useRef","defaultSubConfig","defaultWidgetConfig","excludeUIAtom","useWidgetConfig","setSubConfigAtom","setWidgetConfigAtom","PoweredBy","useWidgetButtonExtraProps","useSwapPrices","Toaster","externalProviderAtom","AutoconnectExternalProvider","SwapTradeFlowScreenButton","TwapTradeFlowScreenButton","ConnectWalletDrawerButton","PriceInput","OrderExpiryInput","useLimitTokenToInputProps","useLimitTokenFromInputProps","useTradeMode","TradeMode","useDrawerContainerHeightTransition","InWidgetDrawerOverlay","LimitOrderButton","LimitOrderDetails","useOtcTokenFromInputProps","useOtcTokenToInputProps","useLimitPriceInputProps","useOtcPriceInputProps","OtcOrderButton","OtcOrderDetails","SwapWidgetWarning","TwapWarnings","WidgetWarning","useUnsupportedLimitChain","useUnsupportedOtcChain","useLimitTokenSwitcherProps","useOtcTokenSwitcherProps","useTwapTokenFromInputProps","useTwapTokenToInputProps","useTwapTokenSwitcherProps","TwapOrderDuration","TwapOrderSplit","TwapRateProtection","TwapDetails","useTokenInputsFromTwapPrice","useTwapButtonExtraProps","useSwapReceiverAddress","useOtcReceiverAddress","useWidgetEventsSetter","widgetEventsAtom","formInputPropsAtom","useSetFormInputFromProps","queryClientAtom","useQueryClient","useScreenValue","MainScreenContainer","SecondaryScreenContainer","useCloseScreenOnClickOutside","useResizeObserver","useLimitReceiverAddress","isBridgePrice","BridgeSelectorExpandable","ErrorBoundary","useInitialValue","apiConfigAtom","SwapScreen","$","_c","t0","Symbol","for","LimitOrderExtraInputs","priceInputProps","unsupportedChain","t1","t2","t3","OtcOrderExtraInputs","LimitOrderScreen","OtcOrderScreen","TwapExtraInputs","TwapButton","isConnected","overrides","isLoading","tokenFromAmount","override","isPriceLoading","tokenFromInputProps","cachedError","tokenToAmount","priceError","tokenToInputProps","side","amount","token","fromToken","toToken","fromAmount","toAmount","swapSide","undefined","orderProps","tokenFrom","tokenTo","extraProps","t4","className","disabled","labelOverride","price","TwapScreen","tradeModeToScreen","Record","React","FC","swap","limit","otc","twap","MainScreen","tradeMode","TradeModeScreen","App","excludeUI","screenElement","includes","WidgetBase","config","_config","apiConfig","provider","events","input","formInputProps","queryClient","setWidgetConfig","setSubConfig","setApiConfig","destChains","devURLs","partnerConfig","referrerConfig","srcChains","tokenLists","tradeModes","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","store","t15","t16","debug","enableCrossChain","enableDegenMode","enableDelta","privyAppId","privyClientId","theme","widgetMode","t17","t18","t19","apiKey","headers","t20","t21","t22","setExternalProvider","t23","t24","isDappMode","reconnectOnMountInit","t25","t26","t27","t28","t29","import","meta","env","DEV","t30","Widget","Containers","children","setContainerElement","containerRef","widgetConfig","isDrawerFullCover","isDrawerOpen","partialDrawerOpen","dark","WidgetHeader","root","SwapTokenFromInput","priceMode","activeSwapMode","LimitTokenFromInput","OtcTokenFromInput","TwapTokenFromInput","SwapTokenToInput","error","LimitTokenToInput","OtcTokenToInput","TwapTokenToInput","SwapTokenSwitcher","tokenSwitcherProps","LimitTokenSwitcher","OtcTokenSwitcher","TwapTokenSwitcher","SwapButton","onClick","SwapDetails","fromAmountGtZero","Number","shouldShowDetails","SwapReceiverAddress","shouldShowReceiverAddress","swapReceiverAddressProps","OtcReceiverAddress","otcReceiverAddressProps","LimitReceiverAddress","limitReceiverAddressProps","swapModeSwitcherClasses","const","SwapModeSwitcher","enabled","delta","market","canBeUsed","ButtonWithDrawerProps","ComponentProps","drawerContainer","HTMLDivElement","marketPrice","deltaPrice","SwapButtonWithDrawer","buttonProps","priceProps"],"sources":["../../src/core/index.tsx"],"sourcesContent":["import \"@/styles/global.css\";\n\nimport { DevTools } from \"./DevTools\"; // Jotai DevTools instantiation needs to be before jotai.createStore (even implicit with default provider)\nimport { TokenInput } from \"@/components/widget/TokenInput\";\nimport { useTokenFromInputProps } from \"./inputs/hooks/useTokenFromInputProps\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n JotaiProvider,\n QueryClientProvider,\n Web3Providers,\n} from \"@/components/web3/providers\";\nimport { useConnection } from \"wagmi\";\nimport { WIDGET_ELEMENT_ID, WIDGET_HEIGHT_CLASSNAME } from \"./constants\";\n\nimport { Updaters } from \"./Updaters\";\nimport { useTokenToInputProps } from \"./inputs/hooks/useTokenToInputProps\";\nimport { TokenSwitcher as TokenSwitcherComp } from \"@/components/widget/TokenSwitcher/TokenSwitcher\";\nimport type { WidgetProps } from \"./types\";\nimport { cn } from \"@/lib/utils\";\nimport { useSwapTokenSwitcherProps } from \"./inputs/hooks/useTokenSwitcherProps\";\n\nimport { runSubscriptions } from \"./subscriptions\";\n\nimport { PrivyIframeDependency } from \"@/components/web3/ConnectWallets/privy/iframe\";\nimport { SwapModeSwitcherExpandable } from \"@/components/widget/SwapModeSwitcher/SwapModeSwitcherExpandable\";\n\nimport { useTokenInputsFromPrice } from \"@/hooks/swap/prices/useTokenInputsFromPrice\";\nimport type { MinTradeOverviewProps } from \"@/components/widget/TradeOverview/TradeOverview\";\n\nimport type { DeltaPrice, OptimalRate } from \"@velora-dex/sdk\";\nimport type { SwapMode } from \"@/components/widget/SwapModeSwitcher/state/types\";\nimport { SwapDetailsExpandable } from \"@/components/widget/Details/SwapDetailsExpandable\";\nimport { ReceiverAddress } from \"@/components/widget/ReceiverAddress/ReceiverAddress\";\nimport { jotaiStore, useAtomValue, useSetAtom } from \"@/core/store\";\nimport { useHydrateAtoms } from \"jotai/utils\";\nimport { containerAtom } from \"./state/containerAtom\";\nimport { AppHeader } from \"@/components/widget/AppHeader/AppHeader\";\nimport { useLayoutEffect, useRef } from \"react\";\nimport {\n defaultSubConfig,\n defaultWidgetConfig,\n excludeUIAtom,\n useWidgetConfig,\n} from \"./state/configAtom\";\nimport {\n setSubConfigAtom,\n setWidgetConfigAtom,\n} from \"./state/configActionsAtom\";\nimport { PoweredBy } from \"@/components/widget/PoweredBy/PoweredBy\";\nimport { useWidgetButtonExtraProps } from \"./button/hooks/useWidgetButtonExtraProps\";\nimport { useSwapPrices } from \"@/hooks/swap/prices/useSwapPrices\";\nimport { Toaster } from \"./Toaster\";\nimport { externalProviderAtom } from \"./state/externalProviderAtom\";\nimport { AutoconnectExternalProvider } from \"@/components/web3/ConnectExternalProvider/AutoconnectExternal\";\nimport {\n SwapTradeFlowScreenButton,\n TwapTradeFlowScreenButton,\n} from \"./TradeFlowScreenButton\";\nimport { ConnectWalletDrawerButton } from \"./ConnectWalletDrawerButton\";\nimport { PriceInput } from \"@/components/widget/LimitPriceInput\";\nimport { OrderExpiryInput } from \"@/components/widget/OrderExpiryInput\";\nimport { useLimitTokenToInputProps } from \"./limit/useLimitTokenToInputProps\";\nimport { useLimitTokenFromInputProps } from \"./limit/useLimitTokenFromInputProps\";\nimport { useTradeMode, type TradeMode } from \"./state/tradeModeAtom\";\nimport { useDrawerContainerHeightTransition } from \"@/components/widget/Drawer/state/useDrawerControls\";\nimport { InWidgetDrawerOverlay } from \"@/components/widget/Drawer/Overlay\";\nimport { LimitOrderButton } from \"./LimitOrderButton\";\nimport { LimitOrderDetails } from \"./LimitOrderDetails\";\nimport { useOtcTokenFromInputProps } from \"./otc/useOtcTokenFromInputProps\";\nimport { useOtcTokenToInputProps } from \"./otc/useOtcTokenToInputProps\";\nimport { useLimitPriceInputProps } from \"./limit/useLimitPriceInputProps\";\nimport { useOtcPriceInputProps } from \"./otc/useOtcPriceInputProps\";\nimport { OtcOrderButton } from \"./OtcOrderButton\";\nimport { OtcOrderDetails } from \"./OtcOrderDetails\";\nimport { SwapWidgetWarning, TwapWarnings, WidgetWarning } from \"./Warnings\";\nimport { useUnsupportedLimitChain } from \"./limit/useLimitNotSupported\";\nimport { useUnsupportedOtcChain } from \"./otc/useOtcNotSupported\";\nimport { useLimitTokenSwitcherProps } from \"./limit/useLimitTokenSwitcherProps\";\nimport { useOtcTokenSwitcherProps } from \"./otc/useOtcTokenSwitcherProps\";\nimport { useTwapTokenFromInputProps } from \"./twap/useTwapTokenFromInputProps\";\nimport { useTwapTokenToInputProps } from \"./twap/useTwapTokenToInputProps\";\nimport { useTwapTokenSwitcherProps } from \"./twap/useTwapTokenSwitcherProps\";\nimport { TwapOrderDuration } from \"@/components/widget/Twap/OrderDuration\";\nimport { TwapOrderSplit } from \"@/components/widget/Twap/OrderSplit\";\nimport { TwapRateProtection } from \"@/components/widget/Twap/RateProtection\";\nimport { TwapDetails } from \"./TwapDetails\";\nimport { useTokenInputsFromTwapPrice } from \"@/hooks/swap/prices/useTokenInputsFromTwapPrice\";\nimport { useTwapButtonExtraProps } from \"./button/hooks/useWidgetButtonExtraProps\";\nimport { useSwapReceiverAddress } from \"@/components/widget/ReceiverAddress/state/receiverAddressAtom\";\nimport { useOtcReceiverAddress } from \"./otc/state/receiverAddressAtom\";\nimport {\n useWidgetEventsSetter,\n widgetEventsAtom,\n} from \"./state/widgetEventsAtom\";\nimport {\n formInputPropsAtom,\n useSetFormInputFromProps,\n} from \"./inputs/state/setTokenByAddressAtom\";\nimport { queryClientAtom } from \"jotai-tanstack-query\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport { useScreenValue } from \"./screen/state/hooks/useScreenValue\";\nimport {\n MainScreenContainer,\n SecondaryScreenContainer,\n} from \"@/components/widget/Screen/ScreenContainer\";\n\nimport { useCloseScreenOnClickOutside } from \"./screen/hooks/useOnClickOutside\";\nimport { useResizeObserver } from \"./screen/hooks/useResizeObserver\";\n\nimport { useLimitReceiverAddress } from \"./limit/state/receiverAddressAtom\";\nimport { isBridgePrice } from \"@/hooks/swap/prices/delta/queries/useDeltaPriceQuery\";\nimport { BridgeSelectorExpandable } from \"@/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable\";\nimport { ErrorBoundary } from \"react-error-boundary\";\nimport { useInitialValue } from \"./screen/hooks/useInitialValue\";\nimport { apiConfigAtom } from \"./state/apiConfigAtom\";\n\nrunSubscriptions();\n\nconst SwapScreen = () => {\n return (\n <>\n <SwapTokenFromInput />\n <SwapTokenSwitcher />\n <SwapTokenToInput />\n <SwapReceiverAddress />\n <WidgetWarning />\n <SwapWidgetWarning />\n <SwapButton />\n <SwapDetails />\n <SwapModeSwitcher />\n </>\n );\n};\n\nconst LimitOrderExtraInputs = () => {\n const priceInputProps = useLimitPriceInputProps();\n const unsupportedChain = useUnsupportedLimitChain();\n\n return (\n <div\n className={cn(\"flex gap-4 items-stretch py-2\", {\n \"pointer-events-none\": unsupportedChain,\n })}\n >\n <div className=\"flex-1\">\n <PriceInput {...priceInputProps} />\n </div>\n <div className=\"flex-1\">\n <OrderExpiryInput type=\"limit\" />\n </div>\n </div>\n );\n};\n\nconst OtcOrderExtraInputs = () => {\n const priceInputProps = useOtcPriceInputProps();\n const unsupportedChain = useUnsupportedOtcChain();\n\n return (\n <div\n className={cn(\"flex gap-4 items-stretch py-2\", {\n \"pointer-events-none\": unsupportedChain,\n })}\n >\n <div className=\"flex-1\">\n <PriceInput {...priceInputProps} />\n </div>\n <div className=\"flex-1\">\n <OrderExpiryInput type=\"otc\" />\n </div>\n </div>\n );\n};\n\nconst LimitOrderScreen = () => {\n return (\n <>\n <LimitTokenFromInput />\n <LimitTokenSwitcher />\n <LimitTokenToInput />\n <LimitOrderExtraInputs />\n <LimitReceiverAddress />\n <WidgetWarning />\n <LimitOrderButton />\n <LimitOrderDetails />\n </>\n );\n};\n\nconst OtcOrderScreen = () => {\n return (\n <>\n <OtcTokenFromInput />\n <OtcTokenSwitcher />\n <OtcTokenToInput />\n <OtcOrderExtraInputs />\n <OtcReceiverAddress />\n <WidgetWarning />\n <OtcOrderButton />\n <OtcOrderDetails />\n </>\n );\n};\n\nconst TwapExtraInputs = () => {\n return (\n <div className=\"flex flex-col gap-4 pt-4\">\n <TwapOrderDuration />\n <TwapOrderSplit />\n <TwapRateProtection />\n </div>\n );\n};\n\nfunction TwapButton() {\n const { isConnected } = useConnection();\n\n const overrides = useTokenInputsFromTwapPrice();\n\n const tokenFromInputProps = useTwapTokenFromInputProps({\n override: overrides.tokenFromAmount,\n isPriceLoading: overrides.isLoading,\n });\n const tokenToInputProps = useTwapTokenToInputProps({\n override: overrides.tokenToAmount,\n isPriceLoading: overrides.isLoading,\n priceError: overrides.cachedError,\n });\n\n const orderProps =\n tokenFromInputProps.token && tokenToInputProps.token\n ? {\n fromToken: tokenFromInputProps.token,\n toToken: tokenToInputProps.token,\n fromAmount: tokenFromInputProps.amount,\n toAmount: tokenToInputProps.amount,\n swapSide: overrides.side,\n }\n : undefined;\n\n const extraProps = useTwapButtonExtraProps({\n tokenFrom: tokenFromInputProps.token,\n tokenTo: tokenToInputProps.token,\n });\n\n if (!isConnected) return <ConnectWalletDrawerButton />;\n\n return (\n <TwapTradeFlowScreenButton\n orderProps={orderProps}\n twapPrice={overrides.price}\n disabled={extraProps.disabled}\n labelOverride={extraProps.labelOverride}\n className={extraProps.className}\n />\n );\n}\n\nconst TwapScreen = () => {\n return (\n <>\n <TwapTokenFromInput />\n <TwapTokenSwitcher />\n <TwapTokenToInput />\n <TwapExtraInputs />\n <TwapWarnings />\n <TwapDetails />\n <TwapButton />\n </>\n );\n};\n\nconst tradeModeToScreen: Record<TradeMode, React.FC> = {\n swap: SwapScreen,\n limit: LimitOrderScreen,\n otc: OtcOrderScreen,\n twap: TwapScreen,\n};\n\nconst MainScreen = () => {\n const tradeMode = useTradeMode();\n const TradeModeScreen = tradeModeToScreen[tradeMode];\n return <TradeModeScreen />;\n};\n\nconst App = () => {\n const excludeUI = useAtomValue(excludeUIAtom);\n const { screenElement } = useScreenValue();\n\n return (\n <Containers>\n {screenElement ? (\n <SecondaryScreenContainer>{screenElement}</SecondaryScreenContainer>\n ) : (\n <MainScreenContainer>\n <WidgetHeader />\n <MainScreen />\n <PoweredBy />\n </MainScreenContainer>\n )}\n {!excludeUI.includes(\"snackbars\") && <Toaster />}\n </Containers>\n );\n};\n\n// export to use in storybook tests\nexport const WidgetBase = ({\n config: _config,\n apiConfig,\n provider,\n events,\n input: formInputProps,\n}: WidgetProps) => {\n const queryClient = useQueryClient();\n\n const setWidgetConfig = useSetAtom(setWidgetConfigAtom);\n const setSubConfig = useSetAtom(setSubConfigAtom);\n const setApiConfig = useSetAtom(apiConfigAtom);\n\n const {\n srcChains,\n destChains,\n tokenLists,\n tradeModes,\n excludeUI,\n devURLs,\n partnerConfig,\n referrerConfig,\n ...config\n } = _config || {};\n\n // hydrating with only partial config overrides values with undefined,\n // so we have default values too\n useHydrateAtoms(\n [\n [setWidgetConfigAtom, { ...defaultWidgetConfig, ...config }],\n [\n setSubConfigAtom,\n {\n ...defaultSubConfig,\n srcChains,\n destChains,\n tokenLists,\n tradeModes,\n excludeUI,\n devURLs,\n partnerConfig,\n referrerConfig,\n },\n ],\n [apiConfigAtom, apiConfig || {}],\n [externalProviderAtom, provider || null],\n [widgetEventsAtom, events || {}],\n [formInputPropsAtom, formInputProps || {}],\n // this provider initialisation step is needed so that jotai reference the same\n // queryClient in both atomWithQuery and other parts of the app. Without this,\n // jotai will reference a different instance of queryClient\n [queryClientAtom, queryClient],\n ],\n {\n store: jotaiStore,\n }\n );\n\n useWidgetEventsSetter(events);\n useSetFormInputFromProps(formInputProps);\n\n useLayoutEffect(() => {\n setWidgetConfig({\n theme: config.theme,\n enableDelta: config.enableDelta,\n enableCrossChain: config.enableCrossChain,\n privyAppId: config.privyAppId,\n privyClientId: config.privyClientId,\n debug: config.debug,\n widgetMode: config.widgetMode,\n enableDegenMode: config.enableDegenMode,\n });\n }, [\n config.theme,\n config.enableDelta,\n config.enableCrossChain,\n config.privyAppId,\n config.privyClientId,\n config.debug,\n config.widgetMode,\n config.enableDegenMode,\n setWidgetConfig,\n ]);\n\n useLayoutEffect(() => {\n setSubConfig({\n srcChains,\n destChains,\n tokenLists,\n tradeModes,\n excludeUI,\n devURLs,\n partnerConfig,\n referrerConfig,\n });\n }, [\n srcChains,\n destChains,\n tokenLists,\n setSubConfig,\n tradeModes,\n excludeUI,\n devURLs,\n partnerConfig,\n referrerConfig,\n ]);\n\n useLayoutEffect(() => {\n setApiConfig({\n apiKey: apiConfig?.apiKey,\n headers: apiConfig?.headers,\n });\n }, [apiConfig?.apiKey, apiConfig?.headers, setApiConfig]);\n\n const setExternalProvider = useSetAtom(externalProviderAtom);\n\n useLayoutEffect(() => {\n // update external provider on change\n setExternalProvider(provider || null);\n }, [provider, setExternalProvider]);\n\n const isDappMode = config?.widgetMode === \"dapp\";\n // after initial reconnect (or not reconnect) on mount, we want to keep the same reconnectOnMount value\n // so that onMount logic inside WagmiProvider/Hydrate doesn't re-run.\n // reconnectOnMountInit should be considered reconnectOnRender,\n // in normal Apps where WagmiProvider is at the very top of the tree, first and only render = when mounting,\n // in Widget, because of external props, rerender can happen more often.\n const reconnectOnMountInit = useInitialValue(!isDappMode);\n // reconnectOnMount not in Dapp mode,\n // in Dapp mode, connection happens to provider external provider, when provided, whether onMount or later\n\n return (\n <Web3Providers reconnectOnMount={reconnectOnMountInit}>\n <AutoconnectExternalProvider />\n <PrivyIframeDependency />\n <Updaters />\n <App />\n {import.meta.env.DEV && <DevTools />}\n </Web3Providers>\n );\n};\n\nexport const Widget = ({\n config,\n apiConfig,\n provider,\n events,\n input,\n}: WidgetProps) => {\n return (\n <JotaiProvider>\n <QueryClientProvider>\n <WidgetBase\n config={config}\n apiConfig={apiConfig}\n provider={provider}\n events={events}\n input={input}\n />\n </QueryClientProvider>\n </JotaiProvider>\n );\n};\n\nfunction Containers({ children }: { children: React.ReactNode }) {\n const setContainerElement = useSetAtom(containerAtom);\n\n const containerRef = useRef<HTMLDivElement | null>(null);\n useCloseScreenOnClickOutside(containerRef);\n useResizeObserver(containerRef);\n\n const widgetConfig = useWidgetConfig();\n\n const { isDrawerFullCover, isDrawerOpen } =\n useDrawerContainerHeightTransition(containerRef);\n\n const partialDrawerOpen = isDrawerOpen && !isDrawerFullCover;\n\n return (\n <div\n ref={containerRef}\n // don't use tailwind classes on the root element, because of .velora-widget { @import tailwind/*}\n className={cn(\"velora-widget\", {\n dark: widgetConfig.theme === \"dark\",\n })}\n id={WIDGET_ELEMENT_ID}\n >\n <InWidgetDrawerOverlay open={partialDrawerOpen} />\n\n <div\n // absolutely positioned container on top of parent container with fixed height,\n // but because it's not statically positioned, it doesn't add to the whole widget height\n className={cn(\n \"overflow-hidden bottom-0 left-0 right-0 absolute transition-transform duration-500 z-11 pointer-events-none *:pointer-events-auto\",\n WIDGET_HEIGHT_CLASSNAME\n )}\n ref={setContainerElement}\n />\n {children}\n </div>\n );\n}\n\nfunction WidgetHeader() {\n return <AppHeader classes={{ root: \"mb-4\" }} />;\n}\n\nfunction SwapTokenFromInput() {\n // override Token amounts based on current swap price\n const overrides = useTokenInputsFromPrice();\n\n const tokenFromInputProps = useTokenFromInputProps({\n override: overrides.tokenFromAmount,\n activeSwapMode: overrides.priceMode,\n isPriceLoading: overrides.isLoading,\n price: overrides.price,\n });\n\n return <TokenInput {...tokenFromInputProps} />;\n}\n\nfunction LimitTokenFromInput() {\n const tokenFromInputProps = useLimitTokenFromInputProps();\n return <TokenInput {...tokenFromInputProps} />;\n}\n\nfunction OtcTokenFromInput() {\n const tokenFromInputProps = useOtcTokenFromInputProps();\n return <TokenInput {...tokenFromInputProps} />;\n}\n\nfunction TwapTokenFromInput() {\n const overrides = useTokenInputsFromTwapPrice();\n const tokenFromInputProps = useTwapTokenFromInputProps({\n override: overrides.tokenFromAmount,\n isPriceLoading: overrides.isLoading,\n });\n return <TokenInput {...tokenFromInputProps} />;\n}\n\nfunction SwapTokenToInput() {\n // override Token amounts based on current swap price\n const overrides = useTokenInputsFromPrice();\n\n const tokenToInputProps = useTokenToInputProps({\n override: overrides.tokenToAmount,\n isPriceLoading: overrides.isLoading,\n priceMode: overrides.priceMode,\n price: overrides.price,\n priceError: overrides.error,\n });\n\n return <TokenInput {...tokenToInputProps} />;\n}\n\nfunction LimitTokenToInput() {\n const tokenToInputProps = useLimitTokenToInputProps();\n return <TokenInput {...tokenToInputProps} />;\n}\n\nfunction OtcTokenToInput() {\n const tokenToInputProps = useOtcTokenToInputProps();\n return <TokenInput {...tokenToInputProps} />;\n}\n\nfunction TwapTokenToInput() {\n const overrides = useTokenInputsFromTwapPrice();\n const tokenToInputProps = useTwapTokenToInputProps({\n override: overrides.tokenToAmount,\n isPriceLoading: overrides.isLoading,\n priceError: overrides.cachedError,\n });\n return <TokenInput {...tokenToInputProps} />;\n}\n\nfunction SwapTokenSwitcher() {\n const tokenSwitcherProps = useSwapTokenSwitcherProps();\n return <TokenSwitcherComp {...tokenSwitcherProps} />;\n}\n\nfunction LimitTokenSwitcher() {\n const tokenSwitcherProps = useLimitTokenSwitcherProps();\n return <TokenSwitcherComp {...tokenSwitcherProps} />;\n}\n\nfunction OtcTokenSwitcher() {\n const tokenSwitcherProps = useOtcTokenSwitcherProps();\n return <TokenSwitcherComp {...tokenSwitcherProps} />;\n}\n\nfunction TwapTokenSwitcher() {\n const tokenSwitcherProps = useTwapTokenSwitcherProps();\n return <TokenSwitcherComp {...tokenSwitcherProps} />;\n}\n\nfunction SwapButton() {\n // override Token amounts based on current swap price\n const overrides = useTokenInputsFromPrice();\n\n const tokenFromInputProps = useTokenFromInputProps({\n override: overrides.tokenFromAmount,\n activeSwapMode: overrides.priceMode,\n isPriceLoading: overrides.isLoading,\n price: overrides.price,\n });\n const tokenToInputProps = useTokenToInputProps({\n override: overrides.tokenToAmount,\n isPriceLoading: overrides.isLoading,\n priceMode: overrides.priceMode,\n price: overrides.price,\n priceError: overrides.error,\n });\n\n const orderProps =\n tokenFromInputProps.token && tokenToInputProps.token\n ? {\n fromToken: tokenFromInputProps.token,\n toToken: tokenToInputProps.token,\n fromAmount: tokenFromInputProps.amount,\n toAmount: tokenToInputProps.amount,\n swapSide: overrides.side,\n }\n : undefined;\n\n const extraProps = useWidgetButtonExtraProps({\n tokenFrom: tokenFromInputProps.token,\n tokenTo: tokenToInputProps.token,\n });\n\n return (\n <SwapButtonWithDrawer\n orderProps={orderProps}\n marketPrice={\n overrides.priceMode === \"market\" ? overrides.price : undefined\n }\n deltaPrice={overrides.priceMode === \"delta\" ? overrides.price : undefined}\n priceMode={overrides.priceMode}\n disabled={extraProps.disabled}\n labelOverride={extraProps.labelOverride}\n className={extraProps.className}\n onClick={extraProps.onClick}\n />\n );\n}\n\nfunction SwapDetails() {\n const overrides = useTokenInputsFromPrice();\n\n const tokenFromInputProps = useTokenFromInputProps({\n override: overrides.tokenFromAmount,\n activeSwapMode: overrides.priceMode,\n isPriceLoading: overrides.isLoading,\n price: overrides.price,\n });\n const tokenToInputProps = useTokenToInputProps({\n override: overrides.tokenToAmount,\n isPriceLoading: overrides.isLoading,\n priceMode: overrides.priceMode,\n price: overrides.price,\n priceError: overrides.error,\n });\n\n const fromAmountGtZero = Number(tokenFromInputProps.amount) > 0;\n const shouldShowDetails = fromAmountGtZero && tokenToInputProps.token;\n\n return shouldShowDetails ? <SwapDetailsExpandable /> : null;\n}\n\nfunction SwapReceiverAddress() {\n const { isConnected } = useConnection();\n const shouldShowReceiverAddress = isConnected;\n const swapReceiverAddressProps = useSwapReceiverAddress();\n\n return shouldShowReceiverAddress ? (\n <ReceiverAddress\n classes={{ root: \"mt-2\" }}\n type=\"swap\"\n {...swapReceiverAddressProps}\n />\n ) : null;\n}\n\nfunction OtcReceiverAddress() {\n const unsupportedChain = useUnsupportedOtcChain();\n const otcReceiverAddressProps = useOtcReceiverAddress();\n\n return (\n <ReceiverAddress\n classes={{\n root: cn(\"mt-2\", {\n \"pointer-events-none\": unsupportedChain,\n }),\n }}\n type=\"otc\"\n {...otcReceiverAddressProps}\n />\n );\n}\n\nfunction LimitReceiverAddress() {\n const unsupportedChain = useUnsupportedLimitChain();\n const limitReceiverAddressProps = useLimitReceiverAddress();\n\n return (\n <ReceiverAddress\n classes={{\n root: cn(\"mt-2\", {\n \"pointer-events-none\": unsupportedChain,\n }),\n }}\n type=\"limit\"\n {...limitReceiverAddressProps}\n />\n );\n}\n\nconst swapModeSwitcherClasses = {\n root: \"mt-4\",\n} as const;\n\nfunction SwapModeSwitcher() {\n const { delta, market, priceMode } = useSwapPrices({ enabled: false });\n // @TODO as on the main UI:\n // 1. Show Market MarketOffers if marketPrice can be switched to and price will fetch\n // 2. Show nothing if only one of the prices can be used\n if (delta.canBeUsed && market.canBeUsed) {\n return (\n <SwapModeSwitcherExpandable\n classes={swapModeSwitcherClasses}\n currentEffectiveMode={priceMode}\n />\n );\n }\n\n if (delta.canBeUsed && delta.price && isBridgePrice(delta.price)) {\n return (\n <ErrorBoundary fallback={null}>\n <BridgeSelectorExpandable\n classes={swapModeSwitcherClasses}\n bridgePrice={delta.price}\n />\n </ErrorBoundary>\n );\n }\n}\n\ntype ButtonWithDrawerProps = React.ComponentProps<typeof Button> & {\n orderProps?: MinTradeOverviewProps;\n drawerContainer?: HTMLDivElement | null;\n marketPrice?: OptimalRate;\n deltaPrice?: DeltaPrice;\n priceMode: SwapMode;\n labelOverride?: string;\n};\n\nfunction SwapButtonWithDrawer({\n orderProps,\n drawerContainer,\n marketPrice,\n deltaPrice,\n priceMode,\n labelOverride,\n ...buttonProps\n}: ButtonWithDrawerProps) {\n const { isConnected } = useConnection();\n\n if (!isConnected)\n return (\n <ConnectWalletDrawerButton\n drawerContainer={drawerContainer}\n {...buttonProps}\n />\n );\n\n const priceProps =\n priceMode === \"delta\"\n ? { price: deltaPrice, priceMode }\n : { price: marketPrice, priceMode };\n\n return (\n <SwapTradeFlowScreenButton\n orderProps={orderProps}\n labelOverride={labelOverride}\n {...priceProps}\n {...buttonProps}\n />\n );\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTokenToInputProps.js","names":["TokenInputProps","useSwapTokenTo","swapChainToAtom","useAtom","useSetAtom","useSelectableDestChains","useChainId","receiveInputAmountAtom","Token","formatUnits","useSwapSide","currentSwapInputAtom","useIsCrossChain","DeltaOrMarketPrice","TokenInputAmountProps","TokenInputExtraProps","useTokenBalance","toDecimalTrimmed","useLogger","MEDIUM_STALE_TIME_FOR_REACTIVENESS","selectSwapTokenToAtom","isDeltaPrice","SupportedChainId","BridgeRoutesMode","FetchingQuotes","useTokenPrice","Big","YouGetProps","constructYouGetProps","useWarningMessage","UseTokenToInputInput","override","amountWei","price","priceMode","priceError","Error","isPriceLoading","useTokenToAmountProps","$","_c","logger","tokenTo","amountValue","setAmountValue","tokenBalanceUnit","useTokenToBalanceUnit","t0","values","log","value","t1","amount","token","onAmountChange","Symbol","for","refetchInterval","queryOptions","balanceUnit","t2","useTokenToUsdEstimation","data","tokenPriceObj","usdEstimation","route","destination","output","amountUSD","destUSD","mul","toFixed","useYouGetProps","side","useExtraProps","acrossMode","appChainId","chainTo","setChainTo","fromChainId","mode","selectableChains","showNetworkSwitcher","undefined","networks","selectedNetwork","allOption","onSelect","chainId","disabled","length","networkSwitcherProps","setCurrentInput","isSell","isLoading","isCrosschain","showFetchingQuotes","t3","t4","t5","t6","t7","t8","t9","tokenType","const","onFocus","label","bottomElement","useTokenToInputProps","tokenToAmounts","extraProps","youGetProps","tradeMode","warningMessage","BigInt","decimals","setTokenTo","newTokenTo","onTokenSelect"],"sources":["../../../../src/core/inputs/hooks/useTokenToInputProps.tsx"],"sourcesContent":["import type { TokenInputProps } from \"@/components/widget/TokenInput/types\";\n\nimport { useSwapTokenTo } from \"../state/selectedTokenAtom\";\n\nimport { swapChainToAtom } from \"@/core/state/chainToAtom\";\nimport { useAtom, useSetAtom } from \"@/core/store\";\n\nimport { useSelectableDestChains } from \"@/hooks/useSelectableDestChains\";\nimport { useChainId } from \"wagmi\";\nimport { receiveInputAmountAtom } from \"../state/inputAmountAtom\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { formatUnits } from \"viem\";\nimport { useSwapSide } from \"@/components/widget/SwapModeSwitcher/state/swapSideAtom\";\nimport { currentSwapInputAtom } from \"@/core/state/currentSwapInputAtom\";\nimport { useIsCrossChain } from \"@/core/state/isCrosschainAtom\";\nimport type { DeltaOrMarketPrice } from \"@/hooks/swap/prices/types\";\nimport type { TokenInputAmountProps, TokenInputExtraProps } from \"./types\";\nimport { useTokenBalance } from \"@/hooks/tokens/balances/useTokenBalance\";\nimport { toDecimalTrimmed } from \"@/lib/utils/toDecimal\";\nimport { useLogger } from \"@/core/logger\";\nimport { MEDIUM_STALE_TIME_FOR_REACTIVENESS } from \"@/lib/constants/time\";\nimport { selectSwapTokenToAtom } from \"../state/selectedTokenActionsAtom\";\nimport { isDeltaPrice } from \"@/hooks/swap/prices/delta/queries/useDeltaPriceQuery\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { BridgeRoutesMode } from \"@/hooks/swap/prices/delta/queries/bridgeInfo/types\";\nimport { FetchingQuotes } from \"@/components/widget/FetchingQuotes/FetchingQuotes\";\nimport { useTokenPrice } from \"@/hooks/tokens/prices/useTokenPrices\";\nimport Big from \"big.js\";\nimport type { YouGetProps } from \"@/components/widget/YouGet/types\";\nimport { constructYouGetProps } from \"./utils\";\nimport { useWarningMessage } from \"./useWarningMessage\";\n\ntype UseTokenToInputInput = {\n override?: {\n amountWei?: string;\n };\n price?: DeltaOrMarketPrice;\n priceMode: \"market\" | \"delta\";\n priceError: Error | null;\n isPriceLoading?: boolean;\n};\n\nconst useTokenToAmountProps = (): TokenInputAmountProps => {\n const logger = useLogger(\"Swap::TokenTo::AmountProps\");\n const tokenTo = useSwapTokenTo();\n\n const [amountValue, setAmountValue] = useAtom(receiveInputAmountAtom);\n\n const tokenBalanceUnit = useTokenToBalanceUnit();\n\n return {\n amount: amountValue,\n tokenBalanceUnit,\n token: tokenTo,\n onAmountChange: (values) => {\n logger.log(\"onAmountChange::values\", values);\n setAmountValue(values.value);\n },\n };\n};\n\nconst useTokenToBalanceUnit = () => {\n const tokenTo = useSwapTokenTo();\n\n const { balanceUnit } = useTokenBalance({\n token: tokenTo,\n queryOptions: { refetchInterval: MEDIUM_STALE_TIME_FOR_REACTIVENESS },\n });\n\n return toDecimalTrimmed(balanceUnit);\n};\n\nconst useTokenToUsdEstimation = ({\n price,\n amount,\n}: Pick<UseTokenToInputInput, \"price\"> & {\n amount: string;\n}) => {\n const tokenTo = useSwapTokenTo();\n const { data: tokenPriceObj } = useTokenPrice(tokenTo);\n\n let usdEstimation;\n if (price && isDeltaPrice(price)) {\n usdEstimation = price.route.destination.output.amountUSD;\n } else if (price && !isDeltaPrice(price) && price.destUSD) {\n usdEstimation = price.destUSD;\n } else if (tokenPriceObj && amount !== \"\") {\n usdEstimation = Big(tokenPriceObj.price).mul(amount).toFixed();\n }\n return usdEstimation;\n};\n\nconst useYouGetProps = ({\n priceMode,\n price,\n token,\n}: {\n priceMode: \"market\" | \"delta\";\n price?: DeltaOrMarketPrice;\n token?: Token;\n}): YouGetProps | undefined => {\n const side = useSwapSide();\n\n if (!price || !token) return;\n\n return constructYouGetProps({ side, price, priceMode, token });\n};\n\nconst useExtraProps = ({\n isPriceLoading,\n acrossMode,\n}: {\n isPriceLoading?: boolean;\n acrossMode: BridgeRoutesMode;\n}): TokenInputExtraProps => {\n const appChainId = useChainId();\n const [chainTo, setChainTo] = useAtom(swapChainToAtom);\n\n const { selectableChains } = useSelectableDestChains({\n fromChainId: appChainId,\n mode: acrossMode,\n });\n\n const showNetworkSwitcher = chainTo !== undefined;\n\n const networkSwitcherProps = showNetworkSwitcher\n ? {\n networks: selectableChains,\n selectedNetwork: chainTo,\n allOption: false,\n onSelect: (chainId: SupportedChainId | \"all\") =>\n chainId !== \"all\" && setChainTo(chainId),\n disabled: selectableChains.length <= 1,\n }\n : undefined;\n\n const setCurrentInput = useSetAtom(currentSwapInputAtom);\n\n const side = useSwapSide();\n const isSell = side === \"SELL\";\n\n // SELLing and price is loading = tokenTo input will receive destAmount\n const isLoading = isPriceLoading && isSell;\n\n const isCrosschain = useIsCrossChain();\n\n const showFetchingQuotes = isCrosschain && isPriceLoading;\n\n return {\n networkSwitcherProps,\n tokenType: \"to\" as const,\n onFocus: () => setCurrentInput(\"to\"),\n label: (\n <>\n <span>Receive</span>{\" \"}\n {showNetworkSwitcher && <span className=\"text-contrast-5\">on</span>}\n </>\n ),\n isLoading,\n disabled: selectableChains.length === 0,\n bottomElement: showFetchingQuotes ? <FetchingQuotes /> : undefined,\n };\n};\n\nexport const useTokenToInputProps = ({\n override,\n isPriceLoading,\n priceMode,\n price,\n priceError,\n}: UseTokenToInputInput): TokenInputProps => {\n const tokenToAmounts = useTokenToAmountProps();\n const token = tokenToAmounts.token;\n const extraProps = useExtraProps({ isPriceLoading, acrossMode: \"swap\" });\n const youGetProps = useYouGetProps({ priceMode, price, token });\n const warningMessage = useWarningMessage({\n priceMode,\n priceError,\n mode: \"swap\",\n tradeMode: \"swap\",\n });\n\n const amount =\n override?.amountWei && token\n ? formatUnits(BigInt(override.amountWei), token.decimals)\n : tokenToAmounts.amount;\n\n const usdEstimation = useTokenToUsdEstimation({ price, amount });\n\n const setTokenTo = useSetAtom(selectSwapTokenToAtom);\n const onTokenSelect = (newTokenTo: Token) => {\n setTokenTo(newTokenTo);\n };\n\n return {\n ...tokenToAmounts,\n amount,\n usdEstimation,\n ...extraProps,\n youGetProps,\n warningMessage,\n onTokenSelect,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"useTokenToInputProps.js","names":["TokenInputProps","useSwapTokenTo","swapChainToAtom","useAtom","useSetAtom","useSelectableDestChains","useChainId","receiveInputAmountAtom","Token","formatUnits","useSwapSide","currentSwapInputAtom","useIsCrossChain","DeltaOrMarketPrice","TokenInputAmountProps","TokenInputExtraProps","useTokenBalance","toDecimalTrimmed","useLogger","MEDIUM_STALE_TIME_FOR_REACTIVENESS","selectSwapTokenToAtom","isDeltaPrice","SupportedChainId","BridgeRoutesMode","FetchingQuotes","useTokenPrice","Big","YouGetProps","constructYouGetProps","useWarningMessage","UseTokenToInputInput","override","amountWei","price","priceMode","priceError","Error","isPriceLoading","useTokenToAmountProps","$","_c","logger","tokenTo","amountValue","setAmountValue","tokenBalanceUnit","useTokenToBalanceUnit","t0","values","log","value","t1","amount","token","onAmountChange","Symbol","for","refetchInterval","queryOptions","balanceUnit","t2","useTokenToUsdEstimation","data","tokenPriceObj","usdEstimation","route","destination","output","amountUSD","destUSD","mul","toFixed","useYouGetProps","side","useExtraProps","acrossMode","appChainId","chainTo","setChainTo","fromChainId","mode","selectableChains","showNetworkSwitcher","undefined","networks","selectedNetwork","allOption","onSelect","chainId","disabled","length","networkSwitcherProps","setCurrentInput","isSell","isLoading","isCrosschain","showFetchingQuotes","t3","t4","t5","t6","t7","t8","t9","tokenType","const","onFocus","label","bottomElement","useTokenToInputProps","tokenToAmounts","extraProps","youGetProps","tradeMode","warningMessage","BigInt","decimals","setTokenTo","newTokenTo","onTokenSelect"],"sources":["../../../../src/core/inputs/hooks/useTokenToInputProps.tsx"],"sourcesContent":["import type { TokenInputProps } from \"@/components/widget/TokenInput/types\";\n\nimport { useSwapTokenTo } from \"../state/selectedTokenAtom\";\n\nimport { swapChainToAtom } from \"@/core/state/chainToAtom\";\nimport { useAtom, useSetAtom } from \"@/core/store\";\n\nimport { useSelectableDestChains } from \"@/hooks/useSelectableDestChains\";\nimport { useChainId } from \"wagmi\";\nimport { receiveInputAmountAtom } from \"../state/inputAmountAtom\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { formatUnits } from \"viem\";\nimport { useSwapSide } from \"@/components/widget/SwapModeSwitcher/state/swapSideAtom\";\nimport { currentSwapInputAtom } from \"@/core/state/currentSwapInputAtom\";\nimport { useIsCrossChain } from \"@/core/state/isCrosschainAtom\";\nimport type { DeltaOrMarketPrice } from \"@/hooks/swap/prices/types\";\nimport type { TokenInputAmountProps, TokenInputExtraProps } from \"./types\";\nimport { useTokenBalance } from \"@/hooks/tokens/balances/useTokenBalance\";\nimport { toDecimalTrimmed } from \"@/lib/utils/toDecimal\";\nimport { useLogger } from \"@/core/logger\";\nimport { MEDIUM_STALE_TIME_FOR_REACTIVENESS } from \"@/lib/constants/time\";\nimport { selectSwapTokenToAtom } from \"../state/selectedTokenActionsAtom\";\nimport { isDeltaPrice } from \"@/hooks/swap/prices/delta/queries/useDeltaPriceQuery\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { BridgeRoutesMode } from \"@/hooks/swap/prices/delta/queries/bridgeInfo/types\";\nimport { FetchingQuotes } from \"@/components/widget/FetchingQuotes/FetchingQuotes\";\nimport { useTokenPrice } from \"@/hooks/tokens/prices/useTokenPrices\";\nimport Big from \"big.js\";\nimport type { YouGetProps } from \"@/components/widget/YouGet/types\";\nimport { constructYouGetProps } from \"./utils\";\nimport { useWarningMessage } from \"./useWarningMessage\";\n\ntype UseTokenToInputInput = {\n override?: {\n amountWei?: string;\n };\n price?: DeltaOrMarketPrice;\n priceMode: \"market\" | \"delta\";\n priceError: Error | null;\n isPriceLoading?: boolean;\n};\n\nconst useTokenToAmountProps = (): TokenInputAmountProps => {\n const logger = useLogger(\"Swap::TokenTo::AmountProps\");\n const tokenTo = useSwapTokenTo();\n\n const [amountValue, setAmountValue] = useAtom(receiveInputAmountAtom);\n\n const tokenBalanceUnit = useTokenToBalanceUnit();\n\n return {\n amount: amountValue,\n tokenBalanceUnit,\n token: tokenTo,\n onAmountChange: (values) => {\n logger.log(\"onAmountChange::values\", values);\n setAmountValue(values.value);\n },\n };\n};\n\nconst useTokenToBalanceUnit = () => {\n const tokenTo = useSwapTokenTo();\n\n const { balanceUnit } = useTokenBalance({\n token: tokenTo,\n queryOptions: { refetchInterval: MEDIUM_STALE_TIME_FOR_REACTIVENESS },\n });\n\n return toDecimalTrimmed(balanceUnit);\n};\n\nconst useTokenToUsdEstimation = ({\n price,\n amount,\n}: Pick<UseTokenToInputInput, \"price\"> & {\n amount: string;\n}) => {\n const tokenTo = useSwapTokenTo();\n const { data: tokenPriceObj } = useTokenPrice(tokenTo);\n\n let usdEstimation;\n if (price && isDeltaPrice(price)) {\n usdEstimation = price.route.destination.output.amountUSD;\n } else if (price && !isDeltaPrice(price) && price.destUSD) {\n usdEstimation = price.destUSD;\n } else if (tokenPriceObj && amount !== \"\") {\n usdEstimation = Big(tokenPriceObj.price).mul(amount).toFixed();\n }\n return usdEstimation;\n};\n\nconst useYouGetProps = ({\n priceMode,\n price,\n token,\n}: {\n priceMode: \"market\" | \"delta\";\n price?: DeltaOrMarketPrice;\n token?: Token;\n}): YouGetProps | undefined => {\n const side = useSwapSide();\n\n if (!price || !token) return;\n\n return constructYouGetProps({ side, price, priceMode, token });\n};\n\nconst useExtraProps = ({\n isPriceLoading,\n acrossMode,\n}: {\n isPriceLoading?: boolean;\n acrossMode: BridgeRoutesMode;\n}): TokenInputExtraProps => {\n const appChainId = useChainId();\n const [chainTo, setChainTo] = useAtom(swapChainToAtom);\n\n const { selectableChains } = useSelectableDestChains({\n fromChainId: appChainId,\n mode: acrossMode,\n });\n\n const showNetworkSwitcher = chainTo !== undefined;\n\n const networkSwitcherProps = showNetworkSwitcher\n ? {\n networks: selectableChains,\n selectedNetwork: chainTo,\n allOption: false,\n onSelect: (chainId: SupportedChainId | \"all\") =>\n chainId !== \"all\" && setChainTo(chainId),\n disabled: selectableChains.length <= 1,\n }\n : undefined;\n\n const setCurrentInput = useSetAtom(currentSwapInputAtom);\n\n const side = useSwapSide();\n const isSell = side === \"SELL\";\n\n // SELLing and price is loading = tokenTo input will receive destAmount\n const isLoading = isPriceLoading && isSell;\n\n const isCrosschain = useIsCrossChain();\n\n const showFetchingQuotes = isCrosschain && isPriceLoading;\n\n return {\n networkSwitcherProps,\n tokenType: \"to\" as const,\n onFocus: () => setCurrentInput(\"to\"),\n label: (\n <>\n <span>Receive</span>{\" \"}\n {showNetworkSwitcher && <span className=\"text-contrast-5\">on</span>}\n </>\n ),\n isLoading,\n disabled: selectableChains.length === 0,\n bottomElement: showFetchingQuotes ? <FetchingQuotes /> : undefined,\n };\n};\n\nexport const useTokenToInputProps = ({\n override,\n isPriceLoading,\n priceMode,\n price,\n priceError,\n}: UseTokenToInputInput): TokenInputProps => {\n const tokenToAmounts = useTokenToAmountProps();\n const token = tokenToAmounts.token;\n const extraProps = useExtraProps({ isPriceLoading, acrossMode: \"swap\" });\n const youGetProps = useYouGetProps({ priceMode, price, token });\n const warningMessage = useWarningMessage({\n priceMode,\n priceError,\n mode: \"swap\",\n tradeMode: \"swap\",\n });\n\n const amount =\n override?.amountWei && token\n ? formatUnits(BigInt(override.amountWei), token.decimals)\n : tokenToAmounts.amount;\n\n const usdEstimation = useTokenToUsdEstimation({ price, amount });\n\n const setTokenTo = useSetAtom(selectSwapTokenToAtom);\n const onTokenSelect = (newTokenTo: Token) => {\n setTokenTo(newTokenTo);\n };\n\n return {\n ...tokenToAmounts,\n amount,\n usdEstimation,\n ...extraProps,\n youGetProps,\n warningMessage,\n onTokenSelect,\n };\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../../../src/core/inputs/state/guards.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAG1D,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAM7I"}
1
+ {"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../../../src/core/inputs/state/guards.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAG1D,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,EACpD,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,QAOjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"guards.js","names":["Getter","Setter","WritableAtom","GuardAgainstLoneDecimalPoint","this","newValue","_get","set"],"sources":["../../../../src/core/inputs/state/guards.ts"],"sourcesContent":["import type { Getter, Setter, WritableAtom } from \"jotai\";\n\n// override `.` in input to `0.` to prevent lone decimal point which can cause issues with parsing and formatting\nexport function GuardAgainstLoneDecimalPoint(this: WritableAtom<string, [newValue: string], void>, _get: Getter, set: Setter, newValue: string) {\n if (newValue === \".\") {\n set(this, \"0.\");\n return;\n }\n set(this, newValue);\n};\n"],"mappings":";AAGA,SAAgBG,EAAmFG,GAAcC,GAAaF,GAAkB;CAC9I,IAAIA,MAAa,KAAK;EACpBE,EAAI,MAAM,KAAK;EACf;;CAEFA,EAAI,MAAMF,EAAS"}
1
+ {"version":3,"file":"guards.js","names":["Getter","Setter","WritableAtom","GuardAgainstLoneDecimalPoint","this","newValue","_get","set"],"sources":["../../../../src/core/inputs/state/guards.ts"],"sourcesContent":["import type { Getter, Setter, WritableAtom } from \"jotai\";\n\n// override `.` in input to `0.` to prevent lone decimal point which can cause issues with parsing and formatting\nexport function GuardAgainstLoneDecimalPoint(\n this: WritableAtom<string, [newValue: string], void>,\n _get: Getter,\n set: Setter,\n newValue: string\n) {\n if (newValue === \".\") {\n set(this, \"0.\");\n return;\n }\n set(this, newValue);\n}\n"],"mappings":";AAGA,SAAgBG,EAEdG,GACAC,GACAF,GACA;CACA,IAAIA,MAAa,KAAK;EACpBE,EAAI,MAAM,KAAK;EACf;;CAEFA,EAAI,MAAMF,EAAS"}
@@ -1 +1 @@
1
- {"version":3,"file":"setTokenByAddressAtom.js","names":["atom","Setter","useAtom","useSetAtom","atomEffect","Effect","isAddress","Address","isETHaddress","nativeTokensByChainId","fromListsAtom","autoImportedTokensAtom","importedTokensAtom","Token","useLayoutEffect","isSupportedChainId","areTokensSame","SupportedChainId","pickDefaultTokenPair","tradeModeAtom","userTradeModeAtom","sideToInputType","tradeModeToCurrentInputAtom","tradeModeToPayAmountUnitAtom","tradeModeToReceiveAmountUnitAtom","tradeModeToSetTokenAtoms","tradeModeToSideAtom","tradeModeToTimeUnitAtom","tradeModeToTokenAtoms","wrappedNativeCurrency","autoAddImportedTokenAtom","getLogger","assert","bridgeInfosLoadedAtom","isTradeMode","tradeModesWithCrosschain","tradeModesWithSide","availableTradeModesAtom","enabledTradeModesFromConfigAtom","FormInputProps","SwapSideUnion","getClosestTimeUnit","formInputPropsAtom","RelaxedFormInputProps","NonNullable","K","logger","GetterWithPeek","Parameters","FindTokenAtomsInput","tokenToFind","address","network","get","set","findTokenInAtoms","tokenFromAddress","chainId","nativeToken","tokenFromLowercase","toLowerCase","tokensMap","listByChainId","addressMap","tokenFromLists","importedTokens","peek","importedToken","find","token","autoImportedTokens","autoImportedToken","info","isValidSide","side","formInputPropsEffectAtom","availableTradeModes","formInputProps","sendAmount","undefined","String","receiveAmount","srcChainId","Number","log","destChainId","currentTradeMode","tokenToAddress","selectedForm","includes","warn","formAtoms","currentTokenFrom","tokenFromAtom","currentTokenTo","tokenToAtom","newTokenFrom","newTokenTo","defaultChainId","has","wethMapping","Record","getTokenToFind","tokenFromProps","currentToken","defaultTokenFrom","defaultTokenTo","selectTokenFromAtom","selectTokenToAtom","currentSideAtom","currentInputAtom","isTradeModeWithSide","isTradeModeWithoutSide","isSell","isBuy","isValidSendAmount","isValidReceiveAmount","formPayAmountAtom","currentSendAmount","read","write","formReceiveAmountAtom","currentReceiveAmount","orderDeadline","isNaN","timeUnitAtom","currentTimeUnit","timestamp","useActivateFormInputEffects","useSetFormInputFromProps","t0","$","_c","t1","setFormInputProps","t2","t3"],"sources":["../../../../src/core/inputs/state/setTokenByAddressAtom.ts"],"sourcesContent":["import { atom, type Setter } from \"jotai\";\nimport { useAtom, useSetAtom } from \"@/core/store\";\nimport { atomEffect, type Effect } from \"jotai-effect\";\nimport { isAddress, type Address } from \"viem\";\nimport { isETHaddress } from \"@/tokens/utils/eth\";\nimport { nativeTokensByChainId } from \"@/tokens/constructor\";\nimport { fromListsAtom } from \"@/tokens/state/fromListsAtom\";\nimport {\n autoImportedTokensAtom,\n importedTokensAtom,\n} from \"@/tokens/state/importedTokensAtom\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useLayoutEffect } from \"react\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\nimport { areTokensSame } from \"@/tokens/utils/areTokensSame\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { pickDefaultTokenPair } from \"@/tokens/defaultTokens\";\nimport { tradeModeAtom, userTradeModeAtom } from \"@/core/state/tradeModeAtom\";\nimport {\n sideToInputType,\n tradeModeToCurrentInputAtom,\n tradeModeToPayAmountUnitAtom,\n tradeModeToReceiveAmountUnitAtom,\n tradeModeToSetTokenAtoms,\n tradeModeToSideAtom,\n tradeModeToTimeUnitAtom,\n tradeModeToTokenAtoms,\n} from \"./common\";\nimport { wrappedNativeCurrency } from \"@/lib/constants/weth\";\nimport { autoAddImportedTokenAtom } from \"@/tokens/state/addImportedTokenAtom\";\nimport { getLogger } from \"@/core/logger\";\nimport { assert } from \"ts-essentials\";\nimport { bridgeInfosLoadedAtom } from \"@/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom\";\nimport {\n isTradeMode,\n tradeModesWithCrosschain,\n tradeModesWithSide,\n} from \"@/lib/tradeMode\";\nimport {\n availableTradeModesAtom,\n enabledTradeModesFromConfigAtom,\n} from \"@/core/state/enabledTradeModesAtom\";\nimport type { FormInputProps } from \"./types\";\nimport type { SwapSideUnion } from \"@velora-dex/sdk\";\nimport { getClosestTimeUnit } from \"@/core/limit/state/utils\";\n\nexport const formInputPropsAtom = atom<FormInputProps>({});\n\n// in case formInputPros passed to Widget are not exactly expected types\ntype RelaxedFormInputProps = {\n [K in keyof FormInputProps]?: NonNullable<FormInputProps[K]> extends string\n ? string\n : NonNullable<FormInputProps[K]> extends number\n ? number\n : FormInputProps[K];\n};\n\nconst logger = getLogger(\"FormInputProps\");\n\ntype GetterWithPeek = Parameters<Effect>[0];\n\ntype FindTokenAtomsInput = {\n tokenToFind: { address: Address; network: SupportedChainId };\n get: GetterWithPeek;\n set: Setter;\n};\n\nfunction findTokenInAtoms({\n get,\n set,\n tokenToFind,\n}: FindTokenAtomsInput): Token | undefined {\n const tokenFromAddress = tokenToFind.address;\n const chainId = tokenToFind.network;\n\n if (isETHaddress(tokenFromAddress)) {\n // if tokenFrom is ETH, set the native token for tokenFrom Input\n const nativeToken = nativeTokensByChainId[chainId];\n return nativeToken;\n }\n\n const tokenFromLowercase = tokenFromAddress.toLowerCase();\n\n // find the token from the token Lists for the srcChainId,\n // and retry to find the token when allTokens are updated (token lists loaded)\n const tokensMap = get(fromListsAtom).listByChainId[chainId]?.addressMap;\n const tokenFromLists = tokensMap?.[tokenFromLowercase];\n if (tokenFromLists) {\n return tokenFromLists;\n }\n\n // find the token from the imported tokens,\n // don't retry if user imports more tokens during the session\n const importedTokens = get.peek(importedTokensAtom);\n const importedToken = importedTokens[chainId]?.find(\n (token) => token.address.toLowerCase() === tokenFromLowercase\n );\n if (importedToken) {\n return importedToken;\n }\n\n // subscribe to auto-imported tokens, which will be added to only when tokenAddress prop is supplied from outside the widget\n const autoImportedTokens = get(autoImportedTokensAtom);\n // looking through auto-imported tokens isn't strictly necessary because importedTokens atom is updated together with autoImportedTokens atom,\n // except for consistency, and so that we don't have to subscribe to importedTokens atom that would retrigger formProps matching on manual token import\n const autoImportedToken = autoImportedTokens.find(\n (token) =>\n token.address.toLowerCase() === tokenFromLowercase &&\n token.network === chainId\n );\n if (autoImportedToken) {\n return autoImportedToken;\n }\n\n logger.info(\n \"token not available in widget. Will attempt to import from chain\",\n {\n address: tokenFromAddress,\n chainId,\n }\n );\n\n // trigger Token fetch and eventual import when tokenFromAddress is not found in available token lists and atoms\n set(autoAddImportedTokenAtom, { address: tokenFromAddress, chainId });\n}\n\nfunction isValidSide(side: string | undefined): side is SwapSideUnion {\n return side === \"BUY\" || side === \"SELL\";\n}\n\nconst formInputPropsEffectAtom = atomEffect((get, set) => {\n // subscribe to bridgeInfosLoadedAtom to have up-to-date available crosses\n // and retry token finding each time when bridgeInfo changes\n get(bridgeInfosLoadedAtom);\n\n // subscribe to enabledTradeModesFromConfigAtom to react to changes in enabled trade modes\n get(enabledTradeModesFromConfigAtom);\n // and use availableTradeModesAtom as final source of truth (it derrives from enabledTradeModesFromConfigAtom)\n const availableTradeModes = get.peek(availableTradeModesAtom);\n\n const formInputProps: RelaxedFormInputProps = get(formInputPropsAtom);\n const { tokenFromAddress } = formInputProps;\n\n // guard against amounts passed as numbers when props are supplied from outside the Widget and types are ignored\n const sendAmount =\n formInputProps.sendAmount !== undefined\n ? String(formInputProps.sendAmount)\n : undefined;\n const receiveAmount =\n formInputProps.receiveAmount !== undefined\n ? String(formInputProps.receiveAmount)\n : undefined;\n\n // guard against chainId passed as string when props are supplied from outside the Widget and types are ignored\n const srcChainId =\n formInputProps.srcChainId !== undefined\n ? Number(formInputProps.srcChainId)\n : undefined;\n\n logger.log(\"using external props to set Widget form input\", formInputProps);\n\n let destChainId =\n formInputProps.destChainId !== undefined\n ? Number(formInputProps.destChainId)\n : undefined;\n\n const currentTradeMode = get.peek(tradeModeAtom);\n\n let tokenToAddress = formInputProps.tokenToAddress;\n let selectedForm = formInputProps.selectedForm || currentTradeMode;\n if (\n !isTradeMode(selectedForm) ||\n !availableTradeModes.includes(selectedForm)\n ) {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid, disabled or unavailable selectedForm provided\", {\n selectedForm,\n });\n // fallback to first available trade mode\n selectedForm = availableTradeModes[0];\n }\n\n // necessary for type safety\n assert(isTradeMode(selectedForm), \"selectedForm must be a valid trade mode\");\n\n const formAtoms = tradeModeToTokenAtoms[selectedForm];\n const currentTokenFrom = get.peek(formAtoms.tokenFromAtom);\n const currentTokenTo = get.peek(formAtoms.tokenToAtom);\n\n if (currentTradeMode !== selectedForm) {\n set(userTradeModeAtom, selectedForm);\n }\n\n let newTokenFrom: Token | undefined;\n let newTokenTo: Token | undefined;\n\n // if chain isn't given in props, match current srcChainId\n const defaultChainId = currentTokenFrom.network;\n\n if (!tradeModesWithCrosschain.has(selectedForm)) {\n // force destChainId = srcChainId for trade modes that don't support crosschain\n destChainId = srcChainId;\n }\n\n if (\n selectedForm === \"otc\" &&\n tokenToAddress &&\n isETHaddress(tokenToAddress)\n ) {\n const wethMapping: Record<number, Address> = wrappedNativeCurrency;\n // OTC Orders don't support ETH as tokenTo=takerAsset,\n // more logical to use WETH instead of no token at all\n tokenToAddress = wethMapping[destChainId || defaultChainId];\n }\n\n {\n // match tokenFromAddress and srcChainId to a new tokenFrom to select\n const tokenToFind = getTokenToFind({\n tokenFromProps: { address: tokenFromAddress, network: srcChainId },\n currentToken: currentTokenFrom,\n defaultChainId,\n });\n if (tokenToFind) {\n newTokenFrom = findTokenInAtoms({\n get,\n tokenToFind,\n set,\n });\n }\n }\n\n {\n // match tokenToAddress and destChainId to a new tokenTo to select\n const tokenToFind = getTokenToFind({\n tokenFromProps: { address: tokenToAddress, network: destChainId },\n currentToken: currentTokenTo,\n defaultChainId,\n });\n if (tokenToFind) {\n newTokenTo = findTokenInAtoms({\n get,\n tokenToFind,\n set,\n });\n }\n }\n\n if (newTokenFrom && newTokenTo && areTokensSame(newTokenFrom, newTokenTo)) {\n // if tokens are the same, skip tokenTo\n newTokenTo = undefined;\n }\n\n if (\n !newTokenFrom &&\n !tokenFromAddress &&\n srcChainId &&\n isSupportedChainId(srcChainId) &&\n srcChainId !== currentTokenFrom.network\n ) {\n // no tokenAddress given, but chainId is provided and different from current\n const [defaultTokenFrom] = pickDefaultTokenPair(srcChainId, selectedForm);\n // set default token for the chain\n newTokenFrom = defaultTokenFrom;\n }\n\n if (\n !newTokenTo &&\n !tokenToAddress &&\n destChainId &&\n isSupportedChainId(destChainId) &&\n destChainId !== currentTokenTo?.network\n ) {\n // no tokenAddress given, but chainId is provided and different from current\n const [, defaultTokenTo] = pickDefaultTokenPair(destChainId, selectedForm);\n // set default token for the chain\n newTokenTo = defaultTokenTo;\n }\n\n if (newTokenFrom) {\n const selectTokenFromAtom =\n tradeModeToSetTokenAtoms[selectedForm].tokenFromAtom;\n set(selectTokenFromAtom, newTokenFrom);\n }\n if (newTokenTo) {\n const selectTokenToAtom =\n tradeModeToSetTokenAtoms[selectedForm].tokenToAtom;\n set(selectTokenToAtom, newTokenTo);\n }\n\n const currentSideAtom = tradeModeToSideAtom[selectedForm];\n const currentInputAtom = tradeModeToCurrentInputAtom[selectedForm];\n\n let side = formInputProps.side;\n\n if (tradeModesWithSide.has(selectedForm)) {\n if (isValidSide(side)) {\n set(currentInputAtom, sideToInputType[side]);\n } else {\n if (side) {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid side provided, must be BUY or SELL\", { side });\n }\n\n if (sendAmount && !receiveAmount) {\n side = \"SELL\"; // sendAmount is given and receiveAmount isn't -> SELL\n } else if (receiveAmount && !sendAmount) {\n side = \"BUY\"; // receiveAmount is given and sendAmount isn't -> BUY\n } else {\n // fallback to current side if both or none amounts are given\n side = get.peek(currentSideAtom);\n }\n }\n } else {\n side = get.peek(currentSideAtom);\n }\n\n // necessary for type safety\n assert(isValidSide(side), \"side must be BUY or SELL\");\n\n const isTradeModeWithSide = tradeModesWithSide.has(selectedForm);\n const isTradeModeWithoutSide = !isTradeModeWithSide;\n\n const isSell =\n isTradeModeWithoutSide || (isTradeModeWithSide && side === \"SELL\");\n const isBuy =\n isTradeModeWithoutSide || (isTradeModeWithSide && side === \"BUY\");\n\n const isValidSendAmount = sendAmount && Number(sendAmount) >= 0;\n const isValidReceiveAmount = receiveAmount && Number(receiveAmount) >= 0;\n\n // given a valid sendAmount\n // and the form with side=sell or without side\n if (isValidSendAmount && isSell) {\n // update the send amount\n const formPayAmountAtom = tradeModeToPayAmountUnitAtom[selectedForm];\n const currentSendAmount = get.peek(formPayAmountAtom.read);\n if (currentSendAmount !== sendAmount) {\n set(formPayAmountAtom.write, sendAmount);\n }\n }\n\n // given a valid receiveAmount\n // and the form with side=buy or without side\n if (isValidReceiveAmount && isBuy) {\n // update the receive amount\n const formReceiveAmountAtom =\n tradeModeToReceiveAmountUnitAtom[selectedForm];\n const currentReceiveAmount = get.peek(formReceiveAmountAtom.read);\n if (currentReceiveAmount !== receiveAmount) {\n set(formReceiveAmountAtom.write, receiveAmount);\n }\n }\n\n if (selectedForm === \"limit\" || selectedForm === \"otc\") {\n // OTC and Limit forms support order deadline param\n const orderDeadline = Number(formInputProps.orderDeadline);\n if (orderDeadline !== undefined && !isNaN(orderDeadline)) {\n const timeUnitAtom = tradeModeToTimeUnitAtom[selectedForm];\n const currentTimeUnit = get.peek(timeUnitAtom);\n\n if (currentTimeUnit.timestamp !== orderDeadline) {\n set(timeUnitAtom, {\n // set closest time unit for better UX\n ...getClosestTimeUnit(orderDeadline),\n // set exact timestamp\n timestamp: orderDeadline,\n });\n }\n }\n }\n});\n\nfunction getTokenToFind({\n tokenFromProps,\n currentToken,\n defaultChainId,\n}: {\n tokenFromProps: { address?: string; network?: number };\n currentToken?: Token;\n defaultChainId: SupportedChainId;\n}): { address: Address; network: SupportedChainId } | undefined {\n if (!tokenFromProps.address) return;\n // guard against malformed addresses passed through props\n if (!isAddress(tokenFromProps.address)) {\n logger.warn(\"malformed token address provided\", {\n address: tokenFromProps.address,\n });\n return;\n }\n\n const network = tokenFromProps.network || defaultChainId;\n\n // unsupported chainId provided, can't select this Token\n if (!isSupportedChainId(network)) {\n logger.warn(\"unsupported chainId provided\", { network });\n return;\n }\n\n if (\n currentToken &&\n areTokensSame(currentToken, {\n address: tokenFromProps.address,\n network,\n })\n ) {\n // same token already there\n return;\n }\n\n return { address: tokenFromProps.address, network };\n}\n\nexport function useActivateFormInputEffects() {\n useAtom(formInputPropsEffectAtom);\n}\n\nexport function useSetFormInputFromProps({\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n receiveAmount,\n side,\n orderDeadline,\n}: FormInputProps = {}) {\n const setFormInputProps = useSetAtom(formInputPropsAtom);\n\n // match props together as they are supplied together from outside the Widget,\n // on any one prop change, the whole form input props are updated as long as they are passed together to the Widget\n useLayoutEffect(() => {\n setFormInputProps({\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n receiveAmount,\n side,\n orderDeadline,\n });\n }, [\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n setFormInputProps,\n receiveAmount,\n side,\n orderDeadline,\n ]);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"setTokenByAddressAtom.js","names":["atom","Setter","useAtom","useSetAtom","atomEffect","Effect","isAddress","Address","isETHaddress","nativeTokensByChainId","fromListsAtom","autoImportedTokensAtom","importedTokensAtom","Token","useLayoutEffect","isSupportedChainId","areTokensSame","SupportedChainId","pickDefaultTokenPair","tradeModeAtom","userTradeModeAtom","sideToInputType","tradeModeToCurrentInputAtom","tradeModeToPayAmountUnitAtom","tradeModeToReceiveAmountUnitAtom","tradeModeToSetTokenAtoms","tradeModeToSideAtom","tradeModeToTimeUnitAtom","tradeModeToTokenAtoms","wrappedNativeCurrency","autoAddImportedTokenAtom","getLogger","assert","bridgeInfosLoadedAtom","isTradeMode","tradeModesWithCrosschain","tradeModesWithSide","availableTradeModesAtom","enabledTradeModesFromConfigAtom","FormInputProps","SwapSideUnion","getClosestTimeUnit","formInputPropsAtom","RelaxedFormInputProps","NonNullable","K","logger","GetterWithPeek","Parameters","FindTokenAtomsInput","tokenToFind","address","network","get","set","findTokenInAtoms","tokenFromAddress","chainId","nativeToken","tokenFromLowercase","toLowerCase","tokensMap","listByChainId","addressMap","tokenFromLists","importedTokens","peek","importedToken","find","token","autoImportedTokens","autoImportedToken","info","isValidSide","side","formInputPropsEffectAtom","availableTradeModes","formInputProps","sendAmount","undefined","String","receiveAmount","srcChainId","Number","log","destChainId","currentTradeMode","tokenToAddress","selectedForm","includes","warn","formAtoms","currentTokenFrom","tokenFromAtom","currentTokenTo","tokenToAtom","newTokenFrom","newTokenTo","defaultChainId","has","wethMapping","Record","getTokenToFind","tokenFromProps","currentToken","defaultTokenFrom","defaultTokenTo","selectTokenFromAtom","selectTokenToAtom","currentSideAtom","currentInputAtom","isTradeModeWithSide","isTradeModeWithoutSide","isSell","isBuy","isValidSendAmount","isValidReceiveAmount","formPayAmountAtom","currentSendAmount","read","write","formReceiveAmountAtom","currentReceiveAmount","orderDeadline","isNaN","timeUnitAtom","currentTimeUnit","timestamp","useActivateFormInputEffects","useSetFormInputFromProps","t0","$","_c","t1","setFormInputProps","t2","t3"],"sources":["../../../../src/core/inputs/state/setTokenByAddressAtom.ts"],"sourcesContent":["import { atom, type Setter } from \"jotai\";\nimport { useAtom, useSetAtom } from \"@/core/store\";\nimport { atomEffect, type Effect } from \"jotai-effect\";\nimport { isAddress, type Address } from \"viem\";\nimport { isETHaddress } from \"@/tokens/utils/eth\";\nimport { nativeTokensByChainId } from \"@/tokens/constructor\";\nimport { fromListsAtom } from \"@/tokens/state/fromListsAtom\";\nimport {\n autoImportedTokensAtom,\n importedTokensAtom,\n} from \"@/tokens/state/importedTokensAtom\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useLayoutEffect } from \"react\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\nimport { areTokensSame } from \"@/tokens/utils/areTokensSame\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { pickDefaultTokenPair } from \"@/tokens/defaultTokens\";\nimport { tradeModeAtom, userTradeModeAtom } from \"@/core/state/tradeModeAtom\";\nimport {\n sideToInputType,\n tradeModeToCurrentInputAtom,\n tradeModeToPayAmountUnitAtom,\n tradeModeToReceiveAmountUnitAtom,\n tradeModeToSetTokenAtoms,\n tradeModeToSideAtom,\n tradeModeToTimeUnitAtom,\n tradeModeToTokenAtoms,\n} from \"./common\";\nimport { wrappedNativeCurrency } from \"@/lib/constants/weth\";\nimport { autoAddImportedTokenAtom } from \"@/tokens/state/addImportedTokenAtom\";\nimport { getLogger } from \"@/core/logger\";\nimport { assert } from \"ts-essentials\";\nimport { bridgeInfosLoadedAtom } from \"@/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom\";\nimport {\n isTradeMode,\n tradeModesWithCrosschain,\n tradeModesWithSide,\n} from \"@/lib/tradeMode\";\nimport {\n availableTradeModesAtom,\n enabledTradeModesFromConfigAtom,\n} from \"@/core/state/enabledTradeModesAtom\";\nimport type { FormInputProps } from \"./types\";\nimport type { SwapSideUnion } from \"@velora-dex/sdk\";\nimport { getClosestTimeUnit } from \"@/core/limit/state/utils\";\n\nexport const formInputPropsAtom = atom<FormInputProps>({});\n\n// in case formInputPros passed to Widget are not exactly expected types\ntype RelaxedFormInputProps = {\n [K in keyof FormInputProps]?: NonNullable<FormInputProps[K]> extends string\n ? string\n : NonNullable<FormInputProps[K]> extends number\n ? number\n : FormInputProps[K];\n};\n\nconst logger = getLogger(\"FormInputProps\");\n\ntype GetterWithPeek = Parameters<Effect>[0];\n\ntype FindTokenAtomsInput = {\n tokenToFind: { address: Address; network: SupportedChainId };\n get: GetterWithPeek;\n set: Setter;\n};\n\nfunction findTokenInAtoms({\n get,\n set,\n tokenToFind,\n}: FindTokenAtomsInput): Token | undefined {\n const tokenFromAddress = tokenToFind.address;\n const chainId = tokenToFind.network;\n\n if (isETHaddress(tokenFromAddress)) {\n // if tokenFrom is ETH, set the native token for tokenFrom Input\n const nativeToken = nativeTokensByChainId[chainId];\n return nativeToken;\n }\n\n const tokenFromLowercase = tokenFromAddress.toLowerCase();\n\n // find the token from the token Lists for the srcChainId,\n // and retry to find the token when allTokens are updated (token lists loaded)\n const tokensMap = get(fromListsAtom).listByChainId[chainId]?.addressMap;\n const tokenFromLists = tokensMap?.[tokenFromLowercase];\n if (tokenFromLists) {\n return tokenFromLists;\n }\n\n // find the token from the imported tokens,\n // don't retry if user imports more tokens during the session\n const importedTokens = get.peek(importedTokensAtom);\n const importedToken = importedTokens[chainId]?.find(\n (token) => token.address.toLowerCase() === tokenFromLowercase\n );\n if (importedToken) {\n return importedToken;\n }\n\n // subscribe to auto-imported tokens, which will be added to only when tokenAddress prop is supplied from outside the widget\n const autoImportedTokens = get(autoImportedTokensAtom);\n // looking through auto-imported tokens isn't strictly necessary because importedTokens atom is updated together with autoImportedTokens atom,\n // except for consistency, and so that we don't have to subscribe to importedTokens atom that would retrigger formProps matching on manual token import\n const autoImportedToken = autoImportedTokens.find(\n (token) =>\n token.address.toLowerCase() === tokenFromLowercase &&\n token.network === chainId\n );\n if (autoImportedToken) {\n return autoImportedToken;\n }\n\n logger.info(\n \"token not available in widget. Will attempt to import from chain\",\n {\n address: tokenFromAddress,\n chainId,\n }\n );\n\n // trigger Token fetch and eventual import when tokenFromAddress is not found in available token lists and atoms\n set(autoAddImportedTokenAtom, { address: tokenFromAddress, chainId });\n}\n\nfunction isValidSide(side: string | undefined): side is SwapSideUnion {\n return side === \"BUY\" || side === \"SELL\";\n}\n\nconst formInputPropsEffectAtom = atomEffect((get, set) => {\n // subscribe to bridgeInfosLoadedAtom to have up-to-date available crosses\n // and retry token finding each time when bridgeInfo changes\n get(bridgeInfosLoadedAtom);\n\n // subscribe to enabledTradeModesFromConfigAtom to react to changes in enabled trade modes\n get(enabledTradeModesFromConfigAtom);\n // and use availableTradeModesAtom as final source of truth (it derrives from enabledTradeModesFromConfigAtom)\n const availableTradeModes = get.peek(availableTradeModesAtom);\n\n const formInputProps: RelaxedFormInputProps = get(formInputPropsAtom);\n const { tokenFromAddress } = formInputProps;\n\n // guard against amounts passed as numbers when props are supplied from outside the Widget and types are ignored\n const sendAmount =\n formInputProps.sendAmount !== undefined\n ? String(formInputProps.sendAmount)\n : undefined;\n const receiveAmount =\n formInputProps.receiveAmount !== undefined\n ? String(formInputProps.receiveAmount)\n : undefined;\n\n // guard against chainId passed as string when props are supplied from outside the Widget and types are ignored\n const srcChainId =\n formInputProps.srcChainId !== undefined\n ? Number(formInputProps.srcChainId)\n : undefined;\n\n logger.log(\"using external props to set Widget form input\", formInputProps);\n\n let destChainId =\n formInputProps.destChainId !== undefined\n ? Number(formInputProps.destChainId)\n : undefined;\n\n const currentTradeMode = get.peek(tradeModeAtom);\n\n let tokenToAddress = formInputProps.tokenToAddress;\n let selectedForm = formInputProps.selectedForm || currentTradeMode;\n if (\n !isTradeMode(selectedForm) ||\n !availableTradeModes.includes(selectedForm)\n ) {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid, disabled or unavailable selectedForm provided\", {\n selectedForm,\n });\n // fallback to first available trade mode\n selectedForm = availableTradeModes[0];\n }\n\n // necessary for type safety\n assert(isTradeMode(selectedForm), \"selectedForm must be a valid trade mode\");\n\n const formAtoms = tradeModeToTokenAtoms[selectedForm];\n const currentTokenFrom = get.peek(formAtoms.tokenFromAtom);\n const currentTokenTo = get.peek(formAtoms.tokenToAtom);\n\n if (currentTradeMode !== selectedForm) {\n set(userTradeModeAtom, selectedForm);\n }\n\n let newTokenFrom: Token | undefined;\n let newTokenTo: Token | undefined;\n\n // if chain isn't given in props, match current srcChainId\n const defaultChainId = currentTokenFrom.network;\n\n if (!tradeModesWithCrosschain.has(selectedForm)) {\n // force destChainId = srcChainId for trade modes that don't support crosschain\n destChainId = srcChainId;\n }\n\n if (\n selectedForm === \"otc\" &&\n tokenToAddress &&\n isETHaddress(tokenToAddress)\n ) {\n const wethMapping: Record<number, Address> = wrappedNativeCurrency;\n // OTC Orders don't support ETH as tokenTo=takerAsset,\n // more logical to use WETH instead of no token at all\n tokenToAddress = wethMapping[destChainId || defaultChainId];\n }\n\n {\n // match tokenFromAddress and srcChainId to a new tokenFrom to select\n const tokenToFind = getTokenToFind({\n tokenFromProps: { address: tokenFromAddress, network: srcChainId },\n currentToken: currentTokenFrom,\n defaultChainId,\n });\n if (tokenToFind) {\n newTokenFrom = findTokenInAtoms({\n get,\n tokenToFind,\n set,\n });\n }\n }\n\n {\n // match tokenToAddress and destChainId to a new tokenTo to select\n const tokenToFind = getTokenToFind({\n tokenFromProps: { address: tokenToAddress, network: destChainId },\n currentToken: currentTokenTo,\n defaultChainId,\n });\n if (tokenToFind) {\n newTokenTo = findTokenInAtoms({\n get,\n tokenToFind,\n set,\n });\n }\n }\n\n if (newTokenFrom && newTokenTo && areTokensSame(newTokenFrom, newTokenTo)) {\n // if tokens are the same, skip tokenTo\n newTokenTo = undefined;\n }\n\n if (\n !newTokenFrom &&\n !tokenFromAddress &&\n srcChainId &&\n isSupportedChainId(srcChainId) &&\n srcChainId !== currentTokenFrom.network\n ) {\n // no tokenAddress given, but chainId is provided and different from current\n const [defaultTokenFrom] = pickDefaultTokenPair(srcChainId, selectedForm);\n // set default token for the chain\n newTokenFrom = defaultTokenFrom;\n }\n\n if (\n !newTokenTo &&\n !tokenToAddress &&\n destChainId &&\n isSupportedChainId(destChainId) &&\n destChainId !== currentTokenTo?.network\n ) {\n // no tokenAddress given, but chainId is provided and different from current\n const [, defaultTokenTo] = pickDefaultTokenPair(destChainId, selectedForm);\n // set default token for the chain\n newTokenTo = defaultTokenTo;\n }\n\n if (newTokenFrom) {\n const selectTokenFromAtom =\n tradeModeToSetTokenAtoms[selectedForm].tokenFromAtom;\n set(selectTokenFromAtom, newTokenFrom);\n }\n if (newTokenTo) {\n const selectTokenToAtom =\n tradeModeToSetTokenAtoms[selectedForm].tokenToAtom;\n set(selectTokenToAtom, newTokenTo);\n }\n\n const currentSideAtom = tradeModeToSideAtom[selectedForm];\n const currentInputAtom = tradeModeToCurrentInputAtom[selectedForm];\n\n let side = formInputProps.side;\n\n if (tradeModesWithSide.has(selectedForm)) {\n if (isValidSide(side)) {\n set(currentInputAtom, sideToInputType[side]);\n } else {\n if (side) {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid side provided, must be BUY or SELL\", { side });\n }\n\n if (sendAmount && !receiveAmount) {\n side = \"SELL\"; // sendAmount is given and receiveAmount isn't -> SELL\n } else if (receiveAmount && !sendAmount) {\n side = \"BUY\"; // receiveAmount is given and sendAmount isn't -> BUY\n } else {\n // fallback to current side if both or none amounts are given\n side = get.peek(currentSideAtom);\n }\n }\n } else {\n side = get.peek(currentSideAtom);\n }\n\n // necessary for type safety\n assert(isValidSide(side), \"side must be BUY or SELL\");\n\n const isTradeModeWithSide = tradeModesWithSide.has(selectedForm);\n const isTradeModeWithoutSide = !isTradeModeWithSide;\n\n const isSell =\n isTradeModeWithoutSide || (isTradeModeWithSide && side === \"SELL\");\n const isBuy =\n isTradeModeWithoutSide || (isTradeModeWithSide && side === \"BUY\");\n\n const isValidSendAmount = sendAmount && Number(sendAmount) >= 0;\n const isValidReceiveAmount = receiveAmount && Number(receiveAmount) >= 0;\n\n // given a valid sendAmount\n // and the form with side=sell or without side\n if (isValidSendAmount && isSell) {\n // update the send amount\n const formPayAmountAtom = tradeModeToPayAmountUnitAtom[selectedForm];\n const currentSendAmount = get.peek(formPayAmountAtom.read);\n if (currentSendAmount !== sendAmount) {\n set(formPayAmountAtom.write, sendAmount);\n }\n }\n\n // given a valid receiveAmount\n // and the form with side=buy or without side\n if (isValidReceiveAmount && isBuy) {\n // update the receive amount\n const formReceiveAmountAtom =\n tradeModeToReceiveAmountUnitAtom[selectedForm];\n const currentReceiveAmount = get.peek(formReceiveAmountAtom.read);\n if (currentReceiveAmount !== receiveAmount) {\n set(formReceiveAmountAtom.write, receiveAmount);\n }\n }\n\n if (selectedForm === \"limit\" || selectedForm === \"otc\") {\n // OTC and Limit forms support order deadline param\n const orderDeadline = Number(formInputProps.orderDeadline);\n if (orderDeadline !== undefined && !isNaN(orderDeadline)) {\n const timeUnitAtom = tradeModeToTimeUnitAtom[selectedForm];\n const currentTimeUnit = get.peek(timeUnitAtom);\n\n if (currentTimeUnit.timestamp !== orderDeadline) {\n set(timeUnitAtom, {\n // set closest time unit for better UX\n ...getClosestTimeUnit(orderDeadline),\n // set exact timestamp\n timestamp: orderDeadline,\n });\n }\n }\n }\n});\n\nfunction getTokenToFind({\n tokenFromProps,\n currentToken,\n defaultChainId,\n}: {\n tokenFromProps: { address?: string; network?: number };\n currentToken?: Token;\n defaultChainId: SupportedChainId;\n}): { address: Address; network: SupportedChainId } | undefined {\n if (!tokenFromProps.address) return;\n // guard against malformed addresses passed through props\n if (!isAddress(tokenFromProps.address)) {\n logger.warn(\"malformed token address provided\", {\n address: tokenFromProps.address,\n });\n return;\n }\n\n const network = tokenFromProps.network || defaultChainId;\n\n // unsupported chainId provided, can't select this Token\n if (!isSupportedChainId(network)) {\n logger.warn(\"unsupported chainId provided\", { network });\n return;\n }\n\n if (\n currentToken &&\n areTokensSame(currentToken, {\n address: tokenFromProps.address,\n network,\n })\n ) {\n // same token already there\n return;\n }\n\n return { address: tokenFromProps.address, network };\n}\n\nexport function useActivateFormInputEffects() {\n useAtom(formInputPropsEffectAtom);\n}\n\nexport function useSetFormInputFromProps({\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n receiveAmount,\n side,\n orderDeadline,\n}: FormInputProps = {}) {\n const setFormInputProps = useSetAtom(formInputPropsAtom);\n\n // match props together as they are supplied together from outside the Widget,\n // on any one prop change, the whole form input props are updated as long as they are passed together to the Widget\n useLayoutEffect(() => {\n setFormInputProps({\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n receiveAmount,\n side,\n orderDeadline,\n });\n }, [\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n setFormInputProps,\n receiveAmount,\n side,\n orderDeadline,\n ]);\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"limitInputAmountAtom.d.ts","sourceRoot":"","sources":["../../../../src/core/limit/state/limitInputAmountAtom.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAI3C,eAAO,MAAM,mBAAmB;;CAA8B,CAAC;AAE/D,eAAO,MAAM,oBAAoB,8BAI/B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;CAA0C,CAAC;AAE/E,eAAO,MAAM,2BAA2B;;CAA0C,CAAC;AAEnF,eAAO,MAAM,0BAA0B,8BAKrC,CAAC;AAEH,eAAO,MAAM,8BAA8B,0CAOzC,CAAC"}
1
+ {"version":3,"file":"limitInputAmountAtom.d.ts","sourceRoot":"","sources":["../../../../src/core/limit/state/limitInputAmountAtom.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAI3C,eAAO,MAAM,mBAAmB;;CAA8B,CAAC;AAE/D,eAAO,MAAM,oBAAoB,8BAI/B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;CAA0C,CAAC;AAE/E,eAAO,MAAM,2BAA2B;;CAGvC,CAAC;AAEF,eAAO,MAAM,0BAA0B,8BAKrC,CAAC;AAEH,eAAO,MAAM,8BAA8B,0CAOzC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"limitInputAmountAtom.js","names":["limitTokenFromAtom","limitTokenToAtom","atom","parseUnits","zeroRates","PriceRates","isLimitPriceReversedAtom","GuardAgainstLoneDecimalPoint","limitPriceRatesAtom","limitPriceAmountAtom","get","isReversed","priceRates","rateReversed","rate","limitPayInputAmountAtom","limitReceiveInputAmountAtom","limitPayInputAmountWeiAtom","tokenFrom","payInputAmount","decimals","toString","limitReceiveInputAmountWeiAtom","tokenTo","receiveInputAmount"],"sources":["../../../../src/core/limit/state/limitInputAmountAtom.ts"],"sourcesContent":["import { limitTokenFromAtom, limitTokenToAtom } from \"./limitTokenAtoms\";\nimport { atom } from \"jotai\";\nimport { parseUnits } from \"viem\";\nimport { zeroRates } from \"./constants\";\nimport type { PriceRates } from \"../types\";\nimport { isLimitPriceReversedAtom } from \"./isLimitPriceReversedAtom\";\nimport { GuardAgainstLoneDecimalPoint } from \"@/core/inputs/state/guards\";\n\nexport const limitPriceRatesAtom = atom<PriceRates>(zeroRates);\n\nexport const limitPriceAmountAtom = atom((get) => {\n const isReversed = get(isLimitPriceReversedAtom);\n const priceRates = get(limitPriceRatesAtom);\n return isReversed ? priceRates.rateReversed : priceRates.rate;\n});\n\nexport const limitPayInputAmountAtom = atom(\"0\", GuardAgainstLoneDecimalPoint);\n\nexport const limitReceiveInputAmountAtom = atom(\"0\", GuardAgainstLoneDecimalPoint);\n\nexport const limitPayInputAmountWeiAtom = atom((get) => {\n // amountWei derived from limitPayInputAmountAtom\n const tokenFrom = get(limitTokenFromAtom);\n const payInputAmount = get(limitPayInputAmountAtom);\n return parseUnits(payInputAmount, tokenFrom.decimals).toString();\n});\n\nexport const limitReceiveInputAmountWeiAtom = atom((get) => {\n // amountWei derived from limitReceiveInputAmountAtom\n const tokenTo = get(limitTokenToAtom);\n if (tokenTo) {\n const receiveInputAmount = get(limitReceiveInputAmountAtom);\n return parseUnits(receiveInputAmount, tokenTo.decimals).toString();\n }\n});\n"],"mappings":";;;;;;;AAQA,IAAaQ,IAAsBN,EAAiBE,EAAU,EAEjDK,IAAuBP,GAAMQ,MAAQ;CAChD,IAAMC,IAAaD,EAAIJ,EAAyB,EAC1CM,IAAaF,EAAIF,EAAoB;CAC3C,OAAOG,IAAaC,EAAWC,eAAeD,EAAWE;EACzD,EAEWC,IAA0Bb,EAAK,KAAKK,EAA6B,EAEjES,IAA8Bd,EAAK,KAAKK,EAA6B,EAErEU,IAA6Bf,GAAMQ,MAAQ;CAEtD,IAAMQ,IAAYR,EAAIV,EAAmB;CAEzC,OAAOG,EADgBO,EAAIK,EACTI,EAAgBD,EAAUE,SAAS,CAACC,UAAU;EAChE,EAEWC,IAAiCpB,GAAMQ,MAAQ;CAE1D,IAAMa,IAAUb,EAAIT,EAAiB;CACrC,IAAIsB,GAEF,OAAOpB,EADoBO,EAAIM,EACbQ,EAAoBD,EAAQH,SAAS,CAACC,UAAU;EAEpE"}
1
+ {"version":3,"file":"limitInputAmountAtom.js","names":["limitTokenFromAtom","limitTokenToAtom","atom","parseUnits","zeroRates","PriceRates","isLimitPriceReversedAtom","GuardAgainstLoneDecimalPoint","limitPriceRatesAtom","limitPriceAmountAtom","get","isReversed","priceRates","rateReversed","rate","limitPayInputAmountAtom","limitReceiveInputAmountAtom","limitPayInputAmountWeiAtom","tokenFrom","payInputAmount","decimals","toString","limitReceiveInputAmountWeiAtom","tokenTo","receiveInputAmount"],"sources":["../../../../src/core/limit/state/limitInputAmountAtom.ts"],"sourcesContent":["import { limitTokenFromAtom, limitTokenToAtom } from \"./limitTokenAtoms\";\nimport { atom } from \"jotai\";\nimport { parseUnits } from \"viem\";\nimport { zeroRates } from \"./constants\";\nimport type { PriceRates } from \"../types\";\nimport { isLimitPriceReversedAtom } from \"./isLimitPriceReversedAtom\";\nimport { GuardAgainstLoneDecimalPoint } from \"@/core/inputs/state/guards\";\n\nexport const limitPriceRatesAtom = atom<PriceRates>(zeroRates);\n\nexport const limitPriceAmountAtom = atom((get) => {\n const isReversed = get(isLimitPriceReversedAtom);\n const priceRates = get(limitPriceRatesAtom);\n return isReversed ? priceRates.rateReversed : priceRates.rate;\n});\n\nexport const limitPayInputAmountAtom = atom(\"0\", GuardAgainstLoneDecimalPoint);\n\nexport const limitReceiveInputAmountAtom = atom(\n \"0\",\n GuardAgainstLoneDecimalPoint\n);\n\nexport const limitPayInputAmountWeiAtom = atom((get) => {\n // amountWei derived from limitPayInputAmountAtom\n const tokenFrom = get(limitTokenFromAtom);\n const payInputAmount = get(limitPayInputAmountAtom);\n return parseUnits(payInputAmount, tokenFrom.decimals).toString();\n});\n\nexport const limitReceiveInputAmountWeiAtom = atom((get) => {\n // amountWei derived from limitReceiveInputAmountAtom\n const tokenTo = get(limitTokenToAtom);\n if (tokenTo) {\n const receiveInputAmount = get(limitReceiveInputAmountAtom);\n return parseUnits(receiveInputAmount, tokenTo.decimals).toString();\n }\n});\n"],"mappings":";;;;;;;AAQA,IAAaQ,IAAsBN,EAAiBE,EAAU,EAEjDK,IAAuBP,GAAMQ,MAAQ;CAChD,IAAMC,IAAaD,EAAIJ,EAAyB,EAC1CM,IAAaF,EAAIF,EAAoB;CAC3C,OAAOG,IAAaC,EAAWC,eAAeD,EAAWE;EACzD,EAEWC,IAA0Bb,EAAK,KAAKK,EAA6B,EAEjES,IAA8Bd,EACzC,KACAK,EACD,EAEYU,IAA6Bf,GAAMQ,MAAQ;CAEtD,IAAMQ,IAAYR,EAAIV,EAAmB;CAEzC,OAAOG,EADgBO,EAAIK,EACTI,EAAgBD,EAAUE,SAAS,CAACC,UAAU;EAChE,EAEWC,IAAiCpB,GAAMQ,MAAQ;CAE1D,IAAMa,IAAUb,EAAIT,EAAiB;CACrC,IAAIsB,GAEF,OAAOpB,EADoBO,EAAIM,EACbQ,EAAoBD,EAAQH,SAAS,CAACC,UAAU;EAEpE"}