@velora-dex/widget 0.2.5-dev.0 → 0.2.5-dev.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/components/web3/ConnectedWallet/ConnectedWallet.js +7 -7
  2. package/dist/components/web3/ConnectedWallet/ConnectedWallet.js.map +1 -1
  3. package/dist/components/widget/SwapModeSwitcher/state/swapSideAtom.d.ts +6 -2
  4. package/dist/components/widget/SwapModeSwitcher/state/swapSideAtom.d.ts.map +1 -1
  5. package/dist/components/widget/SwapModeSwitcher/state/swapSideAtom.js +6 -1
  6. package/dist/components/widget/SwapModeSwitcher/state/swapSideAtom.js.map +1 -1
  7. package/dist/configurator/Configurator.d.ts.map +1 -1
  8. package/dist/configurator/components/FormPropsInputs.d.ts.map +1 -1
  9. package/dist/configurator/components/common/ButtonGroup.d.ts +12 -0
  10. package/dist/configurator/components/common/ButtonGroup.d.ts.map +1 -0
  11. package/dist/core/index.d.ts.map +1 -1
  12. package/dist/core/index.js +93 -101
  13. package/dist/core/index.js.map +1 -1
  14. package/dist/core/inputs/state/common.d.ts +13 -3
  15. package/dist/core/inputs/state/common.d.ts.map +1 -1
  16. package/dist/core/inputs/state/common.js +36 -6
  17. package/dist/core/inputs/state/common.js.map +1 -1
  18. package/dist/core/inputs/state/setTokenByAddressAtom.d.ts +1 -1
  19. package/dist/core/inputs/state/setTokenByAddressAtom.d.ts.map +1 -1
  20. package/dist/core/inputs/state/setTokenByAddressAtom.js +77 -18
  21. package/dist/core/inputs/state/setTokenByAddressAtom.js.map +1 -1
  22. package/dist/core/inputs/state/types.d.ts +11 -1
  23. package/dist/core/inputs/state/types.d.ts.map +1 -1
  24. package/dist/core/limit/state/limitInputActionsAtom.d.ts +3 -0
  25. package/dist/core/limit/state/limitInputActionsAtom.d.ts.map +1 -1
  26. package/dist/core/limit/state/limitInputActionsAtom.js +7 -3
  27. package/dist/core/limit/state/limitInputActionsAtom.js.map +1 -1
  28. package/dist/core/limit/state/utils.d.ts +7 -0
  29. package/dist/core/limit/state/utils.d.ts.map +1 -1
  30. package/dist/core/limit/state/utils.js +31 -2
  31. package/dist/core/limit/state/utils.js.map +1 -1
  32. package/dist/core/otc/state/otcInputActionsAtom.d.ts +3 -0
  33. package/dist/core/otc/state/otcInputActionsAtom.d.ts.map +1 -1
  34. package/dist/core/otc/state/otcInputActionsAtom.js +7 -3
  35. package/dist/core/otc/state/otcInputActionsAtom.js.map +1 -1
  36. package/dist/core/state/configActionsAtom.d.ts.map +1 -1
  37. package/dist/core/state/configActionsAtom.js +1 -3
  38. package/dist/core/state/configActionsAtom.js.map +1 -1
  39. package/dist/core/state/configAtom.d.ts +2 -4
  40. package/dist/core/state/configAtom.d.ts.map +1 -1
  41. package/dist/core/state/configAtom.js +3 -7
  42. package/dist/core/state/configAtom.js.map +1 -1
  43. package/dist/core/types.d.ts +0 -6
  44. package/dist/core/types.d.ts.map +1 -1
  45. package/dist/hooks/gas/useGasPrices.d.ts.map +1 -1
  46. package/dist/hooks/gas/useGasPrices.js +2 -2
  47. package/dist/hooks/gas/useGasPrices.js.map +1 -1
  48. package/dist/hooks/tokens/prices/queries.d.ts.map +1 -1
  49. package/dist/hooks/tokens/prices/queries.js +2 -2
  50. package/dist/hooks/tokens/prices/queries.js.map +1 -1
  51. package/dist/hooks/tokens/useTokenTaxFee.js +2 -2
  52. package/dist/hooks/tokens/useTokenTaxFee.js.map +1 -1
  53. package/dist/hooks/txs/queries/useTxHistory.d.ts.map +1 -1
  54. package/dist/hooks/txs/queries/useTxHistory.js +2 -2
  55. package/dist/hooks/txs/queries/useTxHistory.js.map +1 -1
  56. package/dist/hooks/useSDK.d.ts.map +1 -1
  57. package/dist/hooks/useSDK.js +11 -11
  58. package/dist/hooks/useSDK.js.map +1 -1
  59. package/dist/lib/constants/index.d.ts +2 -0
  60. package/dist/lib/constants/index.d.ts.map +1 -1
  61. package/dist/lib/constants/index.js +4 -1
  62. package/dist/lib/constants/index.js.map +1 -1
  63. package/dist/lib/utils/explorer.d.ts.map +1 -1
  64. package/dist/lib/utils/explorer.js +3 -3
  65. package/dist/lib/utils/explorer.js.map +1 -1
  66. package/package.json +1 -1
  67. package/dist/lib/constants/urls.d.ts +0 -4
  68. package/dist/lib/constants/urls.d.ts.map +0 -1
  69. package/dist/lib/constants/urls.js +0 -30
  70. package/dist/lib/constants/urls.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"setTokenByAddressAtom.js","sources":["../../../../src/core/inputs/state/setTokenByAddressAtom.ts"],"sourcesContent":["import { atom, useAtom, useSetAtom, type Setter } from \"jotai\";\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 tradeModeToPayAmountUnitAtom,\n tradeModeToSetTokenAtoms,\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 { bridgeInfoAtom } from \"@/hooks/swap/prices/delta/queries/useBridgeInfo\";\nimport { isTradeMode } from \"@/lib/tradeMode\";\nimport { enabledTradeModesAtom } from \"@/core/state/enabledTradeModesAtom\";\nimport type { FormInputProps } from \"./types\";\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\nconst formInputPropsEffectAtom = atomEffect((get, set) => {\n // subscribe to bridgeInfoAtom to have up-to-date available crosses\n // and retry token finding each time when bridgeInfo changes\n get(bridgeInfoAtom);\n\n const enabledTradeModes = get(enabledTradeModesAtom);\n const formInputProps: RelaxedFormInputProps = get(formInputPropsAtom);\n const { tokenFromAddress, srcChainId, sendAmount } = formInputProps;\n\n logger.log(\"using external props to set Widget form input\", formInputProps);\n\n let destChainId = formInputProps.destChainId;\n let tokenToAddress = formInputProps.tokenToAddress;\n let selectedForm = formInputProps.selectedForm || \"swap\";\n if (!isTradeMode(selectedForm) || !enabledTradeModes.includes(selectedForm)) {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid or disabled selectedForm provided\", { selectedForm });\n // fallback to first enabled trade mode from the config\n selectedForm = enabledTradeModes[0];\n }\n\n // necessary for type safety\n assert(isTradeMode(selectedForm), \"selectedForm must be a valid trade mode\");\n\n const formAtoms = tradeModeToTokenAtoms[selectedForm];\n const currentTokenFrom = get.peek(formAtoms.tokenFromAtom);\n const currentTokenTo = get.peek(formAtoms.tokenToAtom);\n\n const currentTradeMode = get.peek(tradeModeAtom);\n\n if (currentTradeMode !== selectedForm) {\n set(userTradeModeAtom, selectedForm);\n }\n\n let newTokenFrom: Token | undefined;\n let newTokenTo: Token | undefined;\n\n // if chain isn't given in props, match current srcChainId\n const defaultChainId = currentTokenFrom.network;\n\n if (selectedForm !== \"swap\") {\n // non-swap forms are single-chain only,\n // force destChainId = srcChainId\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 if (sendAmount && Number(sendAmount) >= 0) {\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\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}: 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 });\n }, [\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n setFormInputProps,\n ]);\n}\n"],"names":["formInputPropsAtom","atom","logger","getLogger","findTokenInAtoms","get","set","tokenToFind","tokenFromAddress","address","chainId","network","isETHaddress","nativeToken","nativeTokensByChainId","tokenFromLowercase","toLowerCase","tokensMap","fromListsAtom","listByChainId","addressMap","tokenFromLists","importedTokens","peek","importedTokensAtom","importedToken","find","token","autoImportedTokens","autoImportedTokensAtom","autoImportedToken","info","autoAddImportedTokenAtom","formInputPropsEffectAtom","atomEffect","bridgeInfoAtom","enabledTradeModes","enabledTradeModesAtom","formInputProps","srcChainId","sendAmount","log","destChainId","tokenToAddress","selectedForm","isTradeMode","includes","warn","assert","formAtoms","tradeModeToTokenAtoms","currentTokenFrom","tokenFromAtom","currentTokenTo","tokenToAtom","currentTradeMode","tradeModeAtom","userTradeModeAtom","newTokenFrom","newTokenTo","defaultChainId","wethMapping","wrappedNativeCurrency","getTokenToFind","tokenFromProps","currentToken","areTokensSame","undefined","isSupportedChainId","defaultTokenFrom","pickDefaultTokenPair","defaultTokenTo","selectTokenFromAtom","tradeModeToSetTokenAtoms","selectTokenToAtom","Number","formPayAmountAtom","tradeModeToPayAmountUnitAtom","currentSendAmount","read","write","isAddress","useActivateFormInputEffects","useAtom","useSetFormInputFromProps","t0","$","_c","t1","setFormInputProps","useSetAtom","t2","t3","useLayoutEffect"],"mappings":"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"}
1
+ {"version":3,"file":"setTokenByAddressAtom.js","sources":["../../../../src/core/inputs/state/setTokenByAddressAtom.ts"],"sourcesContent":["import { atom, useAtom, useSetAtom, type Setter } from \"jotai\";\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 tradeModeToDeadlineTimeUnitAtom,\n tradeModeToPayAmountUnitAtom,\n tradeModeToPriceRateAmountAtom,\n tradeModeToReceiveAmountUnitAtom,\n tradeModeToSetTokenAtoms,\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 { bridgeInfoAtom } from \"@/hooks/swap/prices/delta/queries/useBridgeInfo\";\nimport { isTradeMode } from \"@/lib/tradeMode\";\nimport { enabledTradeModesAtom } from \"@/core/state/enabledTradeModesAtom\";\nimport type { FormInputProps } from \"./types\";\nimport type { SwapSideUnion } from \"@velora-dex/sdk\";\nimport { userSwapSideAtom } from \"@/components/widget/SwapModeSwitcher/state/swapSideAtom\";\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 bridgeInfoAtom to have up-to-date available crosses\n // and retry token finding each time when bridgeInfo changes\n get(bridgeInfoAtom);\n\n const enabledTradeModes = get(enabledTradeModesAtom);\n const formInputProps: RelaxedFormInputProps = get(formInputPropsAtom);\n const {\n tokenFromAddress,\n srcChainId,\n sendAmount,\n receiveAmount,\n priceRateAmount,\n orderDeadline,\n } = formInputProps;\n\n logger.log(\"using external props to set Widget form input\", formInputProps);\n\n let destChainId = formInputProps.destChainId;\n let tokenToAddress = formInputProps.tokenToAddress;\n let selectedForm = formInputProps.selectedForm || \"swap\";\n if (!isTradeMode(selectedForm) || !enabledTradeModes.includes(selectedForm)) {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid or disabled selectedForm provided\", { selectedForm });\n // fallback to first enabled trade mode from the config\n selectedForm = enabledTradeModes[0];\n }\n\n // necessary for type safety\n assert(isTradeMode(selectedForm), \"selectedForm must be a valid trade mode\");\n\n const formAtoms = tradeModeToTokenAtoms[selectedForm];\n const currentTokenFrom = get.peek(formAtoms.tokenFromAtom);\n const currentTokenTo = get.peek(formAtoms.tokenToAtom);\n\n const currentTradeMode = get.peek(tradeModeAtom);\n\n if (currentTradeMode !== selectedForm) {\n set(userTradeModeAtom, selectedForm);\n }\n\n let newTokenFrom: Token | undefined;\n let newTokenTo: Token | undefined;\n\n // if chain isn't given in props, match current srcChainId\n const defaultChainId = currentTokenFrom.network;\n\n if (selectedForm !== \"swap\") {\n // non-swap forms are single-chain only,\n // force destChainId = srcChainId\n destChainId = srcChainId;\n }\n\n if (\n selectedForm === \"otc\" &&\n tokenToAddress &&\n isETHaddress(tokenToAddress)\n ) {\n const wethMapping: Record<number, Address> = wrappedNativeCurrency;\n // OTC Orders don't support ETH as tokenTo=takerAsset,\n // more logical to use WETH instead of no token at all\n tokenToAddress = wethMapping[destChainId || defaultChainId];\n }\n\n {\n // match tokenFromAddress and srcChainId to a new tokenFrom to select\n const tokenToFind = getTokenToFind({\n tokenFromProps: { address: tokenFromAddress, network: srcChainId },\n currentToken: currentTokenFrom,\n defaultChainId,\n });\n if (tokenToFind) {\n newTokenFrom = findTokenInAtoms({\n get,\n tokenToFind,\n set,\n });\n }\n }\n\n {\n // match tokenToAddress and destChainId to a new tokenTo to select\n const tokenToFind = getTokenToFind({\n tokenFromProps: { address: tokenToAddress, network: destChainId },\n currentToken: currentTokenTo,\n defaultChainId,\n });\n if (tokenToFind) {\n newTokenTo = findTokenInAtoms({\n get,\n tokenToFind,\n set,\n });\n }\n }\n\n if (newTokenFrom && newTokenTo && areTokensSame(newTokenFrom, newTokenTo)) {\n // if tokens are the same, skip tokenTo\n newTokenTo = undefined;\n }\n\n if (\n !newTokenFrom &&\n !tokenFromAddress &&\n srcChainId &&\n isSupportedChainId(srcChainId) &&\n srcChainId !== currentTokenFrom.network\n ) {\n // no tokenAddress given, but chainId is provided and different from current\n const [defaultTokenFrom] = pickDefaultTokenPair(srcChainId, selectedForm);\n // set default token for the chain\n newTokenFrom = defaultTokenFrom;\n }\n\n if (\n !newTokenTo &&\n !tokenToAddress &&\n destChainId &&\n isSupportedChainId(destChainId) &&\n destChainId !== currentTokenTo?.network\n ) {\n // no tokenAddress given, but chainId is provided and different from current\n const [, defaultTokenTo] = pickDefaultTokenPair(destChainId, selectedForm);\n // set default token for the chain\n newTokenTo = defaultTokenTo;\n }\n\n if (newTokenFrom) {\n const selectTokenFromAtom =\n tradeModeToSetTokenAtoms[selectedForm].tokenFromAtom;\n set(selectTokenFromAtom, newTokenFrom);\n }\n if (newTokenTo) {\n const selectTokenToAtom =\n tradeModeToSetTokenAtoms[selectedForm].tokenToAtom;\n set(selectTokenToAtom, newTokenTo);\n }\n\n let side = formInputProps.side || \"SELL\";\n if (!isValidSide(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 // fallback to SELL\n side = \"SELL\";\n }\n\n // necessary for type safety\n assert(isValidSide(side), \"side must be BUY or SELL\");\n\n if (side !== get.peek(userSwapSideAtom)) {\n set(userSwapSideAtom, side);\n }\n\n const isSwap = selectedForm === \"swap\";\n const isLimitOrOtc = selectedForm === \"limit\" || selectedForm === \"otc\";\n\n const isSwapWithSell = isSwap && side === \"SELL\";\n const isSwapWithBuy = isSwap && side === \"BUY\";\n\n if (\n sendAmount &&\n Number(sendAmount) >= 0 &&\n (isSwapWithSell || isLimitOrOtc)\n ) {\n const formPayAmountAtom = tradeModeToPayAmountUnitAtom[selectedForm];\n const currentSendAmount = get.peek(formPayAmountAtom.read);\n if (currentSendAmount !== sendAmount) {\n set(formPayAmountAtom.write, sendAmount);\n }\n }\n\n if (receiveAmount && Number(receiveAmount) >= 0 && isSwapWithBuy) {\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 if (priceRateAmount && Number(priceRateAmount) >= 0) {\n const formPriceRateAmountAtom =\n tradeModeToPriceRateAmountAtom[selectedForm];\n const currentPriceRateAmount = get.peek(formPriceRateAmountAtom.read);\n if (currentPriceRateAmount !== priceRateAmount) {\n set(formPriceRateAmountAtom.write, priceRateAmount);\n }\n }\n\n if (orderDeadline !== undefined && !isNaN(Number(orderDeadline))) {\n const timeUnitAtom = tradeModeToDeadlineTimeUnitAtom[selectedForm];\n const currentDeadlineTimeUnit = get.peek(timeUnitAtom);\n const newDeadlineTimeUnit = getClosestTimeUnit(orderDeadline);\n if (\n currentDeadlineTimeUnit.label !== newDeadlineTimeUnit.label ||\n currentDeadlineTimeUnit.value !== newDeadlineTimeUnit.value\n ) {\n set(timeUnitAtom, newDeadlineTimeUnit);\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 priceRateAmount,\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 priceRateAmount,\n orderDeadline,\n });\n }, [\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n setFormInputProps,\n receiveAmount,\n side,\n priceRateAmount,\n orderDeadline,\n ]);\n}\n"],"names":["formInputPropsAtom","atom","logger","getLogger","findTokenInAtoms","get","set","tokenToFind","tokenFromAddress","address","chainId","network","isETHaddress","nativeToken","nativeTokensByChainId","tokenFromLowercase","toLowerCase","tokensMap","fromListsAtom","listByChainId","addressMap","tokenFromLists","importedTokens","peek","importedTokensAtom","importedToken","find","token","autoImportedTokens","autoImportedTokensAtom","autoImportedToken","info","autoAddImportedTokenAtom","isValidSide","side","formInputPropsEffectAtom","atomEffect","bridgeInfoAtom","enabledTradeModes","enabledTradeModesAtom","formInputProps","srcChainId","sendAmount","receiveAmount","priceRateAmount","orderDeadline","log","destChainId","tokenToAddress","selectedForm","isTradeMode","includes","warn","assert","formAtoms","tradeModeToTokenAtoms","currentTokenFrom","tokenFromAtom","currentTokenTo","tokenToAtom","currentTradeMode","tradeModeAtom","userTradeModeAtom","newTokenFrom","newTokenTo","defaultChainId","wethMapping","wrappedNativeCurrency","getTokenToFind","tokenFromProps","currentToken","areTokensSame","undefined","isSupportedChainId","defaultTokenFrom","pickDefaultTokenPair","defaultTokenTo","selectTokenFromAtom","tradeModeToSetTokenAtoms","selectTokenToAtom","userSwapSideAtom","isSwap","isLimitOrOtc","isSwapWithSell","isSwapWithBuy","Number","formPayAmountAtom","tradeModeToPayAmountUnitAtom","currentSendAmount","read","write","formReceiveAmountAtom","tradeModeToReceiveAmountUnitAtom","currentReceiveAmount","formPriceRateAmountAtom","tradeModeToPriceRateAmountAtom","currentPriceRateAmount","isNaN","timeUnitAtom","tradeModeToDeadlineTimeUnitAtom","currentDeadlineTimeUnit","newDeadlineTimeUnit","getClosestTimeUnit","label","value","isAddress","useActivateFormInputEffects","useAtom","useSetFormInputFromProps","t0","$","_c","t1","setFormInputProps","useSetAtom","t2","t3","useLayoutEffect"],"mappings":"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"}
@@ -1,15 +1,25 @@
1
1
  import { TradeMode } from '../../state/tradeModeAtom';
2
2
  import { SupportedChainId } from '../../../lib/web3/wagmi/types';
3
+ import { SwapSideUnion } from '@velora-dex/sdk';
3
4
  import { Address } from 'viem';
4
5
  export type FormInputProps = {
5
6
  /** @description The form to activate, defaults to "swap" */
6
7
  selectedForm?: TradeMode;
7
8
  tokenFromAddress?: Address;
8
- /** @description The chainId of the tokenFrom, for selectedForm!=swap some chains are disabled */
9
+ /** @description The chainId of the tokenFrom, for selectedForm != swap some chains are disabled */
9
10
  srcChainId?: SupportedChainId;
10
11
  tokenToAddress?: Address;
11
12
  /** @description The chainId of the tokenTo, only functional together with selectedForm = "swap"*/
12
13
  destChainId?: SupportedChainId;
14
+ /** @description The amount of the pay input, if selectedForm is "swap" - only functional together with side = "SELL" */
13
15
  sendAmount?: string;
16
+ /** @description The amount of the receive input, only functional together with selectedForm = "swap" and side = "BUY" */
17
+ receiveAmount?: string;
18
+ /** @description The side of the swap, only functional together with selectedForm = "swap" */
19
+ side?: SwapSideUnion;
20
+ /** @description The price rate amount, only functional together with selectedForm = "limit" or "otc" */
21
+ priceRateAmount?: string;
22
+ /** @description The order deadline in milliseconds, only functional together with selectedForm = "limit" or "otc" */
23
+ orderDeadline?: number;
14
24
  };
15
25
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/inputs/state/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,MAAM,MAAM,cAAc,GAAG;IAC3B,4DAA4D;IAC5D,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iGAAiG;IACjG,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kGAAkG;IAClG,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;CAGrB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/inputs/state/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,MAAM,MAAM,cAAc,GAAG;IAC3B,4DAA4D;IAC5D,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mGAAmG;IACnG,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kGAAkG;IAClG,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,wHAAwH;IACxH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yHAAyH;IACzH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6FAA6F;IAC7F,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,wGAAwG;IACxG,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qHAAqH;IACrH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC"}
@@ -8,6 +8,9 @@ export declare const setLimitPayAmountAtom: import('jotai').WritableAtom<null, [
8
8
  export declare const setLimitAmountAtomFromProps: import('jotai').WritableAtom<null, [amount: string], void> & {
9
9
  init: null;
10
10
  };
11
+ export declare const setLimitPriceAmountAtomFromProps: import('jotai').WritableAtom<null, [amount: string], void> & {
12
+ init: null;
13
+ };
11
14
  export declare const setLimitReceiveAmountAtom: import('jotai').WritableAtom<null, [receiveAmount: string], void> & {
12
15
  init: null;
13
16
  };
@@ -1 +1 @@
1
- {"version":3,"file":"limitInputActionsAtom.d.ts","sourceRoot":"","sources":["../../../../src/core/limit/state/limitInputActionsAtom.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,eAAO,MAAM,sBAAsB;;CAwBlC,CAAC;AAEF,eAAO,MAAM,qBAAqB;;CAyBjC,CAAC;AAEF,eAAO,MAAM,2BAA2B;;CAMvC,CAAC;AAEF,eAAO,MAAM,yBAAyB;;CA2BrC,CAAC;AAEF,eAAO,MAAM,mBAAmB;;CAiB/B,CAAC;AAEF,eAAO,MAAM,oBAAoB;;CAE/B,CAAC;AAEH,eAAO,MAAM,wBAAwB;;CAGnC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;CAGtC,CAAC"}
1
+ {"version":3,"file":"limitInputActionsAtom.d.ts","sourceRoot":"","sources":["../../../../src/core/limit/state/limitInputActionsAtom.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,eAAO,MAAM,sBAAsB;;CAwBlC,CAAC;AAEF,eAAO,MAAM,qBAAqB;;CAyBjC,CAAC;AAEF,eAAO,MAAM,2BAA2B;;CAMvC,CAAC;AAEF,eAAO,MAAM,gCAAgC;;CAM5C,CAAC;AAEF,eAAO,MAAM,yBAAyB;;CA2BrC,CAAC;AAEF,eAAO,MAAM,mBAAmB;;CAiB/B,CAAC;AAEF,eAAO,MAAM,oBAAoB;;CAE/B,CAAC;AAEH,eAAO,MAAM,wBAAwB;;CAGnC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;CAGtC,CAAC"}
@@ -1,10 +1,10 @@
1
1
  import { atom } from 'jotai';
2
- import { limitPayInputAmountAtom, limitPriceRatesAtom, limitPriceAmountAtom, limitReceiveInputAmountAtom } from './limitInputAmountAtom.js';
2
+ import { limitReceiveInputAmountAtom, limitPriceRatesAtom, limitPayInputAmountAtom, limitPriceAmountAtom } from './limitInputAmountAtom.js';
3
3
  import { isLimitPriceLockedAtom } from './isLimitPriceLockedAtom.js';
4
4
  import Big from 'big.js';
5
5
  import { currentLimitInputAtom } from './currentLimitInputAtom.js';
6
6
  import { isLimitPriceReversedAtom } from './isLimitPriceReversedAtom.js';
7
- import { calculateReceiveAmount, calculatePayAmount, calculateRates } from './utils.js';
7
+ import { calculatePayAmount, calculateRates, getUpdatedRates, calculateReceiveAmount } from './utils.js';
8
8
  import { zeroRates } from './constants.js';
9
9
 
10
10
  const setLimitPriceRatesAtom = atom(null, (get, set, priceRates, recalculateReceive = true) => {
@@ -34,6 +34,10 @@ const setLimitAmountAtomFromProps = atom(null, (_, set, amount) => {
34
34
  set(currentLimitInputAtom, "from");
35
35
  set(setLimitPayAmountAtom, amount);
36
36
  });
37
+ const setLimitPriceAmountAtomFromProps = atom(null, (_, set, amount) => {
38
+ const updatedRates = getUpdatedRates(amount, false);
39
+ set(setLimitPriceRatesAtom, updatedRates, true);
40
+ });
37
41
  const setLimitReceiveAmountAtom = atom(null, (get, set, receiveAmount) => {
38
42
  set(limitReceiveInputAmountAtom, receiveAmount);
39
43
  if (get(currentLimitInputAtom) !== "to") return;
@@ -70,5 +74,5 @@ const toggleLimitPriceReverseAtom = atom(null, (get, set) => {
70
74
  set(isLimitPriceReversedAtom, !isReversed);
71
75
  });
72
76
 
73
- export { resetLimitPriceAtom, setLimitAmountAtomFromProps, setLimitPayAmountAtom, setLimitPriceRatesAtom, setLimitReceiveAmountAtom, toggleLimitPriceLockAtom, toggleLimitPriceReverseAtom, unlockLimitPriceAtom };
77
+ export { resetLimitPriceAtom, setLimitAmountAtomFromProps, setLimitPayAmountAtom, setLimitPriceAmountAtomFromProps, setLimitPriceRatesAtom, setLimitReceiveAmountAtom, toggleLimitPriceLockAtom, toggleLimitPriceReverseAtom, unlockLimitPriceAtom };
74
78
  //# sourceMappingURL=limitInputActionsAtom.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"limitInputActionsAtom.js","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 setLimitAmountAtomFromProps = 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 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"],"names":["setLimitPriceRatesAtom","atom","get","set","priceRates","recalculateReceive","isLocked","isLimitPriceLockedAtom","limitPriceRatesAtom","payAmount","limitPayInputAmountAtom","payGtZero","Big","gt","isReversed","isLimitPriceReversedAtom","newReceiveAmount","calculateReceiveAmount","setLimitReceiveAmountAtom","setLimitPayAmountAtom","currentLimitInputAtom","limitPriceAmount","limitPriceAmountAtom","limitPriceGtZero","setLimitAmountAtomFromProps","_","amount","receiveAmount","limitReceiveInputAmountAtom","newPayAmount","calculatePayAmount","updatedRates","calculateRates","resetLimitPriceAtom","zeroRates","unlockLimitPriceAtom","toggleLimitPriceLockAtom","toggleLimitPriceReverseAtom"],"mappings":"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"}
1
+ {"version":3,"file":"limitInputActionsAtom.js","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 getUpdatedRates,\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 setLimitAmountAtomFromProps = 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 setLimitPriceAmountAtomFromProps = atom(\n null,\n (_, set, amount: string) => {\n const updatedRates = getUpdatedRates(amount, false);\n set(setLimitPriceRatesAtom, updatedRates, true);\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 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"],"names":["setLimitPriceRatesAtom","atom","get","set","priceRates","recalculateReceive","isLocked","isLimitPriceLockedAtom","limitPriceRatesAtom","payAmount","limitPayInputAmountAtom","payGtZero","Big","gt","isReversed","isLimitPriceReversedAtom","newReceiveAmount","calculateReceiveAmount","setLimitReceiveAmountAtom","setLimitPayAmountAtom","currentLimitInputAtom","limitPriceAmount","limitPriceAmountAtom","limitPriceGtZero","setLimitAmountAtomFromProps","_","amount","setLimitPriceAmountAtomFromProps","updatedRates","getUpdatedRates","receiveAmount","limitReceiveInputAmountAtom","newPayAmount","calculatePayAmount","calculateRates","resetLimitPriceAtom","zeroRates","unlockLimitPriceAtom","toggleLimitPriceLockAtom","toggleLimitPriceReverseAtom"],"mappings":"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"}
@@ -1,6 +1,13 @@
1
1
  import { TimeUnitObject } from './deadlineAtom';
2
2
  import { PriceRates } from '../types';
3
3
  export declare function timeUnitToSeconds(timeUnitObj: TimeUnitObject): number;
4
+ export declare function getClosestTimeUnit(timestampMs: number): {
5
+ readonly label: "never";
6
+ readonly value: 0;
7
+ } | {
8
+ label: "minutes" | "days" | "hours" | "months";
9
+ value: number;
10
+ };
4
11
  export declare function calculateReceiveAmount(payAmount: string, priceRates: PriceRates, isReversed: boolean): string;
5
12
  export declare function calculatePayAmount(receiveAmount: string, priceRates: PriceRates, isReversed: boolean): string;
6
13
  export declare function calculateRates(receiveAmount: string, payAmount: string): PriceRates;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/core/limit/state/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,cAAc,UAa5D;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,OAAO,UAcpB;AAED,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,OAAO,UAcpB;AAED,wBAAgB,cAAc,CAC5B,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,GAChB,UAAU,CAYZ;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,OAAO,GAClB,UAAU,CAWZ"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/core/limit/state/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,cAAc,UAa5D;AASD,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM;;;;;;EAmBrD;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,OAAO,UAcpB;AAED,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,OAAO,UAcpB;AAED,wBAAgB,cAAc,CAC5B,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,GAChB,UAAU,CAYZ;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,OAAO,GAClB,UAAU,CAWZ"}
@@ -1,5 +1,5 @@
1
1
  import Big from 'big.js';
2
- import { zeroRates } from './constants.js';
2
+ import { neverTimeUnit, zeroRates } from './constants.js';
3
3
 
4
4
  function timeUnitToSeconds(timeUnitObj) {
5
5
  switch (timeUnitObj.label) {
@@ -15,6 +15,35 @@ function timeUnitToSeconds(timeUnitObj) {
15
15
  return 0;
16
16
  }
17
17
  }
18
+ const units = [{
19
+ label: "months",
20
+ ms: 30 * 24 * 60 * 60 * 1e3
21
+ }, {
22
+ label: "days",
23
+ ms: 24 * 60 * 60 * 1e3
24
+ }, {
25
+ label: "hours",
26
+ ms: 60 * 60 * 1e3
27
+ }, {
28
+ label: "minutes",
29
+ ms: 60 * 1e3
30
+ }];
31
+ function getClosestTimeUnit(timestampMs) {
32
+ if (timestampMs <= 0) return neverTimeUnit;
33
+ const now = Date.now();
34
+ if (timestampMs <= now) return neverTimeUnit;
35
+ const diffMs = timestampMs - now;
36
+ for (const unit of units) {
37
+ const value = Math.floor(diffMs / unit.ms);
38
+ if (value > 0) {
39
+ return {
40
+ label: unit.label,
41
+ value
42
+ };
43
+ }
44
+ }
45
+ return neverTimeUnit;
46
+ }
18
47
  function calculateReceiveAmount(payAmount, priceRates, isReversed) {
19
48
  const pay = Big(payAmount || "0");
20
49
  if (isReversed) {
@@ -62,5 +91,5 @@ function getUpdatedRates(value, isReversed) {
62
91
  return zeroRates;
63
92
  }
64
93
 
65
- export { calculatePayAmount, calculateRates, calculateReceiveAmount, getUpdatedRates, timeUnitToSeconds };
94
+ export { calculatePayAmount, calculateRates, calculateReceiveAmount, getClosestTimeUnit, getUpdatedRates, timeUnitToSeconds };
66
95
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../src/core/limit/state/utils.ts"],"sourcesContent":["import Big from \"big.js\";\nimport type { TimeUnitObject } from \"./deadlineAtom\";\nimport type { PriceRates } from \"../types\";\nimport { 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\nexport function calculateReceiveAmount(\n payAmount: string,\n priceRates: PriceRates,\n isReversed: boolean\n) {\n const pay = Big(payAmount || \"0\");\n\n if (isReversed) {\n // price = from/to → receive = pay / price\n const price = Big(priceRates.rateReversed || \"0\");\n if (price.eq(0)) return \"0\";\n return pay.div(price).toFixed();\n }\n\n const price = Big(priceRates.rate || \"0\");\n // normal: price = to/from → receive = pay * price\n return pay.mul(price).toFixed();\n}\n\nexport function calculatePayAmount(\n receiveAmount: string,\n priceRates: PriceRates,\n isReversed: boolean\n) {\n const receive = Big(receiveAmount || \"0\");\n\n if (isReversed) {\n // price = from/to → pay = receive * price\n const price = Big(priceRates.rateReversed || \"0\");\n return receive.mul(price).toFixed();\n }\n\n // normal: pay = receive / price\n const price = Big(priceRates.rate || \"0\");\n if (price.eq(0)) return \"0\";\n return receive.div(price).toFixed();\n}\n\nexport function calculateRates(\n receiveAmount: string,\n payAmount: string\n): PriceRates {\n const receive = Big(receiveAmount || \"0\");\n const pay = Big(payAmount || \"0\");\n\n if (pay.eq(0) || receive.eq(0)) return zeroRates;\n\n // normal: price = to/from → price = receive / pay\n const rate = receive.div(pay).toFixed();\n // reversed: price = from/to → price = pay / receive\n const rateReversed = pay.div(receive).toFixed();\n\n return { rate, rateReversed };\n}\n\nexport function getUpdatedRates(\n value: string,\n isReversed: boolean\n): PriceRates {\n const bigPrice = Big(value || 0);\n if (!bigPrice.eq(0)) {\n const rate = bigPrice.toFixed();\n const rateReversed = Big(1).div(bigPrice).toFixed();\n\n return isReversed\n ? { rate: rateReversed, rateReversed: rate }\n : { rate, rateReversed };\n }\n return zeroRates;\n}\n"],"names":["timeUnitToSeconds","timeUnitObj","label","value","calculateReceiveAmount","payAmount","priceRates","isReversed","pay","Big","price","rateReversed","eq","div","toFixed","rate","mul","calculatePayAmount","receiveAmount","receive","calculateRates","zeroRates","getUpdatedRates","bigPrice"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../src/core/limit/state/utils.ts"],"sourcesContent":["import Big from \"big.js\";\nimport type { TimeUnitObject } 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\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(timestampMs: number) {\n if (timestampMs <= 0) return neverTimeUnit;\n\n const now = Date.now();\n\n if (timestampMs <= now) return neverTimeUnit;\n\n const diffMs = timestampMs - now;\n\n for (const unit of units) {\n const value = Math.floor(diffMs / unit.ms);\n if (value > 0) {\n return {\n label: unit.label,\n value,\n };\n }\n }\n return neverTimeUnit;\n}\n\nexport function calculateReceiveAmount(\n payAmount: string,\n priceRates: PriceRates,\n isReversed: boolean\n) {\n const pay = Big(payAmount || \"0\");\n\n if (isReversed) {\n // price = from/to → receive = pay / price\n const price = Big(priceRates.rateReversed || \"0\");\n if (price.eq(0)) return \"0\";\n return pay.div(price).toFixed();\n }\n\n const price = Big(priceRates.rate || \"0\");\n // normal: price = to/from → receive = pay * price\n return pay.mul(price).toFixed();\n}\n\nexport function calculatePayAmount(\n receiveAmount: string,\n priceRates: PriceRates,\n isReversed: boolean\n) {\n const receive = Big(receiveAmount || \"0\");\n\n if (isReversed) {\n // price = from/to → pay = receive * price\n const price = Big(priceRates.rateReversed || \"0\");\n return receive.mul(price).toFixed();\n }\n\n // normal: pay = receive / price\n const price = Big(priceRates.rate || \"0\");\n if (price.eq(0)) return \"0\";\n return receive.div(price).toFixed();\n}\n\nexport function calculateRates(\n receiveAmount: string,\n payAmount: string\n): PriceRates {\n const receive = Big(receiveAmount || \"0\");\n const pay = Big(payAmount || \"0\");\n\n if (pay.eq(0) || receive.eq(0)) return zeroRates;\n\n // normal: price = to/from → price = receive / pay\n const rate = receive.div(pay).toFixed();\n // reversed: price = from/to → price = pay / receive\n const rateReversed = pay.div(receive).toFixed();\n\n return { rate, rateReversed };\n}\n\nexport function getUpdatedRates(\n value: string,\n isReversed: boolean\n): PriceRates {\n const bigPrice = Big(value || 0);\n if (!bigPrice.eq(0)) {\n const rate = bigPrice.toFixed();\n const rateReversed = Big(1).div(bigPrice).toFixed();\n\n return isReversed\n ? { rate: rateReversed, rateReversed: rate }\n : { rate, rateReversed };\n }\n return zeroRates;\n}\n"],"names":["timeUnitToSeconds","timeUnitObj","label","value","units","ms","getClosestTimeUnit","timestampMs","neverTimeUnit","now","Date","diffMs","unit","Math","floor","calculateReceiveAmount","payAmount","priceRates","isReversed","pay","Big","price","rateReversed","eq","div","toFixed","rate","mul","calculatePayAmount","receiveAmount","receive","calculateRates","zeroRates","getUpdatedRates","bigPrice"],"mappings":"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"}
@@ -8,6 +8,9 @@ export declare const setOtcPayAmountAtom: import('jotai').WritableAtom<null, [pa
8
8
  export declare const setOtcAmountAtomFromProps: import('jotai').WritableAtom<null, [amount: string], void> & {
9
9
  init: null;
10
10
  };
11
+ export declare const setOtcPriceAmountAtomFromProps: import('jotai').WritableAtom<null, [amount: string], void> & {
12
+ init: null;
13
+ };
11
14
  export declare const setOtcReceiveAmountAtom: import('jotai').WritableAtom<null, [receiveAmount: string], void> & {
12
15
  init: null;
13
16
  };
@@ -1 +1 @@
1
- {"version":3,"file":"otcInputActionsAtom.d.ts","sourceRoot":"","sources":["../../../../src/core/otc/state/otcInputActionsAtom.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrD,eAAO,MAAM,oBAAoB;;CAwBhC,CAAC;AAEF,eAAO,MAAM,mBAAmB;;CAsB9B,CAAC;AAEH,eAAO,MAAM,yBAAyB;;CAMrC,CAAC;AAEF,eAAO,MAAM,uBAAuB;;CA2BnC,CAAC;AAEF,eAAO,MAAM,iBAAiB;;CAiB7B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;CAE7B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;CAGjC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;CAGpC,CAAC"}
1
+ {"version":3,"file":"otcInputActionsAtom.d.ts","sourceRoot":"","sources":["../../../../src/core/otc/state/otcInputActionsAtom.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrD,eAAO,MAAM,oBAAoB;;CAwBhC,CAAC;AAEF,eAAO,MAAM,mBAAmB;;CAsB9B,CAAC;AAEH,eAAO,MAAM,yBAAyB;;CAMrC,CAAC;AAEF,eAAO,MAAM,8BAA8B;;CAM1C,CAAC;AAEF,eAAO,MAAM,uBAAuB;;CA2BnC,CAAC;AAEF,eAAO,MAAM,iBAAiB;;CAiB7B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;CAE7B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;CAGjC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;CAGpC,CAAC"}
@@ -1,10 +1,10 @@
1
1
  import { atom } from 'jotai';
2
- import { otcPayInputAmountAtom, otcPriceRatesAtom, otcPriceAmountAtom, otcReceiveInputAmountAtom } from './otcInputAmountAtom.js';
2
+ import { otcReceiveInputAmountAtom, otcPriceRatesAtom, otcPayInputAmountAtom, otcPriceAmountAtom } from './otcInputAmountAtom.js';
3
3
  import { isOtcPriceLockedAtom } from './isOtcPriceLockedAtom.js';
4
4
  import Big from 'big.js';
5
5
  import { currentOtcInputAtom } from './currentOtcInputAtom.js';
6
6
  import { isOtcPriceReversedAtom } from './isOtcPriceReversedAtom.js';
7
- import { calculateReceiveAmount, calculatePayAmount, calculateRates } from '../../limit/state/utils.js';
7
+ import { calculatePayAmount, calculateRates, getUpdatedRates, calculateReceiveAmount } from '../../limit/state/utils.js';
8
8
  import { zeroRates } from '../../limit/state/constants.js';
9
9
 
10
10
  const setOtcPriceRatesAtom = atom(null, (get, set, priceRates, recalculateReceive = true) => {
@@ -34,6 +34,10 @@ const setOtcAmountAtomFromProps = atom(null, (_, set, amount) => {
34
34
  set(currentOtcInputAtom, "from");
35
35
  set(setOtcPayAmountAtom, amount);
36
36
  });
37
+ const setOtcPriceAmountAtomFromProps = atom(null, (_, set, amount) => {
38
+ const updatedRates = getUpdatedRates(amount, false);
39
+ set(setOtcPriceRatesAtom, updatedRates, true);
40
+ });
37
41
  const setOtcReceiveAmountAtom = atom(null, (get, set, receiveAmount) => {
38
42
  set(otcReceiveInputAmountAtom, receiveAmount);
39
43
  if (get(currentOtcInputAtom) !== "to") return;
@@ -70,5 +74,5 @@ const toggleOtcPriceReverseAtom = atom(null, (get, set) => {
70
74
  set(isOtcPriceReversedAtom, !isReversed);
71
75
  });
72
76
 
73
- export { resetOtcPriceAtom, setOtcAmountAtomFromProps, setOtcPayAmountAtom, setOtcPriceRatesAtom, setOtcReceiveAmountAtom, toggleOtcPriceLockAtom, toggleOtcPriceReverseAtom, unlockOtcPriceAtom };
77
+ export { resetOtcPriceAtom, setOtcAmountAtomFromProps, setOtcPayAmountAtom, setOtcPriceAmountAtomFromProps, setOtcPriceRatesAtom, setOtcReceiveAmountAtom, toggleOtcPriceLockAtom, toggleOtcPriceReverseAtom, unlockOtcPriceAtom };
74
78
  //# sourceMappingURL=otcInputActionsAtom.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"otcInputActionsAtom.js","sources":["../../../../src/core/otc/state/otcInputActionsAtom.ts"],"sourcesContent":["import { atom } from \"jotai\";\nimport {\n otcPayInputAmountAtom,\n otcReceiveInputAmountAtom,\n otcPriceAmountAtom,\n otcPriceRatesAtom,\n} from \"./otcInputAmountAtom\";\nimport { isOtcPriceLockedAtom } from \"./isOtcPriceLockedAtom\";\nimport Big from \"big.js\";\nimport { currentOtcInputAtom } from \"./currentOtcInputAtom\";\nimport { isOtcPriceReversedAtom } from \"./isOtcPriceReversedAtom\";\nimport {\n calculateReceiveAmount,\n calculatePayAmount,\n calculateRates,\n} from \"@/core/limit/state/utils\";\nimport type { PriceRates } from \"@/core/limit/types\";\nimport { zeroRates } from \"@/core/limit/state/constants\";\n\nexport const setOtcPriceRatesAtom = atom(\n null,\n (get, set, priceRates: PriceRates, recalculateReceive = true) => {\n const isLocked = get(isOtcPriceLockedAtom);\n // ignore updates if price is locked\n if (isLocked) return;\n\n set(otcPriceRatesAtom, priceRates);\n\n const payAmount = get(otcPayInputAmountAtom);\n const payGtZero = Big(payAmount || \"0\").gt(0);\n\n // ignore updates if pay amount is zero,\n // as it would lead to setOtcReceiveAmountAtom(0) anyway\n if (recalculateReceive && payGtZero) {\n const isReversed = get(isOtcPriceReversedAtom);\n const newReceiveAmount = calculateReceiveAmount(\n payAmount,\n priceRates,\n isReversed\n );\n set(setOtcReceiveAmountAtom, newReceiveAmount);\n }\n }\n);\n\nexport const setOtcPayAmountAtom = atom(null, (get, set, payAmount: string) => {\n set(otcPayInputAmountAtom, payAmount);\n\n // ignore updates that did not come from pay input\n if (get(currentOtcInputAtom) !== \"from\") return;\n\n const priceRates = get(otcPriceRatesAtom);\n const isReversed = get(isOtcPriceReversedAtom);\n\n const otcPriceAmount = get(otcPriceAmountAtom);\n const otcPriceGtZero = Big(otcPriceAmount || \"0\").gt(0);\n // ignore updates if otc price is zero,\n // as it would lead to setOtcReceiveAmountAtom(0) anyway\n if (!otcPriceGtZero) return;\n\n // update receive amount\n const newReceiveAmount = calculateReceiveAmount(\n payAmount,\n priceRates,\n isReversed\n );\n set(setOtcReceiveAmountAtom, newReceiveAmount);\n});\n\nexport const setOtcAmountAtomFromProps = atom(\n null,\n (_, set, amount: string) => {\n set(currentOtcInputAtom, \"from\"); // unblock pay -> receive sync if it was previously blocked\n set(setOtcPayAmountAtom, amount);\n }\n);\n\nexport const setOtcReceiveAmountAtom = atom(\n null,\n (get, set, receiveAmount: string) => {\n set(otcReceiveInputAmountAtom, receiveAmount);\n\n // ignore updates that did not come from receive input\n if (get(currentOtcInputAtom) !== \"to\") return;\n\n const isLocked = get(isOtcPriceLockedAtom);\n const isReversed = get(isOtcPriceReversedAtom);\n\n if (isLocked) {\n // update pay amount if price is locked\n const priceRates = get(otcPriceRatesAtom);\n const newPayAmount = calculatePayAmount(\n receiveAmount,\n priceRates,\n isReversed\n );\n set(setOtcPayAmountAtom, newPayAmount);\n } else {\n // update otc price otherwise\n const payAmount = get(otcPayInputAmountAtom);\n const updatedRates = calculateRates(receiveAmount, payAmount);\n set(setOtcPriceRatesAtom, updatedRates, false);\n }\n }\n);\n\nexport const resetOtcPriceAtom = atom(\n null,\n (get, set, priceRates: PriceRates = zeroRates) => {\n const isLocked = get(isOtcPriceLockedAtom);\n if (isLocked) return;\n\n set(setOtcPriceRatesAtom, priceRates);\n\n const isReversed = get(isOtcPriceReversedAtom);\n const payAmount = get(otcPayInputAmountAtom);\n const newReceiveAmount = calculateReceiveAmount(\n payAmount,\n priceRates,\n isReversed\n );\n set(setOtcReceiveAmountAtom, newReceiveAmount);\n }\n);\n\nexport const unlockOtcPriceAtom = atom(null, (_, set) => {\n set(isOtcPriceLockedAtom, false);\n});\n\nexport const toggleOtcPriceLockAtom = atom(null, (get, set) => {\n const isLocked = get(isOtcPriceLockedAtom);\n set(isOtcPriceLockedAtom, !isLocked);\n});\n\nexport const toggleOtcPriceReverseAtom = atom(null, (get, set) => {\n const isReversed = get(isOtcPriceReversedAtom);\n set(isOtcPriceReversedAtom, !isReversed);\n});\n"],"names":["setOtcPriceRatesAtom","atom","get","set","priceRates","recalculateReceive","isLocked","isOtcPriceLockedAtom","otcPriceRatesAtom","payAmount","otcPayInputAmountAtom","payGtZero","Big","gt","isReversed","isOtcPriceReversedAtom","newReceiveAmount","calculateReceiveAmount","setOtcReceiveAmountAtom","setOtcPayAmountAtom","currentOtcInputAtom","otcPriceAmount","otcPriceAmountAtom","otcPriceGtZero","setOtcAmountAtomFromProps","_","amount","receiveAmount","otcReceiveInputAmountAtom","newPayAmount","calculatePayAmount","updatedRates","calculateRates","resetOtcPriceAtom","zeroRates","unlockOtcPriceAtom","toggleOtcPriceLockAtom","toggleOtcPriceReverseAtom"],"mappings":"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"}
1
+ {"version":3,"file":"otcInputActionsAtom.js","sources":["../../../../src/core/otc/state/otcInputActionsAtom.ts"],"sourcesContent":["import { atom } from \"jotai\";\nimport {\n otcPayInputAmountAtom,\n otcReceiveInputAmountAtom,\n otcPriceAmountAtom,\n otcPriceRatesAtom,\n} from \"./otcInputAmountAtom\";\nimport { isOtcPriceLockedAtom } from \"./isOtcPriceLockedAtom\";\nimport Big from \"big.js\";\nimport { currentOtcInputAtom } from \"./currentOtcInputAtom\";\nimport { isOtcPriceReversedAtom } from \"./isOtcPriceReversedAtom\";\nimport {\n calculateReceiveAmount,\n calculatePayAmount,\n calculateRates,\n getUpdatedRates,\n} from \"@/core/limit/state/utils\";\nimport type { PriceRates } from \"@/core/limit/types\";\nimport { zeroRates } from \"@/core/limit/state/constants\";\n\nexport const setOtcPriceRatesAtom = atom(\n null,\n (get, set, priceRates: PriceRates, recalculateReceive = true) => {\n const isLocked = get(isOtcPriceLockedAtom);\n // ignore updates if price is locked\n if (isLocked) return;\n\n set(otcPriceRatesAtom, priceRates);\n\n const payAmount = get(otcPayInputAmountAtom);\n const payGtZero = Big(payAmount || \"0\").gt(0);\n\n // ignore updates if pay amount is zero,\n // as it would lead to setOtcReceiveAmountAtom(0) anyway\n if (recalculateReceive && payGtZero) {\n const isReversed = get(isOtcPriceReversedAtom);\n const newReceiveAmount = calculateReceiveAmount(\n payAmount,\n priceRates,\n isReversed\n );\n set(setOtcReceiveAmountAtom, newReceiveAmount);\n }\n }\n);\n\nexport const setOtcPayAmountAtom = atom(null, (get, set, payAmount: string) => {\n set(otcPayInputAmountAtom, payAmount);\n\n // ignore updates that did not come from pay input\n if (get(currentOtcInputAtom) !== \"from\") return;\n\n const priceRates = get(otcPriceRatesAtom);\n const isReversed = get(isOtcPriceReversedAtom);\n\n const otcPriceAmount = get(otcPriceAmountAtom);\n const otcPriceGtZero = Big(otcPriceAmount || \"0\").gt(0);\n // ignore updates if otc price is zero,\n // as it would lead to setOtcReceiveAmountAtom(0) anyway\n if (!otcPriceGtZero) return;\n\n // update receive amount\n const newReceiveAmount = calculateReceiveAmount(\n payAmount,\n priceRates,\n isReversed\n );\n set(setOtcReceiveAmountAtom, newReceiveAmount);\n});\n\nexport const setOtcAmountAtomFromProps = atom(\n null,\n (_, set, amount: string) => {\n set(currentOtcInputAtom, \"from\"); // unblock pay -> receive sync if it was previously blocked\n set(setOtcPayAmountAtom, amount);\n }\n);\n\nexport const setOtcPriceAmountAtomFromProps = atom(\n null,\n (_, set, amount: string) => {\n const updatedRates = getUpdatedRates(amount, false);\n set(setOtcPriceRatesAtom, updatedRates, true);\n }\n);\n\nexport const setOtcReceiveAmountAtom = atom(\n null,\n (get, set, receiveAmount: string) => {\n set(otcReceiveInputAmountAtom, receiveAmount);\n\n // ignore updates that did not come from receive input\n if (get(currentOtcInputAtom) !== \"to\") return;\n\n const isLocked = get(isOtcPriceLockedAtom);\n const isReversed = get(isOtcPriceReversedAtom);\n\n if (isLocked) {\n // update pay amount if price is locked\n const priceRates = get(otcPriceRatesAtom);\n const newPayAmount = calculatePayAmount(\n receiveAmount,\n priceRates,\n isReversed\n );\n set(setOtcPayAmountAtom, newPayAmount);\n } else {\n // update otc price otherwise\n const payAmount = get(otcPayInputAmountAtom);\n const updatedRates = calculateRates(receiveAmount, payAmount);\n set(setOtcPriceRatesAtom, updatedRates, false);\n }\n }\n);\n\nexport const resetOtcPriceAtom = atom(\n null,\n (get, set, priceRates: PriceRates = zeroRates) => {\n const isLocked = get(isOtcPriceLockedAtom);\n if (isLocked) return;\n\n set(setOtcPriceRatesAtom, priceRates);\n\n const isReversed = get(isOtcPriceReversedAtom);\n const payAmount = get(otcPayInputAmountAtom);\n const newReceiveAmount = calculateReceiveAmount(\n payAmount,\n priceRates,\n isReversed\n );\n set(setOtcReceiveAmountAtom, newReceiveAmount);\n }\n);\n\nexport const unlockOtcPriceAtom = atom(null, (_, set) => {\n set(isOtcPriceLockedAtom, false);\n});\n\nexport const toggleOtcPriceLockAtom = atom(null, (get, set) => {\n const isLocked = get(isOtcPriceLockedAtom);\n set(isOtcPriceLockedAtom, !isLocked);\n});\n\nexport const toggleOtcPriceReverseAtom = atom(null, (get, set) => {\n const isReversed = get(isOtcPriceReversedAtom);\n set(isOtcPriceReversedAtom, !isReversed);\n});\n"],"names":["setOtcPriceRatesAtom","atom","get","set","priceRates","recalculateReceive","isLocked","isOtcPriceLockedAtom","otcPriceRatesAtom","payAmount","otcPayInputAmountAtom","payGtZero","Big","gt","isReversed","isOtcPriceReversedAtom","newReceiveAmount","calculateReceiveAmount","setOtcReceiveAmountAtom","setOtcPayAmountAtom","currentOtcInputAtom","otcPriceAmount","otcPriceAmountAtom","otcPriceGtZero","setOtcAmountAtomFromProps","_","amount","setOtcPriceAmountAtomFromProps","updatedRates","getUpdatedRates","receiveAmount","otcReceiveInputAmountAtom","newPayAmount","calculatePayAmount","calculateRates","resetOtcPriceAtom","zeroRates","unlockOtcPriceAtom","toggleOtcPriceLockAtom","toggleOtcPriceReverseAtom"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"configActionsAtom.d.ts","sourceRoot":"","sources":["../../../src/core/state/configActionsAtom.ts"],"names":[],"mappings":"AACA,OAAO,EAOL,KAAK,cAAc,EACnB,KAAK,eAAe,EAIrB,MAAM,cAAc,CAAC;AAStB,eAAO,MAAM,mBAAmB;;CAgD/B,CAAC;AAIF,eAAO,MAAM,gBAAgB;;CA2B3B,CAAC"}
1
+ {"version":3,"file":"configActionsAtom.d.ts","sourceRoot":"","sources":["../../../src/core/state/configActionsAtom.ts"],"names":[],"mappings":"AACA,OAAO,EAOL,KAAK,cAAc,EACnB,KAAK,eAAe,EAGrB,MAAM,cAAc,CAAC;AAStB,eAAO,MAAM,mBAAmB;;CAgD/B,CAAC;AAIF,eAAO,MAAM,gBAAgB;;CAsB3B,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { atom } from 'jotai';
2
- import { defaultWidgetConfig, widgetConfigAtom, defaultSubConfig, srcChainsAtom, destChainsAtom, tokenListsAtom, tradeModesAtom, excludeUIAtom, devURLsAtom } from './configAtom.js';
2
+ import { defaultWidgetConfig, widgetConfigAtom, defaultSubConfig, srcChainsAtom, destChainsAtom, tokenListsAtom, tradeModesAtom, excludeUIAtom } from './configAtom.js';
3
3
 
4
4
  const setWidgetConfigAtom = atom(null, (_, set, config) => {
5
5
  const enableDelta = typeof config.enableDelta !== "boolean" ? defaultWidgetConfig.enableDelta : config.enableDelta;
@@ -29,13 +29,11 @@ const setSubConfigAtom = atom(null, (_, set, config) => {
29
29
  const tokenLists = !Array.isArray(config.tokenLists) ? defaultSubConfig.tokenLists : config.tokenLists;
30
30
  const tradeModes = !Array.isArray(config.tradeModes) ? defaultSubConfig.tradeModes : config.tradeModes;
31
31
  const excludeUI = !Array.isArray(config.excludeUI) ? defaultSubConfig.excludeUI : config.excludeUI;
32
- const devURLs = typeof config.devURLs !== "object" || config.devURLs === null ? defaultSubConfig.devURLs : config.devURLs;
33
32
  set(srcChainsAtom, srcChains);
34
33
  set(destChainsAtom, destChains);
35
34
  set(tokenListsAtom, tokenLists);
36
35
  set(tradeModesAtom, tradeModes);
37
36
  set(excludeUIAtom, excludeUI);
38
- set(devURLsAtom, devURLs);
39
37
  });
40
38
 
41
39
  export { setSubConfigAtom, setWidgetConfigAtom };
@@ -1 +1 @@
1
- {"version":3,"file":"configActionsAtom.js","sources":["../../../src/core/state/configActionsAtom.ts"],"sourcesContent":["import { atom } from \"jotai\";\nimport {\n defaultWidgetConfig,\n defaultSubConfig,\n destChainsAtom,\n srcChainsAtom,\n tokenListsAtom,\n widgetConfigAtom,\n type IterableConfig,\n type PrimitiveConfig,\n tradeModesAtom,\n excludeUIAtom,\n devURLsAtom,\n} from \"./configAtom\";\n\n// for each config/subConfig property, determine new value:\n// - if provided in config param is not valid, use default value\n// - otherwise, use provided value\n// this way we avoid overwriting with invalid values\n\n// this atom is used to sync widget config provided via props to the widgetConfigAtom without preserving previous values\n// if user does not provide any of the config properties or config itself, defaults will be used without falling back to the current value\nexport const setWidgetConfigAtom = atom(\n null,\n (_, set, config: PrimitiveConfig) => {\n const enableDelta =\n typeof config.enableDelta !== \"boolean\"\n ? defaultWidgetConfig.enableDelta\n : config.enableDelta;\n const enableCrossChain =\n typeof config.enableCrossChain !== \"boolean\"\n ? defaultWidgetConfig.enableCrossChain\n : config.enableCrossChain;\n const theme =\n config.theme !== \"dark\" && config.theme !== \"light\"\n ? defaultWidgetConfig.theme\n : config.theme;\n const privyAppId =\n typeof config.privyAppId !== \"string\"\n ? defaultWidgetConfig.privyAppId\n : config.privyAppId;\n const privyClientId =\n typeof config.privyClientId !== \"string\"\n ? defaultWidgetConfig.privyClientId\n : config.privyClientId;\n const debug =\n typeof config.debug !== \"boolean\"\n ? defaultWidgetConfig.debug\n : config.debug;\n const widgetMode =\n config.widgetMode !== \"dapp\" && config.widgetMode !== \"standalone\"\n ? defaultWidgetConfig.widgetMode\n : config.widgetMode;\n const ignoreBadUsdPrice =\n typeof config.ignoreBadUsdPrice !== \"boolean\"\n ? defaultWidgetConfig.ignoreBadUsdPrice\n : config.ignoreBadUsdPrice;\n\n set(widgetConfigAtom, {\n theme,\n enableDelta,\n enableCrossChain,\n partner: config.partner, // except for 'partner' which can be set to undefined\n privyAppId,\n privyClientId,\n debug,\n widgetMode,\n ignoreBadUsdPrice,\n });\n }\n);\n\n// this atom is used to sync partial widget config values provided via props to their atoms without preserving previous values\n// if user does not provide any of the config properties or config itself, defaults will be used without falling back to the current value\nexport const setSubConfigAtom = atom(null, (_, set, config: IterableConfig) => {\n const srcChains = !Array.isArray(config.srcChains)\n ? defaultSubConfig.srcChains\n : config.srcChains;\n const destChains = !Array.isArray(config.destChains)\n ? defaultSubConfig.destChains\n : config.destChains;\n const tokenLists = !Array.isArray(config.tokenLists)\n ? defaultSubConfig.tokenLists\n : config.tokenLists;\n const tradeModes = !Array.isArray(config.tradeModes)\n ? defaultSubConfig.tradeModes\n : config.tradeModes;\n const excludeUI = !Array.isArray(config.excludeUI)\n ? defaultSubConfig.excludeUI\n : config.excludeUI;\n const devURLs =\n typeof config.devURLs !== \"object\" || config.devURLs === null\n ? defaultSubConfig.devURLs\n : config.devURLs;\n\n set(srcChainsAtom, srcChains);\n set(destChainsAtom, destChains);\n set(tokenListsAtom, tokenLists);\n set(tradeModesAtom, tradeModes);\n set(excludeUIAtom, excludeUI);\n set(devURLsAtom, devURLs);\n});\n"],"names":["setWidgetConfigAtom","atom","_","set","config","enableDelta","defaultWidgetConfig","enableCrossChain","theme","privyAppId","privyClientId","debug","widgetMode","ignoreBadUsdPrice","widgetConfigAtom","partner","setSubConfigAtom","srcChains","Array","isArray","defaultSubConfig","destChains","tokenLists","tradeModes","excludeUI","devURLs","srcChainsAtom","destChainsAtom","tokenListsAtom","tradeModesAtom","excludeUIAtom","devURLsAtom"],"mappings":"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"}
1
+ {"version":3,"file":"configActionsAtom.js","sources":["../../../src/core/state/configActionsAtom.ts"],"sourcesContent":["import { atom } from \"jotai\";\nimport {\n defaultWidgetConfig,\n defaultSubConfig,\n destChainsAtom,\n srcChainsAtom,\n tokenListsAtom,\n widgetConfigAtom,\n type IterableConfig,\n type PrimitiveConfig,\n tradeModesAtom,\n excludeUIAtom,\n} from \"./configAtom\";\n\n// for each config/subConfig property, determine new value:\n// - if provided in config param is not valid, use default value\n// - otherwise, use provided value\n// this way we avoid overwriting with invalid values\n\n// this atom is used to sync widget config provided via props to the widgetConfigAtom without preserving previous values\n// if user does not provide any of the config properties or config itself, defaults will be used without falling back to the current value\nexport const setWidgetConfigAtom = atom(\n null,\n (_, set, config: PrimitiveConfig) => {\n const enableDelta =\n typeof config.enableDelta !== \"boolean\"\n ? defaultWidgetConfig.enableDelta\n : config.enableDelta;\n const enableCrossChain =\n typeof config.enableCrossChain !== \"boolean\"\n ? defaultWidgetConfig.enableCrossChain\n : config.enableCrossChain;\n const theme =\n config.theme !== \"dark\" && config.theme !== \"light\"\n ? defaultWidgetConfig.theme\n : config.theme;\n const privyAppId =\n typeof config.privyAppId !== \"string\"\n ? defaultWidgetConfig.privyAppId\n : config.privyAppId;\n const privyClientId =\n typeof config.privyClientId !== \"string\"\n ? defaultWidgetConfig.privyClientId\n : config.privyClientId;\n const debug =\n typeof config.debug !== \"boolean\"\n ? defaultWidgetConfig.debug\n : config.debug;\n const widgetMode =\n config.widgetMode !== \"dapp\" && config.widgetMode !== \"standalone\"\n ? defaultWidgetConfig.widgetMode\n : config.widgetMode;\n const ignoreBadUsdPrice =\n typeof config.ignoreBadUsdPrice !== \"boolean\"\n ? defaultWidgetConfig.ignoreBadUsdPrice\n : config.ignoreBadUsdPrice;\n\n set(widgetConfigAtom, {\n theme,\n enableDelta,\n enableCrossChain,\n partner: config.partner, // except for 'partner' which can be set to undefined\n privyAppId,\n privyClientId,\n debug,\n widgetMode,\n ignoreBadUsdPrice,\n });\n }\n);\n\n// this atom is used to sync partial widget config values provided via props to their atoms without preserving previous values\n// if user does not provide any of the config properties or config itself, defaults will be used without falling back to the current value\nexport const setSubConfigAtom = atom(null, (_, set, config: IterableConfig) => {\n const srcChains = !Array.isArray(config.srcChains)\n ? defaultSubConfig.srcChains\n : config.srcChains;\n const destChains = !Array.isArray(config.destChains)\n ? defaultSubConfig.destChains\n : config.destChains;\n const tokenLists = !Array.isArray(config.tokenLists)\n ? defaultSubConfig.tokenLists\n : config.tokenLists;\n const tradeModes = !Array.isArray(config.tradeModes)\n ? defaultSubConfig.tradeModes\n : config.tradeModes;\n const excludeUI = !Array.isArray(config.excludeUI)\n ? defaultSubConfig.excludeUI\n : config.excludeUI;\n\n set(srcChainsAtom, srcChains);\n set(destChainsAtom, destChains);\n set(tokenListsAtom, tokenLists);\n set(tradeModesAtom, tradeModes);\n set(excludeUIAtom, excludeUI);\n});\n"],"names":["setWidgetConfigAtom","atom","_","set","config","enableDelta","defaultWidgetConfig","enableCrossChain","theme","privyAppId","privyClientId","debug","widgetMode","ignoreBadUsdPrice","widgetConfigAtom","partner","setSubConfigAtom","srcChains","Array","isArray","defaultSubConfig","destChains","tokenLists","tradeModes","excludeUI","srcChainsAtom","destChainsAtom","tokenListsAtom","tradeModesAtom","excludeUIAtom"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { WidgetElements, WidgetConfig, DevURLs } from '../types';
1
+ import { WidgetElements, WidgetConfig } from '../types';
2
2
  import { TradeMode } from './tradeModeAtom';
3
3
  export type PrimitiveConfig = Pick<WidgetConfig, "theme" | "enableDelta" | "enableCrossChain" | "partner" | "privyAppId" | "privyClientId" | "debug" | "widgetMode" | "ignoreBadUsdPrice">;
4
- export type IterableConfig = Pick<WidgetConfig, "srcChains" | "destChains" | "tokenLists" | "tradeModes" | "excludeUI" | "devURLs">;
4
+ export type IterableConfig = Pick<WidgetConfig, "srcChains" | "destChains" | "tokenLists" | "tradeModes" | "excludeUI">;
5
5
  export declare const defaultWidgetConfig: {
6
6
  readonly theme: "light" | "dark";
7
7
  readonly enableDelta: true;
@@ -52,12 +52,10 @@ export declare const defaultSubConfig: {
52
52
  readonly destChains: never[];
53
53
  readonly tradeModes: never[];
54
54
  readonly excludeUI: never[];
55
- readonly devURLs: Record<string, never>;
56
55
  };
57
56
  export declare const tokenListsAtom: import('jotai').WritableAtom<string[], [string[]], void>;
58
57
  export declare const srcChainsAtom: import('jotai').WritableAtom<(1 | 10 | 137 | 56 | 43114 | 42161 | 8453 | 100 | 146 | 130)[], [(1 | 10 | 137 | 56 | 43114 | 42161 | 8453 | 100 | 146 | 130)[]], void>;
59
58
  export declare const destChainsAtom: import('jotai').WritableAtom<(1 | 10 | 137 | 56 | 43114 | 42161 | 8453 | 100 | 146 | 130)[], [(1 | 10 | 137 | 56 | 43114 | 42161 | 8453 | 100 | 146 | 130)[]], void>;
60
59
  export declare const tradeModesAtom: import('jotai').WritableAtom<TradeMode[], [TradeMode[]], void>;
61
60
  export declare const excludeUIAtom: import('jotai').WritableAtom<WidgetElements[], [WidgetElements[]], void>;
62
- export declare const devURLsAtom: import('jotai').WritableAtom<DevURLs, [DevURLs], void>;
63
61
  //# sourceMappingURL=configAtom.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"configAtom.d.ts","sourceRoot":"","sources":["../../../src/core/state/configAtom.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAMtE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,MAAM,MAAM,eAAe,GAAG,IAAI,CAChC,YAAY,EACV,OAAO,GACP,aAAa,GACb,kBAAkB,GAClB,SAAS,GACT,YAAY,GACZ,eAAe,GACf,OAAO,GACP,YAAY,GACZ,mBAAmB,CACtB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,IAAI,CAC/B,YAAY,EACV,WAAW,GACX,YAAY,GACZ,YAAY,GACZ,YAAY,GACZ,WAAW,GACX,SAAS,CACZ,CAAC;AAcF,eAAO,MAAM,mBAAmB;;;;;;;;;CASI,CAAC;AAErC,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;CAAkD,CAAC;AAEhF,eAAO,MAAM,eAAe;;;;;;;;;;CAE3B,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;;;;CAOM,CAAC;AAIpC,eAAO,MAAM,cAAc,0DAG1B,CAAC;AACF,eAAO,MAAM,aAAa,sKAGzB,CAAC;AACF,eAAO,MAAM,cAAc,sKAG1B,CAAC;AAEF,eAAO,MAAM,cAAc,gEAG1B,CAAC;AAEF,eAAO,MAAM,aAAa,0EAGzB,CAAC;AAEF,eAAO,MAAM,WAAW,wDAUvB,CAAC"}
1
+ {"version":3,"file":"configAtom.d.ts","sourceRoot":"","sources":["../../../src/core/state/configAtom.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAM7D,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,MAAM,MAAM,eAAe,GAAG,IAAI,CAChC,YAAY,EACV,OAAO,GACP,aAAa,GACb,kBAAkB,GAClB,SAAS,GACT,YAAY,GACZ,eAAe,GACf,OAAO,GACP,YAAY,GACZ,mBAAmB,CACtB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,IAAI,CAC/B,YAAY,EACZ,WAAW,GAAG,YAAY,GAAG,YAAY,GAAG,YAAY,GAAG,WAAW,CACvE,CAAC;AAcF,eAAO,MAAM,mBAAmB;;;;;;;;;CASI,CAAC;AAErC,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;CAAkD,CAAC;AAEhF,eAAO,MAAM,eAAe;;;;;;;;;;CAE3B,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;;;CAMM,CAAC;AAIpC,eAAO,MAAM,cAAc,0DAG1B,CAAC;AACF,eAAO,MAAM,aAAa,sKAGzB,CAAC;AACF,eAAO,MAAM,cAAc,sKAG1B,CAAC;AAEF,eAAO,MAAM,cAAc,gEAG1B,CAAC;AAEF,eAAO,MAAM,aAAa,0EAGzB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { atom, useAtomValue } from 'jotai';
2
- import { emptyArray, emptyObject } from '../../lib/constants/index.js';
2
+ import { emptyArray } from '../../lib/constants/index.js';
3
3
  import { atomWithCompare } from '../../lib/utils/atomWithCompare.js';
4
4
  import { unorderedShallowEqual } from '../../lib/utils/index.js';
5
5
  import { getDefaultTheme } from '../../lib/utils/theme.js';
@@ -23,17 +23,13 @@ const defaultSubConfig = {
23
23
  srcChains: emptyArray,
24
24
  destChains: emptyArray,
25
25
  tradeModes: emptyArray,
26
- excludeUI: emptyArray,
27
- devURLs: emptyObject
26
+ excludeUI: emptyArray
28
27
  };
29
28
  const tokenListsAtom = atomWithCompare(defaultSubConfig.tokenLists, unorderedShallowEqual);
30
29
  const srcChainsAtom = atomWithCompare(defaultSubConfig.srcChains, unorderedShallowEqual);
31
30
  const destChainsAtom = atomWithCompare(defaultSubConfig.destChains, unorderedShallowEqual);
32
31
  const tradeModesAtom = atomWithCompare(defaultSubConfig.tradeModes, unorderedShallowEqual);
33
32
  const excludeUIAtom = atomWithCompare(defaultSubConfig.excludeUI, unorderedShallowEqual);
34
- const devURLsAtom = atomWithCompare(defaultSubConfig.devURLs, (a, b) => {
35
- return a?.apiProxyURL === b?.apiProxyURL && a?.apiURL === b?.apiURL && a?.explorerURL === b?.explorerURL;
36
- });
37
33
 
38
- export { defaultSubConfig, defaultWidgetConfig, destChainsAtom, devURLsAtom, excludeUIAtom, srcChainsAtom, tokenListsAtom, tradeModesAtom, useWidgetConfig, widgetConfigAtom };
34
+ export { defaultSubConfig, defaultWidgetConfig, destChainsAtom, excludeUIAtom, srcChainsAtom, tokenListsAtom, tradeModesAtom, useWidgetConfig, widgetConfigAtom };
39
35
  //# sourceMappingURL=configAtom.js.map