@tuwaio/nova-connect 0.2.7 → 0.2.9
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/README.md +3 -3
- package/dist/chunk-MGBN4EIT.cjs +1 -0
- package/dist/chunk-NQ5AECZQ.js +1 -0
- package/dist/chunk-U2HKJB6D.cjs +2 -0
- package/dist/{chunk-YDPI5PAY.cjs → chunk-V3D3HT6N.cjs} +1 -1
- package/dist/{chunk-YO3PXLI4.js → chunk-XA3DA6RA.js} +1 -1
- package/dist/chunk-YXB45D7C.js +2 -0
- package/dist/components/index.cjs +1 -1
- package/dist/components/index.d.cts +7 -205
- package/dist/components/index.d.ts +7 -205
- package/dist/components/index.js +1 -1
- package/dist/hooks/index.cjs +1 -1
- package/dist/hooks/index.d.cts +3 -3
- package/dist/hooks/index.d.ts +3 -3
- package/dist/hooks/index.js +1 -1
- package/dist/i18n/index.cjs +1 -1
- package/dist/i18n/index.d.cts +1 -1
- package/dist/i18n/index.d.ts +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/{ToastError-BF4F8oo-.d.cts → index-B9pJ-IAo.d.cts} +1273 -318
- package/dist/{ToastError-Bw3Amqzv.d.ts → index-BkbAcDWt.d.ts} +1273 -318
- package/dist/index.cjs +1 -1
- package/dist/index.css +135 -37
- package/dist/index.d.cts +8 -6
- package/dist/index.d.ts +8 -6
- package/dist/index.js +1 -1
- package/dist/{types-eao2UQcC.d.cts → types-DxUn8qmU.d.cts} +4 -0
- package/dist/{types-eao2UQcC.d.ts → types-DxUn8qmU.d.ts} +4 -0
- package/dist/{useWalletNativeBalance-B4hY45fG.d.ts → useWalletNativeBalance-DR8XONYI.d.ts} +10 -2
- package/dist/{useWalletNativeBalance-BvBbDXMS.d.cts → useWalletNativeBalance-rZ2GQ88f.d.cts} +10 -2
- package/package.json +23 -18
- package/dist/chunk-D2JEJG2A.cjs +0 -5
- package/dist/chunk-LXZIVQLW.js +0 -5
- package/dist/chunk-T6H7HGCM.js +0 -1
- package/dist/chunk-WTDBHPAK.cjs +0 -1
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var chunkD2JEJG2A_cjs=require('./chunk-D2JEJG2A.cjs'),chunkYDPI5PAY_cjs=require('./chunk-YDPI5PAY.cjs'),chunkK44IHM6B_cjs=require('./chunk-K44IHM6B.cjs'),chunkWTDBHPAK_cjs=require('./chunk-WTDBHPAK.cjs'),chunk2SFIZVDC_cjs=require('./chunk-2SFIZVDC.cjs'),orbitCore=require('@tuwaio/orbit-core'),novaCore=require('@tuwaio/nova-core'),react=require('react'),reactToastify=require('react-toastify'),jsxRuntime=require('react/jsx-runtime'),outline=require('@heroicons/react/24/outline'),framerMotion=require('framer-motion');var ue=({title:o,rawError:e,onCopyComplete:n,errorType:a,isConnected:t,...f})=>jsxRuntime.jsx(chunkD2JEJG2A_cjs.D,{title:o,rawError:e,onCopyComplete:n,customization:f.customization}),Ce=o=>{let e=chunkYDPI5PAY_cjs.h();return jsxRuntime.jsx(reactToastify.ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":e.somethingWentWrong})},fe=(o,e)=>{o(e.title,e.rawError,e.errorKey);},ve=o=>{o();},ge=(o,e)=>{o&&process.env.NODE_ENV==="development"&&console.log("Error copied to clipboard:",e.substring(0,100));},be=o=>o,ye=o=>o;function Mo({containerId:o="nova-connect-errors",position:e="top-center",autoClose:n=7e3,draggable:a=false,customization:t}){let f=chunkYDPI5PAY_cjs.h(),u=chunk2SFIZVDC_cjs.h(l=>l.switchNetworkError),x=chunk2SFIZVDC_cjs.h(l=>l.activeConnection),B=chunk2SFIZVDC_cjs.h(l=>l.connectionError),{ToastError:E=ue,Container:g=Ce}=t?.components??{},{showError:d=fe,dismissError:O=ve,onCopyComplete:H=ge}=t?.handlers??{},{errorTitle:T=be,errorHash:N=ye}=t??{},P=react.useRef(new Set),R=react.useRef(null),s=react.useMemo(()=>{let l=!!B,y=!!u,M=!!x?.isConnected;return {hasWalletError:l,hasSwitchError:y,isConnected:M,hasAnyError:l||y,primaryError:B||u||null,errorType:l?"wallet":y?"switch":null}},[B,u,x?.isConnected]),z=react.useMemo(()=>{switch(s.errorType){case "wallet":return f.connectionError;case "switch":return f.errorWhenChainSwitching;default:return f.somethingWentWrong}},[s.errorType,f]),m=react.useMemo(()=>T(z,{errorType:s.errorType}),[T,z,s.errorType]),W=react.useMemo(()=>s.primaryError?`${s.errorType}-${s.primaryError.substring(0,50)}`:null,[s.primaryError,s.errorType]),C=react.useMemo(()=>N(W,{primaryError:s.primaryError,errorType:s.errorType}),[N,W,s.primaryError,s.errorType]),D=react.useCallback(()=>{O(()=>{R.current&&(reactToastify.toast.dismiss(R.current),R.current=null),reactToastify.toast.dismiss({containerId:o});});},[o,O]),F=react.useCallback((l,y)=>{H(l,y,s.errorType);},[H,s.errorType]),r=react.useCallback((l,y,M)=>{if(D(),!P.current.has(M))try{let V={containerId:o,toastId:M,onClose:()=>{P.current.delete(M),R.current=null;}},_=t?.toastOptions?.error?.({title:l,rawError:y,errorType:s.errorType,isConnected:s.isConnected}),q={...V,..._};reactToastify.toast.error(jsxRuntime.jsx(E,{title:l,rawError:y,errorType:s.errorType,isConnected:s.isConnected,onCopyComplete:J=>F(J,y),customization:t?.toastErrorCustomization}),q),P.current.add(M),R.current=M;}catch(V){console.error("Failed to show error toast:",V);}},[D,o,t?.toastOptions?.error,t?.toastErrorCustomization,E,s.errorType,s.isConnected,F]),v=react.useCallback((l,y,M)=>{d(r,{title:l,rawError:y,errorKey:M,errorType:s.errorType});},[r,d,s.errorType]);react.useEffect(()=>{let{hasAnyError:l,isConnected:y,primaryError:M}=s;if(y&&!l){D(),P.current.clear();return}if(l&&M&&C){if(y&&s.errorType!=="switch")return;v(m,M,C);}},[s,m,C,v,D]),react.useEffect(()=>()=>{D(),P.current.clear();},[D]);let b=react.useMemo(()=>t?.classNames?.container?t.classNames.container({hasErrors:s.hasAnyError,errorType:s.errorType}):"novacon:p-0 novacon:bg-transparent",[t,s.hasAnyError,s.errorType]),p=react.useMemo(()=>({containerId:o,position:e,closeOnClick:false,icon:false,closeButton:novaCore.ToastCloseButton,autoClose:n,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:a,pauseOnHover:true,theme:"light",transition:reactToastify.Bounce}),[o,e,n,a]),h=react.useMemo(()=>({...p,...t?.containerProps,className:b}),[p,t?.containerProps,b]);return jsxRuntime.jsx(g,{...h})}Mo.displayName="ErrorsProvider";function Eo({labels:o,children:e}){let n=react.useMemo(()=>o,[o]);if(process.env.NODE_ENV==="development"){(!o||typeof o!="object")&&console.warn("NovaConnectLabelsProvider: labels prop should be an object");let t=["connectWallet","disconnect","connecting","connected","error","success"].filter(f=>!(f in o));t.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${t.join(", ")}`);}return jsxRuntime.jsx(chunkYDPI5PAY_cjs.g.Provider,{value:n,children:e})}Eo.displayName="NovaConnectLabelsProvider";function ze(o,e){if(!o||!Array.isArray(o)||!e)return;let n=o.find(a=>a&&typeof a=="object"&&"name"in a&&typeof a.name=="string"?orbitCore.formatConnectorName(a.name)===e:false);if(n&&typeof n=="object"&&"name"in n&&typeof n.name=="string")return n.name}var Jo=react.forwardRef(({className:o,children:e,modalData:n,...a},t)=>jsxRuntime.jsx("div",{ref:t,className:novaCore.cn("novacon:relative novacon:flex novacon:w-full novacon:flex-col",o),...a,children:e}));Jo.displayName="DefaultModalContainer";var Qo=react.forwardRef(({className:o,children:e,modalData:n,...a},t)=>jsxRuntime.jsx("div",{ref:t,className:o,...a,children:jsxRuntime.jsx(novaCore.DialogHeader,{children:e})}));Qo.displayName="DefaultModalHeader";var Xo=react.forwardRef(({className:o,onClick:e,modalData:n,...a},t)=>jsxRuntime.jsx("button",{ref:t,className:novaCore.cn("novacon:cursor-pointer novacon:text-[var(--tuwa-text-secondary)] novacon:transition novacon:duration-300 novacon:ease-in-out novacon:active:scale-75 novacon:hover:scale-110",o),type:"button",onClick:e,...a,children:jsxRuntime.jsx(outline.InformationCircleIcon,{width:20,height:20,className:"novacon:mr-1","aria-hidden":"true"})}));Xo.displayName="DefaultInfoButton";var Yo=react.forwardRef(({className:o,children:e,modalData:n,...a},t)=>jsxRuntime.jsx(novaCore.DialogTitle,{ref:t,className:novaCore.cn("novacon:flex novacon:items-center",o),...a,children:e}));Yo.displayName="DefaultTitle";var Zo=react.forwardRef(({className:o,onClick:e,modalData:n,...a},t)=>jsxRuntime.jsx(novaCore.DialogClose,{asChild:true,children:jsxRuntime.jsx("button",{ref:t,type:"button",onClick:e,className:novaCore.cn("novacon:cursor-pointer novacon:rounded-full novacon:p-1 novacon:text-[var(--tuwa-text-tertiary)] novacon:transition-colors novacon:hover:bg-[var(--tuwa-bg-muted)] novacon:hover:text-[var(--tuwa-text-primary)]",o),...a,children:jsxRuntime.jsx(novaCore.CloseIcon,{"aria-hidden":"true"})})}));Zo.displayName="DefaultCloseButton";var oe=react.forwardRef(({className:o,children:e,modalData:n,...a},t)=>jsxRuntime.jsx("main",{ref:t,className:novaCore.cn("novacon:flex novacon:flex-col novacon:gap-4 novacon:p-4",o),id:"connect-modal-content",role:"main",...a,children:e}));oe.displayName="DefaultMainContent";var ee=react.forwardRef(({className:o,children:e,modalData:n,...a},t)=>jsxRuntime.jsx("footer",{ref:t,className:novaCore.cn("novacon:flex novacon:w-full novacon:items-center novacon:justify-between novacon:border-t novacon:border-[var(--tuwa-border-primary)] novacon:p-4",o),role:"contentinfo",...a,children:e}));ee.displayName="DefaultFooter";var te=react.forwardRef(({className:o,onClick:e,children:n,modalData:a,...t},f)=>jsxRuntime.jsx("button",{ref:f,type:"button",onClick:e,className:novaCore.cn(novaCore.standardButtonClasses,o),...t,children:n}));te.displayName="DefaultBackButton";var ne=react.forwardRef(({className:o,onClick:e,children:n,disabled:a,loading:t,buttonConfig:f,modalData:u,...x},B)=>jsxRuntime.jsx("button",{ref:B,type:"button",onClick:e,disabled:a||t,className:novaCore.cn(novaCore.standardButtonClasses,o),...x,children:t?"Loading...":n}));ne.displayName="DefaultActionButton";var re=react.forwardRef(({className:o,children:e,modalData:n,...a},t)=>jsxRuntime.jsx("span",{ref:t,className:novaCore.cn("novacon:sr-only",o),...a,children:e}));re.displayName="DefaultActionDescription";var ae=react.forwardRef(({children:o,className:e,...n},a)=>{let{modalData:t,...f}=n;return jsxRuntime.jsx("div",{ref:a,className:e,...f,children:o})});ae.displayName="DefaultEmptyState";var No=react.memo(({appChains:o,solanaRPCUrls:e,withImpersonated:n,customization:a={}})=>{let{isConnectModalOpen:t,setIsConnectModalOpen:f,setConnectModalContentType:u,setActiveConnector:x,setImpersonatedAddress:B,setIsConnected:E,connectModalContentType:g,selectedAdapter:d,setSelectedAdapter:O,isConnected:H,activeConnector:T,impersonatedAddress:N}=chunkYDPI5PAY_cjs.d(),P=chunk2SFIZVDC_cjs.h(c=>c.connectionError),R=chunk2SFIZVDC_cjs.h(c=>c.getConnectors),s=chunk2SFIZVDC_cjs.h(c=>c.connect),z=chunk2SFIZVDC_cjs.h(c=>c.activeConnection),m=chunkYDPI5PAY_cjs.h(),W=react.useContext(chunk2SFIZVDC_cjs.f),C=react.useMemo(()=>{if(t)return R()},[t,R]),D=react.useMemo(()=>chunkYDPI5PAY_cjs.t({connectors:C,selectedAdapter:d}),[C,d]),F=react.useMemo(()=>P?typeof P=="string"?new Error(P):P:null,[P]),r=react.useMemo(()=>({contentType:g,selectedAdapter:d,activeConnector:T,impersonatedAddress:N,isConnected:H,isOpen:t,error:F,connectors:C,filteredConnectors:D,labels:m}),[g,d,T,N,H,t,F,C,D,m]);react.useEffect(()=>{t&&(u("connectors"),O(void 0),x(void 0),B(""),E(false));},[t]);let{components:v={},classNames:b={},handlers:p={},config:h={},childComponents:l={}}=a,y=v.ModalContainer||Jo,M=v.ModalHeader||Qo,V=v.InfoButton||Xo,_=v.Title||Yo,q=v.CloseButton||Zo,J=v.MainContent||oe,Q=v.Footer||ee,so=v.BackButton||te,X=v.ActionButton||ne,io=v.ActionDescription||re,G=v.EmptyState||ae,vo=v.Dialog||novaCore.Dialog,lo=v.DialogContent||novaCore.DialogContent,to=v.MotionDiv||framerMotion.motion.div,no=react.useCallback(()=>{switch(g){case "about":return m.aboutWallets;case "getWallet":return m.getWallet;case "connecting":return d&&T&&C&&ze(C[d],T)||m.connectingEllipsis;case "impersonate":return m.connectImpersonatedWallet;default:return m.connectWallet}},[g,d,T,C,m]),Y=react.useCallback(()=>"connectors",[g]),Z=react.useCallback(c=>{p?.onOpenChange?p.onOpenChange(c,r):f(c);},[p?.onOpenChange,r,f]),go=react.useCallback(()=>{let c=()=>u(Y());p?.onBack?p.onBack(r,c):c();},[p?.onBack,r,u,Y]),bo=react.useCallback(()=>{p?.onInfoClick?p.onInfoClick(r):u("about");},[p?.onInfoClick,r,u]),j=react.useCallback(async(c,yo)=>{await s({connectorType:c,chainId:chunkYDPI5PAY_cjs.p({appChains:o,selectedAdapter:yo,solanaRPCUrls:e})});try{await orbitCore.waitFor(()=>W?.getState().activeConnection?.isConnected),E(!0);let To=setTimeout(()=>f(!1),400),ce=setTimeout(()=>E(!1),500);await orbitCore.delay(null,500),clearTimeout(To),clearTimeout(ce);}catch(To){console.error(To);}},[s,o,d,e]),$=react.useCallback(async(c,yo)=>{O(c),u("connecting"),await j(yo,c);},[j]),wo=react.useCallback(c=>{x(orbitCore.formatConnectorName(c.name)),c.adapters.length===1?(O(c.adapters[0]),u(orbitCore.formatConnectorName(c.name)==="impersonatedwallet"?"impersonate":"connecting")):d?u(orbitCore.formatConnectorName(c.name)==="impersonatedwallet"?"impersonate":"connecting"):orbitCore.formatConnectorName(c.name)==="impersonatedwallet"?u("impersonate"):u("network");},[d]),ie=react.useCallback(()=>{switch(g){case "network":return jsxRuntime.jsx(chunkD2JEJG2A_cjs.B,{activeConnector:T,connectors:D,onClick:$,customization:l.networkSelections});case "connectors":return C?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(chunkD2JEJG2A_cjs.C,{networks:Object.keys(C),selectedAdapter:d,onSelect:c=>O(c),customization:l.networkTabs}),jsxRuntime.jsx(chunkD2JEJG2A_cjs.y,{isOnlyOneNetwork:Object.keys(C).length===1,connectors:D,selectedAdapter:d,onClick:wo,setContentType:u,appChains:o,solanaRPCUrls:e,setIsConnected:E,setIsOpen:f,withImpersonated:n,customization:l.connectorsSelections})]}):jsxRuntime.jsx(G,{className:b.emptyConnectors?.({modalData:r}),modalData:r,children:"No connectors available"});case "about":return jsxRuntime.jsx(chunkD2JEJG2A_cjs.s,{customization:l.aboutWallets});case "getWallet":return jsxRuntime.jsx(chunkD2JEJG2A_cjs.z,{customization:l.getWallet});case "connecting":return jsxRuntime.jsx(chunkD2JEJG2A_cjs.v,{selectedAdapter:d,connectors:D,activeConnector:T,isConnected:H,customization:l.connecting});case "impersonate":return jsxRuntime.jsx(chunkD2JEJG2A_cjs.A,{selectedAdapter:d,impersonatedAddress:N,setImpersonatedAddress:B,customization:l.impersonateForm})}},[g,T,D,$,l,C,d,wo,H,N]),K=react.useCallback(()=>{switch(g){case "connectors":return {title:m.iDontHaveWallet,onClick:()=>{p.onActionClick?.connectors?p.onActionClick.connectors(r):u("getWallet");}};case "getWallet":return {title:m.choseWallet,onClick:()=>{p.onActionClick?.getWallet?p.onActionClick.getWallet(r):window.open(orbitCore.getNetworkData(d??Object.keys(C)[0])?.links?.choseWallet,"_blank","noopener,noreferrer");}};case "about":return {title:m.learnMore,onClick:()=>{p.onActionClick?.about?p.onActionClick.about(r):window.open(orbitCore.getNetworkData(d??Object.keys(C)[0])?.links?.about,"_blank","noopener,noreferrer");}};case "impersonate":return {title:m.connect,onClick:async()=>{if(p.onActionClick?.impersonate)await p.onActionClick.impersonate(r);else {let c=N.trim();if(P||!c||!orbitCore.isAddress(c)||z?.isConnected)return;orbitCore.impersonatedHelpers.setImpersonated(c),u("connecting"),await j(orbitCore.getConnectorTypeFromName(d??orbitCore.OrbitAdapter.EVM,T??""),d??orbitCore.OrbitAdapter.EVM);}}};case "connecting":return P&&d&&T?{title:m.tryAgain,onClick:async()=>{p.onActionClick?.connecting?await p.onActionClick.connecting(r):await j(orbitCore.getConnectorTypeFromName(d,T),d);}}:void 0}},[g,m,p,r,d,C,N,P,j,T])(),le=react.useCallback(()=>{switch(g){case "getWallet":return "Opens external wallet selection page";case "about":return "Opens external documentation";case "impersonate":return "Connects with impersonated wallet address";case "connecting":return "Retries wallet connection";default:return ""}},[g]);return jsxRuntime.jsx(vo,{open:t,onOpenChange:Z,children:jsxRuntime.jsx(lo,{className:novaCore.cn("novacon:w-full novacon:sm:max-w-md"),children:jsxRuntime.jsx(to,{layout:true,transition:{layout:{duration:h.animation?.disabled?0:h.animation?.layoutDuration??1e-4}},children:jsxRuntime.jsxs(y,{className:b.modalContainer?.({modalData:r}),modalData:r,children:[jsxRuntime.jsxs(M,{className:b.header?.({modalData:r}),modalData:r,children:[jsxRuntime.jsxs(_,{className:b.title?.({modalData:r}),modalData:r,children:[g==="connectors"&&jsxRuntime.jsx(V,{className:b.infoButton?.({modalData:r}),onClick:bo,"aria-label":h.ariaLabels?.infoButton?.(r)||`${m.learnMore} ${m.aboutWallets}`,modalData:r}),no()]}),jsxRuntime.jsx(q,{className:b.closeButton?.({modalData:r}),onClick:()=>Z(false),"aria-label":h.ariaLabels?.closeButton?.(r)||m.closeModal,modalData:r})]}),jsxRuntime.jsx(J,{className:b.mainContent?.({modalData:r}),modalData:r,children:ie()}),jsxRuntime.jsxs(Q,{className:b.footer?.({modalData:r}),modalData:r,children:[jsxRuntime.jsx("div",{className:"novacon:flex novacon:items-center novacon:gap-4",children:g!=="connectors"&&jsxRuntime.jsx(so,{className:b.backButton?.({modalData:r}),onClick:go,"aria-label":h.ariaLabels?.backButton?.(r)||`${m.back} to previous step`,modalData:r,children:m.back})}),K&&jsxRuntime.jsxs("div",{className:"novacon:flex novacon:items-center novacon:gap-3",children:[jsxRuntime.jsx(X,{className:b.actionButton?.({modalData:r,buttonConfig:K}),onClick:K.onClick,disabled:K.disabled,loading:K.loading,"aria-describedby":"bottom-action-description",modalData:r,buttonConfig:K,children:K.title}),jsxRuntime.jsx(io,{id:"bottom-action-description",className:b.actionDescription?.({modalData:r}),modalData:r,children:le()})]})]})]})})})})});No.displayName="ConnectModal";var Fe=({labels:o,children:e})=>jsxRuntime.jsx(Eo,{labels:o,children:e}),Ve=({customization:o})=>jsxRuntime.jsx(Mo,{customization:o}),Ue=(o,e)=>novaCore.deepMerge(o,e||{}),Ge=o=>o,je=o=>o,$e=(o,e,n)=>o;function Ke({labels:o,children:e,appChains:n,solanaRPCUrls:a,transactionPool:t,pulsarAdapter:f,withImpersonated:u,withBalance:x,withChain:B,customization:E}){let g=chunk2SFIZVDC_cjs.h($=>$.activeConnection),d=chunk2SFIZVDC_cjs.h($=>$.connectionError),{LabelsProvider:O=Fe,ErrorsProvider:H=Ve}=E?.components??{},{merge:T=Ue,transform:N=Ge}=E?.labels??{},{transform:P=je}=E?.contextValue??{},{providerTree:R=$e}=E?.rendering??{},s=react.useMemo(()=>T(chunkWTDBHPAK_cjs.a,o||{}),[o,T]),[z,m]=react.useState(false),[W,C]=react.useState(false),[D,F]=react.useState(false),[r,v]=react.useState(false),[b,p]=react.useState("idle"),[h,l]=react.useState("connectors"),[y,M]=react.useState(void 0),[V,_]=react.useState(void 0),[q,J]=react.useState(""),[Q,so]=react.useState(false),[X,io]=react.useState("main"),G=react.useMemo(()=>({isConnected:Q,activeConnection:g,connectionError:d,modalStates:{isConnectModalOpen:z,isConnectedModalOpen:W,isChainsListOpen:D,isChainsListOpenMobile:r},contentTypes:{connectModal:h,connectedModal:X},statuses:{connectedButton:b}}),[Q,g,d,z,W,D,r,h,X,b]),vo=react.useMemo(()=>N(s,G),[s,N,G]),lo=react.useMemo(()=>P({appChains:n,solanaRPCUrls:a,withImpersonated:u,withBalance:x,withChain:B,isConnectModalOpen:z,setIsConnectModalOpen:m,isConnectedModalOpen:W,setIsConnectedModalOpen:C,isChainsListOpen:D,setIsChainsListOpen:F,isChainsListOpenMobile:r,setIsChainsListOpenMobile:v,connectedButtonStatus:b,setConnectedButtonStatus:p,connectedModalContentType:X,setConnectedModalContentType:io,connectModalContentType:h,setConnectModalContentType:l,selectedAdapter:y,setSelectedAdapter:M,activeConnector:V,setActiveConnector:_,impersonatedAddress:q,setImpersonatedAddress:J,isConnected:Q,setIsConnected:so},G),[n,a,u,x,B,z,m,W,C,D,F,r,v,b,p,X,io,h,l,y,M,V,_,q,J,Q,so,P,G]),to=jsxRuntime.jsx(H,{customization:E?.errors}),no=jsxRuntime.jsx(O,{labels:vo,children:e}),Y=n||a?jsxRuntime.jsx(No,{withImpersonated:u,solanaRPCUrls:a,appChains:n,customization:E?.modals?.connectModal}):null,Z=n||a?jsxRuntime.jsx(chunkD2JEJG2A_cjs.r,{solanaRPCUrls:a,appChains:n,transactionPool:t,pulsarAdapter:f,customization:E?.modals?.connectedModal}):null,go=jsxRuntime.jsxs(chunkYDPI5PAY_cjs.c.Provider,{value:lo,children:[to,no,Y,Z]}),bo=jsxRuntime.jsxs(chunkYDPI5PAY_cjs.c.Provider,{value:lo,children:[to,no,Y,Z]}),j=R(bo,{ErrorsProvider:to,LabelsProvider:no,MainContent:go,ConnectModal:Y||jsxRuntime.jsx(jsxRuntime.Fragment,{}),ConnectedModal:Z||jsxRuntime.jsx(jsxRuntime.Fragment,{})},G);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:j})}Ke.displayName="NovaConnectProvider";async function _n(){let{getAllAdaptersStatus:o}=await import('./getChainsListByConnectorType-QCNOPM6I.cjs');return {hasEvmUtils:await Co(),hasSolanaUtils:await fo(),adaptersStatus:o()}}async function Co(){try{return await import('viem'),await import('@tuwaio/orbit-evm'),!0}catch{return false}}async function fo(){try{return await import('gill'),await import('@tuwaio/orbit-solana'),!0}catch{return false}}async function qn(){try{if(!await Co())return {available:!1,error:"EVM packages (viem, @tuwaio/orbit-evm) not available"};let e=await import('./evm/index.cjs'),n=await e.getEvmExports();return n.available?{...e,...n}:{available:!1,error:n.error||"Failed to load EVM exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"EVM utilities not available"}}}async function Jn(){try{if(!await fo())return {available:!1,error:"Solana packages (gill, @tuwaio/orbit-solana) not available"};let e=await import('./solana/index.cjs'),n=await e.getSolanaExports();return n.available?{...e,...n}:{available:!1,error:n.error||"Failed to load Solana exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"Solana utilities not available"}}}async function Qn(){let o={evm:false,solana:false,errors:[]};try{let e=await Co(),n=await fo();if(e||n){let{preloadChainAdapters:a}=await import('./getChainsListByConnectorType-QCNOPM6I.cjs'),t=[];e&&t.push(orbitCore.OrbitAdapter.EVM),n&&t.push(orbitCore.OrbitAdapter.SOLANA),await a(t),o.evm=e,o.solana=n;}else o.errors.push("No blockchain packages available for initialization");}catch(e){let n=e instanceof Error?e.message:"Unknown initialization error";o.errors.push(n);}return o}async function Xn(o){return o===orbitCore.OrbitAdapter.Starknet||o!==orbitCore.OrbitAdapter.EVM&&o!==orbitCore.OrbitAdapter.SOLANA?false:o===orbitCore.OrbitAdapter.EVM?Co():fo()}Object.defineProperty(exports,"NovaConnectLabelsContext",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.g}});Object.defineProperty(exports,"NovaConnectProviderContext",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.c}});Object.defineProperty(exports,"NovaConnectProviderError",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.b}});Object.defineProperty(exports,"createLabelsSubset",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.o}});Object.defineProperty(exports,"getAvailableChainIds",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.q}});Object.defineProperty(exports,"getAvailableSolanaClusters",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.v}});Object.defineProperty(exports,"getConnectChainId",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.p}});Object.defineProperty(exports,"getFilteredConnectors",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.t}});Object.defineProperty(exports,"getGroupedConnectors",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.r}});Object.defineProperty(exports,"getLabelWithFallback",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.n}});Object.defineProperty(exports,"hasAvailableConnectors",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.s}});Object.defineProperty(exports,"hasConnectorsForAdapter",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.u}});Object.defineProperty(exports,"hasLabel",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.k}});Object.defineProperty(exports,"isDefaultLabels",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.m}});Object.defineProperty(exports,"isValidSolanaCluster",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.w}});Object.defineProperty(exports,"useGetWalletNameAndAvatar",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.a}});Object.defineProperty(exports,"useHasNovaConnectContext",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.e}});Object.defineProperty(exports,"useLabelsByCategory",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.l}});Object.defineProperty(exports,"useNovaConnect",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.d}});Object.defineProperty(exports,"useNovaConnectLabel",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.i}});Object.defineProperty(exports,"useNovaConnectLabels",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.h}});Object.defineProperty(exports,"useNovaConnectLabelsSubset",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.j}});Object.defineProperty(exports,"useNovaConnectOptional",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.f}});Object.defineProperty(exports,"useWalletChainsList",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.x}});Object.defineProperty(exports,"useWalletNativeBalance",{enumerable:true,get:function(){return chunkYDPI5PAY_cjs.y}});Object.defineProperty(exports,"getAdapterStatus",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.k}});Object.defineProperty(exports,"getAllAdaptersStatus",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.l}});Object.defineProperty(exports,"getAvailableSolanaClustersAsync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.g}});Object.defineProperty(exports,"getChainsListByConnectorType",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.b}});Object.defineProperty(exports,"getChainsListByConnectorTypeAsync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.a}});Object.defineProperty(exports,"getChainsListByConnectorTypeSync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.b}});Object.defineProperty(exports,"getWalletChains",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.i}});Object.defineProperty(exports,"isEvmChainList",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.e}});Object.defineProperty(exports,"isEvmChainListAsync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.c}});Object.defineProperty(exports,"isEvmChainListSync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.e}});Object.defineProperty(exports,"isSolanaChainList",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.f}});Object.defineProperty(exports,"isSolanaChainListAsync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.d}});Object.defineProperty(exports,"isSolanaChainListSync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.f}});Object.defineProperty(exports,"isValidSolanaClusterAsync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.h}});Object.defineProperty(exports,"preloadChainAdapters",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.j}});exports.ErrorsProvider=Mo;exports.NovaConnectLabelsProvider=Eo;exports.NovaConnectProvider=Ke;exports.getBlockchainUtilities=_n;exports.getEvmUtils=qn;exports.getSolanaUtils=Jn;exports.initializeBlockchainSupport=Qn;exports.isAdapterSupported=Xn;
|
|
1
|
+
'use strict';var chunkU2HKJB6D_cjs=require('./chunk-U2HKJB6D.cjs'),chunkV3D3HT6N_cjs=require('./chunk-V3D3HT6N.cjs'),chunkK44IHM6B_cjs=require('./chunk-K44IHM6B.cjs'),chunkMGBN4EIT_cjs=require('./chunk-MGBN4EIT.cjs'),chunk2SFIZVDC_cjs=require('./chunk-2SFIZVDC.cjs'),orbitCore=require('@tuwaio/orbit-core'),novaCore=require('@tuwaio/nova-core'),react=require('react'),reactToastify=require('react-toastify'),jsxRuntime=require('react/jsx-runtime'),outline=require('@heroicons/react/24/outline'),framerMotion=require('framer-motion');var Ct=({title:o,rawError:t,onCopyComplete:n,errorType:a,isConnected:e,...b})=>jsxRuntime.jsx(chunkU2HKJB6D_cjs.F,{title:o,rawError:t,onCopyComplete:n,customization:b.customization}),ft=o=>{let t=chunkV3D3HT6N_cjs.h();return jsxRuntime.jsx(reactToastify.ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":t.somethingWentWrong})},vt=(o,t)=>{o(t.title,t.rawError,t.errorKey);},gt=o=>{o();},bt=(o,t)=>{o&&process.env.NODE_ENV==="development"&&console.log("Error copied to clipboard:",t.substring(0,100));},yt=o=>o,Tt=o=>o;function Eo({containerId:o="nova-connect-errors",position:t="top-center",autoClose:n=7e3,draggable:a=false,customization:e}){let b=chunkV3D3HT6N_cjs.h(),f=chunk2SFIZVDC_cjs.h(p=>p.switchNetworkError),x=chunk2SFIZVDC_cjs.h(p=>p.activeConnection),w=chunk2SFIZVDC_cjs.h(p=>p.connectionError),{ToastError:S=Ct,Container:u=ft}=e?.components??{},{showError:c=vt,dismissError:O=gt,onCopyComplete:W=bt}=e?.handlers??{},{errorTitle:y=yt,errorHash:N=Tt}=e??{},T=react.useRef(new Set),B=react.useRef(null),s=react.useMemo(()=>{let p=!!w,g=!!f,P=!!x?.isConnected;return {hasWalletError:p,hasSwitchError:g,isConnected:P,hasAnyError:p||g,primaryError:w||f||null,errorType:p?"wallet":g?"switch":null}},[w,f,x?.isConnected]),U=react.useMemo(()=>{switch(s.errorType){case "wallet":return b.connectionError;case "switch":return b.errorWhenChainSwitching;default:return b.somethingWentWrong}},[s.errorType,b]),d=react.useMemo(()=>y(U,{errorType:s.errorType}),[y,U,s.errorType]),G=react.useMemo(()=>s.primaryError?`${s.errorType}-${s.primaryError.substring(0,50)}`:null,[s.primaryError,s.errorType]),C=react.useMemo(()=>N(G,{primaryError:s.primaryError,errorType:s.errorType}),[N,G,s.primaryError,s.errorType]),M=react.useCallback(()=>{O(()=>{B.current&&(reactToastify.toast.dismiss(B.current),B.current=null),reactToastify.toast.dismiss({containerId:o});});},[o,O]),H=react.useCallback((p,g)=>{W(p,g,s.errorType);},[W,s.errorType]),r=react.useCallback((p,g,P)=>{if(M(),!T.current.has(P))try{let V={containerId:o,toastId:P,onClose:()=>{T.current.delete(P),B.current=null;}},q=e?.toastOptions?.error?.({title:p,rawError:g,errorType:s.errorType,isConnected:s.isConnected}),J={...V,...q};reactToastify.toast.error(jsxRuntime.jsx(S,{title:p,rawError:g,errorType:s.errorType,isConnected:s.isConnected,onCopyComplete:Q=>H(Q,g),customization:e?.toastErrorCustomization}),J),T.current.add(P),B.current=P;}catch(V){console.error("Failed to show error toast:",V);}},[M,o,e?.toastOptions?.error,e?.toastErrorCustomization,S,s.errorType,s.isConnected,H]),v=react.useCallback((p,g,P)=>{c(r,{title:p,rawError:g,errorKey:P,errorType:s.errorType});},[r,c,s.errorType]);react.useEffect(()=>{let{hasAnyError:p,isConnected:g,primaryError:P}=s;if(g&&!p){M(),T.current.clear();return}if(p&&P&&C){if(g&&s.errorType!=="switch")return;v(d,P,C);}},[s,d,C,v,M]),react.useEffect(()=>()=>{M(),T.current.clear();},[M]);let D=react.useMemo(()=>e?.classNames?.container?e.classNames.container({hasErrors:s.hasAnyError,errorType:s.errorType}):"novacon:p-0 novacon:bg-transparent",[e,s.hasAnyError,s.errorType]),m=react.useMemo(()=>{let p=e?.toastCloseButton;return p?({closeToast:g})=>jsxRuntime.jsx(novaCore.ToastCloseButton,{closeToast:g,...p}):novaCore.ToastCloseButton},[e?.toastCloseButton]),k=react.useMemo(()=>({containerId:o,position:t,closeOnClick:false,icon:false,closeButton:m,autoClose:n,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:a,pauseOnHover:true,theme:"light",transition:reactToastify.Bounce}),[o,t,n,a,m]),E=react.useMemo(()=>({...k,...e?.containerProps,className:D}),[k,e?.containerProps,D]);return jsxRuntime.jsx(u,{...E})}Eo.displayName="ErrorsProvider";function No({labels:o,children:t}){let n=react.useMemo(()=>o,[o]);if(process.env.NODE_ENV==="development"){(!o||typeof o!="object")&&console.warn("NovaConnectLabelsProvider: labels prop should be an object");let e=["connectWallet","disconnect","connecting","connected","error","success"].filter(b=>!(b in o));e.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${e.join(", ")}`);}return jsxRuntime.jsx(chunkV3D3HT6N_cjs.g.Provider,{value:n,children:t})}No.displayName="NovaConnectLabelsProvider";function Wt(o,t){if(!o||!Array.isArray(o)||!t)return;let n=o.find(a=>a&&typeof a=="object"&&"name"in a&&typeof a.name=="string"?orbitCore.formatConnectorName(a.name)===t:false);if(n&&typeof n=="object"&&"name"in n&&typeof n.name=="string")return n.name}var Xo=react.forwardRef(({className:o,children:t,modalData:n,...a},e)=>jsxRuntime.jsx("div",{ref:e,className:novaCore.cn("novacon:relative novacon:flex novacon:w-full novacon:flex-col",o),...a,children:t}));Xo.displayName="DefaultModalContainer";var Yo=react.forwardRef(({className:o,children:t,modalData:n,...a},e)=>jsxRuntime.jsx("div",{ref:e,...a,children:jsxRuntime.jsx(novaCore.DialogHeader,{className:o,children:t})}));Yo.displayName="DefaultModalHeader";var Zo=react.forwardRef(({className:o,onClick:t,modalData:n,...a},e)=>jsxRuntime.jsx("button",{ref:e,className:novaCore.cn("novacon:cursor-pointer novacon:text-[var(--tuwa-text-secondary)] novacon:transition novacon:duration-300 novacon:ease-in-out novacon:active:scale-75 novacon:hover:scale-110 novacon:mr-1",o),type:"button",onClick:t,...a,children:jsxRuntime.jsx(outline.InformationCircleIcon,{width:20,height:20,"aria-hidden":"true"})}));Zo.displayName="DefaultInfoButton";var ot=react.forwardRef(({className:o,children:t,modalData:n,...a},e)=>jsxRuntime.jsx(novaCore.DialogTitle,{ref:e,className:novaCore.cn("novacon:flex novacon:items-center",o),...a,children:t}));ot.displayName="DefaultTitle";var tt=react.forwardRef(({className:o,onClick:t,modalData:n,...a},e)=>jsxRuntime.jsx(novaCore.DialogClose,{asChild:true,children:jsxRuntime.jsx("button",{ref:e,type:"button",onClick:t,className:novaCore.cn("novacon:cursor-pointer novacon:rounded-full novacon:p-1 novacon:text-[var(--tuwa-text-tertiary)] novacon:transition-colors novacon:hover:bg-[var(--tuwa-bg-muted)] novacon:hover:text-[var(--tuwa-text-primary)]",o),...a,children:jsxRuntime.jsx(novaCore.CloseIcon,{"aria-hidden":"true"})})}));tt.displayName="DefaultCloseButton";var et=react.forwardRef(({className:o,children:t,modalData:n,...a},e)=>jsxRuntime.jsx("main",{ref:e,className:novaCore.cn("novacon:flex novacon:flex-col novacon:gap-4 novacon:p-4",o),id:"connect-modal-content",role:"main",...a,children:t}));et.displayName="DefaultMainContent";var nt=react.forwardRef(({className:o,children:t,modalData:n,...a},e)=>jsxRuntime.jsx("footer",{ref:e,className:novaCore.cn("novacon:flex novacon:w-full novacon:items-center novacon:justify-between novacon:border-t novacon:border-[var(--tuwa-border-primary)] novacon:p-4",o),role:"contentinfo",...a,children:t}));nt.displayName="DefaultFooter";var rt=react.forwardRef(({className:o,onClick:t,children:n,modalData:a,...e},b)=>jsxRuntime.jsx("button",{ref:b,type:"button",onClick:t,className:novaCore.cn(novaCore.standardButtonClasses,o),...e,children:n}));rt.displayName="DefaultBackButton";var at=react.forwardRef(({className:o,onClick:t,children:n,disabled:a,loading:e,buttonConfig:b,modalData:f,...x},w)=>jsxRuntime.jsx("button",{ref:w,type:"button",onClick:t,disabled:a||e,className:novaCore.cn(novaCore.standardButtonClasses,o),...x,children:e?"Loading...":n}));at.displayName="DefaultActionButton";var st=react.forwardRef(({className:o,children:t,modalData:n,...a},e)=>jsxRuntime.jsx("span",{ref:e,className:novaCore.cn("novacon:sr-only",o),...a,children:t}));st.displayName="DefaultActionDescription";var it=react.forwardRef(({children:o,className:t,...n},a)=>{let{modalData:e,...b}=n;return jsxRuntime.jsx("div",{ref:a,className:t,...b,children:o})});it.displayName="DefaultEmptyState";var ho=react.memo(({appChains:o,solanaRPCUrls:t,withImpersonated:n,customization:a={}})=>{let{isConnectModalOpen:e,setIsConnectModalOpen:b,setConnectModalContentType:f,setActiveConnector:x,setImpersonatedAddress:w,setIsConnected:S,connectModalContentType:u,selectedAdapter:c,setSelectedAdapter:O,isConnected:W,activeConnector:y,impersonatedAddress:N}=chunkV3D3HT6N_cjs.d(),T=chunk2SFIZVDC_cjs.h(l=>l.connectionError),B=chunk2SFIZVDC_cjs.h(l=>l.getConnectors),s=chunk2SFIZVDC_cjs.h(l=>l.connect),U=chunk2SFIZVDC_cjs.h(l=>l.activeConnection),d=chunkV3D3HT6N_cjs.h(),G=react.useContext(chunk2SFIZVDC_cjs.f),C=react.useMemo(()=>{if(e)return B()},[e,B]),M=react.useMemo(()=>chunkV3D3HT6N_cjs.t({connectors:C,selectedAdapter:c}),[C,c]),H=react.useMemo(()=>T?typeof T=="string"?new Error(T):T:null,[T]),r=react.useMemo(()=>({contentType:u,selectedAdapter:c,activeConnector:y,impersonatedAddress:N,isConnected:W,isOpen:e,error:H,connectors:C,filteredConnectors:M,labels:d}),[u,c,y,N,W,e,H,C,M,d]);react.useEffect(()=>{e&&(f("connectors"),O(void 0),x(void 0),w(""),S(false));},[e]);let{components:v={},classNames:D={},handlers:m={},config:k={},childComponents:E={}}=a,p=v.ModalContainer||Xo,g=v.ModalHeader||Yo,P=v.InfoButton||Zo,V=v.Title||ot,q=v.CloseButton||tt,J=v.MainContent||et,Q=v.Footer||nt,X=v.BackButton||rt,lo=v.ActionButton||at,Y=v.ActionDescription||st,co=v.EmptyState||it,j=v.Dialog||novaCore.Dialog,bo=v.DialogContent||novaCore.DialogContent,mo=v.MotionDiv||framerMotion.motion.div,no=react.useCallback(()=>{switch(u){case "about":return d.aboutWallets;case "getWallet":return d.getWallet;case "connecting":return c&&y&&C&&Wt(C[c],y)||d.connectingEllipsis;case "impersonate":return d.connectImpersonatedWallet;default:return d.connectWallet}},[u,c,y,C,d]),Z=react.useCallback(()=>"connectors",[u]),oo=react.useCallback(l=>{m?.onOpenChange?m.onOpenChange(l,r):b(l);},[m?.onOpenChange,r,b]),ro=react.useCallback(()=>{let l=()=>f(Z());m?.onBack?m.onBack(r,l):l();},[m?.onBack,r,f,Z]),yo=react.useCallback(()=>{m?.onInfoClick?m.onInfoClick(r):f("about");},[m?.onInfoClick,r,f]),$=react.useCallback(async(l,To)=>{await s({connectorType:l,chainId:chunkV3D3HT6N_cjs.p({appChains:o,selectedAdapter:To,solanaRPCUrls:t})});try{await orbitCore.waitFor(()=>G?.getState().activeConnection?.isConnected),S(!0);let Do=setTimeout(()=>b(!1),400),mt=setTimeout(()=>S(!1),500);await orbitCore.delay(null,500),clearTimeout(Do),clearTimeout(mt);}catch(Do){console.error(Do);}},[s,o,c,t]),po=react.useCallback(async(l,To)=>{O(l),f("connecting"),await $(To,l);},[$]),K=react.useCallback(l=>{x(orbitCore.formatConnectorName(l.name)),l.adapters.length===1?(O(l.adapters[0]),f(orbitCore.formatConnectorName(l.name)==="impersonatedwallet"?"impersonate":"connecting")):c?f(orbitCore.formatConnectorName(l.name)==="impersonatedwallet"?"impersonate":"connecting"):orbitCore.formatConnectorName(l.name)==="impersonatedwallet"?f("impersonate"):f("network");},[c]),ct=react.useCallback(()=>{switch(u){case "network":return jsxRuntime.jsx(chunkU2HKJB6D_cjs.D,{activeConnector:y,connectors:M,onClick:po,customization:E.networkSelections});case "connectors":return C?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(chunkU2HKJB6D_cjs.E,{networks:Object.keys(C),selectedAdapter:c,onSelect:l=>O(l),customization:E.networkTabs}),jsxRuntime.jsx(chunkU2HKJB6D_cjs.z,{isOnlyOneNetwork:Object.keys(C).length===1,connectors:M,selectedAdapter:c,onClick:K,setContentType:f,appChains:o,solanaRPCUrls:t,setIsConnected:S,setIsOpen:b,withImpersonated:n,customization:E.connectorsSelections}),jsxRuntime.jsx(chunkU2HKJB6D_cjs.C,{customization:E.legalDisclaimer})]}):jsxRuntime.jsx(co,{className:D.emptyConnectors?.({modalData:r}),modalData:r,children:"No connectors available"});case "about":return jsxRuntime.jsx(chunkU2HKJB6D_cjs.t,{customization:E.aboutWallets});case "getWallet":return jsxRuntime.jsx(chunkU2HKJB6D_cjs.A,{customization:E.getWallet});case "connecting":return jsxRuntime.jsx(chunkU2HKJB6D_cjs.w,{selectedAdapter:c,connectors:M,activeConnector:y,isConnected:W,customization:E.connecting});case "impersonate":return jsxRuntime.jsx(chunkU2HKJB6D_cjs.B,{selectedAdapter:c,impersonatedAddress:N,setImpersonatedAddress:w,customization:E.impersonateForm})}},[u,y,M,po,E,C,c,K,W,N]),_=react.useCallback(()=>{switch(u){case "connectors":return {title:d.iDontHaveWallet,onClick:()=>{m.onActionClick?.connectors?m.onActionClick.connectors(r):f("getWallet");}};case "getWallet":return {title:d.choseWallet,onClick:()=>{m.onActionClick?.getWallet?m.onActionClick.getWallet(r):window.open(orbitCore.getNetworkData(c??Object.keys(C)[0])?.links?.choseWallet,"_blank","noopener,noreferrer");}};case "about":return {title:d.learnMore,onClick:()=>{m.onActionClick?.about?m.onActionClick.about(r):window.open(orbitCore.getNetworkData(c??Object.keys(C)[0])?.links?.about,"_blank","noopener,noreferrer");}};case "impersonate":return {title:d.connect,onClick:async()=>{if(m.onActionClick?.impersonate)await m.onActionClick.impersonate(r);else {let l=N.trim();if(T||!l||!orbitCore.isAddress(l)||U?.isConnected)return;orbitCore.impersonatedHelpers.setImpersonated(l),f("connecting"),await $(orbitCore.getConnectorTypeFromName(c??orbitCore.OrbitAdapter.EVM,y??""),c??orbitCore.OrbitAdapter.EVM);}}};case "connecting":return T&&c&&y?{title:d.tryAgain,onClick:async()=>{m.onActionClick?.connecting?await m.onActionClick.connecting(r):await $(orbitCore.getConnectorTypeFromName(c,y),c);}}:void 0}},[u,d,m,r,c,C,N,T,$,y])(),dt=react.useCallback(()=>{switch(u){case "getWallet":return "Opens external wallet selection page";case "about":return "Opens external documentation";case "impersonate":return "Connects with impersonated wallet address";case "connecting":return "Retries wallet connection";default:return ""}},[u]);return jsxRuntime.jsx(j,{open:e,onOpenChange:oo,children:jsxRuntime.jsx(bo,{className:novaCore.cn("novacon:w-full novacon:sm:max-w-md"),children:jsxRuntime.jsx(mo,{layout:true,transition:{layout:{duration:k.animation?.disabled?0:k.animation?.layoutDuration??1e-4}},children:jsxRuntime.jsxs(p,{className:D.modalContainer?.({modalData:r}),modalData:r,children:[jsxRuntime.jsxs(g,{className:D.header?.({modalData:r}),modalData:r,children:[jsxRuntime.jsxs(V,{className:D.title?.({modalData:r}),modalData:r,children:[u==="connectors"&&jsxRuntime.jsx(P,{className:D.infoButton?.({modalData:r}),onClick:yo,"aria-label":k.ariaLabels?.infoButton?.(r)||`${d.learnMore} ${d.aboutWallets}`,modalData:r}),no()]}),jsxRuntime.jsx(q,{className:D.closeButton?.({modalData:r}),onClick:()=>oo(false),"aria-label":k.ariaLabels?.closeButton?.(r)||d.closeModal,modalData:r})]}),jsxRuntime.jsx(J,{className:D.mainContent?.({modalData:r}),modalData:r,children:ct()}),jsxRuntime.jsxs(Q,{className:D.footer?.({modalData:r}),modalData:r,children:[jsxRuntime.jsx("div",{className:"novacon:flex novacon:items-center novacon:gap-4",children:u!=="connectors"&&jsxRuntime.jsx(X,{className:D.backButton?.({modalData:r}),onClick:ro,"aria-label":k.ariaLabels?.backButton?.(r)||`${d.back} to previous step`,modalData:r,children:d.back})}),_&&jsxRuntime.jsxs("div",{className:"novacon:flex novacon:items-center novacon:gap-3",children:[jsxRuntime.jsx(lo,{className:D.actionButton?.({modalData:r,buttonConfig:_}),onClick:_.onClick,disabled:_.disabled,loading:_.loading,"aria-describedby":"bottom-action-description",modalData:r,buttonConfig:_,children:_.title}),jsxRuntime.jsx(Y,{id:"bottom-action-description",className:D.actionDescription?.({modalData:r}),modalData:r,children:dt()})]})]})]})})})})});ho.displayName="ConnectModal";var Vt=({labels:o,children:t})=>jsxRuntime.jsx(No,{labels:o,children:t}),Ut=({customization:o})=>jsxRuntime.jsx(Eo,{customization:o}),Gt=(o,t)=>novaCore.deepMerge(o,t||{}),jt=o=>o,$t=o=>o,Kt=(o,t,n)=>o;function _t({labels:o,children:t,appChains:n,solanaRPCUrls:a,transactionPool:e,pulsarAdapter:b,withImpersonated:f,withBalance:x,withChain:w,legal:S,customization:u}){let c=chunk2SFIZVDC_cjs.h(K=>K.activeConnection),O=chunk2SFIZVDC_cjs.h(K=>K.connectionError),{LabelsProvider:W=Vt,ErrorsProvider:y=Ut}=u?.components??{},{merge:N=Gt,transform:T=jt}=u?.labels??{},{transform:B=$t}=u?.contextValue??{},{providerTree:s=Kt}=u?.rendering??{},U=react.useMemo(()=>N(chunkMGBN4EIT_cjs.a,o||{}),[o,N]),[d,G]=react.useState(false),[C,M]=react.useState(false),[H,r]=react.useState(false),[v,D]=react.useState(false),[m,k]=react.useState("idle"),[E,p]=react.useState("connectors"),[g,P]=react.useState(void 0),[V,q]=react.useState(void 0),[J,Q]=react.useState(""),[X,lo]=react.useState(false),[Y,co]=react.useState("main"),j=react.useMemo(()=>({isConnected:X,activeConnection:c,connectionError:O,modalStates:{isConnectModalOpen:d,isConnectedModalOpen:C,isChainsListOpen:H,isChainsListOpenMobile:v},contentTypes:{connectModal:E,connectedModal:Y},statuses:{connectedButton:m}}),[X,c,O,d,C,H,v,E,Y,m]),bo=react.useMemo(()=>T(U,j),[U,T,j]),mo=react.useMemo(()=>B({appChains:n,solanaRPCUrls:a,withImpersonated:f,withBalance:x,withChain:w,isConnectModalOpen:d,setIsConnectModalOpen:G,isConnectedModalOpen:C,setIsConnectedModalOpen:M,isChainsListOpen:H,setIsChainsListOpen:r,isChainsListOpenMobile:v,setIsChainsListOpenMobile:D,connectedButtonStatus:m,setConnectedButtonStatus:k,connectedModalContentType:Y,setConnectedModalContentType:co,connectModalContentType:E,setConnectModalContentType:p,selectedAdapter:g,setSelectedAdapter:P,activeConnector:V,setActiveConnector:q,impersonatedAddress:J,setImpersonatedAddress:Q,isConnected:X,setIsConnected:lo,legal:S},j),[n,a,f,x,w,d,G,C,M,H,r,v,D,m,k,Y,co,E,p,g,P,V,q,J,Q,X,lo,S,B,j]),no=jsxRuntime.jsx(y,{customization:u?.errors}),Z=jsxRuntime.jsx(W,{labels:bo,children:t}),oo=n||a?jsxRuntime.jsx(ho,{withImpersonated:f,solanaRPCUrls:a,appChains:n,customization:u?.modals?.connectModal}):null,ro=n||a?jsxRuntime.jsx(chunkU2HKJB6D_cjs.s,{solanaRPCUrls:a,appChains:n,transactionPool:e,pulsarAdapter:b,customization:u?.modals?.connectedModal}):null,yo=jsxRuntime.jsxs(chunkV3D3HT6N_cjs.c.Provider,{value:mo,children:[no,Z,oo,ro]}),$=jsxRuntime.jsxs(chunkV3D3HT6N_cjs.c.Provider,{value:mo,children:[no,Z,oo,ro]}),po=s($,{ErrorsProvider:no,LabelsProvider:Z,MainContent:yo,ConnectModal:oo||jsxRuntime.jsx(jsxRuntime.Fragment,{}),ConnectedModal:ro||jsxRuntime.jsx(jsxRuntime.Fragment,{})},j);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:po})}_t.displayName="NovaConnectProvider";async function Xn(){let{getAllAdaptersStatus:o}=await import('./getChainsListByConnectorType-QCNOPM6I.cjs');return {hasEvmUtils:await vo(),hasSolanaUtils:await go(),adaptersStatus:o()}}async function vo(){try{return await import('viem'),await import('@tuwaio/orbit-evm'),!0}catch{return false}}async function go(){try{return await import('gill'),await import('@tuwaio/orbit-solana'),!0}catch{return false}}async function Yn(){try{if(!await vo())return {available:!1,error:"EVM packages (viem, @tuwaio/orbit-evm) not available"};let t=await import('./evm/index.cjs'),n=await t.getEvmExports();return n.available?{...t,...n}:{available:!1,error:n.error||"Failed to load EVM exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"EVM utilities not available"}}}async function Zn(){try{if(!await go())return {available:!1,error:"Solana packages (gill, @tuwaio/orbit-solana) not available"};let t=await import('./solana/index.cjs'),n=await t.getSolanaExports();return n.available?{...t,...n}:{available:!1,error:n.error||"Failed to load Solana exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"Solana utilities not available"}}}async function or(){let o={evm:false,solana:false,errors:[]};try{let t=await vo(),n=await go();if(t||n){let{preloadChainAdapters:a}=await import('./getChainsListByConnectorType-QCNOPM6I.cjs'),e=[];t&&e.push(orbitCore.OrbitAdapter.EVM),n&&e.push(orbitCore.OrbitAdapter.SOLANA),await a(e),o.evm=t,o.solana=n;}else o.errors.push("No blockchain packages available for initialization");}catch(t){let n=t instanceof Error?t.message:"Unknown initialization error";o.errors.push(n);}return o}async function tr(o){return o===orbitCore.OrbitAdapter.Starknet||o!==orbitCore.OrbitAdapter.EVM&&o!==orbitCore.OrbitAdapter.SOLANA?false:o===orbitCore.OrbitAdapter.EVM?vo():go()}Object.defineProperty(exports,"NovaConnectLabelsContext",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.g}});Object.defineProperty(exports,"NovaConnectProviderContext",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.c}});Object.defineProperty(exports,"NovaConnectProviderError",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.b}});Object.defineProperty(exports,"createLabelsSubset",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.o}});Object.defineProperty(exports,"getAvailableChainIds",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.q}});Object.defineProperty(exports,"getAvailableSolanaClusters",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.v}});Object.defineProperty(exports,"getConnectChainId",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.p}});Object.defineProperty(exports,"getFilteredConnectors",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.t}});Object.defineProperty(exports,"getGroupedConnectors",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.r}});Object.defineProperty(exports,"getLabelWithFallback",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.n}});Object.defineProperty(exports,"hasAvailableConnectors",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.s}});Object.defineProperty(exports,"hasConnectorsForAdapter",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.u}});Object.defineProperty(exports,"hasLabel",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.k}});Object.defineProperty(exports,"isDefaultLabels",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.m}});Object.defineProperty(exports,"isValidSolanaCluster",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.w}});Object.defineProperty(exports,"useGetWalletNameAndAvatar",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.a}});Object.defineProperty(exports,"useHasNovaConnectContext",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.e}});Object.defineProperty(exports,"useLabelsByCategory",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.l}});Object.defineProperty(exports,"useNovaConnect",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.d}});Object.defineProperty(exports,"useNovaConnectLabel",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.i}});Object.defineProperty(exports,"useNovaConnectLabels",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.h}});Object.defineProperty(exports,"useNovaConnectLabelsSubset",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.j}});Object.defineProperty(exports,"useNovaConnectOptional",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.f}});Object.defineProperty(exports,"useWalletChainsList",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.x}});Object.defineProperty(exports,"useWalletNativeBalance",{enumerable:true,get:function(){return chunkV3D3HT6N_cjs.y}});Object.defineProperty(exports,"getAdapterStatus",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.k}});Object.defineProperty(exports,"getAllAdaptersStatus",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.l}});Object.defineProperty(exports,"getAvailableSolanaClustersAsync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.g}});Object.defineProperty(exports,"getChainsListByConnectorType",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.b}});Object.defineProperty(exports,"getChainsListByConnectorTypeAsync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.a}});Object.defineProperty(exports,"getChainsListByConnectorTypeSync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.b}});Object.defineProperty(exports,"getWalletChains",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.i}});Object.defineProperty(exports,"isEvmChainList",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.e}});Object.defineProperty(exports,"isEvmChainListAsync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.c}});Object.defineProperty(exports,"isEvmChainListSync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.e}});Object.defineProperty(exports,"isSolanaChainList",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.f}});Object.defineProperty(exports,"isSolanaChainListAsync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.d}});Object.defineProperty(exports,"isSolanaChainListSync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.f}});Object.defineProperty(exports,"isValidSolanaClusterAsync",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.h}});Object.defineProperty(exports,"preloadChainAdapters",{enumerable:true,get:function(){return chunkK44IHM6B_cjs.j}});exports.ErrorsProvider=Eo;exports.NovaConnectLabelsProvider=No;exports.NovaConnectProvider=_t;exports.getBlockchainUtilities=Xn;exports.getEvmUtils=Yn;exports.getSolanaUtils=Zn;exports.initializeBlockchainSupport=or;exports.isAdapterSupported=tr;
|
package/dist/index.css
CHANGED
|
@@ -65,6 +65,9 @@
|
|
|
65
65
|
.novacon\:inset-0 {
|
|
66
66
|
inset: calc(var(--novacon-spacing) * 0);
|
|
67
67
|
}
|
|
68
|
+
.novacon\:inset-\[-4px\] {
|
|
69
|
+
inset: -4px;
|
|
70
|
+
}
|
|
68
71
|
.novacon\:inset-\[1px\] {
|
|
69
72
|
inset: 1px;
|
|
70
73
|
}
|
|
@@ -116,9 +119,6 @@
|
|
|
116
119
|
.novacon\:right-\[-10px\] {
|
|
117
120
|
right: -10px;
|
|
118
121
|
}
|
|
119
|
-
.novacon\:right-\[-30px\] {
|
|
120
|
-
right: -30px;
|
|
121
|
-
}
|
|
122
122
|
.novacon\:right-\[-40px\] {
|
|
123
123
|
right: -40px;
|
|
124
124
|
}
|
|
@@ -284,12 +284,12 @@
|
|
|
284
284
|
.novacon\:h-20 {
|
|
285
285
|
height: calc(var(--novacon-spacing) * 20);
|
|
286
286
|
}
|
|
287
|
-
.novacon\:h-28 {
|
|
288
|
-
height: calc(var(--novacon-spacing) * 28);
|
|
289
|
-
}
|
|
290
287
|
.novacon\:h-32 {
|
|
291
288
|
height: calc(var(--novacon-spacing) * 32);
|
|
292
289
|
}
|
|
290
|
+
.novacon\:h-36 {
|
|
291
|
+
height: calc(var(--novacon-spacing) * 36);
|
|
292
|
+
}
|
|
293
293
|
.novacon\:h-48 {
|
|
294
294
|
height: calc(var(--novacon-spacing) * 48);
|
|
295
295
|
}
|
|
@@ -299,6 +299,9 @@
|
|
|
299
299
|
.novacon\:h-\[2px\] {
|
|
300
300
|
height: 2px;
|
|
301
301
|
}
|
|
302
|
+
.novacon\:h-\[42px\] {
|
|
303
|
+
height: 42px;
|
|
304
|
+
}
|
|
302
305
|
.novacon\:h-\[125px\] {
|
|
303
306
|
height: 125px;
|
|
304
307
|
}
|
|
@@ -371,12 +374,12 @@
|
|
|
371
374
|
.novacon\:w-24 {
|
|
372
375
|
width: calc(var(--novacon-spacing) * 24);
|
|
373
376
|
}
|
|
374
|
-
.novacon\:w-28 {
|
|
375
|
-
width: calc(var(--novacon-spacing) * 28);
|
|
376
|
-
}
|
|
377
377
|
.novacon\:w-32 {
|
|
378
378
|
width: calc(var(--novacon-spacing) * 32);
|
|
379
379
|
}
|
|
380
|
+
.novacon\:w-36 {
|
|
381
|
+
width: calc(var(--novacon-spacing) * 36);
|
|
382
|
+
}
|
|
380
383
|
.novacon\:w-48 {
|
|
381
384
|
width: calc(var(--novacon-spacing) * 48);
|
|
382
385
|
}
|
|
@@ -386,6 +389,9 @@
|
|
|
386
389
|
.novacon\:w-\[1px\] {
|
|
387
390
|
width: 1px;
|
|
388
391
|
}
|
|
392
|
+
.novacon\:w-\[42px\] {
|
|
393
|
+
width: 42px;
|
|
394
|
+
}
|
|
389
395
|
.novacon\:w-\[125px\] {
|
|
390
396
|
width: 125px;
|
|
391
397
|
}
|
|
@@ -761,6 +767,9 @@
|
|
|
761
767
|
.novacon\:py-\[24px\] {
|
|
762
768
|
padding-block: 24px;
|
|
763
769
|
}
|
|
770
|
+
.novacon\:pt-3 {
|
|
771
|
+
padding-top: calc(var(--novacon-spacing) * 3);
|
|
772
|
+
}
|
|
764
773
|
.novacon\:pt-4 {
|
|
765
774
|
padding-top: calc(var(--novacon-spacing) * 4);
|
|
766
775
|
}
|
|
@@ -880,6 +889,9 @@
|
|
|
880
889
|
.novacon\:uppercase {
|
|
881
890
|
text-transform: uppercase;
|
|
882
891
|
}
|
|
892
|
+
.novacon\:underline {
|
|
893
|
+
text-decoration-line: underline;
|
|
894
|
+
}
|
|
883
895
|
.novacon\:opacity-0 {
|
|
884
896
|
opacity: 0%;
|
|
885
897
|
}
|
|
@@ -1498,11 +1510,21 @@
|
|
|
1498
1510
|
height: calc(var(--novacon-spacing) * 32);
|
|
1499
1511
|
}
|
|
1500
1512
|
}
|
|
1513
|
+
.novacon\:sm\:h-\[32px\] {
|
|
1514
|
+
@media (width >= 40rem) {
|
|
1515
|
+
height: 32px;
|
|
1516
|
+
}
|
|
1517
|
+
}
|
|
1501
1518
|
.novacon\:sm\:w-32 {
|
|
1502
1519
|
@media (width >= 40rem) {
|
|
1503
1520
|
width: calc(var(--novacon-spacing) * 32);
|
|
1504
1521
|
}
|
|
1505
1522
|
}
|
|
1523
|
+
.novacon\:sm\:w-\[32px\] {
|
|
1524
|
+
@media (width >= 40rem) {
|
|
1525
|
+
width: 32px;
|
|
1526
|
+
}
|
|
1527
|
+
}
|
|
1506
1528
|
.novacon\:sm\:max-w-md {
|
|
1507
1529
|
@media (width >= 40rem) {
|
|
1508
1530
|
max-width: var(--novacon-container-md);
|
|
@@ -1602,16 +1624,6 @@
|
|
|
1602
1624
|
padding-inline: calc(var(--novacon-spacing) * 4);
|
|
1603
1625
|
}
|
|
1604
1626
|
}
|
|
1605
|
-
.novacon\:\[\&_img\]\:h-4 {
|
|
1606
|
-
& img {
|
|
1607
|
-
height: calc(var(--novacon-spacing) * 4);
|
|
1608
|
-
}
|
|
1609
|
-
}
|
|
1610
|
-
.novacon\:\[\&_img\]\:h-6 {
|
|
1611
|
-
& img {
|
|
1612
|
-
height: calc(var(--novacon-spacing) * 6);
|
|
1613
|
-
}
|
|
1614
|
-
}
|
|
1615
1627
|
.novacon\:\[\&_img\]\:h-6\! {
|
|
1616
1628
|
& img {
|
|
1617
1629
|
height: calc(var(--novacon-spacing) * 6) !important;
|
|
@@ -1627,16 +1639,6 @@
|
|
|
1627
1639
|
height: auto !important;
|
|
1628
1640
|
}
|
|
1629
1641
|
}
|
|
1630
|
-
.novacon\:\[\&_img\]\:w-4 {
|
|
1631
|
-
& img {
|
|
1632
|
-
width: calc(var(--novacon-spacing) * 4);
|
|
1633
|
-
}
|
|
1634
|
-
}
|
|
1635
|
-
.novacon\:\[\&_img\]\:w-6 {
|
|
1636
|
-
& img {
|
|
1637
|
-
width: calc(var(--novacon-spacing) * 6);
|
|
1638
|
-
}
|
|
1639
|
-
}
|
|
1640
1642
|
.novacon\:\[\&_img\]\:w-6\! {
|
|
1641
1643
|
& img {
|
|
1642
1644
|
width: calc(var(--novacon-spacing) * 6) !important;
|
|
@@ -1708,19 +1710,115 @@
|
|
|
1708
1710
|
}
|
|
1709
1711
|
}
|
|
1710
1712
|
}
|
|
1711
|
-
.novacon\:\[
|
|
1712
|
-
|
|
1713
|
-
height:
|
|
1713
|
+
.novacon\:\[\&_svg\]\:h-4 {
|
|
1714
|
+
& svg {
|
|
1715
|
+
height: calc(var(--novacon-spacing) * 4);
|
|
1714
1716
|
}
|
|
1715
1717
|
}
|
|
1716
|
-
.novacon\:\[
|
|
1717
|
-
|
|
1718
|
-
height:
|
|
1718
|
+
.novacon\:\[\&_svg\]\:h-6 {
|
|
1719
|
+
& svg {
|
|
1720
|
+
height: calc(var(--novacon-spacing) * 6);
|
|
1721
|
+
}
|
|
1722
|
+
}
|
|
1723
|
+
.novacon\:\[\&_svg\]\:h-6\! {
|
|
1724
|
+
& svg {
|
|
1725
|
+
height: calc(var(--novacon-spacing) * 6) !important;
|
|
1726
|
+
}
|
|
1727
|
+
}
|
|
1728
|
+
.novacon\:\[\&_svg\]\:h-\[42px\]\! {
|
|
1729
|
+
& svg {
|
|
1730
|
+
height: 42px !important;
|
|
1731
|
+
}
|
|
1732
|
+
}
|
|
1733
|
+
.novacon\:\[\&_svg\]\:h-\[auto\]\! {
|
|
1734
|
+
& svg {
|
|
1735
|
+
height: auto !important;
|
|
1736
|
+
}
|
|
1737
|
+
}
|
|
1738
|
+
.novacon\:\[\&_svg\]\:w-4 {
|
|
1739
|
+
& svg {
|
|
1740
|
+
width: calc(var(--novacon-spacing) * 4);
|
|
1741
|
+
}
|
|
1742
|
+
}
|
|
1743
|
+
.novacon\:\[\&_svg\]\:w-6 {
|
|
1744
|
+
& svg {
|
|
1745
|
+
width: calc(var(--novacon-spacing) * 6);
|
|
1719
1746
|
}
|
|
1720
1747
|
}
|
|
1721
|
-
.novacon\:\[
|
|
1748
|
+
.novacon\:\[\&_svg\]\:w-6\! {
|
|
1749
|
+
& svg {
|
|
1750
|
+
width: calc(var(--novacon-spacing) * 6) !important;
|
|
1751
|
+
}
|
|
1752
|
+
}
|
|
1753
|
+
.novacon\:\[\&_svg\]\:w-\[42px\]\! {
|
|
1754
|
+
& svg {
|
|
1755
|
+
width: 42px !important;
|
|
1756
|
+
}
|
|
1757
|
+
}
|
|
1758
|
+
.novacon\:\[\&_svg\]\:w-\[60px\]\! {
|
|
1759
|
+
& svg {
|
|
1760
|
+
width: 60px !important;
|
|
1761
|
+
}
|
|
1762
|
+
}
|
|
1763
|
+
.novacon\:\[\&_svg\]\:transition-transform {
|
|
1764
|
+
& svg {
|
|
1765
|
+
transition-property: transform, translate, scale, rotate;
|
|
1766
|
+
transition-timing-function: var(--tw-ease, var(--novacon-default-transition-timing-function));
|
|
1767
|
+
transition-duration: var(--tw-duration, var(--novacon-default-transition-duration));
|
|
1768
|
+
}
|
|
1769
|
+
}
|
|
1770
|
+
.novacon\:\[\&_svg\]\:duration-200 {
|
|
1771
|
+
& svg {
|
|
1772
|
+
--tw-duration: 200ms;
|
|
1773
|
+
transition-duration: 200ms;
|
|
1774
|
+
}
|
|
1775
|
+
}
|
|
1776
|
+
.novacon\:hover\:\[\&_svg\]\:scale-95 {
|
|
1777
|
+
&:hover {
|
|
1778
|
+
@media (hover: hover) {
|
|
1779
|
+
& svg {
|
|
1780
|
+
--tw-scale-x: 95%;
|
|
1781
|
+
--tw-scale-y: 95%;
|
|
1782
|
+
--tw-scale-z: 95%;
|
|
1783
|
+
scale: var(--tw-scale-x) var(--tw-scale-y);
|
|
1784
|
+
}
|
|
1785
|
+
}
|
|
1786
|
+
}
|
|
1787
|
+
}
|
|
1788
|
+
.novacon\:active\:\[\&_svg\]\:scale-85 {
|
|
1789
|
+
&:active {
|
|
1790
|
+
& svg {
|
|
1791
|
+
--tw-scale-x: 85%;
|
|
1792
|
+
--tw-scale-y: 85%;
|
|
1793
|
+
--tw-scale-z: 85%;
|
|
1794
|
+
scale: var(--tw-scale-x) var(--tw-scale-y);
|
|
1795
|
+
}
|
|
1796
|
+
}
|
|
1797
|
+
}
|
|
1798
|
+
.novacon\:sm\:\[\&_svg\]\:h-\[32px\]\! {
|
|
1799
|
+
@media (width >= 40rem) {
|
|
1800
|
+
& svg {
|
|
1801
|
+
height: 32px !important;
|
|
1802
|
+
}
|
|
1803
|
+
}
|
|
1804
|
+
}
|
|
1805
|
+
.novacon\:sm\:\[\&_svg\]\:w-\[32px\]\! {
|
|
1806
|
+
@media (width >= 40rem) {
|
|
1807
|
+
& svg {
|
|
1808
|
+
width: 32px !important;
|
|
1809
|
+
}
|
|
1810
|
+
}
|
|
1811
|
+
}
|
|
1812
|
+
.novacon\:md\:\[\&_svg\]\:w-\[80px\]\! {
|
|
1813
|
+
@media (width >= 48rem) {
|
|
1814
|
+
& svg {
|
|
1815
|
+
width: 80px !important;
|
|
1816
|
+
}
|
|
1817
|
+
}
|
|
1818
|
+
}
|
|
1819
|
+
.novacon\:\[\&\>img\]\:h-full\! {
|
|
1722
1820
|
&>img {
|
|
1723
|
-
|
|
1821
|
+
height: 100% !important;
|
|
1724
1822
|
}
|
|
1725
1823
|
}
|
|
1726
1824
|
.novacon\:\[\&\>img\]\:w-full\! {
|
package/dist/index.d.cts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { OrbitAdapter, ConnectorType, ChainIdentifierArray } from '@tuwaio/orbit-core';
|
|
2
2
|
export { WalletNameAndAvatarData, useGetWalletNameAndAvatar, useWalletChainsList } from './hooks/index.cjs';
|
|
3
|
-
import { C as ConnectContentType, a as ConnectedContentType, B as ButtonTxStatus, N as NovaConnectProviderType, b as NovaConnectProviderProps, I as InitialChains } from './useWalletNativeBalance-
|
|
4
|
-
export { A as AllChainConfigs,
|
|
3
|
+
import { C as ConnectContentType, a as ConnectedContentType, B as ButtonTxStatus, N as NovaConnectProviderType, b as NovaConnectProviderProps, I as InitialChains } from './useWalletNativeBalance-rZ2GQ88f.cjs';
|
|
4
|
+
export { A as AllChainConfigs, l as LabelCategory, L as LegalConfig, q as NativeBalanceResult, g as NovaConnectLabelsContext, d as NovaConnectProviderContext, c as NovaConnectProviderError, W as WalletBalance, p as createLabelsSubset, o as getLabelWithFallback, k as hasLabel, n as isDefaultLabels, e as useHasNovaConnectContext, m as useLabelsByCategory, u as useNovaConnect, i as useNovaConnectLabel, h as useNovaConnectLabels, j as useNovaConnectLabelsSubset, f as useNovaConnectOptional, r as useWalletNativeBalance } from './useWalletNativeBalance-rZ2GQ88f.cjs';
|
|
5
5
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
6
|
+
import { ToastCloseButtonProps } from '@tuwaio/nova-core';
|
|
6
7
|
import { ComponentPropsWithoutRef, ComponentType, ReactNode } from 'react';
|
|
7
8
|
import { ToastContainer, toast, ToastPosition } from 'react-toastify';
|
|
8
|
-
import {
|
|
9
|
-
import { N as NovaConnectLabels } from './types-
|
|
9
|
+
import { T as ToastErrorCustomization, C as ConnectModalCustomization, a as ConnectedModalCustomization } from './index-B9pJ-IAo.cjs';
|
|
10
|
+
import { N as NovaConnectLabels } from './types-DxUn8qmU.cjs';
|
|
10
11
|
import { BaseConnector } from '@tuwaio/satellite-core';
|
|
11
12
|
import { Connector } from '@tuwaio/satellite-react';
|
|
12
13
|
import '@tuwaio/pulsar-core';
|
|
13
|
-
import '@tuwaio/nova-core';
|
|
14
14
|
import 'framer-motion';
|
|
15
15
|
import '@radix-ui/react-select';
|
|
16
16
|
|
|
@@ -37,6 +37,8 @@ type ErrorsProviderCustomization = {
|
|
|
37
37
|
};
|
|
38
38
|
/** Default ToastError customization (only used with default ToastError component) */
|
|
39
39
|
toastErrorCustomization?: ToastErrorCustomization;
|
|
40
|
+
/** Customization for toast close button */
|
|
41
|
+
toastCloseButton?: Omit<ToastCloseButtonProps, 'closeToast'>;
|
|
40
42
|
/** Custom class name generators */
|
|
41
43
|
classNames?: {
|
|
42
44
|
/** Function to generate container classes */
|
|
@@ -286,7 +288,7 @@ interface NovaConnectProviderPropsWithCustomization extends NovaConnectProviderP
|
|
|
286
288
|
*
|
|
287
289
|
* @param props - Provider configuration and customization options
|
|
288
290
|
*/
|
|
289
|
-
declare function NovaConnectProvider({ labels, children, appChains, solanaRPCUrls, transactionPool, pulsarAdapter, withImpersonated, withBalance, withChain, customization, }: NovaConnectProviderPropsWithCustomization): react_jsx_runtime.JSX.Element;
|
|
291
|
+
declare function NovaConnectProvider({ labels, children, appChains, solanaRPCUrls, transactionPool, pulsarAdapter, withImpersonated, withBalance, withChain, legal, customization, }: NovaConnectProviderPropsWithCustomization): react_jsx_runtime.JSX.Element;
|
|
290
292
|
declare namespace NovaConnectProvider {
|
|
291
293
|
var displayName: string;
|
|
292
294
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { OrbitAdapter, ConnectorType, ChainIdentifierArray } from '@tuwaio/orbit-core';
|
|
2
2
|
export { WalletNameAndAvatarData, useGetWalletNameAndAvatar, useWalletChainsList } from './hooks/index.js';
|
|
3
|
-
import { C as ConnectContentType, a as ConnectedContentType, B as ButtonTxStatus, N as NovaConnectProviderType, b as NovaConnectProviderProps, I as InitialChains } from './useWalletNativeBalance-
|
|
4
|
-
export { A as AllChainConfigs,
|
|
3
|
+
import { C as ConnectContentType, a as ConnectedContentType, B as ButtonTxStatus, N as NovaConnectProviderType, b as NovaConnectProviderProps, I as InitialChains } from './useWalletNativeBalance-DR8XONYI.js';
|
|
4
|
+
export { A as AllChainConfigs, l as LabelCategory, L as LegalConfig, q as NativeBalanceResult, g as NovaConnectLabelsContext, d as NovaConnectProviderContext, c as NovaConnectProviderError, W as WalletBalance, p as createLabelsSubset, o as getLabelWithFallback, k as hasLabel, n as isDefaultLabels, e as useHasNovaConnectContext, m as useLabelsByCategory, u as useNovaConnect, i as useNovaConnectLabel, h as useNovaConnectLabels, j as useNovaConnectLabelsSubset, f as useNovaConnectOptional, r as useWalletNativeBalance } from './useWalletNativeBalance-DR8XONYI.js';
|
|
5
5
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
6
|
+
import { ToastCloseButtonProps } from '@tuwaio/nova-core';
|
|
6
7
|
import { ComponentPropsWithoutRef, ComponentType, ReactNode } from 'react';
|
|
7
8
|
import { ToastContainer, toast, ToastPosition } from 'react-toastify';
|
|
8
|
-
import {
|
|
9
|
-
import { N as NovaConnectLabels } from './types-
|
|
9
|
+
import { T as ToastErrorCustomization, C as ConnectModalCustomization, a as ConnectedModalCustomization } from './index-BkbAcDWt.js';
|
|
10
|
+
import { N as NovaConnectLabels } from './types-DxUn8qmU.js';
|
|
10
11
|
import { BaseConnector } from '@tuwaio/satellite-core';
|
|
11
12
|
import { Connector } from '@tuwaio/satellite-react';
|
|
12
13
|
import '@tuwaio/pulsar-core';
|
|
13
|
-
import '@tuwaio/nova-core';
|
|
14
14
|
import 'framer-motion';
|
|
15
15
|
import '@radix-ui/react-select';
|
|
16
16
|
|
|
@@ -37,6 +37,8 @@ type ErrorsProviderCustomization = {
|
|
|
37
37
|
};
|
|
38
38
|
/** Default ToastError customization (only used with default ToastError component) */
|
|
39
39
|
toastErrorCustomization?: ToastErrorCustomization;
|
|
40
|
+
/** Customization for toast close button */
|
|
41
|
+
toastCloseButton?: Omit<ToastCloseButtonProps, 'closeToast'>;
|
|
40
42
|
/** Custom class name generators */
|
|
41
43
|
classNames?: {
|
|
42
44
|
/** Function to generate container classes */
|
|
@@ -286,7 +288,7 @@ interface NovaConnectProviderPropsWithCustomization extends NovaConnectProviderP
|
|
|
286
288
|
*
|
|
287
289
|
* @param props - Provider configuration and customization options
|
|
288
290
|
*/
|
|
289
|
-
declare function NovaConnectProvider({ labels, children, appChains, solanaRPCUrls, transactionPool, pulsarAdapter, withImpersonated, withBalance, withChain, customization, }: NovaConnectProviderPropsWithCustomization): react_jsx_runtime.JSX.Element;
|
|
291
|
+
declare function NovaConnectProvider({ labels, children, appChains, solanaRPCUrls, transactionPool, pulsarAdapter, withImpersonated, withBalance, withChain, legal, customization, }: NovaConnectProviderPropsWithCustomization): react_jsx_runtime.JSX.Element;
|
|
290
292
|
declare namespace NovaConnectProvider {
|
|
291
293
|
var displayName: string;
|
|
292
294
|
}
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {A,v,z,s,C,y,B,r,D}from'./chunk-LXZIVQLW.js';import {d,h as h$1,t,p,g,c}from'./chunk-YO3PXLI4.js';export{g as NovaConnectLabelsContext,c as NovaConnectProviderContext,b as NovaConnectProviderError,o as createLabelsSubset,q as getAvailableChainIds,v as getAvailableSolanaClusters,p as getConnectChainId,t as getFilteredConnectors,r as getGroupedConnectors,n as getLabelWithFallback,s as hasAvailableConnectors,u as hasConnectorsForAdapter,k as hasLabel,m as isDefaultLabels,w as isValidSolanaCluster,a as useGetWalletNameAndAvatar,e as useHasNovaConnectContext,l as useLabelsByCategory,d as useNovaConnect,i as useNovaConnectLabel,h as useNovaConnectLabels,j as useNovaConnectLabelsSubset,f as useNovaConnectOptional,x as useWalletChainsList,y as useWalletNativeBalance}from'./chunk-YO3PXLI4.js';export{k as getAdapterStatus,l as getAllAdaptersStatus,g as getAvailableSolanaClustersAsync,b as getChainsListByConnectorType,a as getChainsListByConnectorTypeAsync,b as getChainsListByConnectorTypeSync,i as getWalletChains,e as isEvmChainList,c as isEvmChainListAsync,e as isEvmChainListSync,f as isSolanaChainList,d as isSolanaChainListAsync,f as isSolanaChainListSync,h as isValidSolanaClusterAsync,j as preloadChainAdapters}from'./chunk-S3IRVZMG.js';import {a}from'./chunk-T6H7HGCM.js';import {h,f}from'./chunk-S3RQJGCL.js';import {waitFor,delay,formatConnectorName,getConnectorTypeFromName,isAddress,impersonatedHelpers,OrbitAdapter,getNetworkData}from'@tuwaio/orbit-core';import {cn,DialogHeader,DialogTitle,DialogClose,CloseIcon,standardButtonClasses,Dialog,DialogContent,ToastCloseButton,deepMerge}from'@tuwaio/nova-core';import {forwardRef,memo,useContext,useMemo,useEffect,useCallback,useRef,useState}from'react';import {toast,Bounce,ToastContainer}from'react-toastify';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {InformationCircleIcon}from'@heroicons/react/24/outline';import {motion}from'framer-motion';var ue=({title:o,rawError:e,onCopyComplete:n,errorType:a,isConnected:t,...f})=>jsx(D,{title:o,rawError:e,onCopyComplete:n,customization:f.customization}),Ce=o=>{let e=h$1();return jsx(ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":e.somethingWentWrong})},fe=(o,e)=>{o(e.title,e.rawError,e.errorKey);},ve=o=>{o();},ge=(o,e)=>{o&&process.env.NODE_ENV==="development"&&console.log("Error copied to clipboard:",e.substring(0,100));},be=o=>o,ye=o=>o;function Mo({containerId:o="nova-connect-errors",position:e="top-center",autoClose:n=7e3,draggable:a=false,customization:t}){let f=h$1(),u=h(l=>l.switchNetworkError),x=h(l=>l.activeConnection),B=h(l=>l.connectionError),{ToastError:E=ue,Container:g=Ce}=t?.components??{},{showError:d=fe,dismissError:O=ve,onCopyComplete:H=ge}=t?.handlers??{},{errorTitle:T=be,errorHash:N=ye}=t??{},P=useRef(new Set),R=useRef(null),s=useMemo(()=>{let l=!!B,y=!!u,M=!!x?.isConnected;return {hasWalletError:l,hasSwitchError:y,isConnected:M,hasAnyError:l||y,primaryError:B||u||null,errorType:l?"wallet":y?"switch":null}},[B,u,x?.isConnected]),z=useMemo(()=>{switch(s.errorType){case "wallet":return f.connectionError;case "switch":return f.errorWhenChainSwitching;default:return f.somethingWentWrong}},[s.errorType,f]),m=useMemo(()=>T(z,{errorType:s.errorType}),[T,z,s.errorType]),W=useMemo(()=>s.primaryError?`${s.errorType}-${s.primaryError.substring(0,50)}`:null,[s.primaryError,s.errorType]),C=useMemo(()=>N(W,{primaryError:s.primaryError,errorType:s.errorType}),[N,W,s.primaryError,s.errorType]),D=useCallback(()=>{O(()=>{R.current&&(toast.dismiss(R.current),R.current=null),toast.dismiss({containerId:o});});},[o,O]),F=useCallback((l,y)=>{H(l,y,s.errorType);},[H,s.errorType]),r=useCallback((l,y,M)=>{if(D(),!P.current.has(M))try{let V={containerId:o,toastId:M,onClose:()=>{P.current.delete(M),R.current=null;}},_=t?.toastOptions?.error?.({title:l,rawError:y,errorType:s.errorType,isConnected:s.isConnected}),q={...V,..._};toast.error(jsx(E,{title:l,rawError:y,errorType:s.errorType,isConnected:s.isConnected,onCopyComplete:J=>F(J,y),customization:t?.toastErrorCustomization}),q),P.current.add(M),R.current=M;}catch(V){console.error("Failed to show error toast:",V);}},[D,o,t?.toastOptions?.error,t?.toastErrorCustomization,E,s.errorType,s.isConnected,F]),v=useCallback((l,y,M)=>{d(r,{title:l,rawError:y,errorKey:M,errorType:s.errorType});},[r,d,s.errorType]);useEffect(()=>{let{hasAnyError:l,isConnected:y,primaryError:M}=s;if(y&&!l){D(),P.current.clear();return}if(l&&M&&C){if(y&&s.errorType!=="switch")return;v(m,M,C);}},[s,m,C,v,D]),useEffect(()=>()=>{D(),P.current.clear();},[D]);let b=useMemo(()=>t?.classNames?.container?t.classNames.container({hasErrors:s.hasAnyError,errorType:s.errorType}):"novacon:p-0 novacon:bg-transparent",[t,s.hasAnyError,s.errorType]),p=useMemo(()=>({containerId:o,position:e,closeOnClick:false,icon:false,closeButton:ToastCloseButton,autoClose:n,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:a,pauseOnHover:true,theme:"light",transition:Bounce}),[o,e,n,a]),h$2=useMemo(()=>({...p,...t?.containerProps,className:b}),[p,t?.containerProps,b]);return jsx(g,{...h$2})}Mo.displayName="ErrorsProvider";function Eo({labels:o,children:e}){let n=useMemo(()=>o,[o]);if(process.env.NODE_ENV==="development"){(!o||typeof o!="object")&&console.warn("NovaConnectLabelsProvider: labels prop should be an object");let t=["connectWallet","disconnect","connecting","connected","error","success"].filter(f=>!(f in o));t.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${t.join(", ")}`);}return jsx(g.Provider,{value:n,children:e})}Eo.displayName="NovaConnectLabelsProvider";function ze(o,e){if(!o||!Array.isArray(o)||!e)return;let n=o.find(a=>a&&typeof a=="object"&&"name"in a&&typeof a.name=="string"?formatConnectorName(a.name)===e:false);if(n&&typeof n=="object"&&"name"in n&&typeof n.name=="string")return n.name}var Jo=forwardRef(({className:o,children:e,modalData:n,...a},t)=>jsx("div",{ref:t,className:cn("novacon:relative novacon:flex novacon:w-full novacon:flex-col",o),...a,children:e}));Jo.displayName="DefaultModalContainer";var Qo=forwardRef(({className:o,children:e,modalData:n,...a},t)=>jsx("div",{ref:t,className:o,...a,children:jsx(DialogHeader,{children:e})}));Qo.displayName="DefaultModalHeader";var Xo=forwardRef(({className:o,onClick:e,modalData:n,...a},t)=>jsx("button",{ref:t,className:cn("novacon:cursor-pointer novacon:text-[var(--tuwa-text-secondary)] novacon:transition novacon:duration-300 novacon:ease-in-out novacon:active:scale-75 novacon:hover:scale-110",o),type:"button",onClick:e,...a,children:jsx(InformationCircleIcon,{width:20,height:20,className:"novacon:mr-1","aria-hidden":"true"})}));Xo.displayName="DefaultInfoButton";var Yo=forwardRef(({className:o,children:e,modalData:n,...a},t)=>jsx(DialogTitle,{ref:t,className:cn("novacon:flex novacon:items-center",o),...a,children:e}));Yo.displayName="DefaultTitle";var Zo=forwardRef(({className:o,onClick:e,modalData:n,...a},t)=>jsx(DialogClose,{asChild:true,children:jsx("button",{ref:t,type:"button",onClick:e,className:cn("novacon:cursor-pointer novacon:rounded-full novacon:p-1 novacon:text-[var(--tuwa-text-tertiary)] novacon:transition-colors novacon:hover:bg-[var(--tuwa-bg-muted)] novacon:hover:text-[var(--tuwa-text-primary)]",o),...a,children:jsx(CloseIcon,{"aria-hidden":"true"})})}));Zo.displayName="DefaultCloseButton";var oe=forwardRef(({className:o,children:e,modalData:n,...a},t)=>jsx("main",{ref:t,className:cn("novacon:flex novacon:flex-col novacon:gap-4 novacon:p-4",o),id:"connect-modal-content",role:"main",...a,children:e}));oe.displayName="DefaultMainContent";var ee=forwardRef(({className:o,children:e,modalData:n,...a},t)=>jsx("footer",{ref:t,className:cn("novacon:flex novacon:w-full novacon:items-center novacon:justify-between novacon:border-t novacon:border-[var(--tuwa-border-primary)] novacon:p-4",o),role:"contentinfo",...a,children:e}));ee.displayName="DefaultFooter";var te=forwardRef(({className:o,onClick:e,children:n,modalData:a,...t},f)=>jsx("button",{ref:f,type:"button",onClick:e,className:cn(standardButtonClasses,o),...t,children:n}));te.displayName="DefaultBackButton";var ne=forwardRef(({className:o,onClick:e,children:n,disabled:a,loading:t,buttonConfig:f,modalData:u,...x},B)=>jsx("button",{ref:B,type:"button",onClick:e,disabled:a||t,className:cn(standardButtonClasses,o),...x,children:t?"Loading...":n}));ne.displayName="DefaultActionButton";var re=forwardRef(({className:o,children:e,modalData:n,...a},t)=>jsx("span",{ref:t,className:cn("novacon:sr-only",o),...a,children:e}));re.displayName="DefaultActionDescription";var ae=forwardRef(({children:o,className:e,...n},a)=>{let{modalData:t,...f}=n;return jsx("div",{ref:a,className:e,...f,children:o})});ae.displayName="DefaultEmptyState";var No=memo(({appChains:o,solanaRPCUrls:e,withImpersonated:n,customization:a={}})=>{let{isConnectModalOpen:t$1,setIsConnectModalOpen:f$1,setConnectModalContentType:u,setActiveConnector:x,setImpersonatedAddress:B$1,setIsConnected:E,connectModalContentType:g,selectedAdapter:d$1,setSelectedAdapter:O,isConnected:H,activeConnector:T,impersonatedAddress:N}=d(),P=h(c=>c.connectionError),R=h(c=>c.getConnectors),s$1=h(c=>c.connect),z$1=h(c=>c.activeConnection),m=h$1(),W=useContext(f),C$1=useMemo(()=>{if(t$1)return R()},[t$1,R]),D=useMemo(()=>t({connectors:C$1,selectedAdapter:d$1}),[C$1,d$1]),F=useMemo(()=>P?typeof P=="string"?new Error(P):P:null,[P]),r=useMemo(()=>({contentType:g,selectedAdapter:d$1,activeConnector:T,impersonatedAddress:N,isConnected:H,isOpen:t$1,error:F,connectors:C$1,filteredConnectors:D,labels:m}),[g,d$1,T,N,H,t$1,F,C$1,D,m]);useEffect(()=>{t$1&&(u("connectors"),O(void 0),x(void 0),B$1(""),E(false));},[t$1]);let{components:v$1={},classNames:b={},handlers:p$1={},config:h$2={},childComponents:l={}}=a,y$1=v$1.ModalContainer||Jo,M=v$1.ModalHeader||Qo,V=v$1.InfoButton||Xo,_=v$1.Title||Yo,q=v$1.CloseButton||Zo,J=v$1.MainContent||oe,Q=v$1.Footer||ee,so=v$1.BackButton||te,X=v$1.ActionButton||ne,io=v$1.ActionDescription||re,G=v$1.EmptyState||ae,vo=v$1.Dialog||Dialog,lo=v$1.DialogContent||DialogContent,to=v$1.MotionDiv||motion.div,no=useCallback(()=>{switch(g){case "about":return m.aboutWallets;case "getWallet":return m.getWallet;case "connecting":return d$1&&T&&C$1&&ze(C$1[d$1],T)||m.connectingEllipsis;case "impersonate":return m.connectImpersonatedWallet;default:return m.connectWallet}},[g,d$1,T,C$1,m]),Y=useCallback(()=>"connectors",[g]),Z=useCallback(c=>{p$1?.onOpenChange?p$1.onOpenChange(c,r):f$1(c);},[p$1?.onOpenChange,r,f$1]),go=useCallback(()=>{let c=()=>u(Y());p$1?.onBack?p$1.onBack(r,c):c();},[p$1?.onBack,r,u,Y]),bo=useCallback(()=>{p$1?.onInfoClick?p$1.onInfoClick(r):u("about");},[p$1?.onInfoClick,r,u]),j=useCallback(async(c,yo)=>{await s$1({connectorType:c,chainId:p({appChains:o,selectedAdapter:yo,solanaRPCUrls:e})});try{await waitFor(()=>W?.getState().activeConnection?.isConnected),E(!0);let To=setTimeout(()=>f$1(!1),400),ce=setTimeout(()=>E(!1),500);await delay(null,500),clearTimeout(To),clearTimeout(ce);}catch(To){console.error(To);}},[s$1,o,d$1,e]),$=useCallback(async(c,yo)=>{O(c),u("connecting"),await j(yo,c);},[j]),wo=useCallback(c=>{x(formatConnectorName(c.name)),c.adapters.length===1?(O(c.adapters[0]),u(formatConnectorName(c.name)==="impersonatedwallet"?"impersonate":"connecting")):d$1?u(formatConnectorName(c.name)==="impersonatedwallet"?"impersonate":"connecting"):formatConnectorName(c.name)==="impersonatedwallet"?u("impersonate"):u("network");},[d$1]),ie=useCallback(()=>{switch(g){case "network":return jsx(B,{activeConnector:T,connectors:D,onClick:$,customization:l.networkSelections});case "connectors":return C$1?jsxs(Fragment,{children:[jsx(C,{networks:Object.keys(C$1),selectedAdapter:d$1,onSelect:c=>O(c),customization:l.networkTabs}),jsx(y,{isOnlyOneNetwork:Object.keys(C$1).length===1,connectors:D,selectedAdapter:d$1,onClick:wo,setContentType:u,appChains:o,solanaRPCUrls:e,setIsConnected:E,setIsOpen:f$1,withImpersonated:n,customization:l.connectorsSelections})]}):jsx(G,{className:b.emptyConnectors?.({modalData:r}),modalData:r,children:"No connectors available"});case "about":return jsx(s,{customization:l.aboutWallets});case "getWallet":return jsx(z,{customization:l.getWallet});case "connecting":return jsx(v,{selectedAdapter:d$1,connectors:D,activeConnector:T,isConnected:H,customization:l.connecting});case "impersonate":return jsx(A,{selectedAdapter:d$1,impersonatedAddress:N,setImpersonatedAddress:B$1,customization:l.impersonateForm})}},[g,T,D,$,l,C$1,d$1,wo,H,N]),K=useCallback(()=>{switch(g){case "connectors":return {title:m.iDontHaveWallet,onClick:()=>{p$1.onActionClick?.connectors?p$1.onActionClick.connectors(r):u("getWallet");}};case "getWallet":return {title:m.choseWallet,onClick:()=>{p$1.onActionClick?.getWallet?p$1.onActionClick.getWallet(r):window.open(getNetworkData(d$1??Object.keys(C$1)[0])?.links?.choseWallet,"_blank","noopener,noreferrer");}};case "about":return {title:m.learnMore,onClick:()=>{p$1.onActionClick?.about?p$1.onActionClick.about(r):window.open(getNetworkData(d$1??Object.keys(C$1)[0])?.links?.about,"_blank","noopener,noreferrer");}};case "impersonate":return {title:m.connect,onClick:async()=>{if(p$1.onActionClick?.impersonate)await p$1.onActionClick.impersonate(r);else {let c=N.trim();if(P||!c||!isAddress(c)||z$1?.isConnected)return;impersonatedHelpers.setImpersonated(c),u("connecting"),await j(getConnectorTypeFromName(d$1??OrbitAdapter.EVM,T??""),d$1??OrbitAdapter.EVM);}}};case "connecting":return P&&d$1&&T?{title:m.tryAgain,onClick:async()=>{p$1.onActionClick?.connecting?await p$1.onActionClick.connecting(r):await j(getConnectorTypeFromName(d$1,T),d$1);}}:void 0}},[g,m,p$1,r,d$1,C$1,N,P,j,T])(),le=useCallback(()=>{switch(g){case "getWallet":return "Opens external wallet selection page";case "about":return "Opens external documentation";case "impersonate":return "Connects with impersonated wallet address";case "connecting":return "Retries wallet connection";default:return ""}},[g]);return jsx(vo,{open:t$1,onOpenChange:Z,children:jsx(lo,{className:cn("novacon:w-full novacon:sm:max-w-md"),children:jsx(to,{layout:true,transition:{layout:{duration:h$2.animation?.disabled?0:h$2.animation?.layoutDuration??1e-4}},children:jsxs(y$1,{className:b.modalContainer?.({modalData:r}),modalData:r,children:[jsxs(M,{className:b.header?.({modalData:r}),modalData:r,children:[jsxs(_,{className:b.title?.({modalData:r}),modalData:r,children:[g==="connectors"&&jsx(V,{className:b.infoButton?.({modalData:r}),onClick:bo,"aria-label":h$2.ariaLabels?.infoButton?.(r)||`${m.learnMore} ${m.aboutWallets}`,modalData:r}),no()]}),jsx(q,{className:b.closeButton?.({modalData:r}),onClick:()=>Z(false),"aria-label":h$2.ariaLabels?.closeButton?.(r)||m.closeModal,modalData:r})]}),jsx(J,{className:b.mainContent?.({modalData:r}),modalData:r,children:ie()}),jsxs(Q,{className:b.footer?.({modalData:r}),modalData:r,children:[jsx("div",{className:"novacon:flex novacon:items-center novacon:gap-4",children:g!=="connectors"&&jsx(so,{className:b.backButton?.({modalData:r}),onClick:go,"aria-label":h$2.ariaLabels?.backButton?.(r)||`${m.back} to previous step`,modalData:r,children:m.back})}),K&&jsxs("div",{className:"novacon:flex novacon:items-center novacon:gap-3",children:[jsx(X,{className:b.actionButton?.({modalData:r,buttonConfig:K}),onClick:K.onClick,disabled:K.disabled,loading:K.loading,"aria-describedby":"bottom-action-description",modalData:r,buttonConfig:K,children:K.title}),jsx(io,{id:"bottom-action-description",className:b.actionDescription?.({modalData:r}),modalData:r,children:le()})]})]})]})})})})});No.displayName="ConnectModal";var Fe=({labels:o,children:e})=>jsx(Eo,{labels:o,children:e}),Ve=({customization:o})=>jsx(Mo,{customization:o}),Ue=(o,e)=>deepMerge(o,e||{}),Ge=o=>o,je=o=>o,$e=(o,e,n)=>o;function Ke({labels:o,children:e,appChains:n,solanaRPCUrls:a$1,transactionPool:t,pulsarAdapter:f,withImpersonated:u,withBalance:x,withChain:B,customization:E}){let g=h($=>$.activeConnection),d=h($=>$.connectionError),{LabelsProvider:O=Fe,ErrorsProvider:H=Ve}=E?.components??{},{merge:T=Ue,transform:N=Ge}=E?.labels??{},{transform:P=je}=E?.contextValue??{},{providerTree:R=$e}=E?.rendering??{},s=useMemo(()=>T(a,o||{}),[o,T]),[z,m]=useState(false),[W,C]=useState(false),[D,F]=useState(false),[r$1,v]=useState(false),[b,p]=useState("idle"),[h$1,l]=useState("connectors"),[y,M]=useState(void 0),[V,_]=useState(void 0),[q,J]=useState(""),[Q,so]=useState(false),[X,io]=useState("main"),G=useMemo(()=>({isConnected:Q,activeConnection:g,connectionError:d,modalStates:{isConnectModalOpen:z,isConnectedModalOpen:W,isChainsListOpen:D,isChainsListOpenMobile:r$1},contentTypes:{connectModal:h$1,connectedModal:X},statuses:{connectedButton:b}}),[Q,g,d,z,W,D,r$1,h$1,X,b]),vo=useMemo(()=>N(s,G),[s,N,G]),lo=useMemo(()=>P({appChains:n,solanaRPCUrls:a$1,withImpersonated:u,withBalance:x,withChain:B,isConnectModalOpen:z,setIsConnectModalOpen:m,isConnectedModalOpen:W,setIsConnectedModalOpen:C,isChainsListOpen:D,setIsChainsListOpen:F,isChainsListOpenMobile:r$1,setIsChainsListOpenMobile:v,connectedButtonStatus:b,setConnectedButtonStatus:p,connectedModalContentType:X,setConnectedModalContentType:io,connectModalContentType:h$1,setConnectModalContentType:l,selectedAdapter:y,setSelectedAdapter:M,activeConnector:V,setActiveConnector:_,impersonatedAddress:q,setImpersonatedAddress:J,isConnected:Q,setIsConnected:so},G),[n,a$1,u,x,B,z,m,W,C,D,F,r$1,v,b,p,X,io,h$1,l,y,M,V,_,q,J,Q,so,P,G]),to=jsx(H,{customization:E?.errors}),no=jsx(O,{labels:vo,children:e}),Y=n||a$1?jsx(No,{withImpersonated:u,solanaRPCUrls:a$1,appChains:n,customization:E?.modals?.connectModal}):null,Z=n||a$1?jsx(r,{solanaRPCUrls:a$1,appChains:n,transactionPool:t,pulsarAdapter:f,customization:E?.modals?.connectedModal}):null,go=jsxs(c.Provider,{value:lo,children:[to,no,Y,Z]}),bo=jsxs(c.Provider,{value:lo,children:[to,no,Y,Z]}),j=R(bo,{ErrorsProvider:to,LabelsProvider:no,MainContent:go,ConnectModal:Y||jsx(Fragment,{}),ConnectedModal:Z||jsx(Fragment,{})},G);return jsx(Fragment,{children:j})}Ke.displayName="NovaConnectProvider";async function _n(){let{getAllAdaptersStatus:o}=await import('./getChainsListByConnectorType-YZZUYC6D.js');return {hasEvmUtils:await Co(),hasSolanaUtils:await fo(),adaptersStatus:o()}}async function Co(){try{return await import('viem'),await import('@tuwaio/orbit-evm'),!0}catch{return false}}async function fo(){try{return await import('gill'),await import('@tuwaio/orbit-solana'),!0}catch{return false}}async function qn(){try{if(!await Co())return {available:!1,error:"EVM packages (viem, @tuwaio/orbit-evm) not available"};let e=await import('./evm/index.js'),n=await e.getEvmExports();return n.available?{...e,...n}:{available:!1,error:n.error||"Failed to load EVM exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"EVM utilities not available"}}}async function Jn(){try{if(!await fo())return {available:!1,error:"Solana packages (gill, @tuwaio/orbit-solana) not available"};let e=await import('./solana/index.js'),n=await e.getSolanaExports();return n.available?{...e,...n}:{available:!1,error:n.error||"Failed to load Solana exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"Solana utilities not available"}}}async function Qn(){let o={evm:false,solana:false,errors:[]};try{let e=await Co(),n=await fo();if(e||n){let{preloadChainAdapters:a}=await import('./getChainsListByConnectorType-YZZUYC6D.js'),t=[];e&&t.push(OrbitAdapter.EVM),n&&t.push(OrbitAdapter.SOLANA),await a(t),o.evm=e,o.solana=n;}else o.errors.push("No blockchain packages available for initialization");}catch(e){let n=e instanceof Error?e.message:"Unknown initialization error";o.errors.push(n);}return o}async function Xn(o){return o===OrbitAdapter.Starknet||o!==OrbitAdapter.EVM&&o!==OrbitAdapter.SOLANA?false:o===OrbitAdapter.EVM?Co():fo()}export{Mo as ErrorsProvider,Eo as NovaConnectLabelsProvider,Ke as NovaConnectProvider,_n as getBlockchainUtilities,qn as getEvmUtils,Jn as getSolanaUtils,Qn as initializeBlockchainSupport,Xn as isAdapterSupported};
|
|
1
|
+
import {B,w,A,t as t$1,E,z,C,D,s,F}from'./chunk-YXB45D7C.js';import {d,h as h$1,t,p,g,c}from'./chunk-XA3DA6RA.js';export{g as NovaConnectLabelsContext,c as NovaConnectProviderContext,b as NovaConnectProviderError,o as createLabelsSubset,q as getAvailableChainIds,v as getAvailableSolanaClusters,p as getConnectChainId,t as getFilteredConnectors,r as getGroupedConnectors,n as getLabelWithFallback,s as hasAvailableConnectors,u as hasConnectorsForAdapter,k as hasLabel,m as isDefaultLabels,w as isValidSolanaCluster,a as useGetWalletNameAndAvatar,e as useHasNovaConnectContext,l as useLabelsByCategory,d as useNovaConnect,i as useNovaConnectLabel,h as useNovaConnectLabels,j as useNovaConnectLabelsSubset,f as useNovaConnectOptional,x as useWalletChainsList,y as useWalletNativeBalance}from'./chunk-XA3DA6RA.js';export{k as getAdapterStatus,l as getAllAdaptersStatus,g as getAvailableSolanaClustersAsync,b as getChainsListByConnectorType,a as getChainsListByConnectorTypeAsync,b as getChainsListByConnectorTypeSync,i as getWalletChains,e as isEvmChainList,c as isEvmChainListAsync,e as isEvmChainListSync,f as isSolanaChainList,d as isSolanaChainListAsync,f as isSolanaChainListSync,h as isValidSolanaClusterAsync,j as preloadChainAdapters}from'./chunk-S3IRVZMG.js';import {a}from'./chunk-NQ5AECZQ.js';import {h,f}from'./chunk-S3RQJGCL.js';import {waitFor,delay,formatConnectorName,getConnectorTypeFromName,isAddress,impersonatedHelpers,OrbitAdapter,getNetworkData}from'@tuwaio/orbit-core';import {cn,DialogHeader,DialogTitle,DialogClose,CloseIcon,standardButtonClasses,Dialog,DialogContent,ToastCloseButton,deepMerge}from'@tuwaio/nova-core';import {forwardRef,memo,useContext,useMemo,useEffect,useCallback,useRef,useState}from'react';import {toast,Bounce,ToastContainer}from'react-toastify';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {InformationCircleIcon}from'@heroicons/react/24/outline';import {motion}from'framer-motion';var Ct=({title:o,rawError:t,onCopyComplete:n,errorType:a,isConnected:e,...b})=>jsx(F,{title:o,rawError:t,onCopyComplete:n,customization:b.customization}),ft=o=>{let t=h$1();return jsx(ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":t.somethingWentWrong})},vt=(o,t)=>{o(t.title,t.rawError,t.errorKey);},gt=o=>{o();},bt=(o,t)=>{o&&process.env.NODE_ENV==="development"&&console.log("Error copied to clipboard:",t.substring(0,100));},yt=o=>o,Tt=o=>o;function Eo({containerId:o="nova-connect-errors",position:t="top-center",autoClose:n=7e3,draggable:a=false,customization:e}){let b=h$1(),f=h(p=>p.switchNetworkError),x=h(p=>p.activeConnection),w=h(p=>p.connectionError),{ToastError:S=Ct,Container:u=ft}=e?.components??{},{showError:c=vt,dismissError:O=gt,onCopyComplete:W=bt}=e?.handlers??{},{errorTitle:y=yt,errorHash:N=Tt}=e??{},T=useRef(new Set),B=useRef(null),s=useMemo(()=>{let p=!!w,g=!!f,P=!!x?.isConnected;return {hasWalletError:p,hasSwitchError:g,isConnected:P,hasAnyError:p||g,primaryError:w||f||null,errorType:p?"wallet":g?"switch":null}},[w,f,x?.isConnected]),U=useMemo(()=>{switch(s.errorType){case "wallet":return b.connectionError;case "switch":return b.errorWhenChainSwitching;default:return b.somethingWentWrong}},[s.errorType,b]),d=useMemo(()=>y(U,{errorType:s.errorType}),[y,U,s.errorType]),G=useMemo(()=>s.primaryError?`${s.errorType}-${s.primaryError.substring(0,50)}`:null,[s.primaryError,s.errorType]),C=useMemo(()=>N(G,{primaryError:s.primaryError,errorType:s.errorType}),[N,G,s.primaryError,s.errorType]),M=useCallback(()=>{O(()=>{B.current&&(toast.dismiss(B.current),B.current=null),toast.dismiss({containerId:o});});},[o,O]),H=useCallback((p,g)=>{W(p,g,s.errorType);},[W,s.errorType]),r=useCallback((p,g,P)=>{if(M(),!T.current.has(P))try{let V={containerId:o,toastId:P,onClose:()=>{T.current.delete(P),B.current=null;}},q=e?.toastOptions?.error?.({title:p,rawError:g,errorType:s.errorType,isConnected:s.isConnected}),J={...V,...q};toast.error(jsx(S,{title:p,rawError:g,errorType:s.errorType,isConnected:s.isConnected,onCopyComplete:Q=>H(Q,g),customization:e?.toastErrorCustomization}),J),T.current.add(P),B.current=P;}catch(V){console.error("Failed to show error toast:",V);}},[M,o,e?.toastOptions?.error,e?.toastErrorCustomization,S,s.errorType,s.isConnected,H]),v=useCallback((p,g,P)=>{c(r,{title:p,rawError:g,errorKey:P,errorType:s.errorType});},[r,c,s.errorType]);useEffect(()=>{let{hasAnyError:p,isConnected:g,primaryError:P}=s;if(g&&!p){M(),T.current.clear();return}if(p&&P&&C){if(g&&s.errorType!=="switch")return;v(d,P,C);}},[s,d,C,v,M]),useEffect(()=>()=>{M(),T.current.clear();},[M]);let D=useMemo(()=>e?.classNames?.container?e.classNames.container({hasErrors:s.hasAnyError,errorType:s.errorType}):"novacon:p-0 novacon:bg-transparent",[e,s.hasAnyError,s.errorType]),m=useMemo(()=>{let p=e?.toastCloseButton;return p?({closeToast:g})=>jsx(ToastCloseButton,{closeToast:g,...p}):ToastCloseButton},[e?.toastCloseButton]),k=useMemo(()=>({containerId:o,position:t,closeOnClick:false,icon:false,closeButton:m,autoClose:n,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:a,pauseOnHover:true,theme:"light",transition:Bounce}),[o,t,n,a,m]),E=useMemo(()=>({...k,...e?.containerProps,className:D}),[k,e?.containerProps,D]);return jsx(u,{...E})}Eo.displayName="ErrorsProvider";function No({labels:o,children:t}){let n=useMemo(()=>o,[o]);if(process.env.NODE_ENV==="development"){(!o||typeof o!="object")&&console.warn("NovaConnectLabelsProvider: labels prop should be an object");let e=["connectWallet","disconnect","connecting","connected","error","success"].filter(b=>!(b in o));e.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${e.join(", ")}`);}return jsx(g.Provider,{value:n,children:t})}No.displayName="NovaConnectLabelsProvider";function Wt(o,t){if(!o||!Array.isArray(o)||!t)return;let n=o.find(a=>a&&typeof a=="object"&&"name"in a&&typeof a.name=="string"?formatConnectorName(a.name)===t:false);if(n&&typeof n=="object"&&"name"in n&&typeof n.name=="string")return n.name}var Xo=forwardRef(({className:o,children:t,modalData:n,...a},e)=>jsx("div",{ref:e,className:cn("novacon:relative novacon:flex novacon:w-full novacon:flex-col",o),...a,children:t}));Xo.displayName="DefaultModalContainer";var Yo=forwardRef(({className:o,children:t,modalData:n,...a},e)=>jsx("div",{ref:e,...a,children:jsx(DialogHeader,{className:o,children:t})}));Yo.displayName="DefaultModalHeader";var Zo=forwardRef(({className:o,onClick:t,modalData:n,...a},e)=>jsx("button",{ref:e,className:cn("novacon:cursor-pointer novacon:text-[var(--tuwa-text-secondary)] novacon:transition novacon:duration-300 novacon:ease-in-out novacon:active:scale-75 novacon:hover:scale-110 novacon:mr-1",o),type:"button",onClick:t,...a,children:jsx(InformationCircleIcon,{width:20,height:20,"aria-hidden":"true"})}));Zo.displayName="DefaultInfoButton";var ot=forwardRef(({className:o,children:t,modalData:n,...a},e)=>jsx(DialogTitle,{ref:e,className:cn("novacon:flex novacon:items-center",o),...a,children:t}));ot.displayName="DefaultTitle";var tt=forwardRef(({className:o,onClick:t,modalData:n,...a},e)=>jsx(DialogClose,{asChild:true,children:jsx("button",{ref:e,type:"button",onClick:t,className:cn("novacon:cursor-pointer novacon:rounded-full novacon:p-1 novacon:text-[var(--tuwa-text-tertiary)] novacon:transition-colors novacon:hover:bg-[var(--tuwa-bg-muted)] novacon:hover:text-[var(--tuwa-text-primary)]",o),...a,children:jsx(CloseIcon,{"aria-hidden":"true"})})}));tt.displayName="DefaultCloseButton";var et=forwardRef(({className:o,children:t,modalData:n,...a},e)=>jsx("main",{ref:e,className:cn("novacon:flex novacon:flex-col novacon:gap-4 novacon:p-4",o),id:"connect-modal-content",role:"main",...a,children:t}));et.displayName="DefaultMainContent";var nt=forwardRef(({className:o,children:t,modalData:n,...a},e)=>jsx("footer",{ref:e,className:cn("novacon:flex novacon:w-full novacon:items-center novacon:justify-between novacon:border-t novacon:border-[var(--tuwa-border-primary)] novacon:p-4",o),role:"contentinfo",...a,children:t}));nt.displayName="DefaultFooter";var rt=forwardRef(({className:o,onClick:t,children:n,modalData:a,...e},b)=>jsx("button",{ref:b,type:"button",onClick:t,className:cn(standardButtonClasses,o),...e,children:n}));rt.displayName="DefaultBackButton";var at=forwardRef(({className:o,onClick:t,children:n,disabled:a,loading:e,buttonConfig:b,modalData:f,...x},w)=>jsx("button",{ref:w,type:"button",onClick:t,disabled:a||e,className:cn(standardButtonClasses,o),...x,children:e?"Loading...":n}));at.displayName="DefaultActionButton";var st=forwardRef(({className:o,children:t,modalData:n,...a},e)=>jsx("span",{ref:e,className:cn("novacon:sr-only",o),...a,children:t}));st.displayName="DefaultActionDescription";var it=forwardRef(({children:o,className:t,...n},a)=>{let{modalData:e,...b}=n;return jsx("div",{ref:a,className:t,...b,children:o})});it.displayName="DefaultEmptyState";var ho=memo(({appChains:o,solanaRPCUrls:t$2,withImpersonated:n,customization:a={}})=>{let{isConnectModalOpen:e,setIsConnectModalOpen:b,setConnectModalContentType:f$1,setActiveConnector:x,setImpersonatedAddress:w$1,setIsConnected:S,connectModalContentType:u,selectedAdapter:c,setSelectedAdapter:O,isConnected:W,activeConnector:y,impersonatedAddress:N}=d(),T=h(l=>l.connectionError),B$1=h(l=>l.getConnectors),s=h(l=>l.connect),U=h(l=>l.activeConnection),d$1=h$1(),G=useContext(f),C$1=useMemo(()=>{if(e)return B$1()},[e,B$1]),M=useMemo(()=>t({connectors:C$1,selectedAdapter:c}),[C$1,c]),H=useMemo(()=>T?typeof T=="string"?new Error(T):T:null,[T]),r=useMemo(()=>({contentType:u,selectedAdapter:c,activeConnector:y,impersonatedAddress:N,isConnected:W,isOpen:e,error:H,connectors:C$1,filteredConnectors:M,labels:d$1}),[u,c,y,N,W,e,H,C$1,M,d$1]);useEffect(()=>{e&&(f$1("connectors"),O(void 0),x(void 0),w$1(""),S(false));},[e]);let{components:v={},classNames:D$1={},handlers:m={},config:k={},childComponents:E$1={}}=a,p$1=v.ModalContainer||Xo,g=v.ModalHeader||Yo,P=v.InfoButton||Zo,V=v.Title||ot,q=v.CloseButton||tt,J=v.MainContent||et,Q=v.Footer||nt,X=v.BackButton||rt,lo=v.ActionButton||at,Y=v.ActionDescription||st,co=v.EmptyState||it,j=v.Dialog||Dialog,bo=v.DialogContent||DialogContent,mo=v.MotionDiv||motion.div,no=useCallback(()=>{switch(u){case "about":return d$1.aboutWallets;case "getWallet":return d$1.getWallet;case "connecting":return c&&y&&C$1&&Wt(C$1[c],y)||d$1.connectingEllipsis;case "impersonate":return d$1.connectImpersonatedWallet;default:return d$1.connectWallet}},[u,c,y,C$1,d$1]),Z=useCallback(()=>"connectors",[u]),oo=useCallback(l=>{m?.onOpenChange?m.onOpenChange(l,r):b(l);},[m?.onOpenChange,r,b]),ro=useCallback(()=>{let l=()=>f$1(Z());m?.onBack?m.onBack(r,l):l();},[m?.onBack,r,f$1,Z]),yo=useCallback(()=>{m?.onInfoClick?m.onInfoClick(r):f$1("about");},[m?.onInfoClick,r,f$1]),$=useCallback(async(l,To)=>{await s({connectorType:l,chainId:p({appChains:o,selectedAdapter:To,solanaRPCUrls:t$2})});try{await waitFor(()=>G?.getState().activeConnection?.isConnected),S(!0);let Do=setTimeout(()=>b(!1),400),mt=setTimeout(()=>S(!1),500);await delay(null,500),clearTimeout(Do),clearTimeout(mt);}catch(Do){console.error(Do);}},[s,o,c,t$2]),po=useCallback(async(l,To)=>{O(l),f$1("connecting"),await $(To,l);},[$]),K=useCallback(l=>{x(formatConnectorName(l.name)),l.adapters.length===1?(O(l.adapters[0]),f$1(formatConnectorName(l.name)==="impersonatedwallet"?"impersonate":"connecting")):c?f$1(formatConnectorName(l.name)==="impersonatedwallet"?"impersonate":"connecting"):formatConnectorName(l.name)==="impersonatedwallet"?f$1("impersonate"):f$1("network");},[c]),ct=useCallback(()=>{switch(u){case "network":return jsx(D,{activeConnector:y,connectors:M,onClick:po,customization:E$1.networkSelections});case "connectors":return C$1?jsxs(Fragment,{children:[jsx(E,{networks:Object.keys(C$1),selectedAdapter:c,onSelect:l=>O(l),customization:E$1.networkTabs}),jsx(z,{isOnlyOneNetwork:Object.keys(C$1).length===1,connectors:M,selectedAdapter:c,onClick:K,setContentType:f$1,appChains:o,solanaRPCUrls:t$2,setIsConnected:S,setIsOpen:b,withImpersonated:n,customization:E$1.connectorsSelections}),jsx(C,{customization:E$1.legalDisclaimer})]}):jsx(co,{className:D$1.emptyConnectors?.({modalData:r}),modalData:r,children:"No connectors available"});case "about":return jsx(t$1,{customization:E$1.aboutWallets});case "getWallet":return jsx(A,{customization:E$1.getWallet});case "connecting":return jsx(w,{selectedAdapter:c,connectors:M,activeConnector:y,isConnected:W,customization:E$1.connecting});case "impersonate":return jsx(B,{selectedAdapter:c,impersonatedAddress:N,setImpersonatedAddress:w$1,customization:E$1.impersonateForm})}},[u,y,M,po,E$1,C$1,c,K,W,N]),_=useCallback(()=>{switch(u){case "connectors":return {title:d$1.iDontHaveWallet,onClick:()=>{m.onActionClick?.connectors?m.onActionClick.connectors(r):f$1("getWallet");}};case "getWallet":return {title:d$1.choseWallet,onClick:()=>{m.onActionClick?.getWallet?m.onActionClick.getWallet(r):window.open(getNetworkData(c??Object.keys(C$1)[0])?.links?.choseWallet,"_blank","noopener,noreferrer");}};case "about":return {title:d$1.learnMore,onClick:()=>{m.onActionClick?.about?m.onActionClick.about(r):window.open(getNetworkData(c??Object.keys(C$1)[0])?.links?.about,"_blank","noopener,noreferrer");}};case "impersonate":return {title:d$1.connect,onClick:async()=>{if(m.onActionClick?.impersonate)await m.onActionClick.impersonate(r);else {let l=N.trim();if(T||!l||!isAddress(l)||U?.isConnected)return;impersonatedHelpers.setImpersonated(l),f$1("connecting"),await $(getConnectorTypeFromName(c??OrbitAdapter.EVM,y??""),c??OrbitAdapter.EVM);}}};case "connecting":return T&&c&&y?{title:d$1.tryAgain,onClick:async()=>{m.onActionClick?.connecting?await m.onActionClick.connecting(r):await $(getConnectorTypeFromName(c,y),c);}}:void 0}},[u,d$1,m,r,c,C$1,N,T,$,y])(),dt=useCallback(()=>{switch(u){case "getWallet":return "Opens external wallet selection page";case "about":return "Opens external documentation";case "impersonate":return "Connects with impersonated wallet address";case "connecting":return "Retries wallet connection";default:return ""}},[u]);return jsx(j,{open:e,onOpenChange:oo,children:jsx(bo,{className:cn("novacon:w-full novacon:sm:max-w-md"),children:jsx(mo,{layout:true,transition:{layout:{duration:k.animation?.disabled?0:k.animation?.layoutDuration??1e-4}},children:jsxs(p$1,{className:D$1.modalContainer?.({modalData:r}),modalData:r,children:[jsxs(g,{className:D$1.header?.({modalData:r}),modalData:r,children:[jsxs(V,{className:D$1.title?.({modalData:r}),modalData:r,children:[u==="connectors"&&jsx(P,{className:D$1.infoButton?.({modalData:r}),onClick:yo,"aria-label":k.ariaLabels?.infoButton?.(r)||`${d$1.learnMore} ${d$1.aboutWallets}`,modalData:r}),no()]}),jsx(q,{className:D$1.closeButton?.({modalData:r}),onClick:()=>oo(false),"aria-label":k.ariaLabels?.closeButton?.(r)||d$1.closeModal,modalData:r})]}),jsx(J,{className:D$1.mainContent?.({modalData:r}),modalData:r,children:ct()}),jsxs(Q,{className:D$1.footer?.({modalData:r}),modalData:r,children:[jsx("div",{className:"novacon:flex novacon:items-center novacon:gap-4",children:u!=="connectors"&&jsx(X,{className:D$1.backButton?.({modalData:r}),onClick:ro,"aria-label":k.ariaLabels?.backButton?.(r)||`${d$1.back} to previous step`,modalData:r,children:d$1.back})}),_&&jsxs("div",{className:"novacon:flex novacon:items-center novacon:gap-3",children:[jsx(lo,{className:D$1.actionButton?.({modalData:r,buttonConfig:_}),onClick:_.onClick,disabled:_.disabled,loading:_.loading,"aria-describedby":"bottom-action-description",modalData:r,buttonConfig:_,children:_.title}),jsx(Y,{id:"bottom-action-description",className:D$1.actionDescription?.({modalData:r}),modalData:r,children:dt()})]})]})]})})})})});ho.displayName="ConnectModal";var Vt=({labels:o,children:t})=>jsx(No,{labels:o,children:t}),Ut=({customization:o})=>jsx(Eo,{customization:o}),Gt=(o,t)=>deepMerge(o,t||{}),jt=o=>o,$t=o=>o,Kt=(o,t,n)=>o;function _t({labels:o,children:t,appChains:n,solanaRPCUrls:a$1,transactionPool:e,pulsarAdapter:b,withImpersonated:f,withBalance:x,withChain:w,legal:S,customization:u}){let c$1=h(K=>K.activeConnection),O=h(K=>K.connectionError),{LabelsProvider:W=Vt,ErrorsProvider:y=Ut}=u?.components??{},{merge:N=Gt,transform:T=jt}=u?.labels??{},{transform:B=$t}=u?.contextValue??{},{providerTree:s$1=Kt}=u?.rendering??{},U=useMemo(()=>N(a,o||{}),[o,N]),[d,G]=useState(false),[C,M]=useState(false),[H,r]=useState(false),[v,D]=useState(false),[m,k]=useState("idle"),[E,p]=useState("connectors"),[g,P]=useState(void 0),[V,q]=useState(void 0),[J,Q]=useState(""),[X,lo]=useState(false),[Y,co]=useState("main"),j=useMemo(()=>({isConnected:X,activeConnection:c$1,connectionError:O,modalStates:{isConnectModalOpen:d,isConnectedModalOpen:C,isChainsListOpen:H,isChainsListOpenMobile:v},contentTypes:{connectModal:E,connectedModal:Y},statuses:{connectedButton:m}}),[X,c$1,O,d,C,H,v,E,Y,m]),bo=useMemo(()=>T(U,j),[U,T,j]),mo=useMemo(()=>B({appChains:n,solanaRPCUrls:a$1,withImpersonated:f,withBalance:x,withChain:w,isConnectModalOpen:d,setIsConnectModalOpen:G,isConnectedModalOpen:C,setIsConnectedModalOpen:M,isChainsListOpen:H,setIsChainsListOpen:r,isChainsListOpenMobile:v,setIsChainsListOpenMobile:D,connectedButtonStatus:m,setConnectedButtonStatus:k,connectedModalContentType:Y,setConnectedModalContentType:co,connectModalContentType:E,setConnectModalContentType:p,selectedAdapter:g,setSelectedAdapter:P,activeConnector:V,setActiveConnector:q,impersonatedAddress:J,setImpersonatedAddress:Q,isConnected:X,setIsConnected:lo,legal:S},j),[n,a$1,f,x,w,d,G,C,M,H,r,v,D,m,k,Y,co,E,p,g,P,V,q,J,Q,X,lo,S,B,j]),no=jsx(y,{customization:u?.errors}),Z=jsx(W,{labels:bo,children:t}),oo=n||a$1?jsx(ho,{withImpersonated:f,solanaRPCUrls:a$1,appChains:n,customization:u?.modals?.connectModal}):null,ro=n||a$1?jsx(s,{solanaRPCUrls:a$1,appChains:n,transactionPool:e,pulsarAdapter:b,customization:u?.modals?.connectedModal}):null,yo=jsxs(c.Provider,{value:mo,children:[no,Z,oo,ro]}),$=jsxs(c.Provider,{value:mo,children:[no,Z,oo,ro]}),po=s$1($,{ErrorsProvider:no,LabelsProvider:Z,MainContent:yo,ConnectModal:oo||jsx(Fragment,{}),ConnectedModal:ro||jsx(Fragment,{})},j);return jsx(Fragment,{children:po})}_t.displayName="NovaConnectProvider";async function Xn(){let{getAllAdaptersStatus:o}=await import('./getChainsListByConnectorType-YZZUYC6D.js');return {hasEvmUtils:await vo(),hasSolanaUtils:await go(),adaptersStatus:o()}}async function vo(){try{return await import('viem'),await import('@tuwaio/orbit-evm'),!0}catch{return false}}async function go(){try{return await import('gill'),await import('@tuwaio/orbit-solana'),!0}catch{return false}}async function Yn(){try{if(!await vo())return {available:!1,error:"EVM packages (viem, @tuwaio/orbit-evm) not available"};let t=await import('./evm/index.js'),n=await t.getEvmExports();return n.available?{...t,...n}:{available:!1,error:n.error||"Failed to load EVM exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"EVM utilities not available"}}}async function Zn(){try{if(!await go())return {available:!1,error:"Solana packages (gill, @tuwaio/orbit-solana) not available"};let t=await import('./solana/index.js'),n=await t.getSolanaExports();return n.available?{...t,...n}:{available:!1,error:n.error||"Failed to load Solana exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"Solana utilities not available"}}}async function or(){let o={evm:false,solana:false,errors:[]};try{let t=await vo(),n=await go();if(t||n){let{preloadChainAdapters:a}=await import('./getChainsListByConnectorType-YZZUYC6D.js'),e=[];t&&e.push(OrbitAdapter.EVM),n&&e.push(OrbitAdapter.SOLANA),await a(e),o.evm=t,o.solana=n;}else o.errors.push("No blockchain packages available for initialization");}catch(t){let n=t instanceof Error?t.message:"Unknown initialization error";o.errors.push(n);}return o}async function tr(o){return o===OrbitAdapter.Starknet||o!==OrbitAdapter.EVM&&o!==OrbitAdapter.SOLANA?false:o===OrbitAdapter.EVM?vo():go()}export{Eo as ErrorsProvider,No as NovaConnectLabelsProvider,_t as NovaConnectProvider,Xn as getBlockchainUtilities,Yn as getEvmUtils,Zn as getSolanaUtils,or as initializeBlockchainSupport,tr as isAdapterSupported};
|
|
@@ -99,6 +99,10 @@ type NovaConnectLabels = {
|
|
|
99
99
|
impersonateAddressEmpty: string;
|
|
100
100
|
impersonateAddressNotCorrect: string;
|
|
101
101
|
impersonateAddressConnected: string;
|
|
102
|
+
legalIntro: string;
|
|
103
|
+
legalTerms: string;
|
|
104
|
+
legalPrivacy: string;
|
|
105
|
+
legalAnd: string;
|
|
102
106
|
};
|
|
103
107
|
|
|
104
108
|
export type { NovaConnectLabels as N };
|
|
@@ -99,6 +99,10 @@ type NovaConnectLabels = {
|
|
|
99
99
|
impersonateAddressEmpty: string;
|
|
100
100
|
impersonateAddressNotCorrect: string;
|
|
101
101
|
impersonateAddressConnected: string;
|
|
102
|
+
legalIntro: string;
|
|
103
|
+
legalTerms: string;
|
|
104
|
+
legalPrivacy: string;
|
|
105
|
+
legalAnd: string;
|
|
102
106
|
};
|
|
103
107
|
|
|
104
108
|
export type { NovaConnectLabels as N };
|