@velora-dex/widget 0.8.1 → 0.8.3-dev.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/SearchInput/SearchInput.js.map +1 -1
- package/dist/components/ui/accordion.js.map +1 -1
- package/dist/components/ui/button.js.map +1 -1
- package/dist/components/ui/card.js.map +1 -1
- package/dist/components/ui/drawer.js.map +1 -1
- package/dist/components/ui/dropdown-menu.js.map +1 -1
- package/dist/components/ui/input.js.map +1 -1
- package/dist/components/ui/progress.js.map +1 -1
- package/dist/components/ui/skeleton.js.map +1 -1
- package/dist/components/ui/sonner.js.map +1 -1
- package/dist/components/ui/switch.js.map +1 -1
- package/dist/components/ui/tooltip.js.map +1 -1
- package/dist/components/web3/AccountButton.js.map +1 -1
- package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.js.map +1 -1
- package/dist/components/web3/ConnectExternalProvider/metamaskProviderWrapper.js.map +1 -1
- package/dist/components/web3/ConnectExternalProvider/safeProviderWrapper.js.map +1 -1
- package/dist/components/web3/ConnectExternalProvider/utils.js.map +1 -1
- package/dist/components/web3/ConnectWallets/WalletConnectButtons.js.map +1 -1
- package/dist/components/web3/ConnectWallets/index.js +1 -1
- package/dist/components/web3/ConnectWallets/index.js.map +1 -1
- package/dist/components/web3/ConnectWallets/privy/button.js.map +1 -1
- package/dist/components/web3/ConnectWallets/privy/connectRunner.js.map +1 -1
- package/dist/components/web3/ConnectWallets/privy/iframe.js.map +1 -1
- package/dist/components/web3/ConnectWallets/privy/provider.js.map +1 -1
- package/dist/components/web3/ConnectWallets/walletFlags.js.map +1 -1
- package/dist/components/web3/ConnectWallets/walletIcons.js.map +1 -1
- package/dist/components/web3/ConnectedWallet/ConnectedWallet.js.map +1 -1
- package/dist/components/web3/providers.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/Activities.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/ActivitiesScreen.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/ActivityItems.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/Drawers.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/hooks.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/utils.js.map +1 -1
- package/dist/components/widget/AppHeader/ActivityButton.js.map +1 -1
- package/dist/components/widget/AppHeader/AppHeader.js.map +1 -1
- package/dist/components/widget/AppHeader/TradeModeSwitcher.js.map +1 -1
- package/dist/components/widget/AppHeader/state/showMoreAtom.js.map +1 -1
- package/dist/components/widget/BridgeList/BridgeListItem.js.map +1 -1
- package/dist/components/widget/BridgeList/BridgeProtocolsList.js.map +1 -1
- package/dist/components/widget/BridgeList/BridgesList.js.map +1 -1
- package/dist/components/widget/BridgeList/hooks.d.ts +2 -2
- package/dist/components/widget/BridgeList/hooks.d.ts.map +1 -1
- package/dist/components/widget/BridgeList/hooks.js +79 -73
- package/dist/components/widget/BridgeList/hooks.js.map +1 -1
- package/dist/components/widget/BridgePreferences/BridgePreferences.js.map +1 -1
- package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.d.ts +2 -2
- package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.d.ts.map +1 -1
- package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.js.map +1 -1
- package/dist/components/widget/Button/CancelButton/CancelButton.js.map +1 -1
- package/dist/components/widget/Button/CancelButton/CancelButtonWithDrawer.js.map +1 -1
- package/dist/components/widget/Button/DismissButton.js.map +1 -1
- package/dist/components/widget/Button/RefreshButton.js.map +1 -1
- package/dist/components/widget/CompareQuotes/CompareQuotes.js.map +1 -1
- package/dist/components/widget/Details/DetailWithTooltip.js.map +1 -1
- package/dist/components/widget/Details/DetailWithValueList.js.map +1 -1
- package/dist/components/widget/Details/DetailWithValueListExpandable.js.map +1 -1
- package/dist/components/widget/Details/SwapDetailsExpandable.js.map +1 -1
- package/dist/components/widget/DexesList/DexItem.js.map +1 -1
- package/dist/components/widget/DexesList/DexesList.js.map +1 -1
- package/dist/components/widget/DexesList/getDexProps.js.map +1 -1
- package/dist/components/widget/Dialog/ReceiverAddressDialog/ReceiverAddressDialog.js.map +1 -1
- package/dist/components/widget/Dialog/ReceiverAddressDialog/ReceiverAddressInput.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/RegularTokenList.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/index.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListBody.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListRow.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenSearch.js.map +1 -1
- package/dist/components/widget/Drawer/Overlay.js.map +1 -1
- package/dist/components/widget/Drawer/index.js.map +1 -1
- package/dist/components/widget/Drawer/state/useDrawerControls.js.map +1 -1
- package/dist/components/widget/Duration/Duration.js.map +1 -1
- package/dist/components/widget/Duration/utils.js.map +1 -1
- package/dist/components/widget/EnabledExchanges/EnabledExchanges.js.map +1 -1
- package/dist/components/widget/EnabledExchanges/EnabledExchangesList.js.map +1 -1
- package/dist/components/widget/EnabledList/EnabledList.js.map +1 -1
- package/dist/components/widget/FetchingQuotes/FetchingQuotes.js.map +1 -1
- package/dist/components/widget/Icon/CheckIcon.js.map +1 -1
- package/dist/components/widget/Icon/ChevronIcon.js.map +1 -1
- package/dist/components/widget/Icon/DeltaIcon.js.map +1 -1
- package/dist/components/widget/Icon/EllipseIcon.js.map +1 -1
- package/dist/components/widget/Icon/InfoIcon.js.map +1 -1
- package/dist/components/widget/Icon/MarketIcon.js.map +1 -1
- package/dist/components/widget/Icon/SliderIcon.js.map +1 -1
- package/dist/components/widget/ImportToken/ImportToken.js.map +1 -1
- package/dist/components/widget/ImportToken/useImportTokenDrawer.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/Controls.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/LimitOrderDetails.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderDetails/utils.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/LimitOrderListItem.js +5 -8
- package/dist/components/widget/LimitOrderItem/LimitOrderListItem.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/constants.js.map +1 -1
- package/dist/components/widget/LimitOrderItem/utils.js.map +1 -1
- package/dist/components/widget/LimitPriceInput/index.js +6 -6
- package/dist/components/widget/LimitPriceInput/index.js.map +1 -1
- package/dist/components/widget/Line/Line.js.map +1 -1
- package/dist/components/widget/ListItem/ListItemWithSwitch.js.map +1 -1
- package/dist/components/widget/NetworkIcon/NetworkIconSquare.js.map +1 -1
- package/dist/components/widget/NetworkSwitcher/CompactNetworkSwitcher.js.map +1 -1
- package/dist/components/widget/NetworkSwitcher/NetworkSwitcherDropdown.js.map +1 -1
- package/dist/components/widget/NetworkSwitcher/NetworkSwitcherList.js.map +1 -1
- package/dist/components/widget/NetworkSwitcher/common/AllNetworksItem.js.map +1 -1
- package/dist/components/widget/NetworkSwitcher/common/NetworkItem.js.map +1 -1
- package/dist/components/widget/NetworkSwitcher/utils/items.js.map +1 -1
- package/dist/components/widget/NetworkWithIcon/NetworkIconWithChevron.js.map +1 -1
- package/dist/components/widget/NetworkWithIcon/NetworkWithIcon.js.map +1 -1
- package/dist/components/widget/NumberInput/NumberInput.js.map +1 -1
- package/dist/components/widget/OrderExpiryInput/index.js.map +1 -1
- package/dist/components/widget/OtcOrderItem/OtcOrderDetails/Controls.js.map +1 -1
- package/dist/components/widget/OtcOrderItem/OtcOrderDetails/OtcOrderDetails.js.map +1 -1
- package/dist/components/widget/OtcOrderItem/OtcOrderDetails/utils.js.map +1 -1
- package/dist/components/widget/OtcOrderItem/OtcOrderListItem.js +5 -8
- package/dist/components/widget/OtcOrderItem/OtcOrderListItem.js.map +1 -1
- package/dist/components/widget/OtcOrderItem/constants.js.map +1 -1
- package/dist/components/widget/OtcOrderItem/utils.js.map +1 -1
- package/dist/components/widget/PayReceiveInfo/PayReceiveInfo.js.map +1 -1
- package/dist/components/widget/PoweredBy/PoweredBy.js.map +1 -1
- package/dist/components/widget/ReceiverAddress/ReceiverAddress.js.map +1 -1
- package/dist/components/widget/ReceiverAddress/state/receiverAddressAtom.js.map +1 -1
- package/dist/components/widget/ReceiverAddress/state/subscriptions.js.map +1 -1
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcControls.js.map +1 -1
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcReviewAndConfirm.js.map +1 -1
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/utils.js.map +1 -1
- package/dist/components/widget/RowVirtualizer/RowVirtualizerFixed.js.map +1 -1
- package/dist/components/widget/Screen/GenericScreen.js.map +1 -1
- package/dist/components/widget/Screen/ScreenContainer.js.map +1 -1
- package/dist/components/widget/SelectToken/SelectTokenButton.js.map +1 -1
- package/dist/components/widget/SettingsButton/SettingsButton.js.map +1 -1
- package/dist/components/widget/SwapModeSwitcher/SwapModeSwitcherExpandable.js.map +1 -1
- package/dist/components/widget/SwapModeSwitcher/state/swapModeActionsAtom.js.map +1 -1
- package/dist/components/widget/SwapModeSwitcher/state/swapSideAtom.js.map +1 -1
- package/dist/components/widget/SwapRate/SwapRate.js.map +1 -1
- package/dist/components/widget/SwapRate/SwapRateWithTooltip.js.map +1 -1
- package/dist/components/widget/SwapRate/utils.js.map +1 -1
- package/dist/components/widget/SwapRateWithPriceImpactRow/SwapRateWithPriceImpactRow.js.map +1 -1
- package/dist/components/widget/Tabs/Tabs.js.map +1 -1
- package/dist/components/widget/Toasts/CustomToast.js.map +1 -1
- package/dist/components/widget/TokenBadge/TokenBadge.js.map +1 -1
- package/dist/components/widget/TokenBadge/TokenLink.js.map +1 -1
- package/dist/components/widget/TokenInput/InputContainer.js.map +1 -1
- package/dist/components/widget/TokenInput/InputField.js.map +1 -1
- package/dist/components/widget/TokenInput/InputFooter.js.map +1 -1
- package/dist/components/widget/TokenInput/InputHeader.js.map +1 -1
- package/dist/components/widget/TokenInput/common/Balance.js.map +1 -1
- package/dist/components/widget/TokenInput/common/MaxButtons.js.map +1 -1
- package/dist/components/widget/TokenInput/index.js.map +1 -1
- package/dist/components/widget/TokenSwitcher/TokenSwitcher.js.map +1 -1
- package/dist/components/widget/TradeOverview/CancelButtonWithDrawer.js.map +1 -1
- package/dist/components/widget/TradeOverview/CancelOrder/ConfirmCancel.js.map +1 -1
- package/dist/components/widget/TradeOverview/CancelOrder/utils.js.map +1 -1
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts +2 -2
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js +2 -2
- package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/FillOtcOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/LimitOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/OtcOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/Step/Step.js.map +1 -1
- package/dist/components/widget/TradeOverview/Step/utils.js.map +1 -1
- package/dist/components/widget/TradeOverview/Stepper.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/TradeCompleteFooter.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/TradeCompleteHeader.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/TradeCompletedDetails.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/index.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeComplete/utils.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeDetails.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeDetailsDisplay.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeError/TradeErrorDetails.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeError/TradeErrorFooter.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeError/index.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeError/utils.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeOverviewFooter.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeOverviewHeader.js.map +1 -1
- package/dist/components/widget/TradeOverview/TradeOverviewScreen.js.map +1 -1
- package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.d.ts +2 -2
- package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.js.map +1 -1
- package/dist/components/widget/TradeOverview/VerticalDash.js.map +1 -1
- package/dist/components/widget/TradeOverview/tradeFlowContext.js.map +1 -1
- package/dist/components/widget/TradeOverview/utils/isNonFlowStep.js.map +1 -1
- package/dist/components/widget/TradeOverview/utils/preWrap.js.map +1 -1
- package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.d.ts +4 -1
- package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.d.ts.map +1 -1
- package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.js +1 -1
- package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.js.map +1 -1
- package/dist/components/widget/TradeParameters/BridgePreferenceParameters/BridgePreferenceParameters.js.map +1 -1
- package/dist/components/widget/TradeParameters/BridgePreferenceParameters/useDraftBridgePreferencesState.js.map +1 -1
- package/dist/components/widget/TradeParameters/DegenModeConfirmation.js.map +1 -1
- package/dist/components/widget/TradeParameters/DegenModeParameter.js.map +1 -1
- package/dist/components/widget/TradeParameters/DeltaParameter.js.map +1 -1
- package/dist/components/widget/TradeParameters/EIP1559Parameter.js.map +1 -1
- package/dist/components/widget/TradeParameters/EnabledExchangesParameters/EnabledExchangesParameters.js.map +1 -1
- package/dist/components/widget/TradeParameters/EnabledExchangesParameters/useDraftEnabledExchangesState.js.map +1 -1
- package/dist/components/widget/TradeParameters/SlippageParameter/CustomSlippageInput.js.map +1 -1
- package/dist/components/widget/TradeParameters/SlippageParameter/EditSlippage.js.map +1 -1
- package/dist/components/widget/TradeParameters/SlippageParameter/SlippageParameter.js.map +1 -1
- package/dist/components/widget/TradeParameters/SlippageParameter/hooks/useCustomSlippageProps.js.map +1 -1
- package/dist/components/widget/TradeParameters/TradeParameters.js.map +1 -1
- package/dist/components/widget/TradeParameters/TransactionSpeedParameter.js.map +1 -1
- package/dist/components/widget/TradeParameters/hooks/useIsNotDefaultAnyParameter.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/bridgePreferences/bridgePreferenceAtom.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/bridgePreferences/disabledBridgesAtom.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/bridgePreferences/excludeBridgesAtom.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/bridgePreferences/protocolNameAtom.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/bridgePreferences/resetDraftsAtom.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/bridgePreferences/useBridgePreferences.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/deltaParamActionsAtom.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/enabledExchanges/disabledDexesAtomFamily.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/enabledExchanges/useDisabledDexes.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/slippageParamAtom.js.map +1 -1
- package/dist/components/widget/TradeParameters/state/tradePreferencesAtom.js.map +1 -1
- package/dist/components/widget/TradeParameters/useTempTradeParameters.js.map +1 -1
- package/dist/components/widget/TransactionDetails/LimitOrderDetails/Controls.js.map +1 -1
- package/dist/components/widget/TransactionDetails/LimitOrderDetails/TransactionDetails.js.map +1 -1
- package/dist/components/widget/TransactionDetails/LimitOrderDetails/utils.js.map +1 -1
- package/dist/components/widget/TransactionDetails/TransactionListItem.js.map +1 -1
- package/dist/components/widget/TransactionDetails/utils.js.map +1 -1
- package/dist/components/widget/Twap/CustomDurationDrawer.js.map +1 -1
- package/dist/components/widget/Twap/OrderDuration.js.map +1 -1
- package/dist/components/widget/Twap/OrderSplit.js.map +1 -1
- package/dist/components/widget/Twap/RateProtection.js.map +1 -1
- package/dist/components/widget/Twap/TwapDetailWithTooltip.js.map +1 -1
- package/dist/components/widget/Warning/InsufficientBalanceMessage.js.map +1 -1
- package/dist/components/widget/Warning/Warning.js.map +1 -1
- package/dist/components/widget/Warning/WarningMessage.js.map +1 -1
- package/dist/components/widget/WrapEth/WrapEthContent.js.map +1 -1
- package/dist/components/widget/WrapEth/WrapEthDrawerButton.js.map +1 -1
- package/dist/components/widget/WrapEth/hooks/useSubmitDepositTxMutation.js.map +1 -1
- package/dist/components/widget/WrapEth/hooks/useWrapEthProps.js.map +1 -1
- package/dist/components/widget/YouGet/YouGet.js.map +1 -1
- package/dist/core/ConnectWalletDrawerButton.js.map +1 -1
- package/dist/core/LimitOrderButton.d.ts.map +1 -1
- package/dist/core/LimitOrderButton.js +46 -52
- package/dist/core/LimitOrderButton.js.map +1 -1
- package/dist/core/LimitOrderDetails.js.map +1 -1
- package/dist/core/OtcOrderButton.js.map +1 -1
- package/dist/core/OtcOrderDetails.js.map +1 -1
- package/dist/core/Toaster.js.map +1 -1
- package/dist/core/TradeFlowScreenButton.d.ts +3 -4
- package/dist/core/TradeFlowScreenButton.d.ts.map +1 -1
- package/dist/core/TradeFlowScreenButton.js.map +1 -1
- package/dist/core/TwapDetails.js.map +1 -1
- package/dist/core/Updaters.js.map +1 -1
- package/dist/core/Warnings.js.map +1 -1
- package/dist/core/across/isCrosschainPossible.js.map +1 -1
- package/dist/core/across/utils.js.map +1 -1
- package/dist/core/button/hooks/useWidgetButtonExtraProps.d.ts.map +1 -1
- package/dist/core/button/hooks/useWidgetButtonExtraProps.js +1 -4
- package/dist/core/button/hooks/useWidgetButtonExtraProps.js.map +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/inputs/hooks/useMaxButtonProps.js.map +1 -1
- package/dist/core/inputs/hooks/useTokenFromInputProps.d.ts.map +1 -1
- package/dist/core/inputs/hooks/useTokenFromInputProps.js +2 -2
- package/dist/core/inputs/hooks/useTokenFromInputProps.js.map +1 -1
- package/dist/core/inputs/hooks/useTokenSwitcherProps.js.map +1 -1
- package/dist/core/inputs/hooks/useTokenToInputProps.d.ts.map +1 -1
- package/dist/core/inputs/hooks/useTokenToInputProps.js +2 -2
- package/dist/core/inputs/hooks/useTokenToInputProps.js.map +1 -1
- package/dist/core/inputs/hooks/useWarningMessage.js.map +1 -1
- package/dist/core/inputs/hooks/utils.d.ts.map +1 -1
- package/dist/core/inputs/hooks/utils.js +7 -5
- package/dist/core/inputs/hooks/utils.js.map +1 -1
- package/dist/core/inputs/state/common.js.map +1 -1
- package/dist/core/inputs/state/inputAmountAtom.js.map +1 -1
- package/dist/core/inputs/state/selectedTokenActionsAtom.js.map +1 -1
- package/dist/core/inputs/state/selectedTokenAtom.js.map +1 -1
- package/dist/core/inputs/state/setTokenByAddressAtom.js.map +1 -1
- package/dist/core/inputs/state/subscriptions.js.map +1 -1
- package/dist/core/limit/state/deadlineAtom.js.map +1 -1
- package/dist/core/limit/state/isCrosschainAtom.js.map +1 -1
- package/dist/core/limit/state/limitInputActionsAtom.js.map +1 -1
- package/dist/core/limit/state/limitInputAmountAtom.js.map +1 -1
- package/dist/core/limit/state/receiverAddressAtom.js.map +1 -1
- package/dist/core/limit/state/selectedTokenActionsAtom.js.map +1 -1
- package/dist/core/limit/state/selectedTokenAtom.js.map +1 -1
- package/dist/core/limit/state/utils.js.map +1 -1
- package/dist/core/limit/useLimitDetailsListProps.js.map +1 -1
- package/dist/core/limit/useLimitNotSupported.js.map +1 -1
- package/dist/core/limit/useLimitPriceDifference.js.map +1 -1
- package/dist/core/limit/useLimitPriceInputProps.js.map +1 -1
- package/dist/core/limit/useLimitRate.d.ts +2 -3
- package/dist/core/limit/useLimitRate.d.ts.map +1 -1
- package/dist/core/limit/useLimitRate.js +54 -110
- package/dist/core/limit/useLimitRate.js.map +1 -1
- package/dist/core/limit/useLimitTokenFromInputProps.js.map +1 -1
- package/dist/core/limit/useLimitTokenSwitcherProps.js.map +1 -1
- package/dist/core/limit/useLimitTokenToInputProps.d.ts.map +1 -1
- package/dist/core/limit/useLimitTokenToInputProps.js +1 -4
- package/dist/core/limit/useLimitTokenToInputProps.js.map +1 -1
- package/dist/core/logger.js.map +1 -1
- package/dist/core/otc/state/deadlineAtom.js.map +1 -1
- package/dist/core/otc/state/otcInputActionsAtom.js.map +1 -1
- package/dist/core/otc/state/otcInputAmountAtom.js.map +1 -1
- package/dist/core/otc/state/receiverAddressAtom.js.map +1 -1
- package/dist/core/otc/state/selectedTokenActionsAtom.js.map +1 -1
- package/dist/core/otc/state/selectedTokenAtom.js.map +1 -1
- package/dist/core/otc/useOtcDetailsListProps.js.map +1 -1
- package/dist/core/otc/useOtcNotSupported.js.map +1 -1
- package/dist/core/otc/useOtcPriceDifference.js.map +1 -1
- package/dist/core/otc/useOtcPriceInputProps.js.map +1 -1
- package/dist/core/otc/useOtcTokenFromInputProps.js.map +1 -1
- package/dist/core/otc/useOtcTokenSwitcherProps.js.map +1 -1
- package/dist/core/otc/useOtcTokenToInputProps.js.map +1 -1
- package/dist/core/screen/hooks/useInitialValue.js.map +1 -1
- package/dist/core/screen/hooks/useOnClickOutside.js.map +1 -1
- package/dist/core/screen/hooks/useResizeObserver.js.map +1 -1
- package/dist/core/screen/hooks/useRunOnMount.js.map +1 -1
- package/dist/core/screen/state/hooks/useScreen.js.map +1 -1
- package/dist/core/screen/state/hooks/useScreenValue.js.map +1 -1
- package/dist/core/screen/state/hooks/useSetScreen.js.map +1 -1
- package/dist/core/screen/state/screenAtom.js.map +1 -1
- package/dist/core/state/apiConfigAtom.js.map +1 -1
- package/dist/core/state/chainToAtom.js.map +1 -1
- package/dist/core/state/configActionsAtom.js.map +1 -1
- package/dist/core/state/configEffectAtom.js.map +1 -1
- package/dist/core/state/containerAtom.js.map +1 -1
- package/dist/core/state/enabledChainsAtom.js.map +1 -1
- package/dist/core/state/enabledTradeModesAtom.js.map +1 -1
- package/dist/core/state/externalProviderAtom.js.map +1 -1
- package/dist/core/state/getSelectableDestChains.js.map +1 -1
- package/dist/core/state/isCrosschainAtom.js.map +1 -1
- package/dist/core/state/tradeModeAtom.js.map +1 -1
- package/dist/core/state/validatedPartnerConfigAtom.js.map +1 -1
- package/dist/core/state/validatedReferrerConfigAtom.js.map +1 -1
- package/dist/core/state/widgetEventsAtom.js.map +1 -1
- package/dist/core/subscriptions.js.map +1 -1
- package/dist/core/swapDetails/fees.d.ts.map +1 -1
- package/dist/core/swapDetails/fees.js +16 -11
- package/dist/core/swapDetails/fees.js.map +1 -1
- package/dist/core/swapDetails/maxToPay.d.ts.map +1 -1
- package/dist/core/swapDetails/maxToPay.js +18 -17
- package/dist/core/swapDetails/maxToPay.js.map +1 -1
- package/dist/core/swapDetails/orderRouting.js.map +1 -1
- package/dist/core/swapDetails/priceImpact.js.map +1 -1
- package/dist/core/swapDetails/useSwapDetailsListProps.js.map +1 -1
- package/dist/core/swapDetails/youGet.js.map +1 -1
- package/dist/core/twap/state/isCrosschainAtom.js.map +1 -1
- package/dist/core/twap/state/selectedTokenActionsAtom.js.map +1 -1
- package/dist/core/twap/state/twapInputAmountAtom.js.map +1 -1
- package/dist/core/twap/state/twapParamsAtom.js.map +1 -1
- package/dist/core/twap/state/twapSideAtom.js.map +1 -1
- package/dist/core/twap/twapDetails/minimumReceiveable.d.ts +2 -2
- package/dist/core/twap/twapDetails/minimumReceiveable.d.ts.map +1 -1
- package/dist/core/twap/twapDetails/minimumReceiveable.js.map +1 -1
- package/dist/core/twap/useTwapDetailsListProps.js.map +1 -1
- package/dist/core/twap/useTwapTokenFromInputProps.js.map +1 -1
- package/dist/core/twap/useTwapTokenSwitcherProps.js.map +1 -1
- package/dist/core/twap/useTwapTokenToInputProps.js.map +1 -1
- package/dist/events/effects/formInput.js.map +1 -1
- package/dist/events/effects/price.js.map +1 -1
- package/dist/events/effects/swapMode.js.map +1 -1
- package/dist/events/getters/limit.js.map +1 -1
- package/dist/events/getters/otc.js.map +1 -1
- package/dist/events/getters/settings.js.map +1 -1
- package/dist/events/getters/swap.js.map +1 -1
- package/dist/events/getters/twap.js.map +1 -1
- package/dist/events/getters/widgetState.js.map +1 -1
- package/dist/events/hooks/useActivateEffects.js.map +1 -1
- package/dist/events/hooks/useOnPriceUpdates.js.map +1 -1
- package/dist/events/hooks/useOnWalletConnect.js.map +1 -1
- package/dist/events/types/priceChange.d.ts +2 -2
- package/dist/events/types/priceChange.d.ts.map +1 -1
- package/dist/events/types/swap.d.ts +2 -2
- package/dist/events/types/swap.d.ts.map +1 -1
- package/dist/events/types/twap.d.ts +2 -2
- package/dist/events/types/twap.d.ts.map +1 -1
- package/dist/external/.pnpm/vaul@1.1.2_patch_hash_07b36ba5def3805dde9d543a880ba9e4caf55e5eb58e544faaa2c186846bf3c1__6feb48fe37bd41e9af5c8e81d5a6f4e1/external/vaul/dist/index.js.map +1 -1
- package/dist/hooks/batch/useAwaitCalls.js.map +1 -1
- package/dist/hooks/batch/useBatchWithApproveTxs.js.map +1 -1
- package/dist/hooks/batch/useCanBatchTxs.js.map +1 -1
- package/dist/hooks/batch/useSendBatchTx.js.map +1 -1
- package/dist/hooks/connectors/useIsConnectedSafe.js.map +1 -1
- package/dist/hooks/connectors/useIsGnosisSafeConnector.js.map +1 -1
- package/dist/hooks/connectors/useIsSafeThroughWalletConnect.js.map +1 -1
- package/dist/hooks/gas/useGasPrices.js.map +1 -1
- package/dist/hooks/gas/utils.js.map +1 -1
- package/dist/hooks/getCode/query.js.map +1 -1
- package/dist/hooks/getCode/useIsAccountContract.js.map +1 -1
- package/dist/hooks/getCode/useIsContractAtAddress.js.map +1 -1
- package/dist/hooks/otc/mutations/useCancelLimitOrder.js.map +1 -1
- package/dist/hooks/otc/mutations/useCreateLimitOrder.js.map +1 -1
- package/dist/hooks/otc/mutations/useFillOrder.js.map +1 -1
- package/dist/hooks/otc/mutations/utils.js.map +1 -1
- package/dist/hooks/otc/queries/useLimitOrderRequiredBalance.js.map +1 -1
- package/dist/hooks/otc/queries/useLimitOrders.js.map +1 -1
- package/dist/hooks/otc/tradeFlow/useFillOtcOrderFlow.js.map +1 -1
- package/dist/hooks/otc/tradeFlow/useFillOtcOrderStep.js.map +1 -1
- package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.js.map +1 -1
- package/dist/hooks/otc/tradeFlow/useOtcOrderStep.js.map +1 -1
- package/dist/hooks/permit/hooks/common/useSignArbitraryTypedData.js.map +1 -1
- package/dist/hooks/permit/hooks/common/useSignPermit.js.map +1 -1
- package/dist/hooks/permit/hooks/common/useWalletSupportsPermit.js.map +1 -1
- package/dist/hooks/permit/hooks/permit1/useGetPermitInfo.js.map +1 -1
- package/dist/hooks/permit/hooks/permit1/useGetSafePermitInfo.js.map +1 -1
- package/dist/hooks/permit/hooks/permit1/usePermit1Nonce.js.map +1 -1
- package/dist/hooks/permit/hooks/permit1/useSignTokenPermit1.js.map +1 -1
- package/dist/hooks/permit/hooks/permit1/useTokenFromPermit1Nonce.js.map +1 -1
- package/dist/hooks/permit/hooks/permit1/useTokenFromPermitInfo.js.map +1 -1
- package/dist/hooks/permit/hooks/permit1/useTryToSignPermit1.js.map +1 -1
- package/dist/hooks/permit/hooks/permit2/usePermit2Allowance.js.map +1 -1
- package/dist/hooks/permit/hooks/permit2/usePermit2TransferFromNonce.js.map +1 -1
- package/dist/hooks/permit/hooks/permit2/useSignTokenPermit2TransferFrom.js.map +1 -1
- package/dist/hooks/permit/hooks/permit2/useTokenFromPermit2Allowance.js.map +1 -1
- package/dist/hooks/permit/hooks/permit2/useTokenFromPermit2TransferFromNonce.js.map +1 -1
- package/dist/hooks/permit/utils/constants.js.map +1 -1
- package/dist/hooks/permit/utils/construct.js.map +1 -1
- package/dist/hooks/permit/utils/deadlines.js.map +1 -1
- package/dist/hooks/permit/utils/detect.js.map +1 -1
- package/dist/hooks/permit/utils/domainSeparator.js.map +1 -1
- package/dist/hooks/permit/utils/encodeArgs.js.map +1 -1
- package/dist/hooks/permit/utils/trySignPermit1.js.map +1 -1
- package/dist/hooks/permit/utils/utils.js.map +1 -1
- package/dist/hooks/sdk/useGetContracts.js.map +1 -1
- package/dist/hooks/sdk/useSpender.js.map +1 -1
- package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.d.ts +3 -4
- package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.js.map +1 -1
- package/dist/hooks/swap/prices/delta/bridge/utils.d.ts +6 -3
- package/dist/hooks/swap/prices/delta/bridge/utils.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/bridge/utils.js +20 -17
- package/dist/hooks/swap/prices/delta/bridge/utils.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/useCreatePreSignableTwapOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.d.ts +2 -2
- package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.js +5 -5
- package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/useDepositAndSubmitTwapOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.d.ts +2 -2
- package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.js +2 -2
- package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/usePreSignAndSubmitTwapOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.js +27 -28
- package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/types.d.ts +3 -3
- package/dist/hooks/swap/prices/delta/mutations/types.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.js +2 -2
- package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrdersEvents.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts +2 -2
- package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js +5 -5
- package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useCreatePreSignableDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.js +27 -28
- package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useIsDeltaOrderCancellable.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.d.ts +2 -2
- package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.js +2 -2
- package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useSendDepositPreSignDeltaOrderTx.js +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useSendDepositPreSignDeltaOrderTx.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.js +1 -1
- package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/utils.d.ts +5 -6
- package/dist/hooks/swap/prices/delta/mutations/utils.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/mutations/utils.js +6 -6
- package/dist/hooks/swap/prices/delta/mutations/utils.js.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/types.d.ts +2 -1
- package/dist/hooks/swap/prices/delta/orders/types.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/unposted/effect.js.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/unposted/index.js.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/unposted/storage.js.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/unposted/utils.d.ts +11 -14
- package/dist/hooks/swap/prices/delta/orders/unposted/utils.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/unposted/utils.js +3 -3
- package/dist/hooks/swap/prices/delta/orders/unposted/utils.js.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/utils.d.ts +2 -2
- package/dist/hooks/swap/prices/delta/orders/utils.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/orders/utils.js +6 -3
- package/dist/hooks/swap/prices/delta/orders/utils.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/common.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/getBridgeInfoQueryData.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeInfo/useBridgeInfo.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/bridgeProtocols/useBridgeProtocols.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/errors.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaOrderPreConditions.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts +17 -34
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js +6 -6
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useIsTokenSupportedInDelta.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/prices/factory.d.ts.map +1 -1
- package/dist/hooks/swap/prices/factory.js +1 -1
- package/dist/hooks/swap/prices/factory.js.map +1 -1
- package/dist/hooks/swap/prices/market/mutations/useBuildTx.js.map +1 -1
- package/dist/hooks/swap/prices/market/mutations/useSendMarketSwapTx.js.map +1 -1
- package/dist/hooks/swap/prices/market/queries/dexesList/useDexesList.js.map +1 -1
- package/dist/hooks/swap/prices/market/queries/errors.js.map +1 -1
- package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.d.ts +1 -1
- package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.js.map +1 -1
- package/dist/hooks/swap/prices/market/queries/useSpenderAndContracts.js.map +1 -1
- package/dist/hooks/swap/prices/types.d.ts +2 -3
- package/dist/hooks/swap/prices/types.d.ts.map +1 -1
- package/dist/hooks/swap/prices/usePricesParams.js.map +1 -1
- package/dist/hooks/swap/prices/useSwapPrices.d.ts +3 -3
- package/dist/hooks/swap/prices/useSwapPrices.d.ts.map +1 -1
- package/dist/hooks/swap/prices/useSwapPrices.js.map +1 -1
- package/dist/hooks/swap/prices/useTokenInputsFromPrice.js +3 -3
- package/dist/hooks/swap/prices/useTokenInputsFromPrice.js.map +1 -1
- package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.d.ts +2 -2
- package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.d.ts.map +1 -1
- package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.js.map +1 -1
- package/dist/hooks/swap/prices/useTwapPrices.d.ts +4 -5
- package/dist/hooks/swap/prices/useTwapPrices.d.ts.map +1 -1
- package/dist/hooks/swap/prices/useTwapPrices.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/errors.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.d.ts +10 -17
- package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.js +6 -6
- package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/factory/preSignAndSubmitOrderFactory.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useApproveOrPermitEvents.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useBatchWrapAndApprove.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useConstructGasParams.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useRequiredAllowanceForOrders.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/useSignPermit1Or2.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/utils.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts +5 -5
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.js +119 -124
- 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/useLimitOrderFlow.d.ts +2 -2
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js +159 -196
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useLimitOrderStep.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/swap/tradeFlow/useTwapFlow.d.ts +5 -5
- package/dist/hooks/swap/tradeFlow/useTwapFlow.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useTwapFlow.js +217 -229
- package/dist/hooks/swap/tradeFlow/useTwapFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useTwapSwapStep.js.map +1 -1
- package/dist/hooks/tokens/allowance/useGenericTokenAllowance.js.map +1 -1
- package/dist/hooks/tokens/allowance/useTokenAllowance.js.map +1 -1
- package/dist/hooks/tokens/allowance/utils.js.map +1 -1
- package/dist/hooks/tokens/balances/queries.js.map +1 -1
- package/dist/hooks/tokens/balances/useAttachTokenBalanceMultichain.js.map +1 -1
- package/dist/hooks/tokens/balances/useInvalidateTokenData.js.map +1 -1
- package/dist/hooks/tokens/balances/useIsInsufficientTokenBalance.js.map +1 -1
- package/dist/hooks/tokens/balances/useIsLimitOrderInsufficientBalance.js.map +1 -1
- package/dist/hooks/tokens/balances/useMultichainTokenBalances.js.map +1 -1
- package/dist/hooks/tokens/balances/useSelectedTokenBalances.js.map +1 -1
- package/dist/hooks/tokens/balances/useTokenBalance.js.map +1 -1
- package/dist/hooks/tokens/data/useCombineTokensWithFetched.js.map +1 -1
- package/dist/hooks/tokens/data/useFetchTokens.js.map +1 -1
- package/dist/hooks/tokens/data/useMultichainTokensData.js.map +1 -1
- package/dist/hooks/tokens/prices/queries.js.map +1 -1
- package/dist/hooks/tokens/prices/useMultichainTokenPrices.js.map +1 -1
- package/dist/hooks/tokens/prices/useTokenPrices.js.map +1 -1
- package/dist/hooks/tokens/useAllTokensWithFilter.js.map +1 -1
- package/dist/hooks/tokens/useNativeToken.js.map +1 -1
- package/dist/hooks/tokens/useTokenTaxFee.js.map +1 -1
- package/dist/hooks/tokens/useTokensByAddress.js.map +1 -1
- package/dist/hooks/tokens/useTokensFromAcross.js.map +1 -1
- package/dist/hooks/txs/mutations/useApprove.js.map +1 -1
- package/dist/hooks/txs/mutations/useDepositWeth.js.map +1 -1
- package/dist/hooks/txs/mutations/useReplaceTx.js.map +1 -1
- package/dist/hooks/txs/mutations/useSendTx.js.map +1 -1
- package/dist/hooks/txs/queries/useAccountNonce.js.map +1 -1
- package/dist/hooks/txs/queries/useAwaitTx.js.map +1 -1
- package/dist/hooks/txs/queries/useTxFees.js.map +1 -1
- package/dist/hooks/txs/queries/useTxHistory.js.map +1 -1
- package/dist/hooks/txs/queries/useTxResponse.js.map +1 -1
- package/dist/hooks/txs/queries/useWalletCanReplaceTx.js.map +1 -1
- package/dist/hooks/txs/queries/utils.js.map +1 -1
- package/dist/hooks/useAvailableCrosses.js.map +1 -1
- package/dist/hooks/useBreakpoints.js.map +1 -1
- package/dist/hooks/useBridgeInfo.js.map +1 -1
- package/dist/hooks/useBridgeProtocols.js.map +1 -1
- package/dist/hooks/useCachedQueryError.js.map +1 -1
- package/dist/hooks/useChainMatches.js.map +1 -1
- package/dist/hooks/useClickOutside.js.map +1 -1
- package/dist/hooks/useCurrentChain.js.map +1 -1
- package/dist/hooks/useDebouncedInputState.js.map +1 -1
- package/dist/hooks/useEIP1559Enabled.js.map +1 -1
- package/dist/hooks/useGlobalDeltaEnabled.js.map +1 -1
- package/dist/hooks/useIsCrosschainPossible.js.map +1 -1
- package/dist/hooks/useMinViemClient.js.map +1 -1
- package/dist/hooks/useSDK.d.ts +19 -3
- package/dist/hooks/useSDK.d.ts.map +1 -1
- package/dist/hooks/useSDK.js +65 -35
- package/dist/hooks/useSDK.js.map +1 -1
- package/dist/hooks/useSelectableDestChains.js.map +1 -1
- package/dist/hooks/useSlippage.js.map +1 -1
- package/dist/hooks/useSwitchChainWithGuard.js.map +1 -1
- package/dist/lib/constants/urls.js.map +1 -1
- package/dist/lib/ipfs.js.map +1 -1
- package/dist/lib/queryClient.js +1 -1
- package/dist/lib/queryClient.js.map +1 -1
- package/dist/lib/tradeMode.js.map +1 -1
- package/dist/lib/utils/approval.js.map +1 -1
- package/dist/lib/utils/atomWithCompare.js.map +1 -1
- package/dist/lib/utils/copyToClipboard.js.map +1 -1
- package/dist/lib/utils/delta.js.map +1 -1
- package/dist/lib/utils/dexes.js.map +1 -1
- package/dist/lib/utils/explorer.js.map +1 -1
- package/dist/lib/utils/fee.js.map +1 -1
- package/dist/lib/utils/formatFiatPrice.js.map +1 -1
- package/dist/lib/utils/formatPercent.js.map +1 -1
- package/dist/lib/utils/formatTokenBalance.js.map +1 -1
- package/dist/lib/utils/index.js.map +1 -1
- package/dist/lib/utils/logger.js.map +1 -1
- package/dist/lib/utils/metabase.js.map +1 -1
- package/dist/lib/utils/mobile.js.map +1 -1
- package/dist/lib/utils/price.d.ts +5 -2
- package/dist/lib/utils/price.d.ts.map +1 -1
- package/dist/lib/utils/price.js +8 -5
- package/dist/lib/utils/price.js.map +1 -1
- package/dist/lib/utils/priceImpact.js.map +1 -1
- package/dist/lib/utils/providerErrors.js.map +1 -1
- package/dist/lib/utils/rate.js.map +1 -1
- package/dist/lib/utils/removeZeroDecimals.js.map +1 -1
- package/dist/lib/utils/savedAmountUSD.js.map +1 -1
- package/dist/lib/utils/scaleFactor.js.map +1 -1
- package/dist/lib/utils/slippage.js.map +1 -1
- package/dist/lib/utils/time.js.map +1 -1
- package/dist/lib/utils/toDecimal.js.map +1 -1
- package/dist/lib/utils/toasts.js.map +1 -1
- package/dist/lib/utils/tradeFlow.js.map +1 -1
- package/dist/lib/utils/transactionHandlers.js.map +1 -1
- package/dist/lib/utils/tuple.js.map +1 -1
- package/dist/lib/utils/twap.d.ts +2 -2
- package/dist/lib/utils/twap.d.ts.map +1 -1
- package/dist/lib/utils/twap.js +2 -2
- package/dist/lib/utils/twap.js.map +1 -1
- package/dist/lib/utils/useDateNow.js.map +1 -1
- package/dist/lib/web3/wagmi/config.js.map +1 -1
- package/dist/lib/web3/wagmi/external.js.map +1 -1
- package/dist/lib/web3/wagmi/isInsideSafeIframe.js.map +1 -1
- package/dist/lib/web3/wagmi/switchChain.js.map +1 -1
- package/dist/lib/web3/wagmi/utils.js.map +1 -1
- package/dist/tokens/blacklist.js.map +1 -1
- package/dist/tokens/constructor.js.map +1 -1
- package/dist/tokens/defaultTokens.js.map +1 -1
- package/dist/tokens/hooks.js.map +1 -1
- package/dist/tokens/lists/constants.js.map +1 -1
- package/dist/tokens/lists/download.js.map +1 -1
- package/dist/tokens/lists/state/effects.js.map +1 -1
- package/dist/tokens/lists/state/tokenListsActionsAtom.js.map +1 -1
- package/dist/tokens/lists/state/tokenListsStateAtom.js.map +1 -1
- package/dist/tokens/overrides.js.map +1 -1
- package/dist/tokens/queries.js.map +1 -1
- package/dist/tokens/stabeCoins/hooks.js.map +1 -1
- package/dist/tokens/stabeCoins/index.js.map +1 -1
- package/dist/tokens/state/addImportedTokenAtom.js.map +1 -1
- package/dist/tokens/state/allTokensByChainAtom.js.map +1 -1
- package/dist/tokens/state/constructTokens.js.map +1 -1
- package/dist/tokens/state/fromListsAtom.js.map +1 -1
- package/dist/tokens/utils/areTokensSame.js.map +1 -1
- package/dist/tokens/utils/brand.js.map +1 -1
- package/dist/tokens/utils/eth.js.map +1 -1
- package/dist/tokens/utils/filtering.js.map +1 -1
- package/dist/tokens/utils/sets.js.map +1 -1
- package/dist/tokens/utils/sorting.js.map +1 -1
- package/dist/tokens/utils/transferAmountsFromReceipt.js.map +1 -1
- package/dist/transactions/hash.js.map +1 -1
- package/dist/transactions/queries/ensureCallsStatus.js.map +1 -1
- package/dist/transactions/queries/ensureEstimateFeesPerGas.js.map +1 -1
- package/dist/transactions/queries/ensureTxReceipt.js.map +1 -1
- package/dist/transactions/queries/ensureTxResponse.js.map +1 -1
- package/dist/transactions/state/effects/finalize.js.map +1 -1
- package/dist/transactions/state/hooks/useActivateEffects.js.map +1 -1
- package/dist/transactions/state/hooks/useMarkTxAsDropped.js.map +1 -1
- package/dist/transactions/state/hooks/useTransactions.js.map +1 -1
- package/dist/transactions/state/transactionsActionAtom.js.map +1 -1
- package/dist/transactions/state/transactionsAtom.js.map +1 -1
- package/dist/transactions/status.js.map +1 -1
- package/dist/transactions/utils.js.map +1 -1
- package/package.json +6 -6
- package/dist/hooks/swap/prices/delta/bridge/const.d.ts +0 -8
- package/dist/hooks/swap/prices/delta/bridge/const.d.ts.map +0 -1
- package/dist/hooks/swap/prices/delta/bridge/const.js +0 -13
- package/dist/hooks/swap/prices/delta/bridge/const.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setTokenByAddressAtom.js","names":["atom","Setter","useAtom","useSetAtom","atomEffect","Effect","isAddress","Address","isETHaddress","nativeTokensByChainId","fromListsAtom","autoImportedTokensAtom","importedTokensAtom","Token","useLayoutEffect","isSupportedChainId","areTokensSame","SupportedChainId","pickDefaultTokenPair","tradeModeAtom","userTradeModeAtom","sideToInputType","tradeModeToCurrentInputAtom","tradeModeToPayAmountUnitAtom","tradeModeToReceiveAmountUnitAtom","tradeModeToSetTokenAtoms","tradeModeToSideAtom","tradeModeToTimeUnitAtom","tradeModeToTokenAtoms","wrappedNativeCurrency","autoAddImportedTokenAtom","getLogger","assert","bridgeInfosLoadedAtom","isTradeMode","tradeModesWithCrosschain","tradeModesWithSide","availableTradeModesAtom","enabledTradeModesFromConfigAtom","FormInputProps","SwapSideUnion","getClosestTimeUnit","formInputPropsAtom","RelaxedFormInputProps","NonNullable","K","logger","GetterWithPeek","Parameters","FindTokenAtomsInput","tokenToFind","address","network","get","set","findTokenInAtoms","tokenFromAddress","chainId","nativeToken","tokenFromLowercase","toLowerCase","tokensMap","listByChainId","addressMap","tokenFromLists","importedTokens","peek","importedToken","find","token","autoImportedTokens","autoImportedToken","info","isValidSide","side","formInputPropsEffectAtom","availableTradeModes","formInputProps","sendAmount","undefined","String","receiveAmount","srcChainId","Number","log","destChainId","currentTradeMode","tokenToAddress","selectedForm","includes","warn","formAtoms","currentTokenFrom","tokenFromAtom","currentTokenTo","tokenToAtom","newTokenFrom","newTokenTo","defaultChainId","has","wethMapping","Record","getTokenToFind","tokenFromProps","currentToken","defaultTokenFrom","defaultTokenTo","selectTokenFromAtom","selectTokenToAtom","currentSideAtom","currentInputAtom","isTradeModeWithSide","isTradeModeWithoutSide","isSell","isBuy","isValidSendAmount","isValidReceiveAmount","formPayAmountAtom","currentSendAmount","read","write","formReceiveAmountAtom","currentReceiveAmount","orderDeadline","isNaN","timeUnitAtom","currentTimeUnit","timestamp","useActivateFormInputEffects","useSetFormInputFromProps","t0","$","_c","t1","setFormInputProps","t2","t3"],"sources":["../../../../src/core/inputs/state/setTokenByAddressAtom.ts"],"sourcesContent":["import { atom, type Setter } from \"jotai\";\nimport { useAtom, useSetAtom } from \"@/core/store\";\nimport { atomEffect, type Effect } from \"jotai-effect\";\nimport { isAddress, type Address } from \"viem\";\nimport { isETHaddress } from \"@/tokens/utils/eth\";\nimport { nativeTokensByChainId } from \"@/tokens/constructor\";\nimport { fromListsAtom } from \"@/tokens/state/fromListsAtom\";\nimport {\n autoImportedTokensAtom,\n importedTokensAtom,\n} from \"@/tokens/state/importedTokensAtom\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useLayoutEffect } from \"react\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\nimport { areTokensSame } from \"@/tokens/utils/areTokensSame\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { pickDefaultTokenPair } from \"@/tokens/defaultTokens\";\nimport { tradeModeAtom, userTradeModeAtom } from \"@/core/state/tradeModeAtom\";\nimport {\n sideToInputType,\n tradeModeToCurrentInputAtom,\n tradeModeToPayAmountUnitAtom,\n tradeModeToReceiveAmountUnitAtom,\n tradeModeToSetTokenAtoms,\n tradeModeToSideAtom,\n tradeModeToTimeUnitAtom,\n tradeModeToTokenAtoms,\n} from \"./common\";\nimport { wrappedNativeCurrency } from \"@/lib/constants/weth\";\nimport { autoAddImportedTokenAtom } from \"@/tokens/state/addImportedTokenAtom\";\nimport { getLogger } from \"@/core/logger\";\nimport { assert } from \"ts-essentials\";\nimport { bridgeInfosLoadedAtom } from \"@/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom\";\nimport {\n isTradeMode,\n tradeModesWithCrosschain,\n tradeModesWithSide,\n} from \"@/lib/tradeMode\";\nimport {\n availableTradeModesAtom,\n enabledTradeModesFromConfigAtom,\n} from \"@/core/state/enabledTradeModesAtom\";\nimport type { FormInputProps } from \"./types\";\nimport type { SwapSideUnion } from \"@velora-dex/sdk\";\nimport { getClosestTimeUnit } from \"@/core/limit/state/utils\";\n\nexport const formInputPropsAtom = atom<FormInputProps>({});\n\n// in case formInputPros passed to Widget are not exactly expected types\ntype RelaxedFormInputProps = {\n [K in keyof FormInputProps]?: NonNullable<FormInputProps[K]> extends string\n ? string\n : NonNullable<FormInputProps[K]> extends number\n ? number\n : FormInputProps[K];\n};\n\nconst logger = getLogger(\"FormInputProps\");\n\ntype GetterWithPeek = Parameters<Effect>[0];\n\ntype FindTokenAtomsInput = {\n tokenToFind: { address: Address; network: SupportedChainId };\n get: GetterWithPeek;\n set: Setter;\n};\n\nfunction findTokenInAtoms({\n get,\n set,\n tokenToFind,\n}: FindTokenAtomsInput): Token | undefined {\n const tokenFromAddress = tokenToFind.address;\n const chainId = tokenToFind.network;\n\n if (isETHaddress(tokenFromAddress)) {\n // if tokenFrom is ETH, set the native token for tokenFrom Input\n const nativeToken = nativeTokensByChainId[chainId];\n return nativeToken;\n }\n\n const tokenFromLowercase = tokenFromAddress.toLowerCase();\n\n // find the token from the token Lists for the srcChainId,\n // and retry to find the token when allTokens are updated (token lists loaded)\n const tokensMap = get(fromListsAtom).listByChainId[chainId]?.addressMap;\n const tokenFromLists = tokensMap?.[tokenFromLowercase];\n if (tokenFromLists) {\n return tokenFromLists;\n }\n\n // find the token from the imported tokens,\n // don't retry if user imports more tokens during the session\n const importedTokens = get.peek(importedTokensAtom);\n const importedToken = importedTokens[chainId]?.find(\n (token) => token.address.toLowerCase() === tokenFromLowercase\n );\n if (importedToken) {\n return importedToken;\n }\n\n // subscribe to auto-imported tokens, which will be added to only when tokenAddress prop is supplied from outside the widget\n const autoImportedTokens = get(autoImportedTokensAtom);\n // looking through auto-imported tokens isn't strictly necessary because importedTokens atom is updated together with autoImportedTokens atom,\n // except for consistency, and so that we don't have to subscribe to importedTokens atom that would retrigger formProps matching on manual token import\n const autoImportedToken = autoImportedTokens.find(\n (token) =>\n token.address.toLowerCase() === tokenFromLowercase &&\n token.network === chainId\n );\n if (autoImportedToken) {\n return autoImportedToken;\n }\n\n logger.info(\n \"token not available in widget. Will attempt to import from chain\",\n {\n address: tokenFromAddress,\n chainId,\n }\n );\n\n // trigger Token fetch and eventual import when tokenFromAddress is not found in available token lists and atoms\n set(autoAddImportedTokenAtom, { address: tokenFromAddress, chainId });\n}\n\nfunction isValidSide(side: string | undefined): side is SwapSideUnion {\n return side === \"BUY\" || side === \"SELL\";\n}\n\nconst formInputPropsEffectAtom = atomEffect((get, set) => {\n // subscribe to bridgeInfosLoadedAtom to have up-to-date available crosses\n // and retry token finding each time when bridgeInfo changes\n get(bridgeInfosLoadedAtom);\n\n // subscribe to enabledTradeModesFromConfigAtom to react to changes in enabled trade modes\n get(enabledTradeModesFromConfigAtom);\n // and use availableTradeModesAtom as final source of truth (it derrives from enabledTradeModesFromConfigAtom)\n const availableTradeModes = get.peek(availableTradeModesAtom);\n\n const formInputProps: RelaxedFormInputProps = get(formInputPropsAtom);\n const { tokenFromAddress } = formInputProps;\n\n // guard against amounts passed as numbers when props are supplied from outside the Widget and types are ignored\n const sendAmount =\n formInputProps.sendAmount !== undefined\n ? String(formInputProps.sendAmount)\n : undefined;\n const receiveAmount =\n formInputProps.receiveAmount !== undefined\n ? String(formInputProps.receiveAmount)\n : undefined;\n\n // guard against chainId passed as string when props are supplied from outside the Widget and types are ignored\n const srcChainId =\n formInputProps.srcChainId !== undefined\n ? Number(formInputProps.srcChainId)\n : undefined;\n\n logger.log(\"using external props to set Widget form input\", formInputProps);\n\n let destChainId =\n formInputProps.destChainId !== undefined\n ? Number(formInputProps.destChainId)\n : undefined;\n\n const currentTradeMode = get.peek(tradeModeAtom);\n\n let tokenToAddress = formInputProps.tokenToAddress;\n let selectedForm = formInputProps.selectedForm || currentTradeMode;\n if (\n !isTradeMode(selectedForm) ||\n !availableTradeModes.includes(selectedForm)\n ) {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid, disabled or unavailable selectedForm provided\", {\n selectedForm,\n });\n // fallback to first available trade mode\n selectedForm = availableTradeModes[0];\n }\n\n // necessary for type safety\n assert(isTradeMode(selectedForm), \"selectedForm must be a valid trade mode\");\n\n const formAtoms = tradeModeToTokenAtoms[selectedForm];\n const currentTokenFrom = get.peek(formAtoms.tokenFromAtom);\n const currentTokenTo = get.peek(formAtoms.tokenToAtom);\n\n if (currentTradeMode !== selectedForm) {\n set(userTradeModeAtom, selectedForm);\n }\n\n let newTokenFrom: Token | undefined;\n let newTokenTo: Token | undefined;\n\n // if chain isn't given in props, match current srcChainId\n const defaultChainId = currentTokenFrom.network;\n\n if (!tradeModesWithCrosschain.has(selectedForm)) {\n // force destChainId = srcChainId for trade modes that don't support crosschain\n destChainId = srcChainId;\n }\n\n if (\n selectedForm === \"otc\" &&\n tokenToAddress &&\n isETHaddress(tokenToAddress)\n ) {\n const wethMapping: Record<number, Address> = wrappedNativeCurrency;\n // OTC Orders don't support ETH as tokenTo=takerAsset,\n // more logical to use WETH instead of no token at all\n tokenToAddress = wethMapping[destChainId || defaultChainId];\n }\n\n {\n // match tokenFromAddress and srcChainId to a new tokenFrom to select\n const tokenToFind = getTokenToFind({\n tokenFromProps: { address: tokenFromAddress, network: srcChainId },\n currentToken: currentTokenFrom,\n defaultChainId,\n });\n if (tokenToFind) {\n newTokenFrom = findTokenInAtoms({\n get,\n tokenToFind,\n set,\n });\n }\n }\n\n {\n // match tokenToAddress and destChainId to a new tokenTo to select\n const tokenToFind = getTokenToFind({\n tokenFromProps: { address: tokenToAddress, network: destChainId },\n currentToken: currentTokenTo,\n defaultChainId,\n });\n if (tokenToFind) {\n newTokenTo = findTokenInAtoms({\n get,\n tokenToFind,\n set,\n });\n }\n }\n\n if (newTokenFrom && newTokenTo && areTokensSame(newTokenFrom, newTokenTo)) {\n // if tokens are the same, skip tokenTo\n newTokenTo = undefined;\n }\n\n if (\n !newTokenFrom &&\n !tokenFromAddress &&\n srcChainId &&\n isSupportedChainId(srcChainId) &&\n srcChainId !== currentTokenFrom.network\n ) {\n // no tokenAddress given, but chainId is provided and different from current\n const [defaultTokenFrom] = pickDefaultTokenPair(srcChainId, selectedForm);\n // set default token for the chain\n newTokenFrom = defaultTokenFrom;\n }\n\n if (\n !newTokenTo &&\n !tokenToAddress &&\n destChainId &&\n isSupportedChainId(destChainId) &&\n destChainId !== currentTokenTo?.network\n ) {\n // no tokenAddress given, but chainId is provided and different from current\n const [, defaultTokenTo] = pickDefaultTokenPair(destChainId, selectedForm);\n // set default token for the chain\n newTokenTo = defaultTokenTo;\n }\n\n if (newTokenFrom) {\n const selectTokenFromAtom =\n tradeModeToSetTokenAtoms[selectedForm].tokenFromAtom;\n set(selectTokenFromAtom, newTokenFrom);\n }\n if (newTokenTo) {\n const selectTokenToAtom =\n tradeModeToSetTokenAtoms[selectedForm].tokenToAtom;\n set(selectTokenToAtom, newTokenTo);\n }\n\n const currentSideAtom = tradeModeToSideAtom[selectedForm];\n const currentInputAtom = tradeModeToCurrentInputAtom[selectedForm];\n\n let side = formInputProps.side;\n\n if (tradeModesWithSide.has(selectedForm)) {\n if (isValidSide(side)) {\n set(currentInputAtom, sideToInputType[side]);\n } else {\n if (side) {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid side provided, must be BUY or SELL\", { side });\n }\n\n if (sendAmount && !receiveAmount) {\n side = \"SELL\"; // sendAmount is given and receiveAmount isn't -> SELL\n } else if (receiveAmount && !sendAmount) {\n side = \"BUY\"; // receiveAmount is given and sendAmount isn't -> BUY\n } else {\n // fallback to current side if both or none amounts are given\n side = get.peek(currentSideAtom);\n }\n }\n } else {\n side = get.peek(currentSideAtom);\n }\n\n // necessary for type safety\n assert(isValidSide(side), \"side must be BUY or SELL\");\n\n const isTradeModeWithSide = tradeModesWithSide.has(selectedForm);\n const isTradeModeWithoutSide = !isTradeModeWithSide;\n\n const isSell =\n isTradeModeWithoutSide || (isTradeModeWithSide && side === \"SELL\");\n const isBuy =\n isTradeModeWithoutSide || (isTradeModeWithSide && side === \"BUY\");\n\n const isValidSendAmount = sendAmount && Number(sendAmount) >= 0;\n const isValidReceiveAmount = receiveAmount && Number(receiveAmount) >= 0;\n\n // given a valid sendAmount\n // and the form with side=sell or without side\n if (isValidSendAmount && isSell) {\n // update the send amount\n const formPayAmountAtom = tradeModeToPayAmountUnitAtom[selectedForm];\n const currentSendAmount = get.peek(formPayAmountAtom.read);\n if (currentSendAmount !== sendAmount) {\n set(formPayAmountAtom.write, sendAmount);\n }\n }\n\n // given a valid receiveAmount\n // and the form with side=buy or without side\n if (isValidReceiveAmount && isBuy) {\n // update the receive amount\n const formReceiveAmountAtom =\n tradeModeToReceiveAmountUnitAtom[selectedForm];\n const currentReceiveAmount = get.peek(formReceiveAmountAtom.read);\n if (currentReceiveAmount !== receiveAmount) {\n set(formReceiveAmountAtom.write, receiveAmount);\n }\n }\n\n if (selectedForm === \"limit\" || selectedForm === \"otc\") {\n // OTC and Limit forms support order deadline param\n const orderDeadline = Number(formInputProps.orderDeadline);\n if (orderDeadline !== undefined && !isNaN(orderDeadline)) {\n const timeUnitAtom = tradeModeToTimeUnitAtom[selectedForm];\n const currentTimeUnit = get.peek(timeUnitAtom);\n\n if (currentTimeUnit.timestamp !== orderDeadline) {\n set(timeUnitAtom, {\n // set closest time unit for better UX\n ...getClosestTimeUnit(orderDeadline),\n // set exact timestamp\n timestamp: orderDeadline,\n });\n }\n }\n }\n});\n\nfunction getTokenToFind({\n tokenFromProps,\n currentToken,\n defaultChainId,\n}: {\n tokenFromProps: { address?: string; network?: number };\n currentToken?: Token;\n defaultChainId: SupportedChainId;\n}): { address: Address; network: SupportedChainId } | undefined {\n if (!tokenFromProps.address) return;\n // guard against malformed addresses passed through props\n if (!isAddress(tokenFromProps.address)) {\n logger.warn(\"malformed token address provided\", {\n address: tokenFromProps.address,\n });\n return;\n }\n\n const network = tokenFromProps.network || defaultChainId;\n\n // unsupported chainId provided, can't select this Token\n if (!isSupportedChainId(network)) {\n logger.warn(\"unsupported chainId provided\", { network });\n return;\n }\n\n if (\n currentToken &&\n areTokensSame(currentToken, {\n address: tokenFromProps.address,\n network,\n })\n ) {\n // same token already there\n return;\n }\n\n return { address: tokenFromProps.address, network };\n}\n\nexport function useActivateFormInputEffects() {\n useAtom(formInputPropsEffectAtom);\n}\n\nexport function useSetFormInputFromProps({\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n receiveAmount,\n side,\n orderDeadline,\n}: FormInputProps = {}) {\n const setFormInputProps = useSetAtom(formInputPropsAtom);\n\n // match props together as they are supplied together from outside the Widget,\n // on any one prop change, the whole form input props are updated as long as they are passed together to the Widget\n useLayoutEffect(() => {\n setFormInputProps({\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n receiveAmount,\n side,\n orderDeadline,\n });\n }, [\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n setFormInputProps,\n receiveAmount,\n side,\n orderDeadline,\n ]);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setTokenByAddressAtom.js","names":["atom","Setter","useAtom","useSetAtom","atomEffect","Effect","isAddress","Address","isETHaddress","nativeTokensByChainId","fromListsAtom","autoImportedTokensAtom","importedTokensAtom","Token","useLayoutEffect","isSupportedChainId","areTokensSame","SupportedChainId","pickDefaultTokenPair","tradeModeAtom","userTradeModeAtom","sideToInputType","tradeModeToCurrentInputAtom","tradeModeToPayAmountUnitAtom","tradeModeToReceiveAmountUnitAtom","tradeModeToSetTokenAtoms","tradeModeToSideAtom","tradeModeToTimeUnitAtom","tradeModeToTokenAtoms","wrappedNativeCurrency","autoAddImportedTokenAtom","getLogger","assert","bridgeInfosLoadedAtom","isTradeMode","tradeModesWithCrosschain","tradeModesWithSide","availableTradeModesAtom","enabledTradeModesFromConfigAtom","FormInputProps","SwapSideUnion","getClosestTimeUnit","formInputPropsAtom","RelaxedFormInputProps","NonNullable","K","logger","GetterWithPeek","Parameters","FindTokenAtomsInput","tokenToFind","address","network","get","set","findTokenInAtoms","tokenFromAddress","chainId","nativeToken","tokenFromLowercase","toLowerCase","tokensMap","listByChainId","addressMap","tokenFromLists","importedTokens","peek","importedToken","find","token","autoImportedTokens","autoImportedToken","info","isValidSide","side","formInputPropsEffectAtom","availableTradeModes","formInputProps","sendAmount","undefined","String","receiveAmount","srcChainId","Number","log","destChainId","currentTradeMode","tokenToAddress","selectedForm","includes","warn","formAtoms","currentTokenFrom","tokenFromAtom","currentTokenTo","tokenToAtom","newTokenFrom","newTokenTo","defaultChainId","has","wethMapping","Record","getTokenToFind","tokenFromProps","currentToken","defaultTokenFrom","defaultTokenTo","selectTokenFromAtom","selectTokenToAtom","currentSideAtom","currentInputAtom","isTradeModeWithSide","isTradeModeWithoutSide","isSell","isBuy","isValidSendAmount","isValidReceiveAmount","formPayAmountAtom","currentSendAmount","read","write","formReceiveAmountAtom","currentReceiveAmount","orderDeadline","isNaN","timeUnitAtom","currentTimeUnit","timestamp","useActivateFormInputEffects","useSetFormInputFromProps","t0","$","_c","t1","setFormInputProps","t2","t3"],"sources":["../../../../src/core/inputs/state/setTokenByAddressAtom.ts"],"sourcesContent":["import { atom, type Setter } from \"jotai\";\nimport { useAtom, useSetAtom } from \"@/core/store\";\nimport { atomEffect, type Effect } from \"jotai-effect\";\nimport { isAddress, type Address } from \"viem\";\nimport { isETHaddress } from \"@/tokens/utils/eth\";\nimport { nativeTokensByChainId } from \"@/tokens/constructor\";\nimport { fromListsAtom } from \"@/tokens/state/fromListsAtom\";\nimport {\n autoImportedTokensAtom,\n importedTokensAtom,\n} from \"@/tokens/state/importedTokensAtom\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useLayoutEffect } from \"react\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\nimport { areTokensSame } from \"@/tokens/utils/areTokensSame\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { pickDefaultTokenPair } from \"@/tokens/defaultTokens\";\nimport { tradeModeAtom, userTradeModeAtom } from \"@/core/state/tradeModeAtom\";\nimport {\n sideToInputType,\n tradeModeToCurrentInputAtom,\n tradeModeToPayAmountUnitAtom,\n tradeModeToReceiveAmountUnitAtom,\n tradeModeToSetTokenAtoms,\n tradeModeToSideAtom,\n tradeModeToTimeUnitAtom,\n tradeModeToTokenAtoms,\n} from \"./common\";\nimport { wrappedNativeCurrency } from \"@/lib/constants/weth\";\nimport { autoAddImportedTokenAtom } from \"@/tokens/state/addImportedTokenAtom\";\nimport { getLogger } from \"@/core/logger\";\nimport { assert } from \"ts-essentials\";\nimport { bridgeInfosLoadedAtom } from \"@/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom\";\nimport {\n isTradeMode,\n tradeModesWithCrosschain,\n tradeModesWithSide,\n} from \"@/lib/tradeMode\";\nimport {\n availableTradeModesAtom,\n enabledTradeModesFromConfigAtom,\n} from \"@/core/state/enabledTradeModesAtom\";\nimport type { FormInputProps } from \"./types\";\nimport type { SwapSideUnion } from \"@velora-dex/sdk\";\nimport { getClosestTimeUnit } from \"@/core/limit/state/utils\";\n\nexport const formInputPropsAtom = atom<FormInputProps>({});\n\n// in case formInputPros passed to Widget are not exactly expected types\ntype RelaxedFormInputProps = {\n [K in keyof FormInputProps]?: NonNullable<FormInputProps[K]> extends string\n ? string\n : NonNullable<FormInputProps[K]> extends number\n ? number\n : FormInputProps[K];\n};\n\nconst logger = getLogger(\"FormInputProps\");\n\ntype GetterWithPeek = Parameters<Effect>[0];\n\ntype FindTokenAtomsInput = {\n tokenToFind: { address: Address; network: SupportedChainId };\n get: GetterWithPeek;\n set: Setter;\n};\n\nfunction findTokenInAtoms({\n get,\n set,\n tokenToFind,\n}: FindTokenAtomsInput): Token | undefined {\n const tokenFromAddress = tokenToFind.address;\n const chainId = tokenToFind.network;\n\n if (isETHaddress(tokenFromAddress)) {\n // if tokenFrom is ETH, set the native token for tokenFrom Input\n const nativeToken = nativeTokensByChainId[chainId];\n return nativeToken;\n }\n\n const tokenFromLowercase = tokenFromAddress.toLowerCase();\n\n // find the token from the token Lists for the srcChainId,\n // and retry to find the token when allTokens are updated (token lists loaded)\n const tokensMap = get(fromListsAtom).listByChainId[chainId]?.addressMap;\n const tokenFromLists = tokensMap?.[tokenFromLowercase];\n if (tokenFromLists) {\n return tokenFromLists;\n }\n\n // find the token from the imported tokens,\n // don't retry if user imports more tokens during the session\n const importedTokens = get.peek(importedTokensAtom);\n const importedToken = importedTokens[chainId]?.find(\n (token) => token.address.toLowerCase() === tokenFromLowercase\n );\n if (importedToken) {\n return importedToken;\n }\n\n // subscribe to auto-imported tokens, which will be added to only when tokenAddress prop is supplied from outside the widget\n const autoImportedTokens = get(autoImportedTokensAtom);\n // looking through auto-imported tokens isn't strictly necessary because importedTokens atom is updated together with autoImportedTokens atom,\n // except for consistency, and so that we don't have to subscribe to importedTokens atom that would retrigger formProps matching on manual token import\n const autoImportedToken = autoImportedTokens.find(\n (token) =>\n token.address.toLowerCase() === tokenFromLowercase &&\n token.network === chainId\n );\n if (autoImportedToken) {\n return autoImportedToken;\n }\n\n logger.info(\n \"token not available in widget. Will attempt to import from chain\",\n {\n address: tokenFromAddress,\n chainId,\n }\n );\n\n // trigger Token fetch and eventual import when tokenFromAddress is not found in available token lists and atoms\n set(autoAddImportedTokenAtom, { address: tokenFromAddress, chainId });\n}\n\nfunction isValidSide(side: string | undefined): side is SwapSideUnion {\n return side === \"BUY\" || side === \"SELL\";\n}\n\nconst formInputPropsEffectAtom = atomEffect((get, set) => {\n // subscribe to bridgeInfosLoadedAtom to have up-to-date available crosses\n // and retry token finding each time when bridgeInfo changes\n get(bridgeInfosLoadedAtom);\n\n // subscribe to enabledTradeModesFromConfigAtom to react to changes in enabled trade modes\n get(enabledTradeModesFromConfigAtom);\n // and use availableTradeModesAtom as final source of truth (it derrives from enabledTradeModesFromConfigAtom)\n const availableTradeModes = get.peek(availableTradeModesAtom);\n\n const formInputProps: RelaxedFormInputProps = get(formInputPropsAtom);\n const { tokenFromAddress } = formInputProps;\n\n // guard against amounts passed as numbers when props are supplied from outside the Widget and types are ignored\n const sendAmount =\n formInputProps.sendAmount !== undefined\n ? String(formInputProps.sendAmount)\n : undefined;\n const receiveAmount =\n formInputProps.receiveAmount !== undefined\n ? String(formInputProps.receiveAmount)\n : undefined;\n\n // guard against chainId passed as string when props are supplied from outside the Widget and types are ignored\n const srcChainId =\n formInputProps.srcChainId !== undefined\n ? Number(formInputProps.srcChainId)\n : undefined;\n\n logger.log(\"using external props to set Widget form input\", formInputProps);\n\n let destChainId =\n formInputProps.destChainId !== undefined\n ? Number(formInputProps.destChainId)\n : undefined;\n\n const currentTradeMode = get.peek(tradeModeAtom);\n\n let tokenToAddress = formInputProps.tokenToAddress;\n let selectedForm = formInputProps.selectedForm || currentTradeMode;\n if (\n !isTradeMode(selectedForm) ||\n !availableTradeModes.includes(selectedForm)\n ) {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid, disabled or unavailable selectedForm provided\", {\n selectedForm,\n });\n // fallback to first available trade mode\n selectedForm = availableTradeModes[0];\n }\n\n // necessary for type safety\n assert(isTradeMode(selectedForm), \"selectedForm must be a valid trade mode\");\n\n const formAtoms = tradeModeToTokenAtoms[selectedForm];\n const currentTokenFrom = get.peek(formAtoms.tokenFromAtom);\n const currentTokenTo = get.peek(formAtoms.tokenToAtom);\n\n if (currentTradeMode !== selectedForm) {\n set(userTradeModeAtom, selectedForm);\n }\n\n let newTokenFrom: Token | undefined;\n let newTokenTo: Token | undefined;\n\n // if chain isn't given in props, match current srcChainId\n const defaultChainId = currentTokenFrom.network;\n\n if (!tradeModesWithCrosschain.has(selectedForm)) {\n // force destChainId = srcChainId for trade modes that don't support crosschain\n destChainId = srcChainId;\n }\n\n if (\n selectedForm === \"otc\" &&\n tokenToAddress &&\n isETHaddress(tokenToAddress)\n ) {\n const wethMapping: Record<number, Address> = wrappedNativeCurrency;\n // OTC Orders don't support ETH as tokenTo=takerAsset,\n // more logical to use WETH instead of no token at all\n tokenToAddress = wethMapping[destChainId || defaultChainId];\n }\n\n {\n // match tokenFromAddress and srcChainId to a new tokenFrom to select\n const tokenToFind = getTokenToFind({\n tokenFromProps: { address: tokenFromAddress, network: srcChainId },\n currentToken: currentTokenFrom,\n defaultChainId,\n });\n if (tokenToFind) {\n newTokenFrom = findTokenInAtoms({\n get,\n tokenToFind,\n set,\n });\n }\n }\n\n {\n // match tokenToAddress and destChainId to a new tokenTo to select\n const tokenToFind = getTokenToFind({\n tokenFromProps: { address: tokenToAddress, network: destChainId },\n currentToken: currentTokenTo,\n defaultChainId,\n });\n if (tokenToFind) {\n newTokenTo = findTokenInAtoms({\n get,\n tokenToFind,\n set,\n });\n }\n }\n\n if (newTokenFrom && newTokenTo && areTokensSame(newTokenFrom, newTokenTo)) {\n // if tokens are the same, skip tokenTo\n newTokenTo = undefined;\n }\n\n if (\n !newTokenFrom &&\n !tokenFromAddress &&\n srcChainId &&\n isSupportedChainId(srcChainId) &&\n srcChainId !== currentTokenFrom.network\n ) {\n // no tokenAddress given, but chainId is provided and different from current\n const [defaultTokenFrom] = pickDefaultTokenPair(srcChainId, selectedForm);\n // set default token for the chain\n newTokenFrom = defaultTokenFrom;\n }\n\n if (\n !newTokenTo &&\n !tokenToAddress &&\n destChainId &&\n isSupportedChainId(destChainId) &&\n destChainId !== currentTokenTo?.network\n ) {\n // no tokenAddress given, but chainId is provided and different from current\n const [, defaultTokenTo] = pickDefaultTokenPair(destChainId, selectedForm);\n // set default token for the chain\n newTokenTo = defaultTokenTo;\n }\n\n if (newTokenFrom) {\n const selectTokenFromAtom =\n tradeModeToSetTokenAtoms[selectedForm].tokenFromAtom;\n set(selectTokenFromAtom, newTokenFrom);\n }\n if (newTokenTo) {\n const selectTokenToAtom =\n tradeModeToSetTokenAtoms[selectedForm].tokenToAtom;\n set(selectTokenToAtom, newTokenTo);\n }\n\n const currentSideAtom = tradeModeToSideAtom[selectedForm];\n const currentInputAtom = tradeModeToCurrentInputAtom[selectedForm];\n\n let side = formInputProps.side;\n\n if (tradeModesWithSide.has(selectedForm)) {\n if (isValidSide(side)) {\n set(currentInputAtom, sideToInputType[side]);\n } else {\n if (side) {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid side provided, must be BUY or SELL\", { side });\n }\n\n if (sendAmount && !receiveAmount) {\n side = \"SELL\"; // sendAmount is given and receiveAmount isn't -> SELL\n } else if (receiveAmount && !sendAmount) {\n side = \"BUY\"; // receiveAmount is given and sendAmount isn't -> BUY\n } else {\n // fallback to current side if both or none amounts are given\n side = get.peek(currentSideAtom);\n }\n }\n } else {\n side = get.peek(currentSideAtom);\n }\n\n // necessary for type safety\n assert(isValidSide(side), \"side must be BUY or SELL\");\n\n const isTradeModeWithSide = tradeModesWithSide.has(selectedForm);\n const isTradeModeWithoutSide = !isTradeModeWithSide;\n\n const isSell =\n isTradeModeWithoutSide || (isTradeModeWithSide && side === \"SELL\");\n const isBuy =\n isTradeModeWithoutSide || (isTradeModeWithSide && side === \"BUY\");\n\n const isValidSendAmount = sendAmount && Number(sendAmount) >= 0;\n const isValidReceiveAmount = receiveAmount && Number(receiveAmount) >= 0;\n\n // given a valid sendAmount\n // and the form with side=sell or without side\n if (isValidSendAmount && isSell) {\n // update the send amount\n const formPayAmountAtom = tradeModeToPayAmountUnitAtom[selectedForm];\n const currentSendAmount = get.peek(formPayAmountAtom.read);\n if (currentSendAmount !== sendAmount) {\n set(formPayAmountAtom.write, sendAmount);\n }\n }\n\n // given a valid receiveAmount\n // and the form with side=buy or without side\n if (isValidReceiveAmount && isBuy) {\n // update the receive amount\n const formReceiveAmountAtom =\n tradeModeToReceiveAmountUnitAtom[selectedForm];\n const currentReceiveAmount = get.peek(formReceiveAmountAtom.read);\n if (currentReceiveAmount !== receiveAmount) {\n set(formReceiveAmountAtom.write, receiveAmount);\n }\n }\n\n if (selectedForm === \"limit\" || selectedForm === \"otc\") {\n // OTC and Limit forms support order deadline param\n const orderDeadline = Number(formInputProps.orderDeadline);\n if (orderDeadline !== undefined && !isNaN(orderDeadline)) {\n const timeUnitAtom = tradeModeToTimeUnitAtom[selectedForm];\n const currentTimeUnit = get.peek(timeUnitAtom);\n\n if (currentTimeUnit.timestamp !== orderDeadline) {\n set(timeUnitAtom, {\n // set closest time unit for better UX\n ...getClosestTimeUnit(orderDeadline),\n // set exact timestamp\n timestamp: orderDeadline,\n });\n }\n }\n }\n});\n\nfunction getTokenToFind({\n tokenFromProps,\n currentToken,\n defaultChainId,\n}: {\n tokenFromProps: { address?: string; network?: number };\n currentToken?: Token;\n defaultChainId: SupportedChainId;\n}): { address: Address; network: SupportedChainId } | undefined {\n if (!tokenFromProps.address) return;\n // guard against malformed addresses passed through props\n if (!isAddress(tokenFromProps.address)) {\n logger.warn(\"malformed token address provided\", {\n address: tokenFromProps.address,\n });\n return;\n }\n\n const network = tokenFromProps.network || defaultChainId;\n\n // unsupported chainId provided, can't select this Token\n if (!isSupportedChainId(network)) {\n logger.warn(\"unsupported chainId provided\", { network });\n return;\n }\n\n if (\n currentToken &&\n areTokensSame(currentToken, {\n address: tokenFromProps.address,\n network,\n })\n ) {\n // same token already there\n return;\n }\n\n return { address: tokenFromProps.address, network };\n}\n\nexport function useActivateFormInputEffects() {\n useAtom(formInputPropsEffectAtom);\n}\n\nexport function useSetFormInputFromProps({\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n receiveAmount,\n side,\n orderDeadline,\n}: FormInputProps = {}) {\n const setFormInputProps = useSetAtom(formInputPropsAtom);\n\n // match props together as they are supplied together from outside the Widget,\n // on any one prop change, the whole form input props are updated as long as they are passed together to the Widget\n useLayoutEffect(() => {\n setFormInputProps({\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n receiveAmount,\n side,\n orderDeadline,\n });\n }, [\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n setFormInputProps,\n receiveAmount,\n side,\n orderDeadline,\n ]);\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscriptions.js","names":["wagmiConfig","getLogger","syncTokensAfterChainSwitch","watchChainId","logger","subscribeToWalletChainIdChanges","onChange","newChainId","prevChainId","log"],"sources":["../../../../src/core/inputs/state/subscriptions.ts"],"sourcesContent":["import { wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport { getLogger } from \"@/core/logger\";\nimport { syncTokensAfterChainSwitch } from \"./common\";\nimport { watchChainId } from \"@wagmi/core\";\n\nconst logger = getLogger(\"Subscription::WatchChainId\");\nexport const subscribeToWalletChainIdChanges = () => {\n // subscribes to state.chainId changes\n // config.subscribe((state) => state.chainId, onChange)\n return watchChainId(wagmiConfig, {\n onChange: (newChainId, prevChainId) => {\n logger.log(\"Sync tokens\", { newChainId, prevChainId });\n syncTokensAfterChainSwitch(newChainId);\n },\n });\n};\n"],"mappings":";;;;;AAKA,IAAMI,IAASH,EAAU,6BAA6B,EACzCI,UAGJF,EAAaH,GAAa,EAC/BM,WAAWC,GAAYC,MAAgB;
|
|
1
|
+
{"version":3,"file":"subscriptions.js","names":["wagmiConfig","getLogger","syncTokensAfterChainSwitch","watchChainId","logger","subscribeToWalletChainIdChanges","onChange","newChainId","prevChainId","log"],"sources":["../../../../src/core/inputs/state/subscriptions.ts"],"sourcesContent":["import { wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport { getLogger } from \"@/core/logger\";\nimport { syncTokensAfterChainSwitch } from \"./common\";\nimport { watchChainId } from \"@wagmi/core\";\n\nconst logger = getLogger(\"Subscription::WatchChainId\");\nexport const subscribeToWalletChainIdChanges = () => {\n // subscribes to state.chainId changes\n // config.subscribe((state) => state.chainId, onChange)\n return watchChainId(wagmiConfig, {\n onChange: (newChainId, prevChainId) => {\n logger.log(\"Sync tokens\", { newChainId, prevChainId });\n syncTokensAfterChainSwitch(newChainId);\n },\n });\n};\n"],"mappings":";;;;;AAKA,IAAMI,IAASH,EAAU,6BAA6B,EACzCI,UAGJF,EAAaH,GAAa,EAC/BM,WAAWC,GAAYC,MAAgB;CAErCN,AADAE,EAAOK,IAAI,eAAe;EAAEF;EAAYC;EAAa,CAAC,EACtDN,EAA2BK,EAAW;GAEzC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deadlineAtom.js","names":["atom","useAtomValue","defaultTimeUnit","minTimeUnit","neverTimeUnit","timeUnits","getTimeUnitState","MarkOptional","TimeUnit","TimeUnitObject","label","value","TimeUnitState","timestamp","timeUnitAtom","_","set","newState","stateToSet","minTimeUnitState","isTimestampInvalid","isUnitInvalid","deadlineAtom","get","useLimitDeadline"],"sources":["../../../../src/core/limit/state/deadlineAtom.ts"],"sourcesContent":["import { atom } from \"jotai\";\nimport { useAtomValue } from \"@/core/store\";\nimport {\n defaultTimeUnit,\n minTimeUnit,\n neverTimeUnit,\n timeUnits,\n} from \"./constants\";\nimport { getTimeUnitState } from \"./utils\";\nimport type { MarkOptional } from \"ts-essentials\";\n\nexport type TimeUnit = (typeof timeUnits)[number][\"label\"];\n\nexport type TimeUnitObject = {\n label: TimeUnit;\n value: number;\n};\n\nexport type TimeUnitState = TimeUnitObject & {\n timestamp: number;\n};\n\nexport const timeUnitAtom = atom<\n TimeUnitState,\n [MarkOptional<TimeUnitState, \"timestamp\">],\n void\n>(getTimeUnitState(defaultTimeUnit), (_, set, newState) => {\n let stateToSet = getTimeUnitState(newState);\n\n const minTimeUnitState = getTimeUnitState(minTimeUnit);\n\n const isTimestampInvalid =\n // Limit orders cannot have 0 deadline\n stateToSet.timestamp <= 0 ||\n stateToSet.timestamp < minTimeUnitState.timestamp;\n const isUnitInvalid =\n stateToSet.label === neverTimeUnit.label ||\n (stateToSet.label === minTimeUnit.label &&\n stateToSet.value < minTimeUnitState.value);\n\n if (isTimestampInvalid || isUnitInvalid) {\n stateToSet = minTimeUnitState;\n }\n\n set(timeUnitAtom, stateToSet);\n});\n\nexport const deadlineAtom = atom((get) => get(timeUnitAtom).timestamp);\n\nexport const useLimitDeadline = () => {\n return useAtomValue(deadlineAtom);\n};\n"],"mappings":";;;;;AAsBA,IAAac,IAAed,EAI1BM,EAAiBJ,EAAgB,GAAGa,GAAGC,GAAKC,MAAa;CACzD,IAAIC,IAAaZ,EAAiBW,EAAS,EAErCE,IAAmBb,EAAiBH,EAAY,EAEhDiB,IAEJF,EAAWL,aAAa,KACxBK,EAAWL,YAAYM,EAAiBN,WACpCQ,IACJH,EAAWR,UAAUN,EAAcM,SAClCQ,EAAWR,UAAUP,EAAYO,SAChCQ,EAAWP,QAAQQ,EAAiBR;
|
|
1
|
+
{"version":3,"file":"deadlineAtom.js","names":["atom","useAtomValue","defaultTimeUnit","minTimeUnit","neverTimeUnit","timeUnits","getTimeUnitState","MarkOptional","TimeUnit","TimeUnitObject","label","value","TimeUnitState","timestamp","timeUnitAtom","_","set","newState","stateToSet","minTimeUnitState","isTimestampInvalid","isUnitInvalid","deadlineAtom","get","useLimitDeadline"],"sources":["../../../../src/core/limit/state/deadlineAtom.ts"],"sourcesContent":["import { atom } from \"jotai\";\nimport { useAtomValue } from \"@/core/store\";\nimport {\n defaultTimeUnit,\n minTimeUnit,\n neverTimeUnit,\n timeUnits,\n} from \"./constants\";\nimport { getTimeUnitState } from \"./utils\";\nimport type { MarkOptional } from \"ts-essentials\";\n\nexport type TimeUnit = (typeof timeUnits)[number][\"label\"];\n\nexport type TimeUnitObject = {\n label: TimeUnit;\n value: number;\n};\n\nexport type TimeUnitState = TimeUnitObject & {\n timestamp: number;\n};\n\nexport const timeUnitAtom = atom<\n TimeUnitState,\n [MarkOptional<TimeUnitState, \"timestamp\">],\n void\n>(getTimeUnitState(defaultTimeUnit), (_, set, newState) => {\n let stateToSet = getTimeUnitState(newState);\n\n const minTimeUnitState = getTimeUnitState(minTimeUnit);\n\n const isTimestampInvalid =\n // Limit orders cannot have 0 deadline\n stateToSet.timestamp <= 0 ||\n stateToSet.timestamp < minTimeUnitState.timestamp;\n const isUnitInvalid =\n stateToSet.label === neverTimeUnit.label ||\n (stateToSet.label === minTimeUnit.label &&\n stateToSet.value < minTimeUnitState.value);\n\n if (isTimestampInvalid || isUnitInvalid) {\n stateToSet = minTimeUnitState;\n }\n\n set(timeUnitAtom, stateToSet);\n});\n\nexport const deadlineAtom = atom((get) => get(timeUnitAtom).timestamp);\n\nexport const useLimitDeadline = () => {\n return useAtomValue(deadlineAtom);\n};\n"],"mappings":";;;;;AAsBA,IAAac,IAAed,EAI1BM,EAAiBJ,EAAgB,GAAGa,GAAGC,GAAKC,MAAa;CACzD,IAAIC,IAAaZ,EAAiBW,EAAS,EAErCE,IAAmBb,EAAiBH,EAAY,EAEhDiB,IAEJF,EAAWL,aAAa,KACxBK,EAAWL,YAAYM,EAAiBN,WACpCQ,IACJH,EAAWR,UAAUN,EAAcM,SAClCQ,EAAWR,UAAUP,EAAYO,SAChCQ,EAAWP,QAAQQ,EAAiBR;CAMxCK,CAJII,KAAsBC,OACxBH,IAAaC,IAGfH,EAAIF,GAAcI,EAAW;EAC7B,EAEWI,IAAetB,GAAMuB,MAAQA,EAAIT,EAAa,CAACD,UAAU,EAEzDW,UACJvB,EAAaqB,EAAa"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isCrosschainAtom.js","names":["atom","useAtomValue","limitTokenFromAtom","limitTokenToAtom","isLimitCrossChainAtom","get","tokenFrom","tokenTo","network","useIsLimitCrossChain"],"sources":["../../../../src/core/limit/state/isCrosschainAtom.ts"],"sourcesContent":["import { atom } from \"jotai\";\nimport { useAtomValue } from \"@/core/store\";\nimport { limitTokenFromAtom, limitTokenToAtom } from \"./limitTokenAtoms\";\n\nexport const isLimitCrossChainAtom = atom((get) => {\n const tokenFrom = get(limitTokenFromAtom);\n const tokenTo = get(limitTokenToAtom);\n\n if (!tokenTo) return false;\n\n return tokenFrom.network !== tokenTo.network;\n});\n\nexport const useIsLimitCrossChain = () => {\n return useAtomValue(isLimitCrossChainAtom);\n};\n"],"mappings":";;;AAIA,IAAaI,IAAwBJ,GAAMK,MAAQ;CACjD,IAAMC,IAAYD,EAAIH,EAAmB,EACnCK,IAAUF,EAAIF,EAAiB;
|
|
1
|
+
{"version":3,"file":"isCrosschainAtom.js","names":["atom","useAtomValue","limitTokenFromAtom","limitTokenToAtom","isLimitCrossChainAtom","get","tokenFrom","tokenTo","network","useIsLimitCrossChain"],"sources":["../../../../src/core/limit/state/isCrosschainAtom.ts"],"sourcesContent":["import { atom } from \"jotai\";\nimport { useAtomValue } from \"@/core/store\";\nimport { limitTokenFromAtom, limitTokenToAtom } from \"./limitTokenAtoms\";\n\nexport const isLimitCrossChainAtom = atom((get) => {\n const tokenFrom = get(limitTokenFromAtom);\n const tokenTo = get(limitTokenToAtom);\n\n if (!tokenTo) return false;\n\n return tokenFrom.network !== tokenTo.network;\n});\n\nexport const useIsLimitCrossChain = () => {\n return useAtomValue(isLimitCrossChainAtom);\n};\n"],"mappings":";;;AAIA,IAAaI,IAAwBJ,GAAMK,MAAQ;CACjD,IAAMC,IAAYD,EAAIH,EAAmB,EACnCK,IAAUF,EAAIF,EAAiB;CAIrC,OAFKI,IAEED,EAAUE,YAAYD,EAAQC,UAFhB;EAGrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limitInputActionsAtom.js","names":["atom","limitPayInputAmountAtom","limitReceiveInputAmountAtom","limitPriceRatesAtom","limitPriceAmountAtom","isLimitPriceLockedAtom","Big","currentLimitInputAtom","isLimitPriceReversedAtom","calculateReceiveAmount","calculatePayAmount","calculateRates","zeroRates","PriceRates","setLimitPriceRatesAtom","get","set","priceRates","recalculateReceive","isLocked","payAmount","payGtZero","gt","isReversed","newReceiveAmount","setLimitReceiveAmountAtom","setLimitPayAmountAtom","limitPriceAmount","limitPriceGtZero","setLimitPayAmountAtomFromProps","_","amount","receiveAmount","newPayAmount","updatedRates","setLimitReceiveAmountAtomFromProps","resetLimitPriceAtom","unlockLimitPriceAtom","toggleLimitPriceLockAtom","toggleLimitPriceReverseAtom"],"sources":["../../../../src/core/limit/state/limitInputActionsAtom.ts"],"sourcesContent":["import { atom } from \"jotai\";\nimport {\n limitPayInputAmountAtom,\n limitReceiveInputAmountAtom,\n limitPriceRatesAtom,\n limitPriceAmountAtom,\n} from \"./limitInputAmountAtom\";\nimport { isLimitPriceLockedAtom } from \"./isLimitPriceLockedAtom\";\nimport Big from \"big.js\";\nimport { currentLimitInputAtom } from \"./currentLimitInputAtom\";\nimport { isLimitPriceReversedAtom } from \"./isLimitPriceReversedAtom\";\nimport {\n calculateReceiveAmount,\n calculatePayAmount,\n calculateRates,\n} from \"./utils\";\n\nimport { zeroRates } from \"./constants\";\nimport type { PriceRates } from \"../types\";\n\nexport const setLimitPriceRatesAtom = atom(\n null,\n (get, set, priceRates: PriceRates, recalculateReceive: boolean = true) => {\n const isLocked = get(isLimitPriceLockedAtom);\n // ignore updates if price is locked\n if (isLocked) return;\n\n set(limitPriceRatesAtom, priceRates);\n\n const payAmount = get(limitPayInputAmountAtom);\n const payGtZero = Big(payAmount || \"0\").gt(0);\n\n // ignore updates if pay amount is zero,\n // as it would lead to setLimitReceiveAmountAtom(0) anyway\n if (recalculateReceive && payGtZero) {\n const isReversed = get(isLimitPriceReversedAtom);\n const newReceiveAmount = calculateReceiveAmount(\n payAmount,\n priceRates,\n isReversed\n );\n set(setLimitReceiveAmountAtom, newReceiveAmount);\n }\n }\n);\n\nexport const setLimitPayAmountAtom = atom(\n null,\n (get, set, payAmount: string) => {\n set(limitPayInputAmountAtom, payAmount);\n\n // ignore updates that did not come from pay input\n if (get(currentLimitInputAtom) !== \"from\") return;\n\n const priceRates = get(limitPriceRatesAtom);\n const isReversed = get(isLimitPriceReversedAtom);\n\n const limitPriceAmount = get(limitPriceAmountAtom);\n const limitPriceGtZero = Big(limitPriceAmount || \"0\").gt(0);\n // ignore updates if limit price is zero,\n // as it would lead to setLimitReceiveAmountAtom(0) anyway\n if (!limitPriceGtZero) return;\n\n // update receive amount\n const newReceiveAmount = calculateReceiveAmount(\n payAmount,\n priceRates,\n isReversed\n );\n set(setLimitReceiveAmountAtom, newReceiveAmount);\n }\n);\n\nexport const setLimitPayAmountAtomFromProps = atom(\n null,\n (_, set, amount: string) => {\n set(currentLimitInputAtom, \"from\"); // unblock pay -> receive sync if it was previously blocked\n set(setLimitPayAmountAtom, amount);\n }\n);\n\nexport const setLimitReceiveAmountAtom = atom(\n null,\n (get, set, receiveAmount: string) => {\n set(limitReceiveInputAmountAtom, receiveAmount);\n\n // ignore updates that did not come from receive input\n if (get(currentLimitInputAtom) !== \"to\") return;\n\n const isLocked = get(isLimitPriceLockedAtom);\n const isReversed = get(isLimitPriceReversedAtom);\n\n if (isLocked) {\n // update pay amount if price is locked\n const priceRates = get(limitPriceRatesAtom);\n const newPayAmount = calculatePayAmount(\n receiveAmount,\n priceRates,\n isReversed\n );\n set(setLimitPayAmountAtom, newPayAmount);\n } else {\n // update limit price otherwise\n const payAmount = get(limitPayInputAmountAtom);\n const updatedRates = calculateRates(receiveAmount, payAmount);\n set(setLimitPriceRatesAtom, updatedRates, false);\n }\n }\n);\n\nexport const setLimitReceiveAmountAtomFromProps = atom(\n null,\n (_, set, amount: string) => {\n set(currentLimitInputAtom, \"to\"); // unblock receive -> pay sync if it was previously blocked\n set(setLimitReceiveAmountAtom, amount);\n }\n);\n\nexport const resetLimitPriceAtom = atom(\n null,\n (get, set, priceRates: PriceRates = zeroRates) => {\n const isLocked = get(isLimitPriceLockedAtom);\n if (isLocked) return;\n\n set(setLimitPriceRatesAtom, priceRates);\n\n const isReversed = get(isLimitPriceReversedAtom);\n const payAmount = get(limitPayInputAmountAtom);\n const newReceiveAmount = calculateReceiveAmount(\n payAmount,\n priceRates,\n isReversed\n );\n set(setLimitReceiveAmountAtom, newReceiveAmount);\n }\n);\n\nexport const unlockLimitPriceAtom = atom(null, (_, set) => {\n set(isLimitPriceLockedAtom, false);\n});\n\nexport const toggleLimitPriceLockAtom = atom(null, (get, set) => {\n const isLocked = get(isLimitPriceLockedAtom);\n set(isLimitPriceLockedAtom, !isLocked);\n});\n\nexport const toggleLimitPriceReverseAtom = atom(null, (get, set) => {\n const isReversed = get(isLimitPriceReversedAtom);\n set(isLimitPriceReversedAtom, !isReversed);\n});\n"],"mappings":";;;;;;;;;AAoBA,IAAac,IAAyBd,EACpC,OACCe,GAAKC,GAAKC,GAAwBC,IAA8B,OAAS;
|
|
1
|
+
{"version":3,"file":"limitInputActionsAtom.js","names":["atom","limitPayInputAmountAtom","limitReceiveInputAmountAtom","limitPriceRatesAtom","limitPriceAmountAtom","isLimitPriceLockedAtom","Big","currentLimitInputAtom","isLimitPriceReversedAtom","calculateReceiveAmount","calculatePayAmount","calculateRates","zeroRates","PriceRates","setLimitPriceRatesAtom","get","set","priceRates","recalculateReceive","isLocked","payAmount","payGtZero","gt","isReversed","newReceiveAmount","setLimitReceiveAmountAtom","setLimitPayAmountAtom","limitPriceAmount","limitPriceGtZero","setLimitPayAmountAtomFromProps","_","amount","receiveAmount","newPayAmount","updatedRates","setLimitReceiveAmountAtomFromProps","resetLimitPriceAtom","unlockLimitPriceAtom","toggleLimitPriceLockAtom","toggleLimitPriceReverseAtom"],"sources":["../../../../src/core/limit/state/limitInputActionsAtom.ts"],"sourcesContent":["import { atom } from \"jotai\";\nimport {\n limitPayInputAmountAtom,\n limitReceiveInputAmountAtom,\n limitPriceRatesAtom,\n limitPriceAmountAtom,\n} from \"./limitInputAmountAtom\";\nimport { isLimitPriceLockedAtom } from \"./isLimitPriceLockedAtom\";\nimport Big from \"big.js\";\nimport { currentLimitInputAtom } from \"./currentLimitInputAtom\";\nimport { isLimitPriceReversedAtom } from \"./isLimitPriceReversedAtom\";\nimport {\n calculateReceiveAmount,\n calculatePayAmount,\n calculateRates,\n} from \"./utils\";\n\nimport { zeroRates } from \"./constants\";\nimport type { PriceRates } from \"../types\";\n\nexport const setLimitPriceRatesAtom = atom(\n null,\n (get, set, priceRates: PriceRates, recalculateReceive: boolean = true) => {\n const isLocked = get(isLimitPriceLockedAtom);\n // ignore updates if price is locked\n if (isLocked) return;\n\n set(limitPriceRatesAtom, priceRates);\n\n const payAmount = get(limitPayInputAmountAtom);\n const payGtZero = Big(payAmount || \"0\").gt(0);\n\n // ignore updates if pay amount is zero,\n // as it would lead to setLimitReceiveAmountAtom(0) anyway\n if (recalculateReceive && payGtZero) {\n const isReversed = get(isLimitPriceReversedAtom);\n const newReceiveAmount = calculateReceiveAmount(\n payAmount,\n priceRates,\n isReversed\n );\n set(setLimitReceiveAmountAtom, newReceiveAmount);\n }\n }\n);\n\nexport const setLimitPayAmountAtom = atom(\n null,\n (get, set, payAmount: string) => {\n set(limitPayInputAmountAtom, payAmount);\n\n // ignore updates that did not come from pay input\n if (get(currentLimitInputAtom) !== \"from\") return;\n\n const priceRates = get(limitPriceRatesAtom);\n const isReversed = get(isLimitPriceReversedAtom);\n\n const limitPriceAmount = get(limitPriceAmountAtom);\n const limitPriceGtZero = Big(limitPriceAmount || \"0\").gt(0);\n // ignore updates if limit price is zero,\n // as it would lead to setLimitReceiveAmountAtom(0) anyway\n if (!limitPriceGtZero) return;\n\n // update receive amount\n const newReceiveAmount = calculateReceiveAmount(\n payAmount,\n priceRates,\n isReversed\n );\n set(setLimitReceiveAmountAtom, newReceiveAmount);\n }\n);\n\nexport const setLimitPayAmountAtomFromProps = atom(\n null,\n (_, set, amount: string) => {\n set(currentLimitInputAtom, \"from\"); // unblock pay -> receive sync if it was previously blocked\n set(setLimitPayAmountAtom, amount);\n }\n);\n\nexport const setLimitReceiveAmountAtom = atom(\n null,\n (get, set, receiveAmount: string) => {\n set(limitReceiveInputAmountAtom, receiveAmount);\n\n // ignore updates that did not come from receive input\n if (get(currentLimitInputAtom) !== \"to\") return;\n\n const isLocked = get(isLimitPriceLockedAtom);\n const isReversed = get(isLimitPriceReversedAtom);\n\n if (isLocked) {\n // update pay amount if price is locked\n const priceRates = get(limitPriceRatesAtom);\n const newPayAmount = calculatePayAmount(\n receiveAmount,\n priceRates,\n isReversed\n );\n set(setLimitPayAmountAtom, newPayAmount);\n } else {\n // update limit price otherwise\n const payAmount = get(limitPayInputAmountAtom);\n const updatedRates = calculateRates(receiveAmount, payAmount);\n set(setLimitPriceRatesAtom, updatedRates, false);\n }\n }\n);\n\nexport const setLimitReceiveAmountAtomFromProps = atom(\n null,\n (_, set, amount: string) => {\n set(currentLimitInputAtom, \"to\"); // unblock receive -> pay sync if it was previously blocked\n set(setLimitReceiveAmountAtom, amount);\n }\n);\n\nexport const resetLimitPriceAtom = atom(\n null,\n (get, set, priceRates: PriceRates = zeroRates) => {\n const isLocked = get(isLimitPriceLockedAtom);\n if (isLocked) return;\n\n set(setLimitPriceRatesAtom, priceRates);\n\n const isReversed = get(isLimitPriceReversedAtom);\n const payAmount = get(limitPayInputAmountAtom);\n const newReceiveAmount = calculateReceiveAmount(\n payAmount,\n priceRates,\n isReversed\n );\n set(setLimitReceiveAmountAtom, newReceiveAmount);\n }\n);\n\nexport const unlockLimitPriceAtom = atom(null, (_, set) => {\n set(isLimitPriceLockedAtom, false);\n});\n\nexport const toggleLimitPriceLockAtom = atom(null, (get, set) => {\n const isLocked = get(isLimitPriceLockedAtom);\n set(isLimitPriceLockedAtom, !isLocked);\n});\n\nexport const toggleLimitPriceReverseAtom = atom(null, (get, set) => {\n const isReversed = get(isLimitPriceReversedAtom);\n set(isLimitPriceReversedAtom, !isReversed);\n});\n"],"mappings":";;;;;;;;;AAoBA,IAAac,IAAyBd,EACpC,OACCe,GAAKC,GAAKC,GAAwBC,IAA8B,OAAS;CAGxE,IAFiBH,EAAIV,EAEjBc,EAAU;CAEdH,EAAIb,GAAqBc,EAAW;CAEpC,IAAMG,IAAYL,EAAId,EAAwB,EACxCoB,IAAYf,EAAIc,KAAa,IAAI,CAACE,GAAG,EAAE;CAI7C,AAAIJ,KAAsBG,KAOxBL,EAAIS,GALqBhB,EACvBW,GACAH,GAHiBF,EAAIP,EAIrBe,CAE6BC,CAAiB;EAGrD,EAEYE,IAAwB1B,EACnC,OACCe,GAAKC,GAAKI,MAAsB;CAI/B,IAHAJ,EAAIf,GAAyBmB,EAAU,EAGnCL,EAAIR,EAAsB,KAAK,QAAQ;CAE3C,IAAMU,IAAaF,EAAIZ,EAAoB,EACrCoB,IAAaR,EAAIP,EAAyB;CAGvBF,EADAS,EAAIX,EACAuB,IAAoB,IAAI,CAACL,GAAG,EAGpDM,IAQLZ,EAAIS,GALqBhB,EACvBW,GACAH,GACAM,EAE6BC,CAAiB;EAEnD,EAEYK,IAAiC7B,EAC5C,OACC8B,GAAGd,GAAKe,MAAmB;CAE1Bf,AADAA,EAAIT,GAAuB,OAAO,EAClCS,EAAIU,GAAuBK,EAAO;EAErC,EAEYN,IAA4BzB,EACvC,OACCe,GAAKC,GAAKgB,MAA0B;CAInC,IAHAhB,EAAId,GAA6B8B,EAAc,EAG3CjB,EAAIR,EAAsB,KAAK,MAAM;CAEzC,IAAMY,IAAWJ,EAAIV,EAAuB,EACtCkB,IAAaR,EAAIP,EAAyB;CAEhD,AAAIW,IAQFH,EAAIU,GALiBhB,EACnBsB,GAFiBjB,EAAIZ,EAGrBc,EACAM,EAEyBU,CAAa,GAKxCjB,EAAIF,GADiBH,EAAeqB,GADlBjB,EAAId,EAC6BmB,CACvBc,EAAc,GAAM;EAGrD,EAEYC,IAAqCnC,EAChD,OACC8B,GAAGd,GAAKe,MAAmB;CAE1Bf,AADAA,EAAIT,GAAuB,KAAK,EAChCS,EAAIS,GAA2BM,EAAO;EAEzC,EAEYK,IAAsBpC,EACjC,OACCe,GAAKC,GAAKC,IAAyBL,MAAc;CAEhD,IADiBG,EAAIV,EACjBc,EAAU;CAEdH,EAAIF,GAAwBG,EAAW;CAEvC,IAAMM,IAAaR,EAAIP,EAAyB;CAOhDQ,EAAIS,GALqBhB,EADPM,EAAId,EAEpBmB,EACAH,GACAM,EAE6BC,CAAiB;EAEnD,EAEYa,IAAuBrC,EAAK,OAAO8B,GAAGd,MAAQ;CACzDA,EAAIX,GAAwB,GAAM;EAClC,EAEWiC,IAA2BtC,EAAK,OAAOe,GAAKC,MAAQ;CAE/DA,EAAIX,GAAwB,CADXU,EAAIV,EACQc,CAAS;EACtC,EAEWoB,IAA8BvC,EAAK,OAAOe,GAAKC,MAAQ;CAElEA,EAAIR,GAA0B,CADXO,EAAIP,EACQe,CAAW;EAC1C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limitInputAmountAtom.js","names":["limitTokenFromAtom","limitTokenToAtom","atom","parseUnits","zeroRates","PriceRates","isLimitPriceReversedAtom","limitPriceRatesAtom","limitPriceAmountAtom","get","isReversed","priceRates","rateReversed","rate","limitPayInputAmountAtom","limitReceiveInputAmountAtom","limitPayInputAmountWeiAtom","tokenFrom","payInputAmount","decimals","toString","limitReceiveInputAmountWeiAtom","tokenTo","receiveInputAmount"],"sources":["../../../../src/core/limit/state/limitInputAmountAtom.ts"],"sourcesContent":["import { limitTokenFromAtom, limitTokenToAtom } from \"./limitTokenAtoms\";\nimport { atom } from \"jotai\";\nimport { parseUnits } from \"viem\";\nimport { zeroRates } from \"./constants\";\nimport type { PriceRates } from \"../types\";\nimport { isLimitPriceReversedAtom } from \"./isLimitPriceReversedAtom\";\n\nexport const limitPriceRatesAtom = atom<PriceRates>(zeroRates);\n\nexport const limitPriceAmountAtom = atom((get) => {\n const isReversed = get(isLimitPriceReversedAtom);\n const priceRates = get(limitPriceRatesAtom);\n return isReversed ? priceRates.rateReversed : priceRates.rate;\n});\n\nexport const limitPayInputAmountAtom = atom(\"0\");\n\nexport const limitReceiveInputAmountAtom = atom(\"0\");\n\nexport const limitPayInputAmountWeiAtom = atom((get) => {\n // amountWei derived from limitPayInputAmountAtom\n const tokenFrom = get(limitTokenFromAtom);\n const payInputAmount = get(limitPayInputAmountAtom);\n return parseUnits(payInputAmount, tokenFrom.decimals).toString();\n});\n\nexport const limitReceiveInputAmountWeiAtom = atom((get) => {\n // amountWei derived from limitReceiveInputAmountAtom\n const tokenTo = get(limitTokenToAtom);\n if (tokenTo) {\n const receiveInputAmount = get(limitReceiveInputAmountAtom);\n return parseUnits(receiveInputAmount, tokenTo.decimals).toString();\n }\n});\n"],"mappings":";;;;;;AAOA,IAAaO,IAAsBL,EAAiBE,EAAU,EAEjDI,IAAuBN,GAAMO,MAAQ;CAChD,IAAMC,IAAaD,EAAIH,EAAyB,EAC1CK,IAAaF,EAAIF,EAAoB;
|
|
1
|
+
{"version":3,"file":"limitInputAmountAtom.js","names":["limitTokenFromAtom","limitTokenToAtom","atom","parseUnits","zeroRates","PriceRates","isLimitPriceReversedAtom","limitPriceRatesAtom","limitPriceAmountAtom","get","isReversed","priceRates","rateReversed","rate","limitPayInputAmountAtom","limitReceiveInputAmountAtom","limitPayInputAmountWeiAtom","tokenFrom","payInputAmount","decimals","toString","limitReceiveInputAmountWeiAtom","tokenTo","receiveInputAmount"],"sources":["../../../../src/core/limit/state/limitInputAmountAtom.ts"],"sourcesContent":["import { limitTokenFromAtom, limitTokenToAtom } from \"./limitTokenAtoms\";\nimport { atom } from \"jotai\";\nimport { parseUnits } from \"viem\";\nimport { zeroRates } from \"./constants\";\nimport type { PriceRates } from \"../types\";\nimport { isLimitPriceReversedAtom } from \"./isLimitPriceReversedAtom\";\n\nexport const limitPriceRatesAtom = atom<PriceRates>(zeroRates);\n\nexport const limitPriceAmountAtom = atom((get) => {\n const isReversed = get(isLimitPriceReversedAtom);\n const priceRates = get(limitPriceRatesAtom);\n return isReversed ? priceRates.rateReversed : priceRates.rate;\n});\n\nexport const limitPayInputAmountAtom = atom(\"0\");\n\nexport const limitReceiveInputAmountAtom = atom(\"0\");\n\nexport const limitPayInputAmountWeiAtom = atom((get) => {\n // amountWei derived from limitPayInputAmountAtom\n const tokenFrom = get(limitTokenFromAtom);\n const payInputAmount = get(limitPayInputAmountAtom);\n return parseUnits(payInputAmount, tokenFrom.decimals).toString();\n});\n\nexport const limitReceiveInputAmountWeiAtom = atom((get) => {\n // amountWei derived from limitReceiveInputAmountAtom\n const tokenTo = get(limitTokenToAtom);\n if (tokenTo) {\n const receiveInputAmount = get(limitReceiveInputAmountAtom);\n return parseUnits(receiveInputAmount, tokenTo.decimals).toString();\n }\n});\n"],"mappings":";;;;;;AAOA,IAAaO,IAAsBL,EAAiBE,EAAU,EAEjDI,IAAuBN,GAAMO,MAAQ;CAChD,IAAMC,IAAaD,EAAIH,EAAyB,EAC1CK,IAAaF,EAAIF,EAAoB;CAC3C,OAAOG,IAAaC,EAAWC,eAAeD,EAAWE;EACzD,EAEWC,IAA0BZ,EAAK,IAAI,EAEnCa,IAA8Bb,EAAK,IAAI,EAEvCc,IAA6Bd,GAAMO,MAAQ;CAEtD,IAAMQ,IAAYR,EAAIT,EAAmB;CAEzC,OAAOG,EADgBM,EAAIK,EACTI,EAAgBD,EAAUE,SAAS,CAACC,UAAU;EAChE,EAEWC,IAAiCnB,GAAMO,MAAQ;CAE1D,IAAMa,IAAUb,EAAIR,EAAiB;CACrC,IAAIqB,GAEF,OAAOnB,EADoBM,EAAIM,EACbQ,EAAoBD,EAAQH,SAAS,CAACC,UAAU;EAEpE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"receiverAddressAtom.js","names":["UseReceiverAddressReturn","shortenAddress","atom","useAtom","useAtomValue","Address","limitReceiverAddressAtom","useLimitReceiverAddress","$","_c","address","setAddress","t0","undefined","shortAddress","t1","useLimitReceiverAddressValue"],"sources":["../../../../src/core/limit/state/receiverAddressAtom.ts"],"sourcesContent":["import type { UseReceiverAddressReturn } from \"@/components/widget/ReceiverAddress/state/types\";\nimport { shortenAddress } from \"@/lib/utils\";\nimport { atom } from \"jotai\";\nimport { useAtom, useAtomValue } from \"@/core/store\";\nimport type { Address } from \"viem\";\n\nexport const limitReceiverAddressAtom = atom<Address | undefined>();\n\nexport const useLimitReceiverAddress = (): UseReceiverAddressReturn => {\n const [address, setAddress] = useAtom(limitReceiverAddressAtom);\n const shortAddress = address ? shortenAddress(address) : undefined;\n\n return { address, setAddress, shortAddress };\n};\n\nexport const useLimitReceiverAddressValue = () => {\n return useAtomValue(limitReceiverAddressAtom);\n};\n"],"mappings":";;;;;AAMA,IAAaM,IAA2BJ,GAA2B,EAEtDK,UAA0B;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACrC,CAAAC,GAAAC,KAA8BR,EAAQG,EAAyB,EAACM;
|
|
1
|
+
{"version":3,"file":"receiverAddressAtom.js","names":["UseReceiverAddressReturn","shortenAddress","atom","useAtom","useAtomValue","Address","limitReceiverAddressAtom","useLimitReceiverAddress","$","_c","address","setAddress","t0","undefined","shortAddress","t1","useLimitReceiverAddressValue"],"sources":["../../../../src/core/limit/state/receiverAddressAtom.ts"],"sourcesContent":["import type { UseReceiverAddressReturn } from \"@/components/widget/ReceiverAddress/state/types\";\nimport { shortenAddress } from \"@/lib/utils\";\nimport { atom } from \"jotai\";\nimport { useAtom, useAtomValue } from \"@/core/store\";\nimport type { Address } from \"viem\";\n\nexport const limitReceiverAddressAtom = atom<Address | undefined>();\n\nexport const useLimitReceiverAddress = (): UseReceiverAddressReturn => {\n const [address, setAddress] = useAtom(limitReceiverAddressAtom);\n const shortAddress = address ? shortenAddress(address) : undefined;\n\n return { address, setAddress, shortAddress };\n};\n\nexport const useLimitReceiverAddressValue = () => {\n return useAtomValue(limitReceiverAddressAtom);\n};\n"],"mappings":";;;;;AAMA,IAAaM,IAA2BJ,GAA2B,EAEtDK,UAA0B;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACrC,CAAAC,GAAAC,KAA8BR,EAAQG,EAAyB,EAACM;CAAA,AAAAJ,EAAA,OAAAE,IACEE,IAAAJ,EAAA,MAA7CI,IAAAF,IAAUT,EAAeS,EAAoB,GAA7CG,KAAAA,GAA6CL,EAAA,KAAAE,GAAAF,EAAA,KAAAI;CAAlE,IAAAE,IAAqBF,GAA8CG;CAEvB,OAFuBP,EAAA,OAAAE,KAAAF,EAAA,OAAAG,KAAAH,EAAA,OAAAM,KAE5DC,IAAA;EAAAL;EAAAC;EAAAG;EAAqC,EAAAN,EAAA,KAAAE,GAAAF,EAAA,KAAAG,GAAAH,EAAA,KAAAM,GAAAN,EAAA,KAAAO,KAAAA,IAAAP,EAAA,IAArCO;GAGIC,UACJZ,EAAaE,EAAyB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectedTokenActionsAtom.js","names":["pickDefaultTokenPair","areTokensSame","atom","unlockLimitPriceAtom","limitTokenFromAtom","limitTokenToAtom","Token","wagmiConfig","switchChain","isCrosschainPossible","findFirstTokenFromAcross","isTokenFromAcross","allTokensByChainAtom","getSelectableDestChains","enabledSrcChainsAtom","switchLimitTokensAtom","get","set","tokenTo","enabledSrcChains","includes","network","tokenFrom","initChainFrom","selectLimitTokenToAtom","currentTokenFrom","chainId","selectLimitTokenFromAtom","newTokenFrom","initTokenFrom","state","crosschainPossible","chainIdFrom","chainIdTo","mode","isTokenToFromAcross","token","fromChainId","toChainId","maybeAcrossToken","listByChainId","defaultTokenFrom","defaultTokenTo","newTokenTo","selectableDestChains","initTokenTo","defaultToken","wasCrosschain","needResetTokenFrom","firstPossibleSrcChain","srcChain"],"sources":["../../../../src/core/limit/state/selectedTokenActionsAtom.ts"],"sourcesContent":["import { pickDefaultTokenPair } from \"@/tokens/defaultTokens\";\nimport { areTokensSame } from \"@/tokens/utils/areTokensSame\";\nimport { atom } from \"jotai\";\nimport { unlockLimitPriceAtom } from \"./limitInputActionsAtom\";\nimport { limitTokenFromAtom, limitTokenToAtom } from \"./limitTokenAtoms\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport { switchChain } from \"@/lib/web3/wagmi/switchChain\";\nimport { isCrosschainPossible } from \"@/core/across/isCrosschainPossible\";\nimport {\n findFirstTokenFromAcross,\n isTokenFromAcross,\n} from \"@/core/across/utils\";\nimport { allTokensByChainAtom } from \"@/tokens/state/allTokensByChainAtom\";\nimport { getSelectableDestChains } from \"@/core/state/getSelectableDestChains\";\nimport { enabledSrcChainsAtom } from \"@/core/state/enabledChainsAtom\";\n\nexport const switchLimitTokensAtom = atom(null, async (get, set) => {\n const tokenTo = get(limitTokenToAtom);\n\n if (!tokenTo) return;\n\n const enabledSrcChains = get(enabledSrcChainsAtom);\n if (!enabledSrcChains.includes(tokenTo.network)) return;\n\n const tokenFrom = get(limitTokenFromAtom);\n const initChainFrom = tokenFrom.network;\n\n // set tokenFrom as is\n set(limitTokenFromAtom, tokenTo);\n // set tokenTo, including running all crosschain logic inside\n set(selectLimitTokenToAtom, tokenFrom);\n\n set(unlockLimitPriceAtom);\n\n const currentTokenFrom = get(limitTokenFromAtom);\n\n // switch a token from a different chain?\n if (currentTokenFrom.network !== initChainFrom) {\n // switch chain first\n switchChain({\n chainId: currentTokenFrom.network,\n });\n }\n});\n\nexport const selectLimitTokenFromAtom = atom(\n null,\n async (get, set, newTokenFrom: Token) => {\n let tokenFrom = get(limitTokenFromAtom);\n let tokenTo = get(limitTokenToAtom);\n const initTokenFrom = tokenFrom;\n\n // then set the tokenFrom\n set(limitTokenFromAtom, newTokenFrom);\n tokenFrom = newTokenFrom;\n\n // do not unlock limit price if token has not actually changed\n if (!areTokensSame(tokenFrom, initTokenFrom)) {\n set(unlockLimitPriceAtom);\n }\n\n // selecting a token from a different chain?\n if (tokenFrom.network !== wagmiConfig.state.chainId) {\n switchChain({\n chainId: tokenFrom.network,\n });\n }\n\n if (!tokenTo) return;\n\n const crosschainPossible = isCrosschainPossible({\n get,\n chainIdFrom: tokenFrom.network,\n chainIdTo: tokenTo.network,\n mode: \"limit\",\n });\n\n if (crosschainPossible) {\n const isTokenToFromAcross = isTokenFromAcross({\n token: tokenTo,\n fromChainId: tokenFrom.network,\n toChainId: tokenTo.network,\n mode: \"limit\",\n });\n\n if (!isTokenToFromAcross) {\n // set the token from across as tokenTo,\n // or reset tokenTo if token not found\n const maybeAcrossToken = findFirstTokenFromAcross({\n fromChainId: tokenFrom.network,\n toChainId: tokenTo.network,\n listByChainId: get(allTokensByChainAtom).listByChainId,\n mode: \"limit\",\n });\n\n set(limitTokenToAtom, maybeAcrossToken);\n }\n } else {\n // cross-chain not possible between new chainFrom and chainTo,\n // so need to reset tokenTo to default\n if (tokenFrom.network !== tokenTo.network) {\n const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(\n tokenFrom.network,\n \"limit\"\n );\n\n tokenTo = areTokensSame(tokenFrom, defaultTokenTo)\n ? defaultTokenFrom\n : defaultTokenTo;\n set(limitTokenToAtom, tokenTo);\n } else {\n // or simply flip the tokens if they are from the same chain\n if (areTokensSame(tokenFrom, tokenTo)) {\n tokenTo = initTokenFrom;\n set(limitTokenToAtom, tokenTo);\n }\n // otherwise do nothing, tokenTo is already on the same chain and different from newTokenFrom\n }\n }\n }\n);\n\nexport const selectLimitTokenToAtom = atom(\n null,\n async (get, set, newTokenTo: Token) => {\n let tokenFrom = get(limitTokenFromAtom);\n\n const selectableDestChains = getSelectableDestChains(get, {\n fromChainId: tokenFrom.network,\n mode: \"limit\",\n });\n if (!selectableDestChains.includes(newTokenTo.network)) return;\n\n let tokenTo = get(limitTokenToAtom);\n const initTokenTo = tokenTo;\n\n set(limitTokenToAtom, newTokenTo);\n tokenTo = newTokenTo;\n\n if (areTokensSame(tokenTo, tokenFrom)) {\n const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(\n tokenTo.network,\n \"limit\"\n );\n\n const defaultToken = areTokensSame(tokenFrom, defaultTokenFrom)\n ? defaultTokenTo\n : defaultTokenFrom;\n\n // Will be true if crosschain tokens were selected\n const wasCrosschain =\n initTokenTo && tokenFrom.network !== initTokenTo.network;\n\n const newTokenFrom = wasCrosschain\n ? // We cannot flip the tokens if switching from the crosschain, because if we do, we will end up with tokenFrom network different from app chainId.\n // Switching app chainId when selecting tokenTo is not what we want, because we cannot dictate the main network when selecting tokenTo.\n // Maybe user wants to trade singlechain but we are forcing crosschain.\n defaultToken\n : // Otherwise, we can flip the tokens, or pick from defaults\n (initTokenTo ?? defaultToken);\n\n set(limitTokenFromAtom, newTokenFrom);\n tokenFrom = newTokenFrom;\n }\n\n // after switching we may have ended up with a crosschain pair,\n // but tokenTo may not be crossable depending on srcChainId;\n // this can easily happen if tokenTo was set from WidgetProps\n let needResetTokenFrom = false;\n\n const crosschainPossible = isCrosschainPossible({\n get,\n chainIdFrom: tokenFrom.network,\n chainIdTo: tokenTo.network,\n mode: \"limit\",\n });\n\n if (crosschainPossible) {\n const isTokenToFromAcross = isTokenFromAcross({\n token: tokenTo,\n fromChainId: tokenFrom.network,\n toChainId: tokenTo.network,\n mode: \"limit\",\n });\n\n if (!isTokenToFromAcross) {\n // tokenFrom -> tokenTo is crosschain, but tokenTo can't be destToken for that chain\n needResetTokenFrom = true;\n }\n }\n\n if (tokenFrom.network !== tokenTo.network && !crosschainPossible) {\n // tokenFrom -> tokenTo is crosschain, but delta is explicitly disabled,\n needResetTokenFrom = true;\n }\n\n const enabledSrcChains = get(enabledSrcChainsAtom);\n\n if (needResetTokenFrom) {\n let firstPossibleSrcChain = tokenTo.network;\n // if tokenTo.network can't be srcChain, find the first possible srcChain\n if (!enabledSrcChains.includes(tokenTo.network)) {\n for (const srcChain of enabledSrcChains) {\n const crosschainPossible = isCrosschainPossible({\n get,\n chainIdFrom: srcChain,\n chainIdTo: tokenTo.network,\n mode: \"limit\",\n });\n if (crosschainPossible) {\n firstPossibleSrcChain = srcChain;\n break;\n }\n }\n }\n // set the tokenFrom to default token from tokenTo.network\n const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(\n firstPossibleSrcChain,\n \"limit\"\n );\n // make sure it's not the same as tokenTo\n const newTokenFrom = areTokensSame(tokenTo, defaultTokenFrom)\n ? defaultTokenTo\n : defaultTokenFrom;\n\n set(limitTokenFromAtom, newTokenFrom);\n tokenFrom = newTokenFrom;\n }\n\n // do not unlock limit price if token has not actually changed\n if (tokenTo && initTokenTo && !areTokensSame(tokenTo, initTokenTo)) {\n set(unlockLimitPriceAtom);\n }\n\n // ended up changing tokenFrom network?\n if (tokenFrom.network !== wagmiConfig.state.chainId) {\n switchChain({\n chainId: tokenFrom.network,\n });\n }\n }\n);\n"],"mappings":";;;;;;;;;;;;;AAiBA,IAAae,IAAwBb,EAAK,MAAM,OAAOc,GAAKC,MAAQ;CAClE,IAAMC,IAAUF,EAAIX,EAAiB;AAKrC,KAHI,CAACa,KAGD,CADqBF,EAAIF,EAAqB,CAC5BM,SAASF,EAAQG,QAAQ,CAAE;CAEjD,IAAMC,IAAYN,EAAIZ,EAAmB,EACnCmB,IAAgBD,EAAUD;AAOhCJ,CAJAA,EAAIb,GAAoBc,EAAQ,EAEhCD,EAAIO,GAAwBF,EAAU,EAEtCL,EAAId,EAAqB;CAEzB,IAAMsB,IAAmBT,EAAIZ,EAAmB;AAGhD,CAAIqB,EAAiBJ,YAAYE,KAE/Bf,EAAY,EACVkB,SAASD,EAAiBJ,SAC3B,CAAC;EAEJ,EAEWM,IAA2BzB,EACtC,MACA,OAAOc,GAAKC,GAAKW,MAAwB;CACvC,IAAIN,IAAYN,EAAIZ,EAAmB,EACnCc,IAAUF,EAAIX,EAAiB,EAC7BwB,IAAgBP;AAGtBL,OAAIb,GAAoBwB,EAAa,EACrCN,IAAYM,GAGP3B,EAAcqB,GAAWO,EAAc,IAC1CZ,EAAId,EAAqB,EAIvBmB,EAAUD,YAAYd,EAAYuB,MAAMJ,WAC1ClB,EAAY,EACVkB,SAASJ,EAAUD,SACpB,CAAC,EAGCH,EASL,KAP2BT,EAAqB;EAC9CO;EACAgB,aAAaV,EAAUD;EACvBY,WAAWf,EAAQG;EACnBa,MAAM;EACP,CAAC,EAG4BvB,EAAkB;EAC5CyB,OAAOlB;EACPmB,aAAaf,EAAUD;EACvBiB,WAAWpB,EAAQG;EACnBa,MAAM;EACP,CAAC,IAYAjB,EAAIZ,GAPqBK,EAAyB;EAChD2B,aAAaf,EAAUD;EACvBiB,WAAWpB,EAAQG;EACnBmB,eAAexB,EAAIJ,EAAqB,CAAC4B;EACzCN,MAAM;EACP,CAAC,CAEqC;UAKrCZ,EAAUD,YAAYH,EAAQG,SAAS;EACzC,IAAM,CAACoB,GAAkBC,KAAkB1C,EACzCsB,EAAUD,SACV,QACD;AAKDJ,EAHAC,IAAUjB,EAAcqB,GAAWoB,EAAe,GAC9CD,IACAC,GACJzB,EAAIZ,GAAkBa,EAAQ;QAG1BjB,EAAcqB,GAAWJ,EAAQ,KACnCA,IAAUW,GACVZ,EAAIZ,GAAkBa,EAAQ;EAMvC,EAEYM,IAAyBtB,EACpC,MACA,OAAOc,GAAKC,GAAK0B,MAAsB;CACrC,IAAIrB,IAAYN,EAAIZ,EAAmB;AAMvC,KAAI,CAJyBS,EAAwBG,GAAK;EACxDqB,aAAaf,EAAUD;EACvBa,MAAM;EACP,CAAC,CACwBd,SAASuB,EAAWtB,QAAQ,CAAE;CAExD,IAAIH,IAAUF,EAAIX,EAAiB,EAC7BwC,IAAc3B;AAKpB,KAHAD,EAAIZ,GAAkBsC,EAAW,EACjCzB,IAAUyB,GAEN1C,EAAciB,GAASI,EAAU,EAAE;EACrC,IAAM,CAACmB,GAAkBC,KAAkB1C,EACzCkB,EAAQG,SACR,QACD,EAEKyB,IAAe7C,EAAcqB,GAAWmB,EAAiB,GAC3DC,IACAD,GAMEb,IAFJiB,KAAevB,EAAUD,YAAYwB,EAAYxB,UAM/CyB,IAECD,KAAeC;AAGpBxB,EADAL,EAAIb,GAAoBwB,EAAa,EACrCN,IAAYM;;CAMd,IAAIoB,IAAqB,IAEnBjB,IAAqBtB,EAAqB;EAC9CO;EACAgB,aAAaV,EAAUD;EACvBY,WAAWf,EAAQG;EACnBa,MAAM;EACP,CAAC;AAgBF,CAdIH,MAC0BpB,EAAkB;EAC5CyB,OAAOlB;EACPmB,aAAaf,EAAUD;EACvBiB,WAAWpB,EAAQG;EACnBa,MAAM;EACP,CAAC,KAIAc,IAAqB,MAIrB1B,EAAUD,YAAYH,EAAQG,WAAW,CAACU,MAE5CiB,IAAqB;CAGvB,IAAM7B,IAAmBH,EAAIF,EAAqB;AAElD,KAAIkC,GAAoB;EACtB,IAAIC,IAAwB/B,EAAQG;AAEpC,MAAI,CAACF,EAAiBC,SAASF,EAAQG,QAAQ;QACxC,IAAM6B,KAAY/B,EAOrB,KAN2BV,EAAqB;IAC9CO;IACAgB,aAAakB;IACbjB,WAAWf,EAAQG;IACnBa,MAAM;IACP,CAAC,EACsB;AACtBe,QAAwBC;AACxB;;;EAKN,IAAM,CAACT,GAAkBC,KAAkB1C,EACzCiD,GACA,QACD,EAEKrB,IAAe3B,EAAciB,GAASuB,EAAiB,GACzDC,IACAD;AAGJnB,EADAL,EAAIb,GAAoBwB,EAAa,EACrCN,IAAYM;;AASd,CALIV,KAAW2B,KAAe,CAAC5C,EAAciB,GAAS2B,EAAY,IAChE5B,EAAId,EAAqB,EAIvBmB,EAAUD,YAAYd,EAAYuB,MAAMJ,WAC1ClB,EAAY,EACVkB,SAASJ,EAAUD,SACpB,CAAC;EAGP"}
|
|
1
|
+
{"version":3,"file":"selectedTokenActionsAtom.js","names":["pickDefaultTokenPair","areTokensSame","atom","unlockLimitPriceAtom","limitTokenFromAtom","limitTokenToAtom","Token","wagmiConfig","switchChain","isCrosschainPossible","findFirstTokenFromAcross","isTokenFromAcross","allTokensByChainAtom","getSelectableDestChains","enabledSrcChainsAtom","switchLimitTokensAtom","get","set","tokenTo","enabledSrcChains","includes","network","tokenFrom","initChainFrom","selectLimitTokenToAtom","currentTokenFrom","chainId","selectLimitTokenFromAtom","newTokenFrom","initTokenFrom","state","crosschainPossible","chainIdFrom","chainIdTo","mode","isTokenToFromAcross","token","fromChainId","toChainId","maybeAcrossToken","listByChainId","defaultTokenFrom","defaultTokenTo","newTokenTo","selectableDestChains","initTokenTo","defaultToken","wasCrosschain","needResetTokenFrom","firstPossibleSrcChain","srcChain"],"sources":["../../../../src/core/limit/state/selectedTokenActionsAtom.ts"],"sourcesContent":["import { pickDefaultTokenPair } from \"@/tokens/defaultTokens\";\nimport { areTokensSame } from \"@/tokens/utils/areTokensSame\";\nimport { atom } from \"jotai\";\nimport { unlockLimitPriceAtom } from \"./limitInputActionsAtom\";\nimport { limitTokenFromAtom, limitTokenToAtom } from \"./limitTokenAtoms\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport { switchChain } from \"@/lib/web3/wagmi/switchChain\";\nimport { isCrosschainPossible } from \"@/core/across/isCrosschainPossible\";\nimport {\n findFirstTokenFromAcross,\n isTokenFromAcross,\n} from \"@/core/across/utils\";\nimport { allTokensByChainAtom } from \"@/tokens/state/allTokensByChainAtom\";\nimport { getSelectableDestChains } from \"@/core/state/getSelectableDestChains\";\nimport { enabledSrcChainsAtom } from \"@/core/state/enabledChainsAtom\";\n\nexport const switchLimitTokensAtom = atom(null, async (get, set) => {\n const tokenTo = get(limitTokenToAtom);\n\n if (!tokenTo) return;\n\n const enabledSrcChains = get(enabledSrcChainsAtom);\n if (!enabledSrcChains.includes(tokenTo.network)) return;\n\n const tokenFrom = get(limitTokenFromAtom);\n const initChainFrom = tokenFrom.network;\n\n // set tokenFrom as is\n set(limitTokenFromAtom, tokenTo);\n // set tokenTo, including running all crosschain logic inside\n set(selectLimitTokenToAtom, tokenFrom);\n\n set(unlockLimitPriceAtom);\n\n const currentTokenFrom = get(limitTokenFromAtom);\n\n // switch a token from a different chain?\n if (currentTokenFrom.network !== initChainFrom) {\n // switch chain first\n switchChain({\n chainId: currentTokenFrom.network,\n });\n }\n});\n\nexport const selectLimitTokenFromAtom = atom(\n null,\n async (get, set, newTokenFrom: Token) => {\n let tokenFrom = get(limitTokenFromAtom);\n let tokenTo = get(limitTokenToAtom);\n const initTokenFrom = tokenFrom;\n\n // then set the tokenFrom\n set(limitTokenFromAtom, newTokenFrom);\n tokenFrom = newTokenFrom;\n\n // do not unlock limit price if token has not actually changed\n if (!areTokensSame(tokenFrom, initTokenFrom)) {\n set(unlockLimitPriceAtom);\n }\n\n // selecting a token from a different chain?\n if (tokenFrom.network !== wagmiConfig.state.chainId) {\n switchChain({\n chainId: tokenFrom.network,\n });\n }\n\n if (!tokenTo) return;\n\n const crosschainPossible = isCrosschainPossible({\n get,\n chainIdFrom: tokenFrom.network,\n chainIdTo: tokenTo.network,\n mode: \"limit\",\n });\n\n if (crosschainPossible) {\n const isTokenToFromAcross = isTokenFromAcross({\n token: tokenTo,\n fromChainId: tokenFrom.network,\n toChainId: tokenTo.network,\n mode: \"limit\",\n });\n\n if (!isTokenToFromAcross) {\n // set the token from across as tokenTo,\n // or reset tokenTo if token not found\n const maybeAcrossToken = findFirstTokenFromAcross({\n fromChainId: tokenFrom.network,\n toChainId: tokenTo.network,\n listByChainId: get(allTokensByChainAtom).listByChainId,\n mode: \"limit\",\n });\n\n set(limitTokenToAtom, maybeAcrossToken);\n }\n } else {\n // cross-chain not possible between new chainFrom and chainTo,\n // so need to reset tokenTo to default\n if (tokenFrom.network !== tokenTo.network) {\n const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(\n tokenFrom.network,\n \"limit\"\n );\n\n tokenTo = areTokensSame(tokenFrom, defaultTokenTo)\n ? defaultTokenFrom\n : defaultTokenTo;\n set(limitTokenToAtom, tokenTo);\n } else {\n // or simply flip the tokens if they are from the same chain\n if (areTokensSame(tokenFrom, tokenTo)) {\n tokenTo = initTokenFrom;\n set(limitTokenToAtom, tokenTo);\n }\n // otherwise do nothing, tokenTo is already on the same chain and different from newTokenFrom\n }\n }\n }\n);\n\nexport const selectLimitTokenToAtom = atom(\n null,\n async (get, set, newTokenTo: Token) => {\n let tokenFrom = get(limitTokenFromAtom);\n\n const selectableDestChains = getSelectableDestChains(get, {\n fromChainId: tokenFrom.network,\n mode: \"limit\",\n });\n if (!selectableDestChains.includes(newTokenTo.network)) return;\n\n let tokenTo = get(limitTokenToAtom);\n const initTokenTo = tokenTo;\n\n set(limitTokenToAtom, newTokenTo);\n tokenTo = newTokenTo;\n\n if (areTokensSame(tokenTo, tokenFrom)) {\n const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(\n tokenTo.network,\n \"limit\"\n );\n\n const defaultToken = areTokensSame(tokenFrom, defaultTokenFrom)\n ? defaultTokenTo\n : defaultTokenFrom;\n\n // Will be true if crosschain tokens were selected\n const wasCrosschain =\n initTokenTo && tokenFrom.network !== initTokenTo.network;\n\n const newTokenFrom = wasCrosschain\n ? // We cannot flip the tokens if switching from the crosschain, because if we do, we will end up with tokenFrom network different from app chainId.\n // Switching app chainId when selecting tokenTo is not what we want, because we cannot dictate the main network when selecting tokenTo.\n // Maybe user wants to trade singlechain but we are forcing crosschain.\n defaultToken\n : // Otherwise, we can flip the tokens, or pick from defaults\n (initTokenTo ?? defaultToken);\n\n set(limitTokenFromAtom, newTokenFrom);\n tokenFrom = newTokenFrom;\n }\n\n // after switching we may have ended up with a crosschain pair,\n // but tokenTo may not be crossable depending on srcChainId;\n // this can easily happen if tokenTo was set from WidgetProps\n let needResetTokenFrom = false;\n\n const crosschainPossible = isCrosschainPossible({\n get,\n chainIdFrom: tokenFrom.network,\n chainIdTo: tokenTo.network,\n mode: \"limit\",\n });\n\n if (crosschainPossible) {\n const isTokenToFromAcross = isTokenFromAcross({\n token: tokenTo,\n fromChainId: tokenFrom.network,\n toChainId: tokenTo.network,\n mode: \"limit\",\n });\n\n if (!isTokenToFromAcross) {\n // tokenFrom -> tokenTo is crosschain, but tokenTo can't be destToken for that chain\n needResetTokenFrom = true;\n }\n }\n\n if (tokenFrom.network !== tokenTo.network && !crosschainPossible) {\n // tokenFrom -> tokenTo is crosschain, but delta is explicitly disabled,\n needResetTokenFrom = true;\n }\n\n const enabledSrcChains = get(enabledSrcChainsAtom);\n\n if (needResetTokenFrom) {\n let firstPossibleSrcChain = tokenTo.network;\n // if tokenTo.network can't be srcChain, find the first possible srcChain\n if (!enabledSrcChains.includes(tokenTo.network)) {\n for (const srcChain of enabledSrcChains) {\n const crosschainPossible = isCrosschainPossible({\n get,\n chainIdFrom: srcChain,\n chainIdTo: tokenTo.network,\n mode: \"limit\",\n });\n if (crosschainPossible) {\n firstPossibleSrcChain = srcChain;\n break;\n }\n }\n }\n // set the tokenFrom to default token from tokenTo.network\n const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(\n firstPossibleSrcChain,\n \"limit\"\n );\n // make sure it's not the same as tokenTo\n const newTokenFrom = areTokensSame(tokenTo, defaultTokenFrom)\n ? defaultTokenTo\n : defaultTokenFrom;\n\n set(limitTokenFromAtom, newTokenFrom);\n tokenFrom = newTokenFrom;\n }\n\n // do not unlock limit price if token has not actually changed\n if (tokenTo && initTokenTo && !areTokensSame(tokenTo, initTokenTo)) {\n set(unlockLimitPriceAtom);\n }\n\n // ended up changing tokenFrom network?\n if (tokenFrom.network !== wagmiConfig.state.chainId) {\n switchChain({\n chainId: tokenFrom.network,\n });\n }\n }\n);\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectedTokenAtom.js","names":["isCrosschainPossible","findFirstTokenFromAcross","isTokenFromAcross","jotaiStore","getSelectableDestChains","enabledSrcChainsAtom","SupportedChainId","pickDefaultTokenPair","allTokensByChainAtom","limitTokenFromAtom","limitTokenToAtom","syncLimitTokensAfterChainSwitch","chainId","enabledSrcChains","get","includes","tokenFrom","network","defaultTokenFrom","defaultTokenTo","set","tokenTo","crosschainPossible","chainIdFrom","chainIdTo","mode","isTokenToFromAcross","token","fromChainId","toChainId","maybeAcrossToken","listByChainId","selectableDestChains","undefined"],"sources":["../../../../src/core/limit/state/selectedTokenAtom.ts"],"sourcesContent":["import { isCrosschainPossible } from \"@/core/across/isCrosschainPossible\";\nimport {\n findFirstTokenFromAcross,\n isTokenFromAcross,\n} from \"@/core/across/utils\";\nimport { jotaiStore } from \"@/core/store\";\nimport { getSelectableDestChains } from \"@/core/state/getSelectableDestChains\";\nimport { enabledSrcChainsAtom } from \"@/core/state/enabledChainsAtom\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { pickDefaultTokenPair } from \"@/tokens/defaultTokens\";\nimport { allTokensByChainAtom } from \"@/tokens/state/allTokensByChainAtom\";\nimport { limitTokenFromAtom, limitTokenToAtom } from \"./limitTokenAtoms\";\n\nexport const syncLimitTokensAfterChainSwitch = (chainId: SupportedChainId) => {\n const enabledSrcChains = jotaiStore.get(enabledSrcChainsAtom);\n if (!enabledSrcChains.includes(chainId)) return;\n\n let tokenFrom = jotaiStore.get(limitTokenFromAtom);\n\n // chains are the same? do nothing\n if (tokenFrom.network === chainId) return;\n // token will already be set on new chain, the new token may have been the reason for switchChain\n\n // get default tokens for the new chain\n const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(\n chainId,\n \"limit\"\n );\n\n // update tokenFrom\n jotaiStore.set(limitTokenFromAtom, defaultTokenFrom);\n tokenFrom = defaultTokenFrom;\n\n let tokenTo = jotaiStore.get(limitTokenToAtom);\n\n // toChainId derives from tokenTo.network, if no tokenTo - do nothing\n if (!tokenTo) return;\n\n const crosschainPossible = isCrosschainPossible({\n get: jotaiStore.get,\n chainIdFrom: chainId,\n chainIdTo: tokenTo.network,\n mode: \"limit\",\n });\n\n if (crosschainPossible) {\n const isTokenToFromAcross = isTokenFromAcross({\n token: tokenTo,\n fromChainId: chainId,\n toChainId: tokenTo.network,\n mode: \"limit\",\n });\n\n if (!isTokenToFromAcross) {\n // set the token from across as tokenTo,\n // or reset tokenTo if token not found\n const maybeAcrossToken = findFirstTokenFromAcross({\n fromChainId: chainId,\n toChainId: tokenTo.network,\n listByChainId: jotaiStore.get(allTokensByChainAtom).listByChainId,\n mode: \"limit\",\n });\n\n tokenTo = maybeAcrossToken;\n jotaiStore.set(limitTokenToAtom, tokenTo);\n }\n } else {\n const selectableDestChains = getSelectableDestChains(jotaiStore.get, {\n fromChainId: tokenFrom.network,\n mode: \"limit\",\n });\n if (selectableDestChains.includes(chainId)) {\n // can do single-chain on the new chain, set defaults\n tokenTo = defaultTokenTo;\n jotaiStore.set(limitTokenToAtom, tokenTo);\n } else {\n // avoid complexity and reset tokenTo\n tokenTo = undefined;\n jotaiStore.set(limitTokenToAtom, tokenTo);\n }\n }\n};\n"],"mappings":";;;;;;;;;AAaA,IAAaW,KAAmCC,MAA8B;
|
|
1
|
+
{"version":3,"file":"selectedTokenAtom.js","names":["isCrosschainPossible","findFirstTokenFromAcross","isTokenFromAcross","jotaiStore","getSelectableDestChains","enabledSrcChainsAtom","SupportedChainId","pickDefaultTokenPair","allTokensByChainAtom","limitTokenFromAtom","limitTokenToAtom","syncLimitTokensAfterChainSwitch","chainId","enabledSrcChains","get","includes","tokenFrom","network","defaultTokenFrom","defaultTokenTo","set","tokenTo","crosschainPossible","chainIdFrom","chainIdTo","mode","isTokenToFromAcross","token","fromChainId","toChainId","maybeAcrossToken","listByChainId","selectableDestChains","undefined"],"sources":["../../../../src/core/limit/state/selectedTokenAtom.ts"],"sourcesContent":["import { isCrosschainPossible } from \"@/core/across/isCrosschainPossible\";\nimport {\n findFirstTokenFromAcross,\n isTokenFromAcross,\n} from \"@/core/across/utils\";\nimport { jotaiStore } from \"@/core/store\";\nimport { getSelectableDestChains } from \"@/core/state/getSelectableDestChains\";\nimport { enabledSrcChainsAtom } from \"@/core/state/enabledChainsAtom\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { pickDefaultTokenPair } from \"@/tokens/defaultTokens\";\nimport { allTokensByChainAtom } from \"@/tokens/state/allTokensByChainAtom\";\nimport { limitTokenFromAtom, limitTokenToAtom } from \"./limitTokenAtoms\";\n\nexport const syncLimitTokensAfterChainSwitch = (chainId: SupportedChainId) => {\n const enabledSrcChains = jotaiStore.get(enabledSrcChainsAtom);\n if (!enabledSrcChains.includes(chainId)) return;\n\n let tokenFrom = jotaiStore.get(limitTokenFromAtom);\n\n // chains are the same? do nothing\n if (tokenFrom.network === chainId) return;\n // token will already be set on new chain, the new token may have been the reason for switchChain\n\n // get default tokens for the new chain\n const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(\n chainId,\n \"limit\"\n );\n\n // update tokenFrom\n jotaiStore.set(limitTokenFromAtom, defaultTokenFrom);\n tokenFrom = defaultTokenFrom;\n\n let tokenTo = jotaiStore.get(limitTokenToAtom);\n\n // toChainId derives from tokenTo.network, if no tokenTo - do nothing\n if (!tokenTo) return;\n\n const crosschainPossible = isCrosschainPossible({\n get: jotaiStore.get,\n chainIdFrom: chainId,\n chainIdTo: tokenTo.network,\n mode: \"limit\",\n });\n\n if (crosschainPossible) {\n const isTokenToFromAcross = isTokenFromAcross({\n token: tokenTo,\n fromChainId: chainId,\n toChainId: tokenTo.network,\n mode: \"limit\",\n });\n\n if (!isTokenToFromAcross) {\n // set the token from across as tokenTo,\n // or reset tokenTo if token not found\n const maybeAcrossToken = findFirstTokenFromAcross({\n fromChainId: chainId,\n toChainId: tokenTo.network,\n listByChainId: jotaiStore.get(allTokensByChainAtom).listByChainId,\n mode: \"limit\",\n });\n\n tokenTo = maybeAcrossToken;\n jotaiStore.set(limitTokenToAtom, tokenTo);\n }\n } else {\n const selectableDestChains = getSelectableDestChains(jotaiStore.get, {\n fromChainId: tokenFrom.network,\n mode: \"limit\",\n });\n if (selectableDestChains.includes(chainId)) {\n // can do single-chain on the new chain, set defaults\n tokenTo = defaultTokenTo;\n jotaiStore.set(limitTokenToAtom, tokenTo);\n } else {\n // avoid complexity and reset tokenTo\n tokenTo = undefined;\n jotaiStore.set(limitTokenToAtom, tokenTo);\n }\n }\n};\n"],"mappings":";;;;;;;;;AAaA,IAAaW,KAAmCC,MAA8B;CAE5E,IAAI,CADqBT,EAAWW,IAAIT,EACnCQ,CAAiBE,SAASH,EAAQ,EAAE;CAEzC,IAAII,IAAYb,EAAWW,IAAIL,EAAmB;CAGlD,IAAIO,EAAUC,YAAYL,GAAS;CAInC,IAAM,CAACM,GAAkBC,KAAkBZ,EACzCK,GACA,QACD;CAIDI,AADAb,EAAWiB,IAAIX,GAAoBS,EAAiB,EACpDF,IAAYE;CAEZ,IAAIG,IAAUlB,EAAWW,IAAIJ,EAAiB;CAGzCW,MAEsBrB,EAAqB;EAC9Cc,KAAKX,EAAWW;EAChBS,aAAaX;EACbY,WAAWH,EAAQJ;EACnBQ,MAAM;EACP,CAEGH,GAC0BpB,EAAkB;EAC5CyB,OAAON;EACPO,aAAahB;EACbiB,WAAWR,EAAQJ;EACnBQ,MAAM;EACP,CAEIC,KAUHL,IAPyBpB,EAAyB;EAChD2B,aAAahB;EACbiB,WAAWR,EAAQJ;EACnBc,eAAe5B,EAAWW,IAAIN,EAAqB,CAACuB;EACpDN,MAAM;EACP,CAESK,EACV3B,EAAWiB,IAAIV,GAAkBW,EAAQ,IAGdjB,EAAwBD,EAAWW,KAAK;EACnEc,aAAaZ,EAAUC;EACvBQ,MAAM;EACP,CACGO,CAAqBjB,SAASH,EAAQ,IAExCS,IAAUF,GACVhB,EAAWiB,IAAIV,GAAkBW,EAAQ,KAGzCA,IAAUY,KAAAA,GACV9B,EAAWiB,IAAIV,GAAkBW,EAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":["Big","TimeUnitObject","TimeUnitState","PriceRates","neverTimeUnit","zeroRates","timeUnitToSeconds","timeUnitObj","label","value","timestampFromNow","Math","floor","Date","now","getTimeUnitState","isTimeUnitState","timestamp","undefined","units","ms","const","getClosestTimeUnit","timestampS","timestampMs","diffMs","unit","calculateReceiveAmount","payAmount","priceRates","isReversed","pay","price","rateReversed","eq","div","toFixed","rate","mul","calculatePayAmount","receiveAmount","receive","calculateRates","getUpdatedRates","bigPrice"],"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"],"mappings":";;;AAKA,SAAgBM,EAAkBC,GAA6B;
|
|
1
|
+
{"version":3,"file":"utils.js","names":["Big","TimeUnitObject","TimeUnitState","PriceRates","neverTimeUnit","zeroRates","timeUnitToSeconds","timeUnitObj","label","value","timestampFromNow","Math","floor","Date","now","getTimeUnitState","isTimeUnitState","timestamp","undefined","units","ms","const","getClosestTimeUnit","timestampS","timestampMs","diffMs","unit","calculateReceiveAmount","payAmount","priceRates","isReversed","pay","price","rateReversed","eq","div","toFixed","rate","mul","calculatePayAmount","receiveAmount","receive","calculateRates","getUpdatedRates","bigPrice"],"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"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLimitDetailsListProps.js","names":["DetailWithValue","DetailWithValueListExpandableProps","SwapRate","useWidgetTokens","useAtomValue","limitPayInputAmountWeiAtom","limitReceiveInputAmountWeiAtom","Big","useLimitDetailsListProps","$","_c","tokenFrom","tokenTo","srcAmountWei","destAmountWei","undefined","eq","t0","Symbol","for","title","value","details","t1","t2","root","trigger","t3","alwaysOpen","classes"],"sources":["../../../src/core/limit/useLimitDetailsListProps.tsx"],"sourcesContent":["import type {\n DetailWithValue,\n DetailWithValueListExpandableProps,\n} from \"@/components/widget/Details/types\";\nimport { SwapRate } from \"@/components/widget/SwapRate/SwapRate\";\nimport { useWidgetTokens } from \"../inputs/state/common\";\nimport { useAtomValue } from \"@/core/store\";\n\nimport {\n limitPayInputAmountWeiAtom,\n limitReceiveInputAmountWeiAtom,\n} from \"./state/limitInputAmountAtom\";\nimport Big from \"big.js\";\n\nexport const useLimitDetailsListProps =\n (): DetailWithValueListExpandableProps | null => {\n const { tokenFrom, tokenTo } = useWidgetTokens(\"limit\");\n\n const srcAmountWei = useAtomValue(limitPayInputAmountWeiAtom);\n const destAmountWei = useAtomValue(limitReceiveInputAmountWeiAtom);\n\n if (\n !tokenTo ||\n destAmountWei === undefined ||\n Big(srcAmountWei).eq(0) ||\n Big(destAmountWei).eq(0)\n ) {\n return null;\n }\n\n const details: DetailWithValue[] = [\n {\n title: \"Network Fees\",\n value: \"🎉 Free\",\n },\n ];\n\n return {\n alwaysOpen: true,\n trigger: (\n <SwapRate\n srcToken={tokenFrom}\n destToken={tokenTo}\n srcAmountWei={srcAmountWei}\n destAmountWei={destAmountWei}\n />\n ),\n details,\n classes: {\n root: \"mt-4\",\n trigger: \"cursor-default\",\n },\n };\n };\n"],"mappings":";;;;;;;;AAcA,IAAaQ,UACX;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACE,EAAAC,cAAAC,eAA+BT,EAAgB,QAAQ,EAEvDU,IAAqBT,EAAaC,EAA2B,EAC7DS,IAAsBV,EAAaE,EAA+B;
|
|
1
|
+
{"version":3,"file":"useLimitDetailsListProps.js","names":["DetailWithValue","DetailWithValueListExpandableProps","SwapRate","useWidgetTokens","useAtomValue","limitPayInputAmountWeiAtom","limitReceiveInputAmountWeiAtom","Big","useLimitDetailsListProps","$","_c","tokenFrom","tokenTo","srcAmountWei","destAmountWei","undefined","eq","t0","Symbol","for","title","value","details","t1","t2","root","trigger","t3","alwaysOpen","classes"],"sources":["../../../src/core/limit/useLimitDetailsListProps.tsx"],"sourcesContent":["import type {\n DetailWithValue,\n DetailWithValueListExpandableProps,\n} from \"@/components/widget/Details/types\";\nimport { SwapRate } from \"@/components/widget/SwapRate/SwapRate\";\nimport { useWidgetTokens } from \"../inputs/state/common\";\nimport { useAtomValue } from \"@/core/store\";\n\nimport {\n limitPayInputAmountWeiAtom,\n limitReceiveInputAmountWeiAtom,\n} from \"./state/limitInputAmountAtom\";\nimport Big from \"big.js\";\n\nexport const useLimitDetailsListProps =\n (): DetailWithValueListExpandableProps | null => {\n const { tokenFrom, tokenTo } = useWidgetTokens(\"limit\");\n\n const srcAmountWei = useAtomValue(limitPayInputAmountWeiAtom);\n const destAmountWei = useAtomValue(limitReceiveInputAmountWeiAtom);\n\n if (\n !tokenTo ||\n destAmountWei === undefined ||\n Big(srcAmountWei).eq(0) ||\n Big(destAmountWei).eq(0)\n ) {\n return null;\n }\n\n const details: DetailWithValue[] = [\n {\n title: \"Network Fees\",\n value: \"🎉 Free\",\n },\n ];\n\n return {\n alwaysOpen: true,\n trigger: (\n <SwapRate\n srcToken={tokenFrom}\n destToken={tokenTo}\n srcAmountWei={srcAmountWei}\n destAmountWei={destAmountWei}\n />\n ),\n details,\n classes: {\n root: \"mt-4\",\n trigger: \"cursor-default\",\n },\n };\n };\n"],"mappings":";;;;;;;;AAcA,IAAaQ,UACX;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACE,EAAAC,cAAAC,eAA+BT,EAAgB,QAAQ,EAEvDU,IAAqBT,EAAaC,EAA2B,EAC7DS,IAAsBV,EAAaE,EAA+B;CAElE,IACE,CAACM,KACDE,MAAkBC,KAAAA,KAClBR,EAAIM,EAAa,CAAAG,GAAI,EACG,IAAxBT,EAAIO,EAAc,CAAAE,GAAI,EAAE,EAAA,OAEjB;CACR,IAAAC;CAAA,AAAAR,EAAA,OAAAS,OAAAC,IAAA,4BAAA,IAEkCF,IAAA,CACjC;EAAAG,OACS;EAAcC,OACd;EACR,CACF,EAAAZ,EAAA,KAAAQ,KAAAA,IAAAR,EAAA;CALD,IAAAa,IAAmCL,GAKjCM;CAAA,AAAAd,EAAA,OAAAK,KAAAL,EAAA,OAAAI,KAAAJ,EAAA,OAAAE,KAAAF,EAAA,OAAAG,KAKEW,IAAA,kBAAC,GAAD;EACYZ,UAAAA;EACCC,WAAAA;EACGC;EACCC;EACf,CAAA,EAAAL,EAAA,KAAAK,GAAAL,EAAA,KAAAI,GAAAJ,EAAA,KAAAE,GAAAF,EAAA,KAAAG,GAAAH,EAAA,KAAAc,KAAAA,IAAAd,EAAA;CAAA,IAAAe;CAAA,AAAAf,EAAA,OAAAS,OAAAC,IAAA,4BAAA,IAGKK,IAAA;EAAAC,MACD;EAAMC,SACH;EACV,EAAAjB,EAAA,KAAAe,KAAAA,IAAAf,EAAA;CAAA,IAAAkB;CACF,OADElB,EAAA,OAAAc,IACFI,IAAAlB,EAAA,MAfMkB,IAAA;EAAAC,YACO;EAAIF,SAEdH;EAKED;EAAAO,SAGKL;EAIV,EAAAf,EAAA,KAAAc,GAAAd,EAAA,KAAAkB,IAfMA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLimitNotSupported.js","names":["CHAINS_WITH_DELTA","SupportedChainId","useChainId","useTradeMode","useUnsupportedLimitChain","forcedChainId","$","_c","tradeMode","appChainId","chainId","t0","includes"],"sources":["../../../src/core/limit/useLimitNotSupported.ts"],"sourcesContent":["import { CHAINS_WITH_DELTA } from \"@/lib/constants/delta\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useChainId } from \"wagmi\";\nimport { useTradeMode } from \"../state/tradeModeAtom\";\n\nexport function useUnsupportedLimitChain(forcedChainId?: SupportedChainId) {\n const tradeMode = useTradeMode();\n const appChainId = useChainId();\n const chainId = forcedChainId ?? appChainId;\n return tradeMode === \"limit\" && !CHAINS_WITH_DELTA.includes(chainId);\n}\n"],"mappings":";;;;;AAKA,SAAOI,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACLC,IAAkBL,GAAc,EAChCM,IAAmBP,GAAY,EAC/BQ,IAAgBL,KAAAI,GAA4BE;
|
|
1
|
+
{"version":3,"file":"useLimitNotSupported.js","names":["CHAINS_WITH_DELTA","SupportedChainId","useChainId","useTradeMode","useUnsupportedLimitChain","forcedChainId","$","_c","tradeMode","appChainId","chainId","t0","includes"],"sources":["../../../src/core/limit/useLimitNotSupported.ts"],"sourcesContent":["import { CHAINS_WITH_DELTA } from \"@/lib/constants/delta\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useChainId } from \"wagmi\";\nimport { useTradeMode } from \"../state/tradeModeAtom\";\n\nexport function useUnsupportedLimitChain(forcedChainId?: SupportedChainId) {\n const tradeMode = useTradeMode();\n const appChainId = useChainId();\n const chainId = forcedChainId ?? appChainId;\n return tradeMode === \"limit\" && !CHAINS_WITH_DELTA.includes(chainId);\n}\n"],"mappings":";;;;;AAKA,SAAOI,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACLC,IAAkBL,GAAc,EAChCM,IAAmBP,GAAY,EAC/BQ,IAAgBL,KAAAI,GAA4BE;CACwB,OADxBL,EAAA,OAAAI,KAAAJ,EAAA,OAAAE,KACrCG,IAAAH,MAAc,WAAd,CAA0BR,EAAiBY,SAAUF,EAAQ,EAAAJ,EAAA,KAAAI,GAAAJ,EAAA,KAAAE,GAAAF,EAAA,KAAAK,KAAAA,IAAAL,EAAA,IAA7DK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLimitPriceDifference.js","names":["getPercentDifference","useAtomValue","limitPriceRatesAtom","useLimitRate","UseLimitPriceDiffResult","useLimitPriceDifference","$","_c","limitRateResult","userDefinedRate","Number","rate","rates","t0","priceDiff","marketRate","t1"],"sources":["../../../src/core/limit/useLimitPriceDifference.ts"],"sourcesContent":["import { getPercentDifference } from \"@/lib/utils/price\";\nimport { useAtomValue } from \"@/core/store\";\nimport { limitPriceRatesAtom } from \"./state/limitInputAmountAtom\";\nimport { useLimitRate } from \"./useLimitRate\";\nimport type { UseLimitPriceDiffResult } from \"./types\";\n\nexport const useLimitPriceDifference = (): UseLimitPriceDiffResult => {\n const limitRateResult = useLimitRate(\"limit\");\n\n const userDefinedRate = Number(useAtomValue(limitPriceRatesAtom).rate);\n\n if (!userDefinedRate || !limitRateResult.rates?.rate)\n return { priceDiff: 0, ...limitRateResult };\n\n const marketRate = Number(limitRateResult.rates.rate) || 0; // guard against NaN\n // how much % the limit price rate is different from the market rate\n const priceDiff = getPercentDifference(userDefinedRate, marketRate);\n\n return { priceDiff, ...limitRateResult };\n};\n"],"mappings":";;;;;;AAMA,IAAaK,UAA0B;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACrCC,IAAwBL,EAAa,QAAQ,EAE7CM,IAAwBC,OAAOT,EAAaC,EAAoB,CAAAS,KAAM;
|
|
1
|
+
{"version":3,"file":"useLimitPriceDifference.js","names":["getPercentDifference","useAtomValue","limitPriceRatesAtom","useLimitRate","UseLimitPriceDiffResult","useLimitPriceDifference","$","_c","limitRateResult","userDefinedRate","Number","rate","rates","t0","priceDiff","marketRate","t1"],"sources":["../../../src/core/limit/useLimitPriceDifference.ts"],"sourcesContent":["import { getPercentDifference } from \"@/lib/utils/price\";\nimport { useAtomValue } from \"@/core/store\";\nimport { limitPriceRatesAtom } from \"./state/limitInputAmountAtom\";\nimport { useLimitRate } from \"./useLimitRate\";\nimport type { UseLimitPriceDiffResult } from \"./types\";\n\nexport const useLimitPriceDifference = (): UseLimitPriceDiffResult => {\n const limitRateResult = useLimitRate(\"limit\");\n\n const userDefinedRate = Number(useAtomValue(limitPriceRatesAtom).rate);\n\n if (!userDefinedRate || !limitRateResult.rates?.rate)\n return { priceDiff: 0, ...limitRateResult };\n\n const marketRate = Number(limitRateResult.rates.rate) || 0; // guard against NaN\n // how much % the limit price rate is different from the market rate\n const priceDiff = getPercentDifference(userDefinedRate, marketRate);\n\n return { priceDiff, ...limitRateResult };\n};\n"],"mappings":";;;;;;AAMA,IAAaK,UAA0B;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACrCC,IAAwBL,EAAa,QAAQ,EAE7CM,IAAwBC,OAAOT,EAAaC,EAAoB,CAAAS,KAAM;CAEtE,IAAI,CAACF,KAAD,CAAqBD,EAAeI,OAAYD,MAAA;EAAA,IAAAE;EACP,OADOP,EAAA,OAAAE,IACPK,IAAAP,EAAA,MAApCO,IAAA;GAAAC,WAAa;GAAC,GAAKN;GAAiB,EAAAF,EAAA,KAAAE,GAAAF,EAAA,KAAAO,IAApCA;;CAET,IAAAE,IAAmBL,OAAOF,EAAeI,MAAMD,KAAW,IAAvC,GAAwCE;CAAA,AAAAP,EAAA,OAAAS,KAAAT,EAAA,OAAAG,KAEzCI,IAAAb,EAAqBS,GAAiBM,EAAW,EAAAT,EAAA,KAAAS,GAAAT,EAAA,KAAAG,GAAAH,EAAA,KAAAO,KAAAA,IAAAP,EAAA;CAAnE,IAAAQ,IAAkBD,GAAkDG;CAE5B,OAF4BV,EAAA,OAAAE,KAAAF,EAAA,OAAAQ,KAE7DE,IAAA;EAAAF;EAAA,GAAgBN;EAAiB,EAAAF,EAAA,KAAAE,GAAAF,EAAA,KAAAQ,GAAAR,EAAA,KAAAU,KAAAA,IAAAV,EAAA,IAAjCU"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLimitPriceInputProps.js","names":["PriceInputProps","useAtomValue","useSetAtom","useAtom","OnValueChange","useWidgetTokens","useLogger","currentLimitInputAtom","isLimitPriceLockedAtom","isLimitPriceReversedAtom","setLimitPriceRatesAtom","toggleLimitPriceLockAtom","toggleLimitPriceReverseAtom","resetLimitPriceAtom","limitPriceAmountAtom","useLimitPriceDifference","getUpdatedRates","useLimitPriceInputProps","$","_c","logger","tokenFrom","tokenTo","isLocked","isReversed","limitPriceAmount","setPriceRates","togglePriceLock","togglePriceReverse","resetPrice","currentLimitInput","setCurrentLimitInput","rates","isLoading","priceDiff","t0","values","log","updatedRates","value","recalculateReceive","onAmountChange","drivingToken","t1","t2","t3","t4","t5","type","amount","onReset","onToggleLock","onToggleReverse","onFocus"],"sources":["../../../src/core/limit/useLimitPriceInputProps.ts"],"sourcesContent":["import type { PriceInputProps } from \"@/components/widget/LimitPriceInput/types\";\nimport { useAtomValue, useSetAtom, useAtom } from \"@/core/store\";\n// import { useEffect } from \"react\";\nimport type { OnValueChange } from \"react-number-format\";\nimport { useWidgetTokens } from \"../inputs/state/common\";\nimport { useLogger } from \"../logger\";\nimport { currentLimitInputAtom } from \"./state/currentLimitInputAtom\";\nimport { isLimitPriceLockedAtom } from \"./state/isLimitPriceLockedAtom\";\nimport { isLimitPriceReversedAtom } from \"./state/isLimitPriceReversedAtom\";\nimport {\n setLimitPriceRatesAtom,\n toggleLimitPriceLockAtom,\n toggleLimitPriceReverseAtom,\n resetLimitPriceAtom,\n} from \"./state/limitInputActionsAtom\";\nimport { limitPriceAmountAtom } from \"./state/limitInputAmountAtom\";\nimport { useLimitPriceDifference } from \"./useLimitPriceDifference\";\nimport { getUpdatedRates } from \"./state/utils\";\n\nexport const useLimitPriceInputProps = (): PriceInputProps => {\n const logger = useLogger(\"LimitPriceInput\");\n const { tokenFrom, tokenTo } = useWidgetTokens(\"limit\");\n\n const isLocked = useAtomValue(isLimitPriceLockedAtom);\n const isReversed = useAtomValue(isLimitPriceReversedAtom);\n const limitPriceAmount = useAtomValue(limitPriceAmountAtom);\n\n const setPriceRates = useSetAtom(setLimitPriceRatesAtom);\n const togglePriceLock = useSetAtom(toggleLimitPriceLockAtom);\n const togglePriceReverse = useSetAtom(toggleLimitPriceReverseAtom);\n const resetPrice = useSetAtom(resetLimitPriceAtom);\n const [currentLimitInput, setCurrentLimitInput] = useAtom(\n currentLimitInputAtom\n );\n\n const { rates, isLoading, priceDiff } = useLimitPriceDifference();\n\n /*\n useEffect(() => {\n if (rates) {\n setPriceRates(rates);\n }\n }, [setPriceRates, rates]);\n */\n\n const onAmountChange: OnValueChange = (values) => {\n logger.log(\"onAmountChange\", values);\n\n const updatedRates = getUpdatedRates(values.value, isReversed);\n const recalculateReceive = currentLimitInput === \"limit\";\n setPriceRates(updatedRates, recalculateReceive);\n };\n\n const drivingToken = isReversed ? tokenFrom : tokenTo;\n\n return {\n type: \"limit\",\n drivingToken,\n amount: limitPriceAmount,\n isLoading,\n isLocked,\n isReversed,\n priceDiff,\n onAmountChange,\n onReset: () => resetPrice(rates),\n onToggleLock: () => togglePriceLock(),\n onToggleReverse: () => togglePriceReverse(),\n onFocus: () => setCurrentLimitInput(\"limit\"),\n };\n};\n"],"mappings":";;;;;;;;;;;;AAmBA,IAAaiB,UAA0B;CAAA,IAAAC,IAAAC,EAAA,GAAA,EACrCC,IAAed,EAAU,kBAAkB,EAC3C,EAAAe,cAAAC,eAA+BjB,EAAgB,QAAQ,EAEvDkB,IAAiBtB,EAAaO,EAAuB,EACrDgB,IAAmBvB,EAAaQ,EAAyB,EACzDgB,IAAyBxB,EAAaa,EAAqB,EAE3DY,IAAsBxB,EAAWQ,EAAuB,EACxDiB,IAAwBzB,EAAWS,EAAyB,EAC5DiB,IAA2B1B,EAAWU,EAA4B,EAClEiB,IAAmB3B,EAAWW,EAAoB,EAClD,CAAAiB,GAAAC,KAAkD5B,EAChDI,EACD,EAED,EAAAyB,UAAAC,cAAAC,iBAAwCnB,GAAyB,EAACoB;
|
|
1
|
+
{"version":3,"file":"useLimitPriceInputProps.js","names":["PriceInputProps","useAtomValue","useSetAtom","useAtom","OnValueChange","useWidgetTokens","useLogger","currentLimitInputAtom","isLimitPriceLockedAtom","isLimitPriceReversedAtom","setLimitPriceRatesAtom","toggleLimitPriceLockAtom","toggleLimitPriceReverseAtom","resetLimitPriceAtom","limitPriceAmountAtom","useLimitPriceDifference","getUpdatedRates","useLimitPriceInputProps","$","_c","logger","tokenFrom","tokenTo","isLocked","isReversed","limitPriceAmount","setPriceRates","togglePriceLock","togglePriceReverse","resetPrice","currentLimitInput","setCurrentLimitInput","rates","isLoading","priceDiff","t0","values","log","updatedRates","value","recalculateReceive","onAmountChange","drivingToken","t1","t2","t3","t4","t5","type","amount","onReset","onToggleLock","onToggleReverse","onFocus"],"sources":["../../../src/core/limit/useLimitPriceInputProps.ts"],"sourcesContent":["import type { PriceInputProps } from \"@/components/widget/LimitPriceInput/types\";\nimport { useAtomValue, useSetAtom, useAtom } from \"@/core/store\";\n// import { useEffect } from \"react\";\nimport type { OnValueChange } from \"react-number-format\";\nimport { useWidgetTokens } from \"../inputs/state/common\";\nimport { useLogger } from \"../logger\";\nimport { currentLimitInputAtom } from \"./state/currentLimitInputAtom\";\nimport { isLimitPriceLockedAtom } from \"./state/isLimitPriceLockedAtom\";\nimport { isLimitPriceReversedAtom } from \"./state/isLimitPriceReversedAtom\";\nimport {\n setLimitPriceRatesAtom,\n toggleLimitPriceLockAtom,\n toggleLimitPriceReverseAtom,\n resetLimitPriceAtom,\n} from \"./state/limitInputActionsAtom\";\nimport { limitPriceAmountAtom } from \"./state/limitInputAmountAtom\";\nimport { useLimitPriceDifference } from \"./useLimitPriceDifference\";\nimport { getUpdatedRates } from \"./state/utils\";\n\nexport const useLimitPriceInputProps = (): PriceInputProps => {\n const logger = useLogger(\"LimitPriceInput\");\n const { tokenFrom, tokenTo } = useWidgetTokens(\"limit\");\n\n const isLocked = useAtomValue(isLimitPriceLockedAtom);\n const isReversed = useAtomValue(isLimitPriceReversedAtom);\n const limitPriceAmount = useAtomValue(limitPriceAmountAtom);\n\n const setPriceRates = useSetAtom(setLimitPriceRatesAtom);\n const togglePriceLock = useSetAtom(toggleLimitPriceLockAtom);\n const togglePriceReverse = useSetAtom(toggleLimitPriceReverseAtom);\n const resetPrice = useSetAtom(resetLimitPriceAtom);\n const [currentLimitInput, setCurrentLimitInput] = useAtom(\n currentLimitInputAtom\n );\n\n const { rates, isLoading, priceDiff } = useLimitPriceDifference();\n\n /*\n useEffect(() => {\n if (rates) {\n setPriceRates(rates);\n }\n }, [setPriceRates, rates]);\n */\n\n const onAmountChange: OnValueChange = (values) => {\n logger.log(\"onAmountChange\", values);\n\n const updatedRates = getUpdatedRates(values.value, isReversed);\n const recalculateReceive = currentLimitInput === \"limit\";\n setPriceRates(updatedRates, recalculateReceive);\n };\n\n const drivingToken = isReversed ? tokenFrom : tokenTo;\n\n return {\n type: \"limit\",\n drivingToken,\n amount: limitPriceAmount,\n isLoading,\n isLocked,\n isReversed,\n priceDiff,\n onAmountChange,\n onReset: () => resetPrice(rates),\n onToggleLock: () => togglePriceLock(),\n onToggleReverse: () => togglePriceReverse(),\n onFocus: () => setCurrentLimitInput(\"limit\"),\n };\n};\n"],"mappings":";;;;;;;;;;;;AAmBA,IAAaiB,UAA0B;CAAA,IAAAC,IAAAC,EAAA,GAAA,EACrCC,IAAed,EAAU,kBAAkB,EAC3C,EAAAe,cAAAC,eAA+BjB,EAAgB,QAAQ,EAEvDkB,IAAiBtB,EAAaO,EAAuB,EACrDgB,IAAmBvB,EAAaQ,EAAyB,EACzDgB,IAAyBxB,EAAaa,EAAqB,EAE3DY,IAAsBxB,EAAWQ,EAAuB,EACxDiB,IAAwBzB,EAAWS,EAAyB,EAC5DiB,IAA2B1B,EAAWU,EAA4B,EAClEiB,IAAmB3B,EAAWW,EAAoB,EAClD,CAAAiB,GAAAC,KAAkD5B,EAChDI,EACD,EAED,EAAAyB,UAAAC,cAAAC,iBAAwCnB,GAAyB,EAACoB;CAAA,AAAAjB,EAAA,OAAAY,KAAAZ,EAAA,OAAAM,KAAAN,EAAA,OAAAE,KAAAF,EAAA,OAAAQ,KAU5BS,KAAAC,MAAA;EAKpCV,AAJAN,EAAMiB,IAAK,kBAAkBD,EAAO,EAIpCV,EAFqBV,EAAgBoB,EAAMG,OAAQf,EAErCc,EADaR,MAAsB,QACF;IAChDZ,EAAA,KAAAY,GAAAZ,EAAA,KAAAM,GAAAN,EAAA,KAAAE,GAAAF,EAAA,KAAAQ,GAAAR,EAAA,KAAAiB,KAAAA,IAAAjB,EAAA;CAND,IAAAuB,IAAsCN,GAQtCO,IAAqBlB,IAAAH,IAAAC,GAAiCqB;CAAA,AAAAzB,EAAA,OAAAc,KAAAd,EAAA,OAAAW,KAW3Cc,UAAMd,EAAWG,EAAM,EAAAd,EAAA,KAAAc,GAAAd,EAAA,KAAAW,GAAAX,EAAA,KAAAyB,KAAAA,IAAAzB,EAAA;CAAA,IAAA0B;CAAA,AAAA1B,EAAA,OAAAS,IACKiB,IAAA1B,EAAA,MAAvB0B,UAAMjB,GAAiB,EAAAT,EAAA,KAAAS,GAAAT,EAAA,KAAA0B;CAAA,IAAAC;CAAA,AAAA3B,EAAA,QAAAU,IACMiB,IAAA3B,EAAA,OAA1B2B,UAAMjB,GAAoB,EAAAV,EAAA,MAAAU,GAAAV,EAAA,MAAA2B;CAAA,IAAAC;CAAA,AAAA5B,EAAA,QAAAa,IACCe,IAAA5B,EAAA,OAAnC4B,UAAMf,EAAqB,QAAQ,EAAAb,EAAA,MAAAa,GAAAb,EAAA,MAAA4B;CAAA,IAAAC;CAC7C,OAD6C7B,EAAA,QAAAwB,KAAAxB,EAAA,QAAAe,KAAAf,EAAA,QAAAK,KAAAL,EAAA,QAAAM,KAAAN,EAAA,QAAAO,KAAAP,EAAA,QAAAuB,KAAAvB,EAAA,QAAAgB,KAAAhB,EAAA,QAAAyB,KAAAzB,EAAA,QAAA0B,KAAA1B,EAAA,QAAA2B,KAAA3B,EAAA,QAAA4B,KAZvCC,IAAA;EAAAC,MACC;EAAON;EAAAO,QAELxB;EAAgBQ;EAAAV;EAAAC;EAAAU;EAAAO;EAAAS,SAMfP;EAAuBQ,cAClBP;EAAuBQ,iBACpBP;EAA0BQ,SAClCP;EACV,EAAA5B,EAAA,MAAAwB,GAAAxB,EAAA,MAAAe,GAAAf,EAAA,MAAAK,GAAAL,EAAA,MAAAM,GAAAN,EAAA,MAAAO,GAAAP,EAAA,MAAAuB,GAAAvB,EAAA,MAAAgB,GAAAhB,EAAA,MAAAyB,GAAAzB,EAAA,MAAA0B,GAAA1B,EAAA,MAAA2B,GAAA3B,EAAA,MAAA4B,GAAA5B,EAAA,MAAA6B,KAAAA,IAAA7B,EAAA,KAbM6B"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { UseLimitRateResult } from './types';
|
|
2
|
-
export declare const useDeltaSwapPriceForLimit: ({ enabled, refetchInterval,
|
|
2
|
+
export declare const useDeltaSwapPriceForLimit: ({ enabled, refetchInterval, }?: {
|
|
3
3
|
enabled?: boolean;
|
|
4
4
|
refetchInterval?: number;
|
|
5
|
-
tradeMode: "limit" | "otc";
|
|
6
5
|
}) => {
|
|
7
|
-
price: import('@velora-dex/sdk').
|
|
6
|
+
price: import('@velora-dex/sdk').DeltaPriceV2 | undefined;
|
|
8
7
|
isLoading: boolean;
|
|
9
8
|
error: Error | null;
|
|
10
9
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLimitRate.d.ts","sourceRoot":"","sources":["../../../src/core/limit/useLimitRate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useLimitRate.d.ts","sourceRoot":"","sources":["../../../src/core/limit/useLimitRate.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,eAAO,MAAM,yBAAyB,GAAI,gCAGvC;IACD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CACrB;;;;CAuCL,CAAC;AAGF,eAAO,MAAM,YAAY,GACvB,WAAW,OAAO,GAAG,KAAK,KACzB,kBAiCF,CAAC"}
|