@velora-dex/widget 0.3.1 → 0.3.2
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.
- package/dist/assets/bridges/canonical-uni.svg.js +12 -0
- package/dist/assets/bridges/canonical-uni.svg.js.map +1 -0
- package/dist/assets/bridges/cctp.svg.js +12 -0
- package/dist/assets/bridges/cctp.svg.js.map +1 -0
- package/dist/assets/bridges/celer.svg.js +16 -0
- package/dist/assets/bridges/celer.svg.js.map +1 -0
- package/dist/assets/bridges/relay.svg.js +12 -0
- package/dist/assets/bridges/relay.svg.js.map +1 -0
- package/dist/assets/refresh.svg.js +12 -0
- package/dist/assets/refresh.svg.js.map +1 -0
- package/dist/assets/speedometer.svg.js +12 -0
- package/dist/assets/speedometer.svg.js.map +1 -0
- package/dist/components/ui/accordion.d.ts +3 -2
- package/dist/components/ui/accordion.d.ts.map +1 -1
- package/dist/components/ui/accordion.js +64 -40
- package/dist/components/ui/accordion.js.map +1 -1
- package/dist/components/ui/skeleton.d.ts.map +1 -1
- package/dist/components/ui/skeleton.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/hooks.js.map +1 -1
- package/dist/components/widget/AppHeader/AppHeader.d.ts.map +1 -1
- package/dist/components/widget/AppHeader/AppHeader.js +67 -81
- package/dist/components/widget/AppHeader/AppHeader.js.map +1 -1
- package/dist/components/widget/AppHeader/TradeModeSwitcher.d.ts.map +1 -1
- package/dist/components/widget/AppHeader/TradeModeSwitcher.js.map +1 -1
- package/dist/components/widget/BridgeList/BridgeListItem.d.ts +7 -0
- package/dist/components/widget/BridgeList/BridgeListItem.d.ts.map +1 -0
- package/dist/components/widget/BridgeList/BridgeListItem.js +475 -0
- package/dist/components/widget/BridgeList/BridgeListItem.js.map +1 -0
- package/dist/components/widget/BridgeList/BridgeProtocolsList.d.ts +9 -0
- package/dist/components/widget/BridgeList/BridgeProtocolsList.d.ts.map +1 -0
- package/dist/components/widget/BridgeList/BridgeProtocolsList.js +219 -0
- package/dist/components/widget/BridgeList/BridgeProtocolsList.js.map +1 -0
- package/dist/components/widget/BridgeList/BridgesList.d.ts +12 -0
- package/dist/components/widget/BridgeList/BridgesList.d.ts.map +1 -0
- package/dist/components/widget/BridgeList/BridgesList.js +76 -0
- package/dist/components/widget/BridgeList/BridgesList.js.map +1 -0
- package/dist/components/widget/BridgeList/hooks.d.ts +17 -0
- package/dist/components/widget/BridgeList/hooks.d.ts.map +1 -0
- package/dist/components/widget/BridgeList/hooks.js +259 -0
- package/dist/components/widget/BridgeList/hooks.js.map +1 -0
- package/dist/components/widget/BridgeList/types.d.ts +20 -0
- package/dist/components/widget/BridgeList/types.d.ts.map +1 -0
- package/dist/components/widget/BridgePreferences/BridgePreferences.d.ts +3 -0
- package/dist/components/widget/BridgePreferences/BridgePreferences.d.ts.map +1 -0
- package/dist/components/widget/BridgePreferences/BridgePreferences.js +136 -0
- package/dist/components/widget/BridgePreferences/BridgePreferences.js.map +1 -0
- package/dist/components/widget/BridgePreferences/types.d.ts +11 -0
- package/dist/components/widget/BridgePreferences/types.d.ts.map +1 -0
- package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.d.ts +8 -0
- package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.d.ts.map +1 -0
- package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.js +137 -0
- package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.js.map +1 -0
- package/dist/components/widget/CompareQuotes/CompareQuotes.d.ts +2 -0
- package/dist/components/widget/CompareQuotes/CompareQuotes.d.ts.map +1 -0
- package/dist/components/widget/CompareQuotes/CompareQuotes.js +210 -0
- package/dist/components/widget/CompareQuotes/CompareQuotes.js.map +1 -0
- package/dist/components/widget/Details/DetailWithValueListExpandable.d.ts.map +1 -1
- package/dist/components/widget/Details/DetailWithValueListExpandable.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListRow.js +2 -2
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListRow.js.map +1 -1
- package/dist/components/widget/Duration/Duration.d.ts +6 -0
- package/dist/components/widget/Duration/Duration.d.ts.map +1 -0
- package/dist/components/widget/Duration/Duration.js +95 -0
- package/dist/components/widget/Duration/Duration.js.map +1 -0
- package/dist/components/widget/Duration/types.d.ts +5 -0
- package/dist/components/widget/Duration/types.d.ts.map +1 -0
- package/dist/components/widget/Duration/utils.d.ts +4 -0
- package/dist/components/widget/Duration/utils.d.ts.map +1 -0
- package/dist/components/widget/Duration/utils.js +6 -0
- package/dist/components/widget/Duration/utils.js.map +1 -0
- package/dist/components/widget/FetchingQuotes/FetchingQuotes.d.ts +2 -0
- package/dist/components/widget/FetchingQuotes/FetchingQuotes.d.ts.map +1 -0
- package/dist/components/widget/FetchingQuotes/FetchingQuotes.js +42 -0
- package/dist/components/widget/FetchingQuotes/FetchingQuotes.js.map +1 -0
- package/dist/components/widget/LimitOrderItem/LimitOrderListItem.d.ts +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderListItem.d.ts.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderListItem.js +10 -64
- package/dist/components/widget/LimitOrderItem/LimitOrderListItem.js.map +1 -1
- package/dist/components/widget/OrderExpiryInput/index.js.map +1 -1
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/utils.js.map +1 -1
- package/dist/components/widget/Screen/GenericScreen.js.map +1 -1
- package/dist/components/widget/SettingsButton/SettingsButton.d.ts +5 -0
- package/dist/components/widget/SettingsButton/SettingsButton.d.ts.map +1 -0
- package/dist/components/widget/SettingsButton/SettingsButton.js +61 -0
- package/dist/components/widget/SettingsButton/SettingsButton.js.map +1 -0
- package/dist/components/widget/TokenBadge/TokenBadge.d.ts.map +1 -1
- package/dist/components/widget/TokenBadge/TokenBadge.js +114 -65
- package/dist/components/widget/TokenBadge/TokenBadge.js.map +1 -1
- package/dist/components/widget/TokenBadge/types.d.ts +1 -0
- package/dist/components/widget/TokenBadge/types.d.ts.map +1 -1
- package/dist/components/widget/TokenInput/index.d.ts.map +1 -1
- package/dist/components/widget/TokenInput/index.js +35 -19
- package/dist/components/widget/TokenInput/index.js.map +1 -1
- package/dist/components/widget/TokenInput/types.d.ts +1 -0
- package/dist/components/widget/TokenInput/types.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeDetails.js +1 -1
- package/dist/components/widget/TradeOverview/TradeDetails.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeDetailsDisplay.js +1 -1
- package/dist/components/widget/TradeOverview/TradeDetailsDisplay.js.map +1 -1
- package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.d.ts +1 -1
- package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.js.map +1 -1
- package/dist/components/widget/TradeParameters/BridgePreferenceParameters/BridgePreferenceParameters.d.ts +21 -0
- package/dist/components/widget/TradeParameters/BridgePreferenceParameters/BridgePreferenceParameters.d.ts.map +1 -0
- package/dist/components/widget/TradeParameters/BridgePreferenceParameters/BridgePreferenceParameters.js +90 -0
- package/dist/components/widget/TradeParameters/BridgePreferenceParameters/BridgePreferenceParameters.js.map +1 -0
- package/dist/components/widget/TradeParameters/BridgePreferenceParameters/useDraftBridgePreferencesState.d.ts +12 -0
- package/dist/components/widget/TradeParameters/BridgePreferenceParameters/useDraftBridgePreferencesState.d.ts.map +1 -0
- package/dist/components/widget/TradeParameters/BridgePreferenceParameters/useDraftBridgePreferencesState.js +68 -0
- package/dist/components/widget/TradeParameters/BridgePreferenceParameters/useDraftBridgePreferencesState.js.map +1 -0
- package/dist/components/widget/TradeParameters/TradeParameters.d.ts +3 -2
- package/dist/components/widget/TradeParameters/TradeParameters.d.ts.map +1 -1
- package/dist/components/widget/TradeParameters/TradeParameters.js +66 -45
- package/dist/components/widget/TradeParameters/TradeParameters.js.map +1 -1
- package/dist/components/widget/TradeParameters/hooks/useIsNotDefaultAnyParameter.d.ts.map +1 -1
- package/dist/components/widget/TradeParameters/hooks/useIsNotDefaultAnyParameter.js +3 -1
- package/dist/components/widget/TradeParameters/hooks/useIsNotDefaultAnyParameter.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/bridgePreferences/bridgePreferenceAtom.d.ts +10 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/bridgePreferenceAtom.d.ts.map +1 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/bridgePreferenceAtom.js +19 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/bridgePreferenceAtom.js.map +1 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/constants.d.ts +4 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/constants.d.ts.map +1 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/constants.js +7 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/constants.js.map +1 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/disabledBridgesAtom.d.ts +8 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/disabledBridgesAtom.d.ts.map +1 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/disabledBridgesAtom.js +21 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/disabledBridgesAtom.js.map +1 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/excludeBridgesAtom.d.ts +2 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/excludeBridgesAtom.d.ts.map +1 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/excludeBridgesAtom.js +11 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/excludeBridgesAtom.js.map +1 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/protocolNameAtom.d.ts +4 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/protocolNameAtom.d.ts.map +1 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/protocolNameAtom.js +8 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/protocolNameAtom.js.map +1 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/resetDraftsAtom.d.ts +4 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/resetDraftsAtom.d.ts.map +1 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/resetDraftsAtom.js +11 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/resetDraftsAtom.js.map +1 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/types.d.ts +3 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/types.d.ts.map +1 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/useBridgePreferences.d.ts +15 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/useBridgePreferences.d.ts.map +1 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/useBridgePreferences.js +63 -0
- package/dist/components/widget/TradeParameters/state/bridgePreferences/useBridgePreferences.js.map +1 -0
- package/dist/components/widget/TradeParameters/useTempTradeParameters.d.ts +5 -0
- package/dist/components/widget/TradeParameters/useTempTradeParameters.d.ts.map +1 -1
- package/dist/components/widget/TradeParameters/useTempTradeParameters.js +150 -67
- package/dist/components/widget/TradeParameters/useTempTradeParameters.js.map +1 -1
- package/dist/components/widget/YouGet/YouGet.d.ts.map +1 -1
- package/dist/components/widget/YouGet/YouGet.js +93 -99
- package/dist/components/widget/YouGet/YouGet.js.map +1 -1
- package/dist/components/widget/YouGet/types.d.ts +2 -1
- package/dist/components/widget/YouGet/types.d.ts.map +1 -1
- package/dist/configurator/state/themeAtom.d.ts.map +1 -1
- package/dist/core/Updaters.d.ts.map +1 -1
- package/dist/core/Updaters.js +2 -0
- package/dist/core/Updaters.js.map +1 -1
- package/dist/core/button/hooks/useWidgetButtonExtraProps.d.ts.map +1 -1
- package/dist/core/button/hooks/useWidgetButtonExtraProps.js.map +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +22 -14
- package/dist/core/index.js.map +1 -1
- package/dist/core/inputs/hooks/types.d.ts +2 -2
- package/dist/core/inputs/hooks/types.d.ts.map +1 -1
- package/dist/core/inputs/hooks/useTokenFromInputProps.d.ts.map +1 -1
- package/dist/core/inputs/hooks/useTokenFromInputProps.js +121 -103
- package/dist/core/inputs/hooks/useTokenFromInputProps.js.map +1 -1
- package/dist/core/inputs/hooks/useTokenToInputProps.d.ts.map +1 -1
- package/dist/core/inputs/hooks/useTokenToInputProps.js +158 -130
- package/dist/core/inputs/hooks/useTokenToInputProps.js.map +1 -1
- package/dist/core/inputs/hooks/utils.d.ts +10 -0
- package/dist/core/inputs/hooks/utils.d.ts.map +1 -0
- package/dist/core/inputs/hooks/utils.js +41 -0
- package/dist/core/inputs/hooks/utils.js.map +1 -0
- package/dist/core/inputs/state/setTokenByAddressAtom.js.map +1 -1
- package/dist/core/limit/state/utils.js.map +1 -1
- package/dist/core/limit/useLimitRate.d.ts.map +1 -1
- package/dist/core/limit/useLimitRate.js.map +1 -1
- package/dist/core/screen/hooks/useOnClickOutside.js.map +1 -1
- package/dist/core/screen/screenByType.d.ts +2 -0
- package/dist/core/screen/screenByType.d.ts.map +1 -1
- package/dist/core/screen/screenByType.js +5 -1
- package/dist/core/screen/screenByType.js.map +1 -1
- package/dist/core/screen/state/hooks/useSetScreen.d.ts +3 -0
- package/dist/core/screen/state/hooks/useSetScreen.d.ts.map +1 -1
- package/dist/core/screen/state/hooks/useSetScreen.js +43 -11
- package/dist/core/screen/state/hooks/useSetScreen.js.map +1 -1
- package/dist/core/state/enabledTradeModesAtom.d.ts.map +1 -1
- package/dist/core/state/enabledTradeModesAtom.js.map +1 -1
- package/dist/core/swapDetails/priceImpact.d.ts.map +1 -1
- package/dist/core/swapDetails/priceImpact.js +7 -3
- package/dist/core/swapDetails/priceImpact.js.map +1 -1
- package/dist/events/getters/settings.d.ts.map +1 -1
- package/dist/events/getters/settings.js +7 -1
- package/dist/events/getters/settings.js.map +1 -1
- package/dist/events/types/common.d.ts +6 -1
- package/dist/events/types/common.d.ts.map +1 -1
- package/dist/events/types/settings.d.ts +2 -1
- package/dist/events/types/settings.d.ts.map +1 -1
- package/dist/hooks/gas/useGasPrices.d.ts.map +1 -1
- package/dist/hooks/gas/useGasPrices.js.map +1 -1
- package/dist/hooks/otc/mutations/useFillOrder.js +1 -2
- package/dist/hooks/otc/mutations/useFillOrder.js.map +1 -1
- package/dist/hooks/swap/prices/constants.d.ts +3 -0
- package/dist/hooks/swap/prices/constants.d.ts.map +1 -0
- package/dist/hooks/swap/prices/constants.js +5 -0
- package/dist/hooks/swap/prices/constants.js.map +1 -0
- package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.d.ts +6 -0
- package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.d.ts.map +1 -0
- package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.js +36 -0
- package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.js.map +1 -0
- package/dist/hooks/swap/prices/delta/bridge/utils.d.ts +7 -0
- package/dist/hooks/swap/prices/delta/bridge/utils.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/bridge/utils.js +35 -1
- package/dist/hooks/swap/prices/delta/bridge/utils.js.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/utils.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeProtocols/types.d.ts +13 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeProtocols/types.d.ts.map +1 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeProtocols/useBridgeProtocols.d.ts +3 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeProtocols/useBridgeProtocols.d.ts.map +1 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeProtocols/useBridgeProtocols.js +75 -0
- package/dist/hooks/swap/prices/delta/queries/bridgeProtocols/useBridgeProtocols.js.map +1 -0
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts +2 -2
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js +3 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/market/mutations/useBuildTx.d.ts.map +1 -1
- package/dist/hooks/swap/prices/market/mutations/useBuildTx.js.map +1 -1
- package/dist/hooks/swap/prices/types.d.ts +1 -0
- package/dist/hooks/swap/prices/types.d.ts.map +1 -1
- package/dist/hooks/swap/prices/useSwapPrices.d.ts +5 -0
- package/dist/hooks/swap/prices/useSwapPrices.d.ts.map +1 -1
- package/dist/hooks/swap/prices/useSwapPrices.js +119 -94
- package/dist/hooks/swap/prices/useSwapPrices.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.js +15 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useMarketFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useMarketSwapStep.js.map +1 -1
- package/dist/hooks/tokens/prices/queries.d.ts.map +1 -1
- package/dist/hooks/tokens/prices/queries.js.map +1 -1
- package/dist/hooks/tokens/useAllTokensWithFilter.d.ts.map +1 -1
- package/dist/hooks/tokens/useAllTokensWithFilter.js +11 -6
- package/dist/hooks/tokens/useAllTokensWithFilter.js.map +1 -1
- package/dist/hooks/useBridgeProtocols.d.ts +3 -0
- package/dist/hooks/useBridgeProtocols.d.ts.map +1 -0
- package/dist/hooks/useBridgeProtocols.js +35 -0
- package/dist/hooks/useBridgeProtocols.js.map +1 -0
- package/dist/hooks/useClickOutside.js.map +1 -1
- package/dist/lib/constants/storage.d.ts +2 -0
- package/dist/lib/constants/storage.d.ts.map +1 -0
- package/dist/lib/constants/storage.js +4 -0
- package/dist/lib/constants/storage.js.map +1 -0
- package/dist/lib/constants/weth.js.map +1 -1
- package/dist/lib/utils/priceImpact.d.ts +5 -2
- package/dist/lib/utils/priceImpact.d.ts.map +1 -1
- package/dist/lib/utils/priceImpact.js +8 -5
- package/dist/lib/utils/priceImpact.js.map +1 -1
- package/dist/lib/utils/tuple.d.ts +1 -0
- package/dist/lib/utils/tuple.d.ts.map +1 -1
- package/dist/lib/utils/tuple.js +5 -1
- package/dist/lib/utils/tuple.js.map +1 -1
- package/dist/lib/web3/privy/config.js +1 -1
- package/dist/lib/web3/wagmi/config.js +1 -1
- package/dist/styles.css +58 -3
- package/dist/tokens/queries.d.ts.map +1 -1
- package/dist/tokens/queries.js.map +1 -1
- package/dist/tokens/state/importedTokensAtom.d.ts.map +1 -1
- package/dist/tokens/state/importedTokensAtom.js +4 -1
- package/dist/tokens/state/importedTokensAtom.js.map +1 -1
- package/dist/tokens/utils/sorting.d.ts +5 -0
- package/dist/tokens/utils/sorting.d.ts.map +1 -1
- package/dist/tokens/utils/sorting.js +34 -1
- package/dist/tokens/utils/sorting.js.map +1 -1
- package/dist/transactions/state/transactionsAtom.d.ts.map +1 -1
- package/dist/transactions/state/transactionsAtom.js +2 -1
- package/dist/transactions/state/transactionsAtom.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setTokenByAddressAtom.js","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 tradeModeToPayAmountUnitAtom,\n tradeModeToReceiveAmountUnitAtom,\n tradeModeToSetTokenAtoms,\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 { isTradeMode } from \"@/lib/tradeMode\";\nimport { enabledTradeModesAtom } from \"@/core/state/enabledTradeModesAtom\";\nimport type { FormInputProps } from \"./types\";\nimport type { SwapSideUnion } from \"@velora-dex/sdk\";\nimport { swapSideAtom } from \"@/components/widget/SwapModeSwitcher/state/swapSideAtom\";\nimport { currentSwapInputAtom } from \"@/core/state/currentSwapInputAtom\";\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 const enabledTradeModes = get(enabledTradeModesAtom);\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 let tokenToAddress = formInputProps.tokenToAddress;\n let selectedForm = formInputProps.selectedForm || \"swap\";\n if (!isTradeMode(selectedForm) || !enabledTradeModes.includes(selectedForm)) {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid or disabled selectedForm provided\", { selectedForm });\n // fallback to first enabled trade mode from the config\n selectedForm = enabledTradeModes[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 const currentTradeMode = get.peek(tradeModeAtom);\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 (selectedForm !== \"swap\" && selectedForm !== \"limit\") {\n // swap and limit forms support crosschain,\n // force destChainId = srcChainId for any other form\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 let side = formInputProps.side;\n if (isValidSide(side)) {\n set(currentSwapInputAtom, 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 if (selectedForm === \"swap\") {\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 swap side if both or none amounts are given\n side = get.peek(swapSideAtom);\n }\n } else {\n // fallback to current swap side for non-swap forms\n side = get.peek(swapSideAtom);\n }\n }\n\n // necessary for type safety\n assert(isValidSide(side), \"side must be BUY or SELL\");\n\n const isSwap = selectedForm === \"swap\";\n const isLimitOrOtc = selectedForm === \"limit\" || selectedForm === \"otc\";\n\n const isSwapWithSell = isSwap && side === \"SELL\";\n const isSwapWithBuy = isSwap && side === \"BUY\";\n\n if (\n // given a valid sendAmount\n sendAmount &&\n Number(sendAmount) >= 0 &&\n // and the form is a swap with side=sell or limit or otc\n (isSwapWithSell || isLimitOrOtc)\n ) {\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 if (\n // given a valid receiveAmount\n receiveAmount &&\n Number(receiveAmount) >= 0 &&\n // and the form is a swap with side=buy or limit or otc\n (isSwapWithBuy || isLimitOrOtc)\n ) {\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"],"names":["formInputPropsAtom","atom","logger","getLogger","findTokenInAtoms","get","set","tokenToFind","tokenFromAddress","address","chainId","network","isETHaddress","nativeToken","nativeTokensByChainId","tokenFromLowercase","toLowerCase","tokensMap","fromListsAtom","listByChainId","addressMap","tokenFromLists","importedTokens","peek","importedTokensAtom","importedToken","find","token","autoImportedTokens","autoImportedTokensAtom","autoImportedToken","info","autoAddImportedTokenAtom","isValidSide","side","formInputPropsEffectAtom","atomEffect","bridgeInfosLoadedAtom","enabledTradeModes","enabledTradeModesAtom","formInputProps","sendAmount","undefined","String","receiveAmount","srcChainId","Number","log","destChainId","tokenToAddress","selectedForm","isTradeMode","includes","warn","assert","formAtoms","tradeModeToTokenAtoms","currentTokenFrom","tokenFromAtom","currentTokenTo","tokenToAtom","currentTradeMode","tradeModeAtom","userTradeModeAtom","newTokenFrom","newTokenTo","defaultChainId","wethMapping","wrappedNativeCurrency","getTokenToFind","tokenFromProps","currentToken","areTokensSame","isSupportedChainId","defaultTokenFrom","pickDefaultTokenPair","defaultTokenTo","selectTokenFromAtom","tradeModeToSetTokenAtoms","selectTokenToAtom","currentSwapInputAtom","sideToInputType","swapSideAtom","isSwap","isLimitOrOtc","isSwapWithSell","isSwapWithBuy","formPayAmountAtom","tradeModeToPayAmountUnitAtom","currentSendAmount","read","write","formReceiveAmountAtom","tradeModeToReceiveAmountUnitAtom","currentReceiveAmount","orderDeadline","isNaN","timeUnitAtom","tradeModeToTimeUnitAtom","currentTimeUnit","timestamp","getClosestTimeUnit","isAddress","useActivateFormInputEffects","useAtom","useSetFormInputFromProps","t0","$","_c","t1","setFormInputProps","useSetAtom","t2","t3","useLayoutEffect"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAuCO,MAAMA,kBAAAA,GAAqBC,IAAAA,CAAqB,EAAE;AAWzD,MAAMC,MAAAA,GAASC,UAAU,gBAAgB,CAAA;AAUzC,SAASC,gBAAAA,CAAiB;AAAA,EACxBC,GAAAA;AAAAA,EACAC,GAAAA;AAAAA,EACAC;AACmB,CAAA,EAAsB;AACzC,EAAA,MAAMC,mBAAmBD,WAAAA,CAAYE,OAAAA;AACrC,EAAA,MAAMC,UAAUH,WAAAA,CAAYI,OAAAA;AAE5B,EAAA,IAAIC,YAAAA,CAAaJ,gBAAgB,CAAA,EAAG;AAElC,IAAA,MAAMK,WAAAA,GAAcC,sBAAsBJ,OAAO,CAAA;AACjD,IAAA,OAAOG,WAAAA;AAAAA,EACT;AAEA,EAAA,MAAME,kBAAAA,GAAqBP,iBAAiBQ,WAAAA,EAAY;AAIxD,EAAA,MAAMC,YAAYZ,GAAAA,CAAIa,aAAa,CAAA,CAAEC,aAAAA,CAAcT,OAAO,CAAA,EAAGU,UAAAA;AAC7D,EAAA,MAAMC,cAAAA,GAAiBJ,YAAYF,kBAAkB,CAAA;AACrD,EAAA,IAAIM,cAAAA,EAAgB;AAClB,IAAA,OAAOA,cAAAA;AAAAA,EACT;AAIA,EAAA,MAAMC,cAAAA,GAAiBjB,GAAAA,CAAIkB,IAAAA,CAAKC,kBAAkB,CAAA;AAClD,EAAA,MAAMC,aAAAA,GAAgBH,cAAAA,CAAeZ,OAAO,CAAA,EAAGgB,IAAAA,CAC5CC,WAAUA,KAAAA,CAAMlB,OAAAA,CAAQO,WAAAA,EAAY,KAAMD,kBAC7C,CAAA;AACA,EAAA,IAAIU,aAAAA,EAAe;AACjB,IAAA,OAAOA,aAAAA;AAAAA,EACT;AAGA,EAAA,MAAMG,kBAAAA,GAAqBvB,IAAIwB,sBAAsB,CAAA;AAGrD,EAAA,MAAMC,iBAAAA,GAAoBF,kBAAAA,CAAmBF,IAAAA,CAC1CC,CAAAA,KAAAA,KACCA,KAAAA,CAAMlB,OAAAA,CAAQO,WAAAA,EAAY,KAAMD,kBAAAA,IAChCY,KAAAA,CAAMhB,OAAAA,KAAYD,OACtB,CAAA;AACA,EAAA,IAAIoB,iBAAAA,EAAmB;AACrB,IAAA,OAAOA,iBAAAA;AAAAA,EACT;AAEA5B,EAAAA,MAAAA,CAAO6B,KACL,kEAAA,EACA;AAAA,IACEtB,OAAAA,EAASD,gBAAAA;AAAAA,IACTE;AAAAA,GAEJ,CAAA;AAGAJ,EAAAA,GAAAA,CAAI0B,wBAAAA,EAA0B;AAAA,IAAEvB,OAAAA,EAASD,gBAAAA;AAAAA,IAAkBE;AAAAA,GAAS,CAAA;AACtE;AAEA,SAASuB,YAAYC,IAAAA,EAAiD;AACpE,EAAA,OAAOA,IAAAA,KAAS,SAASA,IAAAA,KAAS,MAAA;AACpC;AAEA,MAAMC,wBAAAA,GAA2BC,UAAAA,CAAW,CAAC/B,GAAAA,EAAKC,GAAAA,KAAQ;AAGxDD,EAAAA,GAAAA,CAAIgC,qBAAqB,CAAA;AAEzB,EAAA,MAAMC,iBAAAA,GAAoBjC,IAAIkC,qBAAqB,CAAA;AACnD,EAAA,MAAMC,cAAAA,GAAwCnC,IAAIL,kBAAkB,CAAA;AACpE,EAAA,MAAM;AAAA,IAAEQ;AAAAA,GAAiB,GAAIgC,cAAAA;AAG7B,EAAA,MAAMC,aACJD,cAAAA,CAAeC,UAAAA,KAAeC,SAC1BC,MAAAA,CAAOH,cAAAA,CAAeC,UAAU,CAAA,GAChCC,MAAAA;AACN,EAAA,MAAME,gBACJJ,cAAAA,CAAeI,aAAAA,KAAkBF,SAC7BC,MAAAA,CAAOH,cAAAA,CAAeI,aAAa,CAAA,GACnCF,MAAAA;AAGN,EAAA,MAAMG,aACJL,cAAAA,CAAeK,UAAAA,KAAeH,SAC1BI,MAAAA,CAAON,cAAAA,CAAeK,UAAU,CAAA,GAChCH,MAAAA;AAENxC,EAAAA,MAAAA,CAAO6C,GAAAA,CAAI,iDAAiDP,cAAc,CAAA;AAE1E,EAAA,IAAIQ,cACFR,cAAAA,CAAeQ,WAAAA,KAAgBN,SAC3BI,MAAAA,CAAON,cAAAA,CAAeQ,WAAW,CAAA,GACjCN,MAAAA;AAEN,EAAA,IAAIO,iBAAiBT,cAAAA,CAAeS,cAAAA;AACpC,EAAA,IAAIC,YAAAA,GAAeV,eAAeU,YAAAA,IAAgB,MAAA;AAClD,EAAA,IAAI,CAACC,YAAYD,YAAY,CAAA,IAAK,CAACZ,iBAAAA,CAAkBc,QAAAA,CAASF,YAAY,CAAA,EAAG;AAE3EhD,IAAAA,MAAAA,CAAOmD,KAAK,2CAAA,EAA6C;AAAA,MAAEH;AAAAA,KAAc,CAAA;AAEzEA,IAAAA,YAAAA,GAAeZ,kBAAkB,CAAC,CAAA;AAAA,EACpC;AAGAgB,EAAAA,MAAAA,CAAOH,WAAAA,CAAYD,YAAY,CAAA,EAAG,yCAAyC,CAAA;AAE3E,EAAA,MAAMK,SAAAA,GAAYC,sBAAsBN,YAAY,CAAA;AACpD,EAAA,MAAMO,gBAAAA,GAAmBpD,GAAAA,CAAIkB,IAAAA,CAAKgC,SAAAA,CAAUG,aAAa,CAAA;AACzD,EAAA,MAAMC,cAAAA,GAAiBtD,GAAAA,CAAIkB,IAAAA,CAAKgC,SAAAA,CAAUK,WAAW,CAAA;AAErD,EAAA,MAAMC,gBAAAA,GAAmBxD,GAAAA,CAAIkB,IAAAA,CAAKuC,aAAa,CAAA;AAE/C,EAAA,IAAID,qBAAqBX,YAAAA,EAAc;AACrC5C,IAAAA,GAAAA,CAAIyD,mBAAmBb,YAAY,CAAA;AAAA,EACrC;AAEA,EAAA,IAAIc,YAAAA;AACJ,EAAA,IAAIC,UAAAA;AAGJ,EAAA,MAAMC,iBAAiBT,gBAAAA,CAAiB9C,OAAAA;AAExC,EAAA,IAAIuC,YAAAA,KAAiB,MAAA,IAAUA,YAAAA,KAAiB,OAAA,EAAS;AAGvDF,IAAAA,WAAAA,GAAcH,UAAAA;AAAAA,EAChB;AAEA,EAAA,IACEK,YAAAA,KAAiB,KAAA,IACjBD,cAAAA,IACArC,YAAAA,CAAaqC,cAAc,CAAA,EAC3B;AACA,IAAA,MAAMkB,WAAAA,GAAuCC,qBAAAA;AAG7CnB,IAAAA,cAAAA,GAAiBkB,WAAAA,CAAYnB,eAAekB,cAAc,CAAA;AAAA,EAC5D;AAEA,EAAA;AAEE,IAAA,MAAM3D,cAAc8D,cAAAA,CAAe;AAAA,MACjCC,cAAAA,EAAgB;AAAA,QAAE7D,OAAAA,EAASD,gBAAAA;AAAAA,QAAkBG,OAAAA,EAASkC;AAAAA,OAAW;AAAA,MACjE0B,YAAAA,EAAcd,gBAAAA;AAAAA,MACdS;AAAAA,KACD,CAAA;AACD,IAAA,IAAI3D,WAAAA,EAAa;AACfyD,MAAAA,YAAAA,GAAe5D,gBAAAA,CAAiB;AAAA,QAC9BC,GAAAA;AAAAA,QACAE,WAAAA;AAAAA,QACAD;AAAAA,OACD,CAAA;AAAA,IACH;AAAA,EACF;AAEA,EAAA;AAEE,IAAA,MAAMC,cAAc8D,cAAAA,CAAe;AAAA,MACjCC,cAAAA,EAAgB;AAAA,QAAE7D,OAAAA,EAASwC,cAAAA;AAAAA,QAAgBtC,OAAAA,EAASqC;AAAAA,OAAY;AAAA,MAChEuB,YAAAA,EAAcZ,cAAAA;AAAAA,MACdO;AAAAA,KACD,CAAA;AACD,IAAA,IAAI3D,WAAAA,EAAa;AACf0D,MAAAA,UAAAA,GAAa7D,gBAAAA,CAAiB;AAAA,QAC5BC,GAAAA;AAAAA,QACAE,WAAAA;AAAAA,QACAD;AAAAA,OACD,CAAA;AAAA,IACH;AAAA,EACF;AAEA,EAAA,IAAI0D,YAAAA,IAAgBC,UAAAA,IAAcO,aAAAA,CAAcR,YAAAA,EAAcC,UAAU,CAAA,EAAG;AAEzEA,IAAAA,UAAAA,GAAavB,MAAAA;AAAAA,EACf;AAEA,EAAA,IACE,CAACsB,YAAAA,IACD,CAACxD,gBAAAA,IACDqC,UAAAA,IACA4B,mBAAmB5B,UAAU,CAAA,IAC7BA,UAAAA,KAAeY,gBAAAA,CAAiB9C,OAAAA,EAChC;AAEA,IAAA,MAAM,CAAC+D,gBAAgB,CAAA,GAAIC,oBAAAA,CAAqB9B,YAAYK,YAAY,CAAA;AAExEc,IAAAA,YAAAA,GAAeU,gBAAAA;AAAAA,EACjB;AAEA,EAAA,IACE,CAACT,UAAAA,IACD,CAAChB,cAAAA,IACDD,WAAAA,IACAyB,mBAAmBzB,WAAW,CAAA,IAC9BA,WAAAA,KAAgBW,cAAAA,EAAgBhD,OAAAA,EAChC;AAEA,IAAA,MAAM,GAAGiE,cAAc,CAAA,GAAID,oBAAAA,CAAqB3B,aAAaE,YAAY,CAAA;AAEzEe,IAAAA,UAAAA,GAAaW,cAAAA;AAAAA,EACf;AAEA,EAAA,IAAIZ,YAAAA,EAAc;AAChB,IAAA,MAAMa,mBAAAA,GACJC,wBAAAA,CAAyB5B,YAAY,CAAA,CAAEQ,aAAAA;AACzCpD,IAAAA,GAAAA,CAAIuE,qBAAqBb,YAAY,CAAA;AAAA,EACvC;AACA,EAAA,IAAIC,UAAAA,EAAY;AACd,IAAA,MAAMc,iBAAAA,GACJD,wBAAAA,CAAyB5B,YAAY,CAAA,CAAEU,WAAAA;AACzCtD,IAAAA,GAAAA,CAAIyE,mBAAmBd,UAAU,CAAA;AAAA,EACnC;AAEA,EAAA,IAAI/B,OAAOM,cAAAA,CAAeN,IAAAA;AAC1B,EAAA,IAAID,WAAAA,CAAYC,IAAI,CAAA,EAAG;AACrB5B,IAAAA,GAAAA,CAAI0E,oBAAAA,EAAsBC,eAAAA,CAAgB/C,IAAI,CAAC,CAAA;AAAA,EACjD,CAAA,MAAO;AACL,IAAA,IAAIA,IAAAA,EAAM;AAERhC,MAAAA,MAAAA,CAAOmD,KAAK,4CAAA,EAA8C;AAAA,QAAEnB;AAAAA,OAAM,CAAA;AAAA,IACpE;AACA,IAAA,IAAIgB,iBAAiB,MAAA,EAAQ;AAC3B,MAAA,IAAIT,UAAAA,IAAc,CAACG,aAAAA,EAAe;AAChCV,QAAAA,IAAAA,GAAO,MAAA;AAAA,MACT,CAAA,MAAA,IAAWU,aAAAA,IAAiB,CAACH,UAAAA,EAAY;AACvCP,QAAAA,IAAAA,GAAO,KAAA;AAAA,MACT,CAAA,MAAO;AAELA,QAAAA,IAAAA,GAAO7B,GAAAA,CAAIkB,KAAK2D,YAAY,CAAA;AAAA,MAC9B;AAAA,IACF,CAAA,MAAO;AAELhD,MAAAA,IAAAA,GAAO7B,GAAAA,CAAIkB,KAAK2D,YAAY,CAAA;AAAA,IAC9B;AAAA,EACF;AAGA5B,EAAAA,MAAAA,CAAOrB,WAAAA,CAAYC,IAAI,CAAA,EAAG,0BAA0B,CAAA;AAEpD,EAAA,MAAMiD,SAASjC,YAAAA,KAAiB,MAAA;AAChC,EAAA,MAAMkC,YAAAA,GAAelC,YAAAA,KAAiB,OAAA,IAAWA,YAAAA,KAAiB,KAAA;AAElE,EAAA,MAAMmC,cAAAA,GAAiBF,UAAUjD,IAAAA,KAAS,MAAA;AAC1C,EAAA,MAAMoD,aAAAA,GAAgBH,UAAUjD,IAAAA,KAAS,KAAA;AAEzC,EAAA;AAAA;AAAA,IAEEO,UAAAA,IACAK,MAAAA,CAAOL,UAAU,CAAA,IAAK,CAAA;AAAA,KAErB4C,cAAAA,IAAkBD,YAAAA;AAAAA,IACnB;AAEA,IAAA,MAAMG,iBAAAA,GAAoBC,6BAA6BtC,YAAY,CAAA;AACnE,IAAA,MAAMuC,iBAAAA,GAAoBpF,GAAAA,CAAIkB,IAAAA,CAAKgE,iBAAAA,CAAkBG,IAAI,CAAA;AACzD,IAAA,IAAID,sBAAsBhD,UAAAA,EAAY;AACpCnC,MAAAA,GAAAA,CAAIiF,iBAAAA,CAAkBI,OAAOlD,UAAU,CAAA;AAAA,IACzC;AAAA,EACF;AAEA,EAAA;AAAA;AAAA,IAEEG,aAAAA,IACAE,MAAAA,CAAOF,aAAa,CAAA,IAAK,CAAA;AAAA,KAExB0C,aAAAA,IAAiBF,YAAAA;AAAAA,IAClB;AAEA,IAAA,MAAMQ,qBAAAA,GACJC,iCAAiC3C,YAAY,CAAA;AAC/C,IAAA,MAAM4C,oBAAAA,GAAuBzF,GAAAA,CAAIkB,IAAAA,CAAKqE,qBAAAA,CAAsBF,IAAI,CAAA;AAChE,IAAA,IAAII,yBAAyBlD,aAAAA,EAAe;AAC1CtC,MAAAA,GAAAA,CAAIsF,qBAAAA,CAAsBD,OAAO/C,aAAa,CAAA;AAAA,IAChD;AAAA,EACF;AAEA,EAAA,IAAIM,YAAAA,KAAiB,OAAA,IAAWA,YAAAA,KAAiB,KAAA,EAAO;AAEtD,IAAA,MAAM6C,aAAAA,GAAgBjD,MAAAA,CAAON,cAAAA,CAAeuD,aAAa,CAAA;AACzD,IAAA,IAAIA,aAAAA,KAAkBrD,MAAAA,IAAa,CAACsD,KAAAA,CAAMD,aAAa,CAAA,EAAG;AACxD,MAAA,MAAME,YAAAA,GAAeC,wBAAwBhD,YAAY,CAAA;AACzD,MAAA,MAAMiD,eAAAA,GAAkB9F,GAAAA,CAAIkB,IAAAA,CAAK0E,YAAY,CAAA;AAE7C,MAAA,IAAIE,eAAAA,CAAgBC,cAAcL,aAAAA,EAAe;AAC/CzF,QAAAA,GAAAA,CAAI2F,YAAAA,EAAc;AAAA;AAAA,UAEhB,GAAGI,mBAAmBN,aAAa,CAAA;AAAA;AAAA,UAEnCK,SAAAA,EAAWL;AAAAA,SACZ,CAAA;AAAA,MACH;AAAA,IACF;AAAA,EACF;AACF,CAAC,CAAA;AAED,SAAS1B,cAAAA,CAAe;AAAA,EACtBC,cAAAA;AAAAA,EACAC,YAAAA;AAAAA,EACAL;AAKF,CAAA,EAAgE;AAC9D,EAAA,IAAI,CAACI,eAAe7D,OAAAA,EAAS;AAE7B,EAAA,IAAI,CAAC6F,SAAAA,CAAUhC,cAAAA,CAAe7D,OAAO,CAAA,EAAG;AACtCP,IAAAA,MAAAA,CAAOmD,KAAK,kCAAA,EAAoC;AAAA,MAC9C5C,SAAS6D,cAAAA,CAAe7D;AAAAA,KACzB,CAAA;AACD,IAAA;AAAA,EACF;AAEA,EAAA,MAAME,OAAAA,GAAU2D,eAAe3D,OAAAA,IAAWuD,cAAAA;AAG1C,EAAA,IAAI,CAACO,kBAAAA,CAAmB9D,OAAO,CAAA,EAAG;AAChCT,IAAAA,MAAAA,CAAOmD,KAAK,8BAAA,EAAgC;AAAA,MAAE1C;AAAAA,KAAS,CAAA;AACvD,IAAA;AAAA,EACF;AAEA,EAAA,IACE4D,YAAAA,IACAC,cAAcD,YAAAA,EAAc;AAAA,IAC1B9D,SAAS6D,cAAAA,CAAe7D,OAAAA;AAAAA,IACxBE;AAAAA,GACD,CAAA,EACD;AAEA,IAAA;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IAAEF,SAAS6D,cAAAA,CAAe7D,OAAAA;AAAAA,IAASE;AAAAA,GAAQ;AACpD;AAEO,SAAA4F,2BAAAA,GAAA;AACLC,EAAAA,OAAAA,CAAQrE,wBAAwB,CAAA;AAAC;AAG5B,SAAAsE,yBAAAC,EAAAA,EAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,EAAA,CAAA;AAAA,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAAF,CAAAA,QAAAD,EAAAA,EAAA;AAAkCG,IAAAA,EAAAA,GAAAH,EAAAA,KAAAhE,MAAAA,GAAA,EAUpB,GAVoBgE,EAAAA;AAUnBC,IAAAA,CAAAA,MAAAD,EAAAA;AAAAC,IAAAA,CAAAA,MAAAE,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAF,EAAA,CAAA,CAAA;AAAA,EAAA;AAVmB,EAAA,MAAA;AAAA,IAAAzD,YAAAA;AAAAA,IAAA1C,gBAAAA;AAAAA,IAAAqC,UAAAA;AAAAA,IAAAI,cAAAA;AAAAA,IAAAD,WAAAA;AAAAA,IAAAP,UAAAA;AAAAA,IAAAG,aAAAA;AAAAA,IAAAV,IAAAA;AAAAA,IAAA6D;AAAAA,GAAA,GAAAc,EAAAA;AAWvC,EAAA,MAAAC,iBAAAA,GAA0BC,WAAW/G,kBAAkB,CAAA;AAAE,EAAA,IAAAgH,EAAAA;AAAA,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAAN,EAAA,CAAA,CAAA,KAAA3D,WAAAA,IAAA2D,CAAAA,QAAAZ,aAAAA,IAAAY,CAAAA,CAAA,CAAA,MAAA/D,aAAAA,IAAA+D,CAAAA,QAAAzD,YAAAA,IAAAyD,EAAA,CAAA,CAAA,KAAAlE,UAAAA,IAAAkE,CAAAA,QAAAG,iBAAAA,IAAAH,EAAA,CAAA,CAAA,KAAAzE,QAAAyE,CAAAA,CAAA,CAAA,CAAA,KAAA9D,UAAAA,IAAA8D,EAAA,EAAA,CAAA,KAAAnG,oBAAAmG,CAAAA,SAAA1D,cAAAA,EAAA;AAIzC+D,IAAAA,EAAAA,GAAAA,MAAA;AACdF,MAAAA,iBAAAA,CAAkB;AAAA,QAAA5D,YAAAA;AAAAA,QAAA1C,gBAAAA;AAAAA,QAAAqC,UAAAA;AAAAA,QAAAI,cAAAA;AAAAA,QAAAD,WAAAA;AAAAA,QAAAP,UAAAA;AAAAA,QAAAG,aAAAA;AAAAA,QAAAV,IAAAA;AAAAA,QAAA6D;AAAAA,OAUjB,CAAA;AAAA,IAAC,CAAA;AACDkB,IAAAA,EAAAA,GAAA,CACD/D,YAAAA,EACA1C,gBAAAA,EACAqC,UAAAA,EACAI,cAAAA,EACAD,aACAP,UAAAA,EACAqE,iBAAAA,EACAlE,aAAAA,EACAV,IAAAA,EACA6D,aAAa,CAAA;AACdY,IAAAA,CAAAA,MAAA3D,WAAAA;AAAA2D,IAAAA,CAAAA,MAAAZ,aAAAA;AAAAY,IAAAA,CAAAA,MAAA/D,aAAAA;AAAA+D,IAAAA,CAAAA,MAAAzD,YAAAA;AAAAyD,IAAAA,CAAAA,MAAAlE,UAAAA;AAAAkE,IAAAA,CAAAA,MAAAG,iBAAAA;AAAAH,IAAAA,CAAAA,MAAAzE,IAAAA;AAAAyE,IAAAA,CAAAA,MAAA9D,UAAAA;AAAA8D,IAAAA,CAAAA,OAAAnG,gBAAAA;AAAAmG,IAAAA,CAAAA,OAAA1D,cAAAA;AAAA0D,IAAAA,CAAAA,OAAAK,EAAAA;AAAAL,IAAAA,CAAAA,OAAAM,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAD,IAAAA,EAAAA,GAAAL,EAAA,EAAA,CAAA;AAAAM,IAAAA,EAAAA,GAAAN,EAAA,EAAA,CAAA;AAAA,EAAA;AAvBDO,EAAAA,eAAAA,CAAgBF,IAYbC,EAWF,CAAA;AAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"setTokenByAddressAtom.js","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 tradeModeToPayAmountUnitAtom,\n tradeModeToReceiveAmountUnitAtom,\n tradeModeToSetTokenAtoms,\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 { isTradeMode } from \"@/lib/tradeMode\";\nimport { enabledTradeModesAtom } from \"@/core/state/enabledTradeModesAtom\";\nimport type { FormInputProps } from \"./types\";\nimport type { SwapSideUnion } from \"@velora-dex/sdk\";\nimport { swapSideAtom } from \"@/components/widget/SwapModeSwitcher/state/swapSideAtom\";\nimport { currentSwapInputAtom } from \"@/core/state/currentSwapInputAtom\";\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 const enabledTradeModes = get(enabledTradeModesAtom);\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 let tokenToAddress = formInputProps.tokenToAddress;\n let selectedForm = formInputProps.selectedForm || \"swap\";\n if (!isTradeMode(selectedForm) || !enabledTradeModes.includes(selectedForm)) {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid or disabled selectedForm provided\", { selectedForm });\n // fallback to first enabled trade mode from the config\n selectedForm = enabledTradeModes[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 const currentTradeMode = get.peek(tradeModeAtom);\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 (selectedForm !== \"swap\" && selectedForm !== \"limit\") {\n // swap and limit forms support crosschain,\n // force destChainId = srcChainId for any other form\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 let side = formInputProps.side;\n if (isValidSide(side)) {\n set(currentSwapInputAtom, 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 if (selectedForm === \"swap\") {\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 swap side if both or none amounts are given\n side = get.peek(swapSideAtom);\n }\n } else {\n // fallback to current swap side for non-swap forms\n side = get.peek(swapSideAtom);\n }\n }\n\n // necessary for type safety\n assert(isValidSide(side), \"side must be BUY or SELL\");\n\n const isSwap = selectedForm === \"swap\";\n const isLimitOrOtc = selectedForm === \"limit\" || selectedForm === \"otc\";\n\n const isSwapWithSell = isSwap && side === \"SELL\";\n const isSwapWithBuy = isSwap && side === \"BUY\";\n\n if (\n // given a valid sendAmount\n sendAmount &&\n Number(sendAmount) >= 0 &&\n // and the form is a swap with side=sell or limit or otc\n (isSwapWithSell || isLimitOrOtc)\n ) {\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 if (\n // given a valid receiveAmount\n receiveAmount &&\n Number(receiveAmount) >= 0 &&\n // and the form is a swap with side=buy or limit or otc\n (isSwapWithBuy || isLimitOrOtc)\n ) {\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"],"names":["formInputPropsAtom","atom","logger","getLogger","findTokenInAtoms","get","set","tokenToFind","tokenFromAddress","address","chainId","network","isETHaddress","nativeToken","nativeTokensByChainId","tokenFromLowercase","toLowerCase","tokensMap","fromListsAtom","listByChainId","addressMap","tokenFromLists","importedTokens","peek","importedTokensAtom","importedToken","find","token","autoImportedTokens","autoImportedTokensAtom","autoImportedToken","info","autoAddImportedTokenAtom","isValidSide","side","formInputPropsEffectAtom","atomEffect","bridgeInfosLoadedAtom","enabledTradeModes","enabledTradeModesAtom","formInputProps","sendAmount","undefined","String","receiveAmount","srcChainId","Number","log","destChainId","tokenToAddress","selectedForm","isTradeMode","includes","warn","assert","formAtoms","tradeModeToTokenAtoms","currentTokenFrom","tokenFromAtom","currentTokenTo","tokenToAtom","currentTradeMode","tradeModeAtom","userTradeModeAtom","newTokenFrom","newTokenTo","defaultChainId","wethMapping","wrappedNativeCurrency","getTokenToFind","tokenFromProps","currentToken","areTokensSame","isSupportedChainId","defaultTokenFrom","pickDefaultTokenPair","defaultTokenTo","selectTokenFromAtom","tradeModeToSetTokenAtoms","selectTokenToAtom","currentSwapInputAtom","sideToInputType","swapSideAtom","isSwap","isLimitOrOtc","isSwapWithSell","isSwapWithBuy","formPayAmountAtom","tradeModeToPayAmountUnitAtom","currentSendAmount","read","write","formReceiveAmountAtom","tradeModeToReceiveAmountUnitAtom","currentReceiveAmount","orderDeadline","isNaN","timeUnitAtom","tradeModeToTimeUnitAtom","currentTimeUnit","timestamp","getClosestTimeUnit","isAddress","useActivateFormInputEffects","useAtom","useSetFormInputFromProps","t0","$","_c","t1","setFormInputProps","useSetAtom","t2","t3","useLayoutEffect"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../src/core/limit/state/utils.ts"],"sourcesContent":["import Big from \"big.js\";\nimport type { TimeUnitObject, TimeUnitState } from \"./deadlineAtom\";\nimport type { PriceRates } from \"../types\";\nimport { neverTimeUnit, zeroRates } from \"./constants\";\n\nexport function timeUnitToSeconds(timeUnitObj: TimeUnitObject) {\n switch (timeUnitObj.label) {\n case \"minutes\":\n return timeUnitObj.value * 60;\n case \"hours\":\n return timeUnitObj.value * 60 * 60;\n case \"days\":\n return timeUnitObj.value * 60 * 60 * 24;\n case \"months\":\n return timeUnitObj.value * 60 * 60 * 24 * 30;\n default:\n return 0;\n }\n}\n\nfunction timestampFromNow(timeUnitObj: TimeUnitObject) {\n return Math.floor(Date.now() / 1000 + timeUnitToSeconds(timeUnitObj));\n}\n\nexport function getTimeUnitState(\n timeUnitObj: TimeUnitObject | TimeUnitState
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../src/core/limit/state/utils.ts"],"sourcesContent":["import Big from \"big.js\";\nimport type { TimeUnitObject, TimeUnitState } from \"./deadlineAtom\";\nimport type { PriceRates } from \"../types\";\nimport { neverTimeUnit, zeroRates } from \"./constants\";\n\nexport function timeUnitToSeconds(timeUnitObj: TimeUnitObject) {\n switch (timeUnitObj.label) {\n case \"minutes\":\n return timeUnitObj.value * 60;\n case \"hours\":\n return timeUnitObj.value * 60 * 60;\n case \"days\":\n return timeUnitObj.value * 60 * 60 * 24;\n case \"months\":\n return timeUnitObj.value * 60 * 60 * 24 * 30;\n default:\n return 0;\n }\n}\n\nfunction timestampFromNow(timeUnitObj: TimeUnitObject) {\n return Math.floor(Date.now() / 1000 + timeUnitToSeconds(timeUnitObj));\n}\n\nexport function getTimeUnitState(\n timeUnitObj: TimeUnitObject | TimeUnitState\n): TimeUnitState {\n if (isTimeUnitState(timeUnitObj)) {\n return timeUnitObj;\n }\n return {\n ...timeUnitObj,\n timestamp:\n timeUnitObj.label === neverTimeUnit.label\n ? 0\n : timestampFromNow(timeUnitObj),\n };\n}\n\nfunction isTimeUnitState(\n timeUnitObj: TimeUnitObject | TimeUnitState\n): timeUnitObj is TimeUnitState {\n return \"timestamp\" in timeUnitObj && timeUnitObj.timestamp !== undefined;\n}\n\nconst units = [\n { label: \"months\", ms: 30 * 24 * 60 * 60 * 1000 },\n { label: \"days\", ms: 24 * 60 * 60 * 1000 },\n { label: \"hours\", ms: 60 * 60 * 1000 },\n { label: \"minutes\", ms: 60 * 1000 },\n] as const;\n\nexport function getClosestTimeUnit(timestampS: number) {\n if (timestampS <= 0) return neverTimeUnit;\n const timestampMs = timestampS * 1000;\n\n const now = Date.now();\n\n if (timestampMs <= now) return neverTimeUnit;\n\n const diffMs = timestampMs - now;\n\n for (const unit of units) {\n const value = Math.floor(diffMs / unit.ms);\n if (value > 0) {\n return {\n label: unit.label,\n value,\n };\n }\n }\n return neverTimeUnit;\n}\n\nexport function calculateReceiveAmount(\n payAmount: string,\n priceRates: PriceRates,\n isReversed: boolean\n) {\n const pay = Big(payAmount || \"0\");\n\n if (isReversed) {\n // price = from/to → receive = pay / price\n const price = Big(priceRates.rateReversed || \"0\");\n if (price.eq(0)) return \"0\";\n return pay.div(price).toFixed();\n }\n\n const price = Big(priceRates.rate || \"0\");\n // normal: price = to/from → receive = pay * price\n return pay.mul(price).toFixed();\n}\n\nexport function calculatePayAmount(\n receiveAmount: string,\n priceRates: PriceRates,\n isReversed: boolean\n) {\n const receive = Big(receiveAmount || \"0\");\n\n if (isReversed) {\n // price = from/to → pay = receive * price\n const price = Big(priceRates.rateReversed || \"0\");\n return receive.mul(price).toFixed();\n }\n\n // normal: pay = receive / price\n const price = Big(priceRates.rate || \"0\");\n if (price.eq(0)) return \"0\";\n return receive.div(price).toFixed();\n}\n\nexport function calculateRates(\n receiveAmount: string,\n payAmount: string\n): PriceRates {\n const receive = Big(receiveAmount || \"0\");\n const pay = Big(payAmount || \"0\");\n\n if (pay.eq(0) || receive.eq(0)) return zeroRates;\n\n // normal: price = to/from → price = receive / pay\n const rate = receive.div(pay).toFixed();\n // reversed: price = from/to → price = pay / receive\n const rateReversed = pay.div(receive).toFixed();\n\n return { rate, rateReversed };\n}\n\nexport function getUpdatedRates(\n value: string,\n isReversed: boolean\n): PriceRates {\n const bigPrice = Big(value || 0);\n if (!bigPrice.eq(0)) {\n const rate = bigPrice.toFixed();\n const rateReversed = Big(1).div(bigPrice).toFixed();\n\n return isReversed\n ? { rate: rateReversed, rateReversed: rate }\n : { rate, rateReversed };\n }\n return zeroRates;\n}\n"],"names":["timeUnitToSeconds","timeUnitObj","label","value","timestampFromNow","Math","floor","Date","now","getTimeUnitState","isTimeUnitState","timestamp","neverTimeUnit","undefined","units","ms","getClosestTimeUnit","timestampS","timestampMs","diffMs","unit","calculateReceiveAmount","payAmount","priceRates","isReversed","pay","Big","price","rateReversed","eq","div","toFixed","rate","mul","calculatePayAmount","receiveAmount","receive","calculateRates","zeroRates","getUpdatedRates","bigPrice"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLimitRate.d.ts","sourceRoot":"","sources":["../../../src/core/limit/useLimitRate.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAqDlD,eAAO,MAAM,yBAAyB,GAAI,0CAIvC;IACD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,OAAO,GAAG,KAAK,CAAC;CAC5B;;;;CAkDA,CAAC;AAGF,eAAO,MAAM,YAAY,GACvB,WAAW,OAAO,GAAG,KAAK,KACzB,
|
|
1
|
+
{"version":3,"file":"useLimitRate.d.ts","sourceRoot":"","sources":["../../../src/core/limit/useLimitRate.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAqDlD,eAAO,MAAM,yBAAyB,GAAI,0CAIvC;IACD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,OAAO,GAAG,KAAK,CAAC;CAC5B;;;;CAkDA,CAAC;AAGF,eAAO,MAAM,YAAY,GACvB,WAAW,OAAO,GAAG,KAAK,KACzB,kBAoHF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLimitRate.js","sources":["../../../src/core/limit/useLimitRate.ts"],"sourcesContent":["import { useMarketPriceQuery } from \"@/hooks/swap/prices/market/queries/useMarketPriceQuery\";\nimport {\n usePricesParams,\n type FetchPriceParams,\n} from \"@/hooks/swap/prices/usePricesParams\";\nimport { useTokenPrice } from \"@/hooks/tokens/prices/useTokenPrices\";\nimport Big from \"big.js\";\nimport { parseUnits, formatUnits } from \"viem\";\nimport { useWidgetTokens } from \"../inputs/state/common\";\nimport type { UseLimitRateResult } from \"./types\";\nimport { useAtomValue } from \"@/core/store\";\nimport { tradeModeToTokenAtoms } from \"../inputs/state/common\";\nimport { useMemo } from \"react\";\nimport { useDeltaPriceQuery } from \"@/hooks/swap/prices/delta/queries/useDeltaPriceQuery\";\nimport { isETH } from \"@/tokens/utils/eth\";\nimport { wrappedNativeCurrency } from \"@/lib/constants/weth\";\n\n// 5 min, so as not to change limit price in front of the user too often\nconst PRICE_REFETCH_INTERVAL = 60_000 * 5;\n\nconst useSwapPriceForLimit = ({\n enabled = true,\n refetchInterval = PRICE_REFETCH_INTERVAL,\n tradeMode,\n}: {\n enabled?: boolean;\n refetchInterval?: number;\n tradeMode: \"limit\" | \"otc\";\n}) => {\n const tokenFrom = useAtomValue(\n tradeModeToTokenAtoms[tradeMode].tokenFromAtom\n );\n const { priceParams, chainId } = usePricesParams(tradeMode);\n\n const priceParamsWithAmount: FetchPriceParams = {\n ...priceParams,\n amount: parseUnits(\"1\", tokenFrom.decimals).toString(),\n side: \"SELL\" as const,\n ignoreBadUsdPrice: true,\n };\n\n // @TODO: delta price return quote for less tokens than market price with srcAmount=1,\n // but maybe we should increase srcAmount and use delta prices instead, need to test.\n const { result: marketPriceQuery } = useMarketPriceQuery({\n priceParams: priceParamsWithAmount,\n chainId,\n timeout: 5000,\n query: {\n enabled,\n refetchInterval,\n retry: false,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n },\n });\n\n return {\n price: marketPriceQuery.data,\n isLoading: marketPriceQuery.isLoading,\n };\n};\n\nexport const useDeltaSwapPriceForLimit = ({\n enabled = true,\n refetchInterval = 10_000,\n tradeMode,\n}: {\n enabled?: boolean;\n refetchInterval?: number;\n tradeMode: \"limit\" | \"otc\";\n}) => {\n const { priceParams, chainId, destChainId, isCrossChain } =\n usePricesParams(tradeMode);\n\n // should fetch delta price for crosschain limit order?\n const queryEnabled = enabled && tradeMode === \"limit\";\n\n const crosschainPriceParams: FetchPriceParams = {\n // keep Limit tokenFrom amount because its gas sensitive\n ...priceParams,\n side: \"SELL\" as const,\n ignoreBadUsdPrice: true,\n };\n\n const isLimitOrder = tradeMode === \"limit\";\n\n // disable price routes for crosschain limit orders, as destChain-side swaps are not supported\n const allowBridgeAndSwap = isCrossChain && isLimitOrder ? false : undefined;\n\n // Delta /prices errors when srcToken=ETH;\n // we will pre-wrap ETH->WETH before Swap anyway;\n // be careful not to use deltaPrices.srcToken with the assumption that (tokenFrom=ETH) !== (deltaPrices.srcToken=WETH)\n const srcTokenForDelta =\n isLimitOrder && isETH({ address: priceParams.srcToken })\n ? wrappedNativeCurrency[chainId]\n : priceParams.srcToken;\n\n const { result: deltaPriceQuery } = useDeltaPriceQuery({\n priceParams: {\n ...crosschainPriceParams,\n allowBridgeAndSwap,\n srcToken: srcTokenForDelta,\n },\n chainId,\n destChainId,\n timeout: 5000,\n query: {\n enabled: queryEnabled,\n refetchInterval,\n retry: false,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n },\n });\n\n return {\n price: deltaPriceQuery.data,\n isLoading: deltaPriceQuery.isLoading,\n error: deltaPriceQuery.error,\n };\n};\n\n// define how many tokenTo units one tokenFrom (tokenTo if reversed) unit costs, eg 1 ETH = 3000 USDC\nexport const useLimitRate = (\n tradeMode: \"limit\" | \"otc\"\n): UseLimitRateResult => {\n const { tokenFrom, tokenTo } = useWidgetTokens(tradeMode);\n\n const { data: tokenFromPrice, isLoading: isTokenFromPriceLoading } =\n useTokenPrice(tokenFrom, { refetchInterval: PRICE_REFETCH_INTERVAL });\n const { data: tokenToPrice, isLoading: isTokenToPriceLoading } =\n useTokenPrice(tokenTo, { refetchInterval: PRICE_REFETCH_INTERVAL });\n\n const areFiatPricesLoading = isTokenFromPriceLoading || isTokenToPriceLoading;\n\n // for crosschain limit orders, use the delta price query to correctly set the starting price,\n // accounting for bridge fees, because ex. 1USDC=1USDT will never be possible\n const isCrosschainLOrder =\n tradeMode === \"limit\" && tokenTo && tokenTo.network !== tokenFrom.network;\n\n const fiatPricesAvailable = !!(tokenFromPrice && tokenToPrice);\n const fetchSwapPrice =\n !fiatPricesAvailable && !areFiatPricesLoading && !isCrosschainLOrder;\n\n const { price: swapPrice, isLoading: isSwapPriceLoading } =\n useSwapPriceForLimit({ enabled: fetchSwapPrice, tradeMode });\n\n const {\n price: deltaCrosschainPrice,\n isLoading: isDeltaCrosschainPriceLoading,\n } = useDeltaSwapPriceForLimit({ enabled: isCrosschainLOrder, tradeMode });\n\n const isNonDeltaLoading = areFiatPricesLoading || isSwapPriceLoading;\n\n return useMemo(() => {\n if (!tokenTo) {\n return { isLoading: isNonDeltaLoading };\n }\n\n let rate: string | undefined = undefined;\n let rateReversed: string | undefined = undefined;\n if (isCrosschainLOrder) {\n if (!deltaCrosschainPrice) {\n return { isLoading: isDeltaCrosschainPriceLoading };\n }\n const srcUnits = formatUnits(\n BigInt(deltaCrosschainPrice.srcAmount),\n tokenFrom.decimals\n );\n const destUnits = formatUnits(\n // amount on destChain accounting for decimals\n BigInt(deltaCrosschainPrice.receivedDestAmount),\n tokenTo.decimals\n );\n if (srcUnits === \"0\" || destUnits === \"0\") {\n rate = \"0\";\n rateReversed = \"0\";\n } else {\n rate = Big(destUnits).div(srcUnits).toFixed();\n rateReversed = Big(srcUnits).div(destUnits).toFixed();\n }\n\n return {\n rates: { rate, rateReversed },\n // for Crosschain price we care only about its loading state, not all others\n isLoading: isDeltaCrosschainPriceLoading,\n };\n } else if (fiatPricesAvailable) {\n if (tokenFromPrice.price === 0 || tokenToPrice.price === 0) {\n rate = \"0\";\n rateReversed = \"0\";\n } else {\n rate = Big(tokenFromPrice.price).div(tokenToPrice.price).toFixed();\n rateReversed = Big(tokenToPrice.price)\n .div(tokenFromPrice.price)\n .toFixed();\n }\n } else if (swapPrice) {\n const srcUnits = formatUnits(\n BigInt(swapPrice.srcAmount),\n tokenFrom.decimals\n );\n const destUnits = formatUnits(\n BigInt(swapPrice.destAmount),\n tokenTo.decimals\n );\n\n rate = Big(destUnits).div(srcUnits).toFixed();\n rateReversed = Big(srcUnits).div(destUnits).toFixed();\n }\n\n if (!rate || !rateReversed) {\n return { isLoading: isNonDeltaLoading };\n }\n\n return {\n rates: { rate, rateReversed },\n isLoading: isNonDeltaLoading,\n };\n }, [\n fiatPricesAvailable,\n isNonDeltaLoading,\n swapPrice,\n tokenFrom.decimals,\n tokenFromPrice?.price,\n tokenTo,\n tokenToPrice?.price,\n isCrosschainLOrder,\n deltaCrosschainPrice,\n isDeltaCrosschainPriceLoading,\n ]);\n};\n"],"names":["PRICE_REFETCH_INTERVAL","useSwapPriceForLimit","t0","$","_c","enabled","t1","refetchInterval","t2","tradeMode","undefined","tokenFrom","useAtomValue","tradeModeToTokenAtoms","tokenFromAtom","priceParams","chainId","usePricesParams","t3","decimals","parseUnits","toString","t4","amount","side","ignoreBadUsdPrice","priceParamsWithAmount","t5","retry","refetchOnWindowFocus","refetchOnMount","t6","timeout","query","result","marketPriceQuery","useMarketPriceQuery","t7","data","isLoading","price","useDeltaSwapPriceForLimit","destChainId","isCrossChain","queryEnabled","crosschainPriceParams","isLimitOrder","allowBridgeAndSwap","isETH","address","srcToken","wrappedNativeCurrency","srcTokenForDelta","deltaPriceQuery","useDeltaPriceQuery","t8","error","useLimitRate","tokenTo","useWidgetTokens","tokenFromPrice","isTokenFromPriceLoading","useTokenPrice","tokenToPrice","isTokenToPriceLoading","areFiatPricesLoading","isCrosschainLOrder","network","fiatPricesAvailable","fetchSwapPrice","swapPrice","isSwapPriceLoading","deltaCrosschainPrice","isDeltaCrosschainPriceLoading","isNonDeltaLoading","useMemo","rate","rateReversed","srcUnits","formatUnits","BigInt","srcAmount","destUnits","receivedDestAmount","Big","div","toFixed","rates","destAmount"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useLimitRate.js","sources":["../../../src/core/limit/useLimitRate.ts"],"sourcesContent":["import { useMarketPriceQuery } from \"@/hooks/swap/prices/market/queries/useMarketPriceQuery\";\nimport {\n usePricesParams,\n type FetchPriceParams,\n} from \"@/hooks/swap/prices/usePricesParams\";\nimport { useTokenPrice } from \"@/hooks/tokens/prices/useTokenPrices\";\nimport Big from \"big.js\";\nimport { parseUnits, formatUnits } from \"viem\";\nimport { useWidgetTokens } from \"../inputs/state/common\";\nimport type { UseLimitRateResult } from \"./types\";\nimport { useAtomValue } from \"@/core/store\";\nimport { tradeModeToTokenAtoms } from \"../inputs/state/common\";\nimport { useMemo } from \"react\";\nimport { useDeltaPriceQuery } from \"@/hooks/swap/prices/delta/queries/useDeltaPriceQuery\";\nimport { isETH } from \"@/tokens/utils/eth\";\nimport { wrappedNativeCurrency } from \"@/lib/constants/weth\";\n\n// 5 min, so as not to change limit price in front of the user too often\nconst PRICE_REFETCH_INTERVAL = 60_000 * 5;\n\nconst useSwapPriceForLimit = ({\n enabled = true,\n refetchInterval = PRICE_REFETCH_INTERVAL,\n tradeMode,\n}: {\n enabled?: boolean;\n refetchInterval?: number;\n tradeMode: \"limit\" | \"otc\";\n}) => {\n const tokenFrom = useAtomValue(\n tradeModeToTokenAtoms[tradeMode].tokenFromAtom\n );\n const { priceParams, chainId } = usePricesParams(tradeMode);\n\n const priceParamsWithAmount: FetchPriceParams = {\n ...priceParams,\n amount: parseUnits(\"1\", tokenFrom.decimals).toString(),\n side: \"SELL\" as const,\n ignoreBadUsdPrice: true,\n };\n\n // @TODO: delta price return quote for less tokens than market price with srcAmount=1,\n // but maybe we should increase srcAmount and use delta prices instead, need to test.\n const { result: marketPriceQuery } = useMarketPriceQuery({\n priceParams: priceParamsWithAmount,\n chainId,\n timeout: 5000,\n query: {\n enabled,\n refetchInterval,\n retry: false,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n },\n });\n\n return {\n price: marketPriceQuery.data,\n isLoading: marketPriceQuery.isLoading,\n };\n};\n\nexport const useDeltaSwapPriceForLimit = ({\n enabled = true,\n refetchInterval = 10_000,\n tradeMode,\n}: {\n enabled?: boolean;\n refetchInterval?: number;\n tradeMode: \"limit\" | \"otc\";\n}) => {\n const { priceParams, chainId, destChainId, isCrossChain } =\n usePricesParams(tradeMode);\n\n // should fetch delta price for crosschain limit order?\n const queryEnabled = enabled && tradeMode === \"limit\";\n\n const crosschainPriceParams: FetchPriceParams = {\n // keep Limit tokenFrom amount because its gas sensitive\n ...priceParams,\n side: \"SELL\" as const,\n ignoreBadUsdPrice: true,\n };\n\n const isLimitOrder = tradeMode === \"limit\";\n\n // disable price routes for crosschain limit orders, as destChain-side swaps are not supported\n const allowBridgeAndSwap = isCrossChain && isLimitOrder ? false : undefined;\n\n // Delta /prices errors when srcToken=ETH;\n // we will pre-wrap ETH->WETH before Swap anyway;\n // be careful not to use deltaPrices.srcToken with the assumption that (tokenFrom=ETH) !== (deltaPrices.srcToken=WETH)\n const srcTokenForDelta =\n isLimitOrder && isETH({ address: priceParams.srcToken })\n ? wrappedNativeCurrency[chainId]\n : priceParams.srcToken;\n\n const { result: deltaPriceQuery } = useDeltaPriceQuery({\n priceParams: {\n ...crosschainPriceParams,\n allowBridgeAndSwap,\n srcToken: srcTokenForDelta,\n },\n chainId,\n destChainId,\n timeout: 5000,\n query: {\n enabled: queryEnabled,\n refetchInterval,\n retry: false,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n },\n });\n\n return {\n price: deltaPriceQuery.data,\n isLoading: deltaPriceQuery.isLoading,\n error: deltaPriceQuery.error,\n };\n};\n\n// define how many tokenTo units one tokenFrom (tokenTo if reversed) unit costs, eg 1 ETH = 3000 USDC\nexport const useLimitRate = (\n tradeMode: \"limit\" | \"otc\"\n): UseLimitRateResult => {\n const { tokenFrom, tokenTo } = useWidgetTokens(tradeMode);\n\n const { data: tokenFromPrice, isLoading: isTokenFromPriceLoading } =\n useTokenPrice(tokenFrom, {\n refetchInterval: PRICE_REFETCH_INTERVAL,\n });\n const { data: tokenToPrice, isLoading: isTokenToPriceLoading } =\n useTokenPrice(tokenTo, {\n refetchInterval: PRICE_REFETCH_INTERVAL,\n });\n\n const areFiatPricesLoading = isTokenFromPriceLoading || isTokenToPriceLoading;\n\n // for crosschain limit orders, use the delta price query to correctly set the starting price,\n // accounting for bridge fees, because ex. 1USDC=1USDT will never be possible\n const isCrosschainLOrder =\n tradeMode === \"limit\" && tokenTo && tokenTo.network !== tokenFrom.network;\n\n const fiatPricesAvailable = !!(tokenFromPrice && tokenToPrice);\n const fetchSwapPrice =\n !fiatPricesAvailable && !areFiatPricesLoading && !isCrosschainLOrder;\n\n const { price: swapPrice, isLoading: isSwapPriceLoading } =\n useSwapPriceForLimit({\n enabled: fetchSwapPrice,\n tradeMode,\n });\n\n const {\n price: deltaCrosschainPrice,\n isLoading: isDeltaCrosschainPriceLoading,\n } = useDeltaSwapPriceForLimit({\n enabled: isCrosschainLOrder,\n tradeMode,\n });\n\n const isNonDeltaLoading = areFiatPricesLoading || isSwapPriceLoading;\n\n return useMemo(() => {\n if (!tokenTo) {\n return { isLoading: isNonDeltaLoading };\n }\n\n let rate: string | undefined = undefined;\n let rateReversed: string | undefined = undefined;\n if (isCrosschainLOrder) {\n if (!deltaCrosschainPrice) {\n return { isLoading: isDeltaCrosschainPriceLoading };\n }\n const srcUnits = formatUnits(\n BigInt(deltaCrosschainPrice.srcAmount),\n tokenFrom.decimals\n );\n const destUnits = formatUnits(\n // amount on destChain accounting for decimals\n BigInt(deltaCrosschainPrice.receivedDestAmount),\n tokenTo.decimals\n );\n if (srcUnits === \"0\" || destUnits === \"0\") {\n rate = \"0\";\n rateReversed = \"0\";\n } else {\n rate = Big(destUnits).div(srcUnits).toFixed();\n rateReversed = Big(srcUnits).div(destUnits).toFixed();\n }\n\n return {\n rates: { rate, rateReversed },\n // for Crosschain price we care only about its loading state, not all others\n isLoading: isDeltaCrosschainPriceLoading,\n };\n } else if (fiatPricesAvailable) {\n if (tokenFromPrice.price === 0 || tokenToPrice.price === 0) {\n rate = \"0\";\n rateReversed = \"0\";\n } else {\n rate = Big(tokenFromPrice.price).div(tokenToPrice.price).toFixed();\n rateReversed = Big(tokenToPrice.price)\n .div(tokenFromPrice.price)\n .toFixed();\n }\n } else if (swapPrice) {\n const srcUnits = formatUnits(\n BigInt(swapPrice.srcAmount),\n tokenFrom.decimals\n );\n const destUnits = formatUnits(\n BigInt(swapPrice.destAmount),\n tokenTo.decimals\n );\n\n rate = Big(destUnits).div(srcUnits).toFixed();\n rateReversed = Big(srcUnits).div(destUnits).toFixed();\n }\n\n if (!rate || !rateReversed) {\n return { isLoading: isNonDeltaLoading };\n }\n\n return {\n rates: { rate, rateReversed },\n isLoading: isNonDeltaLoading,\n };\n }, [\n fiatPricesAvailable,\n isNonDeltaLoading,\n swapPrice,\n tokenFrom.decimals,\n tokenFromPrice?.price,\n tokenTo,\n tokenToPrice?.price,\n isCrosschainLOrder,\n deltaCrosschainPrice,\n isDeltaCrosschainPriceLoading,\n ]);\n};\n"],"names":["PRICE_REFETCH_INTERVAL","useSwapPriceForLimit","t0","$","_c","enabled","t1","refetchInterval","t2","tradeMode","undefined","tokenFrom","useAtomValue","tradeModeToTokenAtoms","tokenFromAtom","priceParams","chainId","usePricesParams","t3","decimals","parseUnits","toString","t4","amount","side","ignoreBadUsdPrice","priceParamsWithAmount","t5","retry","refetchOnWindowFocus","refetchOnMount","t6","timeout","query","result","marketPriceQuery","useMarketPriceQuery","t7","data","isLoading","price","useDeltaSwapPriceForLimit","destChainId","isCrossChain","queryEnabled","crosschainPriceParams","isLimitOrder","allowBridgeAndSwap","isETH","address","srcToken","wrappedNativeCurrency","srcTokenForDelta","deltaPriceQuery","useDeltaPriceQuery","t8","error","useLimitRate","tokenTo","useWidgetTokens","tokenFromPrice","isTokenFromPriceLoading","useTokenPrice","tokenToPrice","isTokenToPriceLoading","areFiatPricesLoading","isCrosschainLOrder","network","fiatPricesAvailable","fetchSwapPrice","swapPrice","isSwapPriceLoading","deltaCrosschainPrice","isDeltaCrosschainPriceLoading","isNonDeltaLoading","useMemo","rate","rateReversed","srcUnits","formatUnits","BigInt","srcAmount","destUnits","receivedDestAmount","Big","div","toFixed","rates","destAmount"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOnClickOutside.js","sources":["../../../../src/core/screen/hooks/useOnClickOutside.ts"],"sourcesContent":["import { useClickOutside } from \"@/hooks/useClickOutside\";\nimport { useScreen } from \"../state/hooks/useScreen\";\nimport { screenTypesClosableByOutsideClick } from \"../screenByType\";\n\nexport function useCloseScreenOnClickOutside(\n containerRef: React.RefObject<HTMLDivElement | null
|
|
1
|
+
{"version":3,"file":"useOnClickOutside.js","sources":["../../../../src/core/screen/hooks/useOnClickOutside.ts"],"sourcesContent":["import { useClickOutside } from \"@/hooks/useClickOutside\";\nimport { useScreen } from \"../state/hooks/useScreen\";\nimport { screenTypesClosableByOutsideClick } from \"../screenByType\";\n\nexport function useCloseScreenOnClickOutside(\n containerRef: React.RefObject<HTMLDivElement | null>\n) {\n const { screen, closeScreen } = useScreen();\n useClickOutside(containerRef, () => {\n const screenType = screen?.screenType;\n if (screenType && screenTypesClosableByOutsideClick.includes(screenType))\n closeScreen();\n });\n}\n"],"names":["useCloseScreenOnClickOutside","containerRef","$","_c","screen","closeScreen","useScreen","t0","screenType","screenTypesClosableByOutsideClick","includes","useClickOutside"],"mappings":";;;;;AAIO,SAAAA,6BAAAC,YAAAA,EAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,CAAA,CAAA;AAGL,EAAA,MAAA;AAAA,IAAAC,MAAAA;AAAAA,IAAAC;AAAAA,MAAgCC,SAAAA,EAAU;AAAE,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAAL,CAAAA,QAAAG,WAAAA,IAAAH,EAAA,CAAA,CAAA,KAAAE,QAAAI,UAAAA,EAAA;AACdD,IAAAA,EAAAA,GAAAA,MAAA;AAC5B,MAAA,MAAAC,aAAmBJ,MAAAA,EAAMI,UAAAA;AACzB,MAAA,IAAIA,UAAAA,IAAcC,iCAAAA,CAAiCC,QAAAA,CAAUF,UAAU,CAAA,EAAC;AACtEH,QAAAA,WAAAA,EAAY;AAAA,MAAC;AAAA,IAAC,CAAA;AACjBH,IAAAA,CAAAA,MAAAG,WAAAA;AAAAH,IAAAA,CAAAA,CAAA,CAAA,IAAAE,MAAAA,EAAAI,UAAAA;AAAAN,IAAAA,CAAAA,MAAAK,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAL,EAAA,CAAA,CAAA;AAAA,EAAA;AAJDS,EAAAA,eAAAA,CAAgBV,cAAcM,EAI7B,CAAA;AAAC;;;;"}
|
|
@@ -2,6 +2,8 @@ export declare const screenByType: {
|
|
|
2
2
|
selectToken: ({ drawerContainer, ...props }: import('../../components/widget/Dialog/SelectTokenDialog/SelectTokenDialog').SelectTokenScreenProps) => import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
tradeOverview: ({ flowType, flowProps, }: import('../../components/widget/TradeOverview/TradeOverviewScreen').TradeOverviewScreenProps) => import("react/jsx-runtime").JSX.Element;
|
|
4
4
|
activities: () => import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
compareQuotes: () => import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
bridgePreferences: ({ onGoBack: _onGoBack, onClose: _onClose, initialBridgePreference, initialDisabledBridges, }: import('../../components/widget/BridgePreferences/types').BridgePreferencesScreenProps) => import("react/jsx-runtime").JSX.Element;
|
|
5
7
|
};
|
|
6
8
|
export type ScreenType = keyof typeof screenByType;
|
|
7
9
|
export type FilledScreenState = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screenByType.d.ts","sourceRoot":"","sources":["../../../src/core/screen/screenByType.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"screenByType.d.ts","sourceRoot":"","sources":["../../../src/core/screen/screenByType.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,YAAY;;;;;;CAMxB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,YAAY,CAAC;AAInD,MAAM,MAAM,iBAAiB,GAAG;KAC7B,IAAI,IAAI,UAAU,GAAG;QACpB,UAAU,EAAE,IAAI,CAAC;QACjB,WAAW,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;KAChE;CACF,CAAC,UAAU,CAAC,CAAC;AAEd,eAAO,MAAM,iCAAiC,EAAE,UAAU,EAGzD,CAAC"}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import { ActivitiesScreen } from '../../components/widget/AppHeader/Activities/ActivitiesScreen.js';
|
|
2
|
+
import { BridgePreferencesScreen } from '../../components/widget/BridgePreferences/BridgePreferences.js';
|
|
3
|
+
import { CompareQuotesScreen } from '../../components/widget/CompareQuotes/CompareQuotes.js';
|
|
2
4
|
import { SelectTokenScreen } from '../../components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js';
|
|
3
5
|
import { TradeOverviewScreen } from '../../components/widget/TradeOverview/TradeOverviewScreen.js';
|
|
4
6
|
|
|
5
7
|
const screenByType = {
|
|
6
8
|
selectToken: SelectTokenScreen,
|
|
7
9
|
tradeOverview: TradeOverviewScreen,
|
|
8
|
-
activities: ActivitiesScreen
|
|
10
|
+
activities: ActivitiesScreen,
|
|
11
|
+
compareQuotes: CompareQuotesScreen,
|
|
12
|
+
bridgePreferences: BridgePreferencesScreen
|
|
9
13
|
};
|
|
10
14
|
const screenTypesClosableByOutsideClick = ["selectToken", "activities"];
|
|
11
15
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screenByType.js","sources":["../../../src/core/screen/screenByType.ts"],"sourcesContent":["import { ActivitiesScreen } from \"@/components/widget/AppHeader/Activities/ActivitiesScreen\";\nimport { SelectTokenScreen } from \"@/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog\";\nimport { TradeOverviewScreen } from \"@/components/widget/TradeOverview/TradeOverviewScreen\";\n\nexport const screenByType = {\n selectToken: SelectTokenScreen,\n tradeOverview: TradeOverviewScreen,\n activities: ActivitiesScreen,\n};\n\nexport type ScreenType = keyof typeof screenByType;\n\n// makes a union with exactly matching `{screenType, screenProps: {[screenType]: screenTypeProps}}`,\n// so that setScreen can only be used with one specific screenType per call\nexport type FilledScreenState = {\n [Type in ScreenType]: {\n screenType: Type;\n screenProps: React.ComponentProps<(typeof screenByType)[Type]>;\n };\n}[ScreenType];\n\nexport const screenTypesClosableByOutsideClick: ScreenType[] = [\n \"selectToken\",\n \"activities\",\n];\n"],"names":["screenByType","selectToken","SelectTokenScreen","tradeOverview","TradeOverviewScreen","activities","ActivitiesScreen","screenTypesClosableByOutsideClick"],"mappings":"
|
|
1
|
+
{"version":3,"file":"screenByType.js","sources":["../../../src/core/screen/screenByType.ts"],"sourcesContent":["import { ActivitiesScreen } from \"@/components/widget/AppHeader/Activities/ActivitiesScreen\";\nimport { BridgePreferencesScreen } from \"@/components/widget/BridgePreferences/BridgePreferences\";\nimport { CompareQuotesScreen } from \"@/components/widget/CompareQuotes/CompareQuotes\";\nimport { SelectTokenScreen } from \"@/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog\";\nimport { TradeOverviewScreen } from \"@/components/widget/TradeOverview/TradeOverviewScreen\";\n\nexport const screenByType = {\n selectToken: SelectTokenScreen,\n tradeOverview: TradeOverviewScreen,\n activities: ActivitiesScreen,\n compareQuotes: CompareQuotesScreen,\n bridgePreferences: BridgePreferencesScreen,\n};\n\nexport type ScreenType = keyof typeof screenByType;\n\n// makes a union with exactly matching `{screenType, screenProps: {[screenType]: screenTypeProps}}`,\n// so that setScreen can only be used with one specific screenType per call\nexport type FilledScreenState = {\n [Type in ScreenType]: {\n screenType: Type;\n screenProps: React.ComponentProps<(typeof screenByType)[Type]>;\n };\n}[ScreenType];\n\nexport const screenTypesClosableByOutsideClick: ScreenType[] = [\n \"selectToken\",\n \"activities\",\n];\n"],"names":["screenByType","selectToken","SelectTokenScreen","tradeOverview","TradeOverviewScreen","activities","ActivitiesScreen","compareQuotes","CompareQuotesScreen","bridgePreferences","BridgePreferencesScreen","screenTypesClosableByOutsideClick"],"mappings":";;;;;;AAMO,MAAMA,YAAAA,GAAe;AAAA,EAC1BC,WAAAA,EAAaC,iBAAAA;AAAAA,EACbC,aAAAA,EAAeC,mBAAAA;AAAAA,EACfC,UAAAA,EAAYC,gBAAAA;AAAAA,EACZC,aAAAA,EAAeC,mBAAAA;AAAAA,EACfC,iBAAAA,EAAmBC;AACrB;AAaO,MAAMC,iCAAAA,GAAkD,CAC7D,aAAA,EACA,YAAY;;;;"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { SelectTokenScreenProps } from '../../../../components/widget/Dialog/SelectTokenDialog/SelectTokenDialog';
|
|
2
2
|
import { TradeOverviewScreenProps } from '../../../../components/widget/TradeOverview/TradeOverviewScreen';
|
|
3
|
+
import { BridgePreferencesScreenProps } from '../../../../components/widget/BridgePreferences/types';
|
|
3
4
|
export type UseSetScreenResult = {
|
|
4
5
|
showSelectTokenScreen: (screenProps: SelectTokenScreenProps) => void;
|
|
5
6
|
showTradeOverviewScreen: (screenProps: TradeOverviewScreenProps) => void;
|
|
6
7
|
showActivitiesScreen: () => void;
|
|
8
|
+
showCompareQuotesScreen: () => void;
|
|
9
|
+
showBridgePreferencesScreen: (screenProps: BridgePreferencesScreenProps) => void;
|
|
7
10
|
closeScreen: () => void;
|
|
8
11
|
};
|
|
9
12
|
export declare const useSetScreen: () => UseSetScreenResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSetScreen.d.ts","sourceRoot":"","sources":["../../../../../src/core/screen/state/hooks/useSetScreen.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gEAAgE,CAAC;AAC7G,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uDAAuD,CAAC;
|
|
1
|
+
{"version":3,"file":"useSetScreen.d.ts","sourceRoot":"","sources":["../../../../../src/core/screen/state/hooks/useSetScreen.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gEAAgE,CAAC;AAC7G,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uDAAuD,CAAC;AAEtG,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAEhG,MAAM,MAAM,kBAAkB,GAAG;IAC/B,qBAAqB,EAAE,CAAC,WAAW,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACrE,uBAAuB,EAAE,CAAC,WAAW,EAAE,wBAAwB,KAAK,IAAI,CAAC;IACzE,oBAAoB,EAAE,MAAM,IAAI,CAAC;IACjC,uBAAuB,EAAE,MAAM,IAAI,CAAC;IACpC,2BAA2B,EAAE,CAC3B,WAAW,EAAE,4BAA4B,KACtC,IAAI,CAAC;IACV,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC;AAGF,eAAO,MAAM,YAAY,QAAO,kBAwD/B,CAAC"}
|
|
@@ -3,7 +3,7 @@ import { useSetAtom } from '../../../store.js';
|
|
|
3
3
|
import { screenAtom } from '../screenAtom.js';
|
|
4
4
|
|
|
5
5
|
const useSetScreen = () => {
|
|
6
|
-
const $ = distExports.c(
|
|
6
|
+
const $ = distExports.c(19);
|
|
7
7
|
const setScreen = useSetAtom(screenAtom);
|
|
8
8
|
let t0;
|
|
9
9
|
if ($[0] !== setScreen) {
|
|
@@ -59,22 +59,54 @@ const useSetScreen = () => {
|
|
|
59
59
|
}
|
|
60
60
|
const showActivitiesScreen = t3;
|
|
61
61
|
let t4;
|
|
62
|
-
if ($[8] !==
|
|
63
|
-
t4 = {
|
|
62
|
+
if ($[8] !== setScreen) {
|
|
63
|
+
t4 = () => {
|
|
64
|
+
setScreen({
|
|
65
|
+
screenType: "compareQuotes",
|
|
66
|
+
screenProps: {}
|
|
67
|
+
});
|
|
68
|
+
};
|
|
69
|
+
$[8] = setScreen;
|
|
70
|
+
$[9] = t4;
|
|
71
|
+
} else {
|
|
72
|
+
t4 = $[9];
|
|
73
|
+
}
|
|
74
|
+
const showCompareQuotesScreen = t4;
|
|
75
|
+
let t5;
|
|
76
|
+
if ($[10] !== setScreen) {
|
|
77
|
+
t5 = (screenProps_1) => {
|
|
78
|
+
setScreen({
|
|
79
|
+
screenType: "bridgePreferences",
|
|
80
|
+
screenProps: screenProps_1
|
|
81
|
+
});
|
|
82
|
+
};
|
|
83
|
+
$[10] = setScreen;
|
|
84
|
+
$[11] = t5;
|
|
85
|
+
} else {
|
|
86
|
+
t5 = $[11];
|
|
87
|
+
}
|
|
88
|
+
const showBridgePreferencesScreen = t5;
|
|
89
|
+
let t6;
|
|
90
|
+
if ($[12] !== closeScreen || $[13] !== showActivitiesScreen || $[14] !== showBridgePreferencesScreen || $[15] !== showCompareQuotesScreen || $[16] !== showSelectTokenScreen || $[17] !== showTradeOverviewScreen) {
|
|
91
|
+
t6 = {
|
|
64
92
|
closeScreen,
|
|
65
93
|
showSelectTokenScreen,
|
|
66
94
|
showTradeOverviewScreen,
|
|
67
|
-
showActivitiesScreen
|
|
95
|
+
showActivitiesScreen,
|
|
96
|
+
showCompareQuotesScreen,
|
|
97
|
+
showBridgePreferencesScreen
|
|
68
98
|
};
|
|
69
|
-
$[
|
|
70
|
-
$[
|
|
71
|
-
$[
|
|
72
|
-
$[
|
|
73
|
-
$[
|
|
99
|
+
$[12] = closeScreen;
|
|
100
|
+
$[13] = showActivitiesScreen;
|
|
101
|
+
$[14] = showBridgePreferencesScreen;
|
|
102
|
+
$[15] = showCompareQuotesScreen;
|
|
103
|
+
$[16] = showSelectTokenScreen;
|
|
104
|
+
$[17] = showTradeOverviewScreen;
|
|
105
|
+
$[18] = t6;
|
|
74
106
|
} else {
|
|
75
|
-
|
|
107
|
+
t6 = $[18];
|
|
76
108
|
}
|
|
77
|
-
return
|
|
109
|
+
return t6;
|
|
78
110
|
};
|
|
79
111
|
|
|
80
112
|
export { useSetScreen };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSetScreen.js","sources":["../../../../../src/core/screen/state/hooks/useSetScreen.ts"],"sourcesContent":["import { useSetAtom } from \"@/core/store\";\nimport type { SelectTokenScreenProps } from \"@/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog\";\nimport type { TradeOverviewScreenProps } from \"@/components/widget/TradeOverview/TradeOverviewScreen\";\nimport { screenAtom } from \"../screenAtom\";\n\nexport type UseSetScreenResult = {\n showSelectTokenScreen: (screenProps: SelectTokenScreenProps) => void;\n showTradeOverviewScreen: (screenProps: TradeOverviewScreenProps) => void;\n showActivitiesScreen: () => void;\n closeScreen: () => void;\n};\n\n// Uses useSetAtom to avoid subscribing to atom changes (only provides setters, not values)\nexport const useSetScreen = (): UseSetScreenResult => {\n const setScreen = useSetAtom(screenAtom);\n\n const closeScreen = () => {\n setScreen(null);\n };\n\n const showSelectTokenScreen: UseSetScreenResult[\"showSelectTokenScreen\"] = (\n screenProps
|
|
1
|
+
{"version":3,"file":"useSetScreen.js","sources":["../../../../../src/core/screen/state/hooks/useSetScreen.ts"],"sourcesContent":["import { useSetAtom } from \"@/core/store\";\nimport type { SelectTokenScreenProps } from \"@/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog\";\nimport type { TradeOverviewScreenProps } from \"@/components/widget/TradeOverview/TradeOverviewScreen\";\nimport { screenAtom } from \"../screenAtom\";\nimport type { BridgePreferencesScreenProps } from \"@/components/widget/BridgePreferences/types\";\n\nexport type UseSetScreenResult = {\n showSelectTokenScreen: (screenProps: SelectTokenScreenProps) => void;\n showTradeOverviewScreen: (screenProps: TradeOverviewScreenProps) => void;\n showActivitiesScreen: () => void;\n showCompareQuotesScreen: () => void;\n showBridgePreferencesScreen: (\n screenProps: BridgePreferencesScreenProps\n ) => void;\n closeScreen: () => void;\n};\n\n// Uses useSetAtom to avoid subscribing to atom changes (only provides setters, not values)\nexport const useSetScreen = (): UseSetScreenResult => {\n const setScreen = useSetAtom(screenAtom);\n\n const closeScreen = () => {\n setScreen(null);\n };\n\n const showSelectTokenScreen: UseSetScreenResult[\"showSelectTokenScreen\"] = (\n screenProps\n ) => {\n setScreen({\n screenType: \"selectToken\",\n screenProps,\n });\n };\n\n const showTradeOverviewScreen: UseSetScreenResult[\"showTradeOverviewScreen\"] =\n (screenProps) => {\n setScreen({\n screenType: \"tradeOverview\",\n screenProps,\n });\n };\n\n const showActivitiesScreen: UseSetScreenResult[\"showActivitiesScreen\"] =\n () => {\n setScreen({\n screenType: \"activities\",\n screenProps: {},\n });\n };\n\n const showCompareQuotesScreen: UseSetScreenResult[\"showCompareQuotesScreen\"] =\n () => {\n setScreen({\n screenType: \"compareQuotes\",\n screenProps: {},\n });\n };\n\n const showBridgePreferencesScreen: UseSetScreenResult[\"showBridgePreferencesScreen\"] =\n (screenProps) => {\n setScreen({\n screenType: \"bridgePreferences\",\n screenProps,\n });\n };\n\n return {\n closeScreen,\n showSelectTokenScreen,\n showTradeOverviewScreen,\n showActivitiesScreen,\n showCompareQuotesScreen,\n showBridgePreferencesScreen,\n };\n};\n"],"names":["useSetScreen","$","_c","setScreen","useSetAtom","screenAtom","t0","closeScreen","t1","screenProps","screenType","showSelectTokenScreen","t2","screenProps_0","showTradeOverviewScreen","t3","showActivitiesScreen","t4","showCompareQuotesScreen","t5","screenProps_1","showBridgePreferencesScreen","t6"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enabledTradeModesAtom.d.ts","sourceRoot":"","sources":["../../../src/core/state/enabledTradeModesAtom.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"enabledTradeModesAtom.d.ts","sourceRoot":"","sources":["../../../src/core/state/enabledTradeModesAtom.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AA4CjD,eAAO,MAAM,qBAAqB,mDAGhC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enabledTradeModesAtom.js","sources":["../../../src/core/state/enabledTradeModesAtom.ts"],"sourcesContent":["import { atom } from \"jotai\";\nimport { tradeModesAtom } from \"./configAtom\";\nimport { type TradeMode } from \"./tradeModeAtom\";\nimport type { NonEmptyArray, Prettify } from \"ts-essentials\";\nimport {\n supportedTradeModes as defaultTradeModes,\n isTradeMode,\n} from \"@/lib/tradeMode\";\nimport { isFilledArray } from \"@/lib/utils/tuple\";\n\ntype EnabledTradeModes = Prettify<NonEmptyArray<TradeMode>>;\n\n// with guards against invalid or duplicate trade modes passed in config\nfunction getEnabledTradeModesWithFallback(\n modes: TradeMode[]\n): EnabledTradeModes {\n if (modes.length === 0) return defaultTradeModes;\n const uniqueModes = Array.from(new Set(modes));\n\n const detectedUnsupportedModes: string[] = [];\n const uniqueSupportedModes = uniqueModes.filter((mode) => {\n const isSupported = isTradeMode(mode);\n if (!isSupported) detectedUnsupportedModes.push(mode);\n return isSupported;\n });\n\n const isAllUnsupported = !isFilledArray(uniqueSupportedModes);\n // log once about unsupported modes\n if (detectedUnsupportedModes.length > 0 && !isAllUnsupported) {\n console.warn(\n `Specified unsupported trade modes: ${detectedUnsupportedModes.join(\n \", \"\n )}. Supported trade modes are: ${defaultTradeModes.join(\", \")}`\n );\n }\n\n // fallback to defaults\n if (isAllUnsupported) {\n console.warn(\n `All specified trade modes are unsupported. Supported trade modes are: ${defaultTradeModes.join(\
|
|
1
|
+
{"version":3,"file":"enabledTradeModesAtom.js","sources":["../../../src/core/state/enabledTradeModesAtom.ts"],"sourcesContent":["import { atom } from \"jotai\";\nimport { tradeModesAtom } from \"./configAtom\";\nimport { type TradeMode } from \"./tradeModeAtom\";\nimport type { NonEmptyArray, Prettify } from \"ts-essentials\";\nimport {\n supportedTradeModes as defaultTradeModes,\n isTradeMode,\n} from \"@/lib/tradeMode\";\nimport { isFilledArray } from \"@/lib/utils/tuple\";\n\ntype EnabledTradeModes = Prettify<NonEmptyArray<TradeMode>>;\n\n// with guards against invalid or duplicate trade modes passed in config\nfunction getEnabledTradeModesWithFallback(\n modes: TradeMode[]\n): EnabledTradeModes {\n if (modes.length === 0) return defaultTradeModes;\n const uniqueModes = Array.from(new Set(modes));\n\n const detectedUnsupportedModes: string[] = [];\n const uniqueSupportedModes = uniqueModes.filter((mode) => {\n const isSupported = isTradeMode(mode);\n if (!isSupported) detectedUnsupportedModes.push(mode);\n return isSupported;\n });\n\n const isAllUnsupported = !isFilledArray(uniqueSupportedModes);\n // log once about unsupported modes\n if (detectedUnsupportedModes.length > 0 && !isAllUnsupported) {\n console.warn(\n `Specified unsupported trade modes: ${detectedUnsupportedModes.join(\n \", \"\n )}. Supported trade modes are: ${defaultTradeModes.join(\", \")}`\n );\n }\n\n // fallback to defaults\n if (isAllUnsupported) {\n console.warn(\n `All specified trade modes are unsupported. Supported trade modes are: ${defaultTradeModes.join(\", \")}`\n );\n return defaultTradeModes;\n }\n return uniqueSupportedModes;\n}\n\nexport const enabledTradeModesAtom = atom<EnabledTradeModes>((get) => {\n const tradeModes = get(tradeModesAtom);\n return getEnabledTradeModesWithFallback(tradeModes);\n});\n"],"names":["getEnabledTradeModesWithFallback","modes","length","defaultTradeModes","uniqueModes","Array","from","Set","detectedUnsupportedModes","uniqueSupportedModes","filter","mode","isSupported","isTradeMode","push","isAllUnsupported","isFilledArray","console","warn","join","enabledTradeModesAtom","atom","get","tradeModes","tradeModesAtom"],"mappings":";;;;;AAaA,SAASA,iCACPC,KAAAA,EACmB;AACnB,EAAA,IAAIA,KAAAA,CAAMC,MAAAA,KAAW,CAAA,EAAG,OAAOC,mBAAAA;AAC/B,EAAA,MAAMC,cAAcC,KAAAA,CAAMC,IAAAA,CAAK,IAAIC,GAAAA,CAAIN,KAAK,CAAC,CAAA;AAE7C,EAAA,MAAMO,2BAAqC,EAAA;AAC3C,EAAA,MAAMC,oBAAAA,GAAuBL,WAAAA,CAAYM,MAAAA,CAAQC,CAAAA,IAAAA,KAAS;AACxD,IAAA,MAAMC,WAAAA,GAAcC,YAAYF,IAAI,CAAA;AACpC,IAAA,IAAI,CAACC,WAAAA,EAAaJ,wBAAAA,CAAyBM,IAAAA,CAAKH,IAAI,CAAA;AACpD,IAAA,OAAOC,WAAAA;AAAAA,EACT,CAAC,CAAA;AAED,EAAA,MAAMG,gBAAAA,GAAmB,CAACC,aAAAA,CAAcP,oBAAoB,CAAA;AAE5D,EAAA,IAAID,wBAAAA,CAAyBN,MAAAA,GAAS,CAAA,IAAK,CAACa,gBAAAA,EAAkB;AAC5DE,IAAAA,OAAAA,CAAQC,IAAAA,CACN,CAAA,mCAAA,EAAsCV,wBAAAA,CAAyBW,IAAAA,CAC7D,IACF,CAAC,CAAA,6BAAA,EAAgChB,mBAAAA,CAAkBgB,IAAAA,CAAK,IAAI,CAAC,CAAA,CAC/D,CAAA;AAAA,EACF;AAGA,EAAA,IAAIJ,gBAAAA,EAAkB;AACpBE,IAAAA,OAAAA,CAAQC,KACN,CAAA,sEAAA,EAAyEf,mBAAAA,CAAkBgB,IAAAA,CAAK,IAAI,CAAC,CAAA,CACvG,CAAA;AACA,IAAA,OAAOhB,mBAAAA;AAAAA,EACT;AACA,EAAA,OAAOM,oBAAAA;AACT;AAEO,MAAMW,qBAAAA,GAAwBC,KAAyBC,CAAAA,GAAAA,KAAQ;AACpE,EAAA,MAAMC,UAAAA,GAAaD,IAAIE,cAAc,CAAA;AACrC,EAAA,OAAOxB,iCAAiCuB,UAAU,CAAA;AACpD,CAAC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"priceImpact.d.ts","sourceRoot":"","sources":["../../../src/core/swapDetails/priceImpact.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"priceImpact.d.ts","sourceRoot":"","sources":["../../../src/core/swapDetails/priceImpact.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAEzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAWpE,wBAAgB,0BAA0B,CAAC,EACzC,KAAK,EACL,SAAS,GACV,EAAE;IACD,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;CACpB,GAAG,eAAe,GAAG;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAqCA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { isDeltaPrice } from '../../hooks/swap/prices/delta/queries/useDeltaPriceQuery.js';
|
|
2
3
|
import { cn } from '../../lib/utils/index.js';
|
|
3
|
-
import { getPriceImpact } from '../../lib/utils/priceImpact.js';
|
|
4
|
+
import { getPriceImpact, formatPriceImpactPercent } from '../../lib/utils/priceImpact.js';
|
|
4
5
|
import { TriangleAlert } from 'lucide-react';
|
|
5
6
|
|
|
6
7
|
const tooltip = "The expected influence of the trade over the current market fiat price of the chosen pair of tokens.";
|
|
@@ -20,8 +21,11 @@ function constructPriceImpactDetail({
|
|
|
20
21
|
const {
|
|
21
22
|
priceImpact,
|
|
22
23
|
isHighImpact
|
|
23
|
-
} = getPriceImpact(
|
|
24
|
-
|
|
24
|
+
} = getPriceImpact({
|
|
25
|
+
srcUSD: price.srcUSD,
|
|
26
|
+
destUSD: isDeltaPrice(price) ? price.receivedDestUSD : price.destUSD
|
|
27
|
+
});
|
|
28
|
+
const priceImpactPercent = formatPriceImpactPercent(priceImpact);
|
|
25
29
|
return {
|
|
26
30
|
title,
|
|
27
31
|
value: isHighImpact ? /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"priceImpact.js","sources":["../../../src/core/swapDetails/priceImpact.tsx"],"sourcesContent":["import type { DetailWithValue } from \"@/components/widget/Details/types\";\nimport type { DeltaOrMarketPrice } from \"@/hooks/swap/prices/types\";\nimport { cn } from \"@/lib/utils\";\nimport {
|
|
1
|
+
{"version":3,"file":"priceImpact.js","sources":["../../../src/core/swapDetails/priceImpact.tsx"],"sourcesContent":["import type { DetailWithValue } from \"@/components/widget/Details/types\";\nimport { isDeltaPrice } from \"@/hooks/swap/prices/delta/queries/useDeltaPriceQuery\";\nimport type { DeltaOrMarketPrice } from \"@/hooks/swap/prices/types\";\nimport { cn } from \"@/lib/utils\";\nimport {\n formatPriceImpactPercent,\n getPriceImpact,\n} from \"@/lib/utils/priceImpact\";\nimport { TriangleAlert } from \"lucide-react\";\n\nconst tooltip =\n \"The expected influence of the trade over the current market fiat price of the chosen pair of tokens.\";\n\nexport function constructPriceImpactDetail({\n price,\n isLoading,\n}: {\n price?: DeltaOrMarketPrice;\n isLoading: boolean;\n}): DetailWithValue & {\n isHighImpact?: boolean;\n} {\n const title = \"Price Impact\";\n\n if (!price) {\n return {\n title,\n value: null,\n isLoading,\n tooltip,\n };\n }\n const { priceImpact, isHighImpact } = getPriceImpact({\n srcUSD: price.srcUSD,\n destUSD: isDeltaPrice(price) ? price.receivedDestUSD : price.destUSD,\n });\n\n const priceImpactPercent = formatPriceImpactPercent(priceImpact);\n\n return {\n title,\n value: isHighImpact ? (\n <div className=\"flex items-center gap-1\">\n <TriangleAlert size={14} /> {priceImpactPercent}\n </div>\n ) : (\n priceImpactPercent\n ),\n classes: {\n value: cn({\n \"text-secondary-orange-peel-1 dark:text-secondary-orange-peel-1\":\n isHighImpact,\n }),\n },\n isLoading,\n tooltip,\n isHighImpact,\n };\n}\n"],"names":["tooltip","constructPriceImpactDetail","price","isLoading","title","value","priceImpact","isHighImpact","getPriceImpact","srcUSD","destUSD","isDeltaPrice","receivedDestUSD","priceImpactPercent","formatPriceImpactPercent","classes","cn"],"mappings":";;;;;;AAUA,MAAMA,OAAAA,GACJ,sGAAA;AAEK,SAASC,0BAAAA,CAA2B;AAAA,EACzCC,KAAAA;AAAAA,EACAC;AAIF,CAAA,EAEE;AACA,EAAA,MAAMC,KAAAA,GAAQ,cAAA;AAEd,EAAA,IAAI,CAACF,KAAAA,EAAO;AACV,IAAA,OAAO;AAAA,MACLE,KAAAA;AAAAA,MACAC,KAAAA,EAAO,IAAA;AAAA,MACPF,SAAAA;AAAAA,MACAH;AAAAA,KACF;AAAA,EACF;AACA,EAAA,MAAM;AAAA,IAAEM,WAAAA;AAAAA,IAAaC;AAAAA,MAAiBC,cAAAA,CAAe;AAAA,IACnDC,QAAQP,KAAAA,CAAMO,MAAAA;AAAAA,IACdC,SAASC,YAAAA,CAAaT,KAAK,CAAA,GAAIA,KAAAA,CAAMU,kBAAkBV,KAAAA,CAAMQ;AAAAA,GAC9D,CAAA;AAED,EAAA,MAAMG,kBAAAA,GAAqBC,yBAAyBR,WAAW,CAAA;AAE/D,EAAA,OAAO;AAAA,IACLF,KAAAA;AAAAA,IACAC,KAAAA,EAAOE,YAAAA,mBACL,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,aAAA,EAAA,EAAc,MAAM,EAAA,EAAG,CAAA;AAAA,MAAG,GAAA;AAAA,MAAEM;AAAAA,KAAAA,EAC/B,CAAA,GAEAA,kBAAAA;AAAAA,IAEFE,OAAAA,EAAS;AAAA,MACPV,OAAOW,EAAAA,CAAG;AAAA,QACR,gEAAA,EACET;AAAAA,OACH;AAAA,KACH;AAAA,IACAJ,SAAAA;AAAAA,IACAH,OAAAA;AAAAA,IACAO;AAAAA,GACF;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../src/events/getters/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../src/events/getters/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAQpC,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAgB3D"}
|
|
@@ -2,17 +2,23 @@ import { gasPresetAtom } from '../../components/widget/TradeParameters/state/gas
|
|
|
2
2
|
import { slippageParamAtom } from '../../components/widget/TradeParameters/state/slippageParamAtom.js';
|
|
3
3
|
import { eip1559EnabledAtom } from '../../components/widget/TradeParameters/state/eip1559ParamAtom.js';
|
|
4
4
|
import { swapModeAtom } from '../../components/widget/SwapModeSwitcher/state/swapModeAtom.js';
|
|
5
|
+
import { bridgePreferenceAtom } from '../../components/widget/TradeParameters/state/bridgePreferences/bridgePreferenceAtom.js';
|
|
6
|
+
import { disabledBridgesAtom } from '../../components/widget/TradeParameters/state/bridgePreferences/disabledBridgesAtom.js';
|
|
5
7
|
|
|
6
8
|
function getSettingsState(get) {
|
|
7
9
|
const slippageTolerance = get(slippageParamAtom);
|
|
8
10
|
const transactionSpeed = get(gasPresetAtom);
|
|
9
11
|
const swapMode = get(swapModeAtom);
|
|
10
12
|
const eip1559Enabled = get(eip1559EnabledAtom);
|
|
13
|
+
const bridgePreference = get(bridgePreferenceAtom);
|
|
14
|
+
const disabledBridges = get(disabledBridgesAtom);
|
|
11
15
|
return {
|
|
12
16
|
slippageTolerance,
|
|
13
17
|
transactionSpeed,
|
|
14
18
|
swapMode,
|
|
15
|
-
eip1559Enabled
|
|
19
|
+
eip1559Enabled,
|
|
20
|
+
bridgePreference,
|
|
21
|
+
disabledBridges
|
|
16
22
|
};
|
|
17
23
|
}
|
|
18
24
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sources":["../../../src/events/getters/settings.ts"],"sourcesContent":["import type { SettingsState } from \"../types/common\";\nimport type { Getter } from \"jotai\";\nimport { gasPresetAtom } from \"@/components/widget/TradeParameters/state/gasPresetParamAtom\";\nimport { slippageParamAtom } from \"@/components/widget/TradeParameters/state/slippageParamAtom\";\nimport { eip1559EnabledAtom } from \"@/components/widget/TradeParameters/state/eip1559ParamAtom\";\nimport { swapModeAtom } from \"@/components/widget/SwapModeSwitcher/state/swapModeAtom\";\n\nexport function getSettingsState(get: Getter): SettingsState {\n const slippageTolerance = get(slippageParamAtom);\n const transactionSpeed = get(gasPresetAtom);\n const swapMode = get(swapModeAtom);\n const eip1559Enabled = get(eip1559EnabledAtom);\n\n return {\n slippageTolerance,\n transactionSpeed,\n swapMode,\n eip1559Enabled,\n };\n}\n"],"names":["getSettingsState","get","slippageTolerance","slippageParamAtom","transactionSpeed","gasPresetAtom","swapMode","swapModeAtom","eip1559Enabled","eip1559EnabledAtom"],"mappings":"
|
|
1
|
+
{"version":3,"file":"settings.js","sources":["../../../src/events/getters/settings.ts"],"sourcesContent":["import type { SettingsState } from \"../types/common\";\nimport type { Getter } from \"jotai\";\nimport { gasPresetAtom } from \"@/components/widget/TradeParameters/state/gasPresetParamAtom\";\nimport { slippageParamAtom } from \"@/components/widget/TradeParameters/state/slippageParamAtom\";\nimport { eip1559EnabledAtom } from \"@/components/widget/TradeParameters/state/eip1559ParamAtom\";\nimport { swapModeAtom } from \"@/components/widget/SwapModeSwitcher/state/swapModeAtom\";\nimport { bridgePreferenceAtom } from \"@/components/widget/TradeParameters/state/bridgePreferences/bridgePreferenceAtom\";\nimport { disabledBridgesAtom } from \"@/components/widget/TradeParameters/state/bridgePreferences/disabledBridgesAtom\";\n\nexport function getSettingsState(get: Getter): SettingsState {\n const slippageTolerance = get(slippageParamAtom);\n const transactionSpeed = get(gasPresetAtom);\n const swapMode = get(swapModeAtom);\n const eip1559Enabled = get(eip1559EnabledAtom);\n const bridgePreference = get(bridgePreferenceAtom);\n const disabledBridges = get(disabledBridgesAtom);\n\n return {\n slippageTolerance,\n transactionSpeed,\n swapMode,\n eip1559Enabled,\n bridgePreference,\n disabledBridges,\n };\n}\n"],"names":["getSettingsState","get","slippageTolerance","slippageParamAtom","transactionSpeed","gasPresetAtom","swapMode","swapModeAtom","eip1559Enabled","eip1559EnabledAtom","bridgePreference","bridgePreferenceAtom","disabledBridges","disabledBridgesAtom"],"mappings":";;;;;;;AASO,SAASA,iBAAiBC,GAAAA,EAA4B;AAC3D,EAAA,MAAMC,iBAAAA,GAAoBD,IAAIE,iBAAiB,CAAA;AAC/C,EAAA,MAAMC,gBAAAA,GAAmBH,IAAII,aAAa,CAAA;AAC1C,EAAA,MAAMC,QAAAA,GAAWL,IAAIM,YAAY,CAAA;AACjC,EAAA,MAAMC,cAAAA,GAAiBP,IAAIQ,kBAAkB,CAAA;AAC7C,EAAA,MAAMC,gBAAAA,GAAmBT,IAAIU,oBAAoB,CAAA;AACjD,EAAA,MAAMC,eAAAA,GAAkBX,IAAIY,mBAAmB,CAAA;AAE/C,EAAA,OAAO;AAAA,IACLX,iBAAAA;AAAAA,IACAE,gBAAAA;AAAAA,IACAE,QAAAA;AAAAA,IACAE,cAAAA;AAAAA,IACAE,gBAAAA;AAAAA,IACAE;AAAAA,GACF;AACF;;;;"}
|