@rango-dev/widget-embedded 0.43.1-next.0 → 0.43.1-next.1
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/WalletStatefulConnect/NamespaceDetachedItem.d.ts.map +1 -1
- package/dist/components/WalletStatefulConnect/NamespaceListItem.d.ts.map +1 -1
- package/dist/components/WalletStatefulConnect/Namespaces.d.ts.map +1 -1
- package/dist/components/WalletStatefulConnect/SupportedChainsList.types.d.ts +2 -2
- package/dist/components/WalletStatefulConnect/SupportedChainsList.types.d.ts.map +1 -1
- package/dist/hooks/useStatefulConnect/useStatefulConnect.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +3 -3
- package/dist/widget-embedded.build.json +1 -1
- package/package.json +7 -7
- package/src/components/WalletStatefulConnect/NamespaceDetachedItem.tsx +4 -2
- package/src/components/WalletStatefulConnect/NamespaceListItem.tsx +3 -2
- package/src/components/WalletStatefulConnect/Namespaces.tsx +34 -25
- package/src/components/WalletStatefulConnect/SupportedChainsList.types.ts +2 -2
- package/src/hooks/useStatefulConnect/useStatefulConnect.ts +25 -23
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var xS=Object.defineProperty;var i=(t,e)=>xS(t,"name",{value:e,configurable:!0});import{EventSeverity as MZ,RouteEventType as PZ,StepEventType as _Z,StepExecutionBlockedEventStatus as DZ,StepExecutionEventStatus as $Z}from"@rango-dev/queue-manager-rango-preset";import{legacyReadAccountAddress as OZ}from"@rango-dev/wallets-core/legacy";import{useWallets as Fi,Events as zZ}from"@rango-dev/wallets-react";import{Networks as HZ,WalletTypes as qZ}from"@rango-dev/wallets-shared";import{PendingSwapNetworkStatus as VZ}from"rango-types";import{Divider as _T}from"@rango-dev/ui";import Rt,{useEffect as DT,useRef as $T,useState as Vu}from"react";import{WalletState as OS}from"@rango-dev/ui";import{useWallets as US}from"@rango-dev/wallets-react";import{useReducer as zS}from"react";import{BlockchainCategories as LS,WalletState as it}from"@rango-dev/ui";import{legacyReadAccountAddress as MS}from"@rango-dev/wallets-core/legacy";import{detectInstallLink as PS,getCosmosExperimentalChainInfo as _S,isEvmAddress as DS,KEPLR_COMPATIBLE_WALLETS as fN,Networks as Lc}from"@rango-dev/wallets-shared";import zo from"bignumber.js";import{isCosmosBlockchain as $S}from"rango-types";import bS from"bignumber.js";var me=new bS(0);import{WalletTypes as ES}from"@rango-dev/wallets-shared";var So="~",cc=[ES.LEAP];import{BlockchainCategories as Oa,WalletState as WS}from"@rango-dev/ui";import{TransactionType as Fr}from"rango-sdk";import{UI_ID as IS}from"@rango-dev/ui";var $r="c6381a79-2817-4602-83bf-6a641a409e32",uc="https://api.rango.exchange",mc="https://explorer.rango.exchange",Qe={SWAP_BOX_ID:"rango-swap-box",EXPANDED_BOX_ID:"rango-expanded-box",...IS};var dc="Roboto",Fa=[{name:"Roboto",value:"Roboto",url:""},{name:"Times New Roman",value:"Times New Roman",url:"https://fonts.cdnfonts.com/css/times-new-roman"},{name:"Arial",value:"Arial",url:""},{name:"Open Sans",value:"Open Sans",url:"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300..800;1,300..800&display=swap"},{name:"Noto Sans",value:"Noto Sans",url:"https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Montserrat",value:"Montserrat",url:"https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Poppins",value:"Poppins",url:"https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"},{name:"Roboto Condensed",value:"Roboto Condensed",url:"https://fonts.googleapis.com/css2?family=Roboto+Condensed:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Roboto Mono",value:"Roboto Mono",url:"https://fonts.googleapis.com/css2?family=Roboto+Mono:ital,wght@0,100..700;1,100..700&display=swap"},{name:"Oswald",value:"Oswald",url:"https://fonts.googleapis.com/css2?family=Oswald:wght@200..700&display=swap"},{name:"Raleway",value:"Raleway",url:"https://fonts.googleapis.com/css2?family=Raleway:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Sedan",value:"Sedan",url:"https://fonts.googleapis.com/css2?family=Sedan:ital@0;1&display=swap"},{name:"Inter",value:"Inter",url:"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap"},{name:"Rubik",value:"Rubik",url:"https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,300..900;1,300..900&display=swap"},{name:"Lora",value:"Lora",url:"https://fonts.googleapis.com/css2?family=Lora:ital,wght@0,400..700;1,400..700&display=swap"},{name:"Barlow Condensed",value:"Barlow Condensed",url:"https://fonts.googleapis.com/css2?family=Barlow+Condensed:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"}];function Uo(t){return Array.from(new Set(t))}i(Uo,"removeDuplicateFrom");function Or(t,e){let o;return n;function n(...r){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...r)},e)}}i(Or,"debounce");function rt(t,e){return t.toLowerCase().indexOf(e.toLowerCase())>-1}i(rt,"containsText");function hc(t,e){return t.toLowerCase()===e.toLowerCase()}i(hc,"exactText");function yc(t,e){return t.toLowerCase().startsWith(e.toLowerCase())}i(yc,"startWithText");var N=i(()=>document.getElementById(Qe.SWAP_BOX_ID),"getContainer"),Co=i(()=>document.getElementById(Qe.EXPANDED_BOX_ID),"getExpanded");function Sc(t,e,o){let n=!!e&&hc(e,t),r=!!o&&hc(o,t);return n!==r?n?-1:1:0}i(Sc,"compareExactMatchText");function Ua(t,e,o){let n=!!e&&rt(e,t),r=!!o&&rt(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(Ua,"compareContainsText");function za(t,e,o){let n=!!e&&yc(e,t),r=!!o&&yc(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(za,"compareStartWithText");function Cc(t,e,o){if(!o)return 0;let n=Sc(o,t.symbol,e.symbol);if(n)return n;if(o.length>=3){let r=Sc(o,t.name,e.name);if(r)return r}if(o.length>=2){let r=za(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=Ua(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=za(o,t.name,e.name);if(r)return r}if(o.length>=3){let r=Ua(o,t.name,e.name);if(r!==0)return r}if(o.length>=4){let r=za(o,t.address,e.address);if(r)return r}if(o.length>=4){let r=Ua(o,t.address,e.address);if(r!==0)return r}return 0}i(Cc,"compareWithSearchFor");var Ur=i((t,e)=>{switch(e){case Oa.ALL:return!0;case Oa.UTXO:return t===Fr.TRANSFER;case Oa.OTHER:return t!==Fr.TRANSFER&&t!==Fr.COSMOS&&t!==Fr.EVM;default:return t===e}},"isBlockchainTypeInCategory"),Tc=i(t=>Fa.find(o=>o.value===t)?.url,"getFontUrlByName");function kc(t,e){let o=!!t.find(n=>n.state===WS.CONNECTED);return e===!1&&o}i(kc,"isSingleWalletActive");function vc(){let t,e;return(o,n)=>((!e||!t||t!==n)&&(t=n,e=o()),e)}i(vc,"memoizedResult");import{BigNumber as Bc}from"bignumber.js";function wc(t){return t.replace(/^0+(?=\d)/g,"")}i(wc,"removeLeadingZeros");function xc(t){return t.replace(/^\.(\d+)/,"0.$1")}i(xc,"ensureLeadingZeroForDecimal");function bc(t){return t.replace(/\B(?=(\d{3})+(?!\d))/g,",")}i(bc,"formatThousandsWithCommas");function Ec(t){return t.replace(/\s+/g,"-")}i(Ec,"replaceSpacesWithDash");function Ic(t){return t.replace(/(\.\d*?[1-9])0+$/,"$1").replace(/\.0+$/,"")}i(Ic,"stripTrailingZeros");function zr(t){return/^0+(?:\.0+)?$/.test(t)}i(zr,"isZeroValue");function Ac(t,e=2){let o=`^(?:0|[1-9]\\d*)(?:\\.\\d{1,${e}})?$`;return new RegExp(o).test(t)}i(Ac,"isValidCurrencyFormat");function Nc(t){return/\d+$/.test(t)}i(Nc,"isColorKeyOverridden");var Bn=i(t=>{let e=Math.floor(t%60/15)*15,o=parseInt((t/60).toString());return o>=60?`${Math.floor(o/5)*5}:00`:`${o.toString().padStart(2,"0")}:${e.toString().padStart(2,"0")}`},"roundedSecondsToString"),_=i((t,e=null,o=null)=>{if(t==null||t==="")return"";let n=new Bc(t),r=1,a=1e3;for(let s=0;s<60;s++)if(new Bc(n.toFixed(s,r)).eq(n)){a=s;break}if(n.gte(1e4))return n.toFormat(0,r);if(n.gte(1e3)||n.gte(100))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,1))),r);if(n.gte(1))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,2))),r);if(n.gte(.01))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,4))),r);for(let s=e||4;s<17;s++)if(n.gte(Math.pow(10,-s)))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,s))),r);return n.isEqualTo(0)?"0":n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,8))),r)},"numberToString");var Qr=i(t=>t?.reduce((e,o)=>e+(o.estimatedTimeInSeconds??0),0)||0,"totalArrivalTime");var Nt=i((t,e)=>t.toLowerCase().indexOf(e.toLowerCase())>-1,"containsText"),Wn=i(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function Wc(t){return zr(t)?"0":Ic(t)}i(Wc,"sanitizeInputAmount");function Ln(t){return t.connected?it.CONNECTED:t.connecting?it.CONNECTING:t.installed?it.DISCONNECTED:it.NOT_INSTALLED}i(Ln,"mapStatusToWalletState");function Mc(t,e,o,n){return o.filter(r=>!cc.includes(r)).filter(r=>{let{supportedChains:a,isContractWallet:s}=e(r),{installed:l,network:p}=t(r);return s&&(!l||!!n&&p!==n)?!1:n?!!a.find(u=>u.name===n):!0}).map(r=>{let{name:a,img:s,installLink:l,showOnMobile:p,needsNamespace:c,supportedChains:u,needsDerivationPath:m,properties:h,isHub:g}=e(r),d=Uo(u.map(S=>S.type)),f=Ln(t(r));return{title:a,image:s,link:PS(l),state:f,type:r,showOnMobile:p,needsNamespace:c,blockchainTypes:d,needsDerivationPath:m,properties:h,isHub:g}})}i(Mc,"mapWalletTypesToWalletInfo");function Mn(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}i(Mn,"walletAndSupportedChainsNames");function Ha(t,e,o,n,r){let a=[];function s(p,c,u){if(!!!a.find(h=>h.chain===p)){let h={address:c,chain:p,walletType:t,isContractWallet:u??!1};a.push(h)}}i(s,"addAccount");let l=n||[];return e.forEach(p=>{let{address:c,network:u}=MS(p),m=l.length>0,h=l.includes(u),g=u===Lc.Unknown;if(m&&!h&&!g)return;let f=u===Lc.Unknown&&DS(c);if(g&&!f)return;o.includes(u)||f?r?s(u,c.toLowerCase(),r):l.filter(y=>o.includes(y)).forEach(y=>{s(y,c.toLowerCase())}):s(u,c)}),a}i(Ha,"prepareAccountsForWalletStore");function To(t){let{filter:e,quote:o}=t,n=new Set;return o?.swaps.forEach((r,a)=>{let s=r.from.blockchain,l=r.to.blockchain;if(n.add(s),r.internalSwaps){let{internalSwaps:p}=r;p.forEach((c,u)=>{let m=c.from.blockchain,h=c.to.blockchain,g=a===o.swaps.length-1,d=u===p.length-1;(!g&&!d||g&&l!==m||e==="all")&&n.add(m),e==="all"&&n.add(h)})}e==="all"&&n.add(l)}),Array.from(n)}i(To,"getQuoteChains");function Pn(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}i(Pn,"isAccountAndWalletMatched");var Pc=i(t=>{let e=Object.values(t).reduce((o,n)=>{let r=n.usdValue?Qa(n.usdValue,n.decimals):me.toFixed();return o.plus(r)},new zo(me));return FS(e.toString())},"calculateWalletUsdValue");function FS(t){let e=t.toString().split(".");return e[0]=bc(e[0]),e.join(".")}i(FS,"numberWithThousandSeparator");var Gr=i((t,e)=>{let o=_S(Object.entries(t).map(([,n])=>n).filter($S));return o&&o[e]?.experimental},"isExperimentalChain");function Qa(t,e){return new zo(t).shiftedBy(-e).toFixed()}i(Qa,"representAmountInNumber");function Vr(t){if(!t)return null;let e=Qa(t.amount,t.decimals),o=t.usdValue?Qa(t.usdValue,t.decimals):null,n=_(e,8,8),r=o?_(o,4,4):null;return t?{...t,amount:n,usdValue:r}:null}i(Vr,"formatBalance");function _c(t,e){if(t?.usdValue||e?.usdValue){let o=t&&t.usdValue?new zo(t.usdValue).shiftedBy(-t.decimals):me,n=e&&e.usdValue?new zo(e.usdValue).shiftedBy(-e.decimals):me;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}if(t?.amount||e?.amount){let o=t&&t.amount?new zo(t.amount).shiftedBy(-t.decimals):me,n=e&&e.amount?new zo(e.amount).shiftedBy(-e.decimals):me;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}return 0}i(_c,"compareTokenBalance");function Ft(t,e){return t?.blockchain===e?.blockchain&&t?.symbol.toLowerCase()===e?.symbol.toLowerCase()&&t?.address?.toLowerCase()===e?.address?.toLowerCase()}i(Ft,"areTokensEqual");function Dc(t,e){return t.map(o=>({isPartiallyConnected:_n(o,e(o.type).namespaces),...o})).sort((o,n)=>+(n.state===it.CONNECTED&&!n.isPartiallyConnected)-+(o.state===it.CONNECTED&&!o.isPartiallyConnected)||+(n.state===it.CONNECTED)-+(o.state===it.CONNECTED)||+(n.state===it.DISCONNECTED||n.state===it.CONNECTING)-+(o.state===it.DISCONNECTED||o.state===it.CONNECTING)).map(({isPartiallyConnected:o,...n})=>n)}i(Dc,"sortWalletsBasedOnConnectionState");function Qo(t,e=8,o=3){if(t.length<2*e+o)return t;let n=t.slice(0,e),r=t.slice(-e);return`${n}${".".repeat(o)}${r}`}i(Qo,"getConciseAddress");function $c({chain:t,connectedWallets:e,walletType:o}){return e.find(n=>n.walletType===o&&n.chain===t)?.address}i($c,"getAddress");var Fc=i((t,e)=>!!t.find(o=>o.chain===e&&o.loading),"isFetchingBalance");function Oc(t){return t.map(e=>e.state).join("-")}i(Oc,"hashWalletsState");function Uc(t,e){let o=new Set;return t.forEach(r=>{r.blockchainTypes.forEach(a=>{o.add(a)})}),e.filter(r=>o.has(r.type))}i(Uc,"filterBlockchainsByWalletTypes");function zc(t,e){return e===LS.ALL?t:t.filter(o=>{for(let n of o.blockchainTypes)if(Ur(n,e))return!0;return!1})}i(zc,"filterWalletsByCategory");function _n(t,e){return!t.isHub||!t.needsNamespace||t.state!==it.CONNECTED?!1:t.needsNamespace.data.filter(r=>!r.unsupported).some(r=>!e?.get(r.value)?.connected)}i(_n,"checkIsWalletPartiallyConnected");function Qc(t){return!!t.derivationPath}i(Qc,"isStateOnDerivationPathStep");function Hc(t){return!!t.namespace}i(Hc,"isStateOnNamespace");var Kr={status:"init",namespace:null,derivationPath:null,selectedNamespaces:null};function qc(t,e){switch(e.type){case"needsNamespace":return{...t,status:"namespace",namespace:e.payload,derivationPath:null};case"needsDerivationPath":return{...t,status:"derivationPath",derivationPath:e.payload};case"detached":return{...t,status:"detached",namespace:{targetWallet:e.payload.targetWallet},selectedNamespaces:e.payload.selectedNamespaces};case"reset":return Kr;case"resetDerivation":return t.namespace?{...t,derivationPath:null,status:"namespace"}:Kr;default:throw new Error("Action hasn't been defined.")}}i(qc,"reducer");function Ho(){let{state:t,disconnect:e,connect:o}=US(),[n,r]=zS(qc,Kr),a=i(async(u,m,h)=>{r({type:"reset"});try{let g=m?.map(d=>({...d,network:void 0}));return await o(u,g),{status:"connected"}}catch(g){let d=g?.message?`Error: ${g.message}`:"An unknown error happened during connecting wallet.";throw new Error(d,{cause:g})}},"runConnect"),s=i(async(u,m)=>{if(u.state===OS.DISCONNECTED){let g=!!u.isHub,d=u.properties?.find(f=>f.name==="detached")?.value;if(g&&!d?.length||!g&&!u.needsNamespace)return await a(u.type,void 0,m);if(g&&d?.length&&d.length>1||!g&&u.needsNamespace?.data.length&&u.needsNamespace.data.length>1)return r({type:"needsNamespace",payload:{targetWallet:u,defaultSelectedChains:m?.defaultSelectedChains}}),{status:"namespace"};if(g&&d?.length===1||!g&&u.needsNamespace?.data.length===1){if(u.needsNamespace&&u.needsDerivationPath){let f=u.needsNamespace.data[0];return r({type:"needsDerivationPath",payload:{providerType:u.type,providerImage:u.image,namespace:f.value}}),{status:"derivation-path"}}return await a(u.type,u.needsNamespace?.data.map(f=>({namespace:f.value})),m)}}if(u.isHub){let d=t(u.type).namespaces;if(_n(u,d))return r({type:"detached",payload:{targetWallet:u,selectedNamespaces:null}}),{status:"Detached"}}return m?.disconnectIfConnected?(await c(u.type),{status:"disconnected"}):{status:"disconnected-unhandled"}},"handleConnect"),l=i(async(u,m)=>{let h=u.needsNamespace?.selection==="single",g=u.needsDerivationPath,d=m[0];if(!d)throw new Error("To confirm a namespace, you should select at least one namespace.");if(h&&g)return r({type:"needsDerivationPath",payload:{providerType:u.type,providerImage:u.image,namespace:d}}),{status:"derivation-path"};if(!Hc(n))throw new Error("Something went wrong on handling namespace. Please retry.");let f=m.map(S=>({namespace:S}));return r({type:"detached",payload:{targetWallet:u,selectedNamespaces:f?.map(S=>S.namespace)||null}}),{status:"Detached"}},"handleNamespace"),p=i(async u=>{if(!u)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");if(!Qc(n))throw new Error("It seems you are filling derivation path without setting namespace before doing that. Please retry to connect.");let m=n.derivationPath.providerType,g=[{namespace:n.derivationPath.namespace,derivationPath:u}];return await a(m,g)},"handleDerivationPath"),c=i(async u=>{let m=t(u);return m.connected||m.connecting?(await e(u),{status:"disconnected"}):{status:"noop"}},"handleDisconnect");return{handleConnect:s,handleDisconnect:c,handleNamespace:l,handleDerivationPath:p,getState:()=>n,resetState:u=>{r(u==="derivation"?{type:"resetDerivation"}:{type:"reset"})}}}i(Ho,"useStatefulConnect");import{WalletState as as}from"@rango-dev/ui";import{useWallets as $C}from"@rango-dev/wallets-react";import{detectMobileScreens as FC,KEPLR_COMPATIBLE_WALLETS as OC,WalletTypes as Un}from"@rango-dev/wallets-shared";import{useCallback as UC,useEffect as zC}from"react";import LC,{createContext as MC,useContext as PC,useEffect as _C,useRef as DC}from"react";import{create as BC}from"zustand";import{persist as WC}from"zustand/middleware";import{allProviders as QS}from"@rango-dev/provider-all";var qa=class{static{i(this,"CacheService")}#e=new Map;get(e){return this.#e.get(e)}set(e,o){this.#e.set(e,o)}remove(e){this.#e.delete(e)}clear(){this.#e.clear()}},qo=new qa;import{defineVersions as Vc,pickVersion as Kc,Provider as Ga}from"@rango-dev/wallets-core";function jc({allProviders:t,configWallets:e}){if(e){let o=[];return e.forEach(n=>{if(typeof n=="string"){let r=t.find(a=>{let s=Xc(a);return s instanceof Ga?s.id===n:s.config.type===n});r?o.push(r):console.warn(`Couldn't find ${n} provider. Please make sure you are passing the correct name.`)}else n instanceof Ga?o.push(Vc().version("1.0.0",n).build()):o.push(Vc().version("0.0.0",n).build())}),o}return t}i(jc,"matchAndGenerateProviders");function Xc(t){try{return Kc(t,"1.0.0")[1]}catch{return Kc(t,"0.0.0")[1]}}i(Xc,"pickProviderVersionWithFallbackToLegacy");function Yc(t){return t.map(o=>Xc(o)).map(o=>o instanceof Ga?o.id:o.config.type)}i(Yc,"configWalletsToWalletName");function jr(t,e){return e.find(o=>o.name===t)?.displayName}i(jr,"getBlockchainDisplayNameFor");function ft(t,e){return e.find(o=>o.name===t)?.shortName}i(ft,"getBlockchainShortNameFor");function Zc(t,e){return e.find(o=>o.name===t)?.logo}i(Zc,"getBlockchainImage");function Dn(t,e){return e.find(o=>o.id===t)?.title}i(Dn,"getSwapperDisplayName");function ko(t,e){return e.find(o=>o.name===t)??null}i(ko,"findBlockchain");function Va(t,e){if(!e||!t)return!1;for(let o of e.feeAssets)if(t?.blockchain===o?.blockchain&&t?.symbol===o?.symbol&&t?.address===o?.address)return!0;return!1}i(Va,"isTokenNative");function gt(t){return`${t.blockchain.toLowerCase()}-${t.symbol.toLowerCase()}-${(t.address??"").toLowerCase()}`}i(gt,"createTokenHash");function Go(t,e){return t.addressPatterns.filter(r=>new RegExp(r).test(e)).length>0}i(Go,"isValidTokenAddress");function $n(t){let{config:e,meta:o}=t,n={},r=e.tokens,a=i(l=>{l.forEach(p=>{typeof p!="string"&&(p=gt(p));let c=o.tokensMapByTokenHash.get(p);c&&(n[p]=c)})},"addTokens");if(Array.isArray(r))return r.length>0?(a(r),Object.values(n)):Array.from(o.tokensMapByTokenHash.values());if(!r)return Array.from(o.tokensMapByTokenHash.values());let s;if(e.blockchains?.length)s=e.blockchains;else{s=Object.keys(r);let l=new Set(s);Object.keys(o.tokensMapByBlockchainName).forEach(p=>{l.has(p)||a(o.tokensMapByBlockchainName[p])})}return s.forEach(l=>{let p=r[l];if(!p&&o.tokensMapByBlockchainName?.[l]){a(o.tokensMapByBlockchainName[l]);return}p&&(p.isExcluded?(a(o.tokensMapByBlockchainName[l]),p.tokens.forEach(c=>{let u=gt(c);delete n[u]})):a(p.tokens))}),Object.values(n)}i($n,"matchTokensFromConfigWithMeta");function Xr(t){let{config:e}=t,o=e.from?.blockchains||[],n=e.to?.blockchains||[];if(!o.length||!n.length)return[];let r=[...o,...n],a=new Set(r);return Array.from(a)}i(Xr,"getSupportedBlockchainsFromConfig");function Rc(t){return{walletConnectProjectId:t?.walletConnectProjectId,trezorManifest:t?.trezorManifest,tonConnect:t?.tonConnect,walletConnectListedDesktopWalletLink:t.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink}}i(Rc,"makeProvidersOptionsFromConfig");var Yr={apiKey:"",title:void 0,multiWallets:!0,excludeLiquiditySources:!0,customDestination:!0,variant:"default",trezorManifest:{appUrl:"https://widget.rango.exchange/",email:"hi+trezorwidget@rango.exchange"},tonConnect:{manifestUrl:"https://raw.githubusercontent.com/rango-exchange/rango-types/main/assets/manifests/tonconnect-manifest.json"}},HS={clientUrl:void 0},qS={liquiditySources:void 0};function Jc(t){let e=Rc(t),o={walletconnect2:{WC_PROJECT_ID:e?.walletConnectProjectId||"",DISABLE_MODAL_AND_OPEN_LINK:e?.walletConnectListedDesktopWalletLink},selectedProviders:t.wallets,trezor:e?.trezorManifest?{manifest:e.trezorManifest}:void 0,tonConnect:e?.tonConnect?.manifestUrl?{manifestUrl:e?.tonConnect.manifestUrl}:void 0};return QS(o).map(a=>a())}i(Jc,"generateProviders");var eu=i((t,e,o)=>{let n=Jc({...Yr,...t});return{config:{...Yr,...t},iframe:HS,campaignMode:qS,allProviders:n,getLiquiditySources:()=>{let{config:r,campaignMode:a}=o();return a.liquiditySources?.length?a.liquiditySources:r.liquiditySources??[]},getDisabledLiquiditySources:()=>{let{disabledLiquiditySources:r,campaignMode:a}=o();return a.liquiditySources?.length?[]:r},excludeLiquiditySources:()=>{let{config:r,campaignMode:a}=o();return a.liquiditySources?.length?!1:!!r.excludeLiquiditySources},isInCampaignMode:()=>{let{campaignMode:r}=o();return!!r.liquiditySources?.length},updateConfig:r=>{let a=o().config,{_tokensMapByTokenHash:s,_tokensMapByBlockchainName:l}=o(),p=$n({type:"source",config:{blockchains:r.from?.blockchains,tokens:r.from?.tokens},meta:{tokensMapByBlockchainName:l,tokensMapByTokenHash:s}}),c=$n({type:"destination",config:{blockchains:r.to?.blockchains,tokens:r.to?.tokens},meta:{tokensMapByBlockchainName:l,tokensMapByTokenHash:s}});qo.set("supportedSourceTokens",p),qo.set("supportedDestinationTokens",c),e({config:{...a,...r}})},updateCampaignMode:(r,a)=>{let s=o().campaignMode;e({campaignMode:{...s,[r]:a}})},updateIframe:(r,a)=>{let s=o().iframe;e({iframe:{...s,[r]:a}})},buildAndSetProviders:()=>{let{config:r}=o(),a=Jc(r);e({allProviders:a})},getAvailableProviders:()=>{let{allProviders:r,config:a}=o(),s=Rc(a);return jc({allProviders:r,configWallets:a.wallets,options:s})}}},"createConfigSlice");import{TransactionType as tu}from"rango-types";var ou=[tu.EVM,tu.SOLANA],Zr="https://raw.githubusercontent.com/rango-exchange/assets/refs/heads/main/common/unknown-image.png";import{RangoClient as GS}from"rango-sdk";var Ka={API_KEY:$r};function Ot(t){return Ka[t]||""}i(Ot,"getConfig");function nu(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),Ka=e,Ka}i(nu,"initConfig");var ru=20,iu=25,ja="theme-widget",Xa=i((t,e)=>{let o=!1;if(e&&t){if(Array.isArray(e))o=!e.some(n=>Ft(n,t));else if(!Array.isArray(e)&&e[t.blockchain]){o=e[t.blockchain].tokens.some(r=>Ft(r,t));let n=e[t.blockchain].isExcluded;return!n&&!o||n&&o}}return o},"isTokenExcludedInConfig"),Ya=i((t,e)=>t&&e&&!e.includes(t.name),"isBlockchainExcludedInConfig"),au=i((t,e,o)=>o==="expanded"&&(t||e)||o==="full-expanded"&&e,"isVariantExpandable");var Jr,at=i(()=>Jr||(Jr=new GS(Ot("API_KEY"),Ot("BASE_URL")),Jr),"httpService");import{i18n as pu}from"@lingui/core";var su=[.5,1,3],Rr=1,Vo=5,Fn=30,ei=0;import{WidgetEvents as lu}from"@rango-dev/queue-manager-rango-preset";var Za=(o=>(o.QUOTE_INPUT_UPDATE="quoteInputUpdate",o.QUOTE_OUTPUT_UPDATE="quoteOutputUpdate",o))(Za||{}),Ja=(o=>(o.CONNECT="connect",o.DISCONNECT="disconnect",o))(Ja||{}),Ra=(e=>(e.CLICK_CONNECT_WALLET="clickConnectWallet",e))(Ra||{}),Ko=(a=>(a[a.RouteEvent=lu.RouteEvent]="RouteEvent",a[a.StepEvent=lu.StepEvent]="StepEvent",a.QuoteEvent="quoteEvent",a.WalletEvent="walletEvent",a.UiEvent="uiEvent",a))(Ko||{});function ti(t,e){let o=t.map(a=>a.swapperGroup),n=[];return Uo(t.map(a=>a.swapperGroup)).map(a=>{let s=t.find(l=>l.swapperGroup===a);if(s){let l=!0;o&&(l=o.some(p=>p===s.swapperGroup)),l&&s.types.map(p=>{n.push({id:s.swapperGroup,groupTitle:s.swapperGroup,logo:s.logo,type:p,selected:!e.includes(s.swapperGroup)})})}}),n}i(ti,"getUniqueSwappersGroups");function cu(t,e){return t.swapperGroup<e.swapperGroup?-1:t.swapperGroup>e.swapperGroup?1:0}i(cu,"sortLiquiditySourcesByGroupTitle");function Re(t,e){return e?.[t]==="hidden"}i(Re,"isFeatureHidden");function jo(t,e){return e?.[t]==="enabled"}i(jo,"isRoutingEnabled");var uu=i((t,e,o)=>Re("customTokens",o)?t:t.concat(e),"addCustomTokensToSupportedTokens");function Xo(t){return t==ei?{type:"error",message:pu.t("Slippage must be greater than or equal to 0.01")}:t>Vo&&t<=Fn?{type:"warning",message:pu.t("Your transaction is at risk of being frontrun due to high slippage tolerance."),quoteValidation:{type:3,slippage:t.toString()}}:null}i(Xo,"getSlippageValidation");var mu=i((t,e)=>({_blockchainsMapByName:new Map,_tokensMapByTokenHash:new Map,_tokensMapByBlockchainName:{},_popularTokens:[],_swappers:[],fetchStatus:"loading",blockchains:o=>{let n=e()._blockchainsMapByName,r=Array.from(n?.values()||[]);if(!o||!o?.type)return r;let a=e().config;if(o.type==="custom-token"){let p=Xr({config:a}),c=r;return p.length>0&&(c=c.filter(u=>p.includes(u.name))),c.filter(u=>ou.includes(u.type))}let s=(o.type==="source"?a.from?.blockchains:a.to?.blockchains)??[];return r.filter(p=>!(s.length>0&&!s.includes(p.name)))},tokens:o=>{let{_tokensMapByTokenHash:n,_tokensMapByBlockchainName:r,config:a,_customTokens:s}=e(),l=Array.from(n.values()),p=e()._blockchainsMapByName;if(!o||!o.type)return l;let c=o.type==="source"?"from":"to",u=o.type==="source"?"supportedSourceTokens":"supportedDestinationTokens",m=qo.get(u);m?.length||(m=$n({type:o.type,config:{blockchains:a[c]?.blockchains,tokens:a[c]?.tokens},meta:{tokensMapByTokenHash:n,tokensMapByBlockchainName:r}}),qo.set(u,m)),m=uu(m,s,a.features);let h=e().blockchains({type:o.type});return m.filter(d=>o.blockchain&&d.blockchain!==o.blockchain||!h.some(f=>f.name===d.blockchain)?!1:o.searchFor?!!(rt(d.symbol,o.searchFor)||rt(d.address||"",o.searchFor)||rt(d.name||"",o.searchFor)):!0).sort((d,f)=>{let S=e().isTokenPinned(d,o.type),T=e().isTokenPinned(f,o.type);if(S!==T)return S?-1:1;if(o.getBalanceFor){let A=o.getBalanceFor(d),I=o.getBalanceFor(f),E=_c(A,I);if(E!==0)return E}let y=p.get(d.blockchain),k=p.get(f.blockchain),v=Va(d,y),b=Va(f,k);if(v!==b)return v?-1:1;if(d.isPopular!==f.isPopular)return d.isPopular?-1:1;if(o.searchFor){let A=Cc(d,f,o.searchFor);if(A)return A}return d.isSecondaryCoin!==f.isSecondaryCoin?d.isSecondaryCoin?1:-1:y&&k?y.sort-k.sort:0})},findToken:o=>{let n=e()._tokensMapByTokenHash,r=e().customTokens(),a=gt(o),s=n.get(a);return s||(s=r.find(l=>gt(l)===a)),s},isTokenPinned:(o,n)=>!!(n==="source"?e().config.from?.pinnedTokens:e().config.to?.pinnedTokens)?.some(s=>Ft(s,o)),swappers:()=>{let{config:o,campaignMode:n}=e(),r=n.liquiditySources?.length?n.liquiditySources:null,a=r??o.liquiditySources,s=r?!1:o.excludeLiquiditySources;return e()._swappers.filter(c=>{let u=a?.includes(c.swapperGroup);return s||!a||a.length===0?!u:u}).sort(cu)},fetch:async()=>{try{let{routing:o}=e().config,n=jo("enableCentralizedSwappers",o),r=await at().getAllMetadata({enableCentralizedSwappers:n});t({fetchStatus:"success"});let a=new Map,s=new Map,l={},p=[],c=r.popularTokens,u=r.swappers.filter(g=>g.enabled),m=new Set;r.tokens.forEach(g=>{m.add(g.blockchain),p.push(g)}),r.blockchains.sort((g,d)=>g.sort-d.sort).forEach(g=>{g.enabled&&m.has(g.name)&&a.set(g.name,g)}),p.forEach(g=>{let d=gt(g);l[g.blockchain]||(l[g.blockchain]=[]),s.set(d,g),l[g.blockchain].push(d)}),t({_blockchainsMapByName:a,_tokensMapByTokenHash:s,_tokensMapByBlockchainName:l,_popularTokens:c,_swappers:u})}catch(o){throw t({fetchStatus:"failed"}),o}}}),"createDataSlice");import{Bengali as VS,Catalonia as KS,Chinese as du,Denmark as jS,English as XS,Finland as YS,French as ZS,German as JS,Greece as RS,Hungary as eC,India as tC,Indonesian as oC,Italian as nC,Japanese as rC,Korea as iC,Lithuania as aC,Malay as sC,Netherlands as lC,Pakistan as pC,Philippines as cC,Poland as uC,Portuguese as mC,Russian as dC,SaudiArabia as fC,Serbia as gC,Slovakia as hC,SouthAfrica as yC,Spanish as SC,Swahili as CC,Swedish as TC,Thai as kC,Turkish as vC,Ukrainian as wC,Vietnamese as xC}from"@rango-dev/ui";var fu=[{title:"Afrikaans",label:"Afrikaans",local:"af",SVGFlag:yC},{title:"Arabic",label:"\u0639\u0631\u0628\u064A",local:"ar",SVGFlag:fC},{title:"Bengali",label:"\u09AC\u09BE\u0982\u09B2\u09BE",local:"bn",SVGFlag:VS},{title:"Catalan",label:"Catal\xE0",local:"ca",SVGFlag:KS},{title:"Chinese (Simplified)",label:"\u7B80\u4F53\u4E2D\u6587",local:"zh-CN",SVGFlag:du},{title:"Chinese (Traditional)",label:"\u4E2D\u6587\uFF08\u7E41\u9AD4)",local:"zh-TW",SVGFlag:du},{title:"Danish",label:"Dansk",local:"da",SVGFlag:jS},{title:"Dutch",label:"Nederlands",local:"nl",SVGFlag:lC},{title:"English",label:"English",local:"en",SVGFlag:XS},{title:"Filipino",label:"Filipino",local:"fil",SVGFlag:cC},{title:"Finnish",label:"Suomalainen",local:"fi",SVGFlag:YS},{title:"French",label:"Fran\xE7ais",local:"fr",SVGFlag:ZS},{title:"German",label:"Deutsch",local:"de",SVGFlag:JS},{title:"Greek",label:"\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC",local:"el",SVGFlag:RS},{title:"Hindi",label:"\u0939\u093F\u0902\u0926\u0940",local:"hi",SVGFlag:tC},{title:"Hungarian",label:"Magyar",local:"hu",SVGFlag:eC},{title:"Indonesian",label:"Indonesia",local:"id",SVGFlag:oC},{title:"Italian",label:"Italiana",local:"it",SVGFlag:nC},{title:"Japanese",label:"\u65E5\u672C\u8A9E",local:"ja",SVGFlag:rC},{title:"Korean",label:"\uD55C\uAD6D\uC778",local:"ko",SVGFlag:iC},{title:"Lithuanian",label:"Lietuvi\u0173",local:"lt",SVGFlag:aC},{title:"Malay",label:"Melayu",local:"ms",SVGFlag:sC},{title:"Polish",label:"Polski",local:"pl",SVGFlag:uC},{title:"Portuguese",label:"Portugu\xEAs",local:"pt",SVGFlag:mC},{title:"Russian",label:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439",local:"ru",SVGFlag:dC},{title:"Serbian",label:"C\u0440\u043F\u0441\u043A\u0438",local:"sr",SVGFlag:gC},{title:"Slovak",label:"Slovensk\xFD",local:"sk",SVGFlag:hC},{title:"Spanish",label:"Espa\xF1ol",local:"es",SVGFlag:SC},{title:"Swahili",label:"Kiswahili",local:"sw",SVGFlag:CC},{title:"Swedish",label:"Svenska",local:"sv",SVGFlag:TC},{title:"Thai",label:"\u0E41\u0E1A\u0E1A\u0E44\u0E17\u0E22",local:"th",SVGFlag:kC},{title:"Turkish",label:"T\xFCrk\xE7e",local:"tr",SVGFlag:vC},{title:"Ukrainian",label:"Y\u043A\u0440\u0430\u0457\u043D\u0456",local:"uk",SVGFlag:wC},{title:"Urdu",label:"\u0627\u0631\u062F\u0648",local:"ur",SVGFlag:pC},{title:"Vietnamese",label:"Ti\u1EBFng Vi\u1EC7t",local:"vi",SVGFlag:xC}],Yo="en";var gu=i((t,e)=>({disabledLiquiditySources:[],theme:"auto",language:null,preferredBlockchains:[],slippage:Rr,customSlippage:null,infiniteApprove:!1,affiliateRef:null,affiliatePercent:null,affiliateWallets:null,_customTokens:[],quoteTokensRate:"default",changeQuoteTokensRate:()=>t(o=>({quoteTokensRate:o.quoteTokensRate==="default"?"reversed":"default"})),addPreferredBlockchain:o=>{let n=e().preferredBlockchains;if(n.find((s,l)=>{let p=s===o,c=l<=9;return p&&c}))return;let a=n.filter(s=>!(s===o));t(()=>({preferredBlockchains:[o,...a]}))},setSlippage:o=>t(()=>({slippage:o})),setCustomSlippage:o=>t(()=>({customSlippage:o})),setAffiliateRef:o=>t(()=>({affiliateRef:o})),setAffiliatePercent:o=>t(()=>({affiliatePercent:o})),setAffiliateWallets:o=>t(()=>({affiliateWallets:o})),toggleAllLiquiditySources:(o,n)=>t(r=>{if(n)return{disabledLiquiditySources:[]};let a=Uo(o.map(s=>s.swapperGroup));return a.length===r.disabledLiquiditySources.length?{disabledLiquiditySources:[]}:{disabledLiquiditySources:a}}),toggleInfiniteApprove:()=>t(o=>({infiniteApprove:!o.infiniteApprove})),toggleLiquiditySource:o=>t(n=>n.disabledLiquiditySources.includes(o)?{disabledLiquiditySources:n.disabledLiquiditySources.filter(r=>r!=o)}:{disabledLiquiditySources:n.disabledLiquiditySources.concat(o)}),setTheme:o=>t(()=>({theme:o})),setLanguage:o=>t(()=>({language:o})),updateSettings:o=>{let{features:n,theme:r}=o,a=Re("theme",n),s=Re("language",n),l=Re("liquiditySource",n),p=r?.singleTheme,c=o?.__UNSTABLE_OR_INTERNAL__?.autoUpdateSettings;t({...a&&{theme:o.theme?.mode||"auto"},...p&&{theme:o.theme?.mode||"light"},...s&&{language:o.language||Yo},...l&&{disabledLiquiditySources:o.liquiditySources||[]},...c&&{language:o.language||Yo}})},setCustomToken:o=>{e().fetchCustomTokensBalances({tokens:[o],connectedWallets:e().connectedWallets}),t(n=>({_customTokens:[o,...n._customTokens]}))},deleteCustomToken:o=>t(n=>({_customTokens:n._customTokens.filter(r=>r.address!==o.address)})),customTokens:()=>{let o=e().config,n=e()._customTokens,r=Xr({config:o});return r.length?n.filter(a=>r.includes(a.blockchain)):n}}),"createSettingsSlice");import is from"bignumber.js";import bC from"mitt";var Te=bC(),EC={on:Te.on,off:Te.off};var hu=i(t=>(e,o,n)=>t(i((...a)=>{let[s,...l]=a;e(p=>({...typeof s=="function"?s(p):s,lastUpdatedAt:+new Date}),...l)},"modifedSet"),o,n),"keepLastUpdated");import yu from"bignumber.js";function Ut(t){return`${t.blockchain}${So}${t.address}${So}${t.symbol}`}i(Ut,"createAssetKey");function Su(t,e){return`${Ut(e)}${So}${t}`}i(Su,"createBalanceKey");function On(t){let[e,o,n]=t.split(So);return{address:o==="null"?null:o,blockchain:e,symbol:n}}i(On,"extractAssetFromBalanceKey");function ts(t,e,o){return e.balances?.forEach(n=>{let r=n.price??t.findToken(n.asset)?.usdPrice;t._aggregatedBalances[Ut(n.asset)]?.forEach(s=>{o[s]&&(o[s]={...o[s],usdValue:r?new yu(r??me).multipliedBy(o[s].amount).toString():""})})}),o}i(ts,"computeNextBalancesWithNewPrices");function os(t,e){let o={};return t.balances?.forEach(n=>{let r=Su(t.address,n.asset),a=n.amount.amount,s=n.amount.decimals,l=n.price??e().findToken(n.asset)?.usdPrice,p=l?new yu(l??me).multipliedBy(a).toString():"",c={amount:a,decimals:s,usdValue:p};o[r]=c}),o}i(os,"createBalanceStateForNewAccount");function ns(t,e){for(let o in e){let n=On(o),r=Ut(n);t[r]||(t[r]=[]),t[r].includes(o)||(t[r]=[...t[r],o])}return t}i(ns,"updateAggregatedBalanceStateForNewAccount");function IC(t,e){let o=On(e),n=Ut(o);return t[n]&&(t[n]=t[n].filter(r=>r!==e)),t}i(IC,"removeBalanceFromAggregatedBalance");function rs(t,e,o){let n=t.connectedWallets.filter(p=>p.walletType===e);t.connectedWallets.forEach(p=>{p.walletType!==e&&(n=n.filter(c=>!(c.chain===p.chain&&c.address===p.address)))}),o?.chains&&o.chains.length>0&&(n=n.filter(p=>o.chains?.includes(p.chain))),o?.namespaces&&o.namespaces.length>0&&(n=n.filter(p=>p.namespace?o.namespaces?.includes(p.namespace):!1));let r={},a=t._aggregatedBalances,s=t._balances;return Object.keys(s).forEach(p=>{let c=On(p);!!n.find(m=>Su(m.address,{address:c.address,blockchain:m.chain,symbol:c.symbol})===p)?a=IC(a,p):r[p]=s[p]}),{_balances:r,_aggregatedBalances:a}}i(rs,"computeNextStateAfterWalletBalanceRemoval");function AC(t,e){return e.find(o=>t.address===o.address&&t.chain===o.blockChain)}i(AC,"matchWalletDetailsWithConnectedWallet");var NC=vc(),Cu=hu((t,e)=>({_balances:{},_aggregatedBalances:{},connectedWallets:[],fetchingWallets:!1,lastUpdatedAt:+new Date,setConnectedWalletAsRefetching:o=>{t(n=>({fetchingWallets:!0,connectedWallets:n.connectedWallets.map(r=>o.find(a=>Pn(a,r))?{...r,loading:!0,error:!1}:r)}))},setConnectedWalletRetrievedData:(o,n)=>{t(r=>({fetchingWallets:!1,connectedWallets:r.connectedWallets.map(a=>o.find(s=>Pn(s,a))?{...a,loading:!1,error:!1,explorerUrl:AC(a,n)?.explorerUrl||a.explorerUrl}:a)}))},setConnectedWalletHasError:o=>{t(n=>({fetchingWallets:!1,connectedWallets:n.connectedWallets.map(r=>o.find(a=>Pn(a,r))?{...r,loading:!1,error:!0}:r)}))},addConnectedWallet:(o,n)=>{let r=e().connectedWallets,a=o.filter(s=>!r.some(l=>Pn(s,l)));if(a.length>0){let s=a.map(l=>{let p=!r.some(c=>c.chain===l.chain&&c.selected&&c.walletType!==l.walletType);return{address:l.address,chain:l.chain,isContractWallet:l.isContractWallet,explorerUrl:null,walletType:l.walletType,selected:p,namespace:n,loading:!1,error:!1}});t(l=>({connectedWallets:[...l.connectedWallets.filter(c=>!s.some(u=>u.walletType===c.walletType&&u.chain===c.chain)),...s]}))}},fetchCustomTokensBalances:async o=>{let{tokens:n,connectedWallets:r}=o,a=n.reduce((p,c)=>((p[c.blockchain]||=[]).push(c),p),{}),s=new Set,l=r.reduce((p,c)=>{let u=`${c.address}-${c.chain}`;return s.has(u)||(s.add(u),a[c.chain]&&(p[c.address]||(p[c.address]=[]),p[c.address].push(...a[c.chain]))),p},{});Object.entries(l).forEach(async([p,c])=>{try{let{balances:u}=await at().getMultipleTokenBalance({assets:c.map(({symbol:m,address:h,blockchain:g})=>({symbol:m,address:h,blockchain:g})),walletAddress:p});if(u){let m=e()._balances,h=e()._aggregatedBalances;u.forEach(g=>{if(parseFloat(g.amount.amount)===0)return;let d={blockChain:g.asset.blockchain,balances:[g],address:p},f={_aggregatedBalances:e()._aggregatedBalances,findToken:e().findToken};ts(f,d,m);let S=os(d,e);h=ns(h,S),m={...m,...S}}),t(g=>({_balances:{...g._balances,...m},_aggregatedBalances:h}))}}catch(u){console.error(u)}})},setWalletsAsSelected:o=>{let n=e().connectedWallets.map(r=>{let a=!!o.find(l=>l.chain===r.chain&&l.walletType!==r.walletType&&r.selected),s=!!o.find(l=>l.chain===r.chain&&l.walletType===r.walletType&&!r.selected);return a?{...r,selected:!1}:s?{...r,selected:!0}:r});t({connectedWallets:n})},newWalletConnected:async(o,n)=>{Te.emit("walletEvent",{type:"connect",payload:{walletType:o[0].walletType,accounts:o}}),e().addConnectedWallet(o,n),e().fetchBalances(o)},removeBalancesForWallet:(o,n)=>{let r={_balances:e()._balances,_aggregatedBalances:e()._aggregatedBalances,connectedWallets:e().connectedWallets},{_balances:a,_aggregatedBalances:s}=rs(r,o,n);t({_balances:a,_aggregatedBalances:s})},disconnectNamespaces:(o,n)=>{if(e().connectedWallets.find(a=>a.walletType===o)){e().removeBalancesForWallet(o,{namespaces:n}),e()._changeSelectedWalletIfNeededOnRemove(o,{namespaces:n});let a=e().connectedWallets.filter(s=>s.namespace?!(s.walletType===o&&n.includes(s.namespace)):!0);t({connectedWallets:a})}},disconnectWallet:o=>{let n=e().connectedWallets.find(r=>r.walletType===o);if(Te.emit("walletEvent",{type:"disconnect",payload:{walletType:o}}),n){e().removeBalancesForWallet(o),e()._changeSelectedWalletIfNeededOnRemove(o);let r=e().connectedWallets.filter(a=>a.walletType!==o);t({connectedWallets:r})}},_changeSelectedWalletIfNeededOnRemove:(o,n)=>{let r=e().connectedWallets;n?.namespaces&&n.namespaces.length>0&&(r=r.filter(s=>!!s.namespace&&n.namespaces?.includes(s.namespace)));let a=r.filter(s=>s.selected&&s.walletType===o).map(s=>s.chain);if(a.length>0){let s=e().connectedWallets.map(l=>a.includes(l.chain)?(a=a.filter(p=>p!==l.chain),{...l,selected:!0}):l);t({connectedWallets:s})}},clearConnectedWallet:()=>t({connectedWallets:[]}),fetchBalances:async(o,n)=>{let{shouldFetchCustomTokens:r=!0,selectedCustomTokens:a}=n||{};await e().fetchMainTokensBalances(o),r&&e().fetchCustomTokensBalances({tokens:a??e().customTokens(),connectedWallets:o})},fetchMainTokensBalances:async(o,n)=>{if(o.length===0)return;let r=o[0].walletType;e().setConnectedWalletAsRefetching(o);let a=o.map(p=>({address:p.address,blockchain:p.chain})),s;try{s=await at().getWalletsDetails(a)}catch(p){e().setConnectedWalletHasError(o),console.error(`Request for fetching balances failed. cause: ${p}`);return}let l=s.wallets;if(l){let p=e()._balances,c=e()._aggregatedBalances;l.forEach(m=>{if(m.failed)return;let h={_balances:p,_aggregatedBalances:c,connectedWallets:e().connectedWallets,findToken:e().findToken};ts(h,m,p);let{_balances:g,_aggregatedBalances:d}=rs(h,r,{chains:[m.blockChain]});if(c=d,p=g,!e().connectedWallets.find(S=>S.walletType===r&&S.address===m.address&&S.chain===m.blockChain))return;let f=os(m,e);c=ns(c,f),p={...p,...f}}),t(m=>({_balances:{...m._balances,...p},_aggregatedBalances:c})),e().setConnectedWalletRetrievedData(o,l);let{retryOnFailedBalances:u=!0}=n||{};if(u){let m=l.filter(h=>h.failed).map(h=>({chain:h.blockChain,walletType:r,address:h.address}));m.length>0&&await e().fetchMainTokensBalances(m,{retryOnFailedBalances:!1})}}else e().setConnectedWalletHasError(o),console.error("We couldn't fetch your account balances. Seem there is no information on blockchain for them yet.")},getBalances:()=>e()._balances,getBalanceFor:o=>{let n=e().getBalances(),r=Ut(o),a=e()._aggregatedBalances[r]||[];if(a.length===0)return null;if(a.length===1){let p=a[0];return n[p]}let l=n[a[0]];return a.forEach(p=>{let c=n[p],u=new is(c.amount),m=new is(l.amount);u.isGreaterThan(m)&&(l=c)}),l},getBalancesForWalletAddress:o=>{let n=e().getBalances();return Object.keys(n).reduce((s,l)=>{let p=n[l],[,,,c]=l.split(So);return c===o&&(s[l]=p),s},{})},getConnectedWalletsDetails:()=>NC(()=>e().connectedWallets.map(n=>{let r=e().getBalancesForWalletAddress(n.address),a=Object.keys(r);return{...n,balances:a.reduce((s,l)=>{let p=r[l],c=On(l);if(c.blockchain===n.chain){let u=e().findToken(c),m=p.amount?new is(p.amount).shiftedBy(-p.decimals):me;s.push({chain:n.chain,symbol:c.symbol,ticker:c.symbol,address:c.address,rawAmount:p.amount,decimal:p.decimals,amount:m.toString(),logo:u?.image||null,usdPrice:u?.usdPrice||null})}return s},[])}}),e().lastUpdatedAt)}));function Tu(t){return BC()(WC((...e)=>({...Cu(...e),...mu(...e),...gu(...e),...eu(t,...e)}),{name:"user-settings",skipHydration:!0,partialize:e=>({_customTokens:e._customTokens,theme:e.theme,language:e.language,affiliatePercent:e.affiliatePercent,affiliateRef:e.affiliateRef,affiliateWallets:e.affiliateWallets,slippage:e.slippage,customSlippage:e.customSlippage,infiniteApprove:e.infiniteApprove,preferredBlockchains:e.preferredBlockchains,disabledLiquiditySources:e.disabledLiquiditySources,quoteTokensRate:e.quoteTokensRate}),version:1,migrate:(e,o)=>{let n=e;return o===0&&(n._customTokens=n._customTokens.map(r=>({...r,warning:!0}))),n}}))}i(Tu,"createAppStore");var ku=MC(null);function C(){let t=PC(ku);if(_C(()=>{t&&!t.persist.hasHydrated()&&t.persist.rehydrate()},[]),!t)throw new Error("Missing AppStoreContext.Provider in the tree");return t()}i(C,"useAppStore");function vu(t){let e=DC();return e.current||(e.current=Tu(t.config)),LC.createElement(ku.Provider,{value:e.current},t.children)}i(vu,"AppStoreProvider");function Tt(t){let{chain:e}=t||{},{connectedWallets:o,getAvailableProviders:n}=C(),{state:r,getWalletInfo:a}=$C(),s=C().blockchains(),{handleDisconnect:l}=Ho(),p=Yc(n()),c=Mc(r,a,p,e);c=FC()?c.filter(f=>f.showOnMobile!==!1&&r(f.type).installed):c;let u=Dc(c,r),m=i(f=>!o.find(S=>S.walletType===f&&S.chain===e),"isExperimentalChainNotAdded"),h=UC(()=>{let f=c?.filter(S=>S.state===as.CONNECTING)||[];for(let S of f)l(S.type)},[Oc(c)]);zC(()=>()=>{h()},[]);let g=i(f=>{let S=f.find(y=>y.type===Un.DEFAULT);return!S||S.state===as.NOT_INSTALLED?!1:f.filter(y=>y.state!=as.NOT_INSTALLED&&![Un.DEFAULT,Un.WALLET_CONNECT_2,Un.LEDGER].includes(y.type)&&a(y.type).supportedChains.filter(k=>k.type=="EVM").length>0).length==0},"shouldShowDefaultInjectedWallet"),d=i((f,S,T)=>Gr(T,S)&&m(f)&&!OC.includes(f)||f==Un.DEFAULT&&!g(c),"shouldExcludeWallet");return{list:u.filter(f=>!d(f.type,e??"",s)),terminateConnectingWallets:h}}i(Tt,"useWalletList");import{Modal as GC}from"@rango-dev/ui";import VC from"react";import{create as qC}from"zustand";var wu="rango-widget";var zn=class{constructor(e){this.state="not-initiated";this.events={};this.init=()=>{this.initEvents(),this.tryClaim()};this.forceClaim=()=>{if(!this.isClaimed()){let e={name:"force-claim",candidateId:this.tabId};this.channel.postMessage(e),setTimeout(()=>{this.isClaimed()||this.claim()},300)}};this.isClaimed=()=>this.state==="claimed";this.destroy=()=>{this.channel.removeEventListener("message",this.handleMessageEvent),document.removeEventListener("visibilitychange",this.handleVisibilityChange),document.removeEventListener("resume",this.handleResume)};this.handleMessageEvent=e=>{let o=e.data.name;switch(o){case"ping":this.claimedByCurrentTab(e.data.pingAt);break;case"pong":this.alreadyClaimedByAnotherTab();break;case"force-claim":this.forceRelease(e.data.candidateId);break;case"force-release":this.tabId===e.data.candidateId&&this.claim();break;default:throw new Error(`${o} is not supported.`)}};this.handleVisibilityChange=async()=>{document.visibilityState==="visible"&&await this.tryClaim()};this.handleResume=async()=>{this.isClaimed()&&(await this.tryClaim(),this.isClaimed()||this.events.onRelease?.())};this.channel=new BroadcastChannel(wu),this.tabId=Math.trunc(Math.random()*1e5),this.events=e}static{i(this,"TabManager")}initEvents(){this.channel.addEventListener("message",this.handleMessageEvent),document.addEventListener("visibilitychange",this.handleVisibilityChange),document.addEventListener("resume",this.handleResume)}claimedByCurrentTab(e){let o=this.lastTryClaim&&this.lastTryClaim<e;if(this.isClaimed()||o){let n={name:"pong"};this.channel.postMessage(n);return}}alreadyClaimedByAnotherTab(){this.resetLastCheck()}async tryClaim(){return this.setLastCheck(),new Promise(e=>{setTimeout(()=>{this.check(),e()},300)})}check(){this.state==="not-initiated"&&this.events.onInit?.(),this.lastTryClaim?(this.claim(),this.resetLastCheck()):this.state="not-claimed"}claim(){this.state="claimed",this.events.onClaim?.()}setLastCheck(){this.lastTryClaim=Date.now();let e={name:"ping",pingAt:this.lastTryClaim};this.channel.postMessage(e)}resetLastCheck(){this.lastTryClaim=void 0}forceRelease(e){if(this.isClaimed()){this.state="not-claimed",this.events.onRelease?.();let o={name:"force-release",candidateId:e};this.channel.postMessage(o)}}};var HC=i(t=>{let e=t;e.use={};for(let o of Object.keys(e.getState()))e.use[o]=()=>e(n=>n[o]);return e},"createSelectors"),Zo=HC;var te=Zo(qC()((t,e)=>({isActiveTab:!1,tabManagerInitiated:!1,showActivateTabModal:!1,watermark:"NONE",showProfileBanner:!1,fetchingApiConfig:!1,showCompactTokenSelector:!1,activateCurrentTab:(o,n)=>{let{showActivateTabModal:r}=e();!r&&n?t({showActivateTabModal:!0}):(r||!n)&&o()},setShowActivateTabModal:o=>{t({showActivateTabModal:o})},setWatermark:o=>{t({watermark:o})},setShowProfileBanner:o=>{t({showProfileBanner:o})},setShowCompactTokenSelector:o=>{t({showCompactTokenSelector:o})}}))),wo=new zn({onInit:()=>te.setState({tabManagerInitiated:!0}),onClaim:()=>te.setState({isActiveTab:!0,showActivateTabModal:!1}),onRelease:()=>te.setState({isActiveTab:!1})});function J(t){let{watermark:e}=te();return VC.createElement(GC,{hasWatermark:e==="FULL",...t},t.children)}i(J,"WatermarkedModal");import{i18n as rn}from"@lingui/core";import{Alert as oT,Button as nT,Divider as si,Image as rT,MessageBox as iT,RadioRoot as aT}from"@rango-dev/ui";import de,{useEffect as sT,useMemo as lT,useState as pT}from"react";import{Checkbox as JC,Radio as RC,Typography as eT}from"@rango-dev/ui";import Jt from"react";function Jo(t,e){return t.find(o=>o.name===e)?.logo}i(Jo,"getBlockchainLogo");import{Button as KC,darkTheme as jC,Image as XC,styled as kt,Typography as YC}from"@rango-dev/ui";var oi=kt("ul",{padding:0,paddingTop:"$10",paddingBottom:"$20",margin:0}),Ro=kt("li",{backgroundColor:"$neutral200",padding:"$16",borderRadius:"$sm",variants:{clickable:{true:{cursor:"pointer"}},hasError:{true:{background:"$error100 ",[`.${jC} &`]:{backgroundColor:"$error700"}}},unsupported:{true:{cursor:"not-allowed",paddingTop:"$8",paddingBottom:"$8"}}}}),en=kt("div",{display:"flex",gap:"$8",alignItems:"center"}),ni=kt("div",{flex:"1",display:"flex",flexDirection:"column",justifyContent:"space-between",height:"$40",variants:{showSupportedChains:{true:{justifyContent:"space-between"},false:{justifyContent:"center"}}}}),bu=kt("div",{flex:"1",display:"flex",alignItems:"center",gap:"$4",opacity:"0.5"}),tn=kt(XC,{variants:{disabled:{true:{opacity:"0.5"}}}}),on=kt(KC,{minHeight:"$40"}),Eu=kt(YC,{maxWidth:"100px"}),Iu=kt("div",{paddingLeft:"48px"}),Au=kt("div",{display:"flex",gap:"2px",cursor:"pointer",alignItems:"center",width:"fit-content"}),Nu=kt("div",{display:"flex",gap:"6px",alignItems:"center"});import{Image as Wu,Tooltip as Lu,Typography as ZC}from"@rango-dev/ui";import Bt from"react";import{styled as Bu}from"@rango-dev/ui";var ss=Bu("div",{display:"flex",alignItems:"center",padding:0,margin:0}),ri=Bu("div",{marginLeft:"-5px",listStyleType:"none",backgroundColor:"$background",borderRadius:"$lg",minWidth:"15px",height:"15px",variants:{firstItem:{true:{marginLeft:0}}},display:"flex",alignItems:"center",justifyContent:"center"});var ls=3;function ii(t){let{chains:e}=t;return Bt.createElement(ss,null,e.slice(0,ls).map((o,n)=>Bt.createElement(Lu,{key:o.name,container:N(),side:"bottom",align:"start",content:o.name,sideOffset:4},Bt.createElement(ri,{firstItem:n===0},Bt.createElement(Wu,{src:o.logo,size:15})))),e.length>ls&&Bt.createElement(Lu,{container:N(),side:"bottom",align:"start",sideOffset:4,content:Bt.createElement(ss,null,e.map((o,n)=>Bt.createElement(ri,{key:o.name,firstItem:n===0},Bt.createElement(Wu,{src:o.logo,size:15}))))},Bt.createElement(ri,null,Bt.createElement(ZC,{variant:"body",size:"xsmall"},"+",e.length-ls))))}i(ii,"SupportedChainsList");function Mu(t){let{onClick:e,type:o,namespace:n}=t,r=C().blockchains(),a=n.chains.length>1;return Jt.createElement(Ro,{onClick:e,clickable:!0},Jt.createElement(en,null,Jt.createElement(tn,{src:Jo(r,n.id),size:40}),Jt.createElement(ni,{showSupportedChains:a},Jt.createElement(eT,{variant:"label",size:"large"},n.label),a&&Jt.createElement(ii,{chains:n.chains})),o==="radio"?Jt.createElement(RC,{value:n.value}):Jt.createElement(JC,{checked:t.value})))}i(Mu,"NamespaceListItem");import{i18n as tT}from"@lingui/core";import{Typography as Pu}from"@rango-dev/ui";import nn from"react";function ai(t){let{namespace:e}=t,o=C().blockchains();return nn.createElement(Ro,{unsupported:!0},nn.createElement(en,null,nn.createElement(tn,{src:Jo(o,e.id),size:40,disabled:!0}),nn.createElement(bu,null,nn.createElement(Pu,{variant:"label",size:"large"},e.label),nn.createElement(Pu,{variant:"body",size:"xsmall"},tT.t("(Currently not supported)")))))}i(ai,"NamespaceUnsupportedItem");function Qn(t){let{targetWallet:e}=t.value,o=e.needsNamespace?.selection==="single",n=e.image,[r,a]=pT([]),s=lT(()=>e.needsNamespace?.data.filter(m=>!m.unsupported),[e?.type]),l=i(m=>{a(o?[m]:h=>h.includes(m)?h.filter(g=>g!==m):h.concat(m))},"onSelect"),p=s?.length===r.length,c=i(()=>{if(o)throw new Error("onSelectAll should not be called on single selection mode.");p?a([]):s&&a(s.map(m=>m.value))},"onSelectAll"),u=i(m=>o?de.createElement(aT,{value:r?.[0]},m):de.createElement(de.Fragment,null,m),"wrapRadioRoot");return sT(()=>{if(!o&&s)if(t.value.defaultSelectedChains?.length){let m=s.filter(h=>h.chains.some(g=>t.value.defaultSelectedChains?.includes(g.name)));a(m.map(h=>h.value))}else a(s.map(m=>m.value))},[]),de.createElement(de.Fragment,null,de.createElement(iT,{type:"info",title:rn.t("Connect {wallet}",{wallet:e.title}),description:rn.t("This wallet supports multiple chains. Choose which chains you\u2019d like to connect."),icon:de.createElement(rT,{src:n,size:45})}),o?de.createElement(de.Fragment,null,de.createElement(si,{size:20}),de.createElement(oT,{variant:"alarm",type:"info",title:rn.t("This wallet can only connect to one chain at a time. ")})):de.createElement(de.Fragment,null,de.createElement(si,{size:30}),de.createElement(nT,{style:{marginLeft:"auto"},id:"widget-name-space-select-all-btn",size:"xsmall",variant:"ghost",type:"primary",onClick:c},p?rn.t("Deselect all"):rn.t("Select all"))),de.createElement(oi,null,u(de.createElement(de.Fragment,null,e.needsNamespace?.data.map((m,h,g)=>de.createElement(de.Fragment,{key:m.id},m.unsupported?de.createElement(ai,{namespace:m}):de.createElement(Mu,{value:r.includes(m.value),namespace:m,type:o?"radio":"checkbox",onClick:()=>l(m.value)}),h!==g.length-1&&de.createElement(si,{size:10})))))),de.createElement(si,{size:20}),de.createElement(on,{id:"widget-name-space-confirm-btn",type:"primary",disabled:!r.length,onClick:()=>t.onConfirm(r)},rn.t("Connect")))}i(Qn,"Namespaces");import{i18n as ps}from"@lingui/core";import{Divider as cs,Image as ST,MessageBox as CT}from"@rango-dev/ui";import st from"react";import{i18n as an}from"@lingui/core";import{Button as cT,ChevronDownIcon as uT,ChevronUpIcon as mT,Divider as dT,Spinner as fT,Typography as Hn}from"@rango-dev/ui";import{useWallets as gT}from"@rango-dev/wallets-react";import ke,{useEffect as hT,useLayoutEffect as yT,useState as _u}from"react";var Du=i(function(e){let{walletType:o,namespace:n,initialConnect:r}=e,a=C().blockchains(),{connect:s,disconnect:l,state:p}=gT(),[c,u]=_u(null),[m,h]=_u(!1),d=p(o).namespaces?.get(n.value),f=d.accounts?.[0]?.split(":");hT(()=>h(!1),[c]),yT(()=>{r&&S(o,n.value)},[]);let S=i(async(k,v)=>{try{await s(k,[{namespace:v,network:""}])}catch(b){u(b)}},"handleConnectNamespace"),T=i(async k=>{u(null),k.connected?await l(o,[n.value]):S(o,n.value)},"handleButtonClick"),y=i(()=>d.connected?an.t("Disconnect"):c?an.t("Try again"):an.t("Connect"),"getButtonText");return ke.createElement(Ro,{hasError:!!c},ke.createElement(en,null,ke.createElement(tn,{src:Jo(a,n.id),size:40}),ke.createElement(ni,null,ke.createElement(Nu,null,ke.createElement(Hn,{variant:"label",size:"large"},n.label),d.connected&&ke.createElement(Hn,{variant:"body",size:"small",color:"success500"},an.t("Connected")),!d.connected&&!!c&&ke.createElement(Hn,{variant:"body",size:"small",color:"error500"},an.t("Connection failed"))),d.connected&&ke.createElement(Eu,{variant:"body",size:"small",color:"neutral700"},Qo(f?.[f?.length-1])),!d.connected&&c&&ke.createElement(Au,{onClick:()=>h(k=>!k)},ke.createElement(Hn,{variant:"body",size:"small",color:"neutral700",style:{textDecoration:"underline",userSelect:"none",textDecorationSkipInk:"none"}},an.t("See why")),m?ke.createElement(mT,{size:12,color:"gray"}):ke.createElement(uT,{size:12,color:"gray"})),!d.connected&&!c&&n.chains.length>1&&ke.createElement(ii,{chains:n.chains})),d.connecting?ke.createElement(fT,{color:"info"}):ke.createElement(cT,{id:"widget-name-space-connect-btn",variant:"ghost",type:d.connected?"error":"primary",size:"small",onClick:async()=>T(d)},y())),!d.connected&&!!c&&m&&ke.createElement(ke.Fragment,null,ke.createElement(dT,{size:4}),ke.createElement(Iu,null,ke.createElement(Hn,{variant:"body",size:"small",color:"neutral700"},c.cause?.message||c.message))))},"NamespaceDetachedItem");function qn(t){let{selectedNamespaces:e,value:o}=t,{targetWallet:n}=o;return st.createElement(st.Fragment,null,st.createElement(CT,{type:"info",title:ps.t("Connect {wallet}",{wallet:n.type}),description:ps.t("This wallet supports multiple chains. Choose which chains you\u2019d like to connect or disconnect."),icon:st.createElement(ST,{src:n.image,size:45})}),st.createElement(cs,{size:20}),st.createElement(oi,null,n.needsNamespace?.data.map((r,a,s)=>st.createElement(st.Fragment,{key:r.id},r.unsupported?st.createElement(ai,{namespace:r}):st.createElement(Du,{walletType:n.type,namespace:r,initialConnect:e?.includes(r.value)}),a!==s.length-1&&st.createElement(cs,{size:10})))),st.createElement(cs,{size:20}),st.createElement(on,{id:"widget-name-space-confirm-btn",type:"primary",onClick:t.onConfirm},ps.t("Done")))}i(qn,"Detached");import{i18n as sn}from"@lingui/core";import{Divider as Fu,Image as wT,MessageBox as xT,Select as bT,TextField as ET}from"@rango-dev/ui";import ht,{useEffect as IT,useState as Ou}from"react";import{namespaces as TT}from"@rango-dev/wallets-shared";var li={id:"custom",label:"Custom",generateDerivationPath:t=>t};function us(t){let e=t?TT[t].derivationPaths:null;return e?[...e,li]:[]}i(us,"getDerivationPaths");import{Button as kT,styled as ms,Typography as vT}from"@rango-dev/ui";var $u=ms("div",{paddingTop:"$30",paddingBottom:"$30",zIndex:10}),ds=ms(vT,{paddingLeft:"$10"}),fs={height:"$40",backgroundColor:"$neutral200",borderRadius:"$sm"},mM=ms(kT,{minHeight:"$40"});var Uu="0";function Gn(t){let{onConfirm:e}=t,{namespace:o,providerImage:n,providerType:r}=t.value,[a,s]=Ou(null),[l,p]=Ou(Uu),c=a===li.id,u=us(o),m=i(({value:g})=>{let d=u?.find(f=>f.id===g);d&&(a===li.id&&Number.isNaN(Number(l))&&p(Uu),s(d.id))},"handleDerivationPathItemClick"),h=i(()=>{let g=u.find(d=>d.id===a);if(g)e(g.generateDerivationPath(l));else throw new Error("selectedDerivationPath can not be undefined")},"handleConfirm");return IT(()=>{s(us(o)[0]?.id||null)},[o]),ht.createElement(ht.Fragment,null,ht.createElement(Fu,{size:20}),ht.createElement(xT,{type:"info",title:sn.t("Select Derivation Path"),description:sn.t({id:"In order to connect to {type}, you must first select a Derivation Path",values:{type:r}}),icon:ht.createElement(wT,{src:n,size:45})}),ht.createElement($u,null,ht.createElement(ds,{variant:"body",size:"xsmall",color:"$neutral600"},sn.t("Choose Derivation Path Template")),ht.createElement(bT,{value:a||"",options:u.map(g=>({value:g.id,label:g.label})),variant:"filled",handleItemClick:m,styles:{trigger:fs}}),ht.createElement(Fu,{size:20}),ht.createElement(ds,{variant:"body",size:"xsmall",color:"$neutral600"},c?sn.t("Enter Path"):sn.t("Enter Index")),ht.createElement(ET,{type:c?"text":"number",variant:"contained",value:l,onChange:g=>p(g.target.value),style:fs})),ht.createElement(on,{id:"widget-derivation-path-confirm-btn",type:"primary",onClick:h,disabled:!u||!a||!l},sn.t("Confirm")))}i(Gn,"DerivationPath");import{i18n as ln}from"@lingui/core";import{Image as BT,MessageBox as gs,WalletState as WT}from"@rango-dev/ui";import{useWallets as LT}from"@rango-dev/wallets-react";import xo from"react";import{keyframes as AT,styled as pi}from"@rango-dev/ui";var wM=pi("div",{borderRadius:"$lg",width:"$45",height:"$45",backgroundColor:"$success300",display:"flex",justifyContent:"center",alignItems:"center"}),zu=pi("div",{position:"relative"}),NT=AT({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),Qu=pi("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${NT} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),Hu=pi("div",{"& img":{borderRadius:"50%"}});function hs(t){let{wallet:e,error:o}=t,{type:n,image:r}=e,{state:a}=LT();return Ln(a(n))===WT.CONNECTED?xo.createElement(gs,{type:"success",title:ln.t("Wallet Connected"),description:ln.t("Your wallet is connected, you can use it to swap.")}):o?xo.createElement(gs,{type:"error",title:ln.t("Failed to Connect"),description:o||ln.t("Your wallet is not connected. Please try again.")}):xo.createElement(gs,{type:"loading",title:ln.t("Connecting to your wallet"),description:ln.t("Click connect in your wallet popup."),icon:xo.createElement(zu,null,xo.createElement(Hu,null,xo.createElement(BT,{src:r,size:45})),xo.createElement(Qu,null))})}i(hs,"ConnectStatus");import{i18n as ys}from"@lingui/core";import{Button as MT,Divider as qu,MessageBox as PT}from"@rango-dev/ui";import ci from"react";function Ss(t){let{displayName:e,onConfirm:o}=t;return ci.createElement(PT,{title:ys.t({id:"Add {blockchainDisplayName} Chain",values:{blockchainDisplayName:e}}),type:"warning",description:ys.t({id:"Would you like to add the {blockchainDisplayName} experimental chain to your wallet?",values:{blockchainDisplayName:e}})},ci.createElement(qu,{size:18}),ci.createElement(qu,{size:32}),ci.createElement(MT,{id:"widget-experimental-chain-confirm-btn",onClick:o,variant:"outlined",type:"primary",fullWidth:!0,size:"large"},ys.t("Confirm")))}i(Ss,"ExperimentalChain");function Gu(t,e){return t().status==="init"&&!!e}i(Gu,"isOnStatus");function Vn(t){return t().status==="namespace"}i(Vn,"isOnNamespace");function Kn(t){return t().status==="derivationPath"}i(Kn,"isOnDerivationPath");function jn(t){return t().status==="detached"}i(jn,"isOnDetached");var FT=3e3,OT=300;function bo(t){let e=$T(),[o,n]=Vu(!1),[r,a]=Vu(),s=i(k=>{a(k.message)},"catchErrorOnHandle"),{terminateConnectingWallets:l}=Tt(),{handleConnect:p,handleDerivationPath:c,handleNamespace:u,getState:m,resetState:h}=Ho(),g=i(k=>{u(t.wallet,k).then(y).catch(s)},"handleConfirmNamespaces"),d=i(()=>{S()},"handleDetachedConfirm"),f=i(k=>{if(!k)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");c(k).then(y).catch(s)},"handleDerivationPathConfirm"),S=i(()=>{n(!1)},"handleClosingModal"),T=i(()=>{a(void 0),h(),n(!1),e.current&&clearTimeout(e.current)},"resetModalState"),y=i((k,v)=>{let b=k.status==="connected",A=["disconnected","disconnected-unhandled"].includes(k.status);b?(t.onConnect?.(),v||(e.current=setTimeout(S,FT))):A&&S()},"afterConnected");return DT(()=>{if(t.wallet){T();let k=!1,v=!0;i(()=>{setTimeout(()=>{v=!1,k||n(!0)},OT)},"beforeConnecting")(),p(t.wallet,{disconnectIfConnected:!0,defaultSelectedChains:t.options?.defaultSelectedChains}).then(A=>{["namespace","Detached","derivation-path"].includes(A.status)||(k=!0),y(A,v)}).catch(s)}},[t.wallet]),Rt.createElement(J,{open:o,onClose:S,onExit:()=>{T(),l(),t.onClose&&t.onClose()},container:N()},Gu(m,t.wallet)&&Rt.createElement(Rt.Fragment,null,Rt.createElement(hs,{wallet:{type:t.wallet.type,image:t.wallet.image},error:r}),Rt.createElement(_T,{direction:"vertical",size:32})),Vn(m)&&Rt.createElement(Qn,{onConfirm:g,value:m().namespace}),Kn(m)&&Rt.createElement(Gn,{onConfirm:f,value:m().derivationPath}),jn(m)&&Rt.createElement(qn,{onConfirm:d,value:m().namespace,selectedNamespaces:m().selectedNamespaces}))}i(bo,"StatefulConnectModal");import{Provider as qT}from"@rango-dev/wallets-react";import ui,{createContext as GT,useEffect as Zu,useMemo as VT,useRef as Ju}from"react";import{useEffect as UT}from"react";function Ku(t){return t.map(e=>typeof e=="string"?e:e.config.type).join("-")}i(Ku,"hashProviders");function Cs(t,e){let{clearConnectedWallet:o,getAvailableProviders:n,buildAndSetProviders:r}=C(),a=n();return UT(()=>{o(),r()},[Ku(t??[]),e?.walletConnectProjectId,e?.walletConnectListedDesktopWalletLink]),{providers:a}}i(Cs,"useWalletProviders");import{legacyFormatAddressWithNetwork as zT,legacyReadAccountAddress as ju}from"@rango-dev/wallets-core/legacy";import{Events as pn}from"@rango-dev/wallets-react";import{isEvmBlockchain as QT}from"rango-sdk";function Xu(t){let{newWalletConnected:e,disconnectWallet:o,disconnectNamespaces:n,connectedWallets:r,removeBalancesForWallet:a,blockchains:s}=C(),{onConnectWalletHandler:l,onDisconnectWalletHandler:p}=t,c=s().filter(QT).map(f=>f.name),u=i((f,S)=>{let[T,,y,k,v]=f,b={walletType:T,network:k.network??void 0,accounts:y};l.current?l.current(b):console.warn("onConnectWallet handler hasn't been set. Are you sure?");let A=Ha(T,y,c,S.supportedChainNames,v.isContractWallet);A.length&&e(A,v.namespace)},"onAccountsEvent"),m=i((f,S,T,y,k)=>{if(S===pn.ACCOUNTS){let v=Mn(k.supportedBlockchains);T&&u([f,S,T,y,k],{supportedChainNames:v})}S===pn.PROVIDER_DISCONNECTED&&(o(f),p.current?p.current(f):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?")),S===pn.NAMESPACE_DISCONNECTED&&n(f,T)},"handleUpdatesForHub"),h=i((f,S,T,y,k)=>{if(S===pn.ACCOUNTS){let v=Mn(k.supportedBlockchains),b=[],A=[];if(T?.forEach(E=>{let{network:x}=ju(E);c.includes(x)?b.push(E):A.push(E)}),r.filter(E=>E.walletType===f).map(E=>zT(E.address,E.chain)).length>0){if(b.length>0){let E=Ha(f,b,c,v,k.isContractWallet);a(f,{chains:E.map(x=>x.chain)})}A.length>0&&a(f,{chains:A.map(E=>{let{network:x}=ju(E);return x})})}T?u([f,S,T,y,k],{supportedChainNames:v}):(o(f),p.current?p.current(f):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?"))}},"handleUpdatesForLegacy"),g=i((f,S,T,y,k)=>{if(S===pn.CONNECTED&&T){let v={walletType:f,network:y.network??void 0,accounts:y.accounts??void 0};l.current?l.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}if(S===pn.NETWORK&&T){let v={walletType:f,network:T,accounts:y.accounts??void 0};l.current?l.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}},"handleUpdatesForBoth");return{handler:i((f,S,T,y,k)=>{k.isHub?m(f,S,T,y,k):h(f,S,T,y,k),g(f,S,T,y,k)},"handler")}}i(Xu,"useUpdates");import{LegacyEvents as HT}from"@rango-dev/wallets-core/legacy";function Yu(t,e){let[o,n,r,a,s]=e;n!==HT.PROVIDER_DISCONNECTED&&t(o,n,r,a,s)}i(Yu,"propagateEvents");var mi=GT({onConnectWallet:()=>{},onDisconnectWallet:()=>{}});function KT(t){let{updateConfig:e,updateSettings:o,fetch:n,fetchStatus:r}=C(),a=C().blockchains(),s=C().config,l={walletConnectProjectId:s?.walletConnectProjectId,trezorManifest:s?.trezorManifest,tonConnect:s.tonConnect,walletConnectListedDesktopWalletLink:t.config.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink},{providers:p}=Cs(s.wallets,l),c=Ju(),u=Ju(),{handler:m}=Xu({onConnectWalletHandler:c,onDisconnectWalletHandler:u});Zu(()=>{n().catch(console.log)},[]),Zu(()=>{t.config&&(e(t.config),o(t.config),window.__rango={config:s,dappConfig:t.config})},[t.config,r]);let h=te.use.isActiveTab(),g=VT(()=>({onConnectWallet:d=>{c.current=d},onDisconnectWallet:d=>{u.current=d}}),[]);return ui.createElement(mi.Provider,{value:g},ui.createElement(qT,{allBlockChains:a,providers:p,onUpdateState:(d,f,S,T,y)=>{let k=[d,f,S,T,y];m(...k),t.onUpdateState&&Yu(t.onUpdateState,k)},autoConnect:!!h,configs:{wallets:s.wallets}},t.children))}i(KT,"Main");function di(t){let{config:e,...o}=t;return ui.createElement(vu,{config:e},ui.createElement(KT,{...o,config:e}))}i(di,"WidgetWallets");import $a from"react";import jT,{Fragment as XT}from"react";import{MemoryRouter as YT,useInRouterContext as ZT}from"react-router";function Ru({children:t}){let o=ZT()?XT:YT;return jT.createElement(o,null,t)}i(Ru,"AppRouter");import{I18nManager as y0}from"@rango-dev/ui";import sc from"react";import Oe from"react";import{useRoutes as r0}from"react-router-dom";var F={home:"/",fromSwap:"from-swap",toSwap:"to-swap",blockchains:"blockchains",settings:"settings",customTokens:"custom-tokens",addCustomTokens:"add-custom-tokens",liquiditySources:"liquidity-sources",bridges:"bridges",exchanges:"exchanges",languages:"languages",swaps:"swaps",wallets:"wallets",confirmSwap:"confirm-swap",swapDetails:":requestId",routes:"routes"};import{useEffect as un,useRef as ki}from"react";import et from"bignumber.js";import{create as tk}from"zustand";import{subscribeWithSelector as ok}from"zustand/middleware";import{i18n as vt}from"@lingui/core";import{getRelatedWalletOrNull as ek,RouteEventType as d_}from"@rango-dev/queue-manager-rango-preset";import Ve from"bignumber.js";import{PendingSwapNetworkStatus as Ci}from"rango-types";import{i18n as He}from"@lingui/core";var oe=i(()=>({genericServerError:He.t("Failed Network, Please retry your swap."),liquiditySourcesError:{title:He.t("Please reset your liquidity sources."),description:He.t("You have limited the liquidity sources and this might result in Rango finding no routes. Please consider resetting your liquidity sources.")},noResultError:{title:He.t("No Routes Found."),description:He.t("Reasons why Rango couldn't find a route: low liquidity on token, very low input amount or no routes available for the selected input/output token combination.")},bridgeLimitErrors:{increaseAmount:He.t("Bridge Limit Error: Please increase your amount."),decreaseAmount:He.t("Bridge Limit Error: Please decrease your amount.")},highValueLossError:{impactTitle:He.t("High Price Impact"),title:He.t("Price impact is too high!"),description:He.t("The price impact is significantly higher than the allowed amount."),confirmMessage:He.t("Confirm high price impact")},quoteUpdatedWithHighValueLoss:{title:He.t("Route updated and price impact is too high, try again later!")},unknownPriceError:{impactTitle:He.t("USD Price Unknown"),title:He.t("USD Price Unknown, Cannot calculate Price Impact."),description:He.t("USD Price Unknown, Cannot calculate Price Impact. The price impact may be higher than usual. Are you sure to continue the Swap?"),confirmMessage:He.t("Confirm USD Price Unknown")}}),"errorMessages");function em(t){return t.type===0?t.diagnosisMessage??oe().noResultError.title:t.type===1?t.diagnosisMessage??oe().genericServerError:""}i(em,"getQuoteErrorMessage");import{i18n as fi}from"@lingui/core";var Eo=i(()=>({connectWallet:fi.t("Connect Wallet"),swap:fi.t("Swap"),swapAnyway:fi.t("Swap anyway"),ethWarning:fi.t("The route goes through Ethereum. Continue?")}),"swapButtonTitles");function Ts(t,e){return{"Network Fee":e("Network Fee"),"Swapper Fee":e("Protocol Fee"),"Affiliate Fee":e("Affiliate Fee"),"Outbound network fee":e("Outbound Fee"),"Rango Fee":e("Rango Fee")}[t]}i(Ts,"getFeeLabel");var ks=["RECOMMENDED","CENTRALIZED","LOWEST_FEE","FASTEST","HIGH_IMPACT"],tm=100,om=30,nm=15,rm=60;var im=[{threshold:-10,minInput:400},{threshold:-5,minInput:1e3}],am=[{threshold:-1,minInput:1e3},{threshold:-2,minInput:500}];import{getLastSuccessfulStep as RT}from"@rango-dev/queue-manager-rango-preset";import RP from"bignumber.js";function lm(t,e){if(e===null)return null;let o=e?.find(n=>n.blockchain===t.chain)?.wallets.find(n=>n.address?.toLowerCase()===t.address.toLowerCase());return o?o.requiredAssets:null}i(lm,"getRequiredBalanceOfWallet");function Qt(t){let e;return t<=-3&&t>-10?e="low":t<=-10&&(e="high"),e}i(Qt,"getPriceImpactLevel");function gi(t,e,o){let n=t.steps[0],r=t.steps[t.steps.length-1],a=RT(t.steps),s={blockchain:r.toBlockchain,symbol:r.toSymbol,address:r.toSymbolAddress},l=ko(a?a.toBlockchain:n.fromBlockchain,e),p=ko(r.toBlockchain,e),c=o(a?{blockchain:l?.name??"",symbol:a.toSymbol,address:a.toSymbolAddress}:{blockchain:l?.name??"",symbol:n.fromSymbol,address:n.fromSymbolAddress}),u=o(s),m=a?a.outputAmount??"":t.inputAmount;return{fromBlockchain:l,fromToken:c,toBlockchain:p,toToken:u,inputAmount:m}}i(gi,"createRetryQuote");function cn(t){let{previousQuote:e,currentQuote:o,findToken:n,userSlippage:r}=t,a=Xn(o),s=yt(o);if(o&&a&&s){let c=zt(a.toString(),s.toString());if(!!c&&dm(a,c)){let m=yi(o?.swaps,n),h=Qt(c);return{type:0,inputUsdValue:a,outputUsdValue:s,priceImpact:c,totalFee:m,warningLevel:h}}}if(e&&hm(e,o))return{type:4,usdValueChange:_(yt(o)?.minus(yt(e)??0).toString()??"0",null,2),percentageChange:_(zt(yt(e)??"1",yt(o)??"1"),null,2)};if(o&&(!a||!s))return{type:1};let l=Si(o.swaps),p=r>Vo;if(gm(t.userSlippage.toString(),l)){if(p&&parseFloat(l??"0")<r)return{type:3,slippage:r.toString()}}else return{type:2,recommendedSlippages:fm(o,r),minRequiredSlippage:l};return null}i(cn,"generateQuoteWarnings");function pm(t){return![4].includes(t.type)}i(pm,"isQuoteWarningConfirmationRequired");function zt(t,e){let o=typeof e=="string"?parseFloat(e)<=0:!e?.gt(0),n=!t||!e||o?null:vs(t.toString(),e.toString());return n&&n<0?n:null}i(zt,"getPriceImpact");var cm=i(t=>{let e=new Set,o=[];return t.forEach(n=>{e.has(n.from.chain.displayName)||(e.add(n.from.chain.displayName),o.push(n.from.chain)),e.has(n.to.chain.displayName)||(e.add(n.to.chain.displayName),o.push(n.to.chain))}),o},"getUniqueBlockchains"),hi=i((t,e)=>e.sort((o,n)=>{let r=i(c=>c.scores?.find(u=>u.preferenceType===t)?.score??0,"getScore"),a=r(o),s=r(n);if(a!==s)return s-a;let l=o.requestId.toLowerCase(),p=n.requestId.toLowerCase();return l.localeCompare(p)}),"sortQuotesBy"),um=i((t,e,o)=>{if(!e.length)return null;if(!t)return{requestAmount:o,validationStatus:null,...e[0]};let n=new Set(t.swaps.map(a=>a.swapperId)),r=e.find(a=>{let s=new Set(a.swaps.map(l=>l.swapperId));return Array.from(n).every(l=>s.has(l))});return{requestAmount:o,validationStatus:null,...r||e[0]}},"getDefaultQuote"),mm=i(t=>{let e=i((o,n)=>{let r=ks.indexOf(o.value),a=ks.indexOf(n.value);return r!==-1&&a!==-1?r-a:r!==-1?-1:a!==-1?1:0},"customSort");return t.sort(e)},"sortTags");function dm(t,e){if(!t)return!1;let o=parseInt(e.toFixed(2)||"0");return im.some(({threshold:n,minInput:r})=>o<=n&&t.gte(new Ve(r)))}i(dm,"hasHighValueLoss");function ym(t){return(t||[]).filter(e=>{let o=e.fromAmountMinValue?new Ve(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new Ve(e.fromAmountMaxValue):null;return e.fromAmountRestrictionType==="EXCLUSIVE"?o?.gte(e.fromAmount)||n?.lte(e.fromAmount):o?.gt(e.fromAmount)||n?.lt(e.fromAmount)}).length>0}i(ym,"hasLimitError");function Sm(t){let e=(t||[]).filter(l=>{let p=l.fromAmountMinValue?new Ve(l.fromAmountMinValue):null,c=l.fromAmountMaxValue?new Ve(l.fromAmountMaxValue):null;return l.fromAmountRestrictionType==="EXCLUSIVE"?p?.gte(l.fromAmount)||c?.lte(l.fromAmount):p?.gt(l.fromAmount)||c?.lt(l.fromAmount)})[0],o=e.fromAmountMinValue?new Ve(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new Ve(e.fromAmountMaxValue):null,r=e.fromAmountRestrictionType==="EXCLUSIVE",a="",s="";return!r&&o&&o.gt(e.fromAmount)?(a=vt.t({id:"Required: >= {min} {symbol}",values:{min:_(o,6,6),symbol:e.from.symbol}}),s=oe().bridgeLimitErrors.increaseAmount):r&&o&&o.gte(e.fromAmount)&&(a=vt.t({id:"Required: > {min} {symbol}",values:{min:_(o,6,6),symbol:e.from.symbol}}),s=oe().bridgeLimitErrors.increaseAmount),!r&&n&&n.lt(e.fromAmount)?(a=vt.t({id:"Required: <= {max} {symbol}",values:{max:_(n,6,6),symbol:e.from.symbol}}),s=oe().bridgeLimitErrors.decreaseAmount):r&&n&&n.lte(e.fromAmount)&&(a=vt.t({id:"Required: < {max} {symbol}",values:{max:_(n,6,6),symbol:e.from.symbol}}),s=oe().bridgeLimitErrors.decreaseAmount),{swap:e,fromAmountRangeError:a,recommendation:s}}i(Sm,"getLimitErrorMessage");function Cm(t){let{fetchMetaStatus:e,anyWalletConnected:o,fetchingQuote:n,inputAmount:r,quote:a,warning:s,error:l,needsToWarnEthOnPath:p}=t;return e!=="success"?{title:Eo().connectWallet,action:"connect-wallet",disabled:!0}:o?n||!a||l||!r||r==="0"?{title:Eo().swap,action:"confirm-swap",disabled:!0}:s?{title:Eo().swapAnyway,action:"confirm-warning",disabled:!1}:p?{title:Eo().ethWarning,action:"confirm-warning",disabled:!1}:{title:Eo().swap,action:"confirm-swap",disabled:!1}:{title:Eo().connectWallet,action:"connect-wallet",disabled:!1}}i(Cm,"getSwapButtonState");function ws(t,e,o){let n=parseFloat(e||"0");return!(t&&(!o||o.lte(me))&&e&&e!=="0"&&n!==0)}i(ws,"canComputePriceImpact");function xs(t,e){let o=me;for(let n=0;n<t.fee.length;n++){let r=t.fee[n];if(r.expenseType==="DECREASE_FROM_OUTPUT")continue;let a=e(r.asset)?.usdPrice||null;o=o.plus(new Ve(r.amount).multipliedBy(a||0))}return o}i(xs,"getUsdFeeOfStep");function yi(t,e){return t.reduce((o,n)=>o.plus(xs(n,e)),me)}i(yi,"getTotalFeeInUsd");function bs(t){let e=me;return e=e.plus(new Ve(t.amount).multipliedBy(t.price||0)),e}i(bs,"getUsdFee");function Tm(t){return t.reduce((e,o)=>e.plus(bs(o)),me)}i(Tm,"getTotalFeesInUsd");function km(t){return t.reduce((e,o)=>{for(let n of o.fee){let r=n.name,a=n.expenseType!=="DECREASE_FROM_OUTPUT"?e.payable:e.nonePayable;a[r]=[...a[r]||[],n]}return e},{payable:{},nonePayable:{}})}i(km,"getFeesGroup");function vm(t){let e=new Map;return t.forEach((o,n)=>{o.recommendedSlippage?.error&&e.set(n,o.recommendedSlippage.slippage)}),e.size>0?e:null}i(vm,"checkSlippageErrors");function fm(t,e){let o=new Map;return t?.swaps.forEach((n,r)=>{n.recommendedSlippage?.slippage&&parseFloat(n.recommendedSlippage.slippage)>e&&o.set(r,n.recommendedSlippage.slippage)}),o.size>0?o:null}i(fm,"checkSlippageWarnings");function Si(t){return t.map(o=>o.recommendedSlippage)?.map(o=>o?.slippage||"0")?.filter(o=>parseFloat(o)>0)?.sort((o,n)=>parseFloat(n)-parseFloat(o))?.find(()=>!0)||null}i(Si,"getMinRequiredSlippage");function gm(t,e){return e?parseFloat(t)>=parseFloat(e):!0}i(gm,"hasProperSlippage");function wm(t){let{fromToken:e,toToken:o,inputAmount:n,wallets:r,selectedWallets:a,disabledLiquiditySources:s,liquiditySources:l,excludeLiquiditySources:p,slippage:c,affiliateRef:u,affiliatePercent:m,affiliateWallets:h,destination:g,contractCall:d}=t,f=a?.reduce((y,k)=>(y[k.chain]=k.address,y),{}),S=[];return r?.forEach(y=>{S.push({blockchain:y.chain,addresses:[y.address]})}),{amount:n.toString(),affiliateRef:u??void 0,affiliatePercent:m??void 0,affiliateWallets:h??void 0,from:{address:e.address,blockchain:e.blockchain,symbol:e.symbol},to:{address:o.address,blockchain:o.blockchain,symbol:o.symbol},connectedWallets:S,selectedWallets:f??{},slippage:c.toString(),contractCall:d,...g&&{destination:g},...p&&{swapperGroups:s.concat(l??[]),swappersGroupsExclude:!0},...!p&&{swapperGroups:l?.filter(y=>!s.includes(y)),swappersGroupsExclude:!1}}}i(wm,"createQuoteRequestBody");function xm(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType},o),{})}i(xm,"getWalletsForNewSwap");function Xn(t){let e=t.requestAmount,o=t.swaps[0].from.usdPrice;if(!(!e||!o))return new Ve(e).multipliedBy(o)}i(Xn,"getUsdInputFrom");function yt(t){let e=t?.outputAmount||null,o=t.swaps[t.swaps.length-1].to.usdPrice;if(!(!e||!o))return new Ve(e).multipliedBy(o)}i(yt,"getUsdOutputFrom");function vs(t,e){return new Ve(e).div(new Ve(t)).minus(1).multipliedBy(tm).toNumber()}i(vs,"getPercentageChange");function hm(t,e){let o=Xn(t),n=yt(t),r=yt(e);if(!o||!n||!r)return!1;let a=vs(n.toString(),r.toString());return am.some(({threshold:s,minInput:l})=>a<=s&&o.isGreaterThanOrEqualTo(l))}i(hm,"isOutputAmountChangedExcessively");function bm(t,e,o){let n=t.validationStatus,r=To({filter:"required",quote:t});return e.sort((s,l)=>r.indexOf(s.chain)-r.indexOf(l.chain)).flatMap(s=>lm(s,n)||[]).filter(s=>!s.ok).map(s=>{let l=s.asset.symbol,p=_(new Ve(s.currentAmount.amount).shiftedBy(-s.currentAmount.decimals),8,8),c=_(new Ve(s.requiredAmount.amount).shiftedBy(-s.requiredAmount.decimals),8,8),u="";return s.reason==="FEE"&&(u=vt.t(" for network fee")),s.reason==="INPUT_ASSET"&&(u=vt.t(" for swap")),s.reason==="FEE_AND_INPUT_ASSET"&&(u=vt.t(" for input and network fee")),vt.t({id:"Needs \u2248 {requiredAmount} {symbol}{reason}, but you have {currentAmount} {symbol} in your {blockchain} wallet.",values:{requiredAmount:c,symbol:l,reason:u,currentAmount:p,blockchain:ft(s.asset.blockchain,o)}})})}i(bm,"generateBalanceWarnings");function Yn(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==Ci.NetworkChanged}i(Yn,"isNetworkStatusInWarningState");function Em(t,e,o){let n="bellow button or",r=t.extraMessage,a=t.extraMessageDetail;if(t.networkStatusExtraMessageDetail?.includes(n)&&(t.networkStatusExtraMessageDetail=t.networkStatusExtraMessageDetail.replace(n,"")),Yn(e)){r=t.networkStatusExtraMessage||"",a=t.networkStatusExtraMessageDetail||"";let c=(e?ek(t,e):null)?.walletType,u=c?o?.(c)?.name:null;switch(e?.networkStatus){case Ci.WaitingForConnectingWallet:r=u?vt.t("Connect {wallet}",{wallet:u}):r;break;case Ci.WaitingForQueue:r=r||vt.t("Waiting for other running tasks to be finished");break;case Ci.WaitingForNetworkChange:r=r||vt.t("Waiting for changing wallet network");break;default:r=r||"";break}}a=a||"",r=r||"";let l=r?.indexOf("code")!==-1&&r?.indexOf("reason")!==-1;return{shortMessage:r,detailedMessage:{content:a,long:l}}}i(Em,"getSwapMessages");function Im(t){let e=null;if(t.status==="failed"){let o=t.steps.slice().reverse().filter(n=>n.status==="success")[0];o&&(e={blockchain:o.toBlockchain,symbol:o.toSymbol,outputAmount:o.outputAmount,address:o.toSymbolAddress})}return e}i(Im,"getLastConvertedTokenInFailedSwap");function Am(t){return t.status==="failed"}i(Am,"shouldRetrySwap");function Nm(t,e,o,n,r,a){if(!n||t)return!0;let s=To({filter:"all",quote:n}),l=To({filter:"required",quote:n}),p=s.every(m=>r.some(h=>h.chain===m)),c=l.every(m=>r.some(h=>h.chain===m)),u=o&&a?Go(a,o):!1;return!e&&!p||e&&!o||e&&!!o&&(!u||!c)}i(Nm,"isConfirmSwapDisabled");function Bm(t,e){return t.blockchain===e.blockchain&&t.symbol===e.symbol&&t.address===e.address}i(Bm,"isTokensIdentical");var Ti=i((t,e)=>t?.usdPrice?new et(e||me).multipliedBy(t?.usdPrice||0):null,"getUsdValue"),O=Zo(tk()(ok(t=>({fromBlockchain:null,fromToken:null,inputAmount:"",outputAmount:null,inputUsdValue:new et(0),outputUsdValue:new et(0),toBlockchain:null,toToken:null,refetchQuote:!0,sortStrategy:"SMART",selectedQuote:null,quotes:null,error:null,warning:null,quoteWalletsConfirmed:!1,selectedWallets:[],customDestination:null,quoteWarningsConfirmed:!1,updateQuotePartialState:(e,o)=>t(n=>({...n,[e]:o})),setSelectedQuote:e=>t(o=>{let n=null,r=me,a=o.inputUsdValue;return Wn(o.inputAmount)?(e&&(n=e?.outputAmount?new et(e?.outputAmount):null,a=Xn(e)??me,r=yt(e)??me),{selectedQuote:e,...!!e&&{outputAmount:n,outputUsdValue:r,inputUsdValue:a}}):{}}),resetAlerts:()=>t(()=>({error:null,warning:null})),resetQuote:()=>t(()=>({selectedQuote:null,outputAmount:null,outputUsdValue:new et(0),quotes:null,refetchQuote:!0,error:null,warning:null})),setFromBlockchain:e=>{t(o=>o.fromBlockchain?.name===e?.name?{}:{fromBlockchain:e,inputUsdValue:new et(0),...o.fromToken&&{selectedQuote:null,fromToken:null,outputAmount:null,outputUsdValue:new et(0)}})},setFromToken:e=>t(o=>({fromToken:e.token,...e.token&&{fromBlockchain:e.meta.blockchains.find(n=>n.name===e.token.blockchain)??null},...!!o.inputAmount&&{inputUsdValue:Ti(e.token,o.inputAmount)}})),setToBlockchain:e=>{t(o=>o.toBlockchain?.name===e?.name?{}:{toBlockchain:e,...o.toToken&&{selectedQuote:null,toToken:null,outputAmount:null,outputUsdValue:new et(0)}})},setToToken:e=>t(()=>({toToken:e.token,...e.token&&{toBlockchain:e.meta.blockchains.find(o=>o.name===e.token.blockchain)??null}})),sanitizeInputAmount:e=>{let o=Wc(e);t(()=>({inputAmount:o}))},setInputAmount:e=>{let o=e;zr(e)||(o=wc(o),o=xc(o)),t(n=>({inputAmount:o,...!o&&{outputAmount:null,outputUsdValue:new et(0),selectedQuote:null},...!!n.fromToken&&{inputUsdValue:Ti(n.fromToken,o)}}))},retry:e=>{let{fromBlockchain:o,fromToken:n,toBlockchain:r,toToken:a,inputAmount:s}=e;t({fromBlockchain:o,fromToken:n,inputAmount:s,outputAmount:null,inputUsdValue:Ti(n??null,s),outputUsdValue:new et(0),toBlockchain:r,toToken:a,selectedQuote:null})},switchFromAndTo:()=>t(e=>({fromBlockchain:e.toBlockchain,fromToken:e.toToken,toBlockchain:e.fromBlockchain,toToken:e.fromToken,inputAmount:e.outputAmount?.toString()||"",inputUsdValue:e.toToken?Ti(e.toToken,e.outputAmount?.toString()||""):new et(0)})),resetFromBlockchain:()=>t(()=>({fromToken:null,fromBlockchain:null,outputUsdValue:new et(0),inputUsdValue:new et(0),inputAmount:"",outputAmount:null,selectedQuote:null})),resetToBlockchain:()=>t(()=>({toToken:null,toBlockchain:null,outputAmount:null,outputUsdValue:new et(0),selectedQuote:null})),setQuoteWalletConfirmed:e=>t({quoteWalletsConfirmed:e}),setSelectedWallets:e=>t({selectedWallets:e}),setCustomDestination:e=>t({customDestination:e}),resetQuoteWallets:()=>t({quoteWalletsConfirmed:!1,selectedWallets:[],customDestination:null}),setQuoteWarningsConfirmed:e=>t({quoteWarningsConfirmed:e})})))),Wm=O.subscribe((t,e)=>{(t.fromBlockchain!==e.fromBlockchain||t.fromToken!==e.fromToken||t.toBlockchain!==e.toBlockchain||t.toToken!==e.toToken||t.inputAmount!==e.inputAmount)&&Te.emit("quoteEvent",{type:"quoteInputUpdate",payload:{fromBlockchain:t.fromBlockchain?.name,toBlockchain:t.toBlockchain?.name,fromToken:t.fromToken?{symbol:t.fromToken.symbol,name:t.fromToken.name,address:t.fromToken.address}:void 0,toToken:t.toToken?{symbol:t.toToken.symbol,name:t.toToken.name,address:t.toToken.address}:void 0,requestAmount:t.inputAmount}}),t.selectedQuote?.requestId!==e.selectedQuote?.requestId&&Te.emit("quoteEvent",{type:"quoteOutputUpdate",payload:t.selectedQuote?{requestAmount:t.selectedQuote.requestAmount,swaps:t.selectedQuote.swaps,outputAmount:t.selectedQuote.outputAmount,resultType:t.selectedQuote.resultType,tags:t.selectedQuote.tags}:null})});function Lm(){let{setInputAmount:t,setToToken:e,setToBlockchain:o,setFromBlockchain:n,resetQuote:r,setFromToken:a,fromToken:s,toToken:l,fromBlockchain:p,toBlockchain:c}=O(),u=C().config,m=C().fetchStatus,h=C().blockchains(),{findToken:g}=C(),{setAffiliateRef:d,setAffiliatePercent:f,setAffiliateWallets:S}=C(),T=u?.from?.tokens,y=u?.from?.blockchains,k=u?.to?.tokens,v=u?.to?.blockchains,b=ki(void 0),A=ki(void 0),I=ki(void 0),E=ki(void 0);un(()=>{typeof u.amount<"u"&&t(u.amount.toString())},[u?.amount]),un(()=>{if(m==="success"){r();let x=h.find(P=>P.name===u?.from?.blockchain),w=u?.from?.token,B=w&&g(w);(x||!x&&I.current)&&n(x??null),B?a({token:B,meta:{blockchains:h}}):!B&&b.current&&a({token:null}),I.current=u?.from?.blockchain,b.current=u?.from?.token}},[u?.from?.token?.symbol,u?.from?.token?.address,u?.from?.token?.blockchain,u?.from?.blockchain,m]),un(()=>{Xa(s,T)&&a({token:null}),Ya(p,y)&&n(null)},[T,y]),un(()=>{Xa(l,k)&&a({token:null}),Ya(c,v)&&o(null)},[k,v]),un(()=>{if(m==="success"){r();let x=h.find(P=>P.name===u?.to?.blockchain),w=u?.to?.token,B=w&&g(w);(x||!x&&E.current)&&o(x??null),B?e({token:B,meta:{blockchains:h}}):!B&&A.current&&e({token:null}),E.current=u?.to?.blockchain,A.current=u?.to?.token}},[u?.to?.token?.symbol,u?.to?.token?.address,u?.to?.token?.blockchain,u?.to?.blockchain,m]),un(()=>{d(u?.affiliate?.ref??null),f(u?.affiliate?.percent??null),S(u?.affiliate?.wallets??null)},[u?.affiliate?.ref,u?.affiliate?.percent,u?.affiliate?.wallets])}i(Lm,"useSyncStoresWithConfig");import{useEffect as As,useRef as nk}from"react";import{useInRouterContext as rk,useLocation as ik,useSearchParams as ak}from"react-router-dom";function Es(t,e){let o=t.split("--");return{blockchain:e.name,address:o?.[1]||null,symbol:o[0]}}i(Es,"convertTokenSearchParamToAsset");function Is(t){if(t)return`${t.symbol}${t.address?`--${t.address}`:""}`}i(Is,"tokenToSearchParam");function Bs(){let t=ik(),[e,o]=ak(),{fromBlockchain:n,toBlockchain:r,fromToken:a,toToken:s,inputAmount:l,setFromBlockchain:p,setToBlockchain:c,setFromToken:u,setToToken:m,setInputAmount:h}=O(),g=C().fetchStatus,d=C().blockchains(),f=rk(),{updateIframe:S,updateCampaignMode:T}=C(),y=C().isInCampaignMode(),k=nk(),{findToken:v}=C(),b=i(()=>{let I={};for(let[L,ae]of e.entries())L.startsWith("utm_")&&(I[L]=ae);let E=e.get("fromAmount"),x=e.get("fromBlockchain"),w=e.get("fromToken"),B=e.get("toBlockchain"),P=e.get("toToken"),$=e.get("autoConnect"),H=e.get("clientUrl"),R=e.get("liquiditySources"),K=e.get("blockchain");return{fromAmount:E,fromBlockchain:x,fromToken:w,toBlockchain:B,toToken:P,autoConnect:$,clientUrl:H,liquiditySources:R,utmQueryParams:I,blockchain:K}},"getUrlSearchParams"),A=i(I=>{for(let E in I)I[E]||delete I[E];o(I,{replace:!0})},"updateUrlSearchParams");As(()=>{let{autoConnect:I,clientUrl:E,utmQueryParams:x,blockchain:w}=b();f&&g==="success"&&A({fromBlockchain:n?.name,fromToken:Is(a),toBlockchain:r?.name,toToken:Is(s),fromAmount:l,autoConnect:I??void 0,clientUrl:E??void 0,blockchain:w??void 0,liquiditySources:y?k.current:void 0,...x})},[t.pathname,l,n,a,r,s,y,g]),As(()=>{if(!f)return;let I=b();if(!k.current&&I.liquiditySources&&(k.current=I.liquiditySources),I.fromAmount&&h(I.fromAmount),g==="success"){let E=d.find(P=>P.name===I.fromBlockchain),x=I.fromToken&&E?v(Es(I.fromToken,E)):void 0,w=d.find(P=>P.name===I.toBlockchain),B=I.toToken&&w?v(Es(I.toToken,w)):void 0;E&&(p(E),x&&u({token:x,meta:{blockchains:d}})),w&&(c(w),B&&m({token:B,meta:{blockchains:d}}))}},[g]),As(()=>{let{clientUrl:I,liquiditySources:E}=b();S("clientUrl",I||void 0),T("liquiditySources",E?.split(",")??void 0)},[])}i(Bs,"useSyncUrlAndStore");import{i18n as hn}from"@lingui/core";import{Alert as Iv,Button as Av,darkTheme as Nv,Divider as sl,DoneIcon as Bv,styled as Wv,TextField as Lv,Typography as Mv}from"@rango-dev/ui";import Ge,{useState as Pv}from"react";import{useNavigate as _v,useSearchParams as Dv}from"react-router-dom";import{ChevronRightIcon as sk,Divider as $m,Image as lk,Typography as Fm}from"@rango-dev/ui";import wt from"react";import{darkTheme as Mm,styled as Ws}from"@rango-dev/ui";var Pm=Ws("div",{display:"flex",justifyContent:"space-between",width:"100%",height:"$40",padding:"$4 $10",borderRadius:"$sm",cursor:"pointer",alignItems:"center",backgroundColor:"$neutral300",[`.${Mm} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${Mm} &`]:{backgroundColor:"$neutral500"}},variants:{disabled:{true:{cursor:"default","&:hover":{borderColor:"$neutral300","& svg":{color:"$neutral700"}}}}}}),_m=Ws("div",{display:"flex",flexDirection:"column",width:"100%",".title_typography":{textTransform:"capitalize"}}),Dm=Ws("div",{display:"flex"});function Ls(t){let{onClick:e,value:o,title:n,hasLogo:r,placeholder:a,disabled:s}=t;return wt.createElement(_m,null,wt.createElement(Fm,{size:"large",variant:"label"},n),wt.createElement($m,{size:10}),wt.createElement(Pm,{onClick:s?void 0:e,disabled:s},wt.createElement(Dm,null,r&&wt.createElement(wt.Fragment,null,wt.createElement(lk,{src:o?.logo,size:16,useAsPlaceholder:!o?.logo,type:"circular"}),wt.createElement($m,{size:4,direction:"horizontal"})),wt.createElement(Fm,{className:"title_typography",size:"medium",variant:"label"},o?.name||a)),wt.createElement(sk,{size:12,color:"black"})))}i(Ls,"BlockchainSelectorButton");import{i18n as $s}from"@lingui/core";import{Button as mk,Divider as Qm,MessageBox as dk}from"@rango-dev/ui";import eo,{useEffect as Hm,useState as Fs}from"react";import{i18n as vi}from"@lingui/core";import{Divider as Io,ExternalLinkIcon as ck,Image as uk,Typography as dn}from"@rango-dev/ui";import ve from"react";var Om="https://blog.rango.exchange/understanding-the-risks-of-using-custom-token-contract-addresses-96022308eca4";function Um(t,e){if(e.type==="COSMOS")return"";let o=e.info?.addressUrl;return!o||!t?"":o.replace("{wallet}",t)}i(Um,"generateExplorerLink");import{Button as pk,darkTheme as mn,styled as Ms}from"@rango-dev/ui";var Ps=Ms("a",{textDecoration:"none",color:"$colors$neutral700",[`.${mn} &`]:{color:"$colors$neutral900"},"& svg":{marginLeft:"$4",color:"$colors$neutral700",[`.${mn} &`]:{color:"$colors$neutral900"}},variants:{hasHover:{true:{"&:hover":{color:"$colors$secondary550",[`.${mn} &`]:{color:"$colors$secondary500"},"& svg":{color:"$colors$secondary550",[`.${mn} &`]:{color:"$colors$secondary500"}}}},false:{}}}}),zm=Ms("div",{display:"flex",justifyContent:"center",flexDirection:"column",alignItems:"center",textAlign:"center","& ._blockchain-name, & ._coin-source":{color:"$colors$neutral600",[`.${mn} &`]:{color:"$colors$neutral800"}},"& ._coin-source-name, & ._custom-token-description":{color:"$colors$neutral700",[`.${mn} &`]:{color:"$colors$neutral900"}}}),_s=Ms(pk,{minHeight:"$40"});function Ds(t){let{open:e,onClose:o,token:n,onExit:r,onSubmitClick:a,blockchain:s}=t,l=Um(n.address,s),p=i(()=>window.open(Om,"_blank"),"onClickLearnMore");return ve.createElement(J,{open:e,dismissible:!0,onClose:o,onExit:r,container:N()},ve.createElement(zm,null,ve.createElement(uk,{src:n.image===""?Zr:n.image,size:45,type:"circular"}),ve.createElement(Io,{size:4}),ve.createElement(dn,{variant:"title",size:"medium"},n.symbol),ve.createElement(dn,{variant:"body",size:"small",className:"_blockchain-name"},s.displayName),ve.createElement(Io,{size:4}),ve.createElement(dn,{variant:"body",size:"medium"},l?ve.createElement(Ps,{hasHover:!0,href:l,target:"_blank",rel:"nofollow noreferrer"},n.address,ve.createElement(ck,{size:12,color:"gray"})):ve.createElement(Ps,null,n.address)),ve.createElement(Io,{size:4}),n.coinSource&&ve.createElement(dn,{className:"_coin-source",variant:"body",size:"xsmall"},vi.t("via")," ",ve.createElement(dn,{className:"_coin-source-name",variant:"body",size:"xsmall"},n.coinSource)),ve.createElement(Io,{size:"32"}),ve.createElement(dn,{size:"medium",variant:"body",className:"_custom-token-description"},vi.t("This token is not part of our verified token list. please verify its source and make sure to understand all associated risks before proceeding."))),ve.createElement(Io,{size:40}),ve.createElement(Io,{size:10}),ve.createElement(_s,{id:"widget-custom-token-modal-import-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:a},vi.t("Import Anyway")),ve.createElement(Io,{size:10}),ve.createElement(_s,{id:"widget-custom-token-modal-learn-more-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:p},vi.t("Learn More")))}i(Ds,"CustomTokenModal");function Zn(t){let{token:e,blockchain:o,error:n,address:r,fetchCustomToken:a,onCloseErrorModal:s,onImport:l,onExitErrorModal:p,onExitImportModal:c}=t,{setCustomToken:u}=C(),[m,h]=Fs(!1),[g,d]=Fs(!1),[f,S]=Fs(!1),T=i(()=>{o&&a?.({blockchain:o.name,tokenAddress:r})},"getCustomToken"),y=i(()=>{n?.type!=="network-error"&&s?.(),h(!1)},"closeErrorModal"),k=i(()=>{S(!0),y()},"handleErrorModalButtonClick"),v=i(()=>{f&&n?.type==="network-error"&&(S(!1),T()),p()},"handleExit"),b=i(()=>{e&&(u(e),l())},"handleSubmit");return Hm(()=>{n&&h(!0)},[n]),Hm(()=>{o&&e&&d(!0)},[o,e]),eo.createElement(eo.Fragment,null,eo.createElement(J,{open:m,dismissible:!0,onClose:y,onExit:v,container:N()},eo.createElement(dk,{title:n?.title??"",type:"error",description:n?.message||$s.t("Failed Network, Please retry.")},eo.createElement(Qm,{size:40}),eo.createElement(Qm,{size:10}),eo.createElement(mk,{id:`widget-add-custom-token-${n?.type==="network-error"?"retry":"add-another"}-btn`,variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:k},n?.type==="network-error"?$s.t("Retry"):$s.t("Add another custom token")))),o&&e&&eo.createElement(Ds,{blockchain:o,token:e,onSubmitClick:b,onClose:()=>d(!1),open:g,onExit:c}))}i(Zn,"ImportCustomToken");import{useManager as kv}from"@rango-dev/queue-manager-react";import{BottomLogo as vv,Divider as kd,Header as wv}from"@rango-dev/ui";import Ne,{useEffect as Wi,useLayoutEffect as xv,useRef as vd,useState as wd}from"react";import{useRef as fk}from"react";function Jn(){return window.self!==window.top}i(Jn,"isAppLoadedIntoIframe");function Os(){let t=fk(null),{iframe:e}=C(),o=Jn()&&e.clientUrl,n=i(s=>{o&&window.top?.postMessage(s,e.clientUrl)},"send");return{send:n,connectHeightObserver:i(s=>{t.current=new ResizeObserver(l=>{for(let p of l)n({type:"widget_height",data:{height:p.contentRect.height}})}),t.current.observe(s)},"connectHeightObserver"),disconnectHeightObserver:i(()=>{t.current&&(t.current.disconnect(),t.current=null)},"disconnectHeightObserver")}}i(Os,"useIframe");import{useNavigate as gk}from"react-router-dom";function qe(){let t=gk();return()=>t(-1)}i(qe,"useNavigateBack");import{useLayoutEffect as hk,useState as Rn}from"react";var qm=480,Gm=768,Vm=1024,Km=1200,yk=i(()=>{let[t,e]=Rn(!1),[o,n]=Rn(!1),[r,a]=Rn(!1),[s,l]=Rn(!1),[p,c]=Rn(!1),u=i(()=>{e(window.innerWidth<=qm),n(window.innerWidth>qm&&window.innerWidth<=Gm),a(window.innerWidth>Gm&&window.innerWidth<=Vm),l(window.innerWidth>Vm&&window.innerWidth<=Km),c(window.innerWidth>Km)},"handleResize");return hk(()=>(u(),window.addEventListener("resize",u),()=>window.removeEventListener("resize",u)),[]),{isMobile:t,isTablet:o,isNotebook:r,isLargeScreen:s,isExtraLargeScreen:p}},"useScreenDetect"),fn=yk;import{createTheme as Vs,darkTheme as Bk,lightTheme as Wk}from"@rango-dev/ui";import{useEffect as Lk,useState as Mk}from"react";import{theme as Ak,darkColors as Nk}from"@rango-dev/ui";import qs from"react";var wi=16,xi=255,jm=.11;function Sk(t){return t.startsWith("#")&&(t=t.slice(1)),t.length===3?`#${t.split("").reduce(function(n,r){return n+r+r},"")}`:`#${t}`}i(Sk,"expandShortHexColor");function Ck(t,e){return t.padStart(e,"0")}i(Ck,"pad");function Us(t){let e=Math.min(Math.max(Math.round(t),0),xi);return Ck(e.toString(wi),2)}i(Us,"intToHex");function Tk(t){return`#${Us(t.red)}${Us(t.green)}${Us(t.blue)}`}i(Tk,"rgbToHex");function kk(t){let e=parseInt(t.slice(1,3),wi),o=parseInt(t.slice(3,5),wi),n=parseInt(t.slice(5,7),wi);return{red:e,green:o,blue:n}}i(kk,"hexToRGB");function vk(t,e){let o=1-jm*e;return{red:t.red*o,green:t.green*o,blue:t.blue*o}}i(vk,"generateShade");function wk(t,e){let o=jm*e;return{red:t.red+(xi-t.red)*o,green:t.green+(xi-t.green)*o,blue:t.blue+(xi-t.blue)*o}}i(wk,"generateTint");function xk(t){return Xm(t,vk)}i(xk,"calculateShades");function bk(t){return Xm(t,wk)}i(bk,"calculateTints");function Xm(t,e){let o=kk(t),n=[];for(let r=1;r<9;r++)n.push(Tk(e(o,r)));return n}i(Xm,"calculateColors");function zs(t,e,o){let a=bk(t).reverse().concat(t),s=xk(t),l=a.concat(s),p={},c=l.length;for(let u=0;u<c;u++){let m=100+(o?c-1-u:u)*50;p[`${e}${m}`]=l[u]}return p}i(zs,"createTintsAndShades");function Qs(t,e,o){let n={...t};for(let r in e){let a=e[r],s=r==="neutral"&&!!o?.reverseNeutralRange;if(!["background","foreground"].includes(r)&&!Nc(r)){let p=Sk(a);Object.assign(n,zs(p,r,s))}}return{...n,...e}}i(Qs,"expandToGenerateThemeColors");var Ym=i(t=>String.fromCharCode(t+(t>25?39:97)),"toAlphabeticChar"),Ek=i(t=>{let e="",o;for(o=Math.abs(t);o>52;o=o/52|0)e=Ym(o%52)+e;return Ym(o%52)+e},"toAlphabeticName"),Ik=i((t,e)=>{let o=e.length;for(;o;)t=t*33^e.charCodeAt(--o);return t},"toPhash"),Hs=i(t=>Ek(Ik(5381,JSON.stringify(t))>>>0),"toHash");function Gs(t){let e=Ak.colors,o={...e,...Nk},n,r;if(t?.light){let s={colors:Qs(e,t.light)};n={id:`${ja}-light-${Hs(s)}`,tokens:s}}if(t?.dark){let s={colors:Qs(o,t.dark,{reverseNeutralRange:!0})};r={id:`${ja}-dark-${Hs(s)}`,tokens:s}}return{light:n,dark:r}}i(Gs,"customizedThemeTokens");function Zm(t,e){if(t.length<=1)return t.map(({element:n,key:r})=>qs.cloneElement(n,{key:r}));let o=[];return t.forEach((n,r)=>{let{element:a,key:s}=n;if(o.push(qs.cloneElement(a,{key:s})),r<t.length-1){let l=`divider-${r}`;o.push(qs.cloneElement(e,{key:l}))}}),o}i(Zm,"joinList");function Jm(){return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches}i(Jm,"doesWindowPreferDarkColorScheme");function to(t){let{colors:e,fontFamily:o=dc,borderRadius:n=ru,secondaryBorderRadius:r=iu}=t,[a,s]=Mk(Jm()?"dark":"light"),{theme:l}=C(),{dark:p,light:c}=Gs(e),u=Vs({shadows:t.shadows||{},radii:{primary:`${n}px`,secondary:`${r}px`},fonts:{widget:o}}),m=[u.className,Wk.className],h=[u.className,Bk.className];if(c){let d=Vs(c.id,c.tokens);m.push(d.className)}if(p){let d=Vs(p.id,p.tokens);h.push(d.className)}return Lk(()=>{let d=i(f=>{f.matches?s("dark"):s("light")},"switchThemeListener");return Jm()&&s("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",d),()=>{window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change",d)}},[]),{activeTheme:i(()=>{let d=m.join(" "),f=h.join(" ");return l==="auto"?a==="dark"?f:d:l==="dark"?f:d},"getActiveTheme"),mode:l==="auto"?a:l}}i(to,"useTheme");var St=i(t=>{let e=[];return t?.getAll().forEach((o,n)=>{let r=o.list.getStorage();r?.swapDetails&&e.push({id:n,swap:r?.swapDetails})}),e.sort((o,n)=>Number(n.swap.creationTime)-Number(o.swap.creationTime))},"getPendingSwaps");import{i18n as Rm}from"@lingui/core";import{Alert as Pk,Button as _k}from"@rango-dev/ui";import ed from"react";function Ks(t){return ed.createElement(Pk,{action:ed.createElement(_k,{id:"widget-active-tab-btn",onClick:t.onActivateTab,variant:"contained",size:"xxsmall",type:"warning"},Rm.t("Activate this tab")),type:"warning",variant:"alarm",title:Rm.t("Another tab is open and handles transactions.")})}i(Ks,"ActivateTabAlert");import{i18n as js}from"@lingui/core";import{Button as Dk,Divider as $k,MessageBox as Fk}from"@rango-dev/ui";import bi from"react";function Xs(t){let{open:e,onClose:o,onConfirm:n}=t;return bi.createElement(J,{open:e,dismissible:!0,onClose:o,container:N()},bi.createElement(Fk,{title:js.t("Activate current tab"),type:"warning",description:js.t("Currently, some transactions are running and being handled by other browser tab. If you activate this tab, all transactions that are already in the transaction sign step will expire.")},bi.createElement($k,{size:20}),bi.createElement(Dk,{id:"widget-modal-confirm-activate-tab-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:n},js.t("Confirm"))))}i(Xs,"ActivateTabModal");import{ChevronLeftIcon as zk}from"@rango-dev/ui";import ld from"react";import{css as Ok,darkTheme as td,IconButton as Uk,styled as Ao}from"@rango-dev/ui";var Lt=Ao(Uk,{width:"$24",position:"relative",padding:"0",overflow:"unset","&:hover":{backgroundColor:"$secondary100",[`.${td} &`]:{backgroundColor:"$neutral"}}}),od=Ao("div",{position:"absolute",background:"$secondary500",[`.${td} &`]:{$$color:"$colors$secondary250"},width:"$6",height:"$6",borderRadius:"$lg",right:"$4",border:"1px solid $surface100"}),oo=Ao("div",{display:"flex",justifyContent:"flex-end",minWidth:"$40",button:{padding:0}}),nd=Ao("div",{position:"absolute",width:"14px",height:"14px",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"7px",top:"$0",right:"$0",variants:{isSever:{true:{backgroundColor:"$error500"},false:{backgroundColor:"$secondary500"}}}}),rd=Ao("div",{padding:"$2",variants:{isRefetched:{true:{transform:"rotate(360deg)",transition:"transform 1s ease-in-out"}}}}),id=Ao("div",{position:"absolute",right:"$4",top:"$4",backgroundColor:"$background",borderRadius:"100%"}),ad=Ok({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center"}),sd=Ao("div",{borderRadius:"100%",border:"1.5px transparent solid","&:not(:first-child)":{marginLeft:"-$6"},img:{borderRadius:"100%"}});function Ys(t){return ld.createElement(Lt,{id:"widget-header-back-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},ld.createElement(zk,{color:"black",size:16}))}i(Ys,"BackButton");import{i18n as Qk}from"@lingui/core";import{Button as Hk,Typography as qk}from"@rango-dev/ui";import Zs from"react";function Js(t){return Zs.createElement(oo,null,Zs.createElement(Hk,{id:"widget-header-cancel-btn",variant:"ghost",onClick:t.onClick,size:"xsmall"},Zs.createElement(qk,{variant:"label",size:"medium",color:"error500"},Qk.t("Cancel"))))}i(Js,"CancelButton");import{i18n as Gk}from"@lingui/core";import{Image as Vk,Tooltip as Kk,WalletIcon as jk}from"@rango-dev/ui";import No from"react";function Rs(t){let{list:e}=Tt(),o=e.filter(r=>r.state==="connected"),n=o.length?No.createElement("div",{className:ad()},o.map(r=>No.createElement(sd,{key:r.title},No.createElement(Vk,{src:r.image,size:14})))):Gk.t("Connect Wallet");return No.createElement(Kk,{container:t.container,side:"bottom",content:n},No.createElement(Lt,{id:"widget-header-wallet-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},t.isConnected&&No.createElement(od,null),No.createElement(jk,{size:18,color:"black"})))}i(Rs,"WalletButton");import{i18n as Ii}from"@lingui/core";import{NotificationsIcon as cv,Popover as uv,SettingsIcon as mv,Tooltip as Ai,TransactionIcon as dv}from"@rango-dev/ui";import Pe from"react";import{Notifications as Jk}from"@rango-dev/ui";import Rk from"react";import{useNavigate as ev}from"react-router-dom";import{create as Xk}from"zustand";import{persist as Yk,subscribeWithSelector as Zk}from"zustand/middleware";var Ae=Zo(Xk()(Yk(Zk((t,e)=>({isSynced:!1,notifications:[],setNotification:(o,n)=>{let r=n.steps[0],a=n.steps[n.steps.length-1],s={event:o,creationTime:Date.now(),requestId:n.requestId,route:{creationTime:parseInt(n.creationTime),from:{blockchain:r.fromBlockchain,address:r.fromSymbolAddress,symbol:r.fromSymbol},to:{blockchain:a.toBlockchain,address:a.toSymbolAddress,symbol:a.toSymbol}}},l=e().notifications.filter(p=>p.requestId!==n.requestId);t(()=>({notifications:[...l,s]}))},removeNotification:o=>{t(n=>({notifications:n.notifications.filter(r=>r.requestId!==o)}))},getNotifications:()=>{let{isSynced:o,notifications:n}=e();return o?n.sort((r,a)=>r.route.creationTime&&!a.route.creationTime?-1:!r.route.creationTime&&a.route.creationTime?1:!r.route.creationTime&&!a.route.creationTime?a.creationTime-r.creationTime:a.route.creationTime-r.route.creationTime):[]},syncNotifications:o=>{let{isSynced:n,notifications:r}=e();if(!n){let a=[];r.forEach(s=>{o.some(p=>p.swap.requestId===s.requestId)&&a.push(s)}),t({isSynced:!0,notifications:a})}},clearNotifications:()=>t({notifications:[]})})),{name:"notification",skipHydration:!0,partialize:({isSynced:t,...e})=>e,version:1,migrate:(t,e)=>{if(e===0){let o=t.notifications;t.notifications=o.filter(n=>!n.read).map(({read:n,...r})=>r)}return t}})));function el(){let t=ev(),{getNotifications:e,clearNotifications:o}=Ae(),n=e(),r=C().blockchains(),{findToken:a}=C();return Rk.createElement(Jk,{list:n,getBlockchainImage:l=>Zc(l,r),getTokenImage:l=>a(l)?.image,onClickItem:i(l=>{t(`${F.swaps}/${l}`)},"onClickItem"),onClearAll:o})}i(el,"NotificationContent");import{useManager as tv}from"@rango-dev/queue-manager-react";import{InProgressIcon as ov}from"@rango-dev/ui";import pd from"react";var nv=i(()=>{let{manager:t}=tv();return St(t).map(({swap:o})=>o).find(o=>o.status==="running")?pd.createElement(id,null,pd.createElement(ov,{color:"info",size:6})):null},"InProgressTransactionBadge"),cd=nv;import{EventSeverity as rv}from"@rango-dev/queue-manager-rango-preset";import{Typography as iv}from"@rango-dev/ui";import ud from"react";function md(){let{getNotifications:t}=Ae(),e=t(),o=e.length,n=!!e.find(r=>r.event.messageSeverity===rv.WARNING);return o?ud.createElement(nd,{isSever:n},ud.createElement(iv,{variant:"body",size:"xsmall",color:"$background"},o)):null}i(md,"NotificationsBadge");import{RefreshProgressButton as av}from"@rango-dev/ui";import tl,{useEffect as sv,useState as dd}from"react";var lv=1e3,fd=60,pv=100;function Ei({onClick:t}){let[e,o]=dd(0),[n,r]=dd(!1),a=i(p=>{document.hidden&&p&&s(p)},"handleVisibilityChange");sv(()=>{let p;return t?p=window.setInterval(()=>{o(c=>c+1),e===fd&&l()},lv):s(p),document.addEventListener("visibilitychange",()=>a(p)),()=>{document.removeEventListener("visibilitychange",()=>a(p)),p&&clearInterval(p)}},[e,t]);let s=i(p=>{p&&clearInterval(p),o(0)},"clearTimeout"),l=i(()=>{t?.(),o(0),r(!0)},"handleRefreshClick");return tl.createElement(Lt,{id:"widget-header-refresh-icon-btn",variant:"ghost",size:"small",style:{paddingTop:0,paddingBottom:0},onClick:l,disabled:!t},tl.createElement(rd,{onTransitionEnd:()=>r(!1),isRefetched:n},tl.createElement(av,{size:22,color:t?"black":"gray",progress:e/fd*pv})))}i(Ei,"RefreshButton");function Bo(t){let{onClickRefresh:e,onClickHistory:o,onClickSettings:n,hidden:r=[],container:a}=t,{config:{features:s}}=C(),l=Re("notification",s)||r.includes("notifications");return Pe.createElement(Pe.Fragment,null,!r.includes("refresh")&&Pe.createElement(Ai,{container:a||N(),side:"top",content:Ii.t("Refresh")},Pe.createElement(Ei,{onClick:e})),!l&&Pe.createElement(uv,{align:"end",alignOffset:-88,sideOffset:15,collisionPadding:{right:20,left:20},container:N(),content:Pe.createElement(el,null)},Pe.createElement("div",null,Pe.createElement(Ai,{container:N(),side:"top",content:Ii.t("Notifications")},Pe.createElement(Lt,{id:"widget-header-notification-icon-btn",size:"small",variant:"ghost"},Pe.createElement(cv,{size:18,color:"black"}),Pe.createElement(md,null))))),!r.includes("settings")&&Pe.createElement(Ai,{container:N(),side:"top",content:Ii.t("Settings")},Pe.createElement(Lt,{id:"widget-header-setting-icon-btn",size:"small",variant:"ghost",onClick:n},Pe.createElement(mv,{size:18,color:"black"}))),!r.includes("history")&&Pe.createElement(Ai,{container:N(),side:"top",content:Ii.t("History")},Pe.createElement(Lt,{id:"widget-header-history-icon-btn",size:"small",variant:"ghost",onClick:o},Pe.createElement(dv,{size:18,color:"black"}),Pe.createElement(cd,null))))}i(Bo,"HeaderButtons");import{i18n as ol}from"@lingui/core";import{Divider as hd,MessageBox as hv,RefreshIcon as yv}from"@rango-dev/ui";import gn from"react";import{Button as fv,styled as gv}from"@rango-dev/ui";var gd=gv(fv,{"& span":{display:"flex",justifyContent:"center",alignItems:"center"}});function nl(t){let{open:e,onClose:o}=t;return gn.createElement(J,{open:e,dismissible:!0,onClose:o,container:N()},gn.createElement(hv,{title:ol.t("Something went wrong"),type:"error",description:ol.t("Something went wrong. Please refresh the app.")},gn.createElement(hd,{size:30}),gn.createElement(gd,{variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:()=>location.reload()},gn.createElement(yv,{size:20,color:"primary"}),gn.createElement(hd,{size:4,direction:"horizontal"}),ol.t("Refresh"))))}i(nl,"RefreshModal");function rl(t){let e=t.target;if(e){let o=e.scrollTop,n=N();o>1?n.classList.add("rng-scrolled"):n.classList.remove("rng-scrolled")}}i(rl,"onScrollContentAttachStatusToContainer");import{css as Cv,styled as Ni}from"@rango-dev/ui";var Bi=Cv({borderRadius:"$primary",display:"flex",flexDirection:"column",overflow:"hidden",boxShadow:"$mainContainer"}),yd=Ni("div",{position:"relative",width:"100vw",minWidth:"300px",maxWidth:"390px",backgroundColor:"$background",variants:{height:{auto:{height:"auto",maxHeight:700},fixed:{minHeight:425,maxHeight:700,height:700}},showBanner:{true:{overflow:"visible"}}}}),Sd=Ni("div",{position:"relative",overflow:"hidden",flexGrow:1,display:"flex",flexDirection:"column",padding:0,overflowY:"auto"}),Cd=Ni("div",{padding:"0 $20 $10","& .footer__alert":{paddingTop:"$10"},"& .footer__logo":{opacity:0,transition:"opacity 1s ease-in-out","&.logo__show":{opacity:1},"&.logo__hidden":{visibility:"hidden"}}}),Td=Ni("div",{width:"100%",position:"absolute",bottom:"-$10",transform:"translateY(100%)",overflow:"hidden"});function ie(t){let{connectHeightObserver:e,disconnectHeightObserver:o}=Os(),{children:n,header:r,footer:a,height:s="fixed"}=t,{fetchStatus:l,connectedWallets:p,config:{__UNSTABLE_OR_INTERNAL__:c}}=C(),[u,m]=wd(!1),{config:{features:h,theme:g}}=C(),{watermark:d,setShowCompactTokenSelector:f}=te(),S=d==="FULL",{activeTheme:T}=to(g||{}),[y,k]=wd(!1),v=Re("connectWalletButton",h),{isActiveTab:b,tabManagerInitiated:A,showActivateTabModal:I,setShowActivateTabModal:E,activateCurrentTab:x}=te(),w=qe(),{manager:B}=kv(),{isTablet:P,isMobile:$}=fn(),R=St(B).map(({swap:Z})=>Z).some(Z=>Z.status==="running"),K=i(()=>x(wo.forceClaim,R),"onActivateTab"),L=i(()=>{r.onWallet?.()},"onConnectWallet"),ae=typeof r.hasBackButton>"u"||r.hasBackButton,re=vd(null),Q=vd(null);return Wi(()=>{let Z=(c?.swapBoxBanner?.routes?.length??0)===0,le=!!c?.swapBoxBanner?.routes?.some(ue=>location.pathname.endsWith(ue));k(!!c?.swapBoxBanner&&(Z||le))},[c?.swapBoxBanner?.routes?.toString(),location.pathname]),Wi(()=>(Jn()&&Q.current&&e(Q.current),()=>{o()}),[]),Wi(()=>(re.current?.addEventListener("scroll",rl),()=>{re.current?.removeEventListener("scroll",rl)}),[]),Wi(()=>{m(l==="failed")},[l]),xv(()=>{let Z=s==="auto"||!Q.current||Jn(),le=$||P,ue=i(()=>{Z||(le?Q.current.style.height=`${window.innerHeight-Q.current.offsetTop}px`:Q.current.style.height=`${700}px`,f(parseFloat(Q.current.style.height)<640))},"handler");return ue(),window.addEventListener("resize",ue),()=>window.removeEventListener("resize",ue)},[s,$,P]),Ne.createElement(yd,{height:s,id:Qe.SWAP_BOX_ID,className:`${T()} ${Bi()}`,ref:Q,showBanner:y},Ne.createElement(wv,{prefix:ae?Ne.createElement(Ys,{onClick:()=>{w(),r.onBack?.()}}):null,title:r.title,suffix:Ne.createElement(Ne.Fragment,null,r.suffix,r.onWallet&&!v&&Ne.createElement(Rs,{container:N(),onClick:L,isConnected:!!p?.length}),r.onCancel&&Ne.createElement(Js,{onClick:r.onCancel}))}),Ne.createElement(Sd,{ref:re},n),Ne.createElement(Xs,{open:I,onClose:()=>E(!1),onConfirm:K}),Ne.createElement(Cd,null,Ne.createElement("div",{className:"footer__content"},A&&!b&&Ne.createElement("div",{className:"footer__alert"},Ne.createElement(Ks,{onActivateTab:K}),Ne.createElement(kd,{size:10})),a),Ne.createElement(kd,{size:12}),Ne.createElement("div",{className:`footer__logo ${S?"logo__show":"logo__hidden"}`},Ne.createElement(vv,null))),y&&Ne.createElement(Td,null,c?.swapBoxBanner?.element),Ne.createElement(nl,{open:u,onClose:()=>m(!1)}))}i(ie,"Layout");import{styled as bv}from"@rango-dev/ui";var xd="$20 $20 $10 $20",il=bv("div",{padding:xd,overflowY:"auto",flexGrow:1});import{styled as Ev}from"@rango-dev/ui";var pe=Ev("div",{display:"flex",flexDirection:"column",padding:"20px 20px 10px",flexGrow:1,variants:{view:{true:{flexGrow:1,overflow:"hidden"}},compact:{true:{padding:0}}}});import{i18n as no}from"@lingui/core";import{useState as al}from"react";function bd(){let[t,e]=al(!1),[o,n]=al(null),[r,a]=al(null),{findToken:s}=C(),l=C().customTokens(),p=i(()=>{a(null),e(!1),n(null)},"resetState");function c(m,h){switch(m){case"duplicated":return{type:m,title:no.t("Duplicate Token"),message:no.t("The address you entered is duplicate, please enter a new address.")};case"token-exist":return{type:m,title:no.t("Token Already Exists"),message:no.t("There's no need to add this token again because it already exists and is supported by us.")};case"not-found":return{type:m,title:no.t("Token Not Found"),message:no.t({id:"Sorry, no token was found on {blockchain} chain with the provided address. please make sure you have entered the right token address.",values:{blockchain:h}})};case"network-error":return{type:m,title:no.t("Network error"),message:no.t("An error occurred while retrieving token data.")}}}return i(c,"produceErrorMessage"),{fetchCustomToken:i(async({blockchain:m,tokenAddress:h})=>{e(!0);try{if(l.some(T=>T.address?.toLowerCase()===h.toLowerCase())){let T=c("duplicated");n(T);return}let d=await at().getCustomToken({blockchain:m,address:h});if(!d||!d.token||d.error){let T=c("not-found",m);n(T);return}let f=d.token;if(s({blockchain:f.blockchain,address:f.address,symbol:f.symbol})){let T=c("token-exist");n(T);return}return a({...f,warning:!0})}catch(g){if(g.code==="ERR_BAD_REQUEST"){let d=c("not-found",m);n(d);return}n(c("network-error"));return}finally{e(!1)}},"fetchCustomToken"),token:r,loading:t,error:o,resetState:p}}i(bd,"useFetchCustomToken");var $v=Wv("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1,"& ._text-field":{padding:"$4 $10",backgroundColor:"$neutral300",[`.${Nv} &`]:{backgroundColor:"$neutral400"},borderRadius:"$sm",height:"$40"}});function Ed(){let t=_v(),[e]=Dv(),o=qe(),n=C().blockchains(),r=e.get("blockchain")||"",a=ko(r,n),[s,l]=Pv(""),{fetchCustomToken:p,token:c,loading:u,error:m,resetState:h}=bd(),g=!!a&&Go(a,s),d=!a||!s||!g,f=i(()=>{a&&p({blockchain:r,tokenAddress:s})},"getCustomToken");return Ge.createElement(ie,{header:{title:hn.t("Add Custom Token")}},Ge.createElement(pe,null,Ge.createElement($v,null,Ge.createElement("div",null,Ge.createElement(Ls,{onClick:()=>t(F.blockchains,{replace:!0}),hasLogo:!!a?.logo,value:a?{name:a.displayName,logo:a.logo}:void 0,title:hn.t("Select chain"),placeholder:hn.t("Select chain")}),Ge.createElement(sl,{size:"24"}),Ge.createElement(Mv,{size:"large",variant:"label"},hn.t("Enter Address")),Ge.createElement(sl,{size:10}),Ge.createElement(Lv,{fullWidth:!0,disabled:!a,variant:"contained",placeholder:hn.t("Enter token address"),size:"large",value:s,suffix:!!s&&g&&Ge.createElement(Bv,{color:"success",size:12}),onChange:S=>l(S.target.value)}),!g&&!!s&&Ge.createElement(Ge.Fragment,null,Ge.createElement(sl,{size:4}),Ge.createElement(Iv,{type:"error",variant:"alarm",title:"Invalid Address"}))),Ge.createElement(Av,{id:"widget-add-custom-token-import-btn",disabled:d,type:"primary",variant:"contained",loading:u,size:"large",onClick:f},hn.t("Import"))),Ge.createElement(Zn,{token:c,blockchain:a??void 0,address:s,error:m??void 0,fetchCustomToken:p,onCloseErrorModal:()=>{m?.type!=="network-error"&&l("")},onImport:o,onExitErrorModal:h,onExitImportModal:h})))}i(Ed,"AddCustomTokenPage");import{i18n as Fl}from"@lingui/core";import{useManager as kx}from"@rango-dev/queue-manager-react";import{Alert as vx,Button as wx,css as Ul,Divider as Ol,IconButton as hg,styled as xx,Typography as bx,WalletIcon as Ex}from"@rango-dev/ui";import De,{useEffect as na,useLayoutEffect as Ix,useRef as Ax,useState as dr}from"react";import{useNavigate as Nx}from"react-router-dom";import{i18n as Wo}from"@lingui/core";import{Alert as pw,BalanceErrors as cw,Button as Jd,ChevronLeftIcon as uw,Divider as gl,MessageBox as mw,Typography as hl}from"@rango-dev/ui";import ne,{useCallback as dw,useEffect as Rd,useMemo as fw,useState as Cn}from"react";import{useNavigate as gw}from"react-router-dom";import{i18n as ul}from"@lingui/core";import{Alert as Qv,ChevronDownIcon as Hv,CloseIcon as qv,Divider as Md,IconButton as Pd,PasteIcon as Gv,Typography as Vv,WalletIcon as Kv}from"@rango-dev/ui";import _e,{useEffect as jv,useRef as Xv}from"react";import _i,{useRef as Uv}from"react";import*as yn from"@radix-ui/react-collapsible";import{keyframes as Id,styled as Li}from"@rango-dev/ui";var ll=300,Fv=Id({from:{height:0},to:{height:"var(--radix-collapsible-content-height)"}}),Ov=Id({from:{height:"var(--radix-collapsible-content-height)"},to:{height:0}}),Ad=Li(yn.Root,{borderRadius:"$sm",overflow:"hidden",variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary500",outlineStyle:"solid"}}}}),pl=Li(yn.Trigger,{padding:"$0",border:"none",outline:"none",width:"100%",backgroundColor:"transparent",fontFamily:"inherit",cursor:"pointer"}),Mi=Li(yn.Content,{overflow:"hidden",variants:{open:{true:{animation:`${Fv} ${ll}ms ease-out`},false:{animation:`${Ov} ${ll}ms ease-out`}}}}),Pi=Li("div",{transition:`all ${ll}ms ease`,display:"flex",alignItems:"center",variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}});function Di(t){let{open:e,hasSelected:o,onOpenChange:n,children:r,onClickTrigger:a,trigger:s,triggerAnchor:l}=t,p=Uv(null);return _i.createElement(Ad,{ref:p,className:"collapsible_root",selected:o&&e,open:e,onOpenChange:n},l==="top"&&_i.createElement(pl,{className:"collapsible_trigger",onClick:a},s),_i.createElement(Mi,{className:"collapsible_content",open:e},r),l==="bottom"&&_i.createElement(pl,{className:"collapsible_trigger",onClick:a},s))}i(Di,"CustomCollapsible");import{darkTheme as Nd,styled as cl,TextField as zv}from"@rango-dev/ui";var Bd=cl("div",{padding:"$10 $0","& .button__content":{display:"flex",alignItems:"center"},"& .alarms":{paddingTop:"$5"},"& .collapsible_content":{backgroundColor:"$neutral100"},"& .collapsible_root":{backgroundColor:"$neutral100"}}),Wd=cl(zv,{backgroundColor:"$neutral100",padding:"$15"}),Ld=cl("div",{width:"100%",borderRadius:"$sm",display:"flex",padding:"$15",justifyContent:"space-between",alignItems:"center",$$color:"$colors$neutral100",[`.${Nd} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomRightRadius:"0",borderBottomLeftRadius:"0","&:focus-visible":{$$background:"$colors$secondary100",[`.${Nd} &`]:{$$background:"$colors$info700"},backgroundColor:"$$background",outline:0}});function _d(t){let{blockchain:e,handleOpenChange:o,open:n}=t,{customDestination:r,setCustomDestination:a}=O(),{config:s}=C(),l=C().blockchains(),p=jr(e.name,l),c=Xv(null),u=s?.defaultCustomDestinations?.[e.name],m=navigator?.userAgent.includes("Firefox"),g=n&&!!r&&e&&!Go(e,r),d=i(()=>{a("")},"handleClear"),f=i(async T=>{if(T.preventDefault(),navigator.clipboard!==void 0){let y=await navigator.clipboard.readText();a(y),c?.current?.focus()}},"handlePaste"),S=i(()=>r?_e.createElement(Pd,{id:"widget-custom-destination-close-icon-btn",onClick:d,variant:"ghost"},_e.createElement(qv,{size:12,color:"gray"})):m?null:_e.createElement(Pd,{id:"widget-custom-destination-paste-icon-btn",onClick:f,variant:"ghost"},_e.createElement(Gv,{size:16})),"renderSuffix");return jv(()=>{!!u&&r===null&&(a(u),o(!0))},[u]),_e.createElement(Bd,null,_e.createElement(Di,{onOpenChange:o,hasSelected:!0,open:n,triggerAnchor:"top",trigger:_e.createElement(Ld,null,_e.createElement("div",{className:"button__content"},_e.createElement(Kv,{size:18,color:"info"}),_e.createElement(Md,{size:4,direction:"horizontal"}),_e.createElement(Vv,{variant:"label",size:"medium",color:n?"$neutral600":void 0},ul.t("Send to a different address"))),_e.createElement(Pi,{orientation:n?"up":"down"},_e.createElement(Hv,{size:10,color:"secondary"}))),onClickTrigger:()=>o(!n)},_e.createElement(Wd,{ref:c,style:{padding:0,paddingRight:r?"8px":"5px"},autoFocus:!r,placeholder:ul.t("Enter {blockchainName} address",{blockchainName:p}),value:r||"",suffix:S(),onChange:T=>{let y=T.target.value;a(y)}})),g&&_e.createElement(_e.Fragment,null,_e.createElement(Md,{size:4}),_e.createElement(Qv,{variant:"alarm",type:"error",title:ul.t({values:{destination:r},id:"Address {destination} doesn't match the blockchain address pattern."})})))}i(_d,"CustomDestination");import{css as Yv,IconButton as Zv,SelectableWalletButton as Jv,styled as ro}from"@rango-dev/ui";var Dd=ro("div",{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}),$d=ro("div",{display:"flex",justifyContent:"space-evenly",alignItems:"center",columnGap:"$5",rowGap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),Fd=ro(Jv,{justifyContent:"center"}),Od=ro("div",{padding:"$20 $20 $15 $20",display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:"$neutral200",position:"relative",width:"100%"}),Ud=ro(Zv,{position:"absolute",left:"$20"}),zd=ro("div",{paddingTop:"$20"}),Qd=Yv({display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),Hd=ro("div",{display:"flex"}),qd=ro("div",{overflow:"visible",width:"100%"});import{i18n as dl}from"@lingui/core";import{warn as nw}from"@rango-dev/logging-core";import{Divider as rw,makeInfo as iw,SelectableWallet as aw,Typography as Yd,WalletState as $i}from"@rango-dev/ui";import tt,{useEffect as Zd,useState as or}from"react";import{Image as tw,MessageBox as ow}from"@rango-dev/ui";import tr from"react";import{keyframes as Rv,styled as ml}from"@rango-dev/ui";var Gd=ml("div",{position:"relative"}),ew=Rv({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),Vd=ml("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${ew} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),Kd=ml("div",{"& img":{borderRadius:"50%"}});import{i18n as Sn}from"@lingui/core";function jd(t,e){switch(t){case"in-progress":return{type:"loading",title:Sn.t({id:"Add {blockchainDisplayName} Chain",values:{blockchainDisplayName:e}}),description:Sn.t({id:"Please approve the experimental chain pop-up in your wallet.",values:{blockchainDisplayName:e}})};case"completed":return{type:"success",title:Sn.t({id:"{blockchainDisplayName} Chain Added",values:{blockchainDisplayName:e}}),description:Sn.t({id:"The {blockchainDisplayName} chain has been successfully added to your wallet.",values:{blockchainDisplayName:e}})};case"rejected":return{type:"error",title:Sn.t("Request Rejected"),description:Sn.t({id:"You've rejected adding {blockchainDisplayName} chain to your wallet.",values:{blockchainDisplayName:e}})};default:throw new Error(`Showing information about an experimentation chain status needs to be defined first. status: ${t}`)}}i(jd,"generateMessageByStatus");function Xd(t){let{status:e,displayName:o,image:n}=t,r=jd(e,o),a=e=="in-progress";return tr.createElement(ow,{type:r.type,title:r.title,description:r.description,icon:a?tr.createElement(Gd,null,tr.createElement(Kd,null,tr.createElement(tw,{src:n,size:45})),tr.createElement(Vd,null)):void 0})}i(Xd,"ExperimentalChainStatus");var sw=7,lw=3e3;function fl(t){let{chain:e,quoteChains:o,isSelected:n,selectWallet:r,limit:a,onShowMore:s}=t,l=te.use.isActiveTab(),{blockchains:p,connectedWallets:c}=C(),[u,m]=or(),[h,g]=or(null),[d,f]=or(!1),[S,T]=or(null),{suggestAndConnect:y}=Fi(),{list:k}=Tt({chain:e}),[v,b]=or(k),A=k.length,I=a&&A-a>0,E=i(async w=>{f(!1),T("in-progress");try{await y(w.walletType,w.chain),T("completed")}catch{T("rejected")}},"addExperimentalChain");Zd(()=>{b(w=>{let B=k.findIndex(P=>n(P.type,e));return I&&B>1?[k[B]].concat(k.filter((P,$)=>$!==B)):w.map(P=>k.find($=>$.type===P.type)??P)})},[JSON.stringify(k)]);let x=document.getElementById(Qe.SWAP_BOX_ID);return Zd(()=>{let w=null;return(S==="completed"||S==="rejected")&&(w=setTimeout(()=>T(null),lw)),()=>{w&&clearTimeout(w)}},[S]),tt.createElement(tt.Fragment,null,v.slice(0,a).map(w=>{let B=$c({connectedWallets:c,walletType:w.type,chain:e}),P=w.state===$i.CONNECTED,$=B?Qo(B,sw):"",H=(P&&w.isHub||!!w.needsNamespace)&&!$,R=Gr(p(),e),K=!c.find(ue=>ue.walletType===w.type&&ue.chain===e),L=R&&K&&w.state===$i.CONNECTED,ae=i(async()=>{w.state===$i.DISCONNECTED||H?m(w):L?(g({walletType:w.type,chain:e,address:B??""}),f(!0)):r({walletType:w.type,chain:e,address:B??""})},"onSelectableWalletClick"),re=iw(w.state),Q=i(()=>L?dl.t({id:"Add {chain} chain",values:{chain:e}}):H?dl.t("Chain not connected"):$||re.description,"getWalletDescription"),Z=i(()=>w.state===$i.CONNECTED?H?"neutral600":"neutral700":re.color,"getWalletDescriptionColor"),le=h?.chain?jr(h.chain,p()):void 0;return tt.createElement(tt.Fragment,{key:`${w.title}_${le}`},!!h&&tt.createElement(J,{open:!!h&&d,container:x,onClose:()=>{g(null)}},tt.createElement(Ss,{displayName:le,onConfirm:()=>{E(h)}})),S&&tt.createElement(J,{open:!!S,onClose:T.bind(null,null),container:x},tt.createElement(Xd,{status:S,displayName:le,image:w.image}),tt.createElement(rw,{direction:"vertical",size:32})),tt.createElement(aw,{key:w.type,description:Q(),descriptionColor:Z(),onClick:ae,selected:n(w.type,e),disabled:!l,...w}))}),tt.createElement(bo,{wallet:u,options:{defaultSelectedChains:o||[e]},onClose:()=>{m(void 0)},onConnect:()=>{t.onConnect&&(u?.type?t.onConnect(u.type):nw(new Error("The selected wallet hasn't been detected after the connection process finished. It usually shouldn't happen.")))}}),I&&tt.createElement(Fd,{selected:!1,onClick:s},tt.createElement(Yd,{variant:"label",size:"medium"},dl.t("Show more wallets"),tt.createElement(Yd,{variant:"label",size:"medium",color:"$primary"},"\xA0+",A-(a??0)))))}i(fl,"WalletList");var hw=2;function ef(t){let{open:e,onClose:o,onCancel:n,onCheckBalance:r,loading:a}=t,s=gw(),l=C().blockchains(),{selectedQuote:p,setSelectedWallets:c,quoteWalletsConfirmed:u,setQuoteWalletConfirmed:m,customDestination:h,setCustomDestination:g}=O(),{config:d,connectedWallets:f,setWalletsAsSelected:S}=C(),[T,y]=Cn(""),[k,v]=Cn([]),[b,A]=Cn(""),[I,E]=Cn(!!h),x=fw(()=>To({filter:"all",quote:p}),[p]),w=To({filter:"required",quote:p}),B=l.find(W=>W.name===p?.swaps[p?.swaps.length-1].to.blockchain),P=i(W=>w.includes(W),"isWalletRequiredFor"),$=dw(()=>f.filter(W=>W.selected&&x.includes(W.chain)),[f,x]),[H,R]=Cn($()),[K,L]=Cn([]),ae=i((W,G)=>L(j=>j.concat({blockchain:W,walletType:G})),"addNextSelectedWallets"),re=k.length>0,Q=i((W,G)=>!!H.find(j=>j.walletType===W&&j.chain===G&&j.selected&&(P(G)||!P(G)&&!h)),"isSelected"),Z=i((W,G,j)=>{let ee=!1;return W.map(fe=>{if(fe.chain===G){let Ue=fe.selected;return!ee&&j?(ee=!0,Ue=!0):j||(Ue=!1),{...fe,selected:Ue}}return fe})},"updateSelectableWallets"),le=i(W=>{E(W),W?P(B?.name??"")||R(G=>Z(G,B?.name||"",!1)):(g(""),R(G=>Z(G,B?.name||"",!0)))},"handleCustomDestinationCollapsibleOpenChange"),ue=i(W=>{if(T&&y(""),Q(W.walletType,W.chain))return;let j=f.find(ee=>ee.walletType===W.walletType&&ee.chain===W.chain);j&&(n(),W.chain===B?.name&&I&&!P(B.name)&&(E(!1),g(null)),R(ee=>ee.filter(fe=>fe.chain!==W.chain).concat({...j,selected:!0})))},"onChange"),se=i(()=>{let W=H.filter(G=>G.selected);S(W),c(W),m(!0),o()},"onConfirmBalance"),Ze=i(async()=>{v([]),A("");let W=await r?.({selectedWallets:H.filter(j=>j.selected),customDestination:h}),G=W.warnings;G?.balance?.messages&&v(G.balance.messages),W.error&&A(em(W.error)),!W.error&&!G?.balance?.messages.length?se():v(G?.balance?.messages??[])},"onConfirmWallets");Rd(()=>{R(W=>{let G=[];return W.forEach(j=>{!f.some(fe=>fe.chain===j.chain&&fe.walletType===j.walletType&&fe.address===j.address)||G.push(j)}),G=G.concat(f.filter(j=>!!!G.find(fe=>fe.chain===j.chain)&&j.selected&&x.includes(j.chain))),G})},[f,x]),Rd(()=>{let W=[];K.length>0&&(K.forEach(G=>{let j=f.find(ee=>ee.chain===G.blockchain&&ee.walletType===G.walletType);j?ue(j):W.push(G)}),L(W))},[f,K]);let q=document.getElementById(Qe.SWAP_BOX_ID);return ne.createElement(J,{open:e,onClose:()=>{u||s("../",{replace:!0}),o()},dismissible:!T,container:q,...!T&&{styles:{container:{height:"100%"}},footer:ne.createElement(Hd,null,ne.createElement(Jd,{id:"widget-confirm-wallet-modal-confirm-btn",loading:a,disabled:Nm(a,I,h,p,H,B),onClick:Ze,variant:"contained",type:"primary",fullWidth:!0,size:"large"},Wo.t("Confirm")))},...T&&{styles:{container:{height:"100%",padding:"$0"}},header:ne.createElement(Od,null,ne.createElement(Ud,{id:"widget-confirm-wallet-modal-navigate-back-icon-btn",variant:"ghost",onClick:y.bind(null,"")},ne.createElement(uw,{size:16})),ne.createElement(hl,{variant:"headline",size:"small"},Wo.t({id:"Your {blockchainName} wallets",values:{blockchainName:ft(T,l)}})))},anchor:"center"},ne.createElement(J,{open:re,onClose:v.bind(null,[]),container:q},ne.createElement(mw,{title:Wo.t("Insufficient account balance"),type:"error",description:ne.createElement(cw,{messages:k??[]})},ne.createElement(Jd,{id:"widget-confirm-wallet-modal-proceed-anyway-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:se},Wo.t("Proceed anyway")))),T&&ne.createElement(zd,null,ne.createElement("div",{className:Qd()},ne.createElement(fl,{chain:T,quoteChains:x,isSelected:Q,selectWallet:ue,onShowMore:()=>y(T),onConnect:W=>{ae(T,W)}}))),!T&&ne.createElement(ne.Fragment,null,b&&ne.createElement(ne.Fragment,null,ne.createElement(pw,{variant:"alarm",type:"error",title:Wo.t(b)}),ne.createElement(gl,{size:12})),ne.createElement(qd,null,x.map((W,G)=>{let j=l.find(Je=>Je.name===W),ee=`wallet-${G}`,fe=G===x.length-1,Ue=fe&&B&&d?.customDestination!==!1;return ne.createElement("div",{key:ee},ne.createElement(Dd,null,ne.createElement(hl,{variant:"title",size:"xmedium"},Wo.t({id:"Your {blockchainName} wallets",values:{blockchainName:j?.shortName}})),ne.createElement(hl,{variant:"label",color:"$neutral700",size:"medium"},Wo.t({id:"You need to connect a {blockchainName} wallet.",values:{blockchainName:j?.shortName}}))),ne.createElement(gl,{size:24}),ne.createElement($d,null,ne.createElement(fl,{chain:W,quoteChains:x,isSelected:Q,selectWallet:ue,limit:hw,onShowMore:()=>y(j?.name??""),onConnect:Je=>{ae(W,Je)}})),!fe&&ne.createElement(gl,{size:32}),Ue&&ne.createElement(_d,{blockchain:B,open:I,handleOpenChange:le}))}))))}i(ef,"ConfirmWalletsModal");import{i18n as $w}from"@lingui/core";import{Alert as Fw,Button as Ow,Divider as Tf,InfoIcon as Uw}from"@rango-dev/ui";import Fe from"react";import{Alert as Cw,Button as Tw,Divider as Cl,NoRouteIcon as kw,RefreshIcon as vw,Typography as lf}from"@rango-dev/ui";import lt from"react";import{i18n as tf}from"@lingui/core";var yw=24,Sw=60;function of(t,e,o,n){return t?.type===1?{alert:{type:"warning",text:oe().genericServerError,action:{onClick:n,title:tf.t("Retry")}},description:""}:e.length?{alert:{type:"warning",text:oe().liquiditySourcesError.title,action:{onClick:()=>o(!0),title:tf.t("Reset")}},description:oe().liquiditySourcesError.description}:t?.type===0&&t.diagnosisMessage?{alert:{type:"error",text:t.diagnosisMessage,action:null},description:""}:{alert:null,description:oe().noResultError.description}}i(of,"makeInfo");var yl=(o=>(o[o.small=yw]="small",o[o.large=Sw]="large",o))(yl||{}),Sl=(o=>(o.small="small",o.large="medium",o))(Sl||{});import{styled as Oi}from"@rango-dev/ui";var nf=Oi("div",{display:"flex",flexDirection:"column",alignItems:"center"}),rf=Oi("div",{variants:{size:{small:{},large:{maxWidth:"316px"}}}}),af=Oi("div",{variants:{size:{small:{width:"100%"},large:{}}}}),sf=Oi("div",{padding:"$6 $0"});function nr(t){let{fetch:e,error:o,size:n="small",skipAlerts:r}=t,a=C().getDisabledLiquiditySources(),s=C().toggleAllLiquiditySources,l=C().swappers(),p=of(o,a,()=>s(l,!0),e);return r&&(p.alert=null),lt.createElement(nf,null,lt.createElement(kw,{size:yl[n],color:"gray"}),lt.createElement(Cl,{size:4}),lt.createElement(lf,{variant:"title",size:Sl[n]},oe().noResultError.title),n==="large"&<.createElement(Cl,{size:4}),!!p.description&<.createElement(rf,{size:n},lt.createElement(lf,{variant:"body",size:"small",align:"center",color:"neutral700"},p.description)),lt.createElement(Cl,{size:n==="large"?"24":"4"}),!!p.alert&<.createElement(af,{size:n},lt.createElement(Cw,{type:p.alert.type,title:p.alert.text,titleAlign:"left",action:p.alert.action&<.createElement(Tw,{size:"xsmall",id:"widget-no-result-alert-btn",type:p.alert.type,prefix:lt.createElement(sf,null,lt.createElement(vw,{size:8})),onClick:p.alert.action.onClick},p.alert.action.title),variant:"alarm"})))}i(nr,"NoResult");import{i18n as ir}from"@lingui/core";import{Button as bw,Divider as Ew,MessageBox as Iw,Typography as Aw,WarningIcon as Nw}from"@rango-dev/ui";import Ht from"react";import{Typography as df}from"@rango-dev/ui";import kl from"react";import{Button as ww,darkTheme as xw,styled as rr}from"@rango-dev/ui";var pf=rr("div",{width:"100%"}),Tl=rr("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:"$5",width:"100%"}),cf=rr("div",{display:"flex",padding:"$5 0",justifyContent:"space-between",alignItems:"center",width:"100%","._title":{$$color:"$colors$neutral600",[`.${xw} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),uf=rr("div",{padding:"$2",alignSelf:"flex-start",cursor:"pointer"}),mf=rr(ww,{"& ._text":{gap:"$5",display:"flex",alignItems:"center",justifyContent:"center"}});function ff(t){let{title:e,value:o,valueColor:n}=t;return kl.createElement(cf,null,kl.createElement(df,{size:"medium",variant:"label",className:"_title"},e),kl.createElement(df,{size:"large",variant:"label",color:n||"foreground"},`${n?"%":"$"}${o}`))}i(ff,"QuoteErrorsModalItem");function gf(t){let{open:e,onClose:o,onConfirm:n,warning:r,confirmationDisabled:a}=t,s=r.warningLevel==="high"?"error":"warning",l=[{title:ir.t("Swapping"),value:_(r.inputUsdValue,4,4)},{title:ir.t("Gas cost"),value:_(r.totalFee,2,2)},{title:ir.t("Receiving"),value:_(r.outputUsdValue,4,4)},{title:ir.t("Price impact"),value:_(r.priceImpact,2,2),valueColor:`${s}500`}];return Ht.createElement(J,{footer:Ht.createElement(bw,{id:"widget-high-value-loss-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Ht.createElement(Nw,null),fullWidth:!0,disabled:a,onClick:n},oe().highValueLossError.confirmMessage),open:e,onClose:o,container:N()},Ht.createElement(Iw,{type:s,title:oe().highValueLossError.impactTitle,description:oe().highValueLossError.description}),Ht.createElement(Tl,null,Ht.createElement(Ew,{size:"4"}),Ht.createElement(Aw,{size:"small",variant:"title"},ir.t("Details")),Ht.createElement(Tl,null,l.map((p,c)=>Ht.createElement(ff,{key:c,...p})))))}i(gf,"HighValueLossWarningModal");import{i18n as Tn}from"@lingui/core";function hf(t,e){let o={alertType:"warning",title:"",action:null,actionButtonTitle:null};if(e)return o.alertType="error",e.type===3&&(o.title=e.recommendation),e.type===4&&(o.title=Tn.t({id:"You need to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:e.minRequiredSlippage}}),o.action="change-slippage",o.actionButtonTitle=Tn.t("Increase")),o;if(t){switch(t.type){case 0:{Qt(t.priceImpact)==="high"&&(o.alertType="error"),o.action="show-info",o.title=oe().highValueLossError.title;break}case 4:{o.title=Tn.t({id:"Output amount changed by {percentageChange}% (${usdValueChange}).",values:{percentageChange:t.percentageChange,usdValueChange:t.usdValueChange}});break}case 1:{o.title=oe().unknownPriceError.title;break}case 2:{o.title=Tn.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:t.minRequiredSlippage}}),o.action="change-slippage",o.actionButtonTitle=Tn.t("Increase");break}case 3:{o.title=Tn.t("Caution, your slippage is high."),o.action="change-settings";break}default:break}return o}return null}i(hf,"makeAlerts");function yf(t,e){return e?.type===4?Number(e.minRequiredSlippage):t?.type===2?Number(t.minRequiredSlippage):null}i(yf,"getRequiredSlippage");import{i18n as kn}from"@lingui/core";import{Button as Bw,Divider as vl,MessageBox as Ww,WarningIcon as Lw}from"@rango-dev/ui";import po from"react";import{useNavigate as Mw}from"react-router-dom";function Sf(t){let{open:e,onClose:o,onConfirm:n,warning:r,confirmationDisabled:a}=t,s=Mw();return po.createElement(J,{anchor:"bottom",open:e,container:N(),onClose:o},po.createElement(Ww,{type:"warning",title:r.type===3?kn.t("High slippage"):kn.t("Low slippage"),description:r.type===3?kn.t("Caution, your slippage is high. Your trade may be front run."):kn.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:r.minRequiredSlippage}})},po.createElement(vl,{size:18}),po.createElement(vl,{size:32}),po.createElement(mf,{id:"widget-slippage-warning-modal-confirm-anyway-btn",size:"large",type:"primary",variant:"contained",fullWidth:!0,disabled:a,onClick:n},po.createElement(Lw,{color:"white",size:16}),kn.t("Swap anyway")),po.createElement(vl,{size:10}),po.createElement(Bw,{id:"widget-slippage-warning-modal-change-slippage-btn",size:"large",type:"primary",variant:"outlined",fullWidth:!0,disabled:a,onClick:()=>s("../"+F.settings)},kn.t("Change Slippage"))))}i(Sf,"SlippageWarningModal");import{Button as Pw,MessageBox as _w,WarningIcon as Dw}from"@rango-dev/ui";import Ui from"react";function Cf(t){let{open:e,onClose:o,onConfirm:n,confirmationDisabled:r}=t;return Ui.createElement(J,{footer:Ui.createElement(Pw,{id:"widget-unknown-price-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Ui.createElement(Dw,null),fullWidth:!0,disabled:r,onClick:n},oe().unknownPriceError.confirmMessage),open:e,onClose:o,container:N()},Ui.createElement(_w,{type:"warning",title:oe().unknownPriceError.impactTitle,description:oe().unknownPriceError.description}))}i(Cf,"UnknownPriceWarningModal");function ar(t){let{warning:e,error:o,couldChangeSettings:n,showWarningModal:r,confirmationDisabled:a,skipAlerts:s,refetchQuote:l,onOpenWarningModal:p,onCloseWarningModal:c,onConfirmWarningModal:u,onChangeSettings:m,onChangeSlippage:h}=t,g={confirmationDisabled:a,open:r,onClose:c,onConfirm:u},d=o?.type===0||o?.type===1,f=hf(e,o?.type===3||o?.type===4?o:null);f&&!n&&(f.action=null);let S=!!f&&!s,T=i(y=>{if(y==="change-slippage"){let k=o?.type===3||o?.type===4?o:null,v=yf(e,k);h?.(v)}else y==="change-settings"&&m()},"onclickActionButton");return Fe.createElement(Fe.Fragment,null,d&&Fe.createElement(Fe.Fragment,null,Fe.createElement(Tf,{size:10}),Fe.createElement(nr,{skipAlerts:s,error:o,fetch:l})),S&&Fe.createElement(pf,null,Fe.createElement(Tf,{size:10}),Fe.createElement(Fw,{title:f.title,type:f.alertType,variant:"alarm",...f.action==="show-info"&&{action:Fe.createElement(uf,{onClick:p},Fe.createElement(Uw,{size:12,color:"gray"}))},...(f.action==="change-settings"||f.action==="change-slippage")&&{action:Fe.createElement(Ow,{id:"widget-quote-warning-error-change-settings-btn",size:"xxsmall",type:f.alertType,onClick:()=>T(f.action)},f.actionButtonTitle||$w.t("Change"))}})),e&&Fe.createElement(Fe.Fragment,null,e.type===0&&Fe.createElement(gf,{...g,warning:e}),(e.type===3||e.type===2)&&Fe.createElement(Sf,{...g,warning:e}),e.type===1&&Fe.createElement(Cf,{...g,warning:e})))}i(ar,"QuoteWarningsAndErrors");import gx from"bignumber.js";import Ri from"react";import{i18n as Lo}from"@lingui/core";import{Alert as ox,Divider as wn,FullExpandedQuote as nx,InfoIcon as rx,NumericTooltip as jf,QuoteTag as ix,StepDetails as ax,TokenAmount as sx,Typography as xn}from"@rango-dev/ui";import Wl from"bignumber.js";import U,{useRef as lx,useState as px}from"react";import{styled as wl}from"@rango-dev/ui";var xl=wl("div",{width:"100%","& .position-top__skeleton":{paddingTop:"$10"}}),kf=wl("div",{paddingBottom:"$15",variants:{dense:{true:{paddingBottom:0}}}}),vf=wl("div",{width:"100%",display:"flex"});import*as zi from"@radix-ui/react-collapsible";import{Button as zw,css as sr,darkTheme as Be,Image as wf,styled as Ke,Typography as Qw}from"@rango-dev/ui";var Hw=300,xf=Ke(zi.Root,{display:"flex",flexDirection:"column",alignItems:"start",overflowX:"auto",overflowY:"hidden",width:"100%",borderRadius:"$xm",variants:{selected:{true:{},false:{$$color:"$colors$neutral400",[`.${Be} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${Be} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${Be} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}]}),bf=sr({padding:"$10 $15"}),Ef=Ke(zw,{backgroundColor:"transparent",border:"1px solid $secondary550",[`.${Be} &`]:{border:"1px solid $secondary"},transition:"background-color 0.3s ease","&:hover":{backgroundColor:"$secondary550",[`.${Be} &`]:{backgroundColor:"$secondary"},".allRoutesLabel":{$$color:"$colors$background",[`.${Be} &`]:{$$color:"$colors$foreground"},color:"$$color",transition:"color 0.3s ease"}}}),If=Ke("div",{borderRadius:"$xm",display:"flex",flexDirection:"column",alignItems:"start",justifyContent:"space-between",color:"$foreground",boxSizing:"border-box",position:"relative",variants:{selected:{true:{},false:{$$color:"$colors$neutral200",[`.${Be} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color"}},basic:{true:{borderTopRightRadius:"0",borderTopLeftRadius:"0"}},listItem:{true:{$$color:"$colors$neutral200",[`.${Be} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color","&:hover":{"& .quote_container":{"& button":{backgroundColor:"$neutral500",[`.${Be} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral500",[`.${Be} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral300",[`.${Be} &`]:{backgroundColor:"$neutral400"}},cursor:"pointer"},false:{}}},compoundVariants:[{listItem:!0,selected:!0,css:{outline:"1px solid $secondary"}},{listItem:!1,selected:!0,css:{$$color:"$colors$secondary100",[`.${Be} &`]:{$$color:"$colors$secondary550"},backgroundColor:"$$color","&:hover":{backgroundColor:"$$color"}}},{listItem:!0,selected:!1,css:{cursor:"pointer","&:hover":{backgroundColor:"$neutral300",[`.${Be} &`]:{backgroundColor:"$neutral400"}}}}]}),Af=sr({width:"100%",padding:"$15 $15 $10 $15"}),Nf=sr({display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",paddingBottom:"$10",position:"relative"}),vn=sr({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center",".blockchainImage":{marginLeft:"-$8"}}),Bf=sr({display:"flex",alignItems:"center",".usd-value":{$$color:"$colors$neutral600",[`.${Be} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Wf=Ke(zi.Trigger,{display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",height:"$36",padding:"$10 $15",boxSizing:"border-box",cursor:"pointer",border:"none",outline:"none",backgroundColor:"transparent",variants:{error:{true:{[`& ${wf}`]:{border:"1px $warning500 solid",borderRadius:"100%"}},false:{[`& ${wf}`]:{border:"1px transparent solid",borderRadius:"100%"}}},selected:{true:{},false:{$$color:"$colors$neutral400",[`.${Be} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${Be} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${Be} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}],".blockchains_section":{display:"none"},"@xs":{".blockchains_section":{display:"block"}}}),Lf=Ke("div",{width:"18px",height:"18px",borderRadius:"100%",display:"flex",justifyContent:"center",alignItems:"center",border:"1.5px transparent solid",img:{borderRadius:"100%"},variants:{state:{error:{borderColor:"$error500"},warning:{borderColor:"$warning500"}}}}),Mf=Ke(Mi,{width:"100%",background:"inherit"}),bl=Ke("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$2",transition:`all ${Hw}ms ease`,variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}}),aQ=Ke("div",{height:"$12",marginLeft:"$10",marginRight:"$10",borderLeft:"1px solid $foreground"}),Pf=Ke("div",{display:"flex",justifyContent:"center",margin:"0 $15",borderTop:"1px solid",$$color:"$colors$neutral300",[`.${Be} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color"}),_f=Ke("div",{width:"$16",height:"$16",justifyContent:"center",alignItems:"center",display:"flex"}),El=Ke(Qw,{overflow:"hidden",textOverflow:"ellipsis",letterSpacing:.4}),Df=Ke("div",{display:"flex",flexWrap:"wrap"}),Il=Ke("div",{width:"18px",height:"18px",borderRadius:"100%",backgroundColor:"$background",cursor:"default",display:"flex",justifyContent:"center",alignItems:"center",border:"1.5px transparent solid",variants:{state:{error:{borderColor:"$error500"},warning:{borderColor:"$warning500"}}}}),$f=Ke("div",{display:"flex"}),Qi=Ke("div",{width:"100%",borderTopWidth:"1px",borderTopStyle:"solid",borderTopColor:"$neutral",margin:"$5 0",[`.${Be} &`]:{borderTopColor:"$neutral800"}});import{i18n as Mt}from"@lingui/core";import{ChevronDownIcon as Gw,CloseIcon as Vw,Divider as Gi,IconButton as Kw,NumericTooltip as jw,QuoteCost as Xw,Typography as xt}from"@rango-dev/ui";import X,{useState as zf}from"react";import{css as qw,styled as Hi}from"@rango-dev/ui";var qi=Hi("div",{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"$5 0","&.total_payable_fee":{padding:"$12 0"}}),Al=Hi("div",{width:"100%",borderTop:"1px solid $neutral300",margin:"$10 0"}),Ff=Hi("div",{padding:"$20 0",display:"flex",flexDirection:"column","& .collapsible_trigger":{display:"flex",alignItems:"center"}}),Of=Hi("div",{padding:"$20 $20 $10",position:"relative","._icon-button":{position:"absolute",zIndex:10,top:"$16",right:"$16"}}),Uf=qw({display:"flex",flexDirection:"row",alignItems:"center",padding:"$5","&:hover":{"& ._typography, & svg":{color:"$secondary"}}});var Yw=i(t=>t.fee.isZero()?null:X.createElement(qi,null,X.createElement(xt,{variant:"label",size:"medium",color:"neutral600"},t.label),X.createElement(xt,{variant:"label",size:"medium"},"$",_(t.fee,4,4))),"NonPayableFee");function Nl(t){let[e,o]=zf(!1),[n,r]=zf(!1),{steps:a,quote:s,fee:l,time:p,feeWarning:c,timeWarning:u,showModalFee:m,fullExpandedMode:h=!1}=t,g=s?.swaps??[],d=h?Co():N(),f=km(g);return X.createElement(X.Fragment,null,X.createElement(Xw,{onClickFee:m?S=>{S.stopPropagation(),o(!e)}:void 0,fee:l,feeWarning:c,timeWarning:u,time:p,steps:a,tooltipGas:m?Mt.t("View more info"):void 0,tooltipContainer:d}),X.createElement(J,{container:d,open:e,anchor:h?"center":"bottom",styles:{container:{maxWidth:h?"484px":"unset"}},header:X.createElement(Of,{style:{textAlign:h?"left":"center"}},X.createElement(xt,{variant:"title",size:"medium"},Mt.t("Gas & Fee Explanation")),X.createElement(Kw,{id:"widget-quote-cost-details-modal-close-icon-btn",onClick:()=>o(!1),variant:"ghost"},X.createElement(Vw,{color:"gray",size:14}))),onClose:()=>{o(!1)}},X.createElement(Ff,null,X.createElement(xt,{variant:"title",size:"small"},Mt.t("Details")),X.createElement(Gi,{size:10}),Object.entries(f.payable).flatMap(([S,T])=>T.map((y,k)=>{let v=`payable-fee-${k}`,b=bs(y);return X.createElement(qi,{key:v},X.createElement(xt,{variant:"label",size:"medium",color:"neutral600"},Ts(S,Mt.t)),X.createElement(jw,{content:y.amount,container:d},X.createElement(xt,{variant:"label",size:"medium"},_(y.amount,2,2)," ",y.asset.symbol," ($",_(b,4,4),")")))})),X.createElement(qi,{className:"total_payable_fee"},X.createElement(xt,{variant:"label",size:"medium"},Mt.t("Total Payable Fee")),X.createElement(xt,{variant:"label",size:"medium"},"$",_(l,4,4))),X.createElement(Al,null),Object.keys(f.nonePayable).length&&X.createElement(Di,{triggerAnchor:"bottom",onClickTrigger:()=>r(S=>!S),trigger:X.createElement("div",{className:Uf()},X.createElement(xt,{size:"small",variant:"body",color:"neutral700"},n?Mt.t("Hide non-payable fees"):Mt.t("Show non-payable fees")),X.createElement(Gi,{size:4,direction:"horizontal"}),X.createElement(Pi,{orientation:n?"up":"down"},X.createElement(Gw,{size:12,color:"gray"}))),open:n},X.createElement(xt,{size:"small",variant:"title"},Mt.t("Description")),X.createElement(Gi,{size:4}),X.createElement(xt,{size:"small",variant:"body",color:"neutral700"},Mt.t(`The following fees are considered in the transaction output and
|
|
2
|
-
you won\u2019t need to pay extra gas for them.`)),X.createElement(Gi,{size:10}),Object.entries(f.nonePayable).map(([S,T],y)=>{let k=Tm(T),v=Ts(S,Mt.t),b=`non-payable-fee-${y}`;return X.createElement(Yw,{key:b,fee:k,label:v})}),X.createElement(Al,null)))))}i(Nl,"QuoteCostDetails");import{i18n as qf}from"@lingui/core";import{TokenAmount as Gf}from"@rango-dev/ui";import Vi from"react";import{css as Zw,styled as Jw}from"@rango-dev/ui";var Qf=Jw("div",{position:"relative",display:"flex",flexDirection:"column",width:"100%"}),Hf=Zw({height:"14px",marginLeft:"14px",position:"absolute",borderLeft:"1px solid $foreground",top:"42%"});function lr(t){let{from:e,to:o,percentageChange:n,warningLevel:r}=t;return Vi.createElement(Qf,null,Vi.createElement(Gf,{direction:"horizontal",label:qf.t("Swap input"),type:"input",tooltipContainer:N(),price:{value:e.price.value,usdValue:e.price.usdValue,realValue:e.price.realValue,realUsdValue:e.price.realUsdValue},token:{displayName:e.token.displayName,image:e.token.image},chain:{image:e.chain.image}}),Vi.createElement("div",{className:Hf()}),Vi.createElement(Gf,{direction:"horizontal",tooltipContainer:N(),label:qf.t("Estimated output"),type:"output",price:{value:o.price.value,usdValue:o.price.usdValue,realValue:o.price.realValue,realUsdValue:o.price.realUsdValue},token:{displayName:o.token.displayName,image:o.token.image},chain:{image:o.chain.image},percentageChange:n,warningLevel:r}))}i(lr,"QuoteSummary");import{i18n as Vf}from"@lingui/core";import{ChevronDownIcon as Rw,ChevronRightIcon as ex,Divider as Bl,Image as tx,Tooltip as Yi,Typography as Ki}from"@rango-dev/ui";import z from"react";var ji=4,Xi=6,pr=i(t=>{let{content:e,src:o,className:n,open:r,state:a,container:s}=t,l=s||N();return z.createElement(Yi,{container:l,side:"bottom",sideOffset:4,open:r,content:e},z.createElement(Lf,{className:n,state:a},z.createElement(tx,{src:o,size:16})))},"ImageComponent");function Kf(t){let{quoteRef:e,selected:o,setExpanded:n,steps:r,expanded:a,type:s,container:l}=t,p=l||N(),c=r.length,u=cm(r),{isTablet:m,isMobile:h}=fn();return z.createElement(Wf,{listItem:s==="list-item",ref:g=>e.current=g,selected:o,onClick:g=>{g.stopPropagation(),n(d=>!d)}},z.createElement("div",{className:vn()},z.createElement(Ki,{variant:"body",size:"xsmall"},Vf.t("Via:")),z.createElement(Bl,{direction:"horizontal",size:4}),r.map((g,d)=>{let f=`item-${d}`,S=z.createElement(bl,null,z.createElement(ex,{size:12,color:"black"}));return h||m?z.createElement(z.Fragment,{key:f},z.createElement(pr,{content:g.swapper.displayName,src:g.swapper.image??"",state:g.state,container:l}),d!==c-1&&z.createElement(z.Fragment,null,S)):z.createElement(z.Fragment,{key:f},c<=ji||c>ji&&d<ji-1?z.createElement(z.Fragment,null,z.createElement(pr,{content:g.swapper.displayName,src:g.swapper.image??"",state:g.state,container:l}),d!==c-1&&z.createElement(z.Fragment,null,S)):d===ji-1&&z.createElement(Yi,{container:p,side:"bottom",align:"end",sideOffset:4,content:z.createElement("div",{className:vn()},S,r.map((T,y)=>{let k=`image-${y}`;return y>=d&&z.createElement(z.Fragment,{key:k},z.createElement(pr,{content:T.swapper.displayName,src:T.swapper.image??"",state:T.state,open:!1}),y!==c-1&&z.createElement(z.Fragment,null,S))}))},z.createElement(Il,{state:r.find((T,y)=>y>=d&&(T.state==="error"||T.state==="warning"))?.state},z.createElement(Ki,{size:"xsmall",variant:"body"},"+",c-d))))})),z.createElement("div",{className:vn()},z.createElement("div",{className:"blockchains_section"},z.createElement("div",{className:vn()},z.createElement(Ki,{variant:"body",size:"xsmall"},Vf.t("Chains:")),z.createElement(Bl,{direction:"horizontal",size:4}),u.map((g,d)=>z.createElement(z.Fragment,{key:g.displayName},u.length<=Xi||u.length>Xi&&d<Xi-1?z.createElement(Yi,{container:p,side:"bottom",content:g.displayName,sideOffset:4},z.createElement(pr,{content:"",src:g.image??"",open:!1,className:d!==0?"blockchainImage":""})):d===Xi-1&&z.createElement(Yi,{container:p,side:"bottom",align:"end",sideOffset:4,content:z.createElement("div",{className:vn()},u.map((f,S)=>S>=d&&z.createElement(pr,{key:f.displayName,content:"",src:f.image??"",open:!1,className:S>d?"blockchainImage":"",container:l})))},z.createElement(Il,{className:"blockchainImage"},z.createElement(Ki,{size:"xsmall",variant:"body"},"+",u.length-d))))),z.createElement(Bl,{direction:"horizontal",size:32}))),z.createElement(bl,{orientation:a?"up":"down"},z.createElement(Rw,{size:12,color:"black"}))))}i(Kf,"QuoteTrigger");function Ll(t){let{quote:e,input:o,output:n,error:r,warning:a,type:s,selected:l=!1,tagHidden:p=!0,showModalFee:c=!0,onClickAllRoutes:u,fullExpandedMode:m=!1,container:h}=t,g=C().blockchains(),{findToken:d}=C(),f=C().swappers(),{customSlippage:S,slippage:T}=C(),y=S||T,[k,v]=px(t.expanded),b=lx(null),A=_(o.value,6,6),I=_(n.value,6,6),E=n.usdValue?_(n.usdValue,4,4):"",x=zt(o.usdValue,n.usdValue??null),w=_(x,2,2),B=Qt(x??0),P=i((se,Ze)=>se.map((q,W)=>{let G,j=r?.type===3&&r.swap.swapperId===q.swapperId,ee=r?.type===4&&r.recommendedSlippages?.has(W),fe=a?.type===2&&a.recommendedSlippages?.has(W),Ue=j||ee,Je=fe;Ue?G="error":Je&&(G="warning");let xe=Ue?Lo.t("Slippage Error"):Lo.t("Slippage Warning");return j&&(xe=Lo.t("Bridge Limit Error")),{swapper:{displayName:Dn(q.swapperId,f)??"",image:q.swapperLogo},from:{token:{displayName:q.from.symbol,image:q.from.logo},chain:{displayName:ft(q.from.blockchain,g)??"",image:q.from.blockchainLogo},price:{value:W===0&&!Ze?_(o.value,6,6):_(q.fromAmount,6,6),usdValue:_((q.from.usdPrice??0)*parseFloat(q.fromAmount),4,4),realValue:W===0?o.value:q.fromAmount,realUsdValue:new Wl(q.from.usdPrice??0).multipliedBy(q.fromAmount).toString()}},to:{token:{displayName:q.to.symbol,image:q.to.logo},chain:{displayName:ft(q.to.blockchain,g)||"",image:q.to.blockchainLogo},price:{value:_(q.toAmount,6,6),usdValue:_((q.to.usdPrice??0)*parseFloat(q.toAmount),4,4),realValue:q.toAmount,realUsdValue:new Wl(q.to.usdPrice??0).multipliedBy(q.toAmount).toString()}},state:G,alerts:Ue||Je?U.createElement(kf,{dense:m},U.createElement(ox,{variant:"alarm",type:Ue?"error":"warning",title:xe,footer:U.createElement(vf,null,j&&U.createElement("div",null,U.createElement(xn,{size:"xsmall",variant:"body",color:"neutral900"},r.fromAmountRangeError),U.createElement(wn,{direction:"vertical",size:2}),U.createElement(xn,{size:"xsmall",variant:"body",color:"neutral900"},Lo.t({id:"Yours: {amount} {symbol}",values:{amount:_(q.fromAmount,6,6),symbol:q?.from.symbol}}))),(ee||fe)&&!j&&U.createElement("div",null,U.createElement(xn,{size:"xsmall",variant:"body",color:"neutral900"},Lo.t({id:"Minimum suggested slippage: {minRequiredSlippage}",values:{...r?.type===4&&{minRequiredSlippage:r.recommendedSlippages?.get(W)},...a?.type===2&&{minRequiredSlippage:a.recommendedSlippages?.get(W)}}})),U.createElement(wn,{direction:"vertical",size:2}),U.createElement(xn,{size:"xsmall",variant:"body",color:"neutral900"},Lo.t({id:"Yours: {userSlippage}",values:{userSlippage:y}}))))})):void 0,time:Bn(q.estimatedTimeInSeconds),fee:_(xs(q,d),2,2),internalSwaps:q.internalSwaps?P(q.internalSwaps):void 0}}),"getQuoteSteps"),$=P(e?.swaps??[]),H=$.length,R=h||N(),K=mm(t.quote.tags||[]),L=!!u,ae=Qr(e?.swaps),re=Bn(ae),Q=yi(e?.swaps??[],d),Z=_(Q,2,2),le=Q.gte(new Wl(om)),ue=ae/rm>=nm;return m?U.createElement(nx,{selected:l,fee:Z,time:re,tooltipContainer:Co(),steps:$,tags:K,quoteCost:U.createElement(Nl,{quote:e,fullExpandedMode:!0,time:re,fee:Z,feeWarning:le,timeWarning:ue,showModalFee:c,steps:H}),percentageChange:w,warningLevel:B,outputPrice:{value:I,usdValue:E,realValue:n.value,realUsdValue:n.usdValue}}):U.createElement(If,{selected:l,listItem:s==="list-item",basic:s==="basic"},U.createElement("div",{className:Af()},!p&&K.length?U.createElement(U.Fragment,null,U.createElement($f,null,K.map((se,Ze)=>{let q=`${se.value}_${Ze}`;return U.createElement(U.Fragment,{key:q},U.createElement(ix,{label:se.label,value:se.value}),U.createElement(wn,{size:4,direction:"horizontal"}))})),U.createElement(Qi,null),!L&&U.createElement(wn,{size:4})):null,U.createElement("div",{id:"portal-root",className:Nf()},U.createElement(Nl,{quote:e,time:re,fee:Z,feeWarning:le,timeWarning:ue,showModalFee:c,steps:H}),L&&U.createElement(Ef,{onClick:se=>{se.stopPropagation(),u()},size:"xxsmall",type:"secondary",variant:"default",css:{paddingLeft:"$10",paddingRight:"$10",paddingTop:"$5",paddingBottom:"$5"}},U.createElement(xn,{color:"secondary",variant:"body",size:"xsmall",className:"allRoutesLabel"},Lo.t("See All Routes")))),s==="basic"&&U.createElement("div",{className:Bf()},U.createElement(_f,null,U.createElement(rx,{size:12,color:"gray"})),U.createElement(Df,null,U.createElement(El,{size:"small",variant:"body"},`${A} ${$[0].from.token.displayName} = `),U.createElement(jf,{content:n.value,container:R,open:n.value?void 0:!1},U.createElement(El,{size:"small",variant:"body"},"\xA0",`${I} ${$[$.length-1].to.token.displayName}`))),U.createElement(jf,{content:n.usdValue,container:R},U.createElement(wn,{size:2,direction:"horizontal"}),U.createElement(xn,{color:"$neutral600",size:"xsmall",variant:"body"},`($${E})`))),s==="list-item"&&U.createElement(sx,{tooltipContainer:R,type:"output",direction:"vertical",price:{value:I,usdValue:E,realValue:n.value,realUsdValue:n.usdValue},token:{displayName:$[H-1].to.token.displayName,image:$[H-1].to.token.image},chain:{image:$[H-1].to.chain.image},percentageChange:w,warningLevel:B}),s==="swap-preview"&&U.createElement(U.Fragment,null,U.createElement(lr,{from:$[0].from,to:$[H-1].to,percentageChange:w,warningLevel:B}),U.createElement(wn,{size:4}))),U.createElement(xf,{selected:l,listItem:s==="list-item",open:k,className:"quote_container",onOpenChange:v},U.createElement(Kf,{type:s,quoteRef:b,selected:l,setExpanded:v,container:R,expanded:k,steps:$}),U.createElement(Mf,{open:k},U.createElement(Pf,null),U.createElement("div",{className:bf()},$.map((se,Ze)=>{let q=`item-${Ze}`;return U.createElement(ax,{type:"quote-details",key:q,tooltipContainer:R,step:se,hasSeparator:Ze!==$.length-1,state:se.state})})))))}i(Ll,"Quote");import{Divider as dx,Skeleton as fx}from"@rango-dev/ui";import Gt from"react";import{darkTheme as cx,styled as Zi}from"@rango-dev/ui";var Xf=Zi("div",{$$color:"$colors$neutral100",[`.${cx} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomLeftRadius:"$xm",borderBottomRightRadius:"$xm",padding:"$15",variants:{rounded:{true:{borderRadius:"$xm"}},expanded:{true:{paddingBottom:"3px"},false:{paddingBottom:"$12"}}}}),Yf=Zi("div",{paddingTop:"$2"}),Zf=Zi("div",{paddingLeft:"$8"}),Jf=Zi("div",{borderLeft:"1px dashed $foreground",minHeight:" 0",margin:"0px 11.5px",alignSelf:"stretch",variants:{hideSeparator:{true:{minHeight:"unset",height:"0"}}}});import{ChainToken as lg,Divider as bt,Skeleton as pt}from"@rango-dev/ui";import V from"react";import{css as ux,styled as qt}from"@rango-dev/ui";var Ml=qt("div",{display:"flex"}),Rf=qt("div",{padding:"$10 $0 $20"}),eg=qt("div",{padding:"14px $0 $20 $0",display:"flex",flexDirection:"column"}),tg=qt("div",{display:"flex",justifyContent:"start",alignItems:"center"}),og=qt("div",{display:"flex",justifyContent:"space-between",alignItems:"end"}),ng=qt("div",{height:"$24",marginLeft:"13px",borderLeft:"1px solid $neutral700"}),rg=qt("div",{width:"65%",display:"flex",justifyContent:"start"}),ig=qt("div",{display:"flex",flexDirection:"column",alignItems:"start",flexGrow:1,maxWidth:"148px"}),ag=qt("div",{padding:"$15 $0 $15 $0"}),sg=ux({display:"flex",justifyContent:"space-between",alignItems:"center"});function cr(t){let{type:e,tagHidden:o=!0}=t,n=V.createElement(og,null,V.createElement(rg,null,V.createElement(lg,{loading:!0,size:"medium"}),V.createElement(bt,{size:8,direction:"horizontal"}),V.createElement(ig,null,V.createElement(pt,{height:10,width:60,variant:"rounded"}),V.createElement(bt,{size:4}),V.createElement(pt,{height:15,variant:"rounded"}))),V.createElement(pt,{height:12,width:64,variant:"rounded"})),r=e==="basic"&&!o;return V.createElement("div",null,!o&&V.createElement(V.Fragment,null,V.createElement(Ml,null,V.createElement(pt,{width:65,height:20,variant:"rounded"}),V.createElement(bt,{size:4,direction:"horizontal"}),V.createElement(pt,{width:65,height:20,variant:"rounded"}),V.createElement(bt,{size:4,direction:"horizontal"}),V.createElement(pt,{width:65,height:20,variant:"rounded"})),V.createElement(Qi,null),!r&&V.createElement(bt,{size:4})),V.createElement("div",{className:sg()},V.createElement(Ml,null,V.createElement(pt,{width:60,height:10,variant:"rounded"}),V.createElement(bt,{size:4,direction:"horizontal"}),V.createElement(pt,{width:60,height:10,variant:"rounded"}),V.createElement(bt,{size:4,direction:"horizontal"}),V.createElement(pt,{width:60,height:10,variant:"rounded"})),r&&V.createElement(pt,{width:85,height:24,variant:"rounded"})),e==="basic"&&V.createElement(Rf,null,V.createElement(pt,{height:15,width:148,variant:"rounded"})),e==="list-item"&&V.createElement(eg,null,V.createElement(tg,null,V.createElement(lg,{loading:!0,size:"medium"}),V.createElement(bt,{direction:"horizontal",size:4}),V.createElement(pt,{height:15,width:150,variant:"rounded"})),V.createElement(bt,{size:10}),V.createElement(pt,{height:10,width:184,variant:"rounded"})),e==="swap-preview"&&V.createElement(V.Fragment,null,V.createElement(bt,{size:4}),V.createElement(ag,null,n,V.createElement(ng,null),n),V.createElement(bt,{size:12})))}i(cr,"QuoteSummarySkeleton");import{ChainToken as dg,Divider as _l,NextIcon as mx,Skeleton as Ji}from"@rango-dev/ui";import We from"react";import{styled as ur}from"@rango-dev/ui";var pg=ur("div",{display:"flex",alignItems:"start"}),cg=ur("div",{flexGrow:1,paddingTop:"$5",paddingBottom:"$10",display:"flex",alignItems:"center",variants:{extraSpace:{true:{paddingBottom:"$40"}}}}),Pl=ur("div",{display:"flex",alignItems:"center",flexGrow:1}),ug=ur("div",{margin:"$0 $2",padding:"$4",display:"flex",justifyContent:"center",alignItems:"center"}),mg=ur("div",{display:"flex",alignItems:"center"});function Pt(t){let{separator:e=!0}=t;return We.createElement(We.Fragment,null,We.createElement(mg,null,We.createElement(Ji,{height:22,width:22,variant:"circular"}),We.createElement(_l,{direction:"horizontal",size:8}),We.createElement(Ji,{height:15,width:148,variant:"rounded"})),We.createElement(pg,null,We.createElement(Jf,{hideSeparator:!e}),We.createElement(cg,{extraSpace:e},We.createElement(Pl,null,We.createElement(dg,{size:"small",loading:!0}),We.createElement(_l,{direction:"horizontal",size:8}),We.createElement(Ji,{height:12,variant:"rounded"})),We.createElement(ug,null,We.createElement(mx,{color:"gray",size:16})),We.createElement(Pl,null,We.createElement(dg,{size:"small",loading:!0}),We.createElement(_l,{direction:"horizontal",size:8}),We.createElement(Ji,{height:12,variant:"rounded"})))))}i(Pt,"StepSkeleton");function mr(t){let{type:e,expanded:o,tagHidden:n=!1}=t;return Gt.createElement(Xf,{expanded:o,rounded:e!=="basic"},Gt.createElement(cr,{type:e,tagHidden:n}),Gt.createElement(Yf,null,Gt.createElement(fx,{height:15,variant:"rounded"})),o&&Gt.createElement(Zf,null,Gt.createElement(dx,{size:24}),Gt.createElement(Pt,null),Gt.createElement(Pt,null),Gt.createElement(Pt,{separator:!1})))}i(mr,"QuoteSkeleton");function Mo(t){let{quote:e,type:o,loading:n,error:r,warning:a,expanded:s=!1,tagHidden:l,onClick:p,showModalFee:c,selected:u,onClickAllRoutes:m,fullExpandedMode:h=!1,container:g}=t,{inputAmount:d,inputUsdValue:f}=O(),S=e?.outputAmount?new gx(e?.outputAmount):null,T=e?yt(e):null,k=!(r&&(r.type===0||r.type===1))&&e&&!n;return n?Ri.createElement(xl,null,Ri.createElement(mr,{tagHidden:l,type:o,expanded:s})):k?Ri.createElement(xl,{onClick:()=>p?.(e)},Ri.createElement(Ll,{quote:e,error:r,container:g,showModalFee:c,warning:a,tagHidden:l,selected:u,type:o,expanded:s,onClickAllRoutes:m,fullExpandedMode:h,input:{value:d,usdValue:f?.toString()??""},output:{value:S?.toString()??"",usdValue:T?.toString()??""}})):null}i(Mo,"QuoteInfo");import{calculatePendingSwap as Cx}from"@rango-dev/queue-manager-rango-preset";import{useEffect as Tx}from"react";import{useRef as hx,useState as yx}from"react";var Sx=2e3;function ea({request:t}){let[e,o]=yx(!1),n=hx(null),r=i(()=>n.current?.abort(),"cancelFetch"),a=i(async l=>(await new Promise(p=>setTimeout(p,Sx)),await s(l,!1)),"retryFetch"),s=i(async(l,p=!1)=>{r(),n.current=new AbortController,o(!0);try{let c=await t(l,{signal:n.current.signal});return n.current=null,c}catch(c){if(p)return await a(l);throw c}finally{o(!1)}},"fetch");return{fetch:s,loading:e,cancelFetch:r}}i(ea,"useFetch");function fg(){let{fetch:t,loading:e,cancelFetch:o}=ea({request:async(n,r)=>await at().confirmRoute(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(fg,"useFetchConfirmQuote");function ta(t){if(!t.swaps)throw new Error(oe().noResultError.title,{cause:{type:0,diagnosisMessage:t.diagnosisMessages?.[0]}});let e=Dl(t.swaps);if(e)throw new Error(e.message,{cause:e.options})}i(ta,"throwErrorIfResponseIsNotValid");function Dl(t){if(ym(t)){let{swap:n,recommendation:r,fromAmountRangeError:a}=Sm(t);return{message:"bridge limit error",options:{type:3,swap:n,recommendation:r,fromAmountRangeError:a}}}let o=vm(t);if(o){let n=Si(t);return{message:"",options:{type:4,recommendedSlippages:o,minRequiredSlippage:n}}}return null}i(Dl,"getQuoteError");function gg(t){let{currentQuote:e,previousQuote:o,meta:n,selectedWallets:r,userSlippage:a,findToken:s}=t,l={quote:null,balance:null},p=cn({previousQuote:o,currentQuote:e,findToken:s,userSlippage:a});p&&(l.quote=p);let c=bm(e,r,n.blockchains);return c.length===0||(l.balance={messages:c}),l}i(gg,"generateWarnings");function oa(t){return t?.code==="ERR_CANCELED"?{swap:null,error:{type:2},warnings:null}:t.cause?{swap:null,error:t.cause,warnings:null}:t?.code==="ERR_BAD_REQUEST"?{swap:null,error:{type:0,diagnosisMessage:t.response.data.error},warnings:null}:{swap:null,error:{type:1,diagnosisMessage:t.message},warnings:null}}i(oa,"handleQuoteErrors");function $l(){let{fromToken:t,toToken:e,inputAmount:o,inputUsdValue:n,setSelectedQuote:r,selectedQuote:a,customDestination:s,resetAlerts:l}=O(),{slippage:p,customSlippage:c}=C(),u=C().getDisabledLiquiditySources(),m=C().blockchains(),h=C().tokens(),{findToken:g}=C(),d=c||p,{fetch:f,cancelFetch:S,loading:T}=fg();return Tx(()=>S,[]),{loading:T,fetch:i(async k=>{let v=k.selectedWallets,b=k?.customDestination??s;if(!t||!e||!o)return{quote:null,swap:null,error:null,warnings:null};let A=v.reduce((E,x)=>(E[x.chain]=x.address,E),{}),I={requestId:a?.requestId||"",selectedWallets:A,destination:b||void 0};try{return await f(I,!0).then(E=>{let{result:x}=E;if(!x)throw new Error(E.error??"Error fetching updated quote");ta({diagnosisMessages:x.diagnosisMessages,requestId:x.requestId,swaps:x.result?.swaps});let w={outputAmount:x.result?.outputAmount,requestId:x.requestId,resultType:x.result?.resultType,swaps:x.result?.swaps||[],validationStatus:x.validationStatus,requestAmount:x.requestAmount};r(w);let B={slippage:d.toString(),disabledSwappersGroups:u},P=gg({previousQuote:a??void 0,currentQuote:w,meta:{blockchains:m},selectedWallets:v,userSlippage:d,inputUsdValue:n,findToken:g});l();let $=!!P.balance,H=Cx(o.toString(),x,xm(v),B,!$,{blockchains:m,tokens:h});return{quote:w,swap:H,error:null,warnings:P}})}catch(E){return oa(E)}},"fetch"),cancelFetch:S}}i($l,"useConfirmSwap");var Bx=xx("div",{width:"100%",display:"flex",justifyContent:"space-between",[`& ${hg}`]:{width:"$48",height:"$48"}}),Wx=Ul({flexGrow:1,paddingRight:"$10"}),Lx=Ul({width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center"}),Mx=Ul({display:"flex",justifyContent:"space-between",alignItems:"center"});function yg(){let{selectedQuote:t,setInputAmount:e,selectedWallets:o,quoteWalletsConfirmed:n,customDestination:r,quoteWarningsConfirmed:a}=O(),s=Nx(),[l,p]=dr(""),c=!n,[u,m]=dr(!1),[h,g]=dr(!1),{isActiveTab:d}=te(),f=C().getDisabledLiquiditySources(),S=Ax(f),{manager:T}=kx(),{fetch:y,loading:k,cancelFetch:v}=$l(),[b,A]=dr({swap:null,error:null,warnings:null}),[I,E]=dr(!1),x=i(async({selectedWallets:L,customDestination:ae})=>{let re=await y?.({selectedWallets:L,customDestination:ae});return A(re),re},"onConfirmSwap"),w=i(async()=>{if(b.swap&&n)try{await T?.create("swap",{swapDetails:b.swap},{id:b.swap.requestId});let L=`../${F.swaps}/${b.swap.requestId}`;s(L,{replace:!0}),setTimeout(()=>{e("")},0)}catch(L){p("Error: "+L?.message)}},"addNewSwap"),B=i(async()=>{g(!0),await w(),g(!1)},"onConfirm"),P=i(async()=>{b.warnings?.quote&&pm(b.warnings.quote)&&!a?E(!0):await B()},"onStartConfirmSwap"),$=i(async()=>{A({error:null,swap:null,warnings:null}),y({selectedWallets:o,customDestination:r}).then(L=>{A(L)}).catch(L=>console.error(L))},"onRefresh");na(()=>{!!S.current.length&&!f.length&&$(),S.current=f},[f.length]),na(()=>{c&&v()},[c]),na(()=>{c&&m(c)},[c]),na(()=>{c||y({selectedWallets:o,customDestination:r}).then(L=>A(L)).catch(L=>console.error(L))},[]),Ix(()=>{t?.requestId||s(`../${location.search}`)},[t?.requestId]);let H=b.warnings?.quote??null,R=b.error,K=[];if(l&&K.push(De.createElement(vx,{type:"error",variant:"alarm",title:l})),H||R){let L=`../${F.settings}`;K.push(De.createElement(ar,{warning:H,error:R,couldChangeSettings:!1,refetchQuote:$,skipAlerts:R?.type===4||H?.type===2,showWarningModal:I,confirmationDisabled:!d,onOpenWarningModal:()=>E(!0),onCloseWarningModal:()=>E(!1),onConfirmWarningModal:async()=>{E(!1),await w()},onChangeSettings:()=>s(L)}))}return De.createElement(ie,{header:{title:Fl.t("Confirm Swap"),onWallet:()=>{let L=`../${F.wallets}`;s(L)}},footer:De.createElement(Bx,null,De.createElement("div",{className:Wx()},De.createElement(wx,{id:"widget-confirm-swap-start-btn",variant:"contained",type:"primary",size:"large",fullWidth:!0,loading:k||h,disabled:!!b.error||!d,onClick:P},Fl.t("Start Swap"))),De.createElement(hg,{id:"widget-confirm-swap-wallet-icon-btn",variant:"contained",type:"primary",size:"large",loading:k||h,disabled:!d,onClick:m.bind(null,!0)},De.createElement(Ex,{size:24})))},u&&De.createElement(ef,{open:u,onClose:()=>m(!1),onCancel:v,loading:k,onCheckBalance:x}),De.createElement(pe,null,De.createElement("div",{className:Mx()},De.createElement(bx,{variant:"title",size:"small"},Fl.t("You get")),De.createElement("div",{className:Lx()},De.createElement(Ei,{onClick:!k&&!u&&!I?$:void 0}))),De.createElement(Ol,{size:"12"}),Zm(K.map((L,ae)=>({element:L,key:`alert-${ae}`})),De.createElement(Ol,{size:10})),K.length>0?De.createElement(Ol,{size:10}):null,De.createElement(Mo,{quote:t,type:"swap-preview",expanded:!0,tagHidden:!0,error:b.error,loading:k,warning:b.warnings?.quote??null})))}i(yg,"ConfirmSwapPage");import{i18n as Kt}from"@lingui/core";import{Button as Jl,CustomTokensZeroStateDarkIcon as eb,CustomTokensZeroStateIcon as tb,DeleteIcon as ob,Divider as Cr,IconButton as nb,MessageBox as rb,NotFound as ib,styled as ep}from"@rango-dev/ui";import ye,{useState as Rl}from"react";import{useNavigate as ab}from"react-router-dom";import{CloseIcon as _x,IconButton as Dx,SearchIcon as $x,TextField as Fx}from"@rango-dev/ui";import fr from"react";import{styled as Px}from"@rango-dev/ui";var Sg=Px("div",{width:"$24",height:"$24",display:"flex",alignItems:"center",justifyContent:"center"});function Et(t){let{variant:e,fullWidth:o,color:n,size:r,onChange:a,value:s,style:l,setValue:p,suffix:c,...u}=t,m=s.length?fr.createElement(Dx,{variant:"ghost",onClick:()=>p?.(""),size:"small"},fr.createElement(_x,{color:"gray",size:10})):null;return c&&(m=c),fr.createElement(Fx,{prefix:fr.createElement(Sg,null,fr.createElement($x,{color:"black"})),suffix:m,fullWidth:o,color:n,variant:e,style:{padding:10,borderRadius:25,alignItems:"center",...l},size:r,value:s,onChange:a,...u})}i(Et,"SearchInput");import{i18n as Zl}from"@lingui/core";import{Button as Qx,CustomTokenWarning as Hx,darkTheme as Bg,Divider as Vt,ExternalLinkIcon as qx,Image as Gx,ListItem as Vx,NotFound as Kx,PinIcon as jx,Skeleton as Po,Typography as yr,VirtualizedList as Xx}from"@rango-dev/ui";import M,{useState as Yx}from"react";import{useTranslation as Zx}from"react-i18next";import{Divider as Ag,ListItem as zx,Skeleton as hr}from"@rango-dev/ui";import It from"react";import{css as bn,darkTheme as zl,ImageContainer as Ox,ListItemButton as Ux,styled as ot,Typography as Cg}from"@rango-dev/ui";var Ql=bn({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}),Hl=bn({position:"relative",height:12,width:"30%",maxWidth:"150px"}),ql=bn({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",bottom:"-8px"}),Gl=bn({transform:"translateY(12px)",visibility:"hidden",display:"flex","& a":{display:"flex",justifyContent:"center",alignItems:"center",fontSize:"$12",lineHeight:"$16",$$color:"$colors$neutral600",[`.${zl} &`]:{$$color:"$colors$neutral700"},color:"$$color",textDecoration:"none"}}),Vl=bn({}),Kl=bn(),Tg=ot("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden",justifyContent:"center"}),jl=ot("div",{display:"flex",alignItems:"center","._typography":{textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}}),ra=ot("ul",{flexGrow:1,padding:0,margin:0,listStyle:"none","& li":{alignItems:"none","&:hover":{[`& .${Hl}`]:{[`& .${Gl}`]:{position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",visibility:"visible"},[`& .${Vl}`]:{bottom:"-15px"},[`& .${Ql}`]:{position:"absolute",transform:"translateY(-12px)",visibility:"hidden"},[`& .${ql}`]:{position:"absolute",transform:"translateY(-12px)",bottom:"-10px"}}}}}),kg=ot(Ux,{variants:{customToken:{true:{"&:hover":{cursor:"unset"}}}}}),Xl=ot("div",{paddingLeft:"$5",paddingRight:"$5",borderRadius:"$md",display:"flex",alignItems:"center"}),Yl=ot(Cg,{}),vg=ot("div",{textAlign:"right",width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",[`& .${Kl}`]:{$$color:"$colors$neutral600",[`.${zl} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),gr=ot("div",{display:"flex",alignItems:"end",flexDirection:"column"}),Jq=ot("div",{display:"flex",alignItems:"center"}),wg=ot("div",{position:"relative",[`& ${Ox}`]:{borderRadius:"$xm",overflow:"hidden"}}),xg=ot("div",{position:"absolute",backgroundColor:"$neutral100",padding:"$4",borderRadius:"50%",bottom:-6,right:-6}),bg=ot(Cg,{width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}),Eg=ot("a",{"& svg:hover":{color:"$colors$info"}}),Ig=ot("div",{paddingRight:"$5","& .widget-token-list-item-btn":{width:"100%",overflow:"hidden",height:"60px"},"& .widget-token-list-item-import-btn":{height:"$20",padding:"0 $10","& ._text":{display:"flex",justifyContent:"center",alignItems:"center"},"& ._typography":{[`.${zl} &`]:{color:"$foreground"}}}});function Ng(t){return It.createElement(ra,null,Array.from(Array(t.size),e=>It.createElement(zx,{key:e,hasDivider:!0,start:It.createElement(hr,{variant:"circular",width:35,height:35}),end:It.createElement(gr,null,It.createElement(hr,{variant:"text",size:"large",width:70}),It.createElement(Ag,{size:4}),It.createElement(hr,{variant:"text",size:"medium",width:50})),title:It.createElement("div",null,It.createElement(hr,{variant:"text",size:"large",width:90}),It.createElement(Ag,{size:4}),It.createElement(hr,{variant:"text",size:"medium",width:90}))})))}i(Ng,"LoadingTokenList");var Jx=20,Rx=i(t=>{let{address:e,name:o,url:n,token:r,customCssForTag:a,customCssForTagTitle:s}=t,l=e.length;return M.createElement("div",{className:Hl()},o?M.createElement("div",{className:Ql()},o):M.createElement(jl,{className:ql()},M.createElement(yr,{variant:"title",size:"xmedium"},r.symbol),M.createElement(Vt,{direction:"horizontal",size:4}),M.createElement(Xl,{css:a},M.createElement(Yl,{variant:"body",size:"xsmall",css:s},r.blockchain))),!!e&&M.createElement("div",{className:`${Gl()} ${!o&&Vl()}`},l>10?`${e.slice(0,5)}...${e.slice(l-6,l)}`:e," ",M.createElement(Vt,{size:4,direction:"horizontal"}),M.createElement(Eg,{href:n,target:"_blank",rel:"nofollow noreferrer",onClick:p=>p.stopPropagation()},M.createElement(qx,{size:12}))))},"renderDesc");function Sr(t){let{list:e,searchedFor:o="",onChange:n,selectedBlockchain:r,showTitle:a=!0,action:s,type:l,showWarning:p=!0}=t,c=C().fetchStatus,u=C().blockchains(),{getBalanceFor:m,fetchingWallets:h}=C(),{isTokenPinned:g}=C(),{setFromToken:d,setToToken:f}=O(),{t:S}=Zx(),T=qe(),[y,k]=Yx(null),v=i(()=>{l==="source"?d({token:y,meta:{blockchains:u}}):f({token:y,meta:{blockchains:u}})},"updateToken"),b=i(()=>{v(),T()},"handleImportToken"),A=i(x=>{if(x.customToken){let{customToken:B,...P}=x;return M.createElement(Qx,{variant:"contained",type:"primary",size:"small",className:"widget-token-list-item-import-btn",onClick:i(H=>{H.stopPropagation(),k({...P,warning:!0})},"handleClick")},M.createElement(yr,{variant:"body",size:"xsmall",color:"background"},S("import")))}let w=Vr(m(x));return s?s(x):h?M.createElement(gr,null,M.createElement(Po,{variant:"text",size:"large",width:70}),M.createElement(Vt,{size:4}),M.createElement(Po,{variant:"text",size:"medium",width:50})):w&&M.createElement(vg,null,M.createElement(bg,{variant:"title",size:"small"},w.amount),M.createElement("div",null),w.usdValue&&M.createElement(yr,{variant:"body",className:Kl(),size:"xsmall"},`$${w.usdValue}`))},"endRenderer"),I=i(()=>M.createElement(Xx,{itemContent:x=>{let w=e[x];if(w==="skeleton")return M.createElement(Vx,{hasDivider:!0,start:M.createElement(Po,{variant:"circular",width:35,height:35}),end:M.createElement(gr,null,M.createElement(Po,{variant:"text",size:"large",width:70}),M.createElement(Vt,{size:4}),M.createElement(Po,{variant:"text",size:"medium",width:50})),title:M.createElement("div",null,M.createElement(Po,{variant:"text",size:"large",width:90}),M.createElement(Vt,{size:4}),M.createElement(Po,{variant:"text",size:"medium",width:90}))});let B=w.address||"",P=u.find(L=>L.name===w.blockchain);if(!P)return null;let $=zs(P.color,"main"),H={$$color:$.main150,[`.${Bg} &`]:{$$color:$.main750},backgroundColor:"$$color"},R={$$color:$.main750,[`.${Bg} &`]:{$$color:$.main150},color:"$$color"},K=i(()=>{typeof w!="string"&&!w.customToken&&n?.(w)},"handleClick");return M.createElement(Ig,null,M.createElement(kg,{"tab-index":x,key:`${w.symbol}${w.address}`,id:`${w.symbol}${w.address}`,className:"widget-token-list-item-btn",hasDivider:!0,customToken:w.customToken,onClick:K,start:M.createElement(wg,null,M.createElement(Gx,{src:w.image===""?Zr:w.image,size:30}),t.type!=="custom-token"&&g(w,t.type)&&M.createElement(xg,null,M.createElement(jx,{size:12,color:"gray"}))),title:P?.type==="COSMOS"||w.name||!w.name&&!B?M.createElement(jl,null,M.createElement(yr,{variant:"title",size:"xmedium"},w.symbol),M.createElement(Vt,{direction:"horizontal",size:4}),M.createElement(Xl,{css:H},M.createElement(Yl,{variant:"body",size:"xsmall",css:R},w.blockchain)),p&&w.warning&&M.createElement(M.Fragment,null,M.createElement(Vt,{direction:"horizontal",size:4}),M.createElement(Hx,{container:N()}))):void 0,description:typeof w!="string"&&P?.info&&B&&P.type!=="COSMOS"?Rx({address:B,token:w,customCssForTag:H,customCssForTagTitle:R,name:w.name,url:P.info.addressUrl.split("{wallet}").join(B)}):w.name||void 0,end:A(w)}))},totalCount:e.length,key:`${r}-${o}`}),"renderList"),E=y?ko(y?.blockchain,u):null;return M.createElement(M.Fragment,null,a&&M.createElement(M.Fragment,null,M.createElement(yr,{variant:"label",size:"large"},Zl.t("Select Token")),M.createElement(Vt,{size:4})),M.createElement(Tg,null,M.createElement(Vt,{size:4}),c==="loading"&&M.createElement(Ng,{size:Jx}),c==="success"&&(e.length?M.createElement(M.Fragment,null,M.createElement(Zn,{token:y,address:y?.address??"",blockchain:E??void 0,onImport:b,onExitErrorModal:()=>k(null),onExitImportModal:()=>k(null)}),M.createElement(ra,{as:"ul"},I())):!!o&&M.createElement(Kx,{title:Zl.t("No results found"),description:Zl.t("Try using different keywords")}))))}i(Sr,"TokenList");var sb=ep("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1}),lb=ep("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",flex:"0.75"}),pb=ep(nb,{"&:hover":{"& svg":{color:"$secondary550"}}});function Wg(){let[t,e]=Rl(""),{deleteCustomToken:o}=C(),n=C().customTokens(),{fromToken:r,toToken:a,setFromToken:s,setToToken:l}=O(),{mode:p}=to({}),c=ab(),[u,m]=Rl(!1),[h,g]=Rl(),d=i(y=>{let k=y.target.value;e(k)},"handleSearch"),f=p==="dark",S=n.filter(y=>rt(y.symbol,t)||rt(y.address||"",t)||rt(y.name||"",t)),T=i(()=>{if(h){let y=a?gt(a):null,k=r?gt(r):null,v=gt(h);y===v?l({token:null}):k===v&&s({token:null}),o(h)}m(!1)},"handleDeleteCustomToken");return ye.createElement(ie,{header:{title:Kt.t("Custom Tokens")}},ye.createElement(pe,null,ye.createElement(sb,null,n.length?ye.createElement(ye.Fragment,null,ye.createElement(Et,{value:t,setValue:e,fullWidth:!0,color:"light",variant:"contained",placeholder:Kt.t("Search Token"),onChange:d}),ye.createElement(Cr,{size:16}),ye.createElement(Sr,{list:S,type:"custom-token",searchedFor:t,showTitle:!1,showWarning:!1,action:y=>ye.createElement(pb,{id:"widget-custom-token-delete-icon-btn",variant:"ghost",onClick:()=>{m(!0),g(y)}},ye.createElement(ob,{size:12,color:"gray"}))})):ye.createElement(lb,null,ye.createElement(ib,{icon:f?ye.createElement(eb,{size:200}):ye.createElement(tb,{size:200}),title:Kt.t("No custom tokens"),description:Kt.t("press the button to add your custom token")})),ye.createElement(Cr,{size:20}),ye.createElement(Jl,{id:"widget-custom-token-add-btn",type:"primary",variant:"contained",size:"large",onClick:()=>c(F.addCustomTokens)},Kt.t("Add Custom Token"))),ye.createElement(J,{open:u,dismissible:!0,onClose:()=>m(!1),container:N()},ye.createElement(rb,{title:Kt.t("Delete Custom Token"),type:"error",description:Kt.t("Are you sure you want to Delete this Token?")},ye.createElement(Cr,{size:40}),ye.createElement(Cr,{size:10}),ye.createElement(Jl,{fullWidth:!0,id:"widget-custom-token-delete-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:T},Kt.t("Yes, Delete it")),ye.createElement(Cr,{size:12}),ye.createElement(Jl,{id:"widget-custom-token-delete-modal-no-btn",fullWidth:!0,variant:"outlined",type:"primary",size:"large",onClick:()=>m(!1)},Kt.t("No, Continue"))))))}i(Wg,"CustomTokensPage");import{i18n as Xe}from"@lingui/core";import{useManager as Nb}from"@rango-dev/queue-manager-react";import{Button as sp,darkTheme as Bb,Divider as Do,MessageBox as Wb,NotFound as Lb,styled as lp,Typography as sa}from"@rango-dev/ui";import{TransactionStatus as vr}from"rango-types";import ce,{useMemo as Yg,useState as la}from"react";import{useNavigate as Mb}from"react-router-dom";import{FilterIcon as hb,Popover as yb}from"@rango-dev/ui";import _o from"react";import{css as cb,darkTheme as ia,IconButton as ub,styled as Tr}from"@rango-dev/ui";var tp=Tr("div",{position:"relative","&::before":{position:"absolute",right:"1px",top:"-1px",width:"$8",height:"$8",borderRadius:"100%",backgroundColor:"$neutral300",[`.${ia} &`]:{backgroundColor:"$neutral400"},padding:"$2"},variants:{isSelect:{true:{"&::before":{content:""}}}}}),Lg=Tr(ub,{width:"$36",height:"$36",position:"relative",padding:"0",overflow:"unset",backgroundColor:"$neutral300",[`.${ia} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${ia} &`]:{backgroundColor:"$neutral"},[`& ${tp}::before`]:{backgroundColor:"$secondary100",[`.${ia} &`]:{backgroundColor:"$neutral"}}},variants:{isSelect:{true:{border:"1px solid $secondary"}}}}),Mg=Tr("div",{position:"absolute",width:"$6",height:"$6",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"3px",top:"$0",right:"1px",backgroundColor:"$secondary500"}),Pg=Tr("div",{padding:"$15",borderRadius:"$sm",width:"248px",backgroundColor:"$background",zIndex:10}),_g=cb({display:"flex",justifyContent:"space-between",alignItems:"center"}),Dg=Tr("ul",{margin:0,listStyle:"none",height:"100%",padding:0,".item-start-container":{paddingRight:"0 !important"}});import{i18n as $g}from"@lingui/core";import{Button as mb,Divider as Fg,ListItemButton as db,Radio as fb,RadioRoot as gb,Typography as Og}from"@rango-dev/ui";import ct from"react";function Ug(t){let{filterBy:e,onClickItem:o}=t;return ct.createElement(Pg,null,ct.createElement("div",{className:_g()},ct.createElement(Og,{size:"small",variant:"body"},$g.t("Status")),ct.createElement(mb,{id:"widget-filter-selector-reset-btn",variant:"ghost",size:"xxsmall",onClick:()=>o("")},$g.t("Reset"))),ct.createElement(Fg,{size:10}),ct.createElement(gb,{value:e},ct.createElement(Dg,null,t.list.map((n,r)=>ct.createElement(db,{key:n.id,style:{height:"40px",width:"100%"},selected:!1,hasDivider:t.list.length-1!=r,id:n.id,title:ct.createElement(ct.Fragment,null,ct.createElement(Fg,{direction:"horizontal",size:4}),ct.createElement(Og,{size:"medium",variant:"body"},n.title)),start:ct.createElement(fb,{value:n.id}),onClick:o})))))}i(Ug,"FilterSelectorContent");function op(t){let{onClickItem:e,onOpenChange:o,filterBy:n,list:r,open:a}=t;return _o.createElement("div",null,_o.createElement(yb,{open:a,align:"end",onOpenChange:o,container:N(),content:_o.createElement(Ug,{list:r,filterBy:n,onClickItem:s=>{e(s),o(!1)}})},_o.createElement(Lg,{id:"widget-filter-selector-filter-icon-btn",variant:"default",isSelect:!!n,onClick:()=>o(!t.open)},_o.createElement(tp,{isSelect:!!n},_o.createElement(hb,{size:16,color:"black"}),!!n&&_o.createElement(Mg,null)))))}i(op,"FilterSelector");import{i18n as Tb}from"@lingui/core";import{getCurrentStep as kb}from"@rango-dev/queue-manager-rango-preset";import{Divider as Gg,GroupedVirtualizedList as vb,Skeleton as wb,SwapListItem as Vg,Typography as xb}from"@rango-dev/ui";import je,{useCallback as Kg,useEffect as bb,useRef as Eb,useState as Ib}from"react";function zg(t,e){let o=[],n=0;do{let r=t[n];o.push(Math.min(r,e)),e-=r,n++}while(e>0&&n<=t.length);return o}i(zg,"calculateGroupsSoFar");import{css as Sb,darkTheme as Cb,styled as kr}from"@rango-dev/ui";var np=Sb(),Qg=kr("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$5"}),rp=kr("div",{width:"100%",display:"flex",flexDirection:"column",backgroundColor:"$background",padding:"$10 $5 0 $5",[`& .${np}`]:{$$color:"$colors$neutral600",[`.${Cb} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),ip=kr("div",{display:"flex",justifyContent:"flex-start",padding:"$2"}),Hg=kr("div",{gap:"$10",display:"flex",flexDirection:"column"}),qg=kr("div",{height:"100%",display:"flex",justifyContent:"center",alignItems:"center"});var Ab=10;function ap(t){let{list:e,onSwapClick:o,groupBy:n,isLoading:r}=t,[a,s]=Ib([]),l=Eb(0),{swaps:p,groupCounts:c,groups:u}=n(e),m=Kg(zg,[]),h=Kg(()=>{let g=e.length-l.current;g&&(l.current+=Math.min(g,Ab),s(m(c,l.current)))},[e.length]);if(bb(()=>{r||h()},[r,h]),r){let g=[1,2];return je.createElement(je.Fragment,null,[g,g].map((f,S)=>je.createElement(rp,{key:S},je.createElement(ip,null,je.createElement(wb,{variant:"text",width:60,size:"small"}),je.createElement(Gg,{size:16})),je.createElement(Gg,{size:4}),je.createElement(Hg,null,f.map((y,k)=>je.createElement(Vg,{isLoading:!0,key:k}))))))}return je.createElement(vb,{endReached:()=>{l.current<e.length&&h()},groupCounts:a,groupContent:g=>je.createElement(rp,null,je.createElement(ip,null,je.createElement(xb,{variant:"label",size:"medium",className:np()},u[g]))),itemContent:(g,d)=>{let f=p[g];if(!f)return null;let S=kb(f),T=f.steps[0],y=f.steps[f.steps.length-1];return je.createElement(Qg,{key:f.requestId},je.createElement(Vg,{requestId:f.requestId,creationTime:f.creationTime,status:f.status,onClick:o,currentStep:S,tooltipContainer:N(),onlyShowTime:u[d]===Tb.t("Today"),swapTokenData:{from:{token:{image:T.fromLogo,displayName:T.fromSymbol},blockchain:{image:T.fromBlockchainLogo||""},amount:_(f.inputAmount,6,6),realAmount:f.inputAmount},to:{token:{image:y.toLogo,displayName:y.toSymbol},blockchain:{image:y.toBlockchainLogo||""},amount:_(y.outputAmount||y.expectedOutputAmountHumanReadable||"",6,6),realAmount:y.outputAmount||y.expectedOutputAmountHumanReadable||""}}}))}})}i(ap,"HistoryGroupedList");import{i18n as aa}from"@lingui/core";import jg from"dayjs";var Xg=i(t=>{let e=new Map([["today",{title:aa.t("Today"),swaps:[]}],["week",{title:aa.t("This week"),swaps:[]}],["month",{title:aa.t("This month"),swaps:[]}],["year",{title:aa.t("This year"),swaps:[]}]]);function o(p,c){e.has(p)||e.set(p,{title:p,swaps:[]}),e.get(p)?.swaps.push(c)}i(o,"addYearsToOutput");let n=jg();t.forEach(p=>{let c=Number(p.creationTime),u=jg(c);if(n.isSame(u,"day"))e.get("today")?.swaps.push(p);else if(n.isSame(u,"week"))e.get("week")?.swaps.push(p);else if(n.isSame(u,"month"))e.get("month")?.swaps.push(p);else if(n.isSame(u,"year"))e.get("year")?.swaps.push(p);else{let m=new Date(c).getFullYear().toString();o(m,p)}});let r=Array.from(e.values()).filter(p=>p.swaps.length>0),a=r.flatMap(p=>p.swaps),s=r.map(p=>p.swaps.length),l=r.map(p=>p.title);return{swaps:a,groupCounts:s,groups:l}},"groupSwapsByDate");var Pb=lp("div",{overflowY:"visible",width:"100%",display:"flex",flexDirection:"column",gap:15,height:"100%"}),_b=lp("div",{display:"flex",justifyContent:"center",alignItems:"center"}),Db=lp("div",{"._typography":{color:"$neutral700",[`.${Bb}&`]:{color:"$neutral900"}}}),$b=[{id:vr.SUCCESS,title:Xe.t("Complete")},{id:vr.RUNNING,title:Xe.t("Running")},{id:vr.FAILED,title:Xe.t("Failed")}],Fb=i((t,e)=>t?.length?t.filter(o=>Nt(o.fromBlockchain,e)||Nt(o.toBlockchain,e)||Nt(o.toSymbol,e)||Nt(o.fromSymbol,e)).length:!1,"isStepContainsText");function Zg(){let t=Mb(),{manager:e,state:o}=Nb(),n=St(e).map(({swap:k})=>k),[r,a]=la(""),[s,l]=la(!1),p=!o.loadedFromPersistor,[c,u]=la(""),[m,h]=la(!1),g=i(k=>{let v=k.target.value;a(v)},"handleSearch"),d=Yg(()=>!r&&!c?n:n.filter(k=>{let{inputAmount:v,status:b,steps:A,requestId:I}=k;return(!r||Nt(v,r)||Nt(b,r)||Fb(A,r)||Nt(I,r))&&(!c||c===b)}),[n,r,c]),f=!d?.length&&!p,S=i(()=>h(!1),"onCloseModal"),T=i(async()=>{try{await e?.clearQueue(),h(!1)}catch(k){console.log(k)}},"onClear"),y=Yg(()=>!n.some(k=>k.status===vr.SUCCESS||k.status===vr.FAILED),[n]);return ce.createElement(ie,{header:{title:Xe.t("History"),suffix:ce.createElement(oo,null,ce.createElement(sp,{id:"widget-history-clear-btn",disabled:y,variant:"ghost",size:"xsmall",onClick:()=>h(!0)},ce.createElement(sa,{size:"medium",variant:"label",color:"error"},Xe.t("Clear"))))}},ce.createElement(pe,null,ce.createElement(_b,null,ce.createElement(Et,{setValue:a,fullWidth:!0,variant:"contained",placeholder:Xe.t("Search Transaction"),autoFocus:!0,onChange:g,style:{height:36},value:r}),ce.createElement(Do,{size:10,direction:"horizontal"}),ce.createElement(op,{filterBy:c,open:s,onOpenChange:k=>l(k),onClickItem:k=>u(k),list:$b})),ce.createElement(Do,{size:"16"}),ce.createElement(Pb,null,f&&ce.createElement(qg,null,ce.createElement(Do,{size:32}),ce.createElement(Lb,{title:r?Xe.t("No results found"):Xe.t("No transactions"),titleColor:r?void 0:"$info",hasIcon:!!r,description:r?Xe.t("Try using different keywords"):Xe.t("Your transaction history is stored locally and will appear here after you start a swap")})),!f&&ce.createElement(ap,{list:d,onSwapClick:t,groupBy:Xg,isLoading:p}))),ce.createElement(J,{open:m,onClose:S,container:N()},ce.createElement(Do,{size:20}),ce.createElement(Wb,{type:"warning",title:Xe.t("Clear Transaction History"),description:ce.createElement(Db,null,ce.createElement(sa,{variant:"body",size:"medium"},Xe.t("Proceeding will remove all successful and failed transactions from the widget. Do you want to continue?")),ce.createElement(Do,{size:"24"}),ce.createElement(sa,{variant:"body",size:"small"},Xe.t("Note: This does not erase your transaction history on the chain; it only removes them here.")))}),ce.createElement(Do,{size:30}),ce.createElement(sp,{id:"widget-history-clear-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:T},Xe.t("Yes, Clear the history")),ce.createElement(Do,{size:10}),ce.createElement(sp,{id:"widget-history-clear-modal-no-btn",variant:"outlined",type:"primary",size:"large",onClick:S},ce.createElement(sa,{variant:"title",size:"medium",color:"primary"},Xe.t("No, Cancel")))))}i(Zg,"HistoryPage");import{i18n as CE}from"@lingui/core";import{Button as TE,Divider as vp,styled as kE,WarningIcon as vE}from"@rango-dev/ui";import wE from"bignumber.js";import Se,{useEffect as Ih,useState as Ah}from"react";import{useNavigate as xE}from"react-router-dom";import{i18n as Rg}from"@lingui/core";import{Alert as Ub,Divider as pp,NoRouteIcon as zb,Typography as Qb}from"@rango-dev/ui";import $o from"react";import{styled as Ob}from"@rango-dev/ui";var Jg=Ob("div",{display:"flex",flexDirection:"column",alignItems:"center"});function cp(){let{fromToken:t,toToken:e}=O();return!!t&&!!e&&Ft(t,e)?$o.createElement(Jg,null,$o.createElement(pp,{size:10}),$o.createElement(zb,{size:24,color:"gray"}),$o.createElement(pp,{size:4}),$o.createElement(Qb,{variant:"title",size:"small"},Rg.t("No Routes Found")),$o.createElement(pp,{size:4}),$o.createElement(Ub,{title:Rg.t("You cannot use the same token for From and To."),type:"warning",variant:"alarm"})):null}i(cp,"SameTokensWarning");import{Alert as Hb,Button as qb}from"@rango-dev/ui";import th from"react";import{i18n as pa}from"@lingui/core";function eh(t){let e=null;return t===ei?(e={alertType:"error",action:"reset-slippage",actionButtonTitle:pa.t("Reset"),title:pa.t("Slippage cannot be set lower than 0.01%.")},e):t>Vo?(e={alertType:"warning",action:"change-settings",actionButtonTitle:pa.t("Change"),title:pa.t("Caution, your slippage is high!")},e):null}i(eh,"makeAlerts");function oh(t){let{slippage:e,customSlippage:o,setSlippage:n,setCustomSlippage:r}=C(),{onChangeSettings:a}=t,l=eh(o!==null?o:e),p=i(c=>{c==="reset-slippage"?(n(Rr),r(null)):c==="change-settings"&&a()},"onClickActionButton");return l?th.createElement(Hb,{title:l.title,type:l.alertType,variant:"alarm",action:th.createElement(qb,{id:"widget-slippage-warning-error-change-settings-or-reset-slippage-btn",size:"xxsmall",type:l.alertType,onClick:()=>p(l.action)},l.actionButtonTitle)}):null}i(oh,"SlippageWarningsAndErrors");import{i18n as Xb}from"@lingui/core";import{IconButton as Yb,ReverseIcon as Zb,Skeleton as Jb,Tooltip as Rb,Typography as wr}from"@rango-dev/ui";import ut from"react";import ca from"bignumber.js";function rh(t){let{error:e,isDarkTheme:o,warning:n}=t,{quoteError:r,slippageError:a}=e,{quoteWarning:s,slippageWarning:l}=n,p=!!a||r?.type===4,c=!!l||s?.type===2;return p?"$error500":c?"$warning500":o?"$neutral600":"$neutral700"}i(rh,"getSlippageColor");function ih(t){let{toTokenUsdPrice:e,fromTokenUsdPrice:o}=t;if(!e||!o)return{rawValue:"0",displayValue:"0"};let n=new ca(e),r=new ca(o),a=n.dividedBy(r),s;return a.isLessThan(1)?s=a.toFixed(14):a.toFixed(0).length>10?s=a.toFixed(0).slice(0,10):s=a.toFixed(2),{displayValue:s,rawValue:a.toFixed()}}i(ih,"getUsdExchangeRate");function ah(t,e){let o=new ca(t).multipliedBy(e);return o.isLessThan(.001)?"$0":`$${o.decimalPlaces(2,ca.ROUND_DOWN).toFormat(2)}`}i(ah,"formatTokenValueInUsd");import{darkTheme as Kb,styled as mp,Typography as jb}from"@rango-dev/ui";var sh=mp("div",{display:"flex",padding:"$4",justifyContent:"space-between",alignItems:"center"}),lh=mp("div",{display:"flex",alignItems:"center",gap:"$2","& .rate-text":{color:"$neutral700",[`.${Kb} &`]:{color:"$neutral700"}},"& ._icon-button":{transform:"rotate(90deg)",width:"$16",height:"$16"}}),dp=mp(jb,{maxWidth:"$32",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"});function fp(t){let{slippage:e,customSlippage:o,quoteTokensRate:n,changeQuoteTokensRate:r}=C(),{quoteError:a,quoteWarning:s,fromToken:l,toToken:p,quote:c,loading:u}=t,m=o!==null?o:e,{mode:h}=to({}),g=Xo(m),d=h==="dark",f=n==="default",S={quoteError:a,slippageError:g?.type==="error"?g.message:null},T={quoteWarning:s,slippageWarning:g?.type==="warning"?g.message:null},y=c?.swaps[0].from||l,k=c?.swaps[c?.swaps.length-1].to||p,v=f?y:k,b=f?k:y,A=Number(f?c?.outputAmount:c?.requestAmount),I=Number(f?c?.requestAmount:c?.outputAmount),E=A||v.usdPrice,x=I||b.usdPrice,{rawValue:w,displayValue:B}=ih({toTokenUsdPrice:x,fromTokenUsdPrice:E});return ut.createElement(sh,null,ut.createElement(wr,{variant:S||T?"label":"body",size:S||T?"medium":"small",color:rh({error:S,warning:T,isDarkTheme:d})},Xb.t("Slippage:")," ",m,"%"),u?ut.createElement(Jb,{height:16,width:104,variant:"rounded"}):E&&x&&ut.createElement(lh,null,ut.createElement(wr,{className:"rate-text",variant:"body",size:"small"},"1"),ut.createElement(dp,{className:"rate-text",variant:"body",size:"small"},b.symbol),ut.createElement(Yb,{id:"widget-home-page-change-rate-button",onClick:r},ut.createElement(Zb,{size:14,color:"secondary"})),ut.createElement(Rb,{container:N(),side:"top",sideOffset:4,content:ut.createElement(wr,{className:"rate-text",variant:"body",size:"small"},w)},ut.createElement(wr,{className:"rate-text",variant:"body",size:"small"},B)),ut.createElement(dp,{className:"rate-text",variant:"body",size:"small"},v.symbol),v.usdPrice&&ut.createElement(wr,{color:"neutral600",variant:"body",size:"small"},"~",ah(Number(w),v.usdPrice))))}i(fp,"SwapMetrics");import{i18n as iE}from"@lingui/core";import{Header as aE}from"@rango-dev/ui";import co,{useEffect as sE,useState as lE}from"react";import{i18n as tE}from"@lingui/core";import{Divider as hp,FullExpandedQuote as oE,Typography as nE}from"@rango-dev/ui";import we from"react";import{styled as gp}from"@rango-dev/ui";var ph=gp("div",{display:"flex",justifyContent:"center",flexDirection:"column",height:"100%"}),ch=gp("div",{display:"flex",justifyContent:"space-between",alignItems:"center"}),uh=gp("div",{width:"146px"});import{i18n as xr}from"@lingui/core";import{Select as eE}from"@rango-dev/ui";import mh from"react";function ua(t){let{updateQuotePartialState:e,sortStrategy:o}=O(),n=[{value:"SMART",label:xr.t("Smart Routing")},{value:"FEE",label:xr.t("Lowest Fee")},{value:"SPEED",label:xr.t("Fastest Transfer")},{value:"NET_OUTPUT",label:xr.t("Maximum Return")},{value:"PRICE",label:xr.t("Maximum Output")}];return mh.createElement(uh,null,mh.createElement(eE,{container:t.container,options:n,value:o,handleItemClick:r=>{e("sortStrategy",r.value)},variant:"filled"}))}i(ua,"SelectStrategy");var dh=3;function br(t){let{loading:e,onClickOnQuote:o,fetch:n,showModalFee:r,hasSort:a=!0,fullExpandedMode:s=!1,container:l}=t,{selectedQuote:p,quotes:c,updateQuotePartialState:u,fromToken:m,toToken:h,sortStrategy:g,error:d}=O(),{slippage:f,customSlippage:S}=C(),{findToken:T}=C(),y=l||N(),k=!!c&&c.results.length,v=S??f,b=i(E=>{if(!m||!h||!c)return null;let x={requestAmount:c.requestAmount,validationStatus:null,...E};return cn({currentQuote:x,userSlippage:v,findToken:T})},"getQuoteWarning"),A=d?.type===0||d?.type===1,I=c?.results?hi(g,c?.results):[];return we.createElement(we.Fragment,null,a&&we.createElement(we.Fragment,null,we.createElement(ch,null,we.createElement(nE,{size:"xmedium",variant:"title"},tE.t("Sort by")),we.createElement(ua,{container:y})),we.createElement(hp,{size:"10"})),e&&Array.from({length:dh},(E,x)=>we.createElement(we.Fragment,{key:x},s?we.createElement(oE,{loading:!0}):we.createElement(mr,{tagHidden:!1,type:"list-item",expanded:!1}),x!==dh-1&&we.createElement(hp,{size:16}))),!e&&we.createElement(we.Fragment,null,k?I.map((E,x)=>{let w=b(E),B=Dl(E.swaps),P=I.length-1===x;return we.createElement(we.Fragment,{key:E.requestId},we.createElement(Mo,{showModalFee:r,container:y,selected:p?.requestId===E.requestId,tagHidden:!1,quote:{...E,requestAmount:c.requestAmount,validationStatus:null},loading:e,error:B?.options||null,warning:w,fullExpandedMode:s,onClick:$=>{B||u("warning",w),u("error",B?.options||null),o($)},type:"list-item"}),!P&&we.createElement(hp,{size:16}))}):A&&we.createElement(ph,null,we.createElement(nr,{size:s?"large":"small",error:d,fetch:n}))))}i(br,"Quotes");import{darkTheme as rE,styled as fh}from"@rango-dev/ui";var gh=fh("div",{transition:"width 0.2s, opacity 0.2s, margin-left 0.2s",height:"700px",width:"390px",position:"relative",opacity:1,marginLeft:"$16",backgroundColor:"$neutral100",[`.${rE} &`]:{backgroundColor:"$neutral300"},variants:{expandMode:{default:{width:"390px"},full:{width:"719px"}}},"&.is-hidden":{width:0,height:0,opacity:0,marginLeft:0}}),hh=fh("div",{position:"relative",overflow:"hidden",padding:"$20",flexGrow:1,display:"flex",flexDirection:"column",overflowY:"auto",borderRadius:"$primary",backgroundColor:"$background"});var pE=100;function yp(t){let{fetch:e,loading:o,onClickOnQuote:n,onClickRefresh:r,isVisible:a}=t,[s,l]=lE(!1),p=s?"":"is-hidden",{config:c}=C(),u=c?.variant==="full-expanded",m=Co();return sE(()=>{let h=null;return a?h=setTimeout(()=>{l(!0)},pE):(l(!1),h&&clearTimeout(h)),()=>{h&&clearTimeout(h)}},[a]),co.createElement(gh,{expandMode:c?.variant==="full-expanded"?"full":"default",className:`${p} ${Bi()}`,id:Qe.EXPANDED_BOX_ID},co.createElement(aE,{title:iE.t("Routes"),suffix:co.createElement(co.Fragment,null,co.createElement(ua,{container:m}),co.createElement(Bo,{container:m,onClickRefresh:r,hidden:["history","notifications","settings"]}))}),co.createElement(hh,null,co.createElement(br,{showModalFee:!0,fetch:e,hasSort:!1,loading:o,container:Co(),onClickOnQuote:n,fullExpandedMode:u})))}i(yp,"ExpandedQuotes");import{i18n as wh}from"@lingui/core";import{SwapInput as xh}from"@rango-dev/ui";import dE from"bignumber.js";import Er from"react";import{ReverseIcon as mE}from"@rango-dev/ui";import Cp from"react";import{keyframes as cE,styled as yh}from"@rango-dev/ui";var Sp=450,uE=cE({"0%":{transform:"rotateX(0deg) rotateY(0deg) rotateZ(0deg)"},"33%":{transform:"rotateX(0deg) rotateZ(78deg) rotateY(66deg)"},"66%":{transform:"rotateX(0deg) rotateZ(163deg) rotateY(66deg)"},"100%":{transform:"rotateX(0deg) rotateZ(180deg) rotateY(0deg)"}}),Sh=yh("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)",cursor:"pointer"}),Ch=yh("div",{borderRadius:"$md",border:"3px solid $background",background:"$neutral100",width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center",color:"$foreground","&.rotate":{"& svg":{animation:`${uE} ${Sp}ms ease-in-out forwards`}},"&:hover":{color:"$secondary500",transform:"translateY(1px) scale(1.04)",boxShadow:"1px 1px 1px 1px rgba(0, 0, 0, 0.05)"}});function Tp(){let t=O.use.switchFromAndTo();return Cp.createElement(Sh,null,Cp.createElement(Ch,{onClick:e=>{let o=e.currentTarget;o.classList.add("rotate"),setTimeout(()=>{o.classList.remove("rotate")},Sp),t()}},Cp.createElement(mE,{size:12})))}i(Tp,"SwitchFromAndToButton");import{styled as Th}from"@rango-dev/ui";var kh=Th("div",{display:"flex",flexDirection:"column",gap:"$5",alignSelf:"stretch"}),vh=Th("div",{position:"relative"});function kp(t){let{fetchingQuote:e,fetchMetaStatus:o,onClickToken:n,isExpandable:r}=t,{fromToken:a,fromBlockchain:s,toToken:l,toBlockchain:p,setInputAmount:c,sanitizeInputAmount:u,inputAmount:m,inputUsdValue:h,outputAmount:g,outputUsdValue:d,selectedQuote:f}=O(),{connectedWallets:S,getBalanceFor:T}=C(),y=a?T(a):null,k=Vr(y)?.amount??"0",v=y?new dE(y.amount).shiftedBy(-y.decimals):me,b=!!s&&Fc(S,s.name),A=!ws(f,m,h),I=!ws(f,m,d),E=!h||!d||!d.gt(0)?null:zt(h.toString(),d.toString());return Er.createElement(kh,null,Er.createElement(vh,null,Er.createElement(xh,{label:wh.t("From"),mode:"From",onInputChange:c,onInputBlur:u,balance:k,chain:{displayName:s?.displayName||"",image:s?.logo},token:{displayName:a?.symbol||"",image:a?.image,securityWarning:!!a?.warning},onClickToken:()=>n("from"),price:{value:m,usdValue:A?void 0:_(h,4,4),realUsdValue:A?void 0:h?.toString(),error:A?oe().unknownPriceError.impactTitle:void 0},disabled:o==="failed",loading:o==="loading",loadingBalance:b,tooltipContainer:N(),onSelectMaxBalance:()=>{let x=_(v,y?.decimals),w=y?.amount?x.split(",").join(""):"";c(w)},anyWalletConnected:S.length>0}),Er.createElement(Tp,null)),Er.createElement(xh,{sharpBottomStyle:!r&&(!!f||e),label:wh.t("To"),mode:"To",fetchingQuote:e,chain:{displayName:p?.displayName||"",image:p?.logo},token:{displayName:l?.symbol||"",image:l?.image,securityWarning:!!l?.warning},percentageChange:_(zt(h,d),2,2),warningLevel:Qt(E??0),price:{value:_(g,6,6),usdValue:I?void 0:_(d,4,4),realValue:g?.toString(),realUsdValue:I?void 0:d?.toString(),error:I?oe().unknownPriceError.impactTitle:void 0},onClickToken:()=>n("to"),disabled:o==="failed",loading:o==="loading",tooltipContainer:N()}))}i(kp,"Inputs");import{useCallback as fE,useEffect as gE,useRef as hE,useState as yE}from"react";function bh(){let{fetch:t,loading:e,cancelFetch:o}=ea({request:async(n,r)=>await at().getAllRoutes(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(bh,"useFetchAllQuotes");var SE=600;function ma({refetchQuote:t}){let{fetch:e,cancelFetch:o}=bh(),{excludeLiquiditySources:n,routing:r}=C().config,{connectedWallets:a}=C(),l=a.some(le=>le.isContractWallet),{fromToken:p,toToken:c,inputAmount:u,inputUsdValue:m,selectedQuote:h,sortStrategy:g,resetQuote:d,error:f,warning:S,setSelectedQuote:T,updateQuotePartialState:y}=O(),{slippage:k,customSlippage:v,affiliatePercent:b,affiliateRef:A,affiliateWallets:I,fetchStatus:E}=C(),x=C().getLiquiditySources(),w=C().getDisabledLiquiditySources(),B=C().excludeLiquiditySources(),{findToken:P}=C(),[$,H]=yE(!0),R=hE(u),K=v??k,ae=!p||!c||Ft(p,c)||!Wn(u),re=i(le=>{H(le)},"resetState"),Q=i(le=>{let{fromToken:ue,toToken:se,inputAmount:Ze,liquiditySources:q,excludeLiquiditySources:W,disabledLiquiditySources:G,slippage:j,affiliateRef:ee,affiliatePercent:fe,affiliateWallets:Ue}=le;if($||re(!0),!ae&&ue&&se){d();let Je=wm({fromToken:ue,toToken:se,inputAmount:Ze,liquiditySources:q,excludeLiquiditySources:W,disabledLiquiditySources:G,wallets:a,slippage:j,affiliateRef:ee,affiliatePercent:fe,affiliateWallets:Ue,contractCall:l});jo("experimental",r)&&(Je.experimental=!0),jo("avoidNativeFee",r)&&(Je.avoidNativeFee=!0),jo("enableCentralizedSwappers",r)&&(Je.enableCentralizedSwappers=!0),r?.maxLength&&(Je.maxLength=r.maxLength),e(Je).then(xe=>{let ze=hi(g,xe.results),Zt=um(h,ze,xe.requestAmount);H(!1),y("quotes",xe),T(Zt),ta({diagnosisMessages:xe.diagnosisMessages,requestId:Zt?.requestId||"",swaps:Zt?.swaps});let yo=Zt&&cn({currentQuote:Zt,userSlippage:K,findToken:P});y("warning",yo)}).catch(xe=>{let{error:ze}=oa(xe);(ze?.type===0||ze?.type===1)&&d(),ze?.type!==2&&(y("error",ze),H(!1))})}},"fetch"),Z=fE(Or(le=>{Q(le)},SE),[ae]);return gE(()=>{if(!t){H(!1);return}if(E!=="success")return;if(ae){H(!1),(h||f||S)&&d();return}if(!Wn(u)&&m?.eq(0)){re(!1),o();return}d(),re(!0);let le=Q;return R.current&&R.current!=u&&(le=Z),R.current=u,le({inputAmount:u,fromToken:p,toToken:c,liquiditySources:x,excludeLiquiditySources:B,disabledLiquiditySources:w,slippage:K,affiliateRef:A,affiliatePercent:b,affiliateWallets:I,contractCall:l}),o},[E,u,p?.symbol,p?.address,p?.blockchain,c?.symbol,c?.address,c?.blockchain,ae,x?.length,n,w.length,K,A,b,l,JSON.stringify(I)]),{fetch:()=>Q({inputAmount:u,fromToken:p,toToken:c,liquiditySources:x,excludeLiquiditySources:B,disabledLiquiditySources:w,slippage:K,affiliateRef:A,affiliatePercent:b,affiliateWallets:I,contractCall:l}),loading:$}}i(ma,"useSwapInput");function Eh(t,e){let o=!1,n={preventDefault(){o=!0},...t.payload===void 0&&{payload:t.payload}};Te.emit("uiEvent",{type:t.type,payload:n}),o||e()}i(Eh,"emitPreventableEvent");var bE=kE("div",{display:"flex",alignItems:"flex-start",maxHeight:700,"& .footer__alert":{paddingTop:"0 !important"}}),EE=300;function Nh(){let t=xE(),{fromToken:e,toToken:o,inputAmount:n,selectedQuote:r,refetchQuote:a,error:s,warning:l,quotes:p,setSelectedQuote:c,resetQuoteWallets:u,setQuoteWarningsConfirmed:m,updateQuotePartialState:h}=O(),[g,d]=Ah(!1),{isLargeScreen:f,isExtraLargeScreen:S}=fn(),{fetch:T,loading:y}=ma({refetchQuote:a}),{config:k,fetchStatus:v,connectedWallets:b,customSlippage:A,slippage:I,setSlippage:E,setCustomSlippage:x}=C(),{isActiveTab:w}=te(),[B,P]=Ah(!1),H=Xo(A!==null?A:I),K=Cm({fetchMetaStatus:v,fetchingQuote:y,inputAmount:n,quote:r,anyWalletConnected:b.length>0,error:s,warning:l,needsToWarnEthOnPath:!1}),L=au(f,S,k?.variant),ae=!!n&&!!e&&!!o&&new wE(n).gt(0)&&!Bm(e,o),re=ae&&v==="success"&&y,Q=H?.quoteValidation||l,ue=(!L||L&&p?.results.length)&&(Q||s),se=!!e&&!!o,Ze=se&&!!H,q=(r||s)&&!B?T:void 0,W=i(ee=>{L&&g?(d(!1),setTimeout(()=>{t(ee)},EE)):t(ee)},"onHandleNavigation"),G=i(ee=>{r?.requestId!==ee.requestId&&(P(!1),c(ee))},"onClickOnQuote"),j=i(ee=>{ee&&(E(ee),x(null))},"onChangeSlippage");return Ih(()=>{u(),h("refetchQuote",!0)},[]),Ih(()=>{d(ae)},[ae]),Se.createElement(bE,null,Se.createElement(ie,{height:"auto",footer:Se.createElement(TE,{id:`widget-swap-${K.action}-btn`,type:"primary",size:"large",disabled:K.disabled||!w,prefix:K.action==="confirm-warning"&&Se.createElement(vE,null),fullWidth:!0,onClick:()=>{K.action==="connect-wallet"?Eh({type:"clickConnectWallet"},()=>W(F.wallets)):K.action==="confirm-warning"?P(!0):W(F.confirmSwap)}},K.title),header:{onWallet:()=>{W(F.wallets)},hasBackButton:!1,title:k.title||CE.t("Swap"),suffix:Se.createElement(Bo,{hidden:L?["refresh"]:void 0,onClickRefresh:q,onClickHistory:()=>W(F.swaps),onClickSettings:()=>{W(F.settings)}})}},Se.createElement(pe,null,Se.createElement(kp,{fetchingQuote:re,fetchMetaStatus:v,isExpandable:L,onClickToken:ee=>{W(ee==="from"?F.fromSwap:F.toSwap)}}),Se.createElement(vp,{size:"2"}),L?null:Se.createElement(Mo,{quote:r,loading:re,error:s,tagHidden:!1,warning:Q,type:"basic",onClickAllRoutes:p&&p.results.length>1?()=>{h("refetchQuote",!1),W(F.routes)}:void 0}),se&&Se.createElement(Se.Fragment,null,Se.createElement(vp,{size:8}),Se.createElement(fp,{quoteError:s,quoteWarning:Q,fromToken:e,toToken:o,quote:r,loading:re})),ue?Se.createElement(Se.Fragment,null,Se.createElement(ar,{warning:Q,error:s,skipAlerts:!!H,couldChangeSettings:!0,refetchQuote:T,showWarningModal:B,confirmationDisabled:!w,onOpenWarningModal:()=>P(!0),onCloseWarningModal:()=>P(!1),onChangeSlippage:j,onConfirmWarningModal:()=>{P(!1),m(!0),W(F.confirmSwap)},onChangeSettings:()=>W(F.settings)})):null,Ze&&Se.createElement(Se.Fragment,null,Se.createElement(vp,{size:"10"}),Se.createElement(oh,{onChangeSettings:()=>W(F.settings)})),Se.createElement(cp,null))),L?Se.createElement(yp,{loading:re,onClickOnQuote:G,fetch:T,onClickRefresh:q,isVisible:g}):null)}i(Nh,"Home");import{i18n as Bh}from"@lingui/core";import{Alert as IE,Divider as AE,List as NE,ListItemButton as BE,Radio as WE,RadioRoot as LE,Typography as ME}from"@rango-dev/ui";import _t from"react";function uo(){let{setLanguage:t,language:e,config:o}=C(),n=fu,r=o?.language||Yo;return{activeLanguage:e||r,languages:n,defaultLanguage:r,changeLanguage:a=>t(a||Yo),resetLanguage:()=>t(null)}}i(uo,"useLanguage");function Wh(){let{activeLanguage:t,changeLanguage:e,languages:o}=uo(),n=qe(),r=o.map(a=>{let{local:s,label:l,SVGFlag:p}=a;return{id:`widget-setting-languages-${s}-item-btn`,value:s,title:_t.createElement(ME,{variant:"title",size:"xmedium"},l),onClick:()=>{e(a.local),n()},end:_t.createElement(WE,{value:s}),start:_t.createElement(p,null)}});return _t.createElement(ie,{header:{title:Bh.t("Language")}},_t.createElement(pe,null,_t.createElement(IE,{type:"warning",variant:"alarm",title:"Warning: We are using machine translation, so the translations may be inaccurate."}),_t.createElement(AE,{size:"8"}),_t.createElement(LE,{value:t},_t.createElement(NE,{type:_t.createElement(BE,{title:Bh.t("language"),id:"_",onClick:()=>console.log()}),items:r}))))}i(Wh,"LanguagePage");import{i18n as jt}from"@lingui/core";import{Button as FE,Checkbox as OE,Image as UE,ListItemButton as zE,NotFound as QE,Typography as HE}from"@rango-dev/ui";import Ye,{useState as qE}from"react";import{Checkbox as DE,Skeleton as Mh}from"@rango-dev/ui";import Ar from"react";import{styled as wp}from"@rango-dev/ui";var Ir=wp("ul",{padding:"$15 $5 0",margin:0,listStyle:"none",height:"100%",overflowY:"auto",variants:{disabled:{true:{pointerEvents:"none"}}}}),xp=wp("div",{width:80,display:"flex",justifyContent:"flex-end"}),bp=wp("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%"});import{ListItem as PE,styled as _E}from"@rango-dev/ui";var Lh=_E(PE,{height:61});var $E=30;function Ep(){return Ar.createElement(Ir,null,Array.from(Array($E),(t,e)=>Ar.createElement(Lh,{hasDivider:!0,key:e,start:Ar.createElement(Mh,{variant:"circular",width:35,height:35}),title:Ar.createElement(Mh,{variant:"text",size:"large",width:90}),end:Ar.createElement(DE,{checked:!1})})))}i(Ep,"LoadingLiquiditySourceList");function Ip({sourceType:t}){let e=C().fetchStatus,o=C().swappers(),n=C().getDisabledLiquiditySources(),[r,a]=qE(""),s=C().toggleLiquiditySource,l=C().isInCampaignMode(),p=ti(o,n),c={Exchanges:jt.t("Exchanges"),Bridges:jt.t("Bridges")},u=[];t==="Exchanges"&&u.push("DEX"),t==="Bridges"&&u.push("BRIDGE","AGGREGATOR","OFF_CHAIN");let m=p.filter(T=>u.includes(T.type)),h=m.length===m.filter(T=>T.selected).length,g=i(()=>{m.forEach(T=>{h?s(T.groupTitle):T.selected||s(T.groupTitle)})},"toggleAllSources"),d=m.map(T=>{let{selected:y,groupTitle:k,logo:v,id:b,...A}=T;return{id:`widget-setting-liquidity-source-${Ec(b.toLowerCase())}-item-btn`,start:Ye.createElement(UE,{src:v,size:22,type:"circular"}),onClick:()=>{l||s(k)},end:Ye.createElement(OE,{checked:y,disabled:l}),title:Ye.createElement(HE,{variant:"title",size:"xmedium"},jt.t(k)),selected:y,groupTitle:k,logo:v,...A}}),f=i(T=>{let y=T.target.value;a(y)},"handleSearch"),S=d;return r&&(S=d.filter(T=>Nt(T.groupTitle,r))),Ye.createElement(ie,{header:{title:jt.t(t),suffix:Ye.createElement(xp,null,Ye.createElement(FE,{id:`widget-liquidity-source-${h?"deselect-all":"select-all"}-btn`,variant:"ghost",size:"xsmall",onClick:g},h?jt.t("Deselect all"):jt.t("Select all")))}},Ye.createElement(pe,{view:!0},Ye.createElement(Et,{value:r,setValue:a,fullWidth:!0,color:"light",variant:"contained",placeholder:jt.t("Search {sourceType}",{sourceType:c[t]}),onChange:f}),e==="loading"&&Ye.createElement(Ep,null),!S.length&&r?Ye.createElement(bp,null,Ye.createElement(QE,{title:jt.t("No results found"),description:jt.t("Try using different keywords")})):e==="success"&&Ye.createElement(Ir,{disabled:l},S.map(T=>{let{groupTitle:y,...k}=T;return Ye.createElement(Ye.Fragment,{key:T.id},Ye.createElement(zE,{style:{height:"61px"},...k,selected:!1,hasDivider:!0}))}))))}i(Ip,"LiquiditySourcePage");import{i18n as GE}from"@lingui/core";import da from"react";import{useNavigate as VE}from"react-router-dom";function Ph(){let t=VE(),e=qe(),{selectedQuote:o,refetchQuote:n,setSelectedQuote:r,updateQuotePartialState:a,error:s}=O(),{fetch:l,loading:p}=ma({refetchQuote:n}),c=i(h=>{r(h),a("refetchQuote",!1),e()},"onClickOnQuote"),u=`../${F.settings}`,m=`../${F.wallets}`;return da.createElement(ie,{header:{onWallet:()=>{t(m),a("refetchQuote",!0)},onBack:()=>{a("refetchQuote",!1)},title:GE.t("Routes"),suffix:da.createElement(Bo,{onClickRefresh:o||s?l:void 0,hidden:["notifications","history"],onClickSettings:()=>{t(u),a("refetchQuote",!0)}})}},da.createElement(pe,null,da.createElement(br,{fetch:l,loading:p,onClickOnQuote:c})))}i(Ph,"RoutesPage");import{i18n as zh}from"@lingui/core";import{Divider as Qh,getCategoriesCount as oI,SelectableCategoryList as nI}from"@rango-dev/ui";import Xt,{useState as Hh}from"react";import{useNavigate as rI}from"react-router-dom";import{i18n as Ap}from"@lingui/core";import{Divider as YE,Image as ZE,ListItemButton as JE,NotFound as RE,Typography as Uh}from"@rango-dev/ui";import mt,{useEffect as eI,useState as tI}from"react";var _h=i((t,e,o)=>t.filter(n=>Ur(n.type,o)).filter(n=>rt(n.name,e)||rt(n.displayName,e)),"filterBlockchains");import{ImageContainer as KE,styled as Dh}from"@rango-dev/ui";var $h=Dh("div",{display:"flex",flexDirection:"column",overflow:"hidden",height:"100%",justifyContent:"center"}),fa=Dh(il,{padding:0,margin:0,listStyle:"none",[`& ${KE}`]:{borderRadius:"$xm",overflow:"hidden"}});import{ListItem as jE,Skeleton as Fh}from"@rango-dev/ui";import ga from"react";var XE=20;function Oh(){return ga.createElement(fa,null,Array.from(Array(XE),t=>ga.createElement(jE,{key:t,hasDivider:!0,start:ga.createElement(Fh,{variant:"circular",width:35,height:35}),title:ga.createElement(Fh,{variant:"text",size:"large",width:90})})))}i(Oh,"LoadingBlockchainList");function Np(t){let{list:e,searchedFor:o,onChange:n,blockchainCategory:r,showTitle:a=!0}=t,[s,l]=tI(e),{fetchStatus:p}=C();eI(()=>{l([..._h(e,o,r)])},[e,o,r]);let c=i(()=>!s.length&&o?mt.createElement(RE,{title:Ap.t("No results found"),description:Ap.t("Try using different keywords")}):mt.createElement(fa,{as:"ul",key:`${r}-${o}`},s.map(u=>mt.createElement(JE,{key:`${u.name}-${u.chainId}`,className:"widget-blockchain-list-item-btn",hasDivider:!0,onClick:()=>n(u),start:mt.createElement(ZE,{src:u.logo,size:30}),title:mt.createElement(Uh,{variant:"title",size:"medium"},u.displayName),id:u.name}))),"renderList");return mt.createElement(mt.Fragment,null,a&&mt.createElement(mt.Fragment,null,mt.createElement(Uh,{variant:"label",size:"large"},Ap.t("Select Chain")),mt.createElement(YE,{size:4})),mt.createElement($h,null,p==="loading"&&mt.createElement(Oh,null),p==="success"&&c()))}i(Np,"BlockchainList");function ha(t){let{type:e}=t,o=qe(),[n,r]=Hh(""),[a,s]=Hh("ALL"),l=O.use.setToBlockchain(),p=O.use.setFromBlockchain(),{fetchStatus:c}=C(),u=rI(),m=C().blockchains({type:e}),h=oI(m),g=!t.hideCategory&&h!==1;return Xt.createElement(ie,{header:{title:zh.t("Select Chain")}},Xt.createElement(pe,{view:!0},g&&Xt.createElement(Xt.Fragment,null,Xt.createElement(nI,{setCategory:s,category:a,blockchains:m,isLoading:c==="loading"}),Xt.createElement(Qh,{size:24})),Xt.createElement(Et,{value:n,autoFocus:!0,placeholder:zh.t("Search Chain"),color:"light",variant:"contained",size:"large",setValue:()=>r(""),onChange:d=>r(d.target.value)}),Xt.createElement(Qh,{size:16}),Xt.createElement(Np,{list:m,showTitle:e!=="custom-token",searchedFor:n,blockchainCategory:a,onChange:d=>{e==="custom-token"?u(`..?blockchain=${d.name}`,{replace:!0}):(e==="source"?p(d):l(d),o())}})))}i(ha,"SelectBlockchainPage");import{i18n as Ca}from"@lingui/core";import{Divider as Yh,Spinner as CI}from"@rango-dev/ui";import mo,{useEffect as TI,useState as kI}from"react";import{useNavigate as vI}from"react-router-dom";import{i18n as Lp}from"@lingui/core";import{BlockchainsChip as ya,Divider as Kh,Image as jh,Skeleton as cI,Tooltip as uI,Typography as Mp}from"@rango-dev/ui";import be from"react";import{useEffect as sI}from"react";var qh=["ETH","COSMOS","OSMOSIS"];function Bp(t,e,o){let n=JSON.parse(JSON.stringify(t)),r=[];if(n.sort(iI),o?.limit&&t.length>o.limit){let a=o.limit,s=e;if(e.length<=o.limit){let l=o.limit-e.length;for(let p=0;p<=l;p++){let c=n[p];s=s.filter(u=>c.name!==u)}}n.sort(aI(s)),r=n.splice(a)}return{list:n,more:r}}i(Bp,"prepare");function iI(t,e){let o=qh,n=o.findIndex(l=>l===t.name),r=o.findIndex(l=>l===e.name),a=n>-1,s=r>-1;return a&&s?n>r?1:-1:a?-1:s?1:0}i(iI,"sortByMostUsedBlockchains");function aI(t){return i(function(o,n){let r=t.findIndex(p=>p===o.name),a=t.findIndex(p=>p===n.name),s=r>-1,l=a>-1;return s&&l?r>a?1:-1:t.includes(o.name)?-1:t.includes(n.name)?1:0},"sortByPreferred")}i(aI,"generateSortByPreferredBlockchainsFor");function Gh(t,e){return!!e.list.find(o=>o.name===t)}i(Gh,"isInVisibleList");function Wp(t,e){let{preferredBlockchains:o,addPreferredBlockchain:n}=C();sI(()=>{if(e?.selected){let a=Bp(t,o,e);Gh(e.selected,a)||n(e?.selected)}},[e?.selected]);let r=Bp(t,o,e);return{list:r.list,more:r.more,history:[]}}i(Wp,"usePrepareBlockchainList");import{styled as lI}from"@rango-dev/ui";var Vh=lI("div",{display:"grid",gap:"$10",gridTemplateColumns:"repeat(6, minmax(0, 1fr))"});var mI=6,dI=12;function Pp(t){let{blockchains:e,type:o,blockchain:n,onChange:r,onMoreClick:a}=t,{showCompactTokenSelector:s}=te(),l=Wp(e,{limit:s?4:10,selected:n?.name}),{fetchStatus:p}=C(),c=O.use.resetToBlockchain(),u=O.use.resetFromBlockchain(),m=l.more.length>0,h=l.more.length===1,g=!h&&m;return be.createElement(be.Fragment,null,!s&&be.createElement(be.Fragment,null,be.createElement(Kh,{size:12}),be.createElement(Mp,{variant:"label",size:"large"},Lp.t("Select Chain"))),be.createElement(Kh,{size:12}),be.createElement(Vh,null,p==="loading"&&Array.from(Array(s?mI:dI),(d,f)=>be.createElement(cI,{key:f,variant:"rounded",height:50})),p==="success"&&be.createElement(be.Fragment,null,be.createElement(ya,{selected:!n,onClick:()=>{o==="from"?u():c()}},be.createElement(Mp,{variant:"body",size:"xsmall",color:"secondary500"},Lp.t("All"))),l.list.map(d=>be.createElement(uI,{key:d.name,content:d.shortName,side:"bottom",sideOffset:2,container:N()},be.createElement(ya,{key:d.name,selected:!!n&&n.name===d.name,onClick:()=>r(d)},be.createElement(jh,{src:d.logo,size:30})))),h?be.createElement(ya,{key:l.more[0].name,selected:!!n&&n.name===l.more[0].name,onClick:()=>r(l.more[0])},be.createElement(jh,{src:l.more[0].logo,size:30})):null,g?be.createElement(ya,{onClick:a,key:"more-blockchains"},be.createElement(Mp,{variant:"body",size:"xsmall",color:"secondary500"},Lp._("More +{count}",{count:l.more.length}))):null)))}i(Pp,"BlockchainsSection");import{useCallback as gI,useRef as hI,useState as _p}from"react";function Dp(){let t=C().blockchains(),e=hI(null),{customTokens:o}=C(),[n,r]=_p(!1),[a,s]=_p([]),[l,p]=_p(null),c=i(async(h,g)=>{p(null),r(!0),s([]);try{let d=await at().searchCustomTokens({query:h,blockchain:g},{signal:e.current?.signal}),f=new Set(o().map(y=>Ut(y))),S=new Set(t.map(y=>y.name)),T=d.tokens.filter(y=>S.has(y.blockchain)&&!f.has(Ut(y)));s(T),r(!1)}catch(d){p(d instanceof Error?d.message:"something went wrong"),s([]),d?.name!=="CanceledError"&&r(!1)}},"fetch"),u=gI(Or((h,g)=>{e.current?.signal.aborted||c(h,g)},600),[t.length]);return{fetch:(h,g)=>{e.current=new AbortController,s([]),r(!0),u(h,g)},cancel:i(()=>{e.current?.abort()},"cancel"),loading:n,tokens:a,error:l}}i(Dp,"useSearchCustomTokens");function Sa(t,e,o){return o&&t.length===1&&t[0].address===e?!1:t.length<20&&e.trim().length>=3}i(Sa,"shouldSearchForCustomTokens");function Xh(t,e,o,n,r){let a=[...t];return Sa(t,o,r)&&(a=n?[...a,"skeleton","skeleton","skeleton"]:[...a,...e.map(s=>({...s,customToken:!0,warning:!0}))]),a}i(Xh,"prepareTokensList");function Ta(t){let{type:e}=t,o=vI(),n=qe(),{fromBlockchain:r,toBlockchain:a,setFromToken:s,setToToken:l,setFromBlockchain:p,setToBlockchain:c}=O(),{getBalanceFor:u}=C(),{fetch:m,loading:h,tokens:g,cancel:d}=Dp(),[f,S]=kI(""),T=e==="source"?r:a,y=T?.name??"",k=C().blockchains({type:e}),v=C().tokens({type:e,blockchain:y,searchFor:f,getBalanceFor:u}),b=Xh(v,g,f,h,T?.name),A=i(x=>{e==="source"?p(x):c(x)},"updateBlockchain"),I=i(x=>{e==="source"?s({token:x,meta:{blockchains:k}}):l({token:x,meta:{blockchains:k}})},"updateToken"),E={source:Ca.t("Source"),destination:Ca.t("Destination")};return TI(()=>(Sa(v,f,T?.name)&&m(f,T?.name??void 0),()=>{d()}),[v.length,f,T?.name]),mo.createElement(ie,{header:{title:Ca.t("Swap {type}",{type:E[e]})}},mo.createElement(pe,null,mo.createElement(Pp,{blockchains:k,type:e=="source"?"from":"to",blockchain:e==="source"?r:a,onMoreClick:()=>o(F.blockchains),onChange:x=>{A(x)}}),mo.createElement(Yh,{size:24}),mo.createElement(Et,{value:f,autoFocus:!0,placeholder:Ca.t("Search Token"),color:"light",variant:"contained",size:"large",setValue:()=>S(""),onChange:x=>S(x.target.value),suffix:Sa(v,f,T?.name)&&h?mo.createElement(CI,{size:12,color:"secondary"}):void 0}),mo.createElement(Yh,{size:16}),mo.createElement(Sr,{list:b,selectedBlockchain:y,searchedFor:f,type:e,onChange:x=>{I(x);let w=k.find(B=>x.blockchain===B.name);w&&A(w),n()}})))}i(Ta,"SelectSwapItemsPage");import{i18n as Up}from"@lingui/core";import{Alert as XI,Button as YI,styled as ZI}from"@rango-dev/ui";import Fo from"react";import{useInRouterContext as JI,useSearchParams as RI}from"react-router-dom";import{i18n as ny}from"@lingui/core";import{Alert as EI,Divider as Fp,InfoIcon as II,SlippageIcon as AI,TextField as NI,Tooltip as BI,Typography as ry}from"@rango-dev/ui";import $e from"react";import{Chip as wI,styled as En,TextField as xI}from"@rango-dev/ui";var Zh=En("div",{paddingTop:"$5",padding:"$10 $5"}),Jh=En("div",{display:"flex",flexWrap:"wrap",gap:"$10",[`& ${xI}`]:{flex:"1 1 0",maxWidth:"127px",minWidth:"85px"}}),Rh=En("div",{display:"flex",justifyContent:"start",alignItems:"center",paddingBottom:"$10"}),ka=En("div",{maxWidth:"280px",padding:"$10"}),ey=En(wI,{width:"61px",flexShrink:0}),ty=En("div",{borderWidth:1,borderStyle:"solid",borderRadius:"$xs",flex:1,variants:{status:{safe:{borderColor:"$secondary500"},error:{borderColor:"$error500"},warning:{borderColor:"$warning500"},empty:{borderWidth:0}}}});import{i18n as $p}from"@lingui/core";import{Typography as bI}from"@rango-dev/ui";import Nr from"react";function oy(){return Nr.createElement(ka,null,Nr.createElement(bI,{variant:"label",size:"medium",color:"neutral700"},$p.t("Your transaction will be reverted if the price changes unfavorably by more than this percentage."),Nr.createElement("br",null),Nr.createElement("br",null),Nr.createElement("b",null,$p.t("Warning")),":\xA0",$p.t("This setting is applied to each step (e.g. 1Inch, Thorchain, etc.), meaning only that specific step will be reverted, not the entire route.")))}i(oy,"SlippageTooltipContent");function Op(){let{slippage:t,setSlippage:e,customSlippage:o,setCustomSlippage:n}=C(),r=o!==null?Xo(o):null,a=i(p=>{let c=p.target.value,u=parseFloat(c);if(isNaN(u))return n(null);let m=u;u>Fn&&(m=Fn),n(m)},"onSlippageValueChange"),s=i(p=>{o!==null&&n(null),e(p)},"onClickSlippageChip"),l=i(p=>{let c=p.target,u=c.value;Ac(u)||(c.value=u.slice(0,-1))},"onInput");return $e.createElement(Zh,null,$e.createElement(Rh,null,$e.createElement(AI,{size:16,color:"gray"}),$e.createElement(Fp,{direction:"horizontal",size:4}),$e.createElement(ry,{variant:"title",size:"xmedium"},ny.t("Slippage tolerance per swap")),$e.createElement(Fp,{direction:"horizontal",size:4}),$e.createElement(BI,{container:N(),side:"top",sideOffset:4,content:$e.createElement(oy,null)},$e.createElement(II,{color:"gray"}))),$e.createElement(Jh,null,su.map((p,c)=>{let u=`slippage-${c}`;return $e.createElement(ey,{key:u,onClick:()=>s(p),selected:o===null&&p===t,label:`${p.toString()}%`})}),$e.createElement(ty,{status:r?.type||(o?"safe":"empty")},$e.createElement(NI,{type:"number",min:"0.01",max:"30",step:"0.01",onInput:l,fullWidth:!0,variant:"contained",value:o===null?"":o,color:"dark",onChange:a,suffix:o&&$e.createElement(ry,{variant:"body",size:"small"},"%"),placeholder:ny.t("Custom")}))),r&&$e.createElement($e.Fragment,null,$e.createElement(Fp,{size:10}),$e.createElement(EI,{variant:"alarm",type:r.type,title:r.message})))}i(Op,"Slippage");import{i18n as Ct}from"@lingui/core";import{AutoThemeIcon as iy,BridgesIcon as WI,ChevronRightIcon as va,DarkModeIcon as ay,Divider as Br,ExchangeIcon as LI,InfinityIcon as MI,InfoIcon as PI,LanguageIcon as _I,LightModeIcon as sy,List as DI,ListItem as $I,ListItemButton as FI,Skeleton as OI,styled as UI,Switch as zI,Tabs as QI,TargetIcon as HI,Tooltip as qI,Typography as nt}from"@rango-dev/ui";import D from"react";import{useNavigate as GI}from"react-router-dom";var VI=UI("div",{width:"202px",height:"$40"}),KI=[{id:"light",icon:D.createElement(sy,{color:"black",size:24}),tooltip:D.createElement(nt,{size:"xsmall",variant:"body"},Ct.t("Light"))},{id:"dark",icon:D.createElement(ay,{color:"black",size:24}),tooltip:D.createElement(nt,{size:"xsmall",variant:"body"},Ct.t("Dark"))},{id:"auto",icon:D.createElement(iy,{color:"black",size:24}),tooltip:D.createElement(nt,{size:"xsmall",variant:"body"},Ct.t("Auto"))}],jI=i(t=>{let e={color:"gray",size:16};switch(t){case"auto":return D.createElement(iy,{...e});case"dark":return D.createElement(ay,{...e});default:return D.createElement(sy,{...e})}},"getThemeIcon");function ly(){let t=GI(),{theme:e}=C().config,{setTheme:o,theme:n}=C(),{activeLanguage:r,languages:a}=uo(),s=a.find(L=>L.local===r)?.label,l=C().fetchStatus,p=C().swappers(),c=C().getDisabledLiquiditySources(),{config:{features:u}}=C(),m=C().customTokens(),h=Re("theme",u),g=Re("liquiditySource",u),d=Re("language",u),f=Re("customTokens",u),S=C().infiniteApprove,T=C().toggleInfiniteApprove,y=ti(p,c),k=y.filter(L=>["BRIDGE","AGGREGATOR","OFF_CHAIN"].includes(L.type)),v=k.length,b=k.filter(L=>L.selected).length,A=y.filter(L=>L.type==="DEX"),I=A.length,E=A.filter(L=>L.selected).length,x=i((L,ae)=>{switch(l){case"loading":return D.createElement(OI,{variant:"text",size:"medium",width:50});case"failed":return D.createElement(nt,{variant:"body",size:"medium",color:"$error500"},Ct.t("Loading failed"));default:return D.createElement(nt,{variant:"body",size:"medium"},`${L} / ${ae}`)}},"handleSwapperEndItem"),w={id:"widget-setting-bridge-item-btn",title:D.createElement(nt,{variant:"title",size:"xmedium"},Ct.t("Bridges")),end:D.createElement(D.Fragment,null,x(b,v),D.createElement(Br,{direction:"horizontal",size:8}),D.createElement(va,{color:"black"})),onClick:()=>t(F.bridges),start:D.createElement(WI,{color:"gray",size:16})},B={id:"widget-setting-exchange-item-btn",title:D.createElement(nt,{variant:"title",size:"xmedium"},Ct.t("Exchanges")),end:D.createElement(D.Fragment,null,x(E,I),D.createElement(Br,{direction:"horizontal",size:8}),D.createElement(va,{color:"black"})),start:D.createElement(LI,{color:"gray",size:16}),onClick:()=>t(F.exchanges)},P={id:"widget-setting-custom-tokens-item-btn",title:D.createElement(nt,{variant:"title",size:"xmedium"},Ct.t("Custom Tokens")),end:D.createElement(D.Fragment,null,D.createElement(nt,{variant:"body",size:"medium"},`${m.length}`),D.createElement(Br,{direction:"horizontal",size:8}),D.createElement(va,{color:"black"})),start:D.createElement(HI,{color:"gray",size:16}),onClick:()=>t(F.customTokens)},$={id:"widget-setting-language-item-btn",title:D.createElement(nt,{variant:"title",size:"xmedium"},Ct.t("Language")),start:D.createElement(_I,{color:"gray",size:16}),end:D.createElement(D.Fragment,null,D.createElement(nt,{variant:"body",size:"medium"},s),D.createElement(Br,{direction:"horizontal",size:8}),D.createElement(va,{color:"black"})),onClick:()=>t(F.languages)},H={id:"widget-setting-infinite-approval-item-btn",title:D.createElement(D.Fragment,null,D.createElement(nt,{variant:"title",size:"xmedium"},Ct.t("Infinite approval")),D.createElement(Br,{direction:"horizontal",size:4}),D.createElement(qI,{side:"top",sideOffset:4,container:N(),content:D.createElement(ka,null,D.createElement(nt,{variant:"label",size:"medium",color:"neutral700"},D.createElement("b",null,Ct.t("Warning")),":\xA0",Ct.t("Enabling the 'Infinite approval' mode grants unrestricted access to underlying smart contracts, allowing them to utilize the approved token amount without limitations.")))},D.createElement(PI,{color:"gray"}))),start:D.createElement(MI,{color:"gray",size:16}),end:D.createElement(zI,{checked:S}),onClick:T},R={id:"widget-setting-theme-item-btn",type:D.createElement($I,null),title:D.createElement(nt,{variant:"title",size:"xmedium"},Ct.t("Theme")),end:D.createElement(VI,null,D.createElement(QI,{container:N(),items:KI,value:n,onChange:L=>o(L.id),type:"primary",borderRadius:"small"})),start:jI(n)},K=g?[]:[w,B];return f||K.push(P),d||K.push($),K.push(H),!e?.singleTheme&&!h&&K.push(R),D.createElement(DI,{type:D.createElement(FI,{hasDivider:!0,id:"_",onClick:()=>console.log()}),items:K})}i(ly,"SettingsLists");var eA=ZI("div",{paddingLeft:"$8"});function py(){let{isInCampaignMode:t,updateCampaignMode:e}=C(),o=t(),[,n]=RI(),r=JI(),a=i(()=>{r&&o&&(n(s=>(s.delete("liquiditySources"),s),{replace:!0}),e("liquiditySources",void 0))},"onClick");return Fo.createElement(ie,{header:{title:Up.t("Settings")}},Fo.createElement(pe,null,o&&Fo.createElement(XI,{type:"info",variant:"alarm",title:Up.t("Currently, you're in campaign mode with restrictions on liquidity sources. Would you like to switch out of this mode and make use of all available liquidity sources?"),action:Fo.createElement(eA,null,Fo.createElement(YI,{id:"widget-setting-exit-campaign-mode-btn",type:"secondary",size:"small",onClick:a},Up.t("Reset")))}),Fo.createElement(Op,null),Fo.createElement(ly,null)))}i(py,"SettingsPage");import{i18n as qA}from"@lingui/core";import{cancelSwap as GA}from"@rango-dev/queue-manager-rango-preset";import{useManager as VA}from"@rango-dev/queue-manager-react";import{Alert as KA}from"@rango-dev/ui";import nc from"react";import{useParams as jA}from"react-router-dom";import{i18n as dt}from"@lingui/core";import{getCurrentNamespaceOfOrNull as bA,getCurrentStep as EA,getRelatedWalletOrNull as IA}from"@rango-dev/queue-manager-rango-preset";import{Button as Gy,CopyIcon as AA,Divider as NA,DoneIcon as BA,IconButton as WA,QuoteCost as LA,RangoExplorerIcon as MA,StepDetails as PA,Tooltip as Vy,Typography as Oo,useCopyToClipboard as _A}from"@rango-dev/ui";import{useWallets as DA}from"@rango-dev/wallets-react";import Ky from"bignumber.js";import{PendingSwapNetworkStatus as Na}from"rango-types";import Y,{useEffect as jy,useRef as $A,useState as Xy}from"react";import{useNavigate as FA}from"react-router-dom";import{i18n as fo}from"@lingui/core";var tA=[fo.t("Sunday"),fo.t("Monday"),fo.t("Tuesday"),fo.t("Wednesday"),fo.t("Thursday"),fo.t("Friday"),fo.t("Saturday")];function cy(t){let e=new Date(t),o=e.getDate(),n=e.toLocaleString("default",{month:"long"}),r=e.getFullYear();return`${e.getDay()===new Date().getDay()?fo.t("Today"):`${tA[e.getDay()]} ${o} ${n} ${r}`}, ${new Date(t).toLocaleTimeString()}`}i(cy,"timeSince");function uy(t){return t.finishTime?cy(parseInt(t.finishTime)):cy(parseInt(t.creationTime))}i(uy,"getSwapDate");import{PendingSwapNetworkStatus as ba}from"rango-types";import Ea from"react";import{i18n as wa}from"@lingui/core";import{Button as my,Divider as zp,MessageBox as oA}from"@rango-dev/ui";import go from"react";var dy=i(({onCancel:t,onClose:e})=>go.createElement(go.Fragment,null,go.createElement(zp,{size:20}),go.createElement(oA,{type:"error",title:wa.t("Cancel Swap"),description:wa.t("Are you sure you want to cancel this swap?")}),go.createElement(zp,{size:32}),go.createElement(my,{variant:"contained",id:"widget-swap-details-modal-cancel-swap-yes-btn",type:"primary",size:"large",onClick:t},wa.t("Yes, Cancel it")),go.createElement(zp,{size:12}),go.createElement(my,{id:"widget-swap-details-modal-cancel-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},wa.t("No, Continue"))),"CancelContent");import{i18n as xa}from"@lingui/core";import{Button as fy,Divider as Qp,MessageBox as nA,Typography as rA}from"@rango-dev/ui";import Yt from"react";var gy=i(({onDelete:t,onClose:e})=>Yt.createElement(Yt.Fragment,null,Yt.createElement(Qp,{size:20}),Yt.createElement(nA,{type:"error",title:xa.t("Delete Transaction"),description:xa.t("Are you sure you want to delete this swap?")}),Yt.createElement(Qp,{size:32}),Yt.createElement(fy,{id:"widget-swap-details-modal-delete-swap-yes-btn",variant:"contained",type:"primary",size:"large",onClick:t},xa.t("Yes, Delete it")),Yt.createElement(Qp,{size:12}),Yt.createElement(fy,{id:"widget-swap-details-modal-delete-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},Yt.createElement(rA,{variant:"title",size:"medium",color:"primary"},xa.t("No, Cancel")))),"DeleteContent");import{i18n as Hp}from"@lingui/core";import{PendingSwapNetworkStatus as qp}from"rango-types";var Gp={[qp.WaitingForNetworkChange]:{type:"loading",title:Hp.t("Change Network")},[qp.WaitingForConnectingWallet]:{type:"warning",title:Hp.t("Connect Wallet")},[qp.NetworkChanged]:{type:"success",title:Hp.t("Network Changed")}};import{warn as iA}from"@rango-dev/logging-core";import{getCurrentStep as aA,getRelatedWalletOrNull as sA}from"@rango-dev/queue-manager-rango-preset";import{MessageBox as lA,Wallet as pA}from"@rango-dev/ui";import{useWallets as cA}from"@rango-dev/wallets-react";import In,{useState as uA}from"react";import{styled as Vp}from"@rango-dev/ui";var hy=Vp("div",{display:"flex",justifyContent:"center"}),qj=Vp("div",{maxWidth:280,"& ._typography":{wordWrap:"break-word",display:"block"}}),yy=Vp("img",{width:"100%"});var Sy=i(t=>{let{type:e,title:o,swap:n,message:r,showWalletButton:a,walletButtonDisabled:s}=t,[l,p]=uA(),{getWalletInfo:c,state:u}=cA(),m=aA(n),h=m?sA(n,m):null,g=m?.fromBlockchain,d=h?.walletType,f=d?Ln(u(d)):null,S=d?c(d):null,T=a&&!!d&&!!f&&!!S,{list:y}=Tt(),k=i(()=>{if(d){let v=y.find(b=>b.type===d);v?p(v):iA(new Error(`It seems requested wallet to be connected is not available in the list. requested wallet: ${v}`))}},"handleWalletItemClick");return In.createElement(In.Fragment,null,In.createElement(lA,{type:e,title:o,description:r}),T&&In.createElement(hy,null,In.createElement(pA,{container:N(),title:S.name,image:S.img,type:d,state:f,link:S.installLink,disabled:s,onClick:k})),In.createElement(bo,{wallet:l,onClose:()=>{p(void 0)},options:{defaultSelectedChains:g?[g]:void 0}}))},"WalletStateContent");function Kp(t){let{state:e,onClose:o,onDelete:n,onCancel:r,swap:a,message:s,walletButtonDisabled:l}=t,p=e===ba.WaitingForNetworkChange||e===ba.WaitingForConnectingWallet||e===ba.NetworkChanged;return Ea.createElement(J,{open:!!e,onClose:o,container:document.getElementById(Qe.SWAP_BOX_ID)||document.body},p&&Ea.createElement(Sy,{type:Gp[e].type,title:Gp[e].title,swap:a,message:s,walletButtonDisabled:l,showWalletButton:e!==ba.WaitingForNetworkChange}),e==="delete"&&Ea.createElement(gy,{onClose:o,onDelete:n}),e==="cancel"&&Ea.createElement(dy,{onClose:o,onCancel:r}))}i(Kp,"SwapDetailsModal");import{i18n as Wr}from"@lingui/core";import{Button as jp,Divider as Lr,MessageBox as ky,TokenAmount as mA,Typography as vy}from"@rango-dev/ui";import Ce from"react";import{Link as dA,useNavigate as fA}from"react-router-dom";var Cy="https://raw.githubusercontent.com/rango-exchange/assets/main/banners/widget/profile.jpg",Ty="/profile";function Xp(t){let{open:e,onClose:o,status:n,priceValue:r,usdValue:a,realUsdValue:s,realValue:l,token:p,chain:c,percentageChange:u,description:m,diagnosisUrl:h}=t,g=fA(),{showProfileBanner:d}=te();return Ce.createElement(J,{open:e,onClose:o,container:document.getElementById(Qe.SWAP_BOX_ID)||document.body},n==="success"?Ce.createElement(ky,{type:"success",title:Wr.t("Swap Successful")},Ce.createElement(mA,{direction:"vertical",tooltipContainer:N(),type:"output",centerAlign:!0,price:{value:r,usdValue:a,realUsdValue:s,realValue:l},token:p,chain:c,percentageChange:u}),Ce.createElement(Lr,{size:12}),Ce.createElement(vy,{variant:"body",size:"medium",color:"neutral700",align:"center"},m)):Ce.createElement(ky,{type:"error",title:Wr.t("Transaction Failed"),description:m}),Ce.createElement(Lr,{size:30}),n==="success"&&Ce.createElement(Ce.Fragment,null,d&&Ce.createElement(Ce.Fragment,null,Ce.createElement(dA,{to:Ty},Ce.createElement(yy,{src:Cy,alt:"Profile Banner"})),Ce.createElement(Lr,{size:30})),Ce.createElement(jp,{id:"widget-swap-details-modal-done-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{g("../../")}},Wr.t("Done"))),Ce.createElement(Lr,{size:12}),h&&Ce.createElement(Ce.Fragment,null,Ce.createElement(jp,{variant:"contained",id:"widget-swap-detail-modal-diagnosis-btn",type:"primary",size:"large",onClick:()=>window.open(h,"_blank")},Wr.t("Diagnosis")),Ce.createElement(Lr,{size:12})),Ce.createElement(jp,{id:"widget-swap-details-modal-see-details-btn",variant:"outlined",type:"primary",size:"large",onClick:o},Ce.createElement(vy,{variant:"title",size:"medium",color:"primary"},Wr.t("See Details"))))}i(Xp,"SwapDetailsCompleteModal");import xA from"react";import{i18n as TA}from"@lingui/core";import{Alert as zy,IconButton as kA,LinkIcon as vA}from"@rango-dev/ui";import ho,{Fragment as wA}from"react";import{Alert as hA,ChevronDownIcon as yA,IconButton as SA}from"@rango-dev/ui";import Nn,{useState as CA}from"react";import{css as Mr,darkTheme as wy,styled as Dt,Typography as gA}from"@rango-dev/ui";var xy=Dt(pe,{overflowY:"auto","& ._icon-button":{"&:hover":{"& svg":{color:"$secondary550",[`.${wy} &`]:{color:"$secondary500"}}}}}),by=Dt("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden"}),Ey=Dt("div",{position:"sticky",top:0,zIndex:10,backgroundColor:"$background"}),Iy=Dt("div",{padding:"$0 $20 $20 $20"}),L3=Dt("div",{display:"flex",flexDirection:"column",gap:"$10"}),Ay=Dt("div",{height:"450px",display:"flex",alignItems:"center",justifyContent:"center"}),M3=Dt("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1}),An=Mr({display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",padding:"$10 $20",borderBottom:"1px solid",$$color:"$colors$neutral300",[`.${wy} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color",color:"$neutral500"}),Ny=Mr({padding:"$5 0"}),Ia=Mr({display:"flex",justifyContent:"center",alignItems:"center",height:"$24"}),By=Mr({display:"flex",width:"100%",padding:"$15 $20 $20",flexDirection:"column",alignItems:"start"}),Wy=Mr({width:"100%",padding:"0 $20 $10"}),Ly=Dt("a",{fontSize:"$16",fontWeight:"$400",color:"$neutral700",display:"flex",alignItems:"center",justifyContent:"center"}),My=Dt("div",{display:"flex",flexDirection:"column",gap:"$5"}),Aa=Dt(gA,{wordBreak:"break-word"});import{styled as Yp}from"@rango-dev/ui";var Py=Yp("div",{display:"flex",flexDirection:"column",gap:"$10"}),_y=Yp("div",{transition:"transform 0.3s ease-in-out",variants:{rotated:{true:{transform:"rotate(180deg)"}}}}),Dy=Yp("div",{transition:"max-height 0.3s ease-in-out",maxHeight:"0px",overflow:"hidden",variants:{open:{true:{maxHeight:"200px"}}}});function $y(t){let{message:e}=t,[o,n]=CA(!1);return Nn.createElement(hA,{type:"error",title:e.shortMessage,containerStyles:{"& .footer":{paddingTop:"$0"}},action:e.detailedMessage.content&&Nn.createElement(SA,{onClick:()=>n(r=>!r),variant:"ghost",size:"xsmall"},Nn.createElement(_y,{rotated:o},Nn.createElement(yA,{size:12,color:"gray"}))),footer:Nn.createElement(Dy,{open:o},Nn.createElement(Aa,{variant:"body",size:"xsmall",color:"neutral700"},e.detailedMessage.content))})}i($y,"FailedAlert");import{i18n as Fy}from"@lingui/core";import{Alert as Zp,Button as Oy}from"@rango-dev/ui";import{PendingSwapNetworkStatus as Jp}from"rango-types";import Pr from"react";function Uy(t){let{switchNetwork:e,setNetworkModal:o,message:n,showNetworkModal:r}=t;return e?Pr.createElement(Zp,{type:"warning",title:n.shortMessage,action:Pr.createElement(Oy,{id:"widget-swap-details-warning-alert-change-network-btn",size:"xxsmall",type:"warning",onClick:()=>{o(Jp.WaitingForNetworkChange),e().catch(a=>{console.log(a)})}},Fy.t("Change"))}):r===Jp.WaitingForConnectingWallet?Pr.createElement(Zp,{type:"warning",title:n.shortMessage,action:Pr.createElement(Oy,{id:"widget-swap-details-warning-alert-connect-wallet-btn",size:"xxsmall",type:"warning",onClick:()=>{o(Jp.WaitingForConnectingWallet)}},Fy.t("Connect"))}):Pr.createElement(Zp,{type:"warning",title:n.shortMessage})}i(Uy,"WarningAlert");function Rp(t){let{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r,step:a,hasAlreadyProceededToSign:s}=t,l=Yn(a),p=a.status==="waitingForApproval"&&!l,c=a.status==="running"&&!l,u=c&&!s||p&&!a.explorerUrl?.length;return ho.createElement(Py,null,a.explorerUrl?.map((m,h,g)=>{let d=h+m.url,f=h===g.length-1,S=(f&&c||p)&&!u,T=f&&a.status==="failed";return ho.createElement(wA,{key:d},ho.createElement(zy,{type:f&&(S&&"loading"||T&&"error")||"success",title:m.description?`${m.description} Tx`:TA.t("View transaction"),action:m.url&&ho.createElement(kA,{id:"widget-swap-details-tx-link-icon-btn",variant:"ghost",size:"xsmall",onClick:()=>window.open(m.url,"_blank")},ho.createElement(vA,{size:12}))}))}),u&&ho.createElement(zy,{type:"loading",title:r.shortMessage}),a.status!=="failed"&&l&&ho.createElement(Uy,{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r}),a.status==="failed"&&ho.createElement($y,{message:r}))}i(Rp,"SwapDetailsAlerts");var Qy=2e3;var Hy=i(({swap:t,blockchains:e,swappers:o,...n})=>{let r=t.hasAlreadyProceededToSign!==!1;return t.steps.map((a,s)=>{let l=s===0?t.inputAmount:t.steps[s-1].outputAmount||t.steps[s-1].expectedOutputAmountHumanReadable;return{from:{token:{displayName:a.fromSymbol,image:a.fromLogo??""},chain:{displayName:ft(a.fromBlockchain,e)??"",image:a.fromBlockchainLogo??""},price:{value:_(l,6,6),realValue:l??""}},to:{token:{displayName:a.toSymbol,image:a.toLogo},chain:{displayName:ft(a.toBlockchain,e)??"",image:a.toBlockchainLogo??""},price:{value:_(a.outputAmount||a.expectedOutputAmountHumanReadable,6,6),realValue:a.outputAmount||a.expectedOutputAmountHumanReadable||""}},swapper:{displayName:Dn(a.swapperId,o)??"",image:a.swapperLogo??"",type:a.swapperType},internalSwaps:a.internalSwaps?a.internalSwaps.map(p=>({from:{chain:{displayName:ft(p.fromBlockchain,e)??"",image:p.fromBlockchainLogo??""}},to:{chain:{displayName:ft(p.toBlockchain,e)??"",image:p.toBlockchainLogo??""}},swapper:{displayName:Dn(p.swapperId,o)??"",image:p.swapperLogo??"",type:p.swapperType}})):[],alerts:xA.createElement(Rp,{step:a,hasAlreadyProceededToSign:r,...n})}})},"getSteps");function qy(t){if(Yn(t)&&t.status!=="failed"&&t.status!=="success")return"warning";switch(t.status){case"created":return"default";case"approved":case"waitingForApproval":case"running":return"in-progress";case"failed":return"error";case"success":return"completed"}}i(qy,"getStepState");function ec(t){let{swap:e,requestId:o,onDelete:n,onCancel:r}=t,{canSwitchNetworkTo:a,connect:s,getWalletInfo:l}=DA(),p=C().blockchains(),c=C().swappers(),{findToken:u}=C(),m=O.use.retry(),h=te.use.isActiveTab(),g=FA(),[d,f]=_A(Qy),S=$A(null),[T,y]=Xy(null),[k,v]=Xy(null),b=i(()=>{r(),y(null)},"onCancel"),A=Ae.use.getNotifications(),I=Ae.use.removeNotification(),E=A(),x=EA(e),w=x?.networkStatus;jy(()=>{E.find(ze=>ze.requestId===e.requestId)&&(e.status==="success"||e.status==="failed"?(v(e.status),I(e.requestId)):k&&v(null))},[e.status,e.requestId]),jy(()=>{L?y(Na.WaitingForNetworkChange):w===Na.WaitingForConnectingWallet||w===Na.NetworkChanged?y(w):y(null)},[w]);let B=Im(e),P=x?bA(e,x):null,$=x?IA(e,x):null,H=uy(e),R=Am(e),K=i(xe=>!!l(xe)?.mobileWallet,"isMobileWallet"),L=w===Na.WaitingForNetworkChange&&!!P&&!!$?.walletType&&(K($.walletType)||a($.walletType,P.network)),ae=L?s.bind(null,$.walletType,[{namespace:P.namespace,network:P.network}]):void 0,re=Em(e,x,l),Q=Hy({swap:e,switchNetwork:ae,showNetworkModal:w,setNetworkModal:y,message:re,blockchains:p,swappers:c}),Z=Q.length,[le,ue]=[e.steps[0],e.steps[Z-1]],se=ue.outputAmount||ue.expectedOutputAmountHumanReadable,Ze=e.steps.reduce((xe,ze)=>xe+parseFloat(ze.feeInUsd||""),0),q=e.steps.find(xe=>xe.diagnosisUrl)?.diagnosisUrl,W=_(parseFloat(se||"0")*(ue.toUsdPrice||0),4,4),G=_(parseFloat(e.inputAmount)*(le.fromUsdPrice||0),4,4),j=se?new Ky(se).multipliedBy(ue.toUsdPrice||0).toString():"",ee=new Ky(e.inputAmount).multipliedBy(le.fromUsdPrice||0).toString(),fe=zt(G,W),Ue=re.detailedMessage.content||re.shortMessage,Je=e.status==="success"?dt.t({id:"You have received {amount} {token} in {conciseAddress} wallet on {chain} chain.",values:{amount:_(se,6,6),token:Q[Z-1].to.token.displayName,conciseAddress:Qo(e.wallets[Q[Z-1].to.chain.displayName]?.address||""),chain:Q[Z-1].to.chain.displayName}}):Y.createElement(My,null,Y.createElement(Oo,{variant:"body",size:"medium",color:"neutral700",align:"center"},Ue?"":dt.t("Transaction was not sent."),B?`${dt.t({id:"{amount} {symbol} on {blockchain} remains in your wallet.",values:{amount:B.outputAmount,symbol:B.symbol,blockchain:B.blockchain}})}`:""),Ue&&Y.createElement(Aa,{align:"center",variant:"body",size:"medium",color:"neutral700"},Y.createElement("b",null,"Reason:")," ",Ue));return Y.createElement(ie,{header:{title:dt.t("Swap Details"),onCancel:e.status==="running"?()=>y("cancel"):void 0,suffix:e.status!=="running"&&Y.createElement(oo,null,Y.createElement(Gy,{id:"widget-swap-details-delete-btn",variant:"ghost",type:"error",size:"xsmall",onClick:()=>y("delete")},Y.createElement(Oo,{size:"medium",variant:"label",color:"error"},dt.t("Delete"))))},footer:R&&!k&&Y.createElement(Gy,{fullWidth:!0,id:"widget-swap-details-try-again-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{let xe=gi(e,p,u);m(xe),setTimeout(()=>{g("../../")},0)}},dt.t("Try again"))},Y.createElement(xy,{compact:!0,ref:S},Y.createElement(Ey,{className:An()},Y.createElement(Oo,{variant:"label",size:"large",color:"neutral700"},`${dt.t("Request ID")}`),Y.createElement("div",{className:Ia()},Y.createElement(Oo,{variant:"label",size:"small",color:"neutral700"},o),Y.createElement(Vy,{container:N(),content:d?dt.t("Copied To Clipboard"):dt.t("Copy Request ID"),open:d||void 0,side:"bottom",alignOffset:-16,align:"end"},Y.createElement(WA,{id:"widget-swap-details-done-copy-icon-btn",variant:"ghost",onClick:f.bind(null,o||"")},d?Y.createElement(BA,{size:16,color:"secondary"}):Y.createElement(AA,{size:16,color:"gray"}))),Y.createElement(Ly,{target:"_blank",href:`${mc}/swap/${o}`},Y.createElement(Vy,{container:N(),content:dt.t("View on Rango Explorer"),side:"bottom"},Y.createElement(MA,{size:20}))))),Y.createElement("div",{className:An()},Y.createElement(Oo,{variant:"label",size:"large",color:"neutral700"},e.finishTime?dt.t("Finished at"):dt.t("Created at")),Y.createElement(Oo,{variant:"label",size:"small",color:"neutral700"},H)),Y.createElement("div",{className:By()},Y.createElement(LA,{fee:_(String(Ze),2,2),time:Bn(Qr(e.steps)),steps:Z}),Y.createElement(lr,{from:{price:{value:_(e.inputAmount,6,6),usdValue:G,realUsdValue:ee,realValue:e.inputAmount},token:{displayName:Q[0].from.token.displayName,image:Q[0].from.token.image},chain:{image:Q[0].from.chain.image,displayName:Q[0].from.chain.displayName}},to:{price:{value:_(se,6,6),usdValue:W,realUsdValue:j,realValue:se||""},token:{displayName:Q[Z-1].to.token.displayName,image:Q[Z-1].to.token.image},chain:{image:Q[Z-1].to.chain.image,displayName:Q[Z-1].to.chain.displayName}},percentageChange:_(fe,2,2),warningLevel:Qt(fe??0)})),Y.createElement("div",{className:Wy()},Y.createElement(Oo,{variant:"title",size:"small"},dt.t("Swaps steps"))),Y.createElement(NA,{size:8}),Y.createElement(Iy,null,Q.map((xe,ze)=>{let Zt=ze,yo=qy(e.steps[ze]),wS=yo==="error"||yo==="in-progress"||yo==="warning"||yo==="completed"&&ze===Q.length-1;return Y.createElement(PA,{key:Zt,step:xe,type:"swap-progress",ref:S,state:yo,hasSeparator:ze!==0,tabIndex:Zt,isFocused:wS,tooltipContainer:N()})}))),Y.createElement(Kp,{state:T,onClose:()=>y(null),onCancel:b,onDelete:n,message:re.detailedMessage.content,swap:e,walletButtonDisabled:!h}),Y.createElement(Xp,{open:!!k,diagnosisUrl:q,onClose:()=>v(null),status:e.status==="success"?"success":"failed",priceValue:_(se,6,6),usdValue:W,realUsdValue:j,realValue:se||"",percentageChange:_(fe,2,2),token:{displayName:Q[Z-1].to.token.displayName,image:Q[Z-1].to.token.image},chain:{image:Q[Z-1].to.chain.image},description:Je}))}i(ec,"SwapDetails");import{i18n as Wa}from"@lingui/core";import{Divider as Jy,NotFound as HA,Skeleton as Dr,Typography as La}from"@rango-dev/ui";import Ie from"react";import{i18n as OA}from"@lingui/core";import{Divider as UA,Skeleton as zA,Typography as QA}from"@rango-dev/ui";import Ee from"react";import{css as At,styled as tc}from"@rango-dev/ui";var Yy=tc("div",{width:"100%",height:"100%",padding:"$10 $20"}),_r=tc("div",{backgroundColor:"$neutral100",borderRadius:"$xm",padding:"$10 $15"}),Ba=tc("div",{width:"0px",height:"$20",borderLeft:"1px dashed $neutral700",marginLeft:"25px"}),GX=At({display:"flex",justifyContent:"space-between",alignItems:"center"}),VX=At({display:"flex",justifyContent:"space-between",alignItems:"center"}),KX=At({paddingTop:"$15",display:"flex"}),jX=At({padding:"$15 $0"}),XX=At({width:"0px",height:"$16",borderLeft:"1px solid $neutral400",marginLeft:"13px"}),YX=At({paddingBottom:"$10"}),ZX=At({display:"flex",justifyContent:"start",alignItems:"center"}),JX=At({paddingTop:"$5",display:"flex",alignItems:"center"}),RX=At({display:"flex",alignItems:"center"}),eY=At({padding:"$4 $6",display:"flex",justifyContent:"center",alignItems:"center"}),Zy=At({display:"flex",paddingTop:"$10",paddingBottom:"$5"});function oc(){return Ee.createElement(Yy,null,Ee.createElement(cr,{type:"swap-preview"}),Ee.createElement("div",{className:"swaps-steps"},Ee.createElement(QA,{variant:"title",size:"small"},OA.t("Swaps steps"))),Ee.createElement(Ee.Fragment,null,Ee.createElement(_r,null,Ee.createElement(Pt,{separator:!1}),Ee.createElement("div",{className:Zy()},Ee.createElement(UA,{direction:"horizontal",size:20}),Ee.createElement(zA,{height:22,variant:"rectangular"}))),Ee.createElement(Ba,null),Ee.createElement(_r,null,Ee.createElement(Pt,{separator:!1})),Ee.createElement(Ba,null),Ee.createElement(_r,null,Ee.createElement(Pt,{separator:!1})),Ee.createElement(Ba,null),Ee.createElement(_r,null,Ee.createElement(Pt,{separator:!1}))))}i(oc,"LoadingSwapDetails");function Ry(t){let{requestId:e,showSkeleton:o}=t;return Ie.createElement(ie,{header:{title:Wa.t("Swap Details"),suffix:Ie.createElement(oo,null)}},o&&Ie.createElement(by,null,Ie.createElement("div",{className:An()},Ie.createElement(La,{variant:"label",size:"large",color:"neutral700"},`${Wa.t("Request ID")}`),Ie.createElement("div",{className:Ia()},Ie.createElement(La,{variant:"label",size:"small",color:"neutral700"},Ie.createElement(Dr,{width:60,height:10,variant:"rounded"})),Ie.createElement(Jy,{direction:"horizontal",size:4}),Ie.createElement(Dr,{width:16,height:16,variant:"rectangular"}),Ie.createElement(Jy,{direction:"horizontal",size:4}),Ie.createElement(Dr,{width:16,height:16,variant:"rectangular"}))),Ie.createElement("div",{className:An()},Ie.createElement(La,{className:Ny(),variant:"label",size:"large",color:"neutral700"},Ie.createElement(Dr,{width:60,height:10,variant:"rounded"})),Ie.createElement(La,{variant:"label",size:"small",color:"neutral700"},Ie.createElement(Dr,{width:60,height:10,variant:"rounded"}))),Ie.createElement(oc,null)),!o&&Ie.createElement(Ay,null,Ie.createElement(HA,{title:Wa.t("Not found"),description:Wa.t({id:"Swap with request ID = {requestId} not found.",values:{requestId:e}})})))}i(Ry,"SwapDetailsPlaceholder");function eS(){let{manager:t,state:e}=VA(),o=!e.loadedFromPersistor,n=St(t),{requestId:r}=jA(),a=qe(),{fetchStatus:s}=C();if(!r)return nc.createElement(KA,{containerStyles:{margin:"20px"},type:"error",title:qA.t("The request ID is necessary to display the swap details.")});let l=o||s==="loading",p=r?n.find(({swap:h})=>h.requestId===r):void 0,c=i(()=>{if(p?.id){let h=t?.get(p.id);h&&GA(h)}},"onCancel"),u=i(async()=>{if(p?.id)try{t?.deleteQueue(p.id),a()}catch(h){console.log(h)}},"onDelete"),m=p?.swap;return!m||l?nc.createElement(Ry,{requestId:r,showSkeleton:l}):nc.createElement(ec,{swap:m,requestId:r,onCancel:c,onDelete:u})}i(eS,"SwapDetailsPage");import{i18n as tS}from"@lingui/core";import{Divider as XA,getCategoriesCount as YA,SelectableCategoryList as ZA,styled as nS,Typography as JA,Wallet as RA,WalletState as e0}from"@rango-dev/ui";import{useWallets as t0}from"@rango-dev/wallets-react";import $t,{useState as oS}from"react";var o0=nS("div",{display:"flex",justifyContent:"center",alignItems:"center",columnGap:"$5",rowGap:"$10",flexWrap:"wrap",paddingTop:"$5"}),n0=nS(pe,{textAlign:"center"});function rS(){let{fetchStatus:t}=C(),[e,o]=oS("ALL"),n=C().blockchains(),{config:r}=C(),{state:a}=t0(),[s,l]=oS(),p=te.use.isActiveTab(),{list:c}=Tt(),u=Uc(c,n),h=YA(u)!==1,g=zc(c,e),d=i(f=>{kc(c,r.multiWallets)||l(f)},"handleWalletItemClick");return $t.createElement(ie,{header:{title:tS.t("Connect Wallets")}},$t.createElement(n0,null,h&&$t.createElement($t.Fragment,null,$t.createElement(ZA,{setCategory:o,category:e,blockchains:u,isLoading:t==="loading"}),$t.createElement(XA,{size:24})),$t.createElement(JA,{variant:"title",size:"xmedium",align:"center"},tS.t("Choose a wallet to connect.")),$t.createElement(o0,null,g.map((f,S)=>{let y=a(f.type).namespaces,k=`wallet-${S}-${f.type}`,v=_n(f,y);return $t.createElement(RA,{key:k,...f,state:v?e0.PARTIALLY_CONNECTED:f.state,container:N(),onClick:()=>d(f),isLoading:t==="loading",disabled:!p})}),$t.createElement(bo,{wallet:s,onClose:()=>{l(void 0)}}))))}i(rS,"WalletsPage");function iS(){return Lm(),Bs(),r0([{path:F.home,element:Oe.createElement(Nh,null)},{path:F.routes,element:Oe.createElement(Ph,null)},{path:F.fromSwap,children:[{index:!0,element:Oe.createElement(Ta,{type:"source"})},{path:F.blockchains,element:Oe.createElement(ha,{type:"source"})}]},{path:F.toSwap,children:[{index:!0,element:Oe.createElement(Ta,{type:"destination"})},{path:F.blockchains,element:Oe.createElement(ha,{type:"destination"})}]},{path:F.settings,children:[{index:!0,element:Oe.createElement(py,null)},{path:F.languages,element:Oe.createElement(Wh,null)},{path:F.exchanges,element:Oe.createElement(Ip,{sourceType:"Exchanges"})},{path:F.bridges,element:Oe.createElement(Ip,{sourceType:"Bridges"})},{path:F.customTokens,children:[{index:!0,element:Oe.createElement(Wg,null)},{path:F.addCustomTokens,children:[{index:!0,element:Oe.createElement(Ed,null)},{path:F.blockchains,element:Oe.createElement(ha,{hideCategory:!0,type:"custom-token"})}]}]}]},{path:F.swaps,children:[{index:!0,element:Oe.createElement(Zg,null)},{path:F.swapDetails,element:Oe.createElement(eS,null)}]},{path:F.wallets,element:Oe.createElement(rS,null)},{path:F.confirmSwap,element:Oe.createElement(yg,null)}])}i(iS,"AppRoutes");import{useQueueManager as d0}from"@rango-dev/queue-manager-rango-preset";import{isEvmBlockchain as f0}from"rango-sdk";import{useContext as g0,useEffect as mS,useState as dS}from"react";import{globalCss as i0}from"@rango-dev/ui";var aS=i(()=>i0({"@import":"url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap')"})(),"globalFont");function sS(){let{setWatermark:t,setShowProfileBanner:e}=te();return{fetchApiConfig:i(async()=>{let n=await fetch(`${Ot("BASE_URL")}/meta/dapp/config?apiKey=${Ot("API_KEY")}`);if(!n.ok)throw new Error(`Request failed with status: ${n.status} `);let r=await n.json();t(r.config.watermark),e(r.config.banners.profile)},"fetchApiConfig")}}i(sS,"useFetchApiConfig");import{useWallets as a0}from"@rango-dev/wallets-react";import{useEffect as s0,useRef as l0}from"react";function lS(){let{connect:t,state:e}=a0(),o=l0({}),{fetchStatus:n}=C(),r=new URLSearchParams(location.search).get("autoConnect")||"",a=e(r);s0(()=>{n==="success"&&r&&a.installed&&!a.connecting&&!a.connected&&!o.current[r]&&(o.current[r]=!0,t(r))},[a,n])}i(lS,"useForceAutoConnect");import{isApprovalTX as p0,RouteEventType as pS,StepEventType as cS,StepExecutionEventStatus as c0,WidgetEvents as Ma}from"@rango-dev/queue-manager-rango-preset";import{useEffect as uS}from"react";function rc(){let t=Ae.use.setNotification(),{connectedWallets:e,fetchBalances:o,customTokens:n}=C();uS(()=>{let r=i(a=>{let{event:s,step:l,route:p}=a;if(s.type===cS.TX_EXECUTION&&s.status===c0.TX_SENT&&!p0(l)||s.type===cS.SUCCEEDED){let u=[],m=p.wallets[l?.fromBlockchain];if(m){let h=e.find(g=>g.address?.toLocaleLowerCase()===m.address?.toLocaleLowerCase()&&g.walletType===m.walletType&&g.chain===l?.fromBlockchain);h&&u.push(h)}if(l?.fromBlockchain!==l?.toBlockchain){let h=p.wallets[l?.toBlockchain];if(h){let g=e.find(d=>d.address?.toLocaleLowerCase()===h.address?.toLocaleLowerCase()&&d.walletType===h.walletType&&d.chain===l?.toBlockchain);g&&u.push(g)}}if(u.length>0){let h=n(),d=[{blockchain:l.fromBlockchain,address:l.fromSymbolAddress,symbol:l.fromSymbol},{blockchain:l.toBlockchain,address:l.toSymbolAddress,symbol:l.toSymbol}].filter(f=>h.some(S=>S.blockchain===f.blockchain&&S.address?.toLocaleLowerCase()===f.address?.toLocaleLowerCase()&&S.symbol?.toLocaleLowerCase()===f.symbol?.toLocaleLowerCase()));o(u,{selectedCustomTokens:d,shouldFetchCustomTokens:d.length>0})}}t(s,p)},"handleStepEvent");return Te.on(Ma.StepEvent,r),()=>Te.off(Ma.StepEvent,r)},[Te,e]),uS(()=>{let r=i(a=>{let{event:s,route:l}=a;(s.type===pS.FAILED||s.type===pS.SUCCEEDED)&&t(s,l)},"handleRouteEvent");return Te.on(Ma.RouteEvent,r),()=>Te.off(Ma.RouteEvent,r)},[Te])}i(rc,"useSubscribeToWidgetEvents");import{useManager as u0}from"@rango-dev/queue-manager-react";import{useEffect as m0}from"react";function ic(){let{isSynced:t,syncNotifications:e}=Ae(),{manager:o,state:n}=u0();m0(()=>{Ae.persist.hasHydrated()&&n.loadedFromPersistor&&!t&&e(St(o))},[Ae.persist.hasHydrated(),n.loadedFromPersistor,t])}i(ic,"useSyncNotifications");function ac(){lS(),aS(),rc(),ic();let t=C().blockchains(),{canSwitchNetworkTo:e}=Fi(),[o,n]=dS(null),[r,a]=dS(),s=g0(mi),l=t.filter(f0),{fetchApiConfig:p}=sS();mS(()=>()=>Wm(),[]),d0({lastConnectedWallet:o,clearDisconnectedWallet:()=>{a(void 0)},disconnectedWallet:r,evmChains:l,canSwitchNetworkTo:e}),mS(()=>(wo.init(),Ae.persist.hasHydrated()||Ae.persist.rehydrate(),s.onConnectWallet(c=>{n(u=>{if(!u||u.walletType!==c.walletType)return c;let m={...u};return c.network&&(m.network=c.network),c.accounts&&(m.accounts=c.accounts),m})}),s.onDisconnectWallet(c=>{a(c),n(u=>c===u?.walletType?null:u)}),p().catch(console.log),wo.destroy),[])}i(ac,"useBootstrap");import{styled as h0}from"@rango-dev/ui";var fS=h0("div",{fontFamily:"$widget",boxSizing:"border-box",textAlign:"left","& *, *::before, *::after":{boxSizing:"inherit"},"& *:focus-visible":{outlineColor:"$info500",transition:"none"},"& ul, ol, li":{listStyleType:"none"}});function Pa(){ac();let{config:t}=C(),{activeTheme:e}=to(t?.theme||{}),{activeLanguage:o}=uo();return sc.createElement(y0,{language:o},sc.createElement(fS,{id:"swap-container",className:e()},sc.createElement(iS,null)))}i(Pa,"Main");import{setSolanaSignerConfig as $0}from"@rango-dev/signer-solana";import pc,{useEffect as TS,useMemo as F0}from"react";import{useState as S0}from"react";var C0=i(()=>{let[t,e]=S0(null),o=i(a=>{let s=document.createElement("link");return s.href=a,s.rel="stylesheet",document.head.appendChild(s),s},"loadFont"),n=i(()=>{t&&(document.head.removeChild(t),e(null))},"unloadFont");return{handleLoadCustomFont:i(a=>{n();let s=Tc(a);if(s){let l=o(s);e(l)}},"handleLoadCustomFont")}},"useFontLoader"),gS=C0;import{checkWaitingForNetworkChange as T0,makeQueueDefinition as k0}from"@rango-dev/queue-manager-rango-preset";import{Provider as v0}from"@rango-dev/queue-manager-react";import{useWallets as w0}from"@rango-dev/wallets-react";import{convertEvmBlockchainMetaToEvmChainInfo as x0}from"@rango-dev/wallets-shared";import{isEvmBlockchain as b0}from"rango-types";import E0,{useMemo as I0}from"react";function A0(t){let{providers:e,getSigners:o,state:n,connect:r,canSwitchNetworkTo:a,getWalletInfo:s}=w0(),l=I0(()=>k0({API_KEY:t.apiKey||Ot("API_KEY"),BASE_URL:Ot("BASE_URL"),emitter:{emit:Te.emit}}),[t.apiKey]),{blockchains:p,connectedWallets:c}=C(),u=p(),m={blockchains:c.map(v=>({accounts:[v],name:v.chain}))},h=i(async(v,b)=>a(v,b.network)?await r(v,[b]):void 0,"switchNetwork"),g=i(v=>!!s(v).mobileWallet,"isMobileWallet"),d=u.filter(v=>v.enabled).reduce((v,b)=>(v[b.name]=b,v),{}),f=u.filter(b0),S=i(v=>{let{supportedChains:b}=s(v);return Mn(b)},"getSupportedChainNames"),T=e(),y={meta:{blockchains:d,evmBasedChains:f,evmNetworkChainInfo:x0(f),getSupportedChainNames:S},getSigners:o,wallets:m,providers:T,switchNetwork:h,canSwitchNetworkTo:a,state:n,isMobileWallet:g},k=te.use.isActiveTab();return E0.createElement(v0,{queuesDefs:[l],context:y,onPersistedDataLoaded:v=>{T0(v)},isPaused:!k},t.children)}i(A0,"QueueManager");var hS=A0;import{useManager as M0}from"@rango-dev/queue-manager-react";import P0,{createContext as _0,useContext as D0}from"react";function yS(){let{findToken:t}=C(),e=C().blockchains(),o=C().tokens(),{setFromBlockchain:n,setFromToken:r,setToBlockchain:a,setToToken:s,setInputAmount:l}=O();return i(c=>{let{fromBlockchain:u,fromToken:m,toBlockchain:h,toToken:g,requestAmount:d}=c,f={blockchains:e,tokens:o};if(u!==void 0){let S=e.find(T=>T.name===u)??null;n(S)}if(m!==void 0){let S=m?t(m)??null:null;r({meta:f,token:S})}if(h!==void 0){let S=e.find(T=>T.name===h)??null;a(S)}if(g!==void 0){let S=g?t(g)??null:null;s({meta:f,token:S})}d!==void 0&&l(d)},"updateQuoteInputs")}i(yS,"useUpdateQuoteInputs");import{cancelSwap as N0,getCurrentNamespaceOfOrNull as B0,getCurrentStep as W0,getRelatedWalletOrNull as L0}from"@rango-dev/queue-manager-rango-preset";var _a=class{static{i(this,"WidgetHistory")}constructor(e,o){this.manager=e,this.actions=o}getAllSwaps(){return St(this.manager)}getCurrentStep(e){return this.getCurrentStepInfo(e).step}getCurrentStepWallet(e){return this.getCurrentStepInfo(e).wallet}getCurrentStepNetwork(e){return this.getCurrentStepInfo(e).network}retry(e,o){let n=gi(e,o.blockchains,this.actions.findToken);return this.actions.retrySwap(n)}cancel(e){let o=this.manager?.get(e);o&&N0(o)}getCurrentStepInfo(e){let o=W0(e);return{step:o,wallet:o?L0(e,o):null,network:o?B0(e,o)?.network:null}}};var SS=_0(void 0);function lc(t){let{manager:e}=M0(),o=te.use.isActiveTab(),n=O.use.retry(),{findToken:r,getBalances:a,getConnectedWalletsDetails:s,fetchBalances:l}=C(),p=new _a(e,{retrySwap:n,findToken:r}),{fetchingWallets:c}=C(),u=Pc(a()),m=C().blockchains(),h=C().tokens(),g=C().swappers(),d=C().fetchStatus,f=uo().resetLanguage,S=Ae().getNotifications(),T=Ae().clearNotifications,y=yS(),{fromBlockchain:k,toBlockchain:v,fromToken:b,toToken:A,inputAmount:I}=O(),E={isActiveTab:o,setCurrentTabAsActive:wo.forceClaim,history:p,wallets:{isLoading:c,details:s(),totalBalance:u,refetch:async x=>l(x)},meta:{blockchains:m,tokens:h,swappers:g,loadingStatus:d,findToken:r},resetLanguage:f,notifications:{list:S,clearAll:T},quote:{quoteInputs:{fromBlockchain:k?.name??null,fromToken:b?{symbol:b.symbol,blockchain:b.blockchain,address:b.address}:null,toBlockchain:v?.name??null,toToken:A?{symbol:A.symbol,blockchain:A.blockchain,address:A.address}:null,requestAmount:I},updateQuoteInputs:y}};return P0.createElement(SS.Provider,{value:E},t.children)}i(lc,"WidgetInfo");function CS(){let t=D0(SS);if(!t)throw new Error("useWidget can only be used within the WidgetProvider component");return t}i(CS,"useWidget");function Da(t){let{onUpdateState:e,config:o}=t,n=t.config?.theme?.fontFamily,{handleLoadCustomFont:r}=gS();return TS(()=>{n&&r(n)},[n]),F0(()=>{nu({API_KEY:o?.apiKey||$r,BASE_URL:o?.apiUrl||uc})},[o.apiKey,o.apiUrl]),TS(()=>{t.config?.signers?.customSolanaRPC&&$0("customRPC",t.config.signers.customSolanaRPC)},[t.config?.signers?.customSolanaRPC]),pc.createElement(di,{config:o,onUpdateState:e},pc.createElement(hS,{apiKey:o.apiKey},pc.createElement(lc,null,t.children)))}i(Da,"WidgetProvider");function kS(t){let e=t.config?.externalWallets;return $a.createElement(Ru,null,e?$a.createElement(Pa,null):$a.createElement(Da,{config:t.config??Yr},$a.createElement(Pa,null)))}i(kS,"Widget");function vS(){let{on:t,off:e}=Te;return{on:t,off:e}}i(vS,"useWidgetEvents");var sJ={DerivationPath:Gn,Namespaces:Qn,Detached:qn,isOnDerivationPath:Kn,isOnNamespace:Vn,isOnDetached:jn};export{MZ as EventSeverity,Ko as MainEvents,HZ as Networks,VZ as PendingSwapNetworkStatus,Za as QuoteEventTypes,PZ as RouteEventType,Fa as SUPPORTED_FONTS,sJ as StatefulConnect,_Z as StepEventType,DZ as StepExecutionBlockedEventStatus,$Z as StepExecutionEventStatus,Qe as UI_ID,Ra as UiEventTypes,Ja as WalletEventTypes,zZ as WalletEvents,qZ as WalletTypes,kS as Widget,Ko as WidgetEvents,Da as WidgetProvider,di as WidgetWallets,Gs as customizedThemeTokens,OZ as readAccountAddress,Ho as useStatefulConnect,Tt as useWalletList,Fi as useWallets,CS as useWidget,vS as useWidgetEvents,EC as widgetEventEmitter};
|
|
1
|
+
var xS=Object.defineProperty;var i=(t,e)=>xS(t,"name",{value:e,configurable:!0});import{EventSeverity as PZ,RouteEventType as _Z,StepEventType as DZ,StepExecutionBlockedEventStatus as $Z,StepExecutionEventStatus as FZ}from"@rango-dev/queue-manager-rango-preset";import{legacyReadAccountAddress as UZ}from"@rango-dev/wallets-core/legacy";import{useWallets as Fi,Events as QZ}from"@rango-dev/wallets-react";import{Networks as qZ,WalletTypes as GZ}from"@rango-dev/wallets-shared";import{PendingSwapNetworkStatus as KZ}from"rango-types";import{Divider as _T}from"@rango-dev/ui";import Rt,{useEffect as DT,useRef as $T,useState as Vu}from"react";import{WalletState as OS}from"@rango-dev/ui";import{useWallets as US}from"@rango-dev/wallets-react";import{useReducer as zS}from"react";import{BlockchainCategories as LS,WalletState as it}from"@rango-dev/ui";import{legacyReadAccountAddress as MS}from"@rango-dev/wallets-core/legacy";import{detectInstallLink as PS,getCosmosExperimentalChainInfo as _S,isEvmAddress as DS,KEPLR_COMPATIBLE_WALLETS as fN,Networks as Lc}from"@rango-dev/wallets-shared";import zo from"bignumber.js";import{isCosmosBlockchain as $S}from"rango-types";import bS from"bignumber.js";var me=new bS(0);import{WalletTypes as ES}from"@rango-dev/wallets-shared";var So="~",cc=[ES.LEAP];import{BlockchainCategories as Oa,WalletState as WS}from"@rango-dev/ui";import{TransactionType as Fr}from"rango-sdk";import{UI_ID as IS}from"@rango-dev/ui";var $r="c6381a79-2817-4602-83bf-6a641a409e32",uc="https://api.rango.exchange",mc="https://explorer.rango.exchange",Qe={SWAP_BOX_ID:"rango-swap-box",EXPANDED_BOX_ID:"rango-expanded-box",...IS};var dc="Roboto",Fa=[{name:"Roboto",value:"Roboto",url:""},{name:"Times New Roman",value:"Times New Roman",url:"https://fonts.cdnfonts.com/css/times-new-roman"},{name:"Arial",value:"Arial",url:""},{name:"Open Sans",value:"Open Sans",url:"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300..800;1,300..800&display=swap"},{name:"Noto Sans",value:"Noto Sans",url:"https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Montserrat",value:"Montserrat",url:"https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Poppins",value:"Poppins",url:"https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"},{name:"Roboto Condensed",value:"Roboto Condensed",url:"https://fonts.googleapis.com/css2?family=Roboto+Condensed:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Roboto Mono",value:"Roboto Mono",url:"https://fonts.googleapis.com/css2?family=Roboto+Mono:ital,wght@0,100..700;1,100..700&display=swap"},{name:"Oswald",value:"Oswald",url:"https://fonts.googleapis.com/css2?family=Oswald:wght@200..700&display=swap"},{name:"Raleway",value:"Raleway",url:"https://fonts.googleapis.com/css2?family=Raleway:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Sedan",value:"Sedan",url:"https://fonts.googleapis.com/css2?family=Sedan:ital@0;1&display=swap"},{name:"Inter",value:"Inter",url:"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap"},{name:"Rubik",value:"Rubik",url:"https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,300..900;1,300..900&display=swap"},{name:"Lora",value:"Lora",url:"https://fonts.googleapis.com/css2?family=Lora:ital,wght@0,400..700;1,400..700&display=swap"},{name:"Barlow Condensed",value:"Barlow Condensed",url:"https://fonts.googleapis.com/css2?family=Barlow+Condensed:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"}];function Uo(t){return Array.from(new Set(t))}i(Uo,"removeDuplicateFrom");function Or(t,e){let o;return n;function n(...r){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...r)},e)}}i(Or,"debounce");function rt(t,e){return t.toLowerCase().indexOf(e.toLowerCase())>-1}i(rt,"containsText");function hc(t,e){return t.toLowerCase()===e.toLowerCase()}i(hc,"exactText");function yc(t,e){return t.toLowerCase().startsWith(e.toLowerCase())}i(yc,"startWithText");var N=i(()=>document.getElementById(Qe.SWAP_BOX_ID),"getContainer"),Co=i(()=>document.getElementById(Qe.EXPANDED_BOX_ID),"getExpanded");function Sc(t,e,o){let n=!!e&&hc(e,t),r=!!o&&hc(o,t);return n!==r?n?-1:1:0}i(Sc,"compareExactMatchText");function Ua(t,e,o){let n=!!e&&rt(e,t),r=!!o&&rt(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(Ua,"compareContainsText");function za(t,e,o){let n=!!e&&yc(e,t),r=!!o&&yc(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(za,"compareStartWithText");function Cc(t,e,o){if(!o)return 0;let n=Sc(o,t.symbol,e.symbol);if(n)return n;if(o.length>=3){let r=Sc(o,t.name,e.name);if(r)return r}if(o.length>=2){let r=za(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=Ua(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=za(o,t.name,e.name);if(r)return r}if(o.length>=3){let r=Ua(o,t.name,e.name);if(r!==0)return r}if(o.length>=4){let r=za(o,t.address,e.address);if(r)return r}if(o.length>=4){let r=Ua(o,t.address,e.address);if(r!==0)return r}return 0}i(Cc,"compareWithSearchFor");var Ur=i((t,e)=>{switch(e){case Oa.ALL:return!0;case Oa.UTXO:return t===Fr.TRANSFER;case Oa.OTHER:return t!==Fr.TRANSFER&&t!==Fr.COSMOS&&t!==Fr.EVM;default:return t===e}},"isBlockchainTypeInCategory"),Tc=i(t=>Fa.find(o=>o.value===t)?.url,"getFontUrlByName");function kc(t,e){let o=!!t.find(n=>n.state===WS.CONNECTED);return e===!1&&o}i(kc,"isSingleWalletActive");function vc(){let t,e;return(o,n)=>((!e||!t||t!==n)&&(t=n,e=o()),e)}i(vc,"memoizedResult");import{BigNumber as Bc}from"bignumber.js";function wc(t){return t.replace(/^0+(?=\d)/g,"")}i(wc,"removeLeadingZeros");function xc(t){return t.replace(/^\.(\d+)/,"0.$1")}i(xc,"ensureLeadingZeroForDecimal");function bc(t){return t.replace(/\B(?=(\d{3})+(?!\d))/g,",")}i(bc,"formatThousandsWithCommas");function Ec(t){return t.replace(/\s+/g,"-")}i(Ec,"replaceSpacesWithDash");function Ic(t){return t.replace(/(\.\d*?[1-9])0+$/,"$1").replace(/\.0+$/,"")}i(Ic,"stripTrailingZeros");function zr(t){return/^0+(?:\.0+)?$/.test(t)}i(zr,"isZeroValue");function Ac(t,e=2){let o=`^(?:0|[1-9]\\d*)(?:\\.\\d{1,${e}})?$`;return new RegExp(o).test(t)}i(Ac,"isValidCurrencyFormat");function Nc(t){return/\d+$/.test(t)}i(Nc,"isColorKeyOverridden");var Bn=i(t=>{let e=Math.floor(t%60/15)*15,o=parseInt((t/60).toString());return o>=60?`${Math.floor(o/5)*5}:00`:`${o.toString().padStart(2,"0")}:${e.toString().padStart(2,"0")}`},"roundedSecondsToString"),_=i((t,e=null,o=null)=>{if(t==null||t==="")return"";let n=new Bc(t),r=1,a=1e3;for(let s=0;s<60;s++)if(new Bc(n.toFixed(s,r)).eq(n)){a=s;break}if(n.gte(1e4))return n.toFormat(0,r);if(n.gte(1e3)||n.gte(100))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,1))),r);if(n.gte(1))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,2))),r);if(n.gte(.01))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,4))),r);for(let s=e||4;s<17;s++)if(n.gte(Math.pow(10,-s)))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,s))),r);return n.isEqualTo(0)?"0":n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,8))),r)},"numberToString");var Qr=i(t=>t?.reduce((e,o)=>e+(o.estimatedTimeInSeconds??0),0)||0,"totalArrivalTime");var Nt=i((t,e)=>t.toLowerCase().indexOf(e.toLowerCase())>-1,"containsText"),Wn=i(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function Wc(t){return zr(t)?"0":Ic(t)}i(Wc,"sanitizeInputAmount");function Ln(t){return t.connected?it.CONNECTED:t.connecting?it.CONNECTING:t.installed?it.DISCONNECTED:it.NOT_INSTALLED}i(Ln,"mapStatusToWalletState");function Mc(t,e,o,n){return o.filter(r=>!cc.includes(r)).filter(r=>{let{supportedChains:a,isContractWallet:s}=e(r),{installed:l,network:p}=t(r);return s&&(!l||!!n&&p!==n)?!1:n?!!a.find(u=>u.name===n):!0}).map(r=>{let{name:a,img:s,installLink:l,showOnMobile:p,needsNamespace:c,supportedChains:u,needsDerivationPath:f,properties:h,isHub:g}=e(r),d=Uo(u.map(y=>y.type)),m=Ln(t(r));return{title:a,image:s,link:PS(l),state:m,type:r,showOnMobile:p,needsNamespace:c,blockchainTypes:d,needsDerivationPath:f,properties:h,isHub:g}})}i(Mc,"mapWalletTypesToWalletInfo");function Mn(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}i(Mn,"walletAndSupportedChainsNames");function Ha(t,e,o,n,r){let a=[];function s(p,c,u){if(!!!a.find(h=>h.chain===p)){let h={address:c,chain:p,walletType:t,isContractWallet:u??!1};a.push(h)}}i(s,"addAccount");let l=n||[];return e.forEach(p=>{let{address:c,network:u}=MS(p),f=l.length>0,h=l.includes(u),g=u===Lc.Unknown;if(f&&!h&&!g)return;let m=u===Lc.Unknown&&DS(c);if(g&&!m)return;o.includes(u)||m?r?s(u,c.toLowerCase(),r):l.filter(S=>o.includes(S)).forEach(S=>{s(S,c.toLowerCase())}):s(u,c)}),a}i(Ha,"prepareAccountsForWalletStore");function To(t){let{filter:e,quote:o}=t,n=new Set;return o?.swaps.forEach((r,a)=>{let s=r.from.blockchain,l=r.to.blockchain;if(n.add(s),r.internalSwaps){let{internalSwaps:p}=r;p.forEach((c,u)=>{let f=c.from.blockchain,h=c.to.blockchain,g=a===o.swaps.length-1,d=u===p.length-1;(!g&&!d||g&&l!==f||e==="all")&&n.add(f),e==="all"&&n.add(h)})}e==="all"&&n.add(l)}),Array.from(n)}i(To,"getQuoteChains");function Pn(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}i(Pn,"isAccountAndWalletMatched");var Pc=i(t=>{let e=Object.values(t).reduce((o,n)=>{let r=n.usdValue?Qa(n.usdValue,n.decimals):me.toFixed();return o.plus(r)},new zo(me));return FS(e.toString())},"calculateWalletUsdValue");function FS(t){let e=t.toString().split(".");return e[0]=bc(e[0]),e.join(".")}i(FS,"numberWithThousandSeparator");var Gr=i((t,e)=>{let o=_S(Object.entries(t).map(([,n])=>n).filter($S));return o&&o[e]?.experimental},"isExperimentalChain");function Qa(t,e){return new zo(t).shiftedBy(-e).toFixed()}i(Qa,"representAmountInNumber");function Vr(t){if(!t)return null;let e=Qa(t.amount,t.decimals),o=t.usdValue?Qa(t.usdValue,t.decimals):null,n=_(e,8,8),r=o?_(o,4,4):null;return t?{...t,amount:n,usdValue:r}:null}i(Vr,"formatBalance");function _c(t,e){if(t?.usdValue||e?.usdValue){let o=t&&t.usdValue?new zo(t.usdValue).shiftedBy(-t.decimals):me,n=e&&e.usdValue?new zo(e.usdValue).shiftedBy(-e.decimals):me;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}if(t?.amount||e?.amount){let o=t&&t.amount?new zo(t.amount).shiftedBy(-t.decimals):me,n=e&&e.amount?new zo(e.amount).shiftedBy(-e.decimals):me;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}return 0}i(_c,"compareTokenBalance");function Ft(t,e){return t?.blockchain===e?.blockchain&&t?.symbol.toLowerCase()===e?.symbol.toLowerCase()&&t?.address?.toLowerCase()===e?.address?.toLowerCase()}i(Ft,"areTokensEqual");function Dc(t,e){return t.map(o=>({isPartiallyConnected:_n(o,e(o.type).namespaces),...o})).sort((o,n)=>+(n.state===it.CONNECTED&&!n.isPartiallyConnected)-+(o.state===it.CONNECTED&&!o.isPartiallyConnected)||+(n.state===it.CONNECTED)-+(o.state===it.CONNECTED)||+(n.state===it.DISCONNECTED||n.state===it.CONNECTING)-+(o.state===it.DISCONNECTED||o.state===it.CONNECTING)).map(({isPartiallyConnected:o,...n})=>n)}i(Dc,"sortWalletsBasedOnConnectionState");function Qo(t,e=8,o=3){if(t.length<2*e+o)return t;let n=t.slice(0,e),r=t.slice(-e);return`${n}${".".repeat(o)}${r}`}i(Qo,"getConciseAddress");function $c({chain:t,connectedWallets:e,walletType:o}){return e.find(n=>n.walletType===o&&n.chain===t)?.address}i($c,"getAddress");var Fc=i((t,e)=>!!t.find(o=>o.chain===e&&o.loading),"isFetchingBalance");function Oc(t){return t.map(e=>e.state).join("-")}i(Oc,"hashWalletsState");function Uc(t,e){let o=new Set;return t.forEach(r=>{r.blockchainTypes.forEach(a=>{o.add(a)})}),e.filter(r=>o.has(r.type))}i(Uc,"filterBlockchainsByWalletTypes");function zc(t,e){return e===LS.ALL?t:t.filter(o=>{for(let n of o.blockchainTypes)if(Ur(n,e))return!0;return!1})}i(zc,"filterWalletsByCategory");function _n(t,e){return!t.isHub||!t.needsNamespace||t.state!==it.CONNECTED?!1:t.needsNamespace.data.filter(r=>!r.unsupported).some(r=>!e?.get(r.value)?.connected)}i(_n,"checkIsWalletPartiallyConnected");function Qc(t){return!!t.derivationPath}i(Qc,"isStateOnDerivationPathStep");function Hc(t){return!!t.namespace}i(Hc,"isStateOnNamespace");var Kr={status:"init",namespace:null,derivationPath:null,selectedNamespaces:null};function qc(t,e){switch(e.type){case"needsNamespace":return{...t,status:"namespace",namespace:e.payload,derivationPath:null};case"needsDerivationPath":return{...t,status:"derivationPath",derivationPath:e.payload};case"detached":return{...t,status:"detached",namespace:{targetWallet:e.payload.targetWallet},selectedNamespaces:e.payload.selectedNamespaces};case"reset":return Kr;case"resetDerivation":return t.namespace?{...t,derivationPath:null,status:"namespace"}:Kr;default:throw new Error("Action hasn't been defined.")}}i(qc,"reducer");function Ho(){let{state:t,disconnect:e,connect:o}=US(),[n,r]=zS(qc,Kr),a=i(async(u,f,h)=>{r({type:"reset"});try{let g=f?.map(d=>({...d,network:void 0}));return await o(u,g),{status:"connected"}}catch(g){let d=g?.message?`Error: ${g.message}`:"An unknown error happened during connecting wallet.";throw new Error(d,{cause:g})}},"runConnect"),s=i(async(u,f)=>{if(u.state===OS.DISCONNECTED){let g=!!u.isHub,d=g?u.properties?.find(y=>y.name==="namespaces")?.value:u.needsNamespace,m=g?u.properties?.find(y=>y.name==="derivationPath")?.value:u.needsDerivationPath;if(!d?.data?.length)return await a(u.type,void 0,f);if(d?.data.length&&d.data.length>1)return r({type:"needsNamespace",payload:{targetWallet:u,defaultSelectedChains:f?.defaultSelectedChains}}),{status:"namespace"};if(d?.data.length===1){if(m){let y=d.data[0];return r({type:"needsDerivationPath",payload:{providerType:u.type,providerImage:u.image,namespace:y.value}}),{status:"derivation-path"}}return await a(u.type,d?.data?.map(y=>({namespace:y.value})),f)}}if(u.isHub){let d=t(u.type).namespaces;if(_n(u,d))return r({type:"detached",payload:{targetWallet:u,selectedNamespaces:null}}),{status:"Detached"}}return f?.disconnectIfConnected?(await c(u.type),{status:"disconnected"}):{status:"disconnected-unhandled"}},"handleConnect"),l=i(async(u,f)=>{let h=!!u.isHub,g=h?u.properties?.find(S=>S.name==="namespaces")?.value:u.needsNamespace,d=h?u.properties?.find(S=>S.name==="derivationPath")?.value:u.needsDerivationPath,m=g?.selection==="single",y=f[0];if(!y)throw new Error("To confirm a namespace, you should select at least one namespace.");if(m&&d)return r({type:"needsDerivationPath",payload:{providerType:u.type,providerImage:u.image,namespace:y}}),{status:"derivation-path"};if(!Hc(n))throw new Error("Something went wrong on handling namespace. Please retry.");let T=f.map(S=>({namespace:S}));return r({type:"detached",payload:{targetWallet:u,selectedNamespaces:T?.map(S=>S.namespace)||null}}),{status:"Detached"}},"handleNamespace"),p=i(async u=>{if(!u)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");if(!Qc(n))throw new Error("It seems you are filling derivation path without setting namespace before doing that. Please retry to connect.");let f=n.derivationPath.providerType,g=[{namespace:n.derivationPath.namespace,derivationPath:u}];return await a(f,g)},"handleDerivationPath"),c=i(async u=>{let f=t(u);return f.connected||f.connecting?(await e(u),{status:"disconnected"}):{status:"noop"}},"handleDisconnect");return{handleConnect:s,handleDisconnect:c,handleNamespace:l,handleDerivationPath:p,getState:()=>n,resetState:u=>{r(u==="derivation"?{type:"resetDerivation"}:{type:"reset"})}}}i(Ho,"useStatefulConnect");import{WalletState as as}from"@rango-dev/ui";import{useWallets as $C}from"@rango-dev/wallets-react";import{detectMobileScreens as FC,KEPLR_COMPATIBLE_WALLETS as OC,WalletTypes as Un}from"@rango-dev/wallets-shared";import{useCallback as UC,useEffect as zC}from"react";import LC,{createContext as MC,useContext as PC,useEffect as _C,useRef as DC}from"react";import{create as BC}from"zustand";import{persist as WC}from"zustand/middleware";import{allProviders as QS}from"@rango-dev/provider-all";var qa=class{static{i(this,"CacheService")}#e=new Map;get(e){return this.#e.get(e)}set(e,o){this.#e.set(e,o)}remove(e){this.#e.delete(e)}clear(){this.#e.clear()}},qo=new qa;import{defineVersions as Vc,pickVersion as Kc,Provider as Ga}from"@rango-dev/wallets-core";function jc({allProviders:t,configWallets:e}){if(e){let o=[];return e.forEach(n=>{if(typeof n=="string"){let r=t.find(a=>{let s=Xc(a);return s instanceof Ga?s.id===n:s.config.type===n});r?o.push(r):console.warn(`Couldn't find ${n} provider. Please make sure you are passing the correct name.`)}else n instanceof Ga?o.push(Vc().version("1.0.0",n).build()):o.push(Vc().version("0.0.0",n).build())}),o}return t}i(jc,"matchAndGenerateProviders");function Xc(t){try{return Kc(t,"1.0.0")[1]}catch{return Kc(t,"0.0.0")[1]}}i(Xc,"pickProviderVersionWithFallbackToLegacy");function Yc(t){return t.map(o=>Xc(o)).map(o=>o instanceof Ga?o.id:o.config.type)}i(Yc,"configWalletsToWalletName");function jr(t,e){return e.find(o=>o.name===t)?.displayName}i(jr,"getBlockchainDisplayNameFor");function ft(t,e){return e.find(o=>o.name===t)?.shortName}i(ft,"getBlockchainShortNameFor");function Zc(t,e){return e.find(o=>o.name===t)?.logo}i(Zc,"getBlockchainImage");function Dn(t,e){return e.find(o=>o.id===t)?.title}i(Dn,"getSwapperDisplayName");function ko(t,e){return e.find(o=>o.name===t)??null}i(ko,"findBlockchain");function Va(t,e){if(!e||!t)return!1;for(let o of e.feeAssets)if(t?.blockchain===o?.blockchain&&t?.symbol===o?.symbol&&t?.address===o?.address)return!0;return!1}i(Va,"isTokenNative");function gt(t){return`${t.blockchain.toLowerCase()}-${t.symbol.toLowerCase()}-${(t.address??"").toLowerCase()}`}i(gt,"createTokenHash");function Go(t,e){return t.addressPatterns.filter(r=>new RegExp(r).test(e)).length>0}i(Go,"isValidTokenAddress");function $n(t){let{config:e,meta:o}=t,n={},r=e.tokens,a=i(l=>{l.forEach(p=>{typeof p!="string"&&(p=gt(p));let c=o.tokensMapByTokenHash.get(p);c&&(n[p]=c)})},"addTokens");if(Array.isArray(r))return r.length>0?(a(r),Object.values(n)):Array.from(o.tokensMapByTokenHash.values());if(!r)return Array.from(o.tokensMapByTokenHash.values());let s;if(e.blockchains?.length)s=e.blockchains;else{s=Object.keys(r);let l=new Set(s);Object.keys(o.tokensMapByBlockchainName).forEach(p=>{l.has(p)||a(o.tokensMapByBlockchainName[p])})}return s.forEach(l=>{let p=r[l];if(!p&&o.tokensMapByBlockchainName?.[l]){a(o.tokensMapByBlockchainName[l]);return}p&&(p.isExcluded?(a(o.tokensMapByBlockchainName[l]),p.tokens.forEach(c=>{let u=gt(c);delete n[u]})):a(p.tokens))}),Object.values(n)}i($n,"matchTokensFromConfigWithMeta");function Xr(t){let{config:e}=t,o=e.from?.blockchains||[],n=e.to?.blockchains||[];if(!o.length||!n.length)return[];let r=[...o,...n],a=new Set(r);return Array.from(a)}i(Xr,"getSupportedBlockchainsFromConfig");function Rc(t){return{walletConnectProjectId:t?.walletConnectProjectId,trezorManifest:t?.trezorManifest,tonConnect:t?.tonConnect,walletConnectListedDesktopWalletLink:t.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink}}i(Rc,"makeProvidersOptionsFromConfig");var Yr={apiKey:"",title:void 0,multiWallets:!0,excludeLiquiditySources:!0,customDestination:!0,variant:"default",trezorManifest:{appUrl:"https://widget.rango.exchange/",email:"hi+trezorwidget@rango.exchange"},tonConnect:{manifestUrl:"https://raw.githubusercontent.com/rango-exchange/rango-types/main/assets/manifests/tonconnect-manifest.json"}},HS={clientUrl:void 0},qS={liquiditySources:void 0};function Jc(t){let e=Rc(t),o={walletconnect2:{WC_PROJECT_ID:e?.walletConnectProjectId||"",DISABLE_MODAL_AND_OPEN_LINK:e?.walletConnectListedDesktopWalletLink},selectedProviders:t.wallets,trezor:e?.trezorManifest?{manifest:e.trezorManifest}:void 0,tonConnect:e?.tonConnect?.manifestUrl?{manifestUrl:e?.tonConnect.manifestUrl}:void 0};return QS(o).map(a=>a())}i(Jc,"generateProviders");var eu=i((t,e,o)=>{let n=Jc({...Yr,...t});return{config:{...Yr,...t},iframe:HS,campaignMode:qS,allProviders:n,getLiquiditySources:()=>{let{config:r,campaignMode:a}=o();return a.liquiditySources?.length?a.liquiditySources:r.liquiditySources??[]},getDisabledLiquiditySources:()=>{let{disabledLiquiditySources:r,campaignMode:a}=o();return a.liquiditySources?.length?[]:r},excludeLiquiditySources:()=>{let{config:r,campaignMode:a}=o();return a.liquiditySources?.length?!1:!!r.excludeLiquiditySources},isInCampaignMode:()=>{let{campaignMode:r}=o();return!!r.liquiditySources?.length},updateConfig:r=>{let a=o().config,{_tokensMapByTokenHash:s,_tokensMapByBlockchainName:l}=o(),p=$n({type:"source",config:{blockchains:r.from?.blockchains,tokens:r.from?.tokens},meta:{tokensMapByBlockchainName:l,tokensMapByTokenHash:s}}),c=$n({type:"destination",config:{blockchains:r.to?.blockchains,tokens:r.to?.tokens},meta:{tokensMapByBlockchainName:l,tokensMapByTokenHash:s}});qo.set("supportedSourceTokens",p),qo.set("supportedDestinationTokens",c),e({config:{...a,...r}})},updateCampaignMode:(r,a)=>{let s=o().campaignMode;e({campaignMode:{...s,[r]:a}})},updateIframe:(r,a)=>{let s=o().iframe;e({iframe:{...s,[r]:a}})},buildAndSetProviders:()=>{let{config:r}=o(),a=Jc(r);e({allProviders:a})},getAvailableProviders:()=>{let{allProviders:r,config:a}=o(),s=Rc(a);return jc({allProviders:r,configWallets:a.wallets,options:s})}}},"createConfigSlice");import{TransactionType as tu}from"rango-types";var ou=[tu.EVM,tu.SOLANA],Zr="https://raw.githubusercontent.com/rango-exchange/assets/refs/heads/main/common/unknown-image.png";import{RangoClient as GS}from"rango-sdk";var Ka={API_KEY:$r};function Ot(t){return Ka[t]||""}i(Ot,"getConfig");function nu(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),Ka=e,Ka}i(nu,"initConfig");var ru=20,iu=25,ja="theme-widget",Xa=i((t,e)=>{let o=!1;if(e&&t){if(Array.isArray(e))o=!e.some(n=>Ft(n,t));else if(!Array.isArray(e)&&e[t.blockchain]){o=e[t.blockchain].tokens.some(r=>Ft(r,t));let n=e[t.blockchain].isExcluded;return!n&&!o||n&&o}}return o},"isTokenExcludedInConfig"),Ya=i((t,e)=>t&&e&&!e.includes(t.name),"isBlockchainExcludedInConfig"),au=i((t,e,o)=>o==="expanded"&&(t||e)||o==="full-expanded"&&e,"isVariantExpandable");var Jr,at=i(()=>Jr||(Jr=new GS(Ot("API_KEY"),Ot("BASE_URL")),Jr),"httpService");import{i18n as pu}from"@lingui/core";var su=[.5,1,3],Rr=1,Vo=5,Fn=30,ei=0;import{WidgetEvents as lu}from"@rango-dev/queue-manager-rango-preset";var Za=(o=>(o.QUOTE_INPUT_UPDATE="quoteInputUpdate",o.QUOTE_OUTPUT_UPDATE="quoteOutputUpdate",o))(Za||{}),Ja=(o=>(o.CONNECT="connect",o.DISCONNECT="disconnect",o))(Ja||{}),Ra=(e=>(e.CLICK_CONNECT_WALLET="clickConnectWallet",e))(Ra||{}),Ko=(a=>(a[a.RouteEvent=lu.RouteEvent]="RouteEvent",a[a.StepEvent=lu.StepEvent]="StepEvent",a.QuoteEvent="quoteEvent",a.WalletEvent="walletEvent",a.UiEvent="uiEvent",a))(Ko||{});function ti(t,e){let o=t.map(a=>a.swapperGroup),n=[];return Uo(t.map(a=>a.swapperGroup)).map(a=>{let s=t.find(l=>l.swapperGroup===a);if(s){let l=!0;o&&(l=o.some(p=>p===s.swapperGroup)),l&&s.types.map(p=>{n.push({id:s.swapperGroup,groupTitle:s.swapperGroup,logo:s.logo,type:p,selected:!e.includes(s.swapperGroup)})})}}),n}i(ti,"getUniqueSwappersGroups");function cu(t,e){return t.swapperGroup<e.swapperGroup?-1:t.swapperGroup>e.swapperGroup?1:0}i(cu,"sortLiquiditySourcesByGroupTitle");function Re(t,e){return e?.[t]==="hidden"}i(Re,"isFeatureHidden");function jo(t,e){return e?.[t]==="enabled"}i(jo,"isRoutingEnabled");var uu=i((t,e,o)=>Re("customTokens",o)?t:t.concat(e),"addCustomTokensToSupportedTokens");function Xo(t){return t==ei?{type:"error",message:pu.t("Slippage must be greater than or equal to 0.01")}:t>Vo&&t<=Fn?{type:"warning",message:pu.t("Your transaction is at risk of being frontrun due to high slippage tolerance."),quoteValidation:{type:3,slippage:t.toString()}}:null}i(Xo,"getSlippageValidation");var mu=i((t,e)=>({_blockchainsMapByName:new Map,_tokensMapByTokenHash:new Map,_tokensMapByBlockchainName:{},_popularTokens:[],_swappers:[],fetchStatus:"loading",blockchains:o=>{let n=e()._blockchainsMapByName,r=Array.from(n?.values()||[]);if(!o||!o?.type)return r;let a=e().config;if(o.type==="custom-token"){let p=Xr({config:a}),c=r;return p.length>0&&(c=c.filter(u=>p.includes(u.name))),c.filter(u=>ou.includes(u.type))}let s=(o.type==="source"?a.from?.blockchains:a.to?.blockchains)??[];return r.filter(p=>!(s.length>0&&!s.includes(p.name)))},tokens:o=>{let{_tokensMapByTokenHash:n,_tokensMapByBlockchainName:r,config:a,_customTokens:s}=e(),l=Array.from(n.values()),p=e()._blockchainsMapByName;if(!o||!o.type)return l;let c=o.type==="source"?"from":"to",u=o.type==="source"?"supportedSourceTokens":"supportedDestinationTokens",f=qo.get(u);f?.length||(f=$n({type:o.type,config:{blockchains:a[c]?.blockchains,tokens:a[c]?.tokens},meta:{tokensMapByTokenHash:n,tokensMapByBlockchainName:r}}),qo.set(u,f)),f=uu(f,s,a.features);let h=e().blockchains({type:o.type});return f.filter(d=>o.blockchain&&d.blockchain!==o.blockchain||!h.some(m=>m.name===d.blockchain)?!1:o.searchFor?!!(rt(d.symbol,o.searchFor)||rt(d.address||"",o.searchFor)||rt(d.name||"",o.searchFor)):!0).sort((d,m)=>{let y=e().isTokenPinned(d,o.type),T=e().isTokenPinned(m,o.type);if(y!==T)return y?-1:1;if(o.getBalanceFor){let I=o.getBalanceFor(d),A=o.getBalanceFor(m),E=_c(I,A);if(E!==0)return E}let S=p.get(d.blockchain),k=p.get(m.blockchain),v=Va(d,S),b=Va(m,k);if(v!==b)return v?-1:1;if(d.isPopular!==m.isPopular)return d.isPopular?-1:1;if(o.searchFor){let I=Cc(d,m,o.searchFor);if(I)return I}return d.isSecondaryCoin!==m.isSecondaryCoin?d.isSecondaryCoin?1:-1:S&&k?S.sort-k.sort:0})},findToken:o=>{let n=e()._tokensMapByTokenHash,r=e().customTokens(),a=gt(o),s=n.get(a);return s||(s=r.find(l=>gt(l)===a)),s},isTokenPinned:(o,n)=>!!(n==="source"?e().config.from?.pinnedTokens:e().config.to?.pinnedTokens)?.some(s=>Ft(s,o)),swappers:()=>{let{config:o,campaignMode:n}=e(),r=n.liquiditySources?.length?n.liquiditySources:null,a=r??o.liquiditySources,s=r?!1:o.excludeLiquiditySources;return e()._swappers.filter(c=>{let u=a?.includes(c.swapperGroup);return s||!a||a.length===0?!u:u}).sort(cu)},fetch:async()=>{try{let{routing:o}=e().config,n=jo("enableCentralizedSwappers",o),r=await at().getAllMetadata({enableCentralizedSwappers:n});t({fetchStatus:"success"});let a=new Map,s=new Map,l={},p=[],c=r.popularTokens,u=r.swappers.filter(g=>g.enabled),f=new Set;r.tokens.forEach(g=>{f.add(g.blockchain),p.push(g)}),r.blockchains.sort((g,d)=>g.sort-d.sort).forEach(g=>{g.enabled&&f.has(g.name)&&a.set(g.name,g)}),p.forEach(g=>{let d=gt(g);l[g.blockchain]||(l[g.blockchain]=[]),s.set(d,g),l[g.blockchain].push(d)}),t({_blockchainsMapByName:a,_tokensMapByTokenHash:s,_tokensMapByBlockchainName:l,_popularTokens:c,_swappers:u})}catch(o){throw t({fetchStatus:"failed"}),o}}}),"createDataSlice");import{Bengali as VS,Catalonia as KS,Chinese as du,Denmark as jS,English as XS,Finland as YS,French as ZS,German as JS,Greece as RS,Hungary as eC,India as tC,Indonesian as oC,Italian as nC,Japanese as rC,Korea as iC,Lithuania as aC,Malay as sC,Netherlands as lC,Pakistan as pC,Philippines as cC,Poland as uC,Portuguese as mC,Russian as dC,SaudiArabia as fC,Serbia as gC,Slovakia as hC,SouthAfrica as yC,Spanish as SC,Swahili as CC,Swedish as TC,Thai as kC,Turkish as vC,Ukrainian as wC,Vietnamese as xC}from"@rango-dev/ui";var fu=[{title:"Afrikaans",label:"Afrikaans",local:"af",SVGFlag:yC},{title:"Arabic",label:"\u0639\u0631\u0628\u064A",local:"ar",SVGFlag:fC},{title:"Bengali",label:"\u09AC\u09BE\u0982\u09B2\u09BE",local:"bn",SVGFlag:VS},{title:"Catalan",label:"Catal\xE0",local:"ca",SVGFlag:KS},{title:"Chinese (Simplified)",label:"\u7B80\u4F53\u4E2D\u6587",local:"zh-CN",SVGFlag:du},{title:"Chinese (Traditional)",label:"\u4E2D\u6587\uFF08\u7E41\u9AD4)",local:"zh-TW",SVGFlag:du},{title:"Danish",label:"Dansk",local:"da",SVGFlag:jS},{title:"Dutch",label:"Nederlands",local:"nl",SVGFlag:lC},{title:"English",label:"English",local:"en",SVGFlag:XS},{title:"Filipino",label:"Filipino",local:"fil",SVGFlag:cC},{title:"Finnish",label:"Suomalainen",local:"fi",SVGFlag:YS},{title:"French",label:"Fran\xE7ais",local:"fr",SVGFlag:ZS},{title:"German",label:"Deutsch",local:"de",SVGFlag:JS},{title:"Greek",label:"\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC",local:"el",SVGFlag:RS},{title:"Hindi",label:"\u0939\u093F\u0902\u0926\u0940",local:"hi",SVGFlag:tC},{title:"Hungarian",label:"Magyar",local:"hu",SVGFlag:eC},{title:"Indonesian",label:"Indonesia",local:"id",SVGFlag:oC},{title:"Italian",label:"Italiana",local:"it",SVGFlag:nC},{title:"Japanese",label:"\u65E5\u672C\u8A9E",local:"ja",SVGFlag:rC},{title:"Korean",label:"\uD55C\uAD6D\uC778",local:"ko",SVGFlag:iC},{title:"Lithuanian",label:"Lietuvi\u0173",local:"lt",SVGFlag:aC},{title:"Malay",label:"Melayu",local:"ms",SVGFlag:sC},{title:"Polish",label:"Polski",local:"pl",SVGFlag:uC},{title:"Portuguese",label:"Portugu\xEAs",local:"pt",SVGFlag:mC},{title:"Russian",label:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439",local:"ru",SVGFlag:dC},{title:"Serbian",label:"C\u0440\u043F\u0441\u043A\u0438",local:"sr",SVGFlag:gC},{title:"Slovak",label:"Slovensk\xFD",local:"sk",SVGFlag:hC},{title:"Spanish",label:"Espa\xF1ol",local:"es",SVGFlag:SC},{title:"Swahili",label:"Kiswahili",local:"sw",SVGFlag:CC},{title:"Swedish",label:"Svenska",local:"sv",SVGFlag:TC},{title:"Thai",label:"\u0E41\u0E1A\u0E1A\u0E44\u0E17\u0E22",local:"th",SVGFlag:kC},{title:"Turkish",label:"T\xFCrk\xE7e",local:"tr",SVGFlag:vC},{title:"Ukrainian",label:"Y\u043A\u0440\u0430\u0457\u043D\u0456",local:"uk",SVGFlag:wC},{title:"Urdu",label:"\u0627\u0631\u062F\u0648",local:"ur",SVGFlag:pC},{title:"Vietnamese",label:"Ti\u1EBFng Vi\u1EC7t",local:"vi",SVGFlag:xC}],Yo="en";var gu=i((t,e)=>({disabledLiquiditySources:[],theme:"auto",language:null,preferredBlockchains:[],slippage:Rr,customSlippage:null,infiniteApprove:!1,affiliateRef:null,affiliatePercent:null,affiliateWallets:null,_customTokens:[],quoteTokensRate:"default",changeQuoteTokensRate:()=>t(o=>({quoteTokensRate:o.quoteTokensRate==="default"?"reversed":"default"})),addPreferredBlockchain:o=>{let n=e().preferredBlockchains;if(n.find((s,l)=>{let p=s===o,c=l<=9;return p&&c}))return;let a=n.filter(s=>!(s===o));t(()=>({preferredBlockchains:[o,...a]}))},setSlippage:o=>t(()=>({slippage:o})),setCustomSlippage:o=>t(()=>({customSlippage:o})),setAffiliateRef:o=>t(()=>({affiliateRef:o})),setAffiliatePercent:o=>t(()=>({affiliatePercent:o})),setAffiliateWallets:o=>t(()=>({affiliateWallets:o})),toggleAllLiquiditySources:(o,n)=>t(r=>{if(n)return{disabledLiquiditySources:[]};let a=Uo(o.map(s=>s.swapperGroup));return a.length===r.disabledLiquiditySources.length?{disabledLiquiditySources:[]}:{disabledLiquiditySources:a}}),toggleInfiniteApprove:()=>t(o=>({infiniteApprove:!o.infiniteApprove})),toggleLiquiditySource:o=>t(n=>n.disabledLiquiditySources.includes(o)?{disabledLiquiditySources:n.disabledLiquiditySources.filter(r=>r!=o)}:{disabledLiquiditySources:n.disabledLiquiditySources.concat(o)}),setTheme:o=>t(()=>({theme:o})),setLanguage:o=>t(()=>({language:o})),updateSettings:o=>{let{features:n,theme:r}=o,a=Re("theme",n),s=Re("language",n),l=Re("liquiditySource",n),p=r?.singleTheme,c=o?.__UNSTABLE_OR_INTERNAL__?.autoUpdateSettings;t({...a&&{theme:o.theme?.mode||"auto"},...p&&{theme:o.theme?.mode||"light"},...s&&{language:o.language||Yo},...l&&{disabledLiquiditySources:o.liquiditySources||[]},...c&&{language:o.language||Yo}})},setCustomToken:o=>{e().fetchCustomTokensBalances({tokens:[o],connectedWallets:e().connectedWallets}),t(n=>({_customTokens:[o,...n._customTokens]}))},deleteCustomToken:o=>t(n=>({_customTokens:n._customTokens.filter(r=>r.address!==o.address)})),customTokens:()=>{let o=e().config,n=e()._customTokens,r=Xr({config:o});return r.length?n.filter(a=>r.includes(a.blockchain)):n}}),"createSettingsSlice");import is from"bignumber.js";import bC from"mitt";var Te=bC(),EC={on:Te.on,off:Te.off};var hu=i(t=>(e,o,n)=>t(i((...a)=>{let[s,...l]=a;e(p=>({...typeof s=="function"?s(p):s,lastUpdatedAt:+new Date}),...l)},"modifedSet"),o,n),"keepLastUpdated");import yu from"bignumber.js";function Ut(t){return`${t.blockchain}${So}${t.address}${So}${t.symbol}`}i(Ut,"createAssetKey");function Su(t,e){return`${Ut(e)}${So}${t}`}i(Su,"createBalanceKey");function On(t){let[e,o,n]=t.split(So);return{address:o==="null"?null:o,blockchain:e,symbol:n}}i(On,"extractAssetFromBalanceKey");function ts(t,e,o){return e.balances?.forEach(n=>{let r=n.price??t.findToken(n.asset)?.usdPrice;t._aggregatedBalances[Ut(n.asset)]?.forEach(s=>{o[s]&&(o[s]={...o[s],usdValue:r?new yu(r??me).multipliedBy(o[s].amount).toString():""})})}),o}i(ts,"computeNextBalancesWithNewPrices");function os(t,e){let o={};return t.balances?.forEach(n=>{let r=Su(t.address,n.asset),a=n.amount.amount,s=n.amount.decimals,l=n.price??e().findToken(n.asset)?.usdPrice,p=l?new yu(l??me).multipliedBy(a).toString():"",c={amount:a,decimals:s,usdValue:p};o[r]=c}),o}i(os,"createBalanceStateForNewAccount");function ns(t,e){for(let o in e){let n=On(o),r=Ut(n);t[r]||(t[r]=[]),t[r].includes(o)||(t[r]=[...t[r],o])}return t}i(ns,"updateAggregatedBalanceStateForNewAccount");function IC(t,e){let o=On(e),n=Ut(o);return t[n]&&(t[n]=t[n].filter(r=>r!==e)),t}i(IC,"removeBalanceFromAggregatedBalance");function rs(t,e,o){let n=t.connectedWallets.filter(p=>p.walletType===e);t.connectedWallets.forEach(p=>{p.walletType!==e&&(n=n.filter(c=>!(c.chain===p.chain&&c.address===p.address)))}),o?.chains&&o.chains.length>0&&(n=n.filter(p=>o.chains?.includes(p.chain))),o?.namespaces&&o.namespaces.length>0&&(n=n.filter(p=>p.namespace?o.namespaces?.includes(p.namespace):!1));let r={},a=t._aggregatedBalances,s=t._balances;return Object.keys(s).forEach(p=>{let c=On(p);!!n.find(f=>Su(f.address,{address:c.address,blockchain:f.chain,symbol:c.symbol})===p)?a=IC(a,p):r[p]=s[p]}),{_balances:r,_aggregatedBalances:a}}i(rs,"computeNextStateAfterWalletBalanceRemoval");function AC(t,e){return e.find(o=>t.address===o.address&&t.chain===o.blockChain)}i(AC,"matchWalletDetailsWithConnectedWallet");var NC=vc(),Cu=hu((t,e)=>({_balances:{},_aggregatedBalances:{},connectedWallets:[],fetchingWallets:!1,lastUpdatedAt:+new Date,setConnectedWalletAsRefetching:o=>{t(n=>({fetchingWallets:!0,connectedWallets:n.connectedWallets.map(r=>o.find(a=>Pn(a,r))?{...r,loading:!0,error:!1}:r)}))},setConnectedWalletRetrievedData:(o,n)=>{t(r=>({fetchingWallets:!1,connectedWallets:r.connectedWallets.map(a=>o.find(s=>Pn(s,a))?{...a,loading:!1,error:!1,explorerUrl:AC(a,n)?.explorerUrl||a.explorerUrl}:a)}))},setConnectedWalletHasError:o=>{t(n=>({fetchingWallets:!1,connectedWallets:n.connectedWallets.map(r=>o.find(a=>Pn(a,r))?{...r,loading:!1,error:!0}:r)}))},addConnectedWallet:(o,n)=>{let r=e().connectedWallets,a=o.filter(s=>!r.some(l=>Pn(s,l)));if(a.length>0){let s=a.map(l=>{let p=!r.some(c=>c.chain===l.chain&&c.selected&&c.walletType!==l.walletType);return{address:l.address,chain:l.chain,isContractWallet:l.isContractWallet,explorerUrl:null,walletType:l.walletType,selected:p,namespace:n,loading:!1,error:!1}});t(l=>({connectedWallets:[...l.connectedWallets.filter(c=>!s.some(u=>u.walletType===c.walletType&&u.chain===c.chain)),...s]}))}},fetchCustomTokensBalances:async o=>{let{tokens:n,connectedWallets:r}=o,a=n.reduce((p,c)=>((p[c.blockchain]||=[]).push(c),p),{}),s=new Set,l=r.reduce((p,c)=>{let u=`${c.address}-${c.chain}`;return s.has(u)||(s.add(u),a[c.chain]&&(p[c.address]||(p[c.address]=[]),p[c.address].push(...a[c.chain]))),p},{});Object.entries(l).forEach(async([p,c])=>{try{let{balances:u}=await at().getMultipleTokenBalance({assets:c.map(({symbol:f,address:h,blockchain:g})=>({symbol:f,address:h,blockchain:g})),walletAddress:p});if(u){let f=e()._balances,h=e()._aggregatedBalances;u.forEach(g=>{if(parseFloat(g.amount.amount)===0)return;let d={blockChain:g.asset.blockchain,balances:[g],address:p},m={_aggregatedBalances:e()._aggregatedBalances,findToken:e().findToken};ts(m,d,f);let y=os(d,e);h=ns(h,y),f={...f,...y}}),t(g=>({_balances:{...g._balances,...f},_aggregatedBalances:h}))}}catch(u){console.error(u)}})},setWalletsAsSelected:o=>{let n=e().connectedWallets.map(r=>{let a=!!o.find(l=>l.chain===r.chain&&l.walletType!==r.walletType&&r.selected),s=!!o.find(l=>l.chain===r.chain&&l.walletType===r.walletType&&!r.selected);return a?{...r,selected:!1}:s?{...r,selected:!0}:r});t({connectedWallets:n})},newWalletConnected:async(o,n)=>{Te.emit("walletEvent",{type:"connect",payload:{walletType:o[0].walletType,accounts:o}}),e().addConnectedWallet(o,n),e().fetchBalances(o)},removeBalancesForWallet:(o,n)=>{let r={_balances:e()._balances,_aggregatedBalances:e()._aggregatedBalances,connectedWallets:e().connectedWallets},{_balances:a,_aggregatedBalances:s}=rs(r,o,n);t({_balances:a,_aggregatedBalances:s})},disconnectNamespaces:(o,n)=>{if(e().connectedWallets.find(a=>a.walletType===o)){e().removeBalancesForWallet(o,{namespaces:n}),e()._changeSelectedWalletIfNeededOnRemove(o,{namespaces:n});let a=e().connectedWallets.filter(s=>s.namespace?!(s.walletType===o&&n.includes(s.namespace)):!0);t({connectedWallets:a})}},disconnectWallet:o=>{let n=e().connectedWallets.find(r=>r.walletType===o);if(Te.emit("walletEvent",{type:"disconnect",payload:{walletType:o}}),n){e().removeBalancesForWallet(o),e()._changeSelectedWalletIfNeededOnRemove(o);let r=e().connectedWallets.filter(a=>a.walletType!==o);t({connectedWallets:r})}},_changeSelectedWalletIfNeededOnRemove:(o,n)=>{let r=e().connectedWallets;n?.namespaces&&n.namespaces.length>0&&(r=r.filter(s=>!!s.namespace&&n.namespaces?.includes(s.namespace)));let a=r.filter(s=>s.selected&&s.walletType===o).map(s=>s.chain);if(a.length>0){let s=e().connectedWallets.map(l=>a.includes(l.chain)?(a=a.filter(p=>p!==l.chain),{...l,selected:!0}):l);t({connectedWallets:s})}},clearConnectedWallet:()=>t({connectedWallets:[]}),fetchBalances:async(o,n)=>{let{shouldFetchCustomTokens:r=!0,selectedCustomTokens:a}=n||{};await e().fetchMainTokensBalances(o),r&&e().fetchCustomTokensBalances({tokens:a??e().customTokens(),connectedWallets:o})},fetchMainTokensBalances:async(o,n)=>{if(o.length===0)return;let r=o[0].walletType;e().setConnectedWalletAsRefetching(o);let a=o.map(p=>({address:p.address,blockchain:p.chain})),s;try{s=await at().getWalletsDetails(a)}catch(p){e().setConnectedWalletHasError(o),console.error(`Request for fetching balances failed. cause: ${p}`);return}let l=s.wallets;if(l){let p=e()._balances,c=e()._aggregatedBalances;l.forEach(f=>{if(f.failed)return;let h={_balances:p,_aggregatedBalances:c,connectedWallets:e().connectedWallets,findToken:e().findToken};ts(h,f,p);let{_balances:g,_aggregatedBalances:d}=rs(h,r,{chains:[f.blockChain]});if(c=d,p=g,!e().connectedWallets.find(y=>y.walletType===r&&y.address===f.address&&y.chain===f.blockChain))return;let m=os(f,e);c=ns(c,m),p={...p,...m}}),t(f=>({_balances:{...f._balances,...p},_aggregatedBalances:c})),e().setConnectedWalletRetrievedData(o,l);let{retryOnFailedBalances:u=!0}=n||{};if(u){let f=l.filter(h=>h.failed).map(h=>({chain:h.blockChain,walletType:r,address:h.address}));f.length>0&&await e().fetchMainTokensBalances(f,{retryOnFailedBalances:!1})}}else e().setConnectedWalletHasError(o),console.error("We couldn't fetch your account balances. Seem there is no information on blockchain for them yet.")},getBalances:()=>e()._balances,getBalanceFor:o=>{let n=e().getBalances(),r=Ut(o),a=e()._aggregatedBalances[r]||[];if(a.length===0)return null;if(a.length===1){let p=a[0];return n[p]}let l=n[a[0]];return a.forEach(p=>{let c=n[p],u=new is(c.amount),f=new is(l.amount);u.isGreaterThan(f)&&(l=c)}),l},getBalancesForWalletAddress:o=>{let n=e().getBalances();return Object.keys(n).reduce((s,l)=>{let p=n[l],[,,,c]=l.split(So);return c===o&&(s[l]=p),s},{})},getConnectedWalletsDetails:()=>NC(()=>e().connectedWallets.map(n=>{let r=e().getBalancesForWalletAddress(n.address),a=Object.keys(r);return{...n,balances:a.reduce((s,l)=>{let p=r[l],c=On(l);if(c.blockchain===n.chain){let u=e().findToken(c),f=p.amount?new is(p.amount).shiftedBy(-p.decimals):me;s.push({chain:n.chain,symbol:c.symbol,ticker:c.symbol,address:c.address,rawAmount:p.amount,decimal:p.decimals,amount:f.toString(),logo:u?.image||null,usdPrice:u?.usdPrice||null})}return s},[])}}),e().lastUpdatedAt)}));function Tu(t){return BC()(WC((...e)=>({...Cu(...e),...mu(...e),...gu(...e),...eu(t,...e)}),{name:"user-settings",skipHydration:!0,partialize:e=>({_customTokens:e._customTokens,theme:e.theme,language:e.language,affiliatePercent:e.affiliatePercent,affiliateRef:e.affiliateRef,affiliateWallets:e.affiliateWallets,slippage:e.slippage,customSlippage:e.customSlippage,infiniteApprove:e.infiniteApprove,preferredBlockchains:e.preferredBlockchains,disabledLiquiditySources:e.disabledLiquiditySources,quoteTokensRate:e.quoteTokensRate}),version:1,migrate:(e,o)=>{let n=e;return o===0&&(n._customTokens=n._customTokens.map(r=>({...r,warning:!0}))),n}}))}i(Tu,"createAppStore");var ku=MC(null);function C(){let t=PC(ku);if(_C(()=>{t&&!t.persist.hasHydrated()&&t.persist.rehydrate()},[]),!t)throw new Error("Missing AppStoreContext.Provider in the tree");return t()}i(C,"useAppStore");function vu(t){let e=DC();return e.current||(e.current=Tu(t.config)),LC.createElement(ku.Provider,{value:e.current},t.children)}i(vu,"AppStoreProvider");function Tt(t){let{chain:e}=t||{},{connectedWallets:o,getAvailableProviders:n}=C(),{state:r,getWalletInfo:a}=$C(),s=C().blockchains(),{handleDisconnect:l}=Ho(),p=Yc(n()),c=Mc(r,a,p,e);c=FC()?c.filter(m=>m.showOnMobile!==!1&&r(m.type).installed):c;let u=Dc(c,r),f=i(m=>!o.find(y=>y.walletType===m&&y.chain===e),"isExperimentalChainNotAdded"),h=UC(()=>{let m=c?.filter(y=>y.state===as.CONNECTING)||[];for(let y of m)l(y.type)},[Oc(c)]);zC(()=>()=>{h()},[]);let g=i(m=>{let y=m.find(S=>S.type===Un.DEFAULT);return!y||y.state===as.NOT_INSTALLED?!1:m.filter(S=>S.state!=as.NOT_INSTALLED&&![Un.DEFAULT,Un.WALLET_CONNECT_2,Un.LEDGER].includes(S.type)&&a(S.type).supportedChains.filter(k=>k.type=="EVM").length>0).length==0},"shouldShowDefaultInjectedWallet"),d=i((m,y,T)=>Gr(T,y)&&f(m)&&!OC.includes(m)||m==Un.DEFAULT&&!g(c),"shouldExcludeWallet");return{list:u.filter(m=>!d(m.type,e??"",s)),terminateConnectingWallets:h}}i(Tt,"useWalletList");import{Modal as GC}from"@rango-dev/ui";import VC from"react";import{create as qC}from"zustand";var wu="rango-widget";var zn=class{constructor(e){this.state="not-initiated";this.events={};this.init=()=>{this.initEvents(),this.tryClaim()};this.forceClaim=()=>{if(!this.isClaimed()){let e={name:"force-claim",candidateId:this.tabId};this.channel.postMessage(e),setTimeout(()=>{this.isClaimed()||this.claim()},300)}};this.isClaimed=()=>this.state==="claimed";this.destroy=()=>{this.channel.removeEventListener("message",this.handleMessageEvent),document.removeEventListener("visibilitychange",this.handleVisibilityChange),document.removeEventListener("resume",this.handleResume)};this.handleMessageEvent=e=>{let o=e.data.name;switch(o){case"ping":this.claimedByCurrentTab(e.data.pingAt);break;case"pong":this.alreadyClaimedByAnotherTab();break;case"force-claim":this.forceRelease(e.data.candidateId);break;case"force-release":this.tabId===e.data.candidateId&&this.claim();break;default:throw new Error(`${o} is not supported.`)}};this.handleVisibilityChange=async()=>{document.visibilityState==="visible"&&await this.tryClaim()};this.handleResume=async()=>{this.isClaimed()&&(await this.tryClaim(),this.isClaimed()||this.events.onRelease?.())};this.channel=new BroadcastChannel(wu),this.tabId=Math.trunc(Math.random()*1e5),this.events=e}static{i(this,"TabManager")}initEvents(){this.channel.addEventListener("message",this.handleMessageEvent),document.addEventListener("visibilitychange",this.handleVisibilityChange),document.addEventListener("resume",this.handleResume)}claimedByCurrentTab(e){let o=this.lastTryClaim&&this.lastTryClaim<e;if(this.isClaimed()||o){let n={name:"pong"};this.channel.postMessage(n);return}}alreadyClaimedByAnotherTab(){this.resetLastCheck()}async tryClaim(){return this.setLastCheck(),new Promise(e=>{setTimeout(()=>{this.check(),e()},300)})}check(){this.state==="not-initiated"&&this.events.onInit?.(),this.lastTryClaim?(this.claim(),this.resetLastCheck()):this.state="not-claimed"}claim(){this.state="claimed",this.events.onClaim?.()}setLastCheck(){this.lastTryClaim=Date.now();let e={name:"ping",pingAt:this.lastTryClaim};this.channel.postMessage(e)}resetLastCheck(){this.lastTryClaim=void 0}forceRelease(e){if(this.isClaimed()){this.state="not-claimed",this.events.onRelease?.();let o={name:"force-release",candidateId:e};this.channel.postMessage(o)}}};var HC=i(t=>{let e=t;e.use={};for(let o of Object.keys(e.getState()))e.use[o]=()=>e(n=>n[o]);return e},"createSelectors"),Zo=HC;var te=Zo(qC()((t,e)=>({isActiveTab:!1,tabManagerInitiated:!1,showActivateTabModal:!1,watermark:"NONE",showProfileBanner:!1,fetchingApiConfig:!1,showCompactTokenSelector:!1,activateCurrentTab:(o,n)=>{let{showActivateTabModal:r}=e();!r&&n?t({showActivateTabModal:!0}):(r||!n)&&o()},setShowActivateTabModal:o=>{t({showActivateTabModal:o})},setWatermark:o=>{t({watermark:o})},setShowProfileBanner:o=>{t({showProfileBanner:o})},setShowCompactTokenSelector:o=>{t({showCompactTokenSelector:o})}}))),wo=new zn({onInit:()=>te.setState({tabManagerInitiated:!0}),onClaim:()=>te.setState({isActiveTab:!0,showActivateTabModal:!1}),onRelease:()=>te.setState({isActiveTab:!1})});function J(t){let{watermark:e}=te();return VC.createElement(GC,{hasWatermark:e==="FULL",...t},t.children)}i(J,"WatermarkedModal");import{i18n as rn}from"@lingui/core";import{Alert as oT,Button as nT,Divider as si,Image as rT,MessageBox as iT,RadioRoot as aT}from"@rango-dev/ui";import de,{useEffect as sT,useMemo as lT,useState as pT}from"react";import{Checkbox as JC,Radio as RC,Typography as eT}from"@rango-dev/ui";import Jt from"react";function Jo(t,e){return t.find(o=>o.name===e)?.logo}i(Jo,"getBlockchainLogo");import{Button as KC,darkTheme as jC,Image as XC,styled as kt,Typography as YC}from"@rango-dev/ui";var oi=kt("ul",{padding:0,paddingTop:"$10",paddingBottom:"$20",margin:0}),Ro=kt("li",{backgroundColor:"$neutral200",padding:"$16",borderRadius:"$sm",variants:{clickable:{true:{cursor:"pointer"}},hasError:{true:{background:"$error100 ",[`.${jC} &`]:{backgroundColor:"$error700"}}},unsupported:{true:{cursor:"not-allowed",paddingTop:"$8",paddingBottom:"$8"}}}}),en=kt("div",{display:"flex",gap:"$8",alignItems:"center"}),ni=kt("div",{flex:"1",display:"flex",flexDirection:"column",justifyContent:"space-between",height:"$40",variants:{showSupportedChains:{true:{justifyContent:"space-between"},false:{justifyContent:"center"}}}}),bu=kt("div",{flex:"1",display:"flex",alignItems:"center",gap:"$4",opacity:"0.5"}),tn=kt(XC,{variants:{disabled:{true:{opacity:"0.5"}}}}),on=kt(KC,{minHeight:"$40"}),Eu=kt(YC,{maxWidth:"100px"}),Iu=kt("div",{paddingLeft:"48px"}),Au=kt("div",{display:"flex",gap:"2px",cursor:"pointer",alignItems:"center",width:"fit-content"}),Nu=kt("div",{display:"flex",gap:"6px",alignItems:"center"});import{Image as Wu,Tooltip as Lu,Typography as ZC}from"@rango-dev/ui";import Bt from"react";import{styled as Bu}from"@rango-dev/ui";var ss=Bu("div",{display:"flex",alignItems:"center",padding:0,margin:0}),ri=Bu("div",{marginLeft:"-5px",listStyleType:"none",backgroundColor:"$background",borderRadius:"$lg",minWidth:"15px",height:"15px",variants:{firstItem:{true:{marginLeft:0}}},display:"flex",alignItems:"center",justifyContent:"center"});var ls=3;function ii(t){let{chains:e}=t;return Bt.createElement(ss,null,e.slice(0,ls).map((o,n)=>Bt.createElement(Lu,{key:o.name,container:N(),side:"bottom",align:"start",content:o.name,sideOffset:4},Bt.createElement(ri,{firstItem:n===0},Bt.createElement(Wu,{src:o.logo,size:15})))),e.length>ls&&Bt.createElement(Lu,{container:N(),side:"bottom",align:"start",sideOffset:4,content:Bt.createElement(ss,null,e.map((o,n)=>Bt.createElement(ri,{key:o.name,firstItem:n===0},Bt.createElement(Wu,{src:o.logo,size:15}))))},Bt.createElement(ri,null,Bt.createElement(ZC,{variant:"body",size:"xsmall"},"+",e.length-ls))))}i(ii,"SupportedChainsList");function Mu(t){let{onClick:e,type:o,namespace:n}=t,r=C().blockchains(),a=n.getSupportedChains(r),s=a.length>1;return Jt.createElement(Ro,{onClick:e,clickable:!0},Jt.createElement(en,null,Jt.createElement(tn,{src:Jo(r,n.id),size:40}),Jt.createElement(ni,{showSupportedChains:s},Jt.createElement(eT,{variant:"label",size:"large"},n.label),s&&Jt.createElement(ii,{chains:a})),o==="radio"?Jt.createElement(RC,{value:n.value}):Jt.createElement(JC,{checked:t.value})))}i(Mu,"NamespaceListItem");import{i18n as tT}from"@lingui/core";import{Typography as Pu}from"@rango-dev/ui";import nn from"react";function ai(t){let{namespace:e}=t,o=C().blockchains();return nn.createElement(Ro,{unsupported:!0},nn.createElement(en,null,nn.createElement(tn,{src:Jo(o,e.id),size:40,disabled:!0}),nn.createElement(bu,null,nn.createElement(Pu,{variant:"label",size:"large"},e.label),nn.createElement(Pu,{variant:"body",size:"xsmall"},tT.t("(Currently not supported)")))))}i(ai,"NamespaceUnsupportedItem");function Qn(t){let{targetWallet:e}=t.value,o=e.properties?.find(m=>m.name==="namespaces"),n=e.isHub,r=e.isHub?o?.value.selection==="single":e.needsNamespace?.selection==="single",a=n?o?.value:e.needsNamespace,s=e.image,l=C().blockchains(),[p,c]=pT([]),u=lT(()=>a?.data.filter(m=>!m.unsupported),[e?.type]),f=i(m=>{c(r?[m]:y=>y.includes(m)?y.filter(T=>T!==m):y.concat(m))},"onSelect"),h=u?.length===p.length,g=i(()=>{if(r)throw new Error("onSelectAll should not be called on single selection mode.");h?c([]):u&&c(u.map(m=>m.value))},"onSelectAll"),d=i(m=>r?de.createElement(aT,{value:p?.[0]},m):de.createElement(de.Fragment,null,m),"wrapRadioRoot");return sT(()=>{if(!r&&u)if(t.value.defaultSelectedChains?.length){let m=u.filter(y=>y.getSupportedChains(l).some(T=>t.value.defaultSelectedChains?.includes(T.name)));c(m.map(y=>y.value))}else c(u.map(m=>m.value))},[]),de.createElement(de.Fragment,null,de.createElement(iT,{type:"info",title:rn.t("Connect {wallet}",{wallet:e.title}),description:rn.t("This wallet supports multiple chains. Choose which chains you\u2019d like to connect."),icon:de.createElement(rT,{src:s,size:45})}),r?de.createElement(de.Fragment,null,de.createElement(si,{size:20}),de.createElement(oT,{variant:"alarm",type:"info",title:rn.t("This wallet can only connect to one chain at a time. ")})):de.createElement(de.Fragment,null,de.createElement(si,{size:30}),de.createElement(nT,{style:{marginLeft:"auto"},id:"widget-name-space-select-all-btn",size:"xsmall",variant:"ghost",type:"primary",onClick:g},h?rn.t("Deselect all"):rn.t("Select all"))),de.createElement(oi,null,d(de.createElement(de.Fragment,null,a?.data.map((m,y,T)=>de.createElement(de.Fragment,{key:m.id},m.unsupported?de.createElement(ai,{namespace:m}):de.createElement(Mu,{value:p.includes(m.value),namespace:m,type:r?"radio":"checkbox",onClick:()=>f(m.value)}),y!==T.length-1&&de.createElement(si,{size:10})))))),de.createElement(si,{size:20}),de.createElement(on,{id:"widget-name-space-confirm-btn",type:"primary",disabled:!p.length,onClick:()=>t.onConfirm(p)},rn.t("Connect")))}i(Qn,"Namespaces");import{i18n as ps}from"@lingui/core";import{Divider as cs,Image as ST,MessageBox as CT}from"@rango-dev/ui";import st from"react";import{i18n as an}from"@lingui/core";import{Button as cT,ChevronDownIcon as uT,ChevronUpIcon as mT,Divider as dT,Spinner as fT,Typography as Hn}from"@rango-dev/ui";import{useWallets as gT}from"@rango-dev/wallets-react";import ke,{useEffect as hT,useLayoutEffect as yT,useState as _u}from"react";var Du=i(function(e){let{walletType:o,namespace:n,initialConnect:r}=e,a=C().blockchains(),{connect:s,disconnect:l,state:p}=gT(),[c,u]=_u(null),[f,h]=_u(!1),d=p(o).namespaces?.get(n.value),m=d.accounts?.[0]?.split(":"),y=n.getSupportedChains(a);hT(()=>h(!1),[c]),yT(()=>{r&&T(o,n.value)},[]);let T=i(async(v,b)=>{try{await s(v,[{namespace:b,network:""}])}catch(I){u(I)}},"handleConnectNamespace"),S=i(async v=>{u(null),v.connected?await l(o,[n.value]):T(o,n.value)},"handleButtonClick"),k=i(()=>d.connected?an.t("Disconnect"):c?an.t("Try again"):an.t("Connect"),"getButtonText");return ke.createElement(Ro,{hasError:!!c},ke.createElement(en,null,ke.createElement(tn,{src:Jo(a,n.id),size:40}),ke.createElement(ni,null,ke.createElement(Nu,null,ke.createElement(Hn,{variant:"label",size:"large"},n.label),d.connected&&ke.createElement(Hn,{variant:"body",size:"small",color:"success500"},an.t("Connected")),!d.connected&&!!c&&ke.createElement(Hn,{variant:"body",size:"small",color:"error500"},an.t("Connection failed"))),d.connected&&ke.createElement(Eu,{variant:"body",size:"small",color:"neutral700"},Qo(m?.[m?.length-1])),!d.connected&&c&&ke.createElement(Au,{onClick:()=>h(v=>!v)},ke.createElement(Hn,{variant:"body",size:"small",color:"neutral700",style:{textDecoration:"underline",userSelect:"none",textDecorationSkipInk:"none"}},an.t("See why")),f?ke.createElement(mT,{size:12,color:"gray"}):ke.createElement(uT,{size:12,color:"gray"})),!d.connected&&!c&&y.length>1&&ke.createElement(ii,{chains:y})),d.connecting?ke.createElement(fT,{color:"info"}):ke.createElement(cT,{id:"widget-name-space-connect-btn",variant:"ghost",type:d.connected?"error":"primary",size:"small",onClick:async()=>S(d)},k())),!d.connected&&!!c&&f&&ke.createElement(ke.Fragment,null,ke.createElement(dT,{size:4}),ke.createElement(Iu,null,ke.createElement(Hn,{variant:"body",size:"small",color:"neutral700"},c.cause?.message||c.message))))},"NamespaceDetachedItem");function qn(t){let{selectedNamespaces:e,value:o}=t,{targetWallet:n}=o;return st.createElement(st.Fragment,null,st.createElement(CT,{type:"info",title:ps.t("Connect {wallet}",{wallet:n.type}),description:ps.t("This wallet supports multiple chains. Choose which chains you\u2019d like to connect or disconnect."),icon:st.createElement(ST,{src:n.image,size:45})}),st.createElement(cs,{size:20}),st.createElement(oi,null,n.needsNamespace?.data.map((r,a,s)=>st.createElement(st.Fragment,{key:r.id},r.unsupported?st.createElement(ai,{namespace:r}):st.createElement(Du,{walletType:n.type,namespace:r,initialConnect:e?.includes(r.value)}),a!==s.length-1&&st.createElement(cs,{size:10})))),st.createElement(cs,{size:20}),st.createElement(on,{id:"widget-name-space-confirm-btn",type:"primary",onClick:t.onConfirm},ps.t("Done")))}i(qn,"Detached");import{i18n as sn}from"@lingui/core";import{Divider as Fu,Image as wT,MessageBox as xT,Select as bT,TextField as ET}from"@rango-dev/ui";import ht,{useEffect as IT,useState as Ou}from"react";import{namespaces as TT}from"@rango-dev/wallets-shared";var li={id:"custom",label:"Custom",generateDerivationPath:t=>t};function us(t){let e=t?TT[t].derivationPaths:null;return e?[...e,li]:[]}i(us,"getDerivationPaths");import{Button as kT,styled as ms,Typography as vT}from"@rango-dev/ui";var $u=ms("div",{paddingTop:"$30",paddingBottom:"$30",zIndex:10}),ds=ms(vT,{paddingLeft:"$10"}),fs={height:"$40",backgroundColor:"$neutral200",borderRadius:"$sm"},dM=ms(kT,{minHeight:"$40"});var Uu="0";function Gn(t){let{onConfirm:e}=t,{namespace:o,providerImage:n,providerType:r}=t.value,[a,s]=Ou(null),[l,p]=Ou(Uu),c=a===li.id,u=us(o),f=i(({value:g})=>{let d=u?.find(m=>m.id===g);d&&(a===li.id&&Number.isNaN(Number(l))&&p(Uu),s(d.id))},"handleDerivationPathItemClick"),h=i(()=>{let g=u.find(d=>d.id===a);if(g)e(g.generateDerivationPath(l));else throw new Error("selectedDerivationPath can not be undefined")},"handleConfirm");return IT(()=>{s(us(o)[0]?.id||null)},[o]),ht.createElement(ht.Fragment,null,ht.createElement(Fu,{size:20}),ht.createElement(xT,{type:"info",title:sn.t("Select Derivation Path"),description:sn.t({id:"In order to connect to {type}, you must first select a Derivation Path",values:{type:r}}),icon:ht.createElement(wT,{src:n,size:45})}),ht.createElement($u,null,ht.createElement(ds,{variant:"body",size:"xsmall",color:"$neutral600"},sn.t("Choose Derivation Path Template")),ht.createElement(bT,{value:a||"",options:u.map(g=>({value:g.id,label:g.label})),variant:"filled",handleItemClick:f,styles:{trigger:fs}}),ht.createElement(Fu,{size:20}),ht.createElement(ds,{variant:"body",size:"xsmall",color:"$neutral600"},c?sn.t("Enter Path"):sn.t("Enter Index")),ht.createElement(ET,{type:c?"text":"number",variant:"contained",value:l,onChange:g=>p(g.target.value),style:fs})),ht.createElement(on,{id:"widget-derivation-path-confirm-btn",type:"primary",onClick:h,disabled:!u||!a||!l},sn.t("Confirm")))}i(Gn,"DerivationPath");import{i18n as ln}from"@lingui/core";import{Image as BT,MessageBox as gs,WalletState as WT}from"@rango-dev/ui";import{useWallets as LT}from"@rango-dev/wallets-react";import xo from"react";import{keyframes as AT,styled as pi}from"@rango-dev/ui";var xM=pi("div",{borderRadius:"$lg",width:"$45",height:"$45",backgroundColor:"$success300",display:"flex",justifyContent:"center",alignItems:"center"}),zu=pi("div",{position:"relative"}),NT=AT({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),Qu=pi("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${NT} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),Hu=pi("div",{"& img":{borderRadius:"50%"}});function hs(t){let{wallet:e,error:o}=t,{type:n,image:r}=e,{state:a}=LT();return Ln(a(n))===WT.CONNECTED?xo.createElement(gs,{type:"success",title:ln.t("Wallet Connected"),description:ln.t("Your wallet is connected, you can use it to swap.")}):o?xo.createElement(gs,{type:"error",title:ln.t("Failed to Connect"),description:o||ln.t("Your wallet is not connected. Please try again.")}):xo.createElement(gs,{type:"loading",title:ln.t("Connecting to your wallet"),description:ln.t("Click connect in your wallet popup."),icon:xo.createElement(zu,null,xo.createElement(Hu,null,xo.createElement(BT,{src:r,size:45})),xo.createElement(Qu,null))})}i(hs,"ConnectStatus");import{i18n as ys}from"@lingui/core";import{Button as MT,Divider as qu,MessageBox as PT}from"@rango-dev/ui";import ci from"react";function Ss(t){let{displayName:e,onConfirm:o}=t;return ci.createElement(PT,{title:ys.t({id:"Add {blockchainDisplayName} Chain",values:{blockchainDisplayName:e}}),type:"warning",description:ys.t({id:"Would you like to add the {blockchainDisplayName} experimental chain to your wallet?",values:{blockchainDisplayName:e}})},ci.createElement(qu,{size:18}),ci.createElement(qu,{size:32}),ci.createElement(MT,{id:"widget-experimental-chain-confirm-btn",onClick:o,variant:"outlined",type:"primary",fullWidth:!0,size:"large"},ys.t("Confirm")))}i(Ss,"ExperimentalChain");function Gu(t,e){return t().status==="init"&&!!e}i(Gu,"isOnStatus");function Vn(t){return t().status==="namespace"}i(Vn,"isOnNamespace");function Kn(t){return t().status==="derivationPath"}i(Kn,"isOnDerivationPath");function jn(t){return t().status==="detached"}i(jn,"isOnDetached");var FT=3e3,OT=300;function bo(t){let e=$T(),[o,n]=Vu(!1),[r,a]=Vu(),s=i(k=>{a(k.message)},"catchErrorOnHandle"),{terminateConnectingWallets:l}=Tt(),{handleConnect:p,handleDerivationPath:c,handleNamespace:u,getState:f,resetState:h}=Ho(),g=i(k=>{u(t.wallet,k).then(S).catch(s)},"handleConfirmNamespaces"),d=i(()=>{y()},"handleDetachedConfirm"),m=i(k=>{if(!k)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");c(k).then(S).catch(s)},"handleDerivationPathConfirm"),y=i(()=>{n(!1)},"handleClosingModal"),T=i(()=>{a(void 0),h(),n(!1),e.current&&clearTimeout(e.current)},"resetModalState"),S=i((k,v)=>{let b=k.status==="connected",I=["disconnected","disconnected-unhandled"].includes(k.status);b?(t.onConnect?.(),v||(e.current=setTimeout(y,FT))):I&&y()},"afterConnected");return DT(()=>{if(t.wallet){T();let k=!1,v=!0;i(()=>{setTimeout(()=>{v=!1,k||n(!0)},OT)},"beforeConnecting")(),p(t.wallet,{disconnectIfConnected:!0,defaultSelectedChains:t.options?.defaultSelectedChains}).then(I=>{["namespace","Detached","derivation-path"].includes(I.status)||(k=!0),S(I,v)}).catch(s)}},[t.wallet]),Rt.createElement(J,{open:o,onClose:y,onExit:()=>{T(),l(),t.onClose&&t.onClose()},container:N()},Gu(f,t.wallet)&&Rt.createElement(Rt.Fragment,null,Rt.createElement(hs,{wallet:{type:t.wallet.type,image:t.wallet.image},error:r}),Rt.createElement(_T,{direction:"vertical",size:32})),Vn(f)&&Rt.createElement(Qn,{onConfirm:g,value:f().namespace}),Kn(f)&&Rt.createElement(Gn,{onConfirm:m,value:f().derivationPath}),jn(f)&&Rt.createElement(qn,{onConfirm:d,value:f().namespace,selectedNamespaces:f().selectedNamespaces}))}i(bo,"StatefulConnectModal");import{Provider as qT}from"@rango-dev/wallets-react";import ui,{createContext as GT,useEffect as Zu,useMemo as VT,useRef as Ju}from"react";import{useEffect as UT}from"react";function Ku(t){return t.map(e=>typeof e=="string"?e:e.config.type).join("-")}i(Ku,"hashProviders");function Cs(t,e){let{clearConnectedWallet:o,getAvailableProviders:n,buildAndSetProviders:r}=C(),a=n();return UT(()=>{o(),r()},[Ku(t??[]),e?.walletConnectProjectId,e?.walletConnectListedDesktopWalletLink]),{providers:a}}i(Cs,"useWalletProviders");import{legacyFormatAddressWithNetwork as zT,legacyReadAccountAddress as ju}from"@rango-dev/wallets-core/legacy";import{Events as pn}from"@rango-dev/wallets-react";import{isEvmBlockchain as QT}from"rango-sdk";function Xu(t){let{newWalletConnected:e,disconnectWallet:o,disconnectNamespaces:n,connectedWallets:r,removeBalancesForWallet:a,blockchains:s}=C(),{onConnectWalletHandler:l,onDisconnectWalletHandler:p}=t,c=s().filter(QT).map(m=>m.name),u=i((m,y)=>{let[T,,S,k,v]=m,b={walletType:T,network:k.network??void 0,accounts:S};l.current?l.current(b):console.warn("onConnectWallet handler hasn't been set. Are you sure?");let I=Ha(T,S,c,y.supportedChainNames,v.isContractWallet);I.length&&e(I,v.namespace)},"onAccountsEvent"),f=i((m,y,T,S,k)=>{if(y===pn.ACCOUNTS){let v=Mn(k.supportedBlockchains);T&&u([m,y,T,S,k],{supportedChainNames:v})}y===pn.PROVIDER_DISCONNECTED&&(o(m),p.current?p.current(m):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?")),y===pn.NAMESPACE_DISCONNECTED&&n(m,T)},"handleUpdatesForHub"),h=i((m,y,T,S,k)=>{if(y===pn.ACCOUNTS){let v=Mn(k.supportedBlockchains),b=[],I=[];if(T?.forEach(E=>{let{network:x}=ju(E);c.includes(x)?b.push(E):I.push(E)}),r.filter(E=>E.walletType===m).map(E=>zT(E.address,E.chain)).length>0){if(b.length>0){let E=Ha(m,b,c,v,k.isContractWallet);a(m,{chains:E.map(x=>x.chain)})}I.length>0&&a(m,{chains:I.map(E=>{let{network:x}=ju(E);return x})})}T?u([m,y,T,S,k],{supportedChainNames:v}):(o(m),p.current?p.current(m):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?"))}},"handleUpdatesForLegacy"),g=i((m,y,T,S,k)=>{if(y===pn.CONNECTED&&T){let v={walletType:m,network:S.network??void 0,accounts:S.accounts??void 0};l.current?l.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}if(y===pn.NETWORK&&T){let v={walletType:m,network:T,accounts:S.accounts??void 0};l.current?l.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}},"handleUpdatesForBoth");return{handler:i((m,y,T,S,k)=>{k.isHub?f(m,y,T,S,k):h(m,y,T,S,k),g(m,y,T,S,k)},"handler")}}i(Xu,"useUpdates");import{LegacyEvents as HT}from"@rango-dev/wallets-core/legacy";function Yu(t,e){let[o,n,r,a,s]=e;n!==HT.PROVIDER_DISCONNECTED&&t(o,n,r,a,s)}i(Yu,"propagateEvents");var mi=GT({onConnectWallet:()=>{},onDisconnectWallet:()=>{}});function KT(t){let{updateConfig:e,updateSettings:o,fetch:n,fetchStatus:r}=C(),a=C().blockchains(),s=C().config,l={walletConnectProjectId:s?.walletConnectProjectId,trezorManifest:s?.trezorManifest,tonConnect:s.tonConnect,walletConnectListedDesktopWalletLink:t.config.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink},{providers:p}=Cs(s.wallets,l),c=Ju(),u=Ju(),{handler:f}=Xu({onConnectWalletHandler:c,onDisconnectWalletHandler:u});Zu(()=>{n().catch(console.log)},[]),Zu(()=>{t.config&&(e(t.config),o(t.config),window.__rango={config:s,dappConfig:t.config})},[t.config,r]);let h=te.use.isActiveTab(),g=VT(()=>({onConnectWallet:d=>{c.current=d},onDisconnectWallet:d=>{u.current=d}}),[]);return ui.createElement(mi.Provider,{value:g},ui.createElement(qT,{allBlockChains:a,providers:p,onUpdateState:(d,m,y,T,S)=>{let k=[d,m,y,T,S];f(...k),t.onUpdateState&&Yu(t.onUpdateState,k)},autoConnect:!!h,configs:{wallets:s.wallets}},t.children))}i(KT,"Main");function di(t){let{config:e,...o}=t;return ui.createElement(vu,{config:e},ui.createElement(KT,{...o,config:e}))}i(di,"WidgetWallets");import $a from"react";import jT,{Fragment as XT}from"react";import{MemoryRouter as YT,useInRouterContext as ZT}from"react-router";function Ru({children:t}){let o=ZT()?XT:YT;return jT.createElement(o,null,t)}i(Ru,"AppRouter");import{I18nManager as y0}from"@rango-dev/ui";import sc from"react";import Oe from"react";import{useRoutes as r0}from"react-router-dom";var F={home:"/",fromSwap:"from-swap",toSwap:"to-swap",blockchains:"blockchains",settings:"settings",customTokens:"custom-tokens",addCustomTokens:"add-custom-tokens",liquiditySources:"liquidity-sources",bridges:"bridges",exchanges:"exchanges",languages:"languages",swaps:"swaps",wallets:"wallets",confirmSwap:"confirm-swap",swapDetails:":requestId",routes:"routes"};import{useEffect as un,useRef as ki}from"react";import et from"bignumber.js";import{create as tk}from"zustand";import{subscribeWithSelector as ok}from"zustand/middleware";import{i18n as vt}from"@lingui/core";import{getRelatedWalletOrNull as ek,RouteEventType as f_}from"@rango-dev/queue-manager-rango-preset";import Ve from"bignumber.js";import{PendingSwapNetworkStatus as Ci}from"rango-types";import{i18n as He}from"@lingui/core";var oe=i(()=>({genericServerError:He.t("Failed Network, Please retry your swap."),liquiditySourcesError:{title:He.t("Please reset your liquidity sources."),description:He.t("You have limited the liquidity sources and this might result in Rango finding no routes. Please consider resetting your liquidity sources.")},noResultError:{title:He.t("No Routes Found."),description:He.t("Reasons why Rango couldn't find a route: low liquidity on token, very low input amount or no routes available for the selected input/output token combination.")},bridgeLimitErrors:{increaseAmount:He.t("Bridge Limit Error: Please increase your amount."),decreaseAmount:He.t("Bridge Limit Error: Please decrease your amount.")},highValueLossError:{impactTitle:He.t("High Price Impact"),title:He.t("Price impact is too high!"),description:He.t("The price impact is significantly higher than the allowed amount."),confirmMessage:He.t("Confirm high price impact")},quoteUpdatedWithHighValueLoss:{title:He.t("Route updated and price impact is too high, try again later!")},unknownPriceError:{impactTitle:He.t("USD Price Unknown"),title:He.t("USD Price Unknown, Cannot calculate Price Impact."),description:He.t("USD Price Unknown, Cannot calculate Price Impact. The price impact may be higher than usual. Are you sure to continue the Swap?"),confirmMessage:He.t("Confirm USD Price Unknown")}}),"errorMessages");function em(t){return t.type===0?t.diagnosisMessage??oe().noResultError.title:t.type===1?t.diagnosisMessage??oe().genericServerError:""}i(em,"getQuoteErrorMessage");import{i18n as fi}from"@lingui/core";var Eo=i(()=>({connectWallet:fi.t("Connect Wallet"),swap:fi.t("Swap"),swapAnyway:fi.t("Swap anyway"),ethWarning:fi.t("The route goes through Ethereum. Continue?")}),"swapButtonTitles");function Ts(t,e){return{"Network Fee":e("Network Fee"),"Swapper Fee":e("Protocol Fee"),"Affiliate Fee":e("Affiliate Fee"),"Outbound network fee":e("Outbound Fee"),"Rango Fee":e("Rango Fee")}[t]}i(Ts,"getFeeLabel");var ks=["RECOMMENDED","CENTRALIZED","LOWEST_FEE","FASTEST","HIGH_IMPACT"],tm=100,om=30,nm=15,rm=60;var im=[{threshold:-10,minInput:400},{threshold:-5,minInput:1e3}],am=[{threshold:-1,minInput:1e3},{threshold:-2,minInput:500}];import{getLastSuccessfulStep as RT}from"@rango-dev/queue-manager-rango-preset";import e_ from"bignumber.js";function lm(t,e){if(e===null)return null;let o=e?.find(n=>n.blockchain===t.chain)?.wallets.find(n=>n.address?.toLowerCase()===t.address.toLowerCase());return o?o.requiredAssets:null}i(lm,"getRequiredBalanceOfWallet");function Qt(t){let e;return t<=-3&&t>-10?e="low":t<=-10&&(e="high"),e}i(Qt,"getPriceImpactLevel");function gi(t,e,o){let n=t.steps[0],r=t.steps[t.steps.length-1],a=RT(t.steps),s={blockchain:r.toBlockchain,symbol:r.toSymbol,address:r.toSymbolAddress},l=ko(a?a.toBlockchain:n.fromBlockchain,e),p=ko(r.toBlockchain,e),c=o(a?{blockchain:l?.name??"",symbol:a.toSymbol,address:a.toSymbolAddress}:{blockchain:l?.name??"",symbol:n.fromSymbol,address:n.fromSymbolAddress}),u=o(s),f=a?a.outputAmount??"":t.inputAmount;return{fromBlockchain:l,fromToken:c,toBlockchain:p,toToken:u,inputAmount:f}}i(gi,"createRetryQuote");function cn(t){let{previousQuote:e,currentQuote:o,findToken:n,userSlippage:r}=t,a=Xn(o),s=yt(o);if(o&&a&&s){let c=zt(a.toString(),s.toString());if(!!c&&dm(a,c)){let f=yi(o?.swaps,n),h=Qt(c);return{type:0,inputUsdValue:a,outputUsdValue:s,priceImpact:c,totalFee:f,warningLevel:h}}}if(e&&hm(e,o))return{type:4,usdValueChange:_(yt(o)?.minus(yt(e)??0).toString()??"0",null,2),percentageChange:_(zt(yt(e)??"1",yt(o)??"1"),null,2)};if(o&&(!a||!s))return{type:1};let l=Si(o.swaps),p=r>Vo;if(gm(t.userSlippage.toString(),l)){if(p&&parseFloat(l??"0")<r)return{type:3,slippage:r.toString()}}else return{type:2,recommendedSlippages:fm(o,r),minRequiredSlippage:l};return null}i(cn,"generateQuoteWarnings");function pm(t){return![4].includes(t.type)}i(pm,"isQuoteWarningConfirmationRequired");function zt(t,e){let o=typeof e=="string"?parseFloat(e)<=0:!e?.gt(0),n=!t||!e||o?null:vs(t.toString(),e.toString());return n&&n<0?n:null}i(zt,"getPriceImpact");var cm=i(t=>{let e=new Set,o=[];return t.forEach(n=>{e.has(n.from.chain.displayName)||(e.add(n.from.chain.displayName),o.push(n.from.chain)),e.has(n.to.chain.displayName)||(e.add(n.to.chain.displayName),o.push(n.to.chain))}),o},"getUniqueBlockchains"),hi=i((t,e)=>e.sort((o,n)=>{let r=i(c=>c.scores?.find(u=>u.preferenceType===t)?.score??0,"getScore"),a=r(o),s=r(n);if(a!==s)return s-a;let l=o.requestId.toLowerCase(),p=n.requestId.toLowerCase();return l.localeCompare(p)}),"sortQuotesBy"),um=i((t,e,o)=>{if(!e.length)return null;if(!t)return{requestAmount:o,validationStatus:null,...e[0]};let n=new Set(t.swaps.map(a=>a.swapperId)),r=e.find(a=>{let s=new Set(a.swaps.map(l=>l.swapperId));return Array.from(n).every(l=>s.has(l))});return{requestAmount:o,validationStatus:null,...r||e[0]}},"getDefaultQuote"),mm=i(t=>{let e=i((o,n)=>{let r=ks.indexOf(o.value),a=ks.indexOf(n.value);return r!==-1&&a!==-1?r-a:r!==-1?-1:a!==-1?1:0},"customSort");return t.sort(e)},"sortTags");function dm(t,e){if(!t)return!1;let o=parseInt(e.toFixed(2)||"0");return im.some(({threshold:n,minInput:r})=>o<=n&&t.gte(new Ve(r)))}i(dm,"hasHighValueLoss");function ym(t){return(t||[]).filter(e=>{let o=e.fromAmountMinValue?new Ve(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new Ve(e.fromAmountMaxValue):null;return e.fromAmountRestrictionType==="EXCLUSIVE"?o?.gte(e.fromAmount)||n?.lte(e.fromAmount):o?.gt(e.fromAmount)||n?.lt(e.fromAmount)}).length>0}i(ym,"hasLimitError");function Sm(t){let e=(t||[]).filter(l=>{let p=l.fromAmountMinValue?new Ve(l.fromAmountMinValue):null,c=l.fromAmountMaxValue?new Ve(l.fromAmountMaxValue):null;return l.fromAmountRestrictionType==="EXCLUSIVE"?p?.gte(l.fromAmount)||c?.lte(l.fromAmount):p?.gt(l.fromAmount)||c?.lt(l.fromAmount)})[0],o=e.fromAmountMinValue?new Ve(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new Ve(e.fromAmountMaxValue):null,r=e.fromAmountRestrictionType==="EXCLUSIVE",a="",s="";return!r&&o&&o.gt(e.fromAmount)?(a=vt.t({id:"Required: >= {min} {symbol}",values:{min:_(o,6,6),symbol:e.from.symbol}}),s=oe().bridgeLimitErrors.increaseAmount):r&&o&&o.gte(e.fromAmount)&&(a=vt.t({id:"Required: > {min} {symbol}",values:{min:_(o,6,6),symbol:e.from.symbol}}),s=oe().bridgeLimitErrors.increaseAmount),!r&&n&&n.lt(e.fromAmount)?(a=vt.t({id:"Required: <= {max} {symbol}",values:{max:_(n,6,6),symbol:e.from.symbol}}),s=oe().bridgeLimitErrors.decreaseAmount):r&&n&&n.lte(e.fromAmount)&&(a=vt.t({id:"Required: < {max} {symbol}",values:{max:_(n,6,6),symbol:e.from.symbol}}),s=oe().bridgeLimitErrors.decreaseAmount),{swap:e,fromAmountRangeError:a,recommendation:s}}i(Sm,"getLimitErrorMessage");function Cm(t){let{fetchMetaStatus:e,anyWalletConnected:o,fetchingQuote:n,inputAmount:r,quote:a,warning:s,error:l,needsToWarnEthOnPath:p}=t;return e!=="success"?{title:Eo().connectWallet,action:"connect-wallet",disabled:!0}:o?n||!a||l||!r||r==="0"?{title:Eo().swap,action:"confirm-swap",disabled:!0}:s?{title:Eo().swapAnyway,action:"confirm-warning",disabled:!1}:p?{title:Eo().ethWarning,action:"confirm-warning",disabled:!1}:{title:Eo().swap,action:"confirm-swap",disabled:!1}:{title:Eo().connectWallet,action:"connect-wallet",disabled:!1}}i(Cm,"getSwapButtonState");function ws(t,e,o){let n=parseFloat(e||"0");return!(t&&(!o||o.lte(me))&&e&&e!=="0"&&n!==0)}i(ws,"canComputePriceImpact");function xs(t,e){let o=me;for(let n=0;n<t.fee.length;n++){let r=t.fee[n];if(r.expenseType==="DECREASE_FROM_OUTPUT")continue;let a=e(r.asset)?.usdPrice||null;o=o.plus(new Ve(r.amount).multipliedBy(a||0))}return o}i(xs,"getUsdFeeOfStep");function yi(t,e){return t.reduce((o,n)=>o.plus(xs(n,e)),me)}i(yi,"getTotalFeeInUsd");function bs(t){let e=me;return e=e.plus(new Ve(t.amount).multipliedBy(t.price||0)),e}i(bs,"getUsdFee");function Tm(t){return t.reduce((e,o)=>e.plus(bs(o)),me)}i(Tm,"getTotalFeesInUsd");function km(t){return t.reduce((e,o)=>{for(let n of o.fee){let r=n.name,a=n.expenseType!=="DECREASE_FROM_OUTPUT"?e.payable:e.nonePayable;a[r]=[...a[r]||[],n]}return e},{payable:{},nonePayable:{}})}i(km,"getFeesGroup");function vm(t){let e=new Map;return t.forEach((o,n)=>{o.recommendedSlippage?.error&&e.set(n,o.recommendedSlippage.slippage)}),e.size>0?e:null}i(vm,"checkSlippageErrors");function fm(t,e){let o=new Map;return t?.swaps.forEach((n,r)=>{n.recommendedSlippage?.slippage&&parseFloat(n.recommendedSlippage.slippage)>e&&o.set(r,n.recommendedSlippage.slippage)}),o.size>0?o:null}i(fm,"checkSlippageWarnings");function Si(t){return t.map(o=>o.recommendedSlippage)?.map(o=>o?.slippage||"0")?.filter(o=>parseFloat(o)>0)?.sort((o,n)=>parseFloat(n)-parseFloat(o))?.find(()=>!0)||null}i(Si,"getMinRequiredSlippage");function gm(t,e){return e?parseFloat(t)>=parseFloat(e):!0}i(gm,"hasProperSlippage");function wm(t){let{fromToken:e,toToken:o,inputAmount:n,wallets:r,selectedWallets:a,disabledLiquiditySources:s,liquiditySources:l,excludeLiquiditySources:p,slippage:c,affiliateRef:u,affiliatePercent:f,affiliateWallets:h,destination:g,contractCall:d}=t,m=a?.reduce((S,k)=>(S[k.chain]=k.address,S),{}),y=[];return r?.forEach(S=>{y.push({blockchain:S.chain,addresses:[S.address]})}),{amount:n.toString(),affiliateRef:u??void 0,affiliatePercent:f??void 0,affiliateWallets:h??void 0,from:{address:e.address,blockchain:e.blockchain,symbol:e.symbol},to:{address:o.address,blockchain:o.blockchain,symbol:o.symbol},connectedWallets:y,selectedWallets:m??{},slippage:c.toString(),contractCall:d,...g&&{destination:g},...p&&{swapperGroups:s.concat(l??[]),swappersGroupsExclude:!0},...!p&&{swapperGroups:l?.filter(S=>!s.includes(S)),swappersGroupsExclude:!1}}}i(wm,"createQuoteRequestBody");function xm(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType},o),{})}i(xm,"getWalletsForNewSwap");function Xn(t){let e=t.requestAmount,o=t.swaps[0].from.usdPrice;if(!(!e||!o))return new Ve(e).multipliedBy(o)}i(Xn,"getUsdInputFrom");function yt(t){let e=t?.outputAmount||null,o=t.swaps[t.swaps.length-1].to.usdPrice;if(!(!e||!o))return new Ve(e).multipliedBy(o)}i(yt,"getUsdOutputFrom");function vs(t,e){return new Ve(e).div(new Ve(t)).minus(1).multipliedBy(tm).toNumber()}i(vs,"getPercentageChange");function hm(t,e){let o=Xn(t),n=yt(t),r=yt(e);if(!o||!n||!r)return!1;let a=vs(n.toString(),r.toString());return am.some(({threshold:s,minInput:l})=>a<=s&&o.isGreaterThanOrEqualTo(l))}i(hm,"isOutputAmountChangedExcessively");function bm(t,e,o){let n=t.validationStatus,r=To({filter:"required",quote:t});return e.sort((s,l)=>r.indexOf(s.chain)-r.indexOf(l.chain)).flatMap(s=>lm(s,n)||[]).filter(s=>!s.ok).map(s=>{let l=s.asset.symbol,p=_(new Ve(s.currentAmount.amount).shiftedBy(-s.currentAmount.decimals),8,8),c=_(new Ve(s.requiredAmount.amount).shiftedBy(-s.requiredAmount.decimals),8,8),u="";return s.reason==="FEE"&&(u=vt.t(" for network fee")),s.reason==="INPUT_ASSET"&&(u=vt.t(" for swap")),s.reason==="FEE_AND_INPUT_ASSET"&&(u=vt.t(" for input and network fee")),vt.t({id:"Needs \u2248 {requiredAmount} {symbol}{reason}, but you have {currentAmount} {symbol} in your {blockchain} wallet.",values:{requiredAmount:c,symbol:l,reason:u,currentAmount:p,blockchain:ft(s.asset.blockchain,o)}})})}i(bm,"generateBalanceWarnings");function Yn(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==Ci.NetworkChanged}i(Yn,"isNetworkStatusInWarningState");function Em(t,e,o){let n="bellow button or",r=t.extraMessage,a=t.extraMessageDetail;if(t.networkStatusExtraMessageDetail?.includes(n)&&(t.networkStatusExtraMessageDetail=t.networkStatusExtraMessageDetail.replace(n,"")),Yn(e)){r=t.networkStatusExtraMessage||"",a=t.networkStatusExtraMessageDetail||"";let c=(e?ek(t,e):null)?.walletType,u=c?o?.(c)?.name:null;switch(e?.networkStatus){case Ci.WaitingForConnectingWallet:r=u?vt.t("Connect {wallet}",{wallet:u}):r;break;case Ci.WaitingForQueue:r=r||vt.t("Waiting for other running tasks to be finished");break;case Ci.WaitingForNetworkChange:r=r||vt.t("Waiting for changing wallet network");break;default:r=r||"";break}}a=a||"",r=r||"";let l=r?.indexOf("code")!==-1&&r?.indexOf("reason")!==-1;return{shortMessage:r,detailedMessage:{content:a,long:l}}}i(Em,"getSwapMessages");function Im(t){let e=null;if(t.status==="failed"){let o=t.steps.slice().reverse().filter(n=>n.status==="success")[0];o&&(e={blockchain:o.toBlockchain,symbol:o.toSymbol,outputAmount:o.outputAmount,address:o.toSymbolAddress})}return e}i(Im,"getLastConvertedTokenInFailedSwap");function Am(t){return t.status==="failed"}i(Am,"shouldRetrySwap");function Nm(t,e,o,n,r,a){if(!n||t)return!0;let s=To({filter:"all",quote:n}),l=To({filter:"required",quote:n}),p=s.every(f=>r.some(h=>h.chain===f)),c=l.every(f=>r.some(h=>h.chain===f)),u=o&&a?Go(a,o):!1;return!e&&!p||e&&!o||e&&!!o&&(!u||!c)}i(Nm,"isConfirmSwapDisabled");function Bm(t,e){return t.blockchain===e.blockchain&&t.symbol===e.symbol&&t.address===e.address}i(Bm,"isTokensIdentical");var Ti=i((t,e)=>t?.usdPrice?new et(e||me).multipliedBy(t?.usdPrice||0):null,"getUsdValue"),O=Zo(tk()(ok(t=>({fromBlockchain:null,fromToken:null,inputAmount:"",outputAmount:null,inputUsdValue:new et(0),outputUsdValue:new et(0),toBlockchain:null,toToken:null,refetchQuote:!0,sortStrategy:"SMART",selectedQuote:null,quotes:null,error:null,warning:null,quoteWalletsConfirmed:!1,selectedWallets:[],customDestination:null,quoteWarningsConfirmed:!1,updateQuotePartialState:(e,o)=>t(n=>({...n,[e]:o})),setSelectedQuote:e=>t(o=>{let n=null,r=me,a=o.inputUsdValue;return Wn(o.inputAmount)?(e&&(n=e?.outputAmount?new et(e?.outputAmount):null,a=Xn(e)??me,r=yt(e)??me),{selectedQuote:e,...!!e&&{outputAmount:n,outputUsdValue:r,inputUsdValue:a}}):{}}),resetAlerts:()=>t(()=>({error:null,warning:null})),resetQuote:()=>t(()=>({selectedQuote:null,outputAmount:null,outputUsdValue:new et(0),quotes:null,refetchQuote:!0,error:null,warning:null})),setFromBlockchain:e=>{t(o=>o.fromBlockchain?.name===e?.name?{}:{fromBlockchain:e,inputUsdValue:new et(0),...o.fromToken&&{selectedQuote:null,fromToken:null,outputAmount:null,outputUsdValue:new et(0)}})},setFromToken:e=>t(o=>({fromToken:e.token,...e.token&&{fromBlockchain:e.meta.blockchains.find(n=>n.name===e.token.blockchain)??null},...!!o.inputAmount&&{inputUsdValue:Ti(e.token,o.inputAmount)}})),setToBlockchain:e=>{t(o=>o.toBlockchain?.name===e?.name?{}:{toBlockchain:e,...o.toToken&&{selectedQuote:null,toToken:null,outputAmount:null,outputUsdValue:new et(0)}})},setToToken:e=>t(()=>({toToken:e.token,...e.token&&{toBlockchain:e.meta.blockchains.find(o=>o.name===e.token.blockchain)??null}})),sanitizeInputAmount:e=>{let o=Wc(e);t(()=>({inputAmount:o}))},setInputAmount:e=>{let o=e;zr(e)||(o=wc(o),o=xc(o)),t(n=>({inputAmount:o,...!o&&{outputAmount:null,outputUsdValue:new et(0),selectedQuote:null},...!!n.fromToken&&{inputUsdValue:Ti(n.fromToken,o)}}))},retry:e=>{let{fromBlockchain:o,fromToken:n,toBlockchain:r,toToken:a,inputAmount:s}=e;t({fromBlockchain:o,fromToken:n,inputAmount:s,outputAmount:null,inputUsdValue:Ti(n??null,s),outputUsdValue:new et(0),toBlockchain:r,toToken:a,selectedQuote:null})},switchFromAndTo:()=>t(e=>({fromBlockchain:e.toBlockchain,fromToken:e.toToken,toBlockchain:e.fromBlockchain,toToken:e.fromToken,inputAmount:e.outputAmount?.toString()||"",inputUsdValue:e.toToken?Ti(e.toToken,e.outputAmount?.toString()||""):new et(0)})),resetFromBlockchain:()=>t(()=>({fromToken:null,fromBlockchain:null,outputUsdValue:new et(0),inputUsdValue:new et(0),inputAmount:"",outputAmount:null,selectedQuote:null})),resetToBlockchain:()=>t(()=>({toToken:null,toBlockchain:null,outputAmount:null,outputUsdValue:new et(0),selectedQuote:null})),setQuoteWalletConfirmed:e=>t({quoteWalletsConfirmed:e}),setSelectedWallets:e=>t({selectedWallets:e}),setCustomDestination:e=>t({customDestination:e}),resetQuoteWallets:()=>t({quoteWalletsConfirmed:!1,selectedWallets:[],customDestination:null}),setQuoteWarningsConfirmed:e=>t({quoteWarningsConfirmed:e})})))),Wm=O.subscribe((t,e)=>{(t.fromBlockchain!==e.fromBlockchain||t.fromToken!==e.fromToken||t.toBlockchain!==e.toBlockchain||t.toToken!==e.toToken||t.inputAmount!==e.inputAmount)&&Te.emit("quoteEvent",{type:"quoteInputUpdate",payload:{fromBlockchain:t.fromBlockchain?.name,toBlockchain:t.toBlockchain?.name,fromToken:t.fromToken?{symbol:t.fromToken.symbol,name:t.fromToken.name,address:t.fromToken.address}:void 0,toToken:t.toToken?{symbol:t.toToken.symbol,name:t.toToken.name,address:t.toToken.address}:void 0,requestAmount:t.inputAmount}}),t.selectedQuote?.requestId!==e.selectedQuote?.requestId&&Te.emit("quoteEvent",{type:"quoteOutputUpdate",payload:t.selectedQuote?{requestAmount:t.selectedQuote.requestAmount,swaps:t.selectedQuote.swaps,outputAmount:t.selectedQuote.outputAmount,resultType:t.selectedQuote.resultType,tags:t.selectedQuote.tags}:null})});function Lm(){let{setInputAmount:t,setToToken:e,setToBlockchain:o,setFromBlockchain:n,resetQuote:r,setFromToken:a,fromToken:s,toToken:l,fromBlockchain:p,toBlockchain:c}=O(),u=C().config,f=C().fetchStatus,h=C().blockchains(),{findToken:g}=C(),{setAffiliateRef:d,setAffiliatePercent:m,setAffiliateWallets:y}=C(),T=u?.from?.tokens,S=u?.from?.blockchains,k=u?.to?.tokens,v=u?.to?.blockchains,b=ki(void 0),I=ki(void 0),A=ki(void 0),E=ki(void 0);un(()=>{typeof u.amount<"u"&&t(u.amount.toString())},[u?.amount]),un(()=>{if(f==="success"){r();let x=h.find(P=>P.name===u?.from?.blockchain),w=u?.from?.token,B=w&&g(w);(x||!x&&A.current)&&n(x??null),B?a({token:B,meta:{blockchains:h}}):!B&&b.current&&a({token:null}),A.current=u?.from?.blockchain,b.current=u?.from?.token}},[u?.from?.token?.symbol,u?.from?.token?.address,u?.from?.token?.blockchain,u?.from?.blockchain,f]),un(()=>{Xa(s,T)&&a({token:null}),Ya(p,S)&&n(null)},[T,S]),un(()=>{Xa(l,k)&&a({token:null}),Ya(c,v)&&o(null)},[k,v]),un(()=>{if(f==="success"){r();let x=h.find(P=>P.name===u?.to?.blockchain),w=u?.to?.token,B=w&&g(w);(x||!x&&E.current)&&o(x??null),B?e({token:B,meta:{blockchains:h}}):!B&&I.current&&e({token:null}),E.current=u?.to?.blockchain,I.current=u?.to?.token}},[u?.to?.token?.symbol,u?.to?.token?.address,u?.to?.token?.blockchain,u?.to?.blockchain,f]),un(()=>{d(u?.affiliate?.ref??null),m(u?.affiliate?.percent??null),y(u?.affiliate?.wallets??null)},[u?.affiliate?.ref,u?.affiliate?.percent,u?.affiliate?.wallets])}i(Lm,"useSyncStoresWithConfig");import{useEffect as As,useRef as nk}from"react";import{useInRouterContext as rk,useLocation as ik,useSearchParams as ak}from"react-router-dom";function Es(t,e){let o=t.split("--");return{blockchain:e.name,address:o?.[1]||null,symbol:o[0]}}i(Es,"convertTokenSearchParamToAsset");function Is(t){if(t)return`${t.symbol}${t.address?`--${t.address}`:""}`}i(Is,"tokenToSearchParam");function Bs(){let t=ik(),[e,o]=ak(),{fromBlockchain:n,toBlockchain:r,fromToken:a,toToken:s,inputAmount:l,setFromBlockchain:p,setToBlockchain:c,setFromToken:u,setToToken:f,setInputAmount:h}=O(),g=C().fetchStatus,d=C().blockchains(),m=rk(),{updateIframe:y,updateCampaignMode:T}=C(),S=C().isInCampaignMode(),k=nk(),{findToken:v}=C(),b=i(()=>{let A={};for(let[L,ae]of e.entries())L.startsWith("utm_")&&(A[L]=ae);let E=e.get("fromAmount"),x=e.get("fromBlockchain"),w=e.get("fromToken"),B=e.get("toBlockchain"),P=e.get("toToken"),$=e.get("autoConnect"),H=e.get("clientUrl"),R=e.get("liquiditySources"),K=e.get("blockchain");return{fromAmount:E,fromBlockchain:x,fromToken:w,toBlockchain:B,toToken:P,autoConnect:$,clientUrl:H,liquiditySources:R,utmQueryParams:A,blockchain:K}},"getUrlSearchParams"),I=i(A=>{for(let E in A)A[E]||delete A[E];o(A,{replace:!0})},"updateUrlSearchParams");As(()=>{let{autoConnect:A,clientUrl:E,utmQueryParams:x,blockchain:w}=b();m&&g==="success"&&I({fromBlockchain:n?.name,fromToken:Is(a),toBlockchain:r?.name,toToken:Is(s),fromAmount:l,autoConnect:A??void 0,clientUrl:E??void 0,blockchain:w??void 0,liquiditySources:S?k.current:void 0,...x})},[t.pathname,l,n,a,r,s,S,g]),As(()=>{if(!m)return;let A=b();if(!k.current&&A.liquiditySources&&(k.current=A.liquiditySources),A.fromAmount&&h(A.fromAmount),g==="success"){let E=d.find(P=>P.name===A.fromBlockchain),x=A.fromToken&&E?v(Es(A.fromToken,E)):void 0,w=d.find(P=>P.name===A.toBlockchain),B=A.toToken&&w?v(Es(A.toToken,w)):void 0;E&&(p(E),x&&u({token:x,meta:{blockchains:d}})),w&&(c(w),B&&f({token:B,meta:{blockchains:d}}))}},[g]),As(()=>{let{clientUrl:A,liquiditySources:E}=b();y("clientUrl",A||void 0),T("liquiditySources",E?.split(",")??void 0)},[])}i(Bs,"useSyncUrlAndStore");import{i18n as hn}from"@lingui/core";import{Alert as Iv,Button as Av,darkTheme as Nv,Divider as sl,DoneIcon as Bv,styled as Wv,TextField as Lv,Typography as Mv}from"@rango-dev/ui";import Ge,{useState as Pv}from"react";import{useNavigate as _v,useSearchParams as Dv}from"react-router-dom";import{ChevronRightIcon as sk,Divider as $m,Image as lk,Typography as Fm}from"@rango-dev/ui";import wt from"react";import{darkTheme as Mm,styled as Ws}from"@rango-dev/ui";var Pm=Ws("div",{display:"flex",justifyContent:"space-between",width:"100%",height:"$40",padding:"$4 $10",borderRadius:"$sm",cursor:"pointer",alignItems:"center",backgroundColor:"$neutral300",[`.${Mm} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${Mm} &`]:{backgroundColor:"$neutral500"}},variants:{disabled:{true:{cursor:"default","&:hover":{borderColor:"$neutral300","& svg":{color:"$neutral700"}}}}}}),_m=Ws("div",{display:"flex",flexDirection:"column",width:"100%",".title_typography":{textTransform:"capitalize"}}),Dm=Ws("div",{display:"flex"});function Ls(t){let{onClick:e,value:o,title:n,hasLogo:r,placeholder:a,disabled:s}=t;return wt.createElement(_m,null,wt.createElement(Fm,{size:"large",variant:"label"},n),wt.createElement($m,{size:10}),wt.createElement(Pm,{onClick:s?void 0:e,disabled:s},wt.createElement(Dm,null,r&&wt.createElement(wt.Fragment,null,wt.createElement(lk,{src:o?.logo,size:16,useAsPlaceholder:!o?.logo,type:"circular"}),wt.createElement($m,{size:4,direction:"horizontal"})),wt.createElement(Fm,{className:"title_typography",size:"medium",variant:"label"},o?.name||a)),wt.createElement(sk,{size:12,color:"black"})))}i(Ls,"BlockchainSelectorButton");import{i18n as $s}from"@lingui/core";import{Button as mk,Divider as Qm,MessageBox as dk}from"@rango-dev/ui";import eo,{useEffect as Hm,useState as Fs}from"react";import{i18n as vi}from"@lingui/core";import{Divider as Io,ExternalLinkIcon as ck,Image as uk,Typography as dn}from"@rango-dev/ui";import ve from"react";var Om="https://blog.rango.exchange/understanding-the-risks-of-using-custom-token-contract-addresses-96022308eca4";function Um(t,e){if(e.type==="COSMOS")return"";let o=e.info?.addressUrl;return!o||!t?"":o.replace("{wallet}",t)}i(Um,"generateExplorerLink");import{Button as pk,darkTheme as mn,styled as Ms}from"@rango-dev/ui";var Ps=Ms("a",{textDecoration:"none",color:"$colors$neutral700",[`.${mn} &`]:{color:"$colors$neutral900"},"& svg":{marginLeft:"$4",color:"$colors$neutral700",[`.${mn} &`]:{color:"$colors$neutral900"}},variants:{hasHover:{true:{"&:hover":{color:"$colors$secondary550",[`.${mn} &`]:{color:"$colors$secondary500"},"& svg":{color:"$colors$secondary550",[`.${mn} &`]:{color:"$colors$secondary500"}}}},false:{}}}}),zm=Ms("div",{display:"flex",justifyContent:"center",flexDirection:"column",alignItems:"center",textAlign:"center","& ._blockchain-name, & ._coin-source":{color:"$colors$neutral600",[`.${mn} &`]:{color:"$colors$neutral800"}},"& ._coin-source-name, & ._custom-token-description":{color:"$colors$neutral700",[`.${mn} &`]:{color:"$colors$neutral900"}}}),_s=Ms(pk,{minHeight:"$40"});function Ds(t){let{open:e,onClose:o,token:n,onExit:r,onSubmitClick:a,blockchain:s}=t,l=Um(n.address,s),p=i(()=>window.open(Om,"_blank"),"onClickLearnMore");return ve.createElement(J,{open:e,dismissible:!0,onClose:o,onExit:r,container:N()},ve.createElement(zm,null,ve.createElement(uk,{src:n.image===""?Zr:n.image,size:45,type:"circular"}),ve.createElement(Io,{size:4}),ve.createElement(dn,{variant:"title",size:"medium"},n.symbol),ve.createElement(dn,{variant:"body",size:"small",className:"_blockchain-name"},s.displayName),ve.createElement(Io,{size:4}),ve.createElement(dn,{variant:"body",size:"medium"},l?ve.createElement(Ps,{hasHover:!0,href:l,target:"_blank",rel:"nofollow noreferrer"},n.address,ve.createElement(ck,{size:12,color:"gray"})):ve.createElement(Ps,null,n.address)),ve.createElement(Io,{size:4}),n.coinSource&&ve.createElement(dn,{className:"_coin-source",variant:"body",size:"xsmall"},vi.t("via")," ",ve.createElement(dn,{className:"_coin-source-name",variant:"body",size:"xsmall"},n.coinSource)),ve.createElement(Io,{size:"32"}),ve.createElement(dn,{size:"medium",variant:"body",className:"_custom-token-description"},vi.t("This token is not part of our verified token list. please verify its source and make sure to understand all associated risks before proceeding."))),ve.createElement(Io,{size:40}),ve.createElement(Io,{size:10}),ve.createElement(_s,{id:"widget-custom-token-modal-import-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:a},vi.t("Import Anyway")),ve.createElement(Io,{size:10}),ve.createElement(_s,{id:"widget-custom-token-modal-learn-more-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:p},vi.t("Learn More")))}i(Ds,"CustomTokenModal");function Zn(t){let{token:e,blockchain:o,error:n,address:r,fetchCustomToken:a,onCloseErrorModal:s,onImport:l,onExitErrorModal:p,onExitImportModal:c}=t,{setCustomToken:u}=C(),[f,h]=Fs(!1),[g,d]=Fs(!1),[m,y]=Fs(!1),T=i(()=>{o&&a?.({blockchain:o.name,tokenAddress:r})},"getCustomToken"),S=i(()=>{n?.type!=="network-error"&&s?.(),h(!1)},"closeErrorModal"),k=i(()=>{y(!0),S()},"handleErrorModalButtonClick"),v=i(()=>{m&&n?.type==="network-error"&&(y(!1),T()),p()},"handleExit"),b=i(()=>{e&&(u(e),l())},"handleSubmit");return Hm(()=>{n&&h(!0)},[n]),Hm(()=>{o&&e&&d(!0)},[o,e]),eo.createElement(eo.Fragment,null,eo.createElement(J,{open:f,dismissible:!0,onClose:S,onExit:v,container:N()},eo.createElement(dk,{title:n?.title??"",type:"error",description:n?.message||$s.t("Failed Network, Please retry.")},eo.createElement(Qm,{size:40}),eo.createElement(Qm,{size:10}),eo.createElement(mk,{id:`widget-add-custom-token-${n?.type==="network-error"?"retry":"add-another"}-btn`,variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:k},n?.type==="network-error"?$s.t("Retry"):$s.t("Add another custom token")))),o&&e&&eo.createElement(Ds,{blockchain:o,token:e,onSubmitClick:b,onClose:()=>d(!1),open:g,onExit:c}))}i(Zn,"ImportCustomToken");import{useManager as kv}from"@rango-dev/queue-manager-react";import{BottomLogo as vv,Divider as kd,Header as wv}from"@rango-dev/ui";import Ne,{useEffect as Wi,useLayoutEffect as xv,useRef as vd,useState as wd}from"react";import{useRef as fk}from"react";function Jn(){return window.self!==window.top}i(Jn,"isAppLoadedIntoIframe");function Os(){let t=fk(null),{iframe:e}=C(),o=Jn()&&e.clientUrl,n=i(s=>{o&&window.top?.postMessage(s,e.clientUrl)},"send");return{send:n,connectHeightObserver:i(s=>{t.current=new ResizeObserver(l=>{for(let p of l)n({type:"widget_height",data:{height:p.contentRect.height}})}),t.current.observe(s)},"connectHeightObserver"),disconnectHeightObserver:i(()=>{t.current&&(t.current.disconnect(),t.current=null)},"disconnectHeightObserver")}}i(Os,"useIframe");import{useNavigate as gk}from"react-router-dom";function qe(){let t=gk();return()=>t(-1)}i(qe,"useNavigateBack");import{useLayoutEffect as hk,useState as Rn}from"react";var qm=480,Gm=768,Vm=1024,Km=1200,yk=i(()=>{let[t,e]=Rn(!1),[o,n]=Rn(!1),[r,a]=Rn(!1),[s,l]=Rn(!1),[p,c]=Rn(!1),u=i(()=>{e(window.innerWidth<=qm),n(window.innerWidth>qm&&window.innerWidth<=Gm),a(window.innerWidth>Gm&&window.innerWidth<=Vm),l(window.innerWidth>Vm&&window.innerWidth<=Km),c(window.innerWidth>Km)},"handleResize");return hk(()=>(u(),window.addEventListener("resize",u),()=>window.removeEventListener("resize",u)),[]),{isMobile:t,isTablet:o,isNotebook:r,isLargeScreen:s,isExtraLargeScreen:p}},"useScreenDetect"),fn=yk;import{createTheme as Vs,darkTheme as Bk,lightTheme as Wk}from"@rango-dev/ui";import{useEffect as Lk,useState as Mk}from"react";import{theme as Ak,darkColors as Nk}from"@rango-dev/ui";import qs from"react";var wi=16,xi=255,jm=.11;function Sk(t){return t.startsWith("#")&&(t=t.slice(1)),t.length===3?`#${t.split("").reduce(function(n,r){return n+r+r},"")}`:`#${t}`}i(Sk,"expandShortHexColor");function Ck(t,e){return t.padStart(e,"0")}i(Ck,"pad");function Us(t){let e=Math.min(Math.max(Math.round(t),0),xi);return Ck(e.toString(wi),2)}i(Us,"intToHex");function Tk(t){return`#${Us(t.red)}${Us(t.green)}${Us(t.blue)}`}i(Tk,"rgbToHex");function kk(t){let e=parseInt(t.slice(1,3),wi),o=parseInt(t.slice(3,5),wi),n=parseInt(t.slice(5,7),wi);return{red:e,green:o,blue:n}}i(kk,"hexToRGB");function vk(t,e){let o=1-jm*e;return{red:t.red*o,green:t.green*o,blue:t.blue*o}}i(vk,"generateShade");function wk(t,e){let o=jm*e;return{red:t.red+(xi-t.red)*o,green:t.green+(xi-t.green)*o,blue:t.blue+(xi-t.blue)*o}}i(wk,"generateTint");function xk(t){return Xm(t,vk)}i(xk,"calculateShades");function bk(t){return Xm(t,wk)}i(bk,"calculateTints");function Xm(t,e){let o=kk(t),n=[];for(let r=1;r<9;r++)n.push(Tk(e(o,r)));return n}i(Xm,"calculateColors");function zs(t,e,o){let a=bk(t).reverse().concat(t),s=xk(t),l=a.concat(s),p={},c=l.length;for(let u=0;u<c;u++){let f=100+(o?c-1-u:u)*50;p[`${e}${f}`]=l[u]}return p}i(zs,"createTintsAndShades");function Qs(t,e,o){let n={...t};for(let r in e){let a=e[r],s=r==="neutral"&&!!o?.reverseNeutralRange;if(!["background","foreground"].includes(r)&&!Nc(r)){let p=Sk(a);Object.assign(n,zs(p,r,s))}}return{...n,...e}}i(Qs,"expandToGenerateThemeColors");var Ym=i(t=>String.fromCharCode(t+(t>25?39:97)),"toAlphabeticChar"),Ek=i(t=>{let e="",o;for(o=Math.abs(t);o>52;o=o/52|0)e=Ym(o%52)+e;return Ym(o%52)+e},"toAlphabeticName"),Ik=i((t,e)=>{let o=e.length;for(;o;)t=t*33^e.charCodeAt(--o);return t},"toPhash"),Hs=i(t=>Ek(Ik(5381,JSON.stringify(t))>>>0),"toHash");function Gs(t){let e=Ak.colors,o={...e,...Nk},n,r;if(t?.light){let s={colors:Qs(e,t.light)};n={id:`${ja}-light-${Hs(s)}`,tokens:s}}if(t?.dark){let s={colors:Qs(o,t.dark,{reverseNeutralRange:!0})};r={id:`${ja}-dark-${Hs(s)}`,tokens:s}}return{light:n,dark:r}}i(Gs,"customizedThemeTokens");function Zm(t,e){if(t.length<=1)return t.map(({element:n,key:r})=>qs.cloneElement(n,{key:r}));let o=[];return t.forEach((n,r)=>{let{element:a,key:s}=n;if(o.push(qs.cloneElement(a,{key:s})),r<t.length-1){let l=`divider-${r}`;o.push(qs.cloneElement(e,{key:l}))}}),o}i(Zm,"joinList");function Jm(){return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches}i(Jm,"doesWindowPreferDarkColorScheme");function to(t){let{colors:e,fontFamily:o=dc,borderRadius:n=ru,secondaryBorderRadius:r=iu}=t,[a,s]=Mk(Jm()?"dark":"light"),{theme:l}=C(),{dark:p,light:c}=Gs(e),u=Vs({shadows:t.shadows||{},radii:{primary:`${n}px`,secondary:`${r}px`},fonts:{widget:o}}),f=[u.className,Wk.className],h=[u.className,Bk.className];if(c){let d=Vs(c.id,c.tokens);f.push(d.className)}if(p){let d=Vs(p.id,p.tokens);h.push(d.className)}return Lk(()=>{let d=i(m=>{m.matches?s("dark"):s("light")},"switchThemeListener");return Jm()&&s("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",d),()=>{window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change",d)}},[]),{activeTheme:i(()=>{let d=f.join(" "),m=h.join(" ");return l==="auto"?a==="dark"?m:d:l==="dark"?m:d},"getActiveTheme"),mode:l==="auto"?a:l}}i(to,"useTheme");var St=i(t=>{let e=[];return t?.getAll().forEach((o,n)=>{let r=o.list.getStorage();r?.swapDetails&&e.push({id:n,swap:r?.swapDetails})}),e.sort((o,n)=>Number(n.swap.creationTime)-Number(o.swap.creationTime))},"getPendingSwaps");import{i18n as Rm}from"@lingui/core";import{Alert as Pk,Button as _k}from"@rango-dev/ui";import ed from"react";function Ks(t){return ed.createElement(Pk,{action:ed.createElement(_k,{id:"widget-active-tab-btn",onClick:t.onActivateTab,variant:"contained",size:"xxsmall",type:"warning"},Rm.t("Activate this tab")),type:"warning",variant:"alarm",title:Rm.t("Another tab is open and handles transactions.")})}i(Ks,"ActivateTabAlert");import{i18n as js}from"@lingui/core";import{Button as Dk,Divider as $k,MessageBox as Fk}from"@rango-dev/ui";import bi from"react";function Xs(t){let{open:e,onClose:o,onConfirm:n}=t;return bi.createElement(J,{open:e,dismissible:!0,onClose:o,container:N()},bi.createElement(Fk,{title:js.t("Activate current tab"),type:"warning",description:js.t("Currently, some transactions are running and being handled by other browser tab. If you activate this tab, all transactions that are already in the transaction sign step will expire.")},bi.createElement($k,{size:20}),bi.createElement(Dk,{id:"widget-modal-confirm-activate-tab-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:n},js.t("Confirm"))))}i(Xs,"ActivateTabModal");import{ChevronLeftIcon as zk}from"@rango-dev/ui";import ld from"react";import{css as Ok,darkTheme as td,IconButton as Uk,styled as Ao}from"@rango-dev/ui";var Lt=Ao(Uk,{width:"$24",position:"relative",padding:"0",overflow:"unset","&:hover":{backgroundColor:"$secondary100",[`.${td} &`]:{backgroundColor:"$neutral"}}}),od=Ao("div",{position:"absolute",background:"$secondary500",[`.${td} &`]:{$$color:"$colors$secondary250"},width:"$6",height:"$6",borderRadius:"$lg",right:"$4",border:"1px solid $surface100"}),oo=Ao("div",{display:"flex",justifyContent:"flex-end",minWidth:"$40",button:{padding:0}}),nd=Ao("div",{position:"absolute",width:"14px",height:"14px",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"7px",top:"$0",right:"$0",variants:{isSever:{true:{backgroundColor:"$error500"},false:{backgroundColor:"$secondary500"}}}}),rd=Ao("div",{padding:"$2",variants:{isRefetched:{true:{transform:"rotate(360deg)",transition:"transform 1s ease-in-out"}}}}),id=Ao("div",{position:"absolute",right:"$4",top:"$4",backgroundColor:"$background",borderRadius:"100%"}),ad=Ok({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center"}),sd=Ao("div",{borderRadius:"100%",border:"1.5px transparent solid","&:not(:first-child)":{marginLeft:"-$6"},img:{borderRadius:"100%"}});function Ys(t){return ld.createElement(Lt,{id:"widget-header-back-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},ld.createElement(zk,{color:"black",size:16}))}i(Ys,"BackButton");import{i18n as Qk}from"@lingui/core";import{Button as Hk,Typography as qk}from"@rango-dev/ui";import Zs from"react";function Js(t){return Zs.createElement(oo,null,Zs.createElement(Hk,{id:"widget-header-cancel-btn",variant:"ghost",onClick:t.onClick,size:"xsmall"},Zs.createElement(qk,{variant:"label",size:"medium",color:"error500"},Qk.t("Cancel"))))}i(Js,"CancelButton");import{i18n as Gk}from"@lingui/core";import{Image as Vk,Tooltip as Kk,WalletIcon as jk}from"@rango-dev/ui";import No from"react";function Rs(t){let{list:e}=Tt(),o=e.filter(r=>r.state==="connected"),n=o.length?No.createElement("div",{className:ad()},o.map(r=>No.createElement(sd,{key:r.title},No.createElement(Vk,{src:r.image,size:14})))):Gk.t("Connect Wallet");return No.createElement(Kk,{container:t.container,side:"bottom",content:n},No.createElement(Lt,{id:"widget-header-wallet-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},t.isConnected&&No.createElement(od,null),No.createElement(jk,{size:18,color:"black"})))}i(Rs,"WalletButton");import{i18n as Ii}from"@lingui/core";import{NotificationsIcon as cv,Popover as uv,SettingsIcon as mv,Tooltip as Ai,TransactionIcon as dv}from"@rango-dev/ui";import Pe from"react";import{Notifications as Jk}from"@rango-dev/ui";import Rk from"react";import{useNavigate as ev}from"react-router-dom";import{create as Xk}from"zustand";import{persist as Yk,subscribeWithSelector as Zk}from"zustand/middleware";var Ae=Zo(Xk()(Yk(Zk((t,e)=>({isSynced:!1,notifications:[],setNotification:(o,n)=>{let r=n.steps[0],a=n.steps[n.steps.length-1],s={event:o,creationTime:Date.now(),requestId:n.requestId,route:{creationTime:parseInt(n.creationTime),from:{blockchain:r.fromBlockchain,address:r.fromSymbolAddress,symbol:r.fromSymbol},to:{blockchain:a.toBlockchain,address:a.toSymbolAddress,symbol:a.toSymbol}}},l=e().notifications.filter(p=>p.requestId!==n.requestId);t(()=>({notifications:[...l,s]}))},removeNotification:o=>{t(n=>({notifications:n.notifications.filter(r=>r.requestId!==o)}))},getNotifications:()=>{let{isSynced:o,notifications:n}=e();return o?n.sort((r,a)=>r.route.creationTime&&!a.route.creationTime?-1:!r.route.creationTime&&a.route.creationTime?1:!r.route.creationTime&&!a.route.creationTime?a.creationTime-r.creationTime:a.route.creationTime-r.route.creationTime):[]},syncNotifications:o=>{let{isSynced:n,notifications:r}=e();if(!n){let a=[];r.forEach(s=>{o.some(p=>p.swap.requestId===s.requestId)&&a.push(s)}),t({isSynced:!0,notifications:a})}},clearNotifications:()=>t({notifications:[]})})),{name:"notification",skipHydration:!0,partialize:({isSynced:t,...e})=>e,version:1,migrate:(t,e)=>{if(e===0){let o=t.notifications;t.notifications=o.filter(n=>!n.read).map(({read:n,...r})=>r)}return t}})));function el(){let t=ev(),{getNotifications:e,clearNotifications:o}=Ae(),n=e(),r=C().blockchains(),{findToken:a}=C();return Rk.createElement(Jk,{list:n,getBlockchainImage:l=>Zc(l,r),getTokenImage:l=>a(l)?.image,onClickItem:i(l=>{t(`${F.swaps}/${l}`)},"onClickItem"),onClearAll:o})}i(el,"NotificationContent");import{useManager as tv}from"@rango-dev/queue-manager-react";import{InProgressIcon as ov}from"@rango-dev/ui";import pd from"react";var nv=i(()=>{let{manager:t}=tv();return St(t).map(({swap:o})=>o).find(o=>o.status==="running")?pd.createElement(id,null,pd.createElement(ov,{color:"info",size:6})):null},"InProgressTransactionBadge"),cd=nv;import{EventSeverity as rv}from"@rango-dev/queue-manager-rango-preset";import{Typography as iv}from"@rango-dev/ui";import ud from"react";function md(){let{getNotifications:t}=Ae(),e=t(),o=e.length,n=!!e.find(r=>r.event.messageSeverity===rv.WARNING);return o?ud.createElement(nd,{isSever:n},ud.createElement(iv,{variant:"body",size:"xsmall",color:"$background"},o)):null}i(md,"NotificationsBadge");import{RefreshProgressButton as av}from"@rango-dev/ui";import tl,{useEffect as sv,useState as dd}from"react";var lv=1e3,fd=60,pv=100;function Ei({onClick:t}){let[e,o]=dd(0),[n,r]=dd(!1),a=i(p=>{document.hidden&&p&&s(p)},"handleVisibilityChange");sv(()=>{let p;return t?p=window.setInterval(()=>{o(c=>c+1),e===fd&&l()},lv):s(p),document.addEventListener("visibilitychange",()=>a(p)),()=>{document.removeEventListener("visibilitychange",()=>a(p)),p&&clearInterval(p)}},[e,t]);let s=i(p=>{p&&clearInterval(p),o(0)},"clearTimeout"),l=i(()=>{t?.(),o(0),r(!0)},"handleRefreshClick");return tl.createElement(Lt,{id:"widget-header-refresh-icon-btn",variant:"ghost",size:"small",style:{paddingTop:0,paddingBottom:0},onClick:l,disabled:!t},tl.createElement(rd,{onTransitionEnd:()=>r(!1),isRefetched:n},tl.createElement(av,{size:22,color:t?"black":"gray",progress:e/fd*pv})))}i(Ei,"RefreshButton");function Bo(t){let{onClickRefresh:e,onClickHistory:o,onClickSettings:n,hidden:r=[],container:a}=t,{config:{features:s}}=C(),l=Re("notification",s)||r.includes("notifications");return Pe.createElement(Pe.Fragment,null,!r.includes("refresh")&&Pe.createElement(Ai,{container:a||N(),side:"top",content:Ii.t("Refresh")},Pe.createElement(Ei,{onClick:e})),!l&&Pe.createElement(uv,{align:"end",alignOffset:-88,sideOffset:15,collisionPadding:{right:20,left:20},container:N(),content:Pe.createElement(el,null)},Pe.createElement("div",null,Pe.createElement(Ai,{container:N(),side:"top",content:Ii.t("Notifications")},Pe.createElement(Lt,{id:"widget-header-notification-icon-btn",size:"small",variant:"ghost"},Pe.createElement(cv,{size:18,color:"black"}),Pe.createElement(md,null))))),!r.includes("settings")&&Pe.createElement(Ai,{container:N(),side:"top",content:Ii.t("Settings")},Pe.createElement(Lt,{id:"widget-header-setting-icon-btn",size:"small",variant:"ghost",onClick:n},Pe.createElement(mv,{size:18,color:"black"}))),!r.includes("history")&&Pe.createElement(Ai,{container:N(),side:"top",content:Ii.t("History")},Pe.createElement(Lt,{id:"widget-header-history-icon-btn",size:"small",variant:"ghost",onClick:o},Pe.createElement(dv,{size:18,color:"black"}),Pe.createElement(cd,null))))}i(Bo,"HeaderButtons");import{i18n as ol}from"@lingui/core";import{Divider as hd,MessageBox as hv,RefreshIcon as yv}from"@rango-dev/ui";import gn from"react";import{Button as fv,styled as gv}from"@rango-dev/ui";var gd=gv(fv,{"& span":{display:"flex",justifyContent:"center",alignItems:"center"}});function nl(t){let{open:e,onClose:o}=t;return gn.createElement(J,{open:e,dismissible:!0,onClose:o,container:N()},gn.createElement(hv,{title:ol.t("Something went wrong"),type:"error",description:ol.t("Something went wrong. Please refresh the app.")},gn.createElement(hd,{size:30}),gn.createElement(gd,{variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:()=>location.reload()},gn.createElement(yv,{size:20,color:"primary"}),gn.createElement(hd,{size:4,direction:"horizontal"}),ol.t("Refresh"))))}i(nl,"RefreshModal");function rl(t){let e=t.target;if(e){let o=e.scrollTop,n=N();o>1?n.classList.add("rng-scrolled"):n.classList.remove("rng-scrolled")}}i(rl,"onScrollContentAttachStatusToContainer");import{css as Cv,styled as Ni}from"@rango-dev/ui";var Bi=Cv({borderRadius:"$primary",display:"flex",flexDirection:"column",overflow:"hidden",boxShadow:"$mainContainer"}),yd=Ni("div",{position:"relative",width:"100vw",minWidth:"300px",maxWidth:"390px",backgroundColor:"$background",variants:{height:{auto:{height:"auto",maxHeight:700},fixed:{minHeight:425,maxHeight:700,height:700}},showBanner:{true:{overflow:"visible"}}}}),Sd=Ni("div",{position:"relative",overflow:"hidden",flexGrow:1,display:"flex",flexDirection:"column",padding:0,overflowY:"auto"}),Cd=Ni("div",{padding:"0 $20 $10","& .footer__alert":{paddingTop:"$10"},"& .footer__logo":{opacity:0,transition:"opacity 1s ease-in-out","&.logo__show":{opacity:1},"&.logo__hidden":{visibility:"hidden"}}}),Td=Ni("div",{width:"100%",position:"absolute",bottom:"-$10",transform:"translateY(100%)",overflow:"hidden"});function ie(t){let{connectHeightObserver:e,disconnectHeightObserver:o}=Os(),{children:n,header:r,footer:a,height:s="fixed"}=t,{fetchStatus:l,connectedWallets:p,config:{__UNSTABLE_OR_INTERNAL__:c}}=C(),[u,f]=wd(!1),{config:{features:h,theme:g}}=C(),{watermark:d,setShowCompactTokenSelector:m}=te(),y=d==="FULL",{activeTheme:T}=to(g||{}),[S,k]=wd(!1),v=Re("connectWalletButton",h),{isActiveTab:b,tabManagerInitiated:I,showActivateTabModal:A,setShowActivateTabModal:E,activateCurrentTab:x}=te(),w=qe(),{manager:B}=kv(),{isTablet:P,isMobile:$}=fn(),R=St(B).map(({swap:Z})=>Z).some(Z=>Z.status==="running"),K=i(()=>x(wo.forceClaim,R),"onActivateTab"),L=i(()=>{r.onWallet?.()},"onConnectWallet"),ae=typeof r.hasBackButton>"u"||r.hasBackButton,re=vd(null),Q=vd(null);return Wi(()=>{let Z=(c?.swapBoxBanner?.routes?.length??0)===0,le=!!c?.swapBoxBanner?.routes?.some(ue=>location.pathname.endsWith(ue));k(!!c?.swapBoxBanner&&(Z||le))},[c?.swapBoxBanner?.routes?.toString(),location.pathname]),Wi(()=>(Jn()&&Q.current&&e(Q.current),()=>{o()}),[]),Wi(()=>(re.current?.addEventListener("scroll",rl),()=>{re.current?.removeEventListener("scroll",rl)}),[]),Wi(()=>{f(l==="failed")},[l]),xv(()=>{let Z=s==="auto"||!Q.current||Jn(),le=$||P,ue=i(()=>{Z||(le?Q.current.style.height=`${window.innerHeight-Q.current.offsetTop}px`:Q.current.style.height=`${700}px`,m(parseFloat(Q.current.style.height)<640))},"handler");return ue(),window.addEventListener("resize",ue),()=>window.removeEventListener("resize",ue)},[s,$,P]),Ne.createElement(yd,{height:s,id:Qe.SWAP_BOX_ID,className:`${T()} ${Bi()}`,ref:Q,showBanner:S},Ne.createElement(wv,{prefix:ae?Ne.createElement(Ys,{onClick:()=>{w(),r.onBack?.()}}):null,title:r.title,suffix:Ne.createElement(Ne.Fragment,null,r.suffix,r.onWallet&&!v&&Ne.createElement(Rs,{container:N(),onClick:L,isConnected:!!p?.length}),r.onCancel&&Ne.createElement(Js,{onClick:r.onCancel}))}),Ne.createElement(Sd,{ref:re},n),Ne.createElement(Xs,{open:A,onClose:()=>E(!1),onConfirm:K}),Ne.createElement(Cd,null,Ne.createElement("div",{className:"footer__content"},I&&!b&&Ne.createElement("div",{className:"footer__alert"},Ne.createElement(Ks,{onActivateTab:K}),Ne.createElement(kd,{size:10})),a),Ne.createElement(kd,{size:12}),Ne.createElement("div",{className:`footer__logo ${y?"logo__show":"logo__hidden"}`},Ne.createElement(vv,null))),S&&Ne.createElement(Td,null,c?.swapBoxBanner?.element),Ne.createElement(nl,{open:u,onClose:()=>f(!1)}))}i(ie,"Layout");import{styled as bv}from"@rango-dev/ui";var xd="$20 $20 $10 $20",il=bv("div",{padding:xd,overflowY:"auto",flexGrow:1});import{styled as Ev}from"@rango-dev/ui";var pe=Ev("div",{display:"flex",flexDirection:"column",padding:"20px 20px 10px",flexGrow:1,variants:{view:{true:{flexGrow:1,overflow:"hidden"}},compact:{true:{padding:0}}}});import{i18n as no}from"@lingui/core";import{useState as al}from"react";function bd(){let[t,e]=al(!1),[o,n]=al(null),[r,a]=al(null),{findToken:s}=C(),l=C().customTokens(),p=i(()=>{a(null),e(!1),n(null)},"resetState");function c(f,h){switch(f){case"duplicated":return{type:f,title:no.t("Duplicate Token"),message:no.t("The address you entered is duplicate, please enter a new address.")};case"token-exist":return{type:f,title:no.t("Token Already Exists"),message:no.t("There's no need to add this token again because it already exists and is supported by us.")};case"not-found":return{type:f,title:no.t("Token Not Found"),message:no.t({id:"Sorry, no token was found on {blockchain} chain with the provided address. please make sure you have entered the right token address.",values:{blockchain:h}})};case"network-error":return{type:f,title:no.t("Network error"),message:no.t("An error occurred while retrieving token data.")}}}return i(c,"produceErrorMessage"),{fetchCustomToken:i(async({blockchain:f,tokenAddress:h})=>{e(!0);try{if(l.some(T=>T.address?.toLowerCase()===h.toLowerCase())){let T=c("duplicated");n(T);return}let d=await at().getCustomToken({blockchain:f,address:h});if(!d||!d.token||d.error){let T=c("not-found",f);n(T);return}let m=d.token;if(s({blockchain:m.blockchain,address:m.address,symbol:m.symbol})){let T=c("token-exist");n(T);return}return a({...m,warning:!0})}catch(g){if(g.code==="ERR_BAD_REQUEST"){let d=c("not-found",f);n(d);return}n(c("network-error"));return}finally{e(!1)}},"fetchCustomToken"),token:r,loading:t,error:o,resetState:p}}i(bd,"useFetchCustomToken");var $v=Wv("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1,"& ._text-field":{padding:"$4 $10",backgroundColor:"$neutral300",[`.${Nv} &`]:{backgroundColor:"$neutral400"},borderRadius:"$sm",height:"$40"}});function Ed(){let t=_v(),[e]=Dv(),o=qe(),n=C().blockchains(),r=e.get("blockchain")||"",a=ko(r,n),[s,l]=Pv(""),{fetchCustomToken:p,token:c,loading:u,error:f,resetState:h}=bd(),g=!!a&&Go(a,s),d=!a||!s||!g,m=i(()=>{a&&p({blockchain:r,tokenAddress:s})},"getCustomToken");return Ge.createElement(ie,{header:{title:hn.t("Add Custom Token")}},Ge.createElement(pe,null,Ge.createElement($v,null,Ge.createElement("div",null,Ge.createElement(Ls,{onClick:()=>t(F.blockchains,{replace:!0}),hasLogo:!!a?.logo,value:a?{name:a.displayName,logo:a.logo}:void 0,title:hn.t("Select chain"),placeholder:hn.t("Select chain")}),Ge.createElement(sl,{size:"24"}),Ge.createElement(Mv,{size:"large",variant:"label"},hn.t("Enter Address")),Ge.createElement(sl,{size:10}),Ge.createElement(Lv,{fullWidth:!0,disabled:!a,variant:"contained",placeholder:hn.t("Enter token address"),size:"large",value:s,suffix:!!s&&g&&Ge.createElement(Bv,{color:"success",size:12}),onChange:y=>l(y.target.value)}),!g&&!!s&&Ge.createElement(Ge.Fragment,null,Ge.createElement(sl,{size:4}),Ge.createElement(Iv,{type:"error",variant:"alarm",title:"Invalid Address"}))),Ge.createElement(Av,{id:"widget-add-custom-token-import-btn",disabled:d,type:"primary",variant:"contained",loading:u,size:"large",onClick:m},hn.t("Import"))),Ge.createElement(Zn,{token:c,blockchain:a??void 0,address:s,error:f??void 0,fetchCustomToken:p,onCloseErrorModal:()=>{f?.type!=="network-error"&&l("")},onImport:o,onExitErrorModal:h,onExitImportModal:h})))}i(Ed,"AddCustomTokenPage");import{i18n as Fl}from"@lingui/core";import{useManager as kx}from"@rango-dev/queue-manager-react";import{Alert as vx,Button as wx,css as Ul,Divider as Ol,IconButton as hg,styled as xx,Typography as bx,WalletIcon as Ex}from"@rango-dev/ui";import De,{useEffect as na,useLayoutEffect as Ix,useRef as Ax,useState as dr}from"react";import{useNavigate as Nx}from"react-router-dom";import{i18n as Wo}from"@lingui/core";import{Alert as pw,BalanceErrors as cw,Button as Jd,ChevronLeftIcon as uw,Divider as gl,MessageBox as mw,Typography as hl}from"@rango-dev/ui";import ne,{useCallback as dw,useEffect as Rd,useMemo as fw,useState as Cn}from"react";import{useNavigate as gw}from"react-router-dom";import{i18n as ul}from"@lingui/core";import{Alert as Qv,ChevronDownIcon as Hv,CloseIcon as qv,Divider as Md,IconButton as Pd,PasteIcon as Gv,Typography as Vv,WalletIcon as Kv}from"@rango-dev/ui";import _e,{useEffect as jv,useRef as Xv}from"react";import _i,{useRef as Uv}from"react";import*as yn from"@radix-ui/react-collapsible";import{keyframes as Id,styled as Li}from"@rango-dev/ui";var ll=300,Fv=Id({from:{height:0},to:{height:"var(--radix-collapsible-content-height)"}}),Ov=Id({from:{height:"var(--radix-collapsible-content-height)"},to:{height:0}}),Ad=Li(yn.Root,{borderRadius:"$sm",overflow:"hidden",variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary500",outlineStyle:"solid"}}}}),pl=Li(yn.Trigger,{padding:"$0",border:"none",outline:"none",width:"100%",backgroundColor:"transparent",fontFamily:"inherit",cursor:"pointer"}),Mi=Li(yn.Content,{overflow:"hidden",variants:{open:{true:{animation:`${Fv} ${ll}ms ease-out`},false:{animation:`${Ov} ${ll}ms ease-out`}}}}),Pi=Li("div",{transition:`all ${ll}ms ease`,display:"flex",alignItems:"center",variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}});function Di(t){let{open:e,hasSelected:o,onOpenChange:n,children:r,onClickTrigger:a,trigger:s,triggerAnchor:l}=t,p=Uv(null);return _i.createElement(Ad,{ref:p,className:"collapsible_root",selected:o&&e,open:e,onOpenChange:n},l==="top"&&_i.createElement(pl,{className:"collapsible_trigger",onClick:a},s),_i.createElement(Mi,{className:"collapsible_content",open:e},r),l==="bottom"&&_i.createElement(pl,{className:"collapsible_trigger",onClick:a},s))}i(Di,"CustomCollapsible");import{darkTheme as Nd,styled as cl,TextField as zv}from"@rango-dev/ui";var Bd=cl("div",{padding:"$10 $0","& .button__content":{display:"flex",alignItems:"center"},"& .alarms":{paddingTop:"$5"},"& .collapsible_content":{backgroundColor:"$neutral100"},"& .collapsible_root":{backgroundColor:"$neutral100"}}),Wd=cl(zv,{backgroundColor:"$neutral100",padding:"$15"}),Ld=cl("div",{width:"100%",borderRadius:"$sm",display:"flex",padding:"$15",justifyContent:"space-between",alignItems:"center",$$color:"$colors$neutral100",[`.${Nd} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomRightRadius:"0",borderBottomLeftRadius:"0","&:focus-visible":{$$background:"$colors$secondary100",[`.${Nd} &`]:{$$background:"$colors$info700"},backgroundColor:"$$background",outline:0}});function _d(t){let{blockchain:e,handleOpenChange:o,open:n}=t,{customDestination:r,setCustomDestination:a}=O(),{config:s}=C(),l=C().blockchains(),p=jr(e.name,l),c=Xv(null),u=s?.defaultCustomDestinations?.[e.name],f=navigator?.userAgent.includes("Firefox"),g=n&&!!r&&e&&!Go(e,r),d=i(()=>{a("")},"handleClear"),m=i(async T=>{if(T.preventDefault(),navigator.clipboard!==void 0){let S=await navigator.clipboard.readText();a(S),c?.current?.focus()}},"handlePaste"),y=i(()=>r?_e.createElement(Pd,{id:"widget-custom-destination-close-icon-btn",onClick:d,variant:"ghost"},_e.createElement(qv,{size:12,color:"gray"})):f?null:_e.createElement(Pd,{id:"widget-custom-destination-paste-icon-btn",onClick:m,variant:"ghost"},_e.createElement(Gv,{size:16})),"renderSuffix");return jv(()=>{!!u&&r===null&&(a(u),o(!0))},[u]),_e.createElement(Bd,null,_e.createElement(Di,{onOpenChange:o,hasSelected:!0,open:n,triggerAnchor:"top",trigger:_e.createElement(Ld,null,_e.createElement("div",{className:"button__content"},_e.createElement(Kv,{size:18,color:"info"}),_e.createElement(Md,{size:4,direction:"horizontal"}),_e.createElement(Vv,{variant:"label",size:"medium",color:n?"$neutral600":void 0},ul.t("Send to a different address"))),_e.createElement(Pi,{orientation:n?"up":"down"},_e.createElement(Hv,{size:10,color:"secondary"}))),onClickTrigger:()=>o(!n)},_e.createElement(Wd,{ref:c,style:{padding:0,paddingRight:r?"8px":"5px"},autoFocus:!r,placeholder:ul.t("Enter {blockchainName} address",{blockchainName:p}),value:r||"",suffix:y(),onChange:T=>{let S=T.target.value;a(S)}})),g&&_e.createElement(_e.Fragment,null,_e.createElement(Md,{size:4}),_e.createElement(Qv,{variant:"alarm",type:"error",title:ul.t({values:{destination:r},id:"Address {destination} doesn't match the blockchain address pattern."})})))}i(_d,"CustomDestination");import{css as Yv,IconButton as Zv,SelectableWalletButton as Jv,styled as ro}from"@rango-dev/ui";var Dd=ro("div",{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}),$d=ro("div",{display:"flex",justifyContent:"space-evenly",alignItems:"center",columnGap:"$5",rowGap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),Fd=ro(Jv,{justifyContent:"center"}),Od=ro("div",{padding:"$20 $20 $15 $20",display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:"$neutral200",position:"relative",width:"100%"}),Ud=ro(Zv,{position:"absolute",left:"$20"}),zd=ro("div",{paddingTop:"$20"}),Qd=Yv({display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),Hd=ro("div",{display:"flex"}),qd=ro("div",{overflow:"visible",width:"100%"});import{i18n as dl}from"@lingui/core";import{warn as nw}from"@rango-dev/logging-core";import{Divider as rw,makeInfo as iw,SelectableWallet as aw,Typography as Yd,WalletState as $i}from"@rango-dev/ui";import tt,{useEffect as Zd,useState as or}from"react";import{Image as tw,MessageBox as ow}from"@rango-dev/ui";import tr from"react";import{keyframes as Rv,styled as ml}from"@rango-dev/ui";var Gd=ml("div",{position:"relative"}),ew=Rv({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),Vd=ml("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${ew} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),Kd=ml("div",{"& img":{borderRadius:"50%"}});import{i18n as Sn}from"@lingui/core";function jd(t,e){switch(t){case"in-progress":return{type:"loading",title:Sn.t({id:"Add {blockchainDisplayName} Chain",values:{blockchainDisplayName:e}}),description:Sn.t({id:"Please approve the experimental chain pop-up in your wallet.",values:{blockchainDisplayName:e}})};case"completed":return{type:"success",title:Sn.t({id:"{blockchainDisplayName} Chain Added",values:{blockchainDisplayName:e}}),description:Sn.t({id:"The {blockchainDisplayName} chain has been successfully added to your wallet.",values:{blockchainDisplayName:e}})};case"rejected":return{type:"error",title:Sn.t("Request Rejected"),description:Sn.t({id:"You've rejected adding {blockchainDisplayName} chain to your wallet.",values:{blockchainDisplayName:e}})};default:throw new Error(`Showing information about an experimentation chain status needs to be defined first. status: ${t}`)}}i(jd,"generateMessageByStatus");function Xd(t){let{status:e,displayName:o,image:n}=t,r=jd(e,o),a=e=="in-progress";return tr.createElement(ow,{type:r.type,title:r.title,description:r.description,icon:a?tr.createElement(Gd,null,tr.createElement(Kd,null,tr.createElement(tw,{src:n,size:45})),tr.createElement(Vd,null)):void 0})}i(Xd,"ExperimentalChainStatus");var sw=7,lw=3e3;function fl(t){let{chain:e,quoteChains:o,isSelected:n,selectWallet:r,limit:a,onShowMore:s}=t,l=te.use.isActiveTab(),{blockchains:p,connectedWallets:c}=C(),[u,f]=or(),[h,g]=or(null),[d,m]=or(!1),[y,T]=or(null),{suggestAndConnect:S}=Fi(),{list:k}=Tt({chain:e}),[v,b]=or(k),I=k.length,A=a&&I-a>0,E=i(async w=>{m(!1),T("in-progress");try{await S(w.walletType,w.chain),T("completed")}catch{T("rejected")}},"addExperimentalChain");Zd(()=>{b(w=>{let B=k.findIndex(P=>n(P.type,e));return A&&B>1?[k[B]].concat(k.filter((P,$)=>$!==B)):w.map(P=>k.find($=>$.type===P.type)??P)})},[JSON.stringify(k)]);let x=document.getElementById(Qe.SWAP_BOX_ID);return Zd(()=>{let w=null;return(y==="completed"||y==="rejected")&&(w=setTimeout(()=>T(null),lw)),()=>{w&&clearTimeout(w)}},[y]),tt.createElement(tt.Fragment,null,v.slice(0,a).map(w=>{let B=$c({connectedWallets:c,walletType:w.type,chain:e}),P=w.state===$i.CONNECTED,$=B?Qo(B,sw):"",H=(P&&w.isHub||!!w.needsNamespace)&&!$,R=Gr(p(),e),K=!c.find(ue=>ue.walletType===w.type&&ue.chain===e),L=R&&K&&w.state===$i.CONNECTED,ae=i(async()=>{w.state===$i.DISCONNECTED||H?f(w):L?(g({walletType:w.type,chain:e,address:B??""}),m(!0)):r({walletType:w.type,chain:e,address:B??""})},"onSelectableWalletClick"),re=iw(w.state),Q=i(()=>L?dl.t({id:"Add {chain} chain",values:{chain:e}}):H?dl.t("Chain not connected"):$||re.description,"getWalletDescription"),Z=i(()=>w.state===$i.CONNECTED?H?"neutral600":"neutral700":re.color,"getWalletDescriptionColor"),le=h?.chain?jr(h.chain,p()):void 0;return tt.createElement(tt.Fragment,{key:`${w.title}_${le}`},!!h&&tt.createElement(J,{open:!!h&&d,container:x,onClose:()=>{g(null)}},tt.createElement(Ss,{displayName:le,onConfirm:()=>{E(h)}})),y&&tt.createElement(J,{open:!!y,onClose:T.bind(null,null),container:x},tt.createElement(Xd,{status:y,displayName:le,image:w.image}),tt.createElement(rw,{direction:"vertical",size:32})),tt.createElement(aw,{key:w.type,description:Q(),descriptionColor:Z(),onClick:ae,selected:n(w.type,e),disabled:!l,...w}))}),tt.createElement(bo,{wallet:u,options:{defaultSelectedChains:o||[e]},onClose:()=>{f(void 0)},onConnect:()=>{t.onConnect&&(u?.type?t.onConnect(u.type):nw(new Error("The selected wallet hasn't been detected after the connection process finished. It usually shouldn't happen.")))}}),A&&tt.createElement(Fd,{selected:!1,onClick:s},tt.createElement(Yd,{variant:"label",size:"medium"},dl.t("Show more wallets"),tt.createElement(Yd,{variant:"label",size:"medium",color:"$primary"},"\xA0+",I-(a??0)))))}i(fl,"WalletList");var hw=2;function ef(t){let{open:e,onClose:o,onCancel:n,onCheckBalance:r,loading:a}=t,s=gw(),l=C().blockchains(),{selectedQuote:p,setSelectedWallets:c,quoteWalletsConfirmed:u,setQuoteWalletConfirmed:f,customDestination:h,setCustomDestination:g}=O(),{config:d,connectedWallets:m,setWalletsAsSelected:y}=C(),[T,S]=Cn(""),[k,v]=Cn([]),[b,I]=Cn(""),[A,E]=Cn(!!h),x=fw(()=>To({filter:"all",quote:p}),[p]),w=To({filter:"required",quote:p}),B=l.find(W=>W.name===p?.swaps[p?.swaps.length-1].to.blockchain),P=i(W=>w.includes(W),"isWalletRequiredFor"),$=dw(()=>m.filter(W=>W.selected&&x.includes(W.chain)),[m,x]),[H,R]=Cn($()),[K,L]=Cn([]),ae=i((W,G)=>L(j=>j.concat({blockchain:W,walletType:G})),"addNextSelectedWallets"),re=k.length>0,Q=i((W,G)=>!!H.find(j=>j.walletType===W&&j.chain===G&&j.selected&&(P(G)||!P(G)&&!h)),"isSelected"),Z=i((W,G,j)=>{let ee=!1;return W.map(fe=>{if(fe.chain===G){let Ue=fe.selected;return!ee&&j?(ee=!0,Ue=!0):j||(Ue=!1),{...fe,selected:Ue}}return fe})},"updateSelectableWallets"),le=i(W=>{E(W),W?P(B?.name??"")||R(G=>Z(G,B?.name||"",!1)):(g(""),R(G=>Z(G,B?.name||"",!0)))},"handleCustomDestinationCollapsibleOpenChange"),ue=i(W=>{if(T&&S(""),Q(W.walletType,W.chain))return;let j=m.find(ee=>ee.walletType===W.walletType&&ee.chain===W.chain);j&&(n(),W.chain===B?.name&&A&&!P(B.name)&&(E(!1),g(null)),R(ee=>ee.filter(fe=>fe.chain!==W.chain).concat({...j,selected:!0})))},"onChange"),se=i(()=>{let W=H.filter(G=>G.selected);y(W),c(W),f(!0),o()},"onConfirmBalance"),Ze=i(async()=>{v([]),I("");let W=await r?.({selectedWallets:H.filter(j=>j.selected),customDestination:h}),G=W.warnings;G?.balance?.messages&&v(G.balance.messages),W.error&&I(em(W.error)),!W.error&&!G?.balance?.messages.length?se():v(G?.balance?.messages??[])},"onConfirmWallets");Rd(()=>{R(W=>{let G=[];return W.forEach(j=>{!m.some(fe=>fe.chain===j.chain&&fe.walletType===j.walletType&&fe.address===j.address)||G.push(j)}),G=G.concat(m.filter(j=>!!!G.find(fe=>fe.chain===j.chain)&&j.selected&&x.includes(j.chain))),G})},[m,x]),Rd(()=>{let W=[];K.length>0&&(K.forEach(G=>{let j=m.find(ee=>ee.chain===G.blockchain&&ee.walletType===G.walletType);j?ue(j):W.push(G)}),L(W))},[m,K]);let q=document.getElementById(Qe.SWAP_BOX_ID);return ne.createElement(J,{open:e,onClose:()=>{u||s("../",{replace:!0}),o()},dismissible:!T,container:q,...!T&&{styles:{container:{height:"100%"}},footer:ne.createElement(Hd,null,ne.createElement(Jd,{id:"widget-confirm-wallet-modal-confirm-btn",loading:a,disabled:Nm(a,A,h,p,H,B),onClick:Ze,variant:"contained",type:"primary",fullWidth:!0,size:"large"},Wo.t("Confirm")))},...T&&{styles:{container:{height:"100%",padding:"$0"}},header:ne.createElement(Od,null,ne.createElement(Ud,{id:"widget-confirm-wallet-modal-navigate-back-icon-btn",variant:"ghost",onClick:S.bind(null,"")},ne.createElement(uw,{size:16})),ne.createElement(hl,{variant:"headline",size:"small"},Wo.t({id:"Your {blockchainName} wallets",values:{blockchainName:ft(T,l)}})))},anchor:"center"},ne.createElement(J,{open:re,onClose:v.bind(null,[]),container:q},ne.createElement(mw,{title:Wo.t("Insufficient account balance"),type:"error",description:ne.createElement(cw,{messages:k??[]})},ne.createElement(Jd,{id:"widget-confirm-wallet-modal-proceed-anyway-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:se},Wo.t("Proceed anyway")))),T&&ne.createElement(zd,null,ne.createElement("div",{className:Qd()},ne.createElement(fl,{chain:T,quoteChains:x,isSelected:Q,selectWallet:ue,onShowMore:()=>S(T),onConnect:W=>{ae(T,W)}}))),!T&&ne.createElement(ne.Fragment,null,b&&ne.createElement(ne.Fragment,null,ne.createElement(pw,{variant:"alarm",type:"error",title:Wo.t(b)}),ne.createElement(gl,{size:12})),ne.createElement(qd,null,x.map((W,G)=>{let j=l.find(Je=>Je.name===W),ee=`wallet-${G}`,fe=G===x.length-1,Ue=fe&&B&&d?.customDestination!==!1;return ne.createElement("div",{key:ee},ne.createElement(Dd,null,ne.createElement(hl,{variant:"title",size:"xmedium"},Wo.t({id:"Your {blockchainName} wallets",values:{blockchainName:j?.shortName}})),ne.createElement(hl,{variant:"label",color:"$neutral700",size:"medium"},Wo.t({id:"You need to connect a {blockchainName} wallet.",values:{blockchainName:j?.shortName}}))),ne.createElement(gl,{size:24}),ne.createElement($d,null,ne.createElement(fl,{chain:W,quoteChains:x,isSelected:Q,selectWallet:ue,limit:hw,onShowMore:()=>S(j?.name??""),onConnect:Je=>{ae(W,Je)}})),!fe&&ne.createElement(gl,{size:32}),Ue&&ne.createElement(_d,{blockchain:B,open:A,handleOpenChange:le}))}))))}i(ef,"ConfirmWalletsModal");import{i18n as $w}from"@lingui/core";import{Alert as Fw,Button as Ow,Divider as Tf,InfoIcon as Uw}from"@rango-dev/ui";import Fe from"react";import{Alert as Cw,Button as Tw,Divider as Cl,NoRouteIcon as kw,RefreshIcon as vw,Typography as lf}from"@rango-dev/ui";import lt from"react";import{i18n as tf}from"@lingui/core";var yw=24,Sw=60;function of(t,e,o,n){return t?.type===1?{alert:{type:"warning",text:oe().genericServerError,action:{onClick:n,title:tf.t("Retry")}},description:""}:e.length?{alert:{type:"warning",text:oe().liquiditySourcesError.title,action:{onClick:()=>o(!0),title:tf.t("Reset")}},description:oe().liquiditySourcesError.description}:t?.type===0&&t.diagnosisMessage?{alert:{type:"error",text:t.diagnosisMessage,action:null},description:""}:{alert:null,description:oe().noResultError.description}}i(of,"makeInfo");var yl=(o=>(o[o.small=yw]="small",o[o.large=Sw]="large",o))(yl||{}),Sl=(o=>(o.small="small",o.large="medium",o))(Sl||{});import{styled as Oi}from"@rango-dev/ui";var nf=Oi("div",{display:"flex",flexDirection:"column",alignItems:"center"}),rf=Oi("div",{variants:{size:{small:{},large:{maxWidth:"316px"}}}}),af=Oi("div",{variants:{size:{small:{width:"100%"},large:{}}}}),sf=Oi("div",{padding:"$6 $0"});function nr(t){let{fetch:e,error:o,size:n="small",skipAlerts:r}=t,a=C().getDisabledLiquiditySources(),s=C().toggleAllLiquiditySources,l=C().swappers(),p=of(o,a,()=>s(l,!0),e);return r&&(p.alert=null),lt.createElement(nf,null,lt.createElement(kw,{size:yl[n],color:"gray"}),lt.createElement(Cl,{size:4}),lt.createElement(lf,{variant:"title",size:Sl[n]},oe().noResultError.title),n==="large"&<.createElement(Cl,{size:4}),!!p.description&<.createElement(rf,{size:n},lt.createElement(lf,{variant:"body",size:"small",align:"center",color:"neutral700"},p.description)),lt.createElement(Cl,{size:n==="large"?"24":"4"}),!!p.alert&<.createElement(af,{size:n},lt.createElement(Cw,{type:p.alert.type,title:p.alert.text,titleAlign:"left",action:p.alert.action&<.createElement(Tw,{size:"xsmall",id:"widget-no-result-alert-btn",type:p.alert.type,prefix:lt.createElement(sf,null,lt.createElement(vw,{size:8})),onClick:p.alert.action.onClick},p.alert.action.title),variant:"alarm"})))}i(nr,"NoResult");import{i18n as ir}from"@lingui/core";import{Button as bw,Divider as Ew,MessageBox as Iw,Typography as Aw,WarningIcon as Nw}from"@rango-dev/ui";import Ht from"react";import{Typography as df}from"@rango-dev/ui";import kl from"react";import{Button as ww,darkTheme as xw,styled as rr}from"@rango-dev/ui";var pf=rr("div",{width:"100%"}),Tl=rr("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:"$5",width:"100%"}),cf=rr("div",{display:"flex",padding:"$5 0",justifyContent:"space-between",alignItems:"center",width:"100%","._title":{$$color:"$colors$neutral600",[`.${xw} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),uf=rr("div",{padding:"$2",alignSelf:"flex-start",cursor:"pointer"}),mf=rr(ww,{"& ._text":{gap:"$5",display:"flex",alignItems:"center",justifyContent:"center"}});function ff(t){let{title:e,value:o,valueColor:n}=t;return kl.createElement(cf,null,kl.createElement(df,{size:"medium",variant:"label",className:"_title"},e),kl.createElement(df,{size:"large",variant:"label",color:n||"foreground"},`${n?"%":"$"}${o}`))}i(ff,"QuoteErrorsModalItem");function gf(t){let{open:e,onClose:o,onConfirm:n,warning:r,confirmationDisabled:a}=t,s=r.warningLevel==="high"?"error":"warning",l=[{title:ir.t("Swapping"),value:_(r.inputUsdValue,4,4)},{title:ir.t("Gas cost"),value:_(r.totalFee,2,2)},{title:ir.t("Receiving"),value:_(r.outputUsdValue,4,4)},{title:ir.t("Price impact"),value:_(r.priceImpact,2,2),valueColor:`${s}500`}];return Ht.createElement(J,{footer:Ht.createElement(bw,{id:"widget-high-value-loss-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Ht.createElement(Nw,null),fullWidth:!0,disabled:a,onClick:n},oe().highValueLossError.confirmMessage),open:e,onClose:o,container:N()},Ht.createElement(Iw,{type:s,title:oe().highValueLossError.impactTitle,description:oe().highValueLossError.description}),Ht.createElement(Tl,null,Ht.createElement(Ew,{size:"4"}),Ht.createElement(Aw,{size:"small",variant:"title"},ir.t("Details")),Ht.createElement(Tl,null,l.map((p,c)=>Ht.createElement(ff,{key:c,...p})))))}i(gf,"HighValueLossWarningModal");import{i18n as Tn}from"@lingui/core";function hf(t,e){let o={alertType:"warning",title:"",action:null,actionButtonTitle:null};if(e)return o.alertType="error",e.type===3&&(o.title=e.recommendation),e.type===4&&(o.title=Tn.t({id:"You need to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:e.minRequiredSlippage}}),o.action="change-slippage",o.actionButtonTitle=Tn.t("Increase")),o;if(t){switch(t.type){case 0:{Qt(t.priceImpact)==="high"&&(o.alertType="error"),o.action="show-info",o.title=oe().highValueLossError.title;break}case 4:{o.title=Tn.t({id:"Output amount changed by {percentageChange}% (${usdValueChange}).",values:{percentageChange:t.percentageChange,usdValueChange:t.usdValueChange}});break}case 1:{o.title=oe().unknownPriceError.title;break}case 2:{o.title=Tn.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:t.minRequiredSlippage}}),o.action="change-slippage",o.actionButtonTitle=Tn.t("Increase");break}case 3:{o.title=Tn.t("Caution, your slippage is high."),o.action="change-settings";break}default:break}return o}return null}i(hf,"makeAlerts");function yf(t,e){return e?.type===4?Number(e.minRequiredSlippage):t?.type===2?Number(t.minRequiredSlippage):null}i(yf,"getRequiredSlippage");import{i18n as kn}from"@lingui/core";import{Button as Bw,Divider as vl,MessageBox as Ww,WarningIcon as Lw}from"@rango-dev/ui";import po from"react";import{useNavigate as Mw}from"react-router-dom";function Sf(t){let{open:e,onClose:o,onConfirm:n,warning:r,confirmationDisabled:a}=t,s=Mw();return po.createElement(J,{anchor:"bottom",open:e,container:N(),onClose:o},po.createElement(Ww,{type:"warning",title:r.type===3?kn.t("High slippage"):kn.t("Low slippage"),description:r.type===3?kn.t("Caution, your slippage is high. Your trade may be front run."):kn.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:r.minRequiredSlippage}})},po.createElement(vl,{size:18}),po.createElement(vl,{size:32}),po.createElement(mf,{id:"widget-slippage-warning-modal-confirm-anyway-btn",size:"large",type:"primary",variant:"contained",fullWidth:!0,disabled:a,onClick:n},po.createElement(Lw,{color:"white",size:16}),kn.t("Swap anyway")),po.createElement(vl,{size:10}),po.createElement(Bw,{id:"widget-slippage-warning-modal-change-slippage-btn",size:"large",type:"primary",variant:"outlined",fullWidth:!0,disabled:a,onClick:()=>s("../"+F.settings)},kn.t("Change Slippage"))))}i(Sf,"SlippageWarningModal");import{Button as Pw,MessageBox as _w,WarningIcon as Dw}from"@rango-dev/ui";import Ui from"react";function Cf(t){let{open:e,onClose:o,onConfirm:n,confirmationDisabled:r}=t;return Ui.createElement(J,{footer:Ui.createElement(Pw,{id:"widget-unknown-price-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Ui.createElement(Dw,null),fullWidth:!0,disabled:r,onClick:n},oe().unknownPriceError.confirmMessage),open:e,onClose:o,container:N()},Ui.createElement(_w,{type:"warning",title:oe().unknownPriceError.impactTitle,description:oe().unknownPriceError.description}))}i(Cf,"UnknownPriceWarningModal");function ar(t){let{warning:e,error:o,couldChangeSettings:n,showWarningModal:r,confirmationDisabled:a,skipAlerts:s,refetchQuote:l,onOpenWarningModal:p,onCloseWarningModal:c,onConfirmWarningModal:u,onChangeSettings:f,onChangeSlippage:h}=t,g={confirmationDisabled:a,open:r,onClose:c,onConfirm:u},d=o?.type===0||o?.type===1,m=hf(e,o?.type===3||o?.type===4?o:null);m&&!n&&(m.action=null);let y=!!m&&!s,T=i(S=>{if(S==="change-slippage"){let k=o?.type===3||o?.type===4?o:null,v=yf(e,k);h?.(v)}else S==="change-settings"&&f()},"onclickActionButton");return Fe.createElement(Fe.Fragment,null,d&&Fe.createElement(Fe.Fragment,null,Fe.createElement(Tf,{size:10}),Fe.createElement(nr,{skipAlerts:s,error:o,fetch:l})),y&&Fe.createElement(pf,null,Fe.createElement(Tf,{size:10}),Fe.createElement(Fw,{title:m.title,type:m.alertType,variant:"alarm",...m.action==="show-info"&&{action:Fe.createElement(uf,{onClick:p},Fe.createElement(Uw,{size:12,color:"gray"}))},...(m.action==="change-settings"||m.action==="change-slippage")&&{action:Fe.createElement(Ow,{id:"widget-quote-warning-error-change-settings-btn",size:"xxsmall",type:m.alertType,onClick:()=>T(m.action)},m.actionButtonTitle||$w.t("Change"))}})),e&&Fe.createElement(Fe.Fragment,null,e.type===0&&Fe.createElement(gf,{...g,warning:e}),(e.type===3||e.type===2)&&Fe.createElement(Sf,{...g,warning:e}),e.type===1&&Fe.createElement(Cf,{...g,warning:e})))}i(ar,"QuoteWarningsAndErrors");import gx from"bignumber.js";import Ri from"react";import{i18n as Lo}from"@lingui/core";import{Alert as ox,Divider as wn,FullExpandedQuote as nx,InfoIcon as rx,NumericTooltip as jf,QuoteTag as ix,StepDetails as ax,TokenAmount as sx,Typography as xn}from"@rango-dev/ui";import Wl from"bignumber.js";import U,{useRef as lx,useState as px}from"react";import{styled as wl}from"@rango-dev/ui";var xl=wl("div",{width:"100%","& .position-top__skeleton":{paddingTop:"$10"}}),kf=wl("div",{paddingBottom:"$15",variants:{dense:{true:{paddingBottom:0}}}}),vf=wl("div",{width:"100%",display:"flex"});import*as zi from"@radix-ui/react-collapsible";import{Button as zw,css as sr,darkTheme as Be,Image as wf,styled as Ke,Typography as Qw}from"@rango-dev/ui";var Hw=300,xf=Ke(zi.Root,{display:"flex",flexDirection:"column",alignItems:"start",overflowX:"auto",overflowY:"hidden",width:"100%",borderRadius:"$xm",variants:{selected:{true:{},false:{$$color:"$colors$neutral400",[`.${Be} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${Be} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${Be} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}]}),bf=sr({padding:"$10 $15"}),Ef=Ke(zw,{backgroundColor:"transparent",border:"1px solid $secondary550",[`.${Be} &`]:{border:"1px solid $secondary"},transition:"background-color 0.3s ease","&:hover":{backgroundColor:"$secondary550",[`.${Be} &`]:{backgroundColor:"$secondary"},".allRoutesLabel":{$$color:"$colors$background",[`.${Be} &`]:{$$color:"$colors$foreground"},color:"$$color",transition:"color 0.3s ease"}}}),If=Ke("div",{borderRadius:"$xm",display:"flex",flexDirection:"column",alignItems:"start",justifyContent:"space-between",color:"$foreground",boxSizing:"border-box",position:"relative",variants:{selected:{true:{},false:{$$color:"$colors$neutral200",[`.${Be} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color"}},basic:{true:{borderTopRightRadius:"0",borderTopLeftRadius:"0"}},listItem:{true:{$$color:"$colors$neutral200",[`.${Be} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color","&:hover":{"& .quote_container":{"& button":{backgroundColor:"$neutral500",[`.${Be} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral500",[`.${Be} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral300",[`.${Be} &`]:{backgroundColor:"$neutral400"}},cursor:"pointer"},false:{}}},compoundVariants:[{listItem:!0,selected:!0,css:{outline:"1px solid $secondary"}},{listItem:!1,selected:!0,css:{$$color:"$colors$secondary100",[`.${Be} &`]:{$$color:"$colors$secondary550"},backgroundColor:"$$color","&:hover":{backgroundColor:"$$color"}}},{listItem:!0,selected:!1,css:{cursor:"pointer","&:hover":{backgroundColor:"$neutral300",[`.${Be} &`]:{backgroundColor:"$neutral400"}}}}]}),Af=sr({width:"100%",padding:"$15 $15 $10 $15"}),Nf=sr({display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",paddingBottom:"$10",position:"relative"}),vn=sr({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center",".blockchainImage":{marginLeft:"-$8"}}),Bf=sr({display:"flex",alignItems:"center",".usd-value":{$$color:"$colors$neutral600",[`.${Be} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Wf=Ke(zi.Trigger,{display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",height:"$36",padding:"$10 $15",boxSizing:"border-box",cursor:"pointer",border:"none",outline:"none",backgroundColor:"transparent",variants:{error:{true:{[`& ${wf}`]:{border:"1px $warning500 solid",borderRadius:"100%"}},false:{[`& ${wf}`]:{border:"1px transparent solid",borderRadius:"100%"}}},selected:{true:{},false:{$$color:"$colors$neutral400",[`.${Be} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${Be} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${Be} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}],".blockchains_section":{display:"none"},"@xs":{".blockchains_section":{display:"block"}}}),Lf=Ke("div",{width:"18px",height:"18px",borderRadius:"100%",display:"flex",justifyContent:"center",alignItems:"center",border:"1.5px transparent solid",img:{borderRadius:"100%"},variants:{state:{error:{borderColor:"$error500"},warning:{borderColor:"$warning500"}}}}),Mf=Ke(Mi,{width:"100%",background:"inherit"}),bl=Ke("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$2",transition:`all ${Hw}ms ease`,variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}}),sQ=Ke("div",{height:"$12",marginLeft:"$10",marginRight:"$10",borderLeft:"1px solid $foreground"}),Pf=Ke("div",{display:"flex",justifyContent:"center",margin:"0 $15",borderTop:"1px solid",$$color:"$colors$neutral300",[`.${Be} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color"}),_f=Ke("div",{width:"$16",height:"$16",justifyContent:"center",alignItems:"center",display:"flex"}),El=Ke(Qw,{overflow:"hidden",textOverflow:"ellipsis",letterSpacing:.4}),Df=Ke("div",{display:"flex",flexWrap:"wrap"}),Il=Ke("div",{width:"18px",height:"18px",borderRadius:"100%",backgroundColor:"$background",cursor:"default",display:"flex",justifyContent:"center",alignItems:"center",border:"1.5px transparent solid",variants:{state:{error:{borderColor:"$error500"},warning:{borderColor:"$warning500"}}}}),$f=Ke("div",{display:"flex"}),Qi=Ke("div",{width:"100%",borderTopWidth:"1px",borderTopStyle:"solid",borderTopColor:"$neutral",margin:"$5 0",[`.${Be} &`]:{borderTopColor:"$neutral800"}});import{i18n as Mt}from"@lingui/core";import{ChevronDownIcon as Gw,CloseIcon as Vw,Divider as Gi,IconButton as Kw,NumericTooltip as jw,QuoteCost as Xw,Typography as xt}from"@rango-dev/ui";import X,{useState as zf}from"react";import{css as qw,styled as Hi}from"@rango-dev/ui";var qi=Hi("div",{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"$5 0","&.total_payable_fee":{padding:"$12 0"}}),Al=Hi("div",{width:"100%",borderTop:"1px solid $neutral300",margin:"$10 0"}),Ff=Hi("div",{padding:"$20 0",display:"flex",flexDirection:"column","& .collapsible_trigger":{display:"flex",alignItems:"center"}}),Of=Hi("div",{padding:"$20 $20 $10",position:"relative","._icon-button":{position:"absolute",zIndex:10,top:"$16",right:"$16"}}),Uf=qw({display:"flex",flexDirection:"row",alignItems:"center",padding:"$5","&:hover":{"& ._typography, & svg":{color:"$secondary"}}});var Yw=i(t=>t.fee.isZero()?null:X.createElement(qi,null,X.createElement(xt,{variant:"label",size:"medium",color:"neutral600"},t.label),X.createElement(xt,{variant:"label",size:"medium"},"$",_(t.fee,4,4))),"NonPayableFee");function Nl(t){let[e,o]=zf(!1),[n,r]=zf(!1),{steps:a,quote:s,fee:l,time:p,feeWarning:c,timeWarning:u,showModalFee:f,fullExpandedMode:h=!1}=t,g=s?.swaps??[],d=h?Co():N(),m=km(g);return X.createElement(X.Fragment,null,X.createElement(Xw,{onClickFee:f?y=>{y.stopPropagation(),o(!e)}:void 0,fee:l,feeWarning:c,timeWarning:u,time:p,steps:a,tooltipGas:f?Mt.t("View more info"):void 0,tooltipContainer:d}),X.createElement(J,{container:d,open:e,anchor:h?"center":"bottom",styles:{container:{maxWidth:h?"484px":"unset"}},header:X.createElement(Of,{style:{textAlign:h?"left":"center"}},X.createElement(xt,{variant:"title",size:"medium"},Mt.t("Gas & Fee Explanation")),X.createElement(Kw,{id:"widget-quote-cost-details-modal-close-icon-btn",onClick:()=>o(!1),variant:"ghost"},X.createElement(Vw,{color:"gray",size:14}))),onClose:()=>{o(!1)}},X.createElement(Ff,null,X.createElement(xt,{variant:"title",size:"small"},Mt.t("Details")),X.createElement(Gi,{size:10}),Object.entries(m.payable).flatMap(([y,T])=>T.map((S,k)=>{let v=`payable-fee-${k}`,b=bs(S);return X.createElement(qi,{key:v},X.createElement(xt,{variant:"label",size:"medium",color:"neutral600"},Ts(y,Mt.t)),X.createElement(jw,{content:S.amount,container:d},X.createElement(xt,{variant:"label",size:"medium"},_(S.amount,2,2)," ",S.asset.symbol," ($",_(b,4,4),")")))})),X.createElement(qi,{className:"total_payable_fee"},X.createElement(xt,{variant:"label",size:"medium"},Mt.t("Total Payable Fee")),X.createElement(xt,{variant:"label",size:"medium"},"$",_(l,4,4))),X.createElement(Al,null),Object.keys(m.nonePayable).length&&X.createElement(Di,{triggerAnchor:"bottom",onClickTrigger:()=>r(y=>!y),trigger:X.createElement("div",{className:Uf()},X.createElement(xt,{size:"small",variant:"body",color:"neutral700"},n?Mt.t("Hide non-payable fees"):Mt.t("Show non-payable fees")),X.createElement(Gi,{size:4,direction:"horizontal"}),X.createElement(Pi,{orientation:n?"up":"down"},X.createElement(Gw,{size:12,color:"gray"}))),open:n},X.createElement(xt,{size:"small",variant:"title"},Mt.t("Description")),X.createElement(Gi,{size:4}),X.createElement(xt,{size:"small",variant:"body",color:"neutral700"},Mt.t(`The following fees are considered in the transaction output and
|
|
2
|
+
you won\u2019t need to pay extra gas for them.`)),X.createElement(Gi,{size:10}),Object.entries(m.nonePayable).map(([y,T],S)=>{let k=Tm(T),v=Ts(y,Mt.t),b=`non-payable-fee-${S}`;return X.createElement(Yw,{key:b,fee:k,label:v})}),X.createElement(Al,null)))))}i(Nl,"QuoteCostDetails");import{i18n as qf}from"@lingui/core";import{TokenAmount as Gf}from"@rango-dev/ui";import Vi from"react";import{css as Zw,styled as Jw}from"@rango-dev/ui";var Qf=Jw("div",{position:"relative",display:"flex",flexDirection:"column",width:"100%"}),Hf=Zw({height:"14px",marginLeft:"14px",position:"absolute",borderLeft:"1px solid $foreground",top:"42%"});function lr(t){let{from:e,to:o,percentageChange:n,warningLevel:r}=t;return Vi.createElement(Qf,null,Vi.createElement(Gf,{direction:"horizontal",label:qf.t("Swap input"),type:"input",tooltipContainer:N(),price:{value:e.price.value,usdValue:e.price.usdValue,realValue:e.price.realValue,realUsdValue:e.price.realUsdValue},token:{displayName:e.token.displayName,image:e.token.image},chain:{image:e.chain.image}}),Vi.createElement("div",{className:Hf()}),Vi.createElement(Gf,{direction:"horizontal",tooltipContainer:N(),label:qf.t("Estimated output"),type:"output",price:{value:o.price.value,usdValue:o.price.usdValue,realValue:o.price.realValue,realUsdValue:o.price.realUsdValue},token:{displayName:o.token.displayName,image:o.token.image},chain:{image:o.chain.image},percentageChange:n,warningLevel:r}))}i(lr,"QuoteSummary");import{i18n as Vf}from"@lingui/core";import{ChevronDownIcon as Rw,ChevronRightIcon as ex,Divider as Bl,Image as tx,Tooltip as Yi,Typography as Ki}from"@rango-dev/ui";import z from"react";var ji=4,Xi=6,pr=i(t=>{let{content:e,src:o,className:n,open:r,state:a,container:s}=t,l=s||N();return z.createElement(Yi,{container:l,side:"bottom",sideOffset:4,open:r,content:e},z.createElement(Lf,{className:n,state:a},z.createElement(tx,{src:o,size:16})))},"ImageComponent");function Kf(t){let{quoteRef:e,selected:o,setExpanded:n,steps:r,expanded:a,type:s,container:l}=t,p=l||N(),c=r.length,u=cm(r),{isTablet:f,isMobile:h}=fn();return z.createElement(Wf,{listItem:s==="list-item",ref:g=>e.current=g,selected:o,onClick:g=>{g.stopPropagation(),n(d=>!d)}},z.createElement("div",{className:vn()},z.createElement(Ki,{variant:"body",size:"xsmall"},Vf.t("Via:")),z.createElement(Bl,{direction:"horizontal",size:4}),r.map((g,d)=>{let m=`item-${d}`,y=z.createElement(bl,null,z.createElement(ex,{size:12,color:"black"}));return h||f?z.createElement(z.Fragment,{key:m},z.createElement(pr,{content:g.swapper.displayName,src:g.swapper.image??"",state:g.state,container:l}),d!==c-1&&z.createElement(z.Fragment,null,y)):z.createElement(z.Fragment,{key:m},c<=ji||c>ji&&d<ji-1?z.createElement(z.Fragment,null,z.createElement(pr,{content:g.swapper.displayName,src:g.swapper.image??"",state:g.state,container:l}),d!==c-1&&z.createElement(z.Fragment,null,y)):d===ji-1&&z.createElement(Yi,{container:p,side:"bottom",align:"end",sideOffset:4,content:z.createElement("div",{className:vn()},y,r.map((T,S)=>{let k=`image-${S}`;return S>=d&&z.createElement(z.Fragment,{key:k},z.createElement(pr,{content:T.swapper.displayName,src:T.swapper.image??"",state:T.state,open:!1}),S!==c-1&&z.createElement(z.Fragment,null,y))}))},z.createElement(Il,{state:r.find((T,S)=>S>=d&&(T.state==="error"||T.state==="warning"))?.state},z.createElement(Ki,{size:"xsmall",variant:"body"},"+",c-d))))})),z.createElement("div",{className:vn()},z.createElement("div",{className:"blockchains_section"},z.createElement("div",{className:vn()},z.createElement(Ki,{variant:"body",size:"xsmall"},Vf.t("Chains:")),z.createElement(Bl,{direction:"horizontal",size:4}),u.map((g,d)=>z.createElement(z.Fragment,{key:g.displayName},u.length<=Xi||u.length>Xi&&d<Xi-1?z.createElement(Yi,{container:p,side:"bottom",content:g.displayName,sideOffset:4},z.createElement(pr,{content:"",src:g.image??"",open:!1,className:d!==0?"blockchainImage":""})):d===Xi-1&&z.createElement(Yi,{container:p,side:"bottom",align:"end",sideOffset:4,content:z.createElement("div",{className:vn()},u.map((m,y)=>y>=d&&z.createElement(pr,{key:m.displayName,content:"",src:m.image??"",open:!1,className:y>d?"blockchainImage":"",container:l})))},z.createElement(Il,{className:"blockchainImage"},z.createElement(Ki,{size:"xsmall",variant:"body"},"+",u.length-d))))),z.createElement(Bl,{direction:"horizontal",size:32}))),z.createElement(bl,{orientation:a?"up":"down"},z.createElement(Rw,{size:12,color:"black"}))))}i(Kf,"QuoteTrigger");function Ll(t){let{quote:e,input:o,output:n,error:r,warning:a,type:s,selected:l=!1,tagHidden:p=!0,showModalFee:c=!0,onClickAllRoutes:u,fullExpandedMode:f=!1,container:h}=t,g=C().blockchains(),{findToken:d}=C(),m=C().swappers(),{customSlippage:y,slippage:T}=C(),S=y||T,[k,v]=px(t.expanded),b=lx(null),I=_(o.value,6,6),A=_(n.value,6,6),E=n.usdValue?_(n.usdValue,4,4):"",x=zt(o.usdValue,n.usdValue??null),w=_(x,2,2),B=Qt(x??0),P=i((se,Ze)=>se.map((q,W)=>{let G,j=r?.type===3&&r.swap.swapperId===q.swapperId,ee=r?.type===4&&r.recommendedSlippages?.has(W),fe=a?.type===2&&a.recommendedSlippages?.has(W),Ue=j||ee,Je=fe;Ue?G="error":Je&&(G="warning");let xe=Ue?Lo.t("Slippage Error"):Lo.t("Slippage Warning");return j&&(xe=Lo.t("Bridge Limit Error")),{swapper:{displayName:Dn(q.swapperId,m)??"",image:q.swapperLogo},from:{token:{displayName:q.from.symbol,image:q.from.logo},chain:{displayName:ft(q.from.blockchain,g)??"",image:q.from.blockchainLogo},price:{value:W===0&&!Ze?_(o.value,6,6):_(q.fromAmount,6,6),usdValue:_((q.from.usdPrice??0)*parseFloat(q.fromAmount),4,4),realValue:W===0?o.value:q.fromAmount,realUsdValue:new Wl(q.from.usdPrice??0).multipliedBy(q.fromAmount).toString()}},to:{token:{displayName:q.to.symbol,image:q.to.logo},chain:{displayName:ft(q.to.blockchain,g)||"",image:q.to.blockchainLogo},price:{value:_(q.toAmount,6,6),usdValue:_((q.to.usdPrice??0)*parseFloat(q.toAmount),4,4),realValue:q.toAmount,realUsdValue:new Wl(q.to.usdPrice??0).multipliedBy(q.toAmount).toString()}},state:G,alerts:Ue||Je?U.createElement(kf,{dense:f},U.createElement(ox,{variant:"alarm",type:Ue?"error":"warning",title:xe,footer:U.createElement(vf,null,j&&U.createElement("div",null,U.createElement(xn,{size:"xsmall",variant:"body",color:"neutral900"},r.fromAmountRangeError),U.createElement(wn,{direction:"vertical",size:2}),U.createElement(xn,{size:"xsmall",variant:"body",color:"neutral900"},Lo.t({id:"Yours: {amount} {symbol}",values:{amount:_(q.fromAmount,6,6),symbol:q?.from.symbol}}))),(ee||fe)&&!j&&U.createElement("div",null,U.createElement(xn,{size:"xsmall",variant:"body",color:"neutral900"},Lo.t({id:"Minimum suggested slippage: {minRequiredSlippage}",values:{...r?.type===4&&{minRequiredSlippage:r.recommendedSlippages?.get(W)},...a?.type===2&&{minRequiredSlippage:a.recommendedSlippages?.get(W)}}})),U.createElement(wn,{direction:"vertical",size:2}),U.createElement(xn,{size:"xsmall",variant:"body",color:"neutral900"},Lo.t({id:"Yours: {userSlippage}",values:{userSlippage:S}}))))})):void 0,time:Bn(q.estimatedTimeInSeconds),fee:_(xs(q,d),2,2),internalSwaps:q.internalSwaps?P(q.internalSwaps):void 0}}),"getQuoteSteps"),$=P(e?.swaps??[]),H=$.length,R=h||N(),K=mm(t.quote.tags||[]),L=!!u,ae=Qr(e?.swaps),re=Bn(ae),Q=yi(e?.swaps??[],d),Z=_(Q,2,2),le=Q.gte(new Wl(om)),ue=ae/rm>=nm;return f?U.createElement(nx,{selected:l,fee:Z,time:re,tooltipContainer:Co(),steps:$,tags:K,quoteCost:U.createElement(Nl,{quote:e,fullExpandedMode:!0,time:re,fee:Z,feeWarning:le,timeWarning:ue,showModalFee:c,steps:H}),percentageChange:w,warningLevel:B,outputPrice:{value:A,usdValue:E,realValue:n.value,realUsdValue:n.usdValue}}):U.createElement(If,{selected:l,listItem:s==="list-item",basic:s==="basic"},U.createElement("div",{className:Af()},!p&&K.length?U.createElement(U.Fragment,null,U.createElement($f,null,K.map((se,Ze)=>{let q=`${se.value}_${Ze}`;return U.createElement(U.Fragment,{key:q},U.createElement(ix,{label:se.label,value:se.value}),U.createElement(wn,{size:4,direction:"horizontal"}))})),U.createElement(Qi,null),!L&&U.createElement(wn,{size:4})):null,U.createElement("div",{id:"portal-root",className:Nf()},U.createElement(Nl,{quote:e,time:re,fee:Z,feeWarning:le,timeWarning:ue,showModalFee:c,steps:H}),L&&U.createElement(Ef,{onClick:se=>{se.stopPropagation(),u()},size:"xxsmall",type:"secondary",variant:"default",css:{paddingLeft:"$10",paddingRight:"$10",paddingTop:"$5",paddingBottom:"$5"}},U.createElement(xn,{color:"secondary",variant:"body",size:"xsmall",className:"allRoutesLabel"},Lo.t("See All Routes")))),s==="basic"&&U.createElement("div",{className:Bf()},U.createElement(_f,null,U.createElement(rx,{size:12,color:"gray"})),U.createElement(Df,null,U.createElement(El,{size:"small",variant:"body"},`${I} ${$[0].from.token.displayName} = `),U.createElement(jf,{content:n.value,container:R,open:n.value?void 0:!1},U.createElement(El,{size:"small",variant:"body"},"\xA0",`${A} ${$[$.length-1].to.token.displayName}`))),U.createElement(jf,{content:n.usdValue,container:R},U.createElement(wn,{size:2,direction:"horizontal"}),U.createElement(xn,{color:"$neutral600",size:"xsmall",variant:"body"},`($${E})`))),s==="list-item"&&U.createElement(sx,{tooltipContainer:R,type:"output",direction:"vertical",price:{value:A,usdValue:E,realValue:n.value,realUsdValue:n.usdValue},token:{displayName:$[H-1].to.token.displayName,image:$[H-1].to.token.image},chain:{image:$[H-1].to.chain.image},percentageChange:w,warningLevel:B}),s==="swap-preview"&&U.createElement(U.Fragment,null,U.createElement(lr,{from:$[0].from,to:$[H-1].to,percentageChange:w,warningLevel:B}),U.createElement(wn,{size:4}))),U.createElement(xf,{selected:l,listItem:s==="list-item",open:k,className:"quote_container",onOpenChange:v},U.createElement(Kf,{type:s,quoteRef:b,selected:l,setExpanded:v,container:R,expanded:k,steps:$}),U.createElement(Mf,{open:k},U.createElement(Pf,null),U.createElement("div",{className:bf()},$.map((se,Ze)=>{let q=`item-${Ze}`;return U.createElement(ax,{type:"quote-details",key:q,tooltipContainer:R,step:se,hasSeparator:Ze!==$.length-1,state:se.state})})))))}i(Ll,"Quote");import{Divider as dx,Skeleton as fx}from"@rango-dev/ui";import Gt from"react";import{darkTheme as cx,styled as Zi}from"@rango-dev/ui";var Xf=Zi("div",{$$color:"$colors$neutral100",[`.${cx} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomLeftRadius:"$xm",borderBottomRightRadius:"$xm",padding:"$15",variants:{rounded:{true:{borderRadius:"$xm"}},expanded:{true:{paddingBottom:"3px"},false:{paddingBottom:"$12"}}}}),Yf=Zi("div",{paddingTop:"$2"}),Zf=Zi("div",{paddingLeft:"$8"}),Jf=Zi("div",{borderLeft:"1px dashed $foreground",minHeight:" 0",margin:"0px 11.5px",alignSelf:"stretch",variants:{hideSeparator:{true:{minHeight:"unset",height:"0"}}}});import{ChainToken as lg,Divider as bt,Skeleton as pt}from"@rango-dev/ui";import V from"react";import{css as ux,styled as qt}from"@rango-dev/ui";var Ml=qt("div",{display:"flex"}),Rf=qt("div",{padding:"$10 $0 $20"}),eg=qt("div",{padding:"14px $0 $20 $0",display:"flex",flexDirection:"column"}),tg=qt("div",{display:"flex",justifyContent:"start",alignItems:"center"}),og=qt("div",{display:"flex",justifyContent:"space-between",alignItems:"end"}),ng=qt("div",{height:"$24",marginLeft:"13px",borderLeft:"1px solid $neutral700"}),rg=qt("div",{width:"65%",display:"flex",justifyContent:"start"}),ig=qt("div",{display:"flex",flexDirection:"column",alignItems:"start",flexGrow:1,maxWidth:"148px"}),ag=qt("div",{padding:"$15 $0 $15 $0"}),sg=ux({display:"flex",justifyContent:"space-between",alignItems:"center"});function cr(t){let{type:e,tagHidden:o=!0}=t,n=V.createElement(og,null,V.createElement(rg,null,V.createElement(lg,{loading:!0,size:"medium"}),V.createElement(bt,{size:8,direction:"horizontal"}),V.createElement(ig,null,V.createElement(pt,{height:10,width:60,variant:"rounded"}),V.createElement(bt,{size:4}),V.createElement(pt,{height:15,variant:"rounded"}))),V.createElement(pt,{height:12,width:64,variant:"rounded"})),r=e==="basic"&&!o;return V.createElement("div",null,!o&&V.createElement(V.Fragment,null,V.createElement(Ml,null,V.createElement(pt,{width:65,height:20,variant:"rounded"}),V.createElement(bt,{size:4,direction:"horizontal"}),V.createElement(pt,{width:65,height:20,variant:"rounded"}),V.createElement(bt,{size:4,direction:"horizontal"}),V.createElement(pt,{width:65,height:20,variant:"rounded"})),V.createElement(Qi,null),!r&&V.createElement(bt,{size:4})),V.createElement("div",{className:sg()},V.createElement(Ml,null,V.createElement(pt,{width:60,height:10,variant:"rounded"}),V.createElement(bt,{size:4,direction:"horizontal"}),V.createElement(pt,{width:60,height:10,variant:"rounded"}),V.createElement(bt,{size:4,direction:"horizontal"}),V.createElement(pt,{width:60,height:10,variant:"rounded"})),r&&V.createElement(pt,{width:85,height:24,variant:"rounded"})),e==="basic"&&V.createElement(Rf,null,V.createElement(pt,{height:15,width:148,variant:"rounded"})),e==="list-item"&&V.createElement(eg,null,V.createElement(tg,null,V.createElement(lg,{loading:!0,size:"medium"}),V.createElement(bt,{direction:"horizontal",size:4}),V.createElement(pt,{height:15,width:150,variant:"rounded"})),V.createElement(bt,{size:10}),V.createElement(pt,{height:10,width:184,variant:"rounded"})),e==="swap-preview"&&V.createElement(V.Fragment,null,V.createElement(bt,{size:4}),V.createElement(ag,null,n,V.createElement(ng,null),n),V.createElement(bt,{size:12})))}i(cr,"QuoteSummarySkeleton");import{ChainToken as dg,Divider as _l,NextIcon as mx,Skeleton as Ji}from"@rango-dev/ui";import We from"react";import{styled as ur}from"@rango-dev/ui";var pg=ur("div",{display:"flex",alignItems:"start"}),cg=ur("div",{flexGrow:1,paddingTop:"$5",paddingBottom:"$10",display:"flex",alignItems:"center",variants:{extraSpace:{true:{paddingBottom:"$40"}}}}),Pl=ur("div",{display:"flex",alignItems:"center",flexGrow:1}),ug=ur("div",{margin:"$0 $2",padding:"$4",display:"flex",justifyContent:"center",alignItems:"center"}),mg=ur("div",{display:"flex",alignItems:"center"});function Pt(t){let{separator:e=!0}=t;return We.createElement(We.Fragment,null,We.createElement(mg,null,We.createElement(Ji,{height:22,width:22,variant:"circular"}),We.createElement(_l,{direction:"horizontal",size:8}),We.createElement(Ji,{height:15,width:148,variant:"rounded"})),We.createElement(pg,null,We.createElement(Jf,{hideSeparator:!e}),We.createElement(cg,{extraSpace:e},We.createElement(Pl,null,We.createElement(dg,{size:"small",loading:!0}),We.createElement(_l,{direction:"horizontal",size:8}),We.createElement(Ji,{height:12,variant:"rounded"})),We.createElement(ug,null,We.createElement(mx,{color:"gray",size:16})),We.createElement(Pl,null,We.createElement(dg,{size:"small",loading:!0}),We.createElement(_l,{direction:"horizontal",size:8}),We.createElement(Ji,{height:12,variant:"rounded"})))))}i(Pt,"StepSkeleton");function mr(t){let{type:e,expanded:o,tagHidden:n=!1}=t;return Gt.createElement(Xf,{expanded:o,rounded:e!=="basic"},Gt.createElement(cr,{type:e,tagHidden:n}),Gt.createElement(Yf,null,Gt.createElement(fx,{height:15,variant:"rounded"})),o&&Gt.createElement(Zf,null,Gt.createElement(dx,{size:24}),Gt.createElement(Pt,null),Gt.createElement(Pt,null),Gt.createElement(Pt,{separator:!1})))}i(mr,"QuoteSkeleton");function Mo(t){let{quote:e,type:o,loading:n,error:r,warning:a,expanded:s=!1,tagHidden:l,onClick:p,showModalFee:c,selected:u,onClickAllRoutes:f,fullExpandedMode:h=!1,container:g}=t,{inputAmount:d,inputUsdValue:m}=O(),y=e?.outputAmount?new gx(e?.outputAmount):null,T=e?yt(e):null,k=!(r&&(r.type===0||r.type===1))&&e&&!n;return n?Ri.createElement(xl,null,Ri.createElement(mr,{tagHidden:l,type:o,expanded:s})):k?Ri.createElement(xl,{onClick:()=>p?.(e)},Ri.createElement(Ll,{quote:e,error:r,container:g,showModalFee:c,warning:a,tagHidden:l,selected:u,type:o,expanded:s,onClickAllRoutes:f,fullExpandedMode:h,input:{value:d,usdValue:m?.toString()??""},output:{value:y?.toString()??"",usdValue:T?.toString()??""}})):null}i(Mo,"QuoteInfo");import{calculatePendingSwap as Cx}from"@rango-dev/queue-manager-rango-preset";import{useEffect as Tx}from"react";import{useRef as hx,useState as yx}from"react";var Sx=2e3;function ea({request:t}){let[e,o]=yx(!1),n=hx(null),r=i(()=>n.current?.abort(),"cancelFetch"),a=i(async l=>(await new Promise(p=>setTimeout(p,Sx)),await s(l,!1)),"retryFetch"),s=i(async(l,p=!1)=>{r(),n.current=new AbortController,o(!0);try{let c=await t(l,{signal:n.current.signal});return n.current=null,c}catch(c){if(p)return await a(l);throw c}finally{o(!1)}},"fetch");return{fetch:s,loading:e,cancelFetch:r}}i(ea,"useFetch");function fg(){let{fetch:t,loading:e,cancelFetch:o}=ea({request:async(n,r)=>await at().confirmRoute(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(fg,"useFetchConfirmQuote");function ta(t){if(!t.swaps)throw new Error(oe().noResultError.title,{cause:{type:0,diagnosisMessage:t.diagnosisMessages?.[0]}});let e=Dl(t.swaps);if(e)throw new Error(e.message,{cause:e.options})}i(ta,"throwErrorIfResponseIsNotValid");function Dl(t){if(ym(t)){let{swap:n,recommendation:r,fromAmountRangeError:a}=Sm(t);return{message:"bridge limit error",options:{type:3,swap:n,recommendation:r,fromAmountRangeError:a}}}let o=vm(t);if(o){let n=Si(t);return{message:"",options:{type:4,recommendedSlippages:o,minRequiredSlippage:n}}}return null}i(Dl,"getQuoteError");function gg(t){let{currentQuote:e,previousQuote:o,meta:n,selectedWallets:r,userSlippage:a,findToken:s}=t,l={quote:null,balance:null},p=cn({previousQuote:o,currentQuote:e,findToken:s,userSlippage:a});p&&(l.quote=p);let c=bm(e,r,n.blockchains);return c.length===0||(l.balance={messages:c}),l}i(gg,"generateWarnings");function oa(t){return t?.code==="ERR_CANCELED"?{swap:null,error:{type:2},warnings:null}:t.cause?{swap:null,error:t.cause,warnings:null}:t?.code==="ERR_BAD_REQUEST"?{swap:null,error:{type:0,diagnosisMessage:t.response.data.error},warnings:null}:{swap:null,error:{type:1,diagnosisMessage:t.message},warnings:null}}i(oa,"handleQuoteErrors");function $l(){let{fromToken:t,toToken:e,inputAmount:o,inputUsdValue:n,setSelectedQuote:r,selectedQuote:a,customDestination:s,resetAlerts:l}=O(),{slippage:p,customSlippage:c}=C(),u=C().getDisabledLiquiditySources(),f=C().blockchains(),h=C().tokens(),{findToken:g}=C(),d=c||p,{fetch:m,cancelFetch:y,loading:T}=fg();return Tx(()=>y,[]),{loading:T,fetch:i(async k=>{let v=k.selectedWallets,b=k?.customDestination??s;if(!t||!e||!o)return{quote:null,swap:null,error:null,warnings:null};let I=v.reduce((E,x)=>(E[x.chain]=x.address,E),{}),A={requestId:a?.requestId||"",selectedWallets:I,destination:b||void 0};try{return await m(A,!0).then(E=>{let{result:x}=E;if(!x)throw new Error(E.error??"Error fetching updated quote");ta({diagnosisMessages:x.diagnosisMessages,requestId:x.requestId,swaps:x.result?.swaps});let w={outputAmount:x.result?.outputAmount,requestId:x.requestId,resultType:x.result?.resultType,swaps:x.result?.swaps||[],validationStatus:x.validationStatus,requestAmount:x.requestAmount};r(w);let B={slippage:d.toString(),disabledSwappersGroups:u},P=gg({previousQuote:a??void 0,currentQuote:w,meta:{blockchains:f},selectedWallets:v,userSlippage:d,inputUsdValue:n,findToken:g});l();let $=!!P.balance,H=Cx(o.toString(),x,xm(v),B,!$,{blockchains:f,tokens:h});return{quote:w,swap:H,error:null,warnings:P}})}catch(E){return oa(E)}},"fetch"),cancelFetch:y}}i($l,"useConfirmSwap");var Bx=xx("div",{width:"100%",display:"flex",justifyContent:"space-between",[`& ${hg}`]:{width:"$48",height:"$48"}}),Wx=Ul({flexGrow:1,paddingRight:"$10"}),Lx=Ul({width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center"}),Mx=Ul({display:"flex",justifyContent:"space-between",alignItems:"center"});function yg(){let{selectedQuote:t,setInputAmount:e,selectedWallets:o,quoteWalletsConfirmed:n,customDestination:r,quoteWarningsConfirmed:a}=O(),s=Nx(),[l,p]=dr(""),c=!n,[u,f]=dr(!1),[h,g]=dr(!1),{isActiveTab:d}=te(),m=C().getDisabledLiquiditySources(),y=Ax(m),{manager:T}=kx(),{fetch:S,loading:k,cancelFetch:v}=$l(),[b,I]=dr({swap:null,error:null,warnings:null}),[A,E]=dr(!1),x=i(async({selectedWallets:L,customDestination:ae})=>{let re=await S?.({selectedWallets:L,customDestination:ae});return I(re),re},"onConfirmSwap"),w=i(async()=>{if(b.swap&&n)try{await T?.create("swap",{swapDetails:b.swap},{id:b.swap.requestId});let L=`../${F.swaps}/${b.swap.requestId}`;s(L,{replace:!0}),setTimeout(()=>{e("")},0)}catch(L){p("Error: "+L?.message)}},"addNewSwap"),B=i(async()=>{g(!0),await w(),g(!1)},"onConfirm"),P=i(async()=>{b.warnings?.quote&&pm(b.warnings.quote)&&!a?E(!0):await B()},"onStartConfirmSwap"),$=i(async()=>{I({error:null,swap:null,warnings:null}),S({selectedWallets:o,customDestination:r}).then(L=>{I(L)}).catch(L=>console.error(L))},"onRefresh");na(()=>{!!y.current.length&&!m.length&&$(),y.current=m},[m.length]),na(()=>{c&&v()},[c]),na(()=>{c&&f(c)},[c]),na(()=>{c||S({selectedWallets:o,customDestination:r}).then(L=>I(L)).catch(L=>console.error(L))},[]),Ix(()=>{t?.requestId||s(`../${location.search}`)},[t?.requestId]);let H=b.warnings?.quote??null,R=b.error,K=[];if(l&&K.push(De.createElement(vx,{type:"error",variant:"alarm",title:l})),H||R){let L=`../${F.settings}`;K.push(De.createElement(ar,{warning:H,error:R,couldChangeSettings:!1,refetchQuote:$,skipAlerts:R?.type===4||H?.type===2,showWarningModal:A,confirmationDisabled:!d,onOpenWarningModal:()=>E(!0),onCloseWarningModal:()=>E(!1),onConfirmWarningModal:async()=>{E(!1),await w()},onChangeSettings:()=>s(L)}))}return De.createElement(ie,{header:{title:Fl.t("Confirm Swap"),onWallet:()=>{let L=`../${F.wallets}`;s(L)}},footer:De.createElement(Bx,null,De.createElement("div",{className:Wx()},De.createElement(wx,{id:"widget-confirm-swap-start-btn",variant:"contained",type:"primary",size:"large",fullWidth:!0,loading:k||h,disabled:!!b.error||!d,onClick:P},Fl.t("Start Swap"))),De.createElement(hg,{id:"widget-confirm-swap-wallet-icon-btn",variant:"contained",type:"primary",size:"large",loading:k||h,disabled:!d,onClick:f.bind(null,!0)},De.createElement(Ex,{size:24})))},u&&De.createElement(ef,{open:u,onClose:()=>f(!1),onCancel:v,loading:k,onCheckBalance:x}),De.createElement(pe,null,De.createElement("div",{className:Mx()},De.createElement(bx,{variant:"title",size:"small"},Fl.t("You get")),De.createElement("div",{className:Lx()},De.createElement(Ei,{onClick:!k&&!u&&!A?$:void 0}))),De.createElement(Ol,{size:"12"}),Zm(K.map((L,ae)=>({element:L,key:`alert-${ae}`})),De.createElement(Ol,{size:10})),K.length>0?De.createElement(Ol,{size:10}):null,De.createElement(Mo,{quote:t,type:"swap-preview",expanded:!0,tagHidden:!0,error:b.error,loading:k,warning:b.warnings?.quote??null})))}i(yg,"ConfirmSwapPage");import{i18n as Kt}from"@lingui/core";import{Button as Jl,CustomTokensZeroStateDarkIcon as eb,CustomTokensZeroStateIcon as tb,DeleteIcon as ob,Divider as Cr,IconButton as nb,MessageBox as rb,NotFound as ib,styled as ep}from"@rango-dev/ui";import ye,{useState as Rl}from"react";import{useNavigate as ab}from"react-router-dom";import{CloseIcon as _x,IconButton as Dx,SearchIcon as $x,TextField as Fx}from"@rango-dev/ui";import fr from"react";import{styled as Px}from"@rango-dev/ui";var Sg=Px("div",{width:"$24",height:"$24",display:"flex",alignItems:"center",justifyContent:"center"});function Et(t){let{variant:e,fullWidth:o,color:n,size:r,onChange:a,value:s,style:l,setValue:p,suffix:c,...u}=t,f=s.length?fr.createElement(Dx,{variant:"ghost",onClick:()=>p?.(""),size:"small"},fr.createElement(_x,{color:"gray",size:10})):null;return c&&(f=c),fr.createElement(Fx,{prefix:fr.createElement(Sg,null,fr.createElement($x,{color:"black"})),suffix:f,fullWidth:o,color:n,variant:e,style:{padding:10,borderRadius:25,alignItems:"center",...l},size:r,value:s,onChange:a,...u})}i(Et,"SearchInput");import{i18n as Zl}from"@lingui/core";import{Button as Qx,CustomTokenWarning as Hx,darkTheme as Bg,Divider as Vt,ExternalLinkIcon as qx,Image as Gx,ListItem as Vx,NotFound as Kx,PinIcon as jx,Skeleton as Po,Typography as yr,VirtualizedList as Xx}from"@rango-dev/ui";import M,{useState as Yx}from"react";import{useTranslation as Zx}from"react-i18next";import{Divider as Ag,ListItem as zx,Skeleton as hr}from"@rango-dev/ui";import It from"react";import{css as bn,darkTheme as zl,ImageContainer as Ox,ListItemButton as Ux,styled as ot,Typography as Cg}from"@rango-dev/ui";var Ql=bn({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}),Hl=bn({position:"relative",height:12,width:"30%",maxWidth:"150px"}),ql=bn({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",bottom:"-8px"}),Gl=bn({transform:"translateY(12px)",visibility:"hidden",display:"flex","& a":{display:"flex",justifyContent:"center",alignItems:"center",fontSize:"$12",lineHeight:"$16",$$color:"$colors$neutral600",[`.${zl} &`]:{$$color:"$colors$neutral700"},color:"$$color",textDecoration:"none"}}),Vl=bn({}),Kl=bn(),Tg=ot("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden",justifyContent:"center"}),jl=ot("div",{display:"flex",alignItems:"center","._typography":{textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}}),ra=ot("ul",{flexGrow:1,padding:0,margin:0,listStyle:"none","& li":{alignItems:"none","&:hover":{[`& .${Hl}`]:{[`& .${Gl}`]:{position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",visibility:"visible"},[`& .${Vl}`]:{bottom:"-15px"},[`& .${Ql}`]:{position:"absolute",transform:"translateY(-12px)",visibility:"hidden"},[`& .${ql}`]:{position:"absolute",transform:"translateY(-12px)",bottom:"-10px"}}}}}),kg=ot(Ux,{variants:{customToken:{true:{"&:hover":{cursor:"unset"}}}}}),Xl=ot("div",{paddingLeft:"$5",paddingRight:"$5",borderRadius:"$md",display:"flex",alignItems:"center"}),Yl=ot(Cg,{}),vg=ot("div",{textAlign:"right",width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",[`& .${Kl}`]:{$$color:"$colors$neutral600",[`.${zl} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),gr=ot("div",{display:"flex",alignItems:"end",flexDirection:"column"}),Rq=ot("div",{display:"flex",alignItems:"center"}),wg=ot("div",{position:"relative",[`& ${Ox}`]:{borderRadius:"$xm",overflow:"hidden"}}),xg=ot("div",{position:"absolute",backgroundColor:"$neutral100",padding:"$4",borderRadius:"50%",bottom:-6,right:-6}),bg=ot(Cg,{width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}),Eg=ot("a",{"& svg:hover":{color:"$colors$info"}}),Ig=ot("div",{paddingRight:"$5","& .widget-token-list-item-btn":{width:"100%",overflow:"hidden",height:"60px"},"& .widget-token-list-item-import-btn":{height:"$20",padding:"0 $10","& ._text":{display:"flex",justifyContent:"center",alignItems:"center"},"& ._typography":{[`.${zl} &`]:{color:"$foreground"}}}});function Ng(t){return It.createElement(ra,null,Array.from(Array(t.size),e=>It.createElement(zx,{key:e,hasDivider:!0,start:It.createElement(hr,{variant:"circular",width:35,height:35}),end:It.createElement(gr,null,It.createElement(hr,{variant:"text",size:"large",width:70}),It.createElement(Ag,{size:4}),It.createElement(hr,{variant:"text",size:"medium",width:50})),title:It.createElement("div",null,It.createElement(hr,{variant:"text",size:"large",width:90}),It.createElement(Ag,{size:4}),It.createElement(hr,{variant:"text",size:"medium",width:90}))})))}i(Ng,"LoadingTokenList");var Jx=20,Rx=i(t=>{let{address:e,name:o,url:n,token:r,customCssForTag:a,customCssForTagTitle:s}=t,l=e.length;return M.createElement("div",{className:Hl()},o?M.createElement("div",{className:Ql()},o):M.createElement(jl,{className:ql()},M.createElement(yr,{variant:"title",size:"xmedium"},r.symbol),M.createElement(Vt,{direction:"horizontal",size:4}),M.createElement(Xl,{css:a},M.createElement(Yl,{variant:"body",size:"xsmall",css:s},r.blockchain))),!!e&&M.createElement("div",{className:`${Gl()} ${!o&&Vl()}`},l>10?`${e.slice(0,5)}...${e.slice(l-6,l)}`:e," ",M.createElement(Vt,{size:4,direction:"horizontal"}),M.createElement(Eg,{href:n,target:"_blank",rel:"nofollow noreferrer",onClick:p=>p.stopPropagation()},M.createElement(qx,{size:12}))))},"renderDesc");function Sr(t){let{list:e,searchedFor:o="",onChange:n,selectedBlockchain:r,showTitle:a=!0,action:s,type:l,showWarning:p=!0}=t,c=C().fetchStatus,u=C().blockchains(),{getBalanceFor:f,fetchingWallets:h}=C(),{isTokenPinned:g}=C(),{setFromToken:d,setToToken:m}=O(),{t:y}=Zx(),T=qe(),[S,k]=Yx(null),v=i(()=>{l==="source"?d({token:S,meta:{blockchains:u}}):m({token:S,meta:{blockchains:u}})},"updateToken"),b=i(()=>{v(),T()},"handleImportToken"),I=i(x=>{if(x.customToken){let{customToken:B,...P}=x;return M.createElement(Qx,{variant:"contained",type:"primary",size:"small",className:"widget-token-list-item-import-btn",onClick:i(H=>{H.stopPropagation(),k({...P,warning:!0})},"handleClick")},M.createElement(yr,{variant:"body",size:"xsmall",color:"background"},y("import")))}let w=Vr(f(x));return s?s(x):h?M.createElement(gr,null,M.createElement(Po,{variant:"text",size:"large",width:70}),M.createElement(Vt,{size:4}),M.createElement(Po,{variant:"text",size:"medium",width:50})):w&&M.createElement(vg,null,M.createElement(bg,{variant:"title",size:"small"},w.amount),M.createElement("div",null),w.usdValue&&M.createElement(yr,{variant:"body",className:Kl(),size:"xsmall"},`$${w.usdValue}`))},"endRenderer"),A=i(()=>M.createElement(Xx,{itemContent:x=>{let w=e[x];if(w==="skeleton")return M.createElement(Vx,{hasDivider:!0,start:M.createElement(Po,{variant:"circular",width:35,height:35}),end:M.createElement(gr,null,M.createElement(Po,{variant:"text",size:"large",width:70}),M.createElement(Vt,{size:4}),M.createElement(Po,{variant:"text",size:"medium",width:50})),title:M.createElement("div",null,M.createElement(Po,{variant:"text",size:"large",width:90}),M.createElement(Vt,{size:4}),M.createElement(Po,{variant:"text",size:"medium",width:90}))});let B=w.address||"",P=u.find(L=>L.name===w.blockchain);if(!P)return null;let $=zs(P.color,"main"),H={$$color:$.main150,[`.${Bg} &`]:{$$color:$.main750},backgroundColor:"$$color"},R={$$color:$.main750,[`.${Bg} &`]:{$$color:$.main150},color:"$$color"},K=i(()=>{typeof w!="string"&&!w.customToken&&n?.(w)},"handleClick");return M.createElement(Ig,null,M.createElement(kg,{"tab-index":x,key:`${w.symbol}${w.address}`,id:`${w.symbol}${w.address}`,className:"widget-token-list-item-btn",hasDivider:!0,customToken:w.customToken,onClick:K,start:M.createElement(wg,null,M.createElement(Gx,{src:w.image===""?Zr:w.image,size:30}),t.type!=="custom-token"&&g(w,t.type)&&M.createElement(xg,null,M.createElement(jx,{size:12,color:"gray"}))),title:P?.type==="COSMOS"||w.name||!w.name&&!B?M.createElement(jl,null,M.createElement(yr,{variant:"title",size:"xmedium"},w.symbol),M.createElement(Vt,{direction:"horizontal",size:4}),M.createElement(Xl,{css:H},M.createElement(Yl,{variant:"body",size:"xsmall",css:R},w.blockchain)),p&&w.warning&&M.createElement(M.Fragment,null,M.createElement(Vt,{direction:"horizontal",size:4}),M.createElement(Hx,{container:N()}))):void 0,description:typeof w!="string"&&P?.info&&B&&P.type!=="COSMOS"?Rx({address:B,token:w,customCssForTag:H,customCssForTagTitle:R,name:w.name,url:P.info.addressUrl.split("{wallet}").join(B)}):w.name||void 0,end:I(w)}))},totalCount:e.length,key:`${r}-${o}`}),"renderList"),E=S?ko(S?.blockchain,u):null;return M.createElement(M.Fragment,null,a&&M.createElement(M.Fragment,null,M.createElement(yr,{variant:"label",size:"large"},Zl.t("Select Token")),M.createElement(Vt,{size:4})),M.createElement(Tg,null,M.createElement(Vt,{size:4}),c==="loading"&&M.createElement(Ng,{size:Jx}),c==="success"&&(e.length?M.createElement(M.Fragment,null,M.createElement(Zn,{token:S,address:S?.address??"",blockchain:E??void 0,onImport:b,onExitErrorModal:()=>k(null),onExitImportModal:()=>k(null)}),M.createElement(ra,{as:"ul"},A())):!!o&&M.createElement(Kx,{title:Zl.t("No results found"),description:Zl.t("Try using different keywords")}))))}i(Sr,"TokenList");var sb=ep("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1}),lb=ep("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",flex:"0.75"}),pb=ep(nb,{"&:hover":{"& svg":{color:"$secondary550"}}});function Wg(){let[t,e]=Rl(""),{deleteCustomToken:o}=C(),n=C().customTokens(),{fromToken:r,toToken:a,setFromToken:s,setToToken:l}=O(),{mode:p}=to({}),c=ab(),[u,f]=Rl(!1),[h,g]=Rl(),d=i(S=>{let k=S.target.value;e(k)},"handleSearch"),m=p==="dark",y=n.filter(S=>rt(S.symbol,t)||rt(S.address||"",t)||rt(S.name||"",t)),T=i(()=>{if(h){let S=a?gt(a):null,k=r?gt(r):null,v=gt(h);S===v?l({token:null}):k===v&&s({token:null}),o(h)}f(!1)},"handleDeleteCustomToken");return ye.createElement(ie,{header:{title:Kt.t("Custom Tokens")}},ye.createElement(pe,null,ye.createElement(sb,null,n.length?ye.createElement(ye.Fragment,null,ye.createElement(Et,{value:t,setValue:e,fullWidth:!0,color:"light",variant:"contained",placeholder:Kt.t("Search Token"),onChange:d}),ye.createElement(Cr,{size:16}),ye.createElement(Sr,{list:y,type:"custom-token",searchedFor:t,showTitle:!1,showWarning:!1,action:S=>ye.createElement(pb,{id:"widget-custom-token-delete-icon-btn",variant:"ghost",onClick:()=>{f(!0),g(S)}},ye.createElement(ob,{size:12,color:"gray"}))})):ye.createElement(lb,null,ye.createElement(ib,{icon:m?ye.createElement(eb,{size:200}):ye.createElement(tb,{size:200}),title:Kt.t("No custom tokens"),description:Kt.t("press the button to add your custom token")})),ye.createElement(Cr,{size:20}),ye.createElement(Jl,{id:"widget-custom-token-add-btn",type:"primary",variant:"contained",size:"large",onClick:()=>c(F.addCustomTokens)},Kt.t("Add Custom Token"))),ye.createElement(J,{open:u,dismissible:!0,onClose:()=>f(!1),container:N()},ye.createElement(rb,{title:Kt.t("Delete Custom Token"),type:"error",description:Kt.t("Are you sure you want to Delete this Token?")},ye.createElement(Cr,{size:40}),ye.createElement(Cr,{size:10}),ye.createElement(Jl,{fullWidth:!0,id:"widget-custom-token-delete-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:T},Kt.t("Yes, Delete it")),ye.createElement(Cr,{size:12}),ye.createElement(Jl,{id:"widget-custom-token-delete-modal-no-btn",fullWidth:!0,variant:"outlined",type:"primary",size:"large",onClick:()=>f(!1)},Kt.t("No, Continue"))))))}i(Wg,"CustomTokensPage");import{i18n as Xe}from"@lingui/core";import{useManager as Nb}from"@rango-dev/queue-manager-react";import{Button as sp,darkTheme as Bb,Divider as Do,MessageBox as Wb,NotFound as Lb,styled as lp,Typography as sa}from"@rango-dev/ui";import{TransactionStatus as vr}from"rango-types";import ce,{useMemo as Yg,useState as la}from"react";import{useNavigate as Mb}from"react-router-dom";import{FilterIcon as hb,Popover as yb}from"@rango-dev/ui";import _o from"react";import{css as cb,darkTheme as ia,IconButton as ub,styled as Tr}from"@rango-dev/ui";var tp=Tr("div",{position:"relative","&::before":{position:"absolute",right:"1px",top:"-1px",width:"$8",height:"$8",borderRadius:"100%",backgroundColor:"$neutral300",[`.${ia} &`]:{backgroundColor:"$neutral400"},padding:"$2"},variants:{isSelect:{true:{"&::before":{content:""}}}}}),Lg=Tr(ub,{width:"$36",height:"$36",position:"relative",padding:"0",overflow:"unset",backgroundColor:"$neutral300",[`.${ia} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${ia} &`]:{backgroundColor:"$neutral"},[`& ${tp}::before`]:{backgroundColor:"$secondary100",[`.${ia} &`]:{backgroundColor:"$neutral"}}},variants:{isSelect:{true:{border:"1px solid $secondary"}}}}),Mg=Tr("div",{position:"absolute",width:"$6",height:"$6",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"3px",top:"$0",right:"1px",backgroundColor:"$secondary500"}),Pg=Tr("div",{padding:"$15",borderRadius:"$sm",width:"248px",backgroundColor:"$background",zIndex:10}),_g=cb({display:"flex",justifyContent:"space-between",alignItems:"center"}),Dg=Tr("ul",{margin:0,listStyle:"none",height:"100%",padding:0,".item-start-container":{paddingRight:"0 !important"}});import{i18n as $g}from"@lingui/core";import{Button as mb,Divider as Fg,ListItemButton as db,Radio as fb,RadioRoot as gb,Typography as Og}from"@rango-dev/ui";import ct from"react";function Ug(t){let{filterBy:e,onClickItem:o}=t;return ct.createElement(Pg,null,ct.createElement("div",{className:_g()},ct.createElement(Og,{size:"small",variant:"body"},$g.t("Status")),ct.createElement(mb,{id:"widget-filter-selector-reset-btn",variant:"ghost",size:"xxsmall",onClick:()=>o("")},$g.t("Reset"))),ct.createElement(Fg,{size:10}),ct.createElement(gb,{value:e},ct.createElement(Dg,null,t.list.map((n,r)=>ct.createElement(db,{key:n.id,style:{height:"40px",width:"100%"},selected:!1,hasDivider:t.list.length-1!=r,id:n.id,title:ct.createElement(ct.Fragment,null,ct.createElement(Fg,{direction:"horizontal",size:4}),ct.createElement(Og,{size:"medium",variant:"body"},n.title)),start:ct.createElement(fb,{value:n.id}),onClick:o})))))}i(Ug,"FilterSelectorContent");function op(t){let{onClickItem:e,onOpenChange:o,filterBy:n,list:r,open:a}=t;return _o.createElement("div",null,_o.createElement(yb,{open:a,align:"end",onOpenChange:o,container:N(),content:_o.createElement(Ug,{list:r,filterBy:n,onClickItem:s=>{e(s),o(!1)}})},_o.createElement(Lg,{id:"widget-filter-selector-filter-icon-btn",variant:"default",isSelect:!!n,onClick:()=>o(!t.open)},_o.createElement(tp,{isSelect:!!n},_o.createElement(hb,{size:16,color:"black"}),!!n&&_o.createElement(Mg,null)))))}i(op,"FilterSelector");import{i18n as Tb}from"@lingui/core";import{getCurrentStep as kb}from"@rango-dev/queue-manager-rango-preset";import{Divider as Gg,GroupedVirtualizedList as vb,Skeleton as wb,SwapListItem as Vg,Typography as xb}from"@rango-dev/ui";import je,{useCallback as Kg,useEffect as bb,useRef as Eb,useState as Ib}from"react";function zg(t,e){let o=[],n=0;do{let r=t[n];o.push(Math.min(r,e)),e-=r,n++}while(e>0&&n<=t.length);return o}i(zg,"calculateGroupsSoFar");import{css as Sb,darkTheme as Cb,styled as kr}from"@rango-dev/ui";var np=Sb(),Qg=kr("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$5"}),rp=kr("div",{width:"100%",display:"flex",flexDirection:"column",backgroundColor:"$background",padding:"$10 $5 0 $5",[`& .${np}`]:{$$color:"$colors$neutral600",[`.${Cb} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),ip=kr("div",{display:"flex",justifyContent:"flex-start",padding:"$2"}),Hg=kr("div",{gap:"$10",display:"flex",flexDirection:"column"}),qg=kr("div",{height:"100%",display:"flex",justifyContent:"center",alignItems:"center"});var Ab=10;function ap(t){let{list:e,onSwapClick:o,groupBy:n,isLoading:r}=t,[a,s]=Ib([]),l=Eb(0),{swaps:p,groupCounts:c,groups:u}=n(e),f=Kg(zg,[]),h=Kg(()=>{let g=e.length-l.current;g&&(l.current+=Math.min(g,Ab),s(f(c,l.current)))},[e.length]);if(bb(()=>{r||h()},[r,h]),r){let g=[1,2];return je.createElement(je.Fragment,null,[g,g].map((m,y)=>je.createElement(rp,{key:y},je.createElement(ip,null,je.createElement(wb,{variant:"text",width:60,size:"small"}),je.createElement(Gg,{size:16})),je.createElement(Gg,{size:4}),je.createElement(Hg,null,m.map((S,k)=>je.createElement(Vg,{isLoading:!0,key:k}))))))}return je.createElement(vb,{endReached:()=>{l.current<e.length&&h()},groupCounts:a,groupContent:g=>je.createElement(rp,null,je.createElement(ip,null,je.createElement(xb,{variant:"label",size:"medium",className:np()},u[g]))),itemContent:(g,d)=>{let m=p[g];if(!m)return null;let y=kb(m),T=m.steps[0],S=m.steps[m.steps.length-1];return je.createElement(Qg,{key:m.requestId},je.createElement(Vg,{requestId:m.requestId,creationTime:m.creationTime,status:m.status,onClick:o,currentStep:y,tooltipContainer:N(),onlyShowTime:u[d]===Tb.t("Today"),swapTokenData:{from:{token:{image:T.fromLogo,displayName:T.fromSymbol},blockchain:{image:T.fromBlockchainLogo||""},amount:_(m.inputAmount,6,6),realAmount:m.inputAmount},to:{token:{image:S.toLogo,displayName:S.toSymbol},blockchain:{image:S.toBlockchainLogo||""},amount:_(S.outputAmount||S.expectedOutputAmountHumanReadable||"",6,6),realAmount:S.outputAmount||S.expectedOutputAmountHumanReadable||""}}}))}})}i(ap,"HistoryGroupedList");import{i18n as aa}from"@lingui/core";import jg from"dayjs";var Xg=i(t=>{let e=new Map([["today",{title:aa.t("Today"),swaps:[]}],["week",{title:aa.t("This week"),swaps:[]}],["month",{title:aa.t("This month"),swaps:[]}],["year",{title:aa.t("This year"),swaps:[]}]]);function o(p,c){e.has(p)||e.set(p,{title:p,swaps:[]}),e.get(p)?.swaps.push(c)}i(o,"addYearsToOutput");let n=jg();t.forEach(p=>{let c=Number(p.creationTime),u=jg(c);if(n.isSame(u,"day"))e.get("today")?.swaps.push(p);else if(n.isSame(u,"week"))e.get("week")?.swaps.push(p);else if(n.isSame(u,"month"))e.get("month")?.swaps.push(p);else if(n.isSame(u,"year"))e.get("year")?.swaps.push(p);else{let f=new Date(c).getFullYear().toString();o(f,p)}});let r=Array.from(e.values()).filter(p=>p.swaps.length>0),a=r.flatMap(p=>p.swaps),s=r.map(p=>p.swaps.length),l=r.map(p=>p.title);return{swaps:a,groupCounts:s,groups:l}},"groupSwapsByDate");var Pb=lp("div",{overflowY:"visible",width:"100%",display:"flex",flexDirection:"column",gap:15,height:"100%"}),_b=lp("div",{display:"flex",justifyContent:"center",alignItems:"center"}),Db=lp("div",{"._typography":{color:"$neutral700",[`.${Bb}&`]:{color:"$neutral900"}}}),$b=[{id:vr.SUCCESS,title:Xe.t("Complete")},{id:vr.RUNNING,title:Xe.t("Running")},{id:vr.FAILED,title:Xe.t("Failed")}],Fb=i((t,e)=>t?.length?t.filter(o=>Nt(o.fromBlockchain,e)||Nt(o.toBlockchain,e)||Nt(o.toSymbol,e)||Nt(o.fromSymbol,e)).length:!1,"isStepContainsText");function Zg(){let t=Mb(),{manager:e,state:o}=Nb(),n=St(e).map(({swap:k})=>k),[r,a]=la(""),[s,l]=la(!1),p=!o.loadedFromPersistor,[c,u]=la(""),[f,h]=la(!1),g=i(k=>{let v=k.target.value;a(v)},"handleSearch"),d=Yg(()=>!r&&!c?n:n.filter(k=>{let{inputAmount:v,status:b,steps:I,requestId:A}=k;return(!r||Nt(v,r)||Nt(b,r)||Fb(I,r)||Nt(A,r))&&(!c||c===b)}),[n,r,c]),m=!d?.length&&!p,y=i(()=>h(!1),"onCloseModal"),T=i(async()=>{try{await e?.clearQueue(),h(!1)}catch(k){console.log(k)}},"onClear"),S=Yg(()=>!n.some(k=>k.status===vr.SUCCESS||k.status===vr.FAILED),[n]);return ce.createElement(ie,{header:{title:Xe.t("History"),suffix:ce.createElement(oo,null,ce.createElement(sp,{id:"widget-history-clear-btn",disabled:S,variant:"ghost",size:"xsmall",onClick:()=>h(!0)},ce.createElement(sa,{size:"medium",variant:"label",color:"error"},Xe.t("Clear"))))}},ce.createElement(pe,null,ce.createElement(_b,null,ce.createElement(Et,{setValue:a,fullWidth:!0,variant:"contained",placeholder:Xe.t("Search Transaction"),autoFocus:!0,onChange:g,style:{height:36},value:r}),ce.createElement(Do,{size:10,direction:"horizontal"}),ce.createElement(op,{filterBy:c,open:s,onOpenChange:k=>l(k),onClickItem:k=>u(k),list:$b})),ce.createElement(Do,{size:"16"}),ce.createElement(Pb,null,m&&ce.createElement(qg,null,ce.createElement(Do,{size:32}),ce.createElement(Lb,{title:r?Xe.t("No results found"):Xe.t("No transactions"),titleColor:r?void 0:"$info",hasIcon:!!r,description:r?Xe.t("Try using different keywords"):Xe.t("Your transaction history is stored locally and will appear here after you start a swap")})),!m&&ce.createElement(ap,{list:d,onSwapClick:t,groupBy:Xg,isLoading:p}))),ce.createElement(J,{open:f,onClose:y,container:N()},ce.createElement(Do,{size:20}),ce.createElement(Wb,{type:"warning",title:Xe.t("Clear Transaction History"),description:ce.createElement(Db,null,ce.createElement(sa,{variant:"body",size:"medium"},Xe.t("Proceeding will remove all successful and failed transactions from the widget. Do you want to continue?")),ce.createElement(Do,{size:"24"}),ce.createElement(sa,{variant:"body",size:"small"},Xe.t("Note: This does not erase your transaction history on the chain; it only removes them here.")))}),ce.createElement(Do,{size:30}),ce.createElement(sp,{id:"widget-history-clear-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:T},Xe.t("Yes, Clear the history")),ce.createElement(Do,{size:10}),ce.createElement(sp,{id:"widget-history-clear-modal-no-btn",variant:"outlined",type:"primary",size:"large",onClick:y},ce.createElement(sa,{variant:"title",size:"medium",color:"primary"},Xe.t("No, Cancel")))))}i(Zg,"HistoryPage");import{i18n as CE}from"@lingui/core";import{Button as TE,Divider as vp,styled as kE,WarningIcon as vE}from"@rango-dev/ui";import wE from"bignumber.js";import Se,{useEffect as Ih,useState as Ah}from"react";import{useNavigate as xE}from"react-router-dom";import{i18n as Rg}from"@lingui/core";import{Alert as Ub,Divider as pp,NoRouteIcon as zb,Typography as Qb}from"@rango-dev/ui";import $o from"react";import{styled as Ob}from"@rango-dev/ui";var Jg=Ob("div",{display:"flex",flexDirection:"column",alignItems:"center"});function cp(){let{fromToken:t,toToken:e}=O();return!!t&&!!e&&Ft(t,e)?$o.createElement(Jg,null,$o.createElement(pp,{size:10}),$o.createElement(zb,{size:24,color:"gray"}),$o.createElement(pp,{size:4}),$o.createElement(Qb,{variant:"title",size:"small"},Rg.t("No Routes Found")),$o.createElement(pp,{size:4}),$o.createElement(Ub,{title:Rg.t("You cannot use the same token for From and To."),type:"warning",variant:"alarm"})):null}i(cp,"SameTokensWarning");import{Alert as Hb,Button as qb}from"@rango-dev/ui";import th from"react";import{i18n as pa}from"@lingui/core";function eh(t){let e=null;return t===ei?(e={alertType:"error",action:"reset-slippage",actionButtonTitle:pa.t("Reset"),title:pa.t("Slippage cannot be set lower than 0.01%.")},e):t>Vo?(e={alertType:"warning",action:"change-settings",actionButtonTitle:pa.t("Change"),title:pa.t("Caution, your slippage is high!")},e):null}i(eh,"makeAlerts");function oh(t){let{slippage:e,customSlippage:o,setSlippage:n,setCustomSlippage:r}=C(),{onChangeSettings:a}=t,l=eh(o!==null?o:e),p=i(c=>{c==="reset-slippage"?(n(Rr),r(null)):c==="change-settings"&&a()},"onClickActionButton");return l?th.createElement(Hb,{title:l.title,type:l.alertType,variant:"alarm",action:th.createElement(qb,{id:"widget-slippage-warning-error-change-settings-or-reset-slippage-btn",size:"xxsmall",type:l.alertType,onClick:()=>p(l.action)},l.actionButtonTitle)}):null}i(oh,"SlippageWarningsAndErrors");import{i18n as Xb}from"@lingui/core";import{IconButton as Yb,ReverseIcon as Zb,Skeleton as Jb,Tooltip as Rb,Typography as wr}from"@rango-dev/ui";import ut from"react";import ca from"bignumber.js";function rh(t){let{error:e,isDarkTheme:o,warning:n}=t,{quoteError:r,slippageError:a}=e,{quoteWarning:s,slippageWarning:l}=n,p=!!a||r?.type===4,c=!!l||s?.type===2;return p?"$error500":c?"$warning500":o?"$neutral600":"$neutral700"}i(rh,"getSlippageColor");function ih(t){let{toTokenUsdPrice:e,fromTokenUsdPrice:o}=t;if(!e||!o)return{rawValue:"0",displayValue:"0"};let n=new ca(e),r=new ca(o),a=n.dividedBy(r),s;return a.isLessThan(1)?s=a.toFixed(14):a.toFixed(0).length>10?s=a.toFixed(0).slice(0,10):s=a.toFixed(2),{displayValue:s,rawValue:a.toFixed()}}i(ih,"getUsdExchangeRate");function ah(t,e){let o=new ca(t).multipliedBy(e);return o.isLessThan(.001)?"$0":`$${o.decimalPlaces(2,ca.ROUND_DOWN).toFormat(2)}`}i(ah,"formatTokenValueInUsd");import{darkTheme as Kb,styled as mp,Typography as jb}from"@rango-dev/ui";var sh=mp("div",{display:"flex",padding:"$4",justifyContent:"space-between",alignItems:"center"}),lh=mp("div",{display:"flex",alignItems:"center",gap:"$2","& .rate-text":{color:"$neutral700",[`.${Kb} &`]:{color:"$neutral700"}},"& ._icon-button":{transform:"rotate(90deg)",width:"$16",height:"$16"}}),dp=mp(jb,{maxWidth:"$32",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"});function fp(t){let{slippage:e,customSlippage:o,quoteTokensRate:n,changeQuoteTokensRate:r}=C(),{quoteError:a,quoteWarning:s,fromToken:l,toToken:p,quote:c,loading:u}=t,f=o!==null?o:e,{mode:h}=to({}),g=Xo(f),d=h==="dark",m=n==="default",y={quoteError:a,slippageError:g?.type==="error"?g.message:null},T={quoteWarning:s,slippageWarning:g?.type==="warning"?g.message:null},S=c?.swaps[0].from||l,k=c?.swaps[c?.swaps.length-1].to||p,v=m?S:k,b=m?k:S,I=Number(m?c?.outputAmount:c?.requestAmount),A=Number(m?c?.requestAmount:c?.outputAmount),E=I||v.usdPrice,x=A||b.usdPrice,{rawValue:w,displayValue:B}=ih({toTokenUsdPrice:x,fromTokenUsdPrice:E});return ut.createElement(sh,null,ut.createElement(wr,{variant:y||T?"label":"body",size:y||T?"medium":"small",color:rh({error:y,warning:T,isDarkTheme:d})},Xb.t("Slippage:")," ",f,"%"),u?ut.createElement(Jb,{height:16,width:104,variant:"rounded"}):E&&x&&ut.createElement(lh,null,ut.createElement(wr,{className:"rate-text",variant:"body",size:"small"},"1"),ut.createElement(dp,{className:"rate-text",variant:"body",size:"small"},b.symbol),ut.createElement(Yb,{id:"widget-home-page-change-rate-button",onClick:r},ut.createElement(Zb,{size:14,color:"secondary"})),ut.createElement(Rb,{container:N(),side:"top",sideOffset:4,content:ut.createElement(wr,{className:"rate-text",variant:"body",size:"small"},w)},ut.createElement(wr,{className:"rate-text",variant:"body",size:"small"},B)),ut.createElement(dp,{className:"rate-text",variant:"body",size:"small"},v.symbol),v.usdPrice&&ut.createElement(wr,{color:"neutral600",variant:"body",size:"small"},"~",ah(Number(w),v.usdPrice))))}i(fp,"SwapMetrics");import{i18n as iE}from"@lingui/core";import{Header as aE}from"@rango-dev/ui";import co,{useEffect as sE,useState as lE}from"react";import{i18n as tE}from"@lingui/core";import{Divider as hp,FullExpandedQuote as oE,Typography as nE}from"@rango-dev/ui";import we from"react";import{styled as gp}from"@rango-dev/ui";var ph=gp("div",{display:"flex",justifyContent:"center",flexDirection:"column",height:"100%"}),ch=gp("div",{display:"flex",justifyContent:"space-between",alignItems:"center"}),uh=gp("div",{width:"146px"});import{i18n as xr}from"@lingui/core";import{Select as eE}from"@rango-dev/ui";import mh from"react";function ua(t){let{updateQuotePartialState:e,sortStrategy:o}=O(),n=[{value:"SMART",label:xr.t("Smart Routing")},{value:"FEE",label:xr.t("Lowest Fee")},{value:"SPEED",label:xr.t("Fastest Transfer")},{value:"NET_OUTPUT",label:xr.t("Maximum Return")},{value:"PRICE",label:xr.t("Maximum Output")}];return mh.createElement(uh,null,mh.createElement(eE,{container:t.container,options:n,value:o,handleItemClick:r=>{e("sortStrategy",r.value)},variant:"filled"}))}i(ua,"SelectStrategy");var dh=3;function br(t){let{loading:e,onClickOnQuote:o,fetch:n,showModalFee:r,hasSort:a=!0,fullExpandedMode:s=!1,container:l}=t,{selectedQuote:p,quotes:c,updateQuotePartialState:u,fromToken:f,toToken:h,sortStrategy:g,error:d}=O(),{slippage:m,customSlippage:y}=C(),{findToken:T}=C(),S=l||N(),k=!!c&&c.results.length,v=y??m,b=i(E=>{if(!f||!h||!c)return null;let x={requestAmount:c.requestAmount,validationStatus:null,...E};return cn({currentQuote:x,userSlippage:v,findToken:T})},"getQuoteWarning"),I=d?.type===0||d?.type===1,A=c?.results?hi(g,c?.results):[];return we.createElement(we.Fragment,null,a&&we.createElement(we.Fragment,null,we.createElement(ch,null,we.createElement(nE,{size:"xmedium",variant:"title"},tE.t("Sort by")),we.createElement(ua,{container:S})),we.createElement(hp,{size:"10"})),e&&Array.from({length:dh},(E,x)=>we.createElement(we.Fragment,{key:x},s?we.createElement(oE,{loading:!0}):we.createElement(mr,{tagHidden:!1,type:"list-item",expanded:!1}),x!==dh-1&&we.createElement(hp,{size:16}))),!e&&we.createElement(we.Fragment,null,k?A.map((E,x)=>{let w=b(E),B=Dl(E.swaps),P=A.length-1===x;return we.createElement(we.Fragment,{key:E.requestId},we.createElement(Mo,{showModalFee:r,container:S,selected:p?.requestId===E.requestId,tagHidden:!1,quote:{...E,requestAmount:c.requestAmount,validationStatus:null},loading:e,error:B?.options||null,warning:w,fullExpandedMode:s,onClick:$=>{B||u("warning",w),u("error",B?.options||null),o($)},type:"list-item"}),!P&&we.createElement(hp,{size:16}))}):I&&we.createElement(ph,null,we.createElement(nr,{size:s?"large":"small",error:d,fetch:n}))))}i(br,"Quotes");import{darkTheme as rE,styled as fh}from"@rango-dev/ui";var gh=fh("div",{transition:"width 0.2s, opacity 0.2s, margin-left 0.2s",height:"700px",width:"390px",position:"relative",opacity:1,marginLeft:"$16",backgroundColor:"$neutral100",[`.${rE} &`]:{backgroundColor:"$neutral300"},variants:{expandMode:{default:{width:"390px"},full:{width:"719px"}}},"&.is-hidden":{width:0,height:0,opacity:0,marginLeft:0}}),hh=fh("div",{position:"relative",overflow:"hidden",padding:"$20",flexGrow:1,display:"flex",flexDirection:"column",overflowY:"auto",borderRadius:"$primary",backgroundColor:"$background"});var pE=100;function yp(t){let{fetch:e,loading:o,onClickOnQuote:n,onClickRefresh:r,isVisible:a}=t,[s,l]=lE(!1),p=s?"":"is-hidden",{config:c}=C(),u=c?.variant==="full-expanded",f=Co();return sE(()=>{let h=null;return a?h=setTimeout(()=>{l(!0)},pE):(l(!1),h&&clearTimeout(h)),()=>{h&&clearTimeout(h)}},[a]),co.createElement(gh,{expandMode:c?.variant==="full-expanded"?"full":"default",className:`${p} ${Bi()}`,id:Qe.EXPANDED_BOX_ID},co.createElement(aE,{title:iE.t("Routes"),suffix:co.createElement(co.Fragment,null,co.createElement(ua,{container:f}),co.createElement(Bo,{container:f,onClickRefresh:r,hidden:["history","notifications","settings"]}))}),co.createElement(hh,null,co.createElement(br,{showModalFee:!0,fetch:e,hasSort:!1,loading:o,container:Co(),onClickOnQuote:n,fullExpandedMode:u})))}i(yp,"ExpandedQuotes");import{i18n as wh}from"@lingui/core";import{SwapInput as xh}from"@rango-dev/ui";import dE from"bignumber.js";import Er from"react";import{ReverseIcon as mE}from"@rango-dev/ui";import Cp from"react";import{keyframes as cE,styled as yh}from"@rango-dev/ui";var Sp=450,uE=cE({"0%":{transform:"rotateX(0deg) rotateY(0deg) rotateZ(0deg)"},"33%":{transform:"rotateX(0deg) rotateZ(78deg) rotateY(66deg)"},"66%":{transform:"rotateX(0deg) rotateZ(163deg) rotateY(66deg)"},"100%":{transform:"rotateX(0deg) rotateZ(180deg) rotateY(0deg)"}}),Sh=yh("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)",cursor:"pointer"}),Ch=yh("div",{borderRadius:"$md",border:"3px solid $background",background:"$neutral100",width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center",color:"$foreground","&.rotate":{"& svg":{animation:`${uE} ${Sp}ms ease-in-out forwards`}},"&:hover":{color:"$secondary500",transform:"translateY(1px) scale(1.04)",boxShadow:"1px 1px 1px 1px rgba(0, 0, 0, 0.05)"}});function Tp(){let t=O.use.switchFromAndTo();return Cp.createElement(Sh,null,Cp.createElement(Ch,{onClick:e=>{let o=e.currentTarget;o.classList.add("rotate"),setTimeout(()=>{o.classList.remove("rotate")},Sp),t()}},Cp.createElement(mE,{size:12})))}i(Tp,"SwitchFromAndToButton");import{styled as Th}from"@rango-dev/ui";var kh=Th("div",{display:"flex",flexDirection:"column",gap:"$5",alignSelf:"stretch"}),vh=Th("div",{position:"relative"});function kp(t){let{fetchingQuote:e,fetchMetaStatus:o,onClickToken:n,isExpandable:r}=t,{fromToken:a,fromBlockchain:s,toToken:l,toBlockchain:p,setInputAmount:c,sanitizeInputAmount:u,inputAmount:f,inputUsdValue:h,outputAmount:g,outputUsdValue:d,selectedQuote:m}=O(),{connectedWallets:y,getBalanceFor:T}=C(),S=a?T(a):null,k=Vr(S)?.amount??"0",v=S?new dE(S.amount).shiftedBy(-S.decimals):me,b=!!s&&Fc(y,s.name),I=!ws(m,f,h),A=!ws(m,f,d),E=!h||!d||!d.gt(0)?null:zt(h.toString(),d.toString());return Er.createElement(kh,null,Er.createElement(vh,null,Er.createElement(xh,{label:wh.t("From"),mode:"From",onInputChange:c,onInputBlur:u,balance:k,chain:{displayName:s?.displayName||"",image:s?.logo},token:{displayName:a?.symbol||"",image:a?.image,securityWarning:!!a?.warning},onClickToken:()=>n("from"),price:{value:f,usdValue:I?void 0:_(h,4,4),realUsdValue:I?void 0:h?.toString(),error:I?oe().unknownPriceError.impactTitle:void 0},disabled:o==="failed",loading:o==="loading",loadingBalance:b,tooltipContainer:N(),onSelectMaxBalance:()=>{let x=_(v,S?.decimals),w=S?.amount?x.split(",").join(""):"";c(w)},anyWalletConnected:y.length>0}),Er.createElement(Tp,null)),Er.createElement(xh,{sharpBottomStyle:!r&&(!!m||e),label:wh.t("To"),mode:"To",fetchingQuote:e,chain:{displayName:p?.displayName||"",image:p?.logo},token:{displayName:l?.symbol||"",image:l?.image,securityWarning:!!l?.warning},percentageChange:_(zt(h,d),2,2),warningLevel:Qt(E??0),price:{value:_(g,6,6),usdValue:A?void 0:_(d,4,4),realValue:g?.toString(),realUsdValue:A?void 0:d?.toString(),error:A?oe().unknownPriceError.impactTitle:void 0},onClickToken:()=>n("to"),disabled:o==="failed",loading:o==="loading",tooltipContainer:N()}))}i(kp,"Inputs");import{useCallback as fE,useEffect as gE,useRef as hE,useState as yE}from"react";function bh(){let{fetch:t,loading:e,cancelFetch:o}=ea({request:async(n,r)=>await at().getAllRoutes(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(bh,"useFetchAllQuotes");var SE=600;function ma({refetchQuote:t}){let{fetch:e,cancelFetch:o}=bh(),{excludeLiquiditySources:n,routing:r}=C().config,{connectedWallets:a}=C(),l=a.some(le=>le.isContractWallet),{fromToken:p,toToken:c,inputAmount:u,inputUsdValue:f,selectedQuote:h,sortStrategy:g,resetQuote:d,error:m,warning:y,setSelectedQuote:T,updateQuotePartialState:S}=O(),{slippage:k,customSlippage:v,affiliatePercent:b,affiliateRef:I,affiliateWallets:A,fetchStatus:E}=C(),x=C().getLiquiditySources(),w=C().getDisabledLiquiditySources(),B=C().excludeLiquiditySources(),{findToken:P}=C(),[$,H]=yE(!0),R=hE(u),K=v??k,ae=!p||!c||Ft(p,c)||!Wn(u),re=i(le=>{H(le)},"resetState"),Q=i(le=>{let{fromToken:ue,toToken:se,inputAmount:Ze,liquiditySources:q,excludeLiquiditySources:W,disabledLiquiditySources:G,slippage:j,affiliateRef:ee,affiliatePercent:fe,affiliateWallets:Ue}=le;if($||re(!0),!ae&&ue&&se){d();let Je=wm({fromToken:ue,toToken:se,inputAmount:Ze,liquiditySources:q,excludeLiquiditySources:W,disabledLiquiditySources:G,wallets:a,slippage:j,affiliateRef:ee,affiliatePercent:fe,affiliateWallets:Ue,contractCall:l});jo("experimental",r)&&(Je.experimental=!0),jo("avoidNativeFee",r)&&(Je.avoidNativeFee=!0),jo("enableCentralizedSwappers",r)&&(Je.enableCentralizedSwappers=!0),r?.maxLength&&(Je.maxLength=r.maxLength),e(Je).then(xe=>{let ze=hi(g,xe.results),Zt=um(h,ze,xe.requestAmount);H(!1),S("quotes",xe),T(Zt),ta({diagnosisMessages:xe.diagnosisMessages,requestId:Zt?.requestId||"",swaps:Zt?.swaps});let yo=Zt&&cn({currentQuote:Zt,userSlippage:K,findToken:P});S("warning",yo)}).catch(xe=>{let{error:ze}=oa(xe);(ze?.type===0||ze?.type===1)&&d(),ze?.type!==2&&(S("error",ze),H(!1))})}},"fetch"),Z=fE(Or(le=>{Q(le)},SE),[ae]);return gE(()=>{if(!t){H(!1);return}if(E!=="success")return;if(ae){H(!1),(h||m||y)&&d();return}if(!Wn(u)&&f?.eq(0)){re(!1),o();return}d(),re(!0);let le=Q;return R.current&&R.current!=u&&(le=Z),R.current=u,le({inputAmount:u,fromToken:p,toToken:c,liquiditySources:x,excludeLiquiditySources:B,disabledLiquiditySources:w,slippage:K,affiliateRef:I,affiliatePercent:b,affiliateWallets:A,contractCall:l}),o},[E,u,p?.symbol,p?.address,p?.blockchain,c?.symbol,c?.address,c?.blockchain,ae,x?.length,n,w.length,K,I,b,l,JSON.stringify(A)]),{fetch:()=>Q({inputAmount:u,fromToken:p,toToken:c,liquiditySources:x,excludeLiquiditySources:B,disabledLiquiditySources:w,slippage:K,affiliateRef:I,affiliatePercent:b,affiliateWallets:A,contractCall:l}),loading:$}}i(ma,"useSwapInput");function Eh(t,e){let o=!1,n={preventDefault(){o=!0},...t.payload===void 0&&{payload:t.payload}};Te.emit("uiEvent",{type:t.type,payload:n}),o||e()}i(Eh,"emitPreventableEvent");var bE=kE("div",{display:"flex",alignItems:"flex-start",maxHeight:700,"& .footer__alert":{paddingTop:"0 !important"}}),EE=300;function Nh(){let t=xE(),{fromToken:e,toToken:o,inputAmount:n,selectedQuote:r,refetchQuote:a,error:s,warning:l,quotes:p,setSelectedQuote:c,resetQuoteWallets:u,setQuoteWarningsConfirmed:f,updateQuotePartialState:h}=O(),[g,d]=Ah(!1),{isLargeScreen:m,isExtraLargeScreen:y}=fn(),{fetch:T,loading:S}=ma({refetchQuote:a}),{config:k,fetchStatus:v,connectedWallets:b,customSlippage:I,slippage:A,setSlippage:E,setCustomSlippage:x}=C(),{isActiveTab:w}=te(),[B,P]=Ah(!1),H=Xo(I!==null?I:A),K=Cm({fetchMetaStatus:v,fetchingQuote:S,inputAmount:n,quote:r,anyWalletConnected:b.length>0,error:s,warning:l,needsToWarnEthOnPath:!1}),L=au(m,y,k?.variant),ae=!!n&&!!e&&!!o&&new wE(n).gt(0)&&!Bm(e,o),re=ae&&v==="success"&&S,Q=H?.quoteValidation||l,ue=(!L||L&&p?.results.length)&&(Q||s),se=!!e&&!!o,Ze=se&&!!H,q=(r||s)&&!B?T:void 0,W=i(ee=>{L&&g?(d(!1),setTimeout(()=>{t(ee)},EE)):t(ee)},"onHandleNavigation"),G=i(ee=>{r?.requestId!==ee.requestId&&(P(!1),c(ee))},"onClickOnQuote"),j=i(ee=>{ee&&(E(ee),x(null))},"onChangeSlippage");return Ih(()=>{u(),h("refetchQuote",!0)},[]),Ih(()=>{d(ae)},[ae]),Se.createElement(bE,null,Se.createElement(ie,{height:"auto",footer:Se.createElement(TE,{id:`widget-swap-${K.action}-btn`,type:"primary",size:"large",disabled:K.disabled||!w,prefix:K.action==="confirm-warning"&&Se.createElement(vE,null),fullWidth:!0,onClick:()=>{K.action==="connect-wallet"?Eh({type:"clickConnectWallet"},()=>W(F.wallets)):K.action==="confirm-warning"?P(!0):W(F.confirmSwap)}},K.title),header:{onWallet:()=>{W(F.wallets)},hasBackButton:!1,title:k.title||CE.t("Swap"),suffix:Se.createElement(Bo,{hidden:L?["refresh"]:void 0,onClickRefresh:q,onClickHistory:()=>W(F.swaps),onClickSettings:()=>{W(F.settings)}})}},Se.createElement(pe,null,Se.createElement(kp,{fetchingQuote:re,fetchMetaStatus:v,isExpandable:L,onClickToken:ee=>{W(ee==="from"?F.fromSwap:F.toSwap)}}),Se.createElement(vp,{size:"2"}),L?null:Se.createElement(Mo,{quote:r,loading:re,error:s,tagHidden:!1,warning:Q,type:"basic",onClickAllRoutes:p&&p.results.length>1?()=>{h("refetchQuote",!1),W(F.routes)}:void 0}),se&&Se.createElement(Se.Fragment,null,Se.createElement(vp,{size:8}),Se.createElement(fp,{quoteError:s,quoteWarning:Q,fromToken:e,toToken:o,quote:r,loading:re})),ue?Se.createElement(Se.Fragment,null,Se.createElement(ar,{warning:Q,error:s,skipAlerts:!!H,couldChangeSettings:!0,refetchQuote:T,showWarningModal:B,confirmationDisabled:!w,onOpenWarningModal:()=>P(!0),onCloseWarningModal:()=>P(!1),onChangeSlippage:j,onConfirmWarningModal:()=>{P(!1),f(!0),W(F.confirmSwap)},onChangeSettings:()=>W(F.settings)})):null,Ze&&Se.createElement(Se.Fragment,null,Se.createElement(vp,{size:"10"}),Se.createElement(oh,{onChangeSettings:()=>W(F.settings)})),Se.createElement(cp,null))),L?Se.createElement(yp,{loading:re,onClickOnQuote:G,fetch:T,onClickRefresh:q,isVisible:g}):null)}i(Nh,"Home");import{i18n as Bh}from"@lingui/core";import{Alert as IE,Divider as AE,List as NE,ListItemButton as BE,Radio as WE,RadioRoot as LE,Typography as ME}from"@rango-dev/ui";import _t from"react";function uo(){let{setLanguage:t,language:e,config:o}=C(),n=fu,r=o?.language||Yo;return{activeLanguage:e||r,languages:n,defaultLanguage:r,changeLanguage:a=>t(a||Yo),resetLanguage:()=>t(null)}}i(uo,"useLanguage");function Wh(){let{activeLanguage:t,changeLanguage:e,languages:o}=uo(),n=qe(),r=o.map(a=>{let{local:s,label:l,SVGFlag:p}=a;return{id:`widget-setting-languages-${s}-item-btn`,value:s,title:_t.createElement(ME,{variant:"title",size:"xmedium"},l),onClick:()=>{e(a.local),n()},end:_t.createElement(WE,{value:s}),start:_t.createElement(p,null)}});return _t.createElement(ie,{header:{title:Bh.t("Language")}},_t.createElement(pe,null,_t.createElement(IE,{type:"warning",variant:"alarm",title:"Warning: We are using machine translation, so the translations may be inaccurate."}),_t.createElement(AE,{size:"8"}),_t.createElement(LE,{value:t},_t.createElement(NE,{type:_t.createElement(BE,{title:Bh.t("language"),id:"_",onClick:()=>console.log()}),items:r}))))}i(Wh,"LanguagePage");import{i18n as jt}from"@lingui/core";import{Button as FE,Checkbox as OE,Image as UE,ListItemButton as zE,NotFound as QE,Typography as HE}from"@rango-dev/ui";import Ye,{useState as qE}from"react";import{Checkbox as DE,Skeleton as Mh}from"@rango-dev/ui";import Ar from"react";import{styled as wp}from"@rango-dev/ui";var Ir=wp("ul",{padding:"$15 $5 0",margin:0,listStyle:"none",height:"100%",overflowY:"auto",variants:{disabled:{true:{pointerEvents:"none"}}}}),xp=wp("div",{width:80,display:"flex",justifyContent:"flex-end"}),bp=wp("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%"});import{ListItem as PE,styled as _E}from"@rango-dev/ui";var Lh=_E(PE,{height:61});var $E=30;function Ep(){return Ar.createElement(Ir,null,Array.from(Array($E),(t,e)=>Ar.createElement(Lh,{hasDivider:!0,key:e,start:Ar.createElement(Mh,{variant:"circular",width:35,height:35}),title:Ar.createElement(Mh,{variant:"text",size:"large",width:90}),end:Ar.createElement(DE,{checked:!1})})))}i(Ep,"LoadingLiquiditySourceList");function Ip({sourceType:t}){let e=C().fetchStatus,o=C().swappers(),n=C().getDisabledLiquiditySources(),[r,a]=qE(""),s=C().toggleLiquiditySource,l=C().isInCampaignMode(),p=ti(o,n),c={Exchanges:jt.t("Exchanges"),Bridges:jt.t("Bridges")},u=[];t==="Exchanges"&&u.push("DEX"),t==="Bridges"&&u.push("BRIDGE","AGGREGATOR","OFF_CHAIN");let f=p.filter(T=>u.includes(T.type)),h=f.length===f.filter(T=>T.selected).length,g=i(()=>{f.forEach(T=>{h?s(T.groupTitle):T.selected||s(T.groupTitle)})},"toggleAllSources"),d=f.map(T=>{let{selected:S,groupTitle:k,logo:v,id:b,...I}=T;return{id:`widget-setting-liquidity-source-${Ec(b.toLowerCase())}-item-btn`,start:Ye.createElement(UE,{src:v,size:22,type:"circular"}),onClick:()=>{l||s(k)},end:Ye.createElement(OE,{checked:S,disabled:l}),title:Ye.createElement(HE,{variant:"title",size:"xmedium"},jt.t(k)),selected:S,groupTitle:k,logo:v,...I}}),m=i(T=>{let S=T.target.value;a(S)},"handleSearch"),y=d;return r&&(y=d.filter(T=>Nt(T.groupTitle,r))),Ye.createElement(ie,{header:{title:jt.t(t),suffix:Ye.createElement(xp,null,Ye.createElement(FE,{id:`widget-liquidity-source-${h?"deselect-all":"select-all"}-btn`,variant:"ghost",size:"xsmall",onClick:g},h?jt.t("Deselect all"):jt.t("Select all")))}},Ye.createElement(pe,{view:!0},Ye.createElement(Et,{value:r,setValue:a,fullWidth:!0,color:"light",variant:"contained",placeholder:jt.t("Search {sourceType}",{sourceType:c[t]}),onChange:m}),e==="loading"&&Ye.createElement(Ep,null),!y.length&&r?Ye.createElement(bp,null,Ye.createElement(QE,{title:jt.t("No results found"),description:jt.t("Try using different keywords")})):e==="success"&&Ye.createElement(Ir,{disabled:l},y.map(T=>{let{groupTitle:S,...k}=T;return Ye.createElement(Ye.Fragment,{key:T.id},Ye.createElement(zE,{style:{height:"61px"},...k,selected:!1,hasDivider:!0}))}))))}i(Ip,"LiquiditySourcePage");import{i18n as GE}from"@lingui/core";import da from"react";import{useNavigate as VE}from"react-router-dom";function Ph(){let t=VE(),e=qe(),{selectedQuote:o,refetchQuote:n,setSelectedQuote:r,updateQuotePartialState:a,error:s}=O(),{fetch:l,loading:p}=ma({refetchQuote:n}),c=i(h=>{r(h),a("refetchQuote",!1),e()},"onClickOnQuote"),u=`../${F.settings}`,f=`../${F.wallets}`;return da.createElement(ie,{header:{onWallet:()=>{t(f),a("refetchQuote",!0)},onBack:()=>{a("refetchQuote",!1)},title:GE.t("Routes"),suffix:da.createElement(Bo,{onClickRefresh:o||s?l:void 0,hidden:["notifications","history"],onClickSettings:()=>{t(u),a("refetchQuote",!0)}})}},da.createElement(pe,null,da.createElement(br,{fetch:l,loading:p,onClickOnQuote:c})))}i(Ph,"RoutesPage");import{i18n as zh}from"@lingui/core";import{Divider as Qh,getCategoriesCount as oI,SelectableCategoryList as nI}from"@rango-dev/ui";import Xt,{useState as Hh}from"react";import{useNavigate as rI}from"react-router-dom";import{i18n as Ap}from"@lingui/core";import{Divider as YE,Image as ZE,ListItemButton as JE,NotFound as RE,Typography as Uh}from"@rango-dev/ui";import mt,{useEffect as eI,useState as tI}from"react";var _h=i((t,e,o)=>t.filter(n=>Ur(n.type,o)).filter(n=>rt(n.name,e)||rt(n.displayName,e)),"filterBlockchains");import{ImageContainer as KE,styled as Dh}from"@rango-dev/ui";var $h=Dh("div",{display:"flex",flexDirection:"column",overflow:"hidden",height:"100%",justifyContent:"center"}),fa=Dh(il,{padding:0,margin:0,listStyle:"none",[`& ${KE}`]:{borderRadius:"$xm",overflow:"hidden"}});import{ListItem as jE,Skeleton as Fh}from"@rango-dev/ui";import ga from"react";var XE=20;function Oh(){return ga.createElement(fa,null,Array.from(Array(XE),t=>ga.createElement(jE,{key:t,hasDivider:!0,start:ga.createElement(Fh,{variant:"circular",width:35,height:35}),title:ga.createElement(Fh,{variant:"text",size:"large",width:90})})))}i(Oh,"LoadingBlockchainList");function Np(t){let{list:e,searchedFor:o,onChange:n,blockchainCategory:r,showTitle:a=!0}=t,[s,l]=tI(e),{fetchStatus:p}=C();eI(()=>{l([..._h(e,o,r)])},[e,o,r]);let c=i(()=>!s.length&&o?mt.createElement(RE,{title:Ap.t("No results found"),description:Ap.t("Try using different keywords")}):mt.createElement(fa,{as:"ul",key:`${r}-${o}`},s.map(u=>mt.createElement(JE,{key:`${u.name}-${u.chainId}`,className:"widget-blockchain-list-item-btn",hasDivider:!0,onClick:()=>n(u),start:mt.createElement(ZE,{src:u.logo,size:30}),title:mt.createElement(Uh,{variant:"title",size:"medium"},u.displayName),id:u.name}))),"renderList");return mt.createElement(mt.Fragment,null,a&&mt.createElement(mt.Fragment,null,mt.createElement(Uh,{variant:"label",size:"large"},Ap.t("Select Chain")),mt.createElement(YE,{size:4})),mt.createElement($h,null,p==="loading"&&mt.createElement(Oh,null),p==="success"&&c()))}i(Np,"BlockchainList");function ha(t){let{type:e}=t,o=qe(),[n,r]=Hh(""),[a,s]=Hh("ALL"),l=O.use.setToBlockchain(),p=O.use.setFromBlockchain(),{fetchStatus:c}=C(),u=rI(),f=C().blockchains({type:e}),h=oI(f),g=!t.hideCategory&&h!==1;return Xt.createElement(ie,{header:{title:zh.t("Select Chain")}},Xt.createElement(pe,{view:!0},g&&Xt.createElement(Xt.Fragment,null,Xt.createElement(nI,{setCategory:s,category:a,blockchains:f,isLoading:c==="loading"}),Xt.createElement(Qh,{size:24})),Xt.createElement(Et,{value:n,autoFocus:!0,placeholder:zh.t("Search Chain"),color:"light",variant:"contained",size:"large",setValue:()=>r(""),onChange:d=>r(d.target.value)}),Xt.createElement(Qh,{size:16}),Xt.createElement(Np,{list:f,showTitle:e!=="custom-token",searchedFor:n,blockchainCategory:a,onChange:d=>{e==="custom-token"?u(`..?blockchain=${d.name}`,{replace:!0}):(e==="source"?p(d):l(d),o())}})))}i(ha,"SelectBlockchainPage");import{i18n as Ca}from"@lingui/core";import{Divider as Yh,Spinner as CI}from"@rango-dev/ui";import mo,{useEffect as TI,useState as kI}from"react";import{useNavigate as vI}from"react-router-dom";import{i18n as Lp}from"@lingui/core";import{BlockchainsChip as ya,Divider as Kh,Image as jh,Skeleton as cI,Tooltip as uI,Typography as Mp}from"@rango-dev/ui";import be from"react";import{useEffect as sI}from"react";var qh=["ETH","COSMOS","OSMOSIS"];function Bp(t,e,o){let n=JSON.parse(JSON.stringify(t)),r=[];if(n.sort(iI),o?.limit&&t.length>o.limit){let a=o.limit,s=e;if(e.length<=o.limit){let l=o.limit-e.length;for(let p=0;p<=l;p++){let c=n[p];s=s.filter(u=>c.name!==u)}}n.sort(aI(s)),r=n.splice(a)}return{list:n,more:r}}i(Bp,"prepare");function iI(t,e){let o=qh,n=o.findIndex(l=>l===t.name),r=o.findIndex(l=>l===e.name),a=n>-1,s=r>-1;return a&&s?n>r?1:-1:a?-1:s?1:0}i(iI,"sortByMostUsedBlockchains");function aI(t){return i(function(o,n){let r=t.findIndex(p=>p===o.name),a=t.findIndex(p=>p===n.name),s=r>-1,l=a>-1;return s&&l?r>a?1:-1:t.includes(o.name)?-1:t.includes(n.name)?1:0},"sortByPreferred")}i(aI,"generateSortByPreferredBlockchainsFor");function Gh(t,e){return!!e.list.find(o=>o.name===t)}i(Gh,"isInVisibleList");function Wp(t,e){let{preferredBlockchains:o,addPreferredBlockchain:n}=C();sI(()=>{if(e?.selected){let a=Bp(t,o,e);Gh(e.selected,a)||n(e?.selected)}},[e?.selected]);let r=Bp(t,o,e);return{list:r.list,more:r.more,history:[]}}i(Wp,"usePrepareBlockchainList");import{styled as lI}from"@rango-dev/ui";var Vh=lI("div",{display:"grid",gap:"$10",gridTemplateColumns:"repeat(6, minmax(0, 1fr))"});var mI=6,dI=12;function Pp(t){let{blockchains:e,type:o,blockchain:n,onChange:r,onMoreClick:a}=t,{showCompactTokenSelector:s}=te(),l=Wp(e,{limit:s?4:10,selected:n?.name}),{fetchStatus:p}=C(),c=O.use.resetToBlockchain(),u=O.use.resetFromBlockchain(),f=l.more.length>0,h=l.more.length===1,g=!h&&f;return be.createElement(be.Fragment,null,!s&&be.createElement(be.Fragment,null,be.createElement(Kh,{size:12}),be.createElement(Mp,{variant:"label",size:"large"},Lp.t("Select Chain"))),be.createElement(Kh,{size:12}),be.createElement(Vh,null,p==="loading"&&Array.from(Array(s?mI:dI),(d,m)=>be.createElement(cI,{key:m,variant:"rounded",height:50})),p==="success"&&be.createElement(be.Fragment,null,be.createElement(ya,{selected:!n,onClick:()=>{o==="from"?u():c()}},be.createElement(Mp,{variant:"body",size:"xsmall",color:"secondary500"},Lp.t("All"))),l.list.map(d=>be.createElement(uI,{key:d.name,content:d.shortName,side:"bottom",sideOffset:2,container:N()},be.createElement(ya,{key:d.name,selected:!!n&&n.name===d.name,onClick:()=>r(d)},be.createElement(jh,{src:d.logo,size:30})))),h?be.createElement(ya,{key:l.more[0].name,selected:!!n&&n.name===l.more[0].name,onClick:()=>r(l.more[0])},be.createElement(jh,{src:l.more[0].logo,size:30})):null,g?be.createElement(ya,{onClick:a,key:"more-blockchains"},be.createElement(Mp,{variant:"body",size:"xsmall",color:"secondary500"},Lp._("More +{count}",{count:l.more.length}))):null)))}i(Pp,"BlockchainsSection");import{useCallback as gI,useRef as hI,useState as _p}from"react";function Dp(){let t=C().blockchains(),e=hI(null),{customTokens:o}=C(),[n,r]=_p(!1),[a,s]=_p([]),[l,p]=_p(null),c=i(async(h,g)=>{p(null),r(!0),s([]);try{let d=await at().searchCustomTokens({query:h,blockchain:g},{signal:e.current?.signal}),m=new Set(o().map(S=>Ut(S))),y=new Set(t.map(S=>S.name)),T=d.tokens.filter(S=>y.has(S.blockchain)&&!m.has(Ut(S)));s(T),r(!1)}catch(d){p(d instanceof Error?d.message:"something went wrong"),s([]),d?.name!=="CanceledError"&&r(!1)}},"fetch"),u=gI(Or((h,g)=>{e.current?.signal.aborted||c(h,g)},600),[t.length]);return{fetch:(h,g)=>{e.current=new AbortController,s([]),r(!0),u(h,g)},cancel:i(()=>{e.current?.abort()},"cancel"),loading:n,tokens:a,error:l}}i(Dp,"useSearchCustomTokens");function Sa(t,e,o){return o&&t.length===1&&t[0].address===e?!1:t.length<20&&e.trim().length>=3}i(Sa,"shouldSearchForCustomTokens");function Xh(t,e,o,n,r){let a=[...t];return Sa(t,o,r)&&(a=n?[...a,"skeleton","skeleton","skeleton"]:[...a,...e.map(s=>({...s,customToken:!0,warning:!0}))]),a}i(Xh,"prepareTokensList");function Ta(t){let{type:e}=t,o=vI(),n=qe(),{fromBlockchain:r,toBlockchain:a,setFromToken:s,setToToken:l,setFromBlockchain:p,setToBlockchain:c}=O(),{getBalanceFor:u}=C(),{fetch:f,loading:h,tokens:g,cancel:d}=Dp(),[m,y]=kI(""),T=e==="source"?r:a,S=T?.name??"",k=C().blockchains({type:e}),v=C().tokens({type:e,blockchain:S,searchFor:m,getBalanceFor:u}),b=Xh(v,g,m,h,T?.name),I=i(x=>{e==="source"?p(x):c(x)},"updateBlockchain"),A=i(x=>{e==="source"?s({token:x,meta:{blockchains:k}}):l({token:x,meta:{blockchains:k}})},"updateToken"),E={source:Ca.t("Source"),destination:Ca.t("Destination")};return TI(()=>(Sa(v,m,T?.name)&&f(m,T?.name??void 0),()=>{d()}),[v.length,m,T?.name]),mo.createElement(ie,{header:{title:Ca.t("Swap {type}",{type:E[e]})}},mo.createElement(pe,null,mo.createElement(Pp,{blockchains:k,type:e=="source"?"from":"to",blockchain:e==="source"?r:a,onMoreClick:()=>o(F.blockchains),onChange:x=>{I(x)}}),mo.createElement(Yh,{size:24}),mo.createElement(Et,{value:m,autoFocus:!0,placeholder:Ca.t("Search Token"),color:"light",variant:"contained",size:"large",setValue:()=>y(""),onChange:x=>y(x.target.value),suffix:Sa(v,m,T?.name)&&h?mo.createElement(CI,{size:12,color:"secondary"}):void 0}),mo.createElement(Yh,{size:16}),mo.createElement(Sr,{list:b,selectedBlockchain:S,searchedFor:m,type:e,onChange:x=>{A(x);let w=k.find(B=>x.blockchain===B.name);w&&I(w),n()}})))}i(Ta,"SelectSwapItemsPage");import{i18n as Up}from"@lingui/core";import{Alert as XI,Button as YI,styled as ZI}from"@rango-dev/ui";import Fo from"react";import{useInRouterContext as JI,useSearchParams as RI}from"react-router-dom";import{i18n as ny}from"@lingui/core";import{Alert as EI,Divider as Fp,InfoIcon as II,SlippageIcon as AI,TextField as NI,Tooltip as BI,Typography as ry}from"@rango-dev/ui";import $e from"react";import{Chip as wI,styled as En,TextField as xI}from"@rango-dev/ui";var Zh=En("div",{paddingTop:"$5",padding:"$10 $5"}),Jh=En("div",{display:"flex",flexWrap:"wrap",gap:"$10",[`& ${xI}`]:{flex:"1 1 0",maxWidth:"127px",minWidth:"85px"}}),Rh=En("div",{display:"flex",justifyContent:"start",alignItems:"center",paddingBottom:"$10"}),ka=En("div",{maxWidth:"280px",padding:"$10"}),ey=En(wI,{width:"61px",flexShrink:0}),ty=En("div",{borderWidth:1,borderStyle:"solid",borderRadius:"$xs",flex:1,variants:{status:{safe:{borderColor:"$secondary500"},error:{borderColor:"$error500"},warning:{borderColor:"$warning500"},empty:{borderWidth:0}}}});import{i18n as $p}from"@lingui/core";import{Typography as bI}from"@rango-dev/ui";import Nr from"react";function oy(){return Nr.createElement(ka,null,Nr.createElement(bI,{variant:"label",size:"medium",color:"neutral700"},$p.t("Your transaction will be reverted if the price changes unfavorably by more than this percentage."),Nr.createElement("br",null),Nr.createElement("br",null),Nr.createElement("b",null,$p.t("Warning")),":\xA0",$p.t("This setting is applied to each step (e.g. 1Inch, Thorchain, etc.), meaning only that specific step will be reverted, not the entire route.")))}i(oy,"SlippageTooltipContent");function Op(){let{slippage:t,setSlippage:e,customSlippage:o,setCustomSlippage:n}=C(),r=o!==null?Xo(o):null,a=i(p=>{let c=p.target.value,u=parseFloat(c);if(isNaN(u))return n(null);let f=u;u>Fn&&(f=Fn),n(f)},"onSlippageValueChange"),s=i(p=>{o!==null&&n(null),e(p)},"onClickSlippageChip"),l=i(p=>{let c=p.target,u=c.value;Ac(u)||(c.value=u.slice(0,-1))},"onInput");return $e.createElement(Zh,null,$e.createElement(Rh,null,$e.createElement(AI,{size:16,color:"gray"}),$e.createElement(Fp,{direction:"horizontal",size:4}),$e.createElement(ry,{variant:"title",size:"xmedium"},ny.t("Slippage tolerance per swap")),$e.createElement(Fp,{direction:"horizontal",size:4}),$e.createElement(BI,{container:N(),side:"top",sideOffset:4,content:$e.createElement(oy,null)},$e.createElement(II,{color:"gray"}))),$e.createElement(Jh,null,su.map((p,c)=>{let u=`slippage-${c}`;return $e.createElement(ey,{key:u,onClick:()=>s(p),selected:o===null&&p===t,label:`${p.toString()}%`})}),$e.createElement(ty,{status:r?.type||(o?"safe":"empty")},$e.createElement(NI,{type:"number",min:"0.01",max:"30",step:"0.01",onInput:l,fullWidth:!0,variant:"contained",value:o===null?"":o,color:"dark",onChange:a,suffix:o&&$e.createElement(ry,{variant:"body",size:"small"},"%"),placeholder:ny.t("Custom")}))),r&&$e.createElement($e.Fragment,null,$e.createElement(Fp,{size:10}),$e.createElement(EI,{variant:"alarm",type:r.type,title:r.message})))}i(Op,"Slippage");import{i18n as Ct}from"@lingui/core";import{AutoThemeIcon as iy,BridgesIcon as WI,ChevronRightIcon as va,DarkModeIcon as ay,Divider as Br,ExchangeIcon as LI,InfinityIcon as MI,InfoIcon as PI,LanguageIcon as _I,LightModeIcon as sy,List as DI,ListItem as $I,ListItemButton as FI,Skeleton as OI,styled as UI,Switch as zI,Tabs as QI,TargetIcon as HI,Tooltip as qI,Typography as nt}from"@rango-dev/ui";import D from"react";import{useNavigate as GI}from"react-router-dom";var VI=UI("div",{width:"202px",height:"$40"}),KI=[{id:"light",icon:D.createElement(sy,{color:"black",size:24}),tooltip:D.createElement(nt,{size:"xsmall",variant:"body"},Ct.t("Light"))},{id:"dark",icon:D.createElement(ay,{color:"black",size:24}),tooltip:D.createElement(nt,{size:"xsmall",variant:"body"},Ct.t("Dark"))},{id:"auto",icon:D.createElement(iy,{color:"black",size:24}),tooltip:D.createElement(nt,{size:"xsmall",variant:"body"},Ct.t("Auto"))}],jI=i(t=>{let e={color:"gray",size:16};switch(t){case"auto":return D.createElement(iy,{...e});case"dark":return D.createElement(ay,{...e});default:return D.createElement(sy,{...e})}},"getThemeIcon");function ly(){let t=GI(),{theme:e}=C().config,{setTheme:o,theme:n}=C(),{activeLanguage:r,languages:a}=uo(),s=a.find(L=>L.local===r)?.label,l=C().fetchStatus,p=C().swappers(),c=C().getDisabledLiquiditySources(),{config:{features:u}}=C(),f=C().customTokens(),h=Re("theme",u),g=Re("liquiditySource",u),d=Re("language",u),m=Re("customTokens",u),y=C().infiniteApprove,T=C().toggleInfiniteApprove,S=ti(p,c),k=S.filter(L=>["BRIDGE","AGGREGATOR","OFF_CHAIN"].includes(L.type)),v=k.length,b=k.filter(L=>L.selected).length,I=S.filter(L=>L.type==="DEX"),A=I.length,E=I.filter(L=>L.selected).length,x=i((L,ae)=>{switch(l){case"loading":return D.createElement(OI,{variant:"text",size:"medium",width:50});case"failed":return D.createElement(nt,{variant:"body",size:"medium",color:"$error500"},Ct.t("Loading failed"));default:return D.createElement(nt,{variant:"body",size:"medium"},`${L} / ${ae}`)}},"handleSwapperEndItem"),w={id:"widget-setting-bridge-item-btn",title:D.createElement(nt,{variant:"title",size:"xmedium"},Ct.t("Bridges")),end:D.createElement(D.Fragment,null,x(b,v),D.createElement(Br,{direction:"horizontal",size:8}),D.createElement(va,{color:"black"})),onClick:()=>t(F.bridges),start:D.createElement(WI,{color:"gray",size:16})},B={id:"widget-setting-exchange-item-btn",title:D.createElement(nt,{variant:"title",size:"xmedium"},Ct.t("Exchanges")),end:D.createElement(D.Fragment,null,x(E,A),D.createElement(Br,{direction:"horizontal",size:8}),D.createElement(va,{color:"black"})),start:D.createElement(LI,{color:"gray",size:16}),onClick:()=>t(F.exchanges)},P={id:"widget-setting-custom-tokens-item-btn",title:D.createElement(nt,{variant:"title",size:"xmedium"},Ct.t("Custom Tokens")),end:D.createElement(D.Fragment,null,D.createElement(nt,{variant:"body",size:"medium"},`${f.length}`),D.createElement(Br,{direction:"horizontal",size:8}),D.createElement(va,{color:"black"})),start:D.createElement(HI,{color:"gray",size:16}),onClick:()=>t(F.customTokens)},$={id:"widget-setting-language-item-btn",title:D.createElement(nt,{variant:"title",size:"xmedium"},Ct.t("Language")),start:D.createElement(_I,{color:"gray",size:16}),end:D.createElement(D.Fragment,null,D.createElement(nt,{variant:"body",size:"medium"},s),D.createElement(Br,{direction:"horizontal",size:8}),D.createElement(va,{color:"black"})),onClick:()=>t(F.languages)},H={id:"widget-setting-infinite-approval-item-btn",title:D.createElement(D.Fragment,null,D.createElement(nt,{variant:"title",size:"xmedium"},Ct.t("Infinite approval")),D.createElement(Br,{direction:"horizontal",size:4}),D.createElement(qI,{side:"top",sideOffset:4,container:N(),content:D.createElement(ka,null,D.createElement(nt,{variant:"label",size:"medium",color:"neutral700"},D.createElement("b",null,Ct.t("Warning")),":\xA0",Ct.t("Enabling the 'Infinite approval' mode grants unrestricted access to underlying smart contracts, allowing them to utilize the approved token amount without limitations.")))},D.createElement(PI,{color:"gray"}))),start:D.createElement(MI,{color:"gray",size:16}),end:D.createElement(zI,{checked:y}),onClick:T},R={id:"widget-setting-theme-item-btn",type:D.createElement($I,null),title:D.createElement(nt,{variant:"title",size:"xmedium"},Ct.t("Theme")),end:D.createElement(VI,null,D.createElement(QI,{container:N(),items:KI,value:n,onChange:L=>o(L.id),type:"primary",borderRadius:"small"})),start:jI(n)},K=g?[]:[w,B];return m||K.push(P),d||K.push($),K.push(H),!e?.singleTheme&&!h&&K.push(R),D.createElement(DI,{type:D.createElement(FI,{hasDivider:!0,id:"_",onClick:()=>console.log()}),items:K})}i(ly,"SettingsLists");var eA=ZI("div",{paddingLeft:"$8"});function py(){let{isInCampaignMode:t,updateCampaignMode:e}=C(),o=t(),[,n]=RI(),r=JI(),a=i(()=>{r&&o&&(n(s=>(s.delete("liquiditySources"),s),{replace:!0}),e("liquiditySources",void 0))},"onClick");return Fo.createElement(ie,{header:{title:Up.t("Settings")}},Fo.createElement(pe,null,o&&Fo.createElement(XI,{type:"info",variant:"alarm",title:Up.t("Currently, you're in campaign mode with restrictions on liquidity sources. Would you like to switch out of this mode and make use of all available liquidity sources?"),action:Fo.createElement(eA,null,Fo.createElement(YI,{id:"widget-setting-exit-campaign-mode-btn",type:"secondary",size:"small",onClick:a},Up.t("Reset")))}),Fo.createElement(Op,null),Fo.createElement(ly,null)))}i(py,"SettingsPage");import{i18n as qA}from"@lingui/core";import{cancelSwap as GA}from"@rango-dev/queue-manager-rango-preset";import{useManager as VA}from"@rango-dev/queue-manager-react";import{Alert as KA}from"@rango-dev/ui";import nc from"react";import{useParams as jA}from"react-router-dom";import{i18n as dt}from"@lingui/core";import{getCurrentNamespaceOfOrNull as bA,getCurrentStep as EA,getRelatedWalletOrNull as IA}from"@rango-dev/queue-manager-rango-preset";import{Button as Gy,CopyIcon as AA,Divider as NA,DoneIcon as BA,IconButton as WA,QuoteCost as LA,RangoExplorerIcon as MA,StepDetails as PA,Tooltip as Vy,Typography as Oo,useCopyToClipboard as _A}from"@rango-dev/ui";import{useWallets as DA}from"@rango-dev/wallets-react";import Ky from"bignumber.js";import{PendingSwapNetworkStatus as Na}from"rango-types";import Y,{useEffect as jy,useRef as $A,useState as Xy}from"react";import{useNavigate as FA}from"react-router-dom";import{i18n as fo}from"@lingui/core";var tA=[fo.t("Sunday"),fo.t("Monday"),fo.t("Tuesday"),fo.t("Wednesday"),fo.t("Thursday"),fo.t("Friday"),fo.t("Saturday")];function cy(t){let e=new Date(t),o=e.getDate(),n=e.toLocaleString("default",{month:"long"}),r=e.getFullYear();return`${e.getDay()===new Date().getDay()?fo.t("Today"):`${tA[e.getDay()]} ${o} ${n} ${r}`}, ${new Date(t).toLocaleTimeString()}`}i(cy,"timeSince");function uy(t){return t.finishTime?cy(parseInt(t.finishTime)):cy(parseInt(t.creationTime))}i(uy,"getSwapDate");import{PendingSwapNetworkStatus as ba}from"rango-types";import Ea from"react";import{i18n as wa}from"@lingui/core";import{Button as my,Divider as zp,MessageBox as oA}from"@rango-dev/ui";import go from"react";var dy=i(({onCancel:t,onClose:e})=>go.createElement(go.Fragment,null,go.createElement(zp,{size:20}),go.createElement(oA,{type:"error",title:wa.t("Cancel Swap"),description:wa.t("Are you sure you want to cancel this swap?")}),go.createElement(zp,{size:32}),go.createElement(my,{variant:"contained",id:"widget-swap-details-modal-cancel-swap-yes-btn",type:"primary",size:"large",onClick:t},wa.t("Yes, Cancel it")),go.createElement(zp,{size:12}),go.createElement(my,{id:"widget-swap-details-modal-cancel-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},wa.t("No, Continue"))),"CancelContent");import{i18n as xa}from"@lingui/core";import{Button as fy,Divider as Qp,MessageBox as nA,Typography as rA}from"@rango-dev/ui";import Yt from"react";var gy=i(({onDelete:t,onClose:e})=>Yt.createElement(Yt.Fragment,null,Yt.createElement(Qp,{size:20}),Yt.createElement(nA,{type:"error",title:xa.t("Delete Transaction"),description:xa.t("Are you sure you want to delete this swap?")}),Yt.createElement(Qp,{size:32}),Yt.createElement(fy,{id:"widget-swap-details-modal-delete-swap-yes-btn",variant:"contained",type:"primary",size:"large",onClick:t},xa.t("Yes, Delete it")),Yt.createElement(Qp,{size:12}),Yt.createElement(fy,{id:"widget-swap-details-modal-delete-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},Yt.createElement(rA,{variant:"title",size:"medium",color:"primary"},xa.t("No, Cancel")))),"DeleteContent");import{i18n as Hp}from"@lingui/core";import{PendingSwapNetworkStatus as qp}from"rango-types";var Gp={[qp.WaitingForNetworkChange]:{type:"loading",title:Hp.t("Change Network")},[qp.WaitingForConnectingWallet]:{type:"warning",title:Hp.t("Connect Wallet")},[qp.NetworkChanged]:{type:"success",title:Hp.t("Network Changed")}};import{warn as iA}from"@rango-dev/logging-core";import{getCurrentStep as aA,getRelatedWalletOrNull as sA}from"@rango-dev/queue-manager-rango-preset";import{MessageBox as lA,Wallet as pA}from"@rango-dev/ui";import{useWallets as cA}from"@rango-dev/wallets-react";import In,{useState as uA}from"react";import{styled as Vp}from"@rango-dev/ui";var hy=Vp("div",{display:"flex",justifyContent:"center"}),Gj=Vp("div",{maxWidth:280,"& ._typography":{wordWrap:"break-word",display:"block"}}),yy=Vp("img",{width:"100%"});var Sy=i(t=>{let{type:e,title:o,swap:n,message:r,showWalletButton:a,walletButtonDisabled:s}=t,[l,p]=uA(),{getWalletInfo:c,state:u}=cA(),f=aA(n),h=f?sA(n,f):null,g=f?.fromBlockchain,d=h?.walletType,m=d?Ln(u(d)):null,y=d?c(d):null,T=a&&!!d&&!!m&&!!y,{list:S}=Tt(),k=i(()=>{if(d){let v=S.find(b=>b.type===d);v?p(v):iA(new Error(`It seems requested wallet to be connected is not available in the list. requested wallet: ${v}`))}},"handleWalletItemClick");return In.createElement(In.Fragment,null,In.createElement(lA,{type:e,title:o,description:r}),T&&In.createElement(hy,null,In.createElement(pA,{container:N(),title:y.name,image:y.img,type:d,state:m,link:y.installLink,disabled:s,onClick:k})),In.createElement(bo,{wallet:l,onClose:()=>{p(void 0)},options:{defaultSelectedChains:g?[g]:void 0}}))},"WalletStateContent");function Kp(t){let{state:e,onClose:o,onDelete:n,onCancel:r,swap:a,message:s,walletButtonDisabled:l}=t,p=e===ba.WaitingForNetworkChange||e===ba.WaitingForConnectingWallet||e===ba.NetworkChanged;return Ea.createElement(J,{open:!!e,onClose:o,container:document.getElementById(Qe.SWAP_BOX_ID)||document.body},p&&Ea.createElement(Sy,{type:Gp[e].type,title:Gp[e].title,swap:a,message:s,walletButtonDisabled:l,showWalletButton:e!==ba.WaitingForNetworkChange}),e==="delete"&&Ea.createElement(gy,{onClose:o,onDelete:n}),e==="cancel"&&Ea.createElement(dy,{onClose:o,onCancel:r}))}i(Kp,"SwapDetailsModal");import{i18n as Wr}from"@lingui/core";import{Button as jp,Divider as Lr,MessageBox as ky,TokenAmount as mA,Typography as vy}from"@rango-dev/ui";import Ce from"react";import{Link as dA,useNavigate as fA}from"react-router-dom";var Cy="https://raw.githubusercontent.com/rango-exchange/assets/main/banners/widget/profile.jpg",Ty="/profile";function Xp(t){let{open:e,onClose:o,status:n,priceValue:r,usdValue:a,realUsdValue:s,realValue:l,token:p,chain:c,percentageChange:u,description:f,diagnosisUrl:h}=t,g=fA(),{showProfileBanner:d}=te();return Ce.createElement(J,{open:e,onClose:o,container:document.getElementById(Qe.SWAP_BOX_ID)||document.body},n==="success"?Ce.createElement(ky,{type:"success",title:Wr.t("Swap Successful")},Ce.createElement(mA,{direction:"vertical",tooltipContainer:N(),type:"output",centerAlign:!0,price:{value:r,usdValue:a,realUsdValue:s,realValue:l},token:p,chain:c,percentageChange:u}),Ce.createElement(Lr,{size:12}),Ce.createElement(vy,{variant:"body",size:"medium",color:"neutral700",align:"center"},f)):Ce.createElement(ky,{type:"error",title:Wr.t("Transaction Failed"),description:f}),Ce.createElement(Lr,{size:30}),n==="success"&&Ce.createElement(Ce.Fragment,null,d&&Ce.createElement(Ce.Fragment,null,Ce.createElement(dA,{to:Ty},Ce.createElement(yy,{src:Cy,alt:"Profile Banner"})),Ce.createElement(Lr,{size:30})),Ce.createElement(jp,{id:"widget-swap-details-modal-done-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{g("../../")}},Wr.t("Done"))),Ce.createElement(Lr,{size:12}),h&&Ce.createElement(Ce.Fragment,null,Ce.createElement(jp,{variant:"contained",id:"widget-swap-detail-modal-diagnosis-btn",type:"primary",size:"large",onClick:()=>window.open(h,"_blank")},Wr.t("Diagnosis")),Ce.createElement(Lr,{size:12})),Ce.createElement(jp,{id:"widget-swap-details-modal-see-details-btn",variant:"outlined",type:"primary",size:"large",onClick:o},Ce.createElement(vy,{variant:"title",size:"medium",color:"primary"},Wr.t("See Details"))))}i(Xp,"SwapDetailsCompleteModal");import xA from"react";import{i18n as TA}from"@lingui/core";import{Alert as zy,IconButton as kA,LinkIcon as vA}from"@rango-dev/ui";import ho,{Fragment as wA}from"react";import{Alert as hA,ChevronDownIcon as yA,IconButton as SA}from"@rango-dev/ui";import Nn,{useState as CA}from"react";import{css as Mr,darkTheme as wy,styled as Dt,Typography as gA}from"@rango-dev/ui";var xy=Dt(pe,{overflowY:"auto","& ._icon-button":{"&:hover":{"& svg":{color:"$secondary550",[`.${wy} &`]:{color:"$secondary500"}}}}}),by=Dt("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden"}),Ey=Dt("div",{position:"sticky",top:0,zIndex:10,backgroundColor:"$background"}),Iy=Dt("div",{padding:"$0 $20 $20 $20"}),M3=Dt("div",{display:"flex",flexDirection:"column",gap:"$10"}),Ay=Dt("div",{height:"450px",display:"flex",alignItems:"center",justifyContent:"center"}),P3=Dt("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1}),An=Mr({display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",padding:"$10 $20",borderBottom:"1px solid",$$color:"$colors$neutral300",[`.${wy} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color",color:"$neutral500"}),Ny=Mr({padding:"$5 0"}),Ia=Mr({display:"flex",justifyContent:"center",alignItems:"center",height:"$24"}),By=Mr({display:"flex",width:"100%",padding:"$15 $20 $20",flexDirection:"column",alignItems:"start"}),Wy=Mr({width:"100%",padding:"0 $20 $10"}),Ly=Dt("a",{fontSize:"$16",fontWeight:"$400",color:"$neutral700",display:"flex",alignItems:"center",justifyContent:"center"}),My=Dt("div",{display:"flex",flexDirection:"column",gap:"$5"}),Aa=Dt(gA,{wordBreak:"break-word"});import{styled as Yp}from"@rango-dev/ui";var Py=Yp("div",{display:"flex",flexDirection:"column",gap:"$10"}),_y=Yp("div",{transition:"transform 0.3s ease-in-out",variants:{rotated:{true:{transform:"rotate(180deg)"}}}}),Dy=Yp("div",{transition:"max-height 0.3s ease-in-out",maxHeight:"0px",overflow:"hidden",variants:{open:{true:{maxHeight:"200px"}}}});function $y(t){let{message:e}=t,[o,n]=CA(!1);return Nn.createElement(hA,{type:"error",title:e.shortMessage,containerStyles:{"& .footer":{paddingTop:"$0"}},action:e.detailedMessage.content&&Nn.createElement(SA,{onClick:()=>n(r=>!r),variant:"ghost",size:"xsmall"},Nn.createElement(_y,{rotated:o},Nn.createElement(yA,{size:12,color:"gray"}))),footer:Nn.createElement(Dy,{open:o},Nn.createElement(Aa,{variant:"body",size:"xsmall",color:"neutral700"},e.detailedMessage.content))})}i($y,"FailedAlert");import{i18n as Fy}from"@lingui/core";import{Alert as Zp,Button as Oy}from"@rango-dev/ui";import{PendingSwapNetworkStatus as Jp}from"rango-types";import Pr from"react";function Uy(t){let{switchNetwork:e,setNetworkModal:o,message:n,showNetworkModal:r}=t;return e?Pr.createElement(Zp,{type:"warning",title:n.shortMessage,action:Pr.createElement(Oy,{id:"widget-swap-details-warning-alert-change-network-btn",size:"xxsmall",type:"warning",onClick:()=>{o(Jp.WaitingForNetworkChange),e().catch(a=>{console.log(a)})}},Fy.t("Change"))}):r===Jp.WaitingForConnectingWallet?Pr.createElement(Zp,{type:"warning",title:n.shortMessage,action:Pr.createElement(Oy,{id:"widget-swap-details-warning-alert-connect-wallet-btn",size:"xxsmall",type:"warning",onClick:()=>{o(Jp.WaitingForConnectingWallet)}},Fy.t("Connect"))}):Pr.createElement(Zp,{type:"warning",title:n.shortMessage})}i(Uy,"WarningAlert");function Rp(t){let{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r,step:a,hasAlreadyProceededToSign:s}=t,l=Yn(a),p=a.status==="waitingForApproval"&&!l,c=a.status==="running"&&!l,u=c&&!s||p&&!a.explorerUrl?.length;return ho.createElement(Py,null,a.explorerUrl?.map((f,h,g)=>{let d=h+f.url,m=h===g.length-1,y=(m&&c||p)&&!u,T=m&&a.status==="failed";return ho.createElement(wA,{key:d},ho.createElement(zy,{type:m&&(y&&"loading"||T&&"error")||"success",title:f.description?`${f.description} Tx`:TA.t("View transaction"),action:f.url&&ho.createElement(kA,{id:"widget-swap-details-tx-link-icon-btn",variant:"ghost",size:"xsmall",onClick:()=>window.open(f.url,"_blank")},ho.createElement(vA,{size:12}))}))}),u&&ho.createElement(zy,{type:"loading",title:r.shortMessage}),a.status!=="failed"&&l&&ho.createElement(Uy,{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r}),a.status==="failed"&&ho.createElement($y,{message:r}))}i(Rp,"SwapDetailsAlerts");var Qy=2e3;var Hy=i(({swap:t,blockchains:e,swappers:o,...n})=>{let r=t.hasAlreadyProceededToSign!==!1;return t.steps.map((a,s)=>{let l=s===0?t.inputAmount:t.steps[s-1].outputAmount||t.steps[s-1].expectedOutputAmountHumanReadable;return{from:{token:{displayName:a.fromSymbol,image:a.fromLogo??""},chain:{displayName:ft(a.fromBlockchain,e)??"",image:a.fromBlockchainLogo??""},price:{value:_(l,6,6),realValue:l??""}},to:{token:{displayName:a.toSymbol,image:a.toLogo},chain:{displayName:ft(a.toBlockchain,e)??"",image:a.toBlockchainLogo??""},price:{value:_(a.outputAmount||a.expectedOutputAmountHumanReadable,6,6),realValue:a.outputAmount||a.expectedOutputAmountHumanReadable||""}},swapper:{displayName:Dn(a.swapperId,o)??"",image:a.swapperLogo??"",type:a.swapperType},internalSwaps:a.internalSwaps?a.internalSwaps.map(p=>({from:{chain:{displayName:ft(p.fromBlockchain,e)??"",image:p.fromBlockchainLogo??""}},to:{chain:{displayName:ft(p.toBlockchain,e)??"",image:p.toBlockchainLogo??""}},swapper:{displayName:Dn(p.swapperId,o)??"",image:p.swapperLogo??"",type:p.swapperType}})):[],alerts:xA.createElement(Rp,{step:a,hasAlreadyProceededToSign:r,...n})}})},"getSteps");function qy(t){if(Yn(t)&&t.status!=="failed"&&t.status!=="success")return"warning";switch(t.status){case"created":return"default";case"approved":case"waitingForApproval":case"running":return"in-progress";case"failed":return"error";case"success":return"completed"}}i(qy,"getStepState");function ec(t){let{swap:e,requestId:o,onDelete:n,onCancel:r}=t,{canSwitchNetworkTo:a,connect:s,getWalletInfo:l}=DA(),p=C().blockchains(),c=C().swappers(),{findToken:u}=C(),f=O.use.retry(),h=te.use.isActiveTab(),g=FA(),[d,m]=_A(Qy),y=$A(null),[T,S]=Xy(null),[k,v]=Xy(null),b=i(()=>{r(),S(null)},"onCancel"),I=Ae.use.getNotifications(),A=Ae.use.removeNotification(),E=I(),x=EA(e),w=x?.networkStatus;jy(()=>{E.find(ze=>ze.requestId===e.requestId)&&(e.status==="success"||e.status==="failed"?(v(e.status),A(e.requestId)):k&&v(null))},[e.status,e.requestId]),jy(()=>{L?S(Na.WaitingForNetworkChange):w===Na.WaitingForConnectingWallet||w===Na.NetworkChanged?S(w):S(null)},[w]);let B=Im(e),P=x?bA(e,x):null,$=x?IA(e,x):null,H=uy(e),R=Am(e),K=i(xe=>!!l(xe)?.mobileWallet,"isMobileWallet"),L=w===Na.WaitingForNetworkChange&&!!P&&!!$?.walletType&&(K($.walletType)||a($.walletType,P.network)),ae=L?s.bind(null,$.walletType,[{namespace:P.namespace,network:P.network}]):void 0,re=Em(e,x,l),Q=Hy({swap:e,switchNetwork:ae,showNetworkModal:w,setNetworkModal:S,message:re,blockchains:p,swappers:c}),Z=Q.length,[le,ue]=[e.steps[0],e.steps[Z-1]],se=ue.outputAmount||ue.expectedOutputAmountHumanReadable,Ze=e.steps.reduce((xe,ze)=>xe+parseFloat(ze.feeInUsd||""),0),q=e.steps.find(xe=>xe.diagnosisUrl)?.diagnosisUrl,W=_(parseFloat(se||"0")*(ue.toUsdPrice||0),4,4),G=_(parseFloat(e.inputAmount)*(le.fromUsdPrice||0),4,4),j=se?new Ky(se).multipliedBy(ue.toUsdPrice||0).toString():"",ee=new Ky(e.inputAmount).multipliedBy(le.fromUsdPrice||0).toString(),fe=zt(G,W),Ue=re.detailedMessage.content||re.shortMessage,Je=e.status==="success"?dt.t({id:"You have received {amount} {token} in {conciseAddress} wallet on {chain} chain.",values:{amount:_(se,6,6),token:Q[Z-1].to.token.displayName,conciseAddress:Qo(e.wallets[Q[Z-1].to.chain.displayName]?.address||""),chain:Q[Z-1].to.chain.displayName}}):Y.createElement(My,null,Y.createElement(Oo,{variant:"body",size:"medium",color:"neutral700",align:"center"},Ue?"":dt.t("Transaction was not sent."),B?`${dt.t({id:"{amount} {symbol} on {blockchain} remains in your wallet.",values:{amount:B.outputAmount,symbol:B.symbol,blockchain:B.blockchain}})}`:""),Ue&&Y.createElement(Aa,{align:"center",variant:"body",size:"medium",color:"neutral700"},Y.createElement("b",null,"Reason:")," ",Ue));return Y.createElement(ie,{header:{title:dt.t("Swap Details"),onCancel:e.status==="running"?()=>S("cancel"):void 0,suffix:e.status!=="running"&&Y.createElement(oo,null,Y.createElement(Gy,{id:"widget-swap-details-delete-btn",variant:"ghost",type:"error",size:"xsmall",onClick:()=>S("delete")},Y.createElement(Oo,{size:"medium",variant:"label",color:"error"},dt.t("Delete"))))},footer:R&&!k&&Y.createElement(Gy,{fullWidth:!0,id:"widget-swap-details-try-again-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{let xe=gi(e,p,u);f(xe),setTimeout(()=>{g("../../")},0)}},dt.t("Try again"))},Y.createElement(xy,{compact:!0,ref:y},Y.createElement(Ey,{className:An()},Y.createElement(Oo,{variant:"label",size:"large",color:"neutral700"},`${dt.t("Request ID")}`),Y.createElement("div",{className:Ia()},Y.createElement(Oo,{variant:"label",size:"small",color:"neutral700"},o),Y.createElement(Vy,{container:N(),content:d?dt.t("Copied To Clipboard"):dt.t("Copy Request ID"),open:d||void 0,side:"bottom",alignOffset:-16,align:"end"},Y.createElement(WA,{id:"widget-swap-details-done-copy-icon-btn",variant:"ghost",onClick:m.bind(null,o||"")},d?Y.createElement(BA,{size:16,color:"secondary"}):Y.createElement(AA,{size:16,color:"gray"}))),Y.createElement(Ly,{target:"_blank",href:`${mc}/swap/${o}`},Y.createElement(Vy,{container:N(),content:dt.t("View on Rango Explorer"),side:"bottom"},Y.createElement(MA,{size:20}))))),Y.createElement("div",{className:An()},Y.createElement(Oo,{variant:"label",size:"large",color:"neutral700"},e.finishTime?dt.t("Finished at"):dt.t("Created at")),Y.createElement(Oo,{variant:"label",size:"small",color:"neutral700"},H)),Y.createElement("div",{className:By()},Y.createElement(LA,{fee:_(String(Ze),2,2),time:Bn(Qr(e.steps)),steps:Z}),Y.createElement(lr,{from:{price:{value:_(e.inputAmount,6,6),usdValue:G,realUsdValue:ee,realValue:e.inputAmount},token:{displayName:Q[0].from.token.displayName,image:Q[0].from.token.image},chain:{image:Q[0].from.chain.image,displayName:Q[0].from.chain.displayName}},to:{price:{value:_(se,6,6),usdValue:W,realUsdValue:j,realValue:se||""},token:{displayName:Q[Z-1].to.token.displayName,image:Q[Z-1].to.token.image},chain:{image:Q[Z-1].to.chain.image,displayName:Q[Z-1].to.chain.displayName}},percentageChange:_(fe,2,2),warningLevel:Qt(fe??0)})),Y.createElement("div",{className:Wy()},Y.createElement(Oo,{variant:"title",size:"small"},dt.t("Swaps steps"))),Y.createElement(NA,{size:8}),Y.createElement(Iy,null,Q.map((xe,ze)=>{let Zt=ze,yo=qy(e.steps[ze]),wS=yo==="error"||yo==="in-progress"||yo==="warning"||yo==="completed"&&ze===Q.length-1;return Y.createElement(PA,{key:Zt,step:xe,type:"swap-progress",ref:y,state:yo,hasSeparator:ze!==0,tabIndex:Zt,isFocused:wS,tooltipContainer:N()})}))),Y.createElement(Kp,{state:T,onClose:()=>S(null),onCancel:b,onDelete:n,message:re.detailedMessage.content,swap:e,walletButtonDisabled:!h}),Y.createElement(Xp,{open:!!k,diagnosisUrl:q,onClose:()=>v(null),status:e.status==="success"?"success":"failed",priceValue:_(se,6,6),usdValue:W,realUsdValue:j,realValue:se||"",percentageChange:_(fe,2,2),token:{displayName:Q[Z-1].to.token.displayName,image:Q[Z-1].to.token.image},chain:{image:Q[Z-1].to.chain.image},description:Je}))}i(ec,"SwapDetails");import{i18n as Wa}from"@lingui/core";import{Divider as Jy,NotFound as HA,Skeleton as Dr,Typography as La}from"@rango-dev/ui";import Ie from"react";import{i18n as OA}from"@lingui/core";import{Divider as UA,Skeleton as zA,Typography as QA}from"@rango-dev/ui";import Ee from"react";import{css as At,styled as tc}from"@rango-dev/ui";var Yy=tc("div",{width:"100%",height:"100%",padding:"$10 $20"}),_r=tc("div",{backgroundColor:"$neutral100",borderRadius:"$xm",padding:"$10 $15"}),Ba=tc("div",{width:"0px",height:"$20",borderLeft:"1px dashed $neutral700",marginLeft:"25px"}),VX=At({display:"flex",justifyContent:"space-between",alignItems:"center"}),KX=At({display:"flex",justifyContent:"space-between",alignItems:"center"}),jX=At({paddingTop:"$15",display:"flex"}),XX=At({padding:"$15 $0"}),YX=At({width:"0px",height:"$16",borderLeft:"1px solid $neutral400",marginLeft:"13px"}),ZX=At({paddingBottom:"$10"}),JX=At({display:"flex",justifyContent:"start",alignItems:"center"}),RX=At({paddingTop:"$5",display:"flex",alignItems:"center"}),eY=At({display:"flex",alignItems:"center"}),tY=At({padding:"$4 $6",display:"flex",justifyContent:"center",alignItems:"center"}),Zy=At({display:"flex",paddingTop:"$10",paddingBottom:"$5"});function oc(){return Ee.createElement(Yy,null,Ee.createElement(cr,{type:"swap-preview"}),Ee.createElement("div",{className:"swaps-steps"},Ee.createElement(QA,{variant:"title",size:"small"},OA.t("Swaps steps"))),Ee.createElement(Ee.Fragment,null,Ee.createElement(_r,null,Ee.createElement(Pt,{separator:!1}),Ee.createElement("div",{className:Zy()},Ee.createElement(UA,{direction:"horizontal",size:20}),Ee.createElement(zA,{height:22,variant:"rectangular"}))),Ee.createElement(Ba,null),Ee.createElement(_r,null,Ee.createElement(Pt,{separator:!1})),Ee.createElement(Ba,null),Ee.createElement(_r,null,Ee.createElement(Pt,{separator:!1})),Ee.createElement(Ba,null),Ee.createElement(_r,null,Ee.createElement(Pt,{separator:!1}))))}i(oc,"LoadingSwapDetails");function Ry(t){let{requestId:e,showSkeleton:o}=t;return Ie.createElement(ie,{header:{title:Wa.t("Swap Details"),suffix:Ie.createElement(oo,null)}},o&&Ie.createElement(by,null,Ie.createElement("div",{className:An()},Ie.createElement(La,{variant:"label",size:"large",color:"neutral700"},`${Wa.t("Request ID")}`),Ie.createElement("div",{className:Ia()},Ie.createElement(La,{variant:"label",size:"small",color:"neutral700"},Ie.createElement(Dr,{width:60,height:10,variant:"rounded"})),Ie.createElement(Jy,{direction:"horizontal",size:4}),Ie.createElement(Dr,{width:16,height:16,variant:"rectangular"}),Ie.createElement(Jy,{direction:"horizontal",size:4}),Ie.createElement(Dr,{width:16,height:16,variant:"rectangular"}))),Ie.createElement("div",{className:An()},Ie.createElement(La,{className:Ny(),variant:"label",size:"large",color:"neutral700"},Ie.createElement(Dr,{width:60,height:10,variant:"rounded"})),Ie.createElement(La,{variant:"label",size:"small",color:"neutral700"},Ie.createElement(Dr,{width:60,height:10,variant:"rounded"}))),Ie.createElement(oc,null)),!o&&Ie.createElement(Ay,null,Ie.createElement(HA,{title:Wa.t("Not found"),description:Wa.t({id:"Swap with request ID = {requestId} not found.",values:{requestId:e}})})))}i(Ry,"SwapDetailsPlaceholder");function eS(){let{manager:t,state:e}=VA(),o=!e.loadedFromPersistor,n=St(t),{requestId:r}=jA(),a=qe(),{fetchStatus:s}=C();if(!r)return nc.createElement(KA,{containerStyles:{margin:"20px"},type:"error",title:qA.t("The request ID is necessary to display the swap details.")});let l=o||s==="loading",p=r?n.find(({swap:h})=>h.requestId===r):void 0,c=i(()=>{if(p?.id){let h=t?.get(p.id);h&&GA(h)}},"onCancel"),u=i(async()=>{if(p?.id)try{t?.deleteQueue(p.id),a()}catch(h){console.log(h)}},"onDelete"),f=p?.swap;return!f||l?nc.createElement(Ry,{requestId:r,showSkeleton:l}):nc.createElement(ec,{swap:f,requestId:r,onCancel:c,onDelete:u})}i(eS,"SwapDetailsPage");import{i18n as tS}from"@lingui/core";import{Divider as XA,getCategoriesCount as YA,SelectableCategoryList as ZA,styled as nS,Typography as JA,Wallet as RA,WalletState as e0}from"@rango-dev/ui";import{useWallets as t0}from"@rango-dev/wallets-react";import $t,{useState as oS}from"react";var o0=nS("div",{display:"flex",justifyContent:"center",alignItems:"center",columnGap:"$5",rowGap:"$10",flexWrap:"wrap",paddingTop:"$5"}),n0=nS(pe,{textAlign:"center"});function rS(){let{fetchStatus:t}=C(),[e,o]=oS("ALL"),n=C().blockchains(),{config:r}=C(),{state:a}=t0(),[s,l]=oS(),p=te.use.isActiveTab(),{list:c}=Tt(),u=Uc(c,n),h=YA(u)!==1,g=zc(c,e),d=i(m=>{kc(c,r.multiWallets)||l(m)},"handleWalletItemClick");return $t.createElement(ie,{header:{title:tS.t("Connect Wallets")}},$t.createElement(n0,null,h&&$t.createElement($t.Fragment,null,$t.createElement(ZA,{setCategory:o,category:e,blockchains:u,isLoading:t==="loading"}),$t.createElement(XA,{size:24})),$t.createElement(JA,{variant:"title",size:"xmedium",align:"center"},tS.t("Choose a wallet to connect.")),$t.createElement(o0,null,g.map((m,y)=>{let S=a(m.type).namespaces,k=`wallet-${y}-${m.type}`,v=_n(m,S);return $t.createElement(RA,{key:k,...m,state:v?e0.PARTIALLY_CONNECTED:m.state,container:N(),onClick:()=>d(m),isLoading:t==="loading",disabled:!p})}),$t.createElement(bo,{wallet:s,onClose:()=>{l(void 0)}}))))}i(rS,"WalletsPage");function iS(){return Lm(),Bs(),r0([{path:F.home,element:Oe.createElement(Nh,null)},{path:F.routes,element:Oe.createElement(Ph,null)},{path:F.fromSwap,children:[{index:!0,element:Oe.createElement(Ta,{type:"source"})},{path:F.blockchains,element:Oe.createElement(ha,{type:"source"})}]},{path:F.toSwap,children:[{index:!0,element:Oe.createElement(Ta,{type:"destination"})},{path:F.blockchains,element:Oe.createElement(ha,{type:"destination"})}]},{path:F.settings,children:[{index:!0,element:Oe.createElement(py,null)},{path:F.languages,element:Oe.createElement(Wh,null)},{path:F.exchanges,element:Oe.createElement(Ip,{sourceType:"Exchanges"})},{path:F.bridges,element:Oe.createElement(Ip,{sourceType:"Bridges"})},{path:F.customTokens,children:[{index:!0,element:Oe.createElement(Wg,null)},{path:F.addCustomTokens,children:[{index:!0,element:Oe.createElement(Ed,null)},{path:F.blockchains,element:Oe.createElement(ha,{hideCategory:!0,type:"custom-token"})}]}]}]},{path:F.swaps,children:[{index:!0,element:Oe.createElement(Zg,null)},{path:F.swapDetails,element:Oe.createElement(eS,null)}]},{path:F.wallets,element:Oe.createElement(rS,null)},{path:F.confirmSwap,element:Oe.createElement(yg,null)}])}i(iS,"AppRoutes");import{useQueueManager as d0}from"@rango-dev/queue-manager-rango-preset";import{isEvmBlockchain as f0}from"rango-sdk";import{useContext as g0,useEffect as mS,useState as dS}from"react";import{globalCss as i0}from"@rango-dev/ui";var aS=i(()=>i0({"@import":"url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap')"})(),"globalFont");function sS(){let{setWatermark:t,setShowProfileBanner:e}=te();return{fetchApiConfig:i(async()=>{let n=await fetch(`${Ot("BASE_URL")}/meta/dapp/config?apiKey=${Ot("API_KEY")}`);if(!n.ok)throw new Error(`Request failed with status: ${n.status} `);let r=await n.json();t(r.config.watermark),e(r.config.banners.profile)},"fetchApiConfig")}}i(sS,"useFetchApiConfig");import{useWallets as a0}from"@rango-dev/wallets-react";import{useEffect as s0,useRef as l0}from"react";function lS(){let{connect:t,state:e}=a0(),o=l0({}),{fetchStatus:n}=C(),r=new URLSearchParams(location.search).get("autoConnect")||"",a=e(r);s0(()=>{n==="success"&&r&&a.installed&&!a.connecting&&!a.connected&&!o.current[r]&&(o.current[r]=!0,t(r))},[a,n])}i(lS,"useForceAutoConnect");import{isApprovalTX as p0,RouteEventType as pS,StepEventType as cS,StepExecutionEventStatus as c0,WidgetEvents as Ma}from"@rango-dev/queue-manager-rango-preset";import{useEffect as uS}from"react";function rc(){let t=Ae.use.setNotification(),{connectedWallets:e,fetchBalances:o,customTokens:n}=C();uS(()=>{let r=i(a=>{let{event:s,step:l,route:p}=a;if(s.type===cS.TX_EXECUTION&&s.status===c0.TX_SENT&&!p0(l)||s.type===cS.SUCCEEDED){let u=[],f=p.wallets[l?.fromBlockchain];if(f){let h=e.find(g=>g.address?.toLocaleLowerCase()===f.address?.toLocaleLowerCase()&&g.walletType===f.walletType&&g.chain===l?.fromBlockchain);h&&u.push(h)}if(l?.fromBlockchain!==l?.toBlockchain){let h=p.wallets[l?.toBlockchain];if(h){let g=e.find(d=>d.address?.toLocaleLowerCase()===h.address?.toLocaleLowerCase()&&d.walletType===h.walletType&&d.chain===l?.toBlockchain);g&&u.push(g)}}if(u.length>0){let h=n(),d=[{blockchain:l.fromBlockchain,address:l.fromSymbolAddress,symbol:l.fromSymbol},{blockchain:l.toBlockchain,address:l.toSymbolAddress,symbol:l.toSymbol}].filter(m=>h.some(y=>y.blockchain===m.blockchain&&y.address?.toLocaleLowerCase()===m.address?.toLocaleLowerCase()&&y.symbol?.toLocaleLowerCase()===m.symbol?.toLocaleLowerCase()));o(u,{selectedCustomTokens:d,shouldFetchCustomTokens:d.length>0})}}t(s,p)},"handleStepEvent");return Te.on(Ma.StepEvent,r),()=>Te.off(Ma.StepEvent,r)},[Te,e]),uS(()=>{let r=i(a=>{let{event:s,route:l}=a;(s.type===pS.FAILED||s.type===pS.SUCCEEDED)&&t(s,l)},"handleRouteEvent");return Te.on(Ma.RouteEvent,r),()=>Te.off(Ma.RouteEvent,r)},[Te])}i(rc,"useSubscribeToWidgetEvents");import{useManager as u0}from"@rango-dev/queue-manager-react";import{useEffect as m0}from"react";function ic(){let{isSynced:t,syncNotifications:e}=Ae(),{manager:o,state:n}=u0();m0(()=>{Ae.persist.hasHydrated()&&n.loadedFromPersistor&&!t&&e(St(o))},[Ae.persist.hasHydrated(),n.loadedFromPersistor,t])}i(ic,"useSyncNotifications");function ac(){lS(),aS(),rc(),ic();let t=C().blockchains(),{canSwitchNetworkTo:e}=Fi(),[o,n]=dS(null),[r,a]=dS(),s=g0(mi),l=t.filter(f0),{fetchApiConfig:p}=sS();mS(()=>()=>Wm(),[]),d0({lastConnectedWallet:o,clearDisconnectedWallet:()=>{a(void 0)},disconnectedWallet:r,evmChains:l,canSwitchNetworkTo:e}),mS(()=>(wo.init(),Ae.persist.hasHydrated()||Ae.persist.rehydrate(),s.onConnectWallet(c=>{n(u=>{if(!u||u.walletType!==c.walletType)return c;let f={...u};return c.network&&(f.network=c.network),c.accounts&&(f.accounts=c.accounts),f})}),s.onDisconnectWallet(c=>{a(c),n(u=>c===u?.walletType?null:u)}),p().catch(console.log),wo.destroy),[])}i(ac,"useBootstrap");import{styled as h0}from"@rango-dev/ui";var fS=h0("div",{fontFamily:"$widget",boxSizing:"border-box",textAlign:"left","& *, *::before, *::after":{boxSizing:"inherit"},"& *:focus-visible":{outlineColor:"$info500",transition:"none"},"& ul, ol, li":{listStyleType:"none"}});function Pa(){ac();let{config:t}=C(),{activeTheme:e}=to(t?.theme||{}),{activeLanguage:o}=uo();return sc.createElement(y0,{language:o},sc.createElement(fS,{id:"swap-container",className:e()},sc.createElement(iS,null)))}i(Pa,"Main");import{setSolanaSignerConfig as $0}from"@rango-dev/signer-solana";import pc,{useEffect as TS,useMemo as F0}from"react";import{useState as S0}from"react";var C0=i(()=>{let[t,e]=S0(null),o=i(a=>{let s=document.createElement("link");return s.href=a,s.rel="stylesheet",document.head.appendChild(s),s},"loadFont"),n=i(()=>{t&&(document.head.removeChild(t),e(null))},"unloadFont");return{handleLoadCustomFont:i(a=>{n();let s=Tc(a);if(s){let l=o(s);e(l)}},"handleLoadCustomFont")}},"useFontLoader"),gS=C0;import{checkWaitingForNetworkChange as T0,makeQueueDefinition as k0}from"@rango-dev/queue-manager-rango-preset";import{Provider as v0}from"@rango-dev/queue-manager-react";import{useWallets as w0}from"@rango-dev/wallets-react";import{convertEvmBlockchainMetaToEvmChainInfo as x0}from"@rango-dev/wallets-shared";import{isEvmBlockchain as b0}from"rango-types";import E0,{useMemo as I0}from"react";function A0(t){let{providers:e,getSigners:o,state:n,connect:r,canSwitchNetworkTo:a,getWalletInfo:s}=w0(),l=I0(()=>k0({API_KEY:t.apiKey||Ot("API_KEY"),BASE_URL:Ot("BASE_URL"),emitter:{emit:Te.emit}}),[t.apiKey]),{blockchains:p,connectedWallets:c}=C(),u=p(),f={blockchains:c.map(v=>({accounts:[v],name:v.chain}))},h=i(async(v,b)=>a(v,b.network)?await r(v,[b]):void 0,"switchNetwork"),g=i(v=>!!s(v).mobileWallet,"isMobileWallet"),d=u.filter(v=>v.enabled).reduce((v,b)=>(v[b.name]=b,v),{}),m=u.filter(b0),y=i(v=>{let{supportedChains:b}=s(v);return Mn(b)},"getSupportedChainNames"),T=e(),S={meta:{blockchains:d,evmBasedChains:m,evmNetworkChainInfo:x0(m),getSupportedChainNames:y},getSigners:o,wallets:f,providers:T,switchNetwork:h,canSwitchNetworkTo:a,state:n,isMobileWallet:g},k=te.use.isActiveTab();return E0.createElement(v0,{queuesDefs:[l],context:S,onPersistedDataLoaded:v=>{T0(v)},isPaused:!k},t.children)}i(A0,"QueueManager");var hS=A0;import{useManager as M0}from"@rango-dev/queue-manager-react";import P0,{createContext as _0,useContext as D0}from"react";function yS(){let{findToken:t}=C(),e=C().blockchains(),o=C().tokens(),{setFromBlockchain:n,setFromToken:r,setToBlockchain:a,setToToken:s,setInputAmount:l}=O();return i(c=>{let{fromBlockchain:u,fromToken:f,toBlockchain:h,toToken:g,requestAmount:d}=c,m={blockchains:e,tokens:o};if(u!==void 0){let y=e.find(T=>T.name===u)??null;n(y)}if(f!==void 0){let y=f?t(f)??null:null;r({meta:m,token:y})}if(h!==void 0){let y=e.find(T=>T.name===h)??null;a(y)}if(g!==void 0){let y=g?t(g)??null:null;s({meta:m,token:y})}d!==void 0&&l(d)},"updateQuoteInputs")}i(yS,"useUpdateQuoteInputs");import{cancelSwap as N0,getCurrentNamespaceOfOrNull as B0,getCurrentStep as W0,getRelatedWalletOrNull as L0}from"@rango-dev/queue-manager-rango-preset";var _a=class{static{i(this,"WidgetHistory")}constructor(e,o){this.manager=e,this.actions=o}getAllSwaps(){return St(this.manager)}getCurrentStep(e){return this.getCurrentStepInfo(e).step}getCurrentStepWallet(e){return this.getCurrentStepInfo(e).wallet}getCurrentStepNetwork(e){return this.getCurrentStepInfo(e).network}retry(e,o){let n=gi(e,o.blockchains,this.actions.findToken);return this.actions.retrySwap(n)}cancel(e){let o=this.manager?.get(e);o&&N0(o)}getCurrentStepInfo(e){let o=W0(e);return{step:o,wallet:o?L0(e,o):null,network:o?B0(e,o)?.network:null}}};var SS=_0(void 0);function lc(t){let{manager:e}=M0(),o=te.use.isActiveTab(),n=O.use.retry(),{findToken:r,getBalances:a,getConnectedWalletsDetails:s,fetchBalances:l}=C(),p=new _a(e,{retrySwap:n,findToken:r}),{fetchingWallets:c}=C(),u=Pc(a()),f=C().blockchains(),h=C().tokens(),g=C().swappers(),d=C().fetchStatus,m=uo().resetLanguage,y=Ae().getNotifications(),T=Ae().clearNotifications,S=yS(),{fromBlockchain:k,toBlockchain:v,fromToken:b,toToken:I,inputAmount:A}=O(),E={isActiveTab:o,setCurrentTabAsActive:wo.forceClaim,history:p,wallets:{isLoading:c,details:s(),totalBalance:u,refetch:async x=>l(x)},meta:{blockchains:f,tokens:h,swappers:g,loadingStatus:d,findToken:r},resetLanguage:m,notifications:{list:y,clearAll:T},quote:{quoteInputs:{fromBlockchain:k?.name??null,fromToken:b?{symbol:b.symbol,blockchain:b.blockchain,address:b.address}:null,toBlockchain:v?.name??null,toToken:I?{symbol:I.symbol,blockchain:I.blockchain,address:I.address}:null,requestAmount:A},updateQuoteInputs:S}};return P0.createElement(SS.Provider,{value:E},t.children)}i(lc,"WidgetInfo");function CS(){let t=D0(SS);if(!t)throw new Error("useWidget can only be used within the WidgetProvider component");return t}i(CS,"useWidget");function Da(t){let{onUpdateState:e,config:o}=t,n=t.config?.theme?.fontFamily,{handleLoadCustomFont:r}=gS();return TS(()=>{n&&r(n)},[n]),F0(()=>{nu({API_KEY:o?.apiKey||$r,BASE_URL:o?.apiUrl||uc})},[o.apiKey,o.apiUrl]),TS(()=>{t.config?.signers?.customSolanaRPC&&$0("customRPC",t.config.signers.customSolanaRPC)},[t.config?.signers?.customSolanaRPC]),pc.createElement(di,{config:o,onUpdateState:e},pc.createElement(hS,{apiKey:o.apiKey},pc.createElement(lc,null,t.children)))}i(Da,"WidgetProvider");function kS(t){let e=t.config?.externalWallets;return $a.createElement(Ru,null,e?$a.createElement(Pa,null):$a.createElement(Da,{config:t.config??Yr},$a.createElement(Pa,null)))}i(kS,"Widget");function vS(){let{on:t,off:e}=Te;return{on:t,off:e}}i(vS,"useWidgetEvents");var lJ={DerivationPath:Gn,Namespaces:Qn,Detached:qn,isOnDerivationPath:Kn,isOnNamespace:Vn,isOnDetached:jn};export{PZ as EventSeverity,Ko as MainEvents,qZ as Networks,KZ as PendingSwapNetworkStatus,Za as QuoteEventTypes,_Z as RouteEventType,Fa as SUPPORTED_FONTS,lJ as StatefulConnect,DZ as StepEventType,$Z as StepExecutionBlockedEventStatus,FZ as StepExecutionEventStatus,Qe as UI_ID,Ra as UiEventTypes,Ja as WalletEventTypes,QZ as WalletEvents,GZ as WalletTypes,kS as Widget,Ko as WidgetEvents,Da as WidgetProvider,di as WidgetWallets,Gs as customizedThemeTokens,UZ as readAccountAddress,Ho as useStatefulConnect,Tt as useWalletList,Fi as useWallets,CS as useWidget,vS as useWidgetEvents,EC as widgetEventEmitter};
|
|
3
3
|
//# sourceMappingURL=index.js.map
|